From 39637dc80f113271f09b83f53dcf70c9a36ad34c Mon Sep 17 00:00:00 2001 From: "Jakub A. W" Date: Fri, 14 Aug 2026 20:42:05 +0200 Subject: [PATCH 1/5] feat(dashboard): add Polish translations --- .../{index-SJFFXBLZ.js => index-CRBH8COP.js} | 98 +++++++++---------- .../admin/dashboard/static/dist/index.html | 2 +- web/dashboard/messages/pl.json | 84 ++++++++++++++++ web/dashboard/project.inlang/settings.json | 2 +- web/dashboard/tests/i18n.test.js | 21 +++- 5 files changed, 155 insertions(+), 52 deletions(-) rename internal/admin/dashboard/static/dist/assets/{index-SJFFXBLZ.js => index-CRBH8COP.js} (58%) create mode 100644 web/dashboard/messages/pl.json diff --git a/internal/admin/dashboard/static/dist/assets/index-SJFFXBLZ.js b/internal/admin/dashboard/static/dist/assets/index-CRBH8COP.js similarity index 58% rename from internal/admin/dashboard/static/dist/assets/index-SJFFXBLZ.js rename to internal/admin/dashboard/static/dist/assets/index-CRBH8COP.js index d763f315d..72010a565 100644 --- a/internal/admin/dashboard/static/dist/assets/index-SJFFXBLZ.js +++ b/internal/admin/dashboard/static/dist/assets/index-CRBH8COP.js @@ -1,70 +1,70 @@ (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 e=Array.isArray,t=Array.prototype.indexOf,n=Array.prototype.includes,r=Array.from,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyDescriptors,s=Object.prototype,c=Array.prototype,l=Object.getPrototypeOf,u=Object.isExtensible;function d(e){return typeof e==`function`}var f=()=>{};function p(e){for(var t=0;t{e=n,t=r}),resolve:e,reject:t}}function h(e,t,n=!1){return e===void 0?n?t():t:e}function g(e,t){if(Array.isArray(e))return e;if(t===void 0||!(Symbol.iterator in e))return Array.from(e);let n=[];for(let r of e)if(n.push(r),n.length===t)break;return n}var _=1<<24,v=1024,y=2048,b=4096,x=8192,S=16384,C=32768,w=1<<25,T=65536,E=1<<19,ee=1<<20,te=1<<25,ne=65536,re=1<<21,ie=1<<22,ae=1<<23,oe=Symbol(`$state`),se=Symbol(`legacy props`),ce=Symbol(``),le=Symbol(`attributes`),ue=Symbol(`class`),de=Symbol(`style`),fe=Symbol(`text`),pe=Symbol(`form reset`),me=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},he=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`);function ge(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function _e(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function ve(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function ye(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function be(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function xe(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function Se(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function Ce(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function we(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function Te(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Ee(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var De={},Oe=Symbol(`uninitialized`),ke=`http://www.w3.org/1999/xhtml`,Ae=`http://www.w3.org/2000/svg`,je=`http://www.w3.org/1998/Math/MathML`;function Me(){console.warn(`https://svelte.dev/e/derived_inert`)}function Ne(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Pe(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function Fe(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var Ie=!1;function Le(e){Ie=e}var Re;function ze(e){if(e===null)throw Ne(),De;return Re=e}function Be(){return ze(vn(Re))}function D(e){if(Ie){if(vn(Re)!==null)throw Ne(),De;Re=e}}function Ve(e=1){if(Ie){for(var t=e,n=Re;t--;)n=vn(n);Re=n}}function He(e=!0){for(var t=0,n=Re;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else(r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=vn(n);e&&n.remove(),n=i}}function Ue(e){if(!e||e.nodeType!==8)throw Ne(),De;return e.data}function We(e){return e===this.v}function Ge(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function Ke(e){return!Ge(e,this.v)}var qe=null;function Je(e){qe=e}function O(e,t=!1,n){qe={p:qe,i:!1,c:null,e:null,s:e,x:null,r:nr,l:null}}function k(e){var t=qe,n=t.e;if(n!==null){t.e=null;for(var r of n)kn(r)}return e!==void 0&&(t.x=e),t.i=!0,qe=t.p,e??{}}function Ye(){return!0}var Xe=[];function Ze(){var e=Xe;Xe=[],p(e)}function Qe(e){if(Xe.length===0&&!Lt){var t=Xe;queueMicrotask(()=>{t===Xe&&Ze()})}Xe.push(e)}function $e(){for(;Xe.length>0;)Ze()}function et(e){var t=nr;if(t===null)return $n.f|=ae,e;if(!(t.f&32768)&&!(t.f&4))throw e;tt(e,t)}function tt(e,t){if(!(t!==null&&t.f&16384)){for(;t!==null;){if(t.f&128){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}}var nt=~(y|b|v);function rt(e,t){e.f=e.f&nt|t}function it(e){e.f&512||e.deps===null?rt(e,v):rt(e,b)}function at(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=ne,at(t.deps))}function ot(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),at(e.deps),rt(e,v)}var st=!1;function ct(e){var t=st;try{return st=!1,[e(),st]}finally{st=t}}function lt(e,t){if(t){let t=document.body;e.autofocus=!0,Qe(()=>{document.activeElement===t&&e.focus()})}}function ut(e){Ie&&_n(e)!==null&&yn(e)}var dt=!1;function ft(){dt||(dt=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[pe]?.()})},{capture:!0}))}function pt(e){var t=$n,n=nr;tr(null),rr(null);try{return e()}finally{tr(t),rr(n)}}function mt(e,t,n,r=n){e.addEventListener(t,()=>pt(n));let i=e[pe];i?e[pe]=()=>{i(),r(!0)}:e[pe]=()=>r(!0),ft()}function ht(e){let t=0,n=nn(0),r;return()=>{En()&&(R(n),Pn(()=>(t===0&&(r=wr(()=>e(()=>sn(n)))),t+=1,()=>{Qe(()=>{--t,t===0&&(r?.(),r=void 0,sn(n))})})))}}var gt=T|E;function _t(e,t,n,r){new vt(e,t,n,r)}var vt=class{parent;is_pending=!1;transform_error;#e;#t=Ie?Re:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=ht(()=>(this.#m=nn(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=nr;t.b=this,t.f|=128,n(e)},this.parent=nr.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=Fn(()=>{if(Ie){let e=this.#t;Be();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));this.#_(t)}else t?this.#v():this.#g()}else this.#y()},gt),Ie&&(this.#e=Re)}#g(){try{this.#a=Ln(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed;t&&(this.#s=Ln(()=>{t(this.#e,()=>e,()=>()=>{})}))}#v(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=Ln(()=>e(this.#e)),Qe(()=>{var e=this.#c=document.createDocumentFragment(),t=gn();e.append(t),this.#a=this.#x(()=>Ln(()=>this.#r(t))),this.#u===0&&(this.#e.before(e),this.#c=null,Wn(this.#o,()=>{this.#o=null}),this.#b(Nt))}))}#y(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=Ln(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();Jn(this.#a,e);let t=this.#n.pending;this.#o=Ln(()=>t(this.#e))}else this.#b(Nt)}catch(e){this.error(e)}}#b(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){ot(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#x(e){var t=nr,n=$n,r=qe;rr(this.#i),tr(this.#i),Je(this.#i.ctx);try{return Ut.ensure(),e()}catch(e){return et(e),null}finally{rr(t),tr(n),Je(r)}}#S(e,t){if(!this.has_pending_snippet()){this.parent&&this.parent.#S(e,t);return}this.#u+=e,this.#u===0&&(this.#b(t),this.#o&&Wn(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#S(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,Qe(()=>{this.#d=!1,this.#m&&an(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),R(this.#m)}error(e){if(!this.#n.onerror&&!this.#n.failed)throw e;Nt?.is_fork?(this.#a&&Nt.skip_effect(this.#a),this.#o&&Nt.skip_effect(this.#o),this.#s&&Nt.skip_effect(this.#s),Nt.oncommit(()=>{this.#C(e)})):this.#C(e)}#C(e){this.#a&&=(Vn(this.#a),null),this.#o&&=(Vn(this.#o),null),this.#s&&=(Vn(this.#s),null),Ie&&(ze(this.#t),Ve(),ze(He()));var t=this.#n.onerror;let n=this.#n.failed;var r=!1,i=!1;let a=()=>{if(r){Fe();return}r=!0,i&&Ee(),this.#s!==null&&Wn(this.#s,()=>{this.#s=null}),this.#x(()=>{this.#y()})},o=e=>{try{i=!0,t?.(e,a),i=!1}catch(e){tt(e,this.#i&&this.#i.parent)}n&&(this.#s=this.#x(()=>{try{return Ln(()=>{var t=nr;t.b=this,t.f|=128,n(this.#e,()=>e,()=>a)})}catch(e){return tt(e,this.#i.parent),null}}))};Qe(()=>{var t;try{t=this.transform_error(e)}catch(e){tt(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>tt(e,this.#i&&this.#i.parent)):o(t)})}};function yt(e,t,n,r){let i=Ye()?Ct:Et;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=nr,c=bt(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){tt(e,s)}xt()}}var d=St();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>Tt(e))).then(u).catch(e=>tt(e,s)).finally(d)}l?l.then(()=>{c(),f(),xt()}):f()}function bt(){var e=nr,t=$n,n=qe,r=Nt;return function(i=!0){rr(e),tr(t),Je(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function xt(e=!0){rr(null),tr(null),Je(null),e&&Nt?.deactivate()}function St(){var e=nr,t=e.b,n=Nt,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function Ct(e){var t=2|y;return nr!==null&&(nr.f|=E),{ctx:qe,deps:null,effects:null,equals:We,f:t,fn:e,reactions:null,rv:0,v:Oe,wv:0,parent:nr,ac:null}}var wt=Symbol(`obsolete`);function Tt(e,t,n){let r=nr;r===null&&ge();var i=void 0,a=nn(Oe),o=!$n,s=new Set;return Nn(()=>{var t=nr,n=m();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==me&&n.reject(e)}).finally(xt)}catch(e){n.reject(e),xt()}var c=Nt;if(o){if(t.f&32768)var l=St();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(wt);else for(let e of s.values())e.reject(wt);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==wt&&(c.activate(),t?(a.f|=ae,an(a,t)):(a.f&8388608&&(a.f^=ae),an(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),Dn(()=>{for(let e of s)e.reject(wt)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function A(e){let t=Ct(e);return ar(t),t}function Et(e){let t=Ct(e);return t.equals=Ke,t}function Dt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n{t.ac.abort(me),t.ac=null}),t.fn!==null&&(t.teardown=f),yr(t,0),zn(t))}function jt(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&br(t)}var Mt=null,Nt=null,Pt=null,Ft=null,It=null,Lt=!1,Rt=!1,zt=null,Bt=null,Vt=0,Ht=1,Ut=class e{id=Ht++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#r=new Set;#i=new Set;#a=0;#o=new Map;#s=null;#c=[];#l=[];#u=new Set;#d=new Set;#f=new Map;#p=new Set;is_fork=!1;#m=!1;constructor(){Mt===null?Mt=this:(Mt.#n=this,this.#t=Mt),Mt=this}#h(){if(this.is_fork)return!0;for(let n of this.#o.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#f.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var r of n.d)rt(r,y),t(r);for(r of n.m)rt(r,b),t(r)}this.#p.add(e)}#g(){this.#e=!0,Vt++>1e3&&(this.#x(),Gt());for(let e of this.#u)this.#d.delete(e),rt(e,y),this.schedule(e);for(let e of this.#d)rt(e,b),this.schedule(e);let t=this.#c;this.#c=[],this.apply();var n=zt=[],r=[],i=Bt=[];for(let e of t)try{this.#_(e,n,r)}catch(t){throw Qt(e),this.#h()||this.discard(),t}if(Nt=null,i.length>0){var a=e.ensure();for(let e of i)a.schedule(e)}if(zt=null,Bt=null,this.#h()){this.#b(r),this.#b(n);for(let[e,t]of this.#f)Zt(e,t);i.length>0&&Nt.#g();return}let o=this.#v();if(o){this.#b(r),this.#b(n),o.#y(this);return}this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),Pt=this,qt(r),qt(n),Pt=null,this.#s?.resolve();var s=Nt;if(this.#a===0&&(this.#c.length===0||s!==null)&&this.#x(),this.#c.length>0)if(s!==null){let e=s;e.#c.push(...this.#c.filter(t=>!e.#c.includes(t)))}else s=this;s!==null&&s.#g()}#_(e,t,n){e.f^=v;for(var r=e.first;r!==null;){var i=r.f,a=(i&96)!=0;if(!(a&&i&1024||i&8192||this.#f.has(r))&&r.fn!==null){a?r.f^=v:i&4?t.push(r):hr(r)&&(i&16&&this.#d.add(r),br(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#v(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#y(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#u,e.#d);let t=e=>{var n=e.reactions;if(n!==null&&!(e.f&2&&!(e.f&6144)))for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#d.delete(i),rt(i,y),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#x(),Nt=this,this.#g()}#b(e){for(var t=0;t{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#u.add(t);for(let e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}settled(){return(this.#s??=m()).promise}static ensure(){if(Nt===null){let t=Nt=new e;!Rt&&!Lt&&Qe(()=>{t.#e||t.flush()})}return Nt}apply(){Ft=null}schedule(e){if(It=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}for(var t=e;t.parent!==null;){t=t.parent;var n=t.f;if(zt!==null&&t===nr&&($n===null||!($n.f&2)))return;if(n&96){if(!(n&1024))return;t.f^=v}}this.#c.push(t)}#x(){if(this.linked){var e=this.#t,t=this.#n;e===null||(e.#n=t),t===null?Mt=e:t.#t=e,this.linked=!1}}};function Wt(e){var t=Lt;Lt=!0;try{var n;for(e&&(Nt!==null&&!Nt.is_fork&&Nt.flush(),n=e());;){if($e(),Nt===null)return n;Nt.flush()}}finally{Lt=t}}function Gt(){try{xe()}catch(e){tt(e,It)}}var Kt=null;function qt(e){var t=e.length;if(t!==0){for(var n=0;n0)){en.clear();for(let e of Kt){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)Kt.has(n)&&(Kt.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||br(n)}}Kt.clear()}}Kt=null}}function Jt(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?Jt(i,t,n,r):e&4194320&&!(e&2048)&&Yt(i,t,r)&&(rt(i,y),Xt(i))}}function Yt(e,t,r){let i=r.get(e);if(i!==void 0)return i;if(e.deps!==null)for(let i of e.deps){if(n.call(t,i))return!0;if(i.f&2&&Yt(i,t,r))return r.set(i,!0),!0}return r.set(e,!1),!1}function Xt(e){Nt.schedule(e)}function Zt(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),rt(e,v);for(var n=e.first;n!==null;)Zt(n,t),n=n.next}}function Qt(e){rt(e,v);for(var t=e.first;t!==null;)Qt(t),t=t.next}var $t=new Set,en=new Map,tn=!1;function nn(e,t){return{f:0,v:e,reactions:null,equals:We,rv:0,wv:0}}function j(e,t){let n=nn(e,t);return ar(n),n}function rn(e,t=!1,n=!0){let r=nn(e);return t||(r.equals=Ke),r}function M(e,t,n=!1){return $n!==null&&(!er||$n.f&131072)&&Ye()&&$n.f&4325394&&(ir===null||!ir.has(e))&&Te(),an(e,n?N(t):t,Bt)}function an(e,t,n=null){if(!e.equals(t)){en.set(e,Zn?t:e.v);var r=Ut.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&Ot(t),Ft===null&&it(t)}e.wv=mr(),cn(e,y,n),Ye()&&nr!==null&&nr.f&1024&&!(nr.f&96)&&(cr===null?lr([e]):cr.push(e)),!r.is_fork&&$t.size>0&&!tn&&on()}return t}function on(){tn=!1;for(let e of $t){e.f&1024&&rt(e,b);let t;try{t=hr(e)}catch{t=!0}t&&br(e)}$t.clear()}function sn(e){M(e,e.v+1)}function cn(e,t,n){var r=e.reactions;if(r!==null)for(var i=Ye(),a=r.length,o=0;o{if(fr===d)return e();var t=$n,n=fr;tr(null),pr(d);var r=e();return tr(t),pr(n),r};return i&&r.set(`length`,j(t.length,u)),new Proxy(t,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&Ce();var i=r.get(t);return i===void 0?f(()=>{var e=j(n.value,u);return r.set(t,e),e}):M(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>j(Oe,u));r.set(t,e),sn(o)}}else M(n,Oe),sn(o);return!0},get(e,n,i){if(n===oe)return t;var o=r.get(n),s=n in e;if(o===void 0&&(!s||a(e,n)?.writable)&&(o=f(()=>j(N(s?e[n]:Oe),u)),r.set(n,o)),o!==void 0){var c=R(o);return c===Oe?void 0:c}return Reflect.get(e,n,i)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&`value`in n){var i=r.get(t);i&&(n.value=R(i))}else if(n===void 0){var a=r.get(t),o=a?.v;if(a!==void 0&&o!==Oe)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,t){if(t===oe)return!0;var n=r.get(t),i=n!==void 0&&n.v!==Oe||Reflect.has(e,t);return(n!==void 0||nr!==null&&(!i||a(e,t)?.writable))&&(n===void 0&&(n=f(()=>j(i?N(e[t]):Oe,u)),r.set(t,n)),R(n)===Oe)?!1:i},set(e,t,n,s){var c=r.get(t),l=t in e;if(i&&t===`length`)for(var d=n;dj(Oe,u)),r.set(d+``,p)):M(p,Oe)}if(c===void 0)(!l||a(e,t)?.writable)&&(c=f(()=>j(void 0,u)),M(c,N(n)),r.set(t,c));else{l=c.v!==Oe;var m=f(()=>N(n));M(c,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(s,n),!l){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&M(g,_+1)}sn(o)}return!0},ownKeys(e){R(o);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==Oe});for(var[n,i]of r)i.v!==Oe&&!(n in e)&&t.push(n);return t},setPrototypeOf(){we()}})}function ln(e){try{if(typeof e==`object`&&e&&oe in e)return e[oe]}catch{}return e}function un(e,t){return Object.is(ln(e),ln(t))}var dn,fn,pn,mn;function hn(){if(dn===void 0){dn=window,fn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;pn=a(t,`firstChild`).get,mn=a(t,`nextSibling`).get,u(e)&&(e[ue]=void 0,e[le]=null,e[de]=void 0,e.__e=void 0),u(n)&&(n[fe]=void 0)}}function gn(e=``){return document.createTextNode(e)}function _n(e){return pn.call(e)}function vn(e){return mn.call(e)}function P(e,t){if(!Ie)return _n(e);var n=_n(Re);if(n===null)n=Re.appendChild(gn());else if(t&&n.nodeType!==3){var r=gn();return n?.before(r),ze(r),r}return t&&Sn(n),ze(n),n}function F(e,t=!1){if(!Ie){var n=_n(e);return n instanceof Comment&&n.data===``?vn(n):n}if(t){if(Re?.nodeType!==3){var r=gn();return Re?.before(r),ze(r),r}Sn(Re)}return Re}function I(e,t=1,n=!1){let r=Ie?Re:e;for(var i;t--;)i=r,r=vn(r);if(!Ie)return r;if(n){if(r?.nodeType!==3){var a=gn();return r===null?i?.after(a):r.before(a),ze(a),a}Sn(r)}return ze(r),r}function yn(e){e.textContent=``}function bn(){return!1}function xn(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function Sn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function Cn(e){nr===null&&($n===null&&be(e),ye()),Zn&&ve(e)}function wn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function Tn(e,t){var n=nr;n!==null&&n.f&8192&&(e|=x);var r={ctx:qe,deps:null,nodes:null,f:e|y|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};Nt?.register_created_effect(r);var i=r;if(e&4)zt===null?Ut.ensure().schedule(r):zt.push(r);else if(t!==null){try{br(r)}catch(e){throw Vn(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=T))}if(i!==null&&(i.parent=n,n!==null&&wn(i,n),$n!==null&&$n.f&2&&!(e&64))){var a=$n;(a.effects??=[]).push(i)}return r}function En(){return $n!==null&&!er}function Dn(e){let t=Tn(8,null);return rt(t,v),t.teardown=e,t}function On(e){Cn(`$effect`);var t=nr.f;if(!$n&&t&32&&qe!==null&&!qe.i){var n=qe;(n.e??=[]).push(e)}else return kn(e)}function kn(e){return Tn(4|ee,e)}function An(e){Ut.ensure();let t=Tn(64|E,e);return()=>{Vn(t)}}function jn(e){Ut.ensure();let t=Tn(64|E,e);return(e={})=>new Promise(n=>{e.outro?Wn(t,()=>{Vn(t),n(void 0)}):(Vn(t),n(void 0))})}function Mn(e){return Tn(4,e)}function Nn(e){return Tn(ie|E,e)}function Pn(e,t=0){return Tn(8|t,e)}function L(e,t=[],n=[],r=[]){yt(r,t,n,t=>{Tn(8,()=>{e(...t.map(R))})})}function Fn(e,t=0){return Tn(16|t,e)}function In(e,t=0){return Tn(_|t,e)}function Ln(e){return Tn(32|E,e)}function Rn(e){var t=e.teardown;if(t!==null){let e=Zn,n=$n;Qn(!0),tr(null);try{t.call(null)}finally{Qn(e),tr(n)}}}function zn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&pt(()=>{e.abort(me)});var r=n.next;n.f&64?n.parent=null:Vn(n,t),n=r}}function Bn(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||Vn(t),t=n}}function Vn(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(Hn(e.nodes.start,e.nodes.end),n=!0),e.f|=w,zn(e,t&&!n),yr(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();Rn(e),e.f^=w,e.f|=S;var i=e.parent;i!==null&&i.first!==null&&Un(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Hn(e,t){for(;e!==null;){var n=e===t?null:vn(e);e.remove(),e=n}}function Un(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Wn(e,t,n=!0){var r=[];Gn(e,r,!0);var i=()=>{n&&Vn(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function Gn(e,t,n){if(!(e.f&8192)){e.f^=x;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;Gn(i,t,o?n:!1)}i=a}}}function Kn(e){qn(e,!0)}function qn(e,t){if(e.f&8192){e.f^=x,e.f&1024||(rt(e,y),Ut.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;qn(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function Jn(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:vn(n);t.append(n),n=i}}var Yn=null,Xn=!1,Zn=!1;function Qn(e){Zn=e}var $n=null,er=!1;function tr(e){$n=e}var nr=null;function rr(e){nr=e}var ir=null;function ar(e){$n!==null&&(ir??=new Set).add(e)}var or=null,sr=0,cr=null;function lr(e){cr=e}var ur=1,dr=0,fr=dr;function pr(e){fr=e}function mr(){return++ur}function hr(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~ne),t&4096){for(var n=e.deps,r=n.length,i=0;ie.wv)return!0}t&512&&Ft===null&&rt(e,v)}return!1}function gr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(ir!==null&&ir.has(e)))for(var i=0;i{e.ac.abort(me)}),e.ac=null);try{e.f|=re;var u=e.fn,d=u();e.f|=C;var f=e.deps,p=Nt?.is_fork;if(or!==null){var m;if(p||yr(e,sr),f!==null&&sr>0)for(f.length=sr+or.length,m=0;m{s.ac.abort(me),s.ac=null,rt(s,y)}),At(s),yr(s,0)}}function yr(e,t){var n=e.deps;if(n!==null)for(var r=t;rn?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?Qe(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function zr(e,t,n,r,i){var a={capture:r,passive:i},o=Rr(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&Dn(()=>{t.removeEventListener(e,o,a)})}function z(e,t,n){(t[Fr]??={})[e]=n}function Br(e){for(var t=0;t{throw e});throw p}}finally{e[Fr]=t,delete e.currentTarget,tr(d),rr(f)}}}var Ur=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function Wr(e){return Ur?.createHTML(e)??e}function Gr(e){var t=xn(`template`);return t.innerHTML=Wr(e.replaceAll(``,``)),t.content}function Kr(e,t){var n=nr;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function B(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(``);return()=>{if(Ie)return Kr(Re,null),Re;i===void 0&&(i=Gr(a?e:``+e),n||(i=_n(i)));var t=r||fn?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=_n(t),s=t.lastChild;Kr(o,s)}else Kr(t,t);return t}}function qr(e,t,n=`svg`){var r=!e.startsWith(``),i=(t&1)!=0,a=`<${n}>${r?e:``+e}`,o;return()=>{if(Ie)return Kr(Re,null),Re;if(!o){var e=_n(Gr(a));if(i)for(o=document.createDocumentFragment();_n(e);)o.appendChild(_n(e));else o=_n(e)}var t=o.cloneNode(!0);if(i){var n=_n(t),r=t.lastChild;Kr(n,r)}else Kr(t,t);return t}}function Jr(e,t){return qr(e,t,`svg`)}function Yr(e=``){if(!Ie){var t=gn(e+``);return Kr(t,t),t}var n=Re;return n.nodeType===3?Sn(n):(n.before(n=gn()),ze(n)),Kr(n,n),n}function Xr(){if(Ie)return Kr(Re,null),Re;var e=document.createDocumentFragment(),t=document.createComment(``),n=gn();return e.append(t,n),Kr(t,n),e}function V(e,t){if(Ie){var n=nr;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=Re),Be();return}e!==null&&e.before(t)}var Zr=!0;function Qr(e){Zr=e}function H(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[fe]??=e.nodeValue)&&(e[fe]=n,e.nodeValue=`${n}`)}function $r(e,t){return ti(e,t)}var ei=new Map;function ti(e,{target:t,anchor:n,props:i={},events:a,context:o,intro:s=!0,transformError:c}){hn();var l=void 0,u=jn(()=>{var u=n??t.appendChild(gn());_t(u,{pending:()=>{}},t=>{O({});var n=qe;if(o&&(n.c=o),a&&(i.$$events=a),Ie&&Kr(t,null),Zr=s,l=e(t,i)||{},Zr=!0,Ie&&(nr.nodes.end=Re,Re===null||Re.nodeType!==8||Re.data!==`]`))throw Ne(),De;k()},c);var d=new Set,f=e=>{for(var n=0;n{for(var e of d)for(let n of[t,document]){var r=ei.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,Hr),r.delete(e),r.size===0&&ei.delete(n)):r.set(e,i)}Lr.delete(f),u!==n&&u.parentNode?.removeChild(u)}});return ni.set(l,u),l}var ni=new WeakMap,ri=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)Kn(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(Kn(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(Vn(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();Jn(r,t),t.append(gn()),this.#n.set(e,{effect:r,fragment:t})}else Vn(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),Wn(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(Vn(n.effect),this.#n.delete(e))};ensure(e,t){var n=Nt,r=bn();if(t&&!this.#t.has(e)&&!this.#n.has(e))if(r){var i=document.createDocumentFragment(),a=gn();i.append(a),this.#n.set(e,{effect:Ln(()=>t(a)),fragment:i})}else this.#t.set(e,Ln(()=>t(this.anchor)));if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else Ie&&(this.anchor=Re),this.#a(n)}};function U(e,t,n=!1){var r;Ie&&(r=Re,Be());var i=new ri(e),a=n?T:0;function o(e,t){if(Ie){var n=Ue(r);if(e!==parseInt(n.substring(1))){var a=He();ze(a),i.anchor=a,Le(!1),i.ensure(e,t),Le(!0);return}}i.ensure(e,t)}Fn(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function ii(e,t){return t}function ai(e,t,n){for(var i=[],a=t.length,o,s=t.length,c=0;c{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;oi(e,r(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else--s},!1)}if(s===0){var l=i.length===0&&n!==null;if(l){var u=n,d=u.parentNode;yn(d),d.append(u),e.items.clear()}oi(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function oi(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i{var t=i();return e(t)?t:t==null?[]:r(t)}),p,m=new Map,h=!0;function g(e){v.effect.f&16384||(v.pending.delete(e),v.fallback=d,li(v,p,c,n,a),d!==null&&(p.length===0?d.f&33554432?(d.f^=te,di(d,null,c)):Kn(d):Wn(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:Fn(()=>{p=R(f);var e=p.length;let t=!1;Ie&&Ue(c)===`[!`!=(e===0)&&(c=He(),ze(c),Le(!1),t=!0);for(var r=new Set,u=Nt,v=bn(),y=0;ys(c)):(d=Ln(()=>s(si??=gn())),d.f|=te)),e>r.size&&_e(``,``,``),Ie&&e>0&&ze(He()),!h)if(m.set(u,r),v){for(let[e,t]of l)r.has(e)||u.skip_effect(t.e);u.oncommit(g),u.ondiscard(_)}else g(u);t&&Le(!0),R(f)}),flags:n,items:l,pending:m,outrogroups:null,fallback:d};h=!1,Ie&&(c=Re)}function ci(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function li(e,t,n,i,a){var o=(i&8)!=0,s=t.length,c=e.items,l=ci(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v0){var E=i&4&&s===0?n:null;if(o){for(v=0;v{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function ui(e,t,n,r,i,a,o,s){var c=o&1?o&16?nn(n):rn(n,!1,!1):null,l=o&2?nn(i):null;return{v:c,i:l,e:Ln(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function di(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=vn(r);if(a.before(r),r===i)return;r=o}}function fi(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function pi(e,t,n=!1,r=!1,i=!1,a=!1){var o=e,s=``;if(n){var c=e;Ie&&(o=ze(_n(c)))}L(()=>{var e=nr;if(s===(s=t()??``)){Ie&&Be();return}if(n&&!Ie){e.nodes=null,c.innerHTML=s,s!==``&&Kr(_n(c),c.lastChild);return}if(e.nodes!==null&&(Hn(e.nodes.start,e.nodes.end),e.nodes=null),s!==``){if(Ie){for(var a=Re.data,l=Be(),u=l;l!==null&&(l.nodeType!==8||l.data!==``);)u=l,l=vn(l);if(l===null)throw Ne(),De;Kr(Re,u),o=ze(l);return}var d=xn(r?`svg`:i?`math`:`template`,r?Ae:i?je:void 0);d.innerHTML=s;var f=r||i?d:d.content;if(Kr(_n(f),f.lastChild),r||i)for(;_n(f);)o.before(_n(f));else o.before(f)}})}function mi(e,t,...n){var r=new ri(e);Fn(()=>{let e=t()??null;r.ensure(e,e&&(t=>e(t,...n)))},T)}function hi(e,t,n){var r;Ie&&(r=Re,Be());var i=new ri(e);Fn(()=>{var e=t()??null;if(Ie&&Ue(r)===`[`!=(e!==null)){var a=He();ze(a),i.anchor=a,Le(!1),i.ensure(e,e&&(t=>n(t,e))),Le(!0);return}i.ensure(e,e&&(t=>n(t,e)))},T)}var gi=()=>performance.now(),_i={tick:e=>requestAnimationFrame(e),now:()=>gi(),tasks:new Set};function vi(){let e=_i.now();_i.tasks.forEach(t=>{t.c(e)||(_i.tasks.delete(t),t.f())}),_i.tasks.size!==0&&_i.tick(vi)}function yi(e){let t;return _i.tasks.size===0&&_i.tick(vi),{promise:new Promise(n=>{_i.tasks.add(t={c:e,f:n})}),abort(){_i.tasks.delete(t)}}}function bi(e,t){pt(()=>{e.dispatchEvent(new CustomEvent(t))})}function xi(e){if(e===`float`)return`cssFloat`;if(e===`offset`)return`cssOffset`;if(e.startsWith(`--`))return e;let t=e.split(`-`);return t.length===1?t[0]:t[0]+t.slice(1).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}function Si(e){let t={},n=e.split(`;`);for(let e of n){let[n,r]=e.split(`:`);if(!n||r===void 0)break;let i=xi(n.trim());t[i]=r.trim()}return t}var Ci=e=>e,wi=null;function Ti(e){wi=e}function Ei(e,t,n){var r=(wi??nr).nodes,i,a,o,s=null;r.a??={element:e,measure(){i=this.element.getBoundingClientRect()},apply(){if(o?.abort(),a=this.element.getBoundingClientRect(),i.left!==a.left||i.right!==a.right||i.top!==a.top||i.bottom!==a.bottom){let e=t()(this.element,{from:i,to:a},n?.());o=Oi(this.element,e,void 0,1,()=>{},()=>{o?.abort(),o=void 0})}},fix(){if(!e.getAnimations().length){var{position:t,width:n,height:r}=getComputedStyle(e);if(t!==`absolute`&&t!==`fixed`){var a=e.style;s={position:a.position,width:a.width,height:a.height,transform:a.transform},a.position=`absolute`,a.width=n,a.height=r;var o=e.getBoundingClientRect();if(i.left!==o.left||i.top!==o.top){var c=`translate(${i.left-o.left}px, ${i.top-o.top}px)`;a.transform=a.transform?`${a.transform} ${c}`:c}}}},unfix(){if(s){var t=e.style;t.position=s.position,t.width=s.width,t.height=s.height,t.transform=s.transform}}},r.a.element=e}function Di(e,t,n,r){var i=(e&1)!=0,a=(e&2)!=0,o=i&&a,s=(e&4)!=0,c=o?`both`:i?`in`:`out`,l,u=t.inert,d=t.style.overflow,f,p;function m(){return pt(()=>l??=n()(t,r?.()??{},{direction:c}))}var h={is_global:s,in(){if(t.inert=u,!i){p?.abort(),p?.reset?.();return}a||f?.abort(),f=Oi(t,m(),p,1,()=>{bi(t,`introstart`)},()=>{bi(t,`introend`),f?.abort(),f=l=void 0,t.style.overflow=d})},out(e){if(!a){e?.(),l=void 0;return}t.inert=!0,p=Oi(t,m(),f,0,()=>{bi(t,`outrostart`)},()=>{bi(t,`outroend`),e?.()})},stop:()=>{f?.abort(),p?.abort()}},g=nr;if((g.nodes.t??=[]).push(h),i&&Zr){var _=s;if(!_){for(var v=g.parent;v&&v.f&65536;)for(;(v=v.parent)&&!(v.f&16););_=!v||(v.f&32768)!=0}_&&Mn(()=>{wr(()=>h.in())})}}function Oi(e,t,n,r,i,a){var o=r===1;if(d(t)){var s,c=!1;return Qe(()=>{c||(s=Oi(e,t({direction:o?`in`:`out`}),n,r,i,a))}),{abort:()=>{c=!0,s?.abort()},deactivate:()=>s.deactivate(),reset:()=>s.reset(),t:()=>s.t()}}if(n?.deactivate(),!t?.duration&&!t?.delay)return i(),a(),{abort:f,deactivate:f,reset:f,t:()=>r};let{delay:l=0,css:u,tick:p,easing:m=Ci}=t;var h=[];if(o&&n===void 0&&(p&&p(0,1),u)){var g=Si(u(0,1));h.push(g,g)}var _=()=>1-r,v=e.animate(h,{duration:l,fill:`forwards`});return v.onfinish=()=>{v.cancel(),i();var o=n?.t()??1-r;n?.abort();var s=r-o,c=t.duration*Math.abs(s),l=[];if(c>0){var d=!1;if(u)for(var f=Math.ceil(c/(1e3/60)),h=0;h<=f;h+=1){var g=o+s*m(h/f),y=Si(u(g,1-g));l.push(y),d||=y.overflow===`hidden`}d&&(e.style.overflow=`hidden`),_=()=>{var e=v.currentTime;return o+s*m(e/c)},p&&yi(()=>{if(v.playState!==`running`)return!1;var e=_();return p(e,1-e),!0})}v=e.animate(l,{duration:c,fill:`forwards`}),v.onfinish=()=>{_=()=>r,p?.(r,1-r),a()}},{abort:()=>{v&&(v.cancel(),v.effect=null,v.onfinish=f)},deactivate:()=>{a=f},reset:()=>{r===0&&p?.(1,0)},t:()=>_()}}function ki(e,t,n,r,i,a){let o=Ie;Ie&&Be();var s=null;Ie&&Re.nodeType===1&&(s=Re,Be());var c=Ie?Re:e,l=nr,u=new ri(c,!1);Fn(()=>{let e=t()||null;var a=i?i():n||e===`svg`?Ae:void 0;if(e===null){u.ensure(null,null),Qr(!0);return}return u.ensure(e,t=>{if(e){if(s=Ie?s:xn(e,a),Kr(s,s),r){var n=null;Ie&&Pr(e)&&s.append(n=document.createComment(``));var i=Ie?_n(s):s.appendChild(gn());Ie&&(i===null?Le(!1):ze(i)),Ti(l),r(s,i),n?.remove(),Ti(null)}nr.nodes.end=s,t.before(s)}Ie&&ze(t)}),Qr(!0),()=>{e&&Qr(!1)}},T),Dn(()=>{Qr(!0)}),o&&(Le(!0),ze(c))}function Ai(e,t){var n=void 0,r;In(()=>{n!==(n=t())&&(r&&=(Vn(r),null),n&&(r=Ln(()=>{Mn(()=>n(e))})))})}function ji(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t=0;){var s=o+a;(o===0||Pi.includes(r[o-1]))&&(s===r.length||Pi.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Ii(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function Li(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function Ri(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(Li)),i&&c.push(...Object.keys(i).map(Li));var l=0,u=-1;let t=e.length;for(var d=0;d{Vi(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),Dn(()=>{t.disconnect()})}function Ui(e,t,n=t){var r=new WeakSet,i=!0;mt(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),Wi);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&Wi(o)}n(a),e.__value=a,Nt!==null&&r.add(Nt)}),Mn(()=>{var a=t();if(e===document.activeElement){var o=Nt;if(r.has(o))return}if(Vi(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=Wi(s),n(a))}e.__value=a,i=!1}),Hi(e)}function Wi(e){return`__value`in e?e.__value:e.value}var Gi=Symbol(`class`),Ki=Symbol(`style`),qi=Symbol(`is custom element`),Ji=Symbol(`is html`),Yi=he?`link`:`LINK`,Xi=he?`input`:`INPUT`,Zi=he?`option`:`OPTION`,Qi=he?`select`:`SELECT`,$i=he?`progress`:`PROGRESS`;function ea(e){if(Ie){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;K(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;K(e,`checked`,null),e.checked=r}}};e[pe]=n,Qe(n),ft()}}function ta(e,t){var n=oa(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==$i)||(e.value=t??``)}function na(e,t){var n=oa(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function ra(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function K(e,t,n,r){var i=oa(e);Ie&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===Yi)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[ce]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&ca(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function ia(e,t,n,r,i=!1,a=!1){if(Ie&&i&&e.nodeName===Xi){var o=e;(o.type===`checkbox`?`defaultChecked`:`defaultValue`)in n||ea(o)}var s=oa(e),c=s[qi],l=!s[Ji];let u=Ie&&c;u&&Le(!1);var d=t||{},f=e.nodeName===Zi;for(var p in t)p in n||(n[p]=null);n.class?n.class=Ni(n.class):(r||n[Gi])&&(n.class=null),n[Ki]&&(n.style??=null);var m=ca(e);if(e.nodeName===Xi&&`type`in n&&(`value`in n||`__value`in n)){var h=n.type;(h!==d.type||h===void 0&&e.hasAttribute(`type`))&&(d.type=h,K(e,`type`,h,a))}for(let i in n){let o=n[i];if(f&&i===`value`&&o==null){e.value=e.__value=``,d[i]=o;continue}if(i===`class`){G(e,e.namespaceURI===`http://www.w3.org/1999/xhtml`,o,r,t?.[Gi],n[Gi]),d[i]=o,d[Gi]=n[Gi];continue}if(i===`style`){Bi(e,o,t?.[Ki],n[Ki]),d[i]=o,d[Ki]=n[Ki];continue}var g=d[i];if(!(o===g&&!(o===void 0&&e.hasAttribute(i)))){d[i]=o;var _=i[0]+i[1];if(_!==`$$`)if(_===`on`){let t={},n=`$$`+i,r=i.slice(2);var v=Dr(r);if(Tr(r)&&(r=r.slice(0,-7),t.capture=!0),!v&&g){if(o!=null)continue;e.removeEventListener(r,d[n],t),d[n]=null}if(v)z(r,e,o),Br([r]);else if(o!=null){function a(e){d[i].call(this,e)}d[n]=Rr(r,e,a,t)}}else if(i===`style`)K(e,i,o);else if(i===`autofocus`)lt(e,!!o);else if(!c&&(i===`__value`||i===`value`&&o!=null))e.value=e.__value=o;else if(i===`selected`&&f)ra(e,o);else{var y=i;l||(y=Ar(y));var b=y===`defaultValue`||y===`defaultChecked`;if(o==null&&!c&&!b)if(s[i]=null,y===`value`||y===`checked`){let n=e,r=t===void 0;if(y===`value`){let e=n.defaultValue;n.removeAttribute(y),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(y),n.defaultChecked=e,n.checked=r?e:!1}}else e.removeAttribute(i);else b||m.includes(y)&&(c||typeof o!=`string`)?(e[y]=o,y in s&&(s[y]=Oe)):typeof o!=`function`&&K(e,y,o,a)}}}return u&&Le(!0),d}function aa(e,t,n=[],r=[],i=[],a,o=!1,s=!1){yt(i,n,r,n=>{var r=void 0,i={},c=e.nodeName===Qi,l=!1;if(In(()=>{var u=t(...n.map(R)),d=ia(e,r,u,a,o,s);l&&c&&`value`in u&&Vi(e,u.value);for(let e of Object.getOwnPropertySymbols(i))u[e]||Vn(i[e]);for(let t of Object.getOwnPropertySymbols(u)){var f=u[t];t.description===`@attach`&&(!r||f!==r[t])&&(i[t]&&Vn(i[t]),i[t]=Ln(()=>Ai(e,()=>f))),d[t]=f}r=d}),c){var u=e;Mn(()=>{Vi(u,r.value,!0),Hi(u)})}l=!0})}function oa(e){return e[le]??={[qi]:e.nodeName.includes(`-`),[Ji]:e.namespaceURI===ke}}var sa=new Map;function ca(e){var t=e.getAttribute(`is`)||e.nodeName,n=sa.get(t);if(n)return n;sa.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var s in r=o(i),r)r[s].set&&s!==`innerHTML`&&s!==`textContent`&&s!==`innerText`&&n.push(s);i=l(i)}return n}function la(e,t,n=t){var r=new WeakSet;mt(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=da(e)?fa(a):a,n(a),Nt!==null&&r.add(Nt),await xr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(Ie&&e.defaultValue!==e.value||wr(t)==null&&e.value)&&(n(da(e)?fa(e.value):e.value),Nt!==null&&r.add(Nt)),Pn(()=>{var n=t();if(e===document.activeElement){var i=Nt;if(r.has(i))return}da(e)&&n===fa(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function ua(e,t,n=t){mt(e,`change`,t=>{n(t?e.defaultChecked:e.checked)}),(Ie&&e.defaultChecked!==e.checked||wr(t)==null)&&n(e.checked),Pn(()=>{e.checked=!!t()})}function da(e){var t=e.type;return t===`number`||t===`range`}function fa(e){return e===``?null:+e}function pa(e,t){return e===t||e?.[oe]===t}function ma(e={},t,n,r){var i=qe.r,a=nr;return Mn(()=>{var o,s;return Pn(()=>{o=s,s=r?.()||[],wr(()=>{pa(n(...s),e)||(t(e,...s),o&&pa(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&pa(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}var ha={get(e,t){if(!e.exclude.has(t))return e.props[t]},set(e,t){return!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.has(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return!e.exclude.has(t)&&t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.has(t))}};function ga(e,t,n){return new Proxy({props:e,exclude:t},ha)}function q(e,t,n,r){var i=!0,o=(n&8)!=0,s=(n&16)!=0,c=r,l=!0,u=void 0,d=()=>s&&i?(u??=Ct(r),R(u)):(l&&(l=!1,c=s?wr(r):r),c);let f;if(o){var p=oe in e||se in e;f=a(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;o?[m,h]=ct(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&Se(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?Ct:Et)(()=>(v=!1,g()));o&&R(y);var b=nr;return(function(e,t){if(arguments.length>0){let n=t?R(y):i&&o?N(e):e;return M(y,n),v=!0,c!==void 0&&(c=n),e}return Zn&&v||b.f&16384?y.v:R(y)})}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);var _a=new Set([`$$slots`,`$$events`,`$$legacy`,`icon`,`class`]),va=Jr(``);function J(e,t){let n=q(t,`icon`,19,()=>[]),r=q(t,`class`,3,``),i=ga(t,_a);var a=va();aa(a,()=>({xmlns:`http://www.w3.org/2000/svg`,width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,class:r(),"aria-hidden":`true`,focusable:`false`,...i}));{let e=(t,n=f)=>{var r=Xr();W(F(r),17,n,ii,(t,n)=>{var r=A(()=>g(R(n),3));let i=()=>R(r)[0],a=()=>R(r)[1],o=()=>R(r)[2];var s=Xr();ki(F(s),i,!0,(t,n)=>{aa(t,()=>({xmlns:`http://www.w3.org/2000/svg`,...a()}));var r=Xr(),i=F(r),s=t=>{e(t,o)},c=A(()=>Array.isArray(o()));U(i,e=>{R(c)&&e(s)}),V(n,r)}),V(t,s)}),V(t,r)};e(P(a),n),D(a)}V(e,a)}var ya=Jr(``);function ba(e){V(e,ya())}var xa={},Sa=[`en`],Ca=`PARAGLIDE_LOCALE`,wa=[`custom-dashboard`,`preferredLanguage`,`baseLocale`],Ta=[];globalThis.__paraglide=globalThis.__paraglide??{},globalThis.__paraglide.ssr=globalThis.__paraglide.ssr??{};var Ea=!1,Da=()=>{let e=wa;typeof window<`u`&&window.location?.href&&(e=Ua(window.location.href));let t=Oa(e,typeof window<`u`?window.location?.href:void 0);if(t)return Ea||(Ea=!0,Ma(t,{reload:!1})),t;throw Error(`No locale found. Read the docs https://paraglidejs.com/errors#no-locale-found`)};function Oa(e,t){let n;for(let t of e){if(t===`baseLocale`)n=`en`;else if(t===`preferredLanguage`)n=La();else if(Ga(t)&&Wa.has(t)){let e=Wa.get(t);if(e){let t=e.getLocale();if(t instanceof Promise)continue;if(t!==void 0)return Fa(t)}}let e=Pa(n);if(e)return e}}var ka=new Set([`ar`,`dv`,`fa`,`he`,`ks`,`ku`,`ps`,`sd`,`ug`,`ur`,`yi`]);function Aa(e=Da()){try{let t=new Intl.Locale(e),n=t.getTextInfo?.().direction??t.textInfo?.direction;if(n===`ltr`||n===`rtl`)return n}catch{}let t=e.split(`-`)[0]?.toLowerCase();return ka.has(t??``)?`rtl`:`ltr`}var ja=e=>{e?window.location.href=e:window.location.reload()},Ma=(e,t)=>{let n={reload:!0,...t},r;try{r=Da()}catch{}let i=[],a=wa;typeof window<`u`&&window.location?.href&&(a=Ua(window.location.href));for(let t of a)if(t===`baseLocale`)continue;else if(Ga(t)&&Wa.has(t)){let n=Wa.get(t);if(n){let r=n.setLocale(e);r instanceof Promise&&(r=r.catch(e=>{throw Error(`Custom strategy "${t}" setLocale failed.`,{cause:e})}),i.push(r))}}let o=()=>{n.reload&&window.location&&e!==r&&ja(void 0)};if(i.length)return Promise.all(i).then(()=>{o()});o()},Na=()=>typeof window<`u`?window.location.origin:`http://fallback.com`;function Pa(e){if(typeof e!=`string`)return;let t=e.toLowerCase();for(let e of Sa)if(e.toLowerCase()===t)return e}function Fa(e){let t=Pa(e);if(t)return t;throw Error(`Invalid locale: ${e}. Expected one of: ${Sa.join(`, `)}`)}var Ia=Ca.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);RegExp(`(?:^|;\\s*)${Ia}=([^;]*)`);function La(){if(!navigator?.languages?.length)return;let e=navigator.languages.map(e=>({fullTag:e,baseTag:e.split(`-`)[0]}));for(let t of e){let e=Pa(t.fullTag);if(e)return e;let n=Pa(t.baseTag);if(n)return n}}function Ra(e){return za(e)}function za(e){let t=typeof e==`string`?new URL(e,Na()):new URL(e),n=t.pathname.split(`/`).filter(Boolean);return n.length>0&&Pa(n[0])&&(t.pathname=`/`+n.slice(1).join(`/`)),t}var Ba,Va;function Ha(e){if(Ta.length===0)return;let t=typeof e==`string`?e:e.href;if(Ba===t)return Va;let n=new URL(t,`http://example.com`),r=Ra(n),i=r.href===n.href?[n]:[n,r],a;for(let e of i){for(let t of Ta)if(new xa(t.match,e.href).exec(e.href)){a=t;break}if(a)break}return Ba=t,Va=a,a}function Ua(e){let t=Ha(e);return t&&t.exclude!==!0&&Array.isArray(t.strategy)?t.strategy:wa}var Wa=new Map;function Ga(e){return typeof e==`string`&&/^custom-[A-Za-z0-9_-]+$/.test(e)}function Ka(e,t){if(!Ga(e))throw Error(`Invalid custom strategy: "${e}". Must be a custom strategy following the pattern custom-name.`);Wa.set(e,t)}function qa(){try{return typeof window>`u`?null:window.localStorage}catch{return null}}function Ja(e,t=null){let n=qa();if(!n)return t;try{return n.getItem(e)??t}catch{return t}}function Ya(e,t){let n=qa();if(n)try{n.setItem(e,String(t))}catch{}}var Xa=`gomodel_locale`;Ka(`custom-dashboard`,{getLocale:()=>Ja(Xa)||void 0,setLocale:e=>Ya(Xa,e)});function Za(){let e=Da();document.documentElement.lang=e,document.documentElement.dir=Aa(e)}function Qa(e){return typeof Intl.DisplayNames==`function`&&new Intl.DisplayNames([e],{type:`language`}).of(e)||e}function $a(e,t){return new Intl.NumberFormat(Da(),t).format(e)}function eo(e,t){return new Intl.DateTimeFormat(Da(),t).format(e)}var to=()=>`Cancel`,no=((e={},t={})=>(t.locale??Da(),to(e))),ro=()=>`Next`,io=((e={},t={})=>(t.locale??Da(),ro(e))),ao=()=>`Previous`,oo=((e={},t={})=>(t.locale??Da(),ao(e))),so=()=>`Admin`,co=((e={},t={})=>(t.locale??Da(),so(e))),lo=()=>`Overview`,uo=((e={},t={})=>(t.locale??Da(),lo(e))),fo=()=>`Providers`,po=((e={},t={})=>(t.locale??Da(),fo(e))),mo=()=>`Models`,ho=((e={},t={})=>(t.locale??Da(),mo(e))),go=()=>`Audit Logs`,_o=((e={},t={})=>(t.locale??Da(),go(e))),vo=()=>`Usage`,yo=((e={},t={})=>(t.locale??Da(),vo(e))),bo=()=>`Budgets`,xo=((e={},t={})=>(t.locale??Da(),bo(e))),So=()=>`Rate Limits`,Co=((e={},t={})=>(t.locale??Da(),So(e))),wo=()=>`API Keys`,To=((e={},t={})=>(t.locale??Da(),wo(e))),Eo=()=>`Workflows`,Do=((e={},t={})=>(t.locale??Da(),Eo(e))),Oo=()=>`Guardrails (experimental)`,ko=((e={},t={})=>(t.locale??Da(),Oo(e))),Ao=()=>`MCP Servers`,jo=((e={},t={})=>(t.locale??Da(),Ao(e))),Mo=()=>`Settings`,No=((e={},t={})=>(t.locale??Da(),Mo(e))),Po=()=>`Sign out`,Fo=((e={},t={})=>(t.locale??Da(),Po(e))),Io=()=>`Enter API key`,Lo=((e={},t={})=>(t.locale??Da(),Io(e))),Ro=()=>`Change API key`,zo=((e={},t={})=>(t.locale??Da(),Ro(e))),Bo=()=>`Resize sidebar`,Vo=((e={},t={})=>(t.locale??Da(),Bo(e))),Ho=()=>`Drag to resize; click to collapse or expand`,Uo=((e={},t={})=>(t.locale??Da(),Ho(e))),Wo=()=>`Theme`,Go=((e={},t={})=>(t.locale??Da(),Wo(e))),Ko=()=>`Light theme`,qo=((e={},t={})=>(t.locale??Da(),Ko(e))),Jo=()=>`System theme`,Yo=((e={},t={})=>(t.locale??Da(),Jo(e))),Xo=()=>`Dark theme`,Zo=((e={},t={})=>(t.locale??Da(),Xo(e))),Qo=e=>`Change theme (currently ${e?.theme})`,$o=((e,t={})=>(t.locale??Da(),Qo(e))),es=()=>`Language`,ts=((e={},t={})=>(t.locale??Da(),es(e))),ns=()=>`Authentication required for dashboard data.`,rs=((e={},t={})=>(t.locale??Da(),ns(e))),is=()=>`Dashboard locked`,as=((e={},t={})=>(t.locale??Da(),is(e))),os=()=>`Change API key`,ss=((e={},t={})=>(t.locale??Da(),os(e))),cs=()=>`Close authentication dialog`,ls=((e={},t={})=>(t.locale??Da(),cs(e))),us=()=>`Sign in with SSO`,ds=((e={},t={})=>(t.locale??Da(),us(e))),fs=()=>`or use an API key`,ps=((e={},t={})=>(t.locale??Da(),fs(e))),ms=()=>`API key`,hs=((e={},t={})=>(t.locale??Da(),ms(e))),gs=()=>`Master key or bearer token`,_s=((e={},t={})=>(t.locale??Da(),gs(e))),vs=()=>`Enter a valid API key to continue.`,ys=((e={},t={})=>(t.locale??Da(),vs(e))),bs=()=>`Stored in this browser. Requests use the Authorization bearer header.`,xs=((e={},t={})=>(t.locale??Da(),bs(e))),Ss=()=>`Unlock dashboard`,Cs=((e={},t={})=>(t.locale??Da(),Ss(e))),ws=()=>`Save API key`,Ts=((e={},t={})=>(t.locale??Da(),ws(e))),Es=()=>`Close confirmation dialog`,Ds=((e={},t={})=>(t.locale??Da(),Es(e))),Os=()=>`Dismiss notification`,ks=((e={},t={})=>(t.locale??Da(),Os(e))),As=()=>`Demo mode notice`,js=((e={},t={})=>(t.locale??Da(),As(e))),Ms=()=>`Public demo`,Ns=((e={},t={})=>(t.locale??Da(),Ms(e))),Ps=()=>`Do not enter sensitive or personal data. Demo data is reset regularly.`,Fs=((e={},t={})=>(t.locale??Da(),Ps(e))),Is=()=>`GoModel website`,Ls=((e={},t={})=>(t.locale??Da(),Is(e))),Rs=e=>`Showing ${e?.start}–${e?.end} of ${e?.total}`,zs=((e,t={})=>(t.locale??Da(),Rs(e)));function Bs(e,t,n){return new Intl.PluralRules(e,n).select(Number(t))}var Vs=e=>Bs(`en`,e?.count,{})===`one`?`Last ${e?.count} day`:`Last ${e?.count} days`,Hs=((e,t={})=>(t.locale??Da(),Vs(e))),Us=e=>Bs(`en`,e?.count,{})===`one`?`${e?.count} day`:`${e?.count} days`,Ws=((e,t={})=>(t.locale??Da(),Us(e))),Gs=()=>`Today`,Ks=((e={},t={})=>(t.locale??Da(),Gs(e))),qs=e=>`${e?.start} – ${e?.end}`,Js=((e,t={})=>(t.locale??Da(),qs(e))),Ys=e=>`${e?.start} – ...`,Xs=((e,t={})=>(t.locale??Da(),Ys(e))),Zs=()=>`Select start date`,Qs=((e={},t={})=>(t.locale??Da(),Zs(e))),$s=()=>`Select end date`,ec=((e={},t={})=>(t.locale??Da(),$s(e))),tc=()=>`Previous month`,nc=((e={},t={})=>(t.locale??Da(),tc(e))),rc=()=>`Next month`,ic=((e={},t={})=>(t.locale??Da(),rc(e))),ac=()=>`Daily Token Usage`,oc=((e={},t={})=>(t.locale??Da(),ac(e))),sc=()=>`Weekly Token Usage`,cc=((e={},t={})=>(t.locale??Da(),sc(e))),lc=()=>`Monthly Token Usage`,uc=((e={},t={})=>(t.locale??Da(),lc(e))),dc=()=>`Yearly Token Usage`,fc=((e={},t={})=>(t.locale??Da(),dc(e))),pc=B(``),mc=B(``);function hc(e,t){O(t,!0);let n=q(t,`compact`,3,!1),r=Sa.map(e=>({value:e,label:Qa(e)}));var i=Xr(),a=F(i),o=e=>{var t=mc();let i;var a=P(t),o=P(a,!0);D(a);var s=I(a,2);W(s,21,()=>r,e=>e.value,(e,t)=>{var n=pc(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(s);var c;Hi(s),D(t),L((e,r,a)=>{i=G(t,1,`locale-selector svelte-hr6ahz`,null,i,{"is-compact":n()}),H(o,e),K(s,`aria-label`,r),c!==(c=a)&&(s.value=(s.__value=a)??``,Vi(s,a))},[()=>ts(),()=>ts(),()=>Da()]),z(`change`,s,e=>Ma(e.currentTarget.value)),V(e,t)};U(a,e=>{r.length>1&&e(o)}),V(e,i),k()}Br([`change`]);function gc(e){let t=Number(e);return Number.isFinite(t)?Math.min(240,Math.max(60,Math.round(t))):240}function _c(e,t,n){return gc(Number(e)+Number(n)-Number(t))}var vc=new class{#e=j(`system`);get theme(){return R(this.#e)}set theme(e){M(this.#e,e,!0)}#t=j(0);get tick(){return R(this.#t)}set tick(e){M(this.#t,e,!0)}init(){this.theme=Ja(`gomodel_theme`,`system`),this.apply(),window.matchMedia(`(prefers-color-scheme: dark)`).addEventListener(`change`,()=>{this.theme===`system`&&this.tick++})}set(e){this.theme=e,Ya(`gomodel_theme`,e),this.apply(),this.tick++}toggle(){let e=[`light`,`system`,`dark`];this.set(e[(e.indexOf(this.theme)+1)%e.length])}apply(){let e=document.documentElement;this.theme===`system`?e.removeAttribute(`data-theme`):e.setAttribute(`data-theme`,this.theme)}},yc=new class{#e=j(N(240));get width(){return R(this.#e)}set width(e){M(this.#e,e,!0)}get collapsed(){return this.width===60}init(){let e=Ja(`gomodel_sidebar_width`),t=Ja(`gomodel_sidebar_collapsed`)===`true`;this.setWidth(e??(t?60:240))}toggle(){this.setWidth(this.collapsed?240:60,!0)}setWidth(e,t=!1){this.width=gc(e),typeof document<`u`&&document.documentElement.style.setProperty(`--sidebar-width`,`${this.width}px`),t&&(Ya(`gomodel_sidebar_width`,this.width),Ya(`gomodel_sidebar_collapsed`,this.collapsed))}},bc=new class{#e=j(N([]));get stack(){return R(this.#e)}set stack(e){M(this.#e,e,!0)}#t=1;opened(){let e=this.#t++;return this.stack=[...this.stack,e],e}closed(e){this.stack=this.stack.filter(t=>t!==e)}isTop(e){return this.stack.length>0&&this.stack[this.stack.length-1]===e}get openCount(){return this.stack.length}get anyOpen(){return this.stack.length>0}},xc=[[`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`}]],Sc=[[`path`,{d:`M12 5v14`}],[`path`,{d:`m19 12-7 7-7-7`}]],Cc=[[`path`,{d:`m12 19-7-7 7-7`}],[`path`,{d:`M19 12H5`}]],wc=[[`path`,{d:`M5 12h14`}],[`path`,{d:`m12 5 7 7-7 7`}]],Tc=[[`path`,{d:`m5 12 7-7 7 7`}],[`path`,{d:`M12 19V5`}]],Ec=[[`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`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`}],[`path`,{d:`M12 22V12`}]],Dc=[[`rect`,{width:`16`,height:`20`,x:`4`,y:`2`,rx:`2`}],[`line`,{x1:`8`,x2:`16`,y1:`6`,y2:`6`}],[`line`,{x1:`16`,x2:`16`,y1:`14`,y2:`18`}],[`path`,{d:`M16 10h.01`}],[`path`,{d:`M12 10h.01`}],[`path`,{d:`M8 10h.01`}],[`path`,{d:`M12 14h.01`}],[`path`,{d:`M8 14h.01`}],[`path`,{d:`M12 18h.01`}],[`path`,{d:`M8 18h.01`}]],Oc=[[`path`,{d:`M8 2v4`}],[`path`,{d:`M16 2v4`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`}],[`path`,{d:`M3 10h18`}],[`path`,{d:`M8 14h.01`}],[`path`,{d:`M12 14h.01`}],[`path`,{d:`M16 14h.01`}],[`path`,{d:`M8 18h.01`}],[`path`,{d:`M12 18h.01`}],[`path`,{d:`M16 18h.01`}]],kc=[[`path`,{d:`M8 2v4`}],[`path`,{d:`M16 2v4`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`}],[`path`,{d:`M3 10h18`}]],Ac=[[`path`,{d:`M13 17V9`}],[`path`,{d:`M18 17V5`}],[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`}],[`path`,{d:`M8 17v-3`}]],jc=[[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`}],[`path`,{d:`M18 17V9`}],[`path`,{d:`M13 17V5`}],[`path`,{d:`M8 17v-3`}]],Mc=[[`path`,{d:`M20 6 9 17l-5-5`}]],Nc=[[`path`,{d:`m6 9 6 6 6-6`}]],Pc=[[`path`,{d:`m15 18-6-6 6-6`}]],Fc=[[`path`,{d:`m9 18 6-6-6-6`}]],Ic=[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`}],[`path`,{d:`m9 11 3 3L22 4`}]],Lc=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`m9 12 2 2 4-4`}]],Rc=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8`}],[`path`,{d:`M12 18V6`}]],zc=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 6v6l4 2`}]],Bc=[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`}]],Vc=[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`}],[`path`,{d:`M3 5V19A9 3 0 0 0 15 21.84`}],[`path`,{d:`M21 5V8`}],[`path`,{d:`M21 12L18 17H22L19 22`}],[`path`,{d:`M3 12A9 3 0 0 0 14.59 14.87`}]],Hc=[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`}]],Uc=[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`}],[`path`,{d:`M10 9H8`}],[`path`,{d:`M16 13H8`}],[`path`,{d:`M16 17H8`}]],Wc=[[`path`,{d:`m12 14 4-4`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`}]],Gc=[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`}],[`path`,{d:`M3 3v5h5`}],[`path`,{d:`M12 7v5l4 2`}]],Kc=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 16v-4`}],[`path`,{d:`M12 8h.01`}]],qc=[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]],Jc=[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`}]],Yc=[[`path`,{d:`M3 5h.01`}],[`path`,{d:`M3 12h.01`}],[`path`,{d:`M3 19h.01`}],[`path`,{d:`M8 5h13`}],[`path`,{d:`M8 12h13`}],[`path`,{d:`M8 19h13`}]],Xc=[[`circle`,{cx:`12`,cy:`16`,r:`1`}],[`rect`,{x:`3`,y:`10`,width:`18`,height:`12`,rx:`2`}],[`path`,{d:`M7 10V7a5 5 0 0 1 10 0v3`}]],Zc=[[`path`,{d:`m16 17 5-5-5-5`}],[`path`,{d:`M21 12H9`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`}]],Qc=[[`path`,{d:`M15 3h6v6`}],[`path`,{d:`m21 3-7 7`}],[`path`,{d:`m3 21 7-7`}],[`path`,{d:`M9 21H3v-6`}]],$c=[[`path`,{d:`m14 10 7-7`}],[`path`,{d:`M20 10h-6V4`}],[`path`,{d:`m3 21 7-7`}],[`path`,{d:`M4 14h6v6`}]],el=[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`}]],tl=[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`}]],nl=[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`}],[`path`,{d:`m15 5 4 4`}]],rl=[[`path`,{d:`M12 22v-5`}],[`path`,{d:`M15 8V2`}],[`path`,{d:`M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z`}],[`path`,{d:`M9 8V2`}]],il=[[`path`,{d:`M5 12h14`}],[`path`,{d:`M12 5v14`}]],al=[[`path`,{d:`M12 2v10`}],[`path`,{d:`M18.4 6.6a9 9 0 1 1-12.77.04`}]],ol=[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`}],[`path`,{d:`M21 3v5h-5`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`}],[`path`,{d:`M8 16H3v5`}]],sl=[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`}],[`path`,{d:`M3 3v5h5`}]],cl=[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`}]],ll=[[`path`,{d:`m21 21-4.34-4.34`}],[`circle`,{cx:`11`,cy:`11`,r:`8`}]],ul=[[`path`,{d:`m10.852 14.772-.383.923`}],[`path`,{d:`M13.148 14.772a3 3 0 1 0-2.296-5.544l-.383-.923`}],[`path`,{d:`m13.148 9.228.383-.923`}],[`path`,{d:`m13.53 15.696-.382-.924a3 3 0 1 1-2.296-5.544`}],[`path`,{d:`m14.772 10.852.923-.383`}],[`path`,{d:`m14.772 13.148.923.383`}],[`path`,{d:`M4.5 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-.5`}],[`path`,{d:`M4.5 14H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-.5`}],[`path`,{d:`M6 18h.01`}],[`path`,{d:`M6 6h.01`}],[`path`,{d:`m9.228 10.852-.923-.383`}],[`path`,{d:`m9.228 13.148-.923.383`}]],dl=[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`}]],fl=[[`path`,{d:`M14 17H5`}],[`path`,{d:`M19 7h-9`}],[`circle`,{cx:`17`,cy:`17`,r:`3`}],[`circle`,{cx:`7`,cy:`7`,r:`3`}]],pl=[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`}],[`circle`,{cx:`12`,cy:`12`,r:`3`}]],ml=[[`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`}],[`path`,{d:`m9 12 2 2 4-4`}]],hl=[[`path`,{d:`m2 2 20 20`}],[`path`,{d:`M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71`}],[`path`,{d:`M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264`}]],gl=[[`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`}]],_l=[[`path`,{d:`m18 14 4 4-4 4`}],[`path`,{d:`m18 2 4 4-4 4`}],[`path`,{d:`M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22`}],[`path`,{d:`M2 6h1.972a4 4 0 0 1 3.6 2.2`}],[`path`,{d:`M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45`}]],vl=[[`circle`,{cx:`12`,cy:`12`,r:`4`}],[`path`,{d:`M12 2v2`}],[`path`,{d:`M12 20v2`}],[`path`,{d:`m4.93 4.93 1.41 1.41`}],[`path`,{d:`m17.66 17.66 1.41 1.41`}],[`path`,{d:`M2 12h2`}],[`path`,{d:`M20 12h2`}],[`path`,{d:`m6.34 17.66-1.41 1.41`}],[`path`,{d:`m19.07 4.93-1.41 1.41`}]],yl=[[`path`,{d:`M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z`}],[`circle`,{cx:`7.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]],bl=[[`line`,{x1:`10`,x2:`14`,y1:`2`,y2:`2`}],[`line`,{x1:`12`,x2:`15`,y1:`14`,y2:`11`}],[`circle`,{cx:`12`,cy:`14`,r:`8`}]],xl=[[`path`,{d:`M10 11v6`}],[`path`,{d:`M14 11v6`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]],Sl=[[`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`}],[`path`,{d:`M12 9v4`}],[`path`,{d:`M12 17h.01`}]],Cl=[[`circle`,{cx:`12`,cy:`8`,r:`5`}],[`path`,{d:`M20 21a8 8 0 0 0-16 0`}]],wl=[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`}],[`circle`,{cx:`12`,cy:`7`,r:`4`}]],Tl=[[`path`,{d:`M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1`}],[`path`,{d:`M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4`}]],El=[[`path`,{d:`m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72`}],[`path`,{d:`m14 7 3 3`}],[`path`,{d:`M5 6v4`}],[`path`,{d:`M19 14v4`}],[`path`,{d:`M10 2v2`}],[`path`,{d:`M7 8H3`}],[`path`,{d:`M21 16h-4`}],[`path`,{d:`M11 3H9`}]],Dl=[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`}]],Ol=[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]],kl=B(``),Al=B(`
`,1);function jl(e,t){O(t,!0);let n=q(t,`compact`,3,!1),r=[{value:`light`,icon:vl,label:qo()},{value:`system`,icon:el,label:Yo()},{value:`dark`,icon:tl,label:Zo()}],i=A(()=>r.find(e=>e.value===vc.theme)||r[1]),a=A(()=>$o({theme:R(i).label}));var o=Al(),s=F(o);let c;W(s,21,()=>r,e=>e.value,(e,t)=>{var n=kl();let r;J(P(n),{get icon(){return R(t).icon},class:`theme-icon`}),D(n),L(()=>{r=G(n,1,`theme-btn svelte-1keql7b`,null,r,{active:vc.theme===R(t).value}),K(n,`aria-pressed`,vc.theme===R(t).value),K(n,`title`,R(t).label),K(n,`aria-label`,R(t).label)}),z(`click`,n,()=>vc.set(R(t).value)),V(e,n)}),D(s);var l=I(s,2);let u;J(P(l),{get icon(){return R(i).icon},class:`theme-icon`}),D(l),L(e=>{c=G(s,1,`theme-toggle svelte-1keql7b`,null,c,{"is-compact":n()}),K(s,`aria-label`,e),u=G(l,1,`theme-toggle-mobile svelte-1keql7b`,null,u,{"is-compact":n()}),K(l,`title`,R(a)),K(l,`aria-label`,R(a))},[()=>Go()]),z(`click`,l,()=>vc.toggle()),V(e,o),k()}Br([`click`]);function Ml(){return typeof window>`u`?`/`:window.GOMODEL_BASE_PATH||`/`}function Nl(e){let t=Ml();return!e||e.charAt(0)!==`/`||e.indexOf(`//`)===0||t===`/`||e===t||e.indexOf(t+`/`)===0?e:t+e}function Pl(e){let t=Ml();return t===`/`||!e?e:e===t?`/`:e.indexOf(t+`/`)===0?e.slice(t.length)||`/`:e}function Fl(){return typeof window>`u`?``:window.GOMODEL_VERSION||``}function Il(){return typeof window>`u`?!1:window.GOMODEL_DEMO_MODE===!0}var Ll=[`overview`,`usage`,`budgets`,`rate-limits`,`models`,`workflows`,`audit-logs`,`guardrails`,`mcp-servers`,`providers-config`,`auth-keys`,`settings`];function Rl(e){return e.startsWith(`/admin/static/`)?`/`+e.slice(14).replace(/^\/+/,``):e}function zl(e){let t=Rl(Pl(e)).replace(/\/$/,``).replace(`/admin/dashboard`,``).replace(/^\//,``).split(`/`),n=t[0];n===`audit`&&(n=`audit-logs`);let r=t[1]||null;return n===`settings`&&r===`guardrails`?{page:`guardrails`,sub:null}:(n=Ll.includes(n)?n:`overview`,{page:n,sub:r})}var Bl=new class{#e=j(`overview`);get page(){return R(this.#e)}set page(e){M(this.#e,e,!0)}#t=j(null);get sub(){return R(this.#t)}set sub(e){M(this.#t,e,!0)}init(){let{page:e,sub:t}=zl(window.location.pathname);this.page=e,this.sub=t,window.addEventListener(`popstate`,()=>{let{page:e,sub:t}=zl(window.location.pathname);this.page=e,this.sub=t})}navigate(e,t=null){let n=t?`/`+t:``;history.pushState(null,``,Nl(`/admin/dashboard/`+e+n)),this.page=e,this.sub=t}},Vl=`X-GoModel-Auth-Login`,Hl=`X-GoModel-Auth-Logout`,Ul=`X-GoModel-Auth-User`;function Wl(e){let t=String(e||``).trim();return!t.startsWith(`/`)||t.startsWith(`//`)||t.includes(`\\`)?``:t}function Gl(e,t=globalThis.location){let n=Wl(e),r=Wl(t?.pathname);if(!n||!r)return n;let i=String(t?.search||``),a=r+(i.startsWith(`?`)?i:``),o=n.indexOf(`#`),s=o<0?n:n.slice(0,o),c=o<0?``:n.slice(o);return`${s}${s.includes(`?`)?`&`:`?`}return_to=${encodeURIComponent(a)}${c}`}function Kl(e){let t=e?.headers;if(!t||typeof t.has!=`function`)return null;let n={};return t.has(Vl)&&(n.loginURL=Wl(t.get(Vl))),t.has(Hl)&&(n.logoutURL=Wl(t.get(Hl))),t.has(Ul)&&(n.user=String(t.get(Ul)||``).trim().slice(0,256)),n}var ql=`gomodel_api_key`;function Jl(e){let t=String(e||``).trim();if(/^Bearer\s*$/i.test(t))return``;let n=t.match(/^Bearer\s+(.+)$/i);return n?n[1].trim():t}var Y=new class{#e=j(``);get apiKey(){return R(this.#e)}set apiKey(e){M(this.#e,e,!0)}#t=j(!1);get needsAuth(){return R(this.#t)}set needsAuth(e){M(this.#t,e,!0)}#n=j(!1);get authError(){return R(this.#n)}set authError(e){M(this.#n,e,!0)}#r=j(``);get authErrorMessage(){return R(this.#r)}set authErrorMessage(e){M(this.#r,e,!0)}#i=j(!1);get dialogOpen(){return R(this.#i)}set dialogOpen(e){M(this.#i,e,!0)}#a=j(``);get externalLoginURL(){return R(this.#a)}set externalLoginURL(e){M(this.#a,e,!0)}#o=j(``);get externalLogoutURL(){return R(this.#o)}set externalLogoutURL(e){M(this.#o,e,!0)}#s=j(``);get externalUser(){return R(this.#s)}set externalUser(e){M(this.#s,e,!0)}#c=j(0);get generation(){return R(this.#c)}set generation(e){M(this.#c,e,!0)}#l=j(0);get refreshTick(){return R(this.#l)}set refreshTick(e){M(this.#l,e,!0)}init(){try{this.apiKey=Jl(localStorage.getItem(ql)||``)}catch{this.apiKey=``}}hasApiKey(){return Jl(this.apiKey)!==``}save(){this.apiKey=Jl(this.apiKey);try{localStorage.setItem(ql,this.apiKey)}catch{}}selectExternalAuthentication(){this.apiKey=``;try{localStorage.removeItem(ql)}catch{}this.generation++,this.authError=!1,this.authErrorMessage=``,this.needsAuth=!0}openDialog(){this.dialogOpen=!0}closeDialog(){this.dialogOpen=!1}submit(){let e=Jl(this.apiKey);return e?(this.apiKey=e,this.save(),this.generation++,this.authError=!1,this.authErrorMessage=``,this.needsAuth=!1,this.closeDialog(),this.refresh(),!0):(this.apiKey=``,this.authError=!0,this.authErrorMessage=``,this.needsAuth=!0,this.openDialog(),!1)}refresh(){this.refreshTick++}observeResponse(e){let t=Kl(e);t&&(Object.hasOwn(t,`loginURL`)&&(this.externalLoginURL=t.loginURL),Object.hasOwn(t,`logoutURL`)&&(this.externalLogoutURL=t.logoutURL),Object.hasOwn(t,`user`)&&(this.externalUser=t.user))}handleUnauthorized(e,t=``){return typeof e==`number`&&e{r[e.type]=e.value}),r.year+`-`+r.month+`-`+r.day}formatTimestampInTimeZone(e,t){if(e==null)return`-`;let n=new Date(e);if(Number.isNaN(n.getTime()))return`-`;let r=au(`en-CA`,{timeZone:ou(t)?t:tu,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`}).formatToParts(n),i={};return r.forEach(e=>{i[e.type]=e.value}),i.year+`-`+i.month+`-`+i.day+` `+i.hour+`:`+i.minute+`:`+i.second}formatTimestamp(e){return this.formatTimestampInTimeZone(e,this.effectiveTimezone())}currentDateKey(e){return this.dateKeyInTimeZone(e||new Date,this.effectiveTimezone())}dateKeyToDate(e){return Xl(e)}dateToDateKey(e){return Zl(e)}addDaysToDateKey(e,t){return Ql(e,t)}todayDate(){return this.dateKeyToDate(this.currentDateKey())}startOfMonthDate(e){let t=e instanceof Date?e:this.todayDate();return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),1))}timeZoneOffsetLabel(e,t){let n=ou(e)?e:tu;try{let e=au(`en-US`,{timeZone:n,hour:`2-digit`,minute:`2-digit`,hourCycle:`h23`,timeZoneName:`longOffset`}).formatToParts(t||new Date).find(e=>e.type===`timeZoneName`);if(!e||!e.value)return`UTC+00:00`;let r=e.value.replace(`GMT`,`UTC`);return r===`UTC`?`UTC+00:00`:r}catch{return`UTC+00:00`}}timeZoneOffsetMinutes(e,t){let n=/^UTC([+-])(\d{2}):(\d{2})$/.exec(this.timeZoneOffsetLabel(e,t));if(!n)return 0;let r=Number(n[2])*60+Number(n[3]);return n[1]===`-`?-r:r}timeZoneOptionLabel(e,t){return e+` (`+this.timeZoneOffsetLabel(e,t)+`)`}detectedTimeZoneLabel(){return this.timeZoneOptionLabel(this.detectedTimezone)}effectiveTimeZoneLabel(){return this.timeZoneOptionLabel(this.effectiveTimezone())}ensureOptions(){if(this.optionsLoaded)return;let e=new Date,t=[];try{typeof Intl.supportedValuesOf==`function`&&(t=Intl.supportedValuesOf(`timeZone`))}catch{t=[]}[tu,this.detectedTimezone,this.override].forEach(e=>{e&&t.indexOf(e)===-1&&ou(e)&&t.push(e)}),t=t.filter(e=>ou(e)),t.sort((t,n)=>{let r=this.timeZoneOffsetMinutes(t,e)-this.timeZoneOffsetMinutes(n,e);return r===0?t.localeCompare(n):r}),this.options=t.map(t=>({value:t,label:this.timeZoneOptionLabel(t,e)})),this.optionsLoaded=!0}saveOverride(){let e=qa();if(e)if(this.override&&ou(this.override))try{e.setItem(nu,this.override)}catch{}else{try{e.removeItem(nu)}catch{}this.override=``}this.optionsLoaded=!1,this.ensureOptions()}clearOverride(){let e=qa();if(e)try{e.removeItem(nu)}catch{}this.override=``}calendarTimeZoneText(){let e=this.override?`manual override`:`auto-detected`;return`Activity grouped by `+this.effectiveTimeZoneLabel()+` (`+e+`)`}};function uu(e,t){let n=e&&typeof e==`object`&&e.error&&e.error.message;return(typeof n==`string`?n.trim():``)||t}function du(e,t){let n=e&&e.data;if(n&&typeof n==`object`){let e=[n.message,n.error,n.error&&typeof n.error==`object`?n.error.message:null];for(let t of e)if(typeof t==`string`&&t.trim())return t.trim()}return t}function fu(){let e={"Content-Type":`application/json`},t=Jl(Y.apiKey);return t&&(e.Authorization=`Bearer `+t),e[`X-GoModel-Timezone`]=lu.effectiveTimezone(),e}function pu(e,t={}){return fetch(Nl(e),{...t,headers:{...fu(),...t.headers||{}}})}async function mu(e,t,{label:n=e,parse:r=!0}={}){let i=Y.generation,a=await pu(e,t),o=ie.trim()).filter(Boolean);return e.length>0?e:yu}cacheVisible(){if(this.flag(`CACHE_ENABLED`)!==``)return this.booleanFlag(`CACHE_ENABLED`,!1);let e=this.flag(`REDIS_URL`),t=this.flag(`SEMANTIC_CACHE_ENABLED`);return e===``&&t===``||this.booleanFlag(`REDIS_URL`,!1)||this.booleanFlag(`SEMANTIC_CACHE_ENABLED`,!1)}auditVisible(){return this.booleanFlag(`LOGGING_ENABLED`,!0)}usageVisible(){return this.booleanFlag(`USAGE_ENABLED`,!0)}budgetsVisible(){return this.booleanFlag(`BUDGETS_ENABLED`,!0)}rateLimitsVisible(){return this.booleanFlag(`RATE_LIMITS_ENABLED`,!0)}guardrailsVisible(){return this.booleanFlag(`GUARDRAILS_ENABLED`,!0)}mcpVisible(){return this.booleanFlag(`MCP_ENABLED`,!0)}liveLogsVisible(){return this.booleanFlag(`DASHBOARD_LIVE_LOGS_ENABLED`,!0)}fetch(){return this.#n||=this.#r().finally(()=>{this.#n=null}),this.#n}async ensureLoaded(){if(this.#n){await this.#n;return}this.loaded||await this.fetch()}async#r(){let e=typeof AbortController==`function`?new AbortController:null,t=e?setTimeout(()=>e.abort(),1e4):null;try{let t=await hu(`/admin/runtime/config`,{label:`dashboard config`,signal:e?e.signal:void 0});if(t.stale)return;if(!t.ok){this.config={},this.loaded=!1;return}let n=t.data,r={};for(let e of vu)n&&typeof n==`object`&&!Array.isArray(n)&&n[e]!==void 0&&n[e]!==null&&(r[e]=String(n[e]).trim());this.config=r,this.loaded=!0}catch(e){console.error(`Failed to fetch dashboard config:`,e),this.config={},this.loaded=!1}finally{t!==null&&clearTimeout(t)}}},xu=[{page:`overview`,label:uo,icon:Jc},{page:`providers-config`,label:po,icon:ul},{page:`models`,label:ho,icon:Ec},{page:`audit-logs`,label:_o,icon:Gc},{page:`usage`,label:yo,icon:jc},{page:`budgets`,label:xo,icon:Tl,visible:()=>bu.budgetsVisible()},{page:`rate-limits`,label:Co,icon:Wc,visible:()=>bu.rateLimitsVisible()},{page:`auth-keys`,label:To,icon:qc},{page:`workflows`,label:Do,icon:Dl},{page:`guardrails`,label:ko,icon:ml,visible:()=>bu.guardrailsVisible()},{page:`mcp-servers`,label:jo,icon:rl,visible:()=>bu.mcpVisible()},{page:`settings`,label:No,icon:pl}],Su=B(` `),Cu=B(`
`),wu=B(``),Tu=B(`
`),Eu=B(` `,1);function Du(e,t){O(t,!0);let n=A(()=>xu.filter(e=>!e.visible||e.visible())),r=j(null),i=0,a=0,o=!1;function s(e){e.button===0&&(e.preventDefault(),M(r,e.pointerId,!0),i=e.clientX,a=yc.width,o=!1,e.currentTarget.setPointerCapture(e.pointerId),document.body.classList.add(`sidebar-resizing`))}function c(e){e.pointerId===R(r)&&(!o&&Math.abs(e.clientX-i)<=4||(o=!0,yc.setWidth(_c(a,i,e.clientX))))}function l(e){R(r)===null||e.pointerId!==void 0&&e.pointerId!==R(r)||(M(r,null),document.body.classList.remove(`sidebar-resizing`),yc.setWidth(yc.width,!0))}function u(){if(o){o=!1;return}yc.toggle()}function d(e){let t;if(e.key===`ArrowLeft`)t=yc.width-12;else if(e.key===`ArrowRight`)t=yc.width+12;else if(e.key===`Home`)t=60;else if(e.key===`End`)t=240;else if(e.key===`Enter`||e.key===` `){e.preventDefault(),yc.toggle();return}else return;e.preventDefault(),yc.setWidth(t,!0)}var f=Eu(),p=F(f);let m;var h=P(p),g=P(h);ba(P(g),{}),D(g);var _=I(g,4),v=P(_,!0);D(_),D(h);var y=I(h,2);W(y,21,()=>R(n),e=>e.page,(e,t)=>{var n=Su();let r;var i=P(n);J(i,{get icon(){return R(t).icon},class:`nav-icon`});var a=I(i,2),o=P(a,!0);D(a),D(n),L((e,i,a)=>{K(n,`href`,e),r=G(n,1,`nav-item svelte-1nwtzae`,null,r,{active:Bl.page===R(t).page}),K(n,`title`,i),H(o,a)},[()=>Nl(`/admin/dashboard/`+R(t).page),()=>R(t).label(),()=>R(t).label()]),z(`click`,n,e=>{e.preventDefault(),Bl.navigate(R(t).page)}),V(e,n)}),D(y);var b=I(y,2),x=P(b);hc(x,{get compact(){return yc.collapsed}});var S=I(x,2);jl(S,{get compact(){return yc.collapsed}});var C=I(S,2),w=e=>{var t=wu(),n=P(t),r=e=>{var t=Cu(),n=P(t);J(n,{get icon(){return Cl},class:`api-key-open-icon`});var r=I(n,2),i=P(r,!0);D(r),D(t),L(()=>{K(t,`title`,Y.externalUser),H(i,Y.externalUser)}),V(e,t)};U(n,e=>{Y.externalUser&&e(r)});var i=I(n,2),a=P(i);J(a,{get icon(){return Zc},class:`api-key-open-icon`});var o=I(a,2),s=P(o,!0);D(o),D(i),D(t),L((e,t,n)=>{K(i,`href`,e),K(i,`aria-label`,t),H(s,n)},[()=>Nl(Y.externalLogoutURL),()=>Fo(),()=>Fo()]),V(e,t)};U(C,e=>{Y.externalLogoutURL&&e(w)});var T=I(C,2),E=e=>{var t=Tu(),n=P(t),r=P(n);J(r,{get icon(){return Xc},class:`api-key-open-icon`});var i=I(r,2),a=P(i,!0);D(i),D(n),D(t),L((e,t)=>{K(n,`aria-label`,e),H(a,t)},[()=>Y.needsAuth?Lo():zo(),()=>Y.needsAuth?Lo():zo()]),z(`click`,n,()=>Y.openDialog()),V(e,t)},ee=A(()=>Y.needsAuth||Y.hasApiKey());U(T,e=>{R(ee)&&e(E)}),D(b),D(p);var te=I(p,2);L((e,t,n)=>{m=G(p,1,`sidebar svelte-1nwtzae`,null,m,{"sidebar-collapsed":yc.collapsed,"sidebar-resizing":R(r)!==null}),H(v,e),K(te,`title`,t),K(te,`aria-label`,n),K(te,`aria-valuemin`,60),K(te,`aria-valuemax`,240),K(te,`aria-valuenow`,yc.width)},[()=>co(),()=>Uo(),()=>Vo()]),z(`pointerdown`,te,s),z(`pointermove`,te,c),z(`pointerup`,te,l),zr(`pointercancel`,te,l),zr(`lostpointercapture`,te,l),z(`keydown`,te,d),z(`click`,te,u),V(e,f),k()}Br([`click`,`pointerdown`,`pointermove`,`pointerup`,`keydown`]);var Ou=B(``);function ku(e,t){O(t,!0);let n=q(t,`label`,3,`Close`),r=q(t,`class`,3,``),i=q(t,`iconClass`,3,`table-icon-svg`),a=q(t,`disabled`,3,!1),o=q(t,`el`,15,null);var s=Ou();J(P(s),{get icon(){return Ol},get class(){return i()}}),D(s),ma(s,e=>o(e),()=>o()),L(()=>{G(s,1,Ni([`dialog-close-btn`,r()]),`svelte-11l1bb5`),K(s,`aria-label`,n()),s.disabled=a()}),z(`click`,s,function(...e){t.onclick?.apply(this,e)}),V(e,s),k()}Br([`click`]);function Au(e){return t=>{let n=n=>{t.contains(n.target)||e()},r=t=>{t.key===`Escape`&&e()};return document.addEventListener(`click`,n,!0),window.addEventListener(`keydown`,r),()=>{document.removeEventListener(`click`,n,!0),window.removeEventListener(`keydown`,r)}}}function ju(e=`[data-modal-autofocus]`){return t=>{let n=t.querySelector(e);n&&typeof n.focus==`function`&&n.focus()}}var Mu=B(`
`,1);function Nu(e,t){O(t,!0);let n=q(t,`open`,3,!1),r=q(t,`variant`,3,`editor`),i=q(t,`closeOnBackdrop`,3,!0),a=A(()=>r()===`auth`?`auth-dialog-backdrop`:`editor-modal-backdrop`),o=A(()=>r()===`auth`?`auth-dialog-shell`:`editor-modal-shell`);On(()=>{if(!n())return;let e=wr(()=>bc.opened()),r=n=>{n.key===`Escape`&&bc.isTop(e)&&t.onclose?.()};return window.addEventListener(`keydown`,r),()=>{bc.closed(e),window.removeEventListener(`keydown`,r)}});function s(e){i()&&e.target===e.currentTarget&&t.onclose?.()}var c=Xr(),l=F(c),u=e=>{var n=Mu(),r=F(n),i=I(r,2);mi(P(i),()=>t.children??f),D(i),Ai(i,ju),L(()=>{G(r,1,Ni(R(a)),`svelte-17e0w4c`),G(i,1,Ni(R(o)),`svelte-17e0w4c`)}),z(`click`,i,s),V(e,n)};U(l,e=>{n()&&e(u)}),V(e,c),k()}Br([`click`]);var Pu=B(`
`,1),Fu=B(``),Iu=B(``);function Lu(e,t){O(t,!0),Nu(e,{get open(){return Y.dialogOpen},variant:`auth`,onclose:()=>Y.closeDialog(),children:(e,t)=>{var n=Iu(),r=P(n),i=P(r),a=P(i),o=P(a,!0);D(a),D(i);var s=I(i,2);{let e=A(()=>ls());ku(s,{get label(){return R(e)},onclick:()=>Y.closeDialog(),class:`auth-dialog-close`,iconClass:``})}D(r);var c=I(r,2),l=P(c),u=e=>{var t=Pu(),n=F(t),r=P(n);J(r,{get icon(){return qc}});var i=I(r,2),a=P(i,!0);D(i),D(n);var o=I(n,2),s=P(o),c=P(s,!0);D(s),D(o),L((e,t,r)=>{K(n,`href`,e),H(a,t),H(c,r)},[()=>Gl(Nl(Y.externalLoginURL)),()=>ds(),()=>ps()]),z(`click`,n,()=>Y.selectExternalAuthentication()),V(e,t)};U(l,e=>{Y.externalLoginURL&&e(u)});var d=I(l,2),f=P(d);J(f,{get icon(){return Xc},class:`auth-dialog-input-icon`});var p=I(f,2);ea(p),D(d);var m=I(d,2),h=e=>{var t=Fu(),n=P(t,!0);D(t),L(e=>H(n,e),[()=>Y.authErrorMessage||ys()]),V(e,t)};U(m,e=>{Y.authError&&e(h)});var g=I(m,2),_=P(g,!0);D(g);var v=I(g,2),y=P(v),b=P(y);J(b,{get icon(){return Mc},class:`auth-dialog-submit-icon`});var x=I(b,2),S=P(x,!0);D(x),D(y),D(v),D(c),D(n),L((e,t,n,r,i)=>{H(o,e),K(p,`placeholder`,t),K(p,`aria-label`,n),H(_,r),H(S,i)},[()=>Y.needsAuth?as():ss(),()=>_s(),()=>hs(),()=>xs(),()=>Y.needsAuth?Cs():Ts()]),zr(`submit`,c,e=>{e.preventDefault(),Y.submit()}),la(p,()=>Y.apiKey,e=>Y.apiKey=e),V(e,n)},$$slots:{default:!0}}),k()}Br([`click`]);function Ru(){return{open:!1,title:``,titleId:`typedConfirmationDialogTitle`,inputId:`typed-confirmation-input`,message:``,requiredText:``,value:``,confirmLabel:`Confirm`,icon:Sl,dialogClass:``,loading:!1,onConfirm:null,onClose:null}}var zu=new class{#e=j(N(Ru()));get state(){return R(this.#e)}set state(e){M(this.#e,e,!0)}#t=j(``);get error(){return R(this.#t)}set error(e){M(this.#t,e,!0)}open(e){this.error=``,this.state={...Ru(),open:!0,...e||{}}}close(){let e=this.state;typeof e.onClose==`function`&&e.onClose(),this.state=Ru(),this.error=``}ready(){return String(this.state.value||``).trim().toLowerCase()===String(this.state.requiredText||``).trim().toLowerCase()}inputLabel(){return`Type `+String(this.state.requiredText||``).trim()+` to confirm`}async submit(){if(!this.ready()){this.error=this.inputLabel()+`.`;return}if(typeof this.state.onConfirm==`function`){this.state.loading=!0;try{await this.state.onConfirm()}finally{this.state.loading=!1}}}},Bu=B(`

`),Vu=B(``),Hu=B(`

`);function Uu(e,t){O(t,!0);let n=A(()=>zu.state);Nu(e,{get open(){return R(n).open},variant:`auth`,onclose:()=>zu.close(),children:(e,t)=>{var r=Hu(),i=P(r),a=P(i),o=P(a,!0);D(a);var s=I(a,2);{let e=A(()=>Ds());ku(s,{get label(){return R(e)},onclick:()=>zu.close(),class:`auth-dialog-close`,iconClass:``})}D(i);var c=I(i,2),l=P(c),u=e=>{var t=Bu(),r=P(t,!0);D(t),L(()=>H(r,R(n).message)),V(e,t)};U(l,e=>{R(n).message&&e(u)});var d=I(l,2),f=P(d),p=P(f,!0);D(f);var m=I(f,2);ea(m),D(d);var h=I(d,2),g=e=>{var t=Vu(),n=P(t,!0);D(t),L(()=>H(n,zu.error)),V(e,t)};U(h,e=>{zu.error&&e(g)});var _=I(h,2),v=P(_),y=P(v,!0);D(v);var b=I(v,2),x=P(b);J(x,{get icon(){return R(n).icon},class:`form-action-icon`});var S=I(x,2),C=P(S,!0);D(S),D(b),D(_),D(c),D(r),L((e,t,i)=>{G(r,1,`auth-dialog ${R(n).dialogClass??``}`),K(r,`aria-labelledby`,R(n).titleId),K(a,`id`,R(n).titleId),H(o,R(n).title),K(f,`for`,R(n).inputId),H(p,e),K(m,`id`,R(n).inputId),H(y,t),b.disabled=i,H(C,R(n).confirmLabel)},[()=>zu.inputLabel(),()=>no(),()=>R(n).loading||!zu.ready()]),zr(`submit`,c,e=>{e.preventDefault(),zu.submit()}),la(m,()=>zu.state.value,e=>zu.state.value=e),z(`click`,v,()=>zu.close()),V(e,r)},$$slots:{default:!0}}),k()}Br([`click`]);var Wu=e=>e;function Gu(e){let t=e-1;return t*t*t+1}function Ku(e){let t=typeof e==`string`&&e.match(/^\s*(-?[\d.]+)([^\s]*)\s*$/);return t?[parseFloat(t[1]),t[2]||`px`]:[e,`px`]}function qu(e,{delay:t=0,duration:n=400,easing:r=Wu}={}){let i=+getComputedStyle(e).opacity;return{delay:t,duration:n,easing:r,css:e=>`opacity: ${e*i}`}}function Ju(e,{delay:t=0,duration:n=400,easing:r=Gu,x:i=0,y:a=0,opacity:o=0}={}){let s=getComputedStyle(e),c=+s.opacity,l=s.transform===`none`?``:s.transform,u=c*(1-o),[d,f]=Ku(i),[p,m]=Ku(a);return{delay:t,duration:n,easing:r,css:(e,t)=>` +\r\f\xA0\v`];function Fi(e,t,n){var r=e==null?``:``+e;if(t&&(r=r?r+` `+t:t),n){for(var i of Object.keys(n))if(n[i])r=r?r+` `+i:i;else if(r.length)for(var a=i.length,o=0;(o=r.indexOf(i,o))>=0;){var s=o+a;(o===0||Pi.includes(r[o-1]))&&(s===r.length||Pi.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Ii(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function Li(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function Ri(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(Li)),i&&c.push(...Object.keys(i).map(Li));var l=0,u=-1;let t=e.length;for(var d=0;d{Vi(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),Dn(()=>{t.disconnect()})}function Ui(e,t,n=t){var r=new WeakSet,i=!0;mt(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),Wi);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&Wi(o)}n(a),e.__value=a,Nt!==null&&r.add(Nt)}),Mn(()=>{var a=t();if(e===document.activeElement){var o=Nt;if(r.has(o))return}if(Vi(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=Wi(s),n(a))}e.__value=a,i=!1}),Hi(e)}function Wi(e){return`__value`in e?e.__value:e.value}var Gi=Symbol(`class`),Ki=Symbol(`style`),qi=Symbol(`is custom element`),Ji=Symbol(`is html`),Yi=he?`link`:`LINK`,Xi=he?`input`:`INPUT`,Zi=he?`option`:`OPTION`,Qi=he?`select`:`SELECT`,$i=he?`progress`:`PROGRESS`;function ea(e){if(Ie){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;K(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;K(e,`checked`,null),e.checked=r}}};e[pe]=n,Qe(n),ft()}}function ta(e,t){var n=oa(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==$i)||(e.value=t??``)}function na(e,t){var n=oa(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function ra(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function K(e,t,n,r){var i=oa(e);Ie&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===Yi)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[ce]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&ca(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function ia(e,t,n,r,i=!1,a=!1){if(Ie&&i&&e.nodeName===Xi){var o=e;(o.type===`checkbox`?`defaultChecked`:`defaultValue`)in n||ea(o)}var s=oa(e),c=s[qi],l=!s[Ji];let u=Ie&&c;u&&Le(!1);var d=t||{},f=e.nodeName===Zi;for(var p in t)p in n||(n[p]=null);n.class?n.class=Ni(n.class):(r||n[Gi])&&(n.class=null),n[Ki]&&(n.style??=null);var m=ca(e);if(e.nodeName===Xi&&`type`in n&&(`value`in n||`__value`in n)){var h=n.type;(h!==d.type||h===void 0&&e.hasAttribute(`type`))&&(d.type=h,K(e,`type`,h,a))}for(let i in n){let o=n[i];if(f&&i===`value`&&o==null){e.value=e.__value=``,d[i]=o;continue}if(i===`class`){G(e,e.namespaceURI===`http://www.w3.org/1999/xhtml`,o,r,t?.[Gi],n[Gi]),d[i]=o,d[Gi]=n[Gi];continue}if(i===`style`){Bi(e,o,t?.[Ki],n[Ki]),d[i]=o,d[Ki]=n[Ki];continue}var g=d[i];if(!(o===g&&!(o===void 0&&e.hasAttribute(i)))){d[i]=o;var _=i[0]+i[1];if(_!==`$$`)if(_===`on`){let t={},n=`$$`+i,r=i.slice(2);var v=Dr(r);if(Tr(r)&&(r=r.slice(0,-7),t.capture=!0),!v&&g){if(o!=null)continue;e.removeEventListener(r,d[n],t),d[n]=null}if(v)z(r,e,o),Br([r]);else if(o!=null){function a(e){d[i].call(this,e)}d[n]=Rr(r,e,a,t)}}else if(i===`style`)K(e,i,o);else if(i===`autofocus`)lt(e,!!o);else if(!c&&(i===`__value`||i===`value`&&o!=null))e.value=e.__value=o;else if(i===`selected`&&f)ra(e,o);else{var y=i;l||(y=Ar(y));var b=y===`defaultValue`||y===`defaultChecked`;if(o==null&&!c&&!b)if(s[i]=null,y===`value`||y===`checked`){let n=e,r=t===void 0;if(y===`value`){let e=n.defaultValue;n.removeAttribute(y),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(y),n.defaultChecked=e,n.checked=r?e:!1}}else e.removeAttribute(i);else b||m.includes(y)&&(c||typeof o!=`string`)?(e[y]=o,y in s&&(s[y]=Oe)):typeof o!=`function`&&K(e,y,o,a)}}}return u&&Le(!0),d}function aa(e,t,n=[],r=[],i=[],a,o=!1,s=!1){yt(i,n,r,n=>{var r=void 0,i={},c=e.nodeName===Qi,l=!1;if(In(()=>{var u=t(...n.map(R)),d=ia(e,r,u,a,o,s);l&&c&&`value`in u&&Vi(e,u.value);for(let e of Object.getOwnPropertySymbols(i))u[e]||Vn(i[e]);for(let t of Object.getOwnPropertySymbols(u)){var f=u[t];t.description===`@attach`&&(!r||f!==r[t])&&(i[t]&&Vn(i[t]),i[t]=Ln(()=>Ai(e,()=>f))),d[t]=f}r=d}),c){var u=e;Mn(()=>{Vi(u,r.value,!0),Hi(u)})}l=!0})}function oa(e){return e[le]??={[qi]:e.nodeName.includes(`-`),[Ji]:e.namespaceURI===ke}}var sa=new Map;function ca(e){var t=e.getAttribute(`is`)||e.nodeName,n=sa.get(t);if(n)return n;sa.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var s in r=o(i),r)r[s].set&&s!==`innerHTML`&&s!==`textContent`&&s!==`innerText`&&n.push(s);i=l(i)}return n}function la(e,t,n=t){var r=new WeakSet;mt(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=da(e)?fa(a):a,n(a),Nt!==null&&r.add(Nt),await xr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(Ie&&e.defaultValue!==e.value||wr(t)==null&&e.value)&&(n(da(e)?fa(e.value):e.value),Nt!==null&&r.add(Nt)),Pn(()=>{var n=t();if(e===document.activeElement){var i=Nt;if(r.has(i))return}da(e)&&n===fa(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function ua(e,t,n=t){mt(e,`change`,t=>{n(t?e.defaultChecked:e.checked)}),(Ie&&e.defaultChecked!==e.checked||wr(t)==null)&&n(e.checked),Pn(()=>{e.checked=!!t()})}function da(e){var t=e.type;return t===`number`||t===`range`}function fa(e){return e===``?null:+e}function pa(e,t){return e===t||e?.[oe]===t}function ma(e={},t,n,r){var i=qe.r,a=nr;return Mn(()=>{var o,s;return Pn(()=>{o=s,s=r?.()||[],wr(()=>{pa(n(...s),e)||(t(e,...s),o&&pa(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&pa(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}var ha={get(e,t){if(!e.exclude.has(t))return e.props[t]},set(e,t){return!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.has(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return!e.exclude.has(t)&&t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.has(t))}};function ga(e,t,n){return new Proxy({props:e,exclude:t},ha)}function q(e,t,n,r){var i=!0,o=(n&8)!=0,s=(n&16)!=0,c=r,l=!0,u=void 0,d=()=>s&&i?(u??=Ct(r),R(u)):(l&&(l=!1,c=s?wr(r):r),c);let f;if(o){var p=oe in e||se in e;f=a(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;o?[m,h]=ct(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&Se(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?Ct:Et)(()=>(v=!1,g()));o&&R(y);var b=nr;return(function(e,t){if(arguments.length>0){let n=t?R(y):i&&o?N(e):e;return M(y,n),v=!0,c!==void 0&&(c=n),e}return Zn&&v||b.f&16384?y.v:R(y)})}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);var _a=new Set([`$$slots`,`$$events`,`$$legacy`,`icon`,`class`]),va=Jr(``);function J(e,t){let n=q(t,`icon`,19,()=>[]),r=q(t,`class`,3,``),i=ga(t,_a);var a=va();aa(a,()=>({xmlns:`http://www.w3.org/2000/svg`,width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,class:r(),"aria-hidden":`true`,focusable:`false`,...i}));{let e=(t,n=f)=>{var r=Xr();W(F(r),17,n,ii,(t,n)=>{var r=A(()=>g(R(n),3));let i=()=>R(r)[0],a=()=>R(r)[1],o=()=>R(r)[2];var s=Xr();ki(F(s),i,!0,(t,n)=>{aa(t,()=>({xmlns:`http://www.w3.org/2000/svg`,...a()}));var r=Xr(),i=F(r),s=t=>{e(t,o)},c=A(()=>Array.isArray(o()));U(i,e=>{R(c)&&e(s)}),V(n,r)}),V(t,s)}),V(t,r)};e(P(a),n),D(a)}V(e,a)}var ya=Jr(``);function ba(e){V(e,ya())}var xa={},Sa=[`en`,`pl`],Ca=`PARAGLIDE_LOCALE`,wa=[`custom-dashboard`,`preferredLanguage`,`baseLocale`],Ta=[];globalThis.__paraglide=globalThis.__paraglide??{},globalThis.__paraglide.ssr=globalThis.__paraglide.ssr??{};var Ea=!1,Da=()=>{let e=wa;typeof window<`u`&&window.location?.href&&(e=Ua(window.location.href));let t=Oa(e,typeof window<`u`?window.location?.href:void 0);if(t)return Ea||(Ea=!0,Ma(t,{reload:!1})),t;throw Error(`No locale found. Read the docs https://paraglidejs.com/errors#no-locale-found`)};function Oa(e,t){let n;for(let t of e){if(t===`baseLocale`)n=`en`;else if(t===`preferredLanguage`)n=La();else if(Ga(t)&&Wa.has(t)){let e=Wa.get(t);if(e){let t=e.getLocale();if(t instanceof Promise)continue;if(t!==void 0)return Fa(t)}}let e=Pa(n);if(e)return e}}var ka=new Set([`ar`,`dv`,`fa`,`he`,`ks`,`ku`,`ps`,`sd`,`ug`,`ur`,`yi`]);function Aa(e=Da()){try{let t=new Intl.Locale(e),n=t.getTextInfo?.().direction??t.textInfo?.direction;if(n===`ltr`||n===`rtl`)return n}catch{}let t=e.split(`-`)[0]?.toLowerCase();return ka.has(t??``)?`rtl`:`ltr`}var ja=e=>{e?window.location.href=e:window.location.reload()},Ma=(e,t)=>{let n={reload:!0,...t},r;try{r=Da()}catch{}let i=[],a=wa;typeof window<`u`&&window.location?.href&&(a=Ua(window.location.href));for(let t of a)if(t===`baseLocale`)continue;else if(Ga(t)&&Wa.has(t)){let n=Wa.get(t);if(n){let r=n.setLocale(e);r instanceof Promise&&(r=r.catch(e=>{throw Error(`Custom strategy "${t}" setLocale failed.`,{cause:e})}),i.push(r))}}let o=()=>{n.reload&&window.location&&e!==r&&ja(void 0)};if(i.length)return Promise.all(i).then(()=>{o()});o()},Na=()=>typeof window<`u`?window.location.origin:`http://fallback.com`;function Pa(e){if(typeof e!=`string`)return;let t=e.toLowerCase();for(let e of Sa)if(e.toLowerCase()===t)return e}function Fa(e){let t=Pa(e);if(t)return t;throw Error(`Invalid locale: ${e}. Expected one of: ${Sa.join(`, `)}`)}var Ia=Ca.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);RegExp(`(?:^|;\\s*)${Ia}=([^;]*)`);function La(){if(!navigator?.languages?.length)return;let e=navigator.languages.map(e=>({fullTag:e,baseTag:e.split(`-`)[0]}));for(let t of e){let e=Pa(t.fullTag);if(e)return e;let n=Pa(t.baseTag);if(n)return n}}function Ra(e){return za(e)}function za(e){let t=typeof e==`string`?new URL(e,Na()):new URL(e),n=t.pathname.split(`/`).filter(Boolean);return n.length>0&&Pa(n[0])&&(t.pathname=`/`+n.slice(1).join(`/`)),t}var Ba,Va;function Ha(e){if(Ta.length===0)return;let t=typeof e==`string`?e:e.href;if(Ba===t)return Va;let n=new URL(t,`http://example.com`),r=Ra(n),i=r.href===n.href?[n]:[n,r],a;for(let e of i){for(let t of Ta)if(new xa(t.match,e.href).exec(e.href)){a=t;break}if(a)break}return Ba=t,Va=a,a}function Ua(e){let t=Ha(e);return t&&t.exclude!==!0&&Array.isArray(t.strategy)?t.strategy:wa}var Wa=new Map;function Ga(e){return typeof e==`string`&&/^custom-[A-Za-z0-9_-]+$/.test(e)}function Ka(e,t){if(!Ga(e))throw Error(`Invalid custom strategy: "${e}". Must be a custom strategy following the pattern custom-name.`);Wa.set(e,t)}function qa(){try{return typeof window>`u`?null:window.localStorage}catch{return null}}function Ja(e,t=null){let n=qa();if(!n)return t;try{return n.getItem(e)??t}catch{return t}}function Ya(e,t){let n=qa();if(n)try{n.setItem(e,String(t))}catch{}}var Xa=`gomodel_locale`;Ka(`custom-dashboard`,{getLocale:()=>Ja(Xa)||void 0,setLocale:e=>Ya(Xa,e)});function Za(){let e=Da();document.documentElement.lang=e,document.documentElement.dir=Aa(e)}function Qa(e){return typeof Intl.DisplayNames==`function`&&new Intl.DisplayNames([e],{type:`language`}).of(e)||e}function $a(e,t){return new Intl.NumberFormat(Da(),t).format(e)}function eo(e,t){return new Intl.DateTimeFormat(Da(),t).format(e)}var to=()=>`Cancel`,no=()=>`Anuluj`,ro=((e={},t={})=>(t.locale??Da())===`pl`?no(e):to(e)),io=()=>`Next`,ao=()=>`Dalej`,oo=((e={},t={})=>(t.locale??Da())===`pl`?ao(e):io(e)),so=()=>`Previous`,co=()=>`Wstecz`,lo=((e={},t={})=>(t.locale??Da())===`pl`?co(e):so(e)),uo=()=>`Admin`,fo=()=>`Admin`,po=((e={},t={})=>(t.locale??Da())===`pl`?fo(e):uo(e)),mo=()=>`Overview`,ho=()=>`Przegląd`,go=((e={},t={})=>(t.locale??Da())===`pl`?ho(e):mo(e)),_o=()=>`Providers`,vo=()=>`Dostawcy`,yo=((e={},t={})=>(t.locale??Da())===`pl`?vo(e):_o(e)),bo=()=>`Models`,xo=()=>`Modele`,So=((e={},t={})=>(t.locale??Da())===`pl`?xo(e):bo(e)),Co=()=>`Audit Logs`,wo=()=>`Logi audytowe`,To=((e={},t={})=>(t.locale??Da())===`pl`?wo(e):Co(e)),Eo=()=>`Usage`,Do=()=>`Zużycie`,Oo=((e={},t={})=>(t.locale??Da())===`pl`?Do(e):Eo(e)),ko=()=>`Budgets`,Ao=()=>`Budżety`,jo=((e={},t={})=>(t.locale??Da())===`pl`?Ao(e):ko(e)),Mo=()=>`Rate Limits`,No=()=>`Limity zapytań`,Po=((e={},t={})=>(t.locale??Da())===`pl`?No(e):Mo(e)),Fo=()=>`API Keys`,Io=()=>`Klucze API`,Lo=((e={},t={})=>(t.locale??Da())===`pl`?Io(e):Fo(e)),Ro=()=>`Workflows`,zo=()=>`Workflows`,Bo=((e={},t={})=>(t.locale??Da())===`pl`?zo(e):Ro(e)),Vo=()=>`Guardrails (experimental)`,Ho=()=>`Guardrails (eksperymentalne)`,Uo=((e={},t={})=>(t.locale??Da())===`pl`?Ho(e):Vo(e)),Wo=()=>`MCP Servers`,Go=()=>`Serwery MCP`,Ko=((e={},t={})=>(t.locale??Da())===`pl`?Go(e):Wo(e)),qo=()=>`Settings`,Jo=()=>`Ustawienia`,Yo=((e={},t={})=>(t.locale??Da())===`pl`?Jo(e):qo(e)),Xo=()=>`Sign out`,Zo=()=>`Wyloguj się`,Qo=((e={},t={})=>(t.locale??Da())===`pl`?Zo(e):Xo(e)),$o=()=>`Enter API key`,es=()=>`Wprowadź klucz API`,ts=((e={},t={})=>(t.locale??Da())===`pl`?es(e):$o(e)),ns=()=>`Change API key`,rs=()=>`Zmień klucz API`,is=((e={},t={})=>(t.locale??Da())===`pl`?rs(e):ns(e)),as=()=>`Resize sidebar`,os=()=>`Zmień szerokość paska bocznego`,ss=((e={},t={})=>(t.locale??Da())===`pl`?os(e):as(e)),cs=()=>`Drag to resize; click to collapse or expand`,ls=()=>`Przeciągnij, aby zmienić szerokość; kliknij, aby zwinąć lub rozwinąć`,us=((e={},t={})=>(t.locale??Da())===`pl`?ls(e):cs(e)),ds=()=>`Theme`,fs=()=>`Motyw`,ps=((e={},t={})=>(t.locale??Da())===`pl`?fs(e):ds(e)),ms=()=>`Light theme`,hs=()=>`Jasny motyw`,gs=((e={},t={})=>(t.locale??Da())===`pl`?hs(e):ms(e)),_s=()=>`System theme`,vs=()=>`Motyw systemowy`,ys=((e={},t={})=>(t.locale??Da())===`pl`?vs(e):_s(e)),bs=()=>`Dark theme`,xs=()=>`Ciemny motyw`,Ss=((e={},t={})=>(t.locale??Da())===`pl`?xs(e):bs(e)),Cs=e=>`Change theme (currently ${e?.theme})`,ws=e=>`Zmień motyw (obecnie: ${e?.theme})`,Ts=((e,t={})=>(t.locale??Da())===`pl`?ws(e):Cs(e)),Es=()=>`Language`,Ds=()=>`Język`,Os=((e={},t={})=>(t.locale??Da())===`pl`?Ds(e):Es(e)),ks=()=>`Authentication required for dashboard data.`,As=()=>`Dostęp do danych panelu wymaga uwierzytelnienia.`,js=((e={},t={})=>(t.locale??Da())===`pl`?As(e):ks(e)),Ms=()=>`Dashboard locked`,Ns=()=>`Panel zablokowany`,Ps=((e={},t={})=>(t.locale??Da())===`pl`?Ns(e):Ms(e)),Fs=()=>`Change API key`,Is=()=>`Zmień klucz API`,Ls=((e={},t={})=>(t.locale??Da())===`pl`?Is(e):Fs(e)),Rs=()=>`Close authentication dialog`,zs=()=>`Zamknij okno uwierzytelniania`,Bs=((e={},t={})=>(t.locale??Da())===`pl`?zs(e):Rs(e)),Vs=()=>`Sign in with SSO`,Hs=()=>`Zaloguj się przez SSO`,Us=((e={},t={})=>(t.locale??Da())===`pl`?Hs(e):Vs(e)),Ws=()=>`or use an API key`,Gs=()=>`lub użyj klucza API`,Ks=((e={},t={})=>(t.locale??Da())===`pl`?Gs(e):Ws(e)),qs=()=>`API key`,Js=()=>`Klucz API`,Ys=((e={},t={})=>(t.locale??Da())===`pl`?Js(e):qs(e)),Xs=()=>`Master key or bearer token`,Zs=()=>`Klucz główny lub token Bearer`,Qs=((e={},t={})=>(t.locale??Da())===`pl`?Zs(e):Xs(e)),$s=()=>`Enter a valid API key to continue.`,ec=()=>`Aby kontynuować, wprowadź prawidłowy klucz API.`,tc=((e={},t={})=>(t.locale??Da())===`pl`?ec(e):$s(e)),nc=()=>`Stored in this browser. Requests use the Authorization bearer header.`,rc=()=>`Klucz jest przechowywany w tej przeglądarce. Żądania używają nagłówka Authorization typu Bearer.`,ic=((e={},t={})=>(t.locale??Da())===`pl`?rc(e):nc(e)),ac=()=>`Unlock dashboard`,oc=()=>`Odblokuj panel`,sc=((e={},t={})=>(t.locale??Da())===`pl`?oc(e):ac(e)),cc=()=>`Save API key`,lc=()=>`Zapisz klucz API`,uc=((e={},t={})=>(t.locale??Da())===`pl`?lc(e):cc(e)),dc=()=>`Close confirmation dialog`,fc=()=>`Zamknij okno potwierdzenia`,pc=((e={},t={})=>(t.locale??Da())===`pl`?fc(e):dc(e)),mc=()=>`Dismiss notification`,hc=()=>`Zamknij powiadomienie`,gc=((e={},t={})=>(t.locale??Da())===`pl`?hc(e):mc(e)),_c=()=>`Demo mode notice`,vc=()=>`Informacja o trybie demo`,yc=((e={},t={})=>(t.locale??Da())===`pl`?vc(e):_c(e)),bc=()=>`Public demo`,xc=()=>`Publiczne demo`,Sc=((e={},t={})=>(t.locale??Da())===`pl`?xc(e):bc(e)),Cc=()=>`Do not enter sensitive or personal data. Demo data is reset regularly.`,wc=()=>`Nie wprowadzaj danych poufnych ani osobowych. Dane demonstracyjne są regularnie resetowane.`,Tc=((e={},t={})=>(t.locale??Da())===`pl`?wc(e):Cc(e)),Ec=()=>`GoModel website`,Dc=()=>`Strona GoModel`,Oc=((e={},t={})=>(t.locale??Da())===`pl`?Dc(e):Ec(e)),kc=e=>`Showing ${e?.start}–${e?.end} of ${e?.total}`,Ac=e=>`Wyświetlanie ${e?.start}–${e?.end} z ${e?.total}`,jc=((e,t={})=>(t.locale??Da())===`pl`?Ac(e):kc(e));function Mc(e,t,n){return new Intl.PluralRules(e,n).select(Number(t))}var Nc=e=>Mc(`en`,e?.count,{})===`one`?`Last ${e?.count} day`:`Last ${e?.count} days`,Pc=e=>{let t=Mc(`pl`,e?.count,{});return t===`one`?`Ostatni ${e?.count} dzień`:t===`few`||t===`many`?`Ostatnie ${e?.count} dni`:`Ostatnie ${e?.count} dnia`},Fc=((e,t={})=>(t.locale??Da())===`pl`?Pc(e):Nc(e)),Ic=e=>Mc(`en`,e?.count,{})===`one`?`${e?.count} day`:`${e?.count} days`,Lc=e=>{let t=Mc(`pl`,e?.count,{});return t===`one`?`${e?.count} dzień`:t===`few`||t===`many`?`${e?.count} dni`:`${e?.count} dnia`},Rc=((e,t={})=>(t.locale??Da())===`pl`?Lc(e):Ic(e)),zc=()=>`Today`,Bc=()=>`Dzisiaj`,Vc=((e={},t={})=>(t.locale??Da())===`pl`?Bc(e):zc(e)),Hc=e=>`${e?.start} – ${e?.end}`,Uc=e=>`${e?.start} – ${e?.end}`,Wc=((e,t={})=>(t.locale??Da())===`pl`?Uc(e):Hc(e)),Gc=e=>`${e?.start} – ...`,Kc=e=>`${e?.start} – ...`,qc=((e,t={})=>(t.locale??Da())===`pl`?Kc(e):Gc(e)),Jc=()=>`Select start date`,Yc=()=>`Wybierz datę początkową`,Xc=((e={},t={})=>(t.locale??Da())===`pl`?Yc(e):Jc(e)),Zc=()=>`Select end date`,Qc=()=>`Wybierz datę końcową`,$c=((e={},t={})=>(t.locale??Da())===`pl`?Qc(e):Zc(e)),el=()=>`Previous month`,tl=()=>`Poprzedni miesiąc`,nl=((e={},t={})=>(t.locale??Da())===`pl`?tl(e):el(e)),rl=()=>`Next month`,il=()=>`Następny miesiąc`,al=((e={},t={})=>(t.locale??Da())===`pl`?il(e):rl(e)),ol=()=>`Daily Token Usage`,sl=()=>`Dzienne zużycie tokenów`,cl=((e={},t={})=>(t.locale??Da())===`pl`?sl(e):ol(e)),ll=()=>`Weekly Token Usage`,ul=()=>`Tygodniowe zużycie tokenów`,dl=((e={},t={})=>(t.locale??Da())===`pl`?ul(e):ll(e)),fl=()=>`Monthly Token Usage`,pl=()=>`Miesięczne zużycie tokenów`,ml=((e={},t={})=>(t.locale??Da())===`pl`?pl(e):fl(e)),hl=()=>`Yearly Token Usage`,gl=()=>`Roczne zużycie tokenów`,_l=((e={},t={})=>(t.locale??Da())===`pl`?gl(e):hl(e)),vl=B(``),yl=B(``);function bl(e,t){O(t,!0);let n=q(t,`compact`,3,!1),r=Sa.map(e=>({value:e,label:Qa(e)}));var i=Xr(),a=F(i),o=e=>{var t=yl();let i;var a=P(t),o=P(a,!0);D(a);var s=I(a,2);W(s,21,()=>r,e=>e.value,(e,t)=>{var n=vl(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(s);var c;Hi(s),D(t),L((e,r,a)=>{i=G(t,1,`locale-selector svelte-hr6ahz`,null,i,{"is-compact":n()}),H(o,e),K(s,`aria-label`,r),c!==(c=a)&&(s.value=(s.__value=a)??``,Vi(s,a))},[()=>Os(),()=>Os(),()=>Da()]),z(`change`,s,e=>Ma(e.currentTarget.value)),V(e,t)};U(a,e=>{r.length>1&&e(o)}),V(e,i),k()}Br([`change`]);function xl(e){let t=Number(e);return Number.isFinite(t)?Math.min(240,Math.max(60,Math.round(t))):240}function Sl(e,t,n){return xl(Number(e)+Number(n)-Number(t))}var Cl=new class{#e=j(`system`);get theme(){return R(this.#e)}set theme(e){M(this.#e,e,!0)}#t=j(0);get tick(){return R(this.#t)}set tick(e){M(this.#t,e,!0)}init(){this.theme=Ja(`gomodel_theme`,`system`),this.apply(),window.matchMedia(`(prefers-color-scheme: dark)`).addEventListener(`change`,()=>{this.theme===`system`&&this.tick++})}set(e){this.theme=e,Ya(`gomodel_theme`,e),this.apply(),this.tick++}toggle(){let e=[`light`,`system`,`dark`];this.set(e[(e.indexOf(this.theme)+1)%e.length])}apply(){let e=document.documentElement;this.theme===`system`?e.removeAttribute(`data-theme`):e.setAttribute(`data-theme`,this.theme)}},wl=new class{#e=j(N(240));get width(){return R(this.#e)}set width(e){M(this.#e,e,!0)}get collapsed(){return this.width===60}init(){let e=Ja(`gomodel_sidebar_width`),t=Ja(`gomodel_sidebar_collapsed`)===`true`;this.setWidth(e??(t?60:240))}toggle(){this.setWidth(this.collapsed?240:60,!0)}setWidth(e,t=!1){this.width=xl(e),typeof document<`u`&&document.documentElement.style.setProperty(`--sidebar-width`,`${this.width}px`),t&&(Ya(`gomodel_sidebar_width`,this.width),Ya(`gomodel_sidebar_collapsed`,this.collapsed))}},Tl=new class{#e=j(N([]));get stack(){return R(this.#e)}set stack(e){M(this.#e,e,!0)}#t=1;opened(){let e=this.#t++;return this.stack=[...this.stack,e],e}closed(e){this.stack=this.stack.filter(t=>t!==e)}isTop(e){return this.stack.length>0&&this.stack[this.stack.length-1]===e}get openCount(){return this.stack.length}get anyOpen(){return this.stack.length>0}},El=[[`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`}]],Dl=[[`path`,{d:`M12 5v14`}],[`path`,{d:`m19 12-7 7-7-7`}]],Ol=[[`path`,{d:`m12 19-7-7 7-7`}],[`path`,{d:`M19 12H5`}]],kl=[[`path`,{d:`M5 12h14`}],[`path`,{d:`m12 5 7 7-7 7`}]],Al=[[`path`,{d:`m5 12 7-7 7 7`}],[`path`,{d:`M12 19V5`}]],jl=[[`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`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`}],[`path`,{d:`M12 22V12`}]],Ml=[[`rect`,{width:`16`,height:`20`,x:`4`,y:`2`,rx:`2`}],[`line`,{x1:`8`,x2:`16`,y1:`6`,y2:`6`}],[`line`,{x1:`16`,x2:`16`,y1:`14`,y2:`18`}],[`path`,{d:`M16 10h.01`}],[`path`,{d:`M12 10h.01`}],[`path`,{d:`M8 10h.01`}],[`path`,{d:`M12 14h.01`}],[`path`,{d:`M8 14h.01`}],[`path`,{d:`M12 18h.01`}],[`path`,{d:`M8 18h.01`}]],Nl=[[`path`,{d:`M8 2v4`}],[`path`,{d:`M16 2v4`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`}],[`path`,{d:`M3 10h18`}],[`path`,{d:`M8 14h.01`}],[`path`,{d:`M12 14h.01`}],[`path`,{d:`M16 14h.01`}],[`path`,{d:`M8 18h.01`}],[`path`,{d:`M12 18h.01`}],[`path`,{d:`M16 18h.01`}]],Pl=[[`path`,{d:`M8 2v4`}],[`path`,{d:`M16 2v4`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`}],[`path`,{d:`M3 10h18`}]],Fl=[[`path`,{d:`M13 17V9`}],[`path`,{d:`M18 17V5`}],[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`}],[`path`,{d:`M8 17v-3`}]],Il=[[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`}],[`path`,{d:`M18 17V9`}],[`path`,{d:`M13 17V5`}],[`path`,{d:`M8 17v-3`}]],Ll=[[`path`,{d:`M20 6 9 17l-5-5`}]],Rl=[[`path`,{d:`m6 9 6 6 6-6`}]],zl=[[`path`,{d:`m15 18-6-6 6-6`}]],Bl=[[`path`,{d:`m9 18 6-6-6-6`}]],Vl=[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`}],[`path`,{d:`m9 11 3 3L22 4`}]],Hl=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`m9 12 2 2 4-4`}]],Ul=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8`}],[`path`,{d:`M12 18V6`}]],Wl=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 6v6l4 2`}]],Gl=[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`}]],Kl=[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`}],[`path`,{d:`M3 5V19A9 3 0 0 0 15 21.84`}],[`path`,{d:`M21 5V8`}],[`path`,{d:`M21 12L18 17H22L19 22`}],[`path`,{d:`M3 12A9 3 0 0 0 14.59 14.87`}]],ql=[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`}]],Jl=[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`}],[`path`,{d:`M10 9H8`}],[`path`,{d:`M16 13H8`}],[`path`,{d:`M16 17H8`}]],Yl=[[`path`,{d:`m12 14 4-4`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`}]],Xl=[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`}],[`path`,{d:`M3 3v5h5`}],[`path`,{d:`M12 7v5l4 2`}]],Zl=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 16v-4`}],[`path`,{d:`M12 8h.01`}]],Ql=[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]],$l=[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`}]],eu=[[`path`,{d:`M3 5h.01`}],[`path`,{d:`M3 12h.01`}],[`path`,{d:`M3 19h.01`}],[`path`,{d:`M8 5h13`}],[`path`,{d:`M8 12h13`}],[`path`,{d:`M8 19h13`}]],tu=[[`circle`,{cx:`12`,cy:`16`,r:`1`}],[`rect`,{x:`3`,y:`10`,width:`18`,height:`12`,rx:`2`}],[`path`,{d:`M7 10V7a5 5 0 0 1 10 0v3`}]],nu=[[`path`,{d:`m16 17 5-5-5-5`}],[`path`,{d:`M21 12H9`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`}]],ru=[[`path`,{d:`M15 3h6v6`}],[`path`,{d:`m21 3-7 7`}],[`path`,{d:`m3 21 7-7`}],[`path`,{d:`M9 21H3v-6`}]],iu=[[`path`,{d:`m14 10 7-7`}],[`path`,{d:`M20 10h-6V4`}],[`path`,{d:`m3 21 7-7`}],[`path`,{d:`M4 14h6v6`}]],au=[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`}]],ou=[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`}]],su=[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`}],[`path`,{d:`m15 5 4 4`}]],cu=[[`path`,{d:`M12 22v-5`}],[`path`,{d:`M15 8V2`}],[`path`,{d:`M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z`}],[`path`,{d:`M9 8V2`}]],lu=[[`path`,{d:`M5 12h14`}],[`path`,{d:`M12 5v14`}]],uu=[[`path`,{d:`M12 2v10`}],[`path`,{d:`M18.4 6.6a9 9 0 1 1-12.77.04`}]],du=[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`}],[`path`,{d:`M21 3v5h-5`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`}],[`path`,{d:`M8 16H3v5`}]],fu=[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`}],[`path`,{d:`M3 3v5h5`}]],pu=[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`}]],mu=[[`path`,{d:`m21 21-4.34-4.34`}],[`circle`,{cx:`11`,cy:`11`,r:`8`}]],hu=[[`path`,{d:`m10.852 14.772-.383.923`}],[`path`,{d:`M13.148 14.772a3 3 0 1 0-2.296-5.544l-.383-.923`}],[`path`,{d:`m13.148 9.228.383-.923`}],[`path`,{d:`m13.53 15.696-.382-.924a3 3 0 1 1-2.296-5.544`}],[`path`,{d:`m14.772 10.852.923-.383`}],[`path`,{d:`m14.772 13.148.923.383`}],[`path`,{d:`M4.5 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-.5`}],[`path`,{d:`M4.5 14H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-.5`}],[`path`,{d:`M6 18h.01`}],[`path`,{d:`M6 6h.01`}],[`path`,{d:`m9.228 10.852-.923-.383`}],[`path`,{d:`m9.228 13.148-.923.383`}]],gu=[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`}]],_u=[[`path`,{d:`M14 17H5`}],[`path`,{d:`M19 7h-9`}],[`circle`,{cx:`17`,cy:`17`,r:`3`}],[`circle`,{cx:`7`,cy:`7`,r:`3`}]],vu=[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`}],[`circle`,{cx:`12`,cy:`12`,r:`3`}]],yu=[[`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`}],[`path`,{d:`m9 12 2 2 4-4`}]],bu=[[`path`,{d:`m2 2 20 20`}],[`path`,{d:`M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71`}],[`path`,{d:`M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264`}]],xu=[[`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`}]],Su=[[`path`,{d:`m18 14 4 4-4 4`}],[`path`,{d:`m18 2 4 4-4 4`}],[`path`,{d:`M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22`}],[`path`,{d:`M2 6h1.972a4 4 0 0 1 3.6 2.2`}],[`path`,{d:`M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45`}]],Cu=[[`circle`,{cx:`12`,cy:`12`,r:`4`}],[`path`,{d:`M12 2v2`}],[`path`,{d:`M12 20v2`}],[`path`,{d:`m4.93 4.93 1.41 1.41`}],[`path`,{d:`m17.66 17.66 1.41 1.41`}],[`path`,{d:`M2 12h2`}],[`path`,{d:`M20 12h2`}],[`path`,{d:`m6.34 17.66-1.41 1.41`}],[`path`,{d:`m19.07 4.93-1.41 1.41`}]],wu=[[`path`,{d:`M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z`}],[`circle`,{cx:`7.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]],Tu=[[`line`,{x1:`10`,x2:`14`,y1:`2`,y2:`2`}],[`line`,{x1:`12`,x2:`15`,y1:`14`,y2:`11`}],[`circle`,{cx:`12`,cy:`14`,r:`8`}]],Eu=[[`path`,{d:`M10 11v6`}],[`path`,{d:`M14 11v6`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]],Du=[[`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`}],[`path`,{d:`M12 9v4`}],[`path`,{d:`M12 17h.01`}]],Ou=[[`circle`,{cx:`12`,cy:`8`,r:`5`}],[`path`,{d:`M20 21a8 8 0 0 0-16 0`}]],ku=[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`}],[`circle`,{cx:`12`,cy:`7`,r:`4`}]],Au=[[`path`,{d:`M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1`}],[`path`,{d:`M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4`}]],ju=[[`path`,{d:`m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72`}],[`path`,{d:`m14 7 3 3`}],[`path`,{d:`M5 6v4`}],[`path`,{d:`M19 14v4`}],[`path`,{d:`M10 2v2`}],[`path`,{d:`M7 8H3`}],[`path`,{d:`M21 16h-4`}],[`path`,{d:`M11 3H9`}]],Mu=[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`}]],Nu=[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]],Pu=B(``),Fu=B(`
`,1);function Iu(e,t){O(t,!0);let n=q(t,`compact`,3,!1),r=[{value:`light`,icon:Cu,label:gs()},{value:`system`,icon:au,label:ys()},{value:`dark`,icon:ou,label:Ss()}],i=A(()=>r.find(e=>e.value===Cl.theme)||r[1]),a=A(()=>Ts({theme:R(i).label}));var o=Fu(),s=F(o);let c;W(s,21,()=>r,e=>e.value,(e,t)=>{var n=Pu();let r;J(P(n),{get icon(){return R(t).icon},class:`theme-icon`}),D(n),L(()=>{r=G(n,1,`theme-btn svelte-1keql7b`,null,r,{active:Cl.theme===R(t).value}),K(n,`aria-pressed`,Cl.theme===R(t).value),K(n,`title`,R(t).label),K(n,`aria-label`,R(t).label)}),z(`click`,n,()=>Cl.set(R(t).value)),V(e,n)}),D(s);var l=I(s,2);let u;J(P(l),{get icon(){return R(i).icon},class:`theme-icon`}),D(l),L(e=>{c=G(s,1,`theme-toggle svelte-1keql7b`,null,c,{"is-compact":n()}),K(s,`aria-label`,e),u=G(l,1,`theme-toggle-mobile svelte-1keql7b`,null,u,{"is-compact":n()}),K(l,`title`,R(a)),K(l,`aria-label`,R(a))},[()=>ps()]),z(`click`,l,()=>Cl.toggle()),V(e,o),k()}Br([`click`]);function Lu(){return typeof window>`u`?`/`:window.GOMODEL_BASE_PATH||`/`}function Ru(e){let t=Lu();return!e||e.charAt(0)!==`/`||e.indexOf(`//`)===0||t===`/`||e===t||e.indexOf(t+`/`)===0?e:t+e}function zu(e){let t=Lu();return t===`/`||!e?e:e===t?`/`:e.indexOf(t+`/`)===0?e.slice(t.length)||`/`:e}function Bu(){return typeof window>`u`?``:window.GOMODEL_VERSION||``}function Vu(){return typeof window>`u`?!1:window.GOMODEL_DEMO_MODE===!0}var Hu=[`overview`,`usage`,`budgets`,`rate-limits`,`models`,`workflows`,`audit-logs`,`guardrails`,`mcp-servers`,`providers-config`,`auth-keys`,`settings`];function Uu(e){return e.startsWith(`/admin/static/`)?`/`+e.slice(14).replace(/^\/+/,``):e}function Wu(e){let t=Uu(zu(e)).replace(/\/$/,``).replace(`/admin/dashboard`,``).replace(/^\//,``).split(`/`),n=t[0];n===`audit`&&(n=`audit-logs`);let r=t[1]||null;return n===`settings`&&r===`guardrails`?{page:`guardrails`,sub:null}:(n=Hu.includes(n)?n:`overview`,{page:n,sub:r})}var Gu=new class{#e=j(`overview`);get page(){return R(this.#e)}set page(e){M(this.#e,e,!0)}#t=j(null);get sub(){return R(this.#t)}set sub(e){M(this.#t,e,!0)}init(){let{page:e,sub:t}=Wu(window.location.pathname);this.page=e,this.sub=t,window.addEventListener(`popstate`,()=>{let{page:e,sub:t}=Wu(window.location.pathname);this.page=e,this.sub=t})}navigate(e,t=null){let n=t?`/`+t:``;history.pushState(null,``,Ru(`/admin/dashboard/`+e+n)),this.page=e,this.sub=t}},Ku=`X-GoModel-Auth-Login`,qu=`X-GoModel-Auth-Logout`,Ju=`X-GoModel-Auth-User`;function Yu(e){let t=String(e||``).trim();return!t.startsWith(`/`)||t.startsWith(`//`)||t.includes(`\\`)?``:t}function Xu(e,t=globalThis.location){let n=Yu(e),r=Yu(t?.pathname);if(!n||!r)return n;let i=String(t?.search||``),a=r+(i.startsWith(`?`)?i:``),o=n.indexOf(`#`),s=o<0?n:n.slice(0,o),c=o<0?``:n.slice(o);return`${s}${s.includes(`?`)?`&`:`?`}return_to=${encodeURIComponent(a)}${c}`}function Zu(e){let t=e?.headers;if(!t||typeof t.has!=`function`)return null;let n={};return t.has(Ku)&&(n.loginURL=Yu(t.get(Ku))),t.has(qu)&&(n.logoutURL=Yu(t.get(qu))),t.has(Ju)&&(n.user=String(t.get(Ju)||``).trim().slice(0,256)),n}var Qu=`gomodel_api_key`;function $u(e){let t=String(e||``).trim();if(/^Bearer\s*$/i.test(t))return``;let n=t.match(/^Bearer\s+(.+)$/i);return n?n[1].trim():t}var Y=new class{#e=j(``);get apiKey(){return R(this.#e)}set apiKey(e){M(this.#e,e,!0)}#t=j(!1);get needsAuth(){return R(this.#t)}set needsAuth(e){M(this.#t,e,!0)}#n=j(!1);get authError(){return R(this.#n)}set authError(e){M(this.#n,e,!0)}#r=j(``);get authErrorMessage(){return R(this.#r)}set authErrorMessage(e){M(this.#r,e,!0)}#i=j(!1);get dialogOpen(){return R(this.#i)}set dialogOpen(e){M(this.#i,e,!0)}#a=j(``);get externalLoginURL(){return R(this.#a)}set externalLoginURL(e){M(this.#a,e,!0)}#o=j(``);get externalLogoutURL(){return R(this.#o)}set externalLogoutURL(e){M(this.#o,e,!0)}#s=j(``);get externalUser(){return R(this.#s)}set externalUser(e){M(this.#s,e,!0)}#c=j(0);get generation(){return R(this.#c)}set generation(e){M(this.#c,e,!0)}#l=j(0);get refreshTick(){return R(this.#l)}set refreshTick(e){M(this.#l,e,!0)}init(){try{this.apiKey=$u(localStorage.getItem(Qu)||``)}catch{this.apiKey=``}}hasApiKey(){return $u(this.apiKey)!==``}save(){this.apiKey=$u(this.apiKey);try{localStorage.setItem(Qu,this.apiKey)}catch{}}selectExternalAuthentication(){this.apiKey=``;try{localStorage.removeItem(Qu)}catch{}this.generation++,this.authError=!1,this.authErrorMessage=``,this.needsAuth=!0}openDialog(){this.dialogOpen=!0}closeDialog(){this.dialogOpen=!1}submit(){let e=$u(this.apiKey);return e?(this.apiKey=e,this.save(),this.generation++,this.authError=!1,this.authErrorMessage=``,this.needsAuth=!1,this.closeDialog(),this.refresh(),!0):(this.apiKey=``,this.authError=!0,this.authErrorMessage=``,this.needsAuth=!0,this.openDialog(),!1)}refresh(){this.refreshTick++}observeResponse(e){let t=Zu(e);t&&(Object.hasOwn(t,`loginURL`)&&(this.externalLoginURL=t.loginURL),Object.hasOwn(t,`logoutURL`)&&(this.externalLogoutURL=t.logoutURL),Object.hasOwn(t,`user`)&&(this.externalUser=t.user))}handleUnauthorized(e,t=``){return typeof e==`number`&&e{r[e.type]=e.value}),r.year+`-`+r.month+`-`+r.day}formatTimestampInTimeZone(e,t){if(e==null)return`-`;let n=new Date(e);if(Number.isNaN(n.getTime()))return`-`;let r=ud(`en-CA`,{timeZone:dd(t)?t:od,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`}).formatToParts(n),i={};return r.forEach(e=>{i[e.type]=e.value}),i.year+`-`+i.month+`-`+i.day+` `+i.hour+`:`+i.minute+`:`+i.second}formatTimestamp(e){return this.formatTimestampInTimeZone(e,this.effectiveTimezone())}currentDateKey(e){return this.dateKeyInTimeZone(e||new Date,this.effectiveTimezone())}dateKeyToDate(e){return td(e)}dateToDateKey(e){return nd(e)}addDaysToDateKey(e,t){return rd(e,t)}todayDate(){return this.dateKeyToDate(this.currentDateKey())}startOfMonthDate(e){let t=e instanceof Date?e:this.todayDate();return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),1))}timeZoneOffsetLabel(e,t){let n=dd(e)?e:od;try{let e=ud(`en-US`,{timeZone:n,hour:`2-digit`,minute:`2-digit`,hourCycle:`h23`,timeZoneName:`longOffset`}).formatToParts(t||new Date).find(e=>e.type===`timeZoneName`);if(!e||!e.value)return`UTC+00:00`;let r=e.value.replace(`GMT`,`UTC`);return r===`UTC`?`UTC+00:00`:r}catch{return`UTC+00:00`}}timeZoneOffsetMinutes(e,t){let n=/^UTC([+-])(\d{2}):(\d{2})$/.exec(this.timeZoneOffsetLabel(e,t));if(!n)return 0;let r=Number(n[2])*60+Number(n[3]);return n[1]===`-`?-r:r}timeZoneOptionLabel(e,t){return e+` (`+this.timeZoneOffsetLabel(e,t)+`)`}detectedTimeZoneLabel(){return this.timeZoneOptionLabel(this.detectedTimezone)}effectiveTimeZoneLabel(){return this.timeZoneOptionLabel(this.effectiveTimezone())}ensureOptions(){if(this.optionsLoaded)return;let e=new Date,t=[];try{typeof Intl.supportedValuesOf==`function`&&(t=Intl.supportedValuesOf(`timeZone`))}catch{t=[]}[od,this.detectedTimezone,this.override].forEach(e=>{e&&t.indexOf(e)===-1&&dd(e)&&t.push(e)}),t=t.filter(e=>dd(e)),t.sort((t,n)=>{let r=this.timeZoneOffsetMinutes(t,e)-this.timeZoneOffsetMinutes(n,e);return r===0?t.localeCompare(n):r}),this.options=t.map(t=>({value:t,label:this.timeZoneOptionLabel(t,e)})),this.optionsLoaded=!0}saveOverride(){let e=qa();if(e)if(this.override&&dd(this.override))try{e.setItem(sd,this.override)}catch{}else{try{e.removeItem(sd)}catch{}this.override=``}this.optionsLoaded=!1,this.ensureOptions()}clearOverride(){let e=qa();if(e)try{e.removeItem(sd)}catch{}this.override=``}calendarTimeZoneText(){let e=this.override?`manual override`:`auto-detected`;return`Activity grouped by `+this.effectiveTimeZoneLabel()+` (`+e+`)`}};function hd(e,t){let n=e&&typeof e==`object`&&e.error&&e.error.message;return(typeof n==`string`?n.trim():``)||t}function gd(e,t){let n=e&&e.data;if(n&&typeof n==`object`){let e=[n.message,n.error,n.error&&typeof n.error==`object`?n.error.message:null];for(let t of e)if(typeof t==`string`&&t.trim())return t.trim()}return t}function _d(){let e={"Content-Type":`application/json`},t=$u(Y.apiKey);return t&&(e.Authorization=`Bearer `+t),e[`X-GoModel-Timezone`]=md.effectiveTimezone(),e}function vd(e,t={}){return fetch(Ru(e),{...t,headers:{..._d(),...t.headers||{}}})}async function yd(e,t,{label:n=e,parse:r=!0}={}){let i=Y.generation,a=await vd(e,t),o=ie.trim()).filter(Boolean);return e.length>0?e:wd}cacheVisible(){if(this.flag(`CACHE_ENABLED`)!==``)return this.booleanFlag(`CACHE_ENABLED`,!1);let e=this.flag(`REDIS_URL`),t=this.flag(`SEMANTIC_CACHE_ENABLED`);return e===``&&t===``||this.booleanFlag(`REDIS_URL`,!1)||this.booleanFlag(`SEMANTIC_CACHE_ENABLED`,!1)}auditVisible(){return this.booleanFlag(`LOGGING_ENABLED`,!0)}usageVisible(){return this.booleanFlag(`USAGE_ENABLED`,!0)}budgetsVisible(){return this.booleanFlag(`BUDGETS_ENABLED`,!0)}rateLimitsVisible(){return this.booleanFlag(`RATE_LIMITS_ENABLED`,!0)}guardrailsVisible(){return this.booleanFlag(`GUARDRAILS_ENABLED`,!0)}mcpVisible(){return this.booleanFlag(`MCP_ENABLED`,!0)}liveLogsVisible(){return this.booleanFlag(`DASHBOARD_LIVE_LOGS_ENABLED`,!0)}fetch(){return this.#n||=this.#r().finally(()=>{this.#n=null}),this.#n}async ensureLoaded(){if(this.#n){await this.#n;return}this.loaded||await this.fetch()}async#r(){let e=typeof AbortController==`function`?new AbortController:null,t=e?setTimeout(()=>e.abort(),1e4):null;try{let t=await bd(`/admin/runtime/config`,{label:`dashboard config`,signal:e?e.signal:void 0});if(t.stale)return;if(!t.ok){this.config={},this.loaded=!1;return}let n=t.data,r={};for(let e of Cd)n&&typeof n==`object`&&!Array.isArray(n)&&n[e]!==void 0&&n[e]!==null&&(r[e]=String(n[e]).trim());this.config=r,this.loaded=!0}catch(e){console.error(`Failed to fetch dashboard config:`,e),this.config={},this.loaded=!1}finally{t!==null&&clearTimeout(t)}}},Ed=[{page:`overview`,label:go,icon:$l},{page:`providers-config`,label:yo,icon:hu},{page:`models`,label:So,icon:jl},{page:`audit-logs`,label:To,icon:Xl},{page:`usage`,label:Oo,icon:Il},{page:`budgets`,label:jo,icon:Au,visible:()=>Td.budgetsVisible()},{page:`rate-limits`,label:Po,icon:Yl,visible:()=>Td.rateLimitsVisible()},{page:`auth-keys`,label:Lo,icon:Ql},{page:`workflows`,label:Bo,icon:Mu},{page:`guardrails`,label:Uo,icon:yu,visible:()=>Td.guardrailsVisible()},{page:`mcp-servers`,label:Ko,icon:cu,visible:()=>Td.mcpVisible()},{page:`settings`,label:Yo,icon:vu}],Dd=B(` `),Od=B(`
`),kd=B(``),Ad=B(`
`),jd=B(` `,1);function Md(e,t){O(t,!0);let n=A(()=>Ed.filter(e=>!e.visible||e.visible())),r=j(null),i=0,a=0,o=!1;function s(e){e.button===0&&(e.preventDefault(),M(r,e.pointerId,!0),i=e.clientX,a=wl.width,o=!1,e.currentTarget.setPointerCapture(e.pointerId),document.body.classList.add(`sidebar-resizing`))}function c(e){e.pointerId===R(r)&&(!o&&Math.abs(e.clientX-i)<=4||(o=!0,wl.setWidth(Sl(a,i,e.clientX))))}function l(e){R(r)===null||e.pointerId!==void 0&&e.pointerId!==R(r)||(M(r,null),document.body.classList.remove(`sidebar-resizing`),wl.setWidth(wl.width,!0))}function u(){if(o){o=!1;return}wl.toggle()}function d(e){let t;if(e.key===`ArrowLeft`)t=wl.width-12;else if(e.key===`ArrowRight`)t=wl.width+12;else if(e.key===`Home`)t=60;else if(e.key===`End`)t=240;else if(e.key===`Enter`||e.key===` `){e.preventDefault(),wl.toggle();return}else return;e.preventDefault(),wl.setWidth(t,!0)}var f=jd(),p=F(f);let m;var h=P(p),g=P(h);ba(P(g),{}),D(g);var _=I(g,4),v=P(_,!0);D(_),D(h);var y=I(h,2);W(y,21,()=>R(n),e=>e.page,(e,t)=>{var n=Dd();let r;var i=P(n);J(i,{get icon(){return R(t).icon},class:`nav-icon`});var a=I(i,2),o=P(a,!0);D(a),D(n),L((e,i,a)=>{K(n,`href`,e),r=G(n,1,`nav-item svelte-1nwtzae`,null,r,{active:Gu.page===R(t).page}),K(n,`title`,i),H(o,a)},[()=>Ru(`/admin/dashboard/`+R(t).page),()=>R(t).label(),()=>R(t).label()]),z(`click`,n,e=>{e.preventDefault(),Gu.navigate(R(t).page)}),V(e,n)}),D(y);var b=I(y,2),x=P(b);bl(x,{get compact(){return wl.collapsed}});var S=I(x,2);Iu(S,{get compact(){return wl.collapsed}});var C=I(S,2),w=e=>{var t=kd(),n=P(t),r=e=>{var t=Od(),n=P(t);J(n,{get icon(){return Ou},class:`api-key-open-icon`});var r=I(n,2),i=P(r,!0);D(r),D(t),L(()=>{K(t,`title`,Y.externalUser),H(i,Y.externalUser)}),V(e,t)};U(n,e=>{Y.externalUser&&e(r)});var i=I(n,2),a=P(i);J(a,{get icon(){return nu},class:`api-key-open-icon`});var o=I(a,2),s=P(o,!0);D(o),D(i),D(t),L((e,t,n)=>{K(i,`href`,e),K(i,`aria-label`,t),H(s,n)},[()=>Ru(Y.externalLogoutURL),()=>Qo(),()=>Qo()]),V(e,t)};U(C,e=>{Y.externalLogoutURL&&e(w)});var T=I(C,2),E=e=>{var t=Ad(),n=P(t),r=P(n);J(r,{get icon(){return tu},class:`api-key-open-icon`});var i=I(r,2),a=P(i,!0);D(i),D(n),D(t),L((e,t)=>{K(n,`aria-label`,e),H(a,t)},[()=>Y.needsAuth?ts():is(),()=>Y.needsAuth?ts():is()]),z(`click`,n,()=>Y.openDialog()),V(e,t)},ee=A(()=>Y.needsAuth||Y.hasApiKey());U(T,e=>{R(ee)&&e(E)}),D(b),D(p);var te=I(p,2);L((e,t,n)=>{m=G(p,1,`sidebar svelte-1nwtzae`,null,m,{"sidebar-collapsed":wl.collapsed,"sidebar-resizing":R(r)!==null}),H(v,e),K(te,`title`,t),K(te,`aria-label`,n),K(te,`aria-valuemin`,60),K(te,`aria-valuemax`,240),K(te,`aria-valuenow`,wl.width)},[()=>po(),()=>us(),()=>ss()]),z(`pointerdown`,te,s),z(`pointermove`,te,c),z(`pointerup`,te,l),zr(`pointercancel`,te,l),zr(`lostpointercapture`,te,l),z(`keydown`,te,d),z(`click`,te,u),V(e,f),k()}Br([`click`,`pointerdown`,`pointermove`,`pointerup`,`keydown`]);var Nd=B(``);function Pd(e,t){O(t,!0);let n=q(t,`label`,3,`Close`),r=q(t,`class`,3,``),i=q(t,`iconClass`,3,`table-icon-svg`),a=q(t,`disabled`,3,!1),o=q(t,`el`,15,null);var s=Nd();J(P(s),{get icon(){return Nu},get class(){return i()}}),D(s),ma(s,e=>o(e),()=>o()),L(()=>{G(s,1,Ni([`dialog-close-btn`,r()]),`svelte-11l1bb5`),K(s,`aria-label`,n()),s.disabled=a()}),z(`click`,s,function(...e){t.onclick?.apply(this,e)}),V(e,s),k()}Br([`click`]);function Fd(e){return t=>{let n=n=>{t.contains(n.target)||e()},r=t=>{t.key===`Escape`&&e()};return document.addEventListener(`click`,n,!0),window.addEventListener(`keydown`,r),()=>{document.removeEventListener(`click`,n,!0),window.removeEventListener(`keydown`,r)}}}function Id(e=`[data-modal-autofocus]`){return t=>{let n=t.querySelector(e);n&&typeof n.focus==`function`&&n.focus()}}var Ld=B(`
`,1);function Rd(e,t){O(t,!0);let n=q(t,`open`,3,!1),r=q(t,`variant`,3,`editor`),i=q(t,`closeOnBackdrop`,3,!0),a=A(()=>r()===`auth`?`auth-dialog-backdrop`:`editor-modal-backdrop`),o=A(()=>r()===`auth`?`auth-dialog-shell`:`editor-modal-shell`);On(()=>{if(!n())return;let e=wr(()=>Tl.opened()),r=n=>{n.key===`Escape`&&Tl.isTop(e)&&t.onclose?.()};return window.addEventListener(`keydown`,r),()=>{Tl.closed(e),window.removeEventListener(`keydown`,r)}});function s(e){i()&&e.target===e.currentTarget&&t.onclose?.()}var c=Xr(),l=F(c),u=e=>{var n=Ld(),r=F(n),i=I(r,2);mi(P(i),()=>t.children??f),D(i),Ai(i,Id),L(()=>{G(r,1,Ni(R(a)),`svelte-17e0w4c`),G(i,1,Ni(R(o)),`svelte-17e0w4c`)}),z(`click`,i,s),V(e,n)};U(l,e=>{n()&&e(u)}),V(e,c),k()}Br([`click`]);var zd=B(`
`,1),Bd=B(``),Vd=B(``);function Hd(e,t){O(t,!0),Rd(e,{get open(){return Y.dialogOpen},variant:`auth`,onclose:()=>Y.closeDialog(),children:(e,t)=>{var n=Vd(),r=P(n),i=P(r),a=P(i),o=P(a,!0);D(a),D(i);var s=I(i,2);{let e=A(()=>Bs());Pd(s,{get label(){return R(e)},onclick:()=>Y.closeDialog(),class:`auth-dialog-close`,iconClass:``})}D(r);var c=I(r,2),l=P(c),u=e=>{var t=zd(),n=F(t),r=P(n);J(r,{get icon(){return Ql}});var i=I(r,2),a=P(i,!0);D(i),D(n);var o=I(n,2),s=P(o),c=P(s,!0);D(s),D(o),L((e,t,r)=>{K(n,`href`,e),H(a,t),H(c,r)},[()=>Xu(Ru(Y.externalLoginURL)),()=>Us(),()=>Ks()]),z(`click`,n,()=>Y.selectExternalAuthentication()),V(e,t)};U(l,e=>{Y.externalLoginURL&&e(u)});var d=I(l,2),f=P(d);J(f,{get icon(){return tu},class:`auth-dialog-input-icon`});var p=I(f,2);ea(p),D(d);var m=I(d,2),h=e=>{var t=Bd(),n=P(t,!0);D(t),L(e=>H(n,e),[()=>Y.authErrorMessage||tc()]),V(e,t)};U(m,e=>{Y.authError&&e(h)});var g=I(m,2),_=P(g,!0);D(g);var v=I(g,2),y=P(v),b=P(y);J(b,{get icon(){return Ll},class:`auth-dialog-submit-icon`});var x=I(b,2),S=P(x,!0);D(x),D(y),D(v),D(c),D(n),L((e,t,n,r,i)=>{H(o,e),K(p,`placeholder`,t),K(p,`aria-label`,n),H(_,r),H(S,i)},[()=>Y.needsAuth?Ps():Ls(),()=>Qs(),()=>Ys(),()=>ic(),()=>Y.needsAuth?sc():uc()]),zr(`submit`,c,e=>{e.preventDefault(),Y.submit()}),la(p,()=>Y.apiKey,e=>Y.apiKey=e),V(e,n)},$$slots:{default:!0}}),k()}Br([`click`]);function Ud(){return{open:!1,title:``,titleId:`typedConfirmationDialogTitle`,inputId:`typed-confirmation-input`,message:``,requiredText:``,value:``,confirmLabel:`Confirm`,icon:Du,dialogClass:``,loading:!1,onConfirm:null,onClose:null}}var Wd=new class{#e=j(N(Ud()));get state(){return R(this.#e)}set state(e){M(this.#e,e,!0)}#t=j(``);get error(){return R(this.#t)}set error(e){M(this.#t,e,!0)}open(e){this.error=``,this.state={...Ud(),open:!0,...e||{}}}close(){let e=this.state;typeof e.onClose==`function`&&e.onClose(),this.state=Ud(),this.error=``}ready(){return String(this.state.value||``).trim().toLowerCase()===String(this.state.requiredText||``).trim().toLowerCase()}inputLabel(){return`Type `+String(this.state.requiredText||``).trim()+` to confirm`}async submit(){if(!this.ready()){this.error=this.inputLabel()+`.`;return}if(typeof this.state.onConfirm==`function`){this.state.loading=!0;try{await this.state.onConfirm()}finally{this.state.loading=!1}}}},Gd=B(`

`),Kd=B(``),qd=B(`

`);function Jd(e,t){O(t,!0);let n=A(()=>Wd.state);Rd(e,{get open(){return R(n).open},variant:`auth`,onclose:()=>Wd.close(),children:(e,t)=>{var r=qd(),i=P(r),a=P(i),o=P(a,!0);D(a);var s=I(a,2);{let e=A(()=>pc());Pd(s,{get label(){return R(e)},onclick:()=>Wd.close(),class:`auth-dialog-close`,iconClass:``})}D(i);var c=I(i,2),l=P(c),u=e=>{var t=Gd(),r=P(t,!0);D(t),L(()=>H(r,R(n).message)),V(e,t)};U(l,e=>{R(n).message&&e(u)});var d=I(l,2),f=P(d),p=P(f,!0);D(f);var m=I(f,2);ea(m),D(d);var h=I(d,2),g=e=>{var t=Kd(),n=P(t,!0);D(t),L(()=>H(n,Wd.error)),V(e,t)};U(h,e=>{Wd.error&&e(g)});var _=I(h,2),v=P(_),y=P(v,!0);D(v);var b=I(v,2),x=P(b);J(x,{get icon(){return R(n).icon},class:`form-action-icon`});var S=I(x,2),C=P(S,!0);D(S),D(b),D(_),D(c),D(r),L((e,t,i)=>{G(r,1,`auth-dialog ${R(n).dialogClass??``}`),K(r,`aria-labelledby`,R(n).titleId),K(a,`id`,R(n).titleId),H(o,R(n).title),K(f,`for`,R(n).inputId),H(p,e),K(m,`id`,R(n).inputId),H(y,t),b.disabled=i,H(C,R(n).confirmLabel)},[()=>Wd.inputLabel(),()=>ro(),()=>R(n).loading||!Wd.ready()]),zr(`submit`,c,e=>{e.preventDefault(),Wd.submit()}),la(m,()=>Wd.state.value,e=>Wd.state.value=e),z(`click`,v,()=>Wd.close()),V(e,r)},$$slots:{default:!0}}),k()}Br([`click`]);var Yd=e=>e;function Xd(e){let t=e-1;return t*t*t+1}function Zd(e){let t=typeof e==`string`&&e.match(/^\s*(-?[\d.]+)([^\s]*)\s*$/);return t?[parseFloat(t[1]),t[2]||`px`]:[e,`px`]}function Qd(e,{delay:t=0,duration:n=400,easing:r=Yd}={}){let i=+getComputedStyle(e).opacity;return{delay:t,duration:n,easing:r,css:e=>`opacity: ${e*i}`}}function $d(e,{delay:t=0,duration:n=400,easing:r=Xd,x:i=0,y:a=0,opacity:o=0}={}){let s=getComputedStyle(e),c=+s.opacity,l=s.transform===`none`?``:s.transform,u=c*(1-o),[d,f]=Zd(i),[p,m]=Zd(a);return{delay:t,duration:n,easing:r,css:(e,t)=>` transform: ${l} translate(${(1-e)*d}${f}, ${(1-e)*p}${m}); - opacity: ${c-u*t}`}}function Yu(e,{delay:t=0,duration:n=400,easing:r=Gu,axis:i=`y`}={}){let a=getComputedStyle(e),o=+a.opacity,s=i===`y`?`height`:`width`,c=parseFloat(a[s]),l=i===`y`?[`top`,`bottom`]:[`left`,`right`],u=l.map(e=>`${e[0].toUpperCase()}${e.slice(1)}`),d=parseFloat(a[`padding${u[0]}`]),f=parseFloat(a[`padding${u[1]}`]),p=parseFloat(a[`margin${u[0]}`]),m=parseFloat(a[`margin${u[1]}`]),h=parseFloat(a[`border${u[0]}Width`]),g=parseFloat(a[`border${u[1]}Width`]);return{delay:t,duration:n,easing:r,css:e=>`overflow: hidden;opacity: ${Math.min(e*20,1)*o};${s}: ${e*c}px;padding-${l[0]}: ${e*d}px;padding-${l[1]}: ${e*f}px;margin-${l[0]}: ${e*p}px;margin-${l[1]}: ${e*m}px;border-${l[0]}-width: ${e*h}px;border-${l[1]}-width: ${e*g}px;min-${s}: 0`}}function Xu(e){return--e*e*(2.70158*e+1.70158)+1}function Zu(e){let t=e-1;return t*t*t+1}var Qu=5e3,$u=8e3,ed=new class{#e=j(N([]));get toasts(){return R(this.#e)}set toasts(e){M(this.#e,e,!0)}#t=0;#n=new Map;success(e){this.#r(`success`,e,Qu)}error(e){this.#r(`error`,e,$u)}dismiss(e){let t=this.#n.get(e);t&&(clearTimeout(t),this.#n.delete(e)),this.toasts=this.toasts.filter(t=>t.id!==e)}#r(e,t,n){let r=String(t||``).trim();if(!r)return;let i=this.toasts.find(t=>t.kind===e&&t.text===r);i&&this.dismiss(i.id);let a=++this.#t;this.toasts=[...this.toasts,{id:a,kind:e,text:r}],this.#n.set(a,setTimeout(()=>this.dismiss(a),n))}},td=B(`
`),nd=B(`
`);function rd(e,t){O(t,!0);var n=nd();W(n,21,()=>ed.toasts,e=>e.id,(e,t)=>{var n=td();let r;var i=P(n),a=P(i,!0);D(i);var o=I(i,2);D(n),L(e=>{r=G(n,1,`flash-toast svelte-1i257xg`,null,r,{"flash-toast-success":R(t).kind===`success`,"flash-toast-error":R(t).kind===`error`}),K(n,`role`,R(t).kind===`error`?`alert`:`status`),K(n,`aria-live`,R(t).kind===`error`?`assertive`:`polite`),H(a,R(t).text),K(o,`aria-label`,e)},[()=>ks()]),z(`click`,o,()=>ed.dismiss(R(t).id)),Di(1,n,()=>Ju,()=>({y:-24,duration:360,easing:Xu})),Di(2,n,()=>qu,()=>({duration:150})),V(e,n)}),D(n),V(e,n),k()}Br([`click`]);var id=B(``);function ad(e,t){O(t,!0);var n=Xr(),r=F(n),i=e=>{var t=id(),n=I(P(t),2),r=P(n),i=P(r,!0);D(r);var a=I(r,2),o=P(a,!0);D(a),D(n);var s=I(n,2);D(t),L((e,n,r,a)=>{K(t,`aria-label`,e),H(i,n),H(o,r),K(s,`aria-label`,a)},[()=>js(),()=>Ns(),()=>Fs(),()=>Ls()]),V(e,t)},a=A(()=>Il());U(r,e=>{R(a)&&e(i)}),V(e,n),k()}function od(e){return String(e||``).split(`,`).map(e=>e.trim()).filter(e=>e)}function sd(e){if(e==null||e===``)return`Not captured`;if(typeof e==`string`){let t=e.trim();if(t.startsWith(`{`)&&t.endsWith(`}`)||t.startsWith(`[`)&&t.endsWith(`]`))try{return JSON.stringify(JSON.parse(t),null,2)}catch{return e}return e}try{return JSON.stringify(e,null,2)}catch{return String(e)}}function cd(e){return e==null||e===void 0?`-`:e.toLocaleString()}function ld(e){if(e==null)return`---`;let t=Number(e);return Number.isFinite(t)?t>0&&t<1e-4?`<$0.0001`:`$`+t.toFixed(4).replace(/(\.\d{2}\d*?)0+$/,`$1`):`---`}function ud(e){return e==null||e===void 0?`—`:`$`+e.toFixed(2)}function dd(e){return e==null||e===void 0?`—`:e<.01?`$`+e.toFixed(6):`$`+e.toFixed(4)}function fd(e){if(e==null||e===``)return`-`;let t=Number(e);if(!Number.isFinite(t))return`-`;let n=Math.abs(t),r=[{threshold:1e9,suffix:`B`},{threshold:1e6,suffix:`M`},{threshold:1e3,suffix:`K`}];for(let e=0;e=i.threshold){let n=t/i.threshold;return Math.abs(Number(n.toFixed(1)))>=1e3&&e>0&&(i=r[e-1],n=t/i.threshold),n.toFixed(1).replace(/\.0$/,``)+i.suffix}}return String(t)}function pd(e,t){let n=t==null||t===``?NaN:Number(t),r=Number.isFinite(n)?cd(n):`-`;return String(e||`Tokens`)+`: `+r}function md(e){return e?typeof e==`string`?e:e.getUTCFullYear()+`-`+String(e.getUTCMonth()+1).padStart(2,`0`)+`-`+String(e.getUTCDate()).padStart(2,`0`):``}function hd(e){if(!e)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:t.getUTCFullYear()+`-`+String(t.getUTCMonth()+1).padStart(2,`0`)+`-`+String(t.getUTCDate()).padStart(2,`0`)}function gd(e){if(!e)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:t.getUTCFullYear()+`-`+String(t.getUTCMonth()+1).padStart(2,`0`)+`-`+String(t.getUTCDate()).padStart(2,`0`)+` `+String(t.getUTCHours()).padStart(2,`0`)+`:`+String(t.getUTCMinutes()).padStart(2,`0`)+`:`+String(t.getUTCSeconds()).padStart(2,`0`)+` UTC`}function _d(e){return String(e&&e.provider||``).trim()}function vd(e){return String(e&&e.provider_name||``).trim()||_d(e)}function yd(e,t){let n=String(t||``).trim();if(!n)return`-`;let r=vd(e);return!r||n===r||n.startsWith(r+`/`)?n:r+`/`+n}function bd(e){return yd(e,e&&e.model)}function xd(e){return yd(e,e&&e.resolved_model)}function Sd(e){let t=String(e&&(e.requested_model||e.model)||``).trim();if(!e)return t;let n=String(e.data&&e.data.failover&&e.data.failover.target_model||``).trim();if(n&&n!==t)return t+` ⮕ `+n;if(e.alias_used&&e.resolved_model){let n=xd(e);if(n&&n!==`-`&&n!==t)return t+` ⮕ `+n}return t}var Cd=`gomodel_date_range`,wd=1;function Td(e){return/^[1-9]\d*$/.test(String(e??``))}function Ed({selectedPreset:e,startKey:t,endKey:n,followsToday:r}){return e&&Td(e)?{v:wd,mode:`preset`,days:String(e)}:e?null:$l(t)&&$l(n)?{v:wd,mode:`custom`,start:t,end:n,follow:r===!0}:null}function Dd(e){let t=e;if(typeof e==`string`)try{t=JSON.parse(e)}catch{return null}return!t||typeof t!=`object`?null:t.mode===`preset`?Td(t.days)?{mode:`preset`,days:String(t.days)}:null:t.mode===`custom`&&$l(t.start)&&$l(t.end)&&t.start<=t.end?{mode:`custom`,start:t.start,end:t.end,follow:t.follow===!0}:null}function Od(e,t,n){let r=eu(e,t);return r<1||!$l(n)?{start:e,end:t}:{start:Ql(n,-(r-1)),end:n}}function kd(e){return Hs({count:Number(e)})}function Ad(e,t){return e===t?Ks():eo(new Date(e+`T00:00:00Z`),{day:`numeric`,month:`short`,year:`numeric`,timeZone:`UTC`})}function jd({selectedPreset:e,startKey:t,endKey:n,todayKey:r}){if(e)return kd(e);if($l(t)&&$l(n)){if(t>n)return kd(`30`);let e=Ad(t,r);return t===n?e:Js({start:e,end:Ad(n,r)})}return $l(t)?Xs({start:Ad(t,r)}):kd(`30`)}function Md({selectedPreset:e,startKey:t,endKey:n,followsToday:r,todayKey:i}){if(e)return kd(e);if(!$l(t)||!$l(n)||t>n)return``;let a=eu(t,n);return r||n===i?a===1?Ks():kd(a):Ws({count:a})}function Nd(e){switch(e){case`weekly`:return cc();case`monthly`:return uc();case`yearly`:return fc();default:return oc()}}var Pd=6e4,Fd=new class{#e=j(N(`30`));get days(){return R(this.#e)}set days(e){M(this.#e,e,!0)}#t=j(N(`30`));get selectedPreset(){return R(this.#t)}set selectedPreset(e){M(this.#t,e,!0)}#n=j(null);get customStartDate(){return R(this.#n)}set customStartDate(e){M(this.#n,e,!0)}#r=j(null);get customEndDate(){return R(this.#r)}set customEndDate(e){M(this.#r,e,!0)}#i=j(!1);get followsToday(){return R(this.#i)}set followsToday(e){M(this.#i,e,!0)}#a=j(`daily`);get interval(){return R(this.#a)}set interval(e){M(this.#a,e,!0)}#o=j(0);get syncTick(){return R(this.#o)}set syncTick(e){M(this.#o,e,!0)}init(){this.restore(),this.syncToToday(),typeof setInterval==`function`&&setInterval(()=>this.syncToToday(),Pd)}queryStr(){return this.customStartDate&&this.customEndDate?`start_date=`+md(this.customStartDate)+`&end_date=`+md(this.customEndDate):`days=`+this.days}selectPreset(e){this.selectedPreset=e,this.customStartDate=null,this.customEndDate=null,this.followsToday=!1,this.days=e,this.persist()}selectStart(e){this.selectedPreset=null,this.customStartDate=e,this.customEndDate&&this.customEndDatet.category===e);return t?t.count:0}get filteredModels(){if(!this.filter)return this.models;let e=this.filter.toLowerCase();return this.models.filter(t=>(t.model?.id??``).toLowerCase().includes(e)||(t.provider_name??``).toLowerCase().includes(e)||(t.provider_type??``).toLowerCase().includes(e)||(t.selector??``).toLowerCase().includes(e)||(t.model?.owned_by??``).toLowerCase().includes(e)||(t.model?.metadata?.modes??[]).join(`,`).toLowerCase().includes(e)||(t.model?.metadata?.categories??[]).join(`,`).toLowerCase().includes(e))}},Ld=B(``);function Rd(e,t){O(t,!0);var n=Xr(),r=F(n),i=e=>{var t=Ld(),n=P(t),r=P(n,!0);D(n);var i=I(n,2),a=P(i,!0);D(i),D(t),L((e,t)=>{H(r,e),H(a,t)},[()=>rs(),()=>Lo()]),z(`click`,i,()=>Y.openDialog()),V(e,t)};U(r,e=>{Y.authError&&e(i)}),V(e,n),k()}Br([`click`]);function zd(){return{total_requests:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,total_input_cost:null,total_output_cost:null,total_cost:null}}function Bd(){return{summary:{total_hits:0,exact_hits:0,semantic_hits:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,total_saved_cost:null},daily:[]}}var Vd=new class{#e=j(N(zd()));get summary(){return R(this.#e)}set summary(e){M(this.#e,e,!0)}#t=j(N([]));get daily(){return R(this.#t)}set daily(e){M(this.#t,e,!0)}#n=j(N(Bd()));get cacheOverview(){return R(this.#n)}set cacheOverview(e){M(this.#n,e,!0)}#r=j(!1);get loading(){return R(this.#r)}set loading(e){M(this.#r,e,!0)}#i=null;#a=null;cacheAnalyticsEnabled(){return bu.cacheVisible()}async fetchUsage(){this.#i&&this.#i.abort();let e=new AbortController;this.#i=e,this.loading=!0;try{let t=Fd.queryStr()+`&interval=`+Fd.interval,[n,r]=await Promise.all([hu(`/admin/usage/summary?`+t,{label:`usage summary`,signal:e.signal}),hu(`/admin/usage/daily?`+t,{label:`usage daily`,signal:e.signal})]);if(n.stale||r.stale||e.signal.aborted)return;if(!n.ok||!r.ok){this.summary=zd(),this.daily=[],this.cacheOverview=Bd();return}this.summary=n.data||zd(),this.daily=Array.isArray(r.data)?r.data:[]}catch(e){if(_u(e))return;console.error(`Failed to fetch usage:`,e),this.summary=zd(),this.daily=[]}finally{this.#i===e&&(this.#i=null,this.loading=!1)}}async fetchCacheOverview(e=``){if(await bu.ensureLoaded(),!this.cacheAnalyticsEnabled()){this.cacheOverview=Bd();return}this.#a&&this.#a.abort();let t=new AbortController;this.#a=t;try{let n=await hu(`/admin/cache/overview?`+(Fd.queryStr()+`&interval=`+Fd.interval+e),{label:`cache overview`,signal:t.signal});if(n.stale||t.signal.aborted)return;if(!n.ok){this.cacheOverview=Bd();return}let r=n.data&&typeof n.data==`object`?n.data:Bd();r.summary||=Bd().summary,Array.isArray(r.daily)||(r.daily=[]),this.cacheOverview=r}catch(e){if(_u(e))return;console.error(`Failed to fetch cache overview:`,e),this.cacheOverview=Bd()}finally{this.#a===t&&(this.#a=null)}}};function Hd(e,t,n){let r=e.getUTCFullYear(),i=e.getUTCMonth()+t,a=new Date(Date.UTC(r,i,1)),o=new Date(Date.UTC(r,i+1,0)),s=(a.getUTCDay()+6)%7,c=[],l=new Date(Date.UTC(r,i,0));for(let e=s-1;e>=0;e--){let t=l.getUTCDate()-e,a=new Date(Date.UTC(r,i-1,t));c.push({day:t,date:a,current:!1,key:`p-`+n(a)})}for(let e=1;e<=o.getUTCDate();e++){let t=new Date(Date.UTC(r,i,e));c.push({day:e,date:t,current:!0,key:`c-`+n(t)})}let u=42-c.length;for(let e=1;e<=u;e++){let t=new Date(Date.UTC(r,i+1,e));c.push({day:e,date:t,current:!1,key:`n-`+n(t)})}return c}function Ud(e,t,n){let r=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+t,1));return n&&r.getTime()>n.getTime()?e:r}function Wd(e,t){return e.getUTCFullYear()===t.getUTCFullYear()&&e.getUTCMonth()===t.getUTCMonth()}var Gd=B(``),Kd=B(``),qd=B(` `),Jd=B(``),Yd=B(`
`);function Xd(e,t){O(t,!0);let n=q(t,`offset`,3,0),r=A(()=>Hd(t.calendarMonth,n(),e=>lu.dateToDateKey(e))),i=A(()=>Wd(t.calendarMonth,lu.todayDate())),a=A(()=>eo(new Date(Date.UTC(t.calendarMonth.getUTCFullYear(),t.calendarMonth.getUTCMonth()+n(),1)),{month:`long`,year:`numeric`,timeZone:`UTC`})),o=Array.from({length:7},(e,t)=>eo(new Date(Date.UTC(2024,0,1+t)),{weekday:`short`,timeZone:`UTC`})),s=e=>lu.dateToDateKey(e.date),c=e=>s(e)>lu.currentDateKey(),l=e=>e.current&&s(e)===lu.currentDateKey();function u(e,t){let n=t===`start`?Fd.rangeStart():Fd.rangeEnd();return e.current&&!!n&&s(e)===lu.dateToDateKey(n)}function d(e){let t=Fd.rangeStart(),n=Fd.rangeEnd();return!e.current||!t||!n?!1:s(e)>=lu.dateToDateKey(t)&&s(e)<=lu.dateToDateKey(n)}var f=Yd(),p=P(f),m=P(p);let h;var g=I(m,2),_=P(g,!0);D(g);var v=I(g,2),y=e=>{V(e,Gd())},b=e=>{var n=Kd();L(e=>{n.disabled=R(i),K(n,`aria-label`,e)},[()=>ic()]),z(`click`,n,function(...e){t.onnext?.apply(this,e)}),V(e,n)};U(v,e=>{n()===-1?e(y):e(b,-1)}),D(p);var x=I(p,2);W(x,21,()=>o,ii,(e,t)=>{var n=qd(),r=P(n,!0);D(n),L(()=>H(r,R(t))),V(e,n)}),D(x);var S=I(x,2);W(S,21,()=>R(r),e=>e.key,(e,n)=>{var r=Jd(),i=P(r,!0);D(r),L((e,t)=>{G(r,1,e,`svelte-g7ga4u`),r.disabled=t,H(i,R(n).day)},[()=>Ni([`dp-day`,{"other-month":!R(n).current,today:l(R(n)),"range-start":u(R(n),`start`),"range-end":u(R(n),`end`),"in-range":d(R(n)),disabled:c(R(n))}]),()=>c(R(n))||!R(n).current]),z(`click`,r,()=>t.onselect?.(R(n))),V(e,r)}),D(S),D(f),L(e=>{h=G(m,1,`dp-nav-btn svelte-g7ga4u`,null,h,{"dp-nav-prev-mobile":n()!==-1}),K(m,`aria-label`,e),H(_,R(a))},[()=>nc()]),z(`click`,m,function(...e){t.onprev?.apply(this,e)}),V(e,f),k()}Br([`click`]);var Zd=B(``),Qd=B(`
`),$d=Jr(``),ef=Jr(``),tf=B(`
`),nf=B(`
`);function rf(e,t){O(t,!0);let n=[`3`,`7`,`14`,`30`,`90`],r=j(!1),i=j(`start`),a=j(N(new Date)),o=j(N({show:!1,x:0,y:0}));function s(){M(r,!R(r)),R(r)&&(Fd.syncToToday(),M(a,lu.startOfMonthDate(Fd.customEndDate||lu.todayDate()),!0),M(i,`start`))}function c(){M(r,!1),M(o,{show:!1,x:0,y:0},!0)}let l=Fd.syncTick;On(()=>{let e=Fd.syncTick;e!==l&&(l=e,t.onchange?.())});function u(e){Fd.selectPreset(e),M(i,`start`),t.onchange?.(),c()}let d=()=>M(a,Ud(R(a),-1),!0),f=()=>M(a,Ud(R(a),1,lu.startOfMonthDate(lu.todayDate())),!0);function p(e){let n=new Date(e.date);if(R(i)===`start`){Fd.selectStart(n),M(i,`end`),t.onchange?.();return}Fd.selectEnd(n),M(i,`start`),t.onchange?.(),c()}var m=nf(),h=P(m),g=I(P(h),2),_=P(g,!0);D(g);var v=I(g,2);let y;D(h);var b=I(h,2),x=e=>{var t=Qd(),r=P(t);W(r,20,()=>n,e=>e,(e,t)=>{var n=Zd();let r;var i=P(n,!0);D(n),L(e=>{r=G(n,1,`preset-btn svelte-ax7ma4`,null,r,{active:Fd.selectedPreset===t}),H(i,e)},[()=>Hs({count:Number(t)})]),z(`click`,n,()=>u(t)),V(e,n)}),D(r);var i=I(r,2);W(i,20,()=>[-1,0],e=>e,(e,t)=>{Xd(e,{get calendarMonth(){return R(a)},get offset(){return t},onprev:d,onnext:f,onselect:p})}),D(i),D(t),z(`mousemove`,i,e=>M(o,{show:!0,x:e.clientX,y:e.clientY},!0)),zr(`mouseleave`,i,()=>M(o,{show:!1,x:0,y:0},!0)),V(e,t)};U(b,e=>{R(r)&&e(x)});var S=I(b,2),C=e=>{var t=tf(),n=P(t),r=e=>{V(e,$d())},a=e=>{V(e,ef())};U(n,e=>{R(i)===`start`?e(r):e(a,-1)});var s=I(n,2),c=P(s,!0);D(s),D(t),L(e=>{Bi(t,`left:${R(o).x??``}px;top:${R(o).y??``}px`),H(c,e)},[()=>R(i)===`end`?ec():Qs()]),V(e,t)};U(S,e=>{R(o).show&&e(C)}),D(m),Ai(m,()=>R(r)?Au(c):void 0),L((e,t)=>{K(h,`title`,e),H(_,t),y=G(v,0,`date-picker-chevron svelte-ax7ma4`,null,y,{open:R(r)})},[()=>Fd.dateRangeSpanLabel(),()=>Fd.dateRangeLabel()]),z(`click`,h,s),V(e,m),k()}Br([`click`,`mousemove`]);function af(e){return e+.5|0}var of=(e,t,n)=>Math.max(Math.min(e,n),t);function sf(e){return of(af(e*2.55),0,255)}function cf(e){return of(af(e*255),0,255)}function lf(e){return of(af(e/2.55)/100,0,1)}function uf(e){return of(af(e*100),0,100)}var df={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},ff=[...`0123456789ABCDEF`],pf=e=>ff[e&15],mf=e=>ff[(e&240)>>4]+ff[e&15],hf=e=>(e&240)>>4==(e&15),gf=e=>hf(e.r)&&hf(e.g)&&hf(e.b)&&hf(e.a);function _f(e){var t=e.length,n;return e[0]===`#`&&(t===4||t===5?n={r:255&df[e[1]]*17,g:255&df[e[2]]*17,b:255&df[e[3]]*17,a:t===5?df[e[4]]*17:255}:(t===7||t===9)&&(n={r:df[e[1]]<<4|df[e[2]],g:df[e[3]]<<4|df[e[4]],b:df[e[5]]<<4|df[e[6]],a:t===9?df[e[7]]<<4|df[e[8]]:255})),n}var vf=(e,t)=>e<255?t(e):``;function yf(e){var t=gf(e)?pf:mf;return e?`#`+t(e.r)+t(e.g)+t(e.b)+vf(e.a,t):void 0}var bf=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function xf(e,t,n){let r=t*Math.min(n,1-n),i=(t,i=(t+e/30)%12)=>n-r*Math.max(Math.min(i-3,9-i,1),-1);return[i(0),i(8),i(4)]}function Sf(e,t,n){let r=(r,i=(r+e/60)%6)=>n-n*t*Math.max(Math.min(i,4-i,1),0);return[r(5),r(3),r(1)]}function Cf(e,t,n){let r=xf(e,1,.5),i;for(t+n>1&&(i=1/(t+n),t*=i,n*=i),i=0;i<3;i++)r[i]*=1-t-n,r[i]+=t;return r}function wf(e,t,n,r,i){return e===i?(t-n)/r+(t.5?l/(2-i-a):l/(i+a),s=wf(t,n,r,l,i),s=s*60+.5),[s|0,c||0,o]}function Ef(e,t,n,r){return(Array.isArray(t)?e(t[0],t[1],t[2]):e(t,n,r)).map(cf)}function Df(e,t,n){return Ef(xf,e,t,n)}function Of(e,t,n){return Ef(Cf,e,t,n)}function kf(e,t,n){return Ef(Sf,e,t,n)}function Af(e){return(e%360+360)%360}function jf(e){let t=bf.exec(e),n=255,r;if(!t)return;t[5]!==r&&(n=t[6]?sf(+t[5]):cf(+t[5]));let i=Af(+t[2]),a=t[3]/100,o=t[4]/100;return r=t[1]===`hwb`?Of(i,a,o):t[1]===`hsv`?kf(i,a,o):Df(i,a,o),{r:r[0],g:r[1],b:r[2],a:n}}function Mf(e,t){var n=Tf(e);n[0]=Af(n[0]+t),n=Df(n),e.r=n[0],e.g=n[1],e.b=n[2]}function Nf(e){if(!e)return;let t=Tf(e),n=t[0],r=uf(t[1]),i=uf(t[2]);return e.a<255?`hsla(${n}, ${r}%, ${i}%, ${lf(e.a)})`:`hsl(${n}, ${r}%, ${i}%)`}var Pf={x:`dark`,Z:`light`,Y:`re`,X:`blu`,W:`gr`,V:`medium`,U:`slate`,A:`ee`,T:`ol`,S:`or`,B:`ra`,C:`lateg`,D:`ights`,R:`in`,Q:`turquois`,E:`hi`,P:`ro`,O:`al`,N:`le`,M:`de`,L:`yello`,F:`en`,K:`ch`,G:`arks`,H:`ea`,I:`ightg`,J:`wh`},Ff={OiceXe:`f0f8ff`,antiquewEte:`faebd7`,aqua:`ffff`,aquamarRe:`7fffd4`,azuY:`f0ffff`,beige:`f5f5dc`,bisque:`ffe4c4`,black:`0`,blanKedOmond:`ffebcd`,Xe:`ff`,XeviTet:`8a2be2`,bPwn:`a52a2a`,burlywood:`deb887`,caMtXe:`5f9ea0`,KartYuse:`7fff00`,KocTate:`d2691e`,cSO:`ff7f50`,cSnflowerXe:`6495ed`,cSnsilk:`fff8dc`,crimson:`dc143c`,cyan:`ffff`,xXe:`8b`,xcyan:`8b8b`,xgTMnPd:`b8860b`,xWay:`a9a9a9`,xgYF:`6400`,xgYy:`a9a9a9`,xkhaki:`bdb76b`,xmagFta:`8b008b`,xTivegYF:`556b2f`,xSange:`ff8c00`,xScEd:`9932cc`,xYd:`8b0000`,xsOmon:`e9967a`,xsHgYF:`8fbc8f`,xUXe:`483d8b`,xUWay:`2f4f4f`,xUgYy:`2f4f4f`,xQe:`ced1`,xviTet:`9400d3`,dAppRk:`ff1493`,dApskyXe:`bfff`,dimWay:`696969`,dimgYy:`696969`,dodgerXe:`1e90ff`,fiYbrick:`b22222`,flSOwEte:`fffaf0`,foYstWAn:`228b22`,fuKsia:`ff00ff`,gaRsbSo:`dcdcdc`,ghostwEte:`f8f8ff`,gTd:`ffd700`,gTMnPd:`daa520`,Way:`808080`,gYF:`8000`,gYFLw:`adff2f`,gYy:`808080`,honeyMw:`f0fff0`,hotpRk:`ff69b4`,RdianYd:`cd5c5c`,Rdigo:`4b0082`,ivSy:`fffff0`,khaki:`f0e68c`,lavFMr:`e6e6fa`,lavFMrXsh:`fff0f5`,lawngYF:`7cfc00`,NmoncEffon:`fffacd`,ZXe:`add8e6`,ZcSO:`f08080`,Zcyan:`e0ffff`,ZgTMnPdLw:`fafad2`,ZWay:`d3d3d3`,ZgYF:`90ee90`,ZgYy:`d3d3d3`,ZpRk:`ffb6c1`,ZsOmon:`ffa07a`,ZsHgYF:`20b2aa`,ZskyXe:`87cefa`,ZUWay:`778899`,ZUgYy:`778899`,ZstAlXe:`b0c4de`,ZLw:`ffffe0`,lime:`ff00`,limegYF:`32cd32`,lRF:`faf0e6`,magFta:`ff00ff`,maPon:`800000`,VaquamarRe:`66cdaa`,VXe:`cd`,VScEd:`ba55d3`,VpurpN:`9370db`,VsHgYF:`3cb371`,VUXe:`7b68ee`,VsprRggYF:`fa9a`,VQe:`48d1cc`,VviTetYd:`c71585`,midnightXe:`191970`,mRtcYam:`f5fffa`,mistyPse:`ffe4e1`,moccasR:`ffe4b5`,navajowEte:`ffdead`,navy:`80`,Tdlace:`fdf5e6`,Tive:`808000`,TivedBb:`6b8e23`,Sange:`ffa500`,SangeYd:`ff4500`,ScEd:`da70d6`,pOegTMnPd:`eee8aa`,pOegYF:`98fb98`,pOeQe:`afeeee`,pOeviTetYd:`db7093`,papayawEp:`ffefd5`,pHKpuff:`ffdab9`,peru:`cd853f`,pRk:`ffc0cb`,plum:`dda0dd`,powMrXe:`b0e0e6`,purpN:`800080`,YbeccapurpN:`663399`,Yd:`ff0000`,Psybrown:`bc8f8f`,PyOXe:`4169e1`,saddNbPwn:`8b4513`,sOmon:`fa8072`,sandybPwn:`f4a460`,sHgYF:`2e8b57`,sHshell:`fff5ee`,siFna:`a0522d`,silver:`c0c0c0`,skyXe:`87ceeb`,UXe:`6a5acd`,UWay:`708090`,UgYy:`708090`,snow:`fffafa`,sprRggYF:`ff7f`,stAlXe:`4682b4`,tan:`d2b48c`,teO:`8080`,tEstN:`d8bfd8`,tomato:`ff6347`,Qe:`40e0d0`,viTet:`ee82ee`,JHt:`f5deb3`,wEte:`ffffff`,wEtesmoke:`f5f5f5`,Lw:`ffff00`,LwgYF:`9acd32`};function If(){let e={},t=Object.keys(Ff),n=Object.keys(Pf),r,i,a,o,s;for(r=0;r>16&255,a>>8&255,a&255]}return e}var Lf;function Rf(e){Lf||(Lf=If(),Lf.transparent=[0,0,0,0]);let t=Lf[e.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:t.length===4?t[3]:255}}var zf=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function Bf(e){let t=zf.exec(e),n=255,r,i,a;if(t){if(t[7]!==r){let e=+t[7];n=t[8]?sf(e):of(e*255,0,255)}return r=+t[1],i=+t[3],a=+t[5],r=255&(t[2]?sf(r):of(r,0,255)),i=255&(t[4]?sf(i):of(i,0,255)),a=255&(t[6]?sf(a):of(a,0,255)),{r,g:i,b:a,a:n}}}function Vf(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${lf(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}var Hf=e=>e<=.0031308?e*12.92:e**(1/2.4)*1.055-.055,Uf=e=>e<=.04045?e/12.92:((e+.055)/1.055)**2.4;function Wf(e,t,n){let r=Uf(lf(e.r)),i=Uf(lf(e.g)),a=Uf(lf(e.b));return{r:cf(Hf(r+n*(Uf(lf(t.r))-r))),g:cf(Hf(i+n*(Uf(lf(t.g))-i))),b:cf(Hf(a+n*(Uf(lf(t.b))-a))),a:e.a+n*(t.a-e.a)}}function Gf(e,t,n){if(e){let r=Tf(e);r[t]=Math.max(0,Math.min(r[t]+r[t]*n,t===0?360:1)),r=Df(r),e.r=r[0],e.g=r[1],e.b=r[2]}}function Kf(e,t){return e&&Object.assign(t||{},e)}function qf(e){var t={r:0,g:0,b:0,a:255};return Array.isArray(e)?e.length>=3&&(t={r:e[0],g:e[1],b:e[2],a:255},e.length>3&&(t.a=cf(e[3]))):(t=Kf(e,{r:0,g:0,b:0,a:1}),t.a=cf(t.a)),t}function Jf(e){return e.charAt(0)===`r`?Bf(e):jf(e)}var Yf=class e{constructor(t){if(t instanceof e)return t;let n=typeof t,r;n===`object`?r=qf(t):n===`string`&&(r=_f(t)||Rf(t)||Jf(t)),this._rgb=r,this._valid=!!r}get valid(){return this._valid}get rgb(){var e=Kf(this._rgb);return e&&(e.a=lf(e.a)),e}set rgb(e){this._rgb=qf(e)}rgbString(){return this._valid?Vf(this._rgb):void 0}hexString(){return this._valid?yf(this._rgb):void 0}hslString(){return this._valid?Nf(this._rgb):void 0}mix(e,t){if(e){let n=this.rgb,r=e.rgb,i,a=t===i?.5:t,o=2*a-1,s=n.a-r.a,c=((o*s===-1?o:(o+s)/(1+o*s))+1)/2;i=1-c,n.r=255&c*n.r+i*r.r+.5,n.g=255&c*n.g+i*r.g+.5,n.b=255&c*n.b+i*r.b+.5,n.a=a*n.a+(1-a)*r.a,this.rgb=n}return this}interpolate(e,t){return e&&(this._rgb=Wf(this._rgb,e._rgb,t)),this}clone(){return new e(this.rgb)}alpha(e){return this._rgb.a=cf(e),this}clearer(e){let t=this._rgb;return t.a*=1-e,this}greyscale(){let e=this._rgb;return e.r=e.g=e.b=af(e.r*.3+e.g*.59+e.b*.11),this}opaquer(e){let t=this._rgb;return t.a*=1+e,this}negate(){let e=this._rgb;return e.r=255-e.r,e.g=255-e.g,e.b=255-e.b,this}lighten(e){return Gf(this._rgb,2,e),this}darken(e){return Gf(this._rgb,2,-e),this}saturate(e){return Gf(this._rgb,1,e),this}desaturate(e){return Gf(this._rgb,1,-e),this}rotate(e){return Mf(this._rgb,e),this}};function Xf(){}var Zf=(()=>{let e=0;return()=>e++})();function Qf(e){return e==null}function $f(e){if(Array.isArray&&Array.isArray(e))return!0;let t=Object.prototype.toString.call(e);return t.slice(0,7)===`[object`&&t.slice(-6)===`Array]`}function ep(e){return e!==null&&Object.prototype.toString.call(e)===`[object Object]`}function tp(e){return(typeof e==`number`||e instanceof Number)&&isFinite(+e)}function np(e,t){return tp(e)?e:t}function rp(e,t){return e===void 0?t:e}var ip=(e,t)=>typeof e==`string`&&e.endsWith(`%`)?parseFloat(e)/100:+e/t,ap=(e,t)=>typeof e==`string`&&e.endsWith(`%`)?parseFloat(e)/100*t:+e;function op(e,t,n){if(e&&typeof e.call==`function`)return e.apply(n,t)}function sp(e,t,n,r){let i,a,o;if($f(e))if(a=e.length,r)for(i=a-1;i>=0;i--)t.call(n,e[i],i);else for(i=0;ie,x:e=>e.x,y:e=>e.y};function gp(e){let t=e.split(`.`),n=[],r=``;for(let e of t)r+=e,r.endsWith(`\\`)?r=r.slice(0,-1)+`.`:(n.push(r),r=``);return n}function _p(e){let t=gp(e);return e=>{for(let n of t){if(n===``)break;e&&=e[n]}return e}}function vp(e,t){return(hp[t]||(hp[t]=_p(t)))(e)}function yp(e){return e.charAt(0).toUpperCase()+e.slice(1)}var bp=e=>e!==void 0,xp=e=>typeof e==`function`,Sp=(e,t)=>{if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0};function Cp(e){return e.type===`mouseup`||e.type===`click`||e.type===`contextmenu`}var wp=Math.PI,Tp=2*wp,Ep=Tp+wp,Dp=1/0,Op=wp/180,kp=wp/2,Ap=wp/4,jp=wp*2/3,Mp=Math.log10,Np=Math.sign;function Pp(e,t,n){return Math.abs(e-t)e-t).pop(),t}function Lp(e){return typeof e==`symbol`||typeof e==`object`&&!!e&&!(Symbol.toPrimitive in e||`toString`in e||`valueOf`in e)}function Rp(e){return!Lp(e)&&!isNaN(parseFloat(e))&&isFinite(e)}function zp(e,t){let n=Math.round(e);return n-t<=e&&n+t>=e}function Bp(e,t,n){let r,i,a;for(r=0,i=e.length;rc&&l=Math.min(t,n)-r&&e<=Math.max(t,n)+r}function Qp(e,t,n){n||=(n=>e[n]1;)a=i+r>>1,n(a)?i=a:r=a;return{lo:i,hi:r}}var $p=(e,t,n,r)=>Qp(e,n,r?r=>{let i=e[r][t];return ie[r][t]Qp(e,n,r=>e[r][t]>=n);function tm(e,t,n){let r=0,i=e.length;for(;rr&&e[i-1]>n;)i--;return r>0||i{let n=`_onData`+yp(t),r=e[t];Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value(...t){let i=r.apply(this,t);return e._chartjs.listeners.forEach(e=>{typeof e[n]==`function`&&e[n](...t)}),i}})})}function im(e,t){let n=e._chartjs;if(!n)return;let r=n.listeners,i=r.indexOf(t);i!==-1&&r.splice(i,1),!(r.length>0)&&(nm.forEach(t=>{delete e[t]}),delete e._chartjs)}function am(e){let t=new Set(e);return t.size===e.length?e:Array.from(t)}var om=function(){return typeof window>`u`?function(e){return e()}:window.requestAnimationFrame}();function sm(e,t){let n=[],r=!1;return function(...i){n=i,r||(r=!0,om.call(window,()=>{r=!1,e.apply(t,n)}))}}function cm(e,t){let n;return function(...r){return t?(clearTimeout(n),n=setTimeout(e,t,r)):e.apply(this,r),t}}var lm=e=>e===`start`?`left`:e===`end`?`right`:`center`,um=(e,t,n)=>e===`start`?t:e===`end`?n:(t+n)/2,dm=(e,t,n,r)=>e===(r?`left`:`right`)?n:e===`center`?(t+n)/2:t;function fm(e,t,n){let r=t.length,i=0,a=r;if(e._sorted){let{iScale:o,vScale:s,_parsed:c}=e,l=e.dataset&&e.dataset.options?e.dataset.options.spanGaps:null,u=o.axis,{min:d,max:f,minDefined:p,maxDefined:m}=o.getUserBounds();if(p){if(i=Math.min($p(c,u,d).lo,n?r:$p(t,u,o.getPixelForValue(d)).lo),l){let e=c.slice(0,i+1).reverse().findIndex(e=>!Qf(e[s.axis]));i-=Math.max(0,e)}i=Yp(i,0,r-1)}if(m){let e=Math.max($p(c,o.axis,f,!0).hi+1,n?0:$p(t,u,o.getPixelForValue(f),!0).hi+1);if(l){let t=c.slice(e-1).findIndex(e=>!Qf(e[s.axis]));e+=Math.max(0,t)}a=Yp(e,i,r)-i}else a=r-i}return{start:i,count:a}}function pm(e){let{xScale:t,yScale:n,_scaleRanges:r}=e,i={xmin:t.min,xmax:t.max,ymin:n.min,ymax:n.max};if(!r)return e._scaleRanges=i,!0;let a=r.xmin!==t.min||r.xmax!==t.max||r.ymin!==n.min||r.ymax!==n.max;return Object.assign(r,i),a}var mm=e=>e===0||e===1,hm=(e,t,n)=>-(2**(10*--e)*Math.sin((e-t)*Tp/n)),gm=(e,t,n)=>2**(-10*e)*Math.sin((e-t)*Tp/n)+1,_m={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>-e*(e-2),easeInOutQuad:e=>(e/=.5)<1?.5*e*e:-.5*(--e*(e-2)-1),easeInCubic:e=>e*e*e,easeOutCubic:e=>--e*e*e+1,easeInOutCubic:e=>(e/=.5)<1?.5*e*e*e:.5*((e-=2)*e*e+2),easeInQuart:e=>e*e*e*e,easeOutQuart:e=>-(--e*e*e*e-1),easeInOutQuart:e=>(e/=.5)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2),easeInQuint:e=>e*e*e*e*e,easeOutQuint:e=>--e*e*e*e*e+1,easeInOutQuint:e=>(e/=.5)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2),easeInSine:e=>-Math.cos(e*kp)+1,easeOutSine:e=>Math.sin(e*kp),easeInOutSine:e=>-.5*(Math.cos(wp*e)-1),easeInExpo:e=>e===0?0:2**(10*(e-1)),easeOutExpo:e=>e===1?1:-(2**(-10*e))+1,easeInOutExpo:e=>mm(e)?e:e<.5?.5*2**(10*(e*2-1)):.5*(-(2**(-10*(e*2-1)))+2),easeInCirc:e=>e>=1?e:-(Math.sqrt(1-e*e)-1),easeOutCirc:e=>Math.sqrt(1- --e*e),easeInOutCirc:e=>(e/=.5)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1),easeInElastic:e=>mm(e)?e:hm(e,.075,.3),easeOutElastic:e=>mm(e)?e:gm(e,.075,.3),easeInOutElastic(e){let t=.1125,n=.45;return mm(e)?e:e<.5?.5*hm(e*2,t,n):.5+.5*gm(e*2-1,t,n)},easeInBack(e){return e*e*(2.70158*e-1.70158)},easeOutBack(e){return--e*e*(2.70158*e+1.70158)+1},easeInOutBack(e){let t=1.70158;return(e/=.5)<1?.5*(e*e*(((t*=1.525)+1)*e-t)):.5*((e-=2)*e*(((t*=1.525)+1)*e+t)+2)},easeInBounce:e=>1-_m.easeOutBounce(1-e),easeOutBounce(e){let t=7.5625,n=2.75;return e<1/n?t*e*e:e<2/n?t*(e-=1.5/n)*e+.75:e<2.5/n?t*(e-=2.25/n)*e+.9375:t*(e-=2.625/n)*e+.984375},easeInOutBounce:e=>e<.5?_m.easeInBounce(e*2)*.5:_m.easeOutBounce(e*2-1)*.5+.5};function vm(e){if(e&&typeof e==`object`){let t=e.toString();return t===`[object CanvasPattern]`||t===`[object CanvasGradient]`}return!1}function ym(e){return vm(e)?e:new Yf(e)}function bm(e){return vm(e)?e:new Yf(e).saturate(.5).darken(.1).hexString()}var xm=[`x`,`y`,`borderWidth`,`radius`,`tension`],Sm=[`color`,`borderColor`,`backgroundColor`];function Cm(e){e.set(`animation`,{delay:void 0,duration:1e3,easing:`easeOutQuart`,fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),e.describe(`animation`,{_fallback:!1,_indexable:!1,_scriptable:e=>e!==`onProgress`&&e!==`onComplete`&&e!==`fn`}),e.set(`animations`,{colors:{type:`color`,properties:Sm},numbers:{type:`number`,properties:xm}}),e.describe(`animations`,{_fallback:`animation`}),e.set(`transitions`,{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:`transparent`},visible:{type:`boolean`,duration:0}}},hide:{animations:{colors:{to:`transparent`},visible:{type:`boolean`,easing:`linear`,fn:e=>e|0}}}})}function wm(e){e.set(`layout`,{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}var Tm=new Map;function Em(e,t){t||={};let n=e+JSON.stringify(t),r=Tm.get(n);return r||(r=new Intl.NumberFormat(e,t),Tm.set(n,r)),r}function Dm(e,t,n){return Em(t,n).format(e)}var Om={values(e){return $f(e)?e:``+e},numeric(e,t,n){if(e===0)return`0`;let r=this.chart.options.locale,i,a=e;if(n.length>1){let t=Math.max(Math.abs(n[0].value),Math.abs(n[n.length-1].value));(t<1e-4||t>0x38d7ea4c68000)&&(i=`scientific`),a=km(e,n)}let o=Mp(Math.abs(a)),s=isNaN(o)?1:Math.max(Math.min(-1*Math.floor(o),20),0),c={notation:i,minimumFractionDigits:s,maximumFractionDigits:s};return Object.assign(c,this.options.ticks.format),Dm(e,r,c)},logarithmic(e,t,n){if(e===0)return`0`;let r=n[t].significand||e/10**Math.floor(Mp(e));return[1,2,3,5,10,15].includes(r)||t>.8*n.length?Om.numeric.call(this,e,t,n):``}};function km(e,t){let n=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(n)>=1&&e!==Math.floor(e)&&(n=e-Math.floor(e)),n}var Am={formatters:Om};function jm(e){e.set(`scale`,{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:`ticks`,clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(e,t)=>t.lineWidth,tickColor:(e,t)=>t.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:``,padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:``,padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Am.formatters.values,minor:{},major:{},align:`center`,crossAlign:`near`,showLabelBackdrop:!1,backdropColor:`rgba(255, 255, 255, 0.75)`,backdropPadding:2}}),e.route(`scale.ticks`,`color`,``,`color`),e.route(`scale.grid`,`color`,``,`borderColor`),e.route(`scale.border`,`color`,``,`borderColor`),e.route(`scale.title`,`color`,``,`color`),e.describe(`scale`,{_fallback:!1,_scriptable:e=>!e.startsWith(`before`)&&!e.startsWith(`after`)&&e!==`callback`&&e!==`parser`,_indexable:e=>e!==`borderDash`&&e!==`tickBorderDash`&&e!==`dash`}),e.describe(`scales`,{_fallback:`scale`}),e.describe(`scale.ticks`,{_scriptable:e=>e!==`backdropPadding`&&e!==`callback`,_indexable:e=>e!==`backdropPadding`})}var Mm=Object.create(null),Nm=Object.create(null);function Pm(e,t){if(!t)return e;let n=t.split(`.`);for(let t=0,r=n.length;te.chart.platform.getDevicePixelRatio(),this.elements={},this.events=[`mousemove`,`mouseout`,`click`,`touchstart`,`touchmove`],this.font={family:`'Helvetica Neue', 'Helvetica', 'Arial', sans-serif`,size:12,style:`normal`,lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(e,t)=>bm(t.backgroundColor),this.hoverBorderColor=(e,t)=>bm(t.borderColor),this.hoverColor=(e,t)=>bm(t.color),this.indexAxis=`x`,this.interaction={mode:`nearest`,intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(e),this.apply(t)}set(e,t){return Fm(this,e,t)}get(e){return Pm(this,e)}describe(e,t){return Fm(Nm,e,t)}override(e,t){return Fm(Mm,e,t)}route(e,t,n,r){let i=Pm(this,e),a=Pm(this,n),o=`_`+t;Object.defineProperties(i,{[o]:{value:i[t],writable:!0},[t]:{enumerable:!0,get(){let e=this[o],t=a[r];return ep(e)?Object.assign({},t,e):rp(e,t)},set(e){this[o]=e}}})}apply(e){e.forEach(e=>e(this))}}({_scriptable:e=>!e.startsWith(`on`),_indexable:e=>e!==`events`,hover:{_fallback:`interaction`},interaction:{_scriptable:!1,_indexable:!1}},[Cm,wm,jm]);function Lm(e){return!e||Qf(e.size)||Qf(e.family)?null:(e.style?e.style+` `:``)+(e.weight?e.weight+` `:``)+e.size+`px `+e.family}function Rm(e,t,n,r,i){let a=t[i];return a||(a=t[i]=e.measureText(i).width,n.push(i)),a>r&&(r=a),r}function zm(e,t,n,r){r||={};let i=r.data=r.data||{},a=r.garbageCollect=r.garbageCollect||[];r.font!==t&&(i=r.data={},a=r.garbageCollect=[],r.font=t),e.save(),e.font=t;let o=0,s=n.length,c,l,u,d,f;for(c=0;cn.length){for(c=0;c0&&e.stroke()}}function Wm(e,t,n){return n||=.5,!t||e&&e.x>t.left-n&&e.xt.top-n&&e.y0&&a.strokeColor!==``,c,l;for(e.save(),e.font=i.string,Ym(e,a),c=0;c+e||0;function ih(e,t){let n={},r=ep(t),i=r?Object.keys(t):t,a=ep(e)?r?n=>rp(e[n],e[t[n]]):t=>e[t]:()=>e;for(let e of i)n[e]=rh(a(e));return n}function ah(e){return ih(e,{top:`y`,right:`x`,bottom:`y`,left:`x`})}function oh(e){return ih(e,[`topLeft`,`topRight`,`bottomLeft`,`bottomRight`])}function sh(e){let t=ah(e);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function ch(e,t){e||={},t||=Im.font;let n=rp(e.size,t.size);typeof n==`string`&&(n=parseInt(n,10));let r=rp(e.style,t.style);r&&!(``+r).match(th)&&(console.warn(`Invalid font style specified: "`+r+`"`),r=void 0);let i={family:rp(e.family,t.family),lineHeight:nh(rp(e.lineHeight,t.lineHeight),n),size:n,style:r,weight:rp(e.weight,t.weight),string:``};return i.string=Lm(i),i}function lh(e,t,n,r){let i=!0,a,o,s;for(a=0,o=e.length;an&&e===0?0:e+t;return{min:o(r,-Math.abs(a)),max:o(i,a)}}function dh(e,t){return Object.assign(Object.create(e),t)}function fh(e,t=[``],n,r,i=()=>e[0]){let a=n||e;return r===void 0&&(r=Oh(`_fallback`,e)),new Proxy({[Symbol.toStringTag]:`Object`,_cacheable:!0,_scopes:e,_rootScopes:a,_fallback:r,_getTarget:i,override:n=>fh([n,...e],t,a,r)},{deleteProperty(t,n){return delete t[n],delete t._keys,delete e[0][n],!0},get(n,r){return _h(n,r,()=>Dh(r,t,e,n))},getOwnPropertyDescriptor(e,t){return Reflect.getOwnPropertyDescriptor(e._scopes[0],t)},getPrototypeOf(){return Reflect.getPrototypeOf(e[0])},has(e,t){return kh(e).includes(t)},ownKeys(e){return kh(e)},set(e,t,n){let r=e._storage||=i();return e[t]=r[t]=n,delete e._keys,!0}})}function ph(e,t,n,r){let i={_cacheable:!1,_proxy:e,_context:t,_subProxy:n,_stack:new Set,_descriptors:mh(e,r),setContext:t=>ph(e,t,n,r),override:i=>ph(e.override(i),t,n,r)};return new Proxy(i,{deleteProperty(t,n){return delete t[n],delete e[n],!0},get(e,t,n){return _h(e,t,()=>vh(e,t,n))},getOwnPropertyDescriptor(t,n){return t._descriptors.allKeys?Reflect.has(e,n)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(e,n)},getPrototypeOf(){return Reflect.getPrototypeOf(e)},has(t,n){return Reflect.has(e,n)},ownKeys(){return Reflect.ownKeys(e)},set(t,n,r){return e[n]=r,delete t[n],!0}})}function mh(e,t={scriptable:!0,indexable:!0}){let{_scriptable:n=t.scriptable,_indexable:r=t.indexable,_allKeys:i=t.allKeys}=e;return{allKeys:i,scriptable:n,indexable:r,isScriptable:xp(n)?n:()=>n,isIndexable:xp(r)?r:()=>r}}var hh=(e,t)=>e?e+yp(t):t,gh=(e,t)=>ep(t)&&e!==`adapters`&&(Object.getPrototypeOf(t)===null||t.constructor===Object);function _h(e,t,n){if(Object.prototype.hasOwnProperty.call(e,t)||t===`constructor`)return e[t];let r=n();return e[t]=r,r}function vh(e,t,n){let{_proxy:r,_context:i,_subProxy:a,_descriptors:o}=e,s=r[t];return xp(s)&&o.isScriptable(t)&&(s=yh(t,s,e,n)),$f(s)&&s.length&&(s=bh(t,s,e,o.isIndexable)),gh(t,s)&&(s=ph(s,i,a&&a[t],o)),s}function yh(e,t,n,r){let{_proxy:i,_context:a,_subProxy:o,_stack:s}=n;if(s.has(e))throw Error(`Recursion detected: `+Array.from(s).join(`->`)+`->`+e);s.add(e);let c=t(a,o||r);return s.delete(e),gh(e,c)&&(c=wh(i._scopes,i,e,c)),c}function bh(e,t,n,r){let{_proxy:i,_context:a,_subProxy:o,_descriptors:s}=n;if(a.index!==void 0&&r(e))return t[a.index%t.length];if(ep(t[0])){let n=t,r=i._scopes.filter(e=>e!==n);t=[];for(let c of n){let n=wh(r,i,e,c);t.push(ph(n,a,o&&o[e],s))}}return t}function xh(e,t,n){return xp(e)?e(t,n):e}var Sh=(e,t)=>e===!0?t:typeof e==`string`?vp(t,e):void 0;function Ch(e,t,n,r,i){for(let a of t){let t=Sh(n,a);if(t){e.add(t);let a=xh(t._fallback,n,i);if(a!==void 0&&a!==n&&a!==r)return a}else if(t===!1&&r!==void 0&&n!==r)return null}return!1}function wh(e,t,n,r){let i=t._rootScopes,a=xh(t._fallback,n,r),o=[...e,...i],s=new Set;s.add(r);let c=Th(s,o,n,a||n,r);return c===null||a!==void 0&&a!==n&&(c=Th(s,o,a,c,r),c===null)?!1:fh(Array.from(s),[``],i,a,()=>Eh(t,n,r))}function Th(e,t,n,r,i){for(;n;)n=Ch(e,t,n,r,i);return n}function Eh(e,t,n){let r=e._getTarget();t in r||(r[t]={});let i=r[t];return $f(i)&&ep(n)?n:i||{}}function Dh(e,t,n,r){let i;for(let a of t)if(i=Oh(hh(a,e),n),i!==void 0)return gh(e,i)?wh(n,r,e,i):i}function Oh(e,t){for(let n of t){if(!n)continue;let t=n[e];if(t!==void 0)return t}}function kh(e){let t=e._keys;return t||=e._keys=Ah(e._scopes),t}function Ah(e){let t=new Set;for(let n of e)for(let e of Object.keys(n).filter(e=>!e.startsWith(`_`)))t.add(e);return Array.from(t)}function jh(e,t,n,r){let{iScale:i}=e,{key:a=`r`}=this._parsing,o=Array(r),s,c,l,u;for(s=0,c=r;ste===`x`?`y`:`x`;function Fh(e,t,n,r){let i=e.skip?t:e,a=t,o=n.skip?t:n,s=Gp(a,i),c=Gp(o,a),l=s/(s+c),u=c/(s+c);l=isNaN(l)?0:l,u=isNaN(u)?0:u;let d=r*l,f=r*u;return{previous:{x:a.x-d*(o.x-i.x),y:a.y-d*(o.y-i.y)},next:{x:a.x+f*(o.x-i.x),y:a.y+f*(o.y-i.y)}}}function Ih(e,t,n){let r=e.length,i,a,o,s,c,l=Nh(e,0);for(let u=0;u!e.skip)),t.cubicInterpolationMode===`monotone`)Rh(e,i);else{let n=r?e[e.length-1]:e[0];for(a=0,o=e.length;ae.ownerDocument.defaultView.getComputedStyle(e,null);function Kh(e,t){return Gh(e).getPropertyValue(t)}var qh=[`top`,`right`,`bottom`,`left`];function Jh(e,t,n){let r={};n=n?`-`+n:``;for(let i=0;i<4;i++){let a=qh[i];r[a]=parseFloat(e[t+`-`+a+n])||0}return r.width=r.left+r.right,r.height=r.top+r.bottom,r}var Yh=(e,t,n)=>(e>0||t>0)&&(!n||!n.shadowRoot);function Xh(e,t){let n=e.touches,r=n&&n.length?n[0]:e,{offsetX:i,offsetY:a}=r,o=!1,s,c;if(Yh(i,a,e.target))s=i,c=a;else{let e=t.getBoundingClientRect();s=r.clientX-e.left,c=r.clientY-e.top,o=!0}return{x:s,y:c,box:o}}function Zh(e,t){if(`native`in e)return e;let{canvas:n,currentDevicePixelRatio:r}=t,i=Gh(n),a=i.boxSizing===`border-box`,o=Jh(i,`padding`),s=Jh(i,`border`,`width`),{x:c,y:l,box:u}=Xh(e,n),d=o.left+(u&&s.left),f=o.top+(u&&s.top),{width:p,height:m}=t;return a&&(p-=o.width+s.width,m-=o.height+s.height),{x:Math.round((c-d)/p*n.width/r),y:Math.round((l-f)/m*n.height/r)}}function Qh(e,t,n){let r,i;if(t===void 0||n===void 0){let a=e&&Uh(e);if(!a)t=e.clientWidth,n=e.clientHeight;else{let e=a.getBoundingClientRect(),o=Gh(a),s=Jh(o,`border`,`width`),c=Jh(o,`padding`);t=e.width-c.width-s.width,n=e.height-c.height-s.height,r=Wh(o.maxWidth,a,`clientWidth`),i=Wh(o.maxHeight,a,`clientHeight`)}}return{width:t,height:n,maxWidth:r||Dp,maxHeight:i||Dp}}var $h=e=>Math.round(e*10)/10;function eg(e,t,n,r){let i=Gh(e),a=Jh(i,`margin`),o=Wh(i.maxWidth,e,`clientWidth`)||Dp,s=Wh(i.maxHeight,e,`clientHeight`)||Dp,c=Qh(e,t,n),{width:l,height:u}=c;if(i.boxSizing===`content-box`){let e=Jh(i,`border`,`width`),t=Jh(i,`padding`);l-=t.width+e.width,u-=t.height+e.height}return l=Math.max(0,l-a.width),u=Math.max(0,r?l/r:u-a.height),l=$h(Math.min(l,o,c.maxWidth)),u=$h(Math.min(u,s,c.maxHeight)),l&&!u&&(u=$h(l/2)),(t!==void 0||n!==void 0)&&r&&c.height&&u>c.height&&(u=c.height,l=$h(Math.floor(u*r))),{width:l,height:u}}function tg(e,t,n){let r=t||1,i=$h(e.height*r),a=$h(e.width*r);e.height=$h(e.height),e.width=$h(e.width);let o=e.canvas;return o.style&&(n||!o.style.height&&!o.style.width)&&(o.style.height=`${e.height}px`,o.style.width=`${e.width}px`),e.currentDevicePixelRatio!==r||o.height!==i||o.width!==a?(e.currentDevicePixelRatio=r,o.height=i,o.width=a,e.ctx.setTransform(r,0,0,r,0,0),!0):!1}var ng=function(){let e=!1;try{let t={get passive(){return e=!0,!1}};Hh()&&(window.addEventListener(`test`,null,t),window.removeEventListener(`test`,null,t))}catch{}return e}();function rg(e,t){let n=Kh(e,t),r=n&&n.match(/^(\d+)(\.\d+)?px$/);return r?+r[1]:void 0}function ig(e,t,n,r){return{x:e.x+n*(t.x-e.x),y:e.y+n*(t.y-e.y)}}function ag(e,t,n,r){return{x:e.x+n*(t.x-e.x),y:r===`middle`?n<.5?e.y:t.y:r===`after`?n<1?e.y:t.y:n>0?t.y:e.y}}function og(e,t,n,r){let i={x:e.cp2x,y:e.cp2y},a={x:t.cp1x,y:t.cp1y},o=ig(e,i,n),s=ig(i,a,n),c=ig(a,t,n);return ig(ig(o,s,n),ig(s,c,n),n)}var sg=function(e,t){return{x(n){return e+e+t-n},setWidth(e){t=e},textAlign(e){return e===`center`?e:e===`right`?`left`:`right`},xPlus(e,t){return e-t},leftForLtr(e,t){return e-t}}},cg=function(){return{x(e){return e},setWidth(e){},textAlign(e){return e},xPlus(e,t){return e+t},leftForLtr(e,t){return e}}};function lg(e,t,n){return e?sg(t,n):cg()}function ug(e,t){let n,r;(t===`ltr`||t===`rtl`)&&(n=e.canvas.style,r=[n.getPropertyValue(`direction`),n.getPropertyPriority(`direction`)],n.setProperty(`direction`,t,`important`),e.prevTextDirection=r)}function dg(e,t){t!==void 0&&(delete e.prevTextDirection,e.canvas.style.setProperty(`direction`,t[0],t[1]))}function fg(e){return e===`angle`?{between:Jp,compare:Kp,normalize:qp}:{between:Zp,compare:(e,t)=>e-t,normalize:e=>e}}function pg({start:e,end:t,count:n,loop:r,style:i}){return{start:e%n,end:t%n,loop:r&&(t-e+1)%n===0,style:i}}function mg(e,t,n){let{property:r,start:i,end:a}=n,{between:o,normalize:s}=fg(r),c=t.length,{start:l,end:u,loop:d}=e,f,p;if(d){for(l+=c,u+=c,f=0,p=c;fc(i,y,_)&&s(i,y)!==0,x=()=>s(a,_)===0||c(a,y,_),S=()=>h||b(),C=()=>!h||x();for(let e=u,n=u;e<=d;++e)v=t[e%o],!v.skip&&(_=l(v[r]),_!==y&&(h=c(_,i,a),g===null&&S()&&(g=s(_,i)===0?e:n),g!==null&&C()&&(m.push(pg({start:g,end:e,loop:f,count:o,style:p})),g=null),n=e,y=_));return g!==null&&m.push(pg({start:g,end:d,loop:f,count:o,style:p})),m}function gg(e,t){let n=[],r=e.segments;for(let i=0;ii&&e[a%t].skip;)a--;return a%=t,{start:i,end:a}}function vg(e,t,n,r){let i=e.length,a=[],o=t,s=e[t],c;for(c=t+1;c<=n;++c){let n=e[c%i];n.skip||n.stop?s.skip||(r=!1,a.push({start:t%i,end:(c-1)%i,loop:r}),t=o=n.stop?c:null):(o=c,s.skip&&(t=c)),s=n}return o!==null&&a.push({start:t%i,end:o%i,loop:r}),a}function yg(e,t){let n=e.points,r=e.options.spanGaps,i=n.length;if(!i)return[];let a=!!e._loop,{start:o,end:s}=_g(n,i,a,r);return r===!0?bg(e,[{start:o,end:s,loop:a}],n,t):bg(e,vg(n,o,sr({chart:e,initial:t.initial,numSteps:a,currentStep:Math.min(n-t.start,a)}))}_refresh(){this._request||=(this._running=!0,om.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(e=Date.now()){let t=0;this._charts.forEach((n,r)=>{if(!n.running||!n.items.length)return;let i=n.items,a=i.length-1,o=!1,s;for(;a>=0;--a)s=i[a],s._active?(s._total>n.duration&&(n.duration=s._total),s.tick(e),o=!0):(i[a]=i[i.length-1],i.pop());o&&(r.draw(),this._notify(r,n,e,`progress`)),i.length||(n.running=!1,this._notify(r,n,e,`complete`),n.initial=!1),t+=i.length}),this._lastDate=e,t===0&&(this._running=!1)}_getAnims(e){let t=this._charts,n=t.get(e);return n||(n={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},t.set(e,n)),n}listen(e,t,n){this._getAnims(e).listeners[t].push(n)}add(e,t){!t||!t.length||this._getAnims(e).items.push(...t)}has(e){return this._getAnims(e).items.length>0}start(e){let t=this._charts.get(e);t&&(t.running=!0,t.start=Date.now(),t.duration=t.items.reduce((e,t)=>Math.max(e,t._duration),0),this._refresh())}running(e){if(!this._running)return!1;let t=this._charts.get(e);return!(!t||!t.running||!t.items.length)}stop(e){let t=this._charts.get(e);if(!t||!t.items.length)return;let n=t.items,r=n.length-1;for(;r>=0;--r)n[r].cancel();t.items=[],this._notify(e,t,Date.now(),`complete`)}remove(e){return this._charts.delete(e)}},Og=`transparent`,kg={boolean(e,t,n){return n>.5?t:e},color(e,t,n){let r=ym(e||Og),i=r.valid&&ym(t||Og);return i&&i.valid?i.mix(r,n).hexString():t},number(e,t,n){return e+(t-e)*n}},Ag=class{constructor(e,t,n,r){let i=t[n];r=lh([e.to,r,i,e.from]);let a=lh([e.from,i,r]);this._active=!0,this._fn=e.fn||kg[e.type||typeof a],this._easing=_m[e.easing]||_m.linear,this._start=Math.floor(Date.now()+(e.delay||0)),this._duration=this._total=Math.floor(e.duration),this._loop=!!e.loop,this._target=t,this._prop=n,this._from=a,this._to=r,this._promises=void 0}active(){return this._active}update(e,t,n){if(this._active){this._notify(!1);let r=this._target[this._prop],i=n-this._start,a=this._duration-i;this._start=n,this._duration=Math.floor(Math.max(a,e.duration)),this._total+=i,this._loop=!!e.loop,this._to=lh([e.to,t,r,e.from]),this._from=lh([e.from,r,t])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(e){let t=e-this._start,n=this._duration,r=this._prop,i=this._from,a=this._loop,o=this._to,s;if(this._active=i!==o&&(a||t1?2-s:s,s=this._easing(Math.min(1,Math.max(0,s))),this._target[r]=this._fn(i,o,s)}wait(){let e=this._promises||=[];return new Promise((t,n)=>{e.push({res:t,rej:n})})}_notify(e){let t=e?`res`:`rej`,n=this._promises||[];for(let e=0;e{let i=e[r];if(!ep(i))return;let a={};for(let e of t)a[e]=i[e];($f(i.properties)&&i.properties||[r]).forEach(e=>{(e===r||!n.has(e))&&n.set(e,a)})})}_animateOptions(e,t){let n=t.options,r=Ng(e,n);if(!r)return[];let i=this._createAnimations(r,n);return n.$shared&&Mg(e.options.$animations,n).then(()=>{e.options=n},()=>{}),i}_createAnimations(e,t){let n=this._properties,r=[],i=e.$animations||={},a=Object.keys(t),o=Date.now(),s;for(s=a.length-1;s>=0;--s){let c=a[s];if(c.charAt(0)===`$`)continue;if(c===`options`){r.push(...this._animateOptions(e,t));continue}let l=t[c],u=i[c],d=n.get(c);if(u)if(d&&u.active()){u.update(d,l,o);continue}else u.cancel();if(!d||!d.duration){e[c]=l;continue}i[c]=u=new Ag(d,e,c,l),r.push(u)}return r}update(e,t){if(this._properties.size===0){Object.assign(e,t);return}let n=this._createAnimations(e,t);if(n.length)return Dg.add(this._chart,n),!0}};function Mg(e,t){let n=[],r=Object.keys(t);for(let t=0;t0||!n&&t<0)return i.index}return null}function Gg(e,t){let{chart:n,_cachedMeta:r}=e,i=n._stacks||={},{iScale:a,vScale:o,index:s}=r,c=a.axis,l=o.axis,u=Vg(a,o,r),d=t.length,f;for(let e=0;en[e].axis===t).shift()}function qg(e,t){return dh(e,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:`default`,type:`dataset`})}function Jg(e,t,n){return dh(e,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:n,index:t,mode:`default`,type:`data`})}function Yg(e,t){let n=e.controller.index,r=e.vScale&&e.vScale.axis;if(r){t||=e._parsed;for(let e of t){let t=e._stacks;if(!t||t[r]===void 0||t[r][n]===void 0)return;delete t[r][n],t[r]._visualValues!==void 0&&t[r]._visualValues[n]!==void 0&&delete t[r]._visualValues[n]}}}var Xg=e=>e===`reset`||e===`none`,Zg=(e,t)=>t?e:Object.assign({},e),Qg=(e,t,n)=>e&&!t.hidden&&t._stacked&&{keys:Lg(n,!0),values:null},$g=class{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(e,t){this.chart=e,this._ctx=e.ctx,this.index=t,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){let e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=Bg(e.vScale,e),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled(`filler`)&&console.warn(`Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options`)}updateIndex(e){this.index!==e&&Yg(this._cachedMeta),this.index=e}linkScales(){let e=this.chart,t=this._cachedMeta,n=this.getDataset(),r=(e,t,n,r)=>e===`x`?t:e===`r`?r:n,i=t.xAxisID=rp(n.xAxisID,Kg(e,`x`)),a=t.yAxisID=rp(n.yAxisID,Kg(e,`y`)),o=t.rAxisID=rp(n.rAxisID,Kg(e,`r`)),s=t.indexAxis,c=t.iAxisID=r(s,i,a,o),l=t.vAxisID=r(s,a,i,o);t.xScale=this.getScaleForId(i),t.yScale=this.getScaleForId(a),t.rScale=this.getScaleForId(o),t.iScale=this.getScaleForId(c),t.vScale=this.getScaleForId(l)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){let t=this._cachedMeta;return e===t.iScale?t.vScale:t.iScale}reset(){this._update(`reset`)}_destroy(){let e=this._cachedMeta;this._data&&im(this._data,this),e._stacked&&Yg(e)}_dataCheck(){let e=this.getDataset(),t=e.data||=[],n=this._data;if(ep(t)){let e=this._cachedMeta;this._data=zg(t,e)}else if(n!==t){if(n){im(n,this);let e=this._cachedMeta;Yg(e),e._parsed=[]}t&&Object.isExtensible(t)&&rm(t,this),this._syncList=[],this._data=t}}addElements(){let e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){let t=this._cachedMeta,n=this.getDataset(),r=!1;this._dataCheck();let i=t._stacked;t._stacked=Bg(t.vScale,t),t.stack!==n.stack&&(r=!0,Yg(t),t.stack=n.stack),this._resyncElements(e),(r||i!==t._stacked)&&(Gg(this,t._parsed),t._stacked=Bg(t.vScale,t))}configure(){let e=this.chart.config,t=e.datasetScopeKeys(this._type),n=e.getOptionScopes(this.getDataset(),t,!0);this.options=e.createResolver(n,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,t){let{_cachedMeta:n,_data:r}=this,{iScale:i,_stacked:a}=n,o=i.axis,s=e===0&&t===r.length||n._sorted,c=e>0&&n._parsed[e-1],l,u,d;if(this._parsing===!1)n._parsed=r,n._sorted=!0,d=r;else{d=$f(r[e])?this.parseArrayData(n,r,e,t):ep(r[e])?this.parseObjectData(n,r,e,t):this.parsePrimitiveData(n,r,e,t);let i=()=>u[o]===null||c&&u[o]t||u=0;--d)if(!p()){this.updateRangeFromParsed(c,e,f,s);break}}return c}getAllParsedValues(e){let t=this._cachedMeta._parsed,n=[],r,i,a;for(r=0,i=t.length;r=0&&ethis.getContext(n,r,t),u);return p.$shared&&(p.$shared=s,i[a]=Object.freeze(Zg(p,s))),p}_resolveAnimations(e,t,n){let r=this.chart,i=this._cachedDataOpts,a=`animation-${t}`,o=i[a];if(o)return o;let s;if(r.options.animation!==!1){let r=this.chart.config,i=r.datasetAnimationScopeKeys(this._type,t),a=r.getOptionScopes(this.getDataset(),i);s=r.createResolver(a,this.getContext(e,n,t))}let c=new jg(r,s&&s.animations);return s&&s._cacheable&&(i[a]=Object.freeze(c)),c}getSharedOptions(e){if(e.$shared)return this._sharedOptions||=Object.assign({},e)}includeOptions(e,t){return!t||Xg(e)||this.chart._animationsDisabled}_getSharedOptions(e,t){let n=this.resolveDataElementOptions(e,t),r=this._sharedOptions,i=this.getSharedOptions(n),a=this.includeOptions(t,i)||i!==r;return this.updateSharedOptions(i,t,n),{sharedOptions:i,includeOptions:a}}updateElement(e,t,n,r){Xg(r)?Object.assign(e,n):this._resolveAnimations(t,r).update(e,n)}updateSharedOptions(e,t,n){e&&!Xg(t)&&this._resolveAnimations(void 0,t).update(e,n)}_setStyle(e,t,n,r){e.active=r;let i=this.getStyle(t,r);this._resolveAnimations(t,n,r).update(e,{options:!r&&this.getSharedOptions(i)||i})}removeHoverStyle(e,t,n){this._setStyle(e,n,`active`,!1)}setHoverStyle(e,t,n){this._setStyle(e,n,`active`,!0)}_removeDatasetHoverStyle(){let e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,`active`,!1)}_setDatasetHoverStyle(){let e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,`active`,!0)}_resyncElements(e){let t=this._data,n=this._cachedMeta.data;for(let[e,t,n]of this._syncList)this[e](t,n);this._syncList=[];let r=n.length,i=t.length,a=Math.min(i,r);a&&this.parse(0,a),i>r?this._insertElements(r,i-r,e):i{for(e.length+=t,o=e.length-1;o>=a;o--)e[o]=e[o-t]};for(s(i),o=e;oe-t))}return e._cache.$bar}function t_(e){let t=e.iScale,n=e_(t,e.type),r=t._length,i,a,o,s,c=()=>{o===32767||o===-32768||(bp(s)&&(r=Math.min(r,Math.abs(o-s)||r)),s=o)};for(i=0,a=n.length;i0?i[e-1]:null,s=eMath.abs(s)&&(c=s,l=o),t[n.axis]=l,t._custom={barStart:c,barEnd:l,start:i,end:a,min:o,max:s}}function a_(e,t,n,r){return $f(e)?i_(e,t,n,r):t[n.axis]=n.parse(e,r),t}function o_(e,t,n,r){let i=e.iScale,a=e.vScale,o=i.getLabels(),s=i===a,c=[],l,u,d,f;for(l=n,u=n+r;l=n?1:-1):Np(e)}function l_(e){let t,n,r,i,a;return e.horizontal?(t=e.base>e.x,n=`left`,r=`right`):(t=e.basee.controller.options.grouped),i=n.options.stacked,a=[],o=this._cachedMeta.controller.getParsed(t),s=o&&o[n.axis],c=e=>{let t=e._parsed.find(e=>e[n.axis]===s),r=t&&t[e.vScale.axis];if(Qf(r)||isNaN(r))return!0};for(let n of r)if(!(t!==void 0&&c(n))&&((i===!1||a.indexOf(n.stack)===-1||i===void 0&&n.stack===void 0)&&a.push(n.stack),n.index===e))break;return a.length||a.push(void 0),a}_getStackCount(e){return this._getStacks(void 0,e).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){let e=this.chart.scales,t=this.chart.options.indexAxis;return Object.keys(e).filter(n=>e[n].axis===t).shift()}_getAxis(){let e={},t=this.getFirstScaleIdForIndexAxis();for(let n of this.chart.data.datasets)e[rp(this.chart.options.indexAxis===`x`?n.xAxisID:n.yAxisID,t)]=!0;return Object.keys(e)}_getStackIndex(e,t,n){let r=this._getStacks(e,n),i=t===void 0?-1:r.indexOf(t);return i===-1?r.length-1:i}_getRuler(){let e=this.options,t=this._cachedMeta,n=t.iScale,r=[],i,a;for(i=0,a=t.data.length;i=0;--n)t=Math.max(t,e[n].size(this.resolveDataElementOptions(n))/2);return t>0&&t}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart.data.labels||[],{xScale:r,yScale:i}=t,a=this.getParsed(e),o=r.getLabelForValue(a.x),s=i.getLabelForValue(a.y),c=a._custom;return{label:n[e]||``,value:`(`+o+`, `+s+(c?`, `+c:``)+`)`}}update(e){let t=this._cachedMeta.data;this.updateElements(t,0,t.length,e)}updateElements(e,t,n,r){let i=r===`reset`,{iScale:a,vScale:o}=this._cachedMeta,{sharedOptions:s,includeOptions:c}=this._getSharedOptions(t,r),l=a.axis,u=o.axis;for(let d=t;dJp(e,s,c,!0)?1:Math.max(t,t*n,r,r*n),m=(e,t,r)=>Jp(e,s,c,!0)?-1:Math.min(t,t*n,r,r*n),h=p(0,l,d),g=p(kp,u,f),_=m(wp,l,d),v=m(wp+kp,u,f);r=(h-_)/2,i=(g-v)/2,a=-(h+_)/2,o=-(g+v)/2}return{ratioX:r,ratioY:i,offsetX:a,offsetY:o}}var v_=class extends $g{static id=`doughnut`;static defaults={datasetElementType:!1,dataElementType:`arc`,animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:`number`,properties:[`circumference`,`endAngle`,`innerRadius`,`outerRadius`,`startAngle`,`x`,`y`,`offset`,`borderWidth`,`spacing`]}},cutout:`50%`,rotation:0,circumference:360,radius:`100%`,spacing:0,indexAxis:`r`};static descriptors={_scriptable:e=>e!==`spacing`,_indexable:e=>e!==`spacing`&&!e.startsWith(`borderDash`)&&!e.startsWith(`hoverBorderDash`)};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){let t=e.data,{labels:{pointStyle:n,textAlign:r,color:i,useBorderRadius:a,borderRadius:o}}=e.legend.options;return t.labels.length&&t.datasets.length?t.labels.map((t,s)=>{let c=e.getDatasetMeta(0).controller.getStyle(s);return{text:t,fillStyle:c.backgroundColor,fontColor:i,hidden:!e.getDataVisibility(s),lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:c.borderWidth,strokeStyle:c.borderColor,textAlign:r,pointStyle:n,borderRadius:a&&(o||c.borderRadius),index:s}}):[]}},onClick(e,t,n){n.chart.toggleDataVisibility(t.index),n.chart.update()}}}};constructor(e,t){super(e,t),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(e,t){let n=this.getDataset().data,r=this._cachedMeta;if(this._parsing===!1)r._parsed=n;else{let i=e=>+n[e];if(ep(n[e])){let{key:e=`value`}=this._parsing;i=t=>+vp(n[t],e)}let a,o;for(a=e,o=e+t;a0&&!isNaN(e)?Math.abs(e)/t*Tp:0}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart,r=n.data.labels||[],i=Dm(t._parsed[e],n.options.locale);return{label:r[e]||``,value:i}}getMaxBorderWidth(e){let t=0,n=this.chart,r,i,a,o,s;if(!e){for(r=0,i=n.data.datasets.length;r0&&this.getParsed(t-1);for(let n=0;n=_){v.skip=!0;continue}let b=this.getParsed(n),x=Qf(b[f]),S=v[d]=a.getPixelForValue(b[d],n),C=v[f]=i||x?o.getBasePixel():o.getPixelForValue(s?this.applyStack(o,b,s):b[f],n);v.skip=isNaN(S)||isNaN(C)||x,v.stop=n>0&&Math.abs(b[d]-y[d])>h,m&&(v.parsed=b,v.raw=c.data[n]),u&&(v.options=l||this.resolveDataElementOptions(n,p.active?`active`:r)),g||this.updateElement(p,n,v,r),y=b}}getMaxOverflow(){let e=this._cachedMeta,t=e.dataset,n=t.options&&t.options.borderWidth||0,r=e.data||[];if(!r.length)return n;let i=r[0].size(this.resolveDataElementOptions(0)),a=r[r.length-1].size(this.resolveDataElementOptions(r.length-1));return Math.max(n,i,a)/2}draw(){let e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}},b_=class extends $g{static id=`polarArea`;static defaults={dataElementType:`arc`,animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:`number`,properties:[`x`,`y`,`startAngle`,`endAngle`,`innerRadius`,`outerRadius`]}},indexAxis:`r`,startAngle:0};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){let t=e.data;if(t.labels.length&&t.datasets.length){let{labels:{pointStyle:n,color:r}}=e.legend.options;return t.labels.map((t,i)=>{let a=e.getDatasetMeta(0).controller.getStyle(i);return{text:t,fillStyle:a.backgroundColor,strokeStyle:a.borderColor,fontColor:r,lineWidth:a.borderWidth,pointStyle:n,hidden:!e.getDataVisibility(i),index:i}})}return[]}},onClick(e,t,n){n.chart.toggleDataVisibility(t.index),n.chart.update()}}},scales:{r:{type:`radialLinear`,angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(e,t){super(e,t),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart,r=n.data.labels||[],i=Dm(t._parsed[e].r,n.options.locale);return{label:r[e]||``,value:i}}parseObjectData(e,t,n,r){return jh.bind(this)(e,t,n,r)}update(e){let t=this._cachedMeta.data;this._updateRadius(),this.updateElements(t,0,t.length,e)}getMinMax(){let e=this._cachedMeta,t={min:1/0,max:-1/0};return e.data.forEach((e,n)=>{let r=this.getParsed(n).r;!isNaN(r)&&this.chart.getDataVisibility(n)&&(rt.max&&(t.max=r))}),t}_updateRadius(){let e=this.chart,t=e.chartArea,n=e.options,r=Math.min(t.right-t.left,t.bottom-t.top),i=Math.max(r/2,0),a=(i-Math.max(n.cutoutPercentage?i/100*n.cutoutPercentage:1,0))/e.getVisibleDatasetCount();this.outerRadius=i-a*this.index,this.innerRadius=this.outerRadius-a}updateElements(e,t,n,r){let i=r===`reset`,a=this.chart,o=a.options.animation,s=this._cachedMeta.rScale,c=s.xCenter,l=s.yCenter,u=s.getIndexAngle(0)-.5*wp,d=u,f,p=360/this.countVisibleElements();for(f=0;f{!isNaN(this.getParsed(n).r)&&this.chart.getDataVisibility(n)&&t++}),t}_computeAngle(e,t,n){return this.chart.getDataVisibility(e)?Vp(this.resolveDataElementOptions(e,t).angle||n):0}},x_=Object.freeze({__proto__:null,BarController:h_,BubbleController:g_,DoughnutController:v_,LineController:y_,PieController:class extends v_{static id=`pie`;static defaults={cutout:0,rotation:0,circumference:360,radius:`100%`}},PolarAreaController:b_,RadarController:class extends $g{static id=`radar`;static defaults={datasetElementType:`line`,dataElementType:`point`,indexAxis:`r`,showLine:!0,elements:{line:{fill:`start`}}};static overrides={aspectRatio:1,scales:{r:{type:`radialLinear`}}};getLabelAndValue(e){let t=this._cachedMeta.vScale,n=this.getParsed(e);return{label:t.getLabels()[e],value:``+t.getLabelForValue(n[t.axis])}}parseObjectData(e,t,n,r){return jh.bind(this)(e,t,n,r)}update(e){let t=this._cachedMeta,n=t.dataset,r=t.data||[],i=t.iScale.getLabels();if(n.points=r,e!==`resize`){let t=this.resolveDatasetElementOptions(e);this.options.showLine||(t.borderWidth=0);let a={_loop:!0,_fullLoop:i.length===r.length,options:t};this.updateElement(n,void 0,a,e)}this.updateElements(r,0,r.length,e)}updateElements(e,t,n,r){let i=this._cachedMeta.rScale,a=r===`reset`;for(let o=t;o0&&this.getParsed(t-1);for(let l=t;l0&&Math.abs(n[f]-v[f])>g,h&&(m.parsed=n,m.raw=c.data[l]),d&&(m.options=u||this.resolveDataElementOptions(l,t.active?`active`:r)),_||this.updateElement(t,l,m,r),v=n}this.updateSharedOptions(u,r,l)}getMaxOverflow(){let e=this._cachedMeta,t=e.data||[];if(!this.options.showLine){let e=0;for(let n=t.length-1;n>=0;--n)e=Math.max(e,t[n].size(this.resolveDataElementOptions(n))/2);return e>0&&e}let n=e.dataset,r=n.options&&n.options.borderWidth||0;if(!t.length)return r;let i=t[0].size(this.resolveDataElementOptions(0)),a=t[t.length-1].size(this.resolveDataElementOptions(t.length-1));return Math.max(r,i,a)/2}}});function S_(){throw Error(`This method is not implemented: Check that a complete date adapter is provided.`)}var C_={_date:class e{static override(t){Object.assign(e.prototype,t)}options;constructor(e){this.options=e||{}}init(){}formats(){return S_()}parse(){return S_()}format(){return S_()}add(){return S_()}diff(){return S_()}startOf(){return S_()}endOf(){return S_()}}};function w_(e,t,n,r){let{controller:i,data:a,_sorted:o}=e,s=i._cachedMeta.iScale,c=e.dataset&&e.dataset.options?e.dataset.options.spanGaps:null;if(s&&t===s.axis&&t!==`r`&&o&&a.length){let o=s._reversePixels?em:$p;if(!r){let r=o(a,t,n);if(c){let{vScale:t}=i._cachedMeta,{_parsed:n}=e,a=n.slice(0,r.lo+1).reverse().findIndex(e=>!Qf(e[t.axis]));r.lo-=Math.max(0,a);let o=n.slice(r.hi).findIndex(e=>!Qf(e[t.axis]));r.hi+=Math.max(0,o)}return r}else if(i._sharedOptions){let e=a[0],r=typeof e.getRange==`function`&&e.getRange(t);if(r){let e=o(a,t,n-r),i=o(a,t,n+r);return{lo:e.lo,hi:i.hi}}}}return{lo:0,hi:a.length-1}}function T_(e,t,n,r,i){let a=e.getSortedVisibleDatasetMetas(),o=n[t];for(let e=0,n=a.length;e{e[o]&&e[o](t[n],i)&&(a.push({element:e,datasetIndex:r,index:c}),s||=e.inRange(t.x,t.y,i))}),r&&!s?[]:a}var M_={evaluateInteractionItems:T_,modes:{index(e,t,n,r){let i=Zh(t,e),a=n.axis||`x`,o=n.includeInvisible||!1,s=n.intersect?D_(e,i,a,r,o):A_(e,i,a,!1,r,o),c=[];return s.length?(e.getSortedVisibleDatasetMetas().forEach(e=>{let t=s[0].index,n=e.data[t];n&&!n.skip&&c.push({element:n,datasetIndex:e.index,index:t})}),c):[]},dataset(e,t,n,r){let i=Zh(t,e),a=n.axis||`xy`,o=n.includeInvisible||!1,s=n.intersect?D_(e,i,a,r,o):A_(e,i,a,!1,r,o);if(s.length>0){let t=s[0].datasetIndex,n=e.getDatasetMeta(t).data;s=[];for(let e=0;ee.pos===t)}function F_(e,t){return e.filter(e=>N_.indexOf(e.pos)===-1&&e.box.axis===t)}function I_(e,t){return e.sort((e,n)=>{let r=t?n:e,i=t?e:n;return r.weight===i.weight?r.index-i.index:r.weight-i.weight})}function L_(e){let t=[],n,r,i,a,o,s;for(n=0,r=(e||[]).length;ne.box.fullSize),!0),r=I_(P_(t,`left`),!0),i=I_(P_(t,`right`)),a=I_(P_(t,`top`),!0),o=I_(P_(t,`bottom`)),s=F_(t,`x`),c=F_(t,`y`);return{fullSize:n,leftAndTop:r.concat(a),rightAndBottom:i.concat(c).concat(o).concat(s),chartArea:P_(t,`chartArea`),vertical:r.concat(i).concat(c),horizontal:a.concat(o).concat(s)}}function V_(e,t,n,r){return Math.max(e[n],t[n])+Math.max(e[r],t[r])}function H_(e,t){e.top=Math.max(e.top,t.top),e.left=Math.max(e.left,t.left),e.bottom=Math.max(e.bottom,t.bottom),e.right=Math.max(e.right,t.right)}function U_(e,t,n,r){let{pos:i,box:a}=n,o=e.maxPadding;if(!ep(i)){n.size&&(e[i]-=n.size);let t=r[n.stack]||{size:0,count:1};t.size=Math.max(t.size,n.horizontal?a.height:a.width),n.size=t.size/t.count,e[i]+=n.size}a.getPadding&&H_(o,a.getPadding());let s=Math.max(0,t.outerWidth-V_(o,e,`left`,`right`)),c=Math.max(0,t.outerHeight-V_(o,e,`top`,`bottom`)),l=s!==e.w,u=c!==e.h;return e.w=s,e.h=c,n.horizontal?{same:l,other:u}:{same:u,other:l}}function W_(e){let t=e.maxPadding;function n(n){let r=Math.max(t[n]-e[n],0);return e[n]+=r,r}e.y+=n(`top`),e.x+=n(`left`),n(`right`),n(`bottom`)}function G_(e,t){let n=t.maxPadding;function r(e){let r={left:0,top:0,right:0,bottom:0};return e.forEach(e=>{r[e]=Math.max(t[e],n[e])}),r}return r(e?[`left`,`right`]:[`top`,`bottom`])}function K_(e,t,n,r){let i=[],a,o,s,c,l,u;for(a=0,o=e.length,l=0;a{typeof e.beforeLayout==`function`&&e.beforeLayout()});let u=c.reduce((e,t)=>t.box.options&&t.box.options.display===!1?e:e+1,0)||1,d=Object.freeze({outerWidth:t,outerHeight:n,padding:i,availableWidth:a,availableHeight:o,vBoxMaxWidth:a/2/u,hBoxMaxHeight:o/2}),f=Object.assign({},i);H_(f,sh(r));let p=Object.assign({maxPadding:f,w:a,h:o,x:i.left,y:i.top},i),m=z_(c.concat(l),d);K_(s.fullSize,p,d,m),K_(c,p,d,m),K_(l,p,d,m)&&K_(c,p,d,m),W_(p),J_(s.leftAndTop,p,d,m),p.x+=p.w,p.y+=p.h,J_(s.rightAndBottom,p,d,m),e.chartArea={left:p.left,top:p.top,right:p.left+p.w,bottom:p.top+p.h,height:p.h,width:p.w},sp(s.chartArea,t=>{let n=t.box;Object.assign(n,e.chartArea),n.update(p.w,p.h,{left:0,top:0,right:0,bottom:0})})}},X_=class{acquireContext(e,t){}releaseContext(e){return!1}addEventListener(e,t,n){}removeEventListener(e,t,n){}getDevicePixelRatio(){return 1}getMaximumSize(e,t,n,r){return t=Math.max(0,t||e.width),n||=e.height,{width:t,height:Math.max(0,r?Math.floor(t/r):n)}}isAttached(e){return!0}updateConfig(e){}},Z_=class extends X_{acquireContext(e){return e&&e.getContext&&e.getContext(`2d`)||null}updateConfig(e){e.options.animation=!1}},Q_=`$chartjs`,$_={touchstart:`mousedown`,touchmove:`mousemove`,touchend:`mouseup`,pointerenter:`mouseenter`,pointerdown:`mousedown`,pointermove:`mousemove`,pointerup:`mouseup`,pointerleave:`mouseout`,pointerout:`mouseout`},ev=e=>e===null||e===``;function tv(e,t){let n=e.style,r=e.getAttribute(`height`),i=e.getAttribute(`width`);if(e[Q_]={initial:{height:r,width:i,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||`block`,n.boxSizing=n.boxSizing||`border-box`,ev(i)){let t=rg(e,`width`);t!==void 0&&(e.width=t)}if(ev(r))if(e.style.height===``)e.height=e.width/(t||2);else{let t=rg(e,`height`);t!==void 0&&(e.height=t)}return e}var nv=ng?{passive:!0}:!1;function rv(e,t,n){e&&e.addEventListener(t,n,nv)}function iv(e,t,n){e&&e.canvas&&e.canvas.removeEventListener(t,n,nv)}function av(e,t){let n=$_[e.type]||e.type,{x:r,y:i}=Zh(e,t);return{type:n,chart:t,native:e,x:r===void 0?null:r,y:i===void 0?null:i}}function ov(e,t){for(let n of e)if(n===t||n.contains(t))return!0}function sv(e,t,n){let r=e.canvas,i=new MutationObserver(e=>{let t=!1;for(let n of e)t||=ov(n.addedNodes,r),t&&=!ov(n.removedNodes,r);t&&n()});return i.observe(document,{childList:!0,subtree:!0}),i}function cv(e,t,n){let r=e.canvas,i=new MutationObserver(e=>{let t=!1;for(let n of e)t||=ov(n.removedNodes,r),t&&=!ov(n.addedNodes,r);t&&n()});return i.observe(document,{childList:!0,subtree:!0}),i}var lv=new Map,uv=0;function dv(){let e=window.devicePixelRatio;e!==uv&&(uv=e,lv.forEach((t,n)=>{n.currentDevicePixelRatio!==e&&t()}))}function fv(e,t){lv.size||window.addEventListener(`resize`,dv),lv.set(e,t)}function pv(e){lv.delete(e),lv.size||window.removeEventListener(`resize`,dv)}function mv(e,t,n){let r=e.canvas,i=r&&Uh(r);if(!i)return;let a=sm((e,t)=>{let r=i.clientWidth;n(e,t),r{let t=e[0],n=t.contentRect.width,r=t.contentRect.height;n===0&&r===0||a(n,r)});return o.observe(i),fv(e,a),o}function hv(e,t,n){n&&n.disconnect(),t===`resize`&&pv(e)}function gv(e,t,n){let r=e.canvas,i=sm(t=>{e.ctx!==null&&n(av(t,e))},e);return rv(r,t,i),i}var _v=class extends X_{acquireContext(e,t){let n=e&&e.getContext&&e.getContext(`2d`);return n&&n.canvas===e?(tv(e,t),n):null}releaseContext(e){let t=e.canvas;if(!t[Q_])return!1;let n=t[Q_].initial;[`height`,`width`].forEach(e=>{let r=n[e];Qf(r)?t.removeAttribute(e):t.setAttribute(e,r)});let r=n.style||{};return Object.keys(r).forEach(e=>{t.style[e]=r[e]}),t.width=t.width,delete t[Q_],!0}addEventListener(e,t,n){this.removeEventListener(e,t);let r=e.$proxies||={};r[t]=({attach:sv,detach:cv,resize:mv}[t]||gv)(e,t,n)}removeEventListener(e,t){let n=e.$proxies||={},r=n[t];r&&(({attach:hv,detach:hv,resize:hv}[t]||iv)(e,t,r),n[t]=void 0)}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(e,t,n,r){return eg(e,t,n,r)}isAttached(e){let t=e&&Uh(e);return!!(t&&t.isConnected)}};function vv(e){return!Hh()||typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas?Z_:_v}var yv=class{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(e){let{x:t,y:n}=this.getProps([`x`,`y`],e);return{x:t,y:n}}hasValue(){return Rp(this.x)&&Rp(this.y)}getProps(e,t){let n=this.$animations;if(!t||!n)return this;let r={};return e.forEach(e=>{r[e]=n[e]&&n[e].active()?n[e]._to:this[e]}),r}};function bv(e,t){let n=e.options.ticks,r=xv(e),i=Math.min(n.maxTicksLimit||r,r),a=n.major.enabled?Cv(t):[],o=a.length,s=a[0],c=a[o-1],l=[];if(o>i)return wv(t,l,a,o/i),l;let u=Sv(a,t,i);if(o>0){let e,n,r=o>1?Math.round((c-s)/(o-1)):null;for(Tv(t,l,u,Qf(r)?0:s-r,s),e=0,n=o-1;ei)return t}return Math.max(i,1)}function Cv(e){let t=[],n,r;for(n=0,r=e.length;ne===`left`?`right`:e===`right`?`left`:e,Ov=(e,t,n)=>t===`top`||t===`left`?e[t]+n:e[t]-n,kv=(e,t)=>Math.min(t||e,e);function Av(e,t){let n=[],r=e.length/t,i=e.length,a=0;for(;ao+s)))return c}function Mv(e,t){sp(e,e=>{let n=e.gc,r=n.length/2,i;if(r>t){for(i=0;in?n:t,n=r&&t>n?t:n,{min:np(t,np(n,t)),max:np(n,np(t,n))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){let e=this.chart.data;return this.options.labels||(this.isHorizontal()?e.xLabels:e.yLabels)||e.labels||[]}getLabelItems(e=this.chart.chartArea){return this._labelItems||=this._computeLabelItems(e)}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){op(this.options.beforeUpdate,[this])}update(e,t,n){let{beginAtZero:r,grace:i,ticks:a}=this.options,o=a.sampleSize;this.beforeUpdate(),this.maxWidth=e,this.maxHeight=t,this._margins=n=Object.assign({left:0,right:0,top:0,bottom:0},n),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+n.left+n.right:this.height+n.top+n.bottom,this._dataLimitsCached||=(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=uh(this,i,r),!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();let s=o=i||n<=1||!this.isHorizontal()){this.labelRotation=r;return}let l=this._getLabelSizes(),u=l.widest.width,d=l.highest.height,f=Yp(this.chart.width-u,0,this.maxWidth);o=e.offset?this.maxWidth/n:f/(n-1),u+6>o&&(o=f/(n-(e.offset?.5:1)),s=this.maxHeight-Nv(e.grid)-t.padding-Pv(e.title,this.chart.options.font),c=Math.sqrt(u*u+d*d),a=Hp(Math.min(Math.asin(Yp((l.highest.height+6)/o,-1,1)),Math.asin(Yp(s/c,-1,1))-Math.asin(Yp(d/c,-1,1)))),a=Math.max(r,Math.min(i,a))),this.labelRotation=a}afterCalculateLabelRotation(){op(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){op(this.options.beforeFit,[this])}fit(){let e={width:0,height:0},{chart:t,options:{ticks:n,title:r,grid:i}}=this,a=this._isVisible(),o=this.isHorizontal();if(a){let a=Pv(r,t.options.font);if(o?(e.width=this.maxWidth,e.height=Nv(i)+a):(e.height=this.maxHeight,e.width=Nv(i)+a),n.display&&this.ticks.length){let{first:t,last:r,widest:i,highest:a}=this._getLabelSizes(),s=n.padding*2,c=Vp(this.labelRotation),l=Math.cos(c),u=Math.sin(c);if(o){let t=n.mirror?0:u*i.width+l*a.height;e.height=Math.min(this.maxHeight,e.height+t+s)}else{let t=n.mirror?0:l*i.width+u*a.height;e.width=Math.min(this.maxWidth,e.width+t+s)}this._calculatePadding(t,r,u,l)}}this._handleMargins(),o?(this.width=this._length=t.width-this._margins.left-this._margins.right,this.height=e.height):(this.width=e.width,this.height=this._length=t.height-this._margins.top-this._margins.bottom)}_calculatePadding(e,t,n,r){let{ticks:{align:i,padding:a},position:o}=this.options,s=this.labelRotation!==0,c=o!==`top`&&this.axis===`x`;if(this.isHorizontal()){let o=this.getPixelForTick(0)-this.left,l=this.right-this.getPixelForTick(this.ticks.length-1),u=0,d=0;s?c?(u=r*e.width,d=n*t.height):(u=n*e.height,d=r*t.width):i===`start`?d=t.width:i===`end`?u=e.width:i!==`inner`&&(u=e.width/2,d=t.width/2),this.paddingLeft=Math.max((u-o+a)*this.width/(this.width-o),0),this.paddingRight=Math.max((d-l+a)*this.width/(this.width-l),0)}else{let n=t.height/2,r=e.height/2;i===`start`?(n=0,r=e.height):i===`end`&&(n=t.height,r=0),this.paddingTop=n+a,this.paddingBottom=r+a}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){op(this.options.afterFit,[this])}isHorizontal(){let{axis:e,position:t}=this.options;return t===`top`||t===`bottom`||e===`x`}isFullSize(){return this.options.fullSize}_convertTicksToLabels(e){this.beforeTickToLabelConversion(),this.generateTickLabels(e);let t,n;for(t=0,n=e.length;t({width:a[e]||0,height:o[e]||0});return{first:C(0),last:C(t-1),widest:C(x),highest:C(S),widths:a,heights:o}}getLabelForValue(e){return e}getPixelForValue(e,t){return NaN}getValueForPixel(e){}getPixelForTick(e){let t=this.ticks;return e<0||e>t.length-1?null:this.getPixelForValue(t[e].value)}getPixelForDecimal(e){this._reversePixels&&(e=1-e);let t=this._startPixel+e*this._length;return Xp(this._alignToPixels?Bm(this.chart,t,0):t)}getDecimalForPixel(e){let t=(e-this._startPixel)/this._length;return this._reversePixels?1-t:t}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){let{min:e,max:t}=this;return e<0&&t<0?t:e>0&&t>0?e:0}getContext(e){let t=this.ticks||[];if(e>=0&&eo*r?o/n:s/r:s*r0:!!e}_computeGridLineItems(e){let t=this.axis,n=this.chart,r=this.options,{grid:i,position:a,border:o}=r,s=i.offset,c=this.isHorizontal(),l=this.ticks.length+ +!!s,u=Nv(i),d=[],f=o.setContext(this.getContext()),p=f.display?f.width:0,m=p/2,h=function(e){return Bm(n,e,p)},g,_,v,y,b,x,S,C,w,T,E,ee;if(a===`top`)g=h(this.bottom),x=this.bottom-u,C=g-m,T=h(e.top)+m,ee=e.bottom;else if(a===`bottom`)g=h(this.top),T=e.top,ee=h(e.bottom)-m,x=g+m,C=this.top+u;else if(a===`left`)g=h(this.right),b=this.right-u,S=g-m,w=h(e.left)+m,E=e.right;else if(a===`right`)g=h(this.left),w=e.left,E=h(e.right)-m,b=g+m,S=this.left+u;else if(t===`x`){if(a===`center`)g=h((e.top+e.bottom)/2+.5);else if(ep(a)){let e=Object.keys(a)[0],t=a[e];g=h(this.chart.scales[e].getPixelForValue(t))}T=e.top,ee=e.bottom,x=g+m,C=x+u}else if(t===`y`){if(a===`center`)g=h((e.left+e.right)/2);else if(ep(a)){let e=Object.keys(a)[0],t=a[e];g=h(this.chart.scales[e].getPixelForValue(t))}b=g-m,S=b-u,w=e.left,E=e.right}let te=rp(r.ticks.maxTicksLimit,l),ne=Math.max(1,Math.ceil(l/te));for(_=0;_0&&(a-=r/2);break}f={left:a,top:i,width:r+t.width,height:n+t.height,color:e.backdropColor}}h.push({label:y,font:w,textOffset:ee,options:{rotation:m,color:n,strokeColor:s,strokeWidth:l,textAlign:d,textBaseline:te,translation:[b,x],backdrop:f}})}return h}_getXAxisLabelAlignment(){let{position:e,ticks:t}=this.options;if(-Vp(this.labelRotation))return e===`top`?`left`:`right`;let n=`center`;return t.align===`start`?n=`left`:t.align===`end`?n=`right`:t.align===`inner`&&(n=`inner`),n}_getYAxisLabelAlignment(e){let{position:t,ticks:{crossAlign:n,mirror:r,padding:i}}=this.options,a=this._getLabelSizes(),o=e+i,s=a.widest.width,c,l;return t===`left`?r?(l=this.right+i,n===`near`?c=`left`:n===`center`?(c=`center`,l+=s/2):(c=`right`,l+=s)):(l=this.right-o,n===`near`?c=`right`:n===`center`?(c=`center`,l-=s/2):(c=`left`,l=this.left)):t===`right`?r?(l=this.left+i,n===`near`?c=`right`:n===`center`?(c=`center`,l-=s/2):(c=`left`,l-=s)):(l=this.left+o,n===`near`?c=`left`:n===`center`?(c=`center`,l+=s/2):(c=`right`,l=this.right)):c=`right`,{textAlign:c,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;let e=this.chart,t=this.options.position;if(t===`left`||t===`right`)return{top:0,left:this.left,bottom:e.height,right:this.right};if(t===`top`||t===`bottom`)return{top:this.top,left:0,bottom:this.bottom,right:e.width}}drawBackground(){let{ctx:e,options:{backgroundColor:t},left:n,top:r,width:i,height:a}=this;t&&(e.save(),e.fillStyle=t,e.fillRect(n,r,i,a),e.restore())}getLineWidthForValue(e){let t=this.options.grid;if(!this._isVisible()||!t.display)return 0;let n=this.ticks.findIndex(t=>t.value===e);return n>=0?t.setContext(this.getContext(n)).lineWidth:0}drawGrid(e){let t=this.options.grid,n=this.ctx,r=this._gridLineItems||=this._computeGridLineItems(e),i,a,o=(e,t,r)=>{!r.width||!r.color||(n.save(),n.lineWidth=r.width,n.strokeStyle=r.color,n.setLineDash(r.borderDash||[]),n.lineDashOffset=r.borderDashOffset,n.beginPath(),n.moveTo(e.x,e.y),n.lineTo(t.x,t.y),n.stroke(),n.restore())};if(t.display)for(i=0,a=r.length;i{this.draw(e)}}]:[{z:r,draw:e=>{this.drawBackground(),this.drawGrid(e),this.drawTitle()}},{z:i,draw:()=>{this.drawBorder()}},{z:n,draw:e=>{this.drawLabels(e)}}]}getMatchingVisibleMetas(e){let t=this.chart.getSortedVisibleDatasetMetas(),n=this.axis+`AxisID`,r=[],i,a;for(i=0,a=t.length;i{let r=n.split(`.`),i=r.pop(),a=[e].concat(r).join(`.`),o=t[n].split(`.`),s=o.pop(),c=o.join(`.`);Im.route(a,i,c,s)})}function Uv(e){return`id`in e&&`defaults`in e}var Wv=new class{constructor(){this.controllers=new Bv($g,`datasets`,!0),this.elements=new Bv(yv,`elements`),this.plugins=new Bv(Object,`plugins`),this.scales=new Bv(zv,`scales`),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...e){this._each(`register`,e)}remove(...e){this._each(`unregister`,e)}addControllers(...e){this._each(`register`,e,this.controllers)}addElements(...e){this._each(`register`,e,this.elements)}addPlugins(...e){this._each(`register`,e,this.plugins)}addScales(...e){this._each(`register`,e,this.scales)}getController(e){return this._get(e,this.controllers,`controller`)}getElement(e){return this._get(e,this.elements,`element`)}getPlugin(e){return this._get(e,this.plugins,`plugin`)}getScale(e){return this._get(e,this.scales,`scale`)}removeControllers(...e){this._each(`unregister`,e,this.controllers)}removeElements(...e){this._each(`unregister`,e,this.elements)}removePlugins(...e){this._each(`unregister`,e,this.plugins)}removeScales(...e){this._each(`unregister`,e,this.scales)}_each(e,t,n){[...t].forEach(t=>{let r=n||this._getRegistryForType(t);n||r.isForType(t)||r===this.plugins&&t.id?this._exec(e,r,t):sp(t,t=>{let r=n||this._getRegistryForType(t);this._exec(e,r,t)})})}_exec(e,t,n){let r=yp(e);op(n[`before`+r],[],n),t[e](n),op(n[`after`+r],[],n)}_getRegistryForType(e){for(let t=0;te.filter(e=>!t.some(t=>e.plugin.id===t.plugin.id));this._notify(r(t,n),e,`stop`),this._notify(r(n,t),e,`start`)}};function Kv(e){let t={},n=[],r=Object.keys(Wv.plugins.items);for(let e=0;e1&&$v(e[0].toLowerCase());if(t)return t}throw Error(`Cannot determine type of '${e}' axis. Please provide 'axis' or 'position' option.`)}function ny(e,t,n){if(n[t+`AxisID`]===e)return{axis:t}}function ry(e,t){if(t.data&&t.data.datasets){let n=t.data.datasets.filter(t=>t.xAxisID===e||t.yAxisID===e);if(n.length)return ny(e,`x`,n[0])||ny(e,`y`,n[0])}return{}}function iy(e,t){let n=Mm[e.type]||{scales:{}},r=t.scales||{},i=Xv(e.type,t),a=Object.create(null);return Object.keys(r).forEach(t=>{let o=r[t];if(!ep(o))return console.error(`Invalid scale configuration for scale: ${t}`);if(o._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);let s=ty(t,o,ry(t,e),Im.scales[o.type]),c=Qv(s,i),l=n.scales||{};a[t]=pp(Object.create(null),[{axis:s},o,l[s],l[c]])}),e.data.datasets.forEach(n=>{let i=n.type||e.type,o=n.indexAxis||Xv(i,t),s=(Mm[i]||{}).scales||{};Object.keys(s).forEach(e=>{let t=Zv(e,o),i=n[t+`AxisID`]||t;a[i]=a[i]||Object.create(null),pp(a[i],[{axis:t},r[i],s[e]])})}),Object.keys(a).forEach(e=>{let t=a[e];pp(t,[Im.scales[t.type],Im.scale])}),a}function ay(e){let t=e.options||={};t.plugins=rp(t.plugins,{}),t.scales=iy(e,t)}function oy(e){return e||={},e.datasets=e.datasets||[],e.labels=e.labels||[],e}function sy(e){return e||={},e.data=oy(e.data),ay(e),e}var cy=new Map,ly=new Set;function uy(e,t){let n=cy.get(e);return n||(n=t(),cy.set(e,n),ly.add(n)),n}var dy=(e,t,n)=>{let r=vp(t,n);r!==void 0&&e.add(r)},fy=class{constructor(e){this._config=sy(e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(e){this._config.type=e}get data(){return this._config.data}set data(e){this._config.data=oy(e)}get options(){return this._config.options}set options(e){this._config.options=e}get plugins(){return this._config.plugins}update(){let e=this._config;this.clearCache(),ay(e)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(e){return uy(e,()=>[[`datasets.${e}`,``]])}datasetAnimationScopeKeys(e,t){return uy(`${e}.transition.${t}`,()=>[[`datasets.${e}.transitions.${t}`,`transitions.${t}`],[`datasets.${e}`,``]])}datasetElementScopeKeys(e,t){return uy(`${e}-${t}`,()=>[[`datasets.${e}.elements.${t}`,`datasets.${e}`,`elements.${t}`,``]])}pluginScopeKeys(e){let t=e.id,n=this.type;return uy(`${n}-plugin-${t}`,()=>[[`plugins.${t}`,...e.additionalOptionScopes||[]]])}_cachedScopes(e,t){let n=this._scopeCache,r=n.get(e);return(!r||t)&&(r=new Map,n.set(e,r)),r}getOptionScopes(e,t,n){let{options:r,type:i}=this,a=this._cachedScopes(e,n),o=a.get(t);if(o)return o;let s=new Set;t.forEach(t=>{e&&(s.add(e),t.forEach(t=>dy(s,e,t))),t.forEach(e=>dy(s,r,e)),t.forEach(e=>dy(s,Mm[i]||{},e)),t.forEach(e=>dy(s,Im,e)),t.forEach(e=>dy(s,Nm,e))});let c=Array.from(s);return c.length===0&&c.push(Object.create(null)),ly.has(t)&&a.set(t,c),c}chartOptionScopes(){let{options:e,type:t}=this;return[e,Mm[t]||{},Im.datasets[t]||{},{type:t},Im,Nm]}resolveNamedOptions(e,t,n,r=[``]){let i={$shared:!0},{resolver:a,subPrefixes:o}=py(this._resolverCache,e,r),s=a;if(hy(a,t)){i.$shared=!1,n=xp(n)?n():n;let t=this.createResolver(e,n,o);s=ph(a,n,t)}for(let e of t)i[e]=s[e];return i}createResolver(e,t,n=[``],r){let{resolver:i}=py(this._resolverCache,e,n);return ep(t)?ph(i,t,void 0,r):i}};function py(e,t,n){let r=e.get(t);r||(r=new Map,e.set(t,r));let i=n.join(),a=r.get(i);return a||(a={resolver:fh(t,n),subPrefixes:n.filter(e=>!e.toLowerCase().includes(`hover`))},r.set(i,a)),a}var my=e=>ep(e)&&Object.getOwnPropertyNames(e).some(t=>xp(e[t]));function hy(e,t){let{isScriptable:n,isIndexable:r}=mh(e);for(let i of t){let t=n(i),a=r(i),o=(a||t)&&e[i];if(t&&(xp(o)||my(o))||a&&$f(o))return!0}return!1}var gy=`4.5.1`,_y=[`top`,`bottom`,`left`,`right`,`chartArea`];function vy(e,t){return e===`top`||e===`bottom`||_y.indexOf(e)===-1&&t===`x`}function yy(e,t){return function(n,r){return n[e]===r[e]?n[t]-r[t]:n[e]-r[e]}}function by(e){let t=e.chart,n=t.options.animation;t.notifyPlugins(`afterRender`),op(n&&n.onComplete,[e],t)}function xy(e){let t=e.chart,n=t.options.animation;op(n&&n.onProgress,[e],t)}function Sy(e){return Hh()&&typeof e==`string`?e=document.getElementById(e):e&&e.length&&(e=e[0]),e&&e.canvas&&(e=e.canvas),e}var Cy={},wy=e=>{let t=Sy(e);return Object.values(Cy).filter(e=>e.canvas===t).pop()};function Ty(e,t,n){let r=Object.keys(e);for(let i of r){let r=+i;if(r>=t){let a=e[i];delete e[i],(n>0||r>t)&&(e[r+n]=a)}}}function Ey(e,t,n,r){return!n||e.type===`mouseout`?null:r?t:e}var Dy=class{static defaults=Im;static instances=Cy;static overrides=Mm;static registry=Wv;static version=gy;static getChart=wy;static register(...e){Wv.add(...e),Oy()}static unregister(...e){Wv.remove(...e),Oy()}constructor(e,t){let n=this.config=new fy(t),r=Sy(e),i=wy(r);if(i)throw Error(`Canvas is already in use. Chart with ID '`+i.id+`' must be destroyed before the canvas with ID '`+i.canvas.id+`' can be reused.`);let a=n.createResolver(n.chartOptionScopes(),this.getContext());this.platform=new(n.platform||(vv(r))),this.platform.updateConfig(n);let o=this.platform.acquireContext(r,a.aspectRatio),s=o&&o.canvas,c=s&&s.height,l=s&&s.width;if(this.id=Zf(),this.ctx=o,this.canvas=s,this.width=l,this.height=c,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Gv,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=cm(e=>this.update(e),a.resizeDelay||0),this._dataChanges=[],Cy[this.id]=this,!o||!s){console.error(`Failed to create chart: can't acquire context from the given item`);return}Dg.listen(this,`complete`,by),Dg.listen(this,`progress`,xy),this._initialize(),this.attached&&this.update()}get aspectRatio(){let{options:{aspectRatio:e,maintainAspectRatio:t},width:n,height:r,_aspectRatio:i}=this;return Qf(e)?t&&i?i:r?n/r:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return Wv}_initialize(){return this.notifyPlugins(`beforeInit`),this.options.responsive?this.resize():tg(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins(`afterInit`),this}clear(){return Vm(this.canvas,this.ctx),this}stop(){return Dg.stop(this),this}resize(e,t){Dg.running(this)?this._resizeBeforeDraw={width:e,height:t}:this._resize(e,t)}_resize(e,t){let n=this.options,r=this.canvas,i=n.maintainAspectRatio&&this.aspectRatio,a=this.platform.getMaximumSize(r,e,t,i),o=n.devicePixelRatio||this.platform.getDevicePixelRatio(),s=this.width?`resize`:`attach`;this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,tg(this,o,!0)&&(this.notifyPlugins(`resize`,{size:a}),op(n.onResize,[this,a],this),this.attached&&this._doResize(s)&&this.render())}ensureScalesHaveIDs(){sp(this.options.scales||{},(e,t)=>{e.id=t})}buildOrUpdateScales(){let e=this.options,t=e.scales,n=this.scales,r=Object.keys(n).reduce((e,t)=>(e[t]=!1,e),{}),i=[];t&&(i=i.concat(Object.keys(t).map(e=>{let n=t[e],r=ty(e,n),i=r===`r`,a=r===`x`;return{options:n,dposition:i?`chartArea`:a?`bottom`:`left`,dtype:i?`radialLinear`:a?`category`:`linear`}}))),sp(i,t=>{let i=t.options,a=i.id,o=ty(a,i),s=rp(i.type,t.dtype);(i.position===void 0||vy(i.position,o)!==vy(t.dposition))&&(i.position=t.dposition),r[a]=!0;let c=null;a in n&&n[a].type===s?c=n[a]:(c=new(Wv.getScale(s))({id:a,type:s,ctx:this.ctx,chart:this}),n[c.id]=c),c.init(i,e)}),sp(r,(e,t)=>{e||delete n[t]}),sp(n,e=>{Y_.configure(this,e,e.options),Y_.addBox(this,e)})}_updateMetasets(){let e=this._metasets,t=this.data.datasets.length,n=e.length;if(e.sort((e,t)=>e.index-t.index),n>t){for(let e=t;et.length&&delete this._stacks,e.forEach((e,n)=>{t.filter(t=>t===e._dataset).length===0&&this._destroyDatasetMeta(n)})}buildOrUpdateControllers(){let e=[],t=this.data.datasets,n,r;for(this._removeUnreferencedMetasets(),n=0,r=t.length;n{this.getDatasetMeta(t).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins(`reset`)}update(e){let t=this.config;t.update();let n=this._options=t.createResolver(t.chartOptionScopes(),this.getContext()),r=this._animationsDisabled=!n.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins(`beforeUpdate`,{mode:e,cancelable:!0})===!1)return;let i=this.buildOrUpdateControllers();this.notifyPlugins(`beforeElementsUpdate`);let a=0;for(let e=0,t=this.data.datasets.length;e{e.reset()}),this._updateDatasets(e),this.notifyPlugins(`afterUpdate`,{mode:e}),this._layers.sort(yy(`z`,`_idx`));let{_active:o,_lastEvent:s}=this;s?this._eventHandler(s,!0):o.length&&this._updateHoverStyles(o,o,!0),this.render()}_updateScales(){sp(this.scales,e=>{Y_.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){let e=this.options;(!Sp(new Set(Object.keys(this._listeners)),new Set(e.events))||!!this._responsiveListeners!==e.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){let{_hiddenIndices:e}=this,t=this._getUniformDataChanges()||[];for(let{method:n,start:r,count:i}of t)Ty(e,r,n===`_removeElements`?-i:i)}_getUniformDataChanges(){let e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];let t=this.data.datasets.length,n=t=>new Set(e.filter(e=>e[0]===t).map((e,t)=>t+`,`+e.splice(1).join(`,`))),r=n(0);for(let e=1;ee.split(`,`)).map(e=>({method:e[1],start:+e[2],count:+e[3]}))}_updateLayout(e){if(this.notifyPlugins(`beforeLayout`,{cancelable:!0})===!1)return;Y_.update(this,this.width,this.height,e);let t=this.chartArea,n=t.width<=0||t.height<=0;this._layers=[],sp(this.boxes,e=>{n&&e.position===`chartArea`||(e.configure&&e.configure(),this._layers.push(...e._layers()))},this),this._layers.forEach((e,t)=>{e._idx=t}),this.notifyPlugins(`afterLayout`)}_updateDatasets(e){if(this.notifyPlugins(`beforeDatasetsUpdate`,{mode:e,cancelable:!0})!==!1){for(let e=0,t=this.data.datasets.length;e=0;--t)this._drawDataset(e[t]);this.notifyPlugins(`afterDatasetsDraw`)}_drawDataset(e){let t=this.ctx,n={meta:e,index:e.index,cancelable:!0},r=Eg(this,e);this.notifyPlugins(`beforeDatasetDraw`,n)!==!1&&(r&&Gm(t,r),e.controller.draw(),r&&Km(t),n.cancelable=!1,this.notifyPlugins(`afterDatasetDraw`,n))}isPointInArea(e){return Wm(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,t,n,r){let i=M_.modes[t];return typeof i==`function`?i(this,e,n,r):[]}getDatasetMeta(e){let t=this.data.datasets[e],n=this._metasets,r=n.filter(e=>e&&e._dataset===t).pop();return r||(r={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:t&&t.order||0,index:e,_dataset:t,_parsed:[],_sorted:!1},n.push(r)),r}getContext(){return this.$context||=dh(null,{chart:this,type:`chart`})}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){let t=this.data.datasets[e];if(!t)return!1;let n=this.getDatasetMeta(e);return typeof n.hidden==`boolean`?!n.hidden:!t.hidden}setDatasetVisibility(e,t){let n=this.getDatasetMeta(e);n.hidden=!t}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,t,n){let r=n?`show`:`hide`,i=this.getDatasetMeta(e),a=i.controller._resolveAnimations(void 0,r);bp(t)?(i.data[t].hidden=!n,this.update()):(this.setDatasetVisibility(e,n),a.update(i,{visible:n}),this.update(t=>t.datasetIndex===e?r:void 0))}hide(e,t){this._updateVisibility(e,t,!1)}show(e,t){this._updateVisibility(e,t,!0)}_destroyDatasetMeta(e){let t=this._metasets[e];t&&t.controller&&t.controller._destroy(),delete this._metasets[e]}_stop(){let e,t;for(this.stop(),Dg.remove(this),e=0,t=this.data.datasets.length;e{t.addEventListener(this,n,r),e[n]=r},r=(e,t,n)=>{e.offsetX=t,e.offsetY=n,this._eventHandler(e)};sp(this.options.events,e=>n(e,r))}bindResponsiveEvents(){this._responsiveListeners||={};let e=this._responsiveListeners,t=this.platform,n=(n,r)=>{t.addEventListener(this,n,r),e[n]=r},r=(n,r)=>{e[n]&&(t.removeEventListener(this,n,r),delete e[n])},i=(e,t)=>{this.canvas&&this.resize(e,t)},a,o=()=>{r(`attach`,o),this.attached=!0,this.resize(),n(`resize`,i),n(`detach`,a)};a=()=>{this.attached=!1,r(`resize`,i),this._stop(),this._resize(0,0),n(`attach`,o)},t.isAttached(this.canvas)?o():a()}unbindEvents(){sp(this._listeners,(e,t)=>{this.platform.removeEventListener(this,t,e)}),this._listeners={},sp(this._responsiveListeners,(e,t)=>{this.platform.removeEventListener(this,t,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,t,n){let r=n?`set`:`remove`,i,a,o,s;for(t===`dataset`&&(i=this.getDatasetMeta(e[0].datasetIndex),i.controller[`_`+r+`DatasetHoverStyle`]()),o=0,s=e.length;o{let n=this.getDatasetMeta(e);if(!n)throw Error(`No dataset found at index `+e);return{datasetIndex:e,element:n.data[t],index:t}});cp(n,t)||(this._active=n,this._lastEvent=null,this._updateHoverStyles(n,t))}notifyPlugins(e,t,n){return this._plugins.notify(this,e,t,n)}isPluginEnabled(e){return this._plugins._cache.filter(t=>t.plugin.id===e).length===1}_updateHoverStyles(e,t,n){let r=this.options.hover,i=(e,t)=>e.filter(e=>!t.some(t=>e.datasetIndex===t.datasetIndex&&e.index===t.index)),a=i(t,e),o=n?e:i(e,t);a.length&&this.updateHoverStyle(a,r.mode,!1),o.length&&r.mode&&this.updateHoverStyle(o,r.mode,!0)}_eventHandler(e,t){let n={event:e,replay:t,cancelable:!0,inChartArea:this.isPointInArea(e)},r=t=>(t.options.events||this.options.events).includes(e.native.type);if(this.notifyPlugins(`beforeEvent`,n,r)===!1)return;let i=this._handleEvent(e,t,n.inChartArea);return n.cancelable=!1,this.notifyPlugins(`afterEvent`,n,r),(i||n.changed)&&this.render(),this}_handleEvent(e,t,n){let{_active:r=[],options:i}=this,a=t,o=this._getActiveElements(e,r,n,a),s=Cp(e),c=Ey(e,this._lastEvent,n,s);n&&(this._lastEvent=null,op(i.onHover,[e,o,this],this),s&&op(i.onClick,[e,o,this],this));let l=!cp(o,r);return(l||t)&&(this._active=o,this._updateHoverStyles(o,r,t)),this._lastEvent=c,l}_getActiveElements(e,t,n,r){if(e.type===`mouseout`)return[];if(!n)return t;let i=this.options.hover;return this.getElementsAtEventForMode(e,i.mode,i,r)}};function Oy(){return sp(Dy.instances,e=>e._plugins.invalidate())}function ky(e,t,n){let{startAngle:r,x:i,y:a,outerRadius:o,innerRadius:s,options:c}=t,{borderWidth:l,borderJoinStyle:u}=c,d=Math.min(l/o,qp(r-n));if(e.beginPath(),e.arc(i,a,o-l/2,r+d/2,n-d/2),s>0){let t=Math.min(l/s,qp(r-n));e.arc(i,a,s+l/2,n-t/2,r+t/2,!0)}else{let t=Math.min(l/2,o*qp(r-n));if(u===`round`)e.arc(i,a,t,n-wp/2,r+wp/2,!0);else if(u===`bevel`){let o=2*t*t,s=-o*Math.cos(n+wp/2)+i,c=-o*Math.sin(n+wp/2)+a,l=o*Math.cos(r+wp/2)+i,u=o*Math.sin(r+wp/2)+a;e.lineTo(s,c),e.lineTo(l,u)}}e.closePath(),e.moveTo(0,0),e.rect(0,0,e.canvas.width,e.canvas.height),e.clip(`evenodd`)}function Ay(e,t,n){let{startAngle:r,pixelMargin:i,x:a,y:o,outerRadius:s,innerRadius:c}=t,l=i/s;e.beginPath(),e.arc(a,o,s,r-l,n+l),c>i?(l=i/c,e.arc(a,o,c,n+l,r-l,!0)):e.arc(a,o,i,n+kp,r-kp),e.closePath(),e.clip()}function jy(e){return ih(e,[`outerStart`,`outerEnd`,`innerStart`,`innerEnd`])}function My(e,t,n,r){let i=jy(e.options.borderRadius),a=(n-t)/2,o=Math.min(a,r*t/2),s=e=>{let t=(n-Math.min(a,e))*r/2;return Yp(e,0,Math.min(a,t))};return{outerStart:s(i.outerStart),outerEnd:s(i.outerEnd),innerStart:Yp(i.innerStart,0,o),innerEnd:Yp(i.innerEnd,0,o)}}function Ny(e,t,n,r){return{x:n+e*Math.cos(t),y:r+e*Math.sin(t)}}function Py(e,t,n,r,i,a){let{x:o,y:s,startAngle:c,pixelMargin:l,innerRadius:u}=t,d=Math.max(t.outerRadius+r+n-l,0),f=u>0?u+r+n+l:0,p=0,m=i-c;if(r){let e=((u>0?u-r:0)+(d>0?d-r:0))/2;p=(m-(e===0?m:m*e/(e+r)))/2}let h=(m-Math.max(.001,m*d-n/wp)/d)/2,g=c+h+p,_=i-h-p,{outerStart:v,outerEnd:y,innerStart:b,innerEnd:x}=My(t,f,d,_-g),S=d-v,C=d-y,w=g+v/S,T=_-y/C,E=f+b,ee=f+x,te=g+b/E,ne=_-x/ee;if(e.beginPath(),a){let t=(w+T)/2;if(e.arc(o,s,d,w,t),e.arc(o,s,d,t,T),y>0){let t=Ny(C,T,o,s);e.arc(t.x,t.y,y,T,_+kp)}let n=Ny(ee,_,o,s);if(e.lineTo(n.x,n.y),x>0){let t=Ny(ee,ne,o,s);e.arc(t.x,t.y,x,_+kp,ne+Math.PI)}let r=(_-x/f+(g+b/f))/2;if(e.arc(o,s,f,_-x/f,r,!0),e.arc(o,s,f,r,g+b/f,!0),b>0){let t=Ny(E,te,o,s);e.arc(t.x,t.y,b,te+Math.PI,g-kp)}let i=Ny(S,g,o,s);if(e.lineTo(i.x,i.y),v>0){let t=Ny(S,w,o,s);e.arc(t.x,t.y,v,g-kp,w)}}else{e.moveTo(o,s);let t=Math.cos(w)*d+o,n=Math.sin(w)*d+s;e.lineTo(t,n);let r=Math.cos(T)*d+o,i=Math.sin(T)*d+s;e.lineTo(r,i)}e.closePath()}function Fy(e,t,n,r,i){let{fullCircles:a,startAngle:o,circumference:s}=t,c=t.endAngle;if(a){Py(e,t,n,r,c,i);for(let t=0;t=wp&&p===0&&u!==`miter`&&ky(e,t,h),a||(Py(e,t,n,r,h,i),e.stroke())}var Ly=class extends yv{static id=`arc`;static defaults={borderAlign:`center`,borderColor:`#fff`,borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0,selfJoin:!1};static defaultRoutes={backgroundColor:`backgroundColor`};static descriptors={_scriptable:!0,_indexable:e=>e!==`borderDash`};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(e){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,e&&Object.assign(this,e)}inRange(e,t,n){let{angle:r,distance:i}=Wp(this.getProps([`x`,`y`],n),{x:e,y:t}),{startAngle:a,endAngle:o,innerRadius:s,outerRadius:c,circumference:l}=this.getProps([`startAngle`,`endAngle`,`innerRadius`,`outerRadius`,`circumference`],n),u=(this.options.spacing+this.options.borderWidth)/2,d=rp(l,o-a),f=Jp(r,a,o)&&a!==o,p=d>=Tp||f,m=Zp(i,s+u,c+u);return p&&m}getCenterPoint(e){let{x:t,y:n,startAngle:r,endAngle:i,innerRadius:a,outerRadius:o}=this.getProps([`x`,`y`,`startAngle`,`endAngle`,`innerRadius`,`outerRadius`],e),{offset:s,spacing:c}=this.options,l=(r+i)/2,u=(a+o+c+s)/2;return{x:t+Math.cos(l)*u,y:n+Math.sin(l)*u}}tooltipPosition(e){return this.getCenterPoint(e)}draw(e){let{options:t,circumference:n}=this,r=(t.offset||0)/4,i=(t.spacing||0)/2,a=t.circular;if(this.pixelMargin=t.borderAlign===`inner`?.33:0,this.fullCircles=n>Tp?Math.floor(n/Tp):0,n===0||this.innerRadius<0||this.outerRadius<0)return;e.save();let o=(this.startAngle+this.endAngle)/2;e.translate(Math.cos(o)*r,Math.sin(o)*r);let s=r*(1-Math.sin(Math.min(wp,n||0)));e.fillStyle=t.backgroundColor,e.strokeStyle=t.borderColor,Fy(e,this,s,i,a),Iy(e,this,s,i,a),e.restore()}};function Ry(e,t,n=t){e.lineCap=rp(n.borderCapStyle,t.borderCapStyle),e.setLineDash(rp(n.borderDash,t.borderDash)),e.lineDashOffset=rp(n.borderDashOffset,t.borderDashOffset),e.lineJoin=rp(n.borderJoinStyle,t.borderJoinStyle),e.lineWidth=rp(n.borderWidth,t.borderWidth),e.strokeStyle=rp(n.borderColor,t.borderColor)}function zy(e,t,n){e.lineTo(n.x,n.y)}function By(e){return e.stepped?qm:e.tension||e.cubicInterpolationMode===`monotone`?Jm:zy}function Vy(e,t,n={}){let r=e.length,{start:i=0,end:a=r-1}=n,{start:o,end:s}=t,c=Math.max(i,o),l=Math.min(a,s),u=is&&a>s;return{count:r,start:c,loop:t.loop,ilen:l(o+(l?s-e:e))%a,y=()=>{h!==g&&(e.lineTo(u,g),e.lineTo(u,h),e.lineTo(u,_))};for(c&&(p=i[v(0)],e.moveTo(p.x,p.y)),f=0;f<=s;++f){if(p=i[v(f)],p.skip)continue;let t=p.x,n=p.y,r=t|0;r===m?(ng&&(g=n),u=(d*u+t)/++d):(y(),e.lineTo(t,n),m=r,d=0,h=g=n),_=n}y()}function Wy(e){let t=e.options,n=t.borderDash&&t.borderDash.length;return!e._decimated&&!e._loop&&!t.tension&&t.cubicInterpolationMode!==`monotone`&&!t.stepped&&!n?Uy:Hy}function Gy(e){return e.stepped?ag:e.tension||e.cubicInterpolationMode===`monotone`?og:ig}function Ky(e,t,n,r){let i=t._path;i||(i=t._path=new Path2D,t.path(i,n,r)&&i.closePath()),Ry(e,t.options),e.stroke(i)}function qy(e,t,n,r){let{segments:i,options:a}=t,o=Wy(t);for(let s of i)Ry(e,a,s.style),e.beginPath(),o(e,t,s,{start:n,end:n+r-1})&&e.closePath(),e.stroke()}var Jy=typeof Path2D==`function`;function Yy(e,t,n,r){Jy&&!t.options.segment?Ky(e,t,n,r):qy(e,t,n,r)}var Xy=class extends yv{static id=`line`;static defaults={borderCapStyle:`butt`,borderDash:[],borderDashOffset:0,borderJoinStyle:`miter`,borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:`default`,fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:`backgroundColor`,borderColor:`borderColor`};static descriptors={_scriptable:!0,_indexable:e=>e!==`borderDash`&&e!==`fill`};constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,t){let n=this.options;if((n.tension||n.cubicInterpolationMode===`monotone`)&&!n.stepped&&!this._pointsUpdated){let r=n.spanGaps?this._loop:this._fullLoop;Vh(this._points,n,e,r,t),this._pointsUpdated=!0}}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||=yg(this,this.options.segment)}first(){let e=this.segments,t=this.points;return e.length&&t[e[0].start]}last(){let e=this.segments,t=this.points,n=e.length;return n&&t[e[n-1].end]}interpolate(e,t){let n=this.options,r=e[t],i=this.points,a=gg(this,{property:t,start:r,end:r});if(!a.length)return;let o=[],s=Gy(n),c,l;for(c=0,l=a.length;ce.replace(`rgb(`,`rgba(`).replace(`)`,`, 0.5)`));function db(e){return lb[e%lb.length]}function fb(e){return ub[e%ub.length]}function pb(e,t){return e.borderColor=db(t),e.backgroundColor=fb(t),++t}function mb(e,t){return e.backgroundColor=e.data.map(()=>db(t++)),t}function hb(e,t){return e.backgroundColor=e.data.map(()=>fb(t++)),t}function gb(e){let t=0;return(n,r)=>{let i=e.getDatasetMeta(r).controller;i instanceof v_?t=mb(n,t):i instanceof b_?t=hb(n,t):i&&(t=pb(n,t))}}function _b(e){let t;for(t in e)if(e[t].borderColor||e[t].backgroundColor)return!0;return!1}function vb(e){return e&&(e.borderColor||e.backgroundColor)}function yb(){return Im.borderColor!==`rgba(0,0,0,0.1)`||Im.backgroundColor!==`rgba(0,0,0,0.1)`}var bb={id:`colors`,defaults:{enabled:!0,forceOverride:!1},beforeLayout(e,t,n){if(!n.enabled)return;let{data:{datasets:r},options:i}=e.config,{elements:a}=i,o=_b(r)||vb(i)||a&&_b(a)||yb();if(!n.forceOverride&&o)return;let s=gb(e);r.forEach(s)}};function xb(e,t,n,r,i){let a=i.samples||r;if(a>=n)return e.slice(t,t+n);let o=[],s=(n-2)/(a-2),c=0,l=t+n-1,u=t,d,f,p,m,h;for(o[c++]=e[u],d=0;dp&&(p=m,f=e[a],h=a);o[c++]=f,u=h}return o[c++]=e[l],o}function Sb(e,t,n,r){let i=0,a=0,o,s,c,l,u,d,f,p,m,h,g=[],_=t+n-1,v=e[t].x,y=e[_].x-v;for(o=t;oh&&(h=l,f=o),i=(a*i+s.x)/++a;else{let n=o-1;if(!Qf(d)&&!Qf(f)){let t=Math.min(d,f),r=Math.max(d,f);t!==p&&t!==n&&g.push({...e[t],x:i}),r!==p&&r!==n&&g.push({...e[r],x:i})}o>0&&n!==p&&g.push(e[n]),g.push(s),u=t,a=0,m=h=l,d=f=p=o}}return g}function Cb(e){if(e._decimated){let t=e._data;delete e._decimated,delete e._data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,writable:!0,value:t})}}function wb(e){e.data.datasets.forEach(e=>{Cb(e)})}function Tb(e,t){let n=t.length,r=0,i,{iScale:a}=e,{min:o,max:s,minDefined:c,maxDefined:l}=a.getUserBounds();return c&&(r=Yp($p(t,a.axis,o).lo,0,n-1)),i=l?Yp($p(t,a.axis,s).hi+1,r,n)-r:n-r,{start:r,count:i}}var Eb={id:`decimation`,defaults:{algorithm:`min-max`,enabled:!1},beforeElementsUpdate:(e,t,n)=>{if(!n.enabled){wb(e);return}let r=e.width;e.data.datasets.forEach((t,i)=>{let{_data:a,indexAxis:o}=t,s=e.getDatasetMeta(i),c=a||t.data;if(lh([o,e.options.indexAxis])===`y`||!s.controller.supportsDecimation)return;let l=e.scales[s.xAxisID];if(l.type!==`linear`&&l.type!==`time`||e.options.parsing)return;let{start:u,count:d}=Tb(s,c);if(d<=(n.threshold||4*r)){Cb(t);return}Qf(a)&&(t._data=c,delete t.data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(e){this._data=e}}));let f;switch(n.algorithm){case`lttb`:f=xb(c,u,d,r,n);break;case`min-max`:f=Sb(c,u,d,r);break;default:throw Error(`Unsupported decimation algorithm '${n.algorithm}'`)}t._decimated=f})},destroy(e){wb(e)}};function Db(e,t,n){let r=e.segments,i=e.points,a=t.points,o=[];for(let e of r){let{start:r,end:s}=e;s=Ab(r,s,i);let c=Ob(n,i[r],i[s],e.loop);if(!t.segments){o.push({source:e,target:c,start:i[r],end:i[s]});continue}let l=gg(t,c);for(let t of l){let r=Ob(n,a[t.start],a[t.end],t.loop),s=hg(e,i,r);for(let e of s)o.push({source:e,target:t,start:{[n]:jb(c,r,`start`,Math.max)},end:{[n]:jb(c,r,`end`,Math.min)}})}}return o}function Ob(e,t,n,r){if(r)return;let i=t[e],a=n[e];return e===`angle`&&(i=qp(i),a=qp(a)),{property:e,start:i,end:a}}function kb(e,t){let{x:n=null,y:r=null}=e||{},i=t.points,a=[];return t.segments.forEach(({start:e,end:t})=>{t=Ab(e,t,i);let o=i[e],s=i[t];r===null?n!==null&&(a.push({x:n,y:o.y}),a.push({x:n,y:s.y})):(a.push({x:o.x,y:r}),a.push({x:s.x,y:r}))}),a}function Ab(e,t,n){for(;t>e;t--){let e=n[t];if(!isNaN(e.x)&&!isNaN(e.y))break}return t}function jb(e,t,n,r){return e&&t?r(e[n],t[n]):e?e[n]:t?t[n]:0}function Mb(e,t){let n=[],r=!1;return $f(e)?(r=!0,n=e):n=kb(e,t),n.length?new Xy({points:n,options:{tension:0},_loop:r,_fullLoop:r}):null}function Nb(e){return e&&e.fill!==!1}function Pb(e,t,n){let r=e[t].fill,i=[t],a;if(!n)return r;for(;r!==!1&&i.indexOf(r)===-1;){if(!tp(r))return r;if(a=e[r],!a)return!1;if(a.visible)return r;i.push(r),r=a.fill}return!1}function Fb(e,t,n){let r=zb(e);if(ep(r))return!isNaN(r.value)&&r;let i=parseFloat(r);return tp(i)&&Math.floor(i)===i?Ib(r[0],t,i,n):[`origin`,`start`,`end`,`stack`,`shape`].indexOf(r)>=0&&r}function Ib(e,t,n,r){return(e===`-`||e===`+`)&&(n=t+n),n===t||n<0||n>=r?!1:n}function Lb(e,t){let n=null;return e===`start`?n=t.bottom:e===`end`?n=t.top:ep(e)?n=t.getPixelForValue(e.value):t.getBasePixel&&(n=t.getBasePixel()),n}function Rb(e,t,n){let r;return r=e===`start`?n:e===`end`?t.options.reverse?t.min:t.max:ep(e)?e.value:t.getBaseValue(),r}function zb(e){let t=e.options,n=t.fill,r=rp(n&&n.target,n);return r===void 0&&(r=!!t.backgroundColor),r===!1||r===null?!1:r===!0?`origin`:r}function Bb(e){let{scale:t,index:n,line:r}=e,i=[],a=r.segments,o=r.points,s=Vb(t,n);s.push(Mb({x:null,y:t.bottom},r));for(let e=0;e=0;--t){let n=i[t].$filler;n&&(n.line.updateControlPoints(a,n.axis),r&&n.fill&&Xb(e.ctx,n,a))}},beforeDatasetsDraw(e,t,n){if(n.drawTime!==`beforeDatasetsDraw`)return;let r=e.getSortedVisibleDatasetMetas();for(let t=r.length-1;t>=0;--t){let n=r[t].$filler;Nb(n)&&Xb(e.ctx,n,e.chartArea)}},beforeDatasetDraw(e,t,n){let r=t.meta.$filler;!Nb(r)||n.drawTime!==`beforeDatasetDraw`||Xb(e.ctx,r,e.chartArea)},defaults:{propagate:!0,drawTime:`beforeDatasetDraw`}},ix=(e,t)=>{let{boxHeight:n=t,boxWidth:r=t}=e;return e.usePointStyle&&(n=Math.min(n,t),r=e.pointStyleWidth||Math.min(r,t)),{boxWidth:r,boxHeight:n,itemHeight:Math.max(t,n)}},ax=(e,t)=>e!==null&&t!==null&&e.datasetIndex===t.datasetIndex&&e.index===t.index,ox=class extends yv{constructor(e){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,t,n){this.maxWidth=e,this.maxHeight=t,this._margins=n,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){let e=this.options.labels||{},t=op(e.generateLabels,[this.chart],this)||[];e.filter&&(t=t.filter(t=>e.filter(t,this.chart.data))),e.sort&&(t=t.sort((t,n)=>e.sort(t,n,this.chart.data))),this.options.reverse&&t.reverse(),this.legendItems=t}fit(){let{options:e,ctx:t}=this;if(!e.display){this.width=this.height=0;return}let n=e.labels,r=ch(n.font),i=r.size,a=this._computeTitleHeight(),{boxWidth:o,itemHeight:s}=ix(n,i),c,l;t.font=r.string,this.isHorizontal()?(c=this.maxWidth,l=this._fitRows(a,i,o,s)+10):(l=this.maxHeight,c=this._fitCols(a,r,o,s)+10),this.width=Math.min(c,e.maxWidth||this.maxWidth),this.height=Math.min(l,e.maxHeight||this.maxHeight)}_fitRows(e,t,n,r){let{ctx:i,maxWidth:a,options:{labels:{padding:o}}}=this,s=this.legendHitBoxes=[],c=this.lineWidths=[0],l=r+o,u=e;i.textAlign=`left`,i.textBaseline=`middle`;let d=-1,f=-l;return this.legendItems.forEach((e,p)=>{let m=n+t/2+i.measureText(e.text).width;(p===0||c[c.length-1]+m+2*o>a)&&(u+=l,c[c.length-(p>0?0:1)]=0,f+=l,d++),s[p]={left:0,top:f,row:d,width:m,height:r},c[c.length-1]+=m+o}),u}_fitCols(e,t,n,r){let{ctx:i,maxHeight:a,options:{labels:{padding:o}}}=this,s=this.legendHitBoxes=[],c=this.columnSizes=[],l=a-e,u=o,d=0,f=0,p=0,m=0;return this.legendItems.forEach((e,a)=>{let{itemWidth:h,itemHeight:g}=sx(n,t,i,e,r);a>0&&f+g+2*o>l&&(u+=d+o,c.push({width:d,height:f}),p+=d+o,m++,d=f=0),s[a]={left:p,top:f,col:m,width:h,height:g},d=Math.max(d,h),f+=g+o}),u+=d,c.push({width:d,height:f}),u}adjustHitBoxes(){if(!this.options.display)return;let e=this._computeTitleHeight(),{legendHitBoxes:t,options:{align:n,labels:{padding:r},rtl:i}}=this,a=lg(i,this.left,this.width);if(this.isHorizontal()){let i=0,o=um(n,this.left+r,this.right-this.lineWidths[i]);for(let s of t)i!==s.row&&(i=s.row,o=um(n,this.left+r,this.right-this.lineWidths[i])),s.top+=this.top+e+r,s.left=a.leftForLtr(a.x(o),s.width),o+=s.width+r}else{let i=0,o=um(n,this.top+e+r,this.bottom-this.columnSizes[i].height);for(let s of t)s.col!==i&&(i=s.col,o=um(n,this.top+e+r,this.bottom-this.columnSizes[i].height)),s.top=o,s.left+=this.left+r,s.left=a.leftForLtr(a.x(s.left),s.width),o+=s.height+r}}isHorizontal(){return this.options.position===`top`||this.options.position===`bottom`}draw(){if(this.options.display){let e=this.ctx;Gm(e,this),this._draw(),Km(e)}}_draw(){let{options:e,columnSizes:t,lineWidths:n,ctx:r}=this,{align:i,labels:a}=e,o=Im.color,s=lg(e.rtl,this.left,this.width),c=ch(a.font),{padding:l}=a,u=c.size,d=u/2,f;this.drawTitle(),r.textAlign=s.textAlign(`left`),r.textBaseline=`middle`,r.lineWidth=.5,r.font=c.string;let{boxWidth:p,boxHeight:m,itemHeight:h}=ix(a,u),g=function(e,t,n){if(isNaN(p)||p<=0||isNaN(m)||m<0)return;r.save();let i=rp(n.lineWidth,1);if(r.fillStyle=rp(n.fillStyle,o),r.lineCap=rp(n.lineCap,`butt`),r.lineDashOffset=rp(n.lineDashOffset,0),r.lineJoin=rp(n.lineJoin,`miter`),r.lineWidth=i,r.strokeStyle=rp(n.strokeStyle,o),r.setLineDash(rp(n.lineDash,[])),a.usePointStyle){let o={radius:m*Math.SQRT2/2,pointStyle:n.pointStyle,rotation:n.rotation,borderWidth:i},c=s.xPlus(e,p/2),l=t+d;Um(r,o,c,l,a.pointStyleWidth&&p)}else{let a=t+Math.max((u-m)/2,0),o=s.leftForLtr(e,p),c=oh(n.borderRadius);r.beginPath(),Object.values(c).some(e=>e!==0)?$m(r,{x:o,y:a,w:p,h:m,radius:c}):r.rect(o,a,p,m),r.fill(),i!==0&&r.stroke()}r.restore()},_=function(e,t,n){Qm(r,n.text,e,t+h/2,c,{strikethrough:n.hidden,textAlign:s.textAlign(n.textAlign)})},v=this.isHorizontal(),y=this._computeTitleHeight();f=v?{x:um(i,this.left+l,this.right-n[0]),y:this.top+l+y,line:0}:{x:this.left+l,y:um(i,this.top+y+l,this.bottom-t[0].height),line:0},ug(this.ctx,e.textDirection);let b=h+l;this.legendItems.forEach((o,u)=>{r.strokeStyle=o.fontColor,r.fillStyle=o.fontColor;let m=r.measureText(o.text).width,h=s.textAlign(o.textAlign||=a.textAlign),x=p+d+m,S=f.x,C=f.y;s.setWidth(this.width),v?u>0&&S+x+l>this.right&&(C=f.y+=b,f.line++,S=f.x=um(i,this.left+l,this.right-n[f.line])):u>0&&C+b>this.bottom&&(S=f.x=S+t[f.line].width+l,f.line++,C=f.y=um(i,this.top+y+l,this.bottom-t[f.line].height));let w=s.x(S);if(g(w,C,o),S=dm(h,S+p+d,v?S+x:this.right,e.rtl),_(s.x(S),C,o),v)f.x+=x+l;else if(typeof o.text!=`string`){let e=c.lineHeight;f.y+=ux(o,e)+l}else f.y+=b}),dg(this.ctx,e.textDirection)}drawTitle(){let e=this.options,t=e.title,n=ch(t.font),r=sh(t.padding);if(!t.display)return;let i=lg(e.rtl,this.left,this.width),a=this.ctx,o=t.position,s=n.size/2,c=r.top+s,l,u=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),l=this.top+c,u=um(e.align,u,this.right-d);else{let t=this.columnSizes.reduce((e,t)=>Math.max(e,t.height),0);l=c+um(e.align,this.top,this.bottom-t-e.labels.padding-this._computeTitleHeight())}let f=um(o,u,u+d);a.textAlign=i.textAlign(lm(o)),a.textBaseline=`middle`,a.strokeStyle=t.color,a.fillStyle=t.color,a.font=n.string,Qm(a,t.text,f,l,n)}_computeTitleHeight(){let e=this.options.title,t=ch(e.font),n=sh(e.padding);return e.display?t.lineHeight+n.height:0}_getLegendItemAt(e,t){let n,r,i;if(Zp(e,this.left,this.right)&&Zp(t,this.top,this.bottom)){for(i=this.legendHitBoxes,n=0;ne.length>t.length?e:t)),t+n.size/2+r.measureText(i).width}function lx(e,t,n){let r=e;return typeof t.text!=`string`&&(r=ux(t,n)),r}function ux(e,t){return t*(e.text?e.text.length:0)}function dx(e,t){return!!((e===`mousemove`||e===`mouseout`)&&(t.onHover||t.onLeave)||t.onClick&&(e===`click`||e===`mouseup`))}var fx={id:`legend`,_element:ox,start(e,t,n){let r=e.legend=new ox({ctx:e.ctx,options:n,chart:e});Y_.configure(e,r,n),Y_.addBox(e,r)},stop(e){Y_.removeBox(e,e.legend),delete e.legend},beforeUpdate(e,t,n){let r=e.legend;Y_.configure(e,r,n),r.options=n},afterUpdate(e){let t=e.legend;t.buildLabels(),t.adjustHitBoxes()},afterEvent(e,t){t.replay||e.legend.handleEvent(t.event)},defaults:{display:!0,position:`top`,align:`center`,fullSize:!0,reverse:!1,weight:1e3,onClick(e,t,n){let r=t.datasetIndex,i=n.chart;i.isDatasetVisible(r)?(i.hide(r),t.hidden=!0):(i.show(r),t.hidden=!1)},onHover:null,onLeave:null,labels:{color:e=>e.chart.options.color,boxWidth:40,padding:10,generateLabels(e){let t=e.data.datasets,{labels:{usePointStyle:n,pointStyle:r,textAlign:i,color:a,useBorderRadius:o,borderRadius:s}}=e.legend.options;return e._getSortedDatasetMetas().map(e=>{let c=e.controller.getStyle(n?0:void 0),l=sh(c.borderWidth);return{text:t[e.index].label,fillStyle:c.backgroundColor,fontColor:a,hidden:!e.visible,lineCap:c.borderCapStyle,lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:(l.width+l.height)/4,strokeStyle:c.borderColor,pointStyle:r||c.pointStyle,rotation:c.rotation,textAlign:i||c.textAlign,borderRadius:o&&(s||c.borderRadius),datasetIndex:e.index}},this)}},title:{color:e=>e.chart.options.color,display:!1,position:`center`,text:``}},descriptors:{_scriptable:e=>!e.startsWith(`on`),labels:{_scriptable:e=>![`generateLabels`,`filter`,`sort`].includes(e)}}},px=class extends yv{constructor(e){super(),this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,t){let n=this.options;if(this.left=0,this.top=0,!n.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=e,this.height=this.bottom=t;let r=$f(n.text)?n.text.length:1;this._padding=sh(n.padding);let i=r*ch(n.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=i:this.width=i}isHorizontal(){let e=this.options.position;return e===`top`||e===`bottom`}_drawArgs(e){let{top:t,left:n,bottom:r,right:i,options:a}=this,o=a.align,s=0,c,l,u;return this.isHorizontal()?(l=um(o,n,i),u=t+e,c=i-n):(a.position===`left`?(l=n+e,u=um(o,r,t),s=wp*-.5):(l=i-e,u=um(o,t,r),s=wp*.5),c=r-t),{titleX:l,titleY:u,maxWidth:c,rotation:s}}draw(){let e=this.ctx,t=this.options;if(!t.display)return;let n=ch(t.font),r=n.lineHeight/2+this._padding.top,{titleX:i,titleY:a,maxWidth:o,rotation:s}=this._drawArgs(r);Qm(e,t.text,0,0,n,{color:t.color,maxWidth:o,rotation:s,textAlign:lm(t.align),textBaseline:`middle`,translation:[i,a]})}};function mx(e,t){let n=new px({ctx:e.ctx,options:t,chart:e});Y_.configure(e,n,t),Y_.addBox(e,n),e.titleBlock=n}var hx={id:`title`,_element:px,start(e,t,n){mx(e,n)},stop(e){let t=e.titleBlock;Y_.removeBox(e,t),delete e.titleBlock},beforeUpdate(e,t,n){let r=e.titleBlock;Y_.configure(e,r,n),r.options=n},defaults:{align:`center`,display:!1,font:{weight:`bold`},fullSize:!0,padding:10,position:`top`,text:``,weight:2e3},defaultRoutes:{color:`color`},descriptors:{_scriptable:!0,_indexable:!1}},gx=new WeakMap,_x={id:`subtitle`,start(e,t,n){let r=new px({ctx:e.ctx,options:n,chart:e});Y_.configure(e,r,n),Y_.addBox(e,r),gx.set(e,r)},stop(e){Y_.removeBox(e,gx.get(e)),gx.delete(e)},beforeUpdate(e,t,n){let r=gx.get(e);Y_.configure(e,r,n),r.options=n},defaults:{align:`center`,display:!1,font:{weight:`normal`},fullSize:!0,padding:0,position:`top`,text:``,weight:1500},defaultRoutes:{color:`color`},descriptors:{_scriptable:!0,_indexable:!1}},vx={average(e){if(!e.length)return!1;let t,n,r=new Set,i=0,a=0;for(t=0,n=e.length;te+t)/r.size,y:i/a}},nearest(e,t){if(!e.length)return!1;let n=t.x,r=t.y,i=1/0,a,o,s;for(a=0,o=e.length;a`${e[0].toUpperCase()}${e.slice(1)}`),d=parseFloat(a[`padding${u[0]}`]),f=parseFloat(a[`padding${u[1]}`]),p=parseFloat(a[`margin${u[0]}`]),m=parseFloat(a[`margin${u[1]}`]),h=parseFloat(a[`border${u[0]}Width`]),g=parseFloat(a[`border${u[1]}Width`]);return{delay:t,duration:n,easing:r,css:e=>`overflow: hidden;opacity: ${Math.min(e*20,1)*o};${s}: ${e*c}px;padding-${l[0]}: ${e*d}px;padding-${l[1]}: ${e*f}px;margin-${l[0]}: ${e*p}px;margin-${l[1]}: ${e*m}px;border-${l[0]}-width: ${e*h}px;border-${l[1]}-width: ${e*g}px;min-${s}: 0`}}function tf(e){return--e*e*(2.70158*e+1.70158)+1}function nf(e){let t=e-1;return t*t*t+1}var rf=5e3,af=8e3,of=new class{#e=j(N([]));get toasts(){return R(this.#e)}set toasts(e){M(this.#e,e,!0)}#t=0;#n=new Map;success(e){this.#r(`success`,e,rf)}error(e){this.#r(`error`,e,af)}dismiss(e){let t=this.#n.get(e);t&&(clearTimeout(t),this.#n.delete(e)),this.toasts=this.toasts.filter(t=>t.id!==e)}#r(e,t,n){let r=String(t||``).trim();if(!r)return;let i=this.toasts.find(t=>t.kind===e&&t.text===r);i&&this.dismiss(i.id);let a=++this.#t;this.toasts=[...this.toasts,{id:a,kind:e,text:r}],this.#n.set(a,setTimeout(()=>this.dismiss(a),n))}},sf=B(`
`),cf=B(`
`);function lf(e,t){O(t,!0);var n=cf();W(n,21,()=>of.toasts,e=>e.id,(e,t)=>{var n=sf();let r;var i=P(n),a=P(i,!0);D(i);var o=I(i,2);D(n),L(e=>{r=G(n,1,`flash-toast svelte-1i257xg`,null,r,{"flash-toast-success":R(t).kind===`success`,"flash-toast-error":R(t).kind===`error`}),K(n,`role`,R(t).kind===`error`?`alert`:`status`),K(n,`aria-live`,R(t).kind===`error`?`assertive`:`polite`),H(a,R(t).text),K(o,`aria-label`,e)},[()=>gc()]),z(`click`,o,()=>of.dismiss(R(t).id)),Di(1,n,()=>$d,()=>({y:-24,duration:360,easing:tf})),Di(2,n,()=>Qd,()=>({duration:150})),V(e,n)}),D(n),V(e,n),k()}Br([`click`]);var uf=B(``);function df(e,t){O(t,!0);var n=Xr(),r=F(n),i=e=>{var t=uf(),n=I(P(t),2),r=P(n),i=P(r,!0);D(r);var a=I(r,2),o=P(a,!0);D(a),D(n);var s=I(n,2);D(t),L((e,n,r,a)=>{K(t,`aria-label`,e),H(i,n),H(o,r),K(s,`aria-label`,a)},[()=>yc(),()=>Sc(),()=>Tc(),()=>Oc()]),V(e,t)},a=A(()=>Vu());U(r,e=>{R(a)&&e(i)}),V(e,n),k()}function ff(e){return String(e||``).split(`,`).map(e=>e.trim()).filter(e=>e)}function pf(e){if(e==null||e===``)return`Not captured`;if(typeof e==`string`){let t=e.trim();if(t.startsWith(`{`)&&t.endsWith(`}`)||t.startsWith(`[`)&&t.endsWith(`]`))try{return JSON.stringify(JSON.parse(t),null,2)}catch{return e}return e}try{return JSON.stringify(e,null,2)}catch{return String(e)}}function mf(e){return e==null||e===void 0?`-`:e.toLocaleString()}function hf(e){if(e==null)return`---`;let t=Number(e);return Number.isFinite(t)?t>0&&t<1e-4?`<$0.0001`:`$`+t.toFixed(4).replace(/(\.\d{2}\d*?)0+$/,`$1`):`---`}function gf(e){return e==null||e===void 0?`—`:`$`+e.toFixed(2)}function _f(e){return e==null||e===void 0?`—`:e<.01?`$`+e.toFixed(6):`$`+e.toFixed(4)}function vf(e){if(e==null||e===``)return`-`;let t=Number(e);if(!Number.isFinite(t))return`-`;let n=Math.abs(t),r=[{threshold:1e9,suffix:`B`},{threshold:1e6,suffix:`M`},{threshold:1e3,suffix:`K`}];for(let e=0;e=i.threshold){let n=t/i.threshold;return Math.abs(Number(n.toFixed(1)))>=1e3&&e>0&&(i=r[e-1],n=t/i.threshold),n.toFixed(1).replace(/\.0$/,``)+i.suffix}}return String(t)}function yf(e,t){let n=t==null||t===``?NaN:Number(t),r=Number.isFinite(n)?mf(n):`-`;return String(e||`Tokens`)+`: `+r}function bf(e){return e?typeof e==`string`?e:e.getUTCFullYear()+`-`+String(e.getUTCMonth()+1).padStart(2,`0`)+`-`+String(e.getUTCDate()).padStart(2,`0`):``}function xf(e){if(!e)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:t.getUTCFullYear()+`-`+String(t.getUTCMonth()+1).padStart(2,`0`)+`-`+String(t.getUTCDate()).padStart(2,`0`)}function Sf(e){if(!e)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:t.getUTCFullYear()+`-`+String(t.getUTCMonth()+1).padStart(2,`0`)+`-`+String(t.getUTCDate()).padStart(2,`0`)+` `+String(t.getUTCHours()).padStart(2,`0`)+`:`+String(t.getUTCMinutes()).padStart(2,`0`)+`:`+String(t.getUTCSeconds()).padStart(2,`0`)+` UTC`}function Cf(e){return String(e&&e.provider||``).trim()}function wf(e){return String(e&&e.provider_name||``).trim()||Cf(e)}function Tf(e,t){let n=String(t||``).trim();if(!n)return`-`;let r=wf(e);return!r||n===r||n.startsWith(r+`/`)?n:r+`/`+n}function Ef(e){return Tf(e,e&&e.model)}function Df(e){return Tf(e,e&&e.resolved_model)}function Of(e){let t=String(e&&(e.requested_model||e.model)||``).trim();if(!e)return t;let n=String(e.data&&e.data.failover&&e.data.failover.target_model||``).trim();if(n&&n!==t)return t+` ⮕ `+n;if(e.alias_used&&e.resolved_model){let n=Df(e);if(n&&n!==`-`&&n!==t)return t+` ⮕ `+n}return t}var kf=`gomodel_date_range`,Af=1;function jf(e){return/^[1-9]\d*$/.test(String(e??``))}function Mf({selectedPreset:e,startKey:t,endKey:n,followsToday:r}){return e&&jf(e)?{v:Af,mode:`preset`,days:String(e)}:e?null:id(t)&&id(n)?{v:Af,mode:`custom`,start:t,end:n,follow:r===!0}:null}function Nf(e){let t=e;if(typeof e==`string`)try{t=JSON.parse(e)}catch{return null}return!t||typeof t!=`object`?null:t.mode===`preset`?jf(t.days)?{mode:`preset`,days:String(t.days)}:null:t.mode===`custom`&&id(t.start)&&id(t.end)&&t.start<=t.end?{mode:`custom`,start:t.start,end:t.end,follow:t.follow===!0}:null}function Pf(e,t,n){let r=ad(e,t);return r<1||!id(n)?{start:e,end:t}:{start:rd(n,-(r-1)),end:n}}function Ff(e){return Fc({count:Number(e)})}function If(e,t){return e===t?Vc():eo(new Date(e+`T00:00:00Z`),{day:`numeric`,month:`short`,year:`numeric`,timeZone:`UTC`})}function Lf({selectedPreset:e,startKey:t,endKey:n,todayKey:r}){if(e)return Ff(e);if(id(t)&&id(n)){if(t>n)return Ff(`30`);let e=If(t,r);return t===n?e:Wc({start:e,end:If(n,r)})}return id(t)?qc({start:If(t,r)}):Ff(`30`)}function Rf({selectedPreset:e,startKey:t,endKey:n,followsToday:r,todayKey:i}){if(e)return Ff(e);if(!id(t)||!id(n)||t>n)return``;let a=ad(t,n);return r||n===i?a===1?Vc():Ff(a):Rc({count:a})}function zf(e){switch(e){case`weekly`:return dl();case`monthly`:return ml();case`yearly`:return _l();default:return cl()}}var Bf=6e4,Vf=new class{#e=j(N(`30`));get days(){return R(this.#e)}set days(e){M(this.#e,e,!0)}#t=j(N(`30`));get selectedPreset(){return R(this.#t)}set selectedPreset(e){M(this.#t,e,!0)}#n=j(null);get customStartDate(){return R(this.#n)}set customStartDate(e){M(this.#n,e,!0)}#r=j(null);get customEndDate(){return R(this.#r)}set customEndDate(e){M(this.#r,e,!0)}#i=j(!1);get followsToday(){return R(this.#i)}set followsToday(e){M(this.#i,e,!0)}#a=j(`daily`);get interval(){return R(this.#a)}set interval(e){M(this.#a,e,!0)}#o=j(0);get syncTick(){return R(this.#o)}set syncTick(e){M(this.#o,e,!0)}init(){this.restore(),this.syncToToday(),typeof setInterval==`function`&&setInterval(()=>this.syncToToday(),Bf)}queryStr(){return this.customStartDate&&this.customEndDate?`start_date=`+bf(this.customStartDate)+`&end_date=`+bf(this.customEndDate):`days=`+this.days}selectPreset(e){this.selectedPreset=e,this.customStartDate=null,this.customEndDate=null,this.followsToday=!1,this.days=e,this.persist()}selectStart(e){this.selectedPreset=null,this.customStartDate=e,this.customEndDate&&this.customEndDatet.category===e);return t?t.count:0}get filteredModels(){if(!this.filter)return this.models;let e=this.filter.toLowerCase();return this.models.filter(t=>(t.model?.id??``).toLowerCase().includes(e)||(t.provider_name??``).toLowerCase().includes(e)||(t.provider_type??``).toLowerCase().includes(e)||(t.selector??``).toLowerCase().includes(e)||(t.model?.owned_by??``).toLowerCase().includes(e)||(t.model?.metadata?.modes??[]).join(`,`).toLowerCase().includes(e)||(t.model?.metadata?.categories??[]).join(`,`).toLowerCase().includes(e))}},Uf=B(``);function Wf(e,t){O(t,!0);var n=Xr(),r=F(n),i=e=>{var t=Uf(),n=P(t),r=P(n,!0);D(n);var i=I(n,2),a=P(i,!0);D(i),D(t),L((e,t)=>{H(r,e),H(a,t)},[()=>js(),()=>ts()]),z(`click`,i,()=>Y.openDialog()),V(e,t)};U(r,e=>{Y.authError&&e(i)}),V(e,n),k()}Br([`click`]);function Gf(){return{total_requests:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,total_input_cost:null,total_output_cost:null,total_cost:null}}function Kf(){return{summary:{total_hits:0,exact_hits:0,semantic_hits:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,total_saved_cost:null},daily:[]}}var qf=new class{#e=j(N(Gf()));get summary(){return R(this.#e)}set summary(e){M(this.#e,e,!0)}#t=j(N([]));get daily(){return R(this.#t)}set daily(e){M(this.#t,e,!0)}#n=j(N(Kf()));get cacheOverview(){return R(this.#n)}set cacheOverview(e){M(this.#n,e,!0)}#r=j(!1);get loading(){return R(this.#r)}set loading(e){M(this.#r,e,!0)}#i=null;#a=null;cacheAnalyticsEnabled(){return Td.cacheVisible()}async fetchUsage(){this.#i&&this.#i.abort();let e=new AbortController;this.#i=e,this.loading=!0;try{let t=Vf.queryStr()+`&interval=`+Vf.interval,[n,r]=await Promise.all([bd(`/admin/usage/summary?`+t,{label:`usage summary`,signal:e.signal}),bd(`/admin/usage/daily?`+t,{label:`usage daily`,signal:e.signal})]);if(n.stale||r.stale||e.signal.aborted)return;if(!n.ok||!r.ok){this.summary=Gf(),this.daily=[],this.cacheOverview=Kf();return}this.summary=n.data||Gf(),this.daily=Array.isArray(r.data)?r.data:[]}catch(e){if(Sd(e))return;console.error(`Failed to fetch usage:`,e),this.summary=Gf(),this.daily=[]}finally{this.#i===e&&(this.#i=null,this.loading=!1)}}async fetchCacheOverview(e=``){if(await Td.ensureLoaded(),!this.cacheAnalyticsEnabled()){this.cacheOverview=Kf();return}this.#a&&this.#a.abort();let t=new AbortController;this.#a=t;try{let n=await bd(`/admin/cache/overview?`+(Vf.queryStr()+`&interval=`+Vf.interval+e),{label:`cache overview`,signal:t.signal});if(n.stale||t.signal.aborted)return;if(!n.ok){this.cacheOverview=Kf();return}let r=n.data&&typeof n.data==`object`?n.data:Kf();r.summary||=Kf().summary,Array.isArray(r.daily)||(r.daily=[]),this.cacheOverview=r}catch(e){if(Sd(e))return;console.error(`Failed to fetch cache overview:`,e),this.cacheOverview=Kf()}finally{this.#a===t&&(this.#a=null)}}};function Jf(e,t,n){let r=e.getUTCFullYear(),i=e.getUTCMonth()+t,a=new Date(Date.UTC(r,i,1)),o=new Date(Date.UTC(r,i+1,0)),s=(a.getUTCDay()+6)%7,c=[],l=new Date(Date.UTC(r,i,0));for(let e=s-1;e>=0;e--){let t=l.getUTCDate()-e,a=new Date(Date.UTC(r,i-1,t));c.push({day:t,date:a,current:!1,key:`p-`+n(a)})}for(let e=1;e<=o.getUTCDate();e++){let t=new Date(Date.UTC(r,i,e));c.push({day:e,date:t,current:!0,key:`c-`+n(t)})}let u=42-c.length;for(let e=1;e<=u;e++){let t=new Date(Date.UTC(r,i+1,e));c.push({day:e,date:t,current:!1,key:`n-`+n(t)})}return c}function Yf(e,t,n){let r=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+t,1));return n&&r.getTime()>n.getTime()?e:r}function Xf(e,t){return e.getUTCFullYear()===t.getUTCFullYear()&&e.getUTCMonth()===t.getUTCMonth()}var Zf=B(``),Qf=B(``),$f=B(` `),ep=B(``),tp=B(`
`);function np(e,t){O(t,!0);let n=q(t,`offset`,3,0),r=A(()=>Jf(t.calendarMonth,n(),e=>md.dateToDateKey(e))),i=A(()=>Xf(t.calendarMonth,md.todayDate())),a=A(()=>eo(new Date(Date.UTC(t.calendarMonth.getUTCFullYear(),t.calendarMonth.getUTCMonth()+n(),1)),{month:`long`,year:`numeric`,timeZone:`UTC`})),o=Array.from({length:7},(e,t)=>eo(new Date(Date.UTC(2024,0,1+t)),{weekday:`short`,timeZone:`UTC`})),s=e=>md.dateToDateKey(e.date),c=e=>s(e)>md.currentDateKey(),l=e=>e.current&&s(e)===md.currentDateKey();function u(e,t){let n=t===`start`?Vf.rangeStart():Vf.rangeEnd();return e.current&&!!n&&s(e)===md.dateToDateKey(n)}function d(e){let t=Vf.rangeStart(),n=Vf.rangeEnd();return!e.current||!t||!n?!1:s(e)>=md.dateToDateKey(t)&&s(e)<=md.dateToDateKey(n)}var f=tp(),p=P(f),m=P(p);let h;var g=I(m,2),_=P(g,!0);D(g);var v=I(g,2),y=e=>{V(e,Zf())},b=e=>{var n=Qf();L(e=>{n.disabled=R(i),K(n,`aria-label`,e)},[()=>al()]),z(`click`,n,function(...e){t.onnext?.apply(this,e)}),V(e,n)};U(v,e=>{n()===-1?e(y):e(b,-1)}),D(p);var x=I(p,2);W(x,21,()=>o,ii,(e,t)=>{var n=$f(),r=P(n,!0);D(n),L(()=>H(r,R(t))),V(e,n)}),D(x);var S=I(x,2);W(S,21,()=>R(r),e=>e.key,(e,n)=>{var r=ep(),i=P(r,!0);D(r),L((e,t)=>{G(r,1,e,`svelte-g7ga4u`),r.disabled=t,H(i,R(n).day)},[()=>Ni([`dp-day`,{"other-month":!R(n).current,today:l(R(n)),"range-start":u(R(n),`start`),"range-end":u(R(n),`end`),"in-range":d(R(n)),disabled:c(R(n))}]),()=>c(R(n))||!R(n).current]),z(`click`,r,()=>t.onselect?.(R(n))),V(e,r)}),D(S),D(f),L(e=>{h=G(m,1,`dp-nav-btn svelte-g7ga4u`,null,h,{"dp-nav-prev-mobile":n()!==-1}),K(m,`aria-label`,e),H(_,R(a))},[()=>nl()]),z(`click`,m,function(...e){t.onprev?.apply(this,e)}),V(e,f),k()}Br([`click`]);var rp=B(``),ip=B(`
`),ap=Jr(``),op=Jr(``),sp=B(`
`),cp=B(`
`);function lp(e,t){O(t,!0);let n=[`3`,`7`,`14`,`30`,`90`],r=j(!1),i=j(`start`),a=j(N(new Date)),o=j(N({show:!1,x:0,y:0}));function s(){M(r,!R(r)),R(r)&&(Vf.syncToToday(),M(a,md.startOfMonthDate(Vf.customEndDate||md.todayDate()),!0),M(i,`start`))}function c(){M(r,!1),M(o,{show:!1,x:0,y:0},!0)}let l=Vf.syncTick;On(()=>{let e=Vf.syncTick;e!==l&&(l=e,t.onchange?.())});function u(e){Vf.selectPreset(e),M(i,`start`),t.onchange?.(),c()}let d=()=>M(a,Yf(R(a),-1),!0),f=()=>M(a,Yf(R(a),1,md.startOfMonthDate(md.todayDate())),!0);function p(e){let n=new Date(e.date);if(R(i)===`start`){Vf.selectStart(n),M(i,`end`),t.onchange?.();return}Vf.selectEnd(n),M(i,`start`),t.onchange?.(),c()}var m=cp(),h=P(m),g=I(P(h),2),_=P(g,!0);D(g);var v=I(g,2);let y;D(h);var b=I(h,2),x=e=>{var t=ip(),r=P(t);W(r,20,()=>n,e=>e,(e,t)=>{var n=rp();let r;var i=P(n,!0);D(n),L(e=>{r=G(n,1,`preset-btn svelte-ax7ma4`,null,r,{active:Vf.selectedPreset===t}),H(i,e)},[()=>Fc({count:Number(t)})]),z(`click`,n,()=>u(t)),V(e,n)}),D(r);var i=I(r,2);W(i,20,()=>[-1,0],e=>e,(e,t)=>{np(e,{get calendarMonth(){return R(a)},get offset(){return t},onprev:d,onnext:f,onselect:p})}),D(i),D(t),z(`mousemove`,i,e=>M(o,{show:!0,x:e.clientX,y:e.clientY},!0)),zr(`mouseleave`,i,()=>M(o,{show:!1,x:0,y:0},!0)),V(e,t)};U(b,e=>{R(r)&&e(x)});var S=I(b,2),C=e=>{var t=sp(),n=P(t),r=e=>{V(e,ap())},a=e=>{V(e,op())};U(n,e=>{R(i)===`start`?e(r):e(a,-1)});var s=I(n,2),c=P(s,!0);D(s),D(t),L(e=>{Bi(t,`left:${R(o).x??``}px;top:${R(o).y??``}px`),H(c,e)},[()=>R(i)===`end`?$c():Xc()]),V(e,t)};U(S,e=>{R(o).show&&e(C)}),D(m),Ai(m,()=>R(r)?Fd(c):void 0),L((e,t)=>{K(h,`title`,e),H(_,t),y=G(v,0,`date-picker-chevron svelte-ax7ma4`,null,y,{open:R(r)})},[()=>Vf.dateRangeSpanLabel(),()=>Vf.dateRangeLabel()]),z(`click`,h,s),V(e,m),k()}Br([`click`,`mousemove`]);function up(e){return e+.5|0}var dp=(e,t,n)=>Math.max(Math.min(e,n),t);function fp(e){return dp(up(e*2.55),0,255)}function pp(e){return dp(up(e*255),0,255)}function mp(e){return dp(up(e/2.55)/100,0,1)}function hp(e){return dp(up(e*100),0,100)}var gp={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},_p=[...`0123456789ABCDEF`],vp=e=>_p[e&15],yp=e=>_p[(e&240)>>4]+_p[e&15],bp=e=>(e&240)>>4==(e&15),xp=e=>bp(e.r)&&bp(e.g)&&bp(e.b)&&bp(e.a);function Sp(e){var t=e.length,n;return e[0]===`#`&&(t===4||t===5?n={r:255&gp[e[1]]*17,g:255&gp[e[2]]*17,b:255&gp[e[3]]*17,a:t===5?gp[e[4]]*17:255}:(t===7||t===9)&&(n={r:gp[e[1]]<<4|gp[e[2]],g:gp[e[3]]<<4|gp[e[4]],b:gp[e[5]]<<4|gp[e[6]],a:t===9?gp[e[7]]<<4|gp[e[8]]:255})),n}var Cp=(e,t)=>e<255?t(e):``;function wp(e){var t=xp(e)?vp:yp;return e?`#`+t(e.r)+t(e.g)+t(e.b)+Cp(e.a,t):void 0}var Tp=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Ep(e,t,n){let r=t*Math.min(n,1-n),i=(t,i=(t+e/30)%12)=>n-r*Math.max(Math.min(i-3,9-i,1),-1);return[i(0),i(8),i(4)]}function Dp(e,t,n){let r=(r,i=(r+e/60)%6)=>n-n*t*Math.max(Math.min(i,4-i,1),0);return[r(5),r(3),r(1)]}function Op(e,t,n){let r=Ep(e,1,.5),i;for(t+n>1&&(i=1/(t+n),t*=i,n*=i),i=0;i<3;i++)r[i]*=1-t-n,r[i]+=t;return r}function kp(e,t,n,r,i){return e===i?(t-n)/r+(t.5?l/(2-i-a):l/(i+a),s=kp(t,n,r,l,i),s=s*60+.5),[s|0,c||0,o]}function jp(e,t,n,r){return(Array.isArray(t)?e(t[0],t[1],t[2]):e(t,n,r)).map(pp)}function Mp(e,t,n){return jp(Ep,e,t,n)}function Np(e,t,n){return jp(Op,e,t,n)}function Pp(e,t,n){return jp(Dp,e,t,n)}function Fp(e){return(e%360+360)%360}function Ip(e){let t=Tp.exec(e),n=255,r;if(!t)return;t[5]!==r&&(n=t[6]?fp(+t[5]):pp(+t[5]));let i=Fp(+t[2]),a=t[3]/100,o=t[4]/100;return r=t[1]===`hwb`?Np(i,a,o):t[1]===`hsv`?Pp(i,a,o):Mp(i,a,o),{r:r[0],g:r[1],b:r[2],a:n}}function Lp(e,t){var n=Ap(e);n[0]=Fp(n[0]+t),n=Mp(n),e.r=n[0],e.g=n[1],e.b=n[2]}function Rp(e){if(!e)return;let t=Ap(e),n=t[0],r=hp(t[1]),i=hp(t[2]);return e.a<255?`hsla(${n}, ${r}%, ${i}%, ${mp(e.a)})`:`hsl(${n}, ${r}%, ${i}%)`}var zp={x:`dark`,Z:`light`,Y:`re`,X:`blu`,W:`gr`,V:`medium`,U:`slate`,A:`ee`,T:`ol`,S:`or`,B:`ra`,C:`lateg`,D:`ights`,R:`in`,Q:`turquois`,E:`hi`,P:`ro`,O:`al`,N:`le`,M:`de`,L:`yello`,F:`en`,K:`ch`,G:`arks`,H:`ea`,I:`ightg`,J:`wh`},Bp={OiceXe:`f0f8ff`,antiquewEte:`faebd7`,aqua:`ffff`,aquamarRe:`7fffd4`,azuY:`f0ffff`,beige:`f5f5dc`,bisque:`ffe4c4`,black:`0`,blanKedOmond:`ffebcd`,Xe:`ff`,XeviTet:`8a2be2`,bPwn:`a52a2a`,burlywood:`deb887`,caMtXe:`5f9ea0`,KartYuse:`7fff00`,KocTate:`d2691e`,cSO:`ff7f50`,cSnflowerXe:`6495ed`,cSnsilk:`fff8dc`,crimson:`dc143c`,cyan:`ffff`,xXe:`8b`,xcyan:`8b8b`,xgTMnPd:`b8860b`,xWay:`a9a9a9`,xgYF:`6400`,xgYy:`a9a9a9`,xkhaki:`bdb76b`,xmagFta:`8b008b`,xTivegYF:`556b2f`,xSange:`ff8c00`,xScEd:`9932cc`,xYd:`8b0000`,xsOmon:`e9967a`,xsHgYF:`8fbc8f`,xUXe:`483d8b`,xUWay:`2f4f4f`,xUgYy:`2f4f4f`,xQe:`ced1`,xviTet:`9400d3`,dAppRk:`ff1493`,dApskyXe:`bfff`,dimWay:`696969`,dimgYy:`696969`,dodgerXe:`1e90ff`,fiYbrick:`b22222`,flSOwEte:`fffaf0`,foYstWAn:`228b22`,fuKsia:`ff00ff`,gaRsbSo:`dcdcdc`,ghostwEte:`f8f8ff`,gTd:`ffd700`,gTMnPd:`daa520`,Way:`808080`,gYF:`8000`,gYFLw:`adff2f`,gYy:`808080`,honeyMw:`f0fff0`,hotpRk:`ff69b4`,RdianYd:`cd5c5c`,Rdigo:`4b0082`,ivSy:`fffff0`,khaki:`f0e68c`,lavFMr:`e6e6fa`,lavFMrXsh:`fff0f5`,lawngYF:`7cfc00`,NmoncEffon:`fffacd`,ZXe:`add8e6`,ZcSO:`f08080`,Zcyan:`e0ffff`,ZgTMnPdLw:`fafad2`,ZWay:`d3d3d3`,ZgYF:`90ee90`,ZgYy:`d3d3d3`,ZpRk:`ffb6c1`,ZsOmon:`ffa07a`,ZsHgYF:`20b2aa`,ZskyXe:`87cefa`,ZUWay:`778899`,ZUgYy:`778899`,ZstAlXe:`b0c4de`,ZLw:`ffffe0`,lime:`ff00`,limegYF:`32cd32`,lRF:`faf0e6`,magFta:`ff00ff`,maPon:`800000`,VaquamarRe:`66cdaa`,VXe:`cd`,VScEd:`ba55d3`,VpurpN:`9370db`,VsHgYF:`3cb371`,VUXe:`7b68ee`,VsprRggYF:`fa9a`,VQe:`48d1cc`,VviTetYd:`c71585`,midnightXe:`191970`,mRtcYam:`f5fffa`,mistyPse:`ffe4e1`,moccasR:`ffe4b5`,navajowEte:`ffdead`,navy:`80`,Tdlace:`fdf5e6`,Tive:`808000`,TivedBb:`6b8e23`,Sange:`ffa500`,SangeYd:`ff4500`,ScEd:`da70d6`,pOegTMnPd:`eee8aa`,pOegYF:`98fb98`,pOeQe:`afeeee`,pOeviTetYd:`db7093`,papayawEp:`ffefd5`,pHKpuff:`ffdab9`,peru:`cd853f`,pRk:`ffc0cb`,plum:`dda0dd`,powMrXe:`b0e0e6`,purpN:`800080`,YbeccapurpN:`663399`,Yd:`ff0000`,Psybrown:`bc8f8f`,PyOXe:`4169e1`,saddNbPwn:`8b4513`,sOmon:`fa8072`,sandybPwn:`f4a460`,sHgYF:`2e8b57`,sHshell:`fff5ee`,siFna:`a0522d`,silver:`c0c0c0`,skyXe:`87ceeb`,UXe:`6a5acd`,UWay:`708090`,UgYy:`708090`,snow:`fffafa`,sprRggYF:`ff7f`,stAlXe:`4682b4`,tan:`d2b48c`,teO:`8080`,tEstN:`d8bfd8`,tomato:`ff6347`,Qe:`40e0d0`,viTet:`ee82ee`,JHt:`f5deb3`,wEte:`ffffff`,wEtesmoke:`f5f5f5`,Lw:`ffff00`,LwgYF:`9acd32`};function Vp(){let e={},t=Object.keys(Bp),n=Object.keys(zp),r,i,a,o,s;for(r=0;r>16&255,a>>8&255,a&255]}return e}var Hp;function Up(e){Hp||(Hp=Vp(),Hp.transparent=[0,0,0,0]);let t=Hp[e.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:t.length===4?t[3]:255}}var Wp=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function Gp(e){let t=Wp.exec(e),n=255,r,i,a;if(t){if(t[7]!==r){let e=+t[7];n=t[8]?fp(e):dp(e*255,0,255)}return r=+t[1],i=+t[3],a=+t[5],r=255&(t[2]?fp(r):dp(r,0,255)),i=255&(t[4]?fp(i):dp(i,0,255)),a=255&(t[6]?fp(a):dp(a,0,255)),{r,g:i,b:a,a:n}}}function Kp(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${mp(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}var qp=e=>e<=.0031308?e*12.92:e**(1/2.4)*1.055-.055,Jp=e=>e<=.04045?e/12.92:((e+.055)/1.055)**2.4;function Yp(e,t,n){let r=Jp(mp(e.r)),i=Jp(mp(e.g)),a=Jp(mp(e.b));return{r:pp(qp(r+n*(Jp(mp(t.r))-r))),g:pp(qp(i+n*(Jp(mp(t.g))-i))),b:pp(qp(a+n*(Jp(mp(t.b))-a))),a:e.a+n*(t.a-e.a)}}function Xp(e,t,n){if(e){let r=Ap(e);r[t]=Math.max(0,Math.min(r[t]+r[t]*n,t===0?360:1)),r=Mp(r),e.r=r[0],e.g=r[1],e.b=r[2]}}function Zp(e,t){return e&&Object.assign(t||{},e)}function Qp(e){var t={r:0,g:0,b:0,a:255};return Array.isArray(e)?e.length>=3&&(t={r:e[0],g:e[1],b:e[2],a:255},e.length>3&&(t.a=pp(e[3]))):(t=Zp(e,{r:0,g:0,b:0,a:1}),t.a=pp(t.a)),t}function $p(e){return e.charAt(0)===`r`?Gp(e):Ip(e)}var em=class e{constructor(t){if(t instanceof e)return t;let n=typeof t,r;n===`object`?r=Qp(t):n===`string`&&(r=Sp(t)||Up(t)||$p(t)),this._rgb=r,this._valid=!!r}get valid(){return this._valid}get rgb(){var e=Zp(this._rgb);return e&&(e.a=mp(e.a)),e}set rgb(e){this._rgb=Qp(e)}rgbString(){return this._valid?Kp(this._rgb):void 0}hexString(){return this._valid?wp(this._rgb):void 0}hslString(){return this._valid?Rp(this._rgb):void 0}mix(e,t){if(e){let n=this.rgb,r=e.rgb,i,a=t===i?.5:t,o=2*a-1,s=n.a-r.a,c=((o*s===-1?o:(o+s)/(1+o*s))+1)/2;i=1-c,n.r=255&c*n.r+i*r.r+.5,n.g=255&c*n.g+i*r.g+.5,n.b=255&c*n.b+i*r.b+.5,n.a=a*n.a+(1-a)*r.a,this.rgb=n}return this}interpolate(e,t){return e&&(this._rgb=Yp(this._rgb,e._rgb,t)),this}clone(){return new e(this.rgb)}alpha(e){return this._rgb.a=pp(e),this}clearer(e){let t=this._rgb;return t.a*=1-e,this}greyscale(){let e=this._rgb;return e.r=e.g=e.b=up(e.r*.3+e.g*.59+e.b*.11),this}opaquer(e){let t=this._rgb;return t.a*=1+e,this}negate(){let e=this._rgb;return e.r=255-e.r,e.g=255-e.g,e.b=255-e.b,this}lighten(e){return Xp(this._rgb,2,e),this}darken(e){return Xp(this._rgb,2,-e),this}saturate(e){return Xp(this._rgb,1,e),this}desaturate(e){return Xp(this._rgb,1,-e),this}rotate(e){return Lp(this._rgb,e),this}};function tm(){}var nm=(()=>{let e=0;return()=>e++})();function rm(e){return e==null}function im(e){if(Array.isArray&&Array.isArray(e))return!0;let t=Object.prototype.toString.call(e);return t.slice(0,7)===`[object`&&t.slice(-6)===`Array]`}function am(e){return e!==null&&Object.prototype.toString.call(e)===`[object Object]`}function om(e){return(typeof e==`number`||e instanceof Number)&&isFinite(+e)}function sm(e,t){return om(e)?e:t}function cm(e,t){return e===void 0?t:e}var lm=(e,t)=>typeof e==`string`&&e.endsWith(`%`)?parseFloat(e)/100:+e/t,um=(e,t)=>typeof e==`string`&&e.endsWith(`%`)?parseFloat(e)/100*t:+e;function dm(e,t,n){if(e&&typeof e.call==`function`)return e.apply(n,t)}function fm(e,t,n,r){let i,a,o;if(im(e))if(a=e.length,r)for(i=a-1;i>=0;i--)t.call(n,e[i],i);else for(i=0;ie,x:e=>e.x,y:e=>e.y};function xm(e){let t=e.split(`.`),n=[],r=``;for(let e of t)r+=e,r.endsWith(`\\`)?r=r.slice(0,-1)+`.`:(n.push(r),r=``);return n}function Sm(e){let t=xm(e);return e=>{for(let n of t){if(n===``)break;e&&=e[n]}return e}}function Cm(e,t){return(bm[t]||(bm[t]=Sm(t)))(e)}function wm(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Tm=e=>e!==void 0,Em=e=>typeof e==`function`,Dm=(e,t)=>{if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0};function Om(e){return e.type===`mouseup`||e.type===`click`||e.type===`contextmenu`}var km=Math.PI,Am=2*km,jm=Am+km,Mm=1/0,Nm=km/180,Pm=km/2,Fm=km/4,Im=km*2/3,Lm=Math.log10,Rm=Math.sign;function zm(e,t,n){return Math.abs(e-t)e-t).pop(),t}function Hm(e){return typeof e==`symbol`||typeof e==`object`&&!!e&&!(Symbol.toPrimitive in e||`toString`in e||`valueOf`in e)}function Um(e){return!Hm(e)&&!isNaN(parseFloat(e))&&isFinite(e)}function Wm(e,t){let n=Math.round(e);return n-t<=e&&n+t>=e}function Gm(e,t,n){let r,i,a;for(r=0,i=e.length;rc&&l=Math.min(t,n)-r&&e<=Math.max(t,n)+r}function rh(e,t,n){n||=(n=>e[n]1;)a=i+r>>1,n(a)?i=a:r=a;return{lo:i,hi:r}}var ih=(e,t,n,r)=>rh(e,n,r?r=>{let i=e[r][t];return ie[r][t]rh(e,n,r=>e[r][t]>=n);function oh(e,t,n){let r=0,i=e.length;for(;rr&&e[i-1]>n;)i--;return r>0||i{let n=`_onData`+wm(t),r=e[t];Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value(...t){let i=r.apply(this,t);return e._chartjs.listeners.forEach(e=>{typeof e[n]==`function`&&e[n](...t)}),i}})})}function lh(e,t){let n=e._chartjs;if(!n)return;let r=n.listeners,i=r.indexOf(t);i!==-1&&r.splice(i,1),!(r.length>0)&&(sh.forEach(t=>{delete e[t]}),delete e._chartjs)}function uh(e){let t=new Set(e);return t.size===e.length?e:Array.from(t)}var dh=function(){return typeof window>`u`?function(e){return e()}:window.requestAnimationFrame}();function fh(e,t){let n=[],r=!1;return function(...i){n=i,r||(r=!0,dh.call(window,()=>{r=!1,e.apply(t,n)}))}}function ph(e,t){let n;return function(...r){return t?(clearTimeout(n),n=setTimeout(e,t,r)):e.apply(this,r),t}}var mh=e=>e===`start`?`left`:e===`end`?`right`:`center`,hh=(e,t,n)=>e===`start`?t:e===`end`?n:(t+n)/2,gh=(e,t,n,r)=>e===(r?`left`:`right`)?n:e===`center`?(t+n)/2:t;function _h(e,t,n){let r=t.length,i=0,a=r;if(e._sorted){let{iScale:o,vScale:s,_parsed:c}=e,l=e.dataset&&e.dataset.options?e.dataset.options.spanGaps:null,u=o.axis,{min:d,max:f,minDefined:p,maxDefined:m}=o.getUserBounds();if(p){if(i=Math.min(ih(c,u,d).lo,n?r:ih(t,u,o.getPixelForValue(d)).lo),l){let e=c.slice(0,i+1).reverse().findIndex(e=>!rm(e[s.axis]));i-=Math.max(0,e)}i=eh(i,0,r-1)}if(m){let e=Math.max(ih(c,o.axis,f,!0).hi+1,n?0:ih(t,u,o.getPixelForValue(f),!0).hi+1);if(l){let t=c.slice(e-1).findIndex(e=>!rm(e[s.axis]));e+=Math.max(0,t)}a=eh(e,i,r)-i}else a=r-i}return{start:i,count:a}}function vh(e){let{xScale:t,yScale:n,_scaleRanges:r}=e,i={xmin:t.min,xmax:t.max,ymin:n.min,ymax:n.max};if(!r)return e._scaleRanges=i,!0;let a=r.xmin!==t.min||r.xmax!==t.max||r.ymin!==n.min||r.ymax!==n.max;return Object.assign(r,i),a}var yh=e=>e===0||e===1,bh=(e,t,n)=>-(2**(10*--e)*Math.sin((e-t)*Am/n)),xh=(e,t,n)=>2**(-10*e)*Math.sin((e-t)*Am/n)+1,Sh={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>-e*(e-2),easeInOutQuad:e=>(e/=.5)<1?.5*e*e:-.5*(--e*(e-2)-1),easeInCubic:e=>e*e*e,easeOutCubic:e=>--e*e*e+1,easeInOutCubic:e=>(e/=.5)<1?.5*e*e*e:.5*((e-=2)*e*e+2),easeInQuart:e=>e*e*e*e,easeOutQuart:e=>-(--e*e*e*e-1),easeInOutQuart:e=>(e/=.5)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2),easeInQuint:e=>e*e*e*e*e,easeOutQuint:e=>--e*e*e*e*e+1,easeInOutQuint:e=>(e/=.5)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2),easeInSine:e=>-Math.cos(e*Pm)+1,easeOutSine:e=>Math.sin(e*Pm),easeInOutSine:e=>-.5*(Math.cos(km*e)-1),easeInExpo:e=>e===0?0:2**(10*(e-1)),easeOutExpo:e=>e===1?1:-(2**(-10*e))+1,easeInOutExpo:e=>yh(e)?e:e<.5?.5*2**(10*(e*2-1)):.5*(-(2**(-10*(e*2-1)))+2),easeInCirc:e=>e>=1?e:-(Math.sqrt(1-e*e)-1),easeOutCirc:e=>Math.sqrt(1- --e*e),easeInOutCirc:e=>(e/=.5)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1),easeInElastic:e=>yh(e)?e:bh(e,.075,.3),easeOutElastic:e=>yh(e)?e:xh(e,.075,.3),easeInOutElastic(e){let t=.1125,n=.45;return yh(e)?e:e<.5?.5*bh(e*2,t,n):.5+.5*xh(e*2-1,t,n)},easeInBack(e){return e*e*(2.70158*e-1.70158)},easeOutBack(e){return--e*e*(2.70158*e+1.70158)+1},easeInOutBack(e){let t=1.70158;return(e/=.5)<1?.5*(e*e*(((t*=1.525)+1)*e-t)):.5*((e-=2)*e*(((t*=1.525)+1)*e+t)+2)},easeInBounce:e=>1-Sh.easeOutBounce(1-e),easeOutBounce(e){let t=7.5625,n=2.75;return e<1/n?t*e*e:e<2/n?t*(e-=1.5/n)*e+.75:e<2.5/n?t*(e-=2.25/n)*e+.9375:t*(e-=2.625/n)*e+.984375},easeInOutBounce:e=>e<.5?Sh.easeInBounce(e*2)*.5:Sh.easeOutBounce(e*2-1)*.5+.5};function Ch(e){if(e&&typeof e==`object`){let t=e.toString();return t===`[object CanvasPattern]`||t===`[object CanvasGradient]`}return!1}function wh(e){return Ch(e)?e:new em(e)}function Th(e){return Ch(e)?e:new em(e).saturate(.5).darken(.1).hexString()}var Eh=[`x`,`y`,`borderWidth`,`radius`,`tension`],Dh=[`color`,`borderColor`,`backgroundColor`];function Oh(e){e.set(`animation`,{delay:void 0,duration:1e3,easing:`easeOutQuart`,fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),e.describe(`animation`,{_fallback:!1,_indexable:!1,_scriptable:e=>e!==`onProgress`&&e!==`onComplete`&&e!==`fn`}),e.set(`animations`,{colors:{type:`color`,properties:Dh},numbers:{type:`number`,properties:Eh}}),e.describe(`animations`,{_fallback:`animation`}),e.set(`transitions`,{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:`transparent`},visible:{type:`boolean`,duration:0}}},hide:{animations:{colors:{to:`transparent`},visible:{type:`boolean`,easing:`linear`,fn:e=>e|0}}}})}function kh(e){e.set(`layout`,{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}var Ah=new Map;function jh(e,t){t||={};let n=e+JSON.stringify(t),r=Ah.get(n);return r||(r=new Intl.NumberFormat(e,t),Ah.set(n,r)),r}function Mh(e,t,n){return jh(t,n).format(e)}var Nh={values(e){return im(e)?e:``+e},numeric(e,t,n){if(e===0)return`0`;let r=this.chart.options.locale,i,a=e;if(n.length>1){let t=Math.max(Math.abs(n[0].value),Math.abs(n[n.length-1].value));(t<1e-4||t>0x38d7ea4c68000)&&(i=`scientific`),a=Ph(e,n)}let o=Lm(Math.abs(a)),s=isNaN(o)?1:Math.max(Math.min(-1*Math.floor(o),20),0),c={notation:i,minimumFractionDigits:s,maximumFractionDigits:s};return Object.assign(c,this.options.ticks.format),Mh(e,r,c)},logarithmic(e,t,n){if(e===0)return`0`;let r=n[t].significand||e/10**Math.floor(Lm(e));return[1,2,3,5,10,15].includes(r)||t>.8*n.length?Nh.numeric.call(this,e,t,n):``}};function Ph(e,t){let n=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(n)>=1&&e!==Math.floor(e)&&(n=e-Math.floor(e)),n}var Fh={formatters:Nh};function Ih(e){e.set(`scale`,{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:`ticks`,clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(e,t)=>t.lineWidth,tickColor:(e,t)=>t.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:``,padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:``,padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Fh.formatters.values,minor:{},major:{},align:`center`,crossAlign:`near`,showLabelBackdrop:!1,backdropColor:`rgba(255, 255, 255, 0.75)`,backdropPadding:2}}),e.route(`scale.ticks`,`color`,``,`color`),e.route(`scale.grid`,`color`,``,`borderColor`),e.route(`scale.border`,`color`,``,`borderColor`),e.route(`scale.title`,`color`,``,`color`),e.describe(`scale`,{_fallback:!1,_scriptable:e=>!e.startsWith(`before`)&&!e.startsWith(`after`)&&e!==`callback`&&e!==`parser`,_indexable:e=>e!==`borderDash`&&e!==`tickBorderDash`&&e!==`dash`}),e.describe(`scales`,{_fallback:`scale`}),e.describe(`scale.ticks`,{_scriptable:e=>e!==`backdropPadding`&&e!==`callback`,_indexable:e=>e!==`backdropPadding`})}var Lh=Object.create(null),Rh=Object.create(null);function zh(e,t){if(!t)return e;let n=t.split(`.`);for(let t=0,r=n.length;te.chart.platform.getDevicePixelRatio(),this.elements={},this.events=[`mousemove`,`mouseout`,`click`,`touchstart`,`touchmove`],this.font={family:`'Helvetica Neue', 'Helvetica', 'Arial', sans-serif`,size:12,style:`normal`,lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(e,t)=>Th(t.backgroundColor),this.hoverBorderColor=(e,t)=>Th(t.borderColor),this.hoverColor=(e,t)=>Th(t.color),this.indexAxis=`x`,this.interaction={mode:`nearest`,intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(e),this.apply(t)}set(e,t){return Bh(this,e,t)}get(e){return zh(this,e)}describe(e,t){return Bh(Rh,e,t)}override(e,t){return Bh(Lh,e,t)}route(e,t,n,r){let i=zh(this,e),a=zh(this,n),o=`_`+t;Object.defineProperties(i,{[o]:{value:i[t],writable:!0},[t]:{enumerable:!0,get(){let e=this[o],t=a[r];return am(e)?Object.assign({},t,e):cm(e,t)},set(e){this[o]=e}}})}apply(e){e.forEach(e=>e(this))}}({_scriptable:e=>!e.startsWith(`on`),_indexable:e=>e!==`events`,hover:{_fallback:`interaction`},interaction:{_scriptable:!1,_indexable:!1}},[Oh,kh,Ih]);function Hh(e){return!e||rm(e.size)||rm(e.family)?null:(e.style?e.style+` `:``)+(e.weight?e.weight+` `:``)+e.size+`px `+e.family}function Uh(e,t,n,r,i){let a=t[i];return a||(a=t[i]=e.measureText(i).width,n.push(i)),a>r&&(r=a),r}function Wh(e,t,n,r){r||={};let i=r.data=r.data||{},a=r.garbageCollect=r.garbageCollect||[];r.font!==t&&(i=r.data={},a=r.garbageCollect=[],r.font=t),e.save(),e.font=t;let o=0,s=n.length,c,l,u,d,f;for(c=0;cn.length){for(c=0;c0&&e.stroke()}}function Yh(e,t,n){return n||=.5,!t||e&&e.x>t.left-n&&e.xt.top-n&&e.y0&&a.strokeColor!==``,c,l;for(e.save(),e.font=i.string,eg(e,a),c=0;c+e||0;function lg(e,t){let n={},r=am(t),i=r?Object.keys(t):t,a=am(e)?r?n=>cm(e[n],e[t[n]]):t=>e[t]:()=>e;for(let e of i)n[e]=cg(a(e));return n}function ug(e){return lg(e,{top:`y`,right:`x`,bottom:`y`,left:`x`})}function dg(e){return lg(e,[`topLeft`,`topRight`,`bottomLeft`,`bottomRight`])}function fg(e){let t=ug(e);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function pg(e,t){e||={},t||=Vh.font;let n=cm(e.size,t.size);typeof n==`string`&&(n=parseInt(n,10));let r=cm(e.style,t.style);r&&!(``+r).match(og)&&(console.warn(`Invalid font style specified: "`+r+`"`),r=void 0);let i={family:cm(e.family,t.family),lineHeight:sg(cm(e.lineHeight,t.lineHeight),n),size:n,style:r,weight:cm(e.weight,t.weight),string:``};return i.string=Hh(i),i}function mg(e,t,n,r){let i=!0,a,o,s;for(a=0,o=e.length;an&&e===0?0:e+t;return{min:o(r,-Math.abs(a)),max:o(i,a)}}function gg(e,t){return Object.assign(Object.create(e),t)}function _g(e,t=[``],n,r,i=()=>e[0]){let a=n||e;return r===void 0&&(r=Ng(`_fallback`,e)),new Proxy({[Symbol.toStringTag]:`Object`,_cacheable:!0,_scopes:e,_rootScopes:a,_fallback:r,_getTarget:i,override:n=>_g([n,...e],t,a,r)},{deleteProperty(t,n){return delete t[n],delete t._keys,delete e[0][n],!0},get(n,r){return Sg(n,r,()=>Mg(r,t,e,n))},getOwnPropertyDescriptor(e,t){return Reflect.getOwnPropertyDescriptor(e._scopes[0],t)},getPrototypeOf(){return Reflect.getPrototypeOf(e[0])},has(e,t){return Pg(e).includes(t)},ownKeys(e){return Pg(e)},set(e,t,n){let r=e._storage||=i();return e[t]=r[t]=n,delete e._keys,!0}})}function vg(e,t,n,r){let i={_cacheable:!1,_proxy:e,_context:t,_subProxy:n,_stack:new Set,_descriptors:yg(e,r),setContext:t=>vg(e,t,n,r),override:i=>vg(e.override(i),t,n,r)};return new Proxy(i,{deleteProperty(t,n){return delete t[n],delete e[n],!0},get(e,t,n){return Sg(e,t,()=>Cg(e,t,n))},getOwnPropertyDescriptor(t,n){return t._descriptors.allKeys?Reflect.has(e,n)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(e,n)},getPrototypeOf(){return Reflect.getPrototypeOf(e)},has(t,n){return Reflect.has(e,n)},ownKeys(){return Reflect.ownKeys(e)},set(t,n,r){return e[n]=r,delete t[n],!0}})}function yg(e,t={scriptable:!0,indexable:!0}){let{_scriptable:n=t.scriptable,_indexable:r=t.indexable,_allKeys:i=t.allKeys}=e;return{allKeys:i,scriptable:n,indexable:r,isScriptable:Em(n)?n:()=>n,isIndexable:Em(r)?r:()=>r}}var bg=(e,t)=>e?e+wm(t):t,xg=(e,t)=>am(t)&&e!==`adapters`&&(Object.getPrototypeOf(t)===null||t.constructor===Object);function Sg(e,t,n){if(Object.prototype.hasOwnProperty.call(e,t)||t===`constructor`)return e[t];let r=n();return e[t]=r,r}function Cg(e,t,n){let{_proxy:r,_context:i,_subProxy:a,_descriptors:o}=e,s=r[t];return Em(s)&&o.isScriptable(t)&&(s=wg(t,s,e,n)),im(s)&&s.length&&(s=Tg(t,s,e,o.isIndexable)),xg(t,s)&&(s=vg(s,i,a&&a[t],o)),s}function wg(e,t,n,r){let{_proxy:i,_context:a,_subProxy:o,_stack:s}=n;if(s.has(e))throw Error(`Recursion detected: `+Array.from(s).join(`->`)+`->`+e);s.add(e);let c=t(a,o||r);return s.delete(e),xg(e,c)&&(c=kg(i._scopes,i,e,c)),c}function Tg(e,t,n,r){let{_proxy:i,_context:a,_subProxy:o,_descriptors:s}=n;if(a.index!==void 0&&r(e))return t[a.index%t.length];if(am(t[0])){let n=t,r=i._scopes.filter(e=>e!==n);t=[];for(let c of n){let n=kg(r,i,e,c);t.push(vg(n,a,o&&o[e],s))}}return t}function Eg(e,t,n){return Em(e)?e(t,n):e}var Dg=(e,t)=>e===!0?t:typeof e==`string`?Cm(t,e):void 0;function Og(e,t,n,r,i){for(let a of t){let t=Dg(n,a);if(t){e.add(t);let a=Eg(t._fallback,n,i);if(a!==void 0&&a!==n&&a!==r)return a}else if(t===!1&&r!==void 0&&n!==r)return null}return!1}function kg(e,t,n,r){let i=t._rootScopes,a=Eg(t._fallback,n,r),o=[...e,...i],s=new Set;s.add(r);let c=Ag(s,o,n,a||n,r);return c===null||a!==void 0&&a!==n&&(c=Ag(s,o,a,c,r),c===null)?!1:_g(Array.from(s),[``],i,a,()=>jg(t,n,r))}function Ag(e,t,n,r,i){for(;n;)n=Og(e,t,n,r,i);return n}function jg(e,t,n){let r=e._getTarget();t in r||(r[t]={});let i=r[t];return im(i)&&am(n)?n:i||{}}function Mg(e,t,n,r){let i;for(let a of t)if(i=Ng(bg(a,e),n),i!==void 0)return xg(e,i)?kg(n,r,e,i):i}function Ng(e,t){for(let n of t){if(!n)continue;let t=n[e];if(t!==void 0)return t}}function Pg(e){let t=e._keys;return t||=e._keys=Fg(e._scopes),t}function Fg(e){let t=new Set;for(let n of e)for(let e of Object.keys(n).filter(e=>!e.startsWith(`_`)))t.add(e);return Array.from(t)}function Ig(e,t,n,r){let{iScale:i}=e,{key:a=`r`}=this._parsing,o=Array(r),s,c,l,u;for(s=0,c=r;ste===`x`?`y`:`x`;function Bg(e,t,n,r){let i=e.skip?t:e,a=t,o=n.skip?t:n,s=Xm(a,i),c=Xm(o,a),l=s/(s+c),u=c/(s+c);l=isNaN(l)?0:l,u=isNaN(u)?0:u;let d=r*l,f=r*u;return{previous:{x:a.x-d*(o.x-i.x),y:a.y-d*(o.y-i.y)},next:{x:a.x+f*(o.x-i.x),y:a.y+f*(o.y-i.y)}}}function Vg(e,t,n){let r=e.length,i,a,o,s,c,l=Rg(e,0);for(let u=0;u!e.skip)),t.cubicInterpolationMode===`monotone`)Ug(e,i);else{let n=r?e[e.length-1]:e[0];for(a=0,o=e.length;ae.ownerDocument.defaultView.getComputedStyle(e,null);function Zg(e,t){return Xg(e).getPropertyValue(t)}var Qg=[`top`,`right`,`bottom`,`left`];function $g(e,t,n){let r={};n=n?`-`+n:``;for(let i=0;i<4;i++){let a=Qg[i];r[a]=parseFloat(e[t+`-`+a+n])||0}return r.width=r.left+r.right,r.height=r.top+r.bottom,r}var e_=(e,t,n)=>(e>0||t>0)&&(!n||!n.shadowRoot);function t_(e,t){let n=e.touches,r=n&&n.length?n[0]:e,{offsetX:i,offsetY:a}=r,o=!1,s,c;if(e_(i,a,e.target))s=i,c=a;else{let e=t.getBoundingClientRect();s=r.clientX-e.left,c=r.clientY-e.top,o=!0}return{x:s,y:c,box:o}}function n_(e,t){if(`native`in e)return e;let{canvas:n,currentDevicePixelRatio:r}=t,i=Xg(n),a=i.boxSizing===`border-box`,o=$g(i,`padding`),s=$g(i,`border`,`width`),{x:c,y:l,box:u}=t_(e,n),d=o.left+(u&&s.left),f=o.top+(u&&s.top),{width:p,height:m}=t;return a&&(p-=o.width+s.width,m-=o.height+s.height),{x:Math.round((c-d)/p*n.width/r),y:Math.round((l-f)/m*n.height/r)}}function r_(e,t,n){let r,i;if(t===void 0||n===void 0){let a=e&&Jg(e);if(!a)t=e.clientWidth,n=e.clientHeight;else{let e=a.getBoundingClientRect(),o=Xg(a),s=$g(o,`border`,`width`),c=$g(o,`padding`);t=e.width-c.width-s.width,n=e.height-c.height-s.height,r=Yg(o.maxWidth,a,`clientWidth`),i=Yg(o.maxHeight,a,`clientHeight`)}}return{width:t,height:n,maxWidth:r||Mm,maxHeight:i||Mm}}var i_=e=>Math.round(e*10)/10;function a_(e,t,n,r){let i=Xg(e),a=$g(i,`margin`),o=Yg(i.maxWidth,e,`clientWidth`)||Mm,s=Yg(i.maxHeight,e,`clientHeight`)||Mm,c=r_(e,t,n),{width:l,height:u}=c;if(i.boxSizing===`content-box`){let e=$g(i,`border`,`width`),t=$g(i,`padding`);l-=t.width+e.width,u-=t.height+e.height}return l=Math.max(0,l-a.width),u=Math.max(0,r?l/r:u-a.height),l=i_(Math.min(l,o,c.maxWidth)),u=i_(Math.min(u,s,c.maxHeight)),l&&!u&&(u=i_(l/2)),(t!==void 0||n!==void 0)&&r&&c.height&&u>c.height&&(u=c.height,l=i_(Math.floor(u*r))),{width:l,height:u}}function o_(e,t,n){let r=t||1,i=i_(e.height*r),a=i_(e.width*r);e.height=i_(e.height),e.width=i_(e.width);let o=e.canvas;return o.style&&(n||!o.style.height&&!o.style.width)&&(o.style.height=`${e.height}px`,o.style.width=`${e.width}px`),e.currentDevicePixelRatio!==r||o.height!==i||o.width!==a?(e.currentDevicePixelRatio=r,o.height=i,o.width=a,e.ctx.setTransform(r,0,0,r,0,0),!0):!1}var s_=function(){let e=!1;try{let t={get passive(){return e=!0,!1}};qg()&&(window.addEventListener(`test`,null,t),window.removeEventListener(`test`,null,t))}catch{}return e}();function c_(e,t){let n=Zg(e,t),r=n&&n.match(/^(\d+)(\.\d+)?px$/);return r?+r[1]:void 0}function l_(e,t,n,r){return{x:e.x+n*(t.x-e.x),y:e.y+n*(t.y-e.y)}}function u_(e,t,n,r){return{x:e.x+n*(t.x-e.x),y:r===`middle`?n<.5?e.y:t.y:r===`after`?n<1?e.y:t.y:n>0?t.y:e.y}}function d_(e,t,n,r){let i={x:e.cp2x,y:e.cp2y},a={x:t.cp1x,y:t.cp1y},o=l_(e,i,n),s=l_(i,a,n),c=l_(a,t,n);return l_(l_(o,s,n),l_(s,c,n),n)}var f_=function(e,t){return{x(n){return e+e+t-n},setWidth(e){t=e},textAlign(e){return e===`center`?e:e===`right`?`left`:`right`},xPlus(e,t){return e-t},leftForLtr(e,t){return e-t}}},p_=function(){return{x(e){return e},setWidth(e){},textAlign(e){return e},xPlus(e,t){return e+t},leftForLtr(e,t){return e}}};function m_(e,t,n){return e?f_(t,n):p_()}function h_(e,t){let n,r;(t===`ltr`||t===`rtl`)&&(n=e.canvas.style,r=[n.getPropertyValue(`direction`),n.getPropertyPriority(`direction`)],n.setProperty(`direction`,t,`important`),e.prevTextDirection=r)}function g_(e,t){t!==void 0&&(delete e.prevTextDirection,e.canvas.style.setProperty(`direction`,t[0],t[1]))}function __(e){return e===`angle`?{between:$m,compare:Zm,normalize:Qm}:{between:nh,compare:(e,t)=>e-t,normalize:e=>e}}function v_({start:e,end:t,count:n,loop:r,style:i}){return{start:e%n,end:t%n,loop:r&&(t-e+1)%n===0,style:i}}function y_(e,t,n){let{property:r,start:i,end:a}=n,{between:o,normalize:s}=__(r),c=t.length,{start:l,end:u,loop:d}=e,f,p;if(d){for(l+=c,u+=c,f=0,p=c;fc(i,y,_)&&s(i,y)!==0,x=()=>s(a,_)===0||c(a,y,_),S=()=>h||b(),C=()=>!h||x();for(let e=u,n=u;e<=d;++e)v=t[e%o],!v.skip&&(_=l(v[r]),_!==y&&(h=c(_,i,a),g===null&&S()&&(g=s(_,i)===0?e:n),g!==null&&C()&&(m.push(v_({start:g,end:e,loop:f,count:o,style:p})),g=null),n=e,y=_));return g!==null&&m.push(v_({start:g,end:d,loop:f,count:o,style:p})),m}function x_(e,t){let n=[],r=e.segments;for(let i=0;ii&&e[a%t].skip;)a--;return a%=t,{start:i,end:a}}function C_(e,t,n,r){let i=e.length,a=[],o=t,s=e[t],c;for(c=t+1;c<=n;++c){let n=e[c%i];n.skip||n.stop?s.skip||(r=!1,a.push({start:t%i,end:(c-1)%i,loop:r}),t=o=n.stop?c:null):(o=c,s.skip&&(t=c)),s=n}return o!==null&&a.push({start:t%i,end:o%i,loop:r}),a}function w_(e,t){let n=e.points,r=e.options.spanGaps,i=n.length;if(!i)return[];let a=!!e._loop,{start:o,end:s}=S_(n,i,a,r);return r===!0?T_(e,[{start:o,end:s,loop:a}],n,t):T_(e,C_(n,o,sr({chart:e,initial:t.initial,numSteps:a,currentStep:Math.min(n-t.start,a)}))}_refresh(){this._request||=(this._running=!0,dh.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(e=Date.now()){let t=0;this._charts.forEach((n,r)=>{if(!n.running||!n.items.length)return;let i=n.items,a=i.length-1,o=!1,s;for(;a>=0;--a)s=i[a],s._active?(s._total>n.duration&&(n.duration=s._total),s.tick(e),o=!0):(i[a]=i[i.length-1],i.pop());o&&(r.draw(),this._notify(r,n,e,`progress`)),i.length||(n.running=!1,this._notify(r,n,e,`complete`),n.initial=!1),t+=i.length}),this._lastDate=e,t===0&&(this._running=!1)}_getAnims(e){let t=this._charts,n=t.get(e);return n||(n={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},t.set(e,n)),n}listen(e,t,n){this._getAnims(e).listeners[t].push(n)}add(e,t){!t||!t.length||this._getAnims(e).items.push(...t)}has(e){return this._getAnims(e).items.length>0}start(e){let t=this._charts.get(e);t&&(t.running=!0,t.start=Date.now(),t.duration=t.items.reduce((e,t)=>Math.max(e,t._duration),0),this._refresh())}running(e){if(!this._running)return!1;let t=this._charts.get(e);return!(!t||!t.running||!t.items.length)}stop(e){let t=this._charts.get(e);if(!t||!t.items.length)return;let n=t.items,r=n.length-1;for(;r>=0;--r)n[r].cancel();t.items=[],this._notify(e,t,Date.now(),`complete`)}remove(e){return this._charts.delete(e)}},N_=`transparent`,P_={boolean(e,t,n){return n>.5?t:e},color(e,t,n){let r=wh(e||N_),i=r.valid&&wh(t||N_);return i&&i.valid?i.mix(r,n).hexString():t},number(e,t,n){return e+(t-e)*n}},F_=class{constructor(e,t,n,r){let i=t[n];r=mg([e.to,r,i,e.from]);let a=mg([e.from,i,r]);this._active=!0,this._fn=e.fn||P_[e.type||typeof a],this._easing=Sh[e.easing]||Sh.linear,this._start=Math.floor(Date.now()+(e.delay||0)),this._duration=this._total=Math.floor(e.duration),this._loop=!!e.loop,this._target=t,this._prop=n,this._from=a,this._to=r,this._promises=void 0}active(){return this._active}update(e,t,n){if(this._active){this._notify(!1);let r=this._target[this._prop],i=n-this._start,a=this._duration-i;this._start=n,this._duration=Math.floor(Math.max(a,e.duration)),this._total+=i,this._loop=!!e.loop,this._to=mg([e.to,t,r,e.from]),this._from=mg([e.from,r,t])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(e){let t=e-this._start,n=this._duration,r=this._prop,i=this._from,a=this._loop,o=this._to,s;if(this._active=i!==o&&(a||t1?2-s:s,s=this._easing(Math.min(1,Math.max(0,s))),this._target[r]=this._fn(i,o,s)}wait(){let e=this._promises||=[];return new Promise((t,n)=>{e.push({res:t,rej:n})})}_notify(e){let t=e?`res`:`rej`,n=this._promises||[];for(let e=0;e{let i=e[r];if(!am(i))return;let a={};for(let e of t)a[e]=i[e];(im(i.properties)&&i.properties||[r]).forEach(e=>{(e===r||!n.has(e))&&n.set(e,a)})})}_animateOptions(e,t){let n=t.options,r=R_(e,n);if(!r)return[];let i=this._createAnimations(r,n);return n.$shared&&L_(e.options.$animations,n).then(()=>{e.options=n},()=>{}),i}_createAnimations(e,t){let n=this._properties,r=[],i=e.$animations||={},a=Object.keys(t),o=Date.now(),s;for(s=a.length-1;s>=0;--s){let c=a[s];if(c.charAt(0)===`$`)continue;if(c===`options`){r.push(...this._animateOptions(e,t));continue}let l=t[c],u=i[c],d=n.get(c);if(u)if(d&&u.active()){u.update(d,l,o);continue}else u.cancel();if(!d||!d.duration){e[c]=l;continue}i[c]=u=new F_(d,e,c,l),r.push(u)}return r}update(e,t){if(this._properties.size===0){Object.assign(e,t);return}let n=this._createAnimations(e,t);if(n.length)return M_.add(this._chart,n),!0}};function L_(e,t){let n=[],r=Object.keys(t);for(let t=0;t0||!n&&t<0)return i.index}return null}function X_(e,t){let{chart:n,_cachedMeta:r}=e,i=n._stacks||={},{iScale:a,vScale:o,index:s}=r,c=a.axis,l=o.axis,u=K_(a,o,r),d=t.length,f;for(let e=0;en[e].axis===t).shift()}function Q_(e,t){return gg(e,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:`default`,type:`dataset`})}function $_(e,t,n){return gg(e,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:n,index:t,mode:`default`,type:`data`})}function ev(e,t){let n=e.controller.index,r=e.vScale&&e.vScale.axis;if(r){t||=e._parsed;for(let e of t){let t=e._stacks;if(!t||t[r]===void 0||t[r][n]===void 0)return;delete t[r][n],t[r]._visualValues!==void 0&&t[r]._visualValues[n]!==void 0&&delete t[r]._visualValues[n]}}}var tv=e=>e===`reset`||e===`none`,nv=(e,t)=>t?e:Object.assign({},e),rv=(e,t,n)=>e&&!t.hidden&&t._stacked&&{keys:H_(n,!0),values:null},iv=class{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(e,t){this.chart=e,this._ctx=e.ctx,this.index=t,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){let e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=G_(e.vScale,e),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled(`filler`)&&console.warn(`Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options`)}updateIndex(e){this.index!==e&&ev(this._cachedMeta),this.index=e}linkScales(){let e=this.chart,t=this._cachedMeta,n=this.getDataset(),r=(e,t,n,r)=>e===`x`?t:e===`r`?r:n,i=t.xAxisID=cm(n.xAxisID,Z_(e,`x`)),a=t.yAxisID=cm(n.yAxisID,Z_(e,`y`)),o=t.rAxisID=cm(n.rAxisID,Z_(e,`r`)),s=t.indexAxis,c=t.iAxisID=r(s,i,a,o),l=t.vAxisID=r(s,a,i,o);t.xScale=this.getScaleForId(i),t.yScale=this.getScaleForId(a),t.rScale=this.getScaleForId(o),t.iScale=this.getScaleForId(c),t.vScale=this.getScaleForId(l)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){let t=this._cachedMeta;return e===t.iScale?t.vScale:t.iScale}reset(){this._update(`reset`)}_destroy(){let e=this._cachedMeta;this._data&&lh(this._data,this),e._stacked&&ev(e)}_dataCheck(){let e=this.getDataset(),t=e.data||=[],n=this._data;if(am(t)){let e=this._cachedMeta;this._data=W_(t,e)}else if(n!==t){if(n){lh(n,this);let e=this._cachedMeta;ev(e),e._parsed=[]}t&&Object.isExtensible(t)&&ch(t,this),this._syncList=[],this._data=t}}addElements(){let e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){let t=this._cachedMeta,n=this.getDataset(),r=!1;this._dataCheck();let i=t._stacked;t._stacked=G_(t.vScale,t),t.stack!==n.stack&&(r=!0,ev(t),t.stack=n.stack),this._resyncElements(e),(r||i!==t._stacked)&&(X_(this,t._parsed),t._stacked=G_(t.vScale,t))}configure(){let e=this.chart.config,t=e.datasetScopeKeys(this._type),n=e.getOptionScopes(this.getDataset(),t,!0);this.options=e.createResolver(n,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,t){let{_cachedMeta:n,_data:r}=this,{iScale:i,_stacked:a}=n,o=i.axis,s=e===0&&t===r.length||n._sorted,c=e>0&&n._parsed[e-1],l,u,d;if(this._parsing===!1)n._parsed=r,n._sorted=!0,d=r;else{d=im(r[e])?this.parseArrayData(n,r,e,t):am(r[e])?this.parseObjectData(n,r,e,t):this.parsePrimitiveData(n,r,e,t);let i=()=>u[o]===null||c&&u[o]t||u=0;--d)if(!p()){this.updateRangeFromParsed(c,e,f,s);break}}return c}getAllParsedValues(e){let t=this._cachedMeta._parsed,n=[],r,i,a;for(r=0,i=t.length;r=0&&ethis.getContext(n,r,t),u);return p.$shared&&(p.$shared=s,i[a]=Object.freeze(nv(p,s))),p}_resolveAnimations(e,t,n){let r=this.chart,i=this._cachedDataOpts,a=`animation-${t}`,o=i[a];if(o)return o;let s;if(r.options.animation!==!1){let r=this.chart.config,i=r.datasetAnimationScopeKeys(this._type,t),a=r.getOptionScopes(this.getDataset(),i);s=r.createResolver(a,this.getContext(e,n,t))}let c=new I_(r,s&&s.animations);return s&&s._cacheable&&(i[a]=Object.freeze(c)),c}getSharedOptions(e){if(e.$shared)return this._sharedOptions||=Object.assign({},e)}includeOptions(e,t){return!t||tv(e)||this.chart._animationsDisabled}_getSharedOptions(e,t){let n=this.resolveDataElementOptions(e,t),r=this._sharedOptions,i=this.getSharedOptions(n),a=this.includeOptions(t,i)||i!==r;return this.updateSharedOptions(i,t,n),{sharedOptions:i,includeOptions:a}}updateElement(e,t,n,r){tv(r)?Object.assign(e,n):this._resolveAnimations(t,r).update(e,n)}updateSharedOptions(e,t,n){e&&!tv(t)&&this._resolveAnimations(void 0,t).update(e,n)}_setStyle(e,t,n,r){e.active=r;let i=this.getStyle(t,r);this._resolveAnimations(t,n,r).update(e,{options:!r&&this.getSharedOptions(i)||i})}removeHoverStyle(e,t,n){this._setStyle(e,n,`active`,!1)}setHoverStyle(e,t,n){this._setStyle(e,n,`active`,!0)}_removeDatasetHoverStyle(){let e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,`active`,!1)}_setDatasetHoverStyle(){let e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,`active`,!0)}_resyncElements(e){let t=this._data,n=this._cachedMeta.data;for(let[e,t,n]of this._syncList)this[e](t,n);this._syncList=[];let r=n.length,i=t.length,a=Math.min(i,r);a&&this.parse(0,a),i>r?this._insertElements(r,i-r,e):i{for(e.length+=t,o=e.length-1;o>=a;o--)e[o]=e[o-t]};for(s(i),o=e;oe-t))}return e._cache.$bar}function ov(e){let t=e.iScale,n=av(t,e.type),r=t._length,i,a,o,s,c=()=>{o===32767||o===-32768||(Tm(s)&&(r=Math.min(r,Math.abs(o-s)||r)),s=o)};for(i=0,a=n.length;i0?i[e-1]:null,s=eMath.abs(s)&&(c=s,l=o),t[n.axis]=l,t._custom={barStart:c,barEnd:l,start:i,end:a,min:o,max:s}}function uv(e,t,n,r){return im(e)?lv(e,t,n,r):t[n.axis]=n.parse(e,r),t}function dv(e,t,n,r){let i=e.iScale,a=e.vScale,o=i.getLabels(),s=i===a,c=[],l,u,d,f;for(l=n,u=n+r;l=n?1:-1):Rm(e)}function mv(e){let t,n,r,i,a;return e.horizontal?(t=e.base>e.x,n=`left`,r=`right`):(t=e.basee.controller.options.grouped),i=n.options.stacked,a=[],o=this._cachedMeta.controller.getParsed(t),s=o&&o[n.axis],c=e=>{let t=e._parsed.find(e=>e[n.axis]===s),r=t&&t[e.vScale.axis];if(rm(r)||isNaN(r))return!0};for(let n of r)if(!(t!==void 0&&c(n))&&((i===!1||a.indexOf(n.stack)===-1||i===void 0&&n.stack===void 0)&&a.push(n.stack),n.index===e))break;return a.length||a.push(void 0),a}_getStackCount(e){return this._getStacks(void 0,e).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){let e=this.chart.scales,t=this.chart.options.indexAxis;return Object.keys(e).filter(n=>e[n].axis===t).shift()}_getAxis(){let e={},t=this.getFirstScaleIdForIndexAxis();for(let n of this.chart.data.datasets)e[cm(this.chart.options.indexAxis===`x`?n.xAxisID:n.yAxisID,t)]=!0;return Object.keys(e)}_getStackIndex(e,t,n){let r=this._getStacks(e,n),i=t===void 0?-1:r.indexOf(t);return i===-1?r.length-1:i}_getRuler(){let e=this.options,t=this._cachedMeta,n=t.iScale,r=[],i,a;for(i=0,a=t.data.length;i=0;--n)t=Math.max(t,e[n].size(this.resolveDataElementOptions(n))/2);return t>0&&t}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart.data.labels||[],{xScale:r,yScale:i}=t,a=this.getParsed(e),o=r.getLabelForValue(a.x),s=i.getLabelForValue(a.y),c=a._custom;return{label:n[e]||``,value:`(`+o+`, `+s+(c?`, `+c:``)+`)`}}update(e){let t=this._cachedMeta.data;this.updateElements(t,0,t.length,e)}updateElements(e,t,n,r){let i=r===`reset`,{iScale:a,vScale:o}=this._cachedMeta,{sharedOptions:s,includeOptions:c}=this._getSharedOptions(t,r),l=a.axis,u=o.axis;for(let d=t;d$m(e,s,c,!0)?1:Math.max(t,t*n,r,r*n),m=(e,t,r)=>$m(e,s,c,!0)?-1:Math.min(t,t*n,r,r*n),h=p(0,l,d),g=p(Pm,u,f),_=m(km,l,d),v=m(km+Pm,u,f);r=(h-_)/2,i=(g-v)/2,a=-(h+_)/2,o=-(g+v)/2}return{ratioX:r,ratioY:i,offsetX:a,offsetY:o}}var Cv=class extends iv{static id=`doughnut`;static defaults={datasetElementType:!1,dataElementType:`arc`,animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:`number`,properties:[`circumference`,`endAngle`,`innerRadius`,`outerRadius`,`startAngle`,`x`,`y`,`offset`,`borderWidth`,`spacing`]}},cutout:`50%`,rotation:0,circumference:360,radius:`100%`,spacing:0,indexAxis:`r`};static descriptors={_scriptable:e=>e!==`spacing`,_indexable:e=>e!==`spacing`&&!e.startsWith(`borderDash`)&&!e.startsWith(`hoverBorderDash`)};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){let t=e.data,{labels:{pointStyle:n,textAlign:r,color:i,useBorderRadius:a,borderRadius:o}}=e.legend.options;return t.labels.length&&t.datasets.length?t.labels.map((t,s)=>{let c=e.getDatasetMeta(0).controller.getStyle(s);return{text:t,fillStyle:c.backgroundColor,fontColor:i,hidden:!e.getDataVisibility(s),lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:c.borderWidth,strokeStyle:c.borderColor,textAlign:r,pointStyle:n,borderRadius:a&&(o||c.borderRadius),index:s}}):[]}},onClick(e,t,n){n.chart.toggleDataVisibility(t.index),n.chart.update()}}}};constructor(e,t){super(e,t),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(e,t){let n=this.getDataset().data,r=this._cachedMeta;if(this._parsing===!1)r._parsed=n;else{let i=e=>+n[e];if(am(n[e])){let{key:e=`value`}=this._parsing;i=t=>+Cm(n[t],e)}let a,o;for(a=e,o=e+t;a0&&!isNaN(e)?Math.abs(e)/t*Am:0}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart,r=n.data.labels||[],i=Mh(t._parsed[e],n.options.locale);return{label:r[e]||``,value:i}}getMaxBorderWidth(e){let t=0,n=this.chart,r,i,a,o,s;if(!e){for(r=0,i=n.data.datasets.length;r0&&this.getParsed(t-1);for(let n=0;n=_){v.skip=!0;continue}let b=this.getParsed(n),x=rm(b[f]),S=v[d]=a.getPixelForValue(b[d],n),C=v[f]=i||x?o.getBasePixel():o.getPixelForValue(s?this.applyStack(o,b,s):b[f],n);v.skip=isNaN(S)||isNaN(C)||x,v.stop=n>0&&Math.abs(b[d]-y[d])>h,m&&(v.parsed=b,v.raw=c.data[n]),u&&(v.options=l||this.resolveDataElementOptions(n,p.active?`active`:r)),g||this.updateElement(p,n,v,r),y=b}}getMaxOverflow(){let e=this._cachedMeta,t=e.dataset,n=t.options&&t.options.borderWidth||0,r=e.data||[];if(!r.length)return n;let i=r[0].size(this.resolveDataElementOptions(0)),a=r[r.length-1].size(this.resolveDataElementOptions(r.length-1));return Math.max(n,i,a)/2}draw(){let e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}},Tv=class extends iv{static id=`polarArea`;static defaults={dataElementType:`arc`,animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:`number`,properties:[`x`,`y`,`startAngle`,`endAngle`,`innerRadius`,`outerRadius`]}},indexAxis:`r`,startAngle:0};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){let t=e.data;if(t.labels.length&&t.datasets.length){let{labels:{pointStyle:n,color:r}}=e.legend.options;return t.labels.map((t,i)=>{let a=e.getDatasetMeta(0).controller.getStyle(i);return{text:t,fillStyle:a.backgroundColor,strokeStyle:a.borderColor,fontColor:r,lineWidth:a.borderWidth,pointStyle:n,hidden:!e.getDataVisibility(i),index:i}})}return[]}},onClick(e,t,n){n.chart.toggleDataVisibility(t.index),n.chart.update()}}},scales:{r:{type:`radialLinear`,angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(e,t){super(e,t),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart,r=n.data.labels||[],i=Mh(t._parsed[e].r,n.options.locale);return{label:r[e]||``,value:i}}parseObjectData(e,t,n,r){return Ig.bind(this)(e,t,n,r)}update(e){let t=this._cachedMeta.data;this._updateRadius(),this.updateElements(t,0,t.length,e)}getMinMax(){let e=this._cachedMeta,t={min:1/0,max:-1/0};return e.data.forEach((e,n)=>{let r=this.getParsed(n).r;!isNaN(r)&&this.chart.getDataVisibility(n)&&(rt.max&&(t.max=r))}),t}_updateRadius(){let e=this.chart,t=e.chartArea,n=e.options,r=Math.min(t.right-t.left,t.bottom-t.top),i=Math.max(r/2,0),a=(i-Math.max(n.cutoutPercentage?i/100*n.cutoutPercentage:1,0))/e.getVisibleDatasetCount();this.outerRadius=i-a*this.index,this.innerRadius=this.outerRadius-a}updateElements(e,t,n,r){let i=r===`reset`,a=this.chart,o=a.options.animation,s=this._cachedMeta.rScale,c=s.xCenter,l=s.yCenter,u=s.getIndexAngle(0)-.5*km,d=u,f,p=360/this.countVisibleElements();for(f=0;f{!isNaN(this.getParsed(n).r)&&this.chart.getDataVisibility(n)&&t++}),t}_computeAngle(e,t,n){return this.chart.getDataVisibility(e)?Km(this.resolveDataElementOptions(e,t).angle||n):0}},Ev=Object.freeze({__proto__:null,BarController:bv,BubbleController:xv,DoughnutController:Cv,LineController:wv,PieController:class extends Cv{static id=`pie`;static defaults={cutout:0,rotation:0,circumference:360,radius:`100%`}},PolarAreaController:Tv,RadarController:class extends iv{static id=`radar`;static defaults={datasetElementType:`line`,dataElementType:`point`,indexAxis:`r`,showLine:!0,elements:{line:{fill:`start`}}};static overrides={aspectRatio:1,scales:{r:{type:`radialLinear`}}};getLabelAndValue(e){let t=this._cachedMeta.vScale,n=this.getParsed(e);return{label:t.getLabels()[e],value:``+t.getLabelForValue(n[t.axis])}}parseObjectData(e,t,n,r){return Ig.bind(this)(e,t,n,r)}update(e){let t=this._cachedMeta,n=t.dataset,r=t.data||[],i=t.iScale.getLabels();if(n.points=r,e!==`resize`){let t=this.resolveDatasetElementOptions(e);this.options.showLine||(t.borderWidth=0);let a={_loop:!0,_fullLoop:i.length===r.length,options:t};this.updateElement(n,void 0,a,e)}this.updateElements(r,0,r.length,e)}updateElements(e,t,n,r){let i=this._cachedMeta.rScale,a=r===`reset`;for(let o=t;o0&&this.getParsed(t-1);for(let l=t;l0&&Math.abs(n[f]-v[f])>g,h&&(m.parsed=n,m.raw=c.data[l]),d&&(m.options=u||this.resolveDataElementOptions(l,t.active?`active`:r)),_||this.updateElement(t,l,m,r),v=n}this.updateSharedOptions(u,r,l)}getMaxOverflow(){let e=this._cachedMeta,t=e.data||[];if(!this.options.showLine){let e=0;for(let n=t.length-1;n>=0;--n)e=Math.max(e,t[n].size(this.resolveDataElementOptions(n))/2);return e>0&&e}let n=e.dataset,r=n.options&&n.options.borderWidth||0;if(!t.length)return r;let i=t[0].size(this.resolveDataElementOptions(0)),a=t[t.length-1].size(this.resolveDataElementOptions(t.length-1));return Math.max(r,i,a)/2}}});function Dv(){throw Error(`This method is not implemented: Check that a complete date adapter is provided.`)}var Ov={_date:class e{static override(t){Object.assign(e.prototype,t)}options;constructor(e){this.options=e||{}}init(){}formats(){return Dv()}parse(){return Dv()}format(){return Dv()}add(){return Dv()}diff(){return Dv()}startOf(){return Dv()}endOf(){return Dv()}}};function kv(e,t,n,r){let{controller:i,data:a,_sorted:o}=e,s=i._cachedMeta.iScale,c=e.dataset&&e.dataset.options?e.dataset.options.spanGaps:null;if(s&&t===s.axis&&t!==`r`&&o&&a.length){let o=s._reversePixels?ah:ih;if(!r){let r=o(a,t,n);if(c){let{vScale:t}=i._cachedMeta,{_parsed:n}=e,a=n.slice(0,r.lo+1).reverse().findIndex(e=>!rm(e[t.axis]));r.lo-=Math.max(0,a);let o=n.slice(r.hi).findIndex(e=>!rm(e[t.axis]));r.hi+=Math.max(0,o)}return r}else if(i._sharedOptions){let e=a[0],r=typeof e.getRange==`function`&&e.getRange(t);if(r){let e=o(a,t,n-r),i=o(a,t,n+r);return{lo:e.lo,hi:i.hi}}}}return{lo:0,hi:a.length-1}}function Av(e,t,n,r,i){let a=e.getSortedVisibleDatasetMetas(),o=n[t];for(let e=0,n=a.length;e{e[o]&&e[o](t[n],i)&&(a.push({element:e,datasetIndex:r,index:c}),s||=e.inRange(t.x,t.y,i))}),r&&!s?[]:a}var Lv={evaluateInteractionItems:Av,modes:{index(e,t,n,r){let i=n_(t,e),a=n.axis||`x`,o=n.includeInvisible||!1,s=n.intersect?Mv(e,i,a,r,o):Fv(e,i,a,!1,r,o),c=[];return s.length?(e.getSortedVisibleDatasetMetas().forEach(e=>{let t=s[0].index,n=e.data[t];n&&!n.skip&&c.push({element:n,datasetIndex:e.index,index:t})}),c):[]},dataset(e,t,n,r){let i=n_(t,e),a=n.axis||`xy`,o=n.includeInvisible||!1,s=n.intersect?Mv(e,i,a,r,o):Fv(e,i,a,!1,r,o);if(s.length>0){let t=s[0].datasetIndex,n=e.getDatasetMeta(t).data;s=[];for(let e=0;ee.pos===t)}function Bv(e,t){return e.filter(e=>Rv.indexOf(e.pos)===-1&&e.box.axis===t)}function Vv(e,t){return e.sort((e,n)=>{let r=t?n:e,i=t?e:n;return r.weight===i.weight?r.index-i.index:r.weight-i.weight})}function Hv(e){let t=[],n,r,i,a,o,s;for(n=0,r=(e||[]).length;ne.box.fullSize),!0),r=Vv(zv(t,`left`),!0),i=Vv(zv(t,`right`)),a=Vv(zv(t,`top`),!0),o=Vv(zv(t,`bottom`)),s=Bv(t,`x`),c=Bv(t,`y`);return{fullSize:n,leftAndTop:r.concat(a),rightAndBottom:i.concat(c).concat(o).concat(s),chartArea:zv(t,`chartArea`),vertical:r.concat(i).concat(c),horizontal:a.concat(o).concat(s)}}function Kv(e,t,n,r){return Math.max(e[n],t[n])+Math.max(e[r],t[r])}function qv(e,t){e.top=Math.max(e.top,t.top),e.left=Math.max(e.left,t.left),e.bottom=Math.max(e.bottom,t.bottom),e.right=Math.max(e.right,t.right)}function Jv(e,t,n,r){let{pos:i,box:a}=n,o=e.maxPadding;if(!am(i)){n.size&&(e[i]-=n.size);let t=r[n.stack]||{size:0,count:1};t.size=Math.max(t.size,n.horizontal?a.height:a.width),n.size=t.size/t.count,e[i]+=n.size}a.getPadding&&qv(o,a.getPadding());let s=Math.max(0,t.outerWidth-Kv(o,e,`left`,`right`)),c=Math.max(0,t.outerHeight-Kv(o,e,`top`,`bottom`)),l=s!==e.w,u=c!==e.h;return e.w=s,e.h=c,n.horizontal?{same:l,other:u}:{same:u,other:l}}function Yv(e){let t=e.maxPadding;function n(n){let r=Math.max(t[n]-e[n],0);return e[n]+=r,r}e.y+=n(`top`),e.x+=n(`left`),n(`right`),n(`bottom`)}function Xv(e,t){let n=t.maxPadding;function r(e){let r={left:0,top:0,right:0,bottom:0};return e.forEach(e=>{r[e]=Math.max(t[e],n[e])}),r}return r(e?[`left`,`right`]:[`top`,`bottom`])}function Zv(e,t,n,r){let i=[],a,o,s,c,l,u;for(a=0,o=e.length,l=0;a{typeof e.beforeLayout==`function`&&e.beforeLayout()});let u=c.reduce((e,t)=>t.box.options&&t.box.options.display===!1?e:e+1,0)||1,d=Object.freeze({outerWidth:t,outerHeight:n,padding:i,availableWidth:a,availableHeight:o,vBoxMaxWidth:a/2/u,hBoxMaxHeight:o/2}),f=Object.assign({},i);qv(f,fg(r));let p=Object.assign({maxPadding:f,w:a,h:o,x:i.left,y:i.top},i),m=Wv(c.concat(l),d);Zv(s.fullSize,p,d,m),Zv(c,p,d,m),Zv(l,p,d,m)&&Zv(c,p,d,m),Yv(p),$v(s.leftAndTop,p,d,m),p.x+=p.w,p.y+=p.h,$v(s.rightAndBottom,p,d,m),e.chartArea={left:p.left,top:p.top,right:p.left+p.w,bottom:p.top+p.h,height:p.h,width:p.w},fm(s.chartArea,t=>{let n=t.box;Object.assign(n,e.chartArea),n.update(p.w,p.h,{left:0,top:0,right:0,bottom:0})})}},ty=class{acquireContext(e,t){}releaseContext(e){return!1}addEventListener(e,t,n){}removeEventListener(e,t,n){}getDevicePixelRatio(){return 1}getMaximumSize(e,t,n,r){return t=Math.max(0,t||e.width),n||=e.height,{width:t,height:Math.max(0,r?Math.floor(t/r):n)}}isAttached(e){return!0}updateConfig(e){}},ny=class extends ty{acquireContext(e){return e&&e.getContext&&e.getContext(`2d`)||null}updateConfig(e){e.options.animation=!1}},ry=`$chartjs`,iy={touchstart:`mousedown`,touchmove:`mousemove`,touchend:`mouseup`,pointerenter:`mouseenter`,pointerdown:`mousedown`,pointermove:`mousemove`,pointerup:`mouseup`,pointerleave:`mouseout`,pointerout:`mouseout`},ay=e=>e===null||e===``;function oy(e,t){let n=e.style,r=e.getAttribute(`height`),i=e.getAttribute(`width`);if(e[ry]={initial:{height:r,width:i,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||`block`,n.boxSizing=n.boxSizing||`border-box`,ay(i)){let t=c_(e,`width`);t!==void 0&&(e.width=t)}if(ay(r))if(e.style.height===``)e.height=e.width/(t||2);else{let t=c_(e,`height`);t!==void 0&&(e.height=t)}return e}var sy=s_?{passive:!0}:!1;function cy(e,t,n){e&&e.addEventListener(t,n,sy)}function ly(e,t,n){e&&e.canvas&&e.canvas.removeEventListener(t,n,sy)}function uy(e,t){let n=iy[e.type]||e.type,{x:r,y:i}=n_(e,t);return{type:n,chart:t,native:e,x:r===void 0?null:r,y:i===void 0?null:i}}function dy(e,t){for(let n of e)if(n===t||n.contains(t))return!0}function fy(e,t,n){let r=e.canvas,i=new MutationObserver(e=>{let t=!1;for(let n of e)t||=dy(n.addedNodes,r),t&&=!dy(n.removedNodes,r);t&&n()});return i.observe(document,{childList:!0,subtree:!0}),i}function py(e,t,n){let r=e.canvas,i=new MutationObserver(e=>{let t=!1;for(let n of e)t||=dy(n.removedNodes,r),t&&=!dy(n.addedNodes,r);t&&n()});return i.observe(document,{childList:!0,subtree:!0}),i}var my=new Map,hy=0;function gy(){let e=window.devicePixelRatio;e!==hy&&(hy=e,my.forEach((t,n)=>{n.currentDevicePixelRatio!==e&&t()}))}function _y(e,t){my.size||window.addEventListener(`resize`,gy),my.set(e,t)}function vy(e){my.delete(e),my.size||window.removeEventListener(`resize`,gy)}function yy(e,t,n){let r=e.canvas,i=r&&Jg(r);if(!i)return;let a=fh((e,t)=>{let r=i.clientWidth;n(e,t),r{let t=e[0],n=t.contentRect.width,r=t.contentRect.height;n===0&&r===0||a(n,r)});return o.observe(i),_y(e,a),o}function by(e,t,n){n&&n.disconnect(),t===`resize`&&vy(e)}function xy(e,t,n){let r=e.canvas,i=fh(t=>{e.ctx!==null&&n(uy(t,e))},e);return cy(r,t,i),i}var Sy=class extends ty{acquireContext(e,t){let n=e&&e.getContext&&e.getContext(`2d`);return n&&n.canvas===e?(oy(e,t),n):null}releaseContext(e){let t=e.canvas;if(!t[ry])return!1;let n=t[ry].initial;[`height`,`width`].forEach(e=>{let r=n[e];rm(r)?t.removeAttribute(e):t.setAttribute(e,r)});let r=n.style||{};return Object.keys(r).forEach(e=>{t.style[e]=r[e]}),t.width=t.width,delete t[ry],!0}addEventListener(e,t,n){this.removeEventListener(e,t);let r=e.$proxies||={};r[t]=({attach:fy,detach:py,resize:yy}[t]||xy)(e,t,n)}removeEventListener(e,t){let n=e.$proxies||={},r=n[t];r&&(({attach:by,detach:by,resize:by}[t]||ly)(e,t,r),n[t]=void 0)}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(e,t,n,r){return a_(e,t,n,r)}isAttached(e){let t=e&&Jg(e);return!!(t&&t.isConnected)}};function Cy(e){return!qg()||typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas?ny:Sy}var wy=class{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(e){let{x:t,y:n}=this.getProps([`x`,`y`],e);return{x:t,y:n}}hasValue(){return Um(this.x)&&Um(this.y)}getProps(e,t){let n=this.$animations;if(!t||!n)return this;let r={};return e.forEach(e=>{r[e]=n[e]&&n[e].active()?n[e]._to:this[e]}),r}};function Ty(e,t){let n=e.options.ticks,r=Ey(e),i=Math.min(n.maxTicksLimit||r,r),a=n.major.enabled?Oy(t):[],o=a.length,s=a[0],c=a[o-1],l=[];if(o>i)return ky(t,l,a,o/i),l;let u=Dy(a,t,i);if(o>0){let e,n,r=o>1?Math.round((c-s)/(o-1)):null;for(Ay(t,l,u,rm(r)?0:s-r,s),e=0,n=o-1;ei)return t}return Math.max(i,1)}function Oy(e){let t=[],n,r;for(n=0,r=e.length;ne===`left`?`right`:e===`right`?`left`:e,Ny=(e,t,n)=>t===`top`||t===`left`?e[t]+n:e[t]-n,Py=(e,t)=>Math.min(t||e,e);function Fy(e,t){let n=[],r=e.length/t,i=e.length,a=0;for(;ao+s)))return c}function Ly(e,t){fm(e,e=>{let n=e.gc,r=n.length/2,i;if(r>t){for(i=0;in?n:t,n=r&&t>n?t:n,{min:sm(t,sm(n,t)),max:sm(n,sm(t,n))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){let e=this.chart.data;return this.options.labels||(this.isHorizontal()?e.xLabels:e.yLabels)||e.labels||[]}getLabelItems(e=this.chart.chartArea){return this._labelItems||=this._computeLabelItems(e)}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){dm(this.options.beforeUpdate,[this])}update(e,t,n){let{beginAtZero:r,grace:i,ticks:a}=this.options,o=a.sampleSize;this.beforeUpdate(),this.maxWidth=e,this.maxHeight=t,this._margins=n=Object.assign({left:0,right:0,top:0,bottom:0},n),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+n.left+n.right:this.height+n.top+n.bottom,this._dataLimitsCached||=(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=hg(this,i,r),!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();let s=o=i||n<=1||!this.isHorizontal()){this.labelRotation=r;return}let l=this._getLabelSizes(),u=l.widest.width,d=l.highest.height,f=eh(this.chart.width-u,0,this.maxWidth);o=e.offset?this.maxWidth/n:f/(n-1),u+6>o&&(o=f/(n-(e.offset?.5:1)),s=this.maxHeight-Ry(e.grid)-t.padding-zy(e.title,this.chart.options.font),c=Math.sqrt(u*u+d*d),a=qm(Math.min(Math.asin(eh((l.highest.height+6)/o,-1,1)),Math.asin(eh(s/c,-1,1))-Math.asin(eh(d/c,-1,1)))),a=Math.max(r,Math.min(i,a))),this.labelRotation=a}afterCalculateLabelRotation(){dm(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){dm(this.options.beforeFit,[this])}fit(){let e={width:0,height:0},{chart:t,options:{ticks:n,title:r,grid:i}}=this,a=this._isVisible(),o=this.isHorizontal();if(a){let a=zy(r,t.options.font);if(o?(e.width=this.maxWidth,e.height=Ry(i)+a):(e.height=this.maxHeight,e.width=Ry(i)+a),n.display&&this.ticks.length){let{first:t,last:r,widest:i,highest:a}=this._getLabelSizes(),s=n.padding*2,c=Km(this.labelRotation),l=Math.cos(c),u=Math.sin(c);if(o){let t=n.mirror?0:u*i.width+l*a.height;e.height=Math.min(this.maxHeight,e.height+t+s)}else{let t=n.mirror?0:l*i.width+u*a.height;e.width=Math.min(this.maxWidth,e.width+t+s)}this._calculatePadding(t,r,u,l)}}this._handleMargins(),o?(this.width=this._length=t.width-this._margins.left-this._margins.right,this.height=e.height):(this.width=e.width,this.height=this._length=t.height-this._margins.top-this._margins.bottom)}_calculatePadding(e,t,n,r){let{ticks:{align:i,padding:a},position:o}=this.options,s=this.labelRotation!==0,c=o!==`top`&&this.axis===`x`;if(this.isHorizontal()){let o=this.getPixelForTick(0)-this.left,l=this.right-this.getPixelForTick(this.ticks.length-1),u=0,d=0;s?c?(u=r*e.width,d=n*t.height):(u=n*e.height,d=r*t.width):i===`start`?d=t.width:i===`end`?u=e.width:i!==`inner`&&(u=e.width/2,d=t.width/2),this.paddingLeft=Math.max((u-o+a)*this.width/(this.width-o),0),this.paddingRight=Math.max((d-l+a)*this.width/(this.width-l),0)}else{let n=t.height/2,r=e.height/2;i===`start`?(n=0,r=e.height):i===`end`&&(n=t.height,r=0),this.paddingTop=n+a,this.paddingBottom=r+a}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){dm(this.options.afterFit,[this])}isHorizontal(){let{axis:e,position:t}=this.options;return t===`top`||t===`bottom`||e===`x`}isFullSize(){return this.options.fullSize}_convertTicksToLabels(e){this.beforeTickToLabelConversion(),this.generateTickLabels(e);let t,n;for(t=0,n=e.length;t({width:a[e]||0,height:o[e]||0});return{first:C(0),last:C(t-1),widest:C(x),highest:C(S),widths:a,heights:o}}getLabelForValue(e){return e}getPixelForValue(e,t){return NaN}getValueForPixel(e){}getPixelForTick(e){let t=this.ticks;return e<0||e>t.length-1?null:this.getPixelForValue(t[e].value)}getPixelForDecimal(e){this._reversePixels&&(e=1-e);let t=this._startPixel+e*this._length;return th(this._alignToPixels?Gh(this.chart,t,0):t)}getDecimalForPixel(e){let t=(e-this._startPixel)/this._length;return this._reversePixels?1-t:t}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){let{min:e,max:t}=this;return e<0&&t<0?t:e>0&&t>0?e:0}getContext(e){let t=this.ticks||[];if(e>=0&&eo*r?o/n:s/r:s*r0:!!e}_computeGridLineItems(e){let t=this.axis,n=this.chart,r=this.options,{grid:i,position:a,border:o}=r,s=i.offset,c=this.isHorizontal(),l=this.ticks.length+ +!!s,u=Ry(i),d=[],f=o.setContext(this.getContext()),p=f.display?f.width:0,m=p/2,h=function(e){return Gh(n,e,p)},g,_,v,y,b,x,S,C,w,T,E,ee;if(a===`top`)g=h(this.bottom),x=this.bottom-u,C=g-m,T=h(e.top)+m,ee=e.bottom;else if(a===`bottom`)g=h(this.top),T=e.top,ee=h(e.bottom)-m,x=g+m,C=this.top+u;else if(a===`left`)g=h(this.right),b=this.right-u,S=g-m,w=h(e.left)+m,E=e.right;else if(a===`right`)g=h(this.left),w=e.left,E=h(e.right)-m,b=g+m,S=this.left+u;else if(t===`x`){if(a===`center`)g=h((e.top+e.bottom)/2+.5);else if(am(a)){let e=Object.keys(a)[0],t=a[e];g=h(this.chart.scales[e].getPixelForValue(t))}T=e.top,ee=e.bottom,x=g+m,C=x+u}else if(t===`y`){if(a===`center`)g=h((e.left+e.right)/2);else if(am(a)){let e=Object.keys(a)[0],t=a[e];g=h(this.chart.scales[e].getPixelForValue(t))}b=g-m,S=b-u,w=e.left,E=e.right}let te=cm(r.ticks.maxTicksLimit,l),ne=Math.max(1,Math.ceil(l/te));for(_=0;_0&&(a-=r/2);break}f={left:a,top:i,width:r+t.width,height:n+t.height,color:e.backdropColor}}h.push({label:y,font:w,textOffset:ee,options:{rotation:m,color:n,strokeColor:s,strokeWidth:l,textAlign:d,textBaseline:te,translation:[b,x],backdrop:f}})}return h}_getXAxisLabelAlignment(){let{position:e,ticks:t}=this.options;if(-Km(this.labelRotation))return e===`top`?`left`:`right`;let n=`center`;return t.align===`start`?n=`left`:t.align===`end`?n=`right`:t.align===`inner`&&(n=`inner`),n}_getYAxisLabelAlignment(e){let{position:t,ticks:{crossAlign:n,mirror:r,padding:i}}=this.options,a=this._getLabelSizes(),o=e+i,s=a.widest.width,c,l;return t===`left`?r?(l=this.right+i,n===`near`?c=`left`:n===`center`?(c=`center`,l+=s/2):(c=`right`,l+=s)):(l=this.right-o,n===`near`?c=`right`:n===`center`?(c=`center`,l-=s/2):(c=`left`,l=this.left)):t===`right`?r?(l=this.left+i,n===`near`?c=`right`:n===`center`?(c=`center`,l-=s/2):(c=`left`,l-=s)):(l=this.left+o,n===`near`?c=`left`:n===`center`?(c=`center`,l+=s/2):(c=`right`,l=this.right)):c=`right`,{textAlign:c,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;let e=this.chart,t=this.options.position;if(t===`left`||t===`right`)return{top:0,left:this.left,bottom:e.height,right:this.right};if(t===`top`||t===`bottom`)return{top:this.top,left:0,bottom:this.bottom,right:e.width}}drawBackground(){let{ctx:e,options:{backgroundColor:t},left:n,top:r,width:i,height:a}=this;t&&(e.save(),e.fillStyle=t,e.fillRect(n,r,i,a),e.restore())}getLineWidthForValue(e){let t=this.options.grid;if(!this._isVisible()||!t.display)return 0;let n=this.ticks.findIndex(t=>t.value===e);return n>=0?t.setContext(this.getContext(n)).lineWidth:0}drawGrid(e){let t=this.options.grid,n=this.ctx,r=this._gridLineItems||=this._computeGridLineItems(e),i,a,o=(e,t,r)=>{!r.width||!r.color||(n.save(),n.lineWidth=r.width,n.strokeStyle=r.color,n.setLineDash(r.borderDash||[]),n.lineDashOffset=r.borderDashOffset,n.beginPath(),n.moveTo(e.x,e.y),n.lineTo(t.x,t.y),n.stroke(),n.restore())};if(t.display)for(i=0,a=r.length;i{this.draw(e)}}]:[{z:r,draw:e=>{this.drawBackground(),this.drawGrid(e),this.drawTitle()}},{z:i,draw:()=>{this.drawBorder()}},{z:n,draw:e=>{this.drawLabels(e)}}]}getMatchingVisibleMetas(e){let t=this.chart.getSortedVisibleDatasetMetas(),n=this.axis+`AxisID`,r=[],i,a;for(i=0,a=t.length;i{let r=n.split(`.`),i=r.pop(),a=[e].concat(r).join(`.`),o=t[n].split(`.`),s=o.pop(),c=o.join(`.`);Vh.route(a,i,c,s)})}function Jy(e){return`id`in e&&`defaults`in e}var Yy=new class{constructor(){this.controllers=new Gy(iv,`datasets`,!0),this.elements=new Gy(wy,`elements`),this.plugins=new Gy(Object,`plugins`),this.scales=new Gy(Wy,`scales`),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...e){this._each(`register`,e)}remove(...e){this._each(`unregister`,e)}addControllers(...e){this._each(`register`,e,this.controllers)}addElements(...e){this._each(`register`,e,this.elements)}addPlugins(...e){this._each(`register`,e,this.plugins)}addScales(...e){this._each(`register`,e,this.scales)}getController(e){return this._get(e,this.controllers,`controller`)}getElement(e){return this._get(e,this.elements,`element`)}getPlugin(e){return this._get(e,this.plugins,`plugin`)}getScale(e){return this._get(e,this.scales,`scale`)}removeControllers(...e){this._each(`unregister`,e,this.controllers)}removeElements(...e){this._each(`unregister`,e,this.elements)}removePlugins(...e){this._each(`unregister`,e,this.plugins)}removeScales(...e){this._each(`unregister`,e,this.scales)}_each(e,t,n){[...t].forEach(t=>{let r=n||this._getRegistryForType(t);n||r.isForType(t)||r===this.plugins&&t.id?this._exec(e,r,t):fm(t,t=>{let r=n||this._getRegistryForType(t);this._exec(e,r,t)})})}_exec(e,t,n){let r=wm(e);dm(n[`before`+r],[],n),t[e](n),dm(n[`after`+r],[],n)}_getRegistryForType(e){for(let t=0;te.filter(e=>!t.some(t=>e.plugin.id===t.plugin.id));this._notify(r(t,n),e,`stop`),this._notify(r(n,t),e,`start`)}};function Zy(e){let t={},n=[],r=Object.keys(Yy.plugins.items);for(let e=0;e1&&ib(e[0].toLowerCase());if(t)return t}throw Error(`Cannot determine type of '${e}' axis. Please provide 'axis' or 'position' option.`)}function sb(e,t,n){if(n[t+`AxisID`]===e)return{axis:t}}function cb(e,t){if(t.data&&t.data.datasets){let n=t.data.datasets.filter(t=>t.xAxisID===e||t.yAxisID===e);if(n.length)return sb(e,`x`,n[0])||sb(e,`y`,n[0])}return{}}function lb(e,t){let n=Lh[e.type]||{scales:{}},r=t.scales||{},i=tb(e.type,t),a=Object.create(null);return Object.keys(r).forEach(t=>{let o=r[t];if(!am(o))return console.error(`Invalid scale configuration for scale: ${t}`);if(o._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);let s=ob(t,o,cb(t,e),Vh.scales[o.type]),c=rb(s,i),l=n.scales||{};a[t]=vm(Object.create(null),[{axis:s},o,l[s],l[c]])}),e.data.datasets.forEach(n=>{let i=n.type||e.type,o=n.indexAxis||tb(i,t),s=(Lh[i]||{}).scales||{};Object.keys(s).forEach(e=>{let t=nb(e,o),i=n[t+`AxisID`]||t;a[i]=a[i]||Object.create(null),vm(a[i],[{axis:t},r[i],s[e]])})}),Object.keys(a).forEach(e=>{let t=a[e];vm(t,[Vh.scales[t.type],Vh.scale])}),a}function ub(e){let t=e.options||={};t.plugins=cm(t.plugins,{}),t.scales=lb(e,t)}function db(e){return e||={},e.datasets=e.datasets||[],e.labels=e.labels||[],e}function fb(e){return e||={},e.data=db(e.data),ub(e),e}var pb=new Map,mb=new Set;function hb(e,t){let n=pb.get(e);return n||(n=t(),pb.set(e,n),mb.add(n)),n}var gb=(e,t,n)=>{let r=Cm(t,n);r!==void 0&&e.add(r)},_b=class{constructor(e){this._config=fb(e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(e){this._config.type=e}get data(){return this._config.data}set data(e){this._config.data=db(e)}get options(){return this._config.options}set options(e){this._config.options=e}get plugins(){return this._config.plugins}update(){let e=this._config;this.clearCache(),ub(e)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(e){return hb(e,()=>[[`datasets.${e}`,``]])}datasetAnimationScopeKeys(e,t){return hb(`${e}.transition.${t}`,()=>[[`datasets.${e}.transitions.${t}`,`transitions.${t}`],[`datasets.${e}`,``]])}datasetElementScopeKeys(e,t){return hb(`${e}-${t}`,()=>[[`datasets.${e}.elements.${t}`,`datasets.${e}`,`elements.${t}`,``]])}pluginScopeKeys(e){let t=e.id,n=this.type;return hb(`${n}-plugin-${t}`,()=>[[`plugins.${t}`,...e.additionalOptionScopes||[]]])}_cachedScopes(e,t){let n=this._scopeCache,r=n.get(e);return(!r||t)&&(r=new Map,n.set(e,r)),r}getOptionScopes(e,t,n){let{options:r,type:i}=this,a=this._cachedScopes(e,n),o=a.get(t);if(o)return o;let s=new Set;t.forEach(t=>{e&&(s.add(e),t.forEach(t=>gb(s,e,t))),t.forEach(e=>gb(s,r,e)),t.forEach(e=>gb(s,Lh[i]||{},e)),t.forEach(e=>gb(s,Vh,e)),t.forEach(e=>gb(s,Rh,e))});let c=Array.from(s);return c.length===0&&c.push(Object.create(null)),mb.has(t)&&a.set(t,c),c}chartOptionScopes(){let{options:e,type:t}=this;return[e,Lh[t]||{},Vh.datasets[t]||{},{type:t},Vh,Rh]}resolveNamedOptions(e,t,n,r=[``]){let i={$shared:!0},{resolver:a,subPrefixes:o}=vb(this._resolverCache,e,r),s=a;if(bb(a,t)){i.$shared=!1,n=Em(n)?n():n;let t=this.createResolver(e,n,o);s=vg(a,n,t)}for(let e of t)i[e]=s[e];return i}createResolver(e,t,n=[``],r){let{resolver:i}=vb(this._resolverCache,e,n);return am(t)?vg(i,t,void 0,r):i}};function vb(e,t,n){let r=e.get(t);r||(r=new Map,e.set(t,r));let i=n.join(),a=r.get(i);return a||(a={resolver:_g(t,n),subPrefixes:n.filter(e=>!e.toLowerCase().includes(`hover`))},r.set(i,a)),a}var yb=e=>am(e)&&Object.getOwnPropertyNames(e).some(t=>Em(e[t]));function bb(e,t){let{isScriptable:n,isIndexable:r}=yg(e);for(let i of t){let t=n(i),a=r(i),o=(a||t)&&e[i];if(t&&(Em(o)||yb(o))||a&&im(o))return!0}return!1}var xb=`4.5.1`,Sb=[`top`,`bottom`,`left`,`right`,`chartArea`];function Cb(e,t){return e===`top`||e===`bottom`||Sb.indexOf(e)===-1&&t===`x`}function wb(e,t){return function(n,r){return n[e]===r[e]?n[t]-r[t]:n[e]-r[e]}}function Tb(e){let t=e.chart,n=t.options.animation;t.notifyPlugins(`afterRender`),dm(n&&n.onComplete,[e],t)}function Eb(e){let t=e.chart,n=t.options.animation;dm(n&&n.onProgress,[e],t)}function Db(e){return qg()&&typeof e==`string`?e=document.getElementById(e):e&&e.length&&(e=e[0]),e&&e.canvas&&(e=e.canvas),e}var Ob={},kb=e=>{let t=Db(e);return Object.values(Ob).filter(e=>e.canvas===t).pop()};function Ab(e,t,n){let r=Object.keys(e);for(let i of r){let r=+i;if(r>=t){let a=e[i];delete e[i],(n>0||r>t)&&(e[r+n]=a)}}}function jb(e,t,n,r){return!n||e.type===`mouseout`?null:r?t:e}var Mb=class{static defaults=Vh;static instances=Ob;static overrides=Lh;static registry=Yy;static version=xb;static getChart=kb;static register(...e){Yy.add(...e),Nb()}static unregister(...e){Yy.remove(...e),Nb()}constructor(e,t){let n=this.config=new _b(t),r=Db(e),i=kb(r);if(i)throw Error(`Canvas is already in use. Chart with ID '`+i.id+`' must be destroyed before the canvas with ID '`+i.canvas.id+`' can be reused.`);let a=n.createResolver(n.chartOptionScopes(),this.getContext());this.platform=new(n.platform||(Cy(r))),this.platform.updateConfig(n);let o=this.platform.acquireContext(r,a.aspectRatio),s=o&&o.canvas,c=s&&s.height,l=s&&s.width;if(this.id=nm(),this.ctx=o,this.canvas=s,this.width=l,this.height=c,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Xy,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=ph(e=>this.update(e),a.resizeDelay||0),this._dataChanges=[],Ob[this.id]=this,!o||!s){console.error(`Failed to create chart: can't acquire context from the given item`);return}M_.listen(this,`complete`,Tb),M_.listen(this,`progress`,Eb),this._initialize(),this.attached&&this.update()}get aspectRatio(){let{options:{aspectRatio:e,maintainAspectRatio:t},width:n,height:r,_aspectRatio:i}=this;return rm(e)?t&&i?i:r?n/r:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return Yy}_initialize(){return this.notifyPlugins(`beforeInit`),this.options.responsive?this.resize():o_(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins(`afterInit`),this}clear(){return Kh(this.canvas,this.ctx),this}stop(){return M_.stop(this),this}resize(e,t){M_.running(this)?this._resizeBeforeDraw={width:e,height:t}:this._resize(e,t)}_resize(e,t){let n=this.options,r=this.canvas,i=n.maintainAspectRatio&&this.aspectRatio,a=this.platform.getMaximumSize(r,e,t,i),o=n.devicePixelRatio||this.platform.getDevicePixelRatio(),s=this.width?`resize`:`attach`;this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,o_(this,o,!0)&&(this.notifyPlugins(`resize`,{size:a}),dm(n.onResize,[this,a],this),this.attached&&this._doResize(s)&&this.render())}ensureScalesHaveIDs(){fm(this.options.scales||{},(e,t)=>{e.id=t})}buildOrUpdateScales(){let e=this.options,t=e.scales,n=this.scales,r=Object.keys(n).reduce((e,t)=>(e[t]=!1,e),{}),i=[];t&&(i=i.concat(Object.keys(t).map(e=>{let n=t[e],r=ob(e,n),i=r===`r`,a=r===`x`;return{options:n,dposition:i?`chartArea`:a?`bottom`:`left`,dtype:i?`radialLinear`:a?`category`:`linear`}}))),fm(i,t=>{let i=t.options,a=i.id,o=ob(a,i),s=cm(i.type,t.dtype);(i.position===void 0||Cb(i.position,o)!==Cb(t.dposition))&&(i.position=t.dposition),r[a]=!0;let c=null;a in n&&n[a].type===s?c=n[a]:(c=new(Yy.getScale(s))({id:a,type:s,ctx:this.ctx,chart:this}),n[c.id]=c),c.init(i,e)}),fm(r,(e,t)=>{e||delete n[t]}),fm(n,e=>{ey.configure(this,e,e.options),ey.addBox(this,e)})}_updateMetasets(){let e=this._metasets,t=this.data.datasets.length,n=e.length;if(e.sort((e,t)=>e.index-t.index),n>t){for(let e=t;et.length&&delete this._stacks,e.forEach((e,n)=>{t.filter(t=>t===e._dataset).length===0&&this._destroyDatasetMeta(n)})}buildOrUpdateControllers(){let e=[],t=this.data.datasets,n,r;for(this._removeUnreferencedMetasets(),n=0,r=t.length;n{this.getDatasetMeta(t).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins(`reset`)}update(e){let t=this.config;t.update();let n=this._options=t.createResolver(t.chartOptionScopes(),this.getContext()),r=this._animationsDisabled=!n.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins(`beforeUpdate`,{mode:e,cancelable:!0})===!1)return;let i=this.buildOrUpdateControllers();this.notifyPlugins(`beforeElementsUpdate`);let a=0;for(let e=0,t=this.data.datasets.length;e{e.reset()}),this._updateDatasets(e),this.notifyPlugins(`afterUpdate`,{mode:e}),this._layers.sort(wb(`z`,`_idx`));let{_active:o,_lastEvent:s}=this;s?this._eventHandler(s,!0):o.length&&this._updateHoverStyles(o,o,!0),this.render()}_updateScales(){fm(this.scales,e=>{ey.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){let e=this.options;(!Dm(new Set(Object.keys(this._listeners)),new Set(e.events))||!!this._responsiveListeners!==e.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){let{_hiddenIndices:e}=this,t=this._getUniformDataChanges()||[];for(let{method:n,start:r,count:i}of t)Ab(e,r,n===`_removeElements`?-i:i)}_getUniformDataChanges(){let e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];let t=this.data.datasets.length,n=t=>new Set(e.filter(e=>e[0]===t).map((e,t)=>t+`,`+e.splice(1).join(`,`))),r=n(0);for(let e=1;ee.split(`,`)).map(e=>({method:e[1],start:+e[2],count:+e[3]}))}_updateLayout(e){if(this.notifyPlugins(`beforeLayout`,{cancelable:!0})===!1)return;ey.update(this,this.width,this.height,e);let t=this.chartArea,n=t.width<=0||t.height<=0;this._layers=[],fm(this.boxes,e=>{n&&e.position===`chartArea`||(e.configure&&e.configure(),this._layers.push(...e._layers()))},this),this._layers.forEach((e,t)=>{e._idx=t}),this.notifyPlugins(`afterLayout`)}_updateDatasets(e){if(this.notifyPlugins(`beforeDatasetsUpdate`,{mode:e,cancelable:!0})!==!1){for(let e=0,t=this.data.datasets.length;e=0;--t)this._drawDataset(e[t]);this.notifyPlugins(`afterDatasetsDraw`)}_drawDataset(e){let t=this.ctx,n={meta:e,index:e.index,cancelable:!0},r=j_(this,e);this.notifyPlugins(`beforeDatasetDraw`,n)!==!1&&(r&&Xh(t,r),e.controller.draw(),r&&Zh(t),n.cancelable=!1,this.notifyPlugins(`afterDatasetDraw`,n))}isPointInArea(e){return Yh(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,t,n,r){let i=Lv.modes[t];return typeof i==`function`?i(this,e,n,r):[]}getDatasetMeta(e){let t=this.data.datasets[e],n=this._metasets,r=n.filter(e=>e&&e._dataset===t).pop();return r||(r={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:t&&t.order||0,index:e,_dataset:t,_parsed:[],_sorted:!1},n.push(r)),r}getContext(){return this.$context||=gg(null,{chart:this,type:`chart`})}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){let t=this.data.datasets[e];if(!t)return!1;let n=this.getDatasetMeta(e);return typeof n.hidden==`boolean`?!n.hidden:!t.hidden}setDatasetVisibility(e,t){let n=this.getDatasetMeta(e);n.hidden=!t}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,t,n){let r=n?`show`:`hide`,i=this.getDatasetMeta(e),a=i.controller._resolveAnimations(void 0,r);Tm(t)?(i.data[t].hidden=!n,this.update()):(this.setDatasetVisibility(e,n),a.update(i,{visible:n}),this.update(t=>t.datasetIndex===e?r:void 0))}hide(e,t){this._updateVisibility(e,t,!1)}show(e,t){this._updateVisibility(e,t,!0)}_destroyDatasetMeta(e){let t=this._metasets[e];t&&t.controller&&t.controller._destroy(),delete this._metasets[e]}_stop(){let e,t;for(this.stop(),M_.remove(this),e=0,t=this.data.datasets.length;e{t.addEventListener(this,n,r),e[n]=r},r=(e,t,n)=>{e.offsetX=t,e.offsetY=n,this._eventHandler(e)};fm(this.options.events,e=>n(e,r))}bindResponsiveEvents(){this._responsiveListeners||={};let e=this._responsiveListeners,t=this.platform,n=(n,r)=>{t.addEventListener(this,n,r),e[n]=r},r=(n,r)=>{e[n]&&(t.removeEventListener(this,n,r),delete e[n])},i=(e,t)=>{this.canvas&&this.resize(e,t)},a,o=()=>{r(`attach`,o),this.attached=!0,this.resize(),n(`resize`,i),n(`detach`,a)};a=()=>{this.attached=!1,r(`resize`,i),this._stop(),this._resize(0,0),n(`attach`,o)},t.isAttached(this.canvas)?o():a()}unbindEvents(){fm(this._listeners,(e,t)=>{this.platform.removeEventListener(this,t,e)}),this._listeners={},fm(this._responsiveListeners,(e,t)=>{this.platform.removeEventListener(this,t,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,t,n){let r=n?`set`:`remove`,i,a,o,s;for(t===`dataset`&&(i=this.getDatasetMeta(e[0].datasetIndex),i.controller[`_`+r+`DatasetHoverStyle`]()),o=0,s=e.length;o{let n=this.getDatasetMeta(e);if(!n)throw Error(`No dataset found at index `+e);return{datasetIndex:e,element:n.data[t],index:t}});pm(n,t)||(this._active=n,this._lastEvent=null,this._updateHoverStyles(n,t))}notifyPlugins(e,t,n){return this._plugins.notify(this,e,t,n)}isPluginEnabled(e){return this._plugins._cache.filter(t=>t.plugin.id===e).length===1}_updateHoverStyles(e,t,n){let r=this.options.hover,i=(e,t)=>e.filter(e=>!t.some(t=>e.datasetIndex===t.datasetIndex&&e.index===t.index)),a=i(t,e),o=n?e:i(e,t);a.length&&this.updateHoverStyle(a,r.mode,!1),o.length&&r.mode&&this.updateHoverStyle(o,r.mode,!0)}_eventHandler(e,t){let n={event:e,replay:t,cancelable:!0,inChartArea:this.isPointInArea(e)},r=t=>(t.options.events||this.options.events).includes(e.native.type);if(this.notifyPlugins(`beforeEvent`,n,r)===!1)return;let i=this._handleEvent(e,t,n.inChartArea);return n.cancelable=!1,this.notifyPlugins(`afterEvent`,n,r),(i||n.changed)&&this.render(),this}_handleEvent(e,t,n){let{_active:r=[],options:i}=this,a=t,o=this._getActiveElements(e,r,n,a),s=Om(e),c=jb(e,this._lastEvent,n,s);n&&(this._lastEvent=null,dm(i.onHover,[e,o,this],this),s&&dm(i.onClick,[e,o,this],this));let l=!pm(o,r);return(l||t)&&(this._active=o,this._updateHoverStyles(o,r,t)),this._lastEvent=c,l}_getActiveElements(e,t,n,r){if(e.type===`mouseout`)return[];if(!n)return t;let i=this.options.hover;return this.getElementsAtEventForMode(e,i.mode,i,r)}};function Nb(){return fm(Mb.instances,e=>e._plugins.invalidate())}function Pb(e,t,n){let{startAngle:r,x:i,y:a,outerRadius:o,innerRadius:s,options:c}=t,{borderWidth:l,borderJoinStyle:u}=c,d=Math.min(l/o,Qm(r-n));if(e.beginPath(),e.arc(i,a,o-l/2,r+d/2,n-d/2),s>0){let t=Math.min(l/s,Qm(r-n));e.arc(i,a,s+l/2,n-t/2,r+t/2,!0)}else{let t=Math.min(l/2,o*Qm(r-n));if(u===`round`)e.arc(i,a,t,n-km/2,r+km/2,!0);else if(u===`bevel`){let o=2*t*t,s=-o*Math.cos(n+km/2)+i,c=-o*Math.sin(n+km/2)+a,l=o*Math.cos(r+km/2)+i,u=o*Math.sin(r+km/2)+a;e.lineTo(s,c),e.lineTo(l,u)}}e.closePath(),e.moveTo(0,0),e.rect(0,0,e.canvas.width,e.canvas.height),e.clip(`evenodd`)}function Fb(e,t,n){let{startAngle:r,pixelMargin:i,x:a,y:o,outerRadius:s,innerRadius:c}=t,l=i/s;e.beginPath(),e.arc(a,o,s,r-l,n+l),c>i?(l=i/c,e.arc(a,o,c,n+l,r-l,!0)):e.arc(a,o,i,n+Pm,r-Pm),e.closePath(),e.clip()}function Ib(e){return lg(e,[`outerStart`,`outerEnd`,`innerStart`,`innerEnd`])}function Lb(e,t,n,r){let i=Ib(e.options.borderRadius),a=(n-t)/2,o=Math.min(a,r*t/2),s=e=>{let t=(n-Math.min(a,e))*r/2;return eh(e,0,Math.min(a,t))};return{outerStart:s(i.outerStart),outerEnd:s(i.outerEnd),innerStart:eh(i.innerStart,0,o),innerEnd:eh(i.innerEnd,0,o)}}function Rb(e,t,n,r){return{x:n+e*Math.cos(t),y:r+e*Math.sin(t)}}function zb(e,t,n,r,i,a){let{x:o,y:s,startAngle:c,pixelMargin:l,innerRadius:u}=t,d=Math.max(t.outerRadius+r+n-l,0),f=u>0?u+r+n+l:0,p=0,m=i-c;if(r){let e=((u>0?u-r:0)+(d>0?d-r:0))/2;p=(m-(e===0?m:m*e/(e+r)))/2}let h=(m-Math.max(.001,m*d-n/km)/d)/2,g=c+h+p,_=i-h-p,{outerStart:v,outerEnd:y,innerStart:b,innerEnd:x}=Lb(t,f,d,_-g),S=d-v,C=d-y,w=g+v/S,T=_-y/C,E=f+b,ee=f+x,te=g+b/E,ne=_-x/ee;if(e.beginPath(),a){let t=(w+T)/2;if(e.arc(o,s,d,w,t),e.arc(o,s,d,t,T),y>0){let t=Rb(C,T,o,s);e.arc(t.x,t.y,y,T,_+Pm)}let n=Rb(ee,_,o,s);if(e.lineTo(n.x,n.y),x>0){let t=Rb(ee,ne,o,s);e.arc(t.x,t.y,x,_+Pm,ne+Math.PI)}let r=(_-x/f+(g+b/f))/2;if(e.arc(o,s,f,_-x/f,r,!0),e.arc(o,s,f,r,g+b/f,!0),b>0){let t=Rb(E,te,o,s);e.arc(t.x,t.y,b,te+Math.PI,g-Pm)}let i=Rb(S,g,o,s);if(e.lineTo(i.x,i.y),v>0){let t=Rb(S,w,o,s);e.arc(t.x,t.y,v,g-Pm,w)}}else{e.moveTo(o,s);let t=Math.cos(w)*d+o,n=Math.sin(w)*d+s;e.lineTo(t,n);let r=Math.cos(T)*d+o,i=Math.sin(T)*d+s;e.lineTo(r,i)}e.closePath()}function Bb(e,t,n,r,i){let{fullCircles:a,startAngle:o,circumference:s}=t,c=t.endAngle;if(a){zb(e,t,n,r,c,i);for(let t=0;t=km&&p===0&&u!==`miter`&&Pb(e,t,h),a||(zb(e,t,n,r,h,i),e.stroke())}var Hb=class extends wy{static id=`arc`;static defaults={borderAlign:`center`,borderColor:`#fff`,borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0,selfJoin:!1};static defaultRoutes={backgroundColor:`backgroundColor`};static descriptors={_scriptable:!0,_indexable:e=>e!==`borderDash`};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(e){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,e&&Object.assign(this,e)}inRange(e,t,n){let{angle:r,distance:i}=Ym(this.getProps([`x`,`y`],n),{x:e,y:t}),{startAngle:a,endAngle:o,innerRadius:s,outerRadius:c,circumference:l}=this.getProps([`startAngle`,`endAngle`,`innerRadius`,`outerRadius`,`circumference`],n),u=(this.options.spacing+this.options.borderWidth)/2,d=cm(l,o-a),f=$m(r,a,o)&&a!==o,p=d>=Am||f,m=nh(i,s+u,c+u);return p&&m}getCenterPoint(e){let{x:t,y:n,startAngle:r,endAngle:i,innerRadius:a,outerRadius:o}=this.getProps([`x`,`y`,`startAngle`,`endAngle`,`innerRadius`,`outerRadius`],e),{offset:s,spacing:c}=this.options,l=(r+i)/2,u=(a+o+c+s)/2;return{x:t+Math.cos(l)*u,y:n+Math.sin(l)*u}}tooltipPosition(e){return this.getCenterPoint(e)}draw(e){let{options:t,circumference:n}=this,r=(t.offset||0)/4,i=(t.spacing||0)/2,a=t.circular;if(this.pixelMargin=t.borderAlign===`inner`?.33:0,this.fullCircles=n>Am?Math.floor(n/Am):0,n===0||this.innerRadius<0||this.outerRadius<0)return;e.save();let o=(this.startAngle+this.endAngle)/2;e.translate(Math.cos(o)*r,Math.sin(o)*r);let s=r*(1-Math.sin(Math.min(km,n||0)));e.fillStyle=t.backgroundColor,e.strokeStyle=t.borderColor,Bb(e,this,s,i,a),Vb(e,this,s,i,a),e.restore()}};function Ub(e,t,n=t){e.lineCap=cm(n.borderCapStyle,t.borderCapStyle),e.setLineDash(cm(n.borderDash,t.borderDash)),e.lineDashOffset=cm(n.borderDashOffset,t.borderDashOffset),e.lineJoin=cm(n.borderJoinStyle,t.borderJoinStyle),e.lineWidth=cm(n.borderWidth,t.borderWidth),e.strokeStyle=cm(n.borderColor,t.borderColor)}function Wb(e,t,n){e.lineTo(n.x,n.y)}function Gb(e){return e.stepped?Qh:e.tension||e.cubicInterpolationMode===`monotone`?$h:Wb}function Kb(e,t,n={}){let r=e.length,{start:i=0,end:a=r-1}=n,{start:o,end:s}=t,c=Math.max(i,o),l=Math.min(a,s),u=is&&a>s;return{count:r,start:c,loop:t.loop,ilen:l(o+(l?s-e:e))%a,y=()=>{h!==g&&(e.lineTo(u,g),e.lineTo(u,h),e.lineTo(u,_))};for(c&&(p=i[v(0)],e.moveTo(p.x,p.y)),f=0;f<=s;++f){if(p=i[v(f)],p.skip)continue;let t=p.x,n=p.y,r=t|0;r===m?(ng&&(g=n),u=(d*u+t)/++d):(y(),e.lineTo(t,n),m=r,d=0,h=g=n),_=n}y()}function Yb(e){let t=e.options,n=t.borderDash&&t.borderDash.length;return!e._decimated&&!e._loop&&!t.tension&&t.cubicInterpolationMode!==`monotone`&&!t.stepped&&!n?Jb:qb}function Xb(e){return e.stepped?u_:e.tension||e.cubicInterpolationMode===`monotone`?d_:l_}function Zb(e,t,n,r){let i=t._path;i||(i=t._path=new Path2D,t.path(i,n,r)&&i.closePath()),Ub(e,t.options),e.stroke(i)}function Qb(e,t,n,r){let{segments:i,options:a}=t,o=Yb(t);for(let s of i)Ub(e,a,s.style),e.beginPath(),o(e,t,s,{start:n,end:n+r-1})&&e.closePath(),e.stroke()}var $b=typeof Path2D==`function`;function ex(e,t,n,r){$b&&!t.options.segment?Zb(e,t,n,r):Qb(e,t,n,r)}var tx=class extends wy{static id=`line`;static defaults={borderCapStyle:`butt`,borderDash:[],borderDashOffset:0,borderJoinStyle:`miter`,borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:`default`,fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:`backgroundColor`,borderColor:`borderColor`};static descriptors={_scriptable:!0,_indexable:e=>e!==`borderDash`&&e!==`fill`};constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,t){let n=this.options;if((n.tension||n.cubicInterpolationMode===`monotone`)&&!n.stepped&&!this._pointsUpdated){let r=n.spanGaps?this._loop:this._fullLoop;Kg(this._points,n,e,r,t),this._pointsUpdated=!0}}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||=w_(this,this.options.segment)}first(){let e=this.segments,t=this.points;return e.length&&t[e[0].start]}last(){let e=this.segments,t=this.points,n=e.length;return n&&t[e[n-1].end]}interpolate(e,t){let n=this.options,r=e[t],i=this.points,a=x_(this,{property:t,start:r,end:r});if(!a.length)return;let o=[],s=Xb(n),c,l;for(c=0,l=a.length;ce.replace(`rgb(`,`rgba(`).replace(`)`,`, 0.5)`));function gx(e){return mx[e%mx.length]}function _x(e){return hx[e%hx.length]}function vx(e,t){return e.borderColor=gx(t),e.backgroundColor=_x(t),++t}function yx(e,t){return e.backgroundColor=e.data.map(()=>gx(t++)),t}function bx(e,t){return e.backgroundColor=e.data.map(()=>_x(t++)),t}function xx(e){let t=0;return(n,r)=>{let i=e.getDatasetMeta(r).controller;i instanceof Cv?t=yx(n,t):i instanceof Tv?t=bx(n,t):i&&(t=vx(n,t))}}function Sx(e){let t;for(t in e)if(e[t].borderColor||e[t].backgroundColor)return!0;return!1}function Cx(e){return e&&(e.borderColor||e.backgroundColor)}function wx(){return Vh.borderColor!==`rgba(0,0,0,0.1)`||Vh.backgroundColor!==`rgba(0,0,0,0.1)`}var Tx={id:`colors`,defaults:{enabled:!0,forceOverride:!1},beforeLayout(e,t,n){if(!n.enabled)return;let{data:{datasets:r},options:i}=e.config,{elements:a}=i,o=Sx(r)||Cx(i)||a&&Sx(a)||wx();if(!n.forceOverride&&o)return;let s=xx(e);r.forEach(s)}};function Ex(e,t,n,r,i){let a=i.samples||r;if(a>=n)return e.slice(t,t+n);let o=[],s=(n-2)/(a-2),c=0,l=t+n-1,u=t,d,f,p,m,h;for(o[c++]=e[u],d=0;dp&&(p=m,f=e[a],h=a);o[c++]=f,u=h}return o[c++]=e[l],o}function Dx(e,t,n,r){let i=0,a=0,o,s,c,l,u,d,f,p,m,h,g=[],_=t+n-1,v=e[t].x,y=e[_].x-v;for(o=t;oh&&(h=l,f=o),i=(a*i+s.x)/++a;else{let n=o-1;if(!rm(d)&&!rm(f)){let t=Math.min(d,f),r=Math.max(d,f);t!==p&&t!==n&&g.push({...e[t],x:i}),r!==p&&r!==n&&g.push({...e[r],x:i})}o>0&&n!==p&&g.push(e[n]),g.push(s),u=t,a=0,m=h=l,d=f=p=o}}return g}function Ox(e){if(e._decimated){let t=e._data;delete e._decimated,delete e._data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,writable:!0,value:t})}}function kx(e){e.data.datasets.forEach(e=>{Ox(e)})}function Ax(e,t){let n=t.length,r=0,i,{iScale:a}=e,{min:o,max:s,minDefined:c,maxDefined:l}=a.getUserBounds();return c&&(r=eh(ih(t,a.axis,o).lo,0,n-1)),i=l?eh(ih(t,a.axis,s).hi+1,r,n)-r:n-r,{start:r,count:i}}var jx={id:`decimation`,defaults:{algorithm:`min-max`,enabled:!1},beforeElementsUpdate:(e,t,n)=>{if(!n.enabled){kx(e);return}let r=e.width;e.data.datasets.forEach((t,i)=>{let{_data:a,indexAxis:o}=t,s=e.getDatasetMeta(i),c=a||t.data;if(mg([o,e.options.indexAxis])===`y`||!s.controller.supportsDecimation)return;let l=e.scales[s.xAxisID];if(l.type!==`linear`&&l.type!==`time`||e.options.parsing)return;let{start:u,count:d}=Ax(s,c);if(d<=(n.threshold||4*r)){Ox(t);return}rm(a)&&(t._data=c,delete t.data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(e){this._data=e}}));let f;switch(n.algorithm){case`lttb`:f=Ex(c,u,d,r,n);break;case`min-max`:f=Dx(c,u,d,r);break;default:throw Error(`Unsupported decimation algorithm '${n.algorithm}'`)}t._decimated=f})},destroy(e){kx(e)}};function Mx(e,t,n){let r=e.segments,i=e.points,a=t.points,o=[];for(let e of r){let{start:r,end:s}=e;s=Fx(r,s,i);let c=Nx(n,i[r],i[s],e.loop);if(!t.segments){o.push({source:e,target:c,start:i[r],end:i[s]});continue}let l=x_(t,c);for(let t of l){let r=Nx(n,a[t.start],a[t.end],t.loop),s=b_(e,i,r);for(let e of s)o.push({source:e,target:t,start:{[n]:Ix(c,r,`start`,Math.max)},end:{[n]:Ix(c,r,`end`,Math.min)}})}}return o}function Nx(e,t,n,r){if(r)return;let i=t[e],a=n[e];return e===`angle`&&(i=Qm(i),a=Qm(a)),{property:e,start:i,end:a}}function Px(e,t){let{x:n=null,y:r=null}=e||{},i=t.points,a=[];return t.segments.forEach(({start:e,end:t})=>{t=Fx(e,t,i);let o=i[e],s=i[t];r===null?n!==null&&(a.push({x:n,y:o.y}),a.push({x:n,y:s.y})):(a.push({x:o.x,y:r}),a.push({x:s.x,y:r}))}),a}function Fx(e,t,n){for(;t>e;t--){let e=n[t];if(!isNaN(e.x)&&!isNaN(e.y))break}return t}function Ix(e,t,n,r){return e&&t?r(e[n],t[n]):e?e[n]:t?t[n]:0}function Lx(e,t){let n=[],r=!1;return im(e)?(r=!0,n=e):n=Px(e,t),n.length?new tx({points:n,options:{tension:0},_loop:r,_fullLoop:r}):null}function Rx(e){return e&&e.fill!==!1}function zx(e,t,n){let r=e[t].fill,i=[t],a;if(!n)return r;for(;r!==!1&&i.indexOf(r)===-1;){if(!om(r))return r;if(a=e[r],!a)return!1;if(a.visible)return r;i.push(r),r=a.fill}return!1}function Bx(e,t,n){let r=Wx(e);if(am(r))return!isNaN(r.value)&&r;let i=parseFloat(r);return om(i)&&Math.floor(i)===i?Vx(r[0],t,i,n):[`origin`,`start`,`end`,`stack`,`shape`].indexOf(r)>=0&&r}function Vx(e,t,n,r){return(e===`-`||e===`+`)&&(n=t+n),n===t||n<0||n>=r?!1:n}function Hx(e,t){let n=null;return e===`start`?n=t.bottom:e===`end`?n=t.top:am(e)?n=t.getPixelForValue(e.value):t.getBasePixel&&(n=t.getBasePixel()),n}function Ux(e,t,n){let r;return r=e===`start`?n:e===`end`?t.options.reverse?t.min:t.max:am(e)?e.value:t.getBaseValue(),r}function Wx(e){let t=e.options,n=t.fill,r=cm(n&&n.target,n);return r===void 0&&(r=!!t.backgroundColor),r===!1||r===null?!1:r===!0?`origin`:r}function Gx(e){let{scale:t,index:n,line:r}=e,i=[],a=r.segments,o=r.points,s=Kx(t,n);s.push(Lx({x:null,y:t.bottom},r));for(let e=0;e=0;--t){let n=i[t].$filler;n&&(n.line.updateControlPoints(a,n.axis),r&&n.fill&&tS(e.ctx,n,a))}},beforeDatasetsDraw(e,t,n){if(n.drawTime!==`beforeDatasetsDraw`)return;let r=e.getSortedVisibleDatasetMetas();for(let t=r.length-1;t>=0;--t){let n=r[t].$filler;Rx(n)&&tS(e.ctx,n,e.chartArea)}},beforeDatasetDraw(e,t,n){let r=t.meta.$filler;!Rx(r)||n.drawTime!==`beforeDatasetDraw`||tS(e.ctx,r,e.chartArea)},defaults:{propagate:!0,drawTime:`beforeDatasetDraw`}},lS=(e,t)=>{let{boxHeight:n=t,boxWidth:r=t}=e;return e.usePointStyle&&(n=Math.min(n,t),r=e.pointStyleWidth||Math.min(r,t)),{boxWidth:r,boxHeight:n,itemHeight:Math.max(t,n)}},uS=(e,t)=>e!==null&&t!==null&&e.datasetIndex===t.datasetIndex&&e.index===t.index,dS=class extends wy{constructor(e){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,t,n){this.maxWidth=e,this.maxHeight=t,this._margins=n,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){let e=this.options.labels||{},t=dm(e.generateLabels,[this.chart],this)||[];e.filter&&(t=t.filter(t=>e.filter(t,this.chart.data))),e.sort&&(t=t.sort((t,n)=>e.sort(t,n,this.chart.data))),this.options.reverse&&t.reverse(),this.legendItems=t}fit(){let{options:e,ctx:t}=this;if(!e.display){this.width=this.height=0;return}let n=e.labels,r=pg(n.font),i=r.size,a=this._computeTitleHeight(),{boxWidth:o,itemHeight:s}=lS(n,i),c,l;t.font=r.string,this.isHorizontal()?(c=this.maxWidth,l=this._fitRows(a,i,o,s)+10):(l=this.maxHeight,c=this._fitCols(a,r,o,s)+10),this.width=Math.min(c,e.maxWidth||this.maxWidth),this.height=Math.min(l,e.maxHeight||this.maxHeight)}_fitRows(e,t,n,r){let{ctx:i,maxWidth:a,options:{labels:{padding:o}}}=this,s=this.legendHitBoxes=[],c=this.lineWidths=[0],l=r+o,u=e;i.textAlign=`left`,i.textBaseline=`middle`;let d=-1,f=-l;return this.legendItems.forEach((e,p)=>{let m=n+t/2+i.measureText(e.text).width;(p===0||c[c.length-1]+m+2*o>a)&&(u+=l,c[c.length-(p>0?0:1)]=0,f+=l,d++),s[p]={left:0,top:f,row:d,width:m,height:r},c[c.length-1]+=m+o}),u}_fitCols(e,t,n,r){let{ctx:i,maxHeight:a,options:{labels:{padding:o}}}=this,s=this.legendHitBoxes=[],c=this.columnSizes=[],l=a-e,u=o,d=0,f=0,p=0,m=0;return this.legendItems.forEach((e,a)=>{let{itemWidth:h,itemHeight:g}=fS(n,t,i,e,r);a>0&&f+g+2*o>l&&(u+=d+o,c.push({width:d,height:f}),p+=d+o,m++,d=f=0),s[a]={left:p,top:f,col:m,width:h,height:g},d=Math.max(d,h),f+=g+o}),u+=d,c.push({width:d,height:f}),u}adjustHitBoxes(){if(!this.options.display)return;let e=this._computeTitleHeight(),{legendHitBoxes:t,options:{align:n,labels:{padding:r},rtl:i}}=this,a=m_(i,this.left,this.width);if(this.isHorizontal()){let i=0,o=hh(n,this.left+r,this.right-this.lineWidths[i]);for(let s of t)i!==s.row&&(i=s.row,o=hh(n,this.left+r,this.right-this.lineWidths[i])),s.top+=this.top+e+r,s.left=a.leftForLtr(a.x(o),s.width),o+=s.width+r}else{let i=0,o=hh(n,this.top+e+r,this.bottom-this.columnSizes[i].height);for(let s of t)s.col!==i&&(i=s.col,o=hh(n,this.top+e+r,this.bottom-this.columnSizes[i].height)),s.top=o,s.left+=this.left+r,s.left=a.leftForLtr(a.x(s.left),s.width),o+=s.height+r}}isHorizontal(){return this.options.position===`top`||this.options.position===`bottom`}draw(){if(this.options.display){let e=this.ctx;Xh(e,this),this._draw(),Zh(e)}}_draw(){let{options:e,columnSizes:t,lineWidths:n,ctx:r}=this,{align:i,labels:a}=e,o=Vh.color,s=m_(e.rtl,this.left,this.width),c=pg(a.font),{padding:l}=a,u=c.size,d=u/2,f;this.drawTitle(),r.textAlign=s.textAlign(`left`),r.textBaseline=`middle`,r.lineWidth=.5,r.font=c.string;let{boxWidth:p,boxHeight:m,itemHeight:h}=lS(a,u),g=function(e,t,n){if(isNaN(p)||p<=0||isNaN(m)||m<0)return;r.save();let i=cm(n.lineWidth,1);if(r.fillStyle=cm(n.fillStyle,o),r.lineCap=cm(n.lineCap,`butt`),r.lineDashOffset=cm(n.lineDashOffset,0),r.lineJoin=cm(n.lineJoin,`miter`),r.lineWidth=i,r.strokeStyle=cm(n.strokeStyle,o),r.setLineDash(cm(n.lineDash,[])),a.usePointStyle){let o={radius:m*Math.SQRT2/2,pointStyle:n.pointStyle,rotation:n.rotation,borderWidth:i},c=s.xPlus(e,p/2),l=t+d;Jh(r,o,c,l,a.pointStyleWidth&&p)}else{let a=t+Math.max((u-m)/2,0),o=s.leftForLtr(e,p),c=dg(n.borderRadius);r.beginPath(),Object.values(c).some(e=>e!==0)?ig(r,{x:o,y:a,w:p,h:m,radius:c}):r.rect(o,a,p,m),r.fill(),i!==0&&r.stroke()}r.restore()},_=function(e,t,n){rg(r,n.text,e,t+h/2,c,{strikethrough:n.hidden,textAlign:s.textAlign(n.textAlign)})},v=this.isHorizontal(),y=this._computeTitleHeight();f=v?{x:hh(i,this.left+l,this.right-n[0]),y:this.top+l+y,line:0}:{x:this.left+l,y:hh(i,this.top+y+l,this.bottom-t[0].height),line:0},h_(this.ctx,e.textDirection);let b=h+l;this.legendItems.forEach((o,u)=>{r.strokeStyle=o.fontColor,r.fillStyle=o.fontColor;let m=r.measureText(o.text).width,h=s.textAlign(o.textAlign||=a.textAlign),x=p+d+m,S=f.x,C=f.y;s.setWidth(this.width),v?u>0&&S+x+l>this.right&&(C=f.y+=b,f.line++,S=f.x=hh(i,this.left+l,this.right-n[f.line])):u>0&&C+b>this.bottom&&(S=f.x=S+t[f.line].width+l,f.line++,C=f.y=hh(i,this.top+y+l,this.bottom-t[f.line].height));let w=s.x(S);if(g(w,C,o),S=gh(h,S+p+d,v?S+x:this.right,e.rtl),_(s.x(S),C,o),v)f.x+=x+l;else if(typeof o.text!=`string`){let e=c.lineHeight;f.y+=hS(o,e)+l}else f.y+=b}),g_(this.ctx,e.textDirection)}drawTitle(){let e=this.options,t=e.title,n=pg(t.font),r=fg(t.padding);if(!t.display)return;let i=m_(e.rtl,this.left,this.width),a=this.ctx,o=t.position,s=n.size/2,c=r.top+s,l,u=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),l=this.top+c,u=hh(e.align,u,this.right-d);else{let t=this.columnSizes.reduce((e,t)=>Math.max(e,t.height),0);l=c+hh(e.align,this.top,this.bottom-t-e.labels.padding-this._computeTitleHeight())}let f=hh(o,u,u+d);a.textAlign=i.textAlign(mh(o)),a.textBaseline=`middle`,a.strokeStyle=t.color,a.fillStyle=t.color,a.font=n.string,rg(a,t.text,f,l,n)}_computeTitleHeight(){let e=this.options.title,t=pg(e.font),n=fg(e.padding);return e.display?t.lineHeight+n.height:0}_getLegendItemAt(e,t){let n,r,i;if(nh(e,this.left,this.right)&&nh(t,this.top,this.bottom)){for(i=this.legendHitBoxes,n=0;ne.length>t.length?e:t)),t+n.size/2+r.measureText(i).width}function mS(e,t,n){let r=e;return typeof t.text!=`string`&&(r=hS(t,n)),r}function hS(e,t){return t*(e.text?e.text.length:0)}function gS(e,t){return!!((e===`mousemove`||e===`mouseout`)&&(t.onHover||t.onLeave)||t.onClick&&(e===`click`||e===`mouseup`))}var _S={id:`legend`,_element:dS,start(e,t,n){let r=e.legend=new dS({ctx:e.ctx,options:n,chart:e});ey.configure(e,r,n),ey.addBox(e,r)},stop(e){ey.removeBox(e,e.legend),delete e.legend},beforeUpdate(e,t,n){let r=e.legend;ey.configure(e,r,n),r.options=n},afterUpdate(e){let t=e.legend;t.buildLabels(),t.adjustHitBoxes()},afterEvent(e,t){t.replay||e.legend.handleEvent(t.event)},defaults:{display:!0,position:`top`,align:`center`,fullSize:!0,reverse:!1,weight:1e3,onClick(e,t,n){let r=t.datasetIndex,i=n.chart;i.isDatasetVisible(r)?(i.hide(r),t.hidden=!0):(i.show(r),t.hidden=!1)},onHover:null,onLeave:null,labels:{color:e=>e.chart.options.color,boxWidth:40,padding:10,generateLabels(e){let t=e.data.datasets,{labels:{usePointStyle:n,pointStyle:r,textAlign:i,color:a,useBorderRadius:o,borderRadius:s}}=e.legend.options;return e._getSortedDatasetMetas().map(e=>{let c=e.controller.getStyle(n?0:void 0),l=fg(c.borderWidth);return{text:t[e.index].label,fillStyle:c.backgroundColor,fontColor:a,hidden:!e.visible,lineCap:c.borderCapStyle,lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:(l.width+l.height)/4,strokeStyle:c.borderColor,pointStyle:r||c.pointStyle,rotation:c.rotation,textAlign:i||c.textAlign,borderRadius:o&&(s||c.borderRadius),datasetIndex:e.index}},this)}},title:{color:e=>e.chart.options.color,display:!1,position:`center`,text:``}},descriptors:{_scriptable:e=>!e.startsWith(`on`),labels:{_scriptable:e=>![`generateLabels`,`filter`,`sort`].includes(e)}}},vS=class extends wy{constructor(e){super(),this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,t){let n=this.options;if(this.left=0,this.top=0,!n.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=e,this.height=this.bottom=t;let r=im(n.text)?n.text.length:1;this._padding=fg(n.padding);let i=r*pg(n.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=i:this.width=i}isHorizontal(){let e=this.options.position;return e===`top`||e===`bottom`}_drawArgs(e){let{top:t,left:n,bottom:r,right:i,options:a}=this,o=a.align,s=0,c,l,u;return this.isHorizontal()?(l=hh(o,n,i),u=t+e,c=i-n):(a.position===`left`?(l=n+e,u=hh(o,r,t),s=km*-.5):(l=i-e,u=hh(o,t,r),s=km*.5),c=r-t),{titleX:l,titleY:u,maxWidth:c,rotation:s}}draw(){let e=this.ctx,t=this.options;if(!t.display)return;let n=pg(t.font),r=n.lineHeight/2+this._padding.top,{titleX:i,titleY:a,maxWidth:o,rotation:s}=this._drawArgs(r);rg(e,t.text,0,0,n,{color:t.color,maxWidth:o,rotation:s,textAlign:mh(t.align),textBaseline:`middle`,translation:[i,a]})}};function yS(e,t){let n=new vS({ctx:e.ctx,options:t,chart:e});ey.configure(e,n,t),ey.addBox(e,n),e.titleBlock=n}var bS={id:`title`,_element:vS,start(e,t,n){yS(e,n)},stop(e){let t=e.titleBlock;ey.removeBox(e,t),delete e.titleBlock},beforeUpdate(e,t,n){let r=e.titleBlock;ey.configure(e,r,n),r.options=n},defaults:{align:`center`,display:!1,font:{weight:`bold`},fullSize:!0,padding:10,position:`top`,text:``,weight:2e3},defaultRoutes:{color:`color`},descriptors:{_scriptable:!0,_indexable:!1}},xS=new WeakMap,SS={id:`subtitle`,start(e,t,n){let r=new vS({ctx:e.ctx,options:n,chart:e});ey.configure(e,r,n),ey.addBox(e,r),xS.set(e,r)},stop(e){ey.removeBox(e,xS.get(e)),xS.delete(e)},beforeUpdate(e,t,n){let r=xS.get(e);ey.configure(e,r,n),r.options=n},defaults:{align:`center`,display:!1,font:{weight:`normal`},fullSize:!0,padding:0,position:`top`,text:``,weight:1500},defaultRoutes:{color:`color`},descriptors:{_scriptable:!0,_indexable:!1}},CS={average(e){if(!e.length)return!1;let t,n,r=new Set,i=0,a=0;for(t=0,n=e.length;te+t)/r.size,y:i/a}},nearest(e,t){if(!e.length)return!1;let n=t.x,r=t.y,i=1/0,a,o,s;for(a=0,o=e.length;a-1?e.split(` -`):e}function xx(e,t){let{element:n,datasetIndex:r,index:i}=t,a=e.getDatasetMeta(r).controller,{label:o,value:s}=a.getLabelAndValue(i);return{chart:e,label:o,parsed:a.getParsed(i),raw:e.data.datasets[r].data[i],formattedValue:s,dataset:a.getDataset(),dataIndex:i,datasetIndex:r,element:n}}function Sx(e,t){let n=e.chart.ctx,{body:r,footer:i,title:a}=e,{boxWidth:o,boxHeight:s}=t,c=ch(t.bodyFont),l=ch(t.titleFont),u=ch(t.footerFont),d=a.length,f=i.length,p=r.length,m=sh(t.padding),h=m.height,g=0,_=r.reduce((e,t)=>e+t.before.length+t.lines.length+t.after.length,0);if(_+=e.beforeBody.length+e.afterBody.length,d&&(h+=d*l.lineHeight+(d-1)*t.titleSpacing+t.titleMarginBottom),_){let e=t.displayColors?Math.max(s,c.lineHeight):c.lineHeight;h+=p*e+(_-p)*c.lineHeight+(_-1)*t.bodySpacing}f&&(h+=t.footerMarginTop+f*u.lineHeight+(f-1)*t.footerSpacing);let v=0,y=function(e){g=Math.max(g,n.measureText(e).width+v)};return n.save(),n.font=l.string,sp(e.title,y),n.font=c.string,sp(e.beforeBody.concat(e.afterBody),y),v=t.displayColors?o+2+t.boxPadding:0,sp(r,e=>{sp(e.before,y),sp(e.lines,y),sp(e.after,y)}),v=0,n.font=u.string,sp(e.footer,y),n.restore(),g+=m.width,{width:g,height:h}}function Cx(e,t){let{y:n,height:r}=t;return ne.height-r/2?`bottom`:`center`}function wx(e,t,n,r){let{x:i,width:a}=r,o=n.caretSize+n.caretPadding;if(e===`left`&&i+a+o>t.width||e===`right`&&i-a-o<0)return!0}function Tx(e,t,n,r){let{x:i,width:a}=n,{width:o,chartArea:{left:s,right:c}}=e,l=`center`;return r===`center`?l=i<=(s+c)/2?`left`:`right`:i<=a/2?l=`left`:i>=o-a/2&&(l=`right`),wx(l,e,t,n)&&(l=`center`),l}function Ex(e,t,n){let r=n.yAlign||t.yAlign||Cx(e,n);return{xAlign:n.xAlign||t.xAlign||Tx(e,t,n,r),yAlign:r}}function Dx(e,t){let{x:n,width:r}=e;return t===`right`?n-=r:t===`center`&&(n-=r/2),n}function Ox(e,t,n){let{y:r,height:i}=e;return t===`top`?r+=n:t===`bottom`?r-=i+n:r-=i/2,r}function kx(e,t,n,r){let{caretSize:i,caretPadding:a,cornerRadius:o}=e,{xAlign:s,yAlign:c}=n,l=i+a,{topLeft:u,topRight:d,bottomLeft:f,bottomRight:p}=oh(o),m=Dx(t,s),h=Ox(t,c,l);return c===`center`?s===`left`?m+=l:s===`right`&&(m-=l):s===`left`?m-=Math.max(u,f)+i:s===`right`&&(m+=Math.max(d,p)+i),{x:Yp(m,0,r.width-t.width),y:Yp(h,0,r.height-t.height)}}function Ax(e,t,n){let r=sh(n.padding);return t===`center`?e.x+e.width/2:t===`right`?e.x+e.width-r.right:e.x+r.left}function jx(e){return yx([],bx(e))}function Mx(e,t,n){return dh(e,{tooltip:t,tooltipItems:n,type:`tooltip`})}function Nx(e,t){let n=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return n?e.override(n):e}var Px={beforeTitle:Xf,title(e){if(e.length>0){let t=e[0],n=t.chart.data.labels,r=n?n.length:0;if(this&&this.options&&this.options.mode===`dataset`)return t.dataset.label||``;if(t.label)return t.label;if(r>0&&t.dataIndex{let t={before:[],lines:[],after:[]},i=Nx(n,e);yx(t.before,bx(Fx(i,`beforeLabel`,this,e))),yx(t.lines,Fx(i,`label`,this,e)),yx(t.after,bx(Fx(i,`afterLabel`,this,e))),r.push(t)}),r}getAfterBody(e,t){return jx(Fx(t.callbacks,`afterBody`,this,e))}getFooter(e,t){let{callbacks:n}=t,r=Fx(n,`beforeFooter`,this,e),i=Fx(n,`footer`,this,e),a=Fx(n,`afterFooter`,this,e),o=[];return o=yx(o,bx(r)),o=yx(o,bx(i)),o=yx(o,bx(a)),o}_createItems(e){let t=this._active,n=this.chart.data,r=[],i=[],a=[],o=[],s,c;for(s=0,c=t.length;se.filter(t,r,i,n))),e.itemSort&&(o=o.sort((t,r)=>e.itemSort(t,r,n))),sp(o,t=>{let n=Nx(e.callbacks,t);r.push(Fx(n,`labelColor`,this,t)),i.push(Fx(n,`labelPointStyle`,this,t)),a.push(Fx(n,`labelTextColor`,this,t))}),this.labelColors=r,this.labelPointStyles=i,this.labelTextColors=a,this.dataPoints=o,o}update(e,t){let n=this.options.setContext(this.getContext()),r=this._active,i,a=[];if(!r.length)this.opacity!==0&&(i={opacity:0});else{let e=vx[n.position].call(this,r,this._eventPosition);a=this._createItems(n),this.title=this.getTitle(a,n),this.beforeBody=this.getBeforeBody(a,n),this.body=this.getBody(a,n),this.afterBody=this.getAfterBody(a,n),this.footer=this.getFooter(a,n);let t=this._size=Sx(this,n),o=Object.assign({},e,t),s=Ex(this.chart,n,o),c=kx(n,o,s,this.chart);this.xAlign=s.xAlign,this.yAlign=s.yAlign,i={opacity:1,x:c.x,y:c.y,width:t.width,height:t.height,caretX:e.x,caretY:e.y}}this._tooltipItems=a,this.$context=void 0,i&&this._resolveAnimations().update(this,i),e&&n.external&&n.external.call(this,{chart:this.chart,tooltip:this,replay:t})}drawCaret(e,t,n,r){let i=this.getCaretPosition(e,n,r);t.lineTo(i.x1,i.y1),t.lineTo(i.x2,i.y2),t.lineTo(i.x3,i.y3)}getCaretPosition(e,t,n){let{xAlign:r,yAlign:i}=this,{caretSize:a,cornerRadius:o}=n,{topLeft:s,topRight:c,bottomLeft:l,bottomRight:u}=oh(o),{x:d,y:f}=e,{width:p,height:m}=t,h,g,_,v,y,b;return i===`center`?(y=f+m/2,r===`left`?(h=d,g=h-a,v=y+a,b=y-a):(h=d+p,g=h+a,v=y-a,b=y+a),_=h):(g=r===`left`?d+Math.max(s,l)+a:r===`right`?d+p-Math.max(c,u)-a:this.caretX,i===`top`?(v=f,y=v-a,h=g-a,_=g+a):(v=f+m,y=v+a,h=g+a,_=g-a),b=v),{x1:h,x2:g,x3:_,y1:v,y2:y,y3:b}}drawTitle(e,t,n){let r=this.title,i=r.length,a,o,s;if(i){let c=lg(n.rtl,this.x,this.width);for(e.x=Ax(this,n.titleAlign,n),t.textAlign=c.textAlign(n.titleAlign),t.textBaseline=`middle`,a=ch(n.titleFont),o=n.titleSpacing,t.fillStyle=n.titleColor,t.font=a.string,s=0;se!==0)?(e.beginPath(),e.fillStyle=i.multiKeyBackground,$m(e,{x:t,y:p,w:c,h:s,radius:o}),e.fill(),e.stroke(),e.fillStyle=a.backgroundColor,e.beginPath(),$m(e,{x:n,y:p+1,w:c-2,h:s-2,radius:o}),e.fill()):(e.fillStyle=i.multiKeyBackground,e.fillRect(t,p,c,s),e.strokeRect(t,p,c,s),e.fillStyle=a.backgroundColor,e.fillRect(n,p+1,c-2,s-2))}e.fillStyle=this.labelTextColors[n]}drawBody(e,t,n){let{body:r}=this,{bodySpacing:i,bodyAlign:a,displayColors:o,boxHeight:s,boxWidth:c,boxPadding:l}=n,u=ch(n.bodyFont),d=u.lineHeight,f=0,p=lg(n.rtl,this.x,this.width),m=function(n){t.fillText(n,p.x(e.x+f),e.y+d/2),e.y+=d+i},h=p.textAlign(a),g,_,v,y,b,x,S;for(t.textAlign=a,t.textBaseline=`middle`,t.font=u.string,e.x=Ax(this,h,n),t.fillStyle=n.bodyColor,sp(this.beforeBody,m),f=o&&h!==`right`?a===`center`?c/2+l:c+2+l:0,y=0,x=r.length;y0&&t.stroke()}_updateAnimationTarget(e){let t=this.chart,n=this.$animations,r=n&&n.x,i=n&&n.y;if(r||i){let n=vx[e.position].call(this,this._active,this._eventPosition);if(!n)return;let a=this._size=Sx(this,e),o=Object.assign({},n,this._size),s=Ex(t,e,o),c=kx(e,o,s,t);(r._to!==c.x||i._to!==c.y)&&(this.xAlign=s.xAlign,this.yAlign=s.yAlign,this.width=a.width,this.height=a.height,this.caretX=n.x,this.caretY=n.y,this._resolveAnimations().update(this,c))}}_willRender(){return!!this.opacity}draw(e){let t=this.options.setContext(this.getContext()),n=this.opacity;if(!n)return;this._updateAnimationTarget(t);let r={width:this.width,height:this.height},i={x:this.x,y:this.y};n=Math.abs(n)<.001?0:n;let a=sh(t.padding),o=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;t.enabled&&o&&(e.save(),e.globalAlpha=n,this.drawBackground(i,e,r,t),ug(e,t.textDirection),i.y+=a.top,this.drawTitle(i,e,t),this.drawBody(i,e,t),this.drawFooter(i,e,t),dg(e,t.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,t){let n=this._active,r=e.map(({datasetIndex:e,index:t})=>{let n=this.chart.getDatasetMeta(e);if(!n)throw Error(`Cannot find a dataset at index `+e);return{datasetIndex:e,element:n.data[t],index:t}}),i=!cp(n,r),a=this._positionChanged(r,t);(i||a)&&(this._active=r,this._eventPosition=t,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,t,n=!0){if(t&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;let r=this.options,i=this._active||[],a=this._getActiveElements(e,i,t,n),o=this._positionChanged(a,e),s=t||!cp(a,i)||o;return s&&(this._active=a,(r.enabled||r.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,t))),s}_getActiveElements(e,t,n,r){let i=this.options;if(e.type===`mouseout`)return[];if(!r)return t.filter(e=>this.chart.data.datasets[e.datasetIndex]&&this.chart.getDatasetMeta(e.datasetIndex).controller.getParsed(e.index)!==void 0);let a=this.chart.getElementsAtEventForMode(e,i.mode,i,n);return i.reverse&&a.reverse(),a}_positionChanged(e,t){let{caretX:n,caretY:r,options:i}=this,a=vx[i.position].call(this,e,t);return a!==!1&&(n!==a.x||r!==a.y)}},Lx=Object.freeze({__proto__:null,Colors:bb,Decimation:Eb,Filler:rx,Legend:fx,SubTitle:_x,Title:hx,Tooltip:{id:`tooltip`,_element:Ix,positioners:vx,afterInit(e,t,n){n&&(e.tooltip=new Ix({chart:e,options:n}))},beforeUpdate(e,t,n){e.tooltip&&e.tooltip.initialize(n)},reset(e,t,n){e.tooltip&&e.tooltip.initialize(n)},afterDraw(e){let t=e.tooltip;if(t&&t._willRender()){let n={tooltip:t};if(e.notifyPlugins(`beforeTooltipDraw`,{...n,cancelable:!0})===!1)return;t.draw(e.ctx),e.notifyPlugins(`afterTooltipDraw`,n)}},afterEvent(e,t){if(e.tooltip){let n=t.replay;e.tooltip.handleEvent(t.event,n,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:`average`,backgroundColor:`rgba(0,0,0,0.8)`,titleColor:`#fff`,titleFont:{weight:`bold`},titleSpacing:2,titleMarginBottom:6,titleAlign:`left`,bodyColor:`#fff`,bodySpacing:2,bodyFont:{},bodyAlign:`left`,footerColor:`#fff`,footerSpacing:2,footerMarginTop:6,footerFont:{weight:`bold`},footerAlign:`left`,padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(e,t)=>t.bodyFont.size,boxWidth:(e,t)=>t.bodyFont.size,multiKeyBackground:`#fff`,displayColors:!0,boxPadding:0,borderColor:`rgba(0,0,0,0)`,borderWidth:0,animation:{duration:400,easing:`easeOutQuart`},animations:{numbers:{type:`number`,properties:[`x`,`y`,`width`,`height`,`caretX`,`caretY`]},opacity:{easing:`linear`,duration:200}},callbacks:Px},defaultRoutes:{bodyFont:`font`,footerFont:`font`,titleFont:`font`},descriptors:{_scriptable:e=>e!==`filter`&&e!==`itemSort`&&e!==`external`,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:`animation`}},additionalOptionScopes:[`interaction`]}}),Rx=(e,t,n,r)=>(typeof t==`string`?(n=e.push(t)-1,r.unshift({index:n,label:t})):isNaN(t)&&(n=null),n);function zx(e,t,n,r){let i=e.indexOf(t);return i===-1?Rx(e,t,n,r):i===e.lastIndexOf(t)?i:n}var Bx=(e,t)=>e===null?null:Yp(Math.round(e),0,t);function Vx(e){let t=this.getLabels();return e>=0&&et.length-1?null:this.getPixelForValue(t[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}};function Ux(e,t){let n=[],{bounds:r,step:i,min:a,max:o,precision:s,count:c,maxTicks:l,maxDigits:u,includeBounds:d}=e,f=i||1,p=l-1,{min:m,max:h}=t,g=!Qf(a),_=!Qf(o),v=!Qf(c),y=(h-m)/(u+1),b=Fp((h-m)/p/f)*f,x,S,C,w;if(b<1e-14&&!g&&!_)return[{value:m},{value:h}];w=Math.ceil(h/b)-Math.floor(m/b),w>p&&(b=Fp(w*b/p/f)*f),Qf(s)||(x=10**s,b=Math.ceil(b*x)/x),r===`ticks`?(S=Math.floor(m/b)*b,C=Math.ceil(h/b)*b):(S=m,C=h),g&&_&&i&&zp((o-a)/i,b/1e3)?(w=Math.round(Math.min((o-a)/b,l)),b=(o-a)/w,S=a,C=o):v?(S=g?a:S,C=_?o:C,w=c-1,b=(C-S)/w):(w=(C-S)/b,w=Pp(w,Math.round(w),b/1e3)?Math.round(w):Math.ceil(w));let T=Math.max(Up(b),Up(S));x=10**(Qf(s)?T:s),S=Math.round(S*x)/x,C=Math.round(C*x)/x;let E=0;for(g&&(d&&S!==a?(n.push({value:a}),So)break;n.push({value:e})}return _&&d&&C!==o?n.length&&Pp(n[n.length-1].value,o,Wx(o,y,e))?n[n.length-1].value=o:n.push({value:o}):(!_||C===o)&&n.push({value:C}),n}function Wx(e,t,{horizontal:n,minRotation:r}){let i=Vp(r),a=(n?Math.sin(i):Math.cos(i))||.001,o=.75*t*(``+e).length;return Math.min(t/a,o)}var Gx=class extends zv{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(e,t){return Qf(e)||(typeof e==`number`||e instanceof Number)&&!isFinite(+e)?null:+e}handleTickRangeOptions(){let{beginAtZero:e}=this.options,{minDefined:t,maxDefined:n}=this.getUserBounds(),{min:r,max:i}=this,a=e=>r=t?r:e,o=e=>i=n?i:e;if(e){let e=Np(r),t=Np(i);e<0&&t<0?o(0):e>0&&t>0&&a(0)}if(r===i){let t=i===0?1:Math.abs(i*.05);o(i+t),e||a(r-t)}this.min=r,this.max=i}getTickLimit(){let{maxTicksLimit:e,stepSize:t}=this.options.ticks,n;return t?(n=Math.ceil(this.max/t)-Math.floor(this.min/t)+1,n>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${t} would result generating up to ${n} ticks. Limiting to 1000.`),n=1e3)):(n=this.computeTickLimit(),e||=11),e&&(n=Math.min(e,n)),n}computeTickLimit(){return 1/0}buildTicks(){let e=this.options,t=e.ticks,n=this.getTickLimit();n=Math.max(2,n);let r=Ux({maxTicks:n,bounds:e.bounds,min:e.min,max:e.max,precision:t.precision,step:t.stepSize,count:t.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:t.minRotation||0,includeBounds:t.includeBounds!==!1},this._range||this);return e.bounds===`ticks`&&Bp(r,this,`value`),e.reverse?(r.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),r}configure(){let e=this.ticks,t=this.min,n=this.max;if(super.configure(),this.options.offset&&e.length){let r=(n-t)/Math.max(e.length-1,1)/2;t-=r,n+=r}this._startValue=t,this._endValue=n,this._valueRange=n-t}getLabelForValue(e){return Dm(e,this.chart.options.locale,this.options.ticks.format)}},Kx=class extends Gx{static id=`linear`;static defaults={ticks:{callback:Am.formatters.numeric}};determineDataLimits(){let{min:e,max:t}=this.getMinMax(!0);this.min=tp(e)?e:0,this.max=tp(t)?t:1,this.handleTickRangeOptions()}computeTickLimit(){let e=this.isHorizontal(),t=e?this.width:this.height,n=Vp(this.options.ticks.minRotation),r=(e?Math.sin(n):Math.cos(n))||.001,i=this._resolveTickFontOptions(0);return Math.ceil(t/Math.min(40,i.lineHeight/r))}getPixelForValue(e){return e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}},qx=e=>Math.floor(Mp(e)),Jx=(e,t)=>10**(qx(e)+t);function Yx(e){return e/10**qx(e)==1}function Xx(e,t,n){let r=10**n,i=Math.floor(e/r);return Math.ceil(t/r)-i}function Zx(e,t){let n=qx(t-e);for(;Xx(e,t,n)>10;)n++;for(;Xx(e,t,n)<10;)n--;return Math.min(n,qx(e))}function Qx(e,{min:t,max:n}){t=np(e.min,t);let r=[],i=qx(t),a=Zx(t,n),o=a<0?10**Math.abs(a):1,s=10**a,c=i>a?10**i:0,l=Math.round((t-c)*o)/o,u=Math.floor((t-c)/s/10)*s*10,d=Math.floor((l-u)/10**a),f=np(e.min,Math.round((c+u+d*10**a)*o)/o);for(;f=10?d=d<15?15:20:d++,d>=20&&(a++,d=2,o=a>=0?1:o),f=Math.round((c+u+d*10**a)*o)/o;let p=np(e.max,f);return r.push({value:p,major:Yx(p),significand:d}),r}var $x=class extends zv{static id=`logarithmic`;static defaults={ticks:{callback:Am.formatters.logarithmic,major:{enabled:!0}}};constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(e,t){let n=Gx.prototype.parse.apply(this,[e,t]);if(n===0){this._zero=!0;return}return tp(n)&&n>0?n:null}determineDataLimits(){let{min:e,max:t}=this.getMinMax(!0);this.min=tp(e)?Math.max(0,e):null,this.max=tp(t)?Math.max(0,t):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!tp(this._userMin)&&(this.min=e===Jx(this.min,0)?Jx(this.min,-1):Jx(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){let{minDefined:e,maxDefined:t}=this.getUserBounds(),n=this.min,r=this.max,i=t=>n=e?n:t,a=e=>r=t?r:e;n===r&&(n<=0?(i(1),a(10)):(i(Jx(n,-1)),a(Jx(r,1)))),n<=0&&i(Jx(r,-1)),r<=0&&a(Jx(n,1)),this.min=n,this.max=r}buildTicks(){let e=this.options,t=Qx({min:this._userMin,max:this._userMax},this);return e.bounds===`ticks`&&Bp(t,this,`value`),e.reverse?(t.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),t}getLabelForValue(e){return e===void 0?`0`:Dm(e,this.chart.options.locale,this.options.ticks.format)}configure(){let e=this.min;super.configure(),this._startValue=Mp(e),this._valueRange=Mp(this.max)-Mp(e)}getPixelForValue(e){return(e===void 0||e===0)&&(e=this.min),e===null||isNaN(e)?NaN:this.getPixelForDecimal(e===this.min?0:(Mp(e)-this._startValue)/this._valueRange)}getValueForPixel(e){let t=this.getDecimalForPixel(e);return 10**(this._startValue+t*this._valueRange)}};function eS(e){let t=e.ticks;if(t.display&&e.display){let e=sh(t.backdropPadding);return rp(t.font&&t.font.size,Im.font.size)+e.height}return 0}function tS(e,t,n){return n=$f(n)?n:[n],{w:zm(e,t.string,n),h:n.length*t.lineHeight}}function nS(e,t,n,r,i){return e===r||e===i?{start:t-n/2,end:t+n/2}:ei?{start:t-n,end:t}:{start:t,end:t+n}}function rS(e){let t={l:e.left+e._padding.left,r:e.right-e._padding.right,t:e.top+e._padding.top,b:e.bottom-e._padding.bottom},n=Object.assign({},t),r=[],i=[],a=e._pointLabels.length,o=e.options.pointLabels,s=o.centerPointLabels?wp/a:0;for(let c=0;ct.r&&(s=(r.end-t.r)/a,e.r=Math.max(e.r,t.r+s)),i.startt.b&&(c=(i.end-t.b)/o,e.b=Math.max(e.b,t.b+c))}function aS(e,t,n){let r=e.drawingArea,{extra:i,additionalAngle:a,padding:o,size:s}=n,c=e.getPointPosition(t,r+i+o,a),l=Math.round(Hp(qp(c.angle+kp))),u=uS(c.y,s.h,l),d=cS(l),f=lS(c.x,s.w,d);return{visible:!0,x:c.x,y:u,textAlign:d,left:f,top:u,right:f+s.w,bottom:u+s.h}}function oS(e,t){if(!t)return!0;let{left:n,top:r,right:i,bottom:a}=e;return!(Wm({x:n,y:r},t)||Wm({x:n,y:a},t)||Wm({x:i,y:r},t)||Wm({x:i,y:a},t))}function sS(e,t,n){let r=[],i=e._pointLabels.length,a=e.options,{centerPointLabels:o,display:s}=a.pointLabels,c={extra:eS(a)/2,additionalAngle:o?wp/i:0},l;for(let a=0;a270||n<90)&&(e-=t),e}function dS(e,t,n){let{left:r,top:i,right:a,bottom:o}=n,{backdropColor:s}=t;if(!Qf(s)){let n=oh(t.borderRadius),c=sh(t.backdropPadding);e.fillStyle=s;let l=r-c.left,u=i-c.top,d=a-r+c.width,f=o-i+c.height;Object.values(n).some(e=>e!==0)?(e.beginPath(),$m(e,{x:l,y:u,w:d,h:f,radius:n}),e.fill()):e.fillRect(l,u,d,f)}}function fS(e,t){let{ctx:n,options:{pointLabels:r}}=e;for(let i=t-1;i>=0;i--){let t=e._pointLabelItems[i];if(!t.visible)continue;let a=r.setContext(e.getPointLabelContext(i));dS(n,a,t);let o=ch(a.font),{x:s,y:c,textAlign:l}=t;Qm(n,e._pointLabels[i],s,c+o.lineHeight/2,o,{color:a.color,textAlign:l,textBaseline:`middle`})}}function pS(e,t,n,r){let{ctx:i}=e;if(n)i.arc(e.xCenter,e.yCenter,t,0,Tp);else{let n=e.getPointPosition(0,t);i.moveTo(n.x,n.y);for(let a=1;a{let n=op(this.options.pointLabels.callback,[e,t],this);return n||n===0?n:``}).filter((e,t)=>this.chart.getDataVisibility(t))}fit(){let e=this.options;e.display&&e.pointLabels.display?rS(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(e,t,n,r){this.xCenter+=Math.floor((e-t)/2),this.yCenter+=Math.floor((n-r)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(e,t,n,r))}getIndexAngle(e){let t=Tp/(this._pointLabels.length||1),n=this.options.startAngle||0;return qp(e*t+Vp(n))}getDistanceFromCenterForValue(e){if(Qf(e))return NaN;let t=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-e)*t:(e-this.min)*t}getValueForDistanceFromCenter(e){if(Qf(e))return NaN;let t=e/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-t:this.min+t}getPointLabelContext(e){let t=this._pointLabels||[];if(e>=0&&e{if(t!==0||t===0&&this.min<0){s=this.getDistanceFromCenterForValue(e.value);let n=this.getContext(t),o=r.setContext(n),c=i.setContext(n);mS(this,o,s,a,c)}}),n.display){for(e.save(),o=a-1;o>=0;o--){let r=n.setContext(this.getPointLabelContext(o)),{color:i,lineWidth:a}=r;!a||!i||(e.lineWidth=a,e.strokeStyle=i,e.setLineDash(r.borderDash),e.lineDashOffset=r.borderDashOffset,s=this.getDistanceFromCenterForValue(t.reverse?this.min:this.max),c=this.getPointPosition(o,s),e.beginPath(),e.moveTo(this.xCenter,this.yCenter),e.lineTo(c.x,c.y),e.stroke())}e.restore()}}drawBorder(){}drawLabels(){let e=this.ctx,t=this.options,n=t.ticks;if(!n.display)return;let r=this.getIndexAngle(0),i,a;e.save(),e.translate(this.xCenter,this.yCenter),e.rotate(r),e.textAlign=`center`,e.textBaseline=`middle`,this.ticks.forEach((r,o)=>{if(o===0&&this.min>=0&&!t.reverse)return;let s=n.setContext(this.getContext(o)),c=ch(s.font);if(i=this.getDistanceFromCenterForValue(this.ticks[o].value),s.showLabelBackdrop){e.font=c.string,a=e.measureText(r.label).width,e.fillStyle=s.backdropColor;let t=sh(s.backdropPadding);e.fillRect(-a/2-t.left,-i-c.size/2-t.top,a+t.width,c.size+t.height)}Qm(e,r.label,0,-i,c,{color:s.color,strokeColor:s.textStrokeColor,strokeWidth:s.textStrokeWidth})}),e.restore()}drawTitle(){}},_S={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},vS=Object.keys(_S);function yS(e,t){return e-t}function bS(e,t){if(Qf(t))return null;let n=e._adapter,{parser:r,round:i,isoWeekday:a}=e._parseOpts,o=t;return typeof r==`function`&&(o=r(o)),tp(o)||(o=typeof r==`string`?n.parse(o,r):n.parse(o)),o===null?null:(i&&(o=i===`week`&&(Rp(a)||a===!0)?n.startOf(o,`isoWeek`,a):n.startOf(o,i)),+o)}function xS(e,t,n,r){let i=vS.length;for(let a=vS.indexOf(e);a=vS.indexOf(n);a--){let n=vS[a];if(_S[n].common&&e._adapter.diff(i,r,n)>=t-1)return n}return vS[n?vS.indexOf(n):0]}function CS(e){for(let t=vS.indexOf(e)+1,n=vS.length;t=t?n[r]:n[i];e[a]=!0}}function TS(e,t,n,r){let i=e._adapter,a=+i.startOf(t[0].value,r),o=t[t.length-1].value,s,c;for(s=a;s<=o;s=+i.add(s,1,r))c=n[s],c>=0&&(t[c].major=!0);return t}function ES(e,t,n){let r=[],i={},a=t.length,o,s;for(o=0;o+e.value))}initOffsets(e=[]){let t=0,n=0,r,i;this.options.offset&&e.length&&(r=this.getDecimalForValue(e[0]),t=e.length===1?1-r:(this.getDecimalForValue(e[1])-r)/2,i=this.getDecimalForValue(e[e.length-1]),n=e.length===1?i:(i-this.getDecimalForValue(e[e.length-2]))/2);let a=e.length<3?.5:.25;t=Yp(t,0,a),n=Yp(n,0,a),this._offsets={start:t,end:n,factor:1/(t+1+n)}}_generate(){let e=this._adapter,t=this.min,n=this.max,r=this.options,i=r.time,a=i.unit||xS(i.minUnit,t,n,this._getLabelCapacity(t)),o=rp(r.ticks.stepSize,1),s=a===`week`&&i.isoWeekday,c=Rp(s)||s===!0,l={},u=t,d,f;if(c&&(u=+e.startOf(u,`isoWeek`,s)),u=+e.startOf(u,c?`day`:a),e.diff(n,t,a)>1e5*o)throw Error(t+` and `+n+` are too far apart with stepSize of `+o+` `+a);let p=r.ticks.source===`data`&&this.getDataTimestamps();for(d=u,f=0;d+e)}getLabelForValue(e){let t=this._adapter,n=this.options.time;return n.tooltipFormat?t.format(e,n.tooltipFormat):t.format(e,n.displayFormats.datetime)}format(e,t){let n=this.options.time.displayFormats,r=this._unit,i=t||n[r];return this._adapter.format(e,i)}_tickFormatFunction(e,t,n,r){let i=this.options,a=i.ticks.callback;if(a)return op(a,[e,t,n],this);let o=i.time.displayFormats,s=this._unit,c=this._majorUnit,l=s&&o[s],u=c&&o[c],d=n[t],f=c&&u&&d&&d.major;return this._adapter.format(e,r||(f?u:l))}generateTickLabels(e){let t,n,r;for(t=0,n=e.length;t0?o:1}getDataTimestamps(){let e=this._cache.data||[],t,n;if(e.length)return e;let r=this.getMatchingVisibleMetas();if(this._normalized&&r.length)return this._cache.data=r[0].controller.getAllParsedValues(this);for(t=0,n=r.length;t=e[r].pos&&t<=e[i].pos&&({lo:r,hi:i}=$p(e,`pos`,t)),{pos:a,time:s}=e[r],{pos:o,time:c}=e[i]):(t>=e[r].time&&t<=e[i].time&&({lo:r,hi:i}=$p(e,`time`,t)),{time:a,pos:s}=e[r],{time:o,pos:c}=e[i]);let l=o-a;return l?s+(c-s)*(t-a)/l:s}var kS=class extends DS{static id=`timeseries`;static defaults=DS.defaults;constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){let e=this._getTimestampsForTable(),t=this._table=this.buildLookupTable(e);this._minPos=OS(t,this.min),this._tableRange=OS(t,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){let{min:t,max:n}=this,r=[],i=[],a,o,s,c,l;for(a=0,o=e.length;a=t&&c<=n&&r.push(c);if(r.length<2)return[{time:t,pos:0},{time:n,pos:1}];for(a=0,o=r.length;ae-t)}_getTimestampsForTable(){let e=this._cache.all||[];if(e.length)return e;let t=this.getDataTimestamps(),n=this.getLabelTimestamps();return e=t.length&&n.length?this.normalize(t.concat(n)):t.length?t:n,e=this._cache.all=e,e}getDecimalForValue(e){return(OS(this._table,e)-this._minPos)/this._tableRange}getValueForPixel(e){let t=this._offsets,n=this.getDecimalForPixel(e)/t.factor-t.end;return OS(this._table,n*this._tableRange+this._minPos,!0)}},AS=[x_,cb,Lx,Object.freeze({__proto__:null,CategoryScale:Hx,LinearScale:Kx,LogarithmicScale:$x,RadialLinearScale:gS,TimeScale:DS,TimeSeriesScale:kS})];Dy.register(...AS);var jS=Dy,MS=B(``);function NS(e,t){O(t,!0);let n=q(t,`class`,3,``),r=q(t,`ariaLabel`,3,``);function i(e){if(vc.tick,typeof t.build!=`function`)return;let n=t.build();if(!n)return;let r=new jS(e.getContext(`2d`),n);return()=>r.destroy()}var a=MS();Ai(a,()=>i),L(()=>{G(a,1,Ni(n())),K(a,`aria-label`,r())}),V(e,a),k()}var PS=B(``),FS=B(`
`);function IS(e,t){O(t,!0);let n=q(t,`options`,19,()=>[]),r=q(t,`ariaLabel`,3,``),i=q(t,`class`,3,``);var a=FS();W(a,21,n,e=>e.value,(e,n)=>{var r=PS();let i;var a=P(r,!0);D(r),L(()=>{i=G(r,1,`segmented-btn svelte-92fh5i`,null,i,{active:t.value===R(n).value}),K(r,`aria-pressed`,t.value===R(n).value),H(a,R(n).label)}),z(`click`,r,()=>t.onchange?.(R(n).value)),V(e,r)}),D(a),L(()=>{G(a,1,Ni([`segmented-control`,i()]),`svelte-92fh5i`),K(a,`aria-label`,r())}),V(e,a),k()}Br([`click`]);function LS(e){return getComputedStyle(document.documentElement).getPropertyValue(e).trim()}function RS(){return{grid:LS(`--chart-grid`),text:LS(`--chart-text`),dayMarker:LS(`--chart-day-marker`),tooltipBg:LS(`--chart-tooltip-bg`),tooltipBorder:LS(`--chart-tooltip-border`),tooltipText:LS(`--chart-tooltip-text`)}}function zS(){return{size:11,family:`'SF Mono', Menlo, Consolas, monospace`}}function BS(e,t){return{backgroundColor:e.tooltipBg,borderColor:e.tooltipBorder,borderWidth:1,titleColor:e.tooltipText,bodyColor:e.tooltipText,callbacks:t}}function VS(e){if(typeof document>`u`||!document.body)return e;let t=document.createElement(`span`);t.style.display=`none`,t.style.color=e,document.body.appendChild(t);let n=getComputedStyle(t).color;return document.body.removeChild(t),n||e}var HS=[`#c2845a`,`#7a9e7e`,`#d4a574`,`#b8a98e`,`#8b9e6b`,`#7d8a97`,`#c47a5a`,`#6b8e6b`,`#a09486`,`#9b7ea4`,`#c49a6c`];function US(){return[...HS]}function WS(e){let t=5381,n=String(e||``);for(let e=0;efd(e)}}var XS={seconds:{apiName:`second`,windowLabel:`Last 60 seconds`,refreshMs:2e3},minutes:{apiName:`minute`,windowLabel:`Last 60 minutes`,refreshMs:5e3},hours:{apiName:`hour`,windowLabel:`Last 24 hours`,refreshMs:2e4},days:{apiName:`day`,windowLabel:`Last 30 days`,refreshMs:6e4}},ZS=[{value:`seconds`,label:`Seconds`},{value:`minutes`,label:`Minutes`},{value:`hours`,label:`Hours`},{value:`days`,label:`Days`}];function QS(){return{input:0,output:0,prompt:0,local:0}}function $S(e){return String(e).padStart(2,`0`)}function eC(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:0}function tC(e,t){if(!Number.isFinite(t))return``;let n=new Date(t);switch(e){case`seconds`:return $S(n.getHours())+`:`+$S(n.getMinutes())+`:`+$S(n.getSeconds());case`minutes`:return $S(n.getHours())+`:`+$S(n.getMinutes());case`hours`:return $S(n.getHours())+`:00`;default:return $S(n.getMonth()+1)+`-`+$S(n.getDate())}}function nC(e,t){let n=[],r=[],i={input:[],output:[],prompt:[],local:[]},a=QS();for(let o of e||[]){let e=Date.parse(o&&o.start),s=eC(o&&o.input_tokens),c=eC(o&&o.output_tokens),l=eC(o&&o.prompt_cached_tokens),u=eC(o&&o.locally_cached_tokens);n.push(tC(t,e)),r.push(Number.isFinite(e)?e:null),i.input.push(s),i.output.push(c),i.prompt.push(l),i.local.push(u),a.input+=s,a.output+=c,a.prompt+=l,a.local+=u}return{labels:n,stamps:r,cols:i,totals:a}}function rC(e){let t=e||QS();return t.input+t.output+t.prompt+t.local>0}function iC(e,t){return fd(Math.max(0,Math.round(e&&e[t]||0)))}function aC(e){return(XS[e]||XS.minutes).windowLabel}function oC(e,t){return`Live token throughput, `+aC(t).toLowerCase()+`. Input `+iC(e,`input`)+`, output `+iC(e,`output`)+`, prompt cached `+iC(e,`prompt`)+`, locally cached `+iC(e,`local`)+` tokens.`}function sC(e,t,n,r){let i=e=>fd(Math.max(0,Math.round(e))),a=n.stamps,o=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderWidth:0,borderRadius:0,categoryPercentage:1,barPercentage:1,stack:`tokens`});return{type:`bar`,plugins:[{id:`liveTokensDayMarks`,afterDatasetsDraw:t=>{if(r===`days`)return;let n=t.getDatasetMeta(0),i=t.chartArea;if(!n||!n.data||!i)return;let o=t.ctx;o.save(),o.font=`10px 'SF Mono', Menlo, Consolas, monospace`;let s=null;for(let t=0;t{if(!e.length)return``;let t=a[e[0].dataIndex];if(!t)return e[0].label;let n=new Date(t);return r===`days`?n.toLocaleDateString():n.toLocaleString()},label:e=>e.dataset.label+`: `+i(e.parsed.y),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),`Total: `+i(t)}})}}}}var cC=900,lC=new class{#e=j(`minutes`);get granularity(){return R(this.#e)}set granularity(e){M(this.#e,e,!0)}#t=j(N([]));get buckets(){return R(this.#t)}set buckets(e){M(this.#t,e,!0)}#n=j(!1);get active(){return R(this.#n)}set active(e){M(this.#n,e,!0)}#r=null;#i=null;#a=null;#o=0;#s=null;#c=!1;start(){this.stop(),this.active=!0,this.fetch(),this.#l(),this.#u()}stop(){this.active=!1,this.#r&&=(clearInterval(this.#r),null),this.#i&&=(clearTimeout(this.#i),null),this.#a&&=(clearTimeout(this.#a),null),this.#o=0,this.#s&&=(this.#s.abort(),null),this.buckets=[]}setGranularity(e){!XS[e]||e===this.granularity||(this.granularity=e,this.buckets=[],this.#l(),this.fetch())}#l(){this.#r&&=(clearInterval(this.#r),null);let e=XS[this.granularity]||XS.minutes;this.#r=setInterval(()=>{this.active&&this.fetch()},e.refreshMs)}noteUsageEvent(e){!this.active||e!==`usage.flushed`||(this.#i||=setTimeout(()=>{this.#i=null,this.fetch()},cC))}async fetch(){if(!this.active||this.#c)return;this.#c=!0;let e=this.granularity;try{let t=await hu(`/admin/usage/throughput?granularity=`+(XS[e]||XS.minutes).apiName,{label:`token throughput`});if(t.stale||!t.ok||this.granularity!==e)return;this.buckets=t.data&&Array.isArray(t.data.buckets)?t.data.buckets:[]}catch(e){if(_u(e))return;console.error(`Failed to fetch token throughput:`,e)}finally{this.#c=!1,this.active&&this.granularity!==e&&this.fetch()}}async#u(){await bu.ensureLoaded(),this.active&&bu.liveLogsVisible()&&(typeof ReadableStream>`u`||(this.#s&&this.#s.abort(),this.#s=new AbortController,this.#d(this.#s)))}async#d(e){let t=()=>{e.signal.aborted||this.#s!==e||this.#p()};try{let n=await pu(`/admin/live/logs?types=usage`,{signal:e.signal});if(!n.ok||!n.body||typeof n.body.getReader!=`function`){t();return}this.#o=0,await KS(n.body.getReader(),e=>this.#f(e)),t()}catch(n){if(_u(n)||e.signal.aborted)return;console.error(`Live usage stream failed:`,n),t()}}#f(e){if(!e||typeof e!=`object`)return;let t=String(e.type||``).trim();t.indexOf(`usage.`)===0&&this.noteUsageEvent(t)}#p(){if(!this.active||this.#a)return;let{attempt:e,delay:t}=JS(this.#o);this.#o=e,this.#a=setTimeout(()=>{this.#a=null,this.#u()},t)}},uC=B(`
`),dC=B(`
Waiting for live requests…
`),fC=B(`

Live Token Throughput

`);function pC(e,t){O(t,!0);let n=A(()=>nC(lC.buckets,lC.granularity)),r=A(()=>R(n).totals);function i(){return{input:VS(`var(--token-input)`),output:VS(`var(--token-output)`),prompt:VS(`var(--token-prompt)`),local:VS(`var(--token-local)`)}}let a=[{metric:`input`,label:`Input Tokens`,colorVar:`--token-input`},{metric:`output`,label:`Output Tokens`,colorVar:`--token-output`},{metric:`prompt`,label:`Prompt (Input) Cached`,colorVar:`--token-prompt`},{metric:`local`,label:`Locally Cached`,colorVar:`--token-local`}];var o=fC(),s=P(o),c=P(s),l=I(P(c),2),u=P(l);let d;var f=I(u,2),p=P(f,!0);D(f),D(l),D(c),IS(I(c,2),{ariaLabel:`Live token throughput granularity`,get options(){return ZS},get value(){return lC.granularity},onchange:e=>lC.setGranularity(e)}),D(s);var m=I(s,2);W(m,21,()=>a,e=>e.metric,(e,t)=>{var n=uC(),i=P(n),a=I(i,2),o=P(a,!0);D(a);var s=I(a,2),c=P(s,!0);D(s),D(n),L(e=>{Bi(i,`background: var(${R(t).colorVar??``})`),H(o,R(t).label),H(c,e)},[()=>iC(R(r),R(t).metric)]),V(e,n)}),D(m);var h=I(m,2),g=P(h);{let e=A(()=>oC(R(r),lC.granularity));NS(g,{get ariaLabel(){return R(e)},build:()=>sC(RS(),i(),R(n),lC.granularity)})}var _=I(g,2),v=e=>{V(e,dC())},y=A(()=>!rC(R(r)));U(_,e=>{R(y)&&e(v)}),D(h),D(o),L(e=>{d=G(u,1,`live-dot`,null,d,{"is-streaming":lC.active}),H(p,e)},[()=>aC(lC.granularity)]),V(e,o),k()}function mC(e){let t=e||{};if(t.total_tokens!==null&&t.total_tokens!==void 0){let e=Number(t.total_tokens);if(Number.isFinite(e))return e}let n=Number(t.total_input_tokens||0),r=Number(t.total_output_tokens||0);return(Number.isFinite(n)?n:0)+(Number.isFinite(r)?r:0)}function hC(e,t){if(!t)return 0;let n=e&&e.summary?e.summary:{},r=Number(n.total_hits||0);return Number.isFinite(r)&&r>0?r:0}function gC(e,t,n){let r=Number(e&&e.total_requests||0);return(Number.isFinite(r)?r:0)+hC(t,n)}function _C(e,t,n){let r=hC(t,n);return r<=0?``:cd(gC(e,t,n)-r)+` to providers + `+cd(r)+` from cache`}function vC(e){let t=e&&e.summary?e.summary:{},n=Number(t.total_input_tokens||0),r=Number(t.total_output_tokens||0);return(Number.isFinite(n)?n:0)+(Number.isFinite(r)?r:0)}function yC(e,t,n){let r=e=>{let t=Number(e||0);return Number.isFinite(t)&&t>0?t:0},i=e||{},a=r(i.uncached_input_tokens),o=r(i.cached_input_tokens),s=r(i.cache_write_input_tokens),c=t&&t.summary?t.summary:{},l=n?r(c.total_input_tokens):0;return[{key:`uncached`,label:`Regular`,tokens:a+s,colorVar:`--cache-meter-uncached`,note:s>0?`Includes `+cd(s)+` cache-write tokens`:``},{key:`prompt`,label:`Prompt cached`,tokens:o,colorVar:`--cache-meter-prompt`,note:`Provider prompt-cache reads`},{key:`local`,label:`Locally cached`,tokens:l,colorVar:`--cache-meter-local`,note:`Served from GoModel response cache`}]}function bC(e,t,n){return yC(e,t,n).reduce((e,t)=>e+t.tokens,0)}function xC(e,t,n){return bC(e,t,n)>0}function SC(e,t,n){let r=yC(e,t,n),i=r.reduce((e,t)=>e+t.tokens,0);if(i<=0)return r.map(e=>Object.assign({},e,{pct:0}));let a=r.map(e=>{let t=e.tokens/i*100,n=Math.floor(t);return Object.assign({},e,{pct:n,remainder:t-n})}),o=100-a.reduce((e,t)=>e+t.pct,0);return a.map((e,t)=>({index:t,remainder:e.remainder,tokens:e.tokens})).filter(e=>e.tokens>0).sort((e,t)=>t.remainder-e.remainder).forEach(e=>{o>0&&(a[e.index].pct+=1,--o)}),a}function CC(e,t,n){return SC(e,t,n).filter(e=>e.tokens>0)}function wC(e){let t=[e.label+`: `+cd(e.tokens)+` input tokens (`+e.pct+`%)`];return e.note&&t.push(e.note),t.join(` -`)}function TC(e){let t=(e||[]).map(e=>e.label+` `+e.pct+`%`);return`Cache breakdown of input tokens — `+(t.length?t.join(`, `):`no data`)}function EC(e){return e.getUTCFullYear()+`-`+String(e.getUTCMonth()+1).padStart(2,`0`)+`-`+String(e.getUTCDate()).padStart(2,`0`)}function DC(e,t,n,r){if(t!==`daily`||!n||!r)return e;let i={};(e||[]).forEach(e=>{i[e.date]=e});let a=[];for(let e=new Date(n);e<=r;e.setUTCDate(e.getUTCDate()+1)){let t=EC(e);a.push(i[t]||{date:t,input_tokens:0,output_tokens:0,total_tokens:0,requests:0,input_cost:null,output_cost:null,total_cost:null})}return a}function OC(e,t){let n=e=>Number(e)||0,r=e.map(e=>e.date),i=e.map(e=>n(e.uncached_input_tokens)+n(e.cache_write_input_tokens)+n(e.cached_input_tokens)>0?n(e.uncached_input_tokens)+n(e.cache_write_input_tokens):n(e.input_tokens)),a=e.map(e=>n(e.output_tokens)),o=e.map(e=>n(e.cached_input_tokens)),s={};return(t||[]).forEach(e=>{s[e.date]=e}),{labels:r,inputPaid:i,output:a,prompt:o,local:r.map(e=>{let t=s[e];return t?n(t.input_tokens)+n(t.output_tokens):0})}}function kC(e){let t=e||{},n=Math.max(0,Number(t.uncached_input_tokens)||0),r=Math.max(0,Number(t.cached_input_tokens)||0),i=Math.max(0,Number(t.cache_write_input_tokens)||0),a=n+r+i;return a>0?r/a*100:0}function AC(e){let t=e||{};return(Number(t.uncached_input_tokens)||0)+(Number(t.cached_input_tokens)||0)+(Number(t.cache_write_input_tokens)||0)>0}function jC(e){return AC(e)?Math.round(kC(e))+`%`:`—`}function MC(e,t,n={}){let r=!!n.cacheEnabled,i=n.resolve||(e=>e),a=(e,t)=>i(`color-mix(in srgb, `+e+` `+t+`%, transparent)`),o=(e,t,n,r)=>Object.assign({label:e,data:t,borderColor:n,backgroundColor:n,fill:!1,tension:.3,borderWidth:2,pointRadius:0,pointHoverRadius:4},r||{}),s=[o(`Input Tokens`,t.inputPaid,i(`var(--token-input)`),{fill:`origin`}),o(`Output Tokens`,t.output,i(`var(--token-output)`),{fill:`-1`}),o(`Prompt (Input) Cached`,t.prompt,i(`var(--token-prompt)`),{fill:`-1`,borderDash:[6,4]})];return r&&s.push(o(`Locally Cached`,t.local,a(`var(--info)`,35),{fill:`-1`,borderDash:[2,3]})),{type:`line`,data:{labels:t.labels,datasets:s},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:BS(e,{label:e=>e.dataset.label+`: `+e.parsed.y.toLocaleString(),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),`Total: `+t.toLocaleString()}})},scales:{x:{stacked:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:zS(),maxRotation:0,autoSkip:!0,maxTicksLimit:10}},y:{stacked:!0,beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:YS(e)}}}}}function NC(e,t,n){let r=Math.max(0,Math.min(100,e));return{type:`doughnut`,data:{datasets:[{data:[r,100-r],backgroundColor:[t,n],borderWidth:0,spacing:0}]},options:{rotation:-90,circumference:180,cutout:`84%`,responsive:!0,maintainAspectRatio:!1,animation:{duration:0},layout:{padding:1},events:[],plugins:{legend:{display:!1},tooltip:{enabled:!1}}}}}var PC=`gomodel_provider_status_details_expanded`,FC=`gomodel_provider_card_expanded_overrides`,IC=3e3,LC=`https://gomodel.enterpilot.io/docs/providers/`,RC={anthropic:`anthropic`,azure:`azure`,bailian:`bailian`,bedrock:`bedrock`,"bedrock-mantle":`bedrock-mantle`,cohere:`cohere`,deepseek:`deepseek`,elevenlabs:`elevenlabs`,gemini:`gemini`,llmd:`llmd`,opencode_go:`opencode-go`,oracle:`oracle`,sglang:`sglang`,vertex:`vertex`,vllm:`vllm`,xiaomi:`xiaomi`};function zC(){return{summary:{total:0,healthy:0,degraded:0,unhealthy:0,overall_status:`degraded`},providers:[]}}function BC(e){let t={detailsExpanded:!1,cardOverrides:{}};try{if(e){let n=e.getItem(PC);n===`true`||n===`false`?t.detailsExpanded=n===`true`:e.setItem(PC,`false`);let r=JSON.parse(e.getItem(FC)||`{}`);r&&typeof r==`object`&&!Array.isArray(r)&&(t.cardOverrides=r)}}catch{}return t}function VC(e,t){if(e)try{e.setItem(PC,t?`true`:`false`)}catch{}}function HC(e,t){if(e)try{e.setItem(FC,JSON.stringify(t))}catch{}}function UC(e,t,n){let r=n&&n.name?String(n.name):``;return r&&Object.prototype.hasOwnProperty.call(e,r)?e[r]===!0:t}function WC(e){return`is-`+(String(e&&e.overall_status||`degraded`).trim()||`degraded`)}function GC(e){return`is-`+(String(e||`degraded`).trim()||`degraded`)}function KC(e){let t=e||{};return String(t.healthy||0)+`/`+String(t.total||0)}function qC(e){let t=e||{},n=Number(t.total||0),r=Number(t.healthy||0);return n>0&&rString(e&&e.status_label||``).trim().toLowerCase()===`starting`)}function XC(e){if(!e||!e.runtime)return``;let t=e.runtime.last_model_fetch_at||``,n=e.runtime.last_availability_check_at||``;return t?n&&Date.parse(n)>Date.parse(t)?n:t:n}function ZC(e,t){let n=XC(e);if(!n||typeof t!=`function`)return`-`;let r=t(n);if(!r||r===`-`)return`-`;let i=String(r).split(` `);return i.length>1?i.slice(1).join(` `):r}function QC(e,t){let n=XC(e);return n?typeof t==`function`?t(n):String(n):``}function $C(e){if(!e)return``;let t=String(e.name||``).trim(),n=String(e.type||e.config&&e.config.type||``).trim();return!n||n===t?``:n}function ew(e){let t=String(e&&(e.type||e.config&&e.config.type)||``).trim().toLowerCase(),n=t?RC[t]:``;return n?LC+n+`?utm_source=gomodel_dashboard`:``}function tw(e){let t=e&&e.config&&e.config.resilience?e.config.resilience.retry:null;return t?String(t.max_retries)+` retries, `+t.initial_backoff+` initial, `+t.max_backoff+` max, factor `+t.backoff_factor+`, jitter `+t.jitter_factor:`-`}function nw(e){let t=e&&e.config&&e.config.resilience?e.config.resilience.circuit_breaker:null;return t?String(t.failure_threshold)+` fail, `+String(t.success_threshold)+` success, `+t.timeout+` timeout`:`-`}function rw(e){let t=e&&e.config&&Array.isArray(e.config.models)?e.config.models.filter(Boolean):[];return t.length===0?`Automatic`:t.join(`, `)}function iw(e){if(!e)return``;let t=[];return e.status_reason&&t.push(String(e.status_reason)),e.last_error&&t.push(`Last error: `+String(e.last_error)),t.join(` +`):e}function ES(e,t){let{element:n,datasetIndex:r,index:i}=t,a=e.getDatasetMeta(r).controller,{label:o,value:s}=a.getLabelAndValue(i);return{chart:e,label:o,parsed:a.getParsed(i),raw:e.data.datasets[r].data[i],formattedValue:s,dataset:a.getDataset(),dataIndex:i,datasetIndex:r,element:n}}function DS(e,t){let n=e.chart.ctx,{body:r,footer:i,title:a}=e,{boxWidth:o,boxHeight:s}=t,c=pg(t.bodyFont),l=pg(t.titleFont),u=pg(t.footerFont),d=a.length,f=i.length,p=r.length,m=fg(t.padding),h=m.height,g=0,_=r.reduce((e,t)=>e+t.before.length+t.lines.length+t.after.length,0);if(_+=e.beforeBody.length+e.afterBody.length,d&&(h+=d*l.lineHeight+(d-1)*t.titleSpacing+t.titleMarginBottom),_){let e=t.displayColors?Math.max(s,c.lineHeight):c.lineHeight;h+=p*e+(_-p)*c.lineHeight+(_-1)*t.bodySpacing}f&&(h+=t.footerMarginTop+f*u.lineHeight+(f-1)*t.footerSpacing);let v=0,y=function(e){g=Math.max(g,n.measureText(e).width+v)};return n.save(),n.font=l.string,fm(e.title,y),n.font=c.string,fm(e.beforeBody.concat(e.afterBody),y),v=t.displayColors?o+2+t.boxPadding:0,fm(r,e=>{fm(e.before,y),fm(e.lines,y),fm(e.after,y)}),v=0,n.font=u.string,fm(e.footer,y),n.restore(),g+=m.width,{width:g,height:h}}function OS(e,t){let{y:n,height:r}=t;return ne.height-r/2?`bottom`:`center`}function kS(e,t,n,r){let{x:i,width:a}=r,o=n.caretSize+n.caretPadding;if(e===`left`&&i+a+o>t.width||e===`right`&&i-a-o<0)return!0}function AS(e,t,n,r){let{x:i,width:a}=n,{width:o,chartArea:{left:s,right:c}}=e,l=`center`;return r===`center`?l=i<=(s+c)/2?`left`:`right`:i<=a/2?l=`left`:i>=o-a/2&&(l=`right`),kS(l,e,t,n)&&(l=`center`),l}function jS(e,t,n){let r=n.yAlign||t.yAlign||OS(e,n);return{xAlign:n.xAlign||t.xAlign||AS(e,t,n,r),yAlign:r}}function MS(e,t){let{x:n,width:r}=e;return t===`right`?n-=r:t===`center`&&(n-=r/2),n}function NS(e,t,n){let{y:r,height:i}=e;return t===`top`?r+=n:t===`bottom`?r-=i+n:r-=i/2,r}function PS(e,t,n,r){let{caretSize:i,caretPadding:a,cornerRadius:o}=e,{xAlign:s,yAlign:c}=n,l=i+a,{topLeft:u,topRight:d,bottomLeft:f,bottomRight:p}=dg(o),m=MS(t,s),h=NS(t,c,l);return c===`center`?s===`left`?m+=l:s===`right`&&(m-=l):s===`left`?m-=Math.max(u,f)+i:s===`right`&&(m+=Math.max(d,p)+i),{x:eh(m,0,r.width-t.width),y:eh(h,0,r.height-t.height)}}function FS(e,t,n){let r=fg(n.padding);return t===`center`?e.x+e.width/2:t===`right`?e.x+e.width-r.right:e.x+r.left}function IS(e){return wS([],TS(e))}function LS(e,t,n){return gg(e,{tooltip:t,tooltipItems:n,type:`tooltip`})}function RS(e,t){let n=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return n?e.override(n):e}var zS={beforeTitle:tm,title(e){if(e.length>0){let t=e[0],n=t.chart.data.labels,r=n?n.length:0;if(this&&this.options&&this.options.mode===`dataset`)return t.dataset.label||``;if(t.label)return t.label;if(r>0&&t.dataIndex{let t={before:[],lines:[],after:[]},i=RS(n,e);wS(t.before,TS(BS(i,`beforeLabel`,this,e))),wS(t.lines,BS(i,`label`,this,e)),wS(t.after,TS(BS(i,`afterLabel`,this,e))),r.push(t)}),r}getAfterBody(e,t){return IS(BS(t.callbacks,`afterBody`,this,e))}getFooter(e,t){let{callbacks:n}=t,r=BS(n,`beforeFooter`,this,e),i=BS(n,`footer`,this,e),a=BS(n,`afterFooter`,this,e),o=[];return o=wS(o,TS(r)),o=wS(o,TS(i)),o=wS(o,TS(a)),o}_createItems(e){let t=this._active,n=this.chart.data,r=[],i=[],a=[],o=[],s,c;for(s=0,c=t.length;se.filter(t,r,i,n))),e.itemSort&&(o=o.sort((t,r)=>e.itemSort(t,r,n))),fm(o,t=>{let n=RS(e.callbacks,t);r.push(BS(n,`labelColor`,this,t)),i.push(BS(n,`labelPointStyle`,this,t)),a.push(BS(n,`labelTextColor`,this,t))}),this.labelColors=r,this.labelPointStyles=i,this.labelTextColors=a,this.dataPoints=o,o}update(e,t){let n=this.options.setContext(this.getContext()),r=this._active,i,a=[];if(!r.length)this.opacity!==0&&(i={opacity:0});else{let e=CS[n.position].call(this,r,this._eventPosition);a=this._createItems(n),this.title=this.getTitle(a,n),this.beforeBody=this.getBeforeBody(a,n),this.body=this.getBody(a,n),this.afterBody=this.getAfterBody(a,n),this.footer=this.getFooter(a,n);let t=this._size=DS(this,n),o=Object.assign({},e,t),s=jS(this.chart,n,o),c=PS(n,o,s,this.chart);this.xAlign=s.xAlign,this.yAlign=s.yAlign,i={opacity:1,x:c.x,y:c.y,width:t.width,height:t.height,caretX:e.x,caretY:e.y}}this._tooltipItems=a,this.$context=void 0,i&&this._resolveAnimations().update(this,i),e&&n.external&&n.external.call(this,{chart:this.chart,tooltip:this,replay:t})}drawCaret(e,t,n,r){let i=this.getCaretPosition(e,n,r);t.lineTo(i.x1,i.y1),t.lineTo(i.x2,i.y2),t.lineTo(i.x3,i.y3)}getCaretPosition(e,t,n){let{xAlign:r,yAlign:i}=this,{caretSize:a,cornerRadius:o}=n,{topLeft:s,topRight:c,bottomLeft:l,bottomRight:u}=dg(o),{x:d,y:f}=e,{width:p,height:m}=t,h,g,_,v,y,b;return i===`center`?(y=f+m/2,r===`left`?(h=d,g=h-a,v=y+a,b=y-a):(h=d+p,g=h+a,v=y-a,b=y+a),_=h):(g=r===`left`?d+Math.max(s,l)+a:r===`right`?d+p-Math.max(c,u)-a:this.caretX,i===`top`?(v=f,y=v-a,h=g-a,_=g+a):(v=f+m,y=v+a,h=g+a,_=g-a),b=v),{x1:h,x2:g,x3:_,y1:v,y2:y,y3:b}}drawTitle(e,t,n){let r=this.title,i=r.length,a,o,s;if(i){let c=m_(n.rtl,this.x,this.width);for(e.x=FS(this,n.titleAlign,n),t.textAlign=c.textAlign(n.titleAlign),t.textBaseline=`middle`,a=pg(n.titleFont),o=n.titleSpacing,t.fillStyle=n.titleColor,t.font=a.string,s=0;se!==0)?(e.beginPath(),e.fillStyle=i.multiKeyBackground,ig(e,{x:t,y:p,w:c,h:s,radius:o}),e.fill(),e.stroke(),e.fillStyle=a.backgroundColor,e.beginPath(),ig(e,{x:n,y:p+1,w:c-2,h:s-2,radius:o}),e.fill()):(e.fillStyle=i.multiKeyBackground,e.fillRect(t,p,c,s),e.strokeRect(t,p,c,s),e.fillStyle=a.backgroundColor,e.fillRect(n,p+1,c-2,s-2))}e.fillStyle=this.labelTextColors[n]}drawBody(e,t,n){let{body:r}=this,{bodySpacing:i,bodyAlign:a,displayColors:o,boxHeight:s,boxWidth:c,boxPadding:l}=n,u=pg(n.bodyFont),d=u.lineHeight,f=0,p=m_(n.rtl,this.x,this.width),m=function(n){t.fillText(n,p.x(e.x+f),e.y+d/2),e.y+=d+i},h=p.textAlign(a),g,_,v,y,b,x,S;for(t.textAlign=a,t.textBaseline=`middle`,t.font=u.string,e.x=FS(this,h,n),t.fillStyle=n.bodyColor,fm(this.beforeBody,m),f=o&&h!==`right`?a===`center`?c/2+l:c+2+l:0,y=0,x=r.length;y0&&t.stroke()}_updateAnimationTarget(e){let t=this.chart,n=this.$animations,r=n&&n.x,i=n&&n.y;if(r||i){let n=CS[e.position].call(this,this._active,this._eventPosition);if(!n)return;let a=this._size=DS(this,e),o=Object.assign({},n,this._size),s=jS(t,e,o),c=PS(e,o,s,t);(r._to!==c.x||i._to!==c.y)&&(this.xAlign=s.xAlign,this.yAlign=s.yAlign,this.width=a.width,this.height=a.height,this.caretX=n.x,this.caretY=n.y,this._resolveAnimations().update(this,c))}}_willRender(){return!!this.opacity}draw(e){let t=this.options.setContext(this.getContext()),n=this.opacity;if(!n)return;this._updateAnimationTarget(t);let r={width:this.width,height:this.height},i={x:this.x,y:this.y};n=Math.abs(n)<.001?0:n;let a=fg(t.padding),o=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;t.enabled&&o&&(e.save(),e.globalAlpha=n,this.drawBackground(i,e,r,t),h_(e,t.textDirection),i.y+=a.top,this.drawTitle(i,e,t),this.drawBody(i,e,t),this.drawFooter(i,e,t),g_(e,t.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,t){let n=this._active,r=e.map(({datasetIndex:e,index:t})=>{let n=this.chart.getDatasetMeta(e);if(!n)throw Error(`Cannot find a dataset at index `+e);return{datasetIndex:e,element:n.data[t],index:t}}),i=!pm(n,r),a=this._positionChanged(r,t);(i||a)&&(this._active=r,this._eventPosition=t,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,t,n=!0){if(t&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;let r=this.options,i=this._active||[],a=this._getActiveElements(e,i,t,n),o=this._positionChanged(a,e),s=t||!pm(a,i)||o;return s&&(this._active=a,(r.enabled||r.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,t))),s}_getActiveElements(e,t,n,r){let i=this.options;if(e.type===`mouseout`)return[];if(!r)return t.filter(e=>this.chart.data.datasets[e.datasetIndex]&&this.chart.getDatasetMeta(e.datasetIndex).controller.getParsed(e.index)!==void 0);let a=this.chart.getElementsAtEventForMode(e,i.mode,i,n);return i.reverse&&a.reverse(),a}_positionChanged(e,t){let{caretX:n,caretY:r,options:i}=this,a=CS[i.position].call(this,e,t);return a!==!1&&(n!==a.x||r!==a.y)}},HS=Object.freeze({__proto__:null,Colors:Tx,Decimation:jx,Filler:cS,Legend:_S,SubTitle:SS,Title:bS,Tooltip:{id:`tooltip`,_element:VS,positioners:CS,afterInit(e,t,n){n&&(e.tooltip=new VS({chart:e,options:n}))},beforeUpdate(e,t,n){e.tooltip&&e.tooltip.initialize(n)},reset(e,t,n){e.tooltip&&e.tooltip.initialize(n)},afterDraw(e){let t=e.tooltip;if(t&&t._willRender()){let n={tooltip:t};if(e.notifyPlugins(`beforeTooltipDraw`,{...n,cancelable:!0})===!1)return;t.draw(e.ctx),e.notifyPlugins(`afterTooltipDraw`,n)}},afterEvent(e,t){if(e.tooltip){let n=t.replay;e.tooltip.handleEvent(t.event,n,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:`average`,backgroundColor:`rgba(0,0,0,0.8)`,titleColor:`#fff`,titleFont:{weight:`bold`},titleSpacing:2,titleMarginBottom:6,titleAlign:`left`,bodyColor:`#fff`,bodySpacing:2,bodyFont:{},bodyAlign:`left`,footerColor:`#fff`,footerSpacing:2,footerMarginTop:6,footerFont:{weight:`bold`},footerAlign:`left`,padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(e,t)=>t.bodyFont.size,boxWidth:(e,t)=>t.bodyFont.size,multiKeyBackground:`#fff`,displayColors:!0,boxPadding:0,borderColor:`rgba(0,0,0,0)`,borderWidth:0,animation:{duration:400,easing:`easeOutQuart`},animations:{numbers:{type:`number`,properties:[`x`,`y`,`width`,`height`,`caretX`,`caretY`]},opacity:{easing:`linear`,duration:200}},callbacks:zS},defaultRoutes:{bodyFont:`font`,footerFont:`font`,titleFont:`font`},descriptors:{_scriptable:e=>e!==`filter`&&e!==`itemSort`&&e!==`external`,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:`animation`}},additionalOptionScopes:[`interaction`]}}),US=(e,t,n,r)=>(typeof t==`string`?(n=e.push(t)-1,r.unshift({index:n,label:t})):isNaN(t)&&(n=null),n);function WS(e,t,n,r){let i=e.indexOf(t);return i===-1?US(e,t,n,r):i===e.lastIndexOf(t)?i:n}var GS=(e,t)=>e===null?null:eh(Math.round(e),0,t);function KS(e){let t=this.getLabels();return e>=0&&et.length-1?null:this.getPixelForValue(t[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}};function JS(e,t){let n=[],{bounds:r,step:i,min:a,max:o,precision:s,count:c,maxTicks:l,maxDigits:u,includeBounds:d}=e,f=i||1,p=l-1,{min:m,max:h}=t,g=!rm(a),_=!rm(o),v=!rm(c),y=(h-m)/(u+1),b=Bm((h-m)/p/f)*f,x,S,C,w;if(b<1e-14&&!g&&!_)return[{value:m},{value:h}];w=Math.ceil(h/b)-Math.floor(m/b),w>p&&(b=Bm(w*b/p/f)*f),rm(s)||(x=10**s,b=Math.ceil(b*x)/x),r===`ticks`?(S=Math.floor(m/b)*b,C=Math.ceil(h/b)*b):(S=m,C=h),g&&_&&i&&Wm((o-a)/i,b/1e3)?(w=Math.round(Math.min((o-a)/b,l)),b=(o-a)/w,S=a,C=o):v?(S=g?a:S,C=_?o:C,w=c-1,b=(C-S)/w):(w=(C-S)/b,w=zm(w,Math.round(w),b/1e3)?Math.round(w):Math.ceil(w));let T=Math.max(Jm(b),Jm(S));x=10**(rm(s)?T:s),S=Math.round(S*x)/x,C=Math.round(C*x)/x;let E=0;for(g&&(d&&S!==a?(n.push({value:a}),So)break;n.push({value:e})}return _&&d&&C!==o?n.length&&zm(n[n.length-1].value,o,YS(o,y,e))?n[n.length-1].value=o:n.push({value:o}):(!_||C===o)&&n.push({value:C}),n}function YS(e,t,{horizontal:n,minRotation:r}){let i=Km(r),a=(n?Math.sin(i):Math.cos(i))||.001,o=.75*t*(``+e).length;return Math.min(t/a,o)}var XS=class extends Wy{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(e,t){return rm(e)||(typeof e==`number`||e instanceof Number)&&!isFinite(+e)?null:+e}handleTickRangeOptions(){let{beginAtZero:e}=this.options,{minDefined:t,maxDefined:n}=this.getUserBounds(),{min:r,max:i}=this,a=e=>r=t?r:e,o=e=>i=n?i:e;if(e){let e=Rm(r),t=Rm(i);e<0&&t<0?o(0):e>0&&t>0&&a(0)}if(r===i){let t=i===0?1:Math.abs(i*.05);o(i+t),e||a(r-t)}this.min=r,this.max=i}getTickLimit(){let{maxTicksLimit:e,stepSize:t}=this.options.ticks,n;return t?(n=Math.ceil(this.max/t)-Math.floor(this.min/t)+1,n>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${t} would result generating up to ${n} ticks. Limiting to 1000.`),n=1e3)):(n=this.computeTickLimit(),e||=11),e&&(n=Math.min(e,n)),n}computeTickLimit(){return 1/0}buildTicks(){let e=this.options,t=e.ticks,n=this.getTickLimit();n=Math.max(2,n);let r=JS({maxTicks:n,bounds:e.bounds,min:e.min,max:e.max,precision:t.precision,step:t.stepSize,count:t.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:t.minRotation||0,includeBounds:t.includeBounds!==!1},this._range||this);return e.bounds===`ticks`&&Gm(r,this,`value`),e.reverse?(r.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),r}configure(){let e=this.ticks,t=this.min,n=this.max;if(super.configure(),this.options.offset&&e.length){let r=(n-t)/Math.max(e.length-1,1)/2;t-=r,n+=r}this._startValue=t,this._endValue=n,this._valueRange=n-t}getLabelForValue(e){return Mh(e,this.chart.options.locale,this.options.ticks.format)}},ZS=class extends XS{static id=`linear`;static defaults={ticks:{callback:Fh.formatters.numeric}};determineDataLimits(){let{min:e,max:t}=this.getMinMax(!0);this.min=om(e)?e:0,this.max=om(t)?t:1,this.handleTickRangeOptions()}computeTickLimit(){let e=this.isHorizontal(),t=e?this.width:this.height,n=Km(this.options.ticks.minRotation),r=(e?Math.sin(n):Math.cos(n))||.001,i=this._resolveTickFontOptions(0);return Math.ceil(t/Math.min(40,i.lineHeight/r))}getPixelForValue(e){return e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}},QS=e=>Math.floor(Lm(e)),$S=(e,t)=>10**(QS(e)+t);function eC(e){return e/10**QS(e)==1}function tC(e,t,n){let r=10**n,i=Math.floor(e/r);return Math.ceil(t/r)-i}function nC(e,t){let n=QS(t-e);for(;tC(e,t,n)>10;)n++;for(;tC(e,t,n)<10;)n--;return Math.min(n,QS(e))}function rC(e,{min:t,max:n}){t=sm(e.min,t);let r=[],i=QS(t),a=nC(t,n),o=a<0?10**Math.abs(a):1,s=10**a,c=i>a?10**i:0,l=Math.round((t-c)*o)/o,u=Math.floor((t-c)/s/10)*s*10,d=Math.floor((l-u)/10**a),f=sm(e.min,Math.round((c+u+d*10**a)*o)/o);for(;f=10?d=d<15?15:20:d++,d>=20&&(a++,d=2,o=a>=0?1:o),f=Math.round((c+u+d*10**a)*o)/o;let p=sm(e.max,f);return r.push({value:p,major:eC(p),significand:d}),r}var iC=class extends Wy{static id=`logarithmic`;static defaults={ticks:{callback:Fh.formatters.logarithmic,major:{enabled:!0}}};constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(e,t){let n=XS.prototype.parse.apply(this,[e,t]);if(n===0){this._zero=!0;return}return om(n)&&n>0?n:null}determineDataLimits(){let{min:e,max:t}=this.getMinMax(!0);this.min=om(e)?Math.max(0,e):null,this.max=om(t)?Math.max(0,t):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!om(this._userMin)&&(this.min=e===$S(this.min,0)?$S(this.min,-1):$S(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){let{minDefined:e,maxDefined:t}=this.getUserBounds(),n=this.min,r=this.max,i=t=>n=e?n:t,a=e=>r=t?r:e;n===r&&(n<=0?(i(1),a(10)):(i($S(n,-1)),a($S(r,1)))),n<=0&&i($S(r,-1)),r<=0&&a($S(n,1)),this.min=n,this.max=r}buildTicks(){let e=this.options,t=rC({min:this._userMin,max:this._userMax},this);return e.bounds===`ticks`&&Gm(t,this,`value`),e.reverse?(t.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),t}getLabelForValue(e){return e===void 0?`0`:Mh(e,this.chart.options.locale,this.options.ticks.format)}configure(){let e=this.min;super.configure(),this._startValue=Lm(e),this._valueRange=Lm(this.max)-Lm(e)}getPixelForValue(e){return(e===void 0||e===0)&&(e=this.min),e===null||isNaN(e)?NaN:this.getPixelForDecimal(e===this.min?0:(Lm(e)-this._startValue)/this._valueRange)}getValueForPixel(e){let t=this.getDecimalForPixel(e);return 10**(this._startValue+t*this._valueRange)}};function aC(e){let t=e.ticks;if(t.display&&e.display){let e=fg(t.backdropPadding);return cm(t.font&&t.font.size,Vh.font.size)+e.height}return 0}function oC(e,t,n){return n=im(n)?n:[n],{w:Wh(e,t.string,n),h:n.length*t.lineHeight}}function sC(e,t,n,r,i){return e===r||e===i?{start:t-n/2,end:t+n/2}:ei?{start:t-n,end:t}:{start:t,end:t+n}}function cC(e){let t={l:e.left+e._padding.left,r:e.right-e._padding.right,t:e.top+e._padding.top,b:e.bottom-e._padding.bottom},n=Object.assign({},t),r=[],i=[],a=e._pointLabels.length,o=e.options.pointLabels,s=o.centerPointLabels?km/a:0;for(let c=0;ct.r&&(s=(r.end-t.r)/a,e.r=Math.max(e.r,t.r+s)),i.startt.b&&(c=(i.end-t.b)/o,e.b=Math.max(e.b,t.b+c))}function uC(e,t,n){let r=e.drawingArea,{extra:i,additionalAngle:a,padding:o,size:s}=n,c=e.getPointPosition(t,r+i+o,a),l=Math.round(qm(Qm(c.angle+Pm))),u=hC(c.y,s.h,l),d=pC(l),f=mC(c.x,s.w,d);return{visible:!0,x:c.x,y:u,textAlign:d,left:f,top:u,right:f+s.w,bottom:u+s.h}}function dC(e,t){if(!t)return!0;let{left:n,top:r,right:i,bottom:a}=e;return!(Yh({x:n,y:r},t)||Yh({x:n,y:a},t)||Yh({x:i,y:r},t)||Yh({x:i,y:a},t))}function fC(e,t,n){let r=[],i=e._pointLabels.length,a=e.options,{centerPointLabels:o,display:s}=a.pointLabels,c={extra:aC(a)/2,additionalAngle:o?km/i:0},l;for(let a=0;a270||n<90)&&(e-=t),e}function gC(e,t,n){let{left:r,top:i,right:a,bottom:o}=n,{backdropColor:s}=t;if(!rm(s)){let n=dg(t.borderRadius),c=fg(t.backdropPadding);e.fillStyle=s;let l=r-c.left,u=i-c.top,d=a-r+c.width,f=o-i+c.height;Object.values(n).some(e=>e!==0)?(e.beginPath(),ig(e,{x:l,y:u,w:d,h:f,radius:n}),e.fill()):e.fillRect(l,u,d,f)}}function _C(e,t){let{ctx:n,options:{pointLabels:r}}=e;for(let i=t-1;i>=0;i--){let t=e._pointLabelItems[i];if(!t.visible)continue;let a=r.setContext(e.getPointLabelContext(i));gC(n,a,t);let o=pg(a.font),{x:s,y:c,textAlign:l}=t;rg(n,e._pointLabels[i],s,c+o.lineHeight/2,o,{color:a.color,textAlign:l,textBaseline:`middle`})}}function vC(e,t,n,r){let{ctx:i}=e;if(n)i.arc(e.xCenter,e.yCenter,t,0,Am);else{let n=e.getPointPosition(0,t);i.moveTo(n.x,n.y);for(let a=1;a{let n=dm(this.options.pointLabels.callback,[e,t],this);return n||n===0?n:``}).filter((e,t)=>this.chart.getDataVisibility(t))}fit(){let e=this.options;e.display&&e.pointLabels.display?cC(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(e,t,n,r){this.xCenter+=Math.floor((e-t)/2),this.yCenter+=Math.floor((n-r)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(e,t,n,r))}getIndexAngle(e){let t=Am/(this._pointLabels.length||1),n=this.options.startAngle||0;return Qm(e*t+Km(n))}getDistanceFromCenterForValue(e){if(rm(e))return NaN;let t=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-e)*t:(e-this.min)*t}getValueForDistanceFromCenter(e){if(rm(e))return NaN;let t=e/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-t:this.min+t}getPointLabelContext(e){let t=this._pointLabels||[];if(e>=0&&e{if(t!==0||t===0&&this.min<0){s=this.getDistanceFromCenterForValue(e.value);let n=this.getContext(t),o=r.setContext(n),c=i.setContext(n);yC(this,o,s,a,c)}}),n.display){for(e.save(),o=a-1;o>=0;o--){let r=n.setContext(this.getPointLabelContext(o)),{color:i,lineWidth:a}=r;!a||!i||(e.lineWidth=a,e.strokeStyle=i,e.setLineDash(r.borderDash),e.lineDashOffset=r.borderDashOffset,s=this.getDistanceFromCenterForValue(t.reverse?this.min:this.max),c=this.getPointPosition(o,s),e.beginPath(),e.moveTo(this.xCenter,this.yCenter),e.lineTo(c.x,c.y),e.stroke())}e.restore()}}drawBorder(){}drawLabels(){let e=this.ctx,t=this.options,n=t.ticks;if(!n.display)return;let r=this.getIndexAngle(0),i,a;e.save(),e.translate(this.xCenter,this.yCenter),e.rotate(r),e.textAlign=`center`,e.textBaseline=`middle`,this.ticks.forEach((r,o)=>{if(o===0&&this.min>=0&&!t.reverse)return;let s=n.setContext(this.getContext(o)),c=pg(s.font);if(i=this.getDistanceFromCenterForValue(this.ticks[o].value),s.showLabelBackdrop){e.font=c.string,a=e.measureText(r.label).width,e.fillStyle=s.backdropColor;let t=fg(s.backdropPadding);e.fillRect(-a/2-t.left,-i-c.size/2-t.top,a+t.width,c.size+t.height)}rg(e,r.label,0,-i,c,{color:s.color,strokeColor:s.textStrokeColor,strokeWidth:s.textStrokeWidth})}),e.restore()}drawTitle(){}},SC={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},CC=Object.keys(SC);function wC(e,t){return e-t}function TC(e,t){if(rm(t))return null;let n=e._adapter,{parser:r,round:i,isoWeekday:a}=e._parseOpts,o=t;return typeof r==`function`&&(o=r(o)),om(o)||(o=typeof r==`string`?n.parse(o,r):n.parse(o)),o===null?null:(i&&(o=i===`week`&&(Um(a)||a===!0)?n.startOf(o,`isoWeek`,a):n.startOf(o,i)),+o)}function EC(e,t,n,r){let i=CC.length;for(let a=CC.indexOf(e);a=CC.indexOf(n);a--){let n=CC[a];if(SC[n].common&&e._adapter.diff(i,r,n)>=t-1)return n}return CC[n?CC.indexOf(n):0]}function OC(e){for(let t=CC.indexOf(e)+1,n=CC.length;t=t?n[r]:n[i];e[a]=!0}}function AC(e,t,n,r){let i=e._adapter,a=+i.startOf(t[0].value,r),o=t[t.length-1].value,s,c;for(s=a;s<=o;s=+i.add(s,1,r))c=n[s],c>=0&&(t[c].major=!0);return t}function jC(e,t,n){let r=[],i={},a=t.length,o,s;for(o=0;o+e.value))}initOffsets(e=[]){let t=0,n=0,r,i;this.options.offset&&e.length&&(r=this.getDecimalForValue(e[0]),t=e.length===1?1-r:(this.getDecimalForValue(e[1])-r)/2,i=this.getDecimalForValue(e[e.length-1]),n=e.length===1?i:(i-this.getDecimalForValue(e[e.length-2]))/2);let a=e.length<3?.5:.25;t=eh(t,0,a),n=eh(n,0,a),this._offsets={start:t,end:n,factor:1/(t+1+n)}}_generate(){let e=this._adapter,t=this.min,n=this.max,r=this.options,i=r.time,a=i.unit||EC(i.minUnit,t,n,this._getLabelCapacity(t)),o=cm(r.ticks.stepSize,1),s=a===`week`&&i.isoWeekday,c=Um(s)||s===!0,l={},u=t,d,f;if(c&&(u=+e.startOf(u,`isoWeek`,s)),u=+e.startOf(u,c?`day`:a),e.diff(n,t,a)>1e5*o)throw Error(t+` and `+n+` are too far apart with stepSize of `+o+` `+a);let p=r.ticks.source===`data`&&this.getDataTimestamps();for(d=u,f=0;d+e)}getLabelForValue(e){let t=this._adapter,n=this.options.time;return n.tooltipFormat?t.format(e,n.tooltipFormat):t.format(e,n.displayFormats.datetime)}format(e,t){let n=this.options.time.displayFormats,r=this._unit,i=t||n[r];return this._adapter.format(e,i)}_tickFormatFunction(e,t,n,r){let i=this.options,a=i.ticks.callback;if(a)return dm(a,[e,t,n],this);let o=i.time.displayFormats,s=this._unit,c=this._majorUnit,l=s&&o[s],u=c&&o[c],d=n[t],f=c&&u&&d&&d.major;return this._adapter.format(e,r||(f?u:l))}generateTickLabels(e){let t,n,r;for(t=0,n=e.length;t0?o:1}getDataTimestamps(){let e=this._cache.data||[],t,n;if(e.length)return e;let r=this.getMatchingVisibleMetas();if(this._normalized&&r.length)return this._cache.data=r[0].controller.getAllParsedValues(this);for(t=0,n=r.length;t=e[r].pos&&t<=e[i].pos&&({lo:r,hi:i}=ih(e,`pos`,t)),{pos:a,time:s}=e[r],{pos:o,time:c}=e[i]):(t>=e[r].time&&t<=e[i].time&&({lo:r,hi:i}=ih(e,`time`,t)),{time:a,pos:s}=e[r],{time:o,pos:c}=e[i]);let l=o-a;return l?s+(c-s)*(t-a)/l:s}var PC=class extends MC{static id=`timeseries`;static defaults=MC.defaults;constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){let e=this._getTimestampsForTable(),t=this._table=this.buildLookupTable(e);this._minPos=NC(t,this.min),this._tableRange=NC(t,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){let{min:t,max:n}=this,r=[],i=[],a,o,s,c,l;for(a=0,o=e.length;a=t&&c<=n&&r.push(c);if(r.length<2)return[{time:t,pos:0},{time:n,pos:1}];for(a=0,o=r.length;ae-t)}_getTimestampsForTable(){let e=this._cache.all||[];if(e.length)return e;let t=this.getDataTimestamps(),n=this.getLabelTimestamps();return e=t.length&&n.length?this.normalize(t.concat(n)):t.length?t:n,e=this._cache.all=e,e}getDecimalForValue(e){return(NC(this._table,e)-this._minPos)/this._tableRange}getValueForPixel(e){let t=this._offsets,n=this.getDecimalForPixel(e)/t.factor-t.end;return NC(this._table,n*this._tableRange+this._minPos,!0)}},FC=[Ev,px,HS,Object.freeze({__proto__:null,CategoryScale:qS,LinearScale:ZS,LogarithmicScale:iC,RadialLinearScale:xC,TimeScale:MC,TimeSeriesScale:PC})];Mb.register(...FC);var IC=Mb,LC=B(``);function RC(e,t){O(t,!0);let n=q(t,`class`,3,``),r=q(t,`ariaLabel`,3,``);function i(e){if(Cl.tick,typeof t.build!=`function`)return;let n=t.build();if(!n)return;let r=new IC(e.getContext(`2d`),n);return()=>r.destroy()}var a=LC();Ai(a,()=>i),L(()=>{G(a,1,Ni(n())),K(a,`aria-label`,r())}),V(e,a),k()}var zC=B(``),BC=B(`
`);function VC(e,t){O(t,!0);let n=q(t,`options`,19,()=>[]),r=q(t,`ariaLabel`,3,``),i=q(t,`class`,3,``);var a=BC();W(a,21,n,e=>e.value,(e,n)=>{var r=zC();let i;var a=P(r,!0);D(r),L(()=>{i=G(r,1,`segmented-btn svelte-92fh5i`,null,i,{active:t.value===R(n).value}),K(r,`aria-pressed`,t.value===R(n).value),H(a,R(n).label)}),z(`click`,r,()=>t.onchange?.(R(n).value)),V(e,r)}),D(a),L(()=>{G(a,1,Ni([`segmented-control`,i()]),`svelte-92fh5i`),K(a,`aria-label`,r())}),V(e,a),k()}Br([`click`]);function HC(e){return getComputedStyle(document.documentElement).getPropertyValue(e).trim()}function UC(){return{grid:HC(`--chart-grid`),text:HC(`--chart-text`),dayMarker:HC(`--chart-day-marker`),tooltipBg:HC(`--chart-tooltip-bg`),tooltipBorder:HC(`--chart-tooltip-border`),tooltipText:HC(`--chart-tooltip-text`)}}function WC(){return{size:11,family:`'SF Mono', Menlo, Consolas, monospace`}}function GC(e,t){return{backgroundColor:e.tooltipBg,borderColor:e.tooltipBorder,borderWidth:1,titleColor:e.tooltipText,bodyColor:e.tooltipText,callbacks:t}}function KC(e){if(typeof document>`u`||!document.body)return e;let t=document.createElement(`span`);t.style.display=`none`,t.style.color=e,document.body.appendChild(t);let n=getComputedStyle(t).color;return document.body.removeChild(t),n||e}var qC=[`#c2845a`,`#7a9e7e`,`#d4a574`,`#b8a98e`,`#8b9e6b`,`#7d8a97`,`#c47a5a`,`#6b8e6b`,`#a09486`,`#9b7ea4`,`#c49a6c`];function JC(){return[...qC]}function YC(e){let t=5381,n=String(e||``);for(let e=0;evf(e)}}var tw={seconds:{apiName:`second`,windowLabel:`Last 60 seconds`,refreshMs:2e3},minutes:{apiName:`minute`,windowLabel:`Last 60 minutes`,refreshMs:5e3},hours:{apiName:`hour`,windowLabel:`Last 24 hours`,refreshMs:2e4},days:{apiName:`day`,windowLabel:`Last 30 days`,refreshMs:6e4}},nw=[{value:`seconds`,label:`Seconds`},{value:`minutes`,label:`Minutes`},{value:`hours`,label:`Hours`},{value:`days`,label:`Days`}];function rw(){return{input:0,output:0,prompt:0,local:0}}function iw(e){return String(e).padStart(2,`0`)}function aw(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:0}function ow(e,t){if(!Number.isFinite(t))return``;let n=new Date(t);switch(e){case`seconds`:return iw(n.getHours())+`:`+iw(n.getMinutes())+`:`+iw(n.getSeconds());case`minutes`:return iw(n.getHours())+`:`+iw(n.getMinutes());case`hours`:return iw(n.getHours())+`:00`;default:return iw(n.getMonth()+1)+`-`+iw(n.getDate())}}function sw(e,t){let n=[],r=[],i={input:[],output:[],prompt:[],local:[]},a=rw();for(let o of e||[]){let e=Date.parse(o&&o.start),s=aw(o&&o.input_tokens),c=aw(o&&o.output_tokens),l=aw(o&&o.prompt_cached_tokens),u=aw(o&&o.locally_cached_tokens);n.push(ow(t,e)),r.push(Number.isFinite(e)?e:null),i.input.push(s),i.output.push(c),i.prompt.push(l),i.local.push(u),a.input+=s,a.output+=c,a.prompt+=l,a.local+=u}return{labels:n,stamps:r,cols:i,totals:a}}function cw(e){let t=e||rw();return t.input+t.output+t.prompt+t.local>0}function lw(e,t){return vf(Math.max(0,Math.round(e&&e[t]||0)))}function uw(e){return(tw[e]||tw.minutes).windowLabel}function dw(e,t){return`Live token throughput, `+uw(t).toLowerCase()+`. Input `+lw(e,`input`)+`, output `+lw(e,`output`)+`, prompt cached `+lw(e,`prompt`)+`, locally cached `+lw(e,`local`)+` tokens.`}function fw(e,t,n,r){let i=e=>vf(Math.max(0,Math.round(e))),a=n.stamps,o=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderWidth:0,borderRadius:0,categoryPercentage:1,barPercentage:1,stack:`tokens`});return{type:`bar`,plugins:[{id:`liveTokensDayMarks`,afterDatasetsDraw:t=>{if(r===`days`)return;let n=t.getDatasetMeta(0),i=t.chartArea;if(!n||!n.data||!i)return;let o=t.ctx;o.save(),o.font=`10px 'SF Mono', Menlo, Consolas, monospace`;let s=null;for(let t=0;t{if(!e.length)return``;let t=a[e[0].dataIndex];if(!t)return e[0].label;let n=new Date(t);return r===`days`?n.toLocaleDateString():n.toLocaleString()},label:e=>e.dataset.label+`: `+i(e.parsed.y),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),`Total: `+i(t)}})}}}}var pw=900,mw=new class{#e=j(`minutes`);get granularity(){return R(this.#e)}set granularity(e){M(this.#e,e,!0)}#t=j(N([]));get buckets(){return R(this.#t)}set buckets(e){M(this.#t,e,!0)}#n=j(!1);get active(){return R(this.#n)}set active(e){M(this.#n,e,!0)}#r=null;#i=null;#a=null;#o=0;#s=null;#c=!1;start(){this.stop(),this.active=!0,this.fetch(),this.#l(),this.#u()}stop(){this.active=!1,this.#r&&=(clearInterval(this.#r),null),this.#i&&=(clearTimeout(this.#i),null),this.#a&&=(clearTimeout(this.#a),null),this.#o=0,this.#s&&=(this.#s.abort(),null),this.buckets=[]}setGranularity(e){!tw[e]||e===this.granularity||(this.granularity=e,this.buckets=[],this.#l(),this.fetch())}#l(){this.#r&&=(clearInterval(this.#r),null);let e=tw[this.granularity]||tw.minutes;this.#r=setInterval(()=>{this.active&&this.fetch()},e.refreshMs)}noteUsageEvent(e){!this.active||e!==`usage.flushed`||(this.#i||=setTimeout(()=>{this.#i=null,this.fetch()},pw))}async fetch(){if(!this.active||this.#c)return;this.#c=!0;let e=this.granularity;try{let t=await bd(`/admin/usage/throughput?granularity=`+(tw[e]||tw.minutes).apiName,{label:`token throughput`});if(t.stale||!t.ok||this.granularity!==e)return;this.buckets=t.data&&Array.isArray(t.data.buckets)?t.data.buckets:[]}catch(e){if(Sd(e))return;console.error(`Failed to fetch token throughput:`,e)}finally{this.#c=!1,this.active&&this.granularity!==e&&this.fetch()}}async#u(){await Td.ensureLoaded(),this.active&&Td.liveLogsVisible()&&(typeof ReadableStream>`u`||(this.#s&&this.#s.abort(),this.#s=new AbortController,this.#d(this.#s)))}async#d(e){let t=()=>{e.signal.aborted||this.#s!==e||this.#p()};try{let n=await vd(`/admin/live/logs?types=usage`,{signal:e.signal});if(!n.ok||!n.body||typeof n.body.getReader!=`function`){t();return}this.#o=0,await ZC(n.body.getReader(),e=>this.#f(e)),t()}catch(n){if(Sd(n)||e.signal.aborted)return;console.error(`Live usage stream failed:`,n),t()}}#f(e){if(!e||typeof e!=`object`)return;let t=String(e.type||``).trim();t.indexOf(`usage.`)===0&&this.noteUsageEvent(t)}#p(){if(!this.active||this.#a)return;let{attempt:e,delay:t}=$C(this.#o);this.#o=e,this.#a=setTimeout(()=>{this.#a=null,this.#u()},t)}},hw=B(`
`),gw=B(`
Waiting for live requests…
`),_w=B(`

Live Token Throughput

`);function vw(e,t){O(t,!0);let n=A(()=>sw(mw.buckets,mw.granularity)),r=A(()=>R(n).totals);function i(){return{input:KC(`var(--token-input)`),output:KC(`var(--token-output)`),prompt:KC(`var(--token-prompt)`),local:KC(`var(--token-local)`)}}let a=[{metric:`input`,label:`Input Tokens`,colorVar:`--token-input`},{metric:`output`,label:`Output Tokens`,colorVar:`--token-output`},{metric:`prompt`,label:`Prompt (Input) Cached`,colorVar:`--token-prompt`},{metric:`local`,label:`Locally Cached`,colorVar:`--token-local`}];var o=_w(),s=P(o),c=P(s),l=I(P(c),2),u=P(l);let d;var f=I(u,2),p=P(f,!0);D(f),D(l),D(c),VC(I(c,2),{ariaLabel:`Live token throughput granularity`,get options(){return nw},get value(){return mw.granularity},onchange:e=>mw.setGranularity(e)}),D(s);var m=I(s,2);W(m,21,()=>a,e=>e.metric,(e,t)=>{var n=hw(),i=P(n),a=I(i,2),o=P(a,!0);D(a);var s=I(a,2),c=P(s,!0);D(s),D(n),L(e=>{Bi(i,`background: var(${R(t).colorVar??``})`),H(o,R(t).label),H(c,e)},[()=>lw(R(r),R(t).metric)]),V(e,n)}),D(m);var h=I(m,2),g=P(h);{let e=A(()=>dw(R(r),mw.granularity));RC(g,{get ariaLabel(){return R(e)},build:()=>fw(UC(),i(),R(n),mw.granularity)})}var _=I(g,2),v=e=>{V(e,gw())},y=A(()=>!cw(R(r)));U(_,e=>{R(y)&&e(v)}),D(h),D(o),L(e=>{d=G(u,1,`live-dot`,null,d,{"is-streaming":mw.active}),H(p,e)},[()=>uw(mw.granularity)]),V(e,o),k()}function yw(e){let t=e||{};if(t.total_tokens!==null&&t.total_tokens!==void 0){let e=Number(t.total_tokens);if(Number.isFinite(e))return e}let n=Number(t.total_input_tokens||0),r=Number(t.total_output_tokens||0);return(Number.isFinite(n)?n:0)+(Number.isFinite(r)?r:0)}function bw(e,t){if(!t)return 0;let n=e&&e.summary?e.summary:{},r=Number(n.total_hits||0);return Number.isFinite(r)&&r>0?r:0}function xw(e,t,n){let r=Number(e&&e.total_requests||0);return(Number.isFinite(r)?r:0)+bw(t,n)}function Sw(e,t,n){let r=bw(t,n);return r<=0?``:mf(xw(e,t,n)-r)+` to providers + `+mf(r)+` from cache`}function Cw(e){let t=e&&e.summary?e.summary:{},n=Number(t.total_input_tokens||0),r=Number(t.total_output_tokens||0);return(Number.isFinite(n)?n:0)+(Number.isFinite(r)?r:0)}function ww(e,t,n){let r=e=>{let t=Number(e||0);return Number.isFinite(t)&&t>0?t:0},i=e||{},a=r(i.uncached_input_tokens),o=r(i.cached_input_tokens),s=r(i.cache_write_input_tokens),c=t&&t.summary?t.summary:{},l=n?r(c.total_input_tokens):0;return[{key:`uncached`,label:`Regular`,tokens:a+s,colorVar:`--cache-meter-uncached`,note:s>0?`Includes `+mf(s)+` cache-write tokens`:``},{key:`prompt`,label:`Prompt cached`,tokens:o,colorVar:`--cache-meter-prompt`,note:`Provider prompt-cache reads`},{key:`local`,label:`Locally cached`,tokens:l,colorVar:`--cache-meter-local`,note:`Served from GoModel response cache`}]}function Tw(e,t,n){return ww(e,t,n).reduce((e,t)=>e+t.tokens,0)}function Ew(e,t,n){return Tw(e,t,n)>0}function Dw(e,t,n){let r=ww(e,t,n),i=r.reduce((e,t)=>e+t.tokens,0);if(i<=0)return r.map(e=>Object.assign({},e,{pct:0}));let a=r.map(e=>{let t=e.tokens/i*100,n=Math.floor(t);return Object.assign({},e,{pct:n,remainder:t-n})}),o=100-a.reduce((e,t)=>e+t.pct,0);return a.map((e,t)=>({index:t,remainder:e.remainder,tokens:e.tokens})).filter(e=>e.tokens>0).sort((e,t)=>t.remainder-e.remainder).forEach(e=>{o>0&&(a[e.index].pct+=1,--o)}),a}function Ow(e,t,n){return Dw(e,t,n).filter(e=>e.tokens>0)}function kw(e){let t=[e.label+`: `+mf(e.tokens)+` input tokens (`+e.pct+`%)`];return e.note&&t.push(e.note),t.join(` +`)}function Aw(e){let t=(e||[]).map(e=>e.label+` `+e.pct+`%`);return`Cache breakdown of input tokens — `+(t.length?t.join(`, `):`no data`)}function jw(e){return e.getUTCFullYear()+`-`+String(e.getUTCMonth()+1).padStart(2,`0`)+`-`+String(e.getUTCDate()).padStart(2,`0`)}function Mw(e,t,n,r){if(t!==`daily`||!n||!r)return e;let i={};(e||[]).forEach(e=>{i[e.date]=e});let a=[];for(let e=new Date(n);e<=r;e.setUTCDate(e.getUTCDate()+1)){let t=jw(e);a.push(i[t]||{date:t,input_tokens:0,output_tokens:0,total_tokens:0,requests:0,input_cost:null,output_cost:null,total_cost:null})}return a}function Nw(e,t){let n=e=>Number(e)||0,r=e.map(e=>e.date),i=e.map(e=>n(e.uncached_input_tokens)+n(e.cache_write_input_tokens)+n(e.cached_input_tokens)>0?n(e.uncached_input_tokens)+n(e.cache_write_input_tokens):n(e.input_tokens)),a=e.map(e=>n(e.output_tokens)),o=e.map(e=>n(e.cached_input_tokens)),s={};return(t||[]).forEach(e=>{s[e.date]=e}),{labels:r,inputPaid:i,output:a,prompt:o,local:r.map(e=>{let t=s[e];return t?n(t.input_tokens)+n(t.output_tokens):0})}}function Pw(e){let t=e||{},n=Math.max(0,Number(t.uncached_input_tokens)||0),r=Math.max(0,Number(t.cached_input_tokens)||0),i=Math.max(0,Number(t.cache_write_input_tokens)||0),a=n+r+i;return a>0?r/a*100:0}function Fw(e){let t=e||{};return(Number(t.uncached_input_tokens)||0)+(Number(t.cached_input_tokens)||0)+(Number(t.cache_write_input_tokens)||0)>0}function Iw(e){return Fw(e)?Math.round(Pw(e))+`%`:`—`}function Lw(e,t,n={}){let r=!!n.cacheEnabled,i=n.resolve||(e=>e),a=(e,t)=>i(`color-mix(in srgb, `+e+` `+t+`%, transparent)`),o=(e,t,n,r)=>Object.assign({label:e,data:t,borderColor:n,backgroundColor:n,fill:!1,tension:.3,borderWidth:2,pointRadius:0,pointHoverRadius:4},r||{}),s=[o(`Input Tokens`,t.inputPaid,i(`var(--token-input)`),{fill:`origin`}),o(`Output Tokens`,t.output,i(`var(--token-output)`),{fill:`-1`}),o(`Prompt (Input) Cached`,t.prompt,i(`var(--token-prompt)`),{fill:`-1`,borderDash:[6,4]})];return r&&s.push(o(`Locally Cached`,t.local,a(`var(--info)`,35),{fill:`-1`,borderDash:[2,3]})),{type:`line`,data:{labels:t.labels,datasets:s},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:GC(e,{label:e=>e.dataset.label+`: `+e.parsed.y.toLocaleString(),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),`Total: `+t.toLocaleString()}})},scales:{x:{stacked:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:WC(),maxRotation:0,autoSkip:!0,maxTicksLimit:10}},y:{stacked:!0,beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:ew(e)}}}}}function Rw(e,t,n){let r=Math.max(0,Math.min(100,e));return{type:`doughnut`,data:{datasets:[{data:[r,100-r],backgroundColor:[t,n],borderWidth:0,spacing:0}]},options:{rotation:-90,circumference:180,cutout:`84%`,responsive:!0,maintainAspectRatio:!1,animation:{duration:0},layout:{padding:1},events:[],plugins:{legend:{display:!1},tooltip:{enabled:!1}}}}}var zw=`gomodel_provider_status_details_expanded`,Bw=`gomodel_provider_card_expanded_overrides`,Vw=3e3,Hw=`https://gomodel.enterpilot.io/docs/providers/`,Uw={anthropic:`anthropic`,azure:`azure`,bailian:`bailian`,bedrock:`bedrock`,"bedrock-mantle":`bedrock-mantle`,cohere:`cohere`,deepseek:`deepseek`,elevenlabs:`elevenlabs`,gemini:`gemini`,llmd:`llmd`,opencode_go:`opencode-go`,oracle:`oracle`,sglang:`sglang`,vertex:`vertex`,vllm:`vllm`,xiaomi:`xiaomi`};function Ww(){return{summary:{total:0,healthy:0,degraded:0,unhealthy:0,overall_status:`degraded`},providers:[]}}function Gw(e){let t={detailsExpanded:!1,cardOverrides:{}};try{if(e){let n=e.getItem(zw);n===`true`||n===`false`?t.detailsExpanded=n===`true`:e.setItem(zw,`false`);let r=JSON.parse(e.getItem(Bw)||`{}`);r&&typeof r==`object`&&!Array.isArray(r)&&(t.cardOverrides=r)}}catch{}return t}function Kw(e,t){if(e)try{e.setItem(zw,t?`true`:`false`)}catch{}}function qw(e,t){if(e)try{e.setItem(Bw,JSON.stringify(t))}catch{}}function Jw(e,t,n){let r=n&&n.name?String(n.name):``;return r&&Object.prototype.hasOwnProperty.call(e,r)?e[r]===!0:t}function Yw(e){return`is-`+(String(e&&e.overall_status||`degraded`).trim()||`degraded`)}function Xw(e){return`is-`+(String(e||`degraded`).trim()||`degraded`)}function Zw(e){let t=e||{};return String(t.healthy||0)+`/`+String(t.total||0)}function Qw(e){let t=e||{},n=Number(t.total||0),r=Number(t.healthy||0);return n>0&&rString(e&&e.status_label||``).trim().toLowerCase()===`starting`)}function tT(e){if(!e||!e.runtime)return``;let t=e.runtime.last_model_fetch_at||``,n=e.runtime.last_availability_check_at||``;return t?n&&Date.parse(n)>Date.parse(t)?n:t:n}function nT(e,t){let n=tT(e);if(!n||typeof t!=`function`)return`-`;let r=t(n);if(!r||r===`-`)return`-`;let i=String(r).split(` `);return i.length>1?i.slice(1).join(` `):r}function rT(e,t){let n=tT(e);return n?typeof t==`function`?t(n):String(n):``}function iT(e){if(!e)return``;let t=String(e.name||``).trim(),n=String(e.type||e.config&&e.config.type||``).trim();return!n||n===t?``:n}function aT(e){let t=String(e&&(e.type||e.config&&e.config.type)||``).trim().toLowerCase(),n=t?Uw[t]:``;return n?Hw+n+`?utm_source=gomodel_dashboard`:``}function oT(e){let t=e&&e.config&&e.config.resilience?e.config.resilience.retry:null;return t?String(t.max_retries)+` retries, `+t.initial_backoff+` initial, `+t.max_backoff+` max, factor `+t.backoff_factor+`, jitter `+t.jitter_factor:`-`}function sT(e){let t=e&&e.config&&e.config.resilience?e.config.resilience.circuit_breaker:null;return t?String(t.failure_threshold)+` fail, `+String(t.success_threshold)+` success, `+t.timeout+` timeout`:`-`}function cT(e){let t=e&&e.config&&Array.isArray(e.config.models)?e.config.models.filter(Boolean):[];return t.length===0?`Automatic`:t.join(`, `)}function lT(e){if(!e)return``;let t=[];return e.status_reason&&t.push(String(e.status_reason)),e.last_error&&t.push(`Last error: `+String(e.last_error)),t.join(` -`)}function aw(e){let t=e&&e.request_health;return t&&typeof t==`object`?t:null}function ow(e){let t=aw(e);return t?String(t.circuit_state||``).trim():``}function sw(e){let t=ow(e);return t?t.charAt(0).toUpperCase()+t.slice(1):``}function cw(e){let t=ow(e);return t===`open`?`is-unhealthy`:t===`half-open`?`is-degraded`:`is-healthy`}function lw(e){let t=aw(e);if(!t)return``;let n=Number(t.requests||0),r=Number(t.errors||0),i=Math.round(Number(t.window_seconds||0)/60),a=i>0?`last `+i+` min`:`recent`;return String(n)+` request`+(n===1?``:`s`)+` · `+String(r)+` error`+(r===1?``:`s`)+` (`+a+`)`}function uw(e){let t=aw(e);return t&&Array.isArray(t.models)?t.models:[]}function dw(e){return e?String(Number(e.errors||0))+`/`+String(Number(e.requests||0))+` failed`:``}function fw(e){let t=e&&e.last_error;return!t||!t.message?``:(t.status_code?`HTTP `+String(t.status_code)+`: `:``)+t.message}function pw(){return{name:``,slug:``,url:``,transport:`http`,description:``,enabled:!0,headers:[],allowed_tools:``,disallowed_tools:``,user_paths:``,tool_timeout_seconds:``}}function mw(){return{server:``,status:``,instructions:``,tools:[],prompts:[],resources:[],templates:[]}}function hw(e){return String(e&&(e.slug||e.name)||``).trim()}function gw(e){return String(e&&e.status||``).trim()||`connecting`}function _w(e){switch(gw(e)){case`connected`:return`status-success`;case`degraded`:return String(e&&e.last_error||``).trim()?`status-error`:`status-warning`;case`connecting`:return`status-neutral`;default:return`status-unknown`}}function vw(e,t){let n=gw(e),r=String(e&&e.last_error||``).trim();return r&&n!==`connected`?r:n===`connected`&&e&&e.connected_at?`Connected since `+(typeof t==`function`?t:String)(e.connected_at):``}function yw(e){return String(e&&e.transport||``)===`stdio`?`local command`:String(e&&e.url||``).trim()||`—`}function bw(e){let t=Number(e&&e.prompt_count||0),n=Number(e&&e.resource_count||0);return t+` prompts · `+n+` resources`}function xw(e){let t=String(e||``).normalize(`NFKD`).toLowerCase(),n=t.replace(/[\u0300-\u036f]/g,``).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,64).replace(/-+$/g,``);if(n)return n;let r=2166136261;for(let e of t)r=Math.imul((r^e.codePointAt(0))>>>0,16777619)>>>0;return`mcp-`+r.toString(16).padStart(8,`0`)}function Sw(e){return String(e||``).split(` -`).map(e=>e.trim()).filter(e=>e)}function Cw(e){return!e||typeof e!=`object`||Array.isArray(e)?[]:Object.keys(e).sort().map(t=>({name:t,value:String(e[t]||``)}))}function ww(e){let t={};return(Array.isArray(e)?e:[]).forEach(e=>{let n=String(e&&e.name||``).trim();n&&(t[n]=String(e&&e.value||``))}),t}function Tw(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.slug,e.url,e.transport,e.description,e.status].some(e=>String(e||``).toLowerCase().includes(r)))}function Ew(e){return{name:String(e.name||``).trim(),slug:hw(e),url:String(e.url||``).trim(),transport:e.transport===`sse`?`sse`:`http`,description:String(e.description||``).trim(),enabled:e.enabled!==!1,headers:Cw(e.headers),allowed_tools:(Array.isArray(e.allowed_tools)?e.allowed_tools:[]).join(`, `),disallowed_tools:(Array.isArray(e.disallowed_tools)?e.disallowed_tools:[]).join(`, `),user_paths:(Array.isArray(e.user_paths)?e.user_paths:[]).join(` -`),tool_timeout_seconds:e.tool_timeout_seconds?String(e.tool_timeout_seconds):``}}function Dw(e,t,n){let r=String(e.name||``).trim(),i=String(e.slug||xw(r)).trim().toLowerCase(),a=String(e.url||``).trim(),o=e.transport===`sse`?`sse`:`http`;if(!r)return{error:`Name is required.`};if(!/^[a-z0-9][a-z0-9_-]{0,63}$/.test(i))return{error:`Slug must use 1–64 lowercase ASCII letters, numbers, hyphens, or underscores.`};if(t===`create`&&(n||[]).some(e=>hw(e)===i))return{error:`Slug "`+i+`" is already in use.`};if(!a)return{error:`URL is required.`};let s,c=String(e.tool_timeout_seconds||``).trim();if(c!==``){let e=Number(c);if(!Number.isSafeInteger(e)||e<0)return{error:`Tool timeout must be a non-negative whole number of seconds.`};s=e}return{payload:{name:r,slug:i,url:a,transport:o,headers:ww(e.headers),description:String(e.description||``).trim(),enabled:!!e.enabled,allowed_tools:od(e.allowed_tools),disallowed_tools:od(e.disallowed_tools),user_paths:Sw(e.user_paths),tool_timeout_seconds:s}}}function Ow(e,t){let n=t&&typeof t==`object`&&!Array.isArray(t)?t:{},r=e=>(Array.isArray(e)?e:[]).filter(e=>e&&typeof e==`object`);return{server:String(n.server||e||``).trim(),status:String(n.status||``).trim(),instructions:String(n.instructions||``).trim(),tools:r(n.tools),prompts:r(n.prompts),resources:r(n.resources),templates:r(n.templates)}}function kw(e,t){return String(e&&e.server||``)+`_`+String(t||``)}function Aw(e){let t=e||mw(),n=(e,t)=>{let n=String(e||``).trim(),r=String(t||``).trim();return n&&r?n+` — `+r:r||n},r=e=>n=>({key:e+`:`+String(n.name||``),name:String(n.name||``),aggregated:kw(t,n.name),description:String(n.description||``).trim()});return[{key:`tools`,title:`Tools`,items:(t.tools||[]).map(r(`tool`))},{key:`prompts`,title:`Prompts`,items:(t.prompts||[]).map(r(`prompt`))},{key:`resources`,title:`Resources`,items:(t.resources||[]).map(e=>({key:`resource:`+String(e.uri||``),name:String(e.uri||``),aggregated:``,description:n(e.name,e.description)}))},{key:`templates`,title:`Resource templates`,items:(t.templates||[]).map(e=>({key:`template:`+String(e.uri_template||``),name:String(e.uri_template||``),aggregated:``,description:n(e.name,e.description)}))}].filter(e=>e.items.length>0)}function jw(e){return Aw(e).length===0}function Mw(e){return(e||[]).length}function Nw(e){return(e||[]).filter(e=>gw(e)===`connected`).length}function Pw(e){return(e||[]).filter(e=>e&&e.enabled!==!1&&gw(e)===`degraded`).length}function Fw(e,t){return!!e&&Mw(t)>0}function Iw(e){return String(Nw(e))+`/`+String(Mw(e))}function Lw(e){return Pw(e)>0?`is-degraded`:`is-healthy`}function Rw(e){let t=Pw(e);if(t>0)return String(t)+` server`+(t===1?``:`s`)+` need`+(t===1?`s`:``)+` attention`;let n=Mw(e),r=Nw(e);return n>0&&r===n?`All MCP servers connected`:String(r)+` of `+String(n)+` server`+(n===1?``:`s`)+` connected`}function zw(){return{interval:`day`,buckets:[],summary:{requests:0},provider_latency:[]}}function Bw(e){let t=e&&typeof e==`object`?e:{};return{interval:t.interval===`hour`?`hour`:`day`,buckets:Array.isArray(t.buckets)?t.buckets:[],summary:t.summary&&typeof t.summary==`object`?t.summary:{requests:0},provider_latency:Array.isArray(t.provider_latency)?t.provider_latency:[]}}function Vw(e){return Number(e&&e.summary&&e.summary.requests||0)>0}function Hw(e){return(e&&Array.isArray(e.provider_latency)?e.provider_latency:[]).length>0}function Uw(e){let t=e&&e.summary?e.summary.success_rate:null;return t==null?`—`:(Math.round(Number(t)*1e3)/10).toFixed(1)+`%`}function Ww(e,t){return Number(e&&e.summary&&e.summary[t]||0)}function Gw(e){let t=Number(e);return Number.isFinite(t)?t>=6e4?(t/6e4).toFixed(1)+` min`:t>=1e3?(t/1e3).toFixed(2)+` s`:Math.round(t)+` ms`:`-`}function Kw(e){let t=e&&e.summary?e.summary.avg_duration_ms:null;return t==null?`—`:Gw(Number(t))}function qw(e,t){try{let n={};return new Intl.DateTimeFormat(`en-US`,{timeZone:t,year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,hourCycle:`h23`}).formatToParts(e).forEach(e=>{n[e.type]=e.value}),{year:n.year,month:n.month,day:n.day,hour:Number(n.hour)}}catch{return{year:String(e.getFullYear()),month:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`][e.getMonth()],day:String(e.getDate()),hour:e.getHours()}}}function Jw(e,t,n){let r=new Date(e.start);if(Number.isNaN(r.getTime()))return String(e.start||``);let i=qw(r,n),a=i.month+` `+i.day;return t!==`hour`||i.hour===0?a:String(i.hour).padStart(2,`0`)+`:00`}function Yw(e,t,n,r){let i=new Date(e.start);if(Number.isNaN(i.getTime()))return String(e.start||``);if(t===`hour`)return r(e.start);let a=qw(i,n);return a.month+` `+a.day+`, `+a.year}function Xw(e){return{ok:e(`var(--success)`),clientError:e(`var(--warning)`),serverError:e(`var(--danger)`),other:e(`color-mix(in srgb, var(--text-muted) 55%, transparent)`)}}function Zw(e,t,n={}){let r=n.interval===`hour`?`hour`:`day`,i=n.zone,a=n.resolve||(e=>e),o=n.formatTimestamp||(e=>String(e)),s=t.map(e=>Jw(e,r,i)),c=Xw(a),l=a(`var(--bg-surface)`),u=e=>Number(e)||0,d=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderColor:l,borderWidth:1,borderSkipped:!1,borderRadius:2,maxBarThickness:28}),f=[d(`2xx`,t.map(e=>u(e.status_2xx)),c.ok),d(`4xx`,t.map(e=>u(e.status_4xx)),c.clientError),d(`5xx`,t.map(e=>u(e.status_5xx)),c.serverError)];return t.some(e=>u(e.status_other)>0)&&f.push(d(`Other`,t.map(e=>u(e.status_other)),c.other)),{type:`bar`,data:{labels:s,datasets:f},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:BS(e,{title:e=>e.length?Yw(t[e[0].dataIndex],r,i,o):``,label:e=>e.dataset.label+`: `+e.parsed.y.toLocaleString(),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),`Total: `+t.toLocaleString()}})},scales:{x:{stacked:!0,grid:{display:!1},border:{display:!1},ticks:{color:e.text,font:zS(),maxRotation:0,autoSkip:!0,maxTicksLimit:12}},y:{stacked:!0,beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:zS(),precision:0,callback:e=>fd(e)}}}}}}function Qw(e=US()){let t={};return function(n){return n in t||(t[n]=e[Object.keys(t).length%e.length]),t[n]}}function $w(e,t,n,r={}){let i=r.interval===`hour`?`hour`:`day`,a=r.zone,o=r.formatTimestamp||(e=>String(e)),s=r.providerColor||Qw();return{type:`line`,data:{labels:t.map(e=>Jw(e,i,a)),datasets:n.map(e=>({label:e.provider,data:(e.avg_duration_ms||[]).map(e=>e==null?null:Number(e)),borderColor:s(e.provider),backgroundColor:s(e.provider),fill:!1,tension:.3,borderWidth:2,pointRadius:0,pointHoverRadius:4,spanGaps:i===`hour`&&2}))},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:BS(e,{title:e=>e.length?Yw(t[e[0].dataIndex],i,a,o):``,label:e=>{let t=(n[e.datasetIndex]&&n[e.datasetIndex].requests||[])[e.dataIndex],r=Number(t)||0;return e.dataset.label+`: `+Gw(e.parsed.y)+(r>0?` (`+r.toLocaleString()+` req)`:``)}})},scales:{x:{grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:zS(),maxRotation:0,autoSkip:!0,maxTicksLimit:12}},y:{beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:zS(),callback:e=>Gw(e)}}}}}}var eT=class{#e=j(N(zC()));get status(){return R(this.#e)}set status(e){M(this.#e,e,!0)}#t=j(!1);get loading(){return R(this.#t)}set loading(e){M(this.#t,e,!0)}#n=j(!1);get loadedOnce(){return R(this.#n)}set loadedOnce(e){M(this.#n,e,!0)}#r=j(!1);get detailsExpanded(){return R(this.#r)}set detailsExpanded(e){M(this.#r,e,!0)}#i=j(N({}));get cardOverrides(){return R(this.#i)}set cardOverrides(e){M(this.#i,e,!0)}#a=null;#o=null;#s=!1;initPreferences(){if(this.#s)return;this.#s=!0;let e=BC(qa());this.detailsExpanded=e.detailsExpanded,this.cardOverrides=e.cardOverrides}cardExpanded(e){return UC(this.cardOverrides,this.detailsExpanded,e)}toggleCard(e){let t=e&&e.name?String(e.name):``;if(!t)return;let n={...this.cardOverrides};n[t]=!this.cardExpanded(e),this.cardOverrides=n,HC(qa(),this.cardOverrides)}toggleDetails(){this.detailsExpanded=!this.detailsExpanded,this.cardOverrides={},VC(qa(),this.detailsExpanded),HC(qa(),this.cardOverrides)}detailsToggleLabel(){return this.detailsExpanded?`Show Details`:`Hide Details`}async fetch(){this.initPreferences(),this.#a&&this.#a.abort();let e=new AbortController;this.#a=e,this.loading=!0;try{let t=await hu(`/admin/providers/status`,{label:`provider status`,signal:e.signal});if(t.stale||e.signal.aborted)return;if(!t.ok){this.status=zC(),this.#l();return}let n=t.data&&typeof t.data==`object`?t.data:zC();n.summary||=zC().summary,Array.isArray(n.providers)||(n.providers=[]),this.status=n,this.#c()}catch(e){if(_u(e))return;console.error(`Failed to fetch provider status:`,e),this.status=zC(),this.#l()}finally{this.#a===e&&(this.#a=null,this.loading=!1,this.loadedOnce=!0)}}#c(){this.#l(),YC(this.status.providers)&&(this.#o=setTimeout(()=>{this.#o=null,this.fetch()},IC))}#l(){this.#o&&=(clearTimeout(this.#o),null)}stopPolling(){this.#l()}},tT=class{#e=j(N(zw()));get stats(){return R(this.#e)}set stats(e){M(this.#e,e,!0)}#t=j(!1);get loading(){return R(this.#t)}set loading(e){M(this.#t,e,!0)}#n=0;async fetch(){let e=++this.#n;this.loading=!0;try{let t=await hu(`/admin/audit/stats?`+Fd.queryStr(),{label:`audit stats`});if(t.stale||e!==this.#n)return;if(!t.ok){this.stats=zw();return}this.stats=Bw(t.data)}catch(t){if(console.error(`Failed to fetch audit stats:`,t),e!==this.#n)return;this.stats=zw()}finally{e===this.#n&&(this.loading=!1)}}},nT=class{#e=j(N([]));get servers(){return R(this.#e)}set servers(e){M(this.#e,e,!0)}#t=j(!1);get available(){return R(this.#t)}set available(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}async fetch(){if(await bu.ensureLoaded(),!bu.mcpVisible()){this.available=!1,this.servers=[];return}this.loading=!0;try{let e=await hu(`/admin/mcp-servers`,{label:`mcp servers`});if(e.stale)return;if(e.status===503||e.status===404){this.available=!1,this.servers=[];return}if(this.available=!0,!e.ok){this.servers=[];return}this.servers=Array.isArray(e.data)?e.data:[]}catch(e){console.error(`Failed to fetch MCP servers:`,e),this.servers=[]}finally{this.loading=!1}}},rT=class{#e=j(N([]));get data(){return R(this.#e)}set data(e){M(this.#e,e,!0)}#t=j(`tokens`);get mode(){return R(this.#t)}set mode(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}#r=null;async fetch(){this.#r&&this.#r.abort();let e=new AbortController;this.#r=e,this.loading=!0;try{let t=await hu(`/admin/usage/daily?days=365&interval=daily`,{label:`calendar`,signal:e.signal});if(t.stale||e.signal.aborted)return;if(!t.ok){this.data=[];return}this.data=Array.isArray(t.data)?t.data:[]}catch(e){if(_u(e))return;console.error(`Failed to fetch calendar data:`,e),this.data=[]}finally{this.#r===e&&(this.#r=null,this.loading=!1)}}},iT=new eT,aT=new tT,oT=new nT,sT=new rT,cT=(e,t=f,n=f,r=f,i=f)=>{var a=uT(),o=P(a),s=P(o,!0);D(o);var c=I(o,2),l=P(c),u=P(l),d=P(u,!0);D(u),Ve(),D(l);var p=I(l,4),m=P(p),h=P(m,!0);D(m),Ve(),D(p);var g=I(p,4),_=P(g,!0);D(g),D(c),D(a),L((e,n,r,i,a,o)=>{H(s,t()),K(l,`title`,e),H(d,n),K(p,`title`,r),H(h,i),K(g,`title`,a),H(_,o)},[()=>pd(`Input tokens`,n()),()=>fd(n()),()=>pd(`Output tokens`,r()),()=>fd(r()),()=>pd(`Total tokens`,i()),()=>fd(i())]),V(e,a)},lT=(e,t=f,n=f,r=f,i=f,a=f,o=f)=>{var s=pT(),c=P(s),l=P(c,!0);D(c);var u=I(c,2),d=P(u,!0);D(u);var p=I(u,2),m=e=>{var t=dT(),n=P(t,!0);D(t),L(()=>{K(t,`aria-label`,o().title),K(t,`title`,o().title),H(n,a())}),z(`click`,t,function(...e){o().onclick?.apply(this,e)}),V(e,t)},h=e=>{var t=fT(),n=P(t,!0);D(t),L(()=>H(n,a())),V(e,t)};U(p,e=>{o()?e(m):e(h,-1)}),D(s),L(()=>{G(s,1,`card provider-status-flag ${t()??``} ${n()??``}`,`svelte-6tr9cf`),H(l,r()),H(d,i())}),V(e,s)},uT=B(`
i + o =
`),dT=B(``),fT=B(` `),pT=B(`
`),mT=B(`
Cache Hits
`),hT=B(`
Total Requests
Estimated Cost
Prompt Cache Rate
`);function gT(e,t){O(t,!0);let n=A(()=>Vd.summary),r=A(()=>Vd.cacheOverview),i=A(()=>Vd.cacheAnalyticsEnabled()),a=A(()=>iT.status.summary);function o(){let e=document.getElementById(`provider-status-section`);e&&(e.scrollIntoView({behavior:`smooth`,block:`start`}),e.focus({preventScroll:!0}))}var s=hT(),c=P(s);{let e=A(()=>mC(R(n)));cT(c,()=>`Tokens`,()=>R(n).total_input_tokens,()=>R(n).total_output_tokens,()=>R(e))}var l=I(c,2),u=I(P(l),2),d=P(u,!0);D(u),D(l);var f=I(l,2),p=e=>{var t=mT(),n=I(P(t),2),i=P(n,!0);D(n),D(t),L(e=>H(i,e),[()=>cd(R(r).summary.total_hits)]),V(e,t)};U(f,e=>{R(i)&&e(p)});var m=I(f,2),h=I(P(m),2),g=P(h,!0);D(h),D(m);var _=I(m,2),v=e=>{{let t=A(()=>vC(R(r)));cT(e,()=>`Local Cache`,()=>R(r).summary.total_input_tokens,()=>R(r).summary.total_output_tokens,()=>R(t))}};U(_,e=>{R(i)&&e(v)});var y=I(_,2),b=I(P(y),2),x=P(b);NS(x,{build:()=>NC(kC(R(n)),VS(`var(--token-prompt)`),VS(`var(--bg-surface-hover)`))});var S=I(x,2),C=P(S,!0);D(S),D(b),D(y);var w=I(y,2),T=e=>{{let t=A(()=>WC(R(a))),n=A(()=>KC(R(a))),r=A(()=>JC(R(a))),i=A(()=>qC(R(a))?{title:`View providers overview`,onclick:o}:null);lT(e,()=>`provider-status-overview-card`,()=>R(t),()=>`Provider Status`,()=>R(n),()=>R(r),()=>R(i))}};U(w,e=>{R(a).total>0&&e(T)});var E=I(w,2),ee=e=>{{let t=A(()=>Lw(oT.servers)),n=A(()=>Iw(oT.servers)),r=A(()=>Rw(oT.servers));lT(e,()=>`mcp-servers-flag`,()=>R(t),()=>`MCP Servers`,()=>R(n),()=>R(r),()=>({title:`View MCP servers`,onclick:()=>Bl.navigate(`mcp-servers`)}))}},te=A(()=>Fw(oT.available,oT.servers));U(E,e=>{R(te)&&e(ee)}),D(s),L((e,t,n,r,i)=>{K(u,`title`,e),H(d,t),H(g,n),K(b,`aria-label`,r),H(C,i)},[()=>_C(R(n),R(r),R(i)),()=>cd(gC(R(n),R(r),R(i))),()=>ld(R(n).total_cost),()=>`Prompt cache rate `+jC(R(n)),()=>jC(R(n))]),V(e,s),k()}Br([`click`]);var _T=B(` `),vT=B(`
`),yT=B(`No usage in the selected period yet`),bT=B(`
`),xT=B(`

Tokens

Share of input tokens over the selected period
`);function ST(e,t){O(t,!0);let n=A(()=>Vd.cacheAnalyticsEnabled()),r=A(()=>SC(Vd.summary,Vd.cacheOverview,R(n))),i=A(()=>CC(Vd.summary,Vd.cacheOverview,R(n))),a=A(()=>xC(Vd.summary,Vd.cacheOverview,R(n)));var o=xT(),s=I(P(o),2);let c;var l=P(s);W(l,17,()=>R(i),e=>e.key,(e,t)=>{var n=vT(),r=P(n),i=e=>{var n=_T(),r=P(n);D(n),L(()=>H(r,`${R(t).pct??``}%`)),V(e,n)};U(r,e=>{R(t).pct>=8&&e(i)}),D(n),L(e=>{Bi(n,`width: ${R(t).pct??``}%; background: var(${R(t).colorVar??``})`),K(n,`title`,e)},[()=>wC(R(t))]),V(e,n)});var u=I(l,2),d=e=>{V(e,yT())};U(u,e=>{R(a)||e(d)}),D(s);var f=I(s,2);W(f,21,()=>R(r),e=>e.key,(e,t)=>{var n=bT(),r=P(n),i=I(r,2),a=P(i,!0);D(i);var o=I(i,2),s=P(o);D(o);var c=I(o,2),l=P(c,!0);D(c),D(n),L((e,i)=>{K(n,`title`,e),Bi(r,`background: var(${R(t).colorVar??``})`),H(a,R(t).label),H(s,`${R(t).pct??``}%`),H(l,i)},[()=>wC(R(t)),()=>cd(R(t).tokens)]),V(e,n)}),D(f),D(o),L(e=>{c=G(s,1,`cache-meter-bar svelte-1yzecxj`,null,c,{"is-empty":!R(a)}),K(s,`aria-label`,e)},[()=>TC(R(i))]),V(e,o),k()}var CT=B(``);function wT(e,t){let n=q(t,`size`,3,16),r=q(t,`label`,3,`Loading`),i=q(t,`class`,3,``);var a=CT();L(()=>{G(a,1,Ni([`spinner`,i()]),`svelte-b54l9o`),Bi(a,`--spinner-size: ${n()??``}px`),K(a,`aria-label`,r())}),V(e,a)}var TT=Jr(` `),ET=Jr(``);function DT(e,t){let n=q(t,`label`,3,`No data`);var r=ET(),i=I(P(r),9),a=e=>{var t=TT(),r=P(t,!0);D(t),L(()=>H(r,n())),V(e,t)};U(i,e=>{n()&&e(a)}),D(r),L(()=>{K(r,`role`,n()?`img`:void 0),K(r,`aria-label`,n()||void 0),K(r,`aria-hidden`,n()?void 0:`true`)}),V(e,r)}var OT=B(`
`),kT=B(`

`);function AT(e,t){O(t,!0);let n=[`daily`,`weekly`,`monthly`,`yearly`];function r(e){Fd.interval=e,t.onintervalchange?.()}function i(){let e=Vd.daily;if(e.length===0)return null;let t=Fd.rangeStart(),n=Fd.rangeEnd(),r=OC(DC(e,Fd.interval,t,n),DC(Array.isArray(Vd.cacheOverview.daily)?Vd.cacheOverview.daily:[],Fd.interval,t,n));return MC(RS(),r,{cacheEnabled:Vd.cacheAnalyticsEnabled(),resolve:VS})}var a=kT(),o=P(a),s=P(o),c=P(s,!0);D(s);var l=I(s,2);{let e=A(()=>n.map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1)})));IS(l,{ariaLabel:`Usage chart interval`,get options(){return R(e)},get value(){return Fd.interval},onchange:r})}D(o);var u=I(o,2),d=P(u);NS(d,{build:i});var f=I(d,2),p=e=>{var t=OT();wT(P(t),{size:24,label:`Loading usage`}),D(t),V(e,t)},m=e=>{var t=OT();DT(P(t),{}),D(t),V(e,t)};U(f,e=>{Vd.daily.length===0&&Vd.loading?e(p):Vd.daily.length===0&&!Y.authError&&e(m,1)}),D(u),D(a),L(e=>H(c,e),[()=>Fd.chartTitle()]),V(e,a),k()}var jT=10,MT=.7;function NT(e,t){if(e<=0||t<=0)return 0;let n=(e/t)**+MT,r=Math.ceil(n*jT);return r<1?1:r>jT?jT:r}function PT(){let e=[];for(let t=0;t<=jT;t++)e.push(t);return e}function FT(e,t,n){let r={};(e||[]).forEach(e=>{r[e.date]=e});let i=Xl(Ql(n,-364)),a=i.getUTCDay();i.setUTCDate(i.getUTCDate()-a);let o=[];for(let e=new Date(i);Zl(e)<=n;e.setUTCDate(e.getUTCDate()+1)){let n=Zl(e),i=r[n],a=0;i&&(a=t===`costs`?i.total_cost==null?0:i.total_cost:i.total_tokens||0),o.push({dateStr:n,value:a,level:0,empty:!1})}let s=0;for(let e=0;es&&(s=o[e].value);for(let e=0;e0){for(;l.length<7;)l.push({dateStr:``,value:0,level:0,empty:!0});c.push(l)}return c}function IT(e){let t=Xl(Ql(e,-364)),n=t.getUTCDay();t.setUTCDate(t.getUTCDate()-n);let r=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],i=[],a={},o=0;for(let n=new Date(t);Zl(n)<=e;n.setUTCDate(n.getUTCDate()+7),o++){let t=null;if(o===0)t=new Date(n);else for(let r=0;r<7;r++){let i=new Date(n);if(i.setUTCDate(n.getUTCDate()+r),Zl(i)>e)break;if(i.getUTCDate()===1){t=i;break}}if(!t)continue;let s=t.getUTCFullYear()+`-`+t.getUTCMonth();a[s]||(i.push({label:r[t.getUTCMonth()],col:o,key:s}),a[s]=!0)}for(let e=0;e `),BT=B(`
`),VT=B(`
`),HT=B(`
`),UT=B(`
`),WT=B(`

Activity

Mon Wed Fri
`,1);function GT(e,t){O(t,!0);let n=j(N({show:!1,x:0,y:0,text:``})),r=A(()=>lu.currentDateKey()),i=A(()=>FT(sT.data,sT.mode,R(r))),a=A(()=>IT(R(r)));function o(e,t){t.empty||M(n,{show:!0,x:e.clientX,y:e.clientY,text:RT(t,sT.mode)},!0)}function s(){M(n,{show:!1,x:0,y:0,text:``},!0)}var c=WT(),l=F(c),u=P(l),d=I(P(u),2),f=e=>{wT(e,{size:14,label:`Loading activity`})};U(d,e=>{sT.loading&&sT.data.length===0&&e(f)}),IS(I(d,2),{ariaLabel:`Activity calendar mode`,options:[{value:`tokens`,label:`Tokens`},{value:`costs`,label:`Costs`}],get value(){return sT.mode},onchange:e=>sT.mode=e}),D(u);var p=I(u,2),m=I(P(p),2),h=P(m);W(h,21,()=>R(a),e=>e.key,(e,t)=>{var n=zT(),r=P(n,!0);D(n),L(()=>{Bi(n,`grid-column: ${R(t).col+1} / span ${R(t).span??``}`),H(r,R(t).label)}),V(e,n)}),D(h);var g=I(h,2);W(g,21,()=>R(i),ii,(e,t,n)=>{var r=VT();W(r,23,()=>R(t),(e,t)=>n+`-`+t,(e,t)=>{var n=BT();L(()=>G(n,1,Ni([`contribution-calendar-cell`,R(t).empty?`empty`:`level-${R(t).level}`]),`svelte-3hfxuq`)),zr(`mouseenter`,n,e=>o(e,R(t))),zr(`mouseleave`,n,s),V(e,n)}),D(r),V(e,r)}),D(g),D(m),D(p);var _=I(p,2),v=P(_),y=P(v),b=P(y,!0);D(y),D(v);var x=I(v,2);W(I(P(x),2),16,PT,e=>e,(e,t)=>{var n=HT();L(()=>G(n,1,`contribution-calendar-cell level-${t??``}`,`svelte-3hfxuq`)),V(e,n)}),Ve(2),D(x),D(_),D(l);var S=I(l,2),C=e=>{var t=UT(),r=P(t,!0);D(t),L(()=>{Bi(t,`left: ${R(n).x??``}px; top: ${R(n).y-40}px`),H(r,R(n).text)}),V(e,t)};U(S,e=>{R(n).show&&e(C)}),L(e=>H(b,e),[()=>LT(sT.data,sT.mode)]),V(e,c),k()}var KT=B(``),qT=B(`

`),JT=B(`
`);function YT(e,t){O(t,!0);let n=q(t,`label`,3,`help`),r=q(t,`text`,3,``),i=q(t,`open`,15,!1),a=q(t,`external`,3,!1),o=A(()=>!!r()||!!t.help||a());var s=JT(),c=P(s),l=P(c);mi(l,()=>t.title??f);var u=I(l,2),d=e=>{var r=KT();let a;L(()=>{a=G(r,1,`inline-help-toggle svelte-y40or3`,null,a,{"is-open":i()}),K(r,`aria-label`,(i()?`Hide `:`Show `)+n()),K(r,`aria-expanded`,i()),K(r,`aria-controls`,t.copyId)}),z(`click`,r,()=>i(!i())),V(e,r)};U(u,e=>{R(o)&&e(d)}),mi(I(u,2),()=>t.extra??f),D(c);var p=I(c,2),m=e=>{var n=qT(),i=P(n),a=e=>{var n=Xr();mi(F(n),()=>t.help),V(e,n)},o=e=>{var t=Yr();L(()=>H(t,r())),V(e,t)};U(i,e=>{t.help?e(a):e(o,-1)}),D(n),L(()=>K(n,`id`,t.copyId)),V(e,n)};U(p,e=>{i()&&R(o)&&!a()&&e(m)}),D(s),V(e,s),k()}Br([`click`]);var XT=B(`

Provider Latency

`),ZT=B(`
Avg
`),QT=B(`

Requests by Status

Success 2xx 4xx 5xx
`,1);function $T(e,t){O(t,!0);let n=Qw(),r=A(()=>aT.stats);function i(){return{interval:R(r).interval,zone:lu.effectiveTimezone(),resolve:VS,formatTimestamp:e=>lu.formatTimestamp(e)}}var a=Xr(),o=F(a),s=e=>{var t=QT(),a=F(t),o=P(a),s=I(P(o),2),c=P(s),l=I(P(c),2),u=P(l,!0);D(l),D(c);var d=I(c,2),f=I(P(d),4),p=P(f,!0);D(f),D(d);var m=I(d,2),h=I(P(m),4),g=P(h,!0);D(h),D(m);var _=I(m,2),v=I(P(_),4),y=P(v,!0);D(v),D(_),D(s),D(o);var b=I(o,2);NS(P(b),{build:()=>Zw(RS(),R(r).buckets,i())}),D(b),D(a);var x=I(a,2),S=e=>{var t=ZT(),a=P(t),o=P(a);YT(o,{copyId:`audit-latency-help-copy`,label:`provider latency help`,text:`Average duration of successful requests as measured at the gateway, per provider. Local cache hits and failed requests are excluded; streamed responses count until the stream completes.`,title:e=>{V(e,XT())},$$slots:{title:!0}});var s=I(o,2),c=P(s),l=I(P(c),2),u=P(l,!0);D(l),D(c),D(s),D(a);var d=I(a,2);NS(P(d),{build:()=>$w(RS(),R(r).buckets,R(r).provider_latency,{...i(),providerColor:n})}),D(d),D(t),L(e=>H(u,e),[()=>Kw(R(r))]),V(e,t)},C=A(()=>Hw(R(r)));U(x,e=>{R(C)&&e(S)}),L((e,t,n,r)=>{H(u,e),H(p,t),H(g,n),H(y,r)},[()=>Uw(R(r)),()=>cd(Ww(R(r),`status_2xx`)),()=>cd(Ww(R(r),`status_4xx`)),()=>cd(Ww(R(r),`status_5xx`))]),V(e,t)},c=A(()=>Vw(R(r)));U(o,e=>{R(c)&&e(s)}),V(e,a),k()}var eE=(e,t=f,n=f,r)=>{let i=Et(()=>h(r?.(),!1));var a=rE(),o=P(a),s=P(o,!0);D(o);var c=I(o,2),l=e=>{var t=tE(),r=P(t,!0);D(t),L(()=>H(r,n())),V(e,t)},u=e=>{var t=nE(),r=P(t,!0);D(t),L(()=>H(r,n())),V(e,t)};U(c,e=>{R(i)?e(l):e(u,-1)}),D(a),L(()=>H(s,t())),V(e,a)},tE=B(` `),nE=B(` `),rE=B(`
`),iE=B(`

`),aE=B(`
Breaker State
`),oE=B(`
`),sE=B(`
Models (Recent Traffic)
`),cE=B(`
`),lE=B(`

`);function uE(e,t){O(t,!0);let n=A(()=>cw(t.provider)),r=A(()=>[[`Base URL`,t.provider.config?.base_url],[`API Version`,t.provider.config?.api_version]].filter(([,e])=>!!e));var i=lE();let a;var o=P(i),s=P(o),c=P(s,!0);D(s);var l=I(s,2),u=e=>{var n=iE(),r=P(n,!0);D(n),L(()=>H(r,t.provider.last_error)),V(e,n)};U(l,e=>{t.provider.last_error&&e(u)});var d=I(l,2),f=e=>{var r=cE(),i=P(r);{let e=A(()=>lw(t.provider));eE(i,()=>`Recent Requests`,()=>R(e))}var a=I(i,2),o=e=>{var r=aE(),i=I(P(r),2),a=P(i),o=P(a,!0);D(a),D(i),D(r),L(e=>{G(a,1,Ni([`provider-status-health-state`,R(n)]),`svelte-6y9wjv`),H(o,e)},[()=>sw(t.provider)]),V(e,r)},s=A(()=>ow(t.provider));U(a,e=>{R(s)&&e(o)});var c=I(a,2),l=e=>{var n=sE(),r=I(P(n),2);W(r,21,()=>uw(t.provider),e=>e.model,(e,t)=>{var n=oE();let r;var i=P(n),a=P(i,!0);D(i);var o=I(i,2),s=P(o,!0);D(o),D(n),L((e,i)=>{r=G(n,1,`provider-status-health-model svelte-6y9wjv`,null,r,{"is-flagged":R(t).flagged}),K(n,`title`,e),H(a,R(t).model),H(s,i)},[()=>fw(R(t)),()=>dw(R(t))]),V(e,n)}),D(r),D(n),V(e,n)},u=A(()=>uw(t.provider).length>0);U(c,e=>{R(u)&&e(l)}),D(r),V(e,r)},p=A(()=>aw(t.provider));U(d,e=>{R(p)&&e(f)});var m=I(d,2),h=P(m);W(h,17,()=>R(r),([e,t])=>e,(e,t)=>{var n=A(()=>g(R(t),2));eE(e,()=>R(n)[0],()=>R(n)[1],()=>!0)});var _=I(h,2);{let e=A(()=>rw(t.provider));eE(_,()=>`Configured Models`,()=>R(e))}var v=I(_,2);{let e=A(()=>tw(t.provider));eE(v,()=>`Retry`,()=>R(e))}var y=I(v,2);{let e=A(()=>nw(t.provider));eE(y,()=>`Circuit Breaker`,()=>R(e))}D(m),D(o),D(i),L(()=>{a=G(i,1,`provider-status-details svelte-6y9wjv`,null,a,{"is-expanded":t.expanded,"is-collapsed":!t.expanded}),K(i,`aria-hidden`,!t.expanded),H(c,t.provider.status_reason)}),V(e,i),k()}var dE=B(` `),fE=B(``),pE=B(`

Models Available
Last Checked
`);function mE(e,t){O(t,!0);let n=A(()=>iT.cardExpanded(t.provider)),r=e=>lu.formatTimestamp(e);var i=pE(),a=P(i),o=P(a),s=P(o),c=P(s),l=P(c,!0);D(c);var u=I(c,2),d=e=>{var n=dE(),r=P(n);D(n),L(e=>H(r,`(${e??``})`),[()=>$C(t.provider)]),V(e,n)},f=A(()=>$C(t.provider));U(u,e=>{R(f)&&e(d)});var p=I(u,2),m=e=>{var n=fE();L((e,t,r)=>{K(n,`href`,e),K(n,`aria-label`,t),K(n,`title`,r)},[()=>ew(t.provider),()=>`View `+($C(t.provider)||t.provider.name)+` provider docs`,()=>`View `+($C(t.provider)||t.provider.name)+` provider docs`]),V(e,n)},h=A(()=>ew(t.provider));U(p,e=>{R(h)&&e(m)}),D(s),D(o);var g=I(o,2),_=P(g,!0);D(g),D(a);var v=I(a,2),y=P(v),b=I(P(y),2),x=P(b,!0);D(b),D(y);var S=I(y,2),C=I(P(S),2),w=P(C,!0);D(C),D(S),D(v);var T=I(v,2);uE(T,{get provider(){return t.provider},get expanded(){return R(n)}});var E=I(T,2);let ee;J(P(E),{get icon(){return Nc},class:`provider-status-card-toggle-icon`}),D(E),D(i),L((e,r,i,a,o)=>{H(l,t.provider.name),G(g,1,`provider-status-pill ${e??``}`,`svelte-nopjmh`),K(g,`title`,r),H(_,t.provider.status_label),H(x,i),K(C,`title`,a),H(w,o),ee=G(E,1,`provider-status-card-toggle svelte-nopjmh`,null,ee,{"is-expanded":R(n)}),K(E,`aria-expanded`,R(n)),K(E,`aria-label`,(R(n)?`Collapse `:`Expand `)+t.provider.name+` details`),K(E,`title`,R(n)?`Collapse details`:`Expand details`)},[()=>GC(t.provider.status),()=>iw(t.provider),()=>cd(t.provider.runtime?.discovered_model_count),()=>QC(t.provider,r),()=>ZC(t.provider,r)]),z(`click`,E,()=>iT.toggleCard(t.provider)),V(e,i),k()}Br([`click`]);var hE=B(`

Providers Overview

`),gE=B(`
`);function _E(e,t){O(t,!0);let n=A(()=>iT.status.providers);var r=Xr(),i=F(r),a=e=>{var t=hE(),r=P(t),i=I(P(r),2),a=P(i),o=P(a,!0);D(a);var s=I(a,2);let c;D(i),D(r);var l=I(r,2);W(l,21,()=>R(n),e=>e.name,(e,t)=>{mE(e,{get provider(){return R(t)}})}),D(l),D(t),L((e,t)=>{K(i,`aria-checked`,iT.detailsExpanded),K(i,`title`,e),H(o,t),c=G(s,1,`provider-status-toggle-track svelte-1kx3uw4`,null,c,{"is-active":iT.detailsExpanded})},[()=>iT.detailsToggleLabel(),()=>iT.detailsToggleLabel()]),z(`click`,i,()=>iT.toggleDetails()),V(e,t)},o=e=>{var t=gE();wT(P(t),{size:18,label:`Loading provider status`}),D(t),V(e,t)};U(i,e=>{R(n).length>0?e(a):iT.loading&&!iT.loadedOnce&&e(o,1)}),V(e,r),k()}Br([`click`]);var vE=B(`
`);function yE(e,t){O(t,!0);function n(){Vd.fetchUsage(),Vd.fetchCacheOverview(``),aT.fetch(),iT.fetch(),oT.fetch(),sT.fetch()}function r(){Vd.fetchUsage(),Vd.fetchCacheOverview(``),aT.fetch()}function i(){r(),sT.fetch()}On(()=>{if(Y.refreshTick,Bl.page===`overview`)return wr(()=>{n(),lC.start()}),()=>{lC.stop(),iT.stopPolling()}});var a=vE(),o=P(a);pC(o,{});var s=I(o,4);rf(P(s),{onchange:i}),D(s);var c=I(s,2);Rd(c,{});var l=I(c,2);gT(l,{});var u=I(l,2);ST(u,{});var d=I(u,2);AT(d,{onintervalchange:r});var f=I(d,2);GT(f,{});var p=I(f,2);$T(p,{}),_E(I(p,2),{}),D(a),V(e,a),k()}var bE=`/admin/live/logs?types=audit,usage`;function xE(e,t,n){return!!t&&String(e&&e.id||``).trim()===t||!!n&&String(e&&e.request_id||``).trim()===n}function SE(e){switch(e){case`date_range`:return`Live paused — the selected date range does not include today. Set it to today to resume.`;case`filters`:return`Live paused while filters are active. Clear them to resume.`;case`pagination`:return`Live paused on later pages. Go to the first page to resume.`;default:return``}}function CE(e){let t=bE,n=Number(e||0);return Number.isFinite(n)&&n>0&&(t+=`&cursor=`+encodeURIComponent(String(n))),t}function wE(){return{async consumeLiveLogsBody(e){await KS(e,e=>this.applyLiveLogEvent(e))},applyLiveLogEvent(e){if(!e||typeof e!=`object`)return;let t=Number(e.seq||0);Number.isFinite(t)&&t>this.liveLogsLastSeq&&(this.liveLogsLastSeq=t);let n=String(e.type||``).trim();if(n!==`heartbeat`){if(n===`reset`){this.reloadLiveLogSources();return}if(n===`audit.removed`){this.removeLiveAuditEntry(e.data);return}if(n.indexOf(`audit.`)===0){this.mergeLiveAuditEntry(e.data||{},n);return}n.indexOf(`usage.`)===0&&(this.mergeLiveUsageEntry(e.data||{},n),typeof this.noteLiveTokenUsage==`function`&&this.noteLiveTokenUsage(n))}},reloadLiveLogSources(){typeof this.fetchUsage==`function`&&this.fetchUsage(),this.page===`audit-logs`&&typeof this.fetchAuditLog==`function`&&this.fetchAuditLog(!0)},auditLivePauseReason(){return!this.auditLog||this.auditLog.offset!==0?`pagination`:this.auditSearch||this.auditMethod||this.auditStatusCode||this.auditStream?`filters`:!this.followsToday&&(this.customStartDate||this.customEndDate)?`date_range`:null},auditLiveInsertAllowed(){return!this.auditLivePauseReason()},usageLiveInsertAllowed(){return this.usageLog&&this.usageLog.offset===0&&!this.usageLogSearch&&!this.usageFilterModel&&!this.usageFilterProvider&&!this.usageFilterLabel&&!this.usageFilterUserPath},mergeLiveAuditEntry(e,t){if(!e||typeof e!=`object`)return;let n=String(e.id||e.request_id||``).trim();if(!n)return;let r=String(e.request_id||``).trim(),i=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],a=i.findIndex(e=>xE(e,n,r)),o=a>=0&&i[a]||{},s=t===`audit.detail`,c=s?{...e,_detail_loaded:!0,_response_partial:!1,bodies_omitted:!1}:this.liveAuditPatch(o,e,t);if(a>=0){let e=this.mergeLiveAuditPatch(o,c);return i.splice(a,1,e),this.auditLog.entries=[...i],this.regroupLiveAuditHead(e),s||this.fetchExpandedAuditDetailIfReady(e),this.cacheMergedAuditRecord(e,t),e}let l=this.mergeLiveAuditChild(e,c);if(l)return s||this.fetchExpandedAuditDetailIfReady(l),this.cacheMergedAuditRecord(l,t),l;if(!this.auditLiveInsertAllowed()){this.cacheMergedAuditRecord(c,t);return}if(!s&&this.auditGroupSessions){let e=this.foldLiveAuditIntoThread(c);if(e)return this.fetchExpandedAuditDetailIfReady(e),this.cacheMergedAuditRecord(e,t),e}this.auditLog.entries=[this.mergeLiveAuditUsagePatch(c),...i].slice(0,this.auditLog.limit||25),this.auditLog.total=Number(this.auditLog.total||0)+1;let u=this.auditLog.entries[0];return s||this.fetchExpandedAuditDetailIfReady(u),this.cacheMergedAuditRecord(u,t),u},liveAuditPatch(e,t,n){let r=this.liveAuditStateAfter(e._live_state,n),i=this.liveAuditEventFlushed(e._live_state)||this.liveAuditEventFlushed(r),a={...t,_live:!0,_live_state:r,_audit_flushed:i,_live_pending:!i};return n===`audit.stream`?a._response_partial=!0:this.liveAuditStateSettled(n)&&(a._response_partial=!1),a},mergeLiveAuditChild(e,t){let n=this.auditThreadChildren;if(!n||typeof n!=`object`)return null;let r=String(e.id||``).trim(),i=String(e.request_id||``).trim(),a=Object.keys(n);for(let e=0;exE(e,r,i));if(c<0)continue;let l=this.mergeLiveAuditPatch(s[c]||{},t),u=[...s];return u.splice(c,1,l),this.auditThreadChildren={...n,[a[e]]:{...o,entries:u}},l}return null},regroupLiveAuditHead(e){if(!this.auditGroupSessions)return null;let t=String(e&&e.session_id||``).trim();if(!t)return null;let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=String(e.id||``).trim(),i=n.findIndex(e=>String(e.id||``).trim()===r);if(i<0)return null;let a=n.findIndex((e,n)=>n!==i&&String(e.session_id||``).trim()===t);if(a<0)return null;let o=n[a],s=Date.parse(o&&o.timestamp),c=Date.parse(e&&e.timestamp),l=Number.isFinite(s)&&Number.isFinite(c)&&s>c,u=l?o:e,d=l?e:o,f={...u,session_count:Math.max(1,Number(o.session_count||1))+Math.max(1,Number(e.session_count||1))},p=n.filter((e,t)=>t!==i&&t!==a);return p.unshift(f),this.auditLog.entries=p,this.auditLog.total=Math.max(0,Number(this.auditLog.total||0)-1),this.prependLiveAuditThreadChild(t,d),f},foldLiveAuditIntoThread(e){let t=String(e&&e.session_id||``).trim();if(!t)return null;let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=n.findIndex(e=>String(e.session_id||``).trim()===t);if(r<0)return null;let i=n[r],a=Number(i.session_count),o=this.mergeLiveAuditUsagePatch({...e,session_count:(Number.isFinite(a)&&a>0?a:1)+1}),s=[...n];return s.splice(r,1),s.unshift(o),this.auditLog.entries=s,this.prependLiveAuditThreadChild(t,i),o},prependLiveAuditThreadChild(e,t){let n=this.auditThreadChildren||{},r=n[e],i={...t};delete i.session_count;let a=r&&Array.isArray(r.entries)?{...r,entries:[i,...r.entries],total:Number(r.total||r.entries.length)+1}:{loading:!1,loaded:!1,entries:[i],total:1};this.auditThreadChildren={...n,[e]:a}},removeLiveAuditThreadChild(e,t){let n=this.auditThreadChildren;!n||typeof n!=`object`||Object.keys(n).forEach(r=>{let i=n[r],a=i&&Array.isArray(i.entries)?i.entries:[],o=a.filter(n=>!xE(n,e,t)),s=a.length-o.length;s!==0&&(this.auditThreadChildren={...this.auditThreadChildren,[r]:{...i,entries:o,total:Math.max(0,Number(i.total||a.length)-s)}},this.decrementLiveAuditThreadCount(r,s))})},decrementLiveAuditThreadCount(e,t){let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=n.findIndex(t=>String(t.session_id||``).trim()===e);if(r<0)return;let i=n[r],a=[...n];a.splice(r,1,{...i,session_count:Math.max(1,Number(i.session_count||1)-t)}),this.auditLog.entries=a},mergeLiveAuditPatch(e,t){let n={...e,...t};return t.data===void 0&&e.data!==void 0?n.data=e.data:e.data&&t.data&&typeof e.data==`object`&&typeof t.data==`object`&&!Array.isArray(e.data)&&!Array.isArray(t.data)&&(n.data={...e.data,...t.data}),this.mergeLiveAuditUsagePatch(n)},mergeLiveAuditUsagePatch(e){let t=this.liveUsageEntryForAudit(e);if(!t)return e;let n=this.auditEntryWithLiveUsage(e,t);return this.removeSkippedLiveUsage(t),n},liveUsageEntryForAudit(e){let t=String(e&&e.request_id||``).trim();return t&&((this.usageLog&&Array.isArray(this.usageLog.entries)?this.usageLog.entries:[]).find(e=>String(e&&e.request_id||``).trim()===t)||this.skippedLiveUsageByRequestId&&this.skippedLiveUsageByRequestId[t])||null},cacheMergedAuditRecord(e,t){return e&&typeof this.cacheAuditRecord==`function`?this.cacheAuditRecord(e,t):e},fetchExpandedAuditDetailIfReady(e){!e||!this.isAuditEntryExpanded||!this.isAuditEntryExpanded(e)||String(e._live_state||``).trim()!==`audit.flushed`&&!e._audit_flushed||typeof this.fetchAuditEntryDetail==`function`&&this.fetchAuditEntryDetail(e)},liveAuditStateRank(e){switch(String(e||``).trim()){case`audit.started`:return 10;case`audit.updated`:case`audit.stream`:return 20;case`audit.completed`:return 30;case`audit.failed`:case`audit.flushed`:case`audit.detail`:return 40;default:return 0}},liveAuditStateAfter(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return this.liveAuditStateRank(n)>this.liveAuditStateRank(r)?n:r},liveAuditStateSettled(e){return this.liveAuditStateRank(e)>=this.liveAuditStateRank(`audit.completed`)},liveAuditEventFlushed(e){let t=String(e||``).trim();return t===`audit.failed`||t===`audit.flushed`||t===`audit.detail`},removeLiveAuditEntry(e){if(!e||!this.auditLog||!Array.isArray(this.auditLog.entries))return;let t=String(e.id||``).trim(),n=String(e.request_id||``).trim();if(!t&&!n)return;let r=this.auditLog.entries,i=[],a=0,o=0,s=!1;r.forEach(e=>{if(!xE(e,t,n)){i.push(e);return}a++;let r=String(e.session_id||``).trim(),c=Math.max(1,Number(e.session_count||1));if(!this.auditGroupSessions||!r||c<=1)return;o++;let l=this.auditThreadChildren&&this.auditThreadChildren[r],u=l&&Array.isArray(l.entries)?l.entries.filter(e=>!xE(e,t,n)):[];if(u.length===0){s=!0;return}let d={...u[0],session_id:r,session_count:c-1};i.push(d),this.auditThreadChildren={...this.auditThreadChildren,[r]:{...l,entries:u.slice(1),total:Math.max(0,Number(l.total||c)-1)}}}),a>0&&(this.auditLog.entries=i,this.auditLog.total=Math.max(0,Number(this.auditLog.total||0)-a+o)),this.removeLiveAuditThreadChild(t,n),s&&typeof this.fetchAuditLog==`function`&&this.fetchAuditLog(!0)},mergeLiveUsageEntry(e,t){if(!e||typeof e!=`object`)return;e={...e,_live_state:t||e._live_state||`usage.completed`};let n=String(e.id||``).trim();if(!n)return;let r=this.usageLog&&Array.isArray(this.usageLog.entries)?this.usageLog.entries:[],i=r.findIndex(e=>String(e.id||``).trim()===n);if(i>=0){let t=r[i]||{},n=this.mergeLiveUsagePatch(t,e);if(this.applyLiveUsageToAudit(n),this.liveUsageShouldSkip(n)){r.splice(i,1),this.usageLog.entries=[...r],this.usageLog.total=Math.max(0,Number(this.usageLog.total||0)-1),this.storeSkippedLiveUsage(n);return}r.splice(i,1,n),this.usageLog.entries=[...r],this.removeSkippedLiveUsage(n);return}let a=this.mergeLiveUsagePatch(this.liveUsageSeedForEntry(e),e);if(this.applyLiveUsageToAudit(a),this.liveUsageShouldSkip(a)){this.storeSkippedLiveUsage(a);return}this.removeSkippedLiveUsage(a),this.usageLog.entries=[a,...r].slice(0,this.usageLog.limit||50),this.usageLog.total=Number(this.usageLog.total||0)+1},mergeLiveUsagePatch(e,t){e=e&&typeof e==`object`?e:{};let n=this.liveUsageStateAfter(e._live_state,t&&t._live_state),r=this.liveUsageEventFlushed(e)||this.liveUsageEventFlushed({...t,_live_state:n});return{...e,...t,_live:!0,_live_state:n||`usage.completed`,_live_pending:!r,_usage_flushed:r}},liveUsageShouldSkip(e){return!!(this.usageLogHideCached&&this.liveUsageEntryCached(e))||!this.usageLiveInsertAllowed()},liveUsageSeedForEntry(e){return this.skippedLiveUsageForEntry(e)||this.auditLiveUsageForEntry(e)},skippedLiveUsageForEntry(e){let t=String(e&&e.request_id||``).trim();return t&&this.skippedLiveUsageByRequestId?this.skippedLiveUsageByRequestId[t]:null},auditLiveUsageForEntry(e){let t=String(e&&e.request_id||``).trim();if(!t||!this.auditLog||!Array.isArray(this.auditLog.entries))return null;let n=this.auditLog.entries.find(e=>String(e&&e.request_id||``).trim()===t),r=n&&n.usage&&typeof n.usage==`object`&&!Array.isArray(n.usage)?n.usage:null;return r?{id:e&&e.id,request_id:t,entries:r.entries,input_tokens:r.input_tokens,uncached_input_tokens:r.uncached_input_tokens,cached_input_tokens:r.cached_input_tokens,cache_write_input_tokens:r.cache_write_input_tokens,output_tokens:r.output_tokens,total_tokens:r.total_tokens,cached_input_ratio:r.cached_input_ratio,estimated_cached_characters:r.estimated_cached_characters,_live_state:n._usage_live_state,_live_pending:n._usage_live_pending,_usage_flushed:n._usage_flushed}:null},storeSkippedLiveUsage(e){let t=String(e&&e.request_id||``).trim();t&&((!this.skippedLiveUsageByRequestId||typeof this.skippedLiveUsageByRequestId!=`object`||Array.isArray(this.skippedLiveUsageByRequestId))&&(this.skippedLiveUsageByRequestId={}),this.skippedLiveUsageByRequestId[t]=e)},removeSkippedLiveUsage(e){let t=String(e&&e.request_id||``).trim();t&&this.skippedLiveUsageByRequestId&&delete this.skippedLiveUsageByRequestId[t]},liveUsageEntryCached(e){let t=String(e&&e.cache_type||``).trim().toLowerCase();return t===`exact`||t===`semantic`||!!(e&&e.cache_hit)},liveUsageEventFlushed(e){let t=String(e&&e._live_state||``).trim();return!!(e&&e._usage_flushed)||t===`usage.failed`||t===`usage.flushed`},liveUsageStateRank(e){switch(String(e||``).trim()){case`usage.completed`:return 10;case`usage.failed`:case`usage.flushed`:return 20;default:return 0}},liveUsageStateAfter(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return this.liveUsageStateRank(n)>this.liveUsageStateRank(r)?n:r},applyLiveUsageToAudit(e){let t=String(e&&e.request_id||``).trim();if(!t||!this.auditLog||!Array.isArray(this.auditLog.entries))return;let n=this.auditLog.entries.findIndex(e=>String(e.request_id||``).trim()===t);if(n>=0){let t=this.auditLog.entries[n];this.auditLog.entries.splice(n,1,this.auditEntryWithLiveUsage(t,e)),this.auditLog.entries=[...this.auditLog.entries]}let r=this.auditThreadChildren;if(!r||typeof r!=`object`)return;let i=r,a=!1;Object.keys(r).forEach(n=>{let r=i[n],o=r&&Array.isArray(r.entries)?r.entries:[],s=o.findIndex(e=>String(e.request_id||``).trim()===t);if(s<0)return;let c=[...o];c.splice(s,1,this.auditEntryWithLiveUsage(o[s],e)),i={...i,[n]:{...r,entries:c}},a=!0}),a&&(this.auditThreadChildren=i)},auditEntryWithLiveUsage(e,t){let n=this.liveUsageStateAfter(e._usage_live_state,t._live_state||`usage.completed`),r=this.liveUsageEventFlushed({_live_state:n,_usage_flushed:e._usage_flushed||t._usage_flushed});return{...e,usage:this.liveUsageSummary(t,e.usage),_usage_live_state:n||`usage.completed`,_usage_live_pending:!r,_usage_flushed:r}},liveUsageSummary(e,t){let n=t&&typeof t==`object`&&!Array.isArray(t)?t:{},r=this.liveNumber(e.input_tokens,this.liveNumber(n.input_tokens,0)),i=this.liveNumber(e.output_tokens,this.liveNumber(n.output_tokens,0)),a=this.liveNumber(e.uncached_input_tokens,this.liveNumber(n.uncached_input_tokens,0)),o=this.liveNumber(e.cached_input_tokens,this.liveNumber(n.cached_input_tokens,0)),s=this.liveNumber(e.cache_write_input_tokens,this.liveNumber(n.cache_write_input_tokens,0));r>0&&a+o+s===0&&(a=r);let c=a+o+s||r,l=c+i||this.liveNumber(e.total_tokens,this.liveNumber(n.total_tokens,0)),u=this.liveNumber(e.cached_input_ratio,this.liveNumber(n.cached_input_ratio,c>0?o/c:0));return{entries:Math.max(1,this.liveNumber(e.entries,this.liveNumber(n.entries,1))),input_tokens:c,uncached_input_tokens:a,cached_input_tokens:o,cache_write_input_tokens:s,output_tokens:i,total_tokens:l,cached_input_ratio:u,estimated_cached_characters:this.liveNumber(e.estimated_cached_characters,this.liveNumber(n.estimated_cached_characters,o*4))}},liveNumber(e,t){let n=Number(e);return Number.isFinite(n)?n:t},auditEntryShouldFetchDetail(e){return!e||e._detail_loading||e._detail_loaded||this.auditEntryLiveDetailPending(e)?!1:this.auditEntryNeedsPersistedLiveDetail(e)||e.bodies_omitted?!0:!this.auditEntryHasDetailData(e)},auditEntryLiveDetailPending(e){if(!e||!e._live)return!1;let t=String(e._live_state||``).trim();return t===`audit.failed`||!e._audit_flushed&&t!==`audit.flushed`&&t!==`audit.detail`},auditEntryNeedsPersistedLiveDetail(e){return!!(e&&e._live&&!e._detail_loaded)},auditEntryHasDetailData(e){let t=e&&e.data;return!t||typeof t!=`object`?!1:t.request_headers!==void 0||t.response_headers!==void 0||t.request_body!==void 0||t.response_body!==void 0||t.request_body_too_big_to_handle!==void 0||t.response_body_too_big_to_handle!==void 0||t.user_agent!==void 0||t.api_key_hash!==void 0||t.temperature!==void 0||t.max_tokens!==void 0||t.error_message!==void 0||t.error_code!==void 0},clearAuditDetailLoading(e){if(!e)return;let t=String(e.id||``).trim(),n=String(e.request_id||``).trim(),r=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],i=r.find(e=>t&&String(e.id||``).trim()===t?!0:!!(n&&String(e.request_id||``).trim()===n)),a=i||e;a._detail_loading=!1,i&&(this.auditLog.entries=[...r])}}}var TE={"audit.started":10,"audit.updated":20,"audit.stream":20,"audit.completed":30,"audit.failed":40,"audit.flushed":40,"audit.detail":40},EE=new Set(Object.keys(TE));function DE(e){return String(e&&(e.id||e.request_id)||``).trim()}function OE(e,t){let n=e&&typeof e==`object`?e:{},r=t&&typeof t==`object`?t:{},i={...n,...r};r.data==null&&n.data!=null?i.data=n.data:jE(n.data)&&jE(r.data)&&(i.data={...n.data,...r.data});let a=String(n._live_state||``).trim(),o=String(r._live_state||``).trim();return(TE[a]||0)>(TE[o]||0)&&(i._live_state=a),n._audit_flushed&&(i._audit_flushed=!0),i._audit_flushed&&(i._live_pending=!1),n._detail_loaded&&!r._detail_loaded&&(i._detail_loaded=!0,i.bodies_omitted=!1),i.bodies_omitted&&jE(i.data)&&(i.data.request_body!==void 0||i.data.response_body!==void 0)&&(i.bodies_omitted=!1),i}function kE(e,t){let n=Number(t||0);return(Array.isArray(e)?e:[]).filter(e=>Number(e&&e.version||0)>n)}function AE(e){return EE.has(String(e&&e.eventType||``).trim())}function jE(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}var ME=200,NE=class{#e=j(N({entries:[],total:0,limit:25,offset:0}));get auditLog(){return R(this.#e)}set auditLog(e){M(this.#e,e,!0)}#t=j(N({entries:[],total:0,limit:50,offset:0}));get usageLog(){return R(this.#t)}set usageLog(e){M(this.#t,e,!0)}#n=j(N({}));get auditRecords(){return R(this.#n)}set auditRecords(e){M(this.#n,e,!0)}#r=j(N([]));get auditRecordChanges(){return R(this.#r)}set auditRecordChanges(e){M(this.#r,e,!0)}auditRecordVersion=0;auditRecordPins=new Set;#i=j(``);get auditSearch(){return R(this.#i)}set auditSearch(e){M(this.#i,e,!0)}#a=j(``);get auditMethod(){return R(this.#a)}set auditMethod(e){M(this.#a,e,!0)}#o=j(``);get auditStatusCode(){return R(this.#o)}set auditStatusCode(e){M(this.#o,e,!0)}#s=j(``);get auditStream(){return R(this.#s)}set auditStream(e){M(this.#s,e,!0)}#c=j(Ja(`gomodel_audit_group_sessions`,`true`)!==`false`);get auditGroupSessions(){return R(this.#c)}set auditGroupSessions(e){M(this.#c,e,!0)}#l=j(N({}));get auditThreadChildren(){return R(this.#l)}set auditThreadChildren(e){M(this.#l,e,!0)}#u=j(``);get usageLogSearch(){return R(this.#u)}set usageLogSearch(e){M(this.#u,e,!0)}#d=j(``);get usageFilterModel(){return R(this.#d)}set usageFilterModel(e){M(this.#d,e,!0)}#f=j(``);get usageFilterProvider(){return R(this.#f)}set usageFilterProvider(e){M(this.#f,e,!0)}#p=j(``);get usageFilterLabel(){return R(this.#p)}set usageFilterLabel(e){M(this.#p,e,!0)}#m=j(``);get usageFilterUserPath(){return R(this.#m)}set usageFilterUserPath(e){M(this.#m,e,!0)}#h=j(!1);get usageLogHideCached(){return R(this.#h)}set usageLogHideCached(e){M(this.#h,e,!0)}#g=j(!1);get liveLogsStreaming(){return R(this.#g)}set liveLogsStreaming(e){M(this.#g,e,!0)}liveLogsLastSeq=0;liveLogsReconnectAttempts=0;liveLogsReconnectTimer=null;liveLogsController=null;skippedLiveUsageByRequestId=null;fetchUsage=null;fetchAuditLog=null;isAuditEntryExpanded=null;noteLiveTokenUsage=null;upsertAuditRecord(e,t=``){let n=DE(e);if(!n)return e;let r=OE(this.auditRecords[n],e);return this.auditRecords={...this.auditRecords,[n]:r},this.pruneAuditRecords(),this.auditRecordVersion++,this.auditRecordChanges=[...this.auditRecordChanges,{version:this.auditRecordVersion,key:n,eventType:t}].slice(-512),r}upsertAuditRecords(e,t=``){return(Array.isArray(e)?e:[]).map(e=>this.upsertAuditRecord(e,t))}auditRecord(e){let t=typeof e==`string`?String(e).trim():DE(e);return t&&this.auditRecords[t]||null}cacheAuditRecord(e,t){return this.upsertAuditRecord(e,t)}pinAuditRecords(e){this.auditRecordPins=new Set((Array.isArray(e)?e:[]).map(String))}pruneAuditRecords(){let e=Object.keys(this.auditRecords);if(e.length<=ME)return;let t={...this.auditRecords},n=e.length-ME;for(let r of e){if(n<=0)break;this.auditRecordPins.has(r)||(delete t[r],n--)}this.auditRecords=t}get page(){return Bl.page}get customStartDate(){return Fd.customStartDate}get customEndDate(){return Fd.customEndDate}get followsToday(){return Fd.followsToday}liveLogsEnabled(){return bu.liveLogsVisible()}async startLiveLogs(){typeof fetch!=`function`||typeof ReadableStream>`u`||(await bu.ensureLoaded(),this.liveLogsEnabled()&&(this.stopLiveLogs(),this.liveLogsController=typeof AbortController==`function`?new AbortController:null,this.readLiveLogsStream(this.liveLogsController)))}stopLiveLogs(){this.liveLogsStreaming=!1,this.liveLogsReconnectTimer&&=(clearTimeout(this.liveLogsReconnectTimer),null),this.liveLogsController&&typeof this.liveLogsController.abort==`function`&&this.liveLogsController.abort(),this.liveLogsController=null}ensureLiveLogs(){this.liveLogsController||this.liveLogsReconnectTimer||this.startLiveLogs()}async readLiveLogsStream(e){let t={};e&&(t.signal=e.signal);let n=CE(this.liveLogsLastSeq),r=Y.generation;try{let i=await pu(n,t);if(i.status===401){if(Y.handleUnauthorized(r),r{this.liveLogsReconnectTimer=null,this.startLiveLogs()},t)}async fetchAuditEntryDetail(e){if(!this.auditEntryShouldFetchDetail(e))return;let t=String(e.id||``).trim();if(!t)return;e._detail_loading=!0;let n=e;try{let e=await hu(`/admin/audit/detail?log_id=`+encodeURIComponent(t),{label:`audit detail`});if(e.stale||!e.ok)return;n=this.mergeLiveAuditEntry(e.data,`audit.detail`)||n}catch(e){console.error(`Failed to fetch audit detail:`,e)}finally{this.clearAuditDetailLoading(n)}}};Object.assign(NE.prototype,wE());var PE=new NE;if(typeof window<`u`){let e=!1;window.addEventListener(`pagehide`,()=>{e=!!PE.liveLogsController,PE.stopLiveLogs()}),window.addEventListener(`pageshow`,t=>{t.persisted&&e&&PE.ensureLiveLogs()})}var FE=null;An(()=>{On(()=>{let e=Y.refreshTick;if(FE===null){FE=e;return}e!==FE&&(FE=e,wr(()=>{PE.stopLiveLogs(),PE.startLiveLogs()}))})});function IE(){return{total_requests:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,uncached_input_tokens:0,cached_input_tokens:0,cache_write_input_tokens:0,total_input_cost:null,total_output_cost:null,total_cost:null,rewrite_tokens_saved:0,rewrite_cost_saved:null}}function LE(){return{entries:[],total:0,limit:50,offset:0}}function RE(e,t){let n=[[`model`,e&&e.model],[`provider`,e&&e.provider],[`label`,e&&e.label],[`user_path`,e&&e.user_path]],r=``;for(let[e,i]of n)!i||e===t||(r+=`&`+e+`=`+encodeURIComponent(i));return r}function zE({limit:e,offset:t,hideCached:n,search:r}){let i=`&limit=`+e+`&offset=`+t;return i+=`&cache_mode=`+(n?`uncached`:`all`),r&&(i+=`&search=`+encodeURIComponent(r)),i}function BE(e,t){let n=new Set(e||[]);return t&&n.add(t),[...n].sort()}function VE(e,t){let n=Number(t&&t.total_requests||0)-Number(e&&e.total_requests||0);return Number.isFinite(n)&&n>0?n:0}function HE(e,t,n){let r=n?e:t,i=Number(r&&r.total_requests||0);return Number.isFinite(i)?i:0}function UE(e,t,n){let r=VE(e,t);return r<=0?``:n?cd(r)+` cached requests hidden`:cd(Number(e&&e.total_requests||0))+` to providers + `+cd(r)+` from cache`}function WE(e){let t=e||{};return t.total_input_cost===null||t.total_input_cost===void 0?``:ld(t.total_input_cost)+` input + `+ld(t.total_output_cost)+` output`}function GE(e){let t=Number(e&&e.rewrite_tokens_saved||0);return Number.isFinite(t)&&t>0?t:0}function KE(e){return GE(e)>0}function qE(e){let t=e||{};return t.rewrite_cost_saved===void 0?null:t.rewrite_cost_saved}function JE(){return`Estimated at 4 net characters removed per token`}function YE(e,t){return t===`costs`?ld(qE(e)):fd(GE(e))}function XE(e,t){let n=t===`costs`,r=n?Number(qE(e)):GE(e);if(!Number.isFinite(r)||r<=0)return null;let i=e&&(n?e.total_cost:e.total_input_tokens);if(i==null)return null;let a=Number(i);return!Number.isFinite(a)||a<0?null:r/(a+r)*100}function ZE(e,t){let n=XE(e,t);return n===null?``:(n<.1?`<0.1`:n.toFixed(1))+`% less`}function QE(e,t){let n=GE(e);if(n<=0)return``;let r=[cd(n)+` estimated prompt token-transmissions removed across provider requests`,JE(),`Savings are summed per provider request; resent conversation history is counted again`],i=qE(e);i!=null&&(r.push(ld(i)+` estimated gross input cost avoided`),r.push(`Prompt-cache changes caused by rewriting are not included`));let a=ZE(e,t);return a&&r.push(a+` than the same traffic without rewriting (`+(t===`costs`?`cost`:`tokens`)+`)`),r.join(` -`)}function $E(e){return String(e&&e.cost_source||``).trim()}function eD(e){let t=$E(e);return t===`openrouter_credits`||t===`xai_cost_in_usd_ticks`}function tD(e){switch($E(e)){case`openrouter_credits`:return`Costs from OpenRouter USD-based credits.`;case`xai_cost_in_usd_ticks`:return`Costs from xAI usage.cost_in_usd_ticks.`;default:return``}}function nD(e){return String(e&&e.cache_type||``).trim().toLowerCase()}function rD(e){let t=nD(e);return t===`exact`||t===`semantic`}function iD(e){let t=nD(e);return t===`exact`?`Exact`:t===`semantic`?`Semantic`:`-`}function aD(e,t){let n=t?String(t):``;return rD(e)?n?`Saved by cache — not charged -`+n:`Saved by cache — not charged`:n}function oD(e){let t=Number(e&&e.cached_input_ratio);return!Number.isFinite(t)||t<=0?0:Math.min(1,t)}function sD(e){return Number(e&&e.cached_input_tokens||0)>0}function cD(e){return sD(e)?(oD(e)*100).toFixed(1)+`%`:``}function lD(e){if(!sD(e))return``;let t=Number(e.cached_input_tokens||0),n=Number(e.uncached_input_tokens||0),r=Number(e.cache_write_input_tokens||0),i=t+n+r,a=[cd(t)+` cached / `+cd(i)+` input tokens`];return r>0&&a.push(cd(r)+` cache write`),a.join(` -`)}function uD(e){let t=[];if(tD(e)&&(t.push(tD(e)),t.push(``)),t.push(`Input: `+ld(e.input_cost)),t.push(`Output: `+ld(e.output_cost)),e.raw_data){t.push(``);for(let[n,r]of Object.entries(e.raw_data)){let e=n.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase()),i=r&&typeof r==`object`?JSON.stringify(r):cd(r);t.push(e+`: `+i)}}return t.join(` -`)}function dD(e){return Array.isArray(e&&e.labels)?e.labels:[]}function fD(e,t,n){return(e||[]).length>0||t?!0:(n||[]).some(e=>dD(e).length>0)}function pD(e){return e&&typeof e.total_tokens==`number`?e.total_tokens:(e&&e.input_tokens||0)+(e&&e.output_tokens||0)}function mD(e,t){return t?e.total_cost||0:pD(e)}function hD(e,t){return[...e||[]].sort((e,n)=>t?(n.total_cost||0)-(e.total_cost||0):mD(n,t)-mD(e,t))}function gD(e){let t=Array.isArray(e)?e:[];if(t.length===0)return!1;if(t.length!==1)return!0;let n=String(t[0]&&t[0].user_path||``).trim();return n!==``&&n!==`/`}function _D(e){return(e||`chart`)===`chart`||e===`stacked`}function vD(e,t,n){let r=hD(e,n),i=e=>Number(e)||0,a=e=>n?Math.min(i(e.cached_input_cost),i(e.input_cost)):i(e.cached_input_tokens),o=e=>n?i(e.input_cost)-a(e):i(e.uncached_input_tokens)+i(e.cached_input_tokens)+i(e.cache_write_input_tokens)>0?i(e.uncached_input_tokens)+i(e.cache_write_input_tokens):i(e.input_tokens),s=e=>i(n?e.output_cost:e.output_tokens),c=e=>n?0:i(e.local_cached_input_tokens),l=e=>n?0:i(e.local_cached_output_tokens),u=r.slice(0,10),d=r.slice(10),f=u.map(t),p=u.map(o),m=u.map(s),h=u.map(a),g=u.map(c),_=u.map(l);if(d.length>0){f.push(`Other`);let e=e=>d.reduce((t,n)=>t+e(n),0);p.push(e(o)),m.push(e(s)),h.push(e(a)),g.push(e(c)),_.push(e(l))}return{labels:f,inputs:p,outputs:m,prompts:h,localIns:g,localOuts:_}}function yD(e){return Math.max(200,e*32+72)}var bD=new class{#e=j(`tokens`);get usageMode(){return R(this.#e)}set usageMode(e){M(this.#e,e,!0)}get usageFilterModel(){return PE.usageFilterModel}set usageFilterModel(e){PE.usageFilterModel=e}get usageFilterProvider(){return PE.usageFilterProvider}set usageFilterProvider(e){PE.usageFilterProvider=e}get usageFilterLabel(){return PE.usageFilterLabel}set usageFilterLabel(e){PE.usageFilterLabel=e}get usageFilterUserPath(){return PE.usageFilterUserPath}set usageFilterUserPath(e){PE.usageFilterUserPath=e}#t=j(N({models:[],providers:[],labels:[]}));get usageFacetOptions(){return R(this.#t)}set usageFacetOptions(e){M(this.#t,e,!0)}#n=j(N(IE()));get usageSummary(){return R(this.#n)}set usageSummary(e){M(this.#n,e,!0)}#r=j(N(IE()));get usageSummaryAll(){return R(this.#r)}set usageSummaryAll(e){M(this.#r,e,!0)}#i=j(N([]));get modelUsage(){return R(this.#i)}set modelUsage(e){M(this.#i,e,!0)}#a=j(N([]));get userPathUsage(){return R(this.#a)}set userPathUsage(e){M(this.#a,e,!0)}#o=j(N([]));get labelUsage(){return R(this.#o)}set labelUsage(e){M(this.#o,e,!0)}get usageLog(){return PE.usageLog}set usageLog(e){PE.usageLog=e}get usageLogSearch(){return PE.usageLogSearch}set usageLogSearch(e){PE.usageLogSearch=e}get usageLogHideCached(){return PE.usageLogHideCached}set usageLogHideCached(e){PE.usageLogHideCached=e}#s=j(`chart`);get modelUsageView(){return R(this.#s)}set modelUsageView(e){M(this.#s,e,!0)}#c=j(`chart`);get userPathUsageView(){return R(this.#c)}set userPathUsageView(e){M(this.#c,e,!0)}#l=j(`chart`);get labelUsageView(){return R(this.#l)}set labelUsageView(e){M(this.#l,e,!0)}#u=j(!1);get summaryLoading(){return R(this.#u)}set summaryLoading(e){M(this.#u,e,!0)}#d=j(!1);get modelUsageLoading(){return R(this.#d)}set modelUsageLoading(e){M(this.#d,e,!0)}#f=j(!1);get userPathUsageLoading(){return R(this.#f)}set userPathUsageLoading(e){M(this.#f,e,!0)}#p=j(!1);get labelUsageLoading(){return R(this.#p)}set labelUsageLoading(e){M(this.#p,e,!0)}#m=j(!1);get usageLogLoading(){return R(this.#m)}set usageLogLoading(e){M(this.#m,e,!0)}#h={};#g(e){this.#h[e]&&this.#h[e].abort();let t=new AbortController;return this.#h[e]=t,t}#_(e,t){this.#h[e]===t&&(this.#h[e]=null)}filterQueryStr(e){return RE({model:this.usageFilterModel,provider:this.usageFilterProvider,label:this.usageFilterLabel,user_path:this.usageFilterUserPath},e)}onUsageFilterChanged(){this.fetchUsagePage()}toggleUsageLabelFilter(e){this.usageFilterLabel=this.usageFilterLabel===e?``:e,this.onUsageFilterChanged()}usageLabelChipTitle(e){return this.usageFilterLabel===e?`Clear label filter`:`Filter usage by "`+e+`"`}toggleUsageMode(e){this.usageMode=e,Bl.navigate(`usage`,e===`costs`?`costs`:null)}toggleUsageChartView(e,t){e===`model`&&(this.modelUsageView=t),e===`userPath`&&(this.userPathUsageView=t),e===`label`&&(this.labelUsageView=t)}usageFilterModelOptions(){return BE(this.usageFacetOptions.models,this.usageFilterModel)}usageFilterProviderOptions(){return BE(this.usageFacetOptions.providers,this.usageFilterProvider)}usageFilterLabelOptions(){return BE(this.usageFacetOptions.labels,this.usageFilterLabel)}async fetchUsagePage(){await bu.ensureLoaded();let e=[this.fetchUsagePageSummary(),this.fetchUsageFacetOptions(),this.fetchModelUsage(),this.fetchUserPathUsage(),this.fetchLabelUsage(),this.fetchUsageLog(!0)];Vd.cacheAnalyticsEnabled()&&e.push(Vd.fetchCacheOverview(this.filterQueryStr())),await Promise.all(e)}async fetchUsagePageSummary(){let e=this.#g(`summary`);this.summaryLoading=!0;try{let t=Fd.queryStr()+this.filterQueryStr(),[n,r]=await Promise.all([hu(`/admin/usage/summary?`+t+`&cache_mode=uncached`,{label:`usage page summary`,signal:e.signal}),hu(`/admin/usage/summary?`+t+`&cache_mode=all`,{label:`usage page summary (all)`,signal:e.signal})]);if(n.stale||r.stale||e.signal.aborted)return;if(!n.ok||!r.ok){this.usageSummary=IE(),this.usageSummaryAll=IE();return}this.usageSummary=n.data&&typeof n.data==`object`?n.data:IE(),this.usageSummaryAll=r.data&&typeof r.data==`object`?r.data:IE()}catch(e){if(_u(e))return;console.error(`Failed to fetch usage page summary:`,e),this.usageSummary=IE(),this.usageSummaryAll=IE()}finally{this.#_(`summary`,e),this.#h.summary===null&&(this.summaryLoading=!1)}}async fetchUsageFacetOptions(){let e=this.#g(`facets`);try{let t=async(t,n)=>{let r=await hu(t+`?`+Fd.queryStr()+this.filterQueryStr(n),{label:`usage facet options`,signal:e.signal});return r.stale?null:r.ok&&Array.isArray(r.data)?r.data:[]},n=t(`/admin/usage/models`,`model`),r=!this.usageFilterModel&&!this.usageFilterProvider,[i,a,o]=await Promise.all([n,r?n:t(`/admin/usage/models`,`provider`),t(`/admin/usage/labels`,`label`)]);if(e.signal.aborted||i===null||a===null||o===null)return;this.usageFacetOptions={models:i.map(e=>e&&e.model).filter(Boolean),providers:a.map(e=>vd(e)).filter(Boolean),labels:o.map(e=>e&&e.label).filter(Boolean)}}catch(e){if(_u(e))return;console.error(`Failed to fetch usage facet options:`,e),this.usageFacetOptions={models:[],providers:[],labels:[]}}finally{this.#_(`facets`,e)}}async#v(e,t,n,r,i){let a=this.#g(e);i(!0);try{let e=await hu(t+`?`+Fd.queryStr()+this.filterQueryStr(),{label:n,signal:a.signal});if(e.stale||a.signal.aborted)return;if(!e.ok){r([]);return}r(Array.isArray(e.data)?e.data:[])}catch(e){if(_u(e))return;console.error(`Failed to fetch `+n+`:`,e),r([])}finally{this.#_(e,a),this.#h[e]===null&&i(!1)}}fetchModelUsage(){return this.#v(`modelUsage`,`/admin/usage/models`,`usage models`,e=>this.modelUsage=e,e=>this.modelUsageLoading=e)}fetchUserPathUsage(){return this.#v(`userPathUsage`,`/admin/usage/user-paths`,`usage user paths`,e=>this.userPathUsage=e,e=>this.userPathUsageLoading=e)}fetchLabelUsage(){return this.#v(`labelUsage`,`/admin/usage/labels`,`usage labels`,e=>this.labelUsage=e,e=>this.labelUsageLoading=e)}async fetchUsageLog(e){let t=this.#g(`usageLog`);this.usageLogLoading=!0;try{e&&(this.usageLog.offset=0);let n=Fd.queryStr()+this.filterQueryStr();n+=zE({limit:this.usageLog.limit,offset:this.usageLog.offset,hideCached:this.usageLogHideCached,search:this.usageLogSearch});let r=await hu(`/admin/usage/log?`+n,{label:`usage log`,signal:t.signal});if(r.stale||t.signal.aborted)return;if(!r.ok){this.usageLog=LE();return}let i=r.data&&typeof r.data==`object`?r.data:LE();i.entries||=[],this.usageLog=i}catch(e){if(_u(e))return;console.error(`Failed to fetch usage log:`,e),this.usageLog=LE()}finally{this.#_(`usageLog`,t),this.#h.usageLog===null&&(this.usageLogLoading=!1)}}usageLogNextPage(){this.usageLog.offset+this.usageLog.limit0&&(this.usageLog.offset=Math.max(0,this.usageLog.offset-this.usageLog.limit),this.fetchUsageLog(!1))}};PE.fetchUsage=()=>{Bl.page===`usage`&&bD.fetchUsagePage()};var xD=B(`
`);function SD(e,t){O(t,!0);let n=q(t,`value`,15,``),r=q(t,`placeholder`,3,``),i=q(t,`label`,3,``),a=q(t,`id`,3,void 0),o=q(t,`oninput`,3,void 0),s=q(t,`class`,3,``);var c=xD(),l=P(c);J(l,{get icon(){return ll},class:`filter-input-icon`});var u=I(l,2);ea(u),D(c),L(()=>{G(c,1,Ni([`filter-input-wrap`,s()]),`svelte-30xz1k`),K(u,`id`,a()),K(u,`placeholder`,r()),K(u,`aria-label`,i())}),z(`input`,u,function(...e){o()?.apply(this,e)}),la(u,n),V(e,c),k()}Br([`input`]);function CD(e,t=300){let n=null,r=(...r)=>{clearTimeout(n),n=setTimeout(()=>{n=null,e(...r)},t)};return r.cancel=()=>{clearTimeout(n),n=null},r}var wD=B(``),TD=B(``),ED=B(`
`);function DD(e,t){O(t,!0);let n=CD(()=>bD.onUsageFilterChanged());On(()=>n.cancel);var r=ED(),i=P(r),a=P(i);a.value=a.__value=``,W(I(a),16,()=>bD.usageFilterModelOptions(),e=>e,(e,t)=>{var n=wD(),r=P(n,!0);D(n);var i={};L(()=>{H(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(i);var o=I(i,2),s=P(o);s.value=s.__value=``,W(I(s),16,()=>bD.usageFilterProviderOptions(),e=>e,(e,t)=>{var n=wD(),r=P(n,!0);D(n);var i={};L(()=>{H(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(o);var c=I(o,2),l=e=>{var t=TD(),n=P(t);n.value=n.__value=``,W(I(n),16,()=>bD.usageFilterLabelOptions(),e=>e,(e,t)=>{var n=wD(),r=P(n,!0);D(n);var i={};L(()=>{H(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(t),z(`change`,t,()=>bD.onUsageFilterChanged()),Ui(t,()=>bD.usageFilterLabel,e=>bD.usageFilterLabel=e),V(e,t)},u=A(()=>bD.usageFilterLabelOptions().length>0);U(c,e=>{R(u)&&e(l)}),SD(I(c,2),{class:`usage-page-filters-user-path`,placeholder:`User path /team/alpha`,label:`Filter by user path`,get oninput(){return n},get value(){return bD.usageFilterUserPath},set value(e){bD.usageFilterUserPath=e}}),D(r),z(`change`,i,()=>bD.onUsageFilterChanged()),Ui(i,()=>bD.usageFilterModel,e=>bD.usageFilterModel=e),z(`change`,o,()=>bD.onUsageFilterChanged()),Ui(o,()=>bD.usageFilterProvider,e=>bD.usageFilterProvider=e),V(e,r),k()}Br([`change`]);var OD=B(`
Cache Saved
Cache Hits
`,1);function kD(e,t){O(t,!0);var n=Xr(),r=F(n),i=e=>{var t=OD(),n=F(t),r=I(P(n),2),i=P(r,!0);D(r),D(n);var a=I(n,2),o=I(P(a),2),s=P(o,!0);D(o),D(a),L((e,t)=>{H(i,e),H(s,t)},[()=>ld(Vd.cacheOverview.summary.total_saved_cost),()=>cd(Vd.cacheOverview.summary.total_hits)]),V(e,t)},a=A(()=>Vd.cacheAnalyticsEnabled());U(r,e=>{R(a)&&e(i)}),V(e,n),k()}var AD=B(` `),jD=B(`
Pro Saved
`),MD=B(`
Total Requests
Estimated Cost
`);function ND(e,t){O(t,!0);let n=A(()=>KE(bD.usageSummary)),r=A(()=>YE(bD.usageSummary,bD.usageMode)),i=A(()=>ZE(bD.usageSummary,bD.usageMode));var a=MD(),o=P(a),s=I(P(o),2),c=P(s),l=e=>{wT(e,{size:18,label:`Loading usage summary`})},u=e=>{var t=Yr();L(e=>H(t,e),[()=>cd(HE(bD.usageSummary,bD.usageSummaryAll,bD.usageLogHideCached))]),V(e,t)};U(c,e=>{bD.summaryLoading?e(l):e(u,-1)}),D(s),D(o);var d=I(o,2),f=I(P(d),2),p=P(f),m=e=>{wT(e,{size:18,label:`Loading usage summary`})},h=e=>{var t=Yr();L(e=>H(t,e),[()=>ld(bD.usageSummary.total_cost)]),V(e,t)};U(p,e=>{bD.summaryLoading?e(m):e(h,-1)}),D(f),D(d);var g=I(d,2),_=e=>{var t=jD(),n=I(P(t),2),a=P(n),o=P(a,!0);D(a);var s=I(a,2),c=e=>{var t=AD(),n=P(t,!0);D(t),L(()=>H(n,R(i))),V(e,t)};U(s,e=>{R(i)&&e(c)}),D(n),D(t),L(e=>{K(n,`title`,e),H(o,R(r))},[()=>QE(bD.usageSummary,bD.usageMode)]),V(e,t)};U(g,e=>{R(n)&&e(_)}),kD(I(g,2),{}),D(a),L((e,t)=>{K(s,`title`,e),K(f,`title`,t)},[()=>UE(bD.usageSummary,bD.usageSummaryAll,bD.usageLogHideCached),()=>WE(bD.usageSummary)]),V(e,a),k()}function PD(e,t,n,r){let{stacked:i=!1,costs:a=!1,resolve:o=e=>e}=r||{},s=e=>a?`$`+Math.abs(e).toFixed(2):fd(Math.abs(e)),c=e=>a?`$`+Math.abs(e).toFixed(4):Math.abs(e).toLocaleString(),l=e=>e.map(e=>i?Math.abs(e):-Math.abs(e)),u=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderColor:`transparent`,borderWidth:0,borderRadius:4,maxBarThickness:22}),d=e=>(e||[]).some(e=>Math.abs(e)>0),f=[u(a?`Input Cost`:`Input Tokens`,l(n.inputs),o(`var(--token-input)`)),u(a?`Output Cost`:`Output Tokens`,n.outputs,o(`var(--token-output)`))];return d(n.prompts)&&f.push(u(a?`Prompt Cached Cost`:`Prompt Cached`,l(n.prompts),o(`var(--token-prompt)`))),!a&&d(n.localIns)&&f.push(u(`Locally Cached (Input)`,l(n.localIns),o(`var(--token-local)`))),!a&&d(n.localOuts)&&f.push(u(`Locally Cached (Output)`,n.localOuts,o(`var(--token-local)`))),{type:`bar`,data:{labels:t,datasets:f},options:{indexAxis:`y`,responsive:!0,maintainAspectRatio:!1,animation:{duration:0},layout:{padding:{top:8}},scales:{x:{stacked:!0,beginAtZero:!0,grid:i?{color:e.grid}:{color:t=>t.tick&&t.tick.value===0?e.text:e.grid},border:{display:!1},ticks:{color:e.text,font:zS(),callback:e=>s(e)}},y:{stacked:!0,grid:{display:!1},border:{display:!1},ticks:{color:e.text,font:zS(),autoSkip:!1}}},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:BS(e,{label:e=>e.dataset.label+`: `+c(e.parsed.x),footer:e=>{let t=0;return e.forEach(e=>{t+=Math.abs(Number(e.parsed.x))||0}),`Total: `+c(t)}})}}}}var FD=B(`
`),ID=B(`

`),LD=B(`

`,1),RD=B(`
`),zD=B(`Model Provider`,1),BD=B(`User Path`),VD=B(`Label Requests`,1),HD=B(` `,1),UD=B(` `),WD=B(` `,1),GD=B(` `),KD=B(`
Input TokensOutput TokensPrompt CachedLocal CachedTotal TokensInput CostOutput CostTotal Cost
`),qD=B(`
`),JD=B(`
`);function YD(e,t){O(t,!0);let n=e=>{var n=FD(),r=P(n);let a;var o=I(r,2);let s;var l=I(o,2);let u;D(n),L(()=>{K(n,`aria-label`,R(i).group),a=G(r,1,`chart-view-btn svelte-1kee4g8`,null,a,{active:R(c)===`chart`}),K(r,`aria-pressed`,R(c)===`chart`),K(r,`aria-label`,`Show ${R(i).noun??``} chart`),s=G(o,1,`chart-view-btn svelte-1kee4g8`,null,s,{active:R(c)===`stacked`}),K(o,`aria-pressed`,R(c)===`stacked`),K(o,`aria-label`,`Show ${R(i).noun??``} stacked chart`),u=G(l,1,`chart-view-btn svelte-1kee4g8`,null,u,{active:R(c)===`table`}),K(l,`aria-pressed`,R(c)===`table`),K(l,`aria-label`,`Show ${R(i).noun??``} table`)}),z(`click`,r,()=>bD.toggleUsageChartView(t.kind,`chart`)),z(`click`,o,()=>bD.toggleUsageChartView(t.kind,`stacked`)),z(`click`,l,()=>bD.toggleUsageChartView(t.kind,`table`)),V(e,n)},r={model:{group:`Model usage view`,noun:`model usage`,tokensTitle:`Token Usage by Model`,costsTitle:`Cost by Model`},userPath:{group:`User path usage view`,noun:`user path usage`,tokensTitle:`Usage by User Path`,costsTitle:`Cost by User Path`},label:{group:`Label usage view`,noun:`label usage`,tokensTitle:`Usage by Label`,costsTitle:`Cost by Label`}},i=A(()=>r[t.kind]),a=A(()=>t.kind===`model`?e=>bd(e):t.kind===`userPath`?e=>e.user_path||`/`:e=>e.label);function o(e){return t.kind===`model`?(e.provider_name||e.provider||`-`)+`/`+e.model:t.kind===`userPath`?e.user_path||`/`:e.label}let s=A(()=>t.kind===`model`?bD.modelUsage:t.kind===`userPath`?bD.userPathUsage:bD.labelUsage),c=A(()=>t.kind===`model`?bD.modelUsageView:t.kind===`userPath`?bD.userPathUsageView:bD.labelUsageView),l=A(()=>t.kind===`model`?bD.modelUsageLoading:t.kind===`userPath`?bD.userPathUsageLoading:bD.labelUsageLoading),u=A(()=>bD.usageMode===`costs`),d=A(()=>t.kind===`userPath`?gD(R(s)):R(s).length>0),f=A(()=>R(u)?R(i).costsTitle:R(i).tokensTitle),p=A(()=>vD(R(s),R(a),R(u))),m=A(()=>hD(R(s),R(u)));function h(){return _D(R(c))?PD(RS(),R(p).labels,R(p),{stacked:R(c)===`stacked`,costs:R(u),resolve:VS}):null}var g=Xr(),_=F(g),v=e=>{var r=qD(),a=P(r),s=P(a),u=e=>{YT(e,{copyId:`label-usage-help-copy`,label:`label usage help`,text:`One request can have multiple labels. Such a request counts once under each of its labels, so label rows can overlap and add up to more than the period totals.`,title:e=>{var t=ID(),n=P(t,!0);D(t),L(()=>H(n,R(f))),V(e,t)},extra:e=>{var t=Xr(),n=F(t),r=e=>{wT(e,{size:14,get label(){return`Loading ${R(i).noun??``}`}})};U(n,e=>{R(l)&&e(r)}),V(e,t)},$$slots:{title:!0,extra:!0}})},d=e=>{var t=LD(),n=F(t),r=P(n,!0);D(n);var a=I(n,2),o=e=>{wT(e,{size:14,get label(){return`Loading ${R(i).noun??``}`}})};U(a,e=>{R(l)&&e(o)}),L(()=>H(r,R(f))),V(e,t)};U(s,e=>{t.kind===`label`?e(u):e(d,-1)});var g=I(s,2);n(g),D(a);var _=I(a,2),v=e=>{var t=RD();let n;NS(P(t),{build:h}),D(t),L(e=>n=Bi(t,``,n,e),[()=>({height:`${yD(R(p).labels.length)??``}px`})]),V(e,t)},y=A(()=>_D(R(c))),b=e=>{var n=KD(),r=P(n),i=P(r),a=P(i),s=P(a),c=e=>{var t=zD();Ve(2),V(e,t)},l=e=>{V(e,BD())},u=e=>{var t=VD();Ve(2),V(e,t)};U(s,e=>{t.kind===`model`?e(c):t.kind===`userPath`?e(l,1):e(u,-1)}),Ve(8),D(a),D(i);var d=I(i);W(d,21,()=>R(m),e=>o(e),(e,n)=>{var r=GD(),i=P(r),a=e=>{var t=HD(),r=F(t),i=P(r,!0);D(r);var a=I(r,2),o=P(a),s=P(o,!0);D(o),D(a),L(e=>{H(i,R(n).model||`-`),H(s,e)},[()=>vd(R(n))||`-`]),V(e,t)},o=e=>{var t=UD(),r=P(t,!0);D(t),L(()=>H(r,R(n).user_path||`/`)),V(e,t)},s=e=>{var t=WD(),r=F(t),i=P(r);let a;var o=P(i,!0);D(i),D(r);var s=I(r,2),c=P(s,!0);D(s),L((e,t,r)=>{a=G(i,1,`usage-label-chip`,null,a,{active:bD.usageFilterLabel===R(n).label}),Bi(i,`--label-color: ${e??``}`),K(i,`title`,t),H(o,R(n).label),H(c,r)},[()=>WS(R(n).label),()=>bD.usageLabelChipTitle(R(n).label),()=>cd(R(n).requests)]),z(`click`,i,()=>bD.toggleUsageLabelFilter(R(n).label)),V(e,t)};U(i,e=>{t.kind===`model`?e(a):t.kind===`userPath`?e(o,1):e(s,-1)});var c=I(i),l=P(c,!0);D(c);var u=I(c),d=P(u,!0);D(u);var f=I(u),p=P(f,!0);D(f);var m=I(f),h=P(m,!0);D(m);var g=I(m),_=P(g,!0);D(g);var v=I(g),y=P(v,!0);D(v);var b=I(v),x=P(b,!0);D(b);var S=I(b),C=P(S,!0);D(S),D(r),L((e,t,n,r,i,a,o,s,c,u,g)=>{H(l,e),H(d,t),K(f,`title`,n),H(p,r),K(m,`title`,`${i??``} input + ${a??``} output`),H(h,o),H(_,s),H(y,c),H(x,u),H(C,g)},[()=>cd(R(n).input_tokens),()=>cd(R(n).output_tokens),()=>R(n).cached_input_cost==null?``:`~`+ld(R(n).cached_input_cost)+` at current cached-input pricing`,()=>cd(R(n).cached_input_tokens||0),()=>cd(R(n).local_cached_input_tokens||0),()=>cd(R(n).local_cached_output_tokens||0),()=>cd((R(n).local_cached_input_tokens||0)+(R(n).local_cached_output_tokens||0)),()=>cd(pD(R(n))),()=>ld(R(n).input_cost),()=>ld(R(n).output_cost),()=>ld(R(n).total_cost)]),V(e,r)}),D(d),D(r),D(n),V(e,n)};U(_,e=>{R(y)?e(v):e(b,-1)}),D(r),V(e,r)},y=e=>{var t=JD();wT(P(t),{size:20,get label(){return`Loading ${R(i).noun??``}`}}),D(t),V(e,t)};U(_,e=>{R(d)?e(v):R(l)&&e(y,1)}),V(e,g),k()}Br([`click`]);var XD=B(``);function ZD(e,t){O(t,!0);let n=q(t,`total`,3,0),r=q(t,`offset`,3,0),i=q(t,`limit`,3,25);var a=Xr(),o=F(a),s=e=>{var a=XD(),o=P(a),s=P(o,!0);D(o);var c=I(o,2),l=P(c),u=P(l,!0);D(l);var d=I(l,2),f=P(d,!0);D(d),D(c),D(a),L((e,t,a)=>{H(s,e),l.disabled=r()===0,H(u,t),d.disabled=r()+i()>=n(),H(f,a)},[()=>zs({start:$a(r()+1),end:$a(Math.min(r()+i(),n())),total:$a(n())}),()=>oo(),()=>io()]),z(`click`,l,()=>t.onprev?.()),z(`click`,d,()=>t.onnext?.()),V(e,a)};U(o,e=>{n()>0&&e(s)}),V(e,a),k()}Br([`click`]);var QD=(e,t=f)=>{var n=Xr(),r=F(n),i=e=>{var n=eO();W(n,20,()=>dD(t()),e=>e,(e,t)=>{var n=$D();let r;var i=P(n,!0);D(n),L((e,a)=>{r=G(n,1,`usage-label-chip`,null,r,{active:bD.usageFilterLabel===t}),Bi(n,`--label-color: ${e??``}`),K(n,`title`,a),H(i,t)},[()=>WS(t),()=>bD.usageLabelChipTitle(t)]),z(`click`,n,()=>bD.toggleUsageLabelFilter(t)),V(e,n)}),D(n),V(e,n)},a=A(()=>dD(t()).length>0),o=e=>{V(e,tO())};U(r,e=>{R(a)?e(i):e(o,-1)}),V(e,n)},$D=B(``),eO=B(`
`),tO=B(`-`),nO=B(`Labels`),rO=B(`Cost`),iO=B(``),aO=B(` `),oO=B(``),sO=B(` `),cO=B(` `),lO=B(`
TimestampProviderModelUser PathCacheProvider Cache
`),uO=B(`
`),dO=B(`
`),fO=B(`

Request Log

`);function pO(e,t){O(t,!0);let n=A(()=>bD.usageMode===`costs`),r=A(()=>fD(bD.labelUsage,bD.usageFilterLabel,bD.usageLog.entries)),i=CD(()=>bD.fetchUsageLog(!0));On(()=>i.cancel);var a=fO(),o=I(P(a),2),s=P(o);SD(P(s),{placeholder:`Search by request ID, model, provider...`,label:`Search by request ID, model, provider`,get oninput(){return i},get value(){return bD.usageLogSearch},set value(e){bD.usageLogSearch=e}}),D(s);var c=I(s,2),l=P(c),u=P(l);ea(u),Ve(2),D(l),D(c),D(o);var d=I(o,2),f=e=>{var t=lO(),i=P(t),a=P(i),o=P(a),s=I(P(o),4),c=e=>{V(e,nO())};U(s,e=>{R(r)&&e(c)});var l=I(s,3),u=P(l,!0);D(l);var d=I(l),f=P(d,!0);D(d);var p=I(d),m=P(p,!0);D(p);var h=I(p),g=e=>{V(e,rO())};U(h,e=>{R(n)||e(g)}),D(o),D(a);var _=I(a);W(_,21,()=>bD.usageLog.entries,e=>e.id,(e,t)=>{var i=cO();let a;var o=P(i),s=P(o,!0);D(o);var c=I(o),l=P(c),u=P(l,!0);D(l),D(c);var d=I(c),f=P(d,!0);D(d);var p=I(d),m=P(p,!0);D(p);var h=I(p),g=e=>{var n=iO();QD(P(n),()=>R(t)),D(n),V(e,n)};U(h,e=>{R(r)&&e(g)});var _=I(h),v=P(_,!0);D(_);var y=I(_),b=P(y),x=e=>{var n=aO(),r=P(n,!0);D(n),L(e=>H(r,e),[()=>cD(R(t))]),V(e,n)},S=A(()=>sD(R(t))),C=e=>{V(e,tO())};U(b,e=>{R(S)?e(x):e(C,-1)}),D(y);var w=I(y),T=P(w,!0);D(w);var E=I(w),ee=P(E,!0);D(E);var te=I(E),ne=P(te),re=P(ne,!0);D(ne);var ie=I(ne,2),ae=e=>{{let n=A(()=>tD(R(t)));J(e,{get icon(){return Rc},class:`cost-source-icon`,get title(){return R(n)}})}},oe=A(()=>R(n)&&eD(R(t)));U(ie,e=>{R(oe)&&e(ae)});var se=I(ie,2),ce=e=>{J(e,{get icon(){return Vc},class:`cache-savings-icon`})},le=A(()=>R(n)&&rD(R(t)));U(se,e=>{R(le)&&e(ce)});var ue=I(se,2),de=e=>{var n=oO();L(()=>K(n,`title`,R(t).costs_calculation_caveat)),V(e,n)};U(ue,e=>{R(n)&&R(t).costs_calculation_caveat&&e(de)}),D(te);var fe=I(te),pe=e=>{var n=sO(),r=P(n),i=P(r,!0);D(r);var a=I(r,2),o=e=>{{let n=A(()=>tD(R(t)));J(e,{get icon(){return Rc},class:`cost-source-icon`,get title(){return R(n)}})}},s=A(()=>eD(R(t)));U(a,e=>{R(s)&&e(o)});var c=I(a,2),l=e=>{J(e,{get icon(){return Vc},class:`cache-savings-icon`})},u=A(()=>rD(R(t)));U(c,e=>{R(u)&&e(l)});var d=I(c,2),f=e=>{var n=oO();L(()=>K(n,`title`,R(t).costs_calculation_caveat)),V(e,n)};U(d,e=>{R(t).costs_calculation_caveat&&e(f)}),D(n),L((e,t)=>{K(n,`title`,e),H(i,t)},[()=>aD(R(t),uD(R(t))),()=>ld(R(t).total_cost)]),V(e,n)};U(fe,e=>{R(n)||e(pe)}),D(i),L((e,n,r,c,l,d,p,h,g,_,b,x,S)=>{a=G(i,1,`svelte-hg4ill`,null,a,e),K(o,`title`,n),H(s,r),H(u,c),H(f,R(t).model),H(m,R(t).user_path||`-`),H(v,l),K(y,`title`,d),K(w,`title`,p),H(T,h),K(E,`title`,g),H(ee,_),K(te,`title`,b),K(ne,`title`,x),H(re,S)},[()=>({"usage-log-row-cached":rD(R(t))}),()=>gd(R(t).timestamp),()=>lu.formatTimestamp(R(t).timestamp),()=>vd(R(t))||`-`,()=>iD(R(t)),()=>lD(R(t)),()=>R(n)?cd(R(t).input_tokens)+` tokens`:``,()=>R(n)?ld(R(t).input_cost):cd(R(t).input_tokens),()=>R(n)?cd(R(t).output_tokens)+` tokens`:``,()=>R(n)?ld(R(t).output_cost):cd(R(t).output_tokens),()=>R(n)?aD(R(t),``):``,()=>R(n)?aD(R(t),cd(R(t).total_tokens)+` tokens -`+uD(R(t))):``,()=>R(n)?ld(R(t).total_cost):cd(R(t).total_tokens)]),V(e,i)}),D(_),D(i),D(t),L(()=>{H(u,R(n)?`Input Cost`:`Input`),H(f,R(n)?`Output Cost`:`Output`),H(m,R(n)?`Total Cost`:`Total`)}),V(e,t)},p=e=>{var t=uO();wT(P(t),{size:20,label:`Loading request log`}),D(t),V(e,t)},m=e=>{var t=dO();DT(P(t),{}),D(t),V(e,t)};U(d,e=>{bD.usageLog.entries.length>0?e(f):bD.usageLogLoading?e(p,1):e(m,-1)}),ZD(I(d,2),{get total(){return bD.usageLog.total},get offset(){return bD.usageLog.offset},get limit(){return bD.usageLog.limit},onprev:()=>bD.usageLogPrevPage(),onnext:()=>bD.usageLogNextPage()}),D(a),z(`change`,u,()=>bD.fetchUsageLog(!0)),ua(u,()=>bD.usageLogHideCached,e=>bD.usageLogHideCached=e),V(e,a),k()}Br([`click`,`change`]);var mO=B(`
`);function hO(e,t){O(t,!0);let n=`usage`;On(()=>{Y.refreshTick,Bl.page===n&&(bD.fetchUsagePage(),PE.ensureLiveLogs())}),On(()=>{Bl.page===n&&(bD.usageMode=Bl.sub===`costs`?`costs`:`tokens`)});var r=mO(),i=I(P(r),2),a=P(i);IS(a,{ariaLabel:`Usage mode`,options:[{value:`tokens`,label:`Tokens`},{value:`costs`,label:`Costs`}],get value(){return bD.usageMode},onchange:e=>bD.toggleUsageMode(e)}),rf(I(a,2),{onchange:()=>bD.fetchUsagePage()}),D(i);var o=I(i,2);DD(o,{});var s=I(o,2);ND(s,{});var c=I(s,2),l=P(c);YD(l,{kind:`model`});var u=I(l,2);YD(u,{kind:`userPath`}),YD(I(u,2),{kind:`label`}),D(c),pO(I(c,2),{}),D(r),V(e,r),k()}var gO=B(`
`);function _O(e,t){let n=q(t,`label`,3,`Loading...`),r=q(t,`class`,3,``);var i=gO(),a=I(P(i),2),o=P(a,!0);D(a),D(i),L(()=>{G(i,1,Ni([`loading-state`,r()]),`svelte-hzxv1d`),H(o,n())}),V(e,i)}var vO=B(``);function yO(e,t){let n=q(t,`label`,3,``),r=q(t,`class`,3,``),i=q(t,`disabled`,3,!1);var a=vO();mi(P(a),()=>t.children??f),D(a),L(()=>{G(a,1,Ni([`table-action-btn`,r()])),K(a,`aria-label`,n()),K(a,`title`,n()),a.disabled=i()}),z(`click`,a,function(...e){t.onclick?.apply(this,e)}),V(e,a)}Br([`click`]);async function bO(e,{label:t,errorFallback:n=`Unable to load ${t}.`,unavailableStatuses:r=[503],normalize:i=e=>Array.isArray(e)?e:[],options:a}){let o;try{o=await hu(e,{...a||{},label:t})}catch(e){return _u(e)||console.error(`Failed to fetch ${t}:`,e),{status:`error`,items:[],error:n,result:null}}return o.stale?{status:`stale`,items:[],error:``,result:o}:r.includes(o.status)?{status:`unavailable`,items:[],error:``,result:o}:o.ok?{status:`ok`,items:i(o.data),error:``,result:o}:{status:`error`,items:[],error:o.status===401?``:uu(o.data,n),result:o}}async function xO(e,t,n,{label:r,errorFallback:i=`Unable to ${r}.`,unavailableStatuses:a=[503],unavailableMessage:o=`This feature is unavailable on the gateway.`,options:s}){let c;try{c=await gu(e,t,n,{...s||{},label:r})}catch(e){return _u(e)||console.error(`Failed to ${r}:`,e),{status:`error`,error:i,result:null}}return c.stale?{status:`stale`,error:``,result:c}:a.includes(c.status)?{status:`unavailable`,error:o,result:c}:c.ok?{status:`ok`,error:``,result:c}:{status:`error`,error:c.status===401?`Authentication required.`:uu(c.data,i),result:c}}function SO(){return{scope:`user_path`,subject:`/`,period:`daily`,period_seconds:86400,amount:``,source:`manual`}}function CO(e){let t={user_path:{label:`User path`,chip:`user path`,fieldLabel:`User Path`,placeholder:`/team/alpha`},label:{label:`Label`,chip:`label`,fieldLabel:`Label`,placeholder:`Mobile-App-iOS`}};return t[e]||t.user_path}function wO(){return[`user_path`,`label`].map(e=>({value:e,label:CO(e).label}))}function TO(e){return String(e&&e.scope||``).trim()||`user_path`}function EO(e){return String(e&&e.subject||``).trim()||String(e&&e.user_path||``)}function DO(e){return CO(TO(e)).chip}function OO(e){return TO(e)===`label`?`budget-label`:`budget-user-path`}function kO(e){return CO(String(e&&e.scope||``)).fieldLabel}function AO(e){return CO(String(e&&e.scope||``)).placeholder}function jO(e){e.subject=String(e&&e.scope||``)===`user_path`?`/`:``}function MO(){return[{value:`hourly`,label:`Hourly`},{value:`daily`,label:`Daily`},{value:`weekly`,label:`Weekly`},{value:`monthly`,label:`Monthly`},{value:`custom`,label:`Custom seconds`}]}function NO(e){switch(String(e||``).trim().toLowerCase()){case`hourly`:return 3600;case`daily`:return 86400;case`weekly`:return 604800;case`monthly`:return 2592e3;default:return 0}}function PO(e){switch(Number(e||0)){case 3600:return`hourly`;case 86400:return`daily`;case 604800:return`weekly`;case 2592e3:return`monthly`;default:return`custom`}}function FO(e){return TO(e)+`:`+EO(e)+`:`+String(e&&e.period_seconds||``)}function IO(e,t){if(!t||!Array.isArray(e))return null;let n=FO(t);return e.find(e=>FO(e)===n)||null}function LO(e){let t=String(e||``).trim();if(!t)return`User path is required.`;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`);for(let e of n){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function RO(e){if(LO(e))return``;let t=String(e||``).trim(),n=(t.startsWith(`/`)?t:`/`+t).split(`/`),r=[];for(let e of n){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function zO(e){return`/`+String(e||``).trimStart().replace(/^\/+/,``)}function BO(e){return Array.isArray(e)?e:e&&Array.isArray(e.budgets)?e.budgets:[]}function VO(e){let t=Number(e&&e.period_seconds||0);return[EO(e),DO(e),ik(e),PO(t),t?String(t)+`s`:``,t?String(t)+` seconds`:``].join(` `).toLowerCase()}var HO={user_path:0,label:1};function UO(e,t){let n=Array.isArray(e)?e.slice():[],r=String(t||`subject`);return n.sort((e,t)=>{let n=(HO[TO(e)]||0)-(HO[TO(t)]||0),i=EO(e).localeCompare(EO(t)),a=Number(t&&t.period_seconds||0)-Number(e&&e.period_seconds||0);return r===`period`?a||n||i:n||i||a}),n}function WO(e,t,n){let r=Array.isArray(e)?e:[],i=String(t||``).trim().toLowerCase();return UO(i?r.filter(e=>VO(e).includes(i)):r.slice(),n)}function GO(e){let t=e||{},n=TO(t),r=String(t.subject||``).trim();if(n===`user_path`){let e=LO(r);if(e)return{payload:null,error:e}}else if(!r)return{payload:null,error:`Label is required.`};let i=Number(t.amount);if(!Number.isFinite(i)||i<=0)return{payload:null,error:`Amount must be greater than 0.`};let a=String(t.period||``).trim(),o=NO(a);return a===`custom`&&(o=Number(t.period_seconds)),!Number.isFinite(o)||o<=0?{payload:null,error:`Period seconds must be greater than 0.`}:{payload:{scope:n,subject:n===`user_path`?RO(r):r,period_seconds:Math.trunc(o),amount:i,source:String(t.source||`manual`).trim()||`manual`},error:``}}function KO(e){return{scope:TO(e),subject:EO(e),budget_key:{period_seconds:e.period_seconds},amount:e.amount}}function qO(e){return{scope:TO(e),subject:EO(e),budget_key:{period_seconds:e.period_seconds}}}function JO(e){return{scope:TO(e),subject:EO(e),period_seconds:e.period_seconds}}function YO(e){return ld(e)}function XO(e,t){let n=e||{},r=t||{};return`A budget for "`+((EO(n)||EO(r))+` `+ik({period_seconds:n.period_seconds||r.period_seconds,period_label:r.period_label}))+`" already exists. Saving will override the current `+YO(r.amount)+` limit with `+YO(n.amount)+`.`}function ZO(e){let t=Number(e);return!Number.isFinite(t)||t<0?0:t}function QO(e,t){let n=ZO(e);return Math.round((t?Math.min(n,1):n)*1e3)/10}function $O(e){return ZO(e&&e.usage_ratio)}function ek(e){return QO($O(e),!0)}function tk(e){return QO(e&&e.period_ratio,!0)}function nk(e){return QO($O(e),!1).toFixed(1).replace(/\.0$/,``)+`%`}function rk(e){return tk(e).toFixed(1).replace(/\.0$/,``)+`%`}function ik(e){let t=Number(e&&e.period_seconds||0);switch(t){case 3600:return`Hourly`;case 86400:return`Daily`;case 604800:return`Weekly`;case 2592e3:return`Monthly`;default:{let n=String(e&&e.period_label||``).trim();return n?`Custom `+n:`Custom `+String(t||``)+`s`}}}function ak(e){switch(Number(e&&e.period_seconds||0)){case 3600:return`budget-period-label-hourly`;case 86400:return`budget-period-label-daily`;case 604800:return`budget-period-label-weekly`;case 2592e3:return`budget-period-label-monthly`;default:return`budget-period-label-custom`}}function ok(e){return ak(e).replace(`budget-period-label-`,`budget-bar-fill-period-`)}function sk(e){return ak(e).replace(`budget-period-label-`,`budget-bar-track-period-`)}function ck(e){switch(Number(e&&e.period_seconds||0)){case 3600:return zc;case 86400:return vl;case 604800:return Oc;case 2592e3:return kc;default:return fl}}function lk(e){let t=Math.max(0,Math.trunc(Number(e||0)));return t+` `+(t===1?`second`:`seconds`)}function uk(e){let t=Number(e&&e.period_seconds||0);switch(t){case 3600:return`1 hour`;case 86400:return`1 day`;case 604800:return`1 week`;case 2592e3:return`1 month`;default:return lk(t)}}function dk(e){return String(e&&e.source||``).trim()||`manual`}function fk(e){let t=dk(e).toLowerCase();return t===`manual`?`Created from the dashboard.`:t===`config`?`Loaded from configuration.`:`Budget source: `+t}function pk(e){let t=Number(e&&e.remaining);return Number.isFinite(t)?t<0?ld(Math.abs(t))+` over`:ld(t)+` remaining`:``}var X=new class{#e=j(N([]));get budgets(){return R(this.#e)}set budgets(e){M(this.#e,e,!0)}#t=j(!0);get budgetsAvailable(){return R(this.#t)}set budgetsAvailable(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}#r=j(``);get filter(){return R(this.#r)}set filter(e){M(this.#r,e,!0)}#i=j(`subject`);get sortBy(){return R(this.#i)}set sortBy(e){M(this.#i,e,!0)}#a=j(``);get error(){return R(this.#a)}set error(e){M(this.#a,e,!0)}#o=j(!1);get formOpen(){return R(this.#o)}set formOpen(e){M(this.#o,e,!0)}#s=j(!1);get formSubmitting(){return R(this.#s)}set formSubmitting(e){M(this.#s,e,!0)}#c=j(``);get formError(){return R(this.#c)}set formError(e){M(this.#c,e,!0)}#l=j(!1);get editing(){return R(this.#l)}set editing(e){M(this.#l,e,!0)}#u=j(N(SO()));get form(){return R(this.#u)}set form(e){M(this.#u,e,!0)}#d=j(!1);get overrideDialogOpen(){return R(this.#d)}set overrideDialogOpen(e){M(this.#d,e,!0)}#f=j(null);get overridePendingPayload(){return R(this.#f)}set overridePendingPayload(e){M(this.#f,e,!0)}#p=j(null);get overrideExistingBudget(){return R(this.#p)}set overrideExistingBudget(e){M(this.#p,e,!0)}#m=j(``);get resettingKey(){return R(this.#m)}set resettingKey(e){M(this.#m,e,!0)}#h=j(``);get deletingKey(){return R(this.#h)}set deletingKey(e){M(this.#h,e,!0)}#g=j(!1);get resetAllLoading(){return R(this.#g)}set resetAllLoading(e){M(this.#g,e,!0)}#_=null;managementEnabled(){return bu.budgetsVisible()}filteredBudgets(){return WO(this.budgets,this.filter,this.sortBy)}async fetchBudgetsPage(){if(await bu.ensureLoaded(),!this.managementEnabled()){this.budgets=[],this.budgetsAvailable=!1,this.error=``;return}return this.#_||=this.fetchBudgets().finally(()=>{this.#_=null}),this.#_}async fetchBudgets(){this.loading=!0,this.error=``;let e=await bO(`/admin/budgets`,{label:`budgets`,errorFallback:`Unable to load budgets.`,normalize:BO});if(this.loading=!1,e.status!==`stale`){if(e.status===`unavailable`){this.budgetsAvailable=!1,this.budgets=[];return}if(!e.result){this.budgets=[],this.error=e.error;return}if(this.budgetsAvailable=!0,e.status===`error`){this.error=e.error;return}this.budgets=e.items}}openForm(e){if(this.editing=!!e,this.formError=``,e){let t=Number(e.period_seconds||0);this.form={scope:TO(e),subject:EO(e),period:PO(t),period_seconds:t,amount:String(e.amount||``),source:String(e.source||`manual`)}}else this.form=SO();this.formOpen=!0}syncPeriodSeconds(){let e=NO(String(this.form.period||``).trim());e>0&&(this.form.period_seconds=e)}setFormSubject(e){this.form.subject=this.form.scope===`label`?String(e??``):zO(e)}syncScope(){jO(this.form)}closeForm(){this.closeOverrideDialog(),this.formOpen=!1,this.formSubmitting=!1,this.formError=``,this.editing=!1,this.form=SO()}async submitForm(){if(this.formSubmitting)return;let{payload:e,error:t}=GO(this.form);if(!e){this.formError=t;return}if(!this.editing){let t=IO(this.budgets,e);if(t){this.openOverrideDialog(t,e);return}}await this.saveBudgetPayload(e)}async saveBudgetPayload(e){if(this.formSubmitting||!e)return;this.formSubmitting=!0,this.formError=``;let t=await xO(`/admin/budgets`,`PUT`,KO(e),{label:`save budget`,errorFallback:`Unable to save budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.formSubmitting=!1,t.status!==`stale`){if(t.status===`unavailable`){this.budgetsAvailable=!1,this.formError=t.error;return}if(t.status===`error`){this.formError=t.error;return}this.closeForm(),ed.success(`Budget saved.`),this.fetchBudgets()}}openOverrideDialog(e,t){this.overrideExistingBudget=e||null,this.overridePendingPayload=t||null,this.overrideDialogOpen=!0}closeOverrideDialog(){this.overrideDialogOpen=!1,this.overridePendingPayload=null,this.overrideExistingBudget=null}async confirmOverride(){if(!this.overridePendingPayload){this.closeOverrideDialog();return}let e=this.overridePendingPayload;this.closeOverrideDialog(),await this.saveBudgetPayload(e)}async resetBudget(e){if(!e)return;let t=FO(e);if(this.resettingKey===t)return;let n=EO(e)+` `+ik(e);if(!confirm(`Reset budget "`+n+`"?`))return;this.resettingKey=t;let r=await xO(`/admin/budgets/reset-one`,`POST`,JO(e),{label:`reset budget`,errorFallback:`Unable to reset budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.resettingKey=``,r.status!==`stale`){if(r.status===`unavailable`){this.budgetsAvailable=!1,ed.error(r.error);return}if(r.status===`error`){ed.error(r.error);return}ed.success(`Budget reset.`),this.fetchBudgets()}}async deleteBudget(e){if(!e)return;let t=FO(e);if(this.deletingKey===t)return;let n=EO(e)+` `+ik(e);if(!confirm(`Delete budget "`+n+`"? This cannot be undone.`))return;this.deletingKey=t;let r=await xO(`/admin/budgets`,`DELETE`,qO(e),{label:`delete budget`,errorFallback:`Unable to delete budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.deletingKey=``,r.status!==`stale`){if(r.status===`unavailable`){this.budgetsAvailable=!1,ed.error(r.error);return}if(r.status===`error`){ed.error(r.error);return}this.budgets=BO(r.result.data),ed.success(`Budget deleted.`)}}openResetDialog(){zu.open({title:`Reset Budgets`,titleId:`budgetResetDialogTitle`,inputId:`budget-reset-confirmation`,requiredText:`reset`,confirmLabel:`Reset All Budgets`,icon:sl,dialogClass:`budget-reset-dialog`,onConfirm:()=>this.resetAllBudgets()})}async resetAllBudgets(){if(this.resetAllLoading)return;this.resetAllLoading=!0;let e=await xO(`/admin/budgets/reset`,`POST`,{confirmation:`reset`},{label:`reset budgets`,errorFallback:`Unable to reset budgets.`,unavailableStatuses:[]});if(this.resetAllLoading=!1,e.status!==`stale`){if(e.status!==`ok`){zu.error=e.error;return}zu.close(),ed.success(`Budgets reset.`),Bl.page===`budgets`&&this.fetchBudgets()}}},mk=B(` Edit`,1),hk=B(` `,1),gk=B(`
Usage
Period
`),_k=B(`
`);function vk(e,t){O(t,!0);let n=q(t,`budgets`,19,()=>[]);function r(e){if(!e)return``;let t=lu.formatTimestamp(e);return!t||t===`-`?``:t+` `+lu.effectiveTimeZoneLabel()}var i=_k();W(i,21,n,e=>FO(e),(e,t)=>{var n=gk(),i=P(n),a=P(i),o=P(a),s=P(o),c=e=>{J(e,{get icon(){return yl},class:`budget-scope-icon`})},l=A(()=>TO(R(t))===`label`);U(s,e=>{R(l)&&e(c)});var u=I(s);D(o);var d=I(o,2),f=P(d),p=P(f);{let e=A(()=>ck(R(t)));J(p,{get icon(){return R(e)},class:`budget-period-icon`})}var m=I(p,2),h=P(m,!0);D(m),D(f),D(d);var g=I(d,2),_=P(g),v=P(_),y=P(v,!0);D(v),D(_);var b=I(_,2),x=P(b);yO(x,{label:`Edit budget`,class:`budget-action-btn`,onclick:()=>X.openForm(R(t)),children:(e,t)=>{var n=mk();J(F(n),{get icon(){return nl},class:`budget-action-icon`}),Ve(2),V(e,n)},$$slots:{default:!0}});var S=I(x,2);{let e=A(()=>X.resettingKey===FO(R(t))?`Resetting budget`:`Reset budget`),n=A(()=>X.resettingKey===FO(R(t)));yO(S,{get label(){return R(e)},class:`budget-action-btn budget-action-btn-warning`,onclick:()=>X.resetBudget(R(t)),get disabled(){return R(n)},children:(e,n)=>{var r=hk(),i=F(r);J(i,{get icon(){return sl},class:`budget-action-icon`});var a=I(i,2),o=P(a,!0);D(a),L(e=>H(o,e),[()=>X.resettingKey===FO(R(t))?`Resetting`:`Reset`]),V(e,r)},$$slots:{default:!0}})}var C=I(S,2);{let e=A(()=>X.deletingKey===FO(R(t))?`Deleting budget`:`Delete budget`),n=A(()=>X.deletingKey===FO(R(t)));yO(C,{get label(){return R(e)},class:`table-action-btn-danger budget-action-btn`,onclick:()=>X.deleteBudget(R(t)),get disabled(){return R(n)},children:(e,n)=>{var r=hk(),i=F(r);J(i,{get icon(){return xl},class:`budget-action-icon`});var a=I(i,2),o=P(a,!0);D(a),L(e=>H(o,e),[()=>X.deletingKey===FO(R(t))?`Deleting`:`Delete`]),V(e,r)},$$slots:{default:!0}})}D(b),D(g),D(a);var w=I(a,2),T=P(w),E=P(T),ee=I(P(E),2),te=P(ee,!0);D(ee),D(E);var ne=I(E,2),re=P(ne);let ie;var ae=I(re,2),oe=P(ae),se=P(oe,!0);D(oe);var ce=I(oe,2),le=P(ce,!0);D(ce),D(ae);var ue=I(ae,2),de=P(ue),fe=P(de,!0);D(de);var pe=I(de,2),me=P(pe,!0);D(pe),D(ue),D(ne),D(T);var he=I(T,2),ge=P(he),_e=I(P(ge),2),ve=P(_e,!0);D(_e),D(ge);var ye=I(ge,2),be=P(ye),xe=I(be,2),Se=P(xe),Ce=P(Se,!0);D(Se);var we=I(Se,2),Te=P(we,!0);D(we);var Ee=I(we,2),De=P(Ee,!0);D(Ee),D(xe);var Oe=I(xe,2),ke=P(Oe),Ae=P(ke,!0);D(ke);var je=I(ke,2),Me=P(je,!0);D(je);var Ne=I(je,2),Pe=P(Ne,!0);D(Ne),D(Oe),D(ye),D(he),D(w),D(i),D(n),L((e,t,n,r,i,a,s,c,l,d,p,m,g,_,b,x,S,C,w,T,E,ee,ae,oe,ce,ue,de,pe,he,ge)=>{G(o,1,`budget-scope-value ${e??``}`,`svelte-1jm56wo`),Bi(o,t),K(o,`title`,n),H(u,` ${r??``}`),G(f,1,`budget-period-label ${i??``}`,`svelte-1jm56wo`),H(h,a),K(v,`title`,s),H(y,c),H(te,l),K(ne,`aria-valuenow`,d),K(ne,`aria-label`,p),Bi(ne,`--budget-progress: ${m??``}%`),ie=G(re,1,`budget-bar-fill budget-bar-fill-usage`,null,ie,g),H(se,_),H(le,b),H(fe,x),H(me,S),H(ve,C),G(ye,1,`budget-bar-track ${w??``}`,`svelte-1jm56wo`),K(ye,`aria-valuenow`,T),Bi(ye,`--budget-progress: ${E??``}%`),G(be,1,`budget-bar-fill budget-bar-fill-period ${ee??``}`,`svelte-1jm56wo`),K(Se,`title`,ae),H(Ce,oe),H(Te,ce),K(Ee,`title`,ue),H(De,de),H(Ae,pe),H(Me,he),H(Pe,ge)},[()=>OO(R(t)),()=>TO(R(t))===`label`?`--label-color: `+WS(EO(R(t))):void 0,()=>DO(R(t))+`: `+EO(R(t)),()=>EO(R(t)),()=>ak(R(t)),()=>ik(R(t)),()=>fk(R(t)),()=>dk(R(t)),()=>nk(R(t)),()=>ek(R(t)),()=>`Budget usage: `+ld(R(t).spent)+` of `+ld(R(t).amount)+`, `+pk(R(t)),()=>ek(R(t)),()=>({"budget-bar-fill-danger":$O(R(t))>=1}),()=>ld(R(t).spent)+` of `+ld(R(t).amount),()=>pk(R(t)),()=>ld(R(t).spent)+` of `+ld(R(t).amount),()=>pk(R(t)),()=>rk(R(t)),()=>sk(R(t)),()=>tk(R(t)),()=>tk(R(t)),()=>ok(R(t)),()=>r(R(t).period_start),()=>lu.formatTimestamp(R(t).period_start),()=>uk(R(t)),()=>r(R(t).period_end),()=>lu.formatTimestamp(R(t).period_end),()=>lu.formatTimestamp(R(t).period_start),()=>uk(R(t)),()=>lu.formatTimestamp(R(t).period_end)]),V(e,n)}),D(i),V(e,i),k()}var yk=B(`

`,1),bk=B(``),xk=B(``),Sk=B(`
`);function Ck(e,t){O(t,!0);let n=q(t,`open`,3,!1),r=q(t,`title`,3,``),i=q(t,`ariaLabel`,3,``),a=q(t,`error`,3,``),o=q(t,`submitting`,3,!1),s=q(t,`submitDisabled`,3,!1),c=q(t,`submitLabel`,3,`Save`),l=q(t,`submittingLabel`,3,`Saving...`),u=q(t,`submitIcon`,3,cl),d=q(t,`cancel`,3,!0),p=q(t,`dialogClass`,3,``),m=q(t,`novalidate`,3,!1),h=q(t,`canClose`,3,()=>!0);function g(){Y.dialogOpen||h()()&&t.onclose?.()}Nu(e,{get open(){return n()},variant:`editor`,onclose:g,children:(e,n)=>{var h=Sk(),g=P(h),_=P(g),v=P(_),y=P(v),b=e=>{var n=Xr();mi(F(n),()=>t.header),V(e,n)},x=e=>{var n=yk(),i=F(n),a=P(i,!0);D(i);var o=I(i,2),s=e=>{var n=Xr();mi(F(n),()=>t.headerHint),V(e,n)};U(o,e=>{t.headerHint&&e(s)}),L(()=>H(a,r())),V(e,n)};U(y,e=>{t.header?e(b):e(x,-1)}),D(v);var S=I(v,2);{let e=A(()=>`Close `+(i()||r()).toLowerCase());ku(S,{get label(){return R(e)},onclick:()=>t.onclose?.()})}D(_);var C=I(_,2);mi(C,()=>t.children??f);var w=I(C,2),T=e=>{var t=bk(),n=P(t,!0);D(t),L(()=>H(n,a())),V(e,t)};U(w,e=>{a()&&e(T)});var E=I(w,2),ee=P(E),te=e=>{var n=xk();z(`click`,n,()=>t.onclose?.()),V(e,n)};U(ee,e=>{d()&&e(te)});var ne=I(ee,2),re=e=>{var n=Xr();mi(F(n),()=>t.extraActions),V(e,n)};U(ne,e=>{t.extraActions&&e(re)});var ie=I(ne,2),ae=P(ie);J(ae,{get icon(){return u()},class:`form-action-icon`});var oe=I(ae,2),se=P(oe,!0);D(oe),D(ie),D(E),D(g),D(h),L(()=>{G(h,1,Ni([`model-editor`,p()])),K(h,`aria-label`,i()||r()),g.noValidate=m(),ie.disabled=o()||s(),H(se,o()?l():c())}),zr(`submit`,g,e=>{e.preventDefault(),t.onsubmit?.()}),V(e,h)},$$slots:{default:!0}}),k()}Br([`click`]);var wk=B(`
`);function Tk(e,t){let n=q(t,`label`,3,``);var r=wk(),i=P(r),a=P(i,!0);D(i),mi(I(i,2),()=>t.children??f),D(r),L(()=>{K(i,`for`,t.id),H(a,n())}),V(e,r)}var Ek=B(``),Dk=B(``),Ok=B(``),kk=B(``),Ak=B(``),jk=B(``),Mk=B(`

Editing a budget updates its limit only. Use Reset to start a new - budget period.

`),Nk=B(`
`,1),Pk=B(``),Fk=B(` `,1);function Ik(e,t){O(t,!0);function n(e){X.setFormSubject(e.target.value),e.target.value=X.form.subject}var r=Fk(),i=F(r);{let e=A(()=>X.editing?`Edit Budget`:`Create Budget`);Ck(i,{get open(){return X.formOpen},get title(){return R(e)},ariaLabel:`Budget editor`,get error(){return X.formError},get submitting(){return X.formSubmitting},submitLabel:`Save Budget`,dialogClass:`budget-editor`,canClose:()=>!X.overrideDialogOpen,onclose:()=>X.closeForm(),onsubmit:()=>X.submitForm(),children:(e,t)=>{var r=Nk(),i=F(r),a=P(i);Tk(a,{id:`budget-scope`,label:`Scope`,children:(e,t)=>{var n=Dk();W(n,21,wO,e=>e.value,(e,t)=>{var n=Ek(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(n),L(()=>n.disabled=X.editing),z(`change`,n,()=>X.syncScope()),Ui(n,()=>X.form.scope,e=>X.form.scope=e),V(e,n)},$$slots:{default:!0}});var o=I(a,2);{let e=A(()=>kO(X.form));Tk(o,{id:`budget-subject`,get label(){return R(e)},children:(e,t)=>{var r=Ok();ea(r),L(e=>{K(r,`placeholder`,e),ta(r,X.form.subject),r.disabled=X.editing,K(r,`data-modal-autofocus`,!X.editing||void 0)},[()=>AO(X.form)]),z(`input`,r,n),V(e,r)},$$slots:{default:!0}})}var s=I(o,2);Tk(s,{id:`budget-period`,label:`Period`,children:(e,t)=>{var n=kk();W(n,21,MO,e=>e.value,(e,t)=>{var n=Ek(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(n),L(()=>n.disabled=X.editing),z(`change`,n,()=>X.syncPeriodSeconds()),Ui(n,()=>X.form.period,e=>X.form.period=e),V(e,n)},$$slots:{default:!0}});var c=I(s,2),l=e=>{Tk(e,{id:`budget-period-seconds`,label:`Period Seconds`,children:(e,t)=>{var n=Ak();ea(n),L(()=>n.disabled=X.editing),la(n,()=>X.form.period_seconds,e=>X.form.period_seconds=e),V(e,n)},$$slots:{default:!0}})};U(c,e=>{X.form.period===`custom`&&e(l)}),Tk(I(c,2),{id:`budget-amount`,label:`Amount`,children:(e,t)=>{var n=jk();ea(n),L(()=>K(n,`data-modal-autofocus`,X.editing||void 0)),la(n,()=>X.form.amount,e=>X.form.amount=e),V(e,n)},$$slots:{default:!0}}),D(i);var u=I(i,2),d=e=>{V(e,Mk())};U(u,e=>{X.editing&&e(d)}),V(e,r)},$$slots:{default:!0}})}Nu(I(i,2),{get open(){return X.overrideDialogOpen},variant:`auth`,onclose:()=>X.closeOverrideDialog(),children:(e,t)=>{var n=Pk(),r=P(n);ku(I(P(r),2),{label:`Close budget override dialog`,onclick:()=>X.closeOverrideDialog(),class:`auth-dialog-close`,iconClass:``}),D(r);var i=I(r,2),a=P(i),o=P(a,!0);D(a);var s=I(a,2),c=P(s),l=I(c,2),u=P(l);J(u,{get icon(){return cl},class:`form-action-icon`});var d=I(u,2),f=P(d,!0);D(d),D(l),D(s),D(i),D(n),L(e=>{H(o,e),l.disabled=X.formSubmitting,H(f,X.formSubmitting?`Saving...`:`Override Budget`)},[()=>XO(X.overridePendingPayload,X.overrideExistingBudget)]),zr(`submit`,i,e=>{e.preventDefault(),X.confirmOverride()}),z(`click`,c,()=>X.closeOverrideDialog()),V(e,n)},$$slots:{default:!0}}),V(e,r),k()}Br([`change`,`input`,`click`]);var Lk=B(`

Budgets

`),Rk=B(``),zk=B(`
Budget management is unavailable.
`),Bk=B(``),Vk=B(`
`),Hk=B(`

No budgets configured yet.

`),Uk=B(`

No budgets match your filter.

`),Wk=B(`
`);function Gk(e,t){O(t,!0),On(()=>{Y.refreshTick,Bl.page===`budgets`&&X.fetchBudgetsPage()});let n=A(()=>X.filteredBudgets());var r=Wk(),i=P(r),a=P(i);YT(P(a),{copyId:`budgets-help-copy`,label:`budgets help`,title:e=>{V(e,Lk())},help:e=>{Ve(),V(e,Yr(`Budgets are evaluated from tracked usage cost records for each user +`)}function uT(e){let t=e&&e.request_health;return t&&typeof t==`object`?t:null}function dT(e){let t=uT(e);return t?String(t.circuit_state||``).trim():``}function fT(e){let t=dT(e);return t?t.charAt(0).toUpperCase()+t.slice(1):``}function pT(e){let t=dT(e);return t===`open`?`is-unhealthy`:t===`half-open`?`is-degraded`:`is-healthy`}function mT(e){let t=uT(e);if(!t)return``;let n=Number(t.requests||0),r=Number(t.errors||0),i=Math.round(Number(t.window_seconds||0)/60),a=i>0?`last `+i+` min`:`recent`;return String(n)+` request`+(n===1?``:`s`)+` · `+String(r)+` error`+(r===1?``:`s`)+` (`+a+`)`}function hT(e){let t=uT(e);return t&&Array.isArray(t.models)?t.models:[]}function gT(e){return e?String(Number(e.errors||0))+`/`+String(Number(e.requests||0))+` failed`:``}function _T(e){let t=e&&e.last_error;return!t||!t.message?``:(t.status_code?`HTTP `+String(t.status_code)+`: `:``)+t.message}function vT(){return{name:``,slug:``,url:``,transport:`http`,description:``,enabled:!0,headers:[],allowed_tools:``,disallowed_tools:``,user_paths:``,tool_timeout_seconds:``}}function yT(){return{server:``,status:``,instructions:``,tools:[],prompts:[],resources:[],templates:[]}}function bT(e){return String(e&&(e.slug||e.name)||``).trim()}function xT(e){return String(e&&e.status||``).trim()||`connecting`}function ST(e){switch(xT(e)){case`connected`:return`status-success`;case`degraded`:return String(e&&e.last_error||``).trim()?`status-error`:`status-warning`;case`connecting`:return`status-neutral`;default:return`status-unknown`}}function CT(e,t){let n=xT(e),r=String(e&&e.last_error||``).trim();return r&&n!==`connected`?r:n===`connected`&&e&&e.connected_at?`Connected since `+(typeof t==`function`?t:String)(e.connected_at):``}function wT(e){return String(e&&e.transport||``)===`stdio`?`local command`:String(e&&e.url||``).trim()||`—`}function TT(e){let t=Number(e&&e.prompt_count||0),n=Number(e&&e.resource_count||0);return t+` prompts · `+n+` resources`}function ET(e){let t=String(e||``).normalize(`NFKD`).toLowerCase(),n=t.replace(/[\u0300-\u036f]/g,``).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,64).replace(/-+$/g,``);if(n)return n;let r=2166136261;for(let e of t)r=Math.imul((r^e.codePointAt(0))>>>0,16777619)>>>0;return`mcp-`+r.toString(16).padStart(8,`0`)}function DT(e){return String(e||``).split(` +`).map(e=>e.trim()).filter(e=>e)}function OT(e){return!e||typeof e!=`object`||Array.isArray(e)?[]:Object.keys(e).sort().map(t=>({name:t,value:String(e[t]||``)}))}function kT(e){let t={};return(Array.isArray(e)?e:[]).forEach(e=>{let n=String(e&&e.name||``).trim();n&&(t[n]=String(e&&e.value||``))}),t}function AT(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.slug,e.url,e.transport,e.description,e.status].some(e=>String(e||``).toLowerCase().includes(r)))}function jT(e){return{name:String(e.name||``).trim(),slug:bT(e),url:String(e.url||``).trim(),transport:e.transport===`sse`?`sse`:`http`,description:String(e.description||``).trim(),enabled:e.enabled!==!1,headers:OT(e.headers),allowed_tools:(Array.isArray(e.allowed_tools)?e.allowed_tools:[]).join(`, `),disallowed_tools:(Array.isArray(e.disallowed_tools)?e.disallowed_tools:[]).join(`, `),user_paths:(Array.isArray(e.user_paths)?e.user_paths:[]).join(` +`),tool_timeout_seconds:e.tool_timeout_seconds?String(e.tool_timeout_seconds):``}}function MT(e,t,n){let r=String(e.name||``).trim(),i=String(e.slug||ET(r)).trim().toLowerCase(),a=String(e.url||``).trim(),o=e.transport===`sse`?`sse`:`http`;if(!r)return{error:`Name is required.`};if(!/^[a-z0-9][a-z0-9_-]{0,63}$/.test(i))return{error:`Slug must use 1–64 lowercase ASCII letters, numbers, hyphens, or underscores.`};if(t===`create`&&(n||[]).some(e=>bT(e)===i))return{error:`Slug "`+i+`" is already in use.`};if(!a)return{error:`URL is required.`};let s,c=String(e.tool_timeout_seconds||``).trim();if(c!==``){let e=Number(c);if(!Number.isSafeInteger(e)||e<0)return{error:`Tool timeout must be a non-negative whole number of seconds.`};s=e}return{payload:{name:r,slug:i,url:a,transport:o,headers:kT(e.headers),description:String(e.description||``).trim(),enabled:!!e.enabled,allowed_tools:ff(e.allowed_tools),disallowed_tools:ff(e.disallowed_tools),user_paths:DT(e.user_paths),tool_timeout_seconds:s}}}function NT(e,t){let n=t&&typeof t==`object`&&!Array.isArray(t)?t:{},r=e=>(Array.isArray(e)?e:[]).filter(e=>e&&typeof e==`object`);return{server:String(n.server||e||``).trim(),status:String(n.status||``).trim(),instructions:String(n.instructions||``).trim(),tools:r(n.tools),prompts:r(n.prompts),resources:r(n.resources),templates:r(n.templates)}}function PT(e,t){return String(e&&e.server||``)+`_`+String(t||``)}function FT(e){let t=e||yT(),n=(e,t)=>{let n=String(e||``).trim(),r=String(t||``).trim();return n&&r?n+` — `+r:r||n},r=e=>n=>({key:e+`:`+String(n.name||``),name:String(n.name||``),aggregated:PT(t,n.name),description:String(n.description||``).trim()});return[{key:`tools`,title:`Tools`,items:(t.tools||[]).map(r(`tool`))},{key:`prompts`,title:`Prompts`,items:(t.prompts||[]).map(r(`prompt`))},{key:`resources`,title:`Resources`,items:(t.resources||[]).map(e=>({key:`resource:`+String(e.uri||``),name:String(e.uri||``),aggregated:``,description:n(e.name,e.description)}))},{key:`templates`,title:`Resource templates`,items:(t.templates||[]).map(e=>({key:`template:`+String(e.uri_template||``),name:String(e.uri_template||``),aggregated:``,description:n(e.name,e.description)}))}].filter(e=>e.items.length>0)}function IT(e){return FT(e).length===0}function LT(e){return(e||[]).length}function RT(e){return(e||[]).filter(e=>xT(e)===`connected`).length}function zT(e){return(e||[]).filter(e=>e&&e.enabled!==!1&&xT(e)===`degraded`).length}function BT(e,t){return!!e&<(t)>0}function VT(e){return String(RT(e))+`/`+String(LT(e))}function HT(e){return zT(e)>0?`is-degraded`:`is-healthy`}function UT(e){let t=zT(e);if(t>0)return String(t)+` server`+(t===1?``:`s`)+` need`+(t===1?`s`:``)+` attention`;let n=LT(e),r=RT(e);return n>0&&r===n?`All MCP servers connected`:String(r)+` of `+String(n)+` server`+(n===1?``:`s`)+` connected`}function WT(){return{interval:`day`,buckets:[],summary:{requests:0},provider_latency:[]}}function GT(e){let t=e&&typeof e==`object`?e:{};return{interval:t.interval===`hour`?`hour`:`day`,buckets:Array.isArray(t.buckets)?t.buckets:[],summary:t.summary&&typeof t.summary==`object`?t.summary:{requests:0},provider_latency:Array.isArray(t.provider_latency)?t.provider_latency:[]}}function KT(e){return Number(e&&e.summary&&e.summary.requests||0)>0}function qT(e){return(e&&Array.isArray(e.provider_latency)?e.provider_latency:[]).length>0}function JT(e){let t=e&&e.summary?e.summary.success_rate:null;return t==null?`—`:(Math.round(Number(t)*1e3)/10).toFixed(1)+`%`}function YT(e,t){return Number(e&&e.summary&&e.summary[t]||0)}function XT(e){let t=Number(e);return Number.isFinite(t)?t>=6e4?(t/6e4).toFixed(1)+` min`:t>=1e3?(t/1e3).toFixed(2)+` s`:Math.round(t)+` ms`:`-`}function ZT(e){let t=e&&e.summary?e.summary.avg_duration_ms:null;return t==null?`—`:XT(Number(t))}function QT(e,t){try{let n={};return new Intl.DateTimeFormat(`en-US`,{timeZone:t,year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,hourCycle:`h23`}).formatToParts(e).forEach(e=>{n[e.type]=e.value}),{year:n.year,month:n.month,day:n.day,hour:Number(n.hour)}}catch{return{year:String(e.getFullYear()),month:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`][e.getMonth()],day:String(e.getDate()),hour:e.getHours()}}}function $T(e,t,n){let r=new Date(e.start);if(Number.isNaN(r.getTime()))return String(e.start||``);let i=QT(r,n),a=i.month+` `+i.day;return t!==`hour`||i.hour===0?a:String(i.hour).padStart(2,`0`)+`:00`}function eE(e,t,n,r){let i=new Date(e.start);if(Number.isNaN(i.getTime()))return String(e.start||``);if(t===`hour`)return r(e.start);let a=QT(i,n);return a.month+` `+a.day+`, `+a.year}function tE(e){return{ok:e(`var(--success)`),clientError:e(`var(--warning)`),serverError:e(`var(--danger)`),other:e(`color-mix(in srgb, var(--text-muted) 55%, transparent)`)}}function nE(e,t,n={}){let r=n.interval===`hour`?`hour`:`day`,i=n.zone,a=n.resolve||(e=>e),o=n.formatTimestamp||(e=>String(e)),s=t.map(e=>$T(e,r,i)),c=tE(a),l=a(`var(--bg-surface)`),u=e=>Number(e)||0,d=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderColor:l,borderWidth:1,borderSkipped:!1,borderRadius:2,maxBarThickness:28}),f=[d(`2xx`,t.map(e=>u(e.status_2xx)),c.ok),d(`4xx`,t.map(e=>u(e.status_4xx)),c.clientError),d(`5xx`,t.map(e=>u(e.status_5xx)),c.serverError)];return t.some(e=>u(e.status_other)>0)&&f.push(d(`Other`,t.map(e=>u(e.status_other)),c.other)),{type:`bar`,data:{labels:s,datasets:f},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:GC(e,{title:e=>e.length?eE(t[e[0].dataIndex],r,i,o):``,label:e=>e.dataset.label+`: `+e.parsed.y.toLocaleString(),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),`Total: `+t.toLocaleString()}})},scales:{x:{stacked:!0,grid:{display:!1},border:{display:!1},ticks:{color:e.text,font:WC(),maxRotation:0,autoSkip:!0,maxTicksLimit:12}},y:{stacked:!0,beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:WC(),precision:0,callback:e=>vf(e)}}}}}}function rE(e=JC()){let t={};return function(n){return n in t||(t[n]=e[Object.keys(t).length%e.length]),t[n]}}function iE(e,t,n,r={}){let i=r.interval===`hour`?`hour`:`day`,a=r.zone,o=r.formatTimestamp||(e=>String(e)),s=r.providerColor||rE();return{type:`line`,data:{labels:t.map(e=>$T(e,i,a)),datasets:n.map(e=>({label:e.provider,data:(e.avg_duration_ms||[]).map(e=>e==null?null:Number(e)),borderColor:s(e.provider),backgroundColor:s(e.provider),fill:!1,tension:.3,borderWidth:2,pointRadius:0,pointHoverRadius:4,spanGaps:i===`hour`&&2}))},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:GC(e,{title:e=>e.length?eE(t[e[0].dataIndex],i,a,o):``,label:e=>{let t=(n[e.datasetIndex]&&n[e.datasetIndex].requests||[])[e.dataIndex],r=Number(t)||0;return e.dataset.label+`: `+XT(e.parsed.y)+(r>0?` (`+r.toLocaleString()+` req)`:``)}})},scales:{x:{grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:WC(),maxRotation:0,autoSkip:!0,maxTicksLimit:12}},y:{beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:WC(),callback:e=>XT(e)}}}}}}var aE=class{#e=j(N(Ww()));get status(){return R(this.#e)}set status(e){M(this.#e,e,!0)}#t=j(!1);get loading(){return R(this.#t)}set loading(e){M(this.#t,e,!0)}#n=j(!1);get loadedOnce(){return R(this.#n)}set loadedOnce(e){M(this.#n,e,!0)}#r=j(!1);get detailsExpanded(){return R(this.#r)}set detailsExpanded(e){M(this.#r,e,!0)}#i=j(N({}));get cardOverrides(){return R(this.#i)}set cardOverrides(e){M(this.#i,e,!0)}#a=null;#o=null;#s=!1;initPreferences(){if(this.#s)return;this.#s=!0;let e=Gw(qa());this.detailsExpanded=e.detailsExpanded,this.cardOverrides=e.cardOverrides}cardExpanded(e){return Jw(this.cardOverrides,this.detailsExpanded,e)}toggleCard(e){let t=e&&e.name?String(e.name):``;if(!t)return;let n={...this.cardOverrides};n[t]=!this.cardExpanded(e),this.cardOverrides=n,qw(qa(),this.cardOverrides)}toggleDetails(){this.detailsExpanded=!this.detailsExpanded,this.cardOverrides={},Kw(qa(),this.detailsExpanded),qw(qa(),this.cardOverrides)}detailsToggleLabel(){return this.detailsExpanded?`Show Details`:`Hide Details`}async fetch(){this.initPreferences(),this.#a&&this.#a.abort();let e=new AbortController;this.#a=e,this.loading=!0;try{let t=await bd(`/admin/providers/status`,{label:`provider status`,signal:e.signal});if(t.stale||e.signal.aborted)return;if(!t.ok){this.status=Ww(),this.#l();return}let n=t.data&&typeof t.data==`object`?t.data:Ww();n.summary||=Ww().summary,Array.isArray(n.providers)||(n.providers=[]),this.status=n,this.#c()}catch(e){if(Sd(e))return;console.error(`Failed to fetch provider status:`,e),this.status=Ww(),this.#l()}finally{this.#a===e&&(this.#a=null,this.loading=!1,this.loadedOnce=!0)}}#c(){this.#l(),eT(this.status.providers)&&(this.#o=setTimeout(()=>{this.#o=null,this.fetch()},Vw))}#l(){this.#o&&=(clearTimeout(this.#o),null)}stopPolling(){this.#l()}},oE=class{#e=j(N(WT()));get stats(){return R(this.#e)}set stats(e){M(this.#e,e,!0)}#t=j(!1);get loading(){return R(this.#t)}set loading(e){M(this.#t,e,!0)}#n=0;async fetch(){let e=++this.#n;this.loading=!0;try{let t=await bd(`/admin/audit/stats?`+Vf.queryStr(),{label:`audit stats`});if(t.stale||e!==this.#n)return;if(!t.ok){this.stats=WT();return}this.stats=GT(t.data)}catch(t){if(console.error(`Failed to fetch audit stats:`,t),e!==this.#n)return;this.stats=WT()}finally{e===this.#n&&(this.loading=!1)}}},sE=class{#e=j(N([]));get servers(){return R(this.#e)}set servers(e){M(this.#e,e,!0)}#t=j(!1);get available(){return R(this.#t)}set available(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}async fetch(){if(await Td.ensureLoaded(),!Td.mcpVisible()){this.available=!1,this.servers=[];return}this.loading=!0;try{let e=await bd(`/admin/mcp-servers`,{label:`mcp servers`});if(e.stale)return;if(e.status===503||e.status===404){this.available=!1,this.servers=[];return}if(this.available=!0,!e.ok){this.servers=[];return}this.servers=Array.isArray(e.data)?e.data:[]}catch(e){console.error(`Failed to fetch MCP servers:`,e),this.servers=[]}finally{this.loading=!1}}},cE=class{#e=j(N([]));get data(){return R(this.#e)}set data(e){M(this.#e,e,!0)}#t=j(`tokens`);get mode(){return R(this.#t)}set mode(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}#r=null;async fetch(){this.#r&&this.#r.abort();let e=new AbortController;this.#r=e,this.loading=!0;try{let t=await bd(`/admin/usage/daily?days=365&interval=daily`,{label:`calendar`,signal:e.signal});if(t.stale||e.signal.aborted)return;if(!t.ok){this.data=[];return}this.data=Array.isArray(t.data)?t.data:[]}catch(e){if(Sd(e))return;console.error(`Failed to fetch calendar data:`,e),this.data=[]}finally{this.#r===e&&(this.#r=null,this.loading=!1)}}},lE=new aE,uE=new oE,dE=new sE,fE=new cE,pE=(e,t=f,n=f,r=f,i=f)=>{var a=hE(),o=P(a),s=P(o,!0);D(o);var c=I(o,2),l=P(c),u=P(l),d=P(u,!0);D(u),Ve(),D(l);var p=I(l,4),m=P(p),h=P(m,!0);D(m),Ve(),D(p);var g=I(p,4),_=P(g,!0);D(g),D(c),D(a),L((e,n,r,i,a,o)=>{H(s,t()),K(l,`title`,e),H(d,n),K(p,`title`,r),H(h,i),K(g,`title`,a),H(_,o)},[()=>yf(`Input tokens`,n()),()=>vf(n()),()=>yf(`Output tokens`,r()),()=>vf(r()),()=>yf(`Total tokens`,i()),()=>vf(i())]),V(e,a)},mE=(e,t=f,n=f,r=f,i=f,a=f,o=f)=>{var s=vE(),c=P(s),l=P(c,!0);D(c);var u=I(c,2),d=P(u,!0);D(u);var p=I(u,2),m=e=>{var t=gE(),n=P(t,!0);D(t),L(()=>{K(t,`aria-label`,o().title),K(t,`title`,o().title),H(n,a())}),z(`click`,t,function(...e){o().onclick?.apply(this,e)}),V(e,t)},h=e=>{var t=_E(),n=P(t,!0);D(t),L(()=>H(n,a())),V(e,t)};U(p,e=>{o()?e(m):e(h,-1)}),D(s),L(()=>{G(s,1,`card provider-status-flag ${t()??``} ${n()??``}`,`svelte-6tr9cf`),H(l,r()),H(d,i())}),V(e,s)},hE=B(`
i + o =
`),gE=B(``),_E=B(` `),vE=B(`
`),yE=B(`
Cache Hits
`),bE=B(`
Total Requests
Estimated Cost
Prompt Cache Rate
`);function xE(e,t){O(t,!0);let n=A(()=>qf.summary),r=A(()=>qf.cacheOverview),i=A(()=>qf.cacheAnalyticsEnabled()),a=A(()=>lE.status.summary);function o(){let e=document.getElementById(`provider-status-section`);e&&(e.scrollIntoView({behavior:`smooth`,block:`start`}),e.focus({preventScroll:!0}))}var s=bE(),c=P(s);{let e=A(()=>yw(R(n)));pE(c,()=>`Tokens`,()=>R(n).total_input_tokens,()=>R(n).total_output_tokens,()=>R(e))}var l=I(c,2),u=I(P(l),2),d=P(u,!0);D(u),D(l);var f=I(l,2),p=e=>{var t=yE(),n=I(P(t),2),i=P(n,!0);D(n),D(t),L(e=>H(i,e),[()=>mf(R(r).summary.total_hits)]),V(e,t)};U(f,e=>{R(i)&&e(p)});var m=I(f,2),h=I(P(m),2),g=P(h,!0);D(h),D(m);var _=I(m,2),v=e=>{{let t=A(()=>Cw(R(r)));pE(e,()=>`Local Cache`,()=>R(r).summary.total_input_tokens,()=>R(r).summary.total_output_tokens,()=>R(t))}};U(_,e=>{R(i)&&e(v)});var y=I(_,2),b=I(P(y),2),x=P(b);RC(x,{build:()=>Rw(Pw(R(n)),KC(`var(--token-prompt)`),KC(`var(--bg-surface-hover)`))});var S=I(x,2),C=P(S,!0);D(S),D(b),D(y);var w=I(y,2),T=e=>{{let t=A(()=>Yw(R(a))),n=A(()=>Zw(R(a))),r=A(()=>$w(R(a))),i=A(()=>Qw(R(a))?{title:`View providers overview`,onclick:o}:null);mE(e,()=>`provider-status-overview-card`,()=>R(t),()=>`Provider Status`,()=>R(n),()=>R(r),()=>R(i))}};U(w,e=>{R(a).total>0&&e(T)});var E=I(w,2),ee=e=>{{let t=A(()=>HT(dE.servers)),n=A(()=>VT(dE.servers)),r=A(()=>UT(dE.servers));mE(e,()=>`mcp-servers-flag`,()=>R(t),()=>`MCP Servers`,()=>R(n),()=>R(r),()=>({title:`View MCP servers`,onclick:()=>Gu.navigate(`mcp-servers`)}))}},te=A(()=>BT(dE.available,dE.servers));U(E,e=>{R(te)&&e(ee)}),D(s),L((e,t,n,r,i)=>{K(u,`title`,e),H(d,t),H(g,n),K(b,`aria-label`,r),H(C,i)},[()=>Sw(R(n),R(r),R(i)),()=>mf(xw(R(n),R(r),R(i))),()=>hf(R(n).total_cost),()=>`Prompt cache rate `+Iw(R(n)),()=>Iw(R(n))]),V(e,s),k()}Br([`click`]);var SE=B(` `),CE=B(`
`),wE=B(`No usage in the selected period yet`),TE=B(`
`),EE=B(`

Tokens

Share of input tokens over the selected period
`);function DE(e,t){O(t,!0);let n=A(()=>qf.cacheAnalyticsEnabled()),r=A(()=>Dw(qf.summary,qf.cacheOverview,R(n))),i=A(()=>Ow(qf.summary,qf.cacheOverview,R(n))),a=A(()=>Ew(qf.summary,qf.cacheOverview,R(n)));var o=EE(),s=I(P(o),2);let c;var l=P(s);W(l,17,()=>R(i),e=>e.key,(e,t)=>{var n=CE(),r=P(n),i=e=>{var n=SE(),r=P(n);D(n),L(()=>H(r,`${R(t).pct??``}%`)),V(e,n)};U(r,e=>{R(t).pct>=8&&e(i)}),D(n),L(e=>{Bi(n,`width: ${R(t).pct??``}%; background: var(${R(t).colorVar??``})`),K(n,`title`,e)},[()=>kw(R(t))]),V(e,n)});var u=I(l,2),d=e=>{V(e,wE())};U(u,e=>{R(a)||e(d)}),D(s);var f=I(s,2);W(f,21,()=>R(r),e=>e.key,(e,t)=>{var n=TE(),r=P(n),i=I(r,2),a=P(i,!0);D(i);var o=I(i,2),s=P(o);D(o);var c=I(o,2),l=P(c,!0);D(c),D(n),L((e,i)=>{K(n,`title`,e),Bi(r,`background: var(${R(t).colorVar??``})`),H(a,R(t).label),H(s,`${R(t).pct??``}%`),H(l,i)},[()=>kw(R(t)),()=>mf(R(t).tokens)]),V(e,n)}),D(f),D(o),L(e=>{c=G(s,1,`cache-meter-bar svelte-1yzecxj`,null,c,{"is-empty":!R(a)}),K(s,`aria-label`,e)},[()=>Aw(R(i))]),V(e,o),k()}var OE=B(``);function kE(e,t){let n=q(t,`size`,3,16),r=q(t,`label`,3,`Loading`),i=q(t,`class`,3,``);var a=OE();L(()=>{G(a,1,Ni([`spinner`,i()]),`svelte-b54l9o`),Bi(a,`--spinner-size: ${n()??``}px`),K(a,`aria-label`,r())}),V(e,a)}var AE=Jr(` `),jE=Jr(``);function ME(e,t){let n=q(t,`label`,3,`No data`);var r=jE(),i=I(P(r),9),a=e=>{var t=AE(),r=P(t,!0);D(t),L(()=>H(r,n())),V(e,t)};U(i,e=>{n()&&e(a)}),D(r),L(()=>{K(r,`role`,n()?`img`:void 0),K(r,`aria-label`,n()||void 0),K(r,`aria-hidden`,n()?void 0:`true`)}),V(e,r)}var NE=B(`
`),PE=B(`

`);function FE(e,t){O(t,!0);let n=[`daily`,`weekly`,`monthly`,`yearly`];function r(e){Vf.interval=e,t.onintervalchange?.()}function i(){let e=qf.daily;if(e.length===0)return null;let t=Vf.rangeStart(),n=Vf.rangeEnd(),r=Nw(Mw(e,Vf.interval,t,n),Mw(Array.isArray(qf.cacheOverview.daily)?qf.cacheOverview.daily:[],Vf.interval,t,n));return Lw(UC(),r,{cacheEnabled:qf.cacheAnalyticsEnabled(),resolve:KC})}var a=PE(),o=P(a),s=P(o),c=P(s,!0);D(s);var l=I(s,2);{let e=A(()=>n.map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1)})));VC(l,{ariaLabel:`Usage chart interval`,get options(){return R(e)},get value(){return Vf.interval},onchange:r})}D(o);var u=I(o,2),d=P(u);RC(d,{build:i});var f=I(d,2),p=e=>{var t=NE();kE(P(t),{size:24,label:`Loading usage`}),D(t),V(e,t)},m=e=>{var t=NE();ME(P(t),{}),D(t),V(e,t)};U(f,e=>{qf.daily.length===0&&qf.loading?e(p):qf.daily.length===0&&!Y.authError&&e(m,1)}),D(u),D(a),L(e=>H(c,e),[()=>Vf.chartTitle()]),V(e,a),k()}var IE=10,LE=.7;function RE(e,t){if(e<=0||t<=0)return 0;let n=(e/t)**+LE,r=Math.ceil(n*IE);return r<1?1:r>IE?IE:r}function zE(){let e=[];for(let t=0;t<=IE;t++)e.push(t);return e}function BE(e,t,n){let r={};(e||[]).forEach(e=>{r[e.date]=e});let i=td(rd(n,-364)),a=i.getUTCDay();i.setUTCDate(i.getUTCDate()-a);let o=[];for(let e=new Date(i);nd(e)<=n;e.setUTCDate(e.getUTCDate()+1)){let n=nd(e),i=r[n],a=0;i&&(a=t===`costs`?i.total_cost==null?0:i.total_cost:i.total_tokens||0),o.push({dateStr:n,value:a,level:0,empty:!1})}let s=0;for(let e=0;es&&(s=o[e].value);for(let e=0;e0){for(;l.length<7;)l.push({dateStr:``,value:0,level:0,empty:!0});c.push(l)}return c}function VE(e){let t=td(rd(e,-364)),n=t.getUTCDay();t.setUTCDate(t.getUTCDate()-n);let r=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],i=[],a={},o=0;for(let n=new Date(t);nd(n)<=e;n.setUTCDate(n.getUTCDate()+7),o++){let t=null;if(o===0)t=new Date(n);else for(let r=0;r<7;r++){let i=new Date(n);if(i.setUTCDate(n.getUTCDate()+r),nd(i)>e)break;if(i.getUTCDate()===1){t=i;break}}if(!t)continue;let s=t.getUTCFullYear()+`-`+t.getUTCMonth();a[s]||(i.push({label:r[t.getUTCMonth()],col:o,key:s}),a[s]=!0)}for(let e=0;e `),GE=B(`
`),KE=B(`
`),qE=B(`
`),JE=B(`
`),YE=B(`

Activity

Mon Wed Fri
`,1);function XE(e,t){O(t,!0);let n=j(N({show:!1,x:0,y:0,text:``})),r=A(()=>md.currentDateKey()),i=A(()=>BE(fE.data,fE.mode,R(r))),a=A(()=>VE(R(r)));function o(e,t){t.empty||M(n,{show:!0,x:e.clientX,y:e.clientY,text:UE(t,fE.mode)},!0)}function s(){M(n,{show:!1,x:0,y:0,text:``},!0)}var c=YE(),l=F(c),u=P(l),d=I(P(u),2),f=e=>{kE(e,{size:14,label:`Loading activity`})};U(d,e=>{fE.loading&&fE.data.length===0&&e(f)}),VC(I(d,2),{ariaLabel:`Activity calendar mode`,options:[{value:`tokens`,label:`Tokens`},{value:`costs`,label:`Costs`}],get value(){return fE.mode},onchange:e=>fE.mode=e}),D(u);var p=I(u,2),m=I(P(p),2),h=P(m);W(h,21,()=>R(a),e=>e.key,(e,t)=>{var n=WE(),r=P(n,!0);D(n),L(()=>{Bi(n,`grid-column: ${R(t).col+1} / span ${R(t).span??``}`),H(r,R(t).label)}),V(e,n)}),D(h);var g=I(h,2);W(g,21,()=>R(i),ii,(e,t,n)=>{var r=KE();W(r,23,()=>R(t),(e,t)=>n+`-`+t,(e,t)=>{var n=GE();L(()=>G(n,1,Ni([`contribution-calendar-cell`,R(t).empty?`empty`:`level-${R(t).level}`]),`svelte-3hfxuq`)),zr(`mouseenter`,n,e=>o(e,R(t))),zr(`mouseleave`,n,s),V(e,n)}),D(r),V(e,r)}),D(g),D(m),D(p);var _=I(p,2),v=P(_),y=P(v),b=P(y,!0);D(y),D(v);var x=I(v,2);W(I(P(x),2),16,zE,e=>e,(e,t)=>{var n=qE();L(()=>G(n,1,`contribution-calendar-cell level-${t??``}`,`svelte-3hfxuq`)),V(e,n)}),Ve(2),D(x),D(_),D(l);var S=I(l,2),C=e=>{var t=JE(),r=P(t,!0);D(t),L(()=>{Bi(t,`left: ${R(n).x??``}px; top: ${R(n).y-40}px`),H(r,R(n).text)}),V(e,t)};U(S,e=>{R(n).show&&e(C)}),L(e=>H(b,e),[()=>HE(fE.data,fE.mode)]),V(e,c),k()}var ZE=B(``),QE=B(`

`),$E=B(`
`);function eD(e,t){O(t,!0);let n=q(t,`label`,3,`help`),r=q(t,`text`,3,``),i=q(t,`open`,15,!1),a=q(t,`external`,3,!1),o=A(()=>!!r()||!!t.help||a());var s=$E(),c=P(s),l=P(c);mi(l,()=>t.title??f);var u=I(l,2),d=e=>{var r=ZE();let a;L(()=>{a=G(r,1,`inline-help-toggle svelte-y40or3`,null,a,{"is-open":i()}),K(r,`aria-label`,(i()?`Hide `:`Show `)+n()),K(r,`aria-expanded`,i()),K(r,`aria-controls`,t.copyId)}),z(`click`,r,()=>i(!i())),V(e,r)};U(u,e=>{R(o)&&e(d)}),mi(I(u,2),()=>t.extra??f),D(c);var p=I(c,2),m=e=>{var n=QE(),i=P(n),a=e=>{var n=Xr();mi(F(n),()=>t.help),V(e,n)},o=e=>{var t=Yr();L(()=>H(t,r())),V(e,t)};U(i,e=>{t.help?e(a):e(o,-1)}),D(n),L(()=>K(n,`id`,t.copyId)),V(e,n)};U(p,e=>{i()&&R(o)&&!a()&&e(m)}),D(s),V(e,s),k()}Br([`click`]);var tD=B(`

Provider Latency

`),nD=B(`
Avg
`),rD=B(`

Requests by Status

Success 2xx 4xx 5xx
`,1);function iD(e,t){O(t,!0);let n=rE(),r=A(()=>uE.stats);function i(){return{interval:R(r).interval,zone:md.effectiveTimezone(),resolve:KC,formatTimestamp:e=>md.formatTimestamp(e)}}var a=Xr(),o=F(a),s=e=>{var t=rD(),a=F(t),o=P(a),s=I(P(o),2),c=P(s),l=I(P(c),2),u=P(l,!0);D(l),D(c);var d=I(c,2),f=I(P(d),4),p=P(f,!0);D(f),D(d);var m=I(d,2),h=I(P(m),4),g=P(h,!0);D(h),D(m);var _=I(m,2),v=I(P(_),4),y=P(v,!0);D(v),D(_),D(s),D(o);var b=I(o,2);RC(P(b),{build:()=>nE(UC(),R(r).buckets,i())}),D(b),D(a);var x=I(a,2),S=e=>{var t=nD(),a=P(t),o=P(a);eD(o,{copyId:`audit-latency-help-copy`,label:`provider latency help`,text:`Average duration of successful requests as measured at the gateway, per provider. Local cache hits and failed requests are excluded; streamed responses count until the stream completes.`,title:e=>{V(e,tD())},$$slots:{title:!0}});var s=I(o,2),c=P(s),l=I(P(c),2),u=P(l,!0);D(l),D(c),D(s),D(a);var d=I(a,2);RC(P(d),{build:()=>iE(UC(),R(r).buckets,R(r).provider_latency,{...i(),providerColor:n})}),D(d),D(t),L(e=>H(u,e),[()=>ZT(R(r))]),V(e,t)},C=A(()=>qT(R(r)));U(x,e=>{R(C)&&e(S)}),L((e,t,n,r)=>{H(u,e),H(p,t),H(g,n),H(y,r)},[()=>JT(R(r)),()=>mf(YT(R(r),`status_2xx`)),()=>mf(YT(R(r),`status_4xx`)),()=>mf(YT(R(r),`status_5xx`))]),V(e,t)},c=A(()=>KT(R(r)));U(o,e=>{R(c)&&e(s)}),V(e,a),k()}var aD=(e,t=f,n=f,r)=>{let i=Et(()=>h(r?.(),!1));var a=cD(),o=P(a),s=P(o,!0);D(o);var c=I(o,2),l=e=>{var t=oD(),r=P(t,!0);D(t),L(()=>H(r,n())),V(e,t)},u=e=>{var t=sD(),r=P(t,!0);D(t),L(()=>H(r,n())),V(e,t)};U(c,e=>{R(i)?e(l):e(u,-1)}),D(a),L(()=>H(s,t())),V(e,a)},oD=B(` `),sD=B(` `),cD=B(`
`),lD=B(`

`),uD=B(`
Breaker State
`),dD=B(`
`),fD=B(`
Models (Recent Traffic)
`),pD=B(`
`),mD=B(`

`);function hD(e,t){O(t,!0);let n=A(()=>pT(t.provider)),r=A(()=>[[`Base URL`,t.provider.config?.base_url],[`API Version`,t.provider.config?.api_version]].filter(([,e])=>!!e));var i=mD();let a;var o=P(i),s=P(o),c=P(s,!0);D(s);var l=I(s,2),u=e=>{var n=lD(),r=P(n,!0);D(n),L(()=>H(r,t.provider.last_error)),V(e,n)};U(l,e=>{t.provider.last_error&&e(u)});var d=I(l,2),f=e=>{var r=pD(),i=P(r);{let e=A(()=>mT(t.provider));aD(i,()=>`Recent Requests`,()=>R(e))}var a=I(i,2),o=e=>{var r=uD(),i=I(P(r),2),a=P(i),o=P(a,!0);D(a),D(i),D(r),L(e=>{G(a,1,Ni([`provider-status-health-state`,R(n)]),`svelte-6y9wjv`),H(o,e)},[()=>fT(t.provider)]),V(e,r)},s=A(()=>dT(t.provider));U(a,e=>{R(s)&&e(o)});var c=I(a,2),l=e=>{var n=fD(),r=I(P(n),2);W(r,21,()=>hT(t.provider),e=>e.model,(e,t)=>{var n=dD();let r;var i=P(n),a=P(i,!0);D(i);var o=I(i,2),s=P(o,!0);D(o),D(n),L((e,i)=>{r=G(n,1,`provider-status-health-model svelte-6y9wjv`,null,r,{"is-flagged":R(t).flagged}),K(n,`title`,e),H(a,R(t).model),H(s,i)},[()=>_T(R(t)),()=>gT(R(t))]),V(e,n)}),D(r),D(n),V(e,n)},u=A(()=>hT(t.provider).length>0);U(c,e=>{R(u)&&e(l)}),D(r),V(e,r)},p=A(()=>uT(t.provider));U(d,e=>{R(p)&&e(f)});var m=I(d,2),h=P(m);W(h,17,()=>R(r),([e,t])=>e,(e,t)=>{var n=A(()=>g(R(t),2));aD(e,()=>R(n)[0],()=>R(n)[1],()=>!0)});var _=I(h,2);{let e=A(()=>cT(t.provider));aD(_,()=>`Configured Models`,()=>R(e))}var v=I(_,2);{let e=A(()=>oT(t.provider));aD(v,()=>`Retry`,()=>R(e))}var y=I(v,2);{let e=A(()=>sT(t.provider));aD(y,()=>`Circuit Breaker`,()=>R(e))}D(m),D(o),D(i),L(()=>{a=G(i,1,`provider-status-details svelte-6y9wjv`,null,a,{"is-expanded":t.expanded,"is-collapsed":!t.expanded}),K(i,`aria-hidden`,!t.expanded),H(c,t.provider.status_reason)}),V(e,i),k()}var gD=B(` `),_D=B(``),vD=B(`

Models Available
Last Checked
`);function yD(e,t){O(t,!0);let n=A(()=>lE.cardExpanded(t.provider)),r=e=>md.formatTimestamp(e);var i=vD(),a=P(i),o=P(a),s=P(o),c=P(s),l=P(c,!0);D(c);var u=I(c,2),d=e=>{var n=gD(),r=P(n);D(n),L(e=>H(r,`(${e??``})`),[()=>iT(t.provider)]),V(e,n)},f=A(()=>iT(t.provider));U(u,e=>{R(f)&&e(d)});var p=I(u,2),m=e=>{var n=_D();L((e,t,r)=>{K(n,`href`,e),K(n,`aria-label`,t),K(n,`title`,r)},[()=>aT(t.provider),()=>`View `+(iT(t.provider)||t.provider.name)+` provider docs`,()=>`View `+(iT(t.provider)||t.provider.name)+` provider docs`]),V(e,n)},h=A(()=>aT(t.provider));U(p,e=>{R(h)&&e(m)}),D(s),D(o);var g=I(o,2),_=P(g,!0);D(g),D(a);var v=I(a,2),y=P(v),b=I(P(y),2),x=P(b,!0);D(b),D(y);var S=I(y,2),C=I(P(S),2),w=P(C,!0);D(C),D(S),D(v);var T=I(v,2);hD(T,{get provider(){return t.provider},get expanded(){return R(n)}});var E=I(T,2);let ee;J(P(E),{get icon(){return Rl},class:`provider-status-card-toggle-icon`}),D(E),D(i),L((e,r,i,a,o)=>{H(l,t.provider.name),G(g,1,`provider-status-pill ${e??``}`,`svelte-nopjmh`),K(g,`title`,r),H(_,t.provider.status_label),H(x,i),K(C,`title`,a),H(w,o),ee=G(E,1,`provider-status-card-toggle svelte-nopjmh`,null,ee,{"is-expanded":R(n)}),K(E,`aria-expanded`,R(n)),K(E,`aria-label`,(R(n)?`Collapse `:`Expand `)+t.provider.name+` details`),K(E,`title`,R(n)?`Collapse details`:`Expand details`)},[()=>Xw(t.provider.status),()=>lT(t.provider),()=>mf(t.provider.runtime?.discovered_model_count),()=>rT(t.provider,r),()=>nT(t.provider,r)]),z(`click`,E,()=>lE.toggleCard(t.provider)),V(e,i),k()}Br([`click`]);var bD=B(`

Providers Overview

`),xD=B(`
`);function SD(e,t){O(t,!0);let n=A(()=>lE.status.providers);var r=Xr(),i=F(r),a=e=>{var t=bD(),r=P(t),i=I(P(r),2),a=P(i),o=P(a,!0);D(a);var s=I(a,2);let c;D(i),D(r);var l=I(r,2);W(l,21,()=>R(n),e=>e.name,(e,t)=>{yD(e,{get provider(){return R(t)}})}),D(l),D(t),L((e,t)=>{K(i,`aria-checked`,lE.detailsExpanded),K(i,`title`,e),H(o,t),c=G(s,1,`provider-status-toggle-track svelte-1kx3uw4`,null,c,{"is-active":lE.detailsExpanded})},[()=>lE.detailsToggleLabel(),()=>lE.detailsToggleLabel()]),z(`click`,i,()=>lE.toggleDetails()),V(e,t)},o=e=>{var t=xD();kE(P(t),{size:18,label:`Loading provider status`}),D(t),V(e,t)};U(i,e=>{R(n).length>0?e(a):lE.loading&&!lE.loadedOnce&&e(o,1)}),V(e,r),k()}Br([`click`]);var CD=B(`
`);function wD(e,t){O(t,!0);function n(){qf.fetchUsage(),qf.fetchCacheOverview(``),uE.fetch(),lE.fetch(),dE.fetch(),fE.fetch()}function r(){qf.fetchUsage(),qf.fetchCacheOverview(``),uE.fetch()}function i(){r(),fE.fetch()}On(()=>{if(Y.refreshTick,Gu.page===`overview`)return wr(()=>{n(),mw.start()}),()=>{mw.stop(),lE.stopPolling()}});var a=CD(),o=P(a);vw(o,{});var s=I(o,4);lp(P(s),{onchange:i}),D(s);var c=I(s,2);Wf(c,{});var l=I(c,2);xE(l,{});var u=I(l,2);DE(u,{});var d=I(u,2);FE(d,{onintervalchange:r});var f=I(d,2);XE(f,{});var p=I(f,2);iD(p,{}),SD(I(p,2),{}),D(a),V(e,a),k()}var TD=`/admin/live/logs?types=audit,usage`;function ED(e,t,n){return!!t&&String(e&&e.id||``).trim()===t||!!n&&String(e&&e.request_id||``).trim()===n}function DD(e){switch(e){case`date_range`:return`Live paused — the selected date range does not include today. Set it to today to resume.`;case`filters`:return`Live paused while filters are active. Clear them to resume.`;case`pagination`:return`Live paused on later pages. Go to the first page to resume.`;default:return``}}function OD(e){let t=TD,n=Number(e||0);return Number.isFinite(n)&&n>0&&(t+=`&cursor=`+encodeURIComponent(String(n))),t}function kD(){return{async consumeLiveLogsBody(e){await ZC(e,e=>this.applyLiveLogEvent(e))},applyLiveLogEvent(e){if(!e||typeof e!=`object`)return;let t=Number(e.seq||0);Number.isFinite(t)&&t>this.liveLogsLastSeq&&(this.liveLogsLastSeq=t);let n=String(e.type||``).trim();if(n!==`heartbeat`){if(n===`reset`){this.reloadLiveLogSources();return}if(n===`audit.removed`){this.removeLiveAuditEntry(e.data);return}if(n.indexOf(`audit.`)===0){this.mergeLiveAuditEntry(e.data||{},n);return}n.indexOf(`usage.`)===0&&(this.mergeLiveUsageEntry(e.data||{},n),typeof this.noteLiveTokenUsage==`function`&&this.noteLiveTokenUsage(n))}},reloadLiveLogSources(){typeof this.fetchUsage==`function`&&this.fetchUsage(),this.page===`audit-logs`&&typeof this.fetchAuditLog==`function`&&this.fetchAuditLog(!0)},auditLivePauseReason(){return!this.auditLog||this.auditLog.offset!==0?`pagination`:this.auditSearch||this.auditMethod||this.auditStatusCode||this.auditStream?`filters`:!this.followsToday&&(this.customStartDate||this.customEndDate)?`date_range`:null},auditLiveInsertAllowed(){return!this.auditLivePauseReason()},usageLiveInsertAllowed(){return this.usageLog&&this.usageLog.offset===0&&!this.usageLogSearch&&!this.usageFilterModel&&!this.usageFilterProvider&&!this.usageFilterLabel&&!this.usageFilterUserPath},mergeLiveAuditEntry(e,t){if(!e||typeof e!=`object`)return;let n=String(e.id||e.request_id||``).trim();if(!n)return;let r=String(e.request_id||``).trim(),i=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],a=i.findIndex(e=>ED(e,n,r)),o=a>=0&&i[a]||{},s=t===`audit.detail`,c=s?{...e,_detail_loaded:!0,_response_partial:!1,bodies_omitted:!1}:this.liveAuditPatch(o,e,t);if(a>=0){let e=this.mergeLiveAuditPatch(o,c);return i.splice(a,1,e),this.auditLog.entries=[...i],this.regroupLiveAuditHead(e),s||this.fetchExpandedAuditDetailIfReady(e),this.cacheMergedAuditRecord(e,t),e}let l=this.mergeLiveAuditChild(e,c);if(l)return s||this.fetchExpandedAuditDetailIfReady(l),this.cacheMergedAuditRecord(l,t),l;if(!this.auditLiveInsertAllowed()){this.cacheMergedAuditRecord(c,t);return}if(!s&&this.auditGroupSessions){let e=this.foldLiveAuditIntoThread(c);if(e)return this.fetchExpandedAuditDetailIfReady(e),this.cacheMergedAuditRecord(e,t),e}this.auditLog.entries=[this.mergeLiveAuditUsagePatch(c),...i].slice(0,this.auditLog.limit||25),this.auditLog.total=Number(this.auditLog.total||0)+1;let u=this.auditLog.entries[0];return s||this.fetchExpandedAuditDetailIfReady(u),this.cacheMergedAuditRecord(u,t),u},liveAuditPatch(e,t,n){let r=this.liveAuditStateAfter(e._live_state,n),i=this.liveAuditEventFlushed(e._live_state)||this.liveAuditEventFlushed(r),a={...t,_live:!0,_live_state:r,_audit_flushed:i,_live_pending:!i};return n===`audit.stream`?a._response_partial=!0:this.liveAuditStateSettled(n)&&(a._response_partial=!1),a},mergeLiveAuditChild(e,t){let n=this.auditThreadChildren;if(!n||typeof n!=`object`)return null;let r=String(e.id||``).trim(),i=String(e.request_id||``).trim(),a=Object.keys(n);for(let e=0;eED(e,r,i));if(c<0)continue;let l=this.mergeLiveAuditPatch(s[c]||{},t),u=[...s];return u.splice(c,1,l),this.auditThreadChildren={...n,[a[e]]:{...o,entries:u}},l}return null},regroupLiveAuditHead(e){if(!this.auditGroupSessions)return null;let t=String(e&&e.session_id||``).trim();if(!t)return null;let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=String(e.id||``).trim(),i=n.findIndex(e=>String(e.id||``).trim()===r);if(i<0)return null;let a=n.findIndex((e,n)=>n!==i&&String(e.session_id||``).trim()===t);if(a<0)return null;let o=n[a],s=Date.parse(o&&o.timestamp),c=Date.parse(e&&e.timestamp),l=Number.isFinite(s)&&Number.isFinite(c)&&s>c,u=l?o:e,d=l?e:o,f={...u,session_count:Math.max(1,Number(o.session_count||1))+Math.max(1,Number(e.session_count||1))},p=n.filter((e,t)=>t!==i&&t!==a);return p.unshift(f),this.auditLog.entries=p,this.auditLog.total=Math.max(0,Number(this.auditLog.total||0)-1),this.prependLiveAuditThreadChild(t,d),f},foldLiveAuditIntoThread(e){let t=String(e&&e.session_id||``).trim();if(!t)return null;let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=n.findIndex(e=>String(e.session_id||``).trim()===t);if(r<0)return null;let i=n[r],a=Number(i.session_count),o=this.mergeLiveAuditUsagePatch({...e,session_count:(Number.isFinite(a)&&a>0?a:1)+1}),s=[...n];return s.splice(r,1),s.unshift(o),this.auditLog.entries=s,this.prependLiveAuditThreadChild(t,i),o},prependLiveAuditThreadChild(e,t){let n=this.auditThreadChildren||{},r=n[e],i={...t};delete i.session_count;let a=r&&Array.isArray(r.entries)?{...r,entries:[i,...r.entries],total:Number(r.total||r.entries.length)+1}:{loading:!1,loaded:!1,entries:[i],total:1};this.auditThreadChildren={...n,[e]:a}},removeLiveAuditThreadChild(e,t){let n=this.auditThreadChildren;!n||typeof n!=`object`||Object.keys(n).forEach(r=>{let i=n[r],a=i&&Array.isArray(i.entries)?i.entries:[],o=a.filter(n=>!ED(n,e,t)),s=a.length-o.length;s!==0&&(this.auditThreadChildren={...this.auditThreadChildren,[r]:{...i,entries:o,total:Math.max(0,Number(i.total||a.length)-s)}},this.decrementLiveAuditThreadCount(r,s))})},decrementLiveAuditThreadCount(e,t){let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=n.findIndex(t=>String(t.session_id||``).trim()===e);if(r<0)return;let i=n[r],a=[...n];a.splice(r,1,{...i,session_count:Math.max(1,Number(i.session_count||1)-t)}),this.auditLog.entries=a},mergeLiveAuditPatch(e,t){let n={...e,...t};return t.data===void 0&&e.data!==void 0?n.data=e.data:e.data&&t.data&&typeof e.data==`object`&&typeof t.data==`object`&&!Array.isArray(e.data)&&!Array.isArray(t.data)&&(n.data={...e.data,...t.data}),this.mergeLiveAuditUsagePatch(n)},mergeLiveAuditUsagePatch(e){let t=this.liveUsageEntryForAudit(e);if(!t)return e;let n=this.auditEntryWithLiveUsage(e,t);return this.removeSkippedLiveUsage(t),n},liveUsageEntryForAudit(e){let t=String(e&&e.request_id||``).trim();return t&&((this.usageLog&&Array.isArray(this.usageLog.entries)?this.usageLog.entries:[]).find(e=>String(e&&e.request_id||``).trim()===t)||this.skippedLiveUsageByRequestId&&this.skippedLiveUsageByRequestId[t])||null},cacheMergedAuditRecord(e,t){return e&&typeof this.cacheAuditRecord==`function`?this.cacheAuditRecord(e,t):e},fetchExpandedAuditDetailIfReady(e){!e||!this.isAuditEntryExpanded||!this.isAuditEntryExpanded(e)||String(e._live_state||``).trim()!==`audit.flushed`&&!e._audit_flushed||typeof this.fetchAuditEntryDetail==`function`&&this.fetchAuditEntryDetail(e)},liveAuditStateRank(e){switch(String(e||``).trim()){case`audit.started`:return 10;case`audit.updated`:case`audit.stream`:return 20;case`audit.completed`:return 30;case`audit.failed`:case`audit.flushed`:case`audit.detail`:return 40;default:return 0}},liveAuditStateAfter(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return this.liveAuditStateRank(n)>this.liveAuditStateRank(r)?n:r},liveAuditStateSettled(e){return this.liveAuditStateRank(e)>=this.liveAuditStateRank(`audit.completed`)},liveAuditEventFlushed(e){let t=String(e||``).trim();return t===`audit.failed`||t===`audit.flushed`||t===`audit.detail`},removeLiveAuditEntry(e){if(!e||!this.auditLog||!Array.isArray(this.auditLog.entries))return;let t=String(e.id||``).trim(),n=String(e.request_id||``).trim();if(!t&&!n)return;let r=this.auditLog.entries,i=[],a=0,o=0,s=!1;r.forEach(e=>{if(!ED(e,t,n)){i.push(e);return}a++;let r=String(e.session_id||``).trim(),c=Math.max(1,Number(e.session_count||1));if(!this.auditGroupSessions||!r||c<=1)return;o++;let l=this.auditThreadChildren&&this.auditThreadChildren[r],u=l&&Array.isArray(l.entries)?l.entries.filter(e=>!ED(e,t,n)):[];if(u.length===0){s=!0;return}let d={...u[0],session_id:r,session_count:c-1};i.push(d),this.auditThreadChildren={...this.auditThreadChildren,[r]:{...l,entries:u.slice(1),total:Math.max(0,Number(l.total||c)-1)}}}),a>0&&(this.auditLog.entries=i,this.auditLog.total=Math.max(0,Number(this.auditLog.total||0)-a+o)),this.removeLiveAuditThreadChild(t,n),s&&typeof this.fetchAuditLog==`function`&&this.fetchAuditLog(!0)},mergeLiveUsageEntry(e,t){if(!e||typeof e!=`object`)return;e={...e,_live_state:t||e._live_state||`usage.completed`};let n=String(e.id||``).trim();if(!n)return;let r=this.usageLog&&Array.isArray(this.usageLog.entries)?this.usageLog.entries:[],i=r.findIndex(e=>String(e.id||``).trim()===n);if(i>=0){let t=r[i]||{},n=this.mergeLiveUsagePatch(t,e);if(this.applyLiveUsageToAudit(n),this.liveUsageShouldSkip(n)){r.splice(i,1),this.usageLog.entries=[...r],this.usageLog.total=Math.max(0,Number(this.usageLog.total||0)-1),this.storeSkippedLiveUsage(n);return}r.splice(i,1,n),this.usageLog.entries=[...r],this.removeSkippedLiveUsage(n);return}let a=this.mergeLiveUsagePatch(this.liveUsageSeedForEntry(e),e);if(this.applyLiveUsageToAudit(a),this.liveUsageShouldSkip(a)){this.storeSkippedLiveUsage(a);return}this.removeSkippedLiveUsage(a),this.usageLog.entries=[a,...r].slice(0,this.usageLog.limit||50),this.usageLog.total=Number(this.usageLog.total||0)+1},mergeLiveUsagePatch(e,t){e=e&&typeof e==`object`?e:{};let n=this.liveUsageStateAfter(e._live_state,t&&t._live_state),r=this.liveUsageEventFlushed(e)||this.liveUsageEventFlushed({...t,_live_state:n});return{...e,...t,_live:!0,_live_state:n||`usage.completed`,_live_pending:!r,_usage_flushed:r}},liveUsageShouldSkip(e){return!!(this.usageLogHideCached&&this.liveUsageEntryCached(e))||!this.usageLiveInsertAllowed()},liveUsageSeedForEntry(e){return this.skippedLiveUsageForEntry(e)||this.auditLiveUsageForEntry(e)},skippedLiveUsageForEntry(e){let t=String(e&&e.request_id||``).trim();return t&&this.skippedLiveUsageByRequestId?this.skippedLiveUsageByRequestId[t]:null},auditLiveUsageForEntry(e){let t=String(e&&e.request_id||``).trim();if(!t||!this.auditLog||!Array.isArray(this.auditLog.entries))return null;let n=this.auditLog.entries.find(e=>String(e&&e.request_id||``).trim()===t),r=n&&n.usage&&typeof n.usage==`object`&&!Array.isArray(n.usage)?n.usage:null;return r?{id:e&&e.id,request_id:t,entries:r.entries,input_tokens:r.input_tokens,uncached_input_tokens:r.uncached_input_tokens,cached_input_tokens:r.cached_input_tokens,cache_write_input_tokens:r.cache_write_input_tokens,output_tokens:r.output_tokens,total_tokens:r.total_tokens,cached_input_ratio:r.cached_input_ratio,estimated_cached_characters:r.estimated_cached_characters,_live_state:n._usage_live_state,_live_pending:n._usage_live_pending,_usage_flushed:n._usage_flushed}:null},storeSkippedLiveUsage(e){let t=String(e&&e.request_id||``).trim();t&&((!this.skippedLiveUsageByRequestId||typeof this.skippedLiveUsageByRequestId!=`object`||Array.isArray(this.skippedLiveUsageByRequestId))&&(this.skippedLiveUsageByRequestId={}),this.skippedLiveUsageByRequestId[t]=e)},removeSkippedLiveUsage(e){let t=String(e&&e.request_id||``).trim();t&&this.skippedLiveUsageByRequestId&&delete this.skippedLiveUsageByRequestId[t]},liveUsageEntryCached(e){let t=String(e&&e.cache_type||``).trim().toLowerCase();return t===`exact`||t===`semantic`||!!(e&&e.cache_hit)},liveUsageEventFlushed(e){let t=String(e&&e._live_state||``).trim();return!!(e&&e._usage_flushed)||t===`usage.failed`||t===`usage.flushed`},liveUsageStateRank(e){switch(String(e||``).trim()){case`usage.completed`:return 10;case`usage.failed`:case`usage.flushed`:return 20;default:return 0}},liveUsageStateAfter(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return this.liveUsageStateRank(n)>this.liveUsageStateRank(r)?n:r},applyLiveUsageToAudit(e){let t=String(e&&e.request_id||``).trim();if(!t||!this.auditLog||!Array.isArray(this.auditLog.entries))return;let n=this.auditLog.entries.findIndex(e=>String(e.request_id||``).trim()===t);if(n>=0){let t=this.auditLog.entries[n];this.auditLog.entries.splice(n,1,this.auditEntryWithLiveUsage(t,e)),this.auditLog.entries=[...this.auditLog.entries]}let r=this.auditThreadChildren;if(!r||typeof r!=`object`)return;let i=r,a=!1;Object.keys(r).forEach(n=>{let r=i[n],o=r&&Array.isArray(r.entries)?r.entries:[],s=o.findIndex(e=>String(e.request_id||``).trim()===t);if(s<0)return;let c=[...o];c.splice(s,1,this.auditEntryWithLiveUsage(o[s],e)),i={...i,[n]:{...r,entries:c}},a=!0}),a&&(this.auditThreadChildren=i)},auditEntryWithLiveUsage(e,t){let n=this.liveUsageStateAfter(e._usage_live_state,t._live_state||`usage.completed`),r=this.liveUsageEventFlushed({_live_state:n,_usage_flushed:e._usage_flushed||t._usage_flushed});return{...e,usage:this.liveUsageSummary(t,e.usage),_usage_live_state:n||`usage.completed`,_usage_live_pending:!r,_usage_flushed:r}},liveUsageSummary(e,t){let n=t&&typeof t==`object`&&!Array.isArray(t)?t:{},r=this.liveNumber(e.input_tokens,this.liveNumber(n.input_tokens,0)),i=this.liveNumber(e.output_tokens,this.liveNumber(n.output_tokens,0)),a=this.liveNumber(e.uncached_input_tokens,this.liveNumber(n.uncached_input_tokens,0)),o=this.liveNumber(e.cached_input_tokens,this.liveNumber(n.cached_input_tokens,0)),s=this.liveNumber(e.cache_write_input_tokens,this.liveNumber(n.cache_write_input_tokens,0));r>0&&a+o+s===0&&(a=r);let c=a+o+s||r,l=c+i||this.liveNumber(e.total_tokens,this.liveNumber(n.total_tokens,0)),u=this.liveNumber(e.cached_input_ratio,this.liveNumber(n.cached_input_ratio,c>0?o/c:0));return{entries:Math.max(1,this.liveNumber(e.entries,this.liveNumber(n.entries,1))),input_tokens:c,uncached_input_tokens:a,cached_input_tokens:o,cache_write_input_tokens:s,output_tokens:i,total_tokens:l,cached_input_ratio:u,estimated_cached_characters:this.liveNumber(e.estimated_cached_characters,this.liveNumber(n.estimated_cached_characters,o*4))}},liveNumber(e,t){let n=Number(e);return Number.isFinite(n)?n:t},auditEntryShouldFetchDetail(e){return!e||e._detail_loading||e._detail_loaded||this.auditEntryLiveDetailPending(e)?!1:this.auditEntryNeedsPersistedLiveDetail(e)||e.bodies_omitted?!0:!this.auditEntryHasDetailData(e)},auditEntryLiveDetailPending(e){if(!e||!e._live)return!1;let t=String(e._live_state||``).trim();return t===`audit.failed`||!e._audit_flushed&&t!==`audit.flushed`&&t!==`audit.detail`},auditEntryNeedsPersistedLiveDetail(e){return!!(e&&e._live&&!e._detail_loaded)},auditEntryHasDetailData(e){let t=e&&e.data;return!t||typeof t!=`object`?!1:t.request_headers!==void 0||t.response_headers!==void 0||t.request_body!==void 0||t.response_body!==void 0||t.request_body_too_big_to_handle!==void 0||t.response_body_too_big_to_handle!==void 0||t.user_agent!==void 0||t.api_key_hash!==void 0||t.temperature!==void 0||t.max_tokens!==void 0||t.error_message!==void 0||t.error_code!==void 0},clearAuditDetailLoading(e){if(!e)return;let t=String(e.id||``).trim(),n=String(e.request_id||``).trim(),r=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],i=r.find(e=>t&&String(e.id||``).trim()===t?!0:!!(n&&String(e.request_id||``).trim()===n)),a=i||e;a._detail_loading=!1,i&&(this.auditLog.entries=[...r])}}}var AD={"audit.started":10,"audit.updated":20,"audit.stream":20,"audit.completed":30,"audit.failed":40,"audit.flushed":40,"audit.detail":40},jD=new Set(Object.keys(AD));function MD(e){return String(e&&(e.id||e.request_id)||``).trim()}function ND(e,t){let n=e&&typeof e==`object`?e:{},r=t&&typeof t==`object`?t:{},i={...n,...r};r.data==null&&n.data!=null?i.data=n.data:ID(n.data)&&ID(r.data)&&(i.data={...n.data,...r.data});let a=String(n._live_state||``).trim(),o=String(r._live_state||``).trim();return(AD[a]||0)>(AD[o]||0)&&(i._live_state=a),n._audit_flushed&&(i._audit_flushed=!0),i._audit_flushed&&(i._live_pending=!1),n._detail_loaded&&!r._detail_loaded&&(i._detail_loaded=!0,i.bodies_omitted=!1),i.bodies_omitted&&ID(i.data)&&(i.data.request_body!==void 0||i.data.response_body!==void 0)&&(i.bodies_omitted=!1),i}function PD(e,t){let n=Number(t||0);return(Array.isArray(e)?e:[]).filter(e=>Number(e&&e.version||0)>n)}function FD(e){return jD.has(String(e&&e.eventType||``).trim())}function ID(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}var LD=200,RD=class{#e=j(N({entries:[],total:0,limit:25,offset:0}));get auditLog(){return R(this.#e)}set auditLog(e){M(this.#e,e,!0)}#t=j(N({entries:[],total:0,limit:50,offset:0}));get usageLog(){return R(this.#t)}set usageLog(e){M(this.#t,e,!0)}#n=j(N({}));get auditRecords(){return R(this.#n)}set auditRecords(e){M(this.#n,e,!0)}#r=j(N([]));get auditRecordChanges(){return R(this.#r)}set auditRecordChanges(e){M(this.#r,e,!0)}auditRecordVersion=0;auditRecordPins=new Set;#i=j(``);get auditSearch(){return R(this.#i)}set auditSearch(e){M(this.#i,e,!0)}#a=j(``);get auditMethod(){return R(this.#a)}set auditMethod(e){M(this.#a,e,!0)}#o=j(``);get auditStatusCode(){return R(this.#o)}set auditStatusCode(e){M(this.#o,e,!0)}#s=j(``);get auditStream(){return R(this.#s)}set auditStream(e){M(this.#s,e,!0)}#c=j(Ja(`gomodel_audit_group_sessions`,`true`)!==`false`);get auditGroupSessions(){return R(this.#c)}set auditGroupSessions(e){M(this.#c,e,!0)}#l=j(N({}));get auditThreadChildren(){return R(this.#l)}set auditThreadChildren(e){M(this.#l,e,!0)}#u=j(``);get usageLogSearch(){return R(this.#u)}set usageLogSearch(e){M(this.#u,e,!0)}#d=j(``);get usageFilterModel(){return R(this.#d)}set usageFilterModel(e){M(this.#d,e,!0)}#f=j(``);get usageFilterProvider(){return R(this.#f)}set usageFilterProvider(e){M(this.#f,e,!0)}#p=j(``);get usageFilterLabel(){return R(this.#p)}set usageFilterLabel(e){M(this.#p,e,!0)}#m=j(``);get usageFilterUserPath(){return R(this.#m)}set usageFilterUserPath(e){M(this.#m,e,!0)}#h=j(!1);get usageLogHideCached(){return R(this.#h)}set usageLogHideCached(e){M(this.#h,e,!0)}#g=j(!1);get liveLogsStreaming(){return R(this.#g)}set liveLogsStreaming(e){M(this.#g,e,!0)}liveLogsLastSeq=0;liveLogsReconnectAttempts=0;liveLogsReconnectTimer=null;liveLogsController=null;skippedLiveUsageByRequestId=null;fetchUsage=null;fetchAuditLog=null;isAuditEntryExpanded=null;noteLiveTokenUsage=null;upsertAuditRecord(e,t=``){let n=MD(e);if(!n)return e;let r=ND(this.auditRecords[n],e);return this.auditRecords={...this.auditRecords,[n]:r},this.pruneAuditRecords(),this.auditRecordVersion++,this.auditRecordChanges=[...this.auditRecordChanges,{version:this.auditRecordVersion,key:n,eventType:t}].slice(-512),r}upsertAuditRecords(e,t=``){return(Array.isArray(e)?e:[]).map(e=>this.upsertAuditRecord(e,t))}auditRecord(e){let t=typeof e==`string`?String(e).trim():MD(e);return t&&this.auditRecords[t]||null}cacheAuditRecord(e,t){return this.upsertAuditRecord(e,t)}pinAuditRecords(e){this.auditRecordPins=new Set((Array.isArray(e)?e:[]).map(String))}pruneAuditRecords(){let e=Object.keys(this.auditRecords);if(e.length<=LD)return;let t={...this.auditRecords},n=e.length-LD;for(let r of e){if(n<=0)break;this.auditRecordPins.has(r)||(delete t[r],n--)}this.auditRecords=t}get page(){return Gu.page}get customStartDate(){return Vf.customStartDate}get customEndDate(){return Vf.customEndDate}get followsToday(){return Vf.followsToday}liveLogsEnabled(){return Td.liveLogsVisible()}async startLiveLogs(){typeof fetch!=`function`||typeof ReadableStream>`u`||(await Td.ensureLoaded(),this.liveLogsEnabled()&&(this.stopLiveLogs(),this.liveLogsController=typeof AbortController==`function`?new AbortController:null,this.readLiveLogsStream(this.liveLogsController)))}stopLiveLogs(){this.liveLogsStreaming=!1,this.liveLogsReconnectTimer&&=(clearTimeout(this.liveLogsReconnectTimer),null),this.liveLogsController&&typeof this.liveLogsController.abort==`function`&&this.liveLogsController.abort(),this.liveLogsController=null}ensureLiveLogs(){this.liveLogsController||this.liveLogsReconnectTimer||this.startLiveLogs()}async readLiveLogsStream(e){let t={};e&&(t.signal=e.signal);let n=OD(this.liveLogsLastSeq),r=Y.generation;try{let i=await vd(n,t);if(i.status===401){if(Y.handleUnauthorized(r),r{this.liveLogsReconnectTimer=null,this.startLiveLogs()},t)}async fetchAuditEntryDetail(e){if(!this.auditEntryShouldFetchDetail(e))return;let t=String(e.id||``).trim();if(!t)return;e._detail_loading=!0;let n=e;try{let e=await bd(`/admin/audit/detail?log_id=`+encodeURIComponent(t),{label:`audit detail`});if(e.stale||!e.ok)return;n=this.mergeLiveAuditEntry(e.data,`audit.detail`)||n}catch(e){console.error(`Failed to fetch audit detail:`,e)}finally{this.clearAuditDetailLoading(n)}}};Object.assign(RD.prototype,kD());var zD=new RD;if(typeof window<`u`){let e=!1;window.addEventListener(`pagehide`,()=>{e=!!zD.liveLogsController,zD.stopLiveLogs()}),window.addEventListener(`pageshow`,t=>{t.persisted&&e&&zD.ensureLiveLogs()})}var BD=null;An(()=>{On(()=>{let e=Y.refreshTick;if(BD===null){BD=e;return}e!==BD&&(BD=e,wr(()=>{zD.stopLiveLogs(),zD.startLiveLogs()}))})});function VD(){return{total_requests:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,uncached_input_tokens:0,cached_input_tokens:0,cache_write_input_tokens:0,total_input_cost:null,total_output_cost:null,total_cost:null,rewrite_tokens_saved:0,rewrite_cost_saved:null}}function HD(){return{entries:[],total:0,limit:50,offset:0}}function UD(e,t){let n=[[`model`,e&&e.model],[`provider`,e&&e.provider],[`label`,e&&e.label],[`user_path`,e&&e.user_path]],r=``;for(let[e,i]of n)!i||e===t||(r+=`&`+e+`=`+encodeURIComponent(i));return r}function WD({limit:e,offset:t,hideCached:n,search:r}){let i=`&limit=`+e+`&offset=`+t;return i+=`&cache_mode=`+(n?`uncached`:`all`),r&&(i+=`&search=`+encodeURIComponent(r)),i}function GD(e,t){let n=new Set(e||[]);return t&&n.add(t),[...n].sort()}function KD(e,t){let n=Number(t&&t.total_requests||0)-Number(e&&e.total_requests||0);return Number.isFinite(n)&&n>0?n:0}function qD(e,t,n){let r=n?e:t,i=Number(r&&r.total_requests||0);return Number.isFinite(i)?i:0}function JD(e,t,n){let r=KD(e,t);return r<=0?``:n?mf(r)+` cached requests hidden`:mf(Number(e&&e.total_requests||0))+` to providers + `+mf(r)+` from cache`}function YD(e){let t=e||{};return t.total_input_cost===null||t.total_input_cost===void 0?``:hf(t.total_input_cost)+` input + `+hf(t.total_output_cost)+` output`}function XD(e){let t=Number(e&&e.rewrite_tokens_saved||0);return Number.isFinite(t)&&t>0?t:0}function ZD(e){return XD(e)>0}function QD(e){let t=e||{};return t.rewrite_cost_saved===void 0?null:t.rewrite_cost_saved}function $D(){return`Estimated at 4 net characters removed per token`}function eO(e,t){return t===`costs`?hf(QD(e)):vf(XD(e))}function tO(e,t){let n=t===`costs`,r=n?Number(QD(e)):XD(e);if(!Number.isFinite(r)||r<=0)return null;let i=e&&(n?e.total_cost:e.total_input_tokens);if(i==null)return null;let a=Number(i);return!Number.isFinite(a)||a<0?null:r/(a+r)*100}function nO(e,t){let n=tO(e,t);return n===null?``:(n<.1?`<0.1`:n.toFixed(1))+`% less`}function rO(e,t){let n=XD(e);if(n<=0)return``;let r=[mf(n)+` estimated prompt token-transmissions removed across provider requests`,$D(),`Savings are summed per provider request; resent conversation history is counted again`],i=QD(e);i!=null&&(r.push(hf(i)+` estimated gross input cost avoided`),r.push(`Prompt-cache changes caused by rewriting are not included`));let a=nO(e,t);return a&&r.push(a+` than the same traffic without rewriting (`+(t===`costs`?`cost`:`tokens`)+`)`),r.join(` +`)}function iO(e){return String(e&&e.cost_source||``).trim()}function aO(e){let t=iO(e);return t===`openrouter_credits`||t===`xai_cost_in_usd_ticks`}function oO(e){switch(iO(e)){case`openrouter_credits`:return`Costs from OpenRouter USD-based credits.`;case`xai_cost_in_usd_ticks`:return`Costs from xAI usage.cost_in_usd_ticks.`;default:return``}}function sO(e){return String(e&&e.cache_type||``).trim().toLowerCase()}function cO(e){let t=sO(e);return t===`exact`||t===`semantic`}function lO(e){let t=sO(e);return t===`exact`?`Exact`:t===`semantic`?`Semantic`:`-`}function uO(e,t){let n=t?String(t):``;return cO(e)?n?`Saved by cache — not charged +`+n:`Saved by cache — not charged`:n}function dO(e){let t=Number(e&&e.cached_input_ratio);return!Number.isFinite(t)||t<=0?0:Math.min(1,t)}function fO(e){return Number(e&&e.cached_input_tokens||0)>0}function pO(e){return fO(e)?(dO(e)*100).toFixed(1)+`%`:``}function mO(e){if(!fO(e))return``;let t=Number(e.cached_input_tokens||0),n=Number(e.uncached_input_tokens||0),r=Number(e.cache_write_input_tokens||0),i=t+n+r,a=[mf(t)+` cached / `+mf(i)+` input tokens`];return r>0&&a.push(mf(r)+` cache write`),a.join(` +`)}function hO(e){let t=[];if(oO(e)&&(t.push(oO(e)),t.push(``)),t.push(`Input: `+hf(e.input_cost)),t.push(`Output: `+hf(e.output_cost)),e.raw_data){t.push(``);for(let[n,r]of Object.entries(e.raw_data)){let e=n.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase()),i=r&&typeof r==`object`?JSON.stringify(r):mf(r);t.push(e+`: `+i)}}return t.join(` +`)}function gO(e){return Array.isArray(e&&e.labels)?e.labels:[]}function _O(e,t,n){return(e||[]).length>0||t?!0:(n||[]).some(e=>gO(e).length>0)}function vO(e){return e&&typeof e.total_tokens==`number`?e.total_tokens:(e&&e.input_tokens||0)+(e&&e.output_tokens||0)}function yO(e,t){return t?e.total_cost||0:vO(e)}function bO(e,t){return[...e||[]].sort((e,n)=>t?(n.total_cost||0)-(e.total_cost||0):yO(n,t)-yO(e,t))}function xO(e){let t=Array.isArray(e)?e:[];if(t.length===0)return!1;if(t.length!==1)return!0;let n=String(t[0]&&t[0].user_path||``).trim();return n!==``&&n!==`/`}function SO(e){return(e||`chart`)===`chart`||e===`stacked`}function CO(e,t,n){let r=bO(e,n),i=e=>Number(e)||0,a=e=>n?Math.min(i(e.cached_input_cost),i(e.input_cost)):i(e.cached_input_tokens),o=e=>n?i(e.input_cost)-a(e):i(e.uncached_input_tokens)+i(e.cached_input_tokens)+i(e.cache_write_input_tokens)>0?i(e.uncached_input_tokens)+i(e.cache_write_input_tokens):i(e.input_tokens),s=e=>i(n?e.output_cost:e.output_tokens),c=e=>n?0:i(e.local_cached_input_tokens),l=e=>n?0:i(e.local_cached_output_tokens),u=r.slice(0,10),d=r.slice(10),f=u.map(t),p=u.map(o),m=u.map(s),h=u.map(a),g=u.map(c),_=u.map(l);if(d.length>0){f.push(`Other`);let e=e=>d.reduce((t,n)=>t+e(n),0);p.push(e(o)),m.push(e(s)),h.push(e(a)),g.push(e(c)),_.push(e(l))}return{labels:f,inputs:p,outputs:m,prompts:h,localIns:g,localOuts:_}}function wO(e){return Math.max(200,e*32+72)}var TO=new class{#e=j(`tokens`);get usageMode(){return R(this.#e)}set usageMode(e){M(this.#e,e,!0)}get usageFilterModel(){return zD.usageFilterModel}set usageFilterModel(e){zD.usageFilterModel=e}get usageFilterProvider(){return zD.usageFilterProvider}set usageFilterProvider(e){zD.usageFilterProvider=e}get usageFilterLabel(){return zD.usageFilterLabel}set usageFilterLabel(e){zD.usageFilterLabel=e}get usageFilterUserPath(){return zD.usageFilterUserPath}set usageFilterUserPath(e){zD.usageFilterUserPath=e}#t=j(N({models:[],providers:[],labels:[]}));get usageFacetOptions(){return R(this.#t)}set usageFacetOptions(e){M(this.#t,e,!0)}#n=j(N(VD()));get usageSummary(){return R(this.#n)}set usageSummary(e){M(this.#n,e,!0)}#r=j(N(VD()));get usageSummaryAll(){return R(this.#r)}set usageSummaryAll(e){M(this.#r,e,!0)}#i=j(N([]));get modelUsage(){return R(this.#i)}set modelUsage(e){M(this.#i,e,!0)}#a=j(N([]));get userPathUsage(){return R(this.#a)}set userPathUsage(e){M(this.#a,e,!0)}#o=j(N([]));get labelUsage(){return R(this.#o)}set labelUsage(e){M(this.#o,e,!0)}get usageLog(){return zD.usageLog}set usageLog(e){zD.usageLog=e}get usageLogSearch(){return zD.usageLogSearch}set usageLogSearch(e){zD.usageLogSearch=e}get usageLogHideCached(){return zD.usageLogHideCached}set usageLogHideCached(e){zD.usageLogHideCached=e}#s=j(`chart`);get modelUsageView(){return R(this.#s)}set modelUsageView(e){M(this.#s,e,!0)}#c=j(`chart`);get userPathUsageView(){return R(this.#c)}set userPathUsageView(e){M(this.#c,e,!0)}#l=j(`chart`);get labelUsageView(){return R(this.#l)}set labelUsageView(e){M(this.#l,e,!0)}#u=j(!1);get summaryLoading(){return R(this.#u)}set summaryLoading(e){M(this.#u,e,!0)}#d=j(!1);get modelUsageLoading(){return R(this.#d)}set modelUsageLoading(e){M(this.#d,e,!0)}#f=j(!1);get userPathUsageLoading(){return R(this.#f)}set userPathUsageLoading(e){M(this.#f,e,!0)}#p=j(!1);get labelUsageLoading(){return R(this.#p)}set labelUsageLoading(e){M(this.#p,e,!0)}#m=j(!1);get usageLogLoading(){return R(this.#m)}set usageLogLoading(e){M(this.#m,e,!0)}#h={};#g(e){this.#h[e]&&this.#h[e].abort();let t=new AbortController;return this.#h[e]=t,t}#_(e,t){this.#h[e]===t&&(this.#h[e]=null)}filterQueryStr(e){return UD({model:this.usageFilterModel,provider:this.usageFilterProvider,label:this.usageFilterLabel,user_path:this.usageFilterUserPath},e)}onUsageFilterChanged(){this.fetchUsagePage()}toggleUsageLabelFilter(e){this.usageFilterLabel=this.usageFilterLabel===e?``:e,this.onUsageFilterChanged()}usageLabelChipTitle(e){return this.usageFilterLabel===e?`Clear label filter`:`Filter usage by "`+e+`"`}toggleUsageMode(e){this.usageMode=e,Gu.navigate(`usage`,e===`costs`?`costs`:null)}toggleUsageChartView(e,t){e===`model`&&(this.modelUsageView=t),e===`userPath`&&(this.userPathUsageView=t),e===`label`&&(this.labelUsageView=t)}usageFilterModelOptions(){return GD(this.usageFacetOptions.models,this.usageFilterModel)}usageFilterProviderOptions(){return GD(this.usageFacetOptions.providers,this.usageFilterProvider)}usageFilterLabelOptions(){return GD(this.usageFacetOptions.labels,this.usageFilterLabel)}async fetchUsagePage(){await Td.ensureLoaded();let e=[this.fetchUsagePageSummary(),this.fetchUsageFacetOptions(),this.fetchModelUsage(),this.fetchUserPathUsage(),this.fetchLabelUsage(),this.fetchUsageLog(!0)];qf.cacheAnalyticsEnabled()&&e.push(qf.fetchCacheOverview(this.filterQueryStr())),await Promise.all(e)}async fetchUsagePageSummary(){let e=this.#g(`summary`);this.summaryLoading=!0;try{let t=Vf.queryStr()+this.filterQueryStr(),[n,r]=await Promise.all([bd(`/admin/usage/summary?`+t+`&cache_mode=uncached`,{label:`usage page summary`,signal:e.signal}),bd(`/admin/usage/summary?`+t+`&cache_mode=all`,{label:`usage page summary (all)`,signal:e.signal})]);if(n.stale||r.stale||e.signal.aborted)return;if(!n.ok||!r.ok){this.usageSummary=VD(),this.usageSummaryAll=VD();return}this.usageSummary=n.data&&typeof n.data==`object`?n.data:VD(),this.usageSummaryAll=r.data&&typeof r.data==`object`?r.data:VD()}catch(e){if(Sd(e))return;console.error(`Failed to fetch usage page summary:`,e),this.usageSummary=VD(),this.usageSummaryAll=VD()}finally{this.#_(`summary`,e),this.#h.summary===null&&(this.summaryLoading=!1)}}async fetchUsageFacetOptions(){let e=this.#g(`facets`);try{let t=async(t,n)=>{let r=await bd(t+`?`+Vf.queryStr()+this.filterQueryStr(n),{label:`usage facet options`,signal:e.signal});return r.stale?null:r.ok&&Array.isArray(r.data)?r.data:[]},n=t(`/admin/usage/models`,`model`),r=!this.usageFilterModel&&!this.usageFilterProvider,[i,a,o]=await Promise.all([n,r?n:t(`/admin/usage/models`,`provider`),t(`/admin/usage/labels`,`label`)]);if(e.signal.aborted||i===null||a===null||o===null)return;this.usageFacetOptions={models:i.map(e=>e&&e.model).filter(Boolean),providers:a.map(e=>wf(e)).filter(Boolean),labels:o.map(e=>e&&e.label).filter(Boolean)}}catch(e){if(Sd(e))return;console.error(`Failed to fetch usage facet options:`,e),this.usageFacetOptions={models:[],providers:[],labels:[]}}finally{this.#_(`facets`,e)}}async#v(e,t,n,r,i){let a=this.#g(e);i(!0);try{let e=await bd(t+`?`+Vf.queryStr()+this.filterQueryStr(),{label:n,signal:a.signal});if(e.stale||a.signal.aborted)return;if(!e.ok){r([]);return}r(Array.isArray(e.data)?e.data:[])}catch(e){if(Sd(e))return;console.error(`Failed to fetch `+n+`:`,e),r([])}finally{this.#_(e,a),this.#h[e]===null&&i(!1)}}fetchModelUsage(){return this.#v(`modelUsage`,`/admin/usage/models`,`usage models`,e=>this.modelUsage=e,e=>this.modelUsageLoading=e)}fetchUserPathUsage(){return this.#v(`userPathUsage`,`/admin/usage/user-paths`,`usage user paths`,e=>this.userPathUsage=e,e=>this.userPathUsageLoading=e)}fetchLabelUsage(){return this.#v(`labelUsage`,`/admin/usage/labels`,`usage labels`,e=>this.labelUsage=e,e=>this.labelUsageLoading=e)}async fetchUsageLog(e){let t=this.#g(`usageLog`);this.usageLogLoading=!0;try{e&&(this.usageLog.offset=0);let n=Vf.queryStr()+this.filterQueryStr();n+=WD({limit:this.usageLog.limit,offset:this.usageLog.offset,hideCached:this.usageLogHideCached,search:this.usageLogSearch});let r=await bd(`/admin/usage/log?`+n,{label:`usage log`,signal:t.signal});if(r.stale||t.signal.aborted)return;if(!r.ok){this.usageLog=HD();return}let i=r.data&&typeof r.data==`object`?r.data:HD();i.entries||=[],this.usageLog=i}catch(e){if(Sd(e))return;console.error(`Failed to fetch usage log:`,e),this.usageLog=HD()}finally{this.#_(`usageLog`,t),this.#h.usageLog===null&&(this.usageLogLoading=!1)}}usageLogNextPage(){this.usageLog.offset+this.usageLog.limit0&&(this.usageLog.offset=Math.max(0,this.usageLog.offset-this.usageLog.limit),this.fetchUsageLog(!1))}};zD.fetchUsage=()=>{Gu.page===`usage`&&TO.fetchUsagePage()};var EO=B(`
`);function DO(e,t){O(t,!0);let n=q(t,`value`,15,``),r=q(t,`placeholder`,3,``),i=q(t,`label`,3,``),a=q(t,`id`,3,void 0),o=q(t,`oninput`,3,void 0),s=q(t,`class`,3,``);var c=EO(),l=P(c);J(l,{get icon(){return mu},class:`filter-input-icon`});var u=I(l,2);ea(u),D(c),L(()=>{G(c,1,Ni([`filter-input-wrap`,s()]),`svelte-30xz1k`),K(u,`id`,a()),K(u,`placeholder`,r()),K(u,`aria-label`,i())}),z(`input`,u,function(...e){o()?.apply(this,e)}),la(u,n),V(e,c),k()}Br([`input`]);function OO(e,t=300){let n=null,r=(...r)=>{clearTimeout(n),n=setTimeout(()=>{n=null,e(...r)},t)};return r.cancel=()=>{clearTimeout(n),n=null},r}var kO=B(``),AO=B(``),jO=B(`
`);function MO(e,t){O(t,!0);let n=OO(()=>TO.onUsageFilterChanged());On(()=>n.cancel);var r=jO(),i=P(r),a=P(i);a.value=a.__value=``,W(I(a),16,()=>TO.usageFilterModelOptions(),e=>e,(e,t)=>{var n=kO(),r=P(n,!0);D(n);var i={};L(()=>{H(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(i);var o=I(i,2),s=P(o);s.value=s.__value=``,W(I(s),16,()=>TO.usageFilterProviderOptions(),e=>e,(e,t)=>{var n=kO(),r=P(n,!0);D(n);var i={};L(()=>{H(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(o);var c=I(o,2),l=e=>{var t=AO(),n=P(t);n.value=n.__value=``,W(I(n),16,()=>TO.usageFilterLabelOptions(),e=>e,(e,t)=>{var n=kO(),r=P(n,!0);D(n);var i={};L(()=>{H(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(t),z(`change`,t,()=>TO.onUsageFilterChanged()),Ui(t,()=>TO.usageFilterLabel,e=>TO.usageFilterLabel=e),V(e,t)},u=A(()=>TO.usageFilterLabelOptions().length>0);U(c,e=>{R(u)&&e(l)}),DO(I(c,2),{class:`usage-page-filters-user-path`,placeholder:`User path /team/alpha`,label:`Filter by user path`,get oninput(){return n},get value(){return TO.usageFilterUserPath},set value(e){TO.usageFilterUserPath=e}}),D(r),z(`change`,i,()=>TO.onUsageFilterChanged()),Ui(i,()=>TO.usageFilterModel,e=>TO.usageFilterModel=e),z(`change`,o,()=>TO.onUsageFilterChanged()),Ui(o,()=>TO.usageFilterProvider,e=>TO.usageFilterProvider=e),V(e,r),k()}Br([`change`]);var NO=B(`
Cache Saved
Cache Hits
`,1);function PO(e,t){O(t,!0);var n=Xr(),r=F(n),i=e=>{var t=NO(),n=F(t),r=I(P(n),2),i=P(r,!0);D(r),D(n);var a=I(n,2),o=I(P(a),2),s=P(o,!0);D(o),D(a),L((e,t)=>{H(i,e),H(s,t)},[()=>hf(qf.cacheOverview.summary.total_saved_cost),()=>mf(qf.cacheOverview.summary.total_hits)]),V(e,t)},a=A(()=>qf.cacheAnalyticsEnabled());U(r,e=>{R(a)&&e(i)}),V(e,n),k()}var FO=B(` `),IO=B(`
Pro Saved
`),LO=B(`
Total Requests
Estimated Cost
`);function RO(e,t){O(t,!0);let n=A(()=>ZD(TO.usageSummary)),r=A(()=>eO(TO.usageSummary,TO.usageMode)),i=A(()=>nO(TO.usageSummary,TO.usageMode));var a=LO(),o=P(a),s=I(P(o),2),c=P(s),l=e=>{kE(e,{size:18,label:`Loading usage summary`})},u=e=>{var t=Yr();L(e=>H(t,e),[()=>mf(qD(TO.usageSummary,TO.usageSummaryAll,TO.usageLogHideCached))]),V(e,t)};U(c,e=>{TO.summaryLoading?e(l):e(u,-1)}),D(s),D(o);var d=I(o,2),f=I(P(d),2),p=P(f),m=e=>{kE(e,{size:18,label:`Loading usage summary`})},h=e=>{var t=Yr();L(e=>H(t,e),[()=>hf(TO.usageSummary.total_cost)]),V(e,t)};U(p,e=>{TO.summaryLoading?e(m):e(h,-1)}),D(f),D(d);var g=I(d,2),_=e=>{var t=IO(),n=I(P(t),2),a=P(n),o=P(a,!0);D(a);var s=I(a,2),c=e=>{var t=FO(),n=P(t,!0);D(t),L(()=>H(n,R(i))),V(e,t)};U(s,e=>{R(i)&&e(c)}),D(n),D(t),L(e=>{K(n,`title`,e),H(o,R(r))},[()=>rO(TO.usageSummary,TO.usageMode)]),V(e,t)};U(g,e=>{R(n)&&e(_)}),PO(I(g,2),{}),D(a),L((e,t)=>{K(s,`title`,e),K(f,`title`,t)},[()=>JD(TO.usageSummary,TO.usageSummaryAll,TO.usageLogHideCached),()=>YD(TO.usageSummary)]),V(e,a),k()}function zO(e,t,n,r){let{stacked:i=!1,costs:a=!1,resolve:o=e=>e}=r||{},s=e=>a?`$`+Math.abs(e).toFixed(2):vf(Math.abs(e)),c=e=>a?`$`+Math.abs(e).toFixed(4):Math.abs(e).toLocaleString(),l=e=>e.map(e=>i?Math.abs(e):-Math.abs(e)),u=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderColor:`transparent`,borderWidth:0,borderRadius:4,maxBarThickness:22}),d=e=>(e||[]).some(e=>Math.abs(e)>0),f=[u(a?`Input Cost`:`Input Tokens`,l(n.inputs),o(`var(--token-input)`)),u(a?`Output Cost`:`Output Tokens`,n.outputs,o(`var(--token-output)`))];return d(n.prompts)&&f.push(u(a?`Prompt Cached Cost`:`Prompt Cached`,l(n.prompts),o(`var(--token-prompt)`))),!a&&d(n.localIns)&&f.push(u(`Locally Cached (Input)`,l(n.localIns),o(`var(--token-local)`))),!a&&d(n.localOuts)&&f.push(u(`Locally Cached (Output)`,n.localOuts,o(`var(--token-local)`))),{type:`bar`,data:{labels:t,datasets:f},options:{indexAxis:`y`,responsive:!0,maintainAspectRatio:!1,animation:{duration:0},layout:{padding:{top:8}},scales:{x:{stacked:!0,beginAtZero:!0,grid:i?{color:e.grid}:{color:t=>t.tick&&t.tick.value===0?e.text:e.grid},border:{display:!1},ticks:{color:e.text,font:WC(),callback:e=>s(e)}},y:{stacked:!0,grid:{display:!1},border:{display:!1},ticks:{color:e.text,font:WC(),autoSkip:!1}}},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:GC(e,{label:e=>e.dataset.label+`: `+c(e.parsed.x),footer:e=>{let t=0;return e.forEach(e=>{t+=Math.abs(Number(e.parsed.x))||0}),`Total: `+c(t)}})}}}}var BO=B(`
`),VO=B(`

`),HO=B(`

`,1),UO=B(`
`),WO=B(`Model Provider`,1),GO=B(`User Path`),KO=B(`Label Requests`,1),qO=B(` `,1),JO=B(` `),YO=B(` `,1),XO=B(` `),ZO=B(`
Input TokensOutput TokensPrompt CachedLocal CachedTotal TokensInput CostOutput CostTotal Cost
`),QO=B(`
`),$O=B(`
`);function ek(e,t){O(t,!0);let n=e=>{var n=BO(),r=P(n);let a;var o=I(r,2);let s;var l=I(o,2);let u;D(n),L(()=>{K(n,`aria-label`,R(i).group),a=G(r,1,`chart-view-btn svelte-1kee4g8`,null,a,{active:R(c)===`chart`}),K(r,`aria-pressed`,R(c)===`chart`),K(r,`aria-label`,`Show ${R(i).noun??``} chart`),s=G(o,1,`chart-view-btn svelte-1kee4g8`,null,s,{active:R(c)===`stacked`}),K(o,`aria-pressed`,R(c)===`stacked`),K(o,`aria-label`,`Show ${R(i).noun??``} stacked chart`),u=G(l,1,`chart-view-btn svelte-1kee4g8`,null,u,{active:R(c)===`table`}),K(l,`aria-pressed`,R(c)===`table`),K(l,`aria-label`,`Show ${R(i).noun??``} table`)}),z(`click`,r,()=>TO.toggleUsageChartView(t.kind,`chart`)),z(`click`,o,()=>TO.toggleUsageChartView(t.kind,`stacked`)),z(`click`,l,()=>TO.toggleUsageChartView(t.kind,`table`)),V(e,n)},r={model:{group:`Model usage view`,noun:`model usage`,tokensTitle:`Token Usage by Model`,costsTitle:`Cost by Model`},userPath:{group:`User path usage view`,noun:`user path usage`,tokensTitle:`Usage by User Path`,costsTitle:`Cost by User Path`},label:{group:`Label usage view`,noun:`label usage`,tokensTitle:`Usage by Label`,costsTitle:`Cost by Label`}},i=A(()=>r[t.kind]),a=A(()=>t.kind===`model`?e=>Ef(e):t.kind===`userPath`?e=>e.user_path||`/`:e=>e.label);function o(e){return t.kind===`model`?(e.provider_name||e.provider||`-`)+`/`+e.model:t.kind===`userPath`?e.user_path||`/`:e.label}let s=A(()=>t.kind===`model`?TO.modelUsage:t.kind===`userPath`?TO.userPathUsage:TO.labelUsage),c=A(()=>t.kind===`model`?TO.modelUsageView:t.kind===`userPath`?TO.userPathUsageView:TO.labelUsageView),l=A(()=>t.kind===`model`?TO.modelUsageLoading:t.kind===`userPath`?TO.userPathUsageLoading:TO.labelUsageLoading),u=A(()=>TO.usageMode===`costs`),d=A(()=>t.kind===`userPath`?xO(R(s)):R(s).length>0),f=A(()=>R(u)?R(i).costsTitle:R(i).tokensTitle),p=A(()=>CO(R(s),R(a),R(u))),m=A(()=>bO(R(s),R(u)));function h(){return SO(R(c))?zO(UC(),R(p).labels,R(p),{stacked:R(c)===`stacked`,costs:R(u),resolve:KC}):null}var g=Xr(),_=F(g),v=e=>{var r=QO(),a=P(r),s=P(a),u=e=>{eD(e,{copyId:`label-usage-help-copy`,label:`label usage help`,text:`One request can have multiple labels. Such a request counts once under each of its labels, so label rows can overlap and add up to more than the period totals.`,title:e=>{var t=VO(),n=P(t,!0);D(t),L(()=>H(n,R(f))),V(e,t)},extra:e=>{var t=Xr(),n=F(t),r=e=>{kE(e,{size:14,get label(){return`Loading ${R(i).noun??``}`}})};U(n,e=>{R(l)&&e(r)}),V(e,t)},$$slots:{title:!0,extra:!0}})},d=e=>{var t=HO(),n=F(t),r=P(n,!0);D(n);var a=I(n,2),o=e=>{kE(e,{size:14,get label(){return`Loading ${R(i).noun??``}`}})};U(a,e=>{R(l)&&e(o)}),L(()=>H(r,R(f))),V(e,t)};U(s,e=>{t.kind===`label`?e(u):e(d,-1)});var g=I(s,2);n(g),D(a);var _=I(a,2),v=e=>{var t=UO();let n;RC(P(t),{build:h}),D(t),L(e=>n=Bi(t,``,n,e),[()=>({height:`${wO(R(p).labels.length)??``}px`})]),V(e,t)},y=A(()=>SO(R(c))),b=e=>{var n=ZO(),r=P(n),i=P(r),a=P(i),s=P(a),c=e=>{var t=WO();Ve(2),V(e,t)},l=e=>{V(e,GO())},u=e=>{var t=KO();Ve(2),V(e,t)};U(s,e=>{t.kind===`model`?e(c):t.kind===`userPath`?e(l,1):e(u,-1)}),Ve(8),D(a),D(i);var d=I(i);W(d,21,()=>R(m),e=>o(e),(e,n)=>{var r=XO(),i=P(r),a=e=>{var t=qO(),r=F(t),i=P(r,!0);D(r);var a=I(r,2),o=P(a),s=P(o,!0);D(o),D(a),L(e=>{H(i,R(n).model||`-`),H(s,e)},[()=>wf(R(n))||`-`]),V(e,t)},o=e=>{var t=JO(),r=P(t,!0);D(t),L(()=>H(r,R(n).user_path||`/`)),V(e,t)},s=e=>{var t=YO(),r=F(t),i=P(r);let a;var o=P(i,!0);D(i),D(r);var s=I(r,2),c=P(s,!0);D(s),L((e,t,r)=>{a=G(i,1,`usage-label-chip`,null,a,{active:TO.usageFilterLabel===R(n).label}),Bi(i,`--label-color: ${e??``}`),K(i,`title`,t),H(o,R(n).label),H(c,r)},[()=>YC(R(n).label),()=>TO.usageLabelChipTitle(R(n).label),()=>mf(R(n).requests)]),z(`click`,i,()=>TO.toggleUsageLabelFilter(R(n).label)),V(e,t)};U(i,e=>{t.kind===`model`?e(a):t.kind===`userPath`?e(o,1):e(s,-1)});var c=I(i),l=P(c,!0);D(c);var u=I(c),d=P(u,!0);D(u);var f=I(u),p=P(f,!0);D(f);var m=I(f),h=P(m,!0);D(m);var g=I(m),_=P(g,!0);D(g);var v=I(g),y=P(v,!0);D(v);var b=I(v),x=P(b,!0);D(b);var S=I(b),C=P(S,!0);D(S),D(r),L((e,t,n,r,i,a,o,s,c,u,g)=>{H(l,e),H(d,t),K(f,`title`,n),H(p,r),K(m,`title`,`${i??``} input + ${a??``} output`),H(h,o),H(_,s),H(y,c),H(x,u),H(C,g)},[()=>mf(R(n).input_tokens),()=>mf(R(n).output_tokens),()=>R(n).cached_input_cost==null?``:`~`+hf(R(n).cached_input_cost)+` at current cached-input pricing`,()=>mf(R(n).cached_input_tokens||0),()=>mf(R(n).local_cached_input_tokens||0),()=>mf(R(n).local_cached_output_tokens||0),()=>mf((R(n).local_cached_input_tokens||0)+(R(n).local_cached_output_tokens||0)),()=>mf(vO(R(n))),()=>hf(R(n).input_cost),()=>hf(R(n).output_cost),()=>hf(R(n).total_cost)]),V(e,r)}),D(d),D(r),D(n),V(e,n)};U(_,e=>{R(y)?e(v):e(b,-1)}),D(r),V(e,r)},y=e=>{var t=$O();kE(P(t),{size:20,get label(){return`Loading ${R(i).noun??``}`}}),D(t),V(e,t)};U(_,e=>{R(d)?e(v):R(l)&&e(y,1)}),V(e,g),k()}Br([`click`]);var tk=B(``);function nk(e,t){O(t,!0);let n=q(t,`total`,3,0),r=q(t,`offset`,3,0),i=q(t,`limit`,3,25);var a=Xr(),o=F(a),s=e=>{var a=tk(),o=P(a),s=P(o,!0);D(o);var c=I(o,2),l=P(c),u=P(l,!0);D(l);var d=I(l,2),f=P(d,!0);D(d),D(c),D(a),L((e,t,a)=>{H(s,e),l.disabled=r()===0,H(u,t),d.disabled=r()+i()>=n(),H(f,a)},[()=>jc({start:$a(r()+1),end:$a(Math.min(r()+i(),n())),total:$a(n())}),()=>lo(),()=>oo()]),z(`click`,l,()=>t.onprev?.()),z(`click`,d,()=>t.onnext?.()),V(e,a)};U(o,e=>{n()>0&&e(s)}),V(e,a),k()}Br([`click`]);var rk=(e,t=f)=>{var n=Xr(),r=F(n),i=e=>{var n=ak();W(n,20,()=>gO(t()),e=>e,(e,t)=>{var n=ik();let r;var i=P(n,!0);D(n),L((e,a)=>{r=G(n,1,`usage-label-chip`,null,r,{active:TO.usageFilterLabel===t}),Bi(n,`--label-color: ${e??``}`),K(n,`title`,a),H(i,t)},[()=>YC(t),()=>TO.usageLabelChipTitle(t)]),z(`click`,n,()=>TO.toggleUsageLabelFilter(t)),V(e,n)}),D(n),V(e,n)},a=A(()=>gO(t()).length>0),o=e=>{V(e,ok())};U(r,e=>{R(a)?e(i):e(o,-1)}),V(e,n)},ik=B(``),ak=B(`
`),ok=B(`-`),sk=B(`Labels`),ck=B(`Cost`),lk=B(``),uk=B(` `),dk=B(``),fk=B(` `),pk=B(` `),mk=B(`
TimestampProviderModelUser PathCacheProvider Cache
`),hk=B(`
`),gk=B(`
`),_k=B(`

Request Log

`);function vk(e,t){O(t,!0);let n=A(()=>TO.usageMode===`costs`),r=A(()=>_O(TO.labelUsage,TO.usageFilterLabel,TO.usageLog.entries)),i=OO(()=>TO.fetchUsageLog(!0));On(()=>i.cancel);var a=_k(),o=I(P(a),2),s=P(o);DO(P(s),{placeholder:`Search by request ID, model, provider...`,label:`Search by request ID, model, provider`,get oninput(){return i},get value(){return TO.usageLogSearch},set value(e){TO.usageLogSearch=e}}),D(s);var c=I(s,2),l=P(c),u=P(l);ea(u),Ve(2),D(l),D(c),D(o);var d=I(o,2),f=e=>{var t=mk(),i=P(t),a=P(i),o=P(a),s=I(P(o),4),c=e=>{V(e,sk())};U(s,e=>{R(r)&&e(c)});var l=I(s,3),u=P(l,!0);D(l);var d=I(l),f=P(d,!0);D(d);var p=I(d),m=P(p,!0);D(p);var h=I(p),g=e=>{V(e,ck())};U(h,e=>{R(n)||e(g)}),D(o),D(a);var _=I(a);W(_,21,()=>TO.usageLog.entries,e=>e.id,(e,t)=>{var i=pk();let a;var o=P(i),s=P(o,!0);D(o);var c=I(o),l=P(c),u=P(l,!0);D(l),D(c);var d=I(c),f=P(d,!0);D(d);var p=I(d),m=P(p,!0);D(p);var h=I(p),g=e=>{var n=lk();rk(P(n),()=>R(t)),D(n),V(e,n)};U(h,e=>{R(r)&&e(g)});var _=I(h),v=P(_,!0);D(_);var y=I(_),b=P(y),x=e=>{var n=uk(),r=P(n,!0);D(n),L(e=>H(r,e),[()=>pO(R(t))]),V(e,n)},S=A(()=>fO(R(t))),C=e=>{V(e,ok())};U(b,e=>{R(S)?e(x):e(C,-1)}),D(y);var w=I(y),T=P(w,!0);D(w);var E=I(w),ee=P(E,!0);D(E);var te=I(E),ne=P(te),re=P(ne,!0);D(ne);var ie=I(ne,2),ae=e=>{{let n=A(()=>oO(R(t)));J(e,{get icon(){return Ul},class:`cost-source-icon`,get title(){return R(n)}})}},oe=A(()=>R(n)&&aO(R(t)));U(ie,e=>{R(oe)&&e(ae)});var se=I(ie,2),ce=e=>{J(e,{get icon(){return Kl},class:`cache-savings-icon`})},le=A(()=>R(n)&&cO(R(t)));U(se,e=>{R(le)&&e(ce)});var ue=I(se,2),de=e=>{var n=dk();L(()=>K(n,`title`,R(t).costs_calculation_caveat)),V(e,n)};U(ue,e=>{R(n)&&R(t).costs_calculation_caveat&&e(de)}),D(te);var fe=I(te),pe=e=>{var n=fk(),r=P(n),i=P(r,!0);D(r);var a=I(r,2),o=e=>{{let n=A(()=>oO(R(t)));J(e,{get icon(){return Ul},class:`cost-source-icon`,get title(){return R(n)}})}},s=A(()=>aO(R(t)));U(a,e=>{R(s)&&e(o)});var c=I(a,2),l=e=>{J(e,{get icon(){return Kl},class:`cache-savings-icon`})},u=A(()=>cO(R(t)));U(c,e=>{R(u)&&e(l)});var d=I(c,2),f=e=>{var n=dk();L(()=>K(n,`title`,R(t).costs_calculation_caveat)),V(e,n)};U(d,e=>{R(t).costs_calculation_caveat&&e(f)}),D(n),L((e,t)=>{K(n,`title`,e),H(i,t)},[()=>uO(R(t),hO(R(t))),()=>hf(R(t).total_cost)]),V(e,n)};U(fe,e=>{R(n)||e(pe)}),D(i),L((e,n,r,c,l,d,p,h,g,_,b,x,S)=>{a=G(i,1,`svelte-hg4ill`,null,a,e),K(o,`title`,n),H(s,r),H(u,c),H(f,R(t).model),H(m,R(t).user_path||`-`),H(v,l),K(y,`title`,d),K(w,`title`,p),H(T,h),K(E,`title`,g),H(ee,_),K(te,`title`,b),K(ne,`title`,x),H(re,S)},[()=>({"usage-log-row-cached":cO(R(t))}),()=>Sf(R(t).timestamp),()=>md.formatTimestamp(R(t).timestamp),()=>wf(R(t))||`-`,()=>lO(R(t)),()=>mO(R(t)),()=>R(n)?mf(R(t).input_tokens)+` tokens`:``,()=>R(n)?hf(R(t).input_cost):mf(R(t).input_tokens),()=>R(n)?mf(R(t).output_tokens)+` tokens`:``,()=>R(n)?hf(R(t).output_cost):mf(R(t).output_tokens),()=>R(n)?uO(R(t),``):``,()=>R(n)?uO(R(t),mf(R(t).total_tokens)+` tokens +`+hO(R(t))):``,()=>R(n)?hf(R(t).total_cost):mf(R(t).total_tokens)]),V(e,i)}),D(_),D(i),D(t),L(()=>{H(u,R(n)?`Input Cost`:`Input`),H(f,R(n)?`Output Cost`:`Output`),H(m,R(n)?`Total Cost`:`Total`)}),V(e,t)},p=e=>{var t=hk();kE(P(t),{size:20,label:`Loading request log`}),D(t),V(e,t)},m=e=>{var t=gk();ME(P(t),{}),D(t),V(e,t)};U(d,e=>{TO.usageLog.entries.length>0?e(f):TO.usageLogLoading?e(p,1):e(m,-1)}),nk(I(d,2),{get total(){return TO.usageLog.total},get offset(){return TO.usageLog.offset},get limit(){return TO.usageLog.limit},onprev:()=>TO.usageLogPrevPage(),onnext:()=>TO.usageLogNextPage()}),D(a),z(`change`,u,()=>TO.fetchUsageLog(!0)),ua(u,()=>TO.usageLogHideCached,e=>TO.usageLogHideCached=e),V(e,a),k()}Br([`click`,`change`]);var yk=B(`
`);function bk(e,t){O(t,!0);let n=`usage`;On(()=>{Y.refreshTick,Gu.page===n&&(TO.fetchUsagePage(),zD.ensureLiveLogs())}),On(()=>{Gu.page===n&&(TO.usageMode=Gu.sub===`costs`?`costs`:`tokens`)});var r=yk(),i=I(P(r),2),a=P(i);VC(a,{ariaLabel:`Usage mode`,options:[{value:`tokens`,label:`Tokens`},{value:`costs`,label:`Costs`}],get value(){return TO.usageMode},onchange:e=>TO.toggleUsageMode(e)}),lp(I(a,2),{onchange:()=>TO.fetchUsagePage()}),D(i);var o=I(i,2);MO(o,{});var s=I(o,2);RO(s,{});var c=I(s,2),l=P(c);ek(l,{kind:`model`});var u=I(l,2);ek(u,{kind:`userPath`}),ek(I(u,2),{kind:`label`}),D(c),vk(I(c,2),{}),D(r),V(e,r),k()}var xk=B(`
`);function Sk(e,t){let n=q(t,`label`,3,`Loading...`),r=q(t,`class`,3,``);var i=xk(),a=I(P(i),2),o=P(a,!0);D(a),D(i),L(()=>{G(i,1,Ni([`loading-state`,r()]),`svelte-hzxv1d`),H(o,n())}),V(e,i)}var Ck=B(``);function wk(e,t){let n=q(t,`label`,3,``),r=q(t,`class`,3,``),i=q(t,`disabled`,3,!1);var a=Ck();mi(P(a),()=>t.children??f),D(a),L(()=>{G(a,1,Ni([`table-action-btn`,r()])),K(a,`aria-label`,n()),K(a,`title`,n()),a.disabled=i()}),z(`click`,a,function(...e){t.onclick?.apply(this,e)}),V(e,a)}Br([`click`]);async function Tk(e,{label:t,errorFallback:n=`Unable to load ${t}.`,unavailableStatuses:r=[503],normalize:i=e=>Array.isArray(e)?e:[],options:a}){let o;try{o=await bd(e,{...a||{},label:t})}catch(e){return Sd(e)||console.error(`Failed to fetch ${t}:`,e),{status:`error`,items:[],error:n,result:null}}return o.stale?{status:`stale`,items:[],error:``,result:o}:r.includes(o.status)?{status:`unavailable`,items:[],error:``,result:o}:o.ok?{status:`ok`,items:i(o.data),error:``,result:o}:{status:`error`,items:[],error:o.status===401?``:hd(o.data,n),result:o}}async function Ek(e,t,n,{label:r,errorFallback:i=`Unable to ${r}.`,unavailableStatuses:a=[503],unavailableMessage:o=`This feature is unavailable on the gateway.`,options:s}){let c;try{c=await xd(e,t,n,{...s||{},label:r})}catch(e){return Sd(e)||console.error(`Failed to ${r}:`,e),{status:`error`,error:i,result:null}}return c.stale?{status:`stale`,error:``,result:c}:a.includes(c.status)?{status:`unavailable`,error:o,result:c}:c.ok?{status:`ok`,error:``,result:c}:{status:`error`,error:c.status===401?`Authentication required.`:hd(c.data,i),result:c}}function Dk(){return{scope:`user_path`,subject:`/`,period:`daily`,period_seconds:86400,amount:``,source:`manual`}}function Ok(e){let t={user_path:{label:`User path`,chip:`user path`,fieldLabel:`User Path`,placeholder:`/team/alpha`},label:{label:`Label`,chip:`label`,fieldLabel:`Label`,placeholder:`Mobile-App-iOS`}};return t[e]||t.user_path}function kk(){return[`user_path`,`label`].map(e=>({value:e,label:Ok(e).label}))}function Ak(e){return String(e&&e.scope||``).trim()||`user_path`}function jk(e){return String(e&&e.subject||``).trim()||String(e&&e.user_path||``)}function Mk(e){return Ok(Ak(e)).chip}function Nk(e){return Ak(e)===`label`?`budget-label`:`budget-user-path`}function Pk(e){return Ok(String(e&&e.scope||``)).fieldLabel}function Fk(e){return Ok(String(e&&e.scope||``)).placeholder}function Ik(e){e.subject=String(e&&e.scope||``)===`user_path`?`/`:``}function Lk(){return[{value:`hourly`,label:`Hourly`},{value:`daily`,label:`Daily`},{value:`weekly`,label:`Weekly`},{value:`monthly`,label:`Monthly`},{value:`custom`,label:`Custom seconds`}]}function Rk(e){switch(String(e||``).trim().toLowerCase()){case`hourly`:return 3600;case`daily`:return 86400;case`weekly`:return 604800;case`monthly`:return 2592e3;default:return 0}}function zk(e){switch(Number(e||0)){case 3600:return`hourly`;case 86400:return`daily`;case 604800:return`weekly`;case 2592e3:return`monthly`;default:return`custom`}}function Bk(e){return Ak(e)+`:`+jk(e)+`:`+String(e&&e.period_seconds||``)}function Vk(e,t){if(!t||!Array.isArray(e))return null;let n=Bk(t);return e.find(e=>Bk(e)===n)||null}function Hk(e){let t=String(e||``).trim();if(!t)return`User path is required.`;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`);for(let e of n){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function Uk(e){if(Hk(e))return``;let t=String(e||``).trim(),n=(t.startsWith(`/`)?t:`/`+t).split(`/`),r=[];for(let e of n){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function Wk(e){return`/`+String(e||``).trimStart().replace(/^\/+/,``)}function Gk(e){return Array.isArray(e)?e:e&&Array.isArray(e.budgets)?e.budgets:[]}function Kk(e){let t=Number(e&&e.period_seconds||0);return[jk(e),Mk(e),lA(e),zk(t),t?String(t)+`s`:``,t?String(t)+` seconds`:``].join(` `).toLowerCase()}var qk={user_path:0,label:1};function Jk(e,t){let n=Array.isArray(e)?e.slice():[],r=String(t||`subject`);return n.sort((e,t)=>{let n=(qk[Ak(e)]||0)-(qk[Ak(t)]||0),i=jk(e).localeCompare(jk(t)),a=Number(t&&t.period_seconds||0)-Number(e&&e.period_seconds||0);return r===`period`?a||n||i:n||i||a}),n}function Yk(e,t,n){let r=Array.isArray(e)?e:[],i=String(t||``).trim().toLowerCase();return Jk(i?r.filter(e=>Kk(e).includes(i)):r.slice(),n)}function Xk(e){let t=e||{},n=Ak(t),r=String(t.subject||``).trim();if(n===`user_path`){let e=Hk(r);if(e)return{payload:null,error:e}}else if(!r)return{payload:null,error:`Label is required.`};let i=Number(t.amount);if(!Number.isFinite(i)||i<=0)return{payload:null,error:`Amount must be greater than 0.`};let a=String(t.period||``).trim(),o=Rk(a);return a===`custom`&&(o=Number(t.period_seconds)),!Number.isFinite(o)||o<=0?{payload:null,error:`Period seconds must be greater than 0.`}:{payload:{scope:n,subject:n===`user_path`?Uk(r):r,period_seconds:Math.trunc(o),amount:i,source:String(t.source||`manual`).trim()||`manual`},error:``}}function Zk(e){return{scope:Ak(e),subject:jk(e),budget_key:{period_seconds:e.period_seconds},amount:e.amount}}function Qk(e){return{scope:Ak(e),subject:jk(e),budget_key:{period_seconds:e.period_seconds}}}function $k(e){return{scope:Ak(e),subject:jk(e),period_seconds:e.period_seconds}}function eA(e){return hf(e)}function tA(e,t){let n=e||{},r=t||{};return`A budget for "`+((jk(n)||jk(r))+` `+lA({period_seconds:n.period_seconds||r.period_seconds,period_label:r.period_label}))+`" already exists. Saving will override the current `+eA(r.amount)+` limit with `+eA(n.amount)+`.`}function nA(e){let t=Number(e);return!Number.isFinite(t)||t<0?0:t}function rA(e,t){let n=nA(e);return Math.round((t?Math.min(n,1):n)*1e3)/10}function iA(e){return nA(e&&e.usage_ratio)}function aA(e){return rA(iA(e),!0)}function oA(e){return rA(e&&e.period_ratio,!0)}function sA(e){return rA(iA(e),!1).toFixed(1).replace(/\.0$/,``)+`%`}function cA(e){return oA(e).toFixed(1).replace(/\.0$/,``)+`%`}function lA(e){let t=Number(e&&e.period_seconds||0);switch(t){case 3600:return`Hourly`;case 86400:return`Daily`;case 604800:return`Weekly`;case 2592e3:return`Monthly`;default:{let n=String(e&&e.period_label||``).trim();return n?`Custom `+n:`Custom `+String(t||``)+`s`}}}function uA(e){switch(Number(e&&e.period_seconds||0)){case 3600:return`budget-period-label-hourly`;case 86400:return`budget-period-label-daily`;case 604800:return`budget-period-label-weekly`;case 2592e3:return`budget-period-label-monthly`;default:return`budget-period-label-custom`}}function dA(e){return uA(e).replace(`budget-period-label-`,`budget-bar-fill-period-`)}function fA(e){return uA(e).replace(`budget-period-label-`,`budget-bar-track-period-`)}function pA(e){switch(Number(e&&e.period_seconds||0)){case 3600:return Wl;case 86400:return Cu;case 604800:return Nl;case 2592e3:return Pl;default:return _u}}function mA(e){let t=Math.max(0,Math.trunc(Number(e||0)));return t+` `+(t===1?`second`:`seconds`)}function hA(e){let t=Number(e&&e.period_seconds||0);switch(t){case 3600:return`1 hour`;case 86400:return`1 day`;case 604800:return`1 week`;case 2592e3:return`1 month`;default:return mA(t)}}function gA(e){return String(e&&e.source||``).trim()||`manual`}function _A(e){let t=gA(e).toLowerCase();return t===`manual`?`Created from the dashboard.`:t===`config`?`Loaded from configuration.`:`Budget source: `+t}function vA(e){let t=Number(e&&e.remaining);return Number.isFinite(t)?t<0?hf(Math.abs(t))+` over`:hf(t)+` remaining`:``}var X=new class{#e=j(N([]));get budgets(){return R(this.#e)}set budgets(e){M(this.#e,e,!0)}#t=j(!0);get budgetsAvailable(){return R(this.#t)}set budgetsAvailable(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}#r=j(``);get filter(){return R(this.#r)}set filter(e){M(this.#r,e,!0)}#i=j(`subject`);get sortBy(){return R(this.#i)}set sortBy(e){M(this.#i,e,!0)}#a=j(``);get error(){return R(this.#a)}set error(e){M(this.#a,e,!0)}#o=j(!1);get formOpen(){return R(this.#o)}set formOpen(e){M(this.#o,e,!0)}#s=j(!1);get formSubmitting(){return R(this.#s)}set formSubmitting(e){M(this.#s,e,!0)}#c=j(``);get formError(){return R(this.#c)}set formError(e){M(this.#c,e,!0)}#l=j(!1);get editing(){return R(this.#l)}set editing(e){M(this.#l,e,!0)}#u=j(N(Dk()));get form(){return R(this.#u)}set form(e){M(this.#u,e,!0)}#d=j(!1);get overrideDialogOpen(){return R(this.#d)}set overrideDialogOpen(e){M(this.#d,e,!0)}#f=j(null);get overridePendingPayload(){return R(this.#f)}set overridePendingPayload(e){M(this.#f,e,!0)}#p=j(null);get overrideExistingBudget(){return R(this.#p)}set overrideExistingBudget(e){M(this.#p,e,!0)}#m=j(``);get resettingKey(){return R(this.#m)}set resettingKey(e){M(this.#m,e,!0)}#h=j(``);get deletingKey(){return R(this.#h)}set deletingKey(e){M(this.#h,e,!0)}#g=j(!1);get resetAllLoading(){return R(this.#g)}set resetAllLoading(e){M(this.#g,e,!0)}#_=null;managementEnabled(){return Td.budgetsVisible()}filteredBudgets(){return Yk(this.budgets,this.filter,this.sortBy)}async fetchBudgetsPage(){if(await Td.ensureLoaded(),!this.managementEnabled()){this.budgets=[],this.budgetsAvailable=!1,this.error=``;return}return this.#_||=this.fetchBudgets().finally(()=>{this.#_=null}),this.#_}async fetchBudgets(){this.loading=!0,this.error=``;let e=await Tk(`/admin/budgets`,{label:`budgets`,errorFallback:`Unable to load budgets.`,normalize:Gk});if(this.loading=!1,e.status!==`stale`){if(e.status===`unavailable`){this.budgetsAvailable=!1,this.budgets=[];return}if(!e.result){this.budgets=[],this.error=e.error;return}if(this.budgetsAvailable=!0,e.status===`error`){this.error=e.error;return}this.budgets=e.items}}openForm(e){if(this.editing=!!e,this.formError=``,e){let t=Number(e.period_seconds||0);this.form={scope:Ak(e),subject:jk(e),period:zk(t),period_seconds:t,amount:String(e.amount||``),source:String(e.source||`manual`)}}else this.form=Dk();this.formOpen=!0}syncPeriodSeconds(){let e=Rk(String(this.form.period||``).trim());e>0&&(this.form.period_seconds=e)}setFormSubject(e){this.form.subject=this.form.scope===`label`?String(e??``):Wk(e)}syncScope(){Ik(this.form)}closeForm(){this.closeOverrideDialog(),this.formOpen=!1,this.formSubmitting=!1,this.formError=``,this.editing=!1,this.form=Dk()}async submitForm(){if(this.formSubmitting)return;let{payload:e,error:t}=Xk(this.form);if(!e){this.formError=t;return}if(!this.editing){let t=Vk(this.budgets,e);if(t){this.openOverrideDialog(t,e);return}}await this.saveBudgetPayload(e)}async saveBudgetPayload(e){if(this.formSubmitting||!e)return;this.formSubmitting=!0,this.formError=``;let t=await Ek(`/admin/budgets`,`PUT`,Zk(e),{label:`save budget`,errorFallback:`Unable to save budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.formSubmitting=!1,t.status!==`stale`){if(t.status===`unavailable`){this.budgetsAvailable=!1,this.formError=t.error;return}if(t.status===`error`){this.formError=t.error;return}this.closeForm(),of.success(`Budget saved.`),this.fetchBudgets()}}openOverrideDialog(e,t){this.overrideExistingBudget=e||null,this.overridePendingPayload=t||null,this.overrideDialogOpen=!0}closeOverrideDialog(){this.overrideDialogOpen=!1,this.overridePendingPayload=null,this.overrideExistingBudget=null}async confirmOverride(){if(!this.overridePendingPayload){this.closeOverrideDialog();return}let e=this.overridePendingPayload;this.closeOverrideDialog(),await this.saveBudgetPayload(e)}async resetBudget(e){if(!e)return;let t=Bk(e);if(this.resettingKey===t)return;let n=jk(e)+` `+lA(e);if(!confirm(`Reset budget "`+n+`"?`))return;this.resettingKey=t;let r=await Ek(`/admin/budgets/reset-one`,`POST`,$k(e),{label:`reset budget`,errorFallback:`Unable to reset budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.resettingKey=``,r.status!==`stale`){if(r.status===`unavailable`){this.budgetsAvailable=!1,of.error(r.error);return}if(r.status===`error`){of.error(r.error);return}of.success(`Budget reset.`),this.fetchBudgets()}}async deleteBudget(e){if(!e)return;let t=Bk(e);if(this.deletingKey===t)return;let n=jk(e)+` `+lA(e);if(!confirm(`Delete budget "`+n+`"? This cannot be undone.`))return;this.deletingKey=t;let r=await Ek(`/admin/budgets`,`DELETE`,Qk(e),{label:`delete budget`,errorFallback:`Unable to delete budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.deletingKey=``,r.status!==`stale`){if(r.status===`unavailable`){this.budgetsAvailable=!1,of.error(r.error);return}if(r.status===`error`){of.error(r.error);return}this.budgets=Gk(r.result.data),of.success(`Budget deleted.`)}}openResetDialog(){Wd.open({title:`Reset Budgets`,titleId:`budgetResetDialogTitle`,inputId:`budget-reset-confirmation`,requiredText:`reset`,confirmLabel:`Reset All Budgets`,icon:fu,dialogClass:`budget-reset-dialog`,onConfirm:()=>this.resetAllBudgets()})}async resetAllBudgets(){if(this.resetAllLoading)return;this.resetAllLoading=!0;let e=await Ek(`/admin/budgets/reset`,`POST`,{confirmation:`reset`},{label:`reset budgets`,errorFallback:`Unable to reset budgets.`,unavailableStatuses:[]});if(this.resetAllLoading=!1,e.status!==`stale`){if(e.status!==`ok`){Wd.error=e.error;return}Wd.close(),of.success(`Budgets reset.`),Gu.page===`budgets`&&this.fetchBudgets()}}},yA=B(` Edit`,1),bA=B(` `,1),xA=B(`
Usage
Period
`),SA=B(`
`);function CA(e,t){O(t,!0);let n=q(t,`budgets`,19,()=>[]);function r(e){if(!e)return``;let t=md.formatTimestamp(e);return!t||t===`-`?``:t+` `+md.effectiveTimeZoneLabel()}var i=SA();W(i,21,n,e=>Bk(e),(e,t)=>{var n=xA(),i=P(n),a=P(i),o=P(a),s=P(o),c=e=>{J(e,{get icon(){return wu},class:`budget-scope-icon`})},l=A(()=>Ak(R(t))===`label`);U(s,e=>{R(l)&&e(c)});var u=I(s);D(o);var d=I(o,2),f=P(d),p=P(f);{let e=A(()=>pA(R(t)));J(p,{get icon(){return R(e)},class:`budget-period-icon`})}var m=I(p,2),h=P(m,!0);D(m),D(f),D(d);var g=I(d,2),_=P(g),v=P(_),y=P(v,!0);D(v),D(_);var b=I(_,2),x=P(b);wk(x,{label:`Edit budget`,class:`budget-action-btn`,onclick:()=>X.openForm(R(t)),children:(e,t)=>{var n=yA();J(F(n),{get icon(){return su},class:`budget-action-icon`}),Ve(2),V(e,n)},$$slots:{default:!0}});var S=I(x,2);{let e=A(()=>X.resettingKey===Bk(R(t))?`Resetting budget`:`Reset budget`),n=A(()=>X.resettingKey===Bk(R(t)));wk(S,{get label(){return R(e)},class:`budget-action-btn budget-action-btn-warning`,onclick:()=>X.resetBudget(R(t)),get disabled(){return R(n)},children:(e,n)=>{var r=bA(),i=F(r);J(i,{get icon(){return fu},class:`budget-action-icon`});var a=I(i,2),o=P(a,!0);D(a),L(e=>H(o,e),[()=>X.resettingKey===Bk(R(t))?`Resetting`:`Reset`]),V(e,r)},$$slots:{default:!0}})}var C=I(S,2);{let e=A(()=>X.deletingKey===Bk(R(t))?`Deleting budget`:`Delete budget`),n=A(()=>X.deletingKey===Bk(R(t)));wk(C,{get label(){return R(e)},class:`table-action-btn-danger budget-action-btn`,onclick:()=>X.deleteBudget(R(t)),get disabled(){return R(n)},children:(e,n)=>{var r=bA(),i=F(r);J(i,{get icon(){return Eu},class:`budget-action-icon`});var a=I(i,2),o=P(a,!0);D(a),L(e=>H(o,e),[()=>X.deletingKey===Bk(R(t))?`Deleting`:`Delete`]),V(e,r)},$$slots:{default:!0}})}D(b),D(g),D(a);var w=I(a,2),T=P(w),E=P(T),ee=I(P(E),2),te=P(ee,!0);D(ee),D(E);var ne=I(E,2),re=P(ne);let ie;var ae=I(re,2),oe=P(ae),se=P(oe,!0);D(oe);var ce=I(oe,2),le=P(ce,!0);D(ce),D(ae);var ue=I(ae,2),de=P(ue),fe=P(de,!0);D(de);var pe=I(de,2),me=P(pe,!0);D(pe),D(ue),D(ne),D(T);var he=I(T,2),ge=P(he),_e=I(P(ge),2),ve=P(_e,!0);D(_e),D(ge);var ye=I(ge,2),be=P(ye),xe=I(be,2),Se=P(xe),Ce=P(Se,!0);D(Se);var we=I(Se,2),Te=P(we,!0);D(we);var Ee=I(we,2),De=P(Ee,!0);D(Ee),D(xe);var Oe=I(xe,2),ke=P(Oe),Ae=P(ke,!0);D(ke);var je=I(ke,2),Me=P(je,!0);D(je);var Ne=I(je,2),Pe=P(Ne,!0);D(Ne),D(Oe),D(ye),D(he),D(w),D(i),D(n),L((e,t,n,r,i,a,s,c,l,d,p,m,g,_,b,x,S,C,w,T,E,ee,ae,oe,ce,ue,de,pe,he,ge)=>{G(o,1,`budget-scope-value ${e??``}`,`svelte-1jm56wo`),Bi(o,t),K(o,`title`,n),H(u,` ${r??``}`),G(f,1,`budget-period-label ${i??``}`,`svelte-1jm56wo`),H(h,a),K(v,`title`,s),H(y,c),H(te,l),K(ne,`aria-valuenow`,d),K(ne,`aria-label`,p),Bi(ne,`--budget-progress: ${m??``}%`),ie=G(re,1,`budget-bar-fill budget-bar-fill-usage`,null,ie,g),H(se,_),H(le,b),H(fe,x),H(me,S),H(ve,C),G(ye,1,`budget-bar-track ${w??``}`,`svelte-1jm56wo`),K(ye,`aria-valuenow`,T),Bi(ye,`--budget-progress: ${E??``}%`),G(be,1,`budget-bar-fill budget-bar-fill-period ${ee??``}`,`svelte-1jm56wo`),K(Se,`title`,ae),H(Ce,oe),H(Te,ce),K(Ee,`title`,ue),H(De,de),H(Ae,pe),H(Me,he),H(Pe,ge)},[()=>Nk(R(t)),()=>Ak(R(t))===`label`?`--label-color: `+YC(jk(R(t))):void 0,()=>Mk(R(t))+`: `+jk(R(t)),()=>jk(R(t)),()=>uA(R(t)),()=>lA(R(t)),()=>_A(R(t)),()=>gA(R(t)),()=>sA(R(t)),()=>aA(R(t)),()=>`Budget usage: `+hf(R(t).spent)+` of `+hf(R(t).amount)+`, `+vA(R(t)),()=>aA(R(t)),()=>({"budget-bar-fill-danger":iA(R(t))>=1}),()=>hf(R(t).spent)+` of `+hf(R(t).amount),()=>vA(R(t)),()=>hf(R(t).spent)+` of `+hf(R(t).amount),()=>vA(R(t)),()=>cA(R(t)),()=>fA(R(t)),()=>oA(R(t)),()=>oA(R(t)),()=>dA(R(t)),()=>r(R(t).period_start),()=>md.formatTimestamp(R(t).period_start),()=>hA(R(t)),()=>r(R(t).period_end),()=>md.formatTimestamp(R(t).period_end),()=>md.formatTimestamp(R(t).period_start),()=>hA(R(t)),()=>md.formatTimestamp(R(t).period_end)]),V(e,n)}),D(i),V(e,i),k()}var wA=B(`

`,1),TA=B(``),EA=B(``),DA=B(`
`);function OA(e,t){O(t,!0);let n=q(t,`open`,3,!1),r=q(t,`title`,3,``),i=q(t,`ariaLabel`,3,``),a=q(t,`error`,3,``),o=q(t,`submitting`,3,!1),s=q(t,`submitDisabled`,3,!1),c=q(t,`submitLabel`,3,`Save`),l=q(t,`submittingLabel`,3,`Saving...`),u=q(t,`submitIcon`,3,pu),d=q(t,`cancel`,3,!0),p=q(t,`dialogClass`,3,``),m=q(t,`novalidate`,3,!1),h=q(t,`canClose`,3,()=>!0);function g(){Y.dialogOpen||h()()&&t.onclose?.()}Rd(e,{get open(){return n()},variant:`editor`,onclose:g,children:(e,n)=>{var h=DA(),g=P(h),_=P(g),v=P(_),y=P(v),b=e=>{var n=Xr();mi(F(n),()=>t.header),V(e,n)},x=e=>{var n=wA(),i=F(n),a=P(i,!0);D(i);var o=I(i,2),s=e=>{var n=Xr();mi(F(n),()=>t.headerHint),V(e,n)};U(o,e=>{t.headerHint&&e(s)}),L(()=>H(a,r())),V(e,n)};U(y,e=>{t.header?e(b):e(x,-1)}),D(v);var S=I(v,2);{let e=A(()=>`Close `+(i()||r()).toLowerCase());Pd(S,{get label(){return R(e)},onclick:()=>t.onclose?.()})}D(_);var C=I(_,2);mi(C,()=>t.children??f);var w=I(C,2),T=e=>{var t=TA(),n=P(t,!0);D(t),L(()=>H(n,a())),V(e,t)};U(w,e=>{a()&&e(T)});var E=I(w,2),ee=P(E),te=e=>{var n=EA();z(`click`,n,()=>t.onclose?.()),V(e,n)};U(ee,e=>{d()&&e(te)});var ne=I(ee,2),re=e=>{var n=Xr();mi(F(n),()=>t.extraActions),V(e,n)};U(ne,e=>{t.extraActions&&e(re)});var ie=I(ne,2),ae=P(ie);J(ae,{get icon(){return u()},class:`form-action-icon`});var oe=I(ae,2),se=P(oe,!0);D(oe),D(ie),D(E),D(g),D(h),L(()=>{G(h,1,Ni([`model-editor`,p()])),K(h,`aria-label`,i()||r()),g.noValidate=m(),ie.disabled=o()||s(),H(se,o()?l():c())}),zr(`submit`,g,e=>{e.preventDefault(),t.onsubmit?.()}),V(e,h)},$$slots:{default:!0}}),k()}Br([`click`]);var kA=B(`
`);function AA(e,t){let n=q(t,`label`,3,``);var r=kA(),i=P(r),a=P(i,!0);D(i),mi(I(i,2),()=>t.children??f),D(r),L(()=>{K(i,`for`,t.id),H(a,n())}),V(e,r)}var jA=B(``),MA=B(``),NA=B(``),PA=B(``),FA=B(``),IA=B(``),LA=B(`

Editing a budget updates its limit only. Use Reset to start a new + budget period.

`),RA=B(`
`,1),zA=B(``),BA=B(` `,1);function VA(e,t){O(t,!0);function n(e){X.setFormSubject(e.target.value),e.target.value=X.form.subject}var r=BA(),i=F(r);{let e=A(()=>X.editing?`Edit Budget`:`Create Budget`);OA(i,{get open(){return X.formOpen},get title(){return R(e)},ariaLabel:`Budget editor`,get error(){return X.formError},get submitting(){return X.formSubmitting},submitLabel:`Save Budget`,dialogClass:`budget-editor`,canClose:()=>!X.overrideDialogOpen,onclose:()=>X.closeForm(),onsubmit:()=>X.submitForm(),children:(e,t)=>{var r=RA(),i=F(r),a=P(i);AA(a,{id:`budget-scope`,label:`Scope`,children:(e,t)=>{var n=MA();W(n,21,kk,e=>e.value,(e,t)=>{var n=jA(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(n),L(()=>n.disabled=X.editing),z(`change`,n,()=>X.syncScope()),Ui(n,()=>X.form.scope,e=>X.form.scope=e),V(e,n)},$$slots:{default:!0}});var o=I(a,2);{let e=A(()=>Pk(X.form));AA(o,{id:`budget-subject`,get label(){return R(e)},children:(e,t)=>{var r=NA();ea(r),L(e=>{K(r,`placeholder`,e),ta(r,X.form.subject),r.disabled=X.editing,K(r,`data-modal-autofocus`,!X.editing||void 0)},[()=>Fk(X.form)]),z(`input`,r,n),V(e,r)},$$slots:{default:!0}})}var s=I(o,2);AA(s,{id:`budget-period`,label:`Period`,children:(e,t)=>{var n=PA();W(n,21,Lk,e=>e.value,(e,t)=>{var n=jA(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(n),L(()=>n.disabled=X.editing),z(`change`,n,()=>X.syncPeriodSeconds()),Ui(n,()=>X.form.period,e=>X.form.period=e),V(e,n)},$$slots:{default:!0}});var c=I(s,2),l=e=>{AA(e,{id:`budget-period-seconds`,label:`Period Seconds`,children:(e,t)=>{var n=FA();ea(n),L(()=>n.disabled=X.editing),la(n,()=>X.form.period_seconds,e=>X.form.period_seconds=e),V(e,n)},$$slots:{default:!0}})};U(c,e=>{X.form.period===`custom`&&e(l)}),AA(I(c,2),{id:`budget-amount`,label:`Amount`,children:(e,t)=>{var n=IA();ea(n),L(()=>K(n,`data-modal-autofocus`,X.editing||void 0)),la(n,()=>X.form.amount,e=>X.form.amount=e),V(e,n)},$$slots:{default:!0}}),D(i);var u=I(i,2),d=e=>{V(e,LA())};U(u,e=>{X.editing&&e(d)}),V(e,r)},$$slots:{default:!0}})}Rd(I(i,2),{get open(){return X.overrideDialogOpen},variant:`auth`,onclose:()=>X.closeOverrideDialog(),children:(e,t)=>{var n=zA(),r=P(n);Pd(I(P(r),2),{label:`Close budget override dialog`,onclick:()=>X.closeOverrideDialog(),class:`auth-dialog-close`,iconClass:``}),D(r);var i=I(r,2),a=P(i),o=P(a,!0);D(a);var s=I(a,2),c=P(s),l=I(c,2),u=P(l);J(u,{get icon(){return pu},class:`form-action-icon`});var d=I(u,2),f=P(d,!0);D(d),D(l),D(s),D(i),D(n),L(e=>{H(o,e),l.disabled=X.formSubmitting,H(f,X.formSubmitting?`Saving...`:`Override Budget`)},[()=>tA(X.overridePendingPayload,X.overrideExistingBudget)]),zr(`submit`,i,e=>{e.preventDefault(),X.confirmOverride()}),z(`click`,c,()=>X.closeOverrideDialog()),V(e,n)},$$slots:{default:!0}}),V(e,r),k()}Br([`change`,`input`,`click`]);var HA=B(`

Budgets

`),UA=B(``),WA=B(`
Budget management is unavailable.
`),GA=B(``),KA=B(`
`),qA=B(`

No budgets configured yet.

`),JA=B(`

No budgets match your filter.

`),YA=B(`
`);function XA(e,t){O(t,!0),On(()=>{Y.refreshTick,Gu.page===`budgets`&&X.fetchBudgetsPage()});let n=A(()=>X.filteredBudgets());var r=YA(),i=P(r),a=P(i);eD(P(a),{copyId:`budgets-help-copy`,label:`budgets help`,title:e=>{V(e,HA())},help:e=>{Ve(),V(e,Yr(`Budgets are evaluated from tracked usage cost records for each user path subtree. Enforcement runs only when Budget is enabled for the - active workflow.`))},$$slots:{title:!0,help:!0}}),D(a);var o=I(a,2),s=P(o),c=e=>{var t=Rk();J(P(t),{get icon(){return il},class:`form-action-icon`}),Ve(2),D(t),L(()=>t.disabled=X.formSubmitting),z(`click`,t,()=>X.openForm()),V(e,t)},l=A(()=>X.managementEnabled()&&X.budgetsAvailable&&!Y.authError);U(s,e=>{R(l)&&e(c)}),D(o),D(i);var u=I(i,2);Rd(u,{});var d=I(u,2),f=e=>{V(e,zk())},p=A(()=>(!X.managementEnabled()||!X.budgetsAvailable)&&!Y.authError);U(d,e=>{R(p)&&e(f)});var m=I(d,2),h=e=>{var t=Bk(),n=P(t,!0);D(t),L(()=>H(n,X.error)),V(e,t)};U(m,e=>{X.error&&!Y.authError&&e(h)});var g=I(m,2),_=e=>{_O(e,{label:`Loading budgets...`})};U(g,e=>{X.loading&&!Y.authError&&e(_)});var v=I(g,2),y=e=>{var t=Vk(),n=P(t);SD(P(n),{id:`budget-filter`,placeholder:`Filter by user path, label, or period...`,label:`Filter budgets by user path or period`,get value(){return X.filter},set value(e){X.filter=e}}),D(n);var r=I(n,2),i=I(P(r),2),a=P(i);a.value=a.__value=`subject`;var o=I(a);o.value=o.__value=`period`,D(i),D(r),D(t),Ui(i,()=>X.sortBy,e=>X.sortBy=e),V(e,t)};U(v,e=>{(X.budgets.length>0||X.filter)&&X.budgetsAvailable&&!Y.authError&&!X.formOpen&&e(y)});var b=I(v,2);Ik(b,{});var x=I(b,2),S=e=>{vk(e,{get budgets(){return R(n)}})};U(x,e=>{R(n).length>0&&X.budgetsAvailable&&!Y.authError&&e(S)});var C=I(x,2),w=e=>{V(e,Hk())},T=A(()=>X.budgets.length===0&&!X.filter&&!X.loading&&!Y.authError&&!X.error&&X.budgetsAvailable&&X.managementEnabled());U(C,e=>{R(T)&&e(w)});var E=I(C,2),ee=e=>{V(e,Uk())},te=A(()=>X.budgets.length>0&&R(n).length===0&&X.filter&&!X.loading&&!Y.authError&&!X.error&&X.budgetsAvailable&&X.managementEnabled());U(E,e=>{R(te)&&e(ee)}),D(r),V(e,r),k()}Br([`click`]);function Kk(){return{scope:`user_path`,subject:`/`,period:`minute`,period_seconds:60,max_requests:``,max_tokens:``,source:`manual`}}function qk(e){let t={user_path:{label:`User path`,chip:`user path`,fieldLabel:`User Path`,placeholder:`/team/alpha`},provider:{label:`Provider`,chip:`provider`,fieldLabel:`Provider Name`,placeholder:`openai`},model:{label:`Model`,chip:`model`,fieldLabel:`Model`,placeholder:`openai/gpt-4o`}};return t[e]||t.user_path}function Jk(){return[`user_path`,`provider`,`model`].map(e=>({value:e,label:qk(e).label}))}function Yk(e){return String(e&&e.scope||``).trim()||`user_path`}function Xk(e){return String(e&&e.subject||``).trim()||String(e&&e.user_path||``)}function Zk(e){return qk(Yk(e)).chip}function Qk(e){return qk(String(e&&e.scope||``)).fieldLabel}function $k(e){return qk(String(e&&e.scope||``)).placeholder}function eA(e){e.subject=String(e&&e.scope||``)===`user_path`?`/`:``}function tA(){return[{value:`minute`,label:`Per minute`},{value:`hour`,label:`Per hour`},{value:`day`,label:`Per day`},{value:`concurrent`,label:`Concurrent (in-flight)`},{value:`custom`,label:`Custom seconds`}]}function nA(e){switch(String(e||``).trim().toLowerCase()){case`minute`:return 60;case`hour`:return 3600;case`day`:return 86400;case`concurrent`:return 0;default:return-1}}function rA(e){switch(Number(e||0)){case 60:return`minute`;case 3600:return`hour`;case 86400:return`day`;case 0:return`concurrent`;default:return`custom`}}function iA(e){let t=String(e&&e.period||``).trim(),n=nA(t);n>=0&&(e.period_seconds=n),t===`concurrent`&&(e.max_tokens=``)}function aA(e){return Yk(e)+`:`+Xk(e)+`:`+String(e&&e.period_seconds||`0`)}function oA(e){return Number(e&&e.period_seconds||0)===0}function sA(e){return String(e&&e.period_label||``).trim()||rA(Number(e&&e.period_seconds||0))}function cA(e){return String(e&&e.source||``)===`config`?`config`:`manual`}function lA(e){return String(e&&e.source||``)===`config`}function uA(e){let t=Number(e);return Number.isFinite(t)?t.toLocaleString():`0`}function dA(e,t){let n=Number(e),r=Number(t);if(!Number.isFinite(n)||!Number.isFinite(r)||r<=0)return 0;let i=Math.round(n/r*100);return Math.min(Math.max(i,0),100)}function fA(e,t){let n=String(t||``).trim().toLowerCase(),r=Array.isArray(e)?e.slice():[],i={user_path:0,provider:1,model:2};return r.sort((e,t)=>{let n=(i[Yk(e)]||0)-(i[Yk(t)]||0);if(n!==0)return n;let r=Xk(e).localeCompare(Xk(t));return r===0?Number(e.period_seconds||0)-Number(t.period_seconds||0):r}),n?r.filter(e=>{let t=Xk(e).toLowerCase(),r=Zk(e).toLowerCase(),i=sA(e).toLowerCase();return t.includes(n)||r.includes(n)||i.includes(n)}):r}function pA(e){return!e||!Array.isArray(e.rate_limits)?[]:e.rate_limits}function mA(e,t,n){let r=String(t||``).trim();return r=e===`provider`||e===`model`?r.toLowerCase():`/`+r.split(`/`).map(e=>e.trim()).filter(Boolean).join(`/`),e+`:`+r+`:`+Number(n||0)}function hA(e,t){return e?mA(t.scope,t.subject,t.limit_key.period_seconds)!==mA(e.scope,e.subject,e.period_seconds):!1}function gA(e){let t=e||{},n=String(t.scope||`user_path`),r=String(t.subject||``).trim();if(n!==`user_path`&&!r)return{error:Qk(t)+` is required.`};let i=String(t.period||``)===`concurrent`,a=t.period_seconds;if(a===``||a==null)return{error:`Period seconds is required.`};let o=Number(a);if(!Number.isInteger(o)||o<0||o===0&&!i)return{error:`Period seconds must be a positive integer (0 only for the concurrent period).`};let s=String(t.max_requests===void 0||t.max_requests===null?``:t.max_requests).trim(),c=String(t.max_tokens===void 0||t.max_tokens===null?``:t.max_tokens).trim();if(!s&&!c)return{error:`Set max requests, max tokens, or both.`};if(i&&c)return{error:`Token limits are not valid for the concurrent period.`};let l={scope:n,subject:r||`/`,limit_key:{period_seconds:o}};if(s){let e=Number(s);if(!Number.isInteger(e)||e<=0)return{error:`Max requests must be a positive integer.`};l.max_requests=e}if(c){let e=Number(c);if(!Number.isInteger(e)||e<=0)return{error:`Max tokens must be a positive integer.`};l.max_tokens=e}return{payload:l}}function _A(e,t,n){if(Yk(e)!==`model`)return!1;let r=String(Xk(e)).toLowerCase(),i=String(n||``).trim().toLowerCase();if(!i)return!1;if(r===i)return!0;let a=String(t||``).trim().toLowerCase();return a?r===a+`/`+i||i.startsWith(a+`/`)&&r===i.slice(a.length+1):!1}function vA(e,t){return Yk(e)===`provider`&&String(Xk(e)).toLowerCase()===String(t||``).trim().toLowerCase()}function yA(e){let t=e||{},n=String(t.model||``),r=String(t.provider||``);return!r||n.toLowerCase().startsWith(r+`/`)?n:r+`/`+n}function bA(e,t){let n=e||{},r=Array.isArray(t)?t:[],i=[];return n.kind===`model`&&i.push({key:`model`,title:`Model limits`,scope:`model`,subject:yA(n),hint:``,items:r.filter(e=>_A(e,n.provider,n.model))}),i.push({key:`provider`,title:`Provider limits (`+n.provider+`)`,scope:`provider`,subject:n.provider,hint:n.kind===`model`?`Shared by every model routed to this provider.`:``,items:r.filter(e=>vA(e,n.provider))}),i.push({key:`global`,title:`Global limits`,scope:`user_path`,subject:`/`,hint:`Root user-path rules throttle all traffic. Narrower user-path rules also apply, per consumer.`,items:r.filter(e=>Yk(e)===`user_path`&&Xk(e)===`/`)}),i}function xA(e){return oA(e)?dA(e.in_flight,e.max_requests):Math.max(dA(e.requests_used,e.max_requests),dA(e.tokens_used,e.max_tokens))}function SA(e){return`--rate-limit-pressure: `+xA(e)+`%`}function CA(e){let t=xA(e);return t>=100?`rate-limit-pressure-row rate-limit-pressure-full`:t>=75?`rate-limit-pressure-row rate-limit-pressure-high`:`rate-limit-pressure-row`}function wA(e){return(Array.isArray(e)?e:[]).some(e=>Yk(e)===`user_path`&&Xk(e)===`/`)}function TA(e,t,n){let r=Array.isArray(e)?e:[];return r.some(e=>_A(e,t,n))?`table-action-btn-active`:r.some(e=>vA(e,t))||wA(r)?`rate-limit-gauge-inherited`:``}function EA(e,t){let n=Array.isArray(e)?e:[];return n.some(e=>vA(e,t))?`table-action-btn-active`:wA(n)?`rate-limit-gauge-inherited`:``}function DA(e,t){let n=`Rate limits for `+e;return t===`table-action-btn-active`?n+` (direct limits configured)`:t?n+` (inherited limits apply)`:n}function OA(e){if(oA(e))return uA(e.in_flight)+` of `+uA(e.max_requests)+` in flight`;let t=[];return e.max_requests!==null&&e.max_requests!==void 0&&t.push(uA(e.requests_used)+`/`+uA(e.max_requests)+` req`),e.max_tokens!==null&&e.max_tokens!==void 0&&t.push(uA(e.tokens_used)+`/`+uA(e.max_tokens)+` tok`),t.join(` · `)}var Z=new class{#e=j(N([]));get rateLimits(){return R(this.#e)}set rateLimits(e){M(this.#e,e,!0)}#t=j(!0);get rateLimitsAvailable(){return R(this.#t)}set rateLimitsAvailable(e){M(this.#t,e,!0)}#n=j(!1);get rateLimitsLoading(){return R(this.#n)}set rateLimitsLoading(e){M(this.#n,e,!0)}rateLimitFetchPromise=null;#r=j(``);get rateLimitFilter(){return R(this.#r)}set rateLimitFilter(e){M(this.#r,e,!0)}#i=j(``);get rateLimitError(){return R(this.#i)}set rateLimitError(e){M(this.#i,e,!0)}#a=j(!1);get rateLimitFormOpen(){return R(this.#a)}set rateLimitFormOpen(e){M(this.#a,e,!0)}#o=j(!1);get rateLimitFormSubmitting(){return R(this.#o)}set rateLimitFormSubmitting(e){M(this.#o,e,!0)}#s=j(``);get rateLimitFormError(){return R(this.#s)}set rateLimitFormError(e){M(this.#s,e,!0)}#c=j(!1);get rateLimitEditing(){return R(this.#c)}set rateLimitEditing(e){M(this.#c,e,!0)}rateLimitEditingOriginal=null;rateLimitFormReturnToInspector=!1;#l=j(``);get rateLimitResettingKey(){return R(this.#l)}set rateLimitResettingKey(e){M(this.#l,e,!0)}#u=j(``);get rateLimitDeletingKey(){return R(this.#u)}set rateLimitDeletingKey(e){M(this.#u,e,!0)}#d=j(!1);get rateLimitInspectorOpen(){return R(this.#d)}set rateLimitInspectorOpen(e){M(this.#d,e,!0)}#f=j(N({kind:``,provider:``,model:``,title:``}));get rateLimitInspector(){return R(this.#f)}set rateLimitInspector(e){M(this.#f,e,!0)}#p=j(N(Kk()));get rateLimitForm(){return R(this.#p)}set rateLimitForm(e){M(this.#p,e,!0)}rateLimitsEnabled(){return bu.rateLimitsVisible()}defaultRateLimitForm(){return Kk()}rateLimitScopeMeta(e){return qk(e)}rateLimitScopeOptions(){return Jk()}rateLimitScope(e){return Yk(e)}rateLimitSubject(e){return Xk(e)}rateLimitScopeLabel(e){return Zk(e)}rateLimitSubjectFieldLabel(){return Qk(this.rateLimitForm)}rateLimitSubjectPlaceholder(){return $k(this.rateLimitForm)}syncRateLimitScope(){eA(this.rateLimitForm)}rateLimitPeriodOptions(){return tA()}rateLimitPeriodSeconds(e){return nA(e)}rateLimitPeriodFromSeconds(e){return rA(e)}syncRateLimitPeriodSeconds(){iA(this.rateLimitForm)}rateLimitKey(e){return aA(e)}rateLimitIsConcurrent(e){return oA(e)}rateLimitPeriodLabel(e){return sA(e)}rateLimitSourceLabel(e){return cA(e)}rateLimitIsReadOnly(e){return lA(e)}formatRateLimitNumber(e){return uA(e)}rateLimitUsagePercent(e,t){return dA(e,t)}filteredRateLimits(){return fA(this.rateLimits,this.rateLimitFilter)}normalizeRateLimitListPayload(e){return pA(e)}async fetchRateLimitsPage(){if(await bu.ensureLoaded(),!this.rateLimitsEnabled()){this.rateLimits=[],this.rateLimitsAvailable=!1,this.rateLimitError=``;return}return this.rateLimitFetchPromise||=this.fetchRateLimits().finally(()=>{this.rateLimitFetchPromise=null}),this.rateLimitFetchPromise}async fetchRateLimits(){this.rateLimitsLoading=!0,this.rateLimitError=``;let e=await bO(`/admin/rate-limits`,{label:`rate limits`,errorFallback:`Unable to load rate limits.`,normalize:pA});if(this.rateLimitsLoading=!1,e.status!==`stale`){if(e.status===`unavailable`){this.rateLimitsAvailable=!1,this.rateLimits=[];return}if(!e.result){this.rateLimits=[],this.rateLimitError=e.error;return}if(this.rateLimitsAvailable=!0,e.status===`error`){this.rateLimitError=e.error;return}this.rateLimits=e.items}}openRateLimitForm(e){if(this.rateLimitEditing=!!e,this.rateLimitFormError=``,e){let t=Number(e.period_seconds||0);this.rateLimitEditingOriginal={scope:Yk(e),subject:Xk(e),period_seconds:t},this.rateLimitForm={scope:Yk(e),subject:Xk(e),period:rA(t),period_seconds:t,max_requests:e.max_requests===null||e.max_requests===void 0?``:String(e.max_requests),max_tokens:e.max_tokens===null||e.max_tokens===void 0?``:String(e.max_tokens),source:String(e.source||`manual`)}}else this.rateLimitEditingOriginal=null,this.rateLimitForm=Kk();this.rateLimitFormOpen=!0}closeRateLimitForm(){this.rateLimitFormOpen=!1,this.rateLimitFormSubmitting=!1,this.rateLimitFormError=``,this.rateLimitEditing=!1,this.rateLimitEditingOriginal=null,this.rateLimitForm=Kk(),this.rateLimitFormReturnToInspector&&(this.rateLimitFormReturnToInspector=!1,this.rateLimitInspectorOpen=!0)}rateLimitNormalizedIdentity(e,t,n){return mA(e,t,n)}rateLimitIdentityMoved(e){return hA(this.rateLimitEditingOriginal,e)}setRateLimitFormSubject(e){this.rateLimitForm.subject=String(e||``)}rateLimitFormPayload(){return gA(this.rateLimitForm)}async submitRateLimitForm(){if(this.rateLimitFormSubmitting)return;let{payload:e,error:t}=this.rateLimitFormPayload();if(t){this.rateLimitFormError=t;return}let n=this.rateLimitIdentityMoved(e),r=this.rateLimitEditingOriginal;this.rateLimitFormSubmitting=!0,this.rateLimitFormError=``;try{let t=await xO(`/admin/rate-limits`,`PUT`,e,{label:`save rate limit`,errorFallback:`Unable to save rate limit.`,unavailableStatuses:[]});if(t.status===`stale`)return;if(t.status!==`ok`){this.rateLimitFormError=t.error;return}if(this.rateLimits=pA(t.result.data),n&&!await this.deleteMovedRateLimitOriginal(r))return;this.closeRateLimitForm(),ed.success(n?`Rate limit moved; live counters restarted.`:`Rate limit saved.`)}finally{this.rateLimitFormSubmitting=!1}}async deleteMovedRateLimitOriginal(e){let t=await xO(`/admin/rate-limits`,`DELETE`,{scope:e.scope,subject:e.subject,limit_key:{period_seconds:Number(e.period_seconds||0)}},{label:`remove the moved rate limit`,errorFallback:`The new rule was saved, but the previous one could not be removed. Delete it manually.`,unavailableStatuses:[]});return t.status===`stale`?!1:t.status===`ok`?(this.rateLimits=pA(t.result.data),!0):(this.rateLimitFormError=t.error,!1)}async deleteRateLimit(e){let t=aA(e);if(this.rateLimitDeletingKey===t)return;this.rateLimitDeletingKey=t;let n=await xO(`/admin/rate-limits`,`DELETE`,{scope:Yk(e),subject:Xk(e),limit_key:{period_seconds:Number(e.period_seconds||0)}},{label:`delete rate limit`,errorFallback:`Unable to delete rate limit.`,unavailableStatuses:[]});if(this.rateLimitDeletingKey=``,n.status!==`stale`){if(n.status!==`ok`){ed.error(n.error);return}this.rateLimits=pA(n.result.data),ed.success(`Rate limit deleted.`)}}async resetRateLimit(e){let t=aA(e);if(this.rateLimitResettingKey===t)return;this.rateLimitResettingKey=t;let n=await xO(`/admin/rate-limits/reset-one`,`POST`,{scope:Yk(e),subject:Xk(e),period_seconds:Number(e.period_seconds||0)},{label:`reset rate limit`,errorFallback:`Unable to reset rate limit.`,unavailableStatuses:[]});if(this.rateLimitResettingKey=``,n.status!==`stale`){if(n.status!==`ok`){ed.error(n.error);return}this.rateLimits=pA(n.result.data),ed.success(`Rate limit counters reset.`)}}rateLimitInspectorModelID(e){return String(e&&e.model&&e.model.id||``).trim()}openRateLimitInspectorForModel(e){let t=this.rateLimitInspectorModelID(e),n=String(e&&e.provider_name||``).trim().toLowerCase();this.rateLimitInspector={kind:`model`,provider:n,model:t,title:String(e&&e.display_name||t)},this.showRateLimitInspector()}openRateLimitInspectorForProvider(e){let t=String(e&&e.provider_name||``).trim().toLowerCase();this.rateLimitInspector={kind:`provider`,provider:t,model:``,title:String(e&&e.display_name||t)},this.showRateLimitInspector()}showRateLimitInspector(){this.rateLimitInspectorOpen=!0,this.fetchRateLimitsPage()}closeRateLimitInspector(){this.rateLimitInspectorOpen=!1}rateLimitRuleMatchesModel(e,t,n){return _A(e,t,n)}rateLimitRuleMatchesProvider(e,t){return vA(e,t)}rateLimitInspectorQualifiedModel(){return yA(this.rateLimitInspector)}rateLimitInspectorSections(){return bA(this.rateLimitInspector,this.rateLimits)}rateLimitPressurePercent(e){return xA(e)}rateLimitPressureStyle(e){return SA(e)}rateLimitPressureClass(e){return CA(e)}rateLimitGaugeCache={rules:null,states:{}};rateLimitGaugeMemo(e,t){this.rateLimitGaugeCache.rules!==this.rateLimits&&(this.rateLimitGaugeCache={rules:this.rateLimits,states:{}});let n=this.rateLimitGaugeCache.states;return e in n||(n[e]=t()),n[e]}rateLimitGaugeClassForModel(e){let t=this.rateLimitInspectorModelID(e),n=String(e&&e.provider_name||``).trim().toLowerCase(),r=this.rateLimits;return this.rateLimitGaugeMemo(`model:`+n+`/`+t,()=>TA(r,n,t))}rateLimitGaugeClassForProvider(e){let t=String(e&&e.provider_name||``).trim().toLowerCase(),n=this.rateLimits;return this.rateLimitGaugeMemo(`provider:`+t,()=>EA(n,t))}hasGlobalRateLimits(){let e=this.rateLimits;return this.rateLimitGaugeMemo(`global`,()=>wA(e))}rateLimitGaugeTitle(e,t){return DA(e,t)}rateLimitInspectorSummary(e){return OA(e)}openRateLimitFormFromInspector(e,t,n){this.rateLimitInspectorOpen=!1,this.rateLimitFormReturnToInspector=!0,this.openRateLimitForm(n||void 0),n||(this.rateLimitForm.scope=e,this.rateLimitForm.subject=t)}},kA=B(``),AA=B(``),jA=B(``),MA=B(``),NA=B(``),PA=B(``),FA=B(``),IA=B(`

Scope, subject, and period identify the rule: changing any of them - moves the rule to a new key and restarts its live counters.

`),LA=B(`

A user path rule limits the whole subtree; provider and model rules cap + active workflow.`))},$$slots:{title:!0,help:!0}}),D(a);var o=I(a,2),s=P(o),c=e=>{var t=UA();J(P(t),{get icon(){return lu},class:`form-action-icon`}),Ve(2),D(t),L(()=>t.disabled=X.formSubmitting),z(`click`,t,()=>X.openForm()),V(e,t)},l=A(()=>X.managementEnabled()&&X.budgetsAvailable&&!Y.authError);U(s,e=>{R(l)&&e(c)}),D(o),D(i);var u=I(i,2);Wf(u,{});var d=I(u,2),f=e=>{V(e,WA())},p=A(()=>(!X.managementEnabled()||!X.budgetsAvailable)&&!Y.authError);U(d,e=>{R(p)&&e(f)});var m=I(d,2),h=e=>{var t=GA(),n=P(t,!0);D(t),L(()=>H(n,X.error)),V(e,t)};U(m,e=>{X.error&&!Y.authError&&e(h)});var g=I(m,2),_=e=>{Sk(e,{label:`Loading budgets...`})};U(g,e=>{X.loading&&!Y.authError&&e(_)});var v=I(g,2),y=e=>{var t=KA(),n=P(t);DO(P(n),{id:`budget-filter`,placeholder:`Filter by user path, label, or period...`,label:`Filter budgets by user path or period`,get value(){return X.filter},set value(e){X.filter=e}}),D(n);var r=I(n,2),i=I(P(r),2),a=P(i);a.value=a.__value=`subject`;var o=I(a);o.value=o.__value=`period`,D(i),D(r),D(t),Ui(i,()=>X.sortBy,e=>X.sortBy=e),V(e,t)};U(v,e=>{(X.budgets.length>0||X.filter)&&X.budgetsAvailable&&!Y.authError&&!X.formOpen&&e(y)});var b=I(v,2);VA(b,{});var x=I(b,2),S=e=>{CA(e,{get budgets(){return R(n)}})};U(x,e=>{R(n).length>0&&X.budgetsAvailable&&!Y.authError&&e(S)});var C=I(x,2),w=e=>{V(e,qA())},T=A(()=>X.budgets.length===0&&!X.filter&&!X.loading&&!Y.authError&&!X.error&&X.budgetsAvailable&&X.managementEnabled());U(C,e=>{R(T)&&e(w)});var E=I(C,2),ee=e=>{V(e,JA())},te=A(()=>X.budgets.length>0&&R(n).length===0&&X.filter&&!X.loading&&!Y.authError&&!X.error&&X.budgetsAvailable&&X.managementEnabled());U(E,e=>{R(te)&&e(ee)}),D(r),V(e,r),k()}Br([`click`]);function ZA(){return{scope:`user_path`,subject:`/`,period:`minute`,period_seconds:60,max_requests:``,max_tokens:``,source:`manual`}}function QA(e){let t={user_path:{label:`User path`,chip:`user path`,fieldLabel:`User Path`,placeholder:`/team/alpha`},provider:{label:`Provider`,chip:`provider`,fieldLabel:`Provider Name`,placeholder:`openai`},model:{label:`Model`,chip:`model`,fieldLabel:`Model`,placeholder:`openai/gpt-4o`}};return t[e]||t.user_path}function $A(){return[`user_path`,`provider`,`model`].map(e=>({value:e,label:QA(e).label}))}function ej(e){return String(e&&e.scope||``).trim()||`user_path`}function tj(e){return String(e&&e.subject||``).trim()||String(e&&e.user_path||``)}function nj(e){return QA(ej(e)).chip}function rj(e){return QA(String(e&&e.scope||``)).fieldLabel}function ij(e){return QA(String(e&&e.scope||``)).placeholder}function aj(e){e.subject=String(e&&e.scope||``)===`user_path`?`/`:``}function oj(){return[{value:`minute`,label:`Per minute`},{value:`hour`,label:`Per hour`},{value:`day`,label:`Per day`},{value:`concurrent`,label:`Concurrent (in-flight)`},{value:`custom`,label:`Custom seconds`}]}function sj(e){switch(String(e||``).trim().toLowerCase()){case`minute`:return 60;case`hour`:return 3600;case`day`:return 86400;case`concurrent`:return 0;default:return-1}}function cj(e){switch(Number(e||0)){case 60:return`minute`;case 3600:return`hour`;case 86400:return`day`;case 0:return`concurrent`;default:return`custom`}}function lj(e){let t=String(e&&e.period||``).trim(),n=sj(t);n>=0&&(e.period_seconds=n),t===`concurrent`&&(e.max_tokens=``)}function uj(e){return ej(e)+`:`+tj(e)+`:`+String(e&&e.period_seconds||`0`)}function dj(e){return Number(e&&e.period_seconds||0)===0}function fj(e){return String(e&&e.period_label||``).trim()||cj(Number(e&&e.period_seconds||0))}function pj(e){return String(e&&e.source||``)===`config`?`config`:`manual`}function mj(e){return String(e&&e.source||``)===`config`}function hj(e){let t=Number(e);return Number.isFinite(t)?t.toLocaleString():`0`}function gj(e,t){let n=Number(e),r=Number(t);if(!Number.isFinite(n)||!Number.isFinite(r)||r<=0)return 0;let i=Math.round(n/r*100);return Math.min(Math.max(i,0),100)}function _j(e,t){let n=String(t||``).trim().toLowerCase(),r=Array.isArray(e)?e.slice():[],i={user_path:0,provider:1,model:2};return r.sort((e,t)=>{let n=(i[ej(e)]||0)-(i[ej(t)]||0);if(n!==0)return n;let r=tj(e).localeCompare(tj(t));return r===0?Number(e.period_seconds||0)-Number(t.period_seconds||0):r}),n?r.filter(e=>{let t=tj(e).toLowerCase(),r=nj(e).toLowerCase(),i=fj(e).toLowerCase();return t.includes(n)||r.includes(n)||i.includes(n)}):r}function vj(e){return!e||!Array.isArray(e.rate_limits)?[]:e.rate_limits}function yj(e,t,n){let r=String(t||``).trim();return r=e===`provider`||e===`model`?r.toLowerCase():`/`+r.split(`/`).map(e=>e.trim()).filter(Boolean).join(`/`),e+`:`+r+`:`+Number(n||0)}function bj(e,t){return e?yj(t.scope,t.subject,t.limit_key.period_seconds)!==yj(e.scope,e.subject,e.period_seconds):!1}function xj(e){let t=e||{},n=String(t.scope||`user_path`),r=String(t.subject||``).trim();if(n!==`user_path`&&!r)return{error:rj(t)+` is required.`};let i=String(t.period||``)===`concurrent`,a=t.period_seconds;if(a===``||a==null)return{error:`Period seconds is required.`};let o=Number(a);if(!Number.isInteger(o)||o<0||o===0&&!i)return{error:`Period seconds must be a positive integer (0 only for the concurrent period).`};let s=String(t.max_requests===void 0||t.max_requests===null?``:t.max_requests).trim(),c=String(t.max_tokens===void 0||t.max_tokens===null?``:t.max_tokens).trim();if(!s&&!c)return{error:`Set max requests, max tokens, or both.`};if(i&&c)return{error:`Token limits are not valid for the concurrent period.`};let l={scope:n,subject:r||`/`,limit_key:{period_seconds:o}};if(s){let e=Number(s);if(!Number.isInteger(e)||e<=0)return{error:`Max requests must be a positive integer.`};l.max_requests=e}if(c){let e=Number(c);if(!Number.isInteger(e)||e<=0)return{error:`Max tokens must be a positive integer.`};l.max_tokens=e}return{payload:l}}function Sj(e,t,n){if(ej(e)!==`model`)return!1;let r=String(tj(e)).toLowerCase(),i=String(n||``).trim().toLowerCase();if(!i)return!1;if(r===i)return!0;let a=String(t||``).trim().toLowerCase();return a?r===a+`/`+i||i.startsWith(a+`/`)&&r===i.slice(a.length+1):!1}function Cj(e,t){return ej(e)===`provider`&&String(tj(e)).toLowerCase()===String(t||``).trim().toLowerCase()}function wj(e){let t=e||{},n=String(t.model||``),r=String(t.provider||``);return!r||n.toLowerCase().startsWith(r+`/`)?n:r+`/`+n}function Tj(e,t){let n=e||{},r=Array.isArray(t)?t:[],i=[];return n.kind===`model`&&i.push({key:`model`,title:`Model limits`,scope:`model`,subject:wj(n),hint:``,items:r.filter(e=>Sj(e,n.provider,n.model))}),i.push({key:`provider`,title:`Provider limits (`+n.provider+`)`,scope:`provider`,subject:n.provider,hint:n.kind===`model`?`Shared by every model routed to this provider.`:``,items:r.filter(e=>Cj(e,n.provider))}),i.push({key:`global`,title:`Global limits`,scope:`user_path`,subject:`/`,hint:`Root user-path rules throttle all traffic. Narrower user-path rules also apply, per consumer.`,items:r.filter(e=>ej(e)===`user_path`&&tj(e)===`/`)}),i}function Ej(e){return dj(e)?gj(e.in_flight,e.max_requests):Math.max(gj(e.requests_used,e.max_requests),gj(e.tokens_used,e.max_tokens))}function Dj(e){return`--rate-limit-pressure: `+Ej(e)+`%`}function Oj(e){let t=Ej(e);return t>=100?`rate-limit-pressure-row rate-limit-pressure-full`:t>=75?`rate-limit-pressure-row rate-limit-pressure-high`:`rate-limit-pressure-row`}function kj(e){return(Array.isArray(e)?e:[]).some(e=>ej(e)===`user_path`&&tj(e)===`/`)}function Aj(e,t,n){let r=Array.isArray(e)?e:[];return r.some(e=>Sj(e,t,n))?`table-action-btn-active`:r.some(e=>Cj(e,t))||kj(r)?`rate-limit-gauge-inherited`:``}function jj(e,t){let n=Array.isArray(e)?e:[];return n.some(e=>Cj(e,t))?`table-action-btn-active`:kj(n)?`rate-limit-gauge-inherited`:``}function Mj(e,t){let n=`Rate limits for `+e;return t===`table-action-btn-active`?n+` (direct limits configured)`:t?n+` (inherited limits apply)`:n}function Nj(e){if(dj(e))return hj(e.in_flight)+` of `+hj(e.max_requests)+` in flight`;let t=[];return e.max_requests!==null&&e.max_requests!==void 0&&t.push(hj(e.requests_used)+`/`+hj(e.max_requests)+` req`),e.max_tokens!==null&&e.max_tokens!==void 0&&t.push(hj(e.tokens_used)+`/`+hj(e.max_tokens)+` tok`),t.join(` · `)}var Z=new class{#e=j(N([]));get rateLimits(){return R(this.#e)}set rateLimits(e){M(this.#e,e,!0)}#t=j(!0);get rateLimitsAvailable(){return R(this.#t)}set rateLimitsAvailable(e){M(this.#t,e,!0)}#n=j(!1);get rateLimitsLoading(){return R(this.#n)}set rateLimitsLoading(e){M(this.#n,e,!0)}rateLimitFetchPromise=null;#r=j(``);get rateLimitFilter(){return R(this.#r)}set rateLimitFilter(e){M(this.#r,e,!0)}#i=j(``);get rateLimitError(){return R(this.#i)}set rateLimitError(e){M(this.#i,e,!0)}#a=j(!1);get rateLimitFormOpen(){return R(this.#a)}set rateLimitFormOpen(e){M(this.#a,e,!0)}#o=j(!1);get rateLimitFormSubmitting(){return R(this.#o)}set rateLimitFormSubmitting(e){M(this.#o,e,!0)}#s=j(``);get rateLimitFormError(){return R(this.#s)}set rateLimitFormError(e){M(this.#s,e,!0)}#c=j(!1);get rateLimitEditing(){return R(this.#c)}set rateLimitEditing(e){M(this.#c,e,!0)}rateLimitEditingOriginal=null;rateLimitFormReturnToInspector=!1;#l=j(``);get rateLimitResettingKey(){return R(this.#l)}set rateLimitResettingKey(e){M(this.#l,e,!0)}#u=j(``);get rateLimitDeletingKey(){return R(this.#u)}set rateLimitDeletingKey(e){M(this.#u,e,!0)}#d=j(!1);get rateLimitInspectorOpen(){return R(this.#d)}set rateLimitInspectorOpen(e){M(this.#d,e,!0)}#f=j(N({kind:``,provider:``,model:``,title:``}));get rateLimitInspector(){return R(this.#f)}set rateLimitInspector(e){M(this.#f,e,!0)}#p=j(N(ZA()));get rateLimitForm(){return R(this.#p)}set rateLimitForm(e){M(this.#p,e,!0)}rateLimitsEnabled(){return Td.rateLimitsVisible()}defaultRateLimitForm(){return ZA()}rateLimitScopeMeta(e){return QA(e)}rateLimitScopeOptions(){return $A()}rateLimitScope(e){return ej(e)}rateLimitSubject(e){return tj(e)}rateLimitScopeLabel(e){return nj(e)}rateLimitSubjectFieldLabel(){return rj(this.rateLimitForm)}rateLimitSubjectPlaceholder(){return ij(this.rateLimitForm)}syncRateLimitScope(){aj(this.rateLimitForm)}rateLimitPeriodOptions(){return oj()}rateLimitPeriodSeconds(e){return sj(e)}rateLimitPeriodFromSeconds(e){return cj(e)}syncRateLimitPeriodSeconds(){lj(this.rateLimitForm)}rateLimitKey(e){return uj(e)}rateLimitIsConcurrent(e){return dj(e)}rateLimitPeriodLabel(e){return fj(e)}rateLimitSourceLabel(e){return pj(e)}rateLimitIsReadOnly(e){return mj(e)}formatRateLimitNumber(e){return hj(e)}rateLimitUsagePercent(e,t){return gj(e,t)}filteredRateLimits(){return _j(this.rateLimits,this.rateLimitFilter)}normalizeRateLimitListPayload(e){return vj(e)}async fetchRateLimitsPage(){if(await Td.ensureLoaded(),!this.rateLimitsEnabled()){this.rateLimits=[],this.rateLimitsAvailable=!1,this.rateLimitError=``;return}return this.rateLimitFetchPromise||=this.fetchRateLimits().finally(()=>{this.rateLimitFetchPromise=null}),this.rateLimitFetchPromise}async fetchRateLimits(){this.rateLimitsLoading=!0,this.rateLimitError=``;let e=await Tk(`/admin/rate-limits`,{label:`rate limits`,errorFallback:`Unable to load rate limits.`,normalize:vj});if(this.rateLimitsLoading=!1,e.status!==`stale`){if(e.status===`unavailable`){this.rateLimitsAvailable=!1,this.rateLimits=[];return}if(!e.result){this.rateLimits=[],this.rateLimitError=e.error;return}if(this.rateLimitsAvailable=!0,e.status===`error`){this.rateLimitError=e.error;return}this.rateLimits=e.items}}openRateLimitForm(e){if(this.rateLimitEditing=!!e,this.rateLimitFormError=``,e){let t=Number(e.period_seconds||0);this.rateLimitEditingOriginal={scope:ej(e),subject:tj(e),period_seconds:t},this.rateLimitForm={scope:ej(e),subject:tj(e),period:cj(t),period_seconds:t,max_requests:e.max_requests===null||e.max_requests===void 0?``:String(e.max_requests),max_tokens:e.max_tokens===null||e.max_tokens===void 0?``:String(e.max_tokens),source:String(e.source||`manual`)}}else this.rateLimitEditingOriginal=null,this.rateLimitForm=ZA();this.rateLimitFormOpen=!0}closeRateLimitForm(){this.rateLimitFormOpen=!1,this.rateLimitFormSubmitting=!1,this.rateLimitFormError=``,this.rateLimitEditing=!1,this.rateLimitEditingOriginal=null,this.rateLimitForm=ZA(),this.rateLimitFormReturnToInspector&&(this.rateLimitFormReturnToInspector=!1,this.rateLimitInspectorOpen=!0)}rateLimitNormalizedIdentity(e,t,n){return yj(e,t,n)}rateLimitIdentityMoved(e){return bj(this.rateLimitEditingOriginal,e)}setRateLimitFormSubject(e){this.rateLimitForm.subject=String(e||``)}rateLimitFormPayload(){return xj(this.rateLimitForm)}async submitRateLimitForm(){if(this.rateLimitFormSubmitting)return;let{payload:e,error:t}=this.rateLimitFormPayload();if(t){this.rateLimitFormError=t;return}let n=this.rateLimitIdentityMoved(e),r=this.rateLimitEditingOriginal;this.rateLimitFormSubmitting=!0,this.rateLimitFormError=``;try{let t=await Ek(`/admin/rate-limits`,`PUT`,e,{label:`save rate limit`,errorFallback:`Unable to save rate limit.`,unavailableStatuses:[]});if(t.status===`stale`)return;if(t.status!==`ok`){this.rateLimitFormError=t.error;return}if(this.rateLimits=vj(t.result.data),n&&!await this.deleteMovedRateLimitOriginal(r))return;this.closeRateLimitForm(),of.success(n?`Rate limit moved; live counters restarted.`:`Rate limit saved.`)}finally{this.rateLimitFormSubmitting=!1}}async deleteMovedRateLimitOriginal(e){let t=await Ek(`/admin/rate-limits`,`DELETE`,{scope:e.scope,subject:e.subject,limit_key:{period_seconds:Number(e.period_seconds||0)}},{label:`remove the moved rate limit`,errorFallback:`The new rule was saved, but the previous one could not be removed. Delete it manually.`,unavailableStatuses:[]});return t.status===`stale`?!1:t.status===`ok`?(this.rateLimits=vj(t.result.data),!0):(this.rateLimitFormError=t.error,!1)}async deleteRateLimit(e){let t=uj(e);if(this.rateLimitDeletingKey===t)return;this.rateLimitDeletingKey=t;let n=await Ek(`/admin/rate-limits`,`DELETE`,{scope:ej(e),subject:tj(e),limit_key:{period_seconds:Number(e.period_seconds||0)}},{label:`delete rate limit`,errorFallback:`Unable to delete rate limit.`,unavailableStatuses:[]});if(this.rateLimitDeletingKey=``,n.status!==`stale`){if(n.status!==`ok`){of.error(n.error);return}this.rateLimits=vj(n.result.data),of.success(`Rate limit deleted.`)}}async resetRateLimit(e){let t=uj(e);if(this.rateLimitResettingKey===t)return;this.rateLimitResettingKey=t;let n=await Ek(`/admin/rate-limits/reset-one`,`POST`,{scope:ej(e),subject:tj(e),period_seconds:Number(e.period_seconds||0)},{label:`reset rate limit`,errorFallback:`Unable to reset rate limit.`,unavailableStatuses:[]});if(this.rateLimitResettingKey=``,n.status!==`stale`){if(n.status!==`ok`){of.error(n.error);return}this.rateLimits=vj(n.result.data),of.success(`Rate limit counters reset.`)}}rateLimitInspectorModelID(e){return String(e&&e.model&&e.model.id||``).trim()}openRateLimitInspectorForModel(e){let t=this.rateLimitInspectorModelID(e),n=String(e&&e.provider_name||``).trim().toLowerCase();this.rateLimitInspector={kind:`model`,provider:n,model:t,title:String(e&&e.display_name||t)},this.showRateLimitInspector()}openRateLimitInspectorForProvider(e){let t=String(e&&e.provider_name||``).trim().toLowerCase();this.rateLimitInspector={kind:`provider`,provider:t,model:``,title:String(e&&e.display_name||t)},this.showRateLimitInspector()}showRateLimitInspector(){this.rateLimitInspectorOpen=!0,this.fetchRateLimitsPage()}closeRateLimitInspector(){this.rateLimitInspectorOpen=!1}rateLimitRuleMatchesModel(e,t,n){return Sj(e,t,n)}rateLimitRuleMatchesProvider(e,t){return Cj(e,t)}rateLimitInspectorQualifiedModel(){return wj(this.rateLimitInspector)}rateLimitInspectorSections(){return Tj(this.rateLimitInspector,this.rateLimits)}rateLimitPressurePercent(e){return Ej(e)}rateLimitPressureStyle(e){return Dj(e)}rateLimitPressureClass(e){return Oj(e)}rateLimitGaugeCache={rules:null,states:{}};rateLimitGaugeMemo(e,t){this.rateLimitGaugeCache.rules!==this.rateLimits&&(this.rateLimitGaugeCache={rules:this.rateLimits,states:{}});let n=this.rateLimitGaugeCache.states;return e in n||(n[e]=t()),n[e]}rateLimitGaugeClassForModel(e){let t=this.rateLimitInspectorModelID(e),n=String(e&&e.provider_name||``).trim().toLowerCase(),r=this.rateLimits;return this.rateLimitGaugeMemo(`model:`+n+`/`+t,()=>Aj(r,n,t))}rateLimitGaugeClassForProvider(e){let t=String(e&&e.provider_name||``).trim().toLowerCase(),n=this.rateLimits;return this.rateLimitGaugeMemo(`provider:`+t,()=>jj(n,t))}hasGlobalRateLimits(){let e=this.rateLimits;return this.rateLimitGaugeMemo(`global`,()=>kj(e))}rateLimitGaugeTitle(e,t){return Mj(e,t)}rateLimitInspectorSummary(e){return Nj(e)}openRateLimitFormFromInspector(e,t,n){this.rateLimitInspectorOpen=!1,this.rateLimitFormReturnToInspector=!0,this.openRateLimitForm(n||void 0),n||(this.rateLimitForm.scope=e,this.rateLimitForm.subject=t)}},Pj=B(``),Fj=B(``),Ij=B(``),Lj=B(``),Rj=B(``),zj=B(``),Bj=B(``),Vj=B(`

Scope, subject, and period identify the rule: changing any of them + moves the rule to a new key and restarts its live counters.

`),Hj=B(`

A user path rule limits the whole subtree; provider and model rules cap all traffic routed there and make load balancing skip the target while it is saturated. One shared counter per rule. Leave a field empty to - skip that limit. Token limits require usage tracking.

`,1);function RA(e,t){O(t,!0);{let t=A(()=>Z.rateLimitEditing?`Edit Rate Limit`:`Create Rate Limit`);Ck(e,{get open(){return Z.rateLimitFormOpen},get title(){return R(t)},ariaLabel:`Rate limit editor`,get error(){return Z.rateLimitFormError},get submitting(){return Z.rateLimitFormSubmitting},submitLabel:`Save Rate Limit`,dialogClass:`budget-editor`,novalidate:!0,onclose:()=>Z.closeRateLimitForm(),onsubmit:()=>Z.submitRateLimitForm(),children:(e,t)=>{var n=LA(),r=F(n),i=P(r);Tk(i,{id:`rate-limit-scope`,label:`Scope`,children:(e,t)=>{var n=AA();W(n,21,()=>Z.rateLimitScopeOptions(),e=>e.value,(e,t)=>{var n=kA(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(n),z(`change`,n,()=>Z.syncRateLimitScope()),Ui(n,()=>Z.rateLimitForm.scope,e=>Z.rateLimitForm.scope=e),V(e,n)},$$slots:{default:!0}});var a=I(i,2);{let e=A(()=>Z.rateLimitSubjectFieldLabel());Tk(a,{id:`rate-limit-subject`,get label(){return R(e)},children:(e,t)=>{var n=jA();ea(n),L(e=>{K(n,`placeholder`,e),K(n,`data-modal-autofocus`,!Z.rateLimitEditing||void 0),ta(n,Z.rateLimitForm.subject)},[()=>Z.rateLimitSubjectPlaceholder()]),z(`input`,n,e=>Z.setRateLimitFormSubject(e.currentTarget.value)),V(e,n)},$$slots:{default:!0}})}var o=I(a,2);Tk(o,{id:`rate-limit-period`,label:`Period`,children:(e,t)=>{var n=MA();W(n,21,()=>Z.rateLimitPeriodOptions(),e=>e.value,(e,t)=>{var n=kA(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(n),z(`change`,n,()=>Z.syncRateLimitPeriodSeconds()),Ui(n,()=>Z.rateLimitForm.period,e=>Z.rateLimitForm.period=e),V(e,n)},$$slots:{default:!0}});var s=I(o,2),c=e=>{Tk(e,{id:`rate-limit-period-seconds`,label:`Period Seconds`,children:(e,t)=>{var n=NA();ea(n),la(n,()=>Z.rateLimitForm.period_seconds,e=>Z.rateLimitForm.period_seconds=e),V(e,n)},$$slots:{default:!0}})};U(s,e=>{Z.rateLimitForm.period===`custom`&&e(c)});var l=I(s,2);{let e=A(()=>Z.rateLimitForm.period===`concurrent`?`Max In-Flight Requests`:`Max Requests`);Tk(l,{id:`rate-limit-max-requests`,get label(){return R(e)},children:(e,t)=>{var n=PA();ea(n),L(()=>K(n,`data-modal-autofocus`,Z.rateLimitEditing?!0:void 0)),la(n,()=>Z.rateLimitForm.max_requests,e=>Z.rateLimitForm.max_requests=e),V(e,n)},$$slots:{default:!0}})}var u=I(l,2),d=e=>{Tk(e,{id:`rate-limit-max-tokens`,label:`Max Tokens`,children:(e,t)=>{var n=FA();ea(n),la(n,()=>Z.rateLimitForm.max_tokens,e=>Z.rateLimitForm.max_tokens=e),V(e,n)},$$slots:{default:!0}})};U(u,e=>{Z.rateLimitForm.period!==`concurrent`&&e(d)}),D(r);var f=I(r,4),p=e=>{V(e,IA())};U(f,e=>{Z.rateLimitEditing&&e(p)}),V(e,n)},$$slots:{default:!0}})}k()}Br([`change`,`input`]);var zA=B(` `),BA=B(` Edit`,1),VA=B(` `,1),HA=B(`
In-flight
`),UA=B(`
Requests
`),WA=B(`
Tokens
`),GA=B(`
`),KA=B(`
`);function qA(e,t){O(t,!0);var n=KA();W(n,21,()=>t.rules,e=>Z.rateLimitKey(e),(e,t)=>{var n=GA(),r=P(n),i=P(r),a=P(i),o=P(a,!0);D(a);var s=I(a,2),c=P(s),l=e=>{var n=zA(),r=P(n);{let e=A(()=>Z.rateLimitScope(R(t))===`provider`?dl:Ec);J(r,{get icon(){return R(e)},class:`budget-period-icon`})}var i=I(r,2),a=P(i,!0);D(i),D(n),L((e,t)=>{K(n,`title`,e),H(a,t)},[()=>`Rule scope: `+Z.rateLimitScopeLabel(R(t)),()=>Z.rateLimitScopeLabel(R(t))]),V(e,n)},u=A(()=>Z.rateLimitScope(R(t))!==`user_path`);U(c,e=>{R(u)&&e(l)});var d=I(c,2),f=P(d);{let e=A(()=>Z.rateLimitIsConcurrent(R(t))?xc:bl);J(f,{get icon(){return R(e)},class:`budget-period-icon`})}var p=I(f,2),m=P(p,!0);D(p),D(d),D(s);var h=I(s,2),g=P(h),_=P(g),v=P(_,!0);D(_),D(g);var y=I(g,2),b=P(y),x=e=>{yO(e,{label:`Edit rate limit`,class:`budget-action-btn`,onclick:()=>Z.openRateLimitForm(R(t)),children:(e,t)=>{var n=BA();J(F(n),{get icon(){return nl},class:`budget-action-icon`}),Ve(2),V(e,n)},$$slots:{default:!0}})},S=A(()=>!Z.rateLimitIsReadOnly(R(t)));U(b,e=>{R(S)&&e(x)});var C=I(b,2);{let e=A(()=>Z.rateLimitResettingKey===Z.rateLimitKey(R(t))?`Resetting counters`:`Reset counters`),n=A(()=>Z.rateLimitResettingKey===Z.rateLimitKey(R(t)));yO(C,{get label(){return R(e)},class:`budget-action-btn budget-action-btn-warning`,onclick:()=>Z.resetRateLimit(R(t)),get disabled(){return R(n)},children:(e,n)=>{var r=VA(),i=F(r);J(i,{get icon(){return sl},class:`budget-action-icon`});var a=I(i,2),o=P(a,!0);D(a),L(e=>H(o,e),[()=>Z.rateLimitResettingKey===Z.rateLimitKey(R(t))?`Resetting`:`Reset`]),V(e,r)},$$slots:{default:!0}})}var w=I(C,2),T=e=>{{let n=A(()=>Z.rateLimitDeletingKey===Z.rateLimitKey(R(t))?`Deleting rate limit`:`Delete rate limit`),r=A(()=>Z.rateLimitDeletingKey===Z.rateLimitKey(R(t)));yO(e,{get label(){return R(n)},class:`table-action-btn-danger budget-action-btn`,onclick:()=>Z.deleteRateLimit(R(t)),get disabled(){return R(r)},children:(e,n)=>{var r=VA(),i=F(r);J(i,{get icon(){return xl},class:`budget-action-icon`});var a=I(i,2),o=P(a,!0);D(a),L(e=>H(o,e),[()=>Z.rateLimitDeletingKey===Z.rateLimitKey(R(t))?`Deleting`:`Delete`]),V(e,r)},$$slots:{default:!0}})}},E=A(()=>!Z.rateLimitIsReadOnly(R(t)));U(w,e=>{R(E)&&e(T)}),D(y),D(h),D(i);var ee=I(i,2),te=P(ee),ne=e=>{var n=HA(),r=P(n),i=I(P(r),2),a=P(i,!0);D(i),D(r);var o=I(r,2),s=P(o);let c;var l=I(s,2),u=P(l),d=P(u,!0);D(u),D(l),D(o),D(n),L((e,t,n,r,i,l)=>{H(a,e),K(o,`aria-valuenow`,t),K(o,`aria-label`,n),Bi(o,r),c=G(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),H(d,l)},[()=>Z.rateLimitUsagePercent(R(t).in_flight,R(t).max_requests)+`%`,()=>Z.rateLimitUsagePercent(R(t).in_flight,R(t).max_requests),()=>`In-flight requests: `+Z.formatRateLimitNumber(R(t).in_flight)+` of `+Z.formatRateLimitNumber(R(t).max_requests),()=>`--budget-progress: `+Z.rateLimitUsagePercent(R(t).in_flight,R(t).max_requests)+`%`,()=>({"budget-bar-fill-danger":Z.rateLimitUsagePercent(R(t).in_flight,R(t).max_requests)>=100}),()=>Z.formatRateLimitNumber(R(t).in_flight)+` of `+Z.formatRateLimitNumber(R(t).max_requests)+` in flight`]),V(e,n)},re=A(()=>Z.rateLimitIsConcurrent(R(t)));U(te,e=>{R(re)&&e(ne)});var ie=I(te,2),ae=e=>{var n=UA(),r=P(n),i=I(P(r),2),a=P(i,!0);D(i),D(r);var o=I(r,2),s=P(o);let c;var l=I(s,2),u=P(l),d=P(u,!0);D(u);var f=I(u,2),p=P(f,!0);D(f),D(l),D(o),D(n),L((e,t,n,r,i,l,u)=>{H(a,e),K(o,`aria-valuenow`,t),K(o,`aria-label`,n),Bi(o,r),c=G(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),H(d,l),H(p,u)},[()=>Z.rateLimitUsagePercent(R(t).requests_used,R(t).max_requests)+`%`,()=>Z.rateLimitUsagePercent(R(t).requests_used,R(t).max_requests),()=>`Requests used: `+Z.formatRateLimitNumber(R(t).requests_used)+` of `+Z.formatRateLimitNumber(R(t).max_requests),()=>`--budget-progress: `+Z.rateLimitUsagePercent(R(t).requests_used,R(t).max_requests)+`%`,()=>({"budget-bar-fill-danger":Z.rateLimitUsagePercent(R(t).requests_used,R(t).max_requests)>=100}),()=>Z.formatRateLimitNumber(R(t).requests_used)+` of `+Z.formatRateLimitNumber(R(t).max_requests)+` requests`,()=>Z.formatRateLimitNumber(R(t).requests_remaining)+` left`]),V(e,n)},oe=A(()=>!Z.rateLimitIsConcurrent(R(t))&&R(t).max_requests);U(ie,e=>{R(oe)&&e(ae)});var se=I(ie,2),ce=e=>{var n=WA(),r=P(n),i=I(P(r),2),a=P(i,!0);D(i),D(r);var o=I(r,2),s=P(o);let c;var l=I(s,2),u=P(l),d=P(u,!0);D(u);var f=I(u,2),p=P(f,!0);D(f),D(l),D(o),D(n),L((e,t,n,r,i,l,u)=>{H(a,e),K(o,`aria-valuenow`,t),K(o,`aria-label`,n),Bi(o,r),c=G(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),H(d,l),H(p,u)},[()=>Z.rateLimitUsagePercent(R(t).tokens_used,R(t).max_tokens)+`%`,()=>Z.rateLimitUsagePercent(R(t).tokens_used,R(t).max_tokens),()=>`Tokens used: `+Z.formatRateLimitNumber(R(t).tokens_used)+` of `+Z.formatRateLimitNumber(R(t).max_tokens),()=>`--budget-progress: `+Z.rateLimitUsagePercent(R(t).tokens_used,R(t).max_tokens)+`%`,()=>({"budget-bar-fill-danger":Z.rateLimitUsagePercent(R(t).tokens_used,R(t).max_tokens)>=100}),()=>Z.formatRateLimitNumber(R(t).tokens_used)+` of `+Z.formatRateLimitNumber(R(t).max_tokens)+` tokens`,()=>Z.formatRateLimitNumber(R(t).tokens_remaining)+` left`]),V(e,n)},le=A(()=>!Z.rateLimitIsConcurrent(R(t))&&R(t).max_tokens);U(se,e=>{R(le)&&e(ce)}),D(ee),D(r),D(n),L((e,t,n,r,i)=>{K(a,`title`,e),H(o,t),H(m,n),K(_,`title`,r),H(v,i)},[()=>Z.rateLimitScopeLabel(R(t))+`: `+Z.rateLimitSubject(R(t)),()=>Z.rateLimitSubject(R(t)),()=>Z.rateLimitPeriodLabel(R(t)),()=>Z.rateLimitIsReadOnly(R(t))?`Declared in configuration; read-only in the dashboard`:`Managed via dashboard or admin API`,()=>Z.rateLimitSourceLabel(R(t))]),V(e,n)}),D(n),V(e,n),k()}var JA=B(`

Rate Limits

`),YA=B(``),XA=B(`
Rate limit management is unavailable.
`),ZA=B(``),QA=B(`
`),$A=B(`

No rate limits configured yet.

`),ej=B(`

No rate limits match your filter.

`),tj=B(`
`);function nj(e,t){O(t,!0),On(()=>{Y.refreshTick,Bl.page===`rate-limits`&&Z.fetchRateLimitsPage()});let n=A(()=>Z.filteredRateLimits());var r=tj(),i=P(r),a=P(i);YT(P(a),{copyId:`rate-limits-help-copy`,label:`rate limits help`,text:`Rate limits cap requests, tokens, and in-flight concurrency for a user path subtree, a provider, or a model. Consumer (user path) breaches return 429 with Retry-After and x-ratelimit-* headers; saturated providers and models are skipped by load balancing and failover while capacity exists elsewhere. Counters are per gateway instance and reset on restart; token limits need usage tracking.`,title:e=>{V(e,JA())},$$slots:{title:!0}}),D(a);var o=I(a,2),s=P(o),c=e=>{var t=YA();J(P(t),{get icon(){return il},class:`form-action-icon`}),Ve(2),D(t),L(()=>t.disabled=Z.rateLimitFormSubmitting),z(`click`,t,()=>Z.openRateLimitForm()),V(e,t)},l=A(()=>Z.rateLimitsEnabled()&&Z.rateLimitsAvailable&&!Y.authError);U(s,e=>{R(l)&&e(c)}),D(o),D(i);var u=I(i,2);Rd(u,{});var d=I(u,2),f=e=>{V(e,XA())},p=A(()=>(!Z.rateLimitsEnabled()||!Z.rateLimitsAvailable)&&!Y.authError);U(d,e=>{R(p)&&e(f)});var m=I(d,2),h=e=>{var t=ZA(),n=P(t,!0);D(t),L(()=>H(n,Z.rateLimitError)),V(e,t)};U(m,e=>{Z.rateLimitError&&!Y.authError&&e(h)});var g=I(m,2),_=e=>{_O(e,{label:`Loading rate limits...`})};U(g,e=>{Z.rateLimitsLoading&&!Y.authError&&e(_)});var v=I(g,2),y=e=>{var t=QA(),n=P(t);SD(P(n),{id:`rate-limit-filter`,placeholder:`Filter by subject, scope, or period...`,label:`Filter rate limits by subject, scope, or period`,get value(){return Z.rateLimitFilter},set value(e){Z.rateLimitFilter=e}}),D(n),D(t),V(e,t)};U(v,e=>{(Z.rateLimits.length>0||Z.rateLimitFilter)&&Z.rateLimitsAvailable&&!Y.authError&&!Z.rateLimitFormOpen&&e(y)});var b=I(v,2);RA(b,{});var x=I(b,2),S=e=>{qA(e,{get rules(){return R(n)}})};U(x,e=>{R(n).length>0&&Z.rateLimitsAvailable&&!Y.authError&&e(S)});var C=I(x,2),w=e=>{V(e,$A())},T=A(()=>Z.rateLimits.length===0&&!Z.rateLimitFilter&&!Z.rateLimitsLoading&&!Y.authError&&!Z.rateLimitError&&Z.rateLimitsAvailable&&Z.rateLimitsEnabled());U(C,e=>{R(T)&&e(w)});var E=I(C,2),ee=e=>{V(e,ej())},te=A(()=>Z.rateLimits.length>0&&R(n).length===0&&Z.rateLimitFilter&&!Z.rateLimitsLoading&&!Y.authError&&!Z.rateLimitError&&Z.rateLimitsAvailable&&Z.rateLimitsEnabled());U(E,e=>{R(te)&&e(ee)}),D(r),V(e,r),k()}Br([`click`]);function rj(e){return String(e||``).trim().toLowerCase()}function ij(e){if(!e)return``;let t=String(e.selector||``).trim();if(t)return t;if(!e.model||!e.model.id)return``;let n=String(e.model.id||``).trim(),r=String(e.provider_name||``).trim();if(r)return r+`/`+n;let i=String(e.provider_type||``).trim();return!i||n.includes(`/`)?n:i+`/`+n}function aj(e,t,n,r){let i=new Set,a=String(e||``).trim().toLowerCase(),o=String(t||``).trim().toLowerCase(),s=String(n||``).trim().toLowerCase(),c=String(r||``).trim().toLowerCase();if(c&&i.add(c),!a)return i;i.add(a),s&&i.add(s+`/`+a),o&&!a.includes(`/`)&&i.add(o+`/`+a);let l=a.split(`/`);return l.length===2&&l[1]&&i.add(l[1]),i}function oj(e){return aj(e&&e.model?e.model.id:``,e?e.provider_type:``,e?e.provider_name:``,e?e.selector:``)}function sj(e){let t=new Set,n=String(e.resolved_model||``).trim().toLowerCase(),r=String(e.target_model||``).trim().toLowerCase(),i=String(e.target_provider||``).trim().toLowerCase();if(n){t.add(n);let e=n.split(`/`);e.length===2&&e[1]&&t.add(e[1])}if(r){t.add(r);let e=r.split(`/`);e.length===2&&e[1]&&t.add(e[1])}return r&&i&&t.add(i+`/`+r),t}function cj(e){if(!e)return``;let t=String(e.provider||``).trim(),n=String(e.model||``).trim();return!t||!n||n===t||n.startsWith(t+`/`)?n:t+`/`+n}function lj(e){if(e===``||e==null)return null;let t=Number(e);return!Number.isFinite(t)||t<=0?null:t}function uj(e,t){let n={model:e},r=lj(t);return r!==null&&(n.weight=r),n}function dj(e){let t=Array.isArray(e)?e:[],n=[];for(let e of t){let t=String(e&&e.model||``).trim();t&&n.push(uj(t,e&&e.weight))}return n}function fj(e){switch(String(e||``).toLowerCase()){case`cost`:return`lowest cost`;case`round_robin`:case``:return`round robin`;default:return e}}var pj={round_robin:`Round-robin (rotate across targets; honors weights)`,cost:`Lowest cost (cheapest target per request)`,adaptive:`Adaptive (target chosen by the registered routing extension)`};function mj(e,t){let n=Array.isArray(e)?[...e]:[],r=String(t||``).trim().toLowerCase();return r&&!n.includes(r)&&n.push(r),n.map(e=>({value:e,label:pj[e]||e}))}function hj(e){let t=Array.isArray(e.targets)?e.targets:[],n=t.length>0?t[0]:{},r=t.map(e=>{let t={provider:e.provider||``,model:e.model||``};return e.weight&&(t.weight=e.weight),t});return{name:e.source,target_provider:n.provider||``,target_model:n.model||``,targets:r,strategy:e.strategy||``,session_affinity:e.session_affinity!==!1,description:e.description||``,slowdown:e.slowdown==null?null:Number(e.slowdown),enabled:e.enabled!==!1,managed:!!e.managed,valid:!!e.valid,resolved_model:e.resolved_model||``,provider_type:e.provider_type||``,user_paths:Array.isArray(e.user_paths)?e.user_paths:[]}}function gj(e){let t=Array.isArray(e)?e:[],n=[],r=[];for(let e of t)!e||typeof e!=`object`||(e.kind===`redirect`?n.push(hj(e)):e.kind===`policy`&&r.push({selector:e.source,provider_name:e.provider_name||``,model:e.model||``,user_paths:Array.isArray(e.user_paths)?e.user_paths:[],description:e.description||``,slowdown:e.slowdown==null?null:Number(e.slowdown),enabled:e.enabled!==!1,managed:!!e.managed,scope_kind:e.scope_kind||``}));return{aliases:n,policies:r}}function _j(e){if(!e)return`—`;let t=Array.isArray(e.targets)?e.targets:[];return t.length>1?t.length+` targets · `+fj(e.strategy):e.resolved_model?e.resolved_model:e.target_provider?e.target_provider+`/`+e.target_model:e.target_model||`—`}function vj(e){return e?e.enabled===!1?`is-disabled`:e.valid?`is-valid`:`is-invalid`:`is-invalid`}function yj(e){return e?e.enabled===!1?`Disabled`:e.valid?`Active`:`Invalid`:`Invalid`}function bj(e){return Array.isArray(e)&&e.length>0&&e.indexOf(`/`)===-1}function xj(e,t){return!t||!e?``:e.effective_enabled===!1?`is-disabled`:bj(e.user_paths)?`is-restricted`:`is-enabled`}function Sj(e){if(!e)return``;let t=[];e.effective_enabled===!1&&t.push(e.default_enabled===!1?`Disabled by default`:`Disabled`);let n=Array.isArray(e.user_paths)?e.user_paths:[];return n.length>0&&t.push(`Allowed for `+n.join(`, `)),t.join(` · `)}function Cj({models:e,aliases:t,virtualModelsAvailable:n,activeCategory:r}){let i=Array.isArray(e)?e:[],a=Array.isArray(t)?t:[],o=new Map;if(n)for(let e of a){let t=rj(e&&e.name);!t||e.enabled===!1||!e.valid||o.set(t,e)}let s=new Map,c=i.map(e=>{let t=ij(e),n=null;for(let t of oj(e))s.has(t)||s.set(t,e),!n&&o.has(t)&&(n=o.get(t));let r=e&&e.access?e.access:null;return{key:`model:`+t,display_name:t,secondary_name:``,provider_name:e.provider_name||``,provider_type:e.provider_type||``,model:e.model,selector:e.selector||``,is_alias:!1,alias:null,access:r,masking_alias:n,has_virtual_model:!!(n||r&&r.override),alias_state_class:``,alias_state_text:``}});if(!n)return c;for(let e of a){let t=s.get(rj(e&&e.name));if(e&&e.enabled!==!1&&e.valid&&t)continue;let n=null;for(let t of sj(e))if(n=s.get(t)||null,n)break;!n&&r&&r!==`all`||c.push({key:`alias:`+e.name,display_name:e.name,secondary_name:_j(e),provider_name:n&&n.provider_name||``,provider_type:n?n.provider_type||e.provider_type||``:e.provider_type||``,model:n?n.model:{id:e.name,object:`model`},selector:``,is_alias:!0,alias:e,access:null,masking_alias:null,source_model_exists:!!t,has_virtual_model:!0,alias_state_class:vj(e),alias_state_text:yj(e)})}return c.sort((e,t)=>e.is_alias===t.is_alias?String(e.display_name||``).localeCompare(String(t.display_name||``)):e.is_alias?-1:1)}function wj(e,t){if(!t)return e;let n=String(t).toLowerCase();return e.filter(e=>[e.display_name,e.secondary_name,e.provider_name,e.provider_type,e.model&&e.model.owned_by,e.alias&&e.alias.description,e.alias&&e.alias_state_text,e.model&&e.model.metadata&&e.model.metadata.modes?e.model.metadata.modes.join(`,`):``,e.model&&e.model.metadata&&e.model.metadata.categories?e.model.metadata.categories.join(`,`):``].some(e=>String(e||``).toLowerCase().includes(n)))}function Tj(e,t){return String(e||``).trim()||String(t||``).trim()||`Unassigned`}function Ej(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return!r||r===n?``:r}function Dj(e){let t=String(e||``).trim();return t?t+`/`:``}function Oj(e){let t=Array.isArray(e)?e:[],n=t.filter(e=>e&&!e.is_alias).length,r=t.filter(e=>e&&e.is_alias).length,i=[];return n>0&&i.push(n+(n===1?` model`:` models`)),r>0&&i.push(r+(r===1?` alias`:` aliases`)),i.join(` · `)}function kj(e,t,n){let r=String(t||``).trim(),i=String(n||``).trim();for(let t of Array.isArray(e)?e:[]){let e=String(t&&t.provider_name||``).trim(),n=String(t&&t.provider_type||``).trim();if(!(r&&e!==r)&&!(!r&&i&&n!==i)&&t&&t.access)return t.access.default_enabled!==!1}return!0}function Aj(e){for(let t of Array.isArray(e)?e:[])if(t&&t.access)return t.access.default_enabled!==!1;return!0}function jj(e,t){let n=String(t||``).trim();if(!n)return null;for(let t of Array.isArray(e)?e:[])if(String(t&&t.selector||``).trim()===n)return t;return null}function Mj(e,t,n,r){let i=Dj(t),a=r&&r.get(`/`)||null,o=i&&r&&r.get(i)||null,s=kj(e,t,n),c=o||a,l=c&&Array.isArray(c.user_paths)?Array.from(new Set(c.user_paths)).sort():[];return{selector:i,default_enabled:s,effective_enabled:c?c.enabled!==!1:s,user_paths:l,override:o}}function Nj(e,t,n){if(!Array.isArray(e)||e.length===0)return[];let r=new Map;for(let e of Array.isArray(n)?n:[]){let t=String(e&&e.selector||``).trim();t&&r.set(t,e)}let i=[],a=new Map;for(let t of e){if(t&&t.is_alias){i.push(t);continue}let e=String(t&&t.provider_name||``).trim(),n=String(t&&t.provider_type||``).trim(),r=`provider-group:`+(e||n||`unassigned`);a.has(r)||a.set(r,{key:r,provider_name:e,provider_type:n,display_name:Tj(e,n),type_label:Ej(e,n),rows:[]});let o=a.get(r);!o.provider_name&&e&&(o.provider_name=e),!o.provider_type&&n&&(o.provider_type=n),o.display_name=Tj(o.provider_name,o.provider_type),o.type_label=Ej(o.provider_name,o.provider_type),o.rows.push(t)}let o=Array.from(a.values()).map(e=>{let n=Mj(t,e.provider_name,e.provider_type,r);return{...e,access:n,access_summary:Sj(n),item_count_label:Oj(e.rows)}}).sort((e,t)=>String(e.display_name||``).localeCompare(String(t.display_name||``)));return i.length>0&&o.unshift({key:`virtual-model-group`,is_virtual_models:!0,provider_name:``,provider_type:``,display_name:`Virtual models`,type_label:``,rows:i,access:{selector:``},access_summary:``,item_count_label:Oj(i)}),o}function Pj(e,t){let n=jj(t,`/`),r=Aj(e),i=n&&Array.isArray(n.user_paths)?n.user_paths:[];return{key:`scope-global`,is_alias:!1,display_name:`all providers and models`,access:{selector:`/`,default_enabled:r,effective_enabled:n?n.enabled!==!1:r,user_paths:i,override:n}}}function Fj(e){return e?String(e.access&&e.access.selector||``).trim()||String(e.override_selector||``).trim()||ij(e):``}function Ij(e){if(!e)return[];let t=[];return e.is_alias?t.push(`alias-row`,vj(e.alias)):e.has_virtual_model&&t.push(`alias-row`,`is-valid`),!e.is_alias&&e.masking_alias&&t.push(`masked-model-row`),!e.is_alias&&e.access&&e.access.effective_enabled===!1&&t.push(`model-access-disabled-row`),t}function Lj(e){return!!(e&&e.is_alias&&e.alias&&e.alias.name&&!e.alias.managed)}function Rj(e){return!!(e&&!e.is_alias&&e.masking_alias&&e.masking_alias.name&&!e.masking_alias.managed)}function zj(e){return e&&e.is_alias&&e.alias&&e.alias.name?`alias-row-`+String(e.alias.name).replace(/[^a-zA-Z0-9_-]+/g,`-`):``}function Bj(e){return e?e.is_alias?!!(e.alias&&e.alias.managed):!!(e.access&&e.access.override&&e.access.override.managed||e.masking_alias&&e.masking_alias.managed):!1}function Vj(e){return!!(e&&e.override)}function Hj(e){return e?`table-action-btn-active`:``}function Uj(e,t){let n=`Edit `+String(e||`model access`);return t?n+` (virtual model exists)`:n}function Wj(){return{source:``,target_model:``,target_weight:1,targets:[],strategy:`round_robin`,session_affinity:!0,user_paths:``,description:``,slowdown:``,enabled:!0}}function Gj(e){return String(e&&e.target_model||``).trim()!==``}function Kj(e){return String(e&&e.target_model||``).trim()?!0:dj(e&&e.targets).length>0}function qj(e){if(Kj(e))return!0;let t=String(e&&e.source||``).trim();return!!t&&t!==`/`&&!t.endsWith(`/`)}function Jj(e){return!!e&&Array.isArray(e.targets)&&e.targets.length>0}function Yj(e){return Jj(e)&&String(e&&e.strategy||``).toLowerCase()!==`cost`}function Xj(e){let t=Array.isArray(e.targets)?e.targets:[];if(t.length>0){let n=t.shift();e.target_model=n.model||``,e.target_weight=n.weight||1;return}e.target_model=``,e.target_weight=1}function Zj(e){let t=Array.isArray(e&&e.targets)?e.targets:[];return t.length>0?{primaryModel:cj(t[0]),primaryWeight:t[0].weight||1,extraTargets:t.slice(1).map(e=>({model:cj(e),weight:e.weight||1}))}:{primaryModel:e&&e.target_provider?e.target_provider+`/`+e.target_model:e&&e.target_model||``,primaryWeight:1,extraTargets:[]}}function Qj(e){return String(e||``).split(/\r?\n|,/).map(e=>String(e||``).trim()).filter(Boolean)}function $j(e,t,n){let r=String(e&&e.source||``).trim(),i=String(e&&e.target_model||``).trim(),a=dj(e&&e.targets),o=Kj(e),s=String(t||``).trim(),c=n===`edit`&&!!s&&r!==s,l={source:r,user_paths:Qj(e&&e.user_paths),description:String(e&&e.description||``).trim(),enabled:!!(e&&e.enabled)},u=e&&e.slowdown;if(u!==``&&u!=null){let e=Number(u);Number.isFinite(e)&&(l.slowdown=e)}if(c&&(l.old_source=s),o){let t=[];if(i&&t.push(uj(i,e.target_weight)),t.push(...a),t.length>1){let n=e.strategy||`round_robin`;l.targets=n===`cost`?t.map(e=>({model:e.model})):t,l.strategy=n,e&&e.session_affinity===!1&&(l.session_affinity=!1)}else l.target_model=t[0].model}return{payload:l,source:r,isRedirect:o,isRename:c}}function eM(e){let t={source:e.name,description:String(e.description||``).trim(),user_paths:Array.isArray(e.user_paths)?e.user_paths:[],enabled:e.enabled===!1};if(e.slowdown!=null){let n=Number(e.slowdown);Number.isFinite(n)&&(t.slowdown=n)}let n=Array.isArray(e.targets)?e.targets:[];return n.length>1?(t.strategy=e.strategy||`round_robin`,e.session_affinity===!1&&(t.session_affinity=!1),t.targets=t.strategy===`cost`?n.map(e=>({model:cj(e)})):n.map(e=>uj(cj(e),e.weight))):n.length===1?t.target_model=cj(n[0]):t.target_model=e.target_provider?e.target_provider+`/`+e.target_model:e.target_model,t}function tM(e,t,n){let r=n||{},i=r.effective_enabled===!1,a=t&&Array.isArray(t.user_paths)?t.user_paths:[],o=String(t&&t.description||``).trim(),s=!!(t&&t.slowdown!=null),c=Number(s?t.slowdown:0),l={};o&&(l.description=o),s&&Number.isFinite(c)&&(l.slowdown=c);let u=`PUT`,d;return i===!1?d={source:e,enabled:!1,user_paths:a,...l}:t&&a.length===0&&!o&&!s&&r.default_enabled!==!1?(u=`DELETE`,d={source:e}):d={source:e,enabled:!0,user_paths:a,...l},{method:u,payload:d,desired:i}}function nM(e,t,n){let r=Math.max(1,Number(t||75)),i=Math.min(n,e+r);return{limit:i,rendering:iCj({models:Id.models,aliases:this.aliases,virtualModelsAvailable:this.virtualModelsAvailable,activeCategory:Id.activeCategory}));get displayModels(){return R(this.#T)}set displayModels(e){M(this.#T,e)}#E=A(()=>Nj(this.displayModels,Id.models,this.modelOverrideViews));get displayModelGroups(){return R(this.#E)}set displayModelGroups(e){M(this.#E,e)}#D=A(()=>wj(this.displayModels,Id.filter));get filteredDisplayModels(){return R(this.#D)}set filteredDisplayModels(e){M(this.#D,e)}#O=A(()=>{let e=this.filteredDisplayModels,t=Math.max(0,Math.min(Number(this.modelRenderLimit||0),e.length));return!Id.filter&&t>=this.displayModels.length?this.displayModelGroups:Nj(e.slice(0,t),Id.models,this.modelOverrideViews)});get filteredDisplayModelGroups(){return R(this.#O)}set filteredDisplayModelGroups(e){M(this.#O,e)}#k=A(()=>Pj(Id.models,this.modelOverrideViews));get globalScopeRow(){return R(this.#k)}set globalScopeRow(e){M(this.#k,e)}modelsBusy(){return!!(Id.loading||this.modelsRendering)}modelLoadingText(){if(Id.loading)return this.displayModels.length>0?`Refreshing models...`:`Loading models...`;let e=this.filteredDisplayModels.length;return`Rendering models... `+Math.min(Number(this.modelRenderLimit||0),e)+` / `+e}restartModelRendering(e){let t=++this.#a,n=rM(this.modelRenderBatchSize,e);this.modelRenderLimit=n.limit,this.modelsRendering=n.rendering,n.rendering&&this.#A(t)}stopModelRendering(){this.#a++,this.modelsRendering=!1}#A(e){let t=()=>{if(e!==this.#a)return;let t=nM(this.modelRenderLimit,this.modelRenderBatchSize,this.filteredDisplayModels.length);this.modelRenderLimit=t.limit,this.modelsRendering=t.rendering,t.rendering&&this.#A(e)};typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>setTimeout(t,0)):setTimeout(t,0)}async fetchVirtualModels(){this.aliasLoading=!0,this.aliasError=``;try{let e=await hu(`/admin/virtual-models`,{label:`virtual models`});if(e.status===503){this.virtualModelsAvailable=!1,this.aliases=[],this.modelOverrideViews=[];return}if(e.stale)return;if(this.virtualModelsAvailable=!0,!e.ok){this.aliases=[],this.modelOverrideViews=[];return}let{aliases:t,policies:n}=gj(e.data);this.aliases=t,this.modelOverrideViews=n}catch(e){console.error(`Failed to fetch virtual models:`,e),this.aliases=[],this.modelOverrideViews=[],this.aliasError=`Unable to load virtual models.`}finally{this.aliasLoading=!1}}qualifiedModelName(e){return ij(e)}findModelOverrideView(e){return jj(this.modelOverrideViews,e)}hasGlobalModelOverride(){return!!this.findModelOverrideView(`/`)}findExistingAliasByName(e){let t=rj(e);if(!t)return null;for(let e of this.aliases)if(rj(e&&e.name)===t)return e;return null}findConcreteModelByName(e){let t=rj(e);if(!t)return null;for(let e of Id.models)if(oj(e).has(t))return e;return null}rowToggleEnabled(e){return e?e.is_alias?e.alias&&e.alias.enabled!==!1:!!(e.access&&e.access.effective_enabled!==!1):!1}rowToggleLabel(e){return this.rowTogglingKey&&this.rowTogglingKey===e.key?`Updating...`:this.rowToggleRestricted(e)?`Restricted`:this.rowToggleEnabled(e)?`Enabled`:`Disabled`}rowToggleRestricted(e){return!!e&&!e.is_alias&&xj(e.access,this.virtualModelsAvailable)===`is-restricted`}rowToggleAriaLabel(e){if(!e)return``;let t=this.rowToggleEnabled(e)?`Disable `:`Enable `,n;return n=e.is_alias?`alias `+String(e.alias&&e.alias.name||``):String(e.display_name||e.access&&e.access.selector||`model`),t+n.trim()}async toggleRowEnabled(e){if(this.virtualModelsAvailable&&!(!e||this.rowTogglingKey===e.key)){if(Bj(e)){ed.success(`This virtual model is managed by configuration and is read-only.`);return}if(e.is_alias){await this.toggleAliasRow(e);return}await this.toggleModelRow(e)}}async toggleAliasRow(e){let t=e.alias;if(!t||!t.name)return;this.rowTogglingKey=e.key;let n=eM(t);try{let e=await gu(`/admin/virtual-models`,`PUT`,n,{label:`alias state`});if(e.status===503){this.virtualModelsAvailable=!1,ed.error(`Virtual models feature is unavailable.`);return}if(e.stale)return;if(!e.ok){ed.error(e.status===401?`Authentication required.`:du(e,`Failed to update alias state.`));return}ed.success(n.enabled?`Alias enabled.`:`Alias disabled.`),this.fetchVirtualModels()}catch(e){console.error(`Failed to toggle alias state:`,e),ed.error(`Failed to update alias state.`)}finally{this.rowTogglingKey=``}}async toggleModelRow(e){let t=Fj(e);if(!t)return;let{method:n,payload:r,desired:i}=tM(t,this.findModelOverrideView(t),e.access||{});this.rowTogglingKey=e.key;try{let e=await gu(`/admin/virtual-models`,n,r,{label:`model access`});if(e.status===503){this.virtualModelsAvailable=!1,ed.error(`Virtual models feature is unavailable.`);return}if(!(n===`DELETE`&&e.status===404)){if(e.stale)return;if(!e.ok){ed.error(e.status===401?`Authentication required.`:du(e,`Failed to update model access.`));return}}ed.success(i?`Model enabled.`:`Model disabled.`),Promise.all([Id.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to toggle model access:`,e),ed.error(`Failed to update model access.`)}finally{this.rowTogglingKey=``}}async removeAliasRow(e){if(!(e&&e.is_alias&&e.alias&&e.alias.name&&!e.alias.managed)||this.rowDeletingKey)return;let t=String(e.alias.name||``).trim();t&&await this.mutateVirtualModelRow({rowKey:e.key,confirmMessage:`Remove the virtual model alias "`+t+`"?`,method:`DELETE`,payload:{source:t},operation:`virtual model`,failureMessage:`Failed to remove virtual model.`,notice:`Virtual model removed.`,ignoreNotFound:!0})}async removeRedirectRow(e){let t=e&&e.masking_alias;if(!(e&&!e.is_alias&&t&&t.name&&!t.managed)||this.rowDeletingKey)return;let n=String(t.name||``).trim();n&&await this.mutateVirtualModelRow({rowKey:e.key,confirmMessage:`Remove the redirect for "`+n+`"? Other virtual model settings will be preserved.`,method:`PUT`,payload:{source:n,user_paths:Array.isArray(t.user_paths)?t.user_paths:[],description:String(t.description||``).trim(),enabled:t.enabled!==!1,...t.slowdown==null?{}:{slowdown:Number(t.slowdown)}},operation:`virtual model redirect`,failureMessage:`Failed to remove redirect.`,notice:`Redirect removed. Other virtual model settings were preserved.`})}async mutateVirtualModelRow(e){if(!this.rowDeletingKey&&window.confirm(e.confirmMessage)){this.rowDeletingKey=e.rowKey;try{let t=await gu(`/admin/virtual-models`,e.method,e.payload,{label:e.operation});if(t.status===503){this.virtualModelsAvailable=!1,ed.error(`Virtual models feature is unavailable.`);return}if(!(e.ignoreNotFound&&t.status===404)){if(t.stale)return;if(!t.ok){ed.error(t.status===401?`Authentication required.`:du(t,e.failureMessage));return}}this.virtualModelsAvailable=!0,ed.success(e.notice),Promise.all([Id.fetchModels(),this.fetchVirtualModels()])}catch(t){console.error(e.failureMessage,t),ed.error(e.failureMessage)}finally{this.rowDeletingKey=``}}}addVmTarget(){Array.isArray(this.vmForm.targets)||(this.vmForm.targets=[]),this.vmForm.targets.push({model:``,weight:1})}removeVmTarget(e){Array.isArray(this.vmForm.targets)&&this.vmForm.targets.splice(e,1)}removePrimaryTarget(){Xj(this.vmForm)}vmFormHasPrimaryTarget(){return Gj(this.vmForm)}vmFormShowStrategy(){return Jj(this.vmForm)}vmStrategyOptions(){return mj(bu.virtualModelStrategies(),this.vmForm.strategy)}vmFormShowWeights(){return Yj(this.vmForm)}vmFormSupportsSlowdown(){return qj(this.vmForm)}vmFormToggleRestricted(){return!!(this.vmForm&&this.vmForm.enabled)&&bj(Qj(this.vmForm.user_paths))}vmFormToggleLabel(){return!this.vmForm||!this.vmForm.enabled?`Disabled`:this.vmFormToggleRestricted()?`Restricted`:`Enabled`}resetVirtualModelForm(){this.vmFormError=``,this.vmFormHelpOpen=!1,this.vmFormUserPathsHelpOpen=!1,this.vmSubmitting=!1,this.vmDeleting=!1,this.vmFormHasExisting=!1,this.vmFormDefaultEnabled=!0,this.vmFormEffectiveEnabled=!0,this.vmFormDisplayName=``,this.vmFormSourceLocked=!1,this.vmFormOriginalSource=``,this.vmFormManaged=!1,this.vmForm=Wj()}closeVirtualModelForm(){this.vmFormOpen=!1,this.resetVirtualModelForm()}openVirtualModelCreate(e){this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`create`,this.vmFormSourceLocked=!1,this.vmFormDisplayName=`New virtual model`,e&&e.model&&e.model.id&&(this.vmForm.target_model=ij(e))}openVirtualModelEditAlias(e){if(!e)return;this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!1,this.vmFormHasExisting=!0,this.vmFormManaged=!!e.managed,this.vmFormOriginalSource=e.name||``,this.vmFormDisplayName=e.name||``,this.vmFormDefaultEnabled=Aj(Id.models),this.vmFormEffectiveEnabled=e.enabled!==!1;let{primaryModel:t,primaryWeight:n,extraTargets:r}=Zj(e);this.vmForm={source:e.name||``,target_model:t,target_weight:n,targets:r,strategy:e.strategy||`round_robin`,session_affinity:e.session_affinity!==!1,user_paths:(Array.isArray(e.user_paths)?e.user_paths:[]).join(` -`),description:e.description||``,slowdown:e.slowdown??``,enabled:e.enabled!==!1}}openVirtualModelEditModel(e){if(!e||e.is_alias)return;let t=e.access||{},n=t.override||null,r=n&&Array.isArray(n.user_paths)?n.user_paths:Array.isArray(t.user_paths)?t.user_paths:[],i=Fj(e);this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!0,this.vmFormHasExisting=!!n,this.vmFormOriginalSource=i;let a=n?n.enabled!==!1:t.effective_enabled!==!1;this.vmFormDefaultEnabled=t.default_enabled!==!1,this.vmFormEffectiveEnabled=a,this.vmFormManaged=!!(n&&n.managed),this.vmFormDisplayName=e.access_display_name||e.display_name||i||``,this.vmForm={source:i,target_model:``,target_weight:``,targets:[],strategy:`round_robin`,user_paths:r.join(` -`),description:n&&n.description?n.description:``,slowdown:n&&n.slowdown!=null?n.slowdown:``,enabled:a}}openGlobalModelOverrideEdit(){let e=this.findModelOverrideView(`/`),t=e&&Array.isArray(e.user_paths)?e.user_paths:[],n=Aj(Id.models);this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!0,this.vmFormHasExisting=!!e,this.vmFormOriginalSource=`/`,this.vmFormDefaultEnabled=n,this.vmFormEffectiveEnabled=e?e.enabled!==!1:n,this.vmFormManaged=!!(e&&e.managed),this.vmFormDisplayName=`All providers and models`,this.vmForm={source:`/`,target_model:``,target_weight:``,targets:[],strategy:`round_robin`,user_paths:t.join(` -`),description:e&&e.description?e.description:``,slowdown:e&&e.slowdown!=null?e.slowdown:``,enabled:e?e.enabled!==!1:n}}openProviderOverrideEdit(e){!e||!e.access||!e.access.selector||this.openVirtualModelEditModel({display_name:e.display_name,access_display_name:`All models in `+e.display_name,provider_name:e.provider_name,provider_type:e.provider_type,access:e.access,override_selector:e.access.selector,is_alias:!1})}async submitVirtualModelForm(){if(this.vmFormManaged){this.vmFormError=`This virtual model is managed by configuration and cannot be edited here.`;return}let{payload:e,source:t,isRedirect:n,isRename:r}=$j(this.vmForm,this.vmFormOriginalSource,this.vmFormMode);if(!t){this.vmFormError=`Source is required.`;return}if(this.vmFormError=``,this.vmFormMode!==`edit`){let e=this.findExistingAliasByName(t),r=e?null:this.findModelOverrideView(t);if(e||r){let n=e?`A virtual model named "`+e.name+`" already exists. Saving will update that virtual model. Continue?`:`An access policy for "`+t+`" already exists. Saving will update that virtual model. Continue?`;if(!window.confirm(n)){this.vmFormError=`Choose a different source or edit the existing virtual model.`;return}}else if(n){let e=this.findConcreteModelByName(t);if(e){let t=ij(e)||String(e.model&&e.model.id||``).trim();if(!window.confirm(`A model named "`+t+`" already exists. Creating this alias will mask that model in the list. Continue?`)){this.vmFormError=`Choose a different source to avoid masking an existing model.`;return}}}}else if(r){let e=(this.aliases||[]).find(e=>e&&e.name===t)||null,r=e?null:this.findModelOverrideView(t);if(e||r){this.vmFormError=`A virtual model for "`+t+`" already exists. Choose a different source.`;return}if(n){let e=this.findConcreteModelByName(t);if(e){let t=ij(e)||String(e.model&&e.model.id||``).trim();if(!window.confirm(`A model named "`+t+`" already exists. Renaming to that name will mask the model in the list. Continue?`)){this.vmFormError=`Choose a different source to avoid masking an existing model.`;return}}}}this.vmSubmitting=!0;try{let t=await gu(`/admin/virtual-models`,`PUT`,e,{label:`virtual model`});if(t.status===503){this.virtualModelsAvailable=!1,this.vmFormError=`Virtual models feature is unavailable.`;return}if(t.stale)return;if(!t.ok){this.vmFormError=t.status===401?`Authentication required.`:du(t,`Failed to save virtual model.`);return}let r=!n&&t.status===204;this.virtualModelsAvailable=!0,this.closeVirtualModelForm(),ed.success(n?`Alias saved.`:r?`Model access reset to inherited/default.`:`Model access saved.`),Promise.all([Id.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to save virtual model:`,e),this.vmFormError=`Failed to save virtual model.`}finally{this.vmSubmitting=!1}}async deleteVirtualModel(){if(this.vmFormManaged){this.vmFormError=`This virtual model is managed by configuration and cannot be removed here.`;return}let e=String(this.vmForm.source||this.vmFormOriginalSource||``).trim();if(!(!e||!this.vmFormHasExisting)&&window.confirm(`Remove the virtual model for "`+e+`"? This reverts to inherited/default behavior.`)){this.vmDeleting=!0,this.vmFormError=``;try{let t=await gu(`/admin/virtual-models`,`DELETE`,{source:e},{label:`virtual model`});if(t.status===503){this.virtualModelsAvailable=!1,this.vmFormError=`Virtual models feature is unavailable.`;return}if(t.status!==404){if(t.stale)return;if(!t.ok){this.vmFormError=t.status===401?`Authentication required.`:du(t,`Failed to remove virtual model.`);return}}this.virtualModelsAvailable=!0,this.closeVirtualModelForm(),ed.success(`Virtual model removed.`),Promise.all([Id.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to delete virtual model:`,e),this.vmFormError=`Failed to remove virtual model.`}finally{this.vmDeleting=!1}}}},aM=[{value:`input_per_mtok`,label:`Input $/MTok`,group:`Tokens`},{value:`output_per_mtok`,label:`Output $/MTok`,group:`Tokens`},{value:`cached_input_per_mtok`,label:`Cached input $/MTok`,group:`Tokens`},{value:`cache_write_per_mtok`,label:`Cache write $/MTok`,group:`Tokens`},{value:`reasoning_output_per_mtok`,label:`Reasoning output $/MTok`,group:`Tokens`},{value:`batch_input_per_mtok`,label:`Batch input $/MTok`,group:`Batch`},{value:`batch_output_per_mtok`,label:`Batch output $/MTok`,group:`Batch`},{value:`audio_input_per_mtok`,label:`Audio input $/MTok`,group:`Audio`},{value:`audio_output_per_mtok`,label:`Audio output $/MTok`,group:`Audio`},{value:`per_image`,label:`$/Image`,group:`Image`},{value:`input_per_image`,label:`Input $/Image`,group:`Image`},{value:`per_second_input`,label:`Input $/Second`,group:`Audio/Video`},{value:`per_second_output`,label:`Output $/Second`,group:`Video`},{value:`per_character_input`,label:`$/Character`,group:`Audio`},{value:`per_page`,label:`$/Page`,group:`Utility`},{value:`per_request`,label:`$/Request`,group:`Utility`}];function oM(e){let t=aM.find(t=>t.value===e);return t?t.label:String(e||``).replace(/_/g,` `)}function sM(e){return e&&typeof e==`object`?JSON.parse(JSON.stringify(e)):{}}function cM(e,t){let n=sM(e),r=t&&t.pricing?t.pricing:t;if(!r||typeof r!=`object`)return n;for(let e of aM)r[e.value]!==null&&r[e.value]!==void 0&&(n[e.value]=Number(r[e.value]));return Array.isArray(r.tiers)&&r.tiers.length>0&&(n.tiers=sM(r.tiers)),n}function lM(e){switch(String(e||``).trim()){case`config_yaml`:return`config.yaml`;case`model_registry`:return`Model registry`;default:return e?String(e):`Unknown`}}function uM(e){let t=e&&e.pricing?e.pricing:{},n=e&&e.pricing_sources&&typeof e.pricing_sources==`object`?e.pricing_sources:{},r={};for(let e of aM)t[e.value]!==null&&t[e.value]!==void 0&&(r[e.value]=lM(n[e.value]||`model_registry`));return r}function dM(e){let t=String(e&&e.selector||``).trim();return t?`Dashboard/API override (`+t+`)`:`Dashboard/API override`}function fM(e){let t=String(e||``).trim();return t?t+`/`:``}function pM(e){return String(e&&e.model&&e.model.id||``).trim()}function mM(e){let t=String(e&&e.provider_name||``).trim(),n=pM(e);return t&&n?t+`/`+n:n}function hM(e){return pM(e)}function gM(e){let t=new Map;for(let n of Array.isArray(e)?e:[]){let e=String(n&&n.selector||``).trim();e&&t.set(e,n)}return t}function _M(e,t){let n=String(t||``).trim();return n&&gM(e).get(n)||null}function vM(e,t,n){let r=gM(e),i=mM(t),a=hM(t),o=fM(t&&t.provider_name),s=String(n||``).trim();for(let e of[i,a,o,`/`]){if(!e||e===s)continue;let t=r.get(e);if(t)return t}return null}function yM(e,t,n){let r=e&&e.model&&e.model.metadata?e.model.metadata:null,i=sM(r&&r.pricing),a=uM(r),o=vM(t,e,n),s=o&&o.pricing?o.pricing:null;if(s){let e=dM(o);for(let t of aM)s[t.value]!==null&&s[t.value]!==void 0&&(i[t.value]=Number(s[t.value]),a[t.value]=e);Array.isArray(s.tiers)&&s.tiers.length>0&&(i.tiers=sM(s.tiers),a.tiers=e)}return{pricing:i,sources:a}}function bM(e,t){let n=e&&e.pricing?e.pricing:{},r=[];for(let e of aM)n[e.value]!==null&&n[e.value]!==void 0&&r.push({id:t(),field:e.value,value:String(n[e.value])});return r}function xM(e,t){let n=new Set;for(let r of Array.isArray(e)?e:[]){if(t&&r.id===t)continue;let e=String(r.field||``).trim();e&&n.add(e)}return n}function SM(e,t){let n=xM(e,t&&t.id);return aM.filter(e=>e.value===(t&&t.field)||!n.has(e.value))}function CM(e,t){let n={},r=new Set;for(let t of Array.isArray(e)?e:[]){let e=String(t.field||``).trim();if(!e)return{error:`Choose a price type for every row.`};if(r.has(e))return{error:`Each price type can only be used once.`};r.add(e);let i=String(t.value||``).trim();if(i===``)return{error:`Enter a value for `+oM(e)+`.`};let a=Number(i);if(!Number.isFinite(a)||a<0)return{error:`Pricing values must be numbers greater than or equal to 0.`};n[e]=a}let i=Array.isArray(t)?t:[];return i.length>0&&(n.tiers=sM(i)),Object.keys(n).length===0?{error:`Add at least one pricing field before saving.`}:{pricing:n}}function wM(e,t,n){let r=e||{},i=t||{},a=n||{},o=cM(r,a);return aM.map(e=>{let t=a[e.value]!==null&&a[e.value]!==void 0,n=r[e.value]!==null&&r[e.value]!==void 0;return{field:e.value,label:e.label,value:o[e.value],source:t?`Form/API value`:n?i[e.value]||`Model registry`:`Unset`}}).filter(e=>e.source!==`Unset`||e.value!==void 0)}var TM=new class{#e=j(!0);get modelPricingOverridesAvailable(){return R(this.#e)}set modelPricingOverridesAvailable(e){M(this.#e,e,!0)}#t=j(N([]));get modelPricingOverrideViews(){return R(this.#t)}set modelPricingOverrideViews(e){M(this.#t,e,!0)}#n=j(``);get modelPricingOverrideError(){return R(this.#n)}set modelPricingOverrideError(e){M(this.#n,e,!0)}#r=j(!1);get modelPricingOverrideFormOpen(){return R(this.#r)}set modelPricingOverrideFormOpen(e){M(this.#r,e,!0)}#i=j(!1);get modelPricingOverrideSubmitting(){return R(this.#i)}set modelPricingOverrideSubmitting(e){M(this.#i,e,!0)}#a=j(!1);get modelPricingOverrideFormHasExistingOverride(){return R(this.#a)}set modelPricingOverrideFormHasExistingOverride(e){M(this.#a,e,!0)}#o=j(``);get modelPricingOverrideFormDisplayName(){return R(this.#o)}set modelPricingOverrideFormDisplayName(e){M(this.#o,e,!0)}#s=j(``);get modelPricingOverrideFormScope(){return R(this.#s)}set modelPricingOverrideFormScope(e){M(this.#s,e,!0)}#c=j(N([]));get modelPricingOverrideFormScopeOptions(){return R(this.#c)}set modelPricingOverrideFormScopeOptions(e){M(this.#c,e,!0)}#l=j(null);get modelPricingOverrideFormRow(){return R(this.#l)}set modelPricingOverrideFormRow(e){M(this.#l,e,!0)}#u=j(null);get modelPricingOverrideFormBasePricing(){return R(this.#u)}set modelPricingOverrideFormBasePricing(e){M(this.#u,e,!0)}#d=j(null);get modelPricingOverrideFormBasePricingSources(){return R(this.#d)}set modelPricingOverrideFormBasePricingSources(e){M(this.#d,e,!0)}#f=j(N([]));get modelPricingOverrideFormPreservedTiers(){return R(this.#f)}set modelPricingOverrideFormPreservedTiers(e){M(this.#f,e,!0)}#p=j(N([]));get modelPricingOverrideRows(){return R(this.#p)}set modelPricingOverrideRows(e){M(this.#p,e,!0)}#m=j(N({selector:``}));get modelPricingOverrideForm(){return R(this.#m)}set modelPricingOverrideForm(e){M(this.#m,e,!0)}_modelPricingOverrideRowID=0;pricingFieldOptions(){return aM}pricingFieldLabel(e){return oM(e)}async fetchModelPricingOverrides(){this.modelPricingOverrideError=``;try{let e=await hu(`/admin/model-pricing-overrides`,{label:`model pricing overrides`});if(e.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideViews=[];return}if(e.stale)return;if(this.modelPricingOverridesAvailable=!0,!e.ok){this.modelPricingOverrideViews=[];return}this.modelPricingOverrideViews=Array.isArray(e.data)?e.data:[]}catch(e){console.error(`Failed to fetch model pricing overrides:`,e),this.modelPricingOverrideViews=[],this.modelPricingOverrideError=`Unable to load model pricing overrides.`}}findModelPricingOverrideView(e){return _M(this.modelPricingOverrideViews,e)}hasGlobalPricingOverride(){return!!this.findModelPricingOverrideView(`/`)}hasProviderPricingOverride(e){return!!this.findModelPricingOverrideView(fM(e&&e.provider_name))}hasModelPricingOverride(e){return!!this.findModelPricingOverrideView(mM(e))}modelPricingButtonClass(e){return e?`table-action-btn-active`:``}modelPricingButtonLabel(e,t){let n=`Edit `+String(e||`model pricing`);return t?n+` (override exists)`:n}modelRowPricing(e){return yM(e,this.modelPricingOverrideViews).pricing}openGlobalPricingOverrideEdit(){this.openModelPricingOverrideForm({displayName:`All providers and models`,selector:`/`,scope:`global`,scopeOptions:[{value:`global`,label:`All providers and models`,selector:`/`}],row:null})}openProviderPricingOverrideEdit(e){let t=fM(e&&e.provider_name);t&&this.openModelPricingOverrideForm({displayName:`All models in `+(e.display_name||e.provider_name||t),selector:t,scope:`provider`,scopeOptions:[{value:`provider`,label:`Provider`,selector:t}],row:null})}openModelPricingOverrideEdit(e){if(!e||e.is_alias)return;let t=mM(e),n=hM(e),r=[{value:`exact`,label:`This provider and model`,selector:t}];n&&n!==t&&r.push({value:`model`,label:`This model across providers`,selector:n}),this.openModelPricingOverrideForm({displayName:e.display_name||t,selector:t,scope:`exact`,scopeOptions:r,row:e})}openModelPricingOverrideForm(e){let t=e||{};this.modelPricingOverrideFormOpen=!0,this.modelPricingOverrideError=``,this.modelPricingOverrideFormDisplayName=t.displayName||t.selector||`Pricing`,this.modelPricingOverrideFormScope=t.scope||``,this.modelPricingOverrideFormScopeOptions=Array.isArray(t.scopeOptions)?t.scopeOptions:[],this.modelPricingOverrideFormRow=t.row||null,this.modelPricingOverrideForm={selector:t.selector||``},this.loadModelPricingOverrideFormSelector(t.selector||``)}loadModelPricingOverrideFormSelector(e){e=String(e||``).trim();let t=this.findModelPricingOverrideView(e);this.modelPricingOverrideFormHasExistingOverride=!!t,this.modelPricingOverrideRows=bM(t,()=>this.nextModelPricingOverrideRowID()),this.modelPricingOverrideFormPreservedTiers=t&&t.pricing&&Array.isArray(t.pricing.tiers)?sM(t.pricing.tiers):[],this.modelPricingOverrideRows.length===0&&this.modelPricingOverrideFormPreservedTiers.length===0&&this.addModelPricingOverrideRow();let n=this.modelPricingOverrideFormRow,r=n?yM(n,this.modelPricingOverrideViews,e):{pricing:{},sources:{}};this.modelPricingOverrideFormBasePricing=r.pricing,this.modelPricingOverrideFormBasePricingSources=r.sources}setModelPricingOverrideScope(e){this.modelPricingOverrideFormScope=e;let t=this.modelPricingOverrideFormScopeOptions.find(t=>t.value===e);t&&(this.modelPricingOverrideForm.selector=t.selector,this.loadModelPricingOverrideFormSelector(t.selector))}nextModelPricingOverrideRowID(){return this._modelPricingOverrideRowID=(this._modelPricingOverrideRowID||0)+1,`pricing-row-`+this._modelPricingOverrideRowID}availablePricingFieldOptions(e){return SM(this.modelPricingOverrideRows,e)}addModelPricingOverrideRow(){let e=xM(this.modelPricingOverrideRows),t=aM.find(t=>!e.has(t.value))||aM[0];t&&this.modelPricingOverrideRows.push({id:this.nextModelPricingOverrideRowID(),field:t.value,value:``})}removeModelPricingOverrideRow(e){this.modelPricingOverrideRows=this.modelPricingOverrideRows.filter(t=>t.id!==e.id),this.modelPricingOverrideRows.length===0&&this.modelPricingOverrideFormPreservedTiers.length===0&&this.addModelPricingOverrideRow()}modelPricingOverridePayload(){return CM(this.modelPricingOverrideRows,this.modelPricingOverrideFormPreservedTiers)}modelPricingOverrideDraftPricing(){let e=this.modelPricingOverridePayload();return e&&e.pricing?e.pricing:{}}modelPricingEffectivePreviewRows(){return wM(this.modelPricingOverrideFormBasePricing,this.modelPricingOverrideFormBasePricingSources,this.modelPricingOverrideDraftPricing())}closeModelPricingOverrideForm(){this.modelPricingOverrideFormOpen=!1,this.modelPricingOverrideSubmitting=!1,this.modelPricingOverrideError=``,this.modelPricingOverrideFormHasExistingOverride=!1,this.modelPricingOverrideFormDisplayName=``,this.modelPricingOverrideFormScope=``,this.modelPricingOverrideFormScopeOptions=[],this.modelPricingOverrideFormRow=null,this.modelPricingOverrideFormBasePricing=null,this.modelPricingOverrideFormBasePricingSources=null,this.modelPricingOverrideFormPreservedTiers=[],this.modelPricingOverrideRows=[],this.modelPricingOverrideForm={selector:``}}async submitModelPricingOverrideForm(){let e=String(this.modelPricingOverrideForm.selector||``).trim();if(!e){this.modelPricingOverrideError=`Model pricing selector is required.`;return}let t=this.modelPricingOverridePayload();if(t.error){this.modelPricingOverrideError=t.error;return}let n={selector:e,...t};this.modelPricingOverrideSubmitting=!0,this.modelPricingOverrideError=``;try{let e=await gu(`/admin/model-pricing-overrides`,`PUT`,n,{label:`model pricing override`});if(e.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideError=`Model pricing overrides feature is unavailable.`;return}if(e.stale)return;if(!e.ok){this.modelPricingOverrideError=e.status===401?`Authentication required.`:du(e,`Failed to save model pricing.`);return}this.modelPricingOverridesAvailable=!0,this.closeModelPricingOverrideForm(),ed.success(`Model pricing saved.`),this.fetchModelPricingOverrides()}catch(e){console.error(`Failed to save model pricing override:`,e),this.modelPricingOverrideError=`Failed to save model pricing.`}finally{this.modelPricingOverrideSubmitting=!1}}async deleteModelPricingOverride(){let e=String(this.modelPricingOverrideForm.selector||``).trim();if(!(!e||!this.modelPricingOverrideFormHasExistingOverride)&&window.confirm(`Remove the model pricing override for "`+e+`"?`)){this.modelPricingOverrideSubmitting=!0,this.modelPricingOverrideError=``;try{let t=await gu(`/admin/model-pricing-overrides`,`DELETE`,{selector:e},{label:`model pricing override`});if(t.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideError=`Model pricing overrides feature is unavailable.`;return}if(t.status!==404){if(t.stale)return;if(!t.ok){this.modelPricingOverrideError=t.status===401?`Authentication required.`:du(t,`Failed to remove model pricing override.`);return}}this.modelPricingOverridesAvailable=!0,this.closeModelPricingOverrideForm(),ed.success(`Model pricing override removed.`),this.fetchModelPricingOverrides()}catch(e){console.error(`Failed to delete model pricing override:`,e),this.modelPricingOverrideError=`Failed to remove model pricing override.`}finally{this.modelPricingOverrideSubmitting=!1}}}},EM=B(``);function DM(e,t){O(t,!0);var n=EM();let r;var i=I(P(n),2),a=P(i,!0);D(i),D(n),L((e,i,o)=>{r=G(n,1,`alias-toggle`,null,r,e),n.disabled=iM.rowTogglingKey===t.row.key||!iM.virtualModelsAvailable,K(n,`aria-label`,i),H(a,o)},[()=>({enabled:iM.rowToggleEnabled(t.row),restricted:iM.rowToggleRestricted(t.row)}),()=>iM.rowToggleAriaLabel(t.row),()=>iM.rowToggleLabel(t.row)]),z(`click`,n,()=>iM.toggleRowEnabled(t.row)),V(e,n),k()}Br([`click`]);var OM=B(`
`);function kM(e,t){O(t,!0);var n=OM(),r=P(n),i=e=>{DM(e,{get row(){return iM.globalScopeRow}})};U(r,e=>{iM.virtualModelsAvailable&&e(i)});var a=I(r,2),o=e=>{{let t=A(()=>TM.modelPricingButtonLabel(`global model pricing`,TM.hasGlobalPricingOverride())),n=A(()=>TM.modelPricingButtonClass(TM.hasGlobalPricingOverride()));yO(e,{get label(){return R(t)},get class(){return`table-icon-btn ${R(n)??``}`},onclick:()=>TM.openGlobalPricingOverrideEdit(),children:(e,t)=>{J(e,{get icon(){return Rc},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(a,e=>{TM.modelPricingOverridesAvailable&&e(o)});var s=I(a,2),c=e=>{{let t=A(()=>Uj(`global model access`,iM.hasGlobalModelOverride())),n=A(()=>Hj(iM.hasGlobalModelOverride()));yO(e,{get label(){return R(t)},get class(){return`table-icon-btn ${R(n)??``}`},onclick:()=>iM.openGlobalModelOverrideEdit(),children:(e,t)=>{J(e,{get icon(){return nl},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(s,e=>{iM.virtualModelsAvailable&&e(c)}),D(n),V(e,n),k()}function AM(e){return String(e&&(e.primary_model||e.source)||``).trim()}function jM(e){return Array.isArray(e&&e.fallback_models)?e.fallback_models:Array.isArray(e&&e.targets)?e.targets:[]}function MM(e){return Array.isArray(e)?e.map(e=>({...e,source:AM(e),targets:jM(e)})):[]}function NM(e){let t=jM(e);return t.length===0?`-`:t.join(`, `)}function PM(e){return e&&e.enabled===!1?`Off`:e&&e.managed?`Config`:`On`}function FM(e,t){let n=String(t||``).trim();return n&&(Array.isArray(e)?e:[]).find(e=>AM(e)===n)||null}function IM(e,t){if(!t||t.is_alias)return!1;let n=FM(e,ij(t));return!!(n&&n.enabled!==!1&&jM(n).length>0)}function LM(e,t){return IM(e,t)?`table-action-btn-failover-active`:``}function RM(e,t){let n=`Edit failover for `+(t&&t.display_name?t.display_name:`model`);return IM(e,t)?n+` (active)`:n}function zM(e){let t=[e&&e.target_model];return(Array.isArray(e&&e.targets)?e.targets:[]).forEach(e=>t.push(e&&e.model)),t.map(e=>String(e||``).trim()).filter(Boolean)}function BM(e){let t=Array.isArray(e)?e.map(e=>String(e||``).trim()).filter(Boolean):[];return{target_model:t[0]||``,targets:t.slice(1).map(e=>({model:e}))}}function VM(e){return{primary_model:String(e&&e.source||``).trim(),fallback_models:zM(e),enabled:!(e&&e.enabled===!1)}}function HM(e){return AM(e)}function UM(e){let t={};return(Array.isArray(e)?e:[]).forEach(e=>{let n=HM(e);n&&(t[n]=!0)}),t}function WM(e,t){let n=HM(t);return!!(n&&e&&e[n])}function GM(e,t){return(Array.isArray(e)?e:[]).filter(e=>WM(t,e))}function KM(e,t){let n=Array.isArray(e)?e:[];return n.length>0&&GM(n,t).length===n.length}function qM(e){return[AM(e),jM(e).join(` `)].join(` `).toLowerCase()}function JM(e,t){let n=Array.isArray(e)?e:[],r=String(t||``).trim().toLowerCase();return r?n.filter(e=>qM(e).includes(r)):n}function YM(e){return{primary_model:AM(e),fallback_models:jM(e).map(e=>String(e||``).trim()).filter(Boolean),enabled:!!(e&&e.enabled!==!1)}}function XM(){return{source:``,target_model:``,targets:[],enabled:!0}}var Q=new class{#e=j(!0);get failoverAvailable(){return R(this.#e)}set failoverAvailable(e){M(this.#e,e,!0)}#t=j(N([]));get failoverRules(){return R(this.#t)}set failoverRules(e){M(this.#t,e,!0)}#n=j(!1);get failoverLoading(){return R(this.#n)}set failoverLoading(e){M(this.#n,e,!0)}#r=j(!1);get failoverSaving(){return R(this.#r)}set failoverSaving(e){M(this.#r,e,!0)}#i=j(!1);get failoverGenerating(){return R(this.#i)}set failoverGenerating(e){M(this.#i,e,!0)}#a=j(``);get failoverError(){return R(this.#a)}set failoverError(e){M(this.#a,e,!0)}#o=j(N([]));get failoverGeneratedRules(){return R(this.#o)}set failoverGeneratedRules(e){M(this.#o,e,!0)}#s=j(!1);get failoverDraftsOpen(){return R(this.#s)}set failoverDraftsOpen(e){M(this.#s,e,!0)}#c=j(N({}));get failoverDraftSelections(){return R(this.#c)}set failoverDraftSelections(e){M(this.#c,e,!0)}#l=j(``);get failoverDraftFilter(){return R(this.#l)}set failoverDraftFilter(e){M(this.#l,e,!0)}#u=j(!1);get failoverDraftSaving(){return R(this.#u)}set failoverDraftSaving(e){M(this.#u,e,!0)}#d=j(!1);get failoverFormOpen(){return R(this.#d)}set failoverFormOpen(e){M(this.#d,e,!0)}#f=j(`create`);get failoverFormMode(){return R(this.#f)}set failoverFormMode(e){M(this.#f,e,!0)}#p=j(!1);get failoverFormManaged(){return R(this.#p)}set failoverFormManaged(e){M(this.#p,e,!0)}#m=j(N(XM()));get failoverForm(){return R(this.#m)}set failoverForm(e){M(this.#m,e,!0)}failoverEnabled(){return bu.booleanFlag(`FAILOVER_ENABLED`,!0)}async fetchFailoverRules(){if(!this.failoverEnabled()){this.failoverAvailable=!1,this.failoverRules=[],this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!1,this.failoverError=``,this.failoverLoading=!1;return}this.failoverLoading=!0,this.failoverError=``;try{let e=await hu(`/admin/failover`,{label:`failover mappings`});if(e.status===503){this.failoverAvailable=!1,this.failoverRules=[];return}if(e.stale)return;if(this.failoverAvailable=!0,!e.ok){this.failoverRules=[];return}this.failoverRules=MM(e.data)}catch(e){console.error(`Failed to fetch failover mappings:`,e),this.failoverRules=[],this.failoverError=`Unable to load failover mappings.`}finally{this.failoverLoading=!1}}resetFailoverForm(){this.failoverFormMode=`create`,this.failoverFormManaged=!1,this.failoverForm=XM()}openFailoverCreate(){this.resetFailoverForm(),this.failoverFormOpen=!0,this.focusFailoverEditor()}openFailoverEdit(e){if(!e)return;this.resetFailoverForm(),this.failoverFormMode=`edit`,this.failoverFormOpen=!0,this.failoverFormManaged=!!e.managed;let t=this.failoverPrimaryModel(e),n=this.failoverTargets(e);this.failoverForm={source:t,target_model:n[0]||``,targets:n.slice(1).map(e=>({model:e})),enabled:e.enabled!==!1},this.focusFailoverEditor()}openFailoverForModel(e){if(!e||e.is_alias)return;let t=this.qualifiedModelName(e),n=this.failoverRules.find(e=>this.failoverPrimaryModel(e)===t);if(n){this.openFailoverEdit(n);return}this.resetFailoverForm(),this.failoverFormMode=`create`,this.failoverFormOpen=!0,this.failoverForm.source=t,this.focusFailoverEditor()}closeFailoverForm(){this.failoverFormOpen=!1}closeFailoverDraftsModal(){this.failoverDraftSaving||(this.failoverDraftsOpen=!1)}failoverFormTargets(){return zM(this.failoverForm)}setFailoverFormTargets(e){let t=BM(e);this.failoverForm.target_model=t.target_model,this.failoverForm.targets=t.targets}addFailoverTarget(){Array.isArray(this.failoverForm.targets)||(this.failoverForm.targets=[]),this.failoverForm.targets.push({model:``}),this.focusFailoverEditor()}removeFailoverTarget(e){if(!Array.isArray(this.failoverForm.targets)){this.failoverForm.targets=[];return}this.failoverForm.targets.splice(e,1)}removePrimaryFailoverTarget(){let e=Array.isArray(this.failoverForm.targets)?this.failoverForm.targets:[];if(e.length>0){let t=e.shift();this.failoverForm.target_model=t&&t.model?t.model:``,this.failoverForm.targets=e;return}this.failoverForm.target_model=``}failoverRulePayload(){return VM(this.failoverForm)}async submitFailoverForm(){if(this.failoverSaving||this.failoverGenerating||this.failoverFormManaged)return;let e=this.failoverRulePayload();if(!e.primary_model){this.failoverError=`Primary model is required.`;return}if(e.enabled&&e.fallback_models.length===0){this.failoverError=`Add at least one failover target.`;return}this.failoverSaving=!0,this.failoverError=``;try{let t=await gu(`/admin/failover`,`PUT`,e,{label:`failover mapping`});if(t.stale)return;if(!t.ok){this.failoverError=`Failed to save failover mapping.`;return}ed.success(`Failover mapping saved.`),this.closeFailoverForm(),this.fetchFailoverRules()}catch(e){console.error(`Failed to save failover mapping:`,e),this.failoverError=`Failed to save failover mapping.`}finally{this.failoverSaving=!1}}async deleteFailoverRule(e){let t=String(e&&this.failoverPrimaryModel(e)||this.failoverForm.source||``).trim();if(!(!t||this.failoverSaving||this.failoverGenerating)&&confirm(`Remove failover mapping for "`+t+`"?`)){this.failoverSaving=!0,this.failoverError=``;try{let e=await gu(`/admin/failover`,`DELETE`,{primary_model:t},{label:`failover mapping`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to remove failover mapping.`;return}ed.success(`Failover mapping removed.`),this.closeFailoverForm(),this.fetchFailoverRules()}catch(e){console.error(`Failed to remove failover mapping:`,e),this.failoverError=`Failed to remove failover mapping.`}finally{this.failoverSaving=!1}}}async generateFailoverForForm(){if(this.failoverGenerating||this.failoverSaving||this.failoverFormManaged)return;let e=String(this.failoverForm.source||``).trim();if(!e){this.failoverError=`Primary model is required.`;return}this.failoverGenerating=!0,this.failoverError=``;try{let t=await gu(`/admin/failover/generate`,`POST`,{primary_model:e},{label:`failover generation`});if(t.stale)return;if(!t.ok){this.failoverError=`Failed to generate failover mapping.`;return}let n=MM(t.data),r=n.find(t=>this.failoverPrimaryModel(t)===e)||n[0]||null,i=this.failoverTargets(r);if(i.length===0){this.failoverError=`No failover suggestions were generated for this model.`;return}this.setFailoverFormTargets(i),ed.success(`Generated `+i.length+` fallback model`+(i.length===1?`.`:`s.`)),this.focusFailoverEditor()}catch(e){console.error(`Failed to generate failover mapping:`,e),this.failoverError=`Failed to generate failover mapping.`}finally{this.failoverGenerating=!1}}openFailoverResetDialog(){zu.open({title:`Remove failover models`,titleId:`failoverResetDialogTitle`,inputId:`failover-reset-confirmation`,message:`Remove every dashboard-managed failover mapping. Configuration-managed mappings remain active.`,requiredText:`remove`,confirmLabel:`Remove Failover`,icon:xl,dialogClass:`budget-reset-dialog`,onConfirm:async()=>{await this.resetFailoverRules(),this.failoverError&&(zu.error=this.failoverError)}})}async resetFailoverRules(){if(!this.failoverSaving){this.failoverSaving=!0,this.failoverError=``;try{let e=await gu(`/admin/failover/reset`,`POST`,void 0,{label:`failover removal`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to remove failover mappings.`;return}this.failoverRules=MM(e.data),this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!1,ed.success(`Dashboard-managed failover mappings removed.`),zu.close()}catch(e){console.error(`Failed to remove failover mappings:`,e),this.failoverError=`Failed to remove failover mappings.`}finally{this.failoverSaving=!1}}}async generateFailoverRules(){if(!(this.failoverGenerating||this.failoverDraftSaving)){this.failoverGenerating=!0,this.failoverError=``,this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!0;try{let e=await gu(`/admin/failover/generate`,`POST`,void 0,{label:`failover generation`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to generate failover mappings.`;return}this.failoverGeneratedRules=MM(e.data),this.selectAllFailoverDrafts(this.failoverGeneratedRules)}catch(e){console.error(`Failed to generate failover mappings:`,e),this.failoverError=`Failed to generate failover mappings.`}finally{this.failoverGenerating=!1}}}failoverDraftKey(e){return HM(e)}selectAllFailoverDrafts(e){this.failoverDraftSelections=UM(e)}failoverDraftSelected(e){return WM(this.failoverDraftSelections,e)}setFailoverDraftSelected(e,t){let n=this.failoverDraftKey(e);n&&(this.failoverDraftSelections={...this.failoverDraftSelections,[n]:!!t})}selectedFailoverDrafts(){return GM(this.failoverGeneratedRules,this.failoverDraftSelections)}selectedFailoverDraftCount(){return this.selectedFailoverDrafts().length}failoverDraftCountLabel(){return this.selectedFailoverDraftCount()+` / `+this.failoverGeneratedRules.length+` selected`}allFailoverDraftsSelected(){return KM(this.failoverGeneratedRules,this.failoverDraftSelections)}toggleAllFailoverDrafts(){if(!(this.failoverDraftSaving||this.failoverGenerating||this.failoverGeneratedRules.length===0)){if(this.allFailoverDraftsSelected()){this.failoverDraftSelections={};return}this.selectAllFailoverDrafts(this.failoverGeneratedRules)}}failoverDraftSearchText(e){return qM(e)}filteredFailoverDrafts(){return JM(this.failoverGeneratedRules,this.failoverDraftFilter)}failoverDraftPayload(e){return YM(e)}async saveSelectedFailoverDrafts(){if(this.failoverDraftSaving||this.failoverGenerating)return;let e=this.selectedFailoverDrafts();if(e.length===0){this.failoverError=`Select at least one failover draft.`;return}this.failoverDraftSaving=!0,this.failoverError=``;try{for(let t of e){let e=this.failoverDraftPayload(t);if(!e.primary_model||e.fallback_models.length===0){this.failoverError=`Generated failover draft is missing model data.`;return}let n=await gu(`/admin/failover`,`PUT`,e,{label:`failover mapping`});if(n.stale)return;if(!n.ok){this.failoverError=`Failed to save failover mapping.`;return}}ed.success(`Saved `+e.length+` failover mapping`+(e.length===1?`.`:`s.`)),this.failoverDraftsOpen=!1,this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.fetchFailoverRules()}catch(e){console.error(`Failed to save generated failover mappings:`,e),this.failoverError=`Failed to save failover mappings.`}finally{this.failoverDraftSaving=!1}}focusFailoverEditor(){setTimeout(()=>{let e=document.querySelector(`[data-failover-editor]`),t=e&&e.querySelector?e.querySelector(`[data-modal-autofocus], input:not([disabled]), textarea:not([disabled]), button:not([disabled])`):null;t&&typeof t.focus==`function`&&t.focus({preventScroll:!0})},0)}failoverTargetLabel(e){return NM(e)}failoverPrimaryModel(e){return AM(e)}failoverTargets(e){return jM(e)}findFailoverMapping(e){return FM(this.failoverRules,e)}hasActiveFailoverMapping(e){return IM(this.failoverRules,e)}failoverButtonClass(e){return LM(this.failoverRules,e)}failoverButtonLabel(e){return RM(this.failoverRules,e)}normalizeFailoverRules(e){return MM(e)}failoverRuleStatus(e){return PM(e)}qualifiedModelName(e){return ij(e)}},ZM=B(``),QM=B(``),$M=B(`Config`),eN=B(`
Targets
`),tN=B(``),nN=B(`
Redirects to
`),rN=B(`
Slowdown
`),iN=B(` `),aN=B(`
`),oN=B(`
`),sN=B(`
`);function cN(e,t){O(t,!0);let n=A(()=>TM.modelRowPricing(t.row)),r=A(()=>t.row.is_alias?t.row.alias&&t.row.alias.slowdown:t.row.masking_alias&&t.row.masking_alias.slowdown!=null?t.row.masking_alias.slowdown:t.row.access&&t.row.access.override&&t.row.access.override.slowdown),i=A(()=>Number(R(r)==null?0:R(r)));var a=sN(),o=P(a),s=P(o),c=P(s),l=P(c),u=P(l,!0);D(l);var d=I(l,2),f=e=>{V(e,ZM())};U(d,e=>{t.row.is_alias&&e(f)});var p=I(d,2),m=e=>{V(e,QM())};U(p,e=>{!t.row.is_alias&&t.row.masking_alias&&e(m)});var h=I(p,2),g=e=>{V(e,$M())},_=A(()=>Bj(t.row));U(h,e=>{R(_)&&e(g)}),D(c);var v=I(c,2),y=e=>{var n=eN(),r=I(P(n)),i=P(r,!0);D(r),D(n),L(()=>H(i,t.row.secondary_name)),V(e,n)};U(v,e=>{t.row.is_alias&&e(y)});var b=I(v,2),x=e=>{var n=nN(),r=I(P(n)),i=P(r,!0);D(r);var a=I(r,2),o=e=>{var n=tN();L(e=>{K(n,`aria-label`,iM.rowDeletingKey===t.row.key?`Removing redirect for `+t.row.display_name:`Remove redirect for `+t.row.display_name),K(n,`title`,iM.rowDeletingKey===t.row.key?`Removing redirect for `+t.row.display_name:`Remove redirect for `+t.row.display_name),n.disabled=e},[()=>!!iM.rowDeletingKey]),z(`click`,n,()=>iM.removeRedirectRow(t.row)),V(e,n)},s=A(()=>iM.virtualModelsAvailable&&Rj(t.row));U(a,e=>{R(s)&&e(o)}),D(n),L(e=>H(i,e),[()=>_j(t.row.masking_alias)]),V(e,n)};U(b,e=>{!t.row.is_alias&&t.row.masking_alias&&e(x)});var S=I(b,2),C=e=>{var t=rN(),n=I(P(t)),r=P(n);D(n),D(t),L(()=>H(r,`+${R(i)??``}× inference time`)),V(e,t)};U(S,e=>{R(i)>0&&e(C)}),D(s),D(o);var w=I(o);W(w,17,()=>t.columns,ii,(e,r)=>{var i=iN(),a=P(i,!0);D(i),L(e=>{G(i,1,Ni(R(r).class),`svelte-1iynym`),H(a,e)},[()=>R(r).value(t.row,R(n))]),V(e,i)});var T=I(w),E=P(T),ee=e=>{var n=aN(),r=P(n);DM(r,{get row(){return t.row}});var i=I(r,2),a=e=>{{let n=A(()=>iM.rowDeletingKey===t.row.key?`Removing alias `+t.row.alias.name:`Remove alias `+t.row.alias.name),r=A(()=>!!iM.rowDeletingKey);yO(e,{get label(){return R(n)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>iM.removeAliasRow(t.row),get disabled(){return R(r)},children:(e,t)=>{J(e,{get icon(){return xl},class:`table-icon-svg`})},$$slots:{default:!0}})}},o=A(()=>iM.virtualModelsAvailable&&Lj(t.row));U(i,e=>{R(o)&&e(a)});var s=I(i,2),c=e=>{{let n=A(()=>`Edit alias `+t.row.alias.name);yO(e,{get label(){return R(n)},class:`table-icon-btn table-action-btn-active`,onclick:()=>iM.openVirtualModelEditAlias(t.row.alias),children:(e,t)=>{J(e,{get icon(){return nl},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(s,e=>{iM.virtualModelsAvailable&&e(c)}),D(n),V(e,n)},te=e=>{var n=oN(),r=P(n);DM(r,{get row(){return t.row}});var i=I(r,2),a=e=>{{let n=A(()=>TM.modelPricingButtonLabel(`model pricing for `+t.row.display_name,TM.hasModelPricingOverride(t.row))),r=A(()=>TM.modelPricingButtonClass(TM.hasModelPricingOverride(t.row)));yO(e,{get label(){return R(n)},get class(){return`table-icon-btn ${R(r)??``}`},onclick:()=>TM.openModelPricingOverrideEdit(t.row),children:(e,t)=>{J(e,{get icon(){return Rc},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(i,e=>{TM.modelPricingOverridesAvailable&&e(a)});var o=I(i,2),s=e=>{{let n=A(()=>Q.failoverButtonLabel(t.row)),r=A(()=>Q.failoverButtonClass(t.row));yO(e,{get label(){return R(n)},get class(){return`table-icon-btn ${R(r)??``}`},onclick:()=>Q.openFailoverForModel(t.row),children:(e,t)=>{J(e,{get icon(){return _l},class:`table-icon-svg`})},$$slots:{default:!0}})}},c=A(()=>Q.failoverAvailable&&Q.failoverEnabled());U(o,e=>{R(c)&&e(s)});var l=I(o,2),u=e=>{{let n=A(()=>Z.rateLimitGaugeTitle(t.row.display_name,Z.rateLimitGaugeClassForModel(t.row))),r=A(()=>Z.rateLimitGaugeClassForModel(t.row));yO(e,{get label(){return R(n)},get class(){return`table-icon-btn ${R(r)??``}`},onclick:()=>Z.openRateLimitInspectorForModel(t.row),children:(e,t)=>{J(e,{get icon(){return Wc},class:`table-icon-svg`})},$$slots:{default:!0}})}},d=A(()=>Z.rateLimitsEnabled()&&Z.rateLimitInspectorModelID(t.row));U(l,e=>{R(d)&&e(u)});var f=I(l,2),p=e=>{{let n=A(()=>`Edit redirect for `+t.row.display_name);yO(e,{get label(){return R(n)},class:`table-icon-btn table-action-btn-active`,onclick:()=>iM.openVirtualModelEditAlias(t.row.masking_alias),children:(e,t)=>{J(e,{get icon(){return nl},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(f,e=>{iM.virtualModelsAvailable&&t.row.masking_alias&&t.row.masking_alias.name&&e(p)});var m=I(f,2),h=e=>{{let n=A(()=>Uj(`model settings for `+t.row.display_name,Vj(t.row.access))),r=A(()=>Hj(Vj(t.row.access)));yO(e,{get label(){return R(n)},get class(){return`table-icon-btn ${R(r)??``}`},onclick:()=>iM.openVirtualModelEditModel(t.row),children:(e,t)=>{J(e,{get icon(){return nl},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(m,e=>{iM.virtualModelsAvailable&&!t.row.masking_alias&&e(h)}),D(n),V(e,n)};U(E,e=>{t.row.is_alias?e(ee):e(te,-1)}),D(T),D(a),L((e,n)=>{K(a,`id`,e),G(a,1,n,`svelte-1iynym`),H(u,t.row.display_name)},[()=>zj(t.row)||void 0,()=>Ni(Ij(t.row))]),V(e,a),k()}Br([`click`]);var lN={headerLines:[`Modes`],value:e=>(e.model?.metadata?.modes??[]).join(`, `)||`-`};function uN(e,t){return{headerLines:e,class:`col-price`,value:t}}var dN=uN([`Input / Output ($/MTok)`],(e,t)=>ud(t?.input_per_mtok)+` / `+ud(t?.output_per_mtok)),fN={all:[dN],text_generation:[lN,dN,uN([`Cached $/MTok`],(e,t)=>ud(t?.cached_input_per_mtok))],embedding:[uN([`Input`,`$/MTok`],(e,t)=>ud(t?.input_per_mtok))],image:[uN([`$/Image`],(e,t)=>dd(t?.per_image))],audio:[uN([`$/Second`],(e,t)=>dd(t?.per_second_input)),uN([`$/Character`],(e,t)=>dd(t?.per_character_input))],video:[uN([`$/Second (In)`],(e,t)=>dd(t?.per_second_input)),uN([`$/Second (Out)`],(e,t)=>dd(t?.per_second_output))],utility:[uN([`$/Page`],(e,t)=>dd(t?.per_page)),uN([`$/Request`],(e,t)=>dd(t?.per_request))]};function pN(e){return fN[e]||fN.all}function mN(e){return pN(e).length+2}var hN=B(`
`),gN=B(` `,1),_N=B(``),vN=B(` `),yN=B(` `),bN=B(`
`),xN=B(`
`),SN=B(`
Model
`);function CN(e,t){O(t,!0);let n=A(()=>Id.activeCategory||`all`),r=A(()=>pN(R(n))),i=A(()=>mN(R(n)));var a=SN(),o=P(a),s=P(o),c=P(s),l=I(P(c));W(l,17,()=>R(r),ii,(e,t)=>{var n=_N();W(n,21,()=>R(t).headerLines,ii,(e,t,n)=>{var r=gN(),i=F(r),a=e=>{V(e,hN())};U(i,e=>{n>0&&e(a)});var o=I(i,1,!0);L(()=>H(o,R(t))),V(e,r)}),D(n),L(()=>G(n,1,Ni(R(t).class),`svelte-1911hy6`)),V(e,n)});var u=I(l);kM(P(u),{}),D(u),D(c),D(s),W(I(s),17,()=>iM.filteredDisplayModelGroups,e=>e.key,(e,t)=>{var n=xN(),a=P(n),o=P(a),s=P(o),c=P(s),l=P(c),u=P(l),d=P(u,!0);D(u);var f=I(u,2),p=e=>{var n=vN(),r=P(n,!0);D(n),L(()=>H(r,`(`+R(t).type_label+`)`)),V(e,n)};U(f,e=>{R(t).type_label&&e(p)});var m=I(f,2),h=e=>{var n=yN(),r=P(n,!0);D(n),L(()=>H(r,R(t).item_count_label)),V(e,n)};U(m,e=>{R(t).item_count_label&&e(h)}),D(l);var g=I(l,2),_=e=>{var n=bN(),r=P(n,!0);D(n),L(()=>H(r,R(t).access_summary)),V(e,n)};U(g,e=>{R(t).access_summary&&e(_)}),D(c);var v=I(c,2),y=P(v),b=e=>{DM(e,{get row(){return R(t)}})};U(y,e=>{R(t).access.selector&&e(b)});var x=I(y,2),S=e=>{{let n=A(()=>TM.modelPricingButtonLabel(`provider pricing for `+R(t).display_name,TM.hasProviderPricingOverride(R(t)))),r=A(()=>TM.modelPricingButtonClass(TM.hasProviderPricingOverride(R(t))));yO(e,{get label(){return R(n)},get class(){return`table-icon-btn ${R(r)??``}`},onclick:()=>TM.openProviderPricingOverrideEdit(R(t)),children:(e,t)=>{J(e,{get icon(){return Rc},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(x,e=>{TM.modelPricingOverridesAvailable&&R(t).provider_name&&e(S)});var C=I(x,2),w=e=>{{let n=A(()=>Z.rateLimitGaugeTitle(`provider `+R(t).display_name,Z.rateLimitGaugeClassForProvider(R(t)))),r=A(()=>Z.rateLimitGaugeClassForProvider(R(t)));yO(e,{get label(){return R(n)},get class(){return`table-icon-btn ${R(r)??``}`},onclick:()=>Z.openRateLimitInspectorForProvider(R(t)),children:(e,t)=>{J(e,{get icon(){return Wc},class:`table-icon-svg`})},$$slots:{default:!0}})}},T=A(()=>Z.rateLimitsEnabled()&&R(t).provider_name);U(C,e=>{R(T)&&e(w)});var E=I(C,2),ee=e=>{{let n=A(()=>Uj(`provider access for `+R(t).display_name,Vj(R(t).access))),r=A(()=>Hj(Vj(R(t).access)));yO(e,{get label(){return R(n)},get class(){return`table-icon-btn ${R(r)??``}`},onclick:()=>iM.openProviderOverrideEdit(R(t)),children:(e,t)=>{J(e,{get icon(){return nl},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(E,e=>{iM.virtualModelsAvailable&&R(t).access.selector&&e(ee)}),D(v),D(s),D(o),D(a),W(I(a),17,()=>R(t).rows,e=>e.key,(e,t)=>{cN(e,{get row(){return R(t)},get columns(){return R(r)}})}),D(n),L(()=>{K(o,`colspan`,R(i)),H(d,R(t).display_name)}),V(e,n)}),D(o),D(a),V(e,a),k()}var wN=B(``);function TN(e,t){let n=q(t,`enabled`,3,!1),r=q(t,`label`,3,``),i=q(t,`disabled`,3,!1),a=q(t,`restricted`,3,!1);var o=wN();let s;var c=I(P(o),2),l=P(c,!0);D(c),D(o),L(()=>{s=G(o,1,`alias-toggle`,null,s,{enabled:n(),restricted:a()}),o.disabled=i(),K(o,`aria-label`,(n()?`Disable `:`Enable `)+r()),H(l,t.text??(n()?`Enabled`:`Disabled`))}),z(`click`,o,function(...e){t.onclick?.apply(this,e)}),V(e,o)}Br([`click`]);var EN=B(``),DN=B(`
`);function ON(e,t){O(t,!0);let n=q(t,`model`,15,``),r=q(t,`weight`,15),i=q(t,`id`,3,void 0),a=q(t,`placeholder`,3,`openai/gpt-4o`),o=q(t,`showRemove`,3,!0);var s=DN(),c=P(s);ea(c);var l=I(c,2),u=e=>{var t=EN();ea(t),L(()=>t.disabled=iM.vmFormManaged),la(t,r),V(e,t)},d=A(()=>iM.vmFormShowWeights());U(l,e=>{R(d)&&e(u)});var f=I(l,2),p=e=>{yO(e,{label:`Remove target`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,get onclick(){return t.onremove},get disabled(){return iM.vmFormManaged},children:(e,t)=>{J(e,{get icon(){return xl},class:`table-icon-svg`})},$$slots:{default:!0}})};U(f,e=>{o()&&e(p)}),D(s),L(()=>{K(c,`id`,i()),K(c,`placeholder`,a()),c.disabled=iM.vmFormManaged}),la(c,n),V(e,s),k()}var kN=B(`

`),AN=B(`adaptive lets the registered routing extension pick the target per - request.`,1),jN=B(`Add one target to make this a redirect/alias, or two or more to load + skip that limit. Token limits require usage tracking.

`,1);function Uj(e,t){O(t,!0);{let t=A(()=>Z.rateLimitEditing?`Edit Rate Limit`:`Create Rate Limit`);OA(e,{get open(){return Z.rateLimitFormOpen},get title(){return R(t)},ariaLabel:`Rate limit editor`,get error(){return Z.rateLimitFormError},get submitting(){return Z.rateLimitFormSubmitting},submitLabel:`Save Rate Limit`,dialogClass:`budget-editor`,novalidate:!0,onclose:()=>Z.closeRateLimitForm(),onsubmit:()=>Z.submitRateLimitForm(),children:(e,t)=>{var n=Hj(),r=F(n),i=P(r);AA(i,{id:`rate-limit-scope`,label:`Scope`,children:(e,t)=>{var n=Fj();W(n,21,()=>Z.rateLimitScopeOptions(),e=>e.value,(e,t)=>{var n=Pj(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(n),z(`change`,n,()=>Z.syncRateLimitScope()),Ui(n,()=>Z.rateLimitForm.scope,e=>Z.rateLimitForm.scope=e),V(e,n)},$$slots:{default:!0}});var a=I(i,2);{let e=A(()=>Z.rateLimitSubjectFieldLabel());AA(a,{id:`rate-limit-subject`,get label(){return R(e)},children:(e,t)=>{var n=Ij();ea(n),L(e=>{K(n,`placeholder`,e),K(n,`data-modal-autofocus`,!Z.rateLimitEditing||void 0),ta(n,Z.rateLimitForm.subject)},[()=>Z.rateLimitSubjectPlaceholder()]),z(`input`,n,e=>Z.setRateLimitFormSubject(e.currentTarget.value)),V(e,n)},$$slots:{default:!0}})}var o=I(a,2);AA(o,{id:`rate-limit-period`,label:`Period`,children:(e,t)=>{var n=Lj();W(n,21,()=>Z.rateLimitPeriodOptions(),e=>e.value,(e,t)=>{var n=Pj(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(n),z(`change`,n,()=>Z.syncRateLimitPeriodSeconds()),Ui(n,()=>Z.rateLimitForm.period,e=>Z.rateLimitForm.period=e),V(e,n)},$$slots:{default:!0}});var s=I(o,2),c=e=>{AA(e,{id:`rate-limit-period-seconds`,label:`Period Seconds`,children:(e,t)=>{var n=Rj();ea(n),la(n,()=>Z.rateLimitForm.period_seconds,e=>Z.rateLimitForm.period_seconds=e),V(e,n)},$$slots:{default:!0}})};U(s,e=>{Z.rateLimitForm.period===`custom`&&e(c)});var l=I(s,2);{let e=A(()=>Z.rateLimitForm.period===`concurrent`?`Max In-Flight Requests`:`Max Requests`);AA(l,{id:`rate-limit-max-requests`,get label(){return R(e)},children:(e,t)=>{var n=zj();ea(n),L(()=>K(n,`data-modal-autofocus`,Z.rateLimitEditing?!0:void 0)),la(n,()=>Z.rateLimitForm.max_requests,e=>Z.rateLimitForm.max_requests=e),V(e,n)},$$slots:{default:!0}})}var u=I(l,2),d=e=>{AA(e,{id:`rate-limit-max-tokens`,label:`Max Tokens`,children:(e,t)=>{var n=Bj();ea(n),la(n,()=>Z.rateLimitForm.max_tokens,e=>Z.rateLimitForm.max_tokens=e),V(e,n)},$$slots:{default:!0}})};U(u,e=>{Z.rateLimitForm.period!==`concurrent`&&e(d)}),D(r);var f=I(r,4),p=e=>{V(e,Vj())};U(f,e=>{Z.rateLimitEditing&&e(p)}),V(e,n)},$$slots:{default:!0}})}k()}Br([`change`,`input`]);var Wj=B(` `),Gj=B(` Edit`,1),Kj=B(` `,1),qj=B(`
In-flight
`),Jj=B(`
Requests
`),Yj=B(`
Tokens
`),Xj=B(`
`),Zj=B(`
`);function Qj(e,t){O(t,!0);var n=Zj();W(n,21,()=>t.rules,e=>Z.rateLimitKey(e),(e,t)=>{var n=Xj(),r=P(n),i=P(r),a=P(i),o=P(a,!0);D(a);var s=I(a,2),c=P(s),l=e=>{var n=Wj(),r=P(n);{let e=A(()=>Z.rateLimitScope(R(t))===`provider`?gu:jl);J(r,{get icon(){return R(e)},class:`budget-period-icon`})}var i=I(r,2),a=P(i,!0);D(i),D(n),L((e,t)=>{K(n,`title`,e),H(a,t)},[()=>`Rule scope: `+Z.rateLimitScopeLabel(R(t)),()=>Z.rateLimitScopeLabel(R(t))]),V(e,n)},u=A(()=>Z.rateLimitScope(R(t))!==`user_path`);U(c,e=>{R(u)&&e(l)});var d=I(c,2),f=P(d);{let e=A(()=>Z.rateLimitIsConcurrent(R(t))?El:Tu);J(f,{get icon(){return R(e)},class:`budget-period-icon`})}var p=I(f,2),m=P(p,!0);D(p),D(d),D(s);var h=I(s,2),g=P(h),_=P(g),v=P(_,!0);D(_),D(g);var y=I(g,2),b=P(y),x=e=>{wk(e,{label:`Edit rate limit`,class:`budget-action-btn`,onclick:()=>Z.openRateLimitForm(R(t)),children:(e,t)=>{var n=Gj();J(F(n),{get icon(){return su},class:`budget-action-icon`}),Ve(2),V(e,n)},$$slots:{default:!0}})},S=A(()=>!Z.rateLimitIsReadOnly(R(t)));U(b,e=>{R(S)&&e(x)});var C=I(b,2);{let e=A(()=>Z.rateLimitResettingKey===Z.rateLimitKey(R(t))?`Resetting counters`:`Reset counters`),n=A(()=>Z.rateLimitResettingKey===Z.rateLimitKey(R(t)));wk(C,{get label(){return R(e)},class:`budget-action-btn budget-action-btn-warning`,onclick:()=>Z.resetRateLimit(R(t)),get disabled(){return R(n)},children:(e,n)=>{var r=Kj(),i=F(r);J(i,{get icon(){return fu},class:`budget-action-icon`});var a=I(i,2),o=P(a,!0);D(a),L(e=>H(o,e),[()=>Z.rateLimitResettingKey===Z.rateLimitKey(R(t))?`Resetting`:`Reset`]),V(e,r)},$$slots:{default:!0}})}var w=I(C,2),T=e=>{{let n=A(()=>Z.rateLimitDeletingKey===Z.rateLimitKey(R(t))?`Deleting rate limit`:`Delete rate limit`),r=A(()=>Z.rateLimitDeletingKey===Z.rateLimitKey(R(t)));wk(e,{get label(){return R(n)},class:`table-action-btn-danger budget-action-btn`,onclick:()=>Z.deleteRateLimit(R(t)),get disabled(){return R(r)},children:(e,n)=>{var r=Kj(),i=F(r);J(i,{get icon(){return Eu},class:`budget-action-icon`});var a=I(i,2),o=P(a,!0);D(a),L(e=>H(o,e),[()=>Z.rateLimitDeletingKey===Z.rateLimitKey(R(t))?`Deleting`:`Delete`]),V(e,r)},$$slots:{default:!0}})}},E=A(()=>!Z.rateLimitIsReadOnly(R(t)));U(w,e=>{R(E)&&e(T)}),D(y),D(h),D(i);var ee=I(i,2),te=P(ee),ne=e=>{var n=qj(),r=P(n),i=I(P(r),2),a=P(i,!0);D(i),D(r);var o=I(r,2),s=P(o);let c;var l=I(s,2),u=P(l),d=P(u,!0);D(u),D(l),D(o),D(n),L((e,t,n,r,i,l)=>{H(a,e),K(o,`aria-valuenow`,t),K(o,`aria-label`,n),Bi(o,r),c=G(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),H(d,l)},[()=>Z.rateLimitUsagePercent(R(t).in_flight,R(t).max_requests)+`%`,()=>Z.rateLimitUsagePercent(R(t).in_flight,R(t).max_requests),()=>`In-flight requests: `+Z.formatRateLimitNumber(R(t).in_flight)+` of `+Z.formatRateLimitNumber(R(t).max_requests),()=>`--budget-progress: `+Z.rateLimitUsagePercent(R(t).in_flight,R(t).max_requests)+`%`,()=>({"budget-bar-fill-danger":Z.rateLimitUsagePercent(R(t).in_flight,R(t).max_requests)>=100}),()=>Z.formatRateLimitNumber(R(t).in_flight)+` of `+Z.formatRateLimitNumber(R(t).max_requests)+` in flight`]),V(e,n)},re=A(()=>Z.rateLimitIsConcurrent(R(t)));U(te,e=>{R(re)&&e(ne)});var ie=I(te,2),ae=e=>{var n=Jj(),r=P(n),i=I(P(r),2),a=P(i,!0);D(i),D(r);var o=I(r,2),s=P(o);let c;var l=I(s,2),u=P(l),d=P(u,!0);D(u);var f=I(u,2),p=P(f,!0);D(f),D(l),D(o),D(n),L((e,t,n,r,i,l,u)=>{H(a,e),K(o,`aria-valuenow`,t),K(o,`aria-label`,n),Bi(o,r),c=G(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),H(d,l),H(p,u)},[()=>Z.rateLimitUsagePercent(R(t).requests_used,R(t).max_requests)+`%`,()=>Z.rateLimitUsagePercent(R(t).requests_used,R(t).max_requests),()=>`Requests used: `+Z.formatRateLimitNumber(R(t).requests_used)+` of `+Z.formatRateLimitNumber(R(t).max_requests),()=>`--budget-progress: `+Z.rateLimitUsagePercent(R(t).requests_used,R(t).max_requests)+`%`,()=>({"budget-bar-fill-danger":Z.rateLimitUsagePercent(R(t).requests_used,R(t).max_requests)>=100}),()=>Z.formatRateLimitNumber(R(t).requests_used)+` of `+Z.formatRateLimitNumber(R(t).max_requests)+` requests`,()=>Z.formatRateLimitNumber(R(t).requests_remaining)+` left`]),V(e,n)},oe=A(()=>!Z.rateLimitIsConcurrent(R(t))&&R(t).max_requests);U(ie,e=>{R(oe)&&e(ae)});var se=I(ie,2),ce=e=>{var n=Yj(),r=P(n),i=I(P(r),2),a=P(i,!0);D(i),D(r);var o=I(r,2),s=P(o);let c;var l=I(s,2),u=P(l),d=P(u,!0);D(u);var f=I(u,2),p=P(f,!0);D(f),D(l),D(o),D(n),L((e,t,n,r,i,l,u)=>{H(a,e),K(o,`aria-valuenow`,t),K(o,`aria-label`,n),Bi(o,r),c=G(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),H(d,l),H(p,u)},[()=>Z.rateLimitUsagePercent(R(t).tokens_used,R(t).max_tokens)+`%`,()=>Z.rateLimitUsagePercent(R(t).tokens_used,R(t).max_tokens),()=>`Tokens used: `+Z.formatRateLimitNumber(R(t).tokens_used)+` of `+Z.formatRateLimitNumber(R(t).max_tokens),()=>`--budget-progress: `+Z.rateLimitUsagePercent(R(t).tokens_used,R(t).max_tokens)+`%`,()=>({"budget-bar-fill-danger":Z.rateLimitUsagePercent(R(t).tokens_used,R(t).max_tokens)>=100}),()=>Z.formatRateLimitNumber(R(t).tokens_used)+` of `+Z.formatRateLimitNumber(R(t).max_tokens)+` tokens`,()=>Z.formatRateLimitNumber(R(t).tokens_remaining)+` left`]),V(e,n)},le=A(()=>!Z.rateLimitIsConcurrent(R(t))&&R(t).max_tokens);U(se,e=>{R(le)&&e(ce)}),D(ee),D(r),D(n),L((e,t,n,r,i)=>{K(a,`title`,e),H(o,t),H(m,n),K(_,`title`,r),H(v,i)},[()=>Z.rateLimitScopeLabel(R(t))+`: `+Z.rateLimitSubject(R(t)),()=>Z.rateLimitSubject(R(t)),()=>Z.rateLimitPeriodLabel(R(t)),()=>Z.rateLimitIsReadOnly(R(t))?`Declared in configuration; read-only in the dashboard`:`Managed via dashboard or admin API`,()=>Z.rateLimitSourceLabel(R(t))]),V(e,n)}),D(n),V(e,n),k()}var $j=B(`

Rate Limits

`),eM=B(``),tM=B(`
Rate limit management is unavailable.
`),nM=B(``),rM=B(`
`),iM=B(`

No rate limits configured yet.

`),aM=B(`

No rate limits match your filter.

`),oM=B(`
`);function sM(e,t){O(t,!0),On(()=>{Y.refreshTick,Gu.page===`rate-limits`&&Z.fetchRateLimitsPage()});let n=A(()=>Z.filteredRateLimits());var r=oM(),i=P(r),a=P(i);eD(P(a),{copyId:`rate-limits-help-copy`,label:`rate limits help`,text:`Rate limits cap requests, tokens, and in-flight concurrency for a user path subtree, a provider, or a model. Consumer (user path) breaches return 429 with Retry-After and x-ratelimit-* headers; saturated providers and models are skipped by load balancing and failover while capacity exists elsewhere. Counters are per gateway instance and reset on restart; token limits need usage tracking.`,title:e=>{V(e,$j())},$$slots:{title:!0}}),D(a);var o=I(a,2),s=P(o),c=e=>{var t=eM();J(P(t),{get icon(){return lu},class:`form-action-icon`}),Ve(2),D(t),L(()=>t.disabled=Z.rateLimitFormSubmitting),z(`click`,t,()=>Z.openRateLimitForm()),V(e,t)},l=A(()=>Z.rateLimitsEnabled()&&Z.rateLimitsAvailable&&!Y.authError);U(s,e=>{R(l)&&e(c)}),D(o),D(i);var u=I(i,2);Wf(u,{});var d=I(u,2),f=e=>{V(e,tM())},p=A(()=>(!Z.rateLimitsEnabled()||!Z.rateLimitsAvailable)&&!Y.authError);U(d,e=>{R(p)&&e(f)});var m=I(d,2),h=e=>{var t=nM(),n=P(t,!0);D(t),L(()=>H(n,Z.rateLimitError)),V(e,t)};U(m,e=>{Z.rateLimitError&&!Y.authError&&e(h)});var g=I(m,2),_=e=>{Sk(e,{label:`Loading rate limits...`})};U(g,e=>{Z.rateLimitsLoading&&!Y.authError&&e(_)});var v=I(g,2),y=e=>{var t=rM(),n=P(t);DO(P(n),{id:`rate-limit-filter`,placeholder:`Filter by subject, scope, or period...`,label:`Filter rate limits by subject, scope, or period`,get value(){return Z.rateLimitFilter},set value(e){Z.rateLimitFilter=e}}),D(n),D(t),V(e,t)};U(v,e=>{(Z.rateLimits.length>0||Z.rateLimitFilter)&&Z.rateLimitsAvailable&&!Y.authError&&!Z.rateLimitFormOpen&&e(y)});var b=I(v,2);Uj(b,{});var x=I(b,2),S=e=>{Qj(e,{get rules(){return R(n)}})};U(x,e=>{R(n).length>0&&Z.rateLimitsAvailable&&!Y.authError&&e(S)});var C=I(x,2),w=e=>{V(e,iM())},T=A(()=>Z.rateLimits.length===0&&!Z.rateLimitFilter&&!Z.rateLimitsLoading&&!Y.authError&&!Z.rateLimitError&&Z.rateLimitsAvailable&&Z.rateLimitsEnabled());U(C,e=>{R(T)&&e(w)});var E=I(C,2),ee=e=>{V(e,aM())},te=A(()=>Z.rateLimits.length>0&&R(n).length===0&&Z.rateLimitFilter&&!Z.rateLimitsLoading&&!Y.authError&&!Z.rateLimitError&&Z.rateLimitsAvailable&&Z.rateLimitsEnabled());U(E,e=>{R(te)&&e(ee)}),D(r),V(e,r),k()}Br([`click`]);function cM(e){return String(e||``).trim().toLowerCase()}function lM(e){if(!e)return``;let t=String(e.selector||``).trim();if(t)return t;if(!e.model||!e.model.id)return``;let n=String(e.model.id||``).trim(),r=String(e.provider_name||``).trim();if(r)return r+`/`+n;let i=String(e.provider_type||``).trim();return!i||n.includes(`/`)?n:i+`/`+n}function uM(e,t,n,r){let i=new Set,a=String(e||``).trim().toLowerCase(),o=String(t||``).trim().toLowerCase(),s=String(n||``).trim().toLowerCase(),c=String(r||``).trim().toLowerCase();if(c&&i.add(c),!a)return i;i.add(a),s&&i.add(s+`/`+a),o&&!a.includes(`/`)&&i.add(o+`/`+a);let l=a.split(`/`);return l.length===2&&l[1]&&i.add(l[1]),i}function dM(e){return uM(e&&e.model?e.model.id:``,e?e.provider_type:``,e?e.provider_name:``,e?e.selector:``)}function fM(e){let t=new Set,n=String(e.resolved_model||``).trim().toLowerCase(),r=String(e.target_model||``).trim().toLowerCase(),i=String(e.target_provider||``).trim().toLowerCase();if(n){t.add(n);let e=n.split(`/`);e.length===2&&e[1]&&t.add(e[1])}if(r){t.add(r);let e=r.split(`/`);e.length===2&&e[1]&&t.add(e[1])}return r&&i&&t.add(i+`/`+r),t}function pM(e){if(!e)return``;let t=String(e.provider||``).trim(),n=String(e.model||``).trim();return!t||!n||n===t||n.startsWith(t+`/`)?n:t+`/`+n}function mM(e){if(e===``||e==null)return null;let t=Number(e);return!Number.isFinite(t)||t<=0?null:t}function hM(e,t){let n={model:e},r=mM(t);return r!==null&&(n.weight=r),n}function gM(e){let t=Array.isArray(e)?e:[],n=[];for(let e of t){let t=String(e&&e.model||``).trim();t&&n.push(hM(t,e&&e.weight))}return n}function _M(e){switch(String(e||``).toLowerCase()){case`cost`:return`lowest cost`;case`round_robin`:case``:return`round robin`;default:return e}}var vM={round_robin:`Round-robin (rotate across targets; honors weights)`,cost:`Lowest cost (cheapest target per request)`,adaptive:`Adaptive (target chosen by the registered routing extension)`};function yM(e,t){let n=Array.isArray(e)?[...e]:[],r=String(t||``).trim().toLowerCase();return r&&!n.includes(r)&&n.push(r),n.map(e=>({value:e,label:vM[e]||e}))}function bM(e){let t=Array.isArray(e.targets)?e.targets:[],n=t.length>0?t[0]:{},r=t.map(e=>{let t={provider:e.provider||``,model:e.model||``};return e.weight&&(t.weight=e.weight),t});return{name:e.source,target_provider:n.provider||``,target_model:n.model||``,targets:r,strategy:e.strategy||``,session_affinity:e.session_affinity!==!1,description:e.description||``,slowdown:e.slowdown==null?null:Number(e.slowdown),enabled:e.enabled!==!1,managed:!!e.managed,valid:!!e.valid,resolved_model:e.resolved_model||``,provider_type:e.provider_type||``,user_paths:Array.isArray(e.user_paths)?e.user_paths:[]}}function xM(e){let t=Array.isArray(e)?e:[],n=[],r=[];for(let e of t)!e||typeof e!=`object`||(e.kind===`redirect`?n.push(bM(e)):e.kind===`policy`&&r.push({selector:e.source,provider_name:e.provider_name||``,model:e.model||``,user_paths:Array.isArray(e.user_paths)?e.user_paths:[],description:e.description||``,slowdown:e.slowdown==null?null:Number(e.slowdown),enabled:e.enabled!==!1,managed:!!e.managed,scope_kind:e.scope_kind||``}));return{aliases:n,policies:r}}function SM(e){if(!e)return`—`;let t=Array.isArray(e.targets)?e.targets:[];return t.length>1?t.length+` targets · `+_M(e.strategy):e.resolved_model?e.resolved_model:e.target_provider?e.target_provider+`/`+e.target_model:e.target_model||`—`}function CM(e){return e?e.enabled===!1?`is-disabled`:e.valid?`is-valid`:`is-invalid`:`is-invalid`}function wM(e){return e?e.enabled===!1?`Disabled`:e.valid?`Active`:`Invalid`:`Invalid`}function TM(e){return Array.isArray(e)&&e.length>0&&e.indexOf(`/`)===-1}function EM(e,t){return!t||!e?``:e.effective_enabled===!1?`is-disabled`:TM(e.user_paths)?`is-restricted`:`is-enabled`}function DM(e){if(!e)return``;let t=[];e.effective_enabled===!1&&t.push(e.default_enabled===!1?`Disabled by default`:`Disabled`);let n=Array.isArray(e.user_paths)?e.user_paths:[];return n.length>0&&t.push(`Allowed for `+n.join(`, `)),t.join(` · `)}function OM({models:e,aliases:t,virtualModelsAvailable:n,activeCategory:r}){let i=Array.isArray(e)?e:[],a=Array.isArray(t)?t:[],o=new Map;if(n)for(let e of a){let t=cM(e&&e.name);!t||e.enabled===!1||!e.valid||o.set(t,e)}let s=new Map,c=i.map(e=>{let t=lM(e),n=null;for(let t of dM(e))s.has(t)||s.set(t,e),!n&&o.has(t)&&(n=o.get(t));let r=e&&e.access?e.access:null;return{key:`model:`+t,display_name:t,secondary_name:``,provider_name:e.provider_name||``,provider_type:e.provider_type||``,model:e.model,selector:e.selector||``,is_alias:!1,alias:null,access:r,masking_alias:n,has_virtual_model:!!(n||r&&r.override),alias_state_class:``,alias_state_text:``}});if(!n)return c;for(let e of a){let t=s.get(cM(e&&e.name));if(e&&e.enabled!==!1&&e.valid&&t)continue;let n=null;for(let t of fM(e))if(n=s.get(t)||null,n)break;!n&&r&&r!==`all`||c.push({key:`alias:`+e.name,display_name:e.name,secondary_name:SM(e),provider_name:n&&n.provider_name||``,provider_type:n?n.provider_type||e.provider_type||``:e.provider_type||``,model:n?n.model:{id:e.name,object:`model`},selector:``,is_alias:!0,alias:e,access:null,masking_alias:null,source_model_exists:!!t,has_virtual_model:!0,alias_state_class:CM(e),alias_state_text:wM(e)})}return c.sort((e,t)=>e.is_alias===t.is_alias?String(e.display_name||``).localeCompare(String(t.display_name||``)):e.is_alias?-1:1)}function kM(e,t){if(!t)return e;let n=String(t).toLowerCase();return e.filter(e=>[e.display_name,e.secondary_name,e.provider_name,e.provider_type,e.model&&e.model.owned_by,e.alias&&e.alias.description,e.alias&&e.alias_state_text,e.model&&e.model.metadata&&e.model.metadata.modes?e.model.metadata.modes.join(`,`):``,e.model&&e.model.metadata&&e.model.metadata.categories?e.model.metadata.categories.join(`,`):``].some(e=>String(e||``).toLowerCase().includes(n)))}function AM(e,t){return String(e||``).trim()||String(t||``).trim()||`Unassigned`}function jM(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return!r||r===n?``:r}function MM(e){let t=String(e||``).trim();return t?t+`/`:``}function NM(e){let t=Array.isArray(e)?e:[],n=t.filter(e=>e&&!e.is_alias).length,r=t.filter(e=>e&&e.is_alias).length,i=[];return n>0&&i.push(n+(n===1?` model`:` models`)),r>0&&i.push(r+(r===1?` alias`:` aliases`)),i.join(` · `)}function PM(e,t,n){let r=String(t||``).trim(),i=String(n||``).trim();for(let t of Array.isArray(e)?e:[]){let e=String(t&&t.provider_name||``).trim(),n=String(t&&t.provider_type||``).trim();if(!(r&&e!==r)&&!(!r&&i&&n!==i)&&t&&t.access)return t.access.default_enabled!==!1}return!0}function FM(e){for(let t of Array.isArray(e)?e:[])if(t&&t.access)return t.access.default_enabled!==!1;return!0}function IM(e,t){let n=String(t||``).trim();if(!n)return null;for(let t of Array.isArray(e)?e:[])if(String(t&&t.selector||``).trim()===n)return t;return null}function LM(e,t,n,r){let i=MM(t),a=r&&r.get(`/`)||null,o=i&&r&&r.get(i)||null,s=PM(e,t,n),c=o||a,l=c&&Array.isArray(c.user_paths)?Array.from(new Set(c.user_paths)).sort():[];return{selector:i,default_enabled:s,effective_enabled:c?c.enabled!==!1:s,user_paths:l,override:o}}function RM(e,t,n){if(!Array.isArray(e)||e.length===0)return[];let r=new Map;for(let e of Array.isArray(n)?n:[]){let t=String(e&&e.selector||``).trim();t&&r.set(t,e)}let i=[],a=new Map;for(let t of e){if(t&&t.is_alias){i.push(t);continue}let e=String(t&&t.provider_name||``).trim(),n=String(t&&t.provider_type||``).trim(),r=`provider-group:`+(e||n||`unassigned`);a.has(r)||a.set(r,{key:r,provider_name:e,provider_type:n,display_name:AM(e,n),type_label:jM(e,n),rows:[]});let o=a.get(r);!o.provider_name&&e&&(o.provider_name=e),!o.provider_type&&n&&(o.provider_type=n),o.display_name=AM(o.provider_name,o.provider_type),o.type_label=jM(o.provider_name,o.provider_type),o.rows.push(t)}let o=Array.from(a.values()).map(e=>{let n=LM(t,e.provider_name,e.provider_type,r);return{...e,access:n,access_summary:DM(n),item_count_label:NM(e.rows)}}).sort((e,t)=>String(e.display_name||``).localeCompare(String(t.display_name||``)));return i.length>0&&o.unshift({key:`virtual-model-group`,is_virtual_models:!0,provider_name:``,provider_type:``,display_name:`Virtual models`,type_label:``,rows:i,access:{selector:``},access_summary:``,item_count_label:NM(i)}),o}function zM(e,t){let n=IM(t,`/`),r=FM(e),i=n&&Array.isArray(n.user_paths)?n.user_paths:[];return{key:`scope-global`,is_alias:!1,display_name:`all providers and models`,access:{selector:`/`,default_enabled:r,effective_enabled:n?n.enabled!==!1:r,user_paths:i,override:n}}}function BM(e){return e?String(e.access&&e.access.selector||``).trim()||String(e.override_selector||``).trim()||lM(e):``}function VM(e){if(!e)return[];let t=[];return e.is_alias?t.push(`alias-row`,CM(e.alias)):e.has_virtual_model&&t.push(`alias-row`,`is-valid`),!e.is_alias&&e.masking_alias&&t.push(`masked-model-row`),!e.is_alias&&e.access&&e.access.effective_enabled===!1&&t.push(`model-access-disabled-row`),t}function HM(e){return!!(e&&e.is_alias&&e.alias&&e.alias.name&&!e.alias.managed)}function UM(e){return!!(e&&!e.is_alias&&e.masking_alias&&e.masking_alias.name&&!e.masking_alias.managed)}function WM(e){return e&&e.is_alias&&e.alias&&e.alias.name?`alias-row-`+String(e.alias.name).replace(/[^a-zA-Z0-9_-]+/g,`-`):``}function GM(e){return e?e.is_alias?!!(e.alias&&e.alias.managed):!!(e.access&&e.access.override&&e.access.override.managed||e.masking_alias&&e.masking_alias.managed):!1}function KM(e){return!!(e&&e.override)}function qM(e){return e?`table-action-btn-active`:``}function JM(e,t){let n=`Edit `+String(e||`model access`);return t?n+` (virtual model exists)`:n}function YM(){return{source:``,target_model:``,target_weight:1,targets:[],strategy:`round_robin`,session_affinity:!0,user_paths:``,description:``,slowdown:``,enabled:!0}}function XM(e){return String(e&&e.target_model||``).trim()!==``}function ZM(e){return String(e&&e.target_model||``).trim()?!0:gM(e&&e.targets).length>0}function QM(e){if(ZM(e))return!0;let t=String(e&&e.source||``).trim();return!!t&&t!==`/`&&!t.endsWith(`/`)}function $M(e){return!!e&&Array.isArray(e.targets)&&e.targets.length>0}function eN(e){return $M(e)&&String(e&&e.strategy||``).toLowerCase()!==`cost`}function tN(e){let t=Array.isArray(e.targets)?e.targets:[];if(t.length>0){let n=t.shift();e.target_model=n.model||``,e.target_weight=n.weight||1;return}e.target_model=``,e.target_weight=1}function nN(e){let t=Array.isArray(e&&e.targets)?e.targets:[];return t.length>0?{primaryModel:pM(t[0]),primaryWeight:t[0].weight||1,extraTargets:t.slice(1).map(e=>({model:pM(e),weight:e.weight||1}))}:{primaryModel:e&&e.target_provider?e.target_provider+`/`+e.target_model:e&&e.target_model||``,primaryWeight:1,extraTargets:[]}}function rN(e){return String(e||``).split(/\r?\n|,/).map(e=>String(e||``).trim()).filter(Boolean)}function iN(e,t,n){let r=String(e&&e.source||``).trim(),i=String(e&&e.target_model||``).trim(),a=gM(e&&e.targets),o=ZM(e),s=String(t||``).trim(),c=n===`edit`&&!!s&&r!==s,l={source:r,user_paths:rN(e&&e.user_paths),description:String(e&&e.description||``).trim(),enabled:!!(e&&e.enabled)},u=e&&e.slowdown;if(u!==``&&u!=null){let e=Number(u);Number.isFinite(e)&&(l.slowdown=e)}if(c&&(l.old_source=s),o){let t=[];if(i&&t.push(hM(i,e.target_weight)),t.push(...a),t.length>1){let n=e.strategy||`round_robin`;l.targets=n===`cost`?t.map(e=>({model:e.model})):t,l.strategy=n,e&&e.session_affinity===!1&&(l.session_affinity=!1)}else l.target_model=t[0].model}return{payload:l,source:r,isRedirect:o,isRename:c}}function aN(e){let t={source:e.name,description:String(e.description||``).trim(),user_paths:Array.isArray(e.user_paths)?e.user_paths:[],enabled:e.enabled===!1};if(e.slowdown!=null){let n=Number(e.slowdown);Number.isFinite(n)&&(t.slowdown=n)}let n=Array.isArray(e.targets)?e.targets:[];return n.length>1?(t.strategy=e.strategy||`round_robin`,e.session_affinity===!1&&(t.session_affinity=!1),t.targets=t.strategy===`cost`?n.map(e=>({model:pM(e)})):n.map(e=>hM(pM(e),e.weight))):n.length===1?t.target_model=pM(n[0]):t.target_model=e.target_provider?e.target_provider+`/`+e.target_model:e.target_model,t}function oN(e,t,n){let r=n||{},i=r.effective_enabled===!1,a=t&&Array.isArray(t.user_paths)?t.user_paths:[],o=String(t&&t.description||``).trim(),s=!!(t&&t.slowdown!=null),c=Number(s?t.slowdown:0),l={};o&&(l.description=o),s&&Number.isFinite(c)&&(l.slowdown=c);let u=`PUT`,d;return i===!1?d={source:e,enabled:!1,user_paths:a,...l}:t&&a.length===0&&!o&&!s&&r.default_enabled!==!1?(u=`DELETE`,d={source:e}):d={source:e,enabled:!0,user_paths:a,...l},{method:u,payload:d,desired:i}}function sN(e,t,n){let r=Math.max(1,Number(t||75)),i=Math.min(n,e+r);return{limit:i,rendering:iOM({models:Hf.models,aliases:this.aliases,virtualModelsAvailable:this.virtualModelsAvailable,activeCategory:Hf.activeCategory}));get displayModels(){return R(this.#T)}set displayModels(e){M(this.#T,e)}#E=A(()=>RM(this.displayModels,Hf.models,this.modelOverrideViews));get displayModelGroups(){return R(this.#E)}set displayModelGroups(e){M(this.#E,e)}#D=A(()=>kM(this.displayModels,Hf.filter));get filteredDisplayModels(){return R(this.#D)}set filteredDisplayModels(e){M(this.#D,e)}#O=A(()=>{let e=this.filteredDisplayModels,t=Math.max(0,Math.min(Number(this.modelRenderLimit||0),e.length));return!Hf.filter&&t>=this.displayModels.length?this.displayModelGroups:RM(e.slice(0,t),Hf.models,this.modelOverrideViews)});get filteredDisplayModelGroups(){return R(this.#O)}set filteredDisplayModelGroups(e){M(this.#O,e)}#k=A(()=>zM(Hf.models,this.modelOverrideViews));get globalScopeRow(){return R(this.#k)}set globalScopeRow(e){M(this.#k,e)}modelsBusy(){return!!(Hf.loading||this.modelsRendering)}modelLoadingText(){if(Hf.loading)return this.displayModels.length>0?`Refreshing models...`:`Loading models...`;let e=this.filteredDisplayModels.length;return`Rendering models... `+Math.min(Number(this.modelRenderLimit||0),e)+` / `+e}restartModelRendering(e){let t=++this.#a,n=cN(this.modelRenderBatchSize,e);this.modelRenderLimit=n.limit,this.modelsRendering=n.rendering,n.rendering&&this.#A(t)}stopModelRendering(){this.#a++,this.modelsRendering=!1}#A(e){let t=()=>{if(e!==this.#a)return;let t=sN(this.modelRenderLimit,this.modelRenderBatchSize,this.filteredDisplayModels.length);this.modelRenderLimit=t.limit,this.modelsRendering=t.rendering,t.rendering&&this.#A(e)};typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>setTimeout(t,0)):setTimeout(t,0)}async fetchVirtualModels(){this.aliasLoading=!0,this.aliasError=``;try{let e=await bd(`/admin/virtual-models`,{label:`virtual models`});if(e.status===503){this.virtualModelsAvailable=!1,this.aliases=[],this.modelOverrideViews=[];return}if(e.stale)return;if(this.virtualModelsAvailable=!0,!e.ok){this.aliases=[],this.modelOverrideViews=[];return}let{aliases:t,policies:n}=xM(e.data);this.aliases=t,this.modelOverrideViews=n}catch(e){console.error(`Failed to fetch virtual models:`,e),this.aliases=[],this.modelOverrideViews=[],this.aliasError=`Unable to load virtual models.`}finally{this.aliasLoading=!1}}qualifiedModelName(e){return lM(e)}findModelOverrideView(e){return IM(this.modelOverrideViews,e)}hasGlobalModelOverride(){return!!this.findModelOverrideView(`/`)}findExistingAliasByName(e){let t=cM(e);if(!t)return null;for(let e of this.aliases)if(cM(e&&e.name)===t)return e;return null}findConcreteModelByName(e){let t=cM(e);if(!t)return null;for(let e of Hf.models)if(dM(e).has(t))return e;return null}rowToggleEnabled(e){return e?e.is_alias?e.alias&&e.alias.enabled!==!1:!!(e.access&&e.access.effective_enabled!==!1):!1}rowToggleLabel(e){return this.rowTogglingKey&&this.rowTogglingKey===e.key?`Updating...`:this.rowToggleRestricted(e)?`Restricted`:this.rowToggleEnabled(e)?`Enabled`:`Disabled`}rowToggleRestricted(e){return!!e&&!e.is_alias&&EM(e.access,this.virtualModelsAvailable)===`is-restricted`}rowToggleAriaLabel(e){if(!e)return``;let t=this.rowToggleEnabled(e)?`Disable `:`Enable `,n;return n=e.is_alias?`alias `+String(e.alias&&e.alias.name||``):String(e.display_name||e.access&&e.access.selector||`model`),t+n.trim()}async toggleRowEnabled(e){if(this.virtualModelsAvailable&&!(!e||this.rowTogglingKey===e.key)){if(GM(e)){of.success(`This virtual model is managed by configuration and is read-only.`);return}if(e.is_alias){await this.toggleAliasRow(e);return}await this.toggleModelRow(e)}}async toggleAliasRow(e){let t=e.alias;if(!t||!t.name)return;this.rowTogglingKey=e.key;let n=aN(t);try{let e=await xd(`/admin/virtual-models`,`PUT`,n,{label:`alias state`});if(e.status===503){this.virtualModelsAvailable=!1,of.error(`Virtual models feature is unavailable.`);return}if(e.stale)return;if(!e.ok){of.error(e.status===401?`Authentication required.`:gd(e,`Failed to update alias state.`));return}of.success(n.enabled?`Alias enabled.`:`Alias disabled.`),this.fetchVirtualModels()}catch(e){console.error(`Failed to toggle alias state:`,e),of.error(`Failed to update alias state.`)}finally{this.rowTogglingKey=``}}async toggleModelRow(e){let t=BM(e);if(!t)return;let{method:n,payload:r,desired:i}=oN(t,this.findModelOverrideView(t),e.access||{});this.rowTogglingKey=e.key;try{let e=await xd(`/admin/virtual-models`,n,r,{label:`model access`});if(e.status===503){this.virtualModelsAvailable=!1,of.error(`Virtual models feature is unavailable.`);return}if(!(n===`DELETE`&&e.status===404)){if(e.stale)return;if(!e.ok){of.error(e.status===401?`Authentication required.`:gd(e,`Failed to update model access.`));return}}of.success(i?`Model enabled.`:`Model disabled.`),Promise.all([Hf.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to toggle model access:`,e),of.error(`Failed to update model access.`)}finally{this.rowTogglingKey=``}}async removeAliasRow(e){if(!(e&&e.is_alias&&e.alias&&e.alias.name&&!e.alias.managed)||this.rowDeletingKey)return;let t=String(e.alias.name||``).trim();t&&await this.mutateVirtualModelRow({rowKey:e.key,confirmMessage:`Remove the virtual model alias "`+t+`"?`,method:`DELETE`,payload:{source:t},operation:`virtual model`,failureMessage:`Failed to remove virtual model.`,notice:`Virtual model removed.`,ignoreNotFound:!0})}async removeRedirectRow(e){let t=e&&e.masking_alias;if(!(e&&!e.is_alias&&t&&t.name&&!t.managed)||this.rowDeletingKey)return;let n=String(t.name||``).trim();n&&await this.mutateVirtualModelRow({rowKey:e.key,confirmMessage:`Remove the redirect for "`+n+`"? Other virtual model settings will be preserved.`,method:`PUT`,payload:{source:n,user_paths:Array.isArray(t.user_paths)?t.user_paths:[],description:String(t.description||``).trim(),enabled:t.enabled!==!1,...t.slowdown==null?{}:{slowdown:Number(t.slowdown)}},operation:`virtual model redirect`,failureMessage:`Failed to remove redirect.`,notice:`Redirect removed. Other virtual model settings were preserved.`})}async mutateVirtualModelRow(e){if(!this.rowDeletingKey&&window.confirm(e.confirmMessage)){this.rowDeletingKey=e.rowKey;try{let t=await xd(`/admin/virtual-models`,e.method,e.payload,{label:e.operation});if(t.status===503){this.virtualModelsAvailable=!1,of.error(`Virtual models feature is unavailable.`);return}if(!(e.ignoreNotFound&&t.status===404)){if(t.stale)return;if(!t.ok){of.error(t.status===401?`Authentication required.`:gd(t,e.failureMessage));return}}this.virtualModelsAvailable=!0,of.success(e.notice),Promise.all([Hf.fetchModels(),this.fetchVirtualModels()])}catch(t){console.error(e.failureMessage,t),of.error(e.failureMessage)}finally{this.rowDeletingKey=``}}}addVmTarget(){Array.isArray(this.vmForm.targets)||(this.vmForm.targets=[]),this.vmForm.targets.push({model:``,weight:1})}removeVmTarget(e){Array.isArray(this.vmForm.targets)&&this.vmForm.targets.splice(e,1)}removePrimaryTarget(){tN(this.vmForm)}vmFormHasPrimaryTarget(){return XM(this.vmForm)}vmFormShowStrategy(){return $M(this.vmForm)}vmStrategyOptions(){return yM(Td.virtualModelStrategies(),this.vmForm.strategy)}vmFormShowWeights(){return eN(this.vmForm)}vmFormSupportsSlowdown(){return QM(this.vmForm)}vmFormToggleRestricted(){return!!(this.vmForm&&this.vmForm.enabled)&&TM(rN(this.vmForm.user_paths))}vmFormToggleLabel(){return!this.vmForm||!this.vmForm.enabled?`Disabled`:this.vmFormToggleRestricted()?`Restricted`:`Enabled`}resetVirtualModelForm(){this.vmFormError=``,this.vmFormHelpOpen=!1,this.vmFormUserPathsHelpOpen=!1,this.vmSubmitting=!1,this.vmDeleting=!1,this.vmFormHasExisting=!1,this.vmFormDefaultEnabled=!0,this.vmFormEffectiveEnabled=!0,this.vmFormDisplayName=``,this.vmFormSourceLocked=!1,this.vmFormOriginalSource=``,this.vmFormManaged=!1,this.vmForm=YM()}closeVirtualModelForm(){this.vmFormOpen=!1,this.resetVirtualModelForm()}openVirtualModelCreate(e){this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`create`,this.vmFormSourceLocked=!1,this.vmFormDisplayName=`New virtual model`,e&&e.model&&e.model.id&&(this.vmForm.target_model=lM(e))}openVirtualModelEditAlias(e){if(!e)return;this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!1,this.vmFormHasExisting=!0,this.vmFormManaged=!!e.managed,this.vmFormOriginalSource=e.name||``,this.vmFormDisplayName=e.name||``,this.vmFormDefaultEnabled=FM(Hf.models),this.vmFormEffectiveEnabled=e.enabled!==!1;let{primaryModel:t,primaryWeight:n,extraTargets:r}=nN(e);this.vmForm={source:e.name||``,target_model:t,target_weight:n,targets:r,strategy:e.strategy||`round_robin`,session_affinity:e.session_affinity!==!1,user_paths:(Array.isArray(e.user_paths)?e.user_paths:[]).join(` +`),description:e.description||``,slowdown:e.slowdown??``,enabled:e.enabled!==!1}}openVirtualModelEditModel(e){if(!e||e.is_alias)return;let t=e.access||{},n=t.override||null,r=n&&Array.isArray(n.user_paths)?n.user_paths:Array.isArray(t.user_paths)?t.user_paths:[],i=BM(e);this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!0,this.vmFormHasExisting=!!n,this.vmFormOriginalSource=i;let a=n?n.enabled!==!1:t.effective_enabled!==!1;this.vmFormDefaultEnabled=t.default_enabled!==!1,this.vmFormEffectiveEnabled=a,this.vmFormManaged=!!(n&&n.managed),this.vmFormDisplayName=e.access_display_name||e.display_name||i||``,this.vmForm={source:i,target_model:``,target_weight:``,targets:[],strategy:`round_robin`,user_paths:r.join(` +`),description:n&&n.description?n.description:``,slowdown:n&&n.slowdown!=null?n.slowdown:``,enabled:a}}openGlobalModelOverrideEdit(){let e=this.findModelOverrideView(`/`),t=e&&Array.isArray(e.user_paths)?e.user_paths:[],n=FM(Hf.models);this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!0,this.vmFormHasExisting=!!e,this.vmFormOriginalSource=`/`,this.vmFormDefaultEnabled=n,this.vmFormEffectiveEnabled=e?e.enabled!==!1:n,this.vmFormManaged=!!(e&&e.managed),this.vmFormDisplayName=`All providers and models`,this.vmForm={source:`/`,target_model:``,target_weight:``,targets:[],strategy:`round_robin`,user_paths:t.join(` +`),description:e&&e.description?e.description:``,slowdown:e&&e.slowdown!=null?e.slowdown:``,enabled:e?e.enabled!==!1:n}}openProviderOverrideEdit(e){!e||!e.access||!e.access.selector||this.openVirtualModelEditModel({display_name:e.display_name,access_display_name:`All models in `+e.display_name,provider_name:e.provider_name,provider_type:e.provider_type,access:e.access,override_selector:e.access.selector,is_alias:!1})}async submitVirtualModelForm(){if(this.vmFormManaged){this.vmFormError=`This virtual model is managed by configuration and cannot be edited here.`;return}let{payload:e,source:t,isRedirect:n,isRename:r}=iN(this.vmForm,this.vmFormOriginalSource,this.vmFormMode);if(!t){this.vmFormError=`Source is required.`;return}if(this.vmFormError=``,this.vmFormMode!==`edit`){let e=this.findExistingAliasByName(t),r=e?null:this.findModelOverrideView(t);if(e||r){let n=e?`A virtual model named "`+e.name+`" already exists. Saving will update that virtual model. Continue?`:`An access policy for "`+t+`" already exists. Saving will update that virtual model. Continue?`;if(!window.confirm(n)){this.vmFormError=`Choose a different source or edit the existing virtual model.`;return}}else if(n){let e=this.findConcreteModelByName(t);if(e){let t=lM(e)||String(e.model&&e.model.id||``).trim();if(!window.confirm(`A model named "`+t+`" already exists. Creating this alias will mask that model in the list. Continue?`)){this.vmFormError=`Choose a different source to avoid masking an existing model.`;return}}}}else if(r){let e=(this.aliases||[]).find(e=>e&&e.name===t)||null,r=e?null:this.findModelOverrideView(t);if(e||r){this.vmFormError=`A virtual model for "`+t+`" already exists. Choose a different source.`;return}if(n){let e=this.findConcreteModelByName(t);if(e){let t=lM(e)||String(e.model&&e.model.id||``).trim();if(!window.confirm(`A model named "`+t+`" already exists. Renaming to that name will mask the model in the list. Continue?`)){this.vmFormError=`Choose a different source to avoid masking an existing model.`;return}}}}this.vmSubmitting=!0;try{let t=await xd(`/admin/virtual-models`,`PUT`,e,{label:`virtual model`});if(t.status===503){this.virtualModelsAvailable=!1,this.vmFormError=`Virtual models feature is unavailable.`;return}if(t.stale)return;if(!t.ok){this.vmFormError=t.status===401?`Authentication required.`:gd(t,`Failed to save virtual model.`);return}let r=!n&&t.status===204;this.virtualModelsAvailable=!0,this.closeVirtualModelForm(),of.success(n?`Alias saved.`:r?`Model access reset to inherited/default.`:`Model access saved.`),Promise.all([Hf.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to save virtual model:`,e),this.vmFormError=`Failed to save virtual model.`}finally{this.vmSubmitting=!1}}async deleteVirtualModel(){if(this.vmFormManaged){this.vmFormError=`This virtual model is managed by configuration and cannot be removed here.`;return}let e=String(this.vmForm.source||this.vmFormOriginalSource||``).trim();if(!(!e||!this.vmFormHasExisting)&&window.confirm(`Remove the virtual model for "`+e+`"? This reverts to inherited/default behavior.`)){this.vmDeleting=!0,this.vmFormError=``;try{let t=await xd(`/admin/virtual-models`,`DELETE`,{source:e},{label:`virtual model`});if(t.status===503){this.virtualModelsAvailable=!1,this.vmFormError=`Virtual models feature is unavailable.`;return}if(t.status!==404){if(t.stale)return;if(!t.ok){this.vmFormError=t.status===401?`Authentication required.`:gd(t,`Failed to remove virtual model.`);return}}this.virtualModelsAvailable=!0,this.closeVirtualModelForm(),of.success(`Virtual model removed.`),Promise.all([Hf.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to delete virtual model:`,e),this.vmFormError=`Failed to remove virtual model.`}finally{this.vmDeleting=!1}}}},uN=[{value:`input_per_mtok`,label:`Input $/MTok`,group:`Tokens`},{value:`output_per_mtok`,label:`Output $/MTok`,group:`Tokens`},{value:`cached_input_per_mtok`,label:`Cached input $/MTok`,group:`Tokens`},{value:`cache_write_per_mtok`,label:`Cache write $/MTok`,group:`Tokens`},{value:`reasoning_output_per_mtok`,label:`Reasoning output $/MTok`,group:`Tokens`},{value:`batch_input_per_mtok`,label:`Batch input $/MTok`,group:`Batch`},{value:`batch_output_per_mtok`,label:`Batch output $/MTok`,group:`Batch`},{value:`audio_input_per_mtok`,label:`Audio input $/MTok`,group:`Audio`},{value:`audio_output_per_mtok`,label:`Audio output $/MTok`,group:`Audio`},{value:`per_image`,label:`$/Image`,group:`Image`},{value:`input_per_image`,label:`Input $/Image`,group:`Image`},{value:`per_second_input`,label:`Input $/Second`,group:`Audio/Video`},{value:`per_second_output`,label:`Output $/Second`,group:`Video`},{value:`per_character_input`,label:`$/Character`,group:`Audio`},{value:`per_page`,label:`$/Page`,group:`Utility`},{value:`per_request`,label:`$/Request`,group:`Utility`}];function dN(e){let t=uN.find(t=>t.value===e);return t?t.label:String(e||``).replace(/_/g,` `)}function fN(e){return e&&typeof e==`object`?JSON.parse(JSON.stringify(e)):{}}function pN(e,t){let n=fN(e),r=t&&t.pricing?t.pricing:t;if(!r||typeof r!=`object`)return n;for(let e of uN)r[e.value]!==null&&r[e.value]!==void 0&&(n[e.value]=Number(r[e.value]));return Array.isArray(r.tiers)&&r.tiers.length>0&&(n.tiers=fN(r.tiers)),n}function mN(e){switch(String(e||``).trim()){case`config_yaml`:return`config.yaml`;case`model_registry`:return`Model registry`;default:return e?String(e):`Unknown`}}function hN(e){let t=e&&e.pricing?e.pricing:{},n=e&&e.pricing_sources&&typeof e.pricing_sources==`object`?e.pricing_sources:{},r={};for(let e of uN)t[e.value]!==null&&t[e.value]!==void 0&&(r[e.value]=mN(n[e.value]||`model_registry`));return r}function gN(e){let t=String(e&&e.selector||``).trim();return t?`Dashboard/API override (`+t+`)`:`Dashboard/API override`}function _N(e){let t=String(e||``).trim();return t?t+`/`:``}function vN(e){return String(e&&e.model&&e.model.id||``).trim()}function yN(e){let t=String(e&&e.provider_name||``).trim(),n=vN(e);return t&&n?t+`/`+n:n}function bN(e){return vN(e)}function xN(e){let t=new Map;for(let n of Array.isArray(e)?e:[]){let e=String(n&&n.selector||``).trim();e&&t.set(e,n)}return t}function SN(e,t){let n=String(t||``).trim();return n&&xN(e).get(n)||null}function CN(e,t,n){let r=xN(e),i=yN(t),a=bN(t),o=_N(t&&t.provider_name),s=String(n||``).trim();for(let e of[i,a,o,`/`]){if(!e||e===s)continue;let t=r.get(e);if(t)return t}return null}function wN(e,t,n){let r=e&&e.model&&e.model.metadata?e.model.metadata:null,i=fN(r&&r.pricing),a=hN(r),o=CN(t,e,n),s=o&&o.pricing?o.pricing:null;if(s){let e=gN(o);for(let t of uN)s[t.value]!==null&&s[t.value]!==void 0&&(i[t.value]=Number(s[t.value]),a[t.value]=e);Array.isArray(s.tiers)&&s.tiers.length>0&&(i.tiers=fN(s.tiers),a.tiers=e)}return{pricing:i,sources:a}}function TN(e,t){let n=e&&e.pricing?e.pricing:{},r=[];for(let e of uN)n[e.value]!==null&&n[e.value]!==void 0&&r.push({id:t(),field:e.value,value:String(n[e.value])});return r}function EN(e,t){let n=new Set;for(let r of Array.isArray(e)?e:[]){if(t&&r.id===t)continue;let e=String(r.field||``).trim();e&&n.add(e)}return n}function DN(e,t){let n=EN(e,t&&t.id);return uN.filter(e=>e.value===(t&&t.field)||!n.has(e.value))}function ON(e,t){let n={},r=new Set;for(let t of Array.isArray(e)?e:[]){let e=String(t.field||``).trim();if(!e)return{error:`Choose a price type for every row.`};if(r.has(e))return{error:`Each price type can only be used once.`};r.add(e);let i=String(t.value||``).trim();if(i===``)return{error:`Enter a value for `+dN(e)+`.`};let a=Number(i);if(!Number.isFinite(a)||a<0)return{error:`Pricing values must be numbers greater than or equal to 0.`};n[e]=a}let i=Array.isArray(t)?t:[];return i.length>0&&(n.tiers=fN(i)),Object.keys(n).length===0?{error:`Add at least one pricing field before saving.`}:{pricing:n}}function kN(e,t,n){let r=e||{},i=t||{},a=n||{},o=pN(r,a);return uN.map(e=>{let t=a[e.value]!==null&&a[e.value]!==void 0,n=r[e.value]!==null&&r[e.value]!==void 0;return{field:e.value,label:e.label,value:o[e.value],source:t?`Form/API value`:n?i[e.value]||`Model registry`:`Unset`}}).filter(e=>e.source!==`Unset`||e.value!==void 0)}var AN=new class{#e=j(!0);get modelPricingOverridesAvailable(){return R(this.#e)}set modelPricingOverridesAvailable(e){M(this.#e,e,!0)}#t=j(N([]));get modelPricingOverrideViews(){return R(this.#t)}set modelPricingOverrideViews(e){M(this.#t,e,!0)}#n=j(``);get modelPricingOverrideError(){return R(this.#n)}set modelPricingOverrideError(e){M(this.#n,e,!0)}#r=j(!1);get modelPricingOverrideFormOpen(){return R(this.#r)}set modelPricingOverrideFormOpen(e){M(this.#r,e,!0)}#i=j(!1);get modelPricingOverrideSubmitting(){return R(this.#i)}set modelPricingOverrideSubmitting(e){M(this.#i,e,!0)}#a=j(!1);get modelPricingOverrideFormHasExistingOverride(){return R(this.#a)}set modelPricingOverrideFormHasExistingOverride(e){M(this.#a,e,!0)}#o=j(``);get modelPricingOverrideFormDisplayName(){return R(this.#o)}set modelPricingOverrideFormDisplayName(e){M(this.#o,e,!0)}#s=j(``);get modelPricingOverrideFormScope(){return R(this.#s)}set modelPricingOverrideFormScope(e){M(this.#s,e,!0)}#c=j(N([]));get modelPricingOverrideFormScopeOptions(){return R(this.#c)}set modelPricingOverrideFormScopeOptions(e){M(this.#c,e,!0)}#l=j(null);get modelPricingOverrideFormRow(){return R(this.#l)}set modelPricingOverrideFormRow(e){M(this.#l,e,!0)}#u=j(null);get modelPricingOverrideFormBasePricing(){return R(this.#u)}set modelPricingOverrideFormBasePricing(e){M(this.#u,e,!0)}#d=j(null);get modelPricingOverrideFormBasePricingSources(){return R(this.#d)}set modelPricingOverrideFormBasePricingSources(e){M(this.#d,e,!0)}#f=j(N([]));get modelPricingOverrideFormPreservedTiers(){return R(this.#f)}set modelPricingOverrideFormPreservedTiers(e){M(this.#f,e,!0)}#p=j(N([]));get modelPricingOverrideRows(){return R(this.#p)}set modelPricingOverrideRows(e){M(this.#p,e,!0)}#m=j(N({selector:``}));get modelPricingOverrideForm(){return R(this.#m)}set modelPricingOverrideForm(e){M(this.#m,e,!0)}_modelPricingOverrideRowID=0;pricingFieldOptions(){return uN}pricingFieldLabel(e){return dN(e)}async fetchModelPricingOverrides(){this.modelPricingOverrideError=``;try{let e=await bd(`/admin/model-pricing-overrides`,{label:`model pricing overrides`});if(e.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideViews=[];return}if(e.stale)return;if(this.modelPricingOverridesAvailable=!0,!e.ok){this.modelPricingOverrideViews=[];return}this.modelPricingOverrideViews=Array.isArray(e.data)?e.data:[]}catch(e){console.error(`Failed to fetch model pricing overrides:`,e),this.modelPricingOverrideViews=[],this.modelPricingOverrideError=`Unable to load model pricing overrides.`}}findModelPricingOverrideView(e){return SN(this.modelPricingOverrideViews,e)}hasGlobalPricingOverride(){return!!this.findModelPricingOverrideView(`/`)}hasProviderPricingOverride(e){return!!this.findModelPricingOverrideView(_N(e&&e.provider_name))}hasModelPricingOverride(e){return!!this.findModelPricingOverrideView(yN(e))}modelPricingButtonClass(e){return e?`table-action-btn-active`:``}modelPricingButtonLabel(e,t){let n=`Edit `+String(e||`model pricing`);return t?n+` (override exists)`:n}modelRowPricing(e){return wN(e,this.modelPricingOverrideViews).pricing}openGlobalPricingOverrideEdit(){this.openModelPricingOverrideForm({displayName:`All providers and models`,selector:`/`,scope:`global`,scopeOptions:[{value:`global`,label:`All providers and models`,selector:`/`}],row:null})}openProviderPricingOverrideEdit(e){let t=_N(e&&e.provider_name);t&&this.openModelPricingOverrideForm({displayName:`All models in `+(e.display_name||e.provider_name||t),selector:t,scope:`provider`,scopeOptions:[{value:`provider`,label:`Provider`,selector:t}],row:null})}openModelPricingOverrideEdit(e){if(!e||e.is_alias)return;let t=yN(e),n=bN(e),r=[{value:`exact`,label:`This provider and model`,selector:t}];n&&n!==t&&r.push({value:`model`,label:`This model across providers`,selector:n}),this.openModelPricingOverrideForm({displayName:e.display_name||t,selector:t,scope:`exact`,scopeOptions:r,row:e})}openModelPricingOverrideForm(e){let t=e||{};this.modelPricingOverrideFormOpen=!0,this.modelPricingOverrideError=``,this.modelPricingOverrideFormDisplayName=t.displayName||t.selector||`Pricing`,this.modelPricingOverrideFormScope=t.scope||``,this.modelPricingOverrideFormScopeOptions=Array.isArray(t.scopeOptions)?t.scopeOptions:[],this.modelPricingOverrideFormRow=t.row||null,this.modelPricingOverrideForm={selector:t.selector||``},this.loadModelPricingOverrideFormSelector(t.selector||``)}loadModelPricingOverrideFormSelector(e){e=String(e||``).trim();let t=this.findModelPricingOverrideView(e);this.modelPricingOverrideFormHasExistingOverride=!!t,this.modelPricingOverrideRows=TN(t,()=>this.nextModelPricingOverrideRowID()),this.modelPricingOverrideFormPreservedTiers=t&&t.pricing&&Array.isArray(t.pricing.tiers)?fN(t.pricing.tiers):[],this.modelPricingOverrideRows.length===0&&this.modelPricingOverrideFormPreservedTiers.length===0&&this.addModelPricingOverrideRow();let n=this.modelPricingOverrideFormRow,r=n?wN(n,this.modelPricingOverrideViews,e):{pricing:{},sources:{}};this.modelPricingOverrideFormBasePricing=r.pricing,this.modelPricingOverrideFormBasePricingSources=r.sources}setModelPricingOverrideScope(e){this.modelPricingOverrideFormScope=e;let t=this.modelPricingOverrideFormScopeOptions.find(t=>t.value===e);t&&(this.modelPricingOverrideForm.selector=t.selector,this.loadModelPricingOverrideFormSelector(t.selector))}nextModelPricingOverrideRowID(){return this._modelPricingOverrideRowID=(this._modelPricingOverrideRowID||0)+1,`pricing-row-`+this._modelPricingOverrideRowID}availablePricingFieldOptions(e){return DN(this.modelPricingOverrideRows,e)}addModelPricingOverrideRow(){let e=EN(this.modelPricingOverrideRows),t=uN.find(t=>!e.has(t.value))||uN[0];t&&this.modelPricingOverrideRows.push({id:this.nextModelPricingOverrideRowID(),field:t.value,value:``})}removeModelPricingOverrideRow(e){this.modelPricingOverrideRows=this.modelPricingOverrideRows.filter(t=>t.id!==e.id),this.modelPricingOverrideRows.length===0&&this.modelPricingOverrideFormPreservedTiers.length===0&&this.addModelPricingOverrideRow()}modelPricingOverridePayload(){return ON(this.modelPricingOverrideRows,this.modelPricingOverrideFormPreservedTiers)}modelPricingOverrideDraftPricing(){let e=this.modelPricingOverridePayload();return e&&e.pricing?e.pricing:{}}modelPricingEffectivePreviewRows(){return kN(this.modelPricingOverrideFormBasePricing,this.modelPricingOverrideFormBasePricingSources,this.modelPricingOverrideDraftPricing())}closeModelPricingOverrideForm(){this.modelPricingOverrideFormOpen=!1,this.modelPricingOverrideSubmitting=!1,this.modelPricingOverrideError=``,this.modelPricingOverrideFormHasExistingOverride=!1,this.modelPricingOverrideFormDisplayName=``,this.modelPricingOverrideFormScope=``,this.modelPricingOverrideFormScopeOptions=[],this.modelPricingOverrideFormRow=null,this.modelPricingOverrideFormBasePricing=null,this.modelPricingOverrideFormBasePricingSources=null,this.modelPricingOverrideFormPreservedTiers=[],this.modelPricingOverrideRows=[],this.modelPricingOverrideForm={selector:``}}async submitModelPricingOverrideForm(){let e=String(this.modelPricingOverrideForm.selector||``).trim();if(!e){this.modelPricingOverrideError=`Model pricing selector is required.`;return}let t=this.modelPricingOverridePayload();if(t.error){this.modelPricingOverrideError=t.error;return}let n={selector:e,...t};this.modelPricingOverrideSubmitting=!0,this.modelPricingOverrideError=``;try{let e=await xd(`/admin/model-pricing-overrides`,`PUT`,n,{label:`model pricing override`});if(e.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideError=`Model pricing overrides feature is unavailable.`;return}if(e.stale)return;if(!e.ok){this.modelPricingOverrideError=e.status===401?`Authentication required.`:gd(e,`Failed to save model pricing.`);return}this.modelPricingOverridesAvailable=!0,this.closeModelPricingOverrideForm(),of.success(`Model pricing saved.`),this.fetchModelPricingOverrides()}catch(e){console.error(`Failed to save model pricing override:`,e),this.modelPricingOverrideError=`Failed to save model pricing.`}finally{this.modelPricingOverrideSubmitting=!1}}async deleteModelPricingOverride(){let e=String(this.modelPricingOverrideForm.selector||``).trim();if(!(!e||!this.modelPricingOverrideFormHasExistingOverride)&&window.confirm(`Remove the model pricing override for "`+e+`"?`)){this.modelPricingOverrideSubmitting=!0,this.modelPricingOverrideError=``;try{let t=await xd(`/admin/model-pricing-overrides`,`DELETE`,{selector:e},{label:`model pricing override`});if(t.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideError=`Model pricing overrides feature is unavailable.`;return}if(t.status!==404){if(t.stale)return;if(!t.ok){this.modelPricingOverrideError=t.status===401?`Authentication required.`:gd(t,`Failed to remove model pricing override.`);return}}this.modelPricingOverridesAvailable=!0,this.closeModelPricingOverrideForm(),of.success(`Model pricing override removed.`),this.fetchModelPricingOverrides()}catch(e){console.error(`Failed to delete model pricing override:`,e),this.modelPricingOverrideError=`Failed to remove model pricing override.`}finally{this.modelPricingOverrideSubmitting=!1}}}},jN=B(``);function MN(e,t){O(t,!0);var n=jN();let r;var i=I(P(n),2),a=P(i,!0);D(i),D(n),L((e,i,o)=>{r=G(n,1,`alias-toggle`,null,r,e),n.disabled=lN.rowTogglingKey===t.row.key||!lN.virtualModelsAvailable,K(n,`aria-label`,i),H(a,o)},[()=>({enabled:lN.rowToggleEnabled(t.row),restricted:lN.rowToggleRestricted(t.row)}),()=>lN.rowToggleAriaLabel(t.row),()=>lN.rowToggleLabel(t.row)]),z(`click`,n,()=>lN.toggleRowEnabled(t.row)),V(e,n),k()}Br([`click`]);var NN=B(`
`);function PN(e,t){O(t,!0);var n=NN(),r=P(n),i=e=>{MN(e,{get row(){return lN.globalScopeRow}})};U(r,e=>{lN.virtualModelsAvailable&&e(i)});var a=I(r,2),o=e=>{{let t=A(()=>AN.modelPricingButtonLabel(`global model pricing`,AN.hasGlobalPricingOverride())),n=A(()=>AN.modelPricingButtonClass(AN.hasGlobalPricingOverride()));wk(e,{get label(){return R(t)},get class(){return`table-icon-btn ${R(n)??``}`},onclick:()=>AN.openGlobalPricingOverrideEdit(),children:(e,t)=>{J(e,{get icon(){return Ul},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(a,e=>{AN.modelPricingOverridesAvailable&&e(o)});var s=I(a,2),c=e=>{{let t=A(()=>JM(`global model access`,lN.hasGlobalModelOverride())),n=A(()=>qM(lN.hasGlobalModelOverride()));wk(e,{get label(){return R(t)},get class(){return`table-icon-btn ${R(n)??``}`},onclick:()=>lN.openGlobalModelOverrideEdit(),children:(e,t)=>{J(e,{get icon(){return su},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(s,e=>{lN.virtualModelsAvailable&&e(c)}),D(n),V(e,n),k()}function FN(e){return String(e&&(e.primary_model||e.source)||``).trim()}function IN(e){return Array.isArray(e&&e.fallback_models)?e.fallback_models:Array.isArray(e&&e.targets)?e.targets:[]}function LN(e){return Array.isArray(e)?e.map(e=>({...e,source:FN(e),targets:IN(e)})):[]}function RN(e){let t=IN(e);return t.length===0?`-`:t.join(`, `)}function zN(e){return e&&e.enabled===!1?`Off`:e&&e.managed?`Config`:`On`}function BN(e,t){let n=String(t||``).trim();return n&&(Array.isArray(e)?e:[]).find(e=>FN(e)===n)||null}function VN(e,t){if(!t||t.is_alias)return!1;let n=BN(e,lM(t));return!!(n&&n.enabled!==!1&&IN(n).length>0)}function HN(e,t){return VN(e,t)?`table-action-btn-failover-active`:``}function UN(e,t){let n=`Edit failover for `+(t&&t.display_name?t.display_name:`model`);return VN(e,t)?n+` (active)`:n}function WN(e){let t=[e&&e.target_model];return(Array.isArray(e&&e.targets)?e.targets:[]).forEach(e=>t.push(e&&e.model)),t.map(e=>String(e||``).trim()).filter(Boolean)}function GN(e){let t=Array.isArray(e)?e.map(e=>String(e||``).trim()).filter(Boolean):[];return{target_model:t[0]||``,targets:t.slice(1).map(e=>({model:e}))}}function KN(e){return{primary_model:String(e&&e.source||``).trim(),fallback_models:WN(e),enabled:!(e&&e.enabled===!1)}}function qN(e){return FN(e)}function JN(e){let t={};return(Array.isArray(e)?e:[]).forEach(e=>{let n=qN(e);n&&(t[n]=!0)}),t}function YN(e,t){let n=qN(t);return!!(n&&e&&e[n])}function XN(e,t){return(Array.isArray(e)?e:[]).filter(e=>YN(t,e))}function ZN(e,t){let n=Array.isArray(e)?e:[];return n.length>0&&XN(n,t).length===n.length}function QN(e){return[FN(e),IN(e).join(` `)].join(` `).toLowerCase()}function $N(e,t){let n=Array.isArray(e)?e:[],r=String(t||``).trim().toLowerCase();return r?n.filter(e=>QN(e).includes(r)):n}function eP(e){return{primary_model:FN(e),fallback_models:IN(e).map(e=>String(e||``).trim()).filter(Boolean),enabled:!!(e&&e.enabled!==!1)}}function tP(){return{source:``,target_model:``,targets:[],enabled:!0}}var Q=new class{#e=j(!0);get failoverAvailable(){return R(this.#e)}set failoverAvailable(e){M(this.#e,e,!0)}#t=j(N([]));get failoverRules(){return R(this.#t)}set failoverRules(e){M(this.#t,e,!0)}#n=j(!1);get failoverLoading(){return R(this.#n)}set failoverLoading(e){M(this.#n,e,!0)}#r=j(!1);get failoverSaving(){return R(this.#r)}set failoverSaving(e){M(this.#r,e,!0)}#i=j(!1);get failoverGenerating(){return R(this.#i)}set failoverGenerating(e){M(this.#i,e,!0)}#a=j(``);get failoverError(){return R(this.#a)}set failoverError(e){M(this.#a,e,!0)}#o=j(N([]));get failoverGeneratedRules(){return R(this.#o)}set failoverGeneratedRules(e){M(this.#o,e,!0)}#s=j(!1);get failoverDraftsOpen(){return R(this.#s)}set failoverDraftsOpen(e){M(this.#s,e,!0)}#c=j(N({}));get failoverDraftSelections(){return R(this.#c)}set failoverDraftSelections(e){M(this.#c,e,!0)}#l=j(``);get failoverDraftFilter(){return R(this.#l)}set failoverDraftFilter(e){M(this.#l,e,!0)}#u=j(!1);get failoverDraftSaving(){return R(this.#u)}set failoverDraftSaving(e){M(this.#u,e,!0)}#d=j(!1);get failoverFormOpen(){return R(this.#d)}set failoverFormOpen(e){M(this.#d,e,!0)}#f=j(`create`);get failoverFormMode(){return R(this.#f)}set failoverFormMode(e){M(this.#f,e,!0)}#p=j(!1);get failoverFormManaged(){return R(this.#p)}set failoverFormManaged(e){M(this.#p,e,!0)}#m=j(N(tP()));get failoverForm(){return R(this.#m)}set failoverForm(e){M(this.#m,e,!0)}failoverEnabled(){return Td.booleanFlag(`FAILOVER_ENABLED`,!0)}async fetchFailoverRules(){if(!this.failoverEnabled()){this.failoverAvailable=!1,this.failoverRules=[],this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!1,this.failoverError=``,this.failoverLoading=!1;return}this.failoverLoading=!0,this.failoverError=``;try{let e=await bd(`/admin/failover`,{label:`failover mappings`});if(e.status===503){this.failoverAvailable=!1,this.failoverRules=[];return}if(e.stale)return;if(this.failoverAvailable=!0,!e.ok){this.failoverRules=[];return}this.failoverRules=LN(e.data)}catch(e){console.error(`Failed to fetch failover mappings:`,e),this.failoverRules=[],this.failoverError=`Unable to load failover mappings.`}finally{this.failoverLoading=!1}}resetFailoverForm(){this.failoverFormMode=`create`,this.failoverFormManaged=!1,this.failoverForm=tP()}openFailoverCreate(){this.resetFailoverForm(),this.failoverFormOpen=!0,this.focusFailoverEditor()}openFailoverEdit(e){if(!e)return;this.resetFailoverForm(),this.failoverFormMode=`edit`,this.failoverFormOpen=!0,this.failoverFormManaged=!!e.managed;let t=this.failoverPrimaryModel(e),n=this.failoverTargets(e);this.failoverForm={source:t,target_model:n[0]||``,targets:n.slice(1).map(e=>({model:e})),enabled:e.enabled!==!1},this.focusFailoverEditor()}openFailoverForModel(e){if(!e||e.is_alias)return;let t=this.qualifiedModelName(e),n=this.failoverRules.find(e=>this.failoverPrimaryModel(e)===t);if(n){this.openFailoverEdit(n);return}this.resetFailoverForm(),this.failoverFormMode=`create`,this.failoverFormOpen=!0,this.failoverForm.source=t,this.focusFailoverEditor()}closeFailoverForm(){this.failoverFormOpen=!1}closeFailoverDraftsModal(){this.failoverDraftSaving||(this.failoverDraftsOpen=!1)}failoverFormTargets(){return WN(this.failoverForm)}setFailoverFormTargets(e){let t=GN(e);this.failoverForm.target_model=t.target_model,this.failoverForm.targets=t.targets}addFailoverTarget(){Array.isArray(this.failoverForm.targets)||(this.failoverForm.targets=[]),this.failoverForm.targets.push({model:``}),this.focusFailoverEditor()}removeFailoverTarget(e){if(!Array.isArray(this.failoverForm.targets)){this.failoverForm.targets=[];return}this.failoverForm.targets.splice(e,1)}removePrimaryFailoverTarget(){let e=Array.isArray(this.failoverForm.targets)?this.failoverForm.targets:[];if(e.length>0){let t=e.shift();this.failoverForm.target_model=t&&t.model?t.model:``,this.failoverForm.targets=e;return}this.failoverForm.target_model=``}failoverRulePayload(){return KN(this.failoverForm)}async submitFailoverForm(){if(this.failoverSaving||this.failoverGenerating||this.failoverFormManaged)return;let e=this.failoverRulePayload();if(!e.primary_model){this.failoverError=`Primary model is required.`;return}if(e.enabled&&e.fallback_models.length===0){this.failoverError=`Add at least one failover target.`;return}this.failoverSaving=!0,this.failoverError=``;try{let t=await xd(`/admin/failover`,`PUT`,e,{label:`failover mapping`});if(t.stale)return;if(!t.ok){this.failoverError=`Failed to save failover mapping.`;return}of.success(`Failover mapping saved.`),this.closeFailoverForm(),this.fetchFailoverRules()}catch(e){console.error(`Failed to save failover mapping:`,e),this.failoverError=`Failed to save failover mapping.`}finally{this.failoverSaving=!1}}async deleteFailoverRule(e){let t=String(e&&this.failoverPrimaryModel(e)||this.failoverForm.source||``).trim();if(!(!t||this.failoverSaving||this.failoverGenerating)&&confirm(`Remove failover mapping for "`+t+`"?`)){this.failoverSaving=!0,this.failoverError=``;try{let e=await xd(`/admin/failover`,`DELETE`,{primary_model:t},{label:`failover mapping`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to remove failover mapping.`;return}of.success(`Failover mapping removed.`),this.closeFailoverForm(),this.fetchFailoverRules()}catch(e){console.error(`Failed to remove failover mapping:`,e),this.failoverError=`Failed to remove failover mapping.`}finally{this.failoverSaving=!1}}}async generateFailoverForForm(){if(this.failoverGenerating||this.failoverSaving||this.failoverFormManaged)return;let e=String(this.failoverForm.source||``).trim();if(!e){this.failoverError=`Primary model is required.`;return}this.failoverGenerating=!0,this.failoverError=``;try{let t=await xd(`/admin/failover/generate`,`POST`,{primary_model:e},{label:`failover generation`});if(t.stale)return;if(!t.ok){this.failoverError=`Failed to generate failover mapping.`;return}let n=LN(t.data),r=n.find(t=>this.failoverPrimaryModel(t)===e)||n[0]||null,i=this.failoverTargets(r);if(i.length===0){this.failoverError=`No failover suggestions were generated for this model.`;return}this.setFailoverFormTargets(i),of.success(`Generated `+i.length+` fallback model`+(i.length===1?`.`:`s.`)),this.focusFailoverEditor()}catch(e){console.error(`Failed to generate failover mapping:`,e),this.failoverError=`Failed to generate failover mapping.`}finally{this.failoverGenerating=!1}}openFailoverResetDialog(){Wd.open({title:`Remove failover models`,titleId:`failoverResetDialogTitle`,inputId:`failover-reset-confirmation`,message:`Remove every dashboard-managed failover mapping. Configuration-managed mappings remain active.`,requiredText:`remove`,confirmLabel:`Remove Failover`,icon:Eu,dialogClass:`budget-reset-dialog`,onConfirm:async()=>{await this.resetFailoverRules(),this.failoverError&&(Wd.error=this.failoverError)}})}async resetFailoverRules(){if(!this.failoverSaving){this.failoverSaving=!0,this.failoverError=``;try{let e=await xd(`/admin/failover/reset`,`POST`,void 0,{label:`failover removal`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to remove failover mappings.`;return}this.failoverRules=LN(e.data),this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!1,of.success(`Dashboard-managed failover mappings removed.`),Wd.close()}catch(e){console.error(`Failed to remove failover mappings:`,e),this.failoverError=`Failed to remove failover mappings.`}finally{this.failoverSaving=!1}}}async generateFailoverRules(){if(!(this.failoverGenerating||this.failoverDraftSaving)){this.failoverGenerating=!0,this.failoverError=``,this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!0;try{let e=await xd(`/admin/failover/generate`,`POST`,void 0,{label:`failover generation`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to generate failover mappings.`;return}this.failoverGeneratedRules=LN(e.data),this.selectAllFailoverDrafts(this.failoverGeneratedRules)}catch(e){console.error(`Failed to generate failover mappings:`,e),this.failoverError=`Failed to generate failover mappings.`}finally{this.failoverGenerating=!1}}}failoverDraftKey(e){return qN(e)}selectAllFailoverDrafts(e){this.failoverDraftSelections=JN(e)}failoverDraftSelected(e){return YN(this.failoverDraftSelections,e)}setFailoverDraftSelected(e,t){let n=this.failoverDraftKey(e);n&&(this.failoverDraftSelections={...this.failoverDraftSelections,[n]:!!t})}selectedFailoverDrafts(){return XN(this.failoverGeneratedRules,this.failoverDraftSelections)}selectedFailoverDraftCount(){return this.selectedFailoverDrafts().length}failoverDraftCountLabel(){return this.selectedFailoverDraftCount()+` / `+this.failoverGeneratedRules.length+` selected`}allFailoverDraftsSelected(){return ZN(this.failoverGeneratedRules,this.failoverDraftSelections)}toggleAllFailoverDrafts(){if(!(this.failoverDraftSaving||this.failoverGenerating||this.failoverGeneratedRules.length===0)){if(this.allFailoverDraftsSelected()){this.failoverDraftSelections={};return}this.selectAllFailoverDrafts(this.failoverGeneratedRules)}}failoverDraftSearchText(e){return QN(e)}filteredFailoverDrafts(){return $N(this.failoverGeneratedRules,this.failoverDraftFilter)}failoverDraftPayload(e){return eP(e)}async saveSelectedFailoverDrafts(){if(this.failoverDraftSaving||this.failoverGenerating)return;let e=this.selectedFailoverDrafts();if(e.length===0){this.failoverError=`Select at least one failover draft.`;return}this.failoverDraftSaving=!0,this.failoverError=``;try{for(let t of e){let e=this.failoverDraftPayload(t);if(!e.primary_model||e.fallback_models.length===0){this.failoverError=`Generated failover draft is missing model data.`;return}let n=await xd(`/admin/failover`,`PUT`,e,{label:`failover mapping`});if(n.stale)return;if(!n.ok){this.failoverError=`Failed to save failover mapping.`;return}}of.success(`Saved `+e.length+` failover mapping`+(e.length===1?`.`:`s.`)),this.failoverDraftsOpen=!1,this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.fetchFailoverRules()}catch(e){console.error(`Failed to save generated failover mappings:`,e),this.failoverError=`Failed to save failover mappings.`}finally{this.failoverDraftSaving=!1}}focusFailoverEditor(){setTimeout(()=>{let e=document.querySelector(`[data-failover-editor]`),t=e&&e.querySelector?e.querySelector(`[data-modal-autofocus], input:not([disabled]), textarea:not([disabled]), button:not([disabled])`):null;t&&typeof t.focus==`function`&&t.focus({preventScroll:!0})},0)}failoverTargetLabel(e){return RN(e)}failoverPrimaryModel(e){return FN(e)}failoverTargets(e){return IN(e)}findFailoverMapping(e){return BN(this.failoverRules,e)}hasActiveFailoverMapping(e){return VN(this.failoverRules,e)}failoverButtonClass(e){return HN(this.failoverRules,e)}failoverButtonLabel(e){return UN(this.failoverRules,e)}normalizeFailoverRules(e){return LN(e)}failoverRuleStatus(e){return zN(e)}qualifiedModelName(e){return lM(e)}},nP=B(``),rP=B(``),iP=B(`Config`),aP=B(`
Targets
`),oP=B(``),sP=B(`
Redirects to
`),cP=B(`
Slowdown
`),lP=B(` `),uP=B(`
`),dP=B(`
`),fP=B(`
`);function pP(e,t){O(t,!0);let n=A(()=>AN.modelRowPricing(t.row)),r=A(()=>t.row.is_alias?t.row.alias&&t.row.alias.slowdown:t.row.masking_alias&&t.row.masking_alias.slowdown!=null?t.row.masking_alias.slowdown:t.row.access&&t.row.access.override&&t.row.access.override.slowdown),i=A(()=>Number(R(r)==null?0:R(r)));var a=fP(),o=P(a),s=P(o),c=P(s),l=P(c),u=P(l,!0);D(l);var d=I(l,2),f=e=>{V(e,nP())};U(d,e=>{t.row.is_alias&&e(f)});var p=I(d,2),m=e=>{V(e,rP())};U(p,e=>{!t.row.is_alias&&t.row.masking_alias&&e(m)});var h=I(p,2),g=e=>{V(e,iP())},_=A(()=>GM(t.row));U(h,e=>{R(_)&&e(g)}),D(c);var v=I(c,2),y=e=>{var n=aP(),r=I(P(n)),i=P(r,!0);D(r),D(n),L(()=>H(i,t.row.secondary_name)),V(e,n)};U(v,e=>{t.row.is_alias&&e(y)});var b=I(v,2),x=e=>{var n=sP(),r=I(P(n)),i=P(r,!0);D(r);var a=I(r,2),o=e=>{var n=oP();L(e=>{K(n,`aria-label`,lN.rowDeletingKey===t.row.key?`Removing redirect for `+t.row.display_name:`Remove redirect for `+t.row.display_name),K(n,`title`,lN.rowDeletingKey===t.row.key?`Removing redirect for `+t.row.display_name:`Remove redirect for `+t.row.display_name),n.disabled=e},[()=>!!lN.rowDeletingKey]),z(`click`,n,()=>lN.removeRedirectRow(t.row)),V(e,n)},s=A(()=>lN.virtualModelsAvailable&&UM(t.row));U(a,e=>{R(s)&&e(o)}),D(n),L(e=>H(i,e),[()=>SM(t.row.masking_alias)]),V(e,n)};U(b,e=>{!t.row.is_alias&&t.row.masking_alias&&e(x)});var S=I(b,2),C=e=>{var t=cP(),n=I(P(t)),r=P(n);D(n),D(t),L(()=>H(r,`+${R(i)??``}× inference time`)),V(e,t)};U(S,e=>{R(i)>0&&e(C)}),D(s),D(o);var w=I(o);W(w,17,()=>t.columns,ii,(e,r)=>{var i=lP(),a=P(i,!0);D(i),L(e=>{G(i,1,Ni(R(r).class),`svelte-1iynym`),H(a,e)},[()=>R(r).value(t.row,R(n))]),V(e,i)});var T=I(w),E=P(T),ee=e=>{var n=uP(),r=P(n);MN(r,{get row(){return t.row}});var i=I(r,2),a=e=>{{let n=A(()=>lN.rowDeletingKey===t.row.key?`Removing alias `+t.row.alias.name:`Remove alias `+t.row.alias.name),r=A(()=>!!lN.rowDeletingKey);wk(e,{get label(){return R(n)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>lN.removeAliasRow(t.row),get disabled(){return R(r)},children:(e,t)=>{J(e,{get icon(){return Eu},class:`table-icon-svg`})},$$slots:{default:!0}})}},o=A(()=>lN.virtualModelsAvailable&&HM(t.row));U(i,e=>{R(o)&&e(a)});var s=I(i,2),c=e=>{{let n=A(()=>`Edit alias `+t.row.alias.name);wk(e,{get label(){return R(n)},class:`table-icon-btn table-action-btn-active`,onclick:()=>lN.openVirtualModelEditAlias(t.row.alias),children:(e,t)=>{J(e,{get icon(){return su},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(s,e=>{lN.virtualModelsAvailable&&e(c)}),D(n),V(e,n)},te=e=>{var n=dP(),r=P(n);MN(r,{get row(){return t.row}});var i=I(r,2),a=e=>{{let n=A(()=>AN.modelPricingButtonLabel(`model pricing for `+t.row.display_name,AN.hasModelPricingOverride(t.row))),r=A(()=>AN.modelPricingButtonClass(AN.hasModelPricingOverride(t.row)));wk(e,{get label(){return R(n)},get class(){return`table-icon-btn ${R(r)??``}`},onclick:()=>AN.openModelPricingOverrideEdit(t.row),children:(e,t)=>{J(e,{get icon(){return Ul},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(i,e=>{AN.modelPricingOverridesAvailable&&e(a)});var o=I(i,2),s=e=>{{let n=A(()=>Q.failoverButtonLabel(t.row)),r=A(()=>Q.failoverButtonClass(t.row));wk(e,{get label(){return R(n)},get class(){return`table-icon-btn ${R(r)??``}`},onclick:()=>Q.openFailoverForModel(t.row),children:(e,t)=>{J(e,{get icon(){return Su},class:`table-icon-svg`})},$$slots:{default:!0}})}},c=A(()=>Q.failoverAvailable&&Q.failoverEnabled());U(o,e=>{R(c)&&e(s)});var l=I(o,2),u=e=>{{let n=A(()=>Z.rateLimitGaugeTitle(t.row.display_name,Z.rateLimitGaugeClassForModel(t.row))),r=A(()=>Z.rateLimitGaugeClassForModel(t.row));wk(e,{get label(){return R(n)},get class(){return`table-icon-btn ${R(r)??``}`},onclick:()=>Z.openRateLimitInspectorForModel(t.row),children:(e,t)=>{J(e,{get icon(){return Yl},class:`table-icon-svg`})},$$slots:{default:!0}})}},d=A(()=>Z.rateLimitsEnabled()&&Z.rateLimitInspectorModelID(t.row));U(l,e=>{R(d)&&e(u)});var f=I(l,2),p=e=>{{let n=A(()=>`Edit redirect for `+t.row.display_name);wk(e,{get label(){return R(n)},class:`table-icon-btn table-action-btn-active`,onclick:()=>lN.openVirtualModelEditAlias(t.row.masking_alias),children:(e,t)=>{J(e,{get icon(){return su},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(f,e=>{lN.virtualModelsAvailable&&t.row.masking_alias&&t.row.masking_alias.name&&e(p)});var m=I(f,2),h=e=>{{let n=A(()=>JM(`model settings for `+t.row.display_name,KM(t.row.access))),r=A(()=>qM(KM(t.row.access)));wk(e,{get label(){return R(n)},get class(){return`table-icon-btn ${R(r)??``}`},onclick:()=>lN.openVirtualModelEditModel(t.row),children:(e,t)=>{J(e,{get icon(){return su},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(m,e=>{lN.virtualModelsAvailable&&!t.row.masking_alias&&e(h)}),D(n),V(e,n)};U(E,e=>{t.row.is_alias?e(ee):e(te,-1)}),D(T),D(a),L((e,n)=>{K(a,`id`,e),G(a,1,n,`svelte-1iynym`),H(u,t.row.display_name)},[()=>WM(t.row)||void 0,()=>Ni(VM(t.row))]),V(e,a),k()}Br([`click`]);var mP={headerLines:[`Modes`],value:e=>(e.model?.metadata?.modes??[]).join(`, `)||`-`};function hP(e,t){return{headerLines:e,class:`col-price`,value:t}}var gP=hP([`Input / Output ($/MTok)`],(e,t)=>gf(t?.input_per_mtok)+` / `+gf(t?.output_per_mtok)),_P={all:[gP],text_generation:[mP,gP,hP([`Cached $/MTok`],(e,t)=>gf(t?.cached_input_per_mtok))],embedding:[hP([`Input`,`$/MTok`],(e,t)=>gf(t?.input_per_mtok))],image:[hP([`$/Image`],(e,t)=>_f(t?.per_image))],audio:[hP([`$/Second`],(e,t)=>_f(t?.per_second_input)),hP([`$/Character`],(e,t)=>_f(t?.per_character_input))],video:[hP([`$/Second (In)`],(e,t)=>_f(t?.per_second_input)),hP([`$/Second (Out)`],(e,t)=>_f(t?.per_second_output))],utility:[hP([`$/Page`],(e,t)=>_f(t?.per_page)),hP([`$/Request`],(e,t)=>_f(t?.per_request))]};function vP(e){return _P[e]||_P.all}function yP(e){return vP(e).length+2}var bP=B(`
`),xP=B(` `,1),SP=B(``),CP=B(` `),wP=B(` `),TP=B(`
`),EP=B(`
`),DP=B(`
Model
`);function OP(e,t){O(t,!0);let n=A(()=>Hf.activeCategory||`all`),r=A(()=>vP(R(n))),i=A(()=>yP(R(n)));var a=DP(),o=P(a),s=P(o),c=P(s),l=I(P(c));W(l,17,()=>R(r),ii,(e,t)=>{var n=SP();W(n,21,()=>R(t).headerLines,ii,(e,t,n)=>{var r=xP(),i=F(r),a=e=>{V(e,bP())};U(i,e=>{n>0&&e(a)});var o=I(i,1,!0);L(()=>H(o,R(t))),V(e,r)}),D(n),L(()=>G(n,1,Ni(R(t).class),`svelte-1911hy6`)),V(e,n)});var u=I(l);PN(P(u),{}),D(u),D(c),D(s),W(I(s),17,()=>lN.filteredDisplayModelGroups,e=>e.key,(e,t)=>{var n=EP(),a=P(n),o=P(a),s=P(o),c=P(s),l=P(c),u=P(l),d=P(u,!0);D(u);var f=I(u,2),p=e=>{var n=CP(),r=P(n,!0);D(n),L(()=>H(r,`(`+R(t).type_label+`)`)),V(e,n)};U(f,e=>{R(t).type_label&&e(p)});var m=I(f,2),h=e=>{var n=wP(),r=P(n,!0);D(n),L(()=>H(r,R(t).item_count_label)),V(e,n)};U(m,e=>{R(t).item_count_label&&e(h)}),D(l);var g=I(l,2),_=e=>{var n=TP(),r=P(n,!0);D(n),L(()=>H(r,R(t).access_summary)),V(e,n)};U(g,e=>{R(t).access_summary&&e(_)}),D(c);var v=I(c,2),y=P(v),b=e=>{MN(e,{get row(){return R(t)}})};U(y,e=>{R(t).access.selector&&e(b)});var x=I(y,2),S=e=>{{let n=A(()=>AN.modelPricingButtonLabel(`provider pricing for `+R(t).display_name,AN.hasProviderPricingOverride(R(t)))),r=A(()=>AN.modelPricingButtonClass(AN.hasProviderPricingOverride(R(t))));wk(e,{get label(){return R(n)},get class(){return`table-icon-btn ${R(r)??``}`},onclick:()=>AN.openProviderPricingOverrideEdit(R(t)),children:(e,t)=>{J(e,{get icon(){return Ul},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(x,e=>{AN.modelPricingOverridesAvailable&&R(t).provider_name&&e(S)});var C=I(x,2),w=e=>{{let n=A(()=>Z.rateLimitGaugeTitle(`provider `+R(t).display_name,Z.rateLimitGaugeClassForProvider(R(t)))),r=A(()=>Z.rateLimitGaugeClassForProvider(R(t)));wk(e,{get label(){return R(n)},get class(){return`table-icon-btn ${R(r)??``}`},onclick:()=>Z.openRateLimitInspectorForProvider(R(t)),children:(e,t)=>{J(e,{get icon(){return Yl},class:`table-icon-svg`})},$$slots:{default:!0}})}},T=A(()=>Z.rateLimitsEnabled()&&R(t).provider_name);U(C,e=>{R(T)&&e(w)});var E=I(C,2),ee=e=>{{let n=A(()=>JM(`provider access for `+R(t).display_name,KM(R(t).access))),r=A(()=>qM(KM(R(t).access)));wk(e,{get label(){return R(n)},get class(){return`table-icon-btn ${R(r)??``}`},onclick:()=>lN.openProviderOverrideEdit(R(t)),children:(e,t)=>{J(e,{get icon(){return su},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(E,e=>{lN.virtualModelsAvailable&&R(t).access.selector&&e(ee)}),D(v),D(s),D(o),D(a),W(I(a),17,()=>R(t).rows,e=>e.key,(e,t)=>{pP(e,{get row(){return R(t)},get columns(){return R(r)}})}),D(n),L(()=>{K(o,`colspan`,R(i)),H(d,R(t).display_name)}),V(e,n)}),D(o),D(a),V(e,a),k()}var kP=B(``);function AP(e,t){let n=q(t,`enabled`,3,!1),r=q(t,`label`,3,``),i=q(t,`disabled`,3,!1),a=q(t,`restricted`,3,!1);var o=kP();let s;var c=I(P(o),2),l=P(c,!0);D(c),D(o),L(()=>{s=G(o,1,`alias-toggle`,null,s,{enabled:n(),restricted:a()}),o.disabled=i(),K(o,`aria-label`,(n()?`Disable `:`Enable `)+r()),H(l,t.text??(n()?`Enabled`:`Disabled`))}),z(`click`,o,function(...e){t.onclick?.apply(this,e)}),V(e,o)}Br([`click`]);var jP=B(``),MP=B(`
`);function NP(e,t){O(t,!0);let n=q(t,`model`,15,``),r=q(t,`weight`,15),i=q(t,`id`,3,void 0),a=q(t,`placeholder`,3,`openai/gpt-4o`),o=q(t,`showRemove`,3,!0);var s=MP(),c=P(s);ea(c);var l=I(c,2),u=e=>{var t=jP();ea(t),L(()=>t.disabled=lN.vmFormManaged),la(t,r),V(e,t)},d=A(()=>lN.vmFormShowWeights());U(l,e=>{R(d)&&e(u)});var f=I(l,2),p=e=>{wk(e,{label:`Remove target`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,get onclick(){return t.onremove},get disabled(){return lN.vmFormManaged},children:(e,t)=>{J(e,{get icon(){return Eu},class:`table-icon-svg`})},$$slots:{default:!0}})};U(f,e=>{o()&&e(p)}),D(s),L(()=>{K(c,`id`,i()),K(c,`placeholder`,a()),c.disabled=lN.vmFormManaged}),la(c,n),V(e,s),k()}var PP=B(`

`),FP=B(`adaptive lets the registered routing extension pick the target per + request.`,1),IP=B(`Add one target to make this a redirect/alias, or two or more to load balance across them, then pick a strategy: round_robin rotates across targets (weight biases the share) and cost always routes to the cheapest available target. Leave Targets empty to make it only an access policy on the Source selector. The selector uses / for all providers and models, for one provider, or for one model. user_paths is - matched against the effective request user_path: the managed API key user_path when present, otherwise the configured user path request header.`,1),MN=B(``),NN=B(`

This virtual model is defined in configuration (config.yaml / VIRTUAL_MODELS) and is read-only here. Edit your configuration to change it.

`),PN=B(``),FN=B(``),IN=B(``),LN=B(`
`,1),RN=B(``),zN=B(`Use / to allow every user path. Use a team path to restrict to that - subtree, or an unused path to make the selector unavailable.`,1),BN=B(``),VN=B(` Adds a fraction of measured inference time: 0.5 adds 50%. Streaming chunks are buffered + matched against the effective request user_path: the managed API key user_path when present, otherwise the configured user path request header.`,1),LP=B(``),RP=B(`

This virtual model is defined in configuration (config.yaml / VIRTUAL_MODELS) and is read-only here. Edit your configuration to change it.

`),zP=B(``),BP=B(``),VP=B(``),HP=B(`
`,1),UP=B(``),WP=B(`Use / to allow every user path. Use a team path to restrict to that + subtree, or an unused path to make the selector unavailable.`,1),GP=B(``),KP=B(` Adds a fraction of measured inference time: 0.5 adds 50%. Streaming chunks are buffered and released on the slowed timeline. Use 0 to override inherited slowdown, or leave empty - to inherit it; active values are 0.1–10.`,1),HN=B(` `),UN=B(`
Targets
`,1);function WN(e,t){O(t,!0);let n=iM;On(()=>{n.vmFormOpen&&bu.ensureLoaded()});{let t=e=>{YT(e,{copyId:`virtual-model-help-copy`,label:`virtual model help`,get open(){return n.vmFormHelpOpen},set open(e){n.vmFormHelpOpen=e},title:e=>{var t=kN(),r=P(t,!0);D(t),L(()=>H(r,n.vmFormDisplayName||n.vmForm.source||`Virtual model`)),V(e,t)},help:e=>{Ve();var t=jN(),n=I(F(t),7),r=e=>{var t=AN();Ve(),V(e,t)},i=A(()=>bu.virtualModelStrategies().includes(`adaptive`));U(n,e=>{R(i)&&e(r)});var a=I(n,8);a.textContent=`{provider_name}/`;var o=I(a,2);o.textContent=`{provider_name}/{model}`,Ve(7),V(e,t)},$$slots:{title:!0,help:!0}})},r=e=>{var t=Xr(),r=F(t),i=e=>{var t=MN();L(()=>t.disabled=n.vmDeleting||n.vmSubmitting),z(`click`,t,()=>n.deleteVirtualModel()),V(e,t)};U(r,e=>{n.vmFormHasExisting&&!n.vmFormManaged&&e(i)}),V(e,t)},i=A(()=>n.vmDeleting||n.vmFormManaged),a=A(()=>n.vmFormMode===`edit`?`Save`:`Create`),o=A(()=>n.vmFormMode===`edit`?cl:il);Ck(e,{get open(){return n.vmFormOpen},ariaLabel:`Virtual model editor`,get error(){return n.vmFormError},get submitting(){return n.vmSubmitting},get submitDisabled(){return R(i)},get submitLabel(){return R(a)},get submitIcon(){return R(o)},onclose:()=>n.closeVirtualModelForm(),onsubmit:()=>n.submitVirtualModelForm(),header:t,extraActions:r,children:(e,t)=>{var r=UN(),i=F(r),a=e=>{V(e,NN())};U(i,e=>{n.vmFormManaged&&e(a)});var o=I(i,2);Tk(o,{id:`virtual-model-source`,label:`Source`,children:(e,t)=>{var r=PN();ea(r),L(()=>r.disabled=n.vmFormSourceLocked||n.vmFormManaged),la(r,()=>n.vmForm.source,e=>n.vmForm.source=e),V(e,r)},$$slots:{default:!0}});var s=I(o,2);W(s,21,()=>Id.models,e=>ij(e),(e,t)=>{var n=FN(),r=P(n,!0);D(n);var i={};L((e,t)=>{H(r,e),i!==(i=t)&&(n.value=(n.__value=t)??``)},[()=>ij(R(t)),()=>ij(R(t))]),V(e,n)}),D(s);var c=I(s,2),l=I(P(c),2);{let e=A(()=>n.vmFormHasPrimaryTarget());ON(l,{id:`virtual-model-target`,get showRemove(){return R(e)},onremove:()=>n.removePrimaryTarget(),get model(){return n.vmForm.target_model},set model(e){n.vmForm.target_model=e},get weight(){return n.vmForm.target_weight},set weight(e){n.vmForm.target_weight=e}})}var u=I(l,2);W(u,17,()=>n.vmForm.targets,ii,(e,t,r)=>{ON(e,{placeholder:`groq/llama`,onremove:()=>n.removeVmTarget(r),get model(){return R(t).model},set model(e){R(t).model=e},get weight(){return R(t).weight},set weight(e){R(t).weight=e}})});var d=I(u,2),f=P(d);J(P(f),{get icon(){return il},class:`form-action-icon`}),Ve(2),D(f),D(d),D(c);var p=I(c,2),m=e=>{var t=LN(),r=F(t);Tk(r,{id:`virtual-model-strategy`,label:`Load-balancing strategy`,children:(e,t)=>{var r=IN();W(r,21,()=>n.vmStrategyOptions(),e=>e.value,(e,t)=>{var n=FN(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(r),L(()=>r.disabled=n.vmFormManaged),Ui(r,()=>n.vmForm.strategy,e=>n.vmForm.strategy=e),V(e,r)},$$slots:{default:!0}});var i=I(r,2),a=P(i),o=P(a);ea(o),Ve(2),D(a),D(i),L(()=>o.disabled=n.vmFormManaged),ua(o,()=>n.vmForm.session_affinity,e=>n.vmForm.session_affinity=e),V(e,t)},h=A(()=>n.vmFormShowStrategy());U(p,e=>{R(h)&&e(m)});var g=I(p,2),_=P(g);YT(_,{copyId:`virtual-model-user-paths-help`,label:`user paths help`,get open(){return n.vmFormUserPathsHelpOpen},set open(e){n.vmFormUserPathsHelpOpen=e},title:e=>{V(e,RN())},help:e=>{Ve();var t=zN();Ve(2),V(e,t)},$$slots:{title:!0,help:!0}});var v=I(_,2);ut(v),K(v,`placeholder`,`/ + to inherit it; active values are 0.1–10.
`,1),qP=B(` `),JP=B(`
Targets
`,1);function YP(e,t){O(t,!0);let n=lN;On(()=>{n.vmFormOpen&&Td.ensureLoaded()});{let t=e=>{eD(e,{copyId:`virtual-model-help-copy`,label:`virtual model help`,get open(){return n.vmFormHelpOpen},set open(e){n.vmFormHelpOpen=e},title:e=>{var t=PP(),r=P(t,!0);D(t),L(()=>H(r,n.vmFormDisplayName||n.vmForm.source||`Virtual model`)),V(e,t)},help:e=>{Ve();var t=IP(),n=I(F(t),7),r=e=>{var t=FP();Ve(),V(e,t)},i=A(()=>Td.virtualModelStrategies().includes(`adaptive`));U(n,e=>{R(i)&&e(r)});var a=I(n,8);a.textContent=`{provider_name}/`;var o=I(a,2);o.textContent=`{provider_name}/{model}`,Ve(7),V(e,t)},$$slots:{title:!0,help:!0}})},r=e=>{var t=Xr(),r=F(t),i=e=>{var t=LP();L(()=>t.disabled=n.vmDeleting||n.vmSubmitting),z(`click`,t,()=>n.deleteVirtualModel()),V(e,t)};U(r,e=>{n.vmFormHasExisting&&!n.vmFormManaged&&e(i)}),V(e,t)},i=A(()=>n.vmDeleting||n.vmFormManaged),a=A(()=>n.vmFormMode===`edit`?`Save`:`Create`),o=A(()=>n.vmFormMode===`edit`?pu:lu);OA(e,{get open(){return n.vmFormOpen},ariaLabel:`Virtual model editor`,get error(){return n.vmFormError},get submitting(){return n.vmSubmitting},get submitDisabled(){return R(i)},get submitLabel(){return R(a)},get submitIcon(){return R(o)},onclose:()=>n.closeVirtualModelForm(),onsubmit:()=>n.submitVirtualModelForm(),header:t,extraActions:r,children:(e,t)=>{var r=JP(),i=F(r),a=e=>{V(e,RP())};U(i,e=>{n.vmFormManaged&&e(a)});var o=I(i,2);AA(o,{id:`virtual-model-source`,label:`Source`,children:(e,t)=>{var r=zP();ea(r),L(()=>r.disabled=n.vmFormSourceLocked||n.vmFormManaged),la(r,()=>n.vmForm.source,e=>n.vmForm.source=e),V(e,r)},$$slots:{default:!0}});var s=I(o,2);W(s,21,()=>Hf.models,e=>lM(e),(e,t)=>{var n=BP(),r=P(n,!0);D(n);var i={};L((e,t)=>{H(r,e),i!==(i=t)&&(n.value=(n.__value=t)??``)},[()=>lM(R(t)),()=>lM(R(t))]),V(e,n)}),D(s);var c=I(s,2),l=I(P(c),2);{let e=A(()=>n.vmFormHasPrimaryTarget());NP(l,{id:`virtual-model-target`,get showRemove(){return R(e)},onremove:()=>n.removePrimaryTarget(),get model(){return n.vmForm.target_model},set model(e){n.vmForm.target_model=e},get weight(){return n.vmForm.target_weight},set weight(e){n.vmForm.target_weight=e}})}var u=I(l,2);W(u,17,()=>n.vmForm.targets,ii,(e,t,r)=>{NP(e,{placeholder:`groq/llama`,onremove:()=>n.removeVmTarget(r),get model(){return R(t).model},set model(e){R(t).model=e},get weight(){return R(t).weight},set weight(e){R(t).weight=e}})});var d=I(u,2),f=P(d);J(P(f),{get icon(){return lu},class:`form-action-icon`}),Ve(2),D(f),D(d),D(c);var p=I(c,2),m=e=>{var t=HP(),r=F(t);AA(r,{id:`virtual-model-strategy`,label:`Load-balancing strategy`,children:(e,t)=>{var r=VP();W(r,21,()=>n.vmStrategyOptions(),e=>e.value,(e,t)=>{var n=BP(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(r),L(()=>r.disabled=n.vmFormManaged),Ui(r,()=>n.vmForm.strategy,e=>n.vmForm.strategy=e),V(e,r)},$$slots:{default:!0}});var i=I(r,2),a=P(i),o=P(a);ea(o),Ve(2),D(a),D(i),L(()=>o.disabled=n.vmFormManaged),ua(o,()=>n.vmForm.session_affinity,e=>n.vmForm.session_affinity=e),V(e,t)},h=A(()=>n.vmFormShowStrategy());U(p,e=>{R(h)&&e(m)});var g=I(p,2),_=P(g);eD(_,{copyId:`virtual-model-user-paths-help`,label:`user paths help`,get open(){return n.vmFormUserPathsHelpOpen},set open(e){n.vmFormUserPathsHelpOpen=e},title:e=>{V(e,UP())},help:e=>{Ve();var t=WP();Ve(2),V(e,t)},$$slots:{title:!0,help:!0}});var v=I(_,2);ut(v),K(v,`placeholder`,`/ /team/alpha -/non-existing`),D(g);var y=I(g,2);Tk(y,{id:`virtual-model-description`,label:`Description`,children:(e,t)=>{var r=BN();ut(r),L(()=>r.disabled=n.vmFormManaged),la(r,()=>n.vmForm.description,e=>n.vmForm.description=e),V(e,r)},$$slots:{default:!0}});var b=I(y,2),x=e=>{Tk(e,{id:`virtual-model-slowdown`,label:`Slowdown (extra inference time)`,children:(e,t)=>{var r=VN(),i=F(r);ea(i),Ve(2),L(()=>i.disabled=n.vmFormManaged),la(i,()=>n.vmForm.slowdown,e=>n.vmForm.slowdown=e),V(e,r)},$$slots:{default:!0}})},S=A(()=>n.vmFormSupportsSlowdown());U(b,e=>{R(S)&&e(x)});var C=I(b,2),w=P(C),T=e=>{var t=HN(),r=P(t,!0);D(t),L(()=>H(r,`Default enabled: `+(n.vmFormDefaultEnabled?`yes`:`no`)+` · Effective now: `+(n.vmFormEffectiveEnabled?`yes`:`no`))),V(e,t)};U(w,e=>{n.vmFormMode===`edit`&&e(T)});var E=I(w,2),ee=P(E);{let e=A(()=>n.vmFormToggleRestricted()),t=A(()=>n.vmFormToggleLabel());TN(ee,{get enabled(){return n.vmForm.enabled},get restricted(){return R(e)},label:`virtual model`,get disabled(){return n.vmFormManaged},get text(){return R(t)},onclick:()=>{n.vmFormManaged||(n.vmForm.enabled=!n.vmForm.enabled)}})}D(E),D(C),L(()=>{f.disabled=n.vmFormManaged,v.disabled=n.vmFormManaged}),z(`click`,f,()=>n.addVmTarget()),la(v,()=>n.vmForm.user_paths,e=>n.vmForm.user_paths=e),V(e,r)},$$slots:{header:!0,extraActions:!0,default:!0}})}k()}Br([`click`]);var GN=B(`

Pricing override

`,1),KN=B(``),qN=B(``),JN=B(``),YN=B(``),XN=B(`
`),ZN=B(`
Tiered pricing exists for this override and will be preserved. Tier editing can be added - without a database migration.
`),QN=B(`
No pricing fields set.
`),$N=B(`
`),eP=B(`

Currency is USD. Saved fields override model registry and config.yaml pricing for this - selector; unset fields continue to inherit.

Price Type USD Source
`,1);function tP(e,t){O(t,!0);let n=TM;Ck(e,{get open(){return n.modelPricingOverrideFormOpen},ariaLabel:`Model pricing editor`,dialogClass:`model-pricing-editor`,get error(){return n.modelPricingOverrideError},get submitting(){return n.modelPricingOverrideSubmitting},submitLabel:`Save Pricing`,onclose:()=>n.closeModelPricingOverrideForm(),onsubmit:()=>n.submitModelPricingOverrideForm(),header:e=>{var t=GN(),r=I(F(t),2),i=P(r,!0);D(r),L(()=>H(i,n.modelPricingOverrideFormDisplayName||n.modelPricingOverrideForm.selector||`Pricing`)),V(e,t)},extraActions:e=>{var t=Xr(),r=F(t),i=e=>{var t=KN();L(()=>t.disabled=n.modelPricingOverrideSubmitting),z(`click`,t,()=>n.deleteModelPricingOverride()),V(e,t)};U(r,e=>{n.modelPricingOverrideFormHasExistingOverride&&e(i)}),V(e,t)},children:(e,t)=>{var r=eP(),i=F(r),a=P(i);Tk(a,{id:`model-pricing-override-selector`,label:`Selector`,children:(e,t)=>{var r=qN();ea(r),la(r,()=>n.modelPricingOverrideForm.selector,e=>n.modelPricingOverrideForm.selector=e),V(e,r)},$$slots:{default:!0}});var o=I(a,2),s=e=>{Tk(e,{id:`model-pricing-override-scope`,label:`Scope`,children:(e,t)=>{var r=YN();W(r,21,()=>n.modelPricingOverrideFormScopeOptions,e=>e.value,(e,t)=>{var n=JN(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(r),z(`change`,r,()=>n.setModelPricingOverrideScope(n.modelPricingOverrideFormScope)),Ui(r,()=>n.modelPricingOverrideFormScope,e=>n.modelPricingOverrideFormScope=e),V(e,r)},$$slots:{default:!0}})};U(o,e=>{n.modelPricingOverrideFormScopeOptions.length>1&&e(s)}),D(i);var c=I(i,4);W(c,21,()=>n.modelPricingOverrideRows,e=>e.id,(e,t,r)=>{var i=XN(),a=P(i),o=P(a),s=I(o,2);W(s,21,()=>n.availablePricingFieldOptions(R(t)),e=>e.value,(e,t)=>{var n=JN(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).group+` - `+R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(s),D(a);var c=I(a,2),l=P(c),u=I(l,2);ea(u),D(c);var d=I(c,2);{let e=A(()=>`Remove `+n.pricingFieldLabel(R(t).field));yO(d,{get label(){return R(e)},class:`table-action-btn-danger table-icon-btn pricing-override-remove-row`,onclick:()=>n.removeModelPricingOverrideRow(R(t)),children:(e,t)=>{J(e,{get icon(){return Ol},class:`table-icon-svg`})},$$slots:{default:!0}})}D(i),L(()=>{K(o,`for`,`pricing-type-`+R(t).id),K(s,`id`,`pricing-type-`+R(t).id),K(l,`for`,`pricing-value-`+R(t).id),K(u,`id`,`pricing-value-`+R(t).id)}),Ui(s,()=>R(t).field,e=>R(t).field=e),la(u,()=>R(t).value,e=>R(t).value=e),V(e,i)}),D(c);var l=I(c,2),u=P(l);J(P(u),{get icon(){return il},class:`form-action-icon`}),Ve(2),D(u),D(l);var d=I(l,2),f=e=>{V(e,ZN())};U(d,e=>{n.modelPricingOverrideFormPreservedTiers.length>0&&e(f)});var p=I(d,2),m=I(P(p),2),h=e=>{V(e,QN())},g=A(()=>n.modelPricingEffectivePreviewRows().length===0);U(m,e=>{R(g)&&e(h)}),W(I(m,2),17,()=>n.modelPricingEffectivePreviewRows(),e=>e.field,(e,t)=>{var n=$N(),r=P(n),i=P(r,!0);D(r);var a=I(r,2),o=P(a,!0);D(a);var s=I(a,2),c=P(s,!0);D(s),D(n),L(e=>{H(i,R(t).label),H(o,e),H(c,R(t).source)},[()=>R(t).value===null||R(t).value===void 0?`-`:dd(Number(R(t).value))]),V(e,n)}),D(p),z(`click`,u,()=>n.addModelPricingOverrideRow()),V(e,r)},$$slots:{header:!0,extraActions:!0,default:!0}}),k()}Br([`click`,`change`]);var nP=B(`

Failover mapping

`,1),rP=B(``),iP=B(`

This failover mapping is defined in configuration and is read-only here.

`),aP=B(``),oP=B(`
`),sP=B(`
`,1),cP=B(`
`);function lP(e,t){O(t,!0);{let t=e=>{var t=nP(),n=I(F(t),2),r=P(n,!0);D(n),L(()=>H(r,Q.failoverForm.source||`Failover`)),V(e,t)},n=e=>{var t=Xr(),n=F(t),r=e=>{var t=rP();L(()=>t.disabled=Q.failoverSaving||Q.failoverGenerating),z(`click`,t,()=>Q.deleteFailoverRule()),V(e,t)};U(n,e=>{Q.failoverFormMode===`edit`&&!Q.failoverFormManaged&&e(r)}),V(e,t)},r=A(()=>Q.failoverGenerating||Q.failoverFormManaged);Ck(e,{get open(){return Q.failoverFormOpen},ariaLabel:`Failover editor`,get error(){return Q.failoverError},get submitting(){return Q.failoverSaving},get submitDisabled(){return R(r)},submitLabel:`Save`,onclose:()=>Q.closeFailoverForm(),onsubmit:()=>Q.submitFailoverForm(),header:t,extraActions:n,children:(e,t)=>{var n=cP(),r=P(n),i=e=>{V(e,iP())};U(r,e=>{Q.failoverFormManaged&&e(i)});var a=I(r,2);W(a,21,()=>Id.models,ii,(e,t)=>{var n=aP(),r=P(n,!0);D(n);var i={};L((e,t)=>{H(r,e),i!==(i=t)&&(n.value=(n.__value=t)??``)},[()=>ij(R(t)),()=>ij(R(t))]),V(e,n)}),D(a);var o=I(a,2);Tk(o,{id:`failover-target`,label:`Fallback models`,children:(e,t)=>{var n=sP(),r=F(n),i=P(r),a=P(i);ea(a);var o=I(a,2),s=e=>{yO(e,{label:`Remove fallback model`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Q.removePrimaryFailoverTarget(),get disabled(){return Q.failoverFormManaged},children:(e,t)=>{J(e,{get icon(){return xl},class:`table-icon-svg`})},$$slots:{default:!0}})};U(o,e=>{Q.failoverForm.target_model&&e(s)}),D(i),W(I(i,2),17,()=>Q.failoverForm.targets,ii,(e,t,n)=>{var r=oP(),i=P(r);ea(i),yO(I(i,2),{label:`Remove fallback model`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Q.removeFailoverTarget(n),get disabled(){return Q.failoverFormManaged},children:(e,t)=>{J(e,{get icon(){return xl},class:`table-icon-svg`})},$$slots:{default:!0}}),D(r),L(()=>i.disabled=Q.failoverFormManaged),la(i,()=>R(t).model,e=>R(t).model=e),V(e,r)}),D(r);var c=I(r,2),l=P(c);J(P(l),{get icon(){return il},class:`form-action-icon`}),Ve(2),D(l);var u=I(l,2),d=P(u);J(d,{get icon(){return El},class:`form-action-icon`});var f=I(d,2),p=P(f,!0);D(f),D(u),D(c),L(e=>{a.disabled=Q.failoverFormManaged,l.disabled=Q.failoverFormManaged||Q.failoverGenerating||Q.failoverSaving,u.disabled=e,H(p,Q.failoverGenerating?`Generating...`:`Generate automatically`)},[()=>Q.failoverFormManaged||Q.failoverGenerating||Q.failoverSaving||!Q.failoverEnabled()]),la(a,()=>Q.failoverForm.target_model,e=>Q.failoverForm.target_model=e),z(`click`,l,()=>Q.addFailoverTarget()),z(`click`,u,()=>Q.generateFailoverForForm()),V(e,n)},$$slots:{default:!0}});var s=I(o,2),c=P(s);TN(P(c),{get enabled(){return Q.failoverForm.enabled},label:`failover mapping`,get disabled(){return Q.failoverFormManaged},onclick:()=>{Q.failoverFormManaged||(Q.failoverForm.enabled=!Q.failoverForm.enabled)}}),D(c),D(s),D(n),V(e,n)},$$slots:{header:!0,extraActions:!0,default:!0}})}k()}Br([`click`]);var uP=B(` `),dP=B(`
`),fP=B(``),pP=B(`
`),mP=B(`

No failover suggestions were generated.

`),hP=B(`

No failover drafts match the filter.

`),gP=B(``),_P=B(``);function vP(e,t){O(t,!0),Nu(e,{get open(){return Q.failoverDraftsOpen},variant:`editor`,onclose:()=>Q.closeFailoverDraftsModal(),children:(e,t)=>{var n=_P(),r=P(n),i=I(P(r),2),a=P(i),o=e=>{var t=uP(),n=P(t,!0);D(t),L(e=>H(n,e),[()=>Q.failoverDraftCountLabel()]),V(e,t)};U(a,e=>{Q.failoverGeneratedRules.length>0&&e(o)}),ku(I(a,2),{label:`Close failover drafts`,onclick:()=>Q.closeFailoverDraftsModal(),get disabled(){return Q.failoverDraftSaving}}),D(i),D(r);var s=I(r,2),c=e=>{_O(e,{label:`Generating failover drafts...`,class:`failover-drafts-loading`})};U(s,e=>{Q.failoverGenerating&&e(c)});var l=I(s,2),u=e=>{var t=dP(),n=P(t);SD(n,{placeholder:`Filter failover drafts...`,label:`Filter failover drafts`,get value(){return Q.failoverDraftFilter},set value(e){Q.failoverDraftFilter=e}});var r=I(n,2),i=P(r);J(i,{get icon(){return Mc},class:`form-action-icon`});var a=I(i,2),o=P(a,!0);D(a),D(r),D(t),L(e=>{r.disabled=Q.failoverDraftSaving,H(o,e)},[()=>Q.allFailoverDraftsSelected()?`Deselect all`:`Select all`]),z(`click`,r,()=>Q.toggleAllFailoverDrafts()),V(e,t)};U(l,e=>{!Q.failoverGenerating&&Q.failoverGeneratedRules.length>0&&e(u)});var d=I(l,2),f=e=>{var t=pP();W(t,21,()=>Q.filteredFailoverDrafts(),e=>`failover-draft:`+Q.failoverPrimaryModel(e),(e,t)=>{var n=fP(),r=P(n);ea(r);var i=I(r,2),a=P(i),o=P(a,!0);D(a);var s=I(a,2),c=P(s,!0);D(s),D(i),D(n),L((e,t,n,i)=>{na(r,e),r.disabled=Q.failoverDraftSaving,K(r,`aria-label`,t),H(o,n),H(c,i)},[()=>Q.failoverDraftSelected(R(t)),()=>`Select failover draft for `+Q.failoverPrimaryModel(R(t)),()=>Q.failoverPrimaryModel(R(t)),()=>Q.failoverTargetLabel(R(t))]),z(`change`,r,e=>Q.setFailoverDraftSelected(R(t),e.currentTarget.checked)),V(e,n)}),D(t),V(e,t)},p=A(()=>!Q.failoverGenerating&&Q.filteredFailoverDrafts().length>0);U(d,e=>{R(p)&&e(f)});var m=I(d,2),h=e=>{V(e,mP())};U(m,e=>{!Q.failoverGenerating&&Q.failoverGeneratedRules.length===0&&!Q.failoverError&&e(h)});var g=I(m,2),_=e=>{V(e,hP())},v=A(()=>!Q.failoverGenerating&&Q.failoverGeneratedRules.length>0&&Q.filteredFailoverDrafts().length===0);U(g,e=>{R(v)&&e(_)});var y=I(g,2),b=e=>{var t=gP(),n=P(t,!0);D(t),L(()=>H(n,Q.failoverError)),V(e,t)};U(y,e=>{Q.failoverError&&e(b)});var x=I(y,2),S=P(x),C=I(S,2),w=P(C);J(w,{get icon(){return cl},class:`form-action-icon`});var T=I(w,2),E=P(T,!0);D(T),D(C),D(x),D(n),L(e=>{S.disabled=Q.failoverDraftSaving,C.disabled=e,H(E,Q.failoverDraftSaving?`Saving...`:`Save selected`)},[()=>Q.failoverGenerating||Q.failoverDraftSaving||Q.selectedFailoverDraftCount()===0]),z(`click`,S,()=>Q.closeFailoverDraftsModal()),z(`click`,C,()=>Q.saveSelectedFailoverDrafts()),V(e,n)},$$slots:{default:!0}}),k()}Br([`click`,`change`]);var yP=B(`
Rate limit management is unavailable.
`),bP=B(` Add`,1),xP=B(`

`),SP=B(`

No rules.

`),CP=B(` Edit`,1),wP=B(`
`),TP=B(`
`),EP=B(`

`),DP=B(``),OP=B(``);function kP(e,t){O(t,!0);function n(){Y.dialogOpen||Z.closeRateLimitInspector()}Nu(e,{get open(){return Z.rateLimitInspectorOpen},variant:`editor`,onclose:n,children:(e,t)=>{var n=OP(),r=P(n),i=P(r),a=I(P(i),2),o=P(a),s=P(o,!0);D(o),D(a),D(i),ku(I(i,2),{label:`Close rate limits inspector`,onclick:()=>Z.closeRateLimitInspector()}),D(r);var c=I(r,2),l=e=>{_O(e,{label:`Loading rate limits...`})},u=e=>{V(e,yP())},d=e=>{var t=Xr();W(F(t),17,()=>Z.rateLimitInspectorSections(),e=>e.key,(e,t)=>{var n=EP(),r=P(n),i=P(r),a=P(i,!0);D(i);var o=I(i,2);{let e=A(()=>`Add `+R(t).title.toLowerCase());yO(o,{get label(){return R(e)},class:`budget-action-btn`,onclick:()=>Z.openRateLimitFormFromInspector(R(t).scope,R(t).subject),children:(e,t)=>{var n=bP();J(F(n),{get icon(){return il},class:`table-icon-svg`}),Ve(2),V(e,n)},$$slots:{default:!0}})}D(r);var s=I(r,2),c=e=>{var n=xP(),r=P(n,!0);D(n),L(()=>H(r,R(t).hint)),V(e,n)};U(s,e=>{R(t).hint&&e(c)});var l=I(s,2),u=e=>{V(e,SP())},d=e=>{var n=TP();W(n,21,()=>R(t).items,e=>Z.rateLimitKey(e),(e,t)=>{var n=wP(),r=P(n),i=P(r),a=P(i),o=P(a,!0);D(a);var s=I(a,2),c=P(s),l=P(c);{let e=A(()=>Z.rateLimitIsConcurrent(R(t))?xc:bl);J(l,{get icon(){return R(e)},class:`budget-period-icon`})}var u=I(l,2),d=P(u,!0);D(u),D(c),D(s);var f=I(s,2),p=P(f),m=P(p),h=P(m,!0);D(m);var g=I(m,2),_=P(g,!0);D(g),D(p);var v=I(p,2),y=P(v),b=e=>{yO(e,{label:`Edit rate limit`,class:`budget-action-btn`,onclick:()=>Z.openRateLimitFormFromInspector(null,null,R(t)),children:(e,t)=>{var n=CP();J(F(n),{get icon(){return nl},class:`budget-action-icon`}),Ve(2),V(e,n)},$$slots:{default:!0}})},x=A(()=>!Z.rateLimitIsReadOnly(R(t)));U(y,e=>{R(x)&&e(b)}),D(v),D(f),D(i),D(r),D(n),L((e,t,r,i,a,s,c,l)=>{G(n,1,`budget-row ${e??``}`),Bi(n,t),K(n,`title`,r),H(o,i),H(d,a),H(h,s),K(g,`title`,c),H(_,l)},[()=>Z.rateLimitPressureClass(R(t)),()=>Z.rateLimitPressureStyle(R(t)),()=>Z.rateLimitPressurePercent(R(t))+`% of the most constrained cap used`,()=>Z.rateLimitSubject(R(t)),()=>Z.rateLimitPeriodLabel(R(t)),()=>Z.rateLimitInspectorSummary(R(t)),()=>Z.rateLimitIsReadOnly(R(t))?`Declared in configuration; read-only in the dashboard`:`Managed via dashboard or admin API`,()=>Z.rateLimitSourceLabel(R(t))]),V(e,n)}),D(n),V(e,n)};U(l,e=>{R(t).items.length===0?e(u):e(d,-1)}),D(n),L(()=>H(a,R(t).title)),V(e,n)}),V(e,t)};U(c,e=>{Z.rateLimitsLoading?e(l):Z.rateLimitsAvailable?e(d,-1):e(u,1)});var f=I(c,2),p=P(f),m=I(p,2),h=e=>{var t=DP();z(`click`,t,()=>{Z.closeRateLimitInspector(),Bl.navigate(`rate-limits`)}),V(e,t)},g=A(()=>Z.rateLimitsEnabled());U(m,e=>{R(g)&&e(h)}),D(f),D(n),L(()=>H(s,Z.rateLimitInspector.title)),z(`click`,p,()=>Z.closeRateLimitInspector()),V(e,n)},$$slots:{default:!0}}),k()}Br([`click`]);var AP=B(`
models
`),jP=B(`
Virtual models feature is unavailable.
`),MP=B(`
`),NP=B(``),PP=B(`
`),FP=B(``),IP=B(`
`),LP=B(`

No models registered.

`),RP=B(`

No models in this category.

`),zP=B(`

No models match your filter.

`),BP=B(`
`);function VP(e,t){O(t,!0),On(()=>{Y.refreshTick,Bl.page===`models`&&(iM.fetchVirtualModels(),TM.fetchModelPricingOverrides(),Q.fetchFailoverRules(),Z.fetchRateLimitsPage())}),On(()=>{let e=iM.filteredDisplayModels.length;return wr(()=>iM.restartModelRendering(e)),()=>iM.stopModelRendering()});let n=A(()=>Y.needsAuth);var r=BP(),i=P(r),a=I(P(i),2),o=e=>{var t=AP(),n=P(t),r=P(n,!0);D(n),Ve(),D(t),L(()=>H(r,Id.filter?iM.filteredDisplayModels.length+` / `+iM.displayModels.length:iM.displayModels.length)),V(e,t)};U(a,e=>{iM.displayModels.length>0&&e(o)}),D(i);var s=I(i,2);Rd(s,{});var c=I(s,2),l=e=>{V(e,jP())};U(c,e=>{!iM.virtualModelsAvailable&&!R(n)&&e(l)});var u=I(c,2),d=e=>{var t=MP(),n=P(t,!0);D(t),L(()=>H(n,iM.aliasError)),V(e,t)};U(u,e=>{iM.aliasError&&!R(n)&&e(d)});var f=I(u,2),p=e=>{var t=MP(),n=P(t,!0);D(t),L(()=>H(n,TM.modelPricingOverrideError)),V(e,t)};U(f,e=>{TM.modelPricingOverrideError&&!R(n)&&!TM.modelPricingOverrideFormOpen&&e(p)});var m=I(f,2),h=e=>{var t=PP();W(t,21,()=>Id.categories,e=>e.category,(e,t)=>{var n=NP();let r;var i=P(n),a=P(i,!0);D(i);var o=I(i,2),s=P(o,!0);D(o),D(n),L(()=>{r=G(n,1,`category-tab svelte-scpjps`,null,r,{active:Id.activeCategory===R(t).category}),H(a,R(t).display_name),H(s,R(t).count)}),z(`click`,n,()=>Id.selectCategory(R(t).category)),V(e,n)}),D(t),V(e,t)};U(m,e=>{Id.categories.length>0&&e(h)});var g=I(m,2),_=e=>{var t=IP(),n=P(t);SD(P(n),{placeholder:`Filter by provider, provider/model, alias, or owner...`,label:`Filter models by provider, provider/model, alias, or owner`,get value(){return Id.filter},set value(e){Id.filter=e}}),D(n);var r=I(n,2),i=P(r),a=e=>{var t=FP();J(P(t),{get icon(){return il},class:`alias-create-icon`}),Ve(2),D(t),z(`click`,t,()=>iM.openVirtualModelCreate()),V(e,t)};U(i,e=>{iM.virtualModelsAvailable&&e(a)}),D(r),D(t),V(e,t)};U(g,e=>{(iM.displayModels.length>0||Id.filter||iM.virtualModelsAvailable)&&e(_)});var v=I(g,2),y=e=>{{let t=A(()=>iM.modelLoadingText());_O(e,{get label(){return R(t)},class:`models-loading-state`})}},b=A(()=>iM.modelsBusy()&&!R(n));U(v,e=>{R(b)&&e(y)});var x=I(v,2);WN(x,{});var S=I(x,2);tP(S,{});var C=I(S,2),w=e=>{CN(e,{})};U(C,e=>{(iM.displayModels.length>0||Id.filter)&&e(w)});var T=I(C,2),E=e=>{V(e,LP())};U(T,e=>{iM.displayModels.length===0&&!Id.loading&&!R(n)&&!Id.filter&&(Id.activeCategory===`all`||!Id.activeCategory)&&e(E)});var ee=I(T,2),te=e=>{V(e,RP())};U(ee,e=>{iM.displayModels.length===0&&!Id.loading&&!R(n)&&!Id.filter&&Id.activeCategory&&Id.activeCategory!==`all`&&e(te)});var ne=I(ee,2),re=e=>{V(e,zP())};U(ne,e=>{iM.displayModels.length>0&&iM.filteredDisplayModels.length===0&&Id.filter&&e(re)});var ie=I(ne,2);kP(ie,{});var ae=I(ie,2);RA(ae,{});var oe=I(ae,2);lP(oe,{}),vP(I(oe,2),{}),D(r),V(e,r),k()}Br([`click`]);var HP=`draft-workflow-preview`;function UP(){return{scope_provider:``,scope_model:``,scope_user_path:``,name:``,description:``,features:{cache:!0,audit:!0,usage:!0,budget:!0,guardrails:!1,failover:!0},guardrails:[]}}function WP(){return{scope_provider:``,scope_model:``,scope_user_path:``}}function GP(e){return{ref:``,step:Number.isFinite(e)?e:10}}function KP(e){let t=e==null?``:String(e).trim();if(t===``)return NaN;let n=Number(t);return Number.isFinite(n)?n:NaN}function qP(e,t,n){if(!e||typeof e!=`object`||Array.isArray(e))return n;let r=t.charAt(0).toUpperCase()+t.slice(1);for(let n of[t,r])if(Object.prototype.hasOwnProperty.call(e,n)&&e[n]!==null&&e[n]!==void 0)return e[n];return n}function JP(e,t){return!e||typeof e!=`object`||Array.isArray(e)?!1:[t,t.charAt(0).toUpperCase()+t.slice(1)].some(t=>Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==null&&e[t]!==void 0)}function YP(e){return{cache:!!qP(e,`cache`,!1),audit:!!qP(e,`audit`,!1),usage:!!qP(e,`usage`,!1),budget:qP(e,`budget`,!0)!==!1,guardrails:!!qP(e,`guardrails`,!1),failover:qP(e,`failover`,!0)!==!1}}function XP(e,t){let n=YP(e),r=t||{},i=n.usage&&!!r.usage;return{cache:n.cache&&!!r.cache,audit:n.audit&&!!r.audit,usage:i,budget:i&&n.budget&&!!r.budget,guardrails:n.guardrails&&!!r.guardrails,failover:n.failover&&!!r.failover}}function ZP(e,t){let n=e&&e.workflow_payload&&e.workflow_payload.features?e.workflow_payload.features:e&&e.features?e.features:{};return{...XP((e&&e.effective_features&&typeof e.effective_features==`object`&&!Array.isArray(e.effective_features)?e.effective_features:null)||n,t),failover:YP(n).failover}}function QP(e,t){return ZP(e,t).failover?`On`:`Off`}function $P(e){return(Array.isArray(e&&e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:Array.isArray(e&&e.guardrails)?e.guardrails:[]).map(e=>({ref:String(e&&e.ref||``).trim(),step:KP(e&&e.step)})).filter(e=>Number.isInteger(e.step)&&e.step>=0)}function eF(e,t){return ZP(e,t).guardrails&&Array.isArray(e&&e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:[]}function tF(e){return String(e&&(e.scope_provider_name||e.scope_provider)||``).trim()}function nF(e){return String(e&&(e.provider_name||e.provider_type)||``).trim()}function rF(e,t){let n=new Set,r=String(t&&t.scope_provider||``).trim();return r&&n.add(r),(Array.isArray(e)?e:[]).forEach(e=>{let t=nF(e);t&&n.add(t)}),[...n].sort()}function iF(e,t,n){let r=String(t||``).trim(),i=new Set,a=String(n&&n.scope_provider||``).trim(),o=String(n&&n.scope_model||``).trim();return r&&r===a&&o&&i.add(o),(Array.isArray(e)?e:[]).forEach(e=>{if(r&&nF(e)!==r)return;let t=String(e&&e.model&&e.model.id||``).trim();t&&i.add(t)}),[...i].sort()}function aF(e){let t=String(e&&e.scope_type||``).trim();return t===`provider_model`?`Provider Name + Model`:t===`provider_model_path`?`Provider Name + Model + Path`:t===`provider_path`?`Provider Name + Path`:t===`path`?`Path`:t===`provider`?`Provider Name`:`Global`}function oF(e){return String(e&&e.scope_display||`global`).trim()||`global`}function sF(e){let t=String(e&&e.name||``).trim();if(t)return t;let n=oF(e);return n===`global`?`All models`:n}function cF(e){let t=String(e||``).trim();if(!t)return``;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`);for(let e of n){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function lF(e){if(cF(e))return``;let t=String(e||``).trim();if(!t)return``;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`),r=[];for(let e of n){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function uF(e){let t=e||UP(),n=String(t.scope_provider||``).trim(),r=lF(t.scope_user_path);return{scope_provider:n,scope_model:n?String(t.scope_model||``).trim():``,scope_user_path:r}}function dF(e){let t=String(e&&e.scope_provider||``).trim(),n=t?String(e&&e.scope_model||``).trim():``,r=lF(e&&e.scope_user_path);return!t&&!r?`global`:!t&&r?`path`:!n&&!r?`provider`:!n&&r?`provider_path`:r?`provider_model_path`:`provider_model`}function fF(e){let t=String(e&&e.scope_provider||``).trim(),n=t?String(e&&e.scope_model||``).trim():``,r=lF(e&&e.scope_user_path),i=dF({scope_provider:t,scope_model:n,scope_user_path:r});return i===`global`?`global`:i===`path`?r:i===`provider`?t:i===`provider_path`?t+` @ `+r:i===`provider_model_path`?t+`/`+n+` @ `+r:t+`/`+n}function pF(e,t){let n=t||WP(),r=tF(e&&e.scope),i=r?String(e&&e.scope&&e.scope.scope_model||``).trim():``,a=lF(e&&e.scope&&e.scope.scope_user_path);return r===String(n.scope_provider||``).trim()&&i===String(n.scope_model||``).trim()&&a===lF(n.scope_user_path)}function mF(e,t,n){let r=uF(t);return!(r.scope_provider!==``||r.scope_model!==``||r.scope_user_path!==``)&&!n?null:(Array.isArray(e)?e:[]).find(e=>pF(e,r))||null}function hF(e){return String(e&&e.scope_type||``).trim()!==`global`}function gF(e){let t=String(e||``).trim();return t?t.length<=14?t:t.slice(0,12)+`…`:`—`}function _F(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.description,e.scope_display,e.scope_type,tF(e&&e.scope),e.scope&&e.scope.scope_model,e.scope&&e.scope.scope_user_path,e.workflow_hash,...Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails.map(e=>e.ref):[]].some(e=>String(e||``).toLowerCase().includes(r)))}function vF(e,t){let n=e||UP(),r=uF(n),i=YP(n.features||{}),a=XP(i,t);a.failover=i.failover;let o=!!a.guardrails,s=o?$P(n):[];return{id:HP,scope_type:dF(r),scope_display:fF(r),scope:{scope_provider_name:r.scope_provider,scope_model:r.scope_model,...r.scope_user_path?{scope_user_path:r.scope_user_path}:{}},name:String(n.name||``).trim(),description:String(n.description||``).trim(),workflow_payload:{schema_version:1,features:{cache:!!a.cache,audit:!!a.audit,usage:!!a.usage,budget:!!a.budget,guardrails:o,failover:!!a.failover},guardrails:s}}}function yF({form:e,caps:t,workflows:n=[],formHydrated:r=!1,hydratedScope:i=null}){let a=e||UP(),o=String(a.scope_provider||``).trim(),s=o?String(a.scope_model||``).trim():``,c=lF(a.scope_user_path),l=YP(a.features||{}),u=XP(l,t),d=mF(n,a,r),f=d&&d.workflow_payload&&d.workflow_payload.features,p=JP(f,`failover`),m=p?qP(f,`failover`,!0)!==!1:null,h=i||WP(),g=String(h.scope_provider||``).trim()===o&&String(h.scope_model||``).trim()===s&&lF(h.scope_user_path)===lF(c),_=!!(t&&t.failover),v=_||!!r&&g&&Object.prototype.hasOwnProperty.call(l,`failover`)||!r&&!!d&&p,y=u.guardrails?(Array.isArray(a.guardrails)?a.guardrails:[]).map(e=>({ref:String(e&&e.ref||``).trim(),step:KP(e&&e.step)})):[],b={scope_provider_name:o,scope_model:s,...c?{scope_user_path:c}:{},name:String(a.name||``).trim(),description:String(a.description||``).trim(),workflow_payload:{schema_version:1,features:{cache:!!u.cache,audit:!!u.audit,usage:!!u.usage,budget:!!u.budget,guardrails:!!u.guardrails},guardrails:y}};return v&&(b.workflow_payload.features.failover=!_&&!r&&d&&p?m:!!l.failover),b}function bF(e,{models:t=[],hydratedScope:n=null}={}){let r=n||WP(),i=String(r.scope_provider||``).trim(),a=String(r.scope_model||``).trim(),o=String(e&&(e.scope_provider_name||e.scope_provider)||``).trim(),s=String(e&&e.scope_model||``).trim();if(o&&!rF(t,r).includes(o)&&o!==i)return`Choose a registered provider name.`;if(s&&!o)return`Model selection requires a provider name.`;if(s){let e=iF(t,o,r),n=o===i&&s===a;if(!e.includes(s)&&!n)return`Choose a registered model for the selected provider name.`}let c=cF(e.scope_user_path);if(c)return c;let l=e.workflow_payload&&e.workflow_payload.features?e.workflow_payload.features:{},u=Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:[];if(!l.guardrails)return``;let d=new Set;for(let e of u){if(!e.ref)return`Each guardrail step needs a guardrail ref.`;if(!Number.isInteger(e.step)||e.step<0)return`Each guardrail step must use a non-negative integer step number.`;if(d.has(e.ref))return`Each guardrail ref may appear only once in a workflow.`;d.add(e.ref)}return``}var xF=new class{#e=j(N([]));get workflows(){return R(this.#e)}set workflows(e){M(this.#e,e,!0)}#t=j(!0);get available(){return R(this.#t)}set available(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}#r=j(``);get error(){return R(this.#r)}set error(e){M(this.#r,e,!0)}#i=j(``);get filter(){return R(this.#i)}set filter(e){M(this.#i,e,!0)}#a=j(!1);get formOpen(){return R(this.#a)}set formOpen(e){M(this.#a,e,!0)}#o=j(!1);get submitting(){return R(this.#o)}set submitting(e){M(this.#o,e,!0)}#s=j(``);get deactivatingID(){return R(this.#s)}set deactivatingID(e){M(this.#s,e,!0)}#c=j(``);get formError(){return R(this.#c)}set formError(e){M(this.#c,e,!0)}#l=j(!1);get formHydrated(){return R(this.#l)}set formHydrated(e){M(this.#l,e,!0)}#u=j(N(WP()));get hydratedScope(){return R(this.#u)}set hydratedScope(e){M(this.#u,e,!0)}#d=j(N([]));get guardrailRefs(){return R(this.#d)}set guardrailRefs(e){M(this.#d,e,!0)}#f=j(N(UP()));get form(){return R(this.#f)}set form(e){M(this.#f,e,!0)}#p=null;failoverVisible(){return bu.booleanFlag(`FAILOVER_ENABLED`,!0)}featureCaps(){return{cache:bu.cacheVisible(),audit:bu.auditVisible(),usage:bu.usageVisible(),budget:bu.budgetsVisible(),guardrails:bu.guardrailsVisible(),failover:this.failoverVisible()}}get filteredWorkflows(){return _F(this.workflows,this.filter)}providerOptions(){return rF(Id.models,this.hydratedScope)}modelOptions(e){return iF(Id.models,e,this.hydratedScope)}activeScopeMatch(){return mF(this.workflows,this.form,this.formHydrated)}submitMode(){return this.activeScopeMatch()?`save`:`create`}submitLabel(){return this.submitMode()===`save`?`Save`:`Create`}submittingLabel(){return this.submitMode()===`save`?`Saving...`:`Creating...`}preview(){return vF(this.form,this.featureCaps())}openCreate(e){if(this.formOpen=!0,this.submitting=!1,this.formError=``,!e){this.formHydrated=!1,this.hydratedScope=WP(),this.form=UP();return}this.formHydrated=!0,this.hydratedScope={scope_provider:tF(e.scope),scope_model:String(e.scope&&e.scope.scope_model||``).trim(),scope_user_path:String(e.scope&&e.scope.scope_user_path||``).trim()};let t=e.workflow_payload&&e.workflow_payload.features?YP(e.workflow_payload.features):ZP(e,this.featureCaps()),n=Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails.map(e=>({ref:String(e&&e.ref||``).trim(),step:KP(e&&e.step)})).filter(e=>Number.isInteger(e.step)&&e.step>=0):$P(e);this.form={scope_provider:tF(e.scope),scope_model:String(e.scope&&e.scope.scope_model||``),scope_user_path:String(e.scope&&e.scope.scope_user_path||``),name:String(e.name||``),description:String(e.description||``),features:{cache:!!t.cache,audit:!!t.audit,usage:!!t.usage,budget:!!t.budget,guardrails:!!t.guardrails,failover:!!t.failover},guardrails:n.map(e=>({ref:String(e&&e.ref||``),step:Number.isFinite(e&&e.step)?e.step:10}))}}closeForm(){this.formOpen=!1,this.submitting=!1,this.formError=``,this.formHydrated=!1,this.hydratedScope=WP(),this.form=UP()}setProvider(e){if(this.form.scope_provider=String(e||``).trim(),!this.form.scope_provider){this.form.scope_model=``;return}this.modelOptions(this.form.scope_provider).includes(String(this.form.scope_model||``).trim())||(this.form.scope_model=``)}addGuardrailStep(){let e=(Array.isArray(this.form.guardrails)?this.form.guardrails:[]).reduce((e,t)=>{let n=Number(t&&t.step);return Number.isFinite(n)?Math.max(e,n):e},0)+10;this.form.guardrails.push(GP(e))}removeGuardrailStep(e){Array.isArray(this.form.guardrails)&&this.form.guardrails.splice(e,1)}buildRequest(){return yF({form:this.form,caps:this.featureCaps(),workflows:this.workflows,formHydrated:this.formHydrated,hydratedScope:this.hydratedScope})}async fetchWorkflows(){this.#p&&this.#p.abort();let e=new AbortController;this.#p=e,this.loading=!0,this.error=``;let t=setTimeout(()=>e.abort(),1e4),n=await bO(`/admin/workflows`,{label:`workflows`,options:{signal:e.signal}});if(clearTimeout(t),this.#p===e&&(this.#p=null,this.loading=!1,n.status!==`stale`)){if(n.status===`unavailable`){this.available=!1,this.workflows=[];return}if(n.result&&(this.available=!0),n.status===`error`){this.workflows=[],this.error=e.signal.aborted?`Loading workflows timed out.`:n.error;return}this.workflows=n.items}}async fetchGuardrailRefs(){let e=await bO(`/admin/workflows/guardrails`,{label:`workflow guardrails`});e.status!==`stale`&&(this.guardrailRefs=e.items)}async fetchPage(){await Promise.all([bu.ensureLoaded(),this.fetchWorkflows(),this.fetchGuardrailRefs()])}async submitForm(){if(this.submitting)return;this.formError=``;let e=this.buildRequest(),t=bF(e,{models:Id.models,hydratedScope:this.hydratedScope});if(t){this.formError=t;return}this.submitting=!0;try{let t=await xO(`/admin/workflows`,`POST`,e,{label:`create workflow`,unavailableStatuses:[]});if(t.status===`stale`||t.result&&t.result.status===401)return;if(t.status===`error`){this.formError=t.error;return}ed.success(`Workflow created and activated.`),this.closeForm(),this.fetchPage()}finally{this.submitting=!1}}async deactivate(e){let t=String(e&&e.id||``).trim();if(!t||this.deactivatingID||!hF(e))return;let n=sF(e);if(confirm(`Deactivate workflow "`+n+`"? Requests will fall back to the next active workflow for this scope.`)){this.deactivatingID=t;try{let e=await xO(`/admin/workflows/`+encodeURIComponent(t)+`/deactivate`,`POST`,void 0,{label:`deactivate workflow`,unavailableStatuses:[]});if(e.status===`stale`||e.result&&e.result.status===401)return;if(e.status===`error`){ed.error(e.error);return}ed.success(`Workflow deactivated.`),this.fetchPage()}finally{this.deactivatingID=``}}}};function SF(e){let t=String(e??``),n=typeof navigator<`u`?navigator.clipboard:null;if(n&&typeof n.writeText==`function`)return n.writeText(t);let r=typeof document<`u`?document:null;if(!r||!r.body||typeof r.execCommand!=`function`)return Promise.reject(Error(`Clipboard API unavailable`));let i=r.createElement(`textarea`);i.value=t,i.setAttribute(`readonly`,``),i.style.position=`fixed`,i.style.top=`0`,i.style.left=`0`,i.style.opacity=`0`;try{if(r.body.appendChild(i),i.focus(),i.select(),i.setSelectionRange(0,i.value.length),!r.execCommand(`copy`))throw Error(`execCommand copy returned false`)}finally{i.parentNode&&i.parentNode.removeChild(i)}return Promise.resolve()}function CF({resetDelayMs:e=2e3,logPrefix:t}={}){let n=N({copied:!1,error:!1}),r=null;function i(){r!==null&&clearTimeout(r),r=null}function a(){i(),r=setTimeout(()=>{n.copied=!1,n.error=!1,r=null},e)}return{get copied(){return n.copied},get error(){return n.error},reset(){i(),n.copied=!1,n.error=!1},async copy(e,r){if(!(e==null||e===``)){i(),n.copied=!1,n.error=!1;try{await SF(typeof r==`function`?r(e):String(e)),n.copied=!0,n.error=!1}catch(e){console.error(t||`Failed to copy text:`,e),n.copied=!1,n.error=!0}a()}}}}var wF=B(``);function TF(e,t){O(t,!0);let n=q(t,`workflowID`,3,``),r=CF({logPrefix:`Failed to copy workflow ID:`});On(()=>{n(),r.reset()});let i=A(()=>r.error?`Unable to copy workflow ID`:r.copied?`Workflow ID copied`:`Copy workflow ID`),a=A(()=>n()?R(i)+` `+n():R(i));async function o(e){e.preventDefault(),n()&&await r.copy(n())}var s=wF();let c;var l=I(P(s),4),u=P(l,!0);D(l);var d=I(l,2);J(P(d),{get icon(){return Bc}}),D(d),D(s),L(()=>{c=G(s,1,`workflow-pipeline-meta mono svelte-1viff7o`,null,c,{"workflow-pipeline-meta-copied":r.copied,"workflow-pipeline-meta-error":r.error}),K(s,`title`,R(i)),K(s,`aria-label`,R(a)),H(u,n())}),z(`click`,s,o),V(e,s),k()}Br([`click`]);var EF=(e,t)=>{let n=()=>(t?.()).icon,r=()=>(t?.()).label,i=Et(()=>h((t?.()).variant,`workflow-node-feature`)),a=()=>(t?.()).state,o=()=>(t?.()).sub,s=()=>(t?.()).badge;var c=AF(),l=P(c),u=e=>{var t=DF();let r;J(P(t),{get icon(){return n()}}),D(t),L(()=>r=G(t,1,`workflow-node-icon svelte-nbptrg`,null,r,{"workflow-node-icon-endpoint":R(i)===`workflow-node-endpoint`})),V(e,t)};U(l,e=>{n()&&e(u)});var d=I(l,2),f=P(d,!0);D(d);var p=I(d,2),m=e=>{var t=OF(),n=P(t,!0);D(t),L(()=>H(n,s())),V(e,t)};U(p,e=>{s()&&e(m)});var g=I(p,2),_=e=>{var t=kF(),n=P(t,!0);D(t),L(()=>H(n,o())),V(e,t)};U(g,e=>{o()&&e(_)}),D(c),L(()=>{G(c,1,Ni([`workflow-node`,R(i),a()]),`svelte-nbptrg`),H(f,r())}),V(e,c)},DF=B(`
`),OF=B(` `),kF=B(` `),AF=B(`
`),jF=B(`
`,1),MF=B(`
`,1),NF=B(`
`),PF=B(`
Async
`),FF=B(`
`);function IF(e,t){O(t,!0);let n=q(t,`chart`,19,()=>({}));var r=FF();let i;var a=P(r),o=e=>{TF(e,{get workflowID(){return n().workflowID}})};U(a,e=>{n().workflowID&&e(o)});var s=I(a,2),c=P(s);EF(c,()=>({icon:wl,label:`Client`,variant:`workflow-node-endpoint`}));var l=I(c,4);EF(l,()=>({icon:Hc,label:`Auth`,state:n().authNodeClass,sub:n().authNodeSublabel}));var u=I(l,2),d=e=>{var t=jF(),r=F(t);EF(I(r,2),()=>({icon:Hc,label:`Cache`,state:n().cacheNodeClass,badge:n().cacheStatusLabel})),L(()=>G(r,1,Ni([`workflow-conn`,n().cacheConnClass]),`svelte-nbptrg`)),V(e,t)};U(u,e=>{n().showCache&&e(d)});var f=I(u,2),p=e=>{var t=MF();EF(I(F(t),2),()=>({icon:Tl,label:`Budget`,state:n().budgetNodeClass,badge:n().budgetStatusLabel})),V(e,t)};U(f,e=>{n().showBudget&&e(p)});var m=I(f,2),h=e=>{var t=MF();EF(I(F(t),2),()=>({icon:gl,label:`Guardrails`,sub:n().guardrailLabel})),V(e,t)};U(m,e=>{n().showGuardrails&&e(h)});var g=I(m,2),_=I(g,2);EF(_,()=>({label:n().aiLabel,variant:`workflow-node-ai`,state:n().aiNodeClass,sub:n().aiSublabel}));var v=I(_,2),y=e=>{var t=jF(),r=F(t);EF(I(r,2),()=>({icon:Qc,label:`Failover`,state:n().failoverNodeClass,badge:n().failoverStatusLabel,sub:n().failoverTargetLabel})),L(()=>G(r,1,Ni([`workflow-conn`,n().failoverConnClass]),`svelte-nbptrg`)),V(e,t)};U(v,e=>{n().showFailover&&e(y)});var b=I(v,2);EF(I(b,2),()=>({icon:Ic,label:`Response`,variant:`workflow-node-endpoint`,state:n().responseNodeClass,sub:n().responseNodeSublabel})),D(s);var x=I(s,2),S=e=>{var t=PF(),r=P(t),i=P(r),a=e=>{EF(e,()=>({icon:Ac,label:`Usage`,variant:`workflow-node-feature workflow-node-async`,state:n().usageNodeClass}))};U(i,e=>{n().showUsage&&e(a)});var o=I(i,2),s=e=>{V(e,NF())};U(o,e=>{n().showUsage&&n().showAudit&&e(s)});var c=I(o,2),l=e=>{EF(e,()=>({icon:Uc,label:`Audit Log`,variant:`workflow-node-feature workflow-node-async`,state:n().auditNodeClass}))};U(c,e=>{n().showAudit&&e(l)}),D(r),Ve(4),D(t),V(e,t)};U(x,e=>{n().showAsync&&e(S)}),D(r),L(()=>{i=G(r,1,`workflow-pipeline svelte-nbptrg`,null,i,{"workflow-pipeline-has-meta":n().workflowID}),G(g,1,Ni([`workflow-conn`,n().aiConnClass]),`svelte-nbptrg`),G(b,1,Ni([`workflow-conn`,n().responseConnClass]),`svelte-nbptrg`)}),V(e,r),k()}function LF(e){let t=$P(e).length;return t===0?``:t===1?`1 step`:t+` steps`}function RF(e,t){return t&&t.provider?t.provider:tF(e&&e.scope)||`AI`}function zF(e,t){return t&&t.model?t.model:e&&e.scope&&e.scope.scope_model||null}function BF(e,t){let n=String(e&&e.id||``).trim();if(n&&n!==`draft-workflow-preview`)return n;let r=String(t&&t.workflow_version_id||``).trim();return r&&r!==`draft-workflow-preview`?r:null}function VF(e){let t=e&&e.data&&e.data.workflow_features;return!t||typeof t!=`object`||Array.isArray(t)?null:YP(t)}function HF(e){let t=e&&e.data&&e.data.failover;if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=String(t.target_model||t.targetModel||``).trim()||null;return n?{targetModel:n}:null}function UF(e,t=0){if(t>4||e==null)return``;if(typeof e==`string`){let n=e.trim();if(!n||n[0]!==`{`&&n[0]!==`[`)return``;try{return UF(JSON.parse(n),t+1)}catch{return``}}if(Array.isArray(e)){for(let n of e){let e=UF(n,t+1);if(e)return e}return``}return typeof e==`object`?String(e.code||``).trim()||(e.error===void 0?``:UF(e.error,t+1)):``}function WF(e){let t=e&&e.data&&typeof e.data==`object`&&!Array.isArray(e.data)?e.data:{};return String(t.error_code||t.errorCode||``).trim()||UF(t.response_body)}function GF(e){let t=String(e||``).trim();if(!t)return null;let n=t.indexOf(`/`);return n<=0||n>=t.length-1?null:{provider:t.slice(0,n),model:t.slice(n+1)}}function KF(e,t){let n=String(e&&(e.requested_model||e.model)||``).trim(),r=HF(e);if(!(r&&r.targetModel))return{provider:String(e&&e.provider||``).trim()||null,model:n||null};let i=GF(n);if(i)return i;let a=tF(t&&t.scope),o=a?String(t&&t.scope&&t.scope.scope_model||``).trim():``;return a||o?{provider:a||null,model:o||n||null}:{provider:null,model:n||null}}function qF(e,t){if(!e)return null;let n=(()=>{let t=String(e.cache_type||``).trim().toLowerCase();return t===`exact`||t===`semantic`?t:null})(),r=(()=>{if(e.status_code===void 0||e.status_code===null)return null;let t=String(e.status_code).trim();if(!t)return null;let n=Number(t);return Number.isFinite(n)?n:null})(),i=n?!0:e.cache_hit!==void 0&&e.cache_hit!==null&&!!e.cache_hit,a=HF(e),o=KF(e,t),s=Number.isFinite(r)&&r>=200&&r<300,c=String(e.error_type||``).trim().toLowerCase()===`authentication_error`,l=String(e.auth_method||``).trim().toLowerCase()||null,u=WF(e).toLowerCase()===`budget_exceeded`;return{cacheHit:i,cacheType:n||null,failoverTarget:a&&a.targetModel?a.targetModel:null,provider:o.provider,model:o.model,statusCode:r,responseSuccess:s,aiSuccess:s&&!i,authError:c,authMethod:l,budgetExceeded:u}}function JF(e){return!!(e&&e.cacheHit)}function YF(e){return!!(e&&e.failoverTarget)}function XF(e){return!!(e&&e.budgetExceeded)}function ZF(e,t){return t?`workflow-node-current`:e&&e.cacheHit?`workflow-node-success`:``}function QF(e){return e&&e.cacheHit?`workflow-conn-hit`:``}function $F(e){return!e||!e.cacheHit?null:e.cacheType===`semantic`?`Hit (Semantic)`:`Hit (Exact)`}function eI(e,t,n,r){return e?XF(t)?`workflow-node-error`:r?`workflow-node-current`:n?`workflow-node-success`:``:``}function tI(e){return XF(e)?`Exceeded`:null}function nI(e){return e&&e.cacheHit?`workflow-node-skipped`:e&&e.failoverTarget?`workflow-node-success`:``}function rI(e){return e&&e.cacheHit?`workflow-conn-dim`:e&&e.failoverTarget?`workflow-conn-hit`:``}function iI(e){return e&&e.failoverTarget?`Redirected`:null}function aI(e){return e&&e.failoverTarget?e.failoverTarget:null}function oI(e){return e&&e.cacheHit?`workflow-conn-dim`:``}function sI(e,t){return e?e.cacheHit?`workflow-node-skipped`:t?`workflow-node-current`:e.aiSuccess?`workflow-node-success`:``:``}function cI(e,t){if(!e)return``;let n=e.statusCode;return!Number.isFinite(n)&&t?`workflow-node-current`:Number.isFinite(n)?n>=500?`workflow-node-error`:n>=400?`workflow-node-warning`:n>=300?`workflow-node-neutral`:n>=200?`workflow-node-success`:``:``}function lI(e){return!e||!Number.isFinite(e.statusCode)?null:String(e.statusCode)}function uI(e,t){return e?e.authError?`workflow-node-error`:t?`workflow-node-current`:e.authMethod===`api_key`||e.authMethod===`master_key`?`workflow-node-success`:``:``}function dI(e){return!e||!e.authMethod?null:e.authMethod}function fI(e,t,n){return e?n?`workflow-node-current`:t?`workflow-node-success`:``:``}function pI(e,t){if(!e||!e._live)return!!t;let n=String(e._live_state||``).trim();return!!e._audit_flushed||n===`audit.flushed`||n===`audit.detail`}function mI(e,t){if(!e)return!!t;let n=e.usage||{},r=Number(n.entries||0)>0;if(!e._live)return r;let i=String(e._usage_live_state||``).trim();return e._usage_flushed||i===`usage.flushed`?!0:!e._usage_live_pending&&r&&!e._live_pending}function hI(e){return!!(e&&e._live&&e._usage_live_pending&&!e._usage_flushed)}function gI(e,t){return!e||!e._live||pI(e,!1)?!1:String(e._live_state||``).trim()===`audit.completed`||!!(t&&Number.isFinite(t.statusCode))}function _I(e,t,n){return!e||!e._live?``:hI(e)?`usage`:gI(e,t)?`audit`:pI(e,!1)&&!e._live_pending?``:t&&t.cacheHit?`cache`:t&&(t.provider||t.model)?`ai`:n&&n.budget&&(e.workflow_version_id||e.requested_model)?`budget`:t&&t.authMethod?``:`auth`}function vI(e,t,n,r){let i=n||{},a=i.features&&typeof i.features==`object`&&!Array.isArray(i.features)?YP(i.features):ZP(e,r),o=!!i.forceAudit,s=!!i.highlightAsyncPresent,c=!!a.budget||XF(t),l=!!a.guardrails,u=!!a.usage,d=o||!!a.audit,f=!!i.forceAsync||!!(u||d),p=!!a.failover||YF(t),m=BF(e,i.entry),h=_I(i.entry,t,a),g=hI(i.entry),_=gI(i.entry,t),v=pI(i.entry,s),y=mI(i.entry,s);return{showBudget:c,budgetNodeClass:eI(c,t,s,h===`budget`),budgetStatusLabel:tI(t),showGuardrails:l,guardrailLabel:l?LF(e):``,showCache:!!i.forceCache||!!a.cache||JF(t),cacheNodeClass:ZF(t,h===`cache`),cacheConnClass:QF(t),cacheStatusLabel:$F(t),showFailover:p,failoverNodeClass:p?nI(t):``,failoverConnClass:p?rI(t):``,failoverStatusLabel:p?iI(t):null,failoverTargetLabel:p?aI(t):null,aiLabel:RF(e,t),aiSublabel:zF(e,t),aiConnClass:oI(t),aiNodeClass:sI(t,h===`ai`),responseConnClass:oI(t),responseNodeClass:cI(t,h===`response`),responseNodeSublabel:lI(t),authNodeClass:uI(t,h===`auth`),authNodeSublabel:dI(t),usageNodeClass:fI(u,y,g),auditNodeClass:fI(d,v,_),showAsync:f,showUsage:u,showAudit:d,workflowID:m}}function yI(e,t){return vI(e,null,{forceCache:!1},t)}function bI(e,t,n){return vI(t,qF(e,t),{entry:e,features:VF(e)||(t?ZP(t,n):{cache:!1,audit:!1,usage:!1,budget:!1,guardrails:!1,failover:!1}),forceAudit:!0,forceAsync:!0,highlightAsyncPresent:!0},n)}var xI=B(`

`),SI=B(`

`),CI=B(`
`),wI=B(`
`),TI=B(`

No guardrails configured for this workflow.

`),EI=B(`

Guardrails

`),DI=B(``),OI=B(`

`);function kI(e,t){O(t,!0);let n=q(t,`preview`,3,!1),r=A(()=>xF.featureCaps()),i=A(()=>sF(t.workflow)),a=A(()=>eF(t.workflow,R(r))),o=A(()=>yI(t.workflow,R(r))),s=A(()=>n()?`draft-workflow-preview-guardrail-`:t.workflow.id+`-guardrail-`);var c=OI();let l;var u=P(c),d=P(u),f=P(d),p=P(f,!0);D(f);var m=I(f,2),h=P(m,!0);D(m),D(d);var g=I(d,2),_=P(g),v=P(_,!0);D(_),D(g),D(u);var y=I(u,2),b=e=>{var n=xI(),r=P(n,!0);D(n),L(()=>H(r,t.workflow.description)),V(e,n)};U(y,e=>{t.workflow.description&&e(b)});var x=I(y,2),S=e=>{var n=SI(),i=P(n);D(n),L(e=>H(i,`Failover: ${e??``}`),[()=>QP(t.workflow,R(r))]),V(e,n)},C=A(()=>xF.failoverVisible());U(x,e=>{R(C)&&e(S)});var w=I(x,2);IF(w,{get chart(){return R(o)}});var T=I(w,2),E=e=>{var t=EI(),n=P(t),r=I(P(n),2),i=P(r,!0);D(r),D(n);var o=I(n,2),c=e=>{var t=wI();W(t,23,()=>R(a),(e,t)=>R(s)+t,(e,t)=>{var n=CI(),r=P(n),i=P(r,!0);D(r);var a=I(r,2),o=P(a);D(a),D(n),L(()=>{H(i,R(t).ref),H(o,`step ${R(t).step??``}`)}),V(e,n)}),D(t),V(e,t)},l=e=>{V(e,TI())};U(o,e=>{R(a).length>0?e(c):e(l,-1)}),D(t),L(()=>H(i,R(a).length?R(a).length+` steps`:`None`)),V(e,t)},ee=A(()=>bu.guardrailsVisible());U(T,e=>{R(ee)&&e(E)});var te=I(T,2),ne=e=>{var n=DI(),r=P(n),a=P(r),o=P(a,!0);D(a);var s=I(a,2);{let e=A(()=>`Edit workflow `+R(i));yO(s,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>xF.openCreate(t.workflow),children:(e,t)=>{J(e,{get icon(){return nl},class:`table-icon-svg`})},$$slots:{default:!0}})}D(r);var c=I(r,2),l=P(c),u=P(l);D(l);var d=I(l,2),f=P(d);D(d);var p=I(d,2),m=P(p);D(p),D(c),D(n),L((e,n,r,s)=>{a.disabled=e,K(a,`aria-label`,`Deactivate workflow `+R(i)),K(a,`title`,n),H(o,xF.deactivatingID===t.workflow.id?`Deactivating...`:`Deactivate`),H(u,`version: v${t.workflow.version??``}`),H(f,`created: ${r??``}`),H(m,`hash: ${s??``}`)},[()=>xF.deactivatingID===t.workflow.id||!hF(t.workflow),()=>hF(t.workflow)?`Deactivate active workflow`:`The global workflow cannot be deactivated.`,()=>lu.formatTimestamp(t.workflow.created_at),()=>gF(t.workflow.workflow_hash)]),z(`click`,a,()=>xF.deactivate(t.workflow)),V(e,n)};U(te,e=>{n()||e(ne)}),D(c),L((e,t)=>{l=G(c,1,`workflow-card svelte-1fo9fvq`,null,l,{"workflow-preview-card":n()}),H(p,e),H(h,R(i)),H(v,t)},[()=>aF(t.workflow),()=>oF(t.workflow)]),V(e,c),k()}Br([`click`]);var AI=B(`

`),jI=B(``),MI=B(``),NI=B(``),PI=B(``),FI=B(``),II=B(``),LI=B(``),RI=B(``),zI=B(``),BI=B(``),VI=B(``),HI=B(``),UI=B(`
No named guardrails are currently registered on this deployment. You can still draft a workflow, but guardrail-backed creation may be rejected.
`),WI=B(`
`),GI=B(`
`),KI=B(`

No guardrail steps configured yet.

`),qI=B(`

Guardrail Steps

Guardrails in the same numeric step run together. Later steps wait for earlier ones to finish.

`),JI=B(`

Leave provider name empty to target all providers and models. Select a provider name without a model to target all models for that configured provider.

Add a path to scope the workflow to that subtree. Leading slashes are optional and will be normalized; you can enter "team/alpha" or "/team/alpha". Matching checks the deepest user path first, then falls back toward the root.

If you leave the name empty, the workflow will display as the matched provider/model scope or “All models”.

Preview

Live
`,1);function YI(e,t){O(t,!0);{let t=e=>{YT(e,{copyId:`workflow-help-copy`,label:`workflow help`,text:`Create immutable version. Submitting activates it for the selected scope.`,title:e=>{var t=AI(),n=P(t,!0);D(t),L(e=>H(n,e),[()=>xF.submitMode()===`save`?`Edit Workflow`:`Create Workflow`]),V(e,t)},$$slots:{title:!0}})},n=A(()=>xF.submitLabel()),r=A(()=>xF.submittingLabel()),i=A(()=>xF.submitMode()===`create`?il:cl);Ck(e,{get open(){return xF.formOpen},ariaLabel:`Workflow editor`,get error(){return xF.formError},get submitting(){return xF.submitting},get submitLabel(){return R(n)},get submittingLabel(){return R(r)},get submitIcon(){return R(i)},dialogClass:`workflow-editor`,onclose:()=>xF.closeForm(),onsubmit:()=>xF.submitForm(),header:t,children:(e,t)=>{var n=JI(),r=F(n),i=P(r);Tk(i,{id:`workflow-scope-provider`,label:`Provider Name`,children:(e,t)=>{var n=MI(),r=P(n);r.value=r.__value=``,W(I(r),16,()=>xF.providerOptions(),e=>e,(e,t)=>{var n=jI(),r=P(n,!0);D(n);var i={};L(()=>{H(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(n),z(`change`,n,e=>xF.setProvider(e.currentTarget.value)),Ui(n,()=>xF.form.scope_provider,e=>xF.form.scope_provider=e),V(e,n)},$$slots:{default:!0}});var a=I(i,2),o=e=>{Tk(e,{id:`workflow-scope-model`,label:`Model`,children:(e,t)=>{var n=NI(),r=P(n);r.value=r.__value=``,W(I(r),17,()=>xF.modelOptions(xF.form.scope_provider),e=>xF.form.scope_provider+`-`+e,(e,t)=>{var n=jI(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t)),i!==(i=R(t))&&(n.value=(n.__value=R(t))??``)}),V(e,n)}),D(n),Ui(n,()=>xF.form.scope_model,e=>xF.form.scope_model=e),V(e,n)},$$slots:{default:!0}})};U(a,e=>{xF.form.scope_provider&&e(o)});var s=I(a,2);Tk(s,{id:`workflow-name`,label:`Name`,children:(e,t)=>{var n=PI();ea(n),la(n,()=>xF.form.name,e=>xF.form.name=e),V(e,n)},$$slots:{default:!0}}),Tk(I(s,2),{id:`workflow-user-path`,label:`User Path`,children:(e,t)=>{var n=FI();ea(n),la(n,()=>xF.form.scope_user_path,e=>xF.form.scope_user_path=e),V(e,n)},$$slots:{default:!0}}),D(r);var c=I(r,8);Tk(c,{id:`workflow-description`,label:`Description`,children:(e,t)=>{var n=II();ut(n),la(n,()=>xF.form.description,e=>xF.form.description=e),V(e,n)},$$slots:{default:!0}});var l=I(c,2),u=P(l),d=e=>{var t=LI(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>xF.form.features.cache,e=>xF.form.features.cache=e),V(e,t)},f=A(()=>bu.cacheVisible());U(u,e=>{R(f)&&e(d)});var p=I(u,2),m=e=>{var t=RI(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>xF.form.features.audit,e=>xF.form.features.audit=e),V(e,t)},h=A(()=>bu.auditVisible());U(p,e=>{R(h)&&e(m)});var g=I(p,2),_=e=>{var t=zI(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>xF.form.features.usage,e=>xF.form.features.usage=e),V(e,t)},v=A(()=>bu.usageVisible());U(g,e=>{R(v)&&e(_)});var y=I(g,2),b=e=>{var t=BI(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>xF.form.features.budget,e=>xF.form.features.budget=e),V(e,t)},x=A(()=>bu.budgetsVisible());U(y,e=>{R(x)&&e(b)});var S=I(y,2),C=e=>{var t=VI(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>xF.form.features.guardrails,e=>xF.form.features.guardrails=e),V(e,t)},w=A(()=>bu.guardrailsVisible());U(S,e=>{R(w)&&e(C)});var T=I(S,2),E=e=>{var t=HI(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>xF.form.features.failover,e=>xF.form.features.failover=e),V(e,t)},ee=A(()=>xF.failoverVisible());U(T,e=>{R(ee)&&e(E)}),D(l);var te=I(l,2),ne=I(P(te),2);{let e=A(()=>xF.preview());kI(ne,{get workflow(){return R(e)},preview:!0})}D(te);var re=I(te,2),ie=e=>{var t=qI(),n=P(t),r=I(P(n),2);D(n);var i=I(n,2),a=e=>{var t=UI(),n=I(P(t),2);D(t),z(`click`,n,()=>Bl.navigate(`guardrails`)),V(e,t)};U(i,e=>{xF.guardrailRefs.length===0&&e(a)});var o=I(i,2),s=e=>{var t=GI();W(t,21,()=>xF.form.guardrails,ii,(e,t,n)=>{var r=WI(),i=P(r),a=P(i);K(a,`for`,`workflow-guardrail-ref-`+n);var o=I(a,2);ea(o),K(o,`id`,`workflow-guardrail-ref-`+n),K(o,`aria-label`,`Guardrail reference `+(n+1)),D(i);var s=I(i,2),c=P(s);K(c,`for`,`workflow-guardrail-step-`+n);var l=I(c,2);ea(l),K(l,`id`,`workflow-guardrail-step-`+n),K(l,`aria-label`,`Guardrail step `+(n+1)),D(s);var u=I(s,2);D(r),la(o,()=>R(t).ref,e=>R(t).ref=e),la(l,()=>R(t).step,e=>R(t).step=e),z(`click`,u,()=>xF.removeGuardrailStep(n)),V(e,r)}),D(t),V(e,t)},c=e=>{V(e,KI())};U(o,e=>{xF.form.guardrails.length>0?e(s):e(c,-1)}),D(t),z(`click`,r,()=>xF.addGuardrailStep()),V(e,t)},ae=A(()=>xF.form.features.guardrails&&bu.guardrailsVisible());U(re,e=>{R(ae)&&e(ie)}),V(e,n)},$$slots:{header:!0,default:!0}})}k()}Br([`change`,`click`]);var XI=B(`

Loading workflows...

`),ZI=B(`
`),QI=B(`

No active workflows found.

`),$I=B(`

No workflows match your filter.

`),eL=B(`
`);function tL(e,t){O(t,!0);var n=eL(),r=P(n),i=e=>{var t=XI();wT(P(t),{size:16,label:`Loading workflows`}),Ve(),D(t),V(e,t)};U(r,e=>{xF.loading&&!Y.authError&&e(i)});var a=I(r,2),o=e=>{var t=ZI();W(t,21,()=>xF.filteredWorkflows,e=>e.id,(e,t)=>{kI(e,{get workflow(){return R(t)}})}),D(t),V(e,t)};U(a,e=>{xF.filteredWorkflows.length>0&&e(o)});var s=I(a,2),c=e=>{V(e,QI())};U(s,e=>{xF.workflows.length===0&&!xF.loading&&!Y.authError&&xF.available&&e(c)});var l=I(s,2),u=e=>{V(e,$I())};U(l,e=>{xF.workflows.length>0&&xF.filteredWorkflows.length===0&&!xF.loading&&e(u)}),D(n),V(e,n),k()}var nL=B(``),rL=B(`
Workflows feature is unavailable.
`),iL=B(`
`),aL=B(`
`),oL=B(``),sL=B(`
`);function cL(e,t){O(t,!0),On(()=>{Y.refreshTick,xF.fetchPage()});var n=sL(),r=P(n),i=I(P(r),2),a=P(i),o=e=>{var t=nL();J(P(t),{get icon(){return il},class:`form-action-icon`,"aria-hidden":`true`}),Ve(2),D(t),z(`click`,t,()=>xF.openCreate()),V(e,t)};U(a,e=>{xF.available&&e(o)}),D(i),D(r);var s=I(r,2),c=e=>{V(e,rL())};U(s,e=>{!xF.available&&!Y.authError&&e(c)});var l=I(s,2),u=e=>{var t=iL(),n=P(t,!0);D(t),L(()=>H(n,xF.error)),V(e,t)};U(l,e=>{xF.error&&!Y.authError&&e(u)});var d=I(l,2),f=e=>{var t=aL(),n=P(t);SD(P(n),{placeholder:`Filter by scope, name, hash, or guardrail...`,label:`Filter workflows by scope, name, hash, or guardrail`,get value(){return xF.filter},set value(e){xF.filter=e}}),D(n);var r=I(n,2),i=P(r),a=P(i,!0);D(i),D(r),D(t),L(()=>H(a,xF.filteredWorkflows.length+` active scopes`)),V(e,t)};U(d,e=>{xF.available&&e(f)});var p=I(d,2);YI(p,{});var m=I(p,2);tL(m,{});var h=I(m,2);W(h,20,()=>xF.guardrailRefs,e=>e,(e,t)=>{var n=oL(),r={};L(()=>{r!==(r=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(h),D(n),V(e,n),k()}Br([`click`]);function lL(e,{from:t,to:n},r={}){var{delay:i=0,duration:a=e=>Math.sqrt(e)*120,easing:o=Zu}=r,s=getComputedStyle(e),c=s.transform===`none`?``:s.transform,[l,u]=s.transformOrigin.split(` `).map(parseFloat);l/=e.clientWidth,u/=e.clientHeight;var d=uL(e),f=e.clientWidth/n.width/d,p=e.clientHeight/n.height/d,m=t.left+t.width*l,h=t.top+t.height*u,g=n.left+n.width*l,_=n.top+n.height*u,v=(m-g)*f,y=(h-_)*p,b=t.width/n.width,x=t.height/n.height;return{delay:i,duration:typeof a==`function`?a(Math.sqrt(v*v+y*y)):a,easing:o,css:(e,t)=>`transform: ${c} translate(${t*v}px, ${t*y}px) scale(${e+t*b}, ${e+t*x});`}}function uL(e){if(`currentCSSZoom`in e)return e.currentCSSZoom;for(var t=e,n=1;t!==null;)n*=+getComputedStyle(t).zoom,t=t.parentElement;return n}var dL=null;function fL(){return dL===null&&(dL=typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`)),!!(dL&&dL.matches)}function pL(e){return fL()?0:e}function mL(e,t){return!t||!t.live?{duration:0}:Yu(e,{duration:pL(150)})}var hL=new class{#e=j(N({}));get workflowVersionsByID(){return R(this.#e)}set workflowVersionsByID(e){M(this.#e,e,!0)}workflowVersionRequests={};workflowFeatureCaps(){return{cache:bu.cacheVisible(),audit:bu.auditVisible(),usage:bu.usageVisible(),budget:bu.budgetsVisible(),guardrails:bu.guardrailsVisible(),failover:bu.booleanFlag(`FAILOVER_ENABLED`,!0)}}cacheWorkflowVersion(e){let t=String(e&&e.id||``).trim();return t?(this.workflowVersionsByID={...this.workflowVersionsByID||{},[t]:e},e):null}cacheMissingWorkflowVersion(e){let t=String(e||``).trim();t&&(this.workflowVersionsByID={...this.workflowVersionsByID||{},[t]:null})}workflowVersionCacheHas(e){return Object.prototype.hasOwnProperty.call(this.workflowVersionsByID||{},String(e||``).trim())}workflowVersionByID(e){let t=String(e||``).trim();return t&&this.workflowVersionCacheHas(t)?this.workflowVersionsByID[t]:null}async fetchWorkflowVersion(e){let t=String(e||``).trim();if(!t)return null;if(this.workflowVersionCacheHas(t))return this.workflowVersionsByID[t];if(this.workflowVersionRequests[t])return this.workflowVersionRequests[t];let n=(async()=>{let e=typeof AbortController==`function`?new AbortController:null,n=e?setTimeout(()=>e.abort(),1e4):null;try{let n=await hu(`/admin/workflows/`+encodeURIComponent(t),{label:`workflow`,signal:e?e.signal:void 0});if(n.stale)return null;if(n.status===404)return this.cacheMissingWorkflowVersion(t),null;if(!n.ok)return null;let r=n.data;return!r||typeof r!=`object`||Array.isArray(r)?(this.cacheMissingWorkflowVersion(t),null):this.cacheWorkflowVersion(r)}catch(e){return e&&e.name===`AbortError`||console.error(`Failed to fetch workflow version:`,e),null}finally{n!==null&&clearTimeout(n),delete this.workflowVersionRequests[t]}})();return this.workflowVersionRequests[t]=n,n}async prefetchAuditWorkflows(e){let t=[...new Set((Array.isArray(e)?e:[]).map(e=>String(e&&e.workflow_version_id||``).trim()).filter(Boolean))];t.length!==0&&await Promise.all(t.map(e=>this.fetchWorkflowVersion(e)))}auditEntryWorkflow(e){let t=String(e&&e.workflow_version_id||``).trim();return t?this.workflowVersionByID(t):null}},gL=6;function _L(e){if(typeof e!=`string`)return null;try{return JSON.parse(e)}catch{return null}}function vL(e,t=0,n=null){let r=String(e||``).trim();if(!r)return``;if(t>gL)return r;let i=_L(r);return i==null?r:yL(i,t+1,n)||n&&n(i)||r}function yL(e,t=0,n=null,r=null){if(e==null||t>gL)return``;if(typeof e==`string`){let i=_L(e.trim());return i==null?``:yL(i,t+1,n,r)}if(typeof e!=`object`)return``;let i=r||new Set;if(i.has(e))return``;if(i.add(e),Array.isArray(e)){for(let r=0;r=400||SL(t&&t.response_body)}function wL(e){let t=e&&e.data?e.data:null;return t?bL(t.error_message)||(CL(e,t)?yL(t.response_body,0):``):``}function TL(e){if(e==null||String(e).trim()===``)return null;let t=Number(e);return!Number.isInteger(t)||t<0?null:t}function EL(e){let t=TL(e);return t===null?``:t===0?`Audit logs are retained indefinitely.`:t===1?`Audit logs are retained for 1 day.`:`Audit logs are retained for `+t+` days.`}function DL(e){let t=TL(e);return t===null?``:t===0?`Audit logs are retained `:`Audit logs are retained for `}function OL(e){let t=TL(e);return t===null?``:t===0?`indefinitely`:t===1?`1 day`:t+` days`}function kL({dateQuery:e,limit:t,offset:n,search:r,method:i,statusCode:a,stream:o}){let s=e;return s+=`&limit=`+t+`&offset=`+n,r&&(s+=`&search=`+encodeURIComponent(r)),i&&(s+=`&method=`+encodeURIComponent(i)),a&&(s+=`&status_code=`+encodeURIComponent(a)),o&&(s+=`&stream=`+encodeURIComponent(o)),s}function AL({sessionId:e,limit:t}){return`session_id=`+encodeURIComponent(e)+`&limit=`+(t||100)+`&offset=0`}function jL(e){return String(e&&e.session_id||``).trim()}function ML(e){let t=Number(e&&e.session_count);return Number.isFinite(t)&&t>1?t:1}function NL(e){return!!jL(e)&&ML(e)>1}function PL(e){return{entries:(Array.isArray(e&&e.sessions)?e.sessions:[]).filter(e=>e&&e.latest).map(e=>({...e.latest,session_id:jL(e.latest)||String(e.session_id||``).trim(),session_count:Number(e.count||1)})),total:Number(e&&e.total||0),limit:Number(e&&e.limit||25),offset:Number(e&&e.offset||0)}}function FL(e,t,n){let r=new Set((Array.isArray(n)?n:[]).flatMap(e=>zL(e))),i=(Array.isArray(t)?t:[]).filter(e=>!zL(e).some(e=>r.has(e))),a=new Set([...r,...i.flatMap(e=>zL(e))]),o=(e&&Array.isArray(e.entries)?e.entries:[]).filter(e=>e&&e._live&&!zL(e).some(e=>a.has(e)));return{entries:[...o,...i],preservedCount:o.length}}function IL(e,t){let n=e||{};if(!t)return n;if(n[t]){let e={...n};return delete e[t],e}return{...n,[t]:!0}}function LL(e,t){let n=e||{},r=new Set((Array.isArray(t)?t:[]).map(e=>jL(e)).filter(Boolean)),i={},a=!1;return Object.keys(n).forEach(e=>{if(r.has(e)){i[e]=n[e];return}a=!0}),a?i:n}function RL(e){return String(e&&e.id||``).trim()}function zL(e){if(!e)return[];let t=[],n=String(e.id||``).trim(),r=String(e.request_id||``).trim();return n&&t.push(`id:`+n),r&&t.push(`request:`+r),t}function BL(e){return!!(e&&e._live&&e._live_pending&&!e._audit_flushed)}function VL(e){let t=e&&e.customStartDate,n=e&&e.customEndDate;if(!t&&!n)return!0;let r=new Date;if(t){let e=new Date(t);if(e.setHours(0,0,0,0),Number.isFinite(e.getTime())&&re)return!1}return!0}function HL(e,t){return e&&Number(e.offset||0)===0&&!(t&&t.search)&&!(t&&t.method)&&!(t&&t.statusCode)&&!(t&&t.stream)&&VL(t)}function UL(e,t,n){let r=e&&typeof e==`object`?{...e}:{entries:[],total:0,limit:25,offset:0},i=Array.isArray(r.entries)?r.entries:[];if(r.entries=i,!HL(r,n))return r;let a=(Array.isArray(t)?t:[]).filter(e=>BL(e));if(a.length===0)return r;let o=new Set(i.flatMap(e=>zL(e))),s=[];return a.forEach(e=>{let t=zL(e);t.length!==0&&(t.some(e=>o.has(e))||(t.forEach(e=>o.add(e)),s.push(e)))}),s.length===0?r:(r.entries=[...s,...i].slice(0,r.limit||25),r.total=Number(r.total||0)+s.length,r)}function WL(e,t,n){let r=e&&typeof e==`object`?{...e}:{entries:[],total:0,limit:25,offset:0},i=Array.isArray(r.entries)?r.entries:[];if(r.entries=i,!HL(r,n))return r;let a=(Array.isArray(t)?t:[]).filter(e=>BL(e));if(a.length===0)return r;let o=new Set(i.flatMap(e=>zL(e))),s=new Map;i.forEach((e,t)=>{let n=jL(e);n&&!s.has(n)&&s.set(n,t)});let c=[],l=i;return a.forEach(e=>{let t=zL(e);if(t.length===0||t.some(e=>o.has(e)))return;let n=jL(e);if(n&&s.has(n)){let r=s.get(n);l===i&&(l=[...i]),l[r]={...e,session_count:Math.max(ML(l[r]),ML(e))},t.forEach(e=>o.add(e));return}t.forEach(e=>o.add(e)),c.push(e)}),r.entries=[...c,...l].slice(0,r.limit||25),r.total=Number(r.total||0)+c.length,r}function GL(e,t){let n=RL(t),r=e||{};return n?r[n]?{}:{[n]:!0}:r}function KL(e,t){let n=e||{},r=new Set((Array.isArray(t)?t:[]).map(e=>RL(e)).filter(Boolean)),i={},a=!1;return Object.keys(n).forEach(e=>{if(r.has(e)){i[e]=!0;return}a=!0}),a?i:n}function qL(e){if(e==null)return`-`;let t=Number(e);return Number.isFinite(t)?t<=0?`pending`:t<1e6?Math.round(t/1e3)+` µs`:t<1e9?(t/1e6).toFixed(2)+` ms`:(t/1e9).toFixed(2)+` s`:`-`}function JL(e){if(e==null||e===``)return`status-unknown`;let t=Number(e);return Number.isFinite(t)?t>=500?`status-error`:t>=400?`status-warning`:t>=300?`status-neutral`:`status-success`:`status-unknown`}function YL(e){if(!e||!e._live||!e._live_pending)return!1;let t=String(e._live_state||``).trim();if(t===`audit.completed`||t===`audit.flushed`||t===`audit.detail`)return!1;if(e._response_partial)return!0;if(e.status_code!==null&&e.status_code!==void 0&&e.status_code!==``||Number(e.duration_ns||0)>0||e.error_type||e.error_message)return!1;let n=e.data||{};return!(n.response_headers||n.response_body||n.error_message)}function XL(e){let t=e&&e.data&&e.data.failover;return!t||typeof t!=`object`||Array.isArray(t)?null:String(t.target_model||t.targetModel||``).trim()||null}function ZL(e){return(e&&e.data&&Array.isArray(e.data.attempts)?e.data.attempts:[]).map((e,t)=>({...e,seq:Number(e&&e.seq||t+1)})).sort((e,t)=>e.seq-t.seq)}function QL(e){let t=ZL(e);return t.length>1||t.some(e=>!(e&&e.success))}function $L(e){if(!e)return`-`;let t=e.status_code||e.status;return t?String(t):e.success?`ok`:`error`}function eR(e){return String(e&&e.kind||``).trim()||`attempt`}function tR(e){if(!e)return`-`;let t=String(e.provider_name||``).trim(),n=String(e.provider_type||e.provider||``).trim();return t&&n&&t!==n?t+` (`+n+`)`:t||n||`-`}function nR(e){return String(e&&e.model||``).trim()||`-`}function rR(e){let t=ZL(e);return t.length>1||t.some(e=>!(e&&e.success))?t:[]}function iR(e){return ZL(e).length+`×`}function aR(e){let t=ZL(e),n=t.filter(e=>!(e&&e.success)).length,r=t.length===1?`attempt`:`attempts`,i=t.length+` provider `+r;return n>0?i+` · `+n+` failed`:i}function oR(e){if(!e)return``;let t=[`#`+Number(e.seq||0)],n=eR(e);n&&n!==`attempt`&&t.push(n),t.push($L(e));let r=tR(e);r&&r!==`-`&&t.push(r);let i=nR(e);return i&&i!==`-`&&t.push(i),t.push(e.success?`succeeded`:`failed`),t.join(` · `)}function sR(e,t){if(!t)return null;if(t.success){let t=e&&e.data?e.data:null;return t&&t.response_body!=null?t.response_body:null}return t.response_body!=null&&t.response_body!==``?t.response_body:null}function cR(e){if(!e||e.success)return``;let t=String(e.error_message||``).trim(),n=String(e.error_code||``).trim(),r=String(e.error_type||``).trim();return t&&n?n+`: `+t:t||n||r||`Provider attempt failed`}function lR(e,t){if(!t)return null;if(t.success){let t=e&&e.data?e.data:null;return t?t.response_headers:null}return t.response_headers||null}function uR(e){let t=Number(e&&e.status_code);return Number.isFinite(t)&&t>0?t:null}function dR(e,t){let n=!!(t&&t.success),r=e&&e.data?e.data:null,i=sR(e,t),a=lR(e,t),o=cR(t),s=i!=null&&i!==``,c=eR(t),l=ZL(e).length<=1;return{title:`Response`,direction:`response`,seq:l?0:Number(t&&t.seq||0),kind:l||c===`attempt`?``:c,statusCode:l?null:uR(t),layout:`split`,entry:e,copyHeaders:a,copyBody:i,showErrorMessage:!!o,errorMessage:o,showHeaders:!!a,headers:a,showBody:s,body:i,showEmpty:!o&&!s&&!a,emptyMessage:`No response was captured for this attempt.`,showTooLarge:!!(n&&r&&r.response_body_too_big_to_handle),tooLargeMessage:`Response body was too large to capture.`}}function fR(e){return e&&e.data&&Array.isArray(e.data.request_revisions)?e.data.request_revisions:[]}function pR(e){return fR(e).filter(e=>!(e&&e.no_change))}function mR(e){return fR(e).filter(e=>e&&e.no_change).map(e=>{let t=String(e.rewriter||`rewriter`);return{id:`step-`+Number(e.seq||0),rewriter:t,label:t+`: no change`,title:t+` ran and forwarded the request unchanged`}})}function hR(e){let t=Number(e&&e.bytes_before),n=Number(e&&e.bytes_after);if(!Number.isFinite(t)||!Number.isFinite(n)||t<=0||n>=t)return``;let r=(1-n/t)*100;return`-`+(r>=10?String(Math.round(r)):r.toFixed(1))+`%`}function gR(e,t){let n=t&&t.body,r=n!=null&&n!==``,i=pR(e).length<=1,a={rewriter:t&&t.rewriter||``,bytes:Number(t&&t.bytes_before||0)+` → `+Number(t&&t.bytes_after||0)};return t&&t.detail!=null&&(a.detail=t.detail),{title:`Rewritten`,direction:`request`,seq:i?0:Number(t&&t.seq||0),kind:t&&t.rewriter?String(t.rewriter):``,savingsLabel:hR(t),layout:`split`,entry:e,copyHeaders:a,copyBody:n,showErrorMessage:!1,errorMessage:null,showHeaders:!0,headers:a,headersTitle:`What changed`,showBody:r,body:n,showEmpty:!1,emptyMessage:``,showTooLarge:!r,tooLargeMessage:`Rewritten body not captured (body logging disabled or body too large).`}}function _R(e){let t=e&&e.usage;return!t||typeof t!=`object`?null:t}function vR(e){let t=_R(e);return Number(t&&t.cached_input_tokens||0)>0}function yR(e){let t=_R(e),n=Number(t&&t.input_tokens||0),r=Number(t&&t.cached_input_tokens||0);return!Number.isFinite(n)||n<=0||!Number.isFinite(r)||r<=0?0:Math.max(0,Math.min(100,r/n*100))}function bR(e){let t=_R(e);if(!t)return``;let n=Number(t.input_tokens||0),r=Number(t.cached_input_tokens||0);return n<=0?cd(r)+` cached`:yR(e).toFixed(1)+`% cached`}function xR(e){return vR(e)?bR(e):``}function SR(e,t){let n=_R(e);if(!n||!e||!e.data||!e.data.request_body)return null;let r=Number(n.estimated_cached_characters||0);if(!Number.isFinite(r)||r<=0||typeof t!=`function`)return null;let i=t(e.data.request_body);return!Array.isArray(i)||i.length===0?null:{characters:r,segments:i}}function CR(e,t){let n=e&&e.data?e.data:null,r=!n||!n.request_headers&&!n.request_body,i=r&&YL(e);return{title:`Request`,direction:`request`,layout:`split`,entry:e,copyHeaders:n&&n.request_headers,copyBody:n&&n.request_body,showErrorMessage:!1,errorMessage:null,showHeaders:!!(n&&n.request_headers),headers:n&&n.request_headers,showBody:!!(n&&n.request_body),body:n&&n.request_body,bodyCacheRatioLabel:xR(e),promptCacheHighlight:SR(e,t),noChangeSteps:mR(e),showEmpty:r&&!i,emptyMessage:`Request details were not captured.`,showPending:i,pendingMessage:`Waiting for request data…`,showTooLarge:!!(n&&n.request_body_too_big_to_handle),tooLargeMessage:`Request body was too large to capture.`}}function wR(e){let t=e&&e.data?e.data:null,n=wL(e),r=!t||!n&&!t.response_headers&&!t.response_body,i=r&&YL(e);return{title:`Response`,direction:`response`,layout:`split`,entry:e,copyHeaders:t&&t.response_headers,copyBody:t&&t.response_body,showErrorMessage:!!n,errorMessage:n,showHeaders:!!(t&&t.response_headers),headers:t&&t.response_headers,showBody:!!(t&&t.response_body),body:t&&t.response_body,streaming:!!(e&&e._response_partial&&t&&t.response_body)&&YL(e),showEmpty:r&&!i,emptyMessage:`Response details were not captured.`,showPending:i,pendingMessage:`Response in progress…`,showTooLarge:!!(t&&t.response_body_too_big_to_handle),tooLargeMessage:`Response body was too large to capture.`}}function TR(e,t){let n=[{id:`request`,pane:CR(e,t)}];return pR(e).forEach(t=>{n.push({id:`revision-`+Number(t&&t.seq||0),pane:gR(e,t)})}),QL(e)?ZL(e).forEach(t=>{n.push({id:`response-`+Number(t&&t.seq||0),pane:dR(e,t)})}):n.push({id:`response`,pane:wR(e)}),n}function ER(e){if(!QL(e))return`response`;let t=ZL(e),n=null;return t.forEach(e=>{e&&e.success&&(n=e)}),n||=t[t.length-1],n?`response-`+Number(n.seq||0):`request`}function DR(e,t,n){return e&&(Array.isArray(n)?n:TR(t)).some(t=>t.id===e)?e:ER(t)}function OR(e,t,n){if(!t||!t.length)return null;let r=t.indexOf(n);r<0&&(r=0);let i;switch(e){case`ArrowRight`:case`ArrowDown`:i=(r+1)%t.length;break;case`ArrowLeft`:case`ArrowUp`:i=(r-1+t.length)%t.length;break;case`Home`:i=0;break;case`End`:i=t.length-1;break;default:return null}return t[i]}var kR=100;function AR(){return{entries:[],total:0,limit:25,offset:0}}var jR=new class{#e=j(N({}));get auditExpandedEntries(){return R(this.#e)}set auditExpandedEntries(e){M(this.#e,e,!0)}#t=j(N({}));get auditExpandedThreads(){return R(this.#t)}set auditExpandedThreads(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}auditFetchToken=0;get auditLog(){return PE.auditLog}set auditLog(e){PE.auditLog=e}get auditSearch(){return PE.auditSearch}set auditSearch(e){PE.auditSearch=e}get auditMethod(){return PE.auditMethod}set auditMethod(e){PE.auditMethod=e}get auditStatusCode(){return PE.auditStatusCode}set auditStatusCode(e){PE.auditStatusCode=e}get auditStream(){return PE.auditStream}set auditStream(e){PE.auditStream=e}get auditGroupSessions(){return PE.auditGroupSessions}liveFilters(){return{search:this.auditSearch,method:this.auditMethod,statusCode:this.auditStatusCode,stream:this.auditStream,customStartDate:Fd.customStartDate,customEndDate:Fd.customEndDate}}toggleAuditGroupSessions(){PE.auditGroupSessions=!PE.auditGroupSessions,Ya(`gomodel_audit_group_sessions`,PE.auditGroupSessions),this.auditExpandedThreads={},PE.auditThreadChildren={},this.fetchAuditLog(!0)}async fetchAuditLog(e){let t=++this.auditFetchToken;this.loading=!0;try{e&&(this.auditLog.offset=0);let n=this.auditGroupSessions,r=kL({dateQuery:Fd.queryStr(),limit:this.auditLog.limit,offset:this.auditLog.offset,search:this.auditSearch,method:this.auditMethod,statusCode:this.auditStatusCode,stream:this.auditStream}),i=await hu((n?`/admin/audit/sessions?`:`/admin/audit/log?`)+r,{label:`audit log`});if(i.stale||t!==this.auditFetchToken)return;if(!i.ok){this.auditLog=AR();return}let a=n?PL(i.data):i.data,o=(n?WL:UL)(a,this.auditLog&&this.auditLog.entries,this.liveFilters());Array.isArray(o.entries)||(o.entries=[]),o.entries=PE.upsertAuditRecords(o.entries,`audit.list`),this.auditLog=o,this.auditExpandedThreads=LL(this.auditExpandedThreads,o.entries),PE.auditThreadChildren=LL(PE.auditThreadChildren,o.entries);let s=[...o.entries,...this.loadedThreadChildren()];this.auditExpandedEntries=KL(this.auditExpandedEntries,s);try{await hL.prefetchAuditWorkflows(s)}catch(e){console.error(`Failed to prefetch audit workflows:`,e)}}catch(e){if(console.error(`Failed to fetch audit log:`,e),t!==this.auditFetchToken)return;this.auditLog=AR()}finally{t===this.auditFetchToken&&(this.loading=!1)}}loadedThreadChildren(){let e=PE.auditThreadChildren||{};return Object.keys(e).flatMap(t=>Array.isArray(e[t]&&e[t].entries)?e[t].entries:[])}isThreadExpanded(e){return!!(e&&this.auditExpandedThreads[e])}threadChildren(e){return e&&PE.auditThreadChildren[e]||null}async toggleThread(e){let t=jL(e);if(!t)return;let n=!this.isThreadExpanded(t);this.auditExpandedThreads=IL(this.auditExpandedThreads,t);let r=PE.auditThreadChildren[t];n&&!(r&&(r.loaded||r.loading))&&await this.fetchThreadEntries(e)}async fetchThreadEntries(e){let t=jL(e);if(!t)return;let n=PE.auditThreadChildren[t];PE.auditThreadChildren={...PE.auditThreadChildren,[t]:{loading:!0,loaded:!1,entries:n&&Array.isArray(n.entries)?n.entries:[],total:Number(n&&n.total||0)}};let r=()=>{let e={...PE.auditThreadChildren},n=e[t],r=n&&Array.isArray(n.entries)?n.entries:[];r.length>0?e[t]={loading:!1,loaded:!1,entries:r,total:r.length}:(delete e[t],this.auditExpandedThreads[t]&&(this.auditExpandedThreads=IL(this.auditExpandedThreads,t))),PE.auditThreadChildren=e};try{let n=await hu(`/admin/audit/log?`+AL({sessionId:t,limit:kR}),{label:`audit session`});if(n.stale){r();return}if(!n.ok)throw Error(`audit session fetch failed`);let i=PE.auditThreadChildren[t],a=this.auditLog.entries.find(e=>jL(e)===t),o=FL(i,n.data.entries,a?[a]:[e]);o.entries=PE.upsertAuditRecords(o.entries,`audit.thread`),PE.auditThreadChildren={...PE.auditThreadChildren,[t]:{loading:!1,loaded:!0,entries:o.entries,total:Number(n.data.total||0)+o.preservedCount}}}catch(e){console.error(`Failed to fetch audit session entries:`,e),r()}}clearAuditFilters(){this.auditSearch=``,this.auditMethod=``,this.auditStatusCode=``,this.auditStream=``,this.fetchAuditLog(!0)}auditLogNextPage(){this.auditLog.offset+this.auditLog.limit0&&(this.auditLog.offset=Math.max(0,this.auditLog.offset-this.auditLog.limit),this.fetchAuditLog(!1))}isAuditEntryExpanded(e){let t=RL(e);return t?!!(this.auditExpandedEntries&&this.auditExpandedEntries[t]):!1}toggleAuditEntryExpanded(e){this.auditExpandedEntries=GL(this.auditExpandedEntries,e);let t=this.isAuditEntryExpanded(e);return t&&typeof PE.fetchAuditEntryDetail==`function`&&PE.fetchAuditEntryDetail(e),t}expandAuditEntry(e){this.isAuditEntryExpanded(e)||this.toggleAuditEntryExpanded(e)}};PE.fetchAuditLog=e=>jR.fetchAuditLog(e),PE.isAuditEntryExpanded=e=>jR.isAuditEntryExpanded(e);var MR=B(`
`);function NR(e,t){O(t,!0);let n=CD(()=>jR.fetchAuditLog(!0));On(()=>n.cancel);var r=MR(),i=P(r);SD(P(i),{id:`audit-filter-search`,placeholder:`Search by request ID, model, provider, path, user path, or error...`,label:`Search by request ID, model, provider, path, user path, or error`,get oninput(){return n},get value(){return jR.auditSearch},set value(e){jR.auditSearch=e}}),D(i);var a=I(i,2),o=P(a),s=P(o);s.value=s.__value=``;var c=I(s);c.value=c.__value=`GET`;var l=I(c);l.value=l.__value=`POST`;var u=I(l);u.value=u.__value=`PUT`;var d=I(u);d.value=d.__value=`PATCH`;var f=I(d);f.value=f.__value=`DELETE`,D(o);var p=I(o,2),m=P(p);m.value=m.__value=``;var h=I(m);h.value=h.__value=`200`;var g=I(h);g.value=g.__value=`201`;var _=I(g);_.value=_.__value=`400`;var v=I(_);v.value=v.__value=`401`;var y=I(v);y.value=y.__value=`403`;var b=I(y);b.value=b.__value=`404`;var x=I(b);x.value=x.__value=`429`;var S=I(x);S.value=S.__value=`500`;var C=I(S);C.value=C.__value=`502`;var w=I(C);w.value=w.__value=`503`;var T=I(w);T.value=T.__value=`504`,D(p);var E=I(p,2),ee=P(E);ee.value=ee.__value=``;var te=I(ee);te.value=te.__value=`true`;var ne=I(te);ne.value=ne.__value=`false`,D(E);var re=I(E,2);J(P(re),{get icon(){return Ol},class:`table-icon-svg`}),Ve(2),D(re),D(a),D(r),z(`change`,o,()=>jR.fetchAuditLog(!0)),Ui(o,()=>jR.auditMethod,e=>jR.auditMethod=e),z(`change`,p,()=>jR.fetchAuditLog(!0)),Ui(p,()=>jR.auditStatusCode,e=>jR.auditStatusCode=e),z(`change`,E,()=>jR.fetchAuditLog(!0)),Ui(E,()=>jR.auditStream,e=>jR.auditStream=e),z(`click`,re,()=>jR.clearAuditFilters()),V(e,r),k()}Br([`change`,`click`]);var PR=B(`Live stream connecting…`),FR=B(` `),IR=B(`Live`),LR=B(` `);function RR(e,t){O(t,!0);let n=A(()=>PE.auditLivePauseReason()),r=A(()=>PE.liveLogsStreaming&&!R(n));var i=Xr(),a=F(i),o=e=>{var t=LR(),i=P(t);let a;var o=I(i,2),s=e=>{V(e,PR())},c=e=>{var t=FR(),r=P(t,!0);D(t),L(e=>H(r,e),[()=>SE(R(n))]),V(e,t)},l=e=>{V(e,IR())};U(o,e=>{PE.liveLogsStreaming?R(n)?e(c,1):e(l,-1):e(s)}),D(t),L(()=>a=G(i,1,`live-dot svelte-tve6yv`,null,a,{"is-streaming":R(r)})),V(e,t)},s=A(()=>bu.liveLogsVisible());U(a,e=>{R(s)&&e(o)}),V(e,i),k()}var zR=B(` `),BR=B(``);function VR(e,t){O(t,!0);let n=A(()=>[{key:`provider`,text:vd(t.entry)||`-`},{key:`model`,text:t.entry.requested_model||t.entry.model||`-`,mono:!0},{key:`user_path`,text:t.entry.user_path,mono:!0},{key:`request_id`,text:`request_id: `+(t.entry.request_id||`-`),mono:!0},{key:`ip`,text:t.entry.client_ip&&`ip: `+t.entry.client_ip,mono:!0},{key:`auth_key_id`,text:t.entry.auth_key_id&&`auth_key_id: `+t.entry.auth_key_id,mono:!0},{key:`alias`,text:t.entry.alias_used&&`alias`,class:`audit-alias-badge`},{key:`resolved`,text:t.entry.alias_used&&t.entry.resolved_model&&`resolved: `+xd(t.entry),mono:!0},{key:`failover`,text:XL(t.entry)&&`failover: `+XL(t.entry),mono:!0},{key:`stream`,text:t.entry.stream&&`stream`},{key:`error_type`,text:t.entry.error_type}].filter(e=>!!e.text));var r=BR(),i=I(P(r),2);W(i,21,()=>R(n),e=>e.key,(e,t)=>{var n=zR(),r=P(n,!0);D(n),L(()=>{G(n,1,Ni([`provider-badge`,R(t).class,{mono:R(t).mono}]),`svelte-hyopt0`),H(r,R(t).text)}),V(e,n)}),D(i),D(r),V(e,r),k()}var HR=B(``),UR=B(` `);function WR(e,t){O(t,!0);let n=A(()=>rR(t.entry)),r=A(()=>R(n).length>0?aR(t.entry):``),i=A(()=>R(n).length>0?iR(t.entry):``);var a=Xr(),o=F(a),s=e=>{var a=UR(),o=P(a);W(o,21,()=>R(n),e=>t.entry.id+`-pip-`+e.seq,(e,t)=>{var n=HR();let r;L(e=>{r=G(n,1,`audit-attempt-pip svelte-1eu22xn`,null,r,{"audit-attempt-success":!!(R(t)&&R(t).success),"audit-attempt-error":!(R(t)&&R(t).success)}),K(n,`title`,e)},[()=>oR(R(t))]),V(e,n)}),D(o);var s=I(o,2),c=P(s,!0);D(s),D(a),L(()=>{K(a,`title`,R(r)),K(a,`aria-label`,R(r)),H(c,R(i))}),V(e,a)};U(o,e=>{R(n).length>0&&e(s)}),V(e,a),k()}var GR=new Set([`instructions`,`messages`,`input`,`previous_response_id`,`choices`,`output`]);function KR(e){if(!e||typeof e!=`object`)return``;let t=String(e.type||``).toLowerCase();if(t===`image`||t===`image_url`||t===`input_image`||t===`output_image`)return`[Image]`;if(t===`audio`||t===`input_audio`||t===`output_audio`)return`[Audio]`;if(t===`file`||t===`input_file`||t===`output_file`){let t=String(e.filename||e.name||``).trim();return t?`[File: `+t+`]`:`[File]`}return typeof e.refusal==`string`?e.refusal:``}function qR(e){if(e==null)return``;if(typeof e==`string`)return e.trim();if(Array.isArray(e))return e.map(e=>typeof e==`string`?e:!e||typeof e!=`object`?``:typeof e.text==`string`?e.text:typeof e.output_text==`string`?e.output_text:KR(e)).filter(Boolean).join(` -`).trim();if(typeof e==`object`){if(typeof e.text==`string`)return e.text.trim();try{return JSON.stringify(e,null,2)}catch{return``}}return String(e).trim()}function JR(e){return!e||typeof e!=`object`?``:qR(e.content)||(typeof e.refusal==`string`?e.refusal.trim():``)}function YR(e){if(e==null)return[];if(typeof e==`string`)return e?[e]:[];if(Array.isArray(e))return e.flatMap(e=>typeof e==`string`?e?[e]:[]:!e||typeof e!=`object`?[]:typeof e.text==`string`?e.text?[e.text]:[]:typeof e.output_text==`string`&&e.output_text?[e.output_text]:[]);if(typeof e==`object`)return typeof e.text==`string`&&e.text?[e.text]:[];let t=String(e);return t?[t]:[]}function XR(e){if(e==null)return[];if(Array.isArray(e))return e.flatMap(XR);if(typeof e==`object`)return Object.entries(e).flatMap(([e,t])=>[e,...XR(t)]);let t=String(e);return t?[t]:[]}function ZR(e){return qz(e).flatMap(e=>[...e.name?[String(e.name)]:[],...XR(e.arguments)])}function QR(e){return Array.isArray(e)?e.flatMap(e=>e&&typeof e==`object`&&e.type===`tool_use`?ZR([e]):YR(e)):YR(e)}function $R(e){let t=e&&e.usage?e.usage.estimated_cached_characters:null;if(t==null)return null;let n=Number(t);return Number.isFinite(n)&&n>0?Math.floor(n):0}function ez(e,t){if(!e)return null;let n=(Array.isArray(t)?t:[]).reduce((e,t)=>e+String(t||``).length,0),r=Math.min(String(e).length,n);return r>0?{total:r}:null}function tz(e){let t=e&&e.arguments!==void 0?e.arguments:``,n=``;if(typeof t==`string`)n=t;else try{n=JSON.stringify(t)}catch{n=String(t)}return(String(e&&e.name||``)+`(`+n+`)`).length}function nz(e){return{characters:(Array.isArray(e)?e:[]).map(tz)}}function rz(e,t){let n=Math.max(0,Number(t||0));return e.map(e=>{if(!e||e.role===`error`)return e;let t=Math.max(0,Number(e._promptTextCharacters||0)),r=Math.min(n,t);n-=r;let i=0;(Array.isArray(e._toolPromptCharacters)?e._toolPromptCharacters:[]).forEach(e=>{let t=Math.max(0,Number(e||0)),r=Math.min(n,t);n-=r,i+=r});let a=t+(e._toolPromptCharacters||[]).reduce((e,t)=>e+Math.max(0,Number(t||0)),0);return{...e,promptCacheRatio:a>0?(r+i)/a:0}})}function iz(e){if(e==null)return[];if(typeof e==`string`){let t=e.trim();return t?[{role:`user`,text:t}]:[]}if(!Array.isArray(e)){let t=qR(e);return t?[{role:`user`,text:t}]:[]}return e.map(e=>{if(!e||typeof e!=`object`)return null;let t=String(e.role||`user`).toLowerCase(),n=qR(e.content);return n?{role:t,text:n}:null}).filter(Boolean)}function az(e){return JR(e)}function oz(e){if(!e||typeof e!=`object`)return[];let t=[];return t.push(...YR(e.instructions)),Array.isArray(e.messages)&&e.messages.forEach(e=>{!e||typeof e!=`object`||(t.push(...QR(e.content)),t.push(...ZR(e.tool_calls)))}),typeof e.input==`string`?t.push(e.input):Array.isArray(e.input)?e.input.forEach(e=>{if(!(!e||typeof e!=`object`)){if(e.type===`function_call`||e.type===`tool_use`){t.push(...ZR([e]));return}t.push(...QR(e.content)),typeof e.text==`string`&&t.push(e.text)}}):e.input&&typeof e.input==`object`&&(t.push(...YR(e.input.content)),typeof e.input.text==`string`&&t.push(e.input.text)),t.map(e=>String(e||``)).filter(e=>e.length>0)}var sz=e=>qR(e);function cz(e){if(!e||!e.data)return``;let t=yL(e.data.response_body,0,sz);if(t)return t;let n=e.data.error_message;if(n==null)return``;if(typeof n==`string`){let e=n.trim();return e?yL(_L(e),0,sz)||e:``}return yL(n,0,sz)||qR(n)}function lz(e){return Array.isArray(e)?e.some(e=>!e||typeof e!=`object`?!1:e.type===`message`||e.role===`assistant`||e.role===`user`||e.role===`system`?!0:Array.isArray(e.content)?e.content.some(e=>!e||typeof e!=`object`?!1:typeof e.text==`string`||e.type===`output_text`||e.type===`input_text`):!1):!1}function uz(e){if(!e)return!1;let t=String(e).toLowerCase();return t===`/v1/embeddings`||t===`/v1/embeddings/`||t.startsWith(`/v1/embeddings?`)||t.startsWith(`/v1/embeddings/`)}function dz(e){return e?!!pz(e):!1}function fz(e){let t=String(e||``).trim().split(`?`)[0].replace(/\/+$/,``).toLowerCase();return t.startsWith(`/v1/`)?t.slice(3):t}function pz(e){switch(fz(e)){case`/chat/completions`:return`chat`;case`/responses`:return`responses`;case`/messages`:return`messages`;default:return``}}function mz(e){if(!e||typeof e!=`object`)return null;try{return JSON.parse(JSON.stringify(e))}catch{return null}}function hz(e,t){if(!t||typeof t!=`object`)return;let n=e[e.length-1];try{if(n&&JSON.stringify(n)===JSON.stringify(t))return}catch{}e.push(t)}function gz(e){let t=pz(e&&e.path),n=e&&e.data&&e.data.request_body;return!t||!n||typeof n!=`object`?!1:t!==`responses`||(e.data&&e.data.response_body&&typeof e.data.response_body.id==`string`?e.data.response_body.id.trim():``)!==``||eB(n)!==``}function _z(e,t){let n=String(t||``).trim(),r=pz(e&&e.path),i=mz(e&&e.data&&e.data.request_body);if(!n||!r||!i)return null;let a=e&&e.data?e.data.response_body:null;if(r===`responses`){let e=a&&typeof a.id==`string`?a.id.trim():``,t=eB(i);return!e&&!t?null:(i.input=n,e&&!t?i.previous_response_id=e:delete i.previous_response_id,i)}let o=Array.isArray(i.messages)?i.messages:[];if(r===`chat`){let e=a&&Array.isArray(a.choices)?a.choices[0]:null;e&&e.message&&hz(o,mz(e.message)),o.push({role:`user`,content:n})}else a&&a.content!==void 0&&hz(o,{role:String(a.role||`assistant`),content:mz(a.content)||a.content}),o.push({role:`user`,content:n});return i.messages=o,i}var vz=new Set(`authorization.proxy-authorization.cookie.content-type.content-length.host.accept.connection.accept-encoding.content-encoding.transfer-encoding.user-agent.date.expect.upgrade.via.te.trailer.keep-alive.origin.referer.forwarded.x-real-ip.traceparent.tracestate.x-request-id.idempotency-key.x-idempotency-key.x-gomodel-timezone.x-gomodel-interaction-parent`.split(`.`));function yz(e,t,n=``){let r=e&&e.data&&e.data.request_headers,i={};return r&&typeof r==`object`&&Object.keys(r).forEach(e=>{let t=String(e).toLowerCase(),n=String(r[e]==null?``:r[e]);!e||!n||n===`[REDACTED]`||vz.has(t)||t.startsWith(`sec-`)||t.startsWith(`cf-`)||t.startsWith(`x-forwarded-`)||(i[e]=n)}),i[`X-GoModel-Interaction-Parent`]=String(t||e&&e.id||``).trim(),String(n||``).trim()&&(i[`X-Request-ID`]=String(n).trim()),i}function bz(e,t){let n=String(t||``).trim();return!n||!Array.isArray(e)?null:e.find(e=>String(e&&e.request_id||``).trim()===n)||null}function xz(e,t,n,r,i){let a=Array.isArray(e)?e:[],o=String(i&&i.id||``).trim(),s=String(i&&i.request_id||``).trim(),c=String(i&&i.session_id||``).trim(),l=String(r||``).trim(),u=Sz(i),d=a.some(e=>o&&String(e&&e.id||``).trim()===o||s&&String(e&&e.request_id||``).trim()===s),f=!!l&&s===l,p=!!n&&c===String(n).trim(),m=!!u&&(u===String(t||``).trim()||a.some(e=>String(e&&e.id||``).trim()===u)),h=d||f||!l&&(p||m);return{accepted:h,submittedChild:f,followUpRequestID:h&&f&&o?``:l}}function Sz(e){let t=e&&e.data&&e.data.request_headers;if(!t||typeof t!=`object`)return``;let n=Object.keys(t).find(e=>e.toLowerCase()===`x-gomodel-interaction-parent`);return n?String(t[n]||``).trim():``}function Cz(e,t){return!Array.isArray(e)||!t?null:e.find(e=>String(e&&e.id||``)===String(t))||null}function wz(e){return!Array.isArray(e)||e.length===0?null:e.reduce((e,t)=>e?tB(t,e)>=0?t:e:t,null)}function Tz(e,t){let n=new Set(Array.isArray(t)?t.map(String):[]);return wz((Array.isArray(e)?e:[]).filter(e=>{let t=String(e&&e.id||``);return n.has(t)&&e&&e.data&&e.data.request_body!=null}))}function Ez(e,t){let n=wz(e);return!!n&&String(n.id||``)===String(t||``)}function Dz(e,t,n){return String(e||``).trim()===`audit.flushed`&&String(t||``).trim()!==``&&String(t||``).trim()===String(n||``).trim()}function Oz(e,t){let n=Array.isArray(e)?e.filter(Boolean).map(String):[];return(Array.isArray(t)?t:[]).forEach(e=>{let t=String(e&&(e.id||e.request_id)||``).trim();t&&!n.includes(t)&&n.push(t)}),n}function kz(e){if(e&&e.conversation_payload)return!0;let t=e&&e.data?e.data.request_body:null,n=e&&e.data?e.data.response_body:null,r=t&&(Array.isArray(t.messages)||t.input!==void 0||typeof t.instructions==`string`||typeof t.previous_response_id==`string`),i=n&&(Array.isArray(n.choices)||lz(n.output));return!!(r||i)}function Az(e){return!e||uz(e.path)?!1:dz(e.path)||kz(e)}function jz(e){let t=0,n=!1,r=!1,i=String(e||``);for(let e=0;e0&&a+1`,`>`).replaceAll(`"`,`"`).replaceAll(`'`,`'`)}function Fz(e){return!!(e&&typeof e==`object`&&e.__audio__===!0)}function Iz(e){let t=Number(e||0);if(!Number.isFinite(t)||t<=0)return`0 B`;let n=[`B`,`KB`,`MB`,`GB`],r=0,i=t;for(;i>=1024&&r`
`+Pz(t)+``+Pz(Rz(e[t]))+`
`);return t.length?``:``}function Bz(e){let t=Lz(e.content_type),n=Pz(t+` · `+Iz(e.bytes)),r=zz(e.meta);if(e.stored&&e.encoding===`base64`&&e.data){let i=String(e.data).replace(/[^A-Za-z0-9+/=]/g,``);return`
`+n+`
`+r+`
`}let i=e.too_large?`Audio too large to store.`:`Audio not logged. Set LOGGING_LOG_AUDIO_BODIES=true to capture playable audio.`;return`
`+n+`
`+Pz(i)+`
`+r+`
`}function Vz(e){try{return JSON.stringify(String(e)).slice(1,-1)}catch{return``}}function Hz(e){if(!e||typeof e!=`object`)return null;let t=Number(e.characters||0);if(!Number.isFinite(t)||t<=0)return null;let n=Array.isArray(e.segments)?e.segments.map(e=>String(e||``)).filter(Boolean):[];return n.length===0?null:{remaining:Math.floor(t),segments:n,segmentIndex:0}}function Uz(e,t){if(!t||t.remaining<=0||t.segmentIndex>=t.segments.length)return Pz(e);let n=``,r=0,i=0;for(;t.remaining>0&&t.segmentIndex`+Pz(l)+``,r=s+l.length,i=s+o.length,t.remaining-=c,c>=a.length){t.segmentIndex++;continue}break}return n?n+Pz(e.slice(r)):Pz(e)}function Wz(e,t,n){let r=n&&typeof n.formatJSON==`function`?n.formatJSON:e=>String(e),i=n&&typeof n.canShowConversation==`function`?n.canShowConversation:()=>!1,a=Hz(n&&n.promptCacheHighlight),o=r(t);if(!o||o===`Not captured`)return Pz(o);if(!i(e))return o.split(` -`).map(e=>Uz(e,a)).join(` +/non-existing`),D(g);var y=I(g,2);AA(y,{id:`virtual-model-description`,label:`Description`,children:(e,t)=>{var r=GP();ut(r),L(()=>r.disabled=n.vmFormManaged),la(r,()=>n.vmForm.description,e=>n.vmForm.description=e),V(e,r)},$$slots:{default:!0}});var b=I(y,2),x=e=>{AA(e,{id:`virtual-model-slowdown`,label:`Slowdown (extra inference time)`,children:(e,t)=>{var r=KP(),i=F(r);ea(i),Ve(2),L(()=>i.disabled=n.vmFormManaged),la(i,()=>n.vmForm.slowdown,e=>n.vmForm.slowdown=e),V(e,r)},$$slots:{default:!0}})},S=A(()=>n.vmFormSupportsSlowdown());U(b,e=>{R(S)&&e(x)});var C=I(b,2),w=P(C),T=e=>{var t=qP(),r=P(t,!0);D(t),L(()=>H(r,`Default enabled: `+(n.vmFormDefaultEnabled?`yes`:`no`)+` · Effective now: `+(n.vmFormEffectiveEnabled?`yes`:`no`))),V(e,t)};U(w,e=>{n.vmFormMode===`edit`&&e(T)});var E=I(w,2),ee=P(E);{let e=A(()=>n.vmFormToggleRestricted()),t=A(()=>n.vmFormToggleLabel());AP(ee,{get enabled(){return n.vmForm.enabled},get restricted(){return R(e)},label:`virtual model`,get disabled(){return n.vmFormManaged},get text(){return R(t)},onclick:()=>{n.vmFormManaged||(n.vmForm.enabled=!n.vmForm.enabled)}})}D(E),D(C),L(()=>{f.disabled=n.vmFormManaged,v.disabled=n.vmFormManaged}),z(`click`,f,()=>n.addVmTarget()),la(v,()=>n.vmForm.user_paths,e=>n.vmForm.user_paths=e),V(e,r)},$$slots:{header:!0,extraActions:!0,default:!0}})}k()}Br([`click`]);var XP=B(`

Pricing override

`,1),ZP=B(``),QP=B(``),$P=B(``),eF=B(``),tF=B(`
`),nF=B(`
Tiered pricing exists for this override and will be preserved. Tier editing can be added + without a database migration.
`),rF=B(`
No pricing fields set.
`),iF=B(`
`),aF=B(`

Currency is USD. Saved fields override model registry and config.yaml pricing for this + selector; unset fields continue to inherit.

Price Type USD Source
`,1);function oF(e,t){O(t,!0);let n=AN;OA(e,{get open(){return n.modelPricingOverrideFormOpen},ariaLabel:`Model pricing editor`,dialogClass:`model-pricing-editor`,get error(){return n.modelPricingOverrideError},get submitting(){return n.modelPricingOverrideSubmitting},submitLabel:`Save Pricing`,onclose:()=>n.closeModelPricingOverrideForm(),onsubmit:()=>n.submitModelPricingOverrideForm(),header:e=>{var t=XP(),r=I(F(t),2),i=P(r,!0);D(r),L(()=>H(i,n.modelPricingOverrideFormDisplayName||n.modelPricingOverrideForm.selector||`Pricing`)),V(e,t)},extraActions:e=>{var t=Xr(),r=F(t),i=e=>{var t=ZP();L(()=>t.disabled=n.modelPricingOverrideSubmitting),z(`click`,t,()=>n.deleteModelPricingOverride()),V(e,t)};U(r,e=>{n.modelPricingOverrideFormHasExistingOverride&&e(i)}),V(e,t)},children:(e,t)=>{var r=aF(),i=F(r),a=P(i);AA(a,{id:`model-pricing-override-selector`,label:`Selector`,children:(e,t)=>{var r=QP();ea(r),la(r,()=>n.modelPricingOverrideForm.selector,e=>n.modelPricingOverrideForm.selector=e),V(e,r)},$$slots:{default:!0}});var o=I(a,2),s=e=>{AA(e,{id:`model-pricing-override-scope`,label:`Scope`,children:(e,t)=>{var r=eF();W(r,21,()=>n.modelPricingOverrideFormScopeOptions,e=>e.value,(e,t)=>{var n=$P(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(r),z(`change`,r,()=>n.setModelPricingOverrideScope(n.modelPricingOverrideFormScope)),Ui(r,()=>n.modelPricingOverrideFormScope,e=>n.modelPricingOverrideFormScope=e),V(e,r)},$$slots:{default:!0}})};U(o,e=>{n.modelPricingOverrideFormScopeOptions.length>1&&e(s)}),D(i);var c=I(i,4);W(c,21,()=>n.modelPricingOverrideRows,e=>e.id,(e,t,r)=>{var i=tF(),a=P(i),o=P(a),s=I(o,2);W(s,21,()=>n.availablePricingFieldOptions(R(t)),e=>e.value,(e,t)=>{var n=$P(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).group+` - `+R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(s),D(a);var c=I(a,2),l=P(c),u=I(l,2);ea(u),D(c);var d=I(c,2);{let e=A(()=>`Remove `+n.pricingFieldLabel(R(t).field));wk(d,{get label(){return R(e)},class:`table-action-btn-danger table-icon-btn pricing-override-remove-row`,onclick:()=>n.removeModelPricingOverrideRow(R(t)),children:(e,t)=>{J(e,{get icon(){return Nu},class:`table-icon-svg`})},$$slots:{default:!0}})}D(i),L(()=>{K(o,`for`,`pricing-type-`+R(t).id),K(s,`id`,`pricing-type-`+R(t).id),K(l,`for`,`pricing-value-`+R(t).id),K(u,`id`,`pricing-value-`+R(t).id)}),Ui(s,()=>R(t).field,e=>R(t).field=e),la(u,()=>R(t).value,e=>R(t).value=e),V(e,i)}),D(c);var l=I(c,2),u=P(l);J(P(u),{get icon(){return lu},class:`form-action-icon`}),Ve(2),D(u),D(l);var d=I(l,2),f=e=>{V(e,nF())};U(d,e=>{n.modelPricingOverrideFormPreservedTiers.length>0&&e(f)});var p=I(d,2),m=I(P(p),2),h=e=>{V(e,rF())},g=A(()=>n.modelPricingEffectivePreviewRows().length===0);U(m,e=>{R(g)&&e(h)}),W(I(m,2),17,()=>n.modelPricingEffectivePreviewRows(),e=>e.field,(e,t)=>{var n=iF(),r=P(n),i=P(r,!0);D(r);var a=I(r,2),o=P(a,!0);D(a);var s=I(a,2),c=P(s,!0);D(s),D(n),L(e=>{H(i,R(t).label),H(o,e),H(c,R(t).source)},[()=>R(t).value===null||R(t).value===void 0?`-`:_f(Number(R(t).value))]),V(e,n)}),D(p),z(`click`,u,()=>n.addModelPricingOverrideRow()),V(e,r)},$$slots:{header:!0,extraActions:!0,default:!0}}),k()}Br([`click`,`change`]);var sF=B(`

Failover mapping

`,1),cF=B(``),lF=B(`

This failover mapping is defined in configuration and is read-only here.

`),uF=B(``),dF=B(`
`),fF=B(`
`,1),pF=B(`
`);function mF(e,t){O(t,!0);{let t=e=>{var t=sF(),n=I(F(t),2),r=P(n,!0);D(n),L(()=>H(r,Q.failoverForm.source||`Failover`)),V(e,t)},n=e=>{var t=Xr(),n=F(t),r=e=>{var t=cF();L(()=>t.disabled=Q.failoverSaving||Q.failoverGenerating),z(`click`,t,()=>Q.deleteFailoverRule()),V(e,t)};U(n,e=>{Q.failoverFormMode===`edit`&&!Q.failoverFormManaged&&e(r)}),V(e,t)},r=A(()=>Q.failoverGenerating||Q.failoverFormManaged);OA(e,{get open(){return Q.failoverFormOpen},ariaLabel:`Failover editor`,get error(){return Q.failoverError},get submitting(){return Q.failoverSaving},get submitDisabled(){return R(r)},submitLabel:`Save`,onclose:()=>Q.closeFailoverForm(),onsubmit:()=>Q.submitFailoverForm(),header:t,extraActions:n,children:(e,t)=>{var n=pF(),r=P(n),i=e=>{V(e,lF())};U(r,e=>{Q.failoverFormManaged&&e(i)});var a=I(r,2);W(a,21,()=>Hf.models,ii,(e,t)=>{var n=uF(),r=P(n,!0);D(n);var i={};L((e,t)=>{H(r,e),i!==(i=t)&&(n.value=(n.__value=t)??``)},[()=>lM(R(t)),()=>lM(R(t))]),V(e,n)}),D(a);var o=I(a,2);AA(o,{id:`failover-target`,label:`Fallback models`,children:(e,t)=>{var n=fF(),r=F(n),i=P(r),a=P(i);ea(a);var o=I(a,2),s=e=>{wk(e,{label:`Remove fallback model`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Q.removePrimaryFailoverTarget(),get disabled(){return Q.failoverFormManaged},children:(e,t)=>{J(e,{get icon(){return Eu},class:`table-icon-svg`})},$$slots:{default:!0}})};U(o,e=>{Q.failoverForm.target_model&&e(s)}),D(i),W(I(i,2),17,()=>Q.failoverForm.targets,ii,(e,t,n)=>{var r=dF(),i=P(r);ea(i),wk(I(i,2),{label:`Remove fallback model`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Q.removeFailoverTarget(n),get disabled(){return Q.failoverFormManaged},children:(e,t)=>{J(e,{get icon(){return Eu},class:`table-icon-svg`})},$$slots:{default:!0}}),D(r),L(()=>i.disabled=Q.failoverFormManaged),la(i,()=>R(t).model,e=>R(t).model=e),V(e,r)}),D(r);var c=I(r,2),l=P(c);J(P(l),{get icon(){return lu},class:`form-action-icon`}),Ve(2),D(l);var u=I(l,2),d=P(u);J(d,{get icon(){return ju},class:`form-action-icon`});var f=I(d,2),p=P(f,!0);D(f),D(u),D(c),L(e=>{a.disabled=Q.failoverFormManaged,l.disabled=Q.failoverFormManaged||Q.failoverGenerating||Q.failoverSaving,u.disabled=e,H(p,Q.failoverGenerating?`Generating...`:`Generate automatically`)},[()=>Q.failoverFormManaged||Q.failoverGenerating||Q.failoverSaving||!Q.failoverEnabled()]),la(a,()=>Q.failoverForm.target_model,e=>Q.failoverForm.target_model=e),z(`click`,l,()=>Q.addFailoverTarget()),z(`click`,u,()=>Q.generateFailoverForForm()),V(e,n)},$$slots:{default:!0}});var s=I(o,2),c=P(s);AP(P(c),{get enabled(){return Q.failoverForm.enabled},label:`failover mapping`,get disabled(){return Q.failoverFormManaged},onclick:()=>{Q.failoverFormManaged||(Q.failoverForm.enabled=!Q.failoverForm.enabled)}}),D(c),D(s),D(n),V(e,n)},$$slots:{header:!0,extraActions:!0,default:!0}})}k()}Br([`click`]);var hF=B(` `),gF=B(`
`),_F=B(``),vF=B(`
`),yF=B(`

No failover suggestions were generated.

`),bF=B(`

No failover drafts match the filter.

`),xF=B(``),SF=B(``);function CF(e,t){O(t,!0),Rd(e,{get open(){return Q.failoverDraftsOpen},variant:`editor`,onclose:()=>Q.closeFailoverDraftsModal(),children:(e,t)=>{var n=SF(),r=P(n),i=I(P(r),2),a=P(i),o=e=>{var t=hF(),n=P(t,!0);D(t),L(e=>H(n,e),[()=>Q.failoverDraftCountLabel()]),V(e,t)};U(a,e=>{Q.failoverGeneratedRules.length>0&&e(o)}),Pd(I(a,2),{label:`Close failover drafts`,onclick:()=>Q.closeFailoverDraftsModal(),get disabled(){return Q.failoverDraftSaving}}),D(i),D(r);var s=I(r,2),c=e=>{Sk(e,{label:`Generating failover drafts...`,class:`failover-drafts-loading`})};U(s,e=>{Q.failoverGenerating&&e(c)});var l=I(s,2),u=e=>{var t=gF(),n=P(t);DO(n,{placeholder:`Filter failover drafts...`,label:`Filter failover drafts`,get value(){return Q.failoverDraftFilter},set value(e){Q.failoverDraftFilter=e}});var r=I(n,2),i=P(r);J(i,{get icon(){return Ll},class:`form-action-icon`});var a=I(i,2),o=P(a,!0);D(a),D(r),D(t),L(e=>{r.disabled=Q.failoverDraftSaving,H(o,e)},[()=>Q.allFailoverDraftsSelected()?`Deselect all`:`Select all`]),z(`click`,r,()=>Q.toggleAllFailoverDrafts()),V(e,t)};U(l,e=>{!Q.failoverGenerating&&Q.failoverGeneratedRules.length>0&&e(u)});var d=I(l,2),f=e=>{var t=vF();W(t,21,()=>Q.filteredFailoverDrafts(),e=>`failover-draft:`+Q.failoverPrimaryModel(e),(e,t)=>{var n=_F(),r=P(n);ea(r);var i=I(r,2),a=P(i),o=P(a,!0);D(a);var s=I(a,2),c=P(s,!0);D(s),D(i),D(n),L((e,t,n,i)=>{na(r,e),r.disabled=Q.failoverDraftSaving,K(r,`aria-label`,t),H(o,n),H(c,i)},[()=>Q.failoverDraftSelected(R(t)),()=>`Select failover draft for `+Q.failoverPrimaryModel(R(t)),()=>Q.failoverPrimaryModel(R(t)),()=>Q.failoverTargetLabel(R(t))]),z(`change`,r,e=>Q.setFailoverDraftSelected(R(t),e.currentTarget.checked)),V(e,n)}),D(t),V(e,t)},p=A(()=>!Q.failoverGenerating&&Q.filteredFailoverDrafts().length>0);U(d,e=>{R(p)&&e(f)});var m=I(d,2),h=e=>{V(e,yF())};U(m,e=>{!Q.failoverGenerating&&Q.failoverGeneratedRules.length===0&&!Q.failoverError&&e(h)});var g=I(m,2),_=e=>{V(e,bF())},v=A(()=>!Q.failoverGenerating&&Q.failoverGeneratedRules.length>0&&Q.filteredFailoverDrafts().length===0);U(g,e=>{R(v)&&e(_)});var y=I(g,2),b=e=>{var t=xF(),n=P(t,!0);D(t),L(()=>H(n,Q.failoverError)),V(e,t)};U(y,e=>{Q.failoverError&&e(b)});var x=I(y,2),S=P(x),C=I(S,2),w=P(C);J(w,{get icon(){return pu},class:`form-action-icon`});var T=I(w,2),E=P(T,!0);D(T),D(C),D(x),D(n),L(e=>{S.disabled=Q.failoverDraftSaving,C.disabled=e,H(E,Q.failoverDraftSaving?`Saving...`:`Save selected`)},[()=>Q.failoverGenerating||Q.failoverDraftSaving||Q.selectedFailoverDraftCount()===0]),z(`click`,S,()=>Q.closeFailoverDraftsModal()),z(`click`,C,()=>Q.saveSelectedFailoverDrafts()),V(e,n)},$$slots:{default:!0}}),k()}Br([`click`,`change`]);var wF=B(`
Rate limit management is unavailable.
`),TF=B(` Add`,1),EF=B(`

`),DF=B(`

No rules.

`),OF=B(` Edit`,1),kF=B(`
`),AF=B(`
`),jF=B(`

`),MF=B(``),NF=B(``);function PF(e,t){O(t,!0);function n(){Y.dialogOpen||Z.closeRateLimitInspector()}Rd(e,{get open(){return Z.rateLimitInspectorOpen},variant:`editor`,onclose:n,children:(e,t)=>{var n=NF(),r=P(n),i=P(r),a=I(P(i),2),o=P(a),s=P(o,!0);D(o),D(a),D(i),Pd(I(i,2),{label:`Close rate limits inspector`,onclick:()=>Z.closeRateLimitInspector()}),D(r);var c=I(r,2),l=e=>{Sk(e,{label:`Loading rate limits...`})},u=e=>{V(e,wF())},d=e=>{var t=Xr();W(F(t),17,()=>Z.rateLimitInspectorSections(),e=>e.key,(e,t)=>{var n=jF(),r=P(n),i=P(r),a=P(i,!0);D(i);var o=I(i,2);{let e=A(()=>`Add `+R(t).title.toLowerCase());wk(o,{get label(){return R(e)},class:`budget-action-btn`,onclick:()=>Z.openRateLimitFormFromInspector(R(t).scope,R(t).subject),children:(e,t)=>{var n=TF();J(F(n),{get icon(){return lu},class:`table-icon-svg`}),Ve(2),V(e,n)},$$slots:{default:!0}})}D(r);var s=I(r,2),c=e=>{var n=EF(),r=P(n,!0);D(n),L(()=>H(r,R(t).hint)),V(e,n)};U(s,e=>{R(t).hint&&e(c)});var l=I(s,2),u=e=>{V(e,DF())},d=e=>{var n=AF();W(n,21,()=>R(t).items,e=>Z.rateLimitKey(e),(e,t)=>{var n=kF(),r=P(n),i=P(r),a=P(i),o=P(a,!0);D(a);var s=I(a,2),c=P(s),l=P(c);{let e=A(()=>Z.rateLimitIsConcurrent(R(t))?El:Tu);J(l,{get icon(){return R(e)},class:`budget-period-icon`})}var u=I(l,2),d=P(u,!0);D(u),D(c),D(s);var f=I(s,2),p=P(f),m=P(p),h=P(m,!0);D(m);var g=I(m,2),_=P(g,!0);D(g),D(p);var v=I(p,2),y=P(v),b=e=>{wk(e,{label:`Edit rate limit`,class:`budget-action-btn`,onclick:()=>Z.openRateLimitFormFromInspector(null,null,R(t)),children:(e,t)=>{var n=OF();J(F(n),{get icon(){return su},class:`budget-action-icon`}),Ve(2),V(e,n)},$$slots:{default:!0}})},x=A(()=>!Z.rateLimitIsReadOnly(R(t)));U(y,e=>{R(x)&&e(b)}),D(v),D(f),D(i),D(r),D(n),L((e,t,r,i,a,s,c,l)=>{G(n,1,`budget-row ${e??``}`),Bi(n,t),K(n,`title`,r),H(o,i),H(d,a),H(h,s),K(g,`title`,c),H(_,l)},[()=>Z.rateLimitPressureClass(R(t)),()=>Z.rateLimitPressureStyle(R(t)),()=>Z.rateLimitPressurePercent(R(t))+`% of the most constrained cap used`,()=>Z.rateLimitSubject(R(t)),()=>Z.rateLimitPeriodLabel(R(t)),()=>Z.rateLimitInspectorSummary(R(t)),()=>Z.rateLimitIsReadOnly(R(t))?`Declared in configuration; read-only in the dashboard`:`Managed via dashboard or admin API`,()=>Z.rateLimitSourceLabel(R(t))]),V(e,n)}),D(n),V(e,n)};U(l,e=>{R(t).items.length===0?e(u):e(d,-1)}),D(n),L(()=>H(a,R(t).title)),V(e,n)}),V(e,t)};U(c,e=>{Z.rateLimitsLoading?e(l):Z.rateLimitsAvailable?e(d,-1):e(u,1)});var f=I(c,2),p=P(f),m=I(p,2),h=e=>{var t=MF();z(`click`,t,()=>{Z.closeRateLimitInspector(),Gu.navigate(`rate-limits`)}),V(e,t)},g=A(()=>Z.rateLimitsEnabled());U(m,e=>{R(g)&&e(h)}),D(f),D(n),L(()=>H(s,Z.rateLimitInspector.title)),z(`click`,p,()=>Z.closeRateLimitInspector()),V(e,n)},$$slots:{default:!0}}),k()}Br([`click`]);var FF=B(`
models
`),IF=B(`
Virtual models feature is unavailable.
`),LF=B(`
`),RF=B(``),zF=B(`
`),BF=B(``),VF=B(`
`),HF=B(`

No models registered.

`),UF=B(`

No models in this category.

`),WF=B(`

No models match your filter.

`),GF=B(`
`);function KF(e,t){O(t,!0),On(()=>{Y.refreshTick,Gu.page===`models`&&(lN.fetchVirtualModels(),AN.fetchModelPricingOverrides(),Q.fetchFailoverRules(),Z.fetchRateLimitsPage())}),On(()=>{let e=lN.filteredDisplayModels.length;return wr(()=>lN.restartModelRendering(e)),()=>lN.stopModelRendering()});let n=A(()=>Y.needsAuth);var r=GF(),i=P(r),a=I(P(i),2),o=e=>{var t=FF(),n=P(t),r=P(n,!0);D(n),Ve(),D(t),L(()=>H(r,Hf.filter?lN.filteredDisplayModels.length+` / `+lN.displayModels.length:lN.displayModels.length)),V(e,t)};U(a,e=>{lN.displayModels.length>0&&e(o)}),D(i);var s=I(i,2);Wf(s,{});var c=I(s,2),l=e=>{V(e,IF())};U(c,e=>{!lN.virtualModelsAvailable&&!R(n)&&e(l)});var u=I(c,2),d=e=>{var t=LF(),n=P(t,!0);D(t),L(()=>H(n,lN.aliasError)),V(e,t)};U(u,e=>{lN.aliasError&&!R(n)&&e(d)});var f=I(u,2),p=e=>{var t=LF(),n=P(t,!0);D(t),L(()=>H(n,AN.modelPricingOverrideError)),V(e,t)};U(f,e=>{AN.modelPricingOverrideError&&!R(n)&&!AN.modelPricingOverrideFormOpen&&e(p)});var m=I(f,2),h=e=>{var t=zF();W(t,21,()=>Hf.categories,e=>e.category,(e,t)=>{var n=RF();let r;var i=P(n),a=P(i,!0);D(i);var o=I(i,2),s=P(o,!0);D(o),D(n),L(()=>{r=G(n,1,`category-tab svelte-scpjps`,null,r,{active:Hf.activeCategory===R(t).category}),H(a,R(t).display_name),H(s,R(t).count)}),z(`click`,n,()=>Hf.selectCategory(R(t).category)),V(e,n)}),D(t),V(e,t)};U(m,e=>{Hf.categories.length>0&&e(h)});var g=I(m,2),_=e=>{var t=VF(),n=P(t);DO(P(n),{placeholder:`Filter by provider, provider/model, alias, or owner...`,label:`Filter models by provider, provider/model, alias, or owner`,get value(){return Hf.filter},set value(e){Hf.filter=e}}),D(n);var r=I(n,2),i=P(r),a=e=>{var t=BF();J(P(t),{get icon(){return lu},class:`alias-create-icon`}),Ve(2),D(t),z(`click`,t,()=>lN.openVirtualModelCreate()),V(e,t)};U(i,e=>{lN.virtualModelsAvailable&&e(a)}),D(r),D(t),V(e,t)};U(g,e=>{(lN.displayModels.length>0||Hf.filter||lN.virtualModelsAvailable)&&e(_)});var v=I(g,2),y=e=>{{let t=A(()=>lN.modelLoadingText());Sk(e,{get label(){return R(t)},class:`models-loading-state`})}},b=A(()=>lN.modelsBusy()&&!R(n));U(v,e=>{R(b)&&e(y)});var x=I(v,2);YP(x,{});var S=I(x,2);oF(S,{});var C=I(S,2),w=e=>{OP(e,{})};U(C,e=>{(lN.displayModels.length>0||Hf.filter)&&e(w)});var T=I(C,2),E=e=>{V(e,HF())};U(T,e=>{lN.displayModels.length===0&&!Hf.loading&&!R(n)&&!Hf.filter&&(Hf.activeCategory===`all`||!Hf.activeCategory)&&e(E)});var ee=I(T,2),te=e=>{V(e,UF())};U(ee,e=>{lN.displayModels.length===0&&!Hf.loading&&!R(n)&&!Hf.filter&&Hf.activeCategory&&Hf.activeCategory!==`all`&&e(te)});var ne=I(ee,2),re=e=>{V(e,WF())};U(ne,e=>{lN.displayModels.length>0&&lN.filteredDisplayModels.length===0&&Hf.filter&&e(re)});var ie=I(ne,2);PF(ie,{});var ae=I(ie,2);Uj(ae,{});var oe=I(ae,2);mF(oe,{}),CF(I(oe,2),{}),D(r),V(e,r),k()}Br([`click`]);var qF=`draft-workflow-preview`;function JF(){return{scope_provider:``,scope_model:``,scope_user_path:``,name:``,description:``,features:{cache:!0,audit:!0,usage:!0,budget:!0,guardrails:!1,failover:!0},guardrails:[]}}function YF(){return{scope_provider:``,scope_model:``,scope_user_path:``}}function XF(e){return{ref:``,step:Number.isFinite(e)?e:10}}function ZF(e){let t=e==null?``:String(e).trim();if(t===``)return NaN;let n=Number(t);return Number.isFinite(n)?n:NaN}function QF(e,t,n){if(!e||typeof e!=`object`||Array.isArray(e))return n;let r=t.charAt(0).toUpperCase()+t.slice(1);for(let n of[t,r])if(Object.prototype.hasOwnProperty.call(e,n)&&e[n]!==null&&e[n]!==void 0)return e[n];return n}function $F(e,t){return!e||typeof e!=`object`||Array.isArray(e)?!1:[t,t.charAt(0).toUpperCase()+t.slice(1)].some(t=>Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==null&&e[t]!==void 0)}function eI(e){return{cache:!!QF(e,`cache`,!1),audit:!!QF(e,`audit`,!1),usage:!!QF(e,`usage`,!1),budget:QF(e,`budget`,!0)!==!1,guardrails:!!QF(e,`guardrails`,!1),failover:QF(e,`failover`,!0)!==!1}}function tI(e,t){let n=eI(e),r=t||{},i=n.usage&&!!r.usage;return{cache:n.cache&&!!r.cache,audit:n.audit&&!!r.audit,usage:i,budget:i&&n.budget&&!!r.budget,guardrails:n.guardrails&&!!r.guardrails,failover:n.failover&&!!r.failover}}function nI(e,t){let n=e&&e.workflow_payload&&e.workflow_payload.features?e.workflow_payload.features:e&&e.features?e.features:{};return{...tI((e&&e.effective_features&&typeof e.effective_features==`object`&&!Array.isArray(e.effective_features)?e.effective_features:null)||n,t),failover:eI(n).failover}}function rI(e,t){return nI(e,t).failover?`On`:`Off`}function iI(e){return(Array.isArray(e&&e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:Array.isArray(e&&e.guardrails)?e.guardrails:[]).map(e=>({ref:String(e&&e.ref||``).trim(),step:ZF(e&&e.step)})).filter(e=>Number.isInteger(e.step)&&e.step>=0)}function aI(e,t){return nI(e,t).guardrails&&Array.isArray(e&&e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:[]}function oI(e){return String(e&&(e.scope_provider_name||e.scope_provider)||``).trim()}function sI(e){return String(e&&(e.provider_name||e.provider_type)||``).trim()}function cI(e,t){let n=new Set,r=String(t&&t.scope_provider||``).trim();return r&&n.add(r),(Array.isArray(e)?e:[]).forEach(e=>{let t=sI(e);t&&n.add(t)}),[...n].sort()}function lI(e,t,n){let r=String(t||``).trim(),i=new Set,a=String(n&&n.scope_provider||``).trim(),o=String(n&&n.scope_model||``).trim();return r&&r===a&&o&&i.add(o),(Array.isArray(e)?e:[]).forEach(e=>{if(r&&sI(e)!==r)return;let t=String(e&&e.model&&e.model.id||``).trim();t&&i.add(t)}),[...i].sort()}function uI(e){let t=String(e&&e.scope_type||``).trim();return t===`provider_model`?`Provider Name + Model`:t===`provider_model_path`?`Provider Name + Model + Path`:t===`provider_path`?`Provider Name + Path`:t===`path`?`Path`:t===`provider`?`Provider Name`:`Global`}function dI(e){return String(e&&e.scope_display||`global`).trim()||`global`}function fI(e){let t=String(e&&e.name||``).trim();if(t)return t;let n=dI(e);return n===`global`?`All models`:n}function pI(e){let t=String(e||``).trim();if(!t)return``;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`);for(let e of n){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function mI(e){if(pI(e))return``;let t=String(e||``).trim();if(!t)return``;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`),r=[];for(let e of n){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function hI(e){let t=e||JF(),n=String(t.scope_provider||``).trim(),r=mI(t.scope_user_path);return{scope_provider:n,scope_model:n?String(t.scope_model||``).trim():``,scope_user_path:r}}function gI(e){let t=String(e&&e.scope_provider||``).trim(),n=t?String(e&&e.scope_model||``).trim():``,r=mI(e&&e.scope_user_path);return!t&&!r?`global`:!t&&r?`path`:!n&&!r?`provider`:!n&&r?`provider_path`:r?`provider_model_path`:`provider_model`}function _I(e){let t=String(e&&e.scope_provider||``).trim(),n=t?String(e&&e.scope_model||``).trim():``,r=mI(e&&e.scope_user_path),i=gI({scope_provider:t,scope_model:n,scope_user_path:r});return i===`global`?`global`:i===`path`?r:i===`provider`?t:i===`provider_path`?t+` @ `+r:i===`provider_model_path`?t+`/`+n+` @ `+r:t+`/`+n}function vI(e,t){let n=t||YF(),r=oI(e&&e.scope),i=r?String(e&&e.scope&&e.scope.scope_model||``).trim():``,a=mI(e&&e.scope&&e.scope.scope_user_path);return r===String(n.scope_provider||``).trim()&&i===String(n.scope_model||``).trim()&&a===mI(n.scope_user_path)}function yI(e,t,n){let r=hI(t);return!(r.scope_provider!==``||r.scope_model!==``||r.scope_user_path!==``)&&!n?null:(Array.isArray(e)?e:[]).find(e=>vI(e,r))||null}function bI(e){return String(e&&e.scope_type||``).trim()!==`global`}function xI(e){let t=String(e||``).trim();return t?t.length<=14?t:t.slice(0,12)+`…`:`—`}function SI(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.description,e.scope_display,e.scope_type,oI(e&&e.scope),e.scope&&e.scope.scope_model,e.scope&&e.scope.scope_user_path,e.workflow_hash,...Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails.map(e=>e.ref):[]].some(e=>String(e||``).toLowerCase().includes(r)))}function CI(e,t){let n=e||JF(),r=hI(n),i=eI(n.features||{}),a=tI(i,t);a.failover=i.failover;let o=!!a.guardrails,s=o?iI(n):[];return{id:qF,scope_type:gI(r),scope_display:_I(r),scope:{scope_provider_name:r.scope_provider,scope_model:r.scope_model,...r.scope_user_path?{scope_user_path:r.scope_user_path}:{}},name:String(n.name||``).trim(),description:String(n.description||``).trim(),workflow_payload:{schema_version:1,features:{cache:!!a.cache,audit:!!a.audit,usage:!!a.usage,budget:!!a.budget,guardrails:o,failover:!!a.failover},guardrails:s}}}function wI({form:e,caps:t,workflows:n=[],formHydrated:r=!1,hydratedScope:i=null}){let a=e||JF(),o=String(a.scope_provider||``).trim(),s=o?String(a.scope_model||``).trim():``,c=mI(a.scope_user_path),l=eI(a.features||{}),u=tI(l,t),d=yI(n,a,r),f=d&&d.workflow_payload&&d.workflow_payload.features,p=$F(f,`failover`),m=p?QF(f,`failover`,!0)!==!1:null,h=i||YF(),g=String(h.scope_provider||``).trim()===o&&String(h.scope_model||``).trim()===s&&mI(h.scope_user_path)===mI(c),_=!!(t&&t.failover),v=_||!!r&&g&&Object.prototype.hasOwnProperty.call(l,`failover`)||!r&&!!d&&p,y=u.guardrails?(Array.isArray(a.guardrails)?a.guardrails:[]).map(e=>({ref:String(e&&e.ref||``).trim(),step:ZF(e&&e.step)})):[],b={scope_provider_name:o,scope_model:s,...c?{scope_user_path:c}:{},name:String(a.name||``).trim(),description:String(a.description||``).trim(),workflow_payload:{schema_version:1,features:{cache:!!u.cache,audit:!!u.audit,usage:!!u.usage,budget:!!u.budget,guardrails:!!u.guardrails},guardrails:y}};return v&&(b.workflow_payload.features.failover=!_&&!r&&d&&p?m:!!l.failover),b}function TI(e,{models:t=[],hydratedScope:n=null}={}){let r=n||YF(),i=String(r.scope_provider||``).trim(),a=String(r.scope_model||``).trim(),o=String(e&&(e.scope_provider_name||e.scope_provider)||``).trim(),s=String(e&&e.scope_model||``).trim();if(o&&!cI(t,r).includes(o)&&o!==i)return`Choose a registered provider name.`;if(s&&!o)return`Model selection requires a provider name.`;if(s){let e=lI(t,o,r),n=o===i&&s===a;if(!e.includes(s)&&!n)return`Choose a registered model for the selected provider name.`}let c=pI(e.scope_user_path);if(c)return c;let l=e.workflow_payload&&e.workflow_payload.features?e.workflow_payload.features:{},u=Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:[];if(!l.guardrails)return``;let d=new Set;for(let e of u){if(!e.ref)return`Each guardrail step needs a guardrail ref.`;if(!Number.isInteger(e.step)||e.step<0)return`Each guardrail step must use a non-negative integer step number.`;if(d.has(e.ref))return`Each guardrail ref may appear only once in a workflow.`;d.add(e.ref)}return``}var EI=new class{#e=j(N([]));get workflows(){return R(this.#e)}set workflows(e){M(this.#e,e,!0)}#t=j(!0);get available(){return R(this.#t)}set available(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}#r=j(``);get error(){return R(this.#r)}set error(e){M(this.#r,e,!0)}#i=j(``);get filter(){return R(this.#i)}set filter(e){M(this.#i,e,!0)}#a=j(!1);get formOpen(){return R(this.#a)}set formOpen(e){M(this.#a,e,!0)}#o=j(!1);get submitting(){return R(this.#o)}set submitting(e){M(this.#o,e,!0)}#s=j(``);get deactivatingID(){return R(this.#s)}set deactivatingID(e){M(this.#s,e,!0)}#c=j(``);get formError(){return R(this.#c)}set formError(e){M(this.#c,e,!0)}#l=j(!1);get formHydrated(){return R(this.#l)}set formHydrated(e){M(this.#l,e,!0)}#u=j(N(YF()));get hydratedScope(){return R(this.#u)}set hydratedScope(e){M(this.#u,e,!0)}#d=j(N([]));get guardrailRefs(){return R(this.#d)}set guardrailRefs(e){M(this.#d,e,!0)}#f=j(N(JF()));get form(){return R(this.#f)}set form(e){M(this.#f,e,!0)}#p=null;failoverVisible(){return Td.booleanFlag(`FAILOVER_ENABLED`,!0)}featureCaps(){return{cache:Td.cacheVisible(),audit:Td.auditVisible(),usage:Td.usageVisible(),budget:Td.budgetsVisible(),guardrails:Td.guardrailsVisible(),failover:this.failoverVisible()}}get filteredWorkflows(){return SI(this.workflows,this.filter)}providerOptions(){return cI(Hf.models,this.hydratedScope)}modelOptions(e){return lI(Hf.models,e,this.hydratedScope)}activeScopeMatch(){return yI(this.workflows,this.form,this.formHydrated)}submitMode(){return this.activeScopeMatch()?`save`:`create`}submitLabel(){return this.submitMode()===`save`?`Save`:`Create`}submittingLabel(){return this.submitMode()===`save`?`Saving...`:`Creating...`}preview(){return CI(this.form,this.featureCaps())}openCreate(e){if(this.formOpen=!0,this.submitting=!1,this.formError=``,!e){this.formHydrated=!1,this.hydratedScope=YF(),this.form=JF();return}this.formHydrated=!0,this.hydratedScope={scope_provider:oI(e.scope),scope_model:String(e.scope&&e.scope.scope_model||``).trim(),scope_user_path:String(e.scope&&e.scope.scope_user_path||``).trim()};let t=e.workflow_payload&&e.workflow_payload.features?eI(e.workflow_payload.features):nI(e,this.featureCaps()),n=Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails.map(e=>({ref:String(e&&e.ref||``).trim(),step:ZF(e&&e.step)})).filter(e=>Number.isInteger(e.step)&&e.step>=0):iI(e);this.form={scope_provider:oI(e.scope),scope_model:String(e.scope&&e.scope.scope_model||``),scope_user_path:String(e.scope&&e.scope.scope_user_path||``),name:String(e.name||``),description:String(e.description||``),features:{cache:!!t.cache,audit:!!t.audit,usage:!!t.usage,budget:!!t.budget,guardrails:!!t.guardrails,failover:!!t.failover},guardrails:n.map(e=>({ref:String(e&&e.ref||``),step:Number.isFinite(e&&e.step)?e.step:10}))}}closeForm(){this.formOpen=!1,this.submitting=!1,this.formError=``,this.formHydrated=!1,this.hydratedScope=YF(),this.form=JF()}setProvider(e){if(this.form.scope_provider=String(e||``).trim(),!this.form.scope_provider){this.form.scope_model=``;return}this.modelOptions(this.form.scope_provider).includes(String(this.form.scope_model||``).trim())||(this.form.scope_model=``)}addGuardrailStep(){let e=(Array.isArray(this.form.guardrails)?this.form.guardrails:[]).reduce((e,t)=>{let n=Number(t&&t.step);return Number.isFinite(n)?Math.max(e,n):e},0)+10;this.form.guardrails.push(XF(e))}removeGuardrailStep(e){Array.isArray(this.form.guardrails)&&this.form.guardrails.splice(e,1)}buildRequest(){return wI({form:this.form,caps:this.featureCaps(),workflows:this.workflows,formHydrated:this.formHydrated,hydratedScope:this.hydratedScope})}async fetchWorkflows(){this.#p&&this.#p.abort();let e=new AbortController;this.#p=e,this.loading=!0,this.error=``;let t=setTimeout(()=>e.abort(),1e4),n=await Tk(`/admin/workflows`,{label:`workflows`,options:{signal:e.signal}});if(clearTimeout(t),this.#p===e&&(this.#p=null,this.loading=!1,n.status!==`stale`)){if(n.status===`unavailable`){this.available=!1,this.workflows=[];return}if(n.result&&(this.available=!0),n.status===`error`){this.workflows=[],this.error=e.signal.aborted?`Loading workflows timed out.`:n.error;return}this.workflows=n.items}}async fetchGuardrailRefs(){let e=await Tk(`/admin/workflows/guardrails`,{label:`workflow guardrails`});e.status!==`stale`&&(this.guardrailRefs=e.items)}async fetchPage(){await Promise.all([Td.ensureLoaded(),this.fetchWorkflows(),this.fetchGuardrailRefs()])}async submitForm(){if(this.submitting)return;this.formError=``;let e=this.buildRequest(),t=TI(e,{models:Hf.models,hydratedScope:this.hydratedScope});if(t){this.formError=t;return}this.submitting=!0;try{let t=await Ek(`/admin/workflows`,`POST`,e,{label:`create workflow`,unavailableStatuses:[]});if(t.status===`stale`||t.result&&t.result.status===401)return;if(t.status===`error`){this.formError=t.error;return}of.success(`Workflow created and activated.`),this.closeForm(),this.fetchPage()}finally{this.submitting=!1}}async deactivate(e){let t=String(e&&e.id||``).trim();if(!t||this.deactivatingID||!bI(e))return;let n=fI(e);if(confirm(`Deactivate workflow "`+n+`"? Requests will fall back to the next active workflow for this scope.`)){this.deactivatingID=t;try{let e=await Ek(`/admin/workflows/`+encodeURIComponent(t)+`/deactivate`,`POST`,void 0,{label:`deactivate workflow`,unavailableStatuses:[]});if(e.status===`stale`||e.result&&e.result.status===401)return;if(e.status===`error`){of.error(e.error);return}of.success(`Workflow deactivated.`),this.fetchPage()}finally{this.deactivatingID=``}}}};function DI(e){let t=String(e??``),n=typeof navigator<`u`?navigator.clipboard:null;if(n&&typeof n.writeText==`function`)return n.writeText(t);let r=typeof document<`u`?document:null;if(!r||!r.body||typeof r.execCommand!=`function`)return Promise.reject(Error(`Clipboard API unavailable`));let i=r.createElement(`textarea`);i.value=t,i.setAttribute(`readonly`,``),i.style.position=`fixed`,i.style.top=`0`,i.style.left=`0`,i.style.opacity=`0`;try{if(r.body.appendChild(i),i.focus(),i.select(),i.setSelectionRange(0,i.value.length),!r.execCommand(`copy`))throw Error(`execCommand copy returned false`)}finally{i.parentNode&&i.parentNode.removeChild(i)}return Promise.resolve()}function OI({resetDelayMs:e=2e3,logPrefix:t}={}){let n=N({copied:!1,error:!1}),r=null;function i(){r!==null&&clearTimeout(r),r=null}function a(){i(),r=setTimeout(()=>{n.copied=!1,n.error=!1,r=null},e)}return{get copied(){return n.copied},get error(){return n.error},reset(){i(),n.copied=!1,n.error=!1},async copy(e,r){if(!(e==null||e===``)){i(),n.copied=!1,n.error=!1;try{await DI(typeof r==`function`?r(e):String(e)),n.copied=!0,n.error=!1}catch(e){console.error(t||`Failed to copy text:`,e),n.copied=!1,n.error=!0}a()}}}}var kI=B(``);function AI(e,t){O(t,!0);let n=q(t,`workflowID`,3,``),r=OI({logPrefix:`Failed to copy workflow ID:`});On(()=>{n(),r.reset()});let i=A(()=>r.error?`Unable to copy workflow ID`:r.copied?`Workflow ID copied`:`Copy workflow ID`),a=A(()=>n()?R(i)+` `+n():R(i));async function o(e){e.preventDefault(),n()&&await r.copy(n())}var s=kI();let c;var l=I(P(s),4),u=P(l,!0);D(l);var d=I(l,2);J(P(d),{get icon(){return Gl}}),D(d),D(s),L(()=>{c=G(s,1,`workflow-pipeline-meta mono svelte-1viff7o`,null,c,{"workflow-pipeline-meta-copied":r.copied,"workflow-pipeline-meta-error":r.error}),K(s,`title`,R(i)),K(s,`aria-label`,R(a)),H(u,n())}),z(`click`,s,o),V(e,s),k()}Br([`click`]);var jI=(e,t)=>{let n=()=>(t?.()).icon,r=()=>(t?.()).label,i=Et(()=>h((t?.()).variant,`workflow-node-feature`)),a=()=>(t?.()).state,o=()=>(t?.()).sub,s=()=>(t?.()).badge;var c=FI(),l=P(c),u=e=>{var t=MI();let r;J(P(t),{get icon(){return n()}}),D(t),L(()=>r=G(t,1,`workflow-node-icon svelte-nbptrg`,null,r,{"workflow-node-icon-endpoint":R(i)===`workflow-node-endpoint`})),V(e,t)};U(l,e=>{n()&&e(u)});var d=I(l,2),f=P(d,!0);D(d);var p=I(d,2),m=e=>{var t=NI(),n=P(t,!0);D(t),L(()=>H(n,s())),V(e,t)};U(p,e=>{s()&&e(m)});var g=I(p,2),_=e=>{var t=PI(),n=P(t,!0);D(t),L(()=>H(n,o())),V(e,t)};U(g,e=>{o()&&e(_)}),D(c),L(()=>{G(c,1,Ni([`workflow-node`,R(i),a()]),`svelte-nbptrg`),H(f,r())}),V(e,c)},MI=B(`
`),NI=B(` `),PI=B(` `),FI=B(`
`),II=B(`
`,1),LI=B(`
`,1),RI=B(`
`),zI=B(`
Async
`),BI=B(`
`);function VI(e,t){O(t,!0);let n=q(t,`chart`,19,()=>({}));var r=BI();let i;var a=P(r),o=e=>{AI(e,{get workflowID(){return n().workflowID}})};U(a,e=>{n().workflowID&&e(o)});var s=I(a,2),c=P(s);jI(c,()=>({icon:ku,label:`Client`,variant:`workflow-node-endpoint`}));var l=I(c,4);jI(l,()=>({icon:ql,label:`Auth`,state:n().authNodeClass,sub:n().authNodeSublabel}));var u=I(l,2),d=e=>{var t=II(),r=F(t);jI(I(r,2),()=>({icon:ql,label:`Cache`,state:n().cacheNodeClass,badge:n().cacheStatusLabel})),L(()=>G(r,1,Ni([`workflow-conn`,n().cacheConnClass]),`svelte-nbptrg`)),V(e,t)};U(u,e=>{n().showCache&&e(d)});var f=I(u,2),p=e=>{var t=LI();jI(I(F(t),2),()=>({icon:Au,label:`Budget`,state:n().budgetNodeClass,badge:n().budgetStatusLabel})),V(e,t)};U(f,e=>{n().showBudget&&e(p)});var m=I(f,2),h=e=>{var t=LI();jI(I(F(t),2),()=>({icon:xu,label:`Guardrails`,sub:n().guardrailLabel})),V(e,t)};U(m,e=>{n().showGuardrails&&e(h)});var g=I(m,2),_=I(g,2);jI(_,()=>({label:n().aiLabel,variant:`workflow-node-ai`,state:n().aiNodeClass,sub:n().aiSublabel}));var v=I(_,2),y=e=>{var t=II(),r=F(t);jI(I(r,2),()=>({icon:ru,label:`Failover`,state:n().failoverNodeClass,badge:n().failoverStatusLabel,sub:n().failoverTargetLabel})),L(()=>G(r,1,Ni([`workflow-conn`,n().failoverConnClass]),`svelte-nbptrg`)),V(e,t)};U(v,e=>{n().showFailover&&e(y)});var b=I(v,2);jI(I(b,2),()=>({icon:Vl,label:`Response`,variant:`workflow-node-endpoint`,state:n().responseNodeClass,sub:n().responseNodeSublabel})),D(s);var x=I(s,2),S=e=>{var t=zI(),r=P(t),i=P(r),a=e=>{jI(e,()=>({icon:Fl,label:`Usage`,variant:`workflow-node-feature workflow-node-async`,state:n().usageNodeClass}))};U(i,e=>{n().showUsage&&e(a)});var o=I(i,2),s=e=>{V(e,RI())};U(o,e=>{n().showUsage&&n().showAudit&&e(s)});var c=I(o,2),l=e=>{jI(e,()=>({icon:Jl,label:`Audit Log`,variant:`workflow-node-feature workflow-node-async`,state:n().auditNodeClass}))};U(c,e=>{n().showAudit&&e(l)}),D(r),Ve(4),D(t),V(e,t)};U(x,e=>{n().showAsync&&e(S)}),D(r),L(()=>{i=G(r,1,`workflow-pipeline svelte-nbptrg`,null,i,{"workflow-pipeline-has-meta":n().workflowID}),G(g,1,Ni([`workflow-conn`,n().aiConnClass]),`svelte-nbptrg`),G(b,1,Ni([`workflow-conn`,n().responseConnClass]),`svelte-nbptrg`)}),V(e,r),k()}function HI(e){let t=iI(e).length;return t===0?``:t===1?`1 step`:t+` steps`}function UI(e,t){return t&&t.provider?t.provider:oI(e&&e.scope)||`AI`}function WI(e,t){return t&&t.model?t.model:e&&e.scope&&e.scope.scope_model||null}function GI(e,t){let n=String(e&&e.id||``).trim();if(n&&n!==`draft-workflow-preview`)return n;let r=String(t&&t.workflow_version_id||``).trim();return r&&r!==`draft-workflow-preview`?r:null}function KI(e){let t=e&&e.data&&e.data.workflow_features;return!t||typeof t!=`object`||Array.isArray(t)?null:eI(t)}function qI(e){let t=e&&e.data&&e.data.failover;if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=String(t.target_model||t.targetModel||``).trim()||null;return n?{targetModel:n}:null}function JI(e,t=0){if(t>4||e==null)return``;if(typeof e==`string`){let n=e.trim();if(!n||n[0]!==`{`&&n[0]!==`[`)return``;try{return JI(JSON.parse(n),t+1)}catch{return``}}if(Array.isArray(e)){for(let n of e){let e=JI(n,t+1);if(e)return e}return``}return typeof e==`object`?String(e.code||``).trim()||(e.error===void 0?``:JI(e.error,t+1)):``}function YI(e){let t=e&&e.data&&typeof e.data==`object`&&!Array.isArray(e.data)?e.data:{};return String(t.error_code||t.errorCode||``).trim()||JI(t.response_body)}function XI(e){let t=String(e||``).trim();if(!t)return null;let n=t.indexOf(`/`);return n<=0||n>=t.length-1?null:{provider:t.slice(0,n),model:t.slice(n+1)}}function ZI(e,t){let n=String(e&&(e.requested_model||e.model)||``).trim(),r=qI(e);if(!(r&&r.targetModel))return{provider:String(e&&e.provider||``).trim()||null,model:n||null};let i=XI(n);if(i)return i;let a=oI(t&&t.scope),o=a?String(t&&t.scope&&t.scope.scope_model||``).trim():``;return a||o?{provider:a||null,model:o||n||null}:{provider:null,model:n||null}}function QI(e,t){if(!e)return null;let n=(()=>{let t=String(e.cache_type||``).trim().toLowerCase();return t===`exact`||t===`semantic`?t:null})(),r=(()=>{if(e.status_code===void 0||e.status_code===null)return null;let t=String(e.status_code).trim();if(!t)return null;let n=Number(t);return Number.isFinite(n)?n:null})(),i=n?!0:e.cache_hit!==void 0&&e.cache_hit!==null&&!!e.cache_hit,a=qI(e),o=ZI(e,t),s=Number.isFinite(r)&&r>=200&&r<300,c=String(e.error_type||``).trim().toLowerCase()===`authentication_error`,l=String(e.auth_method||``).trim().toLowerCase()||null,u=YI(e).toLowerCase()===`budget_exceeded`;return{cacheHit:i,cacheType:n||null,failoverTarget:a&&a.targetModel?a.targetModel:null,provider:o.provider,model:o.model,statusCode:r,responseSuccess:s,aiSuccess:s&&!i,authError:c,authMethod:l,budgetExceeded:u}}function $I(e){return!!(e&&e.cacheHit)}function eL(e){return!!(e&&e.failoverTarget)}function tL(e){return!!(e&&e.budgetExceeded)}function nL(e,t){return t?`workflow-node-current`:e&&e.cacheHit?`workflow-node-success`:``}function rL(e){return e&&e.cacheHit?`workflow-conn-hit`:``}function iL(e){return!e||!e.cacheHit?null:e.cacheType===`semantic`?`Hit (Semantic)`:`Hit (Exact)`}function aL(e,t,n,r){return e?tL(t)?`workflow-node-error`:r?`workflow-node-current`:n?`workflow-node-success`:``:``}function oL(e){return tL(e)?`Exceeded`:null}function sL(e){return e&&e.cacheHit?`workflow-node-skipped`:e&&e.failoverTarget?`workflow-node-success`:``}function cL(e){return e&&e.cacheHit?`workflow-conn-dim`:e&&e.failoverTarget?`workflow-conn-hit`:``}function lL(e){return e&&e.failoverTarget?`Redirected`:null}function uL(e){return e&&e.failoverTarget?e.failoverTarget:null}function dL(e){return e&&e.cacheHit?`workflow-conn-dim`:``}function fL(e,t){return e?e.cacheHit?`workflow-node-skipped`:t?`workflow-node-current`:e.aiSuccess?`workflow-node-success`:``:``}function pL(e,t){if(!e)return``;let n=e.statusCode;return!Number.isFinite(n)&&t?`workflow-node-current`:Number.isFinite(n)?n>=500?`workflow-node-error`:n>=400?`workflow-node-warning`:n>=300?`workflow-node-neutral`:n>=200?`workflow-node-success`:``:``}function mL(e){return!e||!Number.isFinite(e.statusCode)?null:String(e.statusCode)}function hL(e,t){return e?e.authError?`workflow-node-error`:t?`workflow-node-current`:e.authMethod===`api_key`||e.authMethod===`master_key`?`workflow-node-success`:``:``}function gL(e){return!e||!e.authMethod?null:e.authMethod}function _L(e,t,n){return e?n?`workflow-node-current`:t?`workflow-node-success`:``:``}function vL(e,t){if(!e||!e._live)return!!t;let n=String(e._live_state||``).trim();return!!e._audit_flushed||n===`audit.flushed`||n===`audit.detail`}function yL(e,t){if(!e)return!!t;let n=e.usage||{},r=Number(n.entries||0)>0;if(!e._live)return r;let i=String(e._usage_live_state||``).trim();return e._usage_flushed||i===`usage.flushed`?!0:!e._usage_live_pending&&r&&!e._live_pending}function bL(e){return!!(e&&e._live&&e._usage_live_pending&&!e._usage_flushed)}function xL(e,t){return!e||!e._live||vL(e,!1)?!1:String(e._live_state||``).trim()===`audit.completed`||!!(t&&Number.isFinite(t.statusCode))}function SL(e,t,n){return!e||!e._live?``:bL(e)?`usage`:xL(e,t)?`audit`:vL(e,!1)&&!e._live_pending?``:t&&t.cacheHit?`cache`:t&&(t.provider||t.model)?`ai`:n&&n.budget&&(e.workflow_version_id||e.requested_model)?`budget`:t&&t.authMethod?``:`auth`}function CL(e,t,n,r){let i=n||{},a=i.features&&typeof i.features==`object`&&!Array.isArray(i.features)?eI(i.features):nI(e,r),o=!!i.forceAudit,s=!!i.highlightAsyncPresent,c=!!a.budget||tL(t),l=!!a.guardrails,u=!!a.usage,d=o||!!a.audit,f=!!i.forceAsync||!!(u||d),p=!!a.failover||eL(t),m=GI(e,i.entry),h=SL(i.entry,t,a),g=bL(i.entry),_=xL(i.entry,t),v=vL(i.entry,s),y=yL(i.entry,s);return{showBudget:c,budgetNodeClass:aL(c,t,s,h===`budget`),budgetStatusLabel:oL(t),showGuardrails:l,guardrailLabel:l?HI(e):``,showCache:!!i.forceCache||!!a.cache||$I(t),cacheNodeClass:nL(t,h===`cache`),cacheConnClass:rL(t),cacheStatusLabel:iL(t),showFailover:p,failoverNodeClass:p?sL(t):``,failoverConnClass:p?cL(t):``,failoverStatusLabel:p?lL(t):null,failoverTargetLabel:p?uL(t):null,aiLabel:UI(e,t),aiSublabel:WI(e,t),aiConnClass:dL(t),aiNodeClass:fL(t,h===`ai`),responseConnClass:dL(t),responseNodeClass:pL(t,h===`response`),responseNodeSublabel:mL(t),authNodeClass:hL(t,h===`auth`),authNodeSublabel:gL(t),usageNodeClass:_L(u,y,g),auditNodeClass:_L(d,v,_),showAsync:f,showUsage:u,showAudit:d,workflowID:m}}function wL(e,t){return CL(e,null,{forceCache:!1},t)}function TL(e,t,n){return CL(t,QI(e,t),{entry:e,features:KI(e)||(t?nI(t,n):{cache:!1,audit:!1,usage:!1,budget:!1,guardrails:!1,failover:!1}),forceAudit:!0,forceAsync:!0,highlightAsyncPresent:!0},n)}var EL=B(`

`),DL=B(`

`),OL=B(`
`),kL=B(`
`),AL=B(`

No guardrails configured for this workflow.

`),jL=B(`

Guardrails

`),ML=B(``),NL=B(`

`);function PL(e,t){O(t,!0);let n=q(t,`preview`,3,!1),r=A(()=>EI.featureCaps()),i=A(()=>fI(t.workflow)),a=A(()=>aI(t.workflow,R(r))),o=A(()=>wL(t.workflow,R(r))),s=A(()=>n()?`draft-workflow-preview-guardrail-`:t.workflow.id+`-guardrail-`);var c=NL();let l;var u=P(c),d=P(u),f=P(d),p=P(f,!0);D(f);var m=I(f,2),h=P(m,!0);D(m),D(d);var g=I(d,2),_=P(g),v=P(_,!0);D(_),D(g),D(u);var y=I(u,2),b=e=>{var n=EL(),r=P(n,!0);D(n),L(()=>H(r,t.workflow.description)),V(e,n)};U(y,e=>{t.workflow.description&&e(b)});var x=I(y,2),S=e=>{var n=DL(),i=P(n);D(n),L(e=>H(i,`Failover: ${e??``}`),[()=>rI(t.workflow,R(r))]),V(e,n)},C=A(()=>EI.failoverVisible());U(x,e=>{R(C)&&e(S)});var w=I(x,2);VI(w,{get chart(){return R(o)}});var T=I(w,2),E=e=>{var t=jL(),n=P(t),r=I(P(n),2),i=P(r,!0);D(r),D(n);var o=I(n,2),c=e=>{var t=kL();W(t,23,()=>R(a),(e,t)=>R(s)+t,(e,t)=>{var n=OL(),r=P(n),i=P(r,!0);D(r);var a=I(r,2),o=P(a);D(a),D(n),L(()=>{H(i,R(t).ref),H(o,`step ${R(t).step??``}`)}),V(e,n)}),D(t),V(e,t)},l=e=>{V(e,AL())};U(o,e=>{R(a).length>0?e(c):e(l,-1)}),D(t),L(()=>H(i,R(a).length?R(a).length+` steps`:`None`)),V(e,t)},ee=A(()=>Td.guardrailsVisible());U(T,e=>{R(ee)&&e(E)});var te=I(T,2),ne=e=>{var n=ML(),r=P(n),a=P(r),o=P(a,!0);D(a);var s=I(a,2);{let e=A(()=>`Edit workflow `+R(i));wk(s,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>EI.openCreate(t.workflow),children:(e,t)=>{J(e,{get icon(){return su},class:`table-icon-svg`})},$$slots:{default:!0}})}D(r);var c=I(r,2),l=P(c),u=P(l);D(l);var d=I(l,2),f=P(d);D(d);var p=I(d,2),m=P(p);D(p),D(c),D(n),L((e,n,r,s)=>{a.disabled=e,K(a,`aria-label`,`Deactivate workflow `+R(i)),K(a,`title`,n),H(o,EI.deactivatingID===t.workflow.id?`Deactivating...`:`Deactivate`),H(u,`version: v${t.workflow.version??``}`),H(f,`created: ${r??``}`),H(m,`hash: ${s??``}`)},[()=>EI.deactivatingID===t.workflow.id||!bI(t.workflow),()=>bI(t.workflow)?`Deactivate active workflow`:`The global workflow cannot be deactivated.`,()=>md.formatTimestamp(t.workflow.created_at),()=>xI(t.workflow.workflow_hash)]),z(`click`,a,()=>EI.deactivate(t.workflow)),V(e,n)};U(te,e=>{n()||e(ne)}),D(c),L((e,t)=>{l=G(c,1,`workflow-card svelte-1fo9fvq`,null,l,{"workflow-preview-card":n()}),H(p,e),H(h,R(i)),H(v,t)},[()=>uI(t.workflow),()=>dI(t.workflow)]),V(e,c),k()}Br([`click`]);var FL=B(`

`),IL=B(``),LL=B(``),RL=B(``),zL=B(``),BL=B(``),VL=B(``),HL=B(``),UL=B(``),WL=B(``),GL=B(``),KL=B(``),qL=B(``),JL=B(`
No named guardrails are currently registered on this deployment. You can still draft a workflow, but guardrail-backed creation may be rejected.
`),YL=B(`
`),XL=B(`
`),ZL=B(`

No guardrail steps configured yet.

`),QL=B(`

Guardrail Steps

Guardrails in the same numeric step run together. Later steps wait for earlier ones to finish.

`),$L=B(`

Leave provider name empty to target all providers and models. Select a provider name without a model to target all models for that configured provider.

Add a path to scope the workflow to that subtree. Leading slashes are optional and will be normalized; you can enter "team/alpha" or "/team/alpha". Matching checks the deepest user path first, then falls back toward the root.

If you leave the name empty, the workflow will display as the matched provider/model scope or “All models”.

Preview

Live
`,1);function eR(e,t){O(t,!0);{let t=e=>{eD(e,{copyId:`workflow-help-copy`,label:`workflow help`,text:`Create immutable version. Submitting activates it for the selected scope.`,title:e=>{var t=FL(),n=P(t,!0);D(t),L(e=>H(n,e),[()=>EI.submitMode()===`save`?`Edit Workflow`:`Create Workflow`]),V(e,t)},$$slots:{title:!0}})},n=A(()=>EI.submitLabel()),r=A(()=>EI.submittingLabel()),i=A(()=>EI.submitMode()===`create`?lu:pu);OA(e,{get open(){return EI.formOpen},ariaLabel:`Workflow editor`,get error(){return EI.formError},get submitting(){return EI.submitting},get submitLabel(){return R(n)},get submittingLabel(){return R(r)},get submitIcon(){return R(i)},dialogClass:`workflow-editor`,onclose:()=>EI.closeForm(),onsubmit:()=>EI.submitForm(),header:t,children:(e,t)=>{var n=$L(),r=F(n),i=P(r);AA(i,{id:`workflow-scope-provider`,label:`Provider Name`,children:(e,t)=>{var n=LL(),r=P(n);r.value=r.__value=``,W(I(r),16,()=>EI.providerOptions(),e=>e,(e,t)=>{var n=IL(),r=P(n,!0);D(n);var i={};L(()=>{H(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(n),z(`change`,n,e=>EI.setProvider(e.currentTarget.value)),Ui(n,()=>EI.form.scope_provider,e=>EI.form.scope_provider=e),V(e,n)},$$slots:{default:!0}});var a=I(i,2),o=e=>{AA(e,{id:`workflow-scope-model`,label:`Model`,children:(e,t)=>{var n=RL(),r=P(n);r.value=r.__value=``,W(I(r),17,()=>EI.modelOptions(EI.form.scope_provider),e=>EI.form.scope_provider+`-`+e,(e,t)=>{var n=IL(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t)),i!==(i=R(t))&&(n.value=(n.__value=R(t))??``)}),V(e,n)}),D(n),Ui(n,()=>EI.form.scope_model,e=>EI.form.scope_model=e),V(e,n)},$$slots:{default:!0}})};U(a,e=>{EI.form.scope_provider&&e(o)});var s=I(a,2);AA(s,{id:`workflow-name`,label:`Name`,children:(e,t)=>{var n=zL();ea(n),la(n,()=>EI.form.name,e=>EI.form.name=e),V(e,n)},$$slots:{default:!0}}),AA(I(s,2),{id:`workflow-user-path`,label:`User Path`,children:(e,t)=>{var n=BL();ea(n),la(n,()=>EI.form.scope_user_path,e=>EI.form.scope_user_path=e),V(e,n)},$$slots:{default:!0}}),D(r);var c=I(r,8);AA(c,{id:`workflow-description`,label:`Description`,children:(e,t)=>{var n=VL();ut(n),la(n,()=>EI.form.description,e=>EI.form.description=e),V(e,n)},$$slots:{default:!0}});var l=I(c,2),u=P(l),d=e=>{var t=HL(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>EI.form.features.cache,e=>EI.form.features.cache=e),V(e,t)},f=A(()=>Td.cacheVisible());U(u,e=>{R(f)&&e(d)});var p=I(u,2),m=e=>{var t=UL(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>EI.form.features.audit,e=>EI.form.features.audit=e),V(e,t)},h=A(()=>Td.auditVisible());U(p,e=>{R(h)&&e(m)});var g=I(p,2),_=e=>{var t=WL(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>EI.form.features.usage,e=>EI.form.features.usage=e),V(e,t)},v=A(()=>Td.usageVisible());U(g,e=>{R(v)&&e(_)});var y=I(g,2),b=e=>{var t=GL(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>EI.form.features.budget,e=>EI.form.features.budget=e),V(e,t)},x=A(()=>Td.budgetsVisible());U(y,e=>{R(x)&&e(b)});var S=I(y,2),C=e=>{var t=KL(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>EI.form.features.guardrails,e=>EI.form.features.guardrails=e),V(e,t)},w=A(()=>Td.guardrailsVisible());U(S,e=>{R(w)&&e(C)});var T=I(S,2),E=e=>{var t=qL(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>EI.form.features.failover,e=>EI.form.features.failover=e),V(e,t)},ee=A(()=>EI.failoverVisible());U(T,e=>{R(ee)&&e(E)}),D(l);var te=I(l,2),ne=I(P(te),2);{let e=A(()=>EI.preview());PL(ne,{get workflow(){return R(e)},preview:!0})}D(te);var re=I(te,2),ie=e=>{var t=QL(),n=P(t),r=I(P(n),2);D(n);var i=I(n,2),a=e=>{var t=JL(),n=I(P(t),2);D(t),z(`click`,n,()=>Gu.navigate(`guardrails`)),V(e,t)};U(i,e=>{EI.guardrailRefs.length===0&&e(a)});var o=I(i,2),s=e=>{var t=XL();W(t,21,()=>EI.form.guardrails,ii,(e,t,n)=>{var r=YL(),i=P(r),a=P(i);K(a,`for`,`workflow-guardrail-ref-`+n);var o=I(a,2);ea(o),K(o,`id`,`workflow-guardrail-ref-`+n),K(o,`aria-label`,`Guardrail reference `+(n+1)),D(i);var s=I(i,2),c=P(s);K(c,`for`,`workflow-guardrail-step-`+n);var l=I(c,2);ea(l),K(l,`id`,`workflow-guardrail-step-`+n),K(l,`aria-label`,`Guardrail step `+(n+1)),D(s);var u=I(s,2);D(r),la(o,()=>R(t).ref,e=>R(t).ref=e),la(l,()=>R(t).step,e=>R(t).step=e),z(`click`,u,()=>EI.removeGuardrailStep(n)),V(e,r)}),D(t),V(e,t)},c=e=>{V(e,ZL())};U(o,e=>{EI.form.guardrails.length>0?e(s):e(c,-1)}),D(t),z(`click`,r,()=>EI.addGuardrailStep()),V(e,t)},ae=A(()=>EI.form.features.guardrails&&Td.guardrailsVisible());U(re,e=>{R(ae)&&e(ie)}),V(e,n)},$$slots:{header:!0,default:!0}})}k()}Br([`change`,`click`]);var tR=B(`

Loading workflows...

`),nR=B(`
`),rR=B(`

No active workflows found.

`),iR=B(`

No workflows match your filter.

`),aR=B(`
`);function oR(e,t){O(t,!0);var n=aR(),r=P(n),i=e=>{var t=tR();kE(P(t),{size:16,label:`Loading workflows`}),Ve(),D(t),V(e,t)};U(r,e=>{EI.loading&&!Y.authError&&e(i)});var a=I(r,2),o=e=>{var t=nR();W(t,21,()=>EI.filteredWorkflows,e=>e.id,(e,t)=>{PL(e,{get workflow(){return R(t)}})}),D(t),V(e,t)};U(a,e=>{EI.filteredWorkflows.length>0&&e(o)});var s=I(a,2),c=e=>{V(e,rR())};U(s,e=>{EI.workflows.length===0&&!EI.loading&&!Y.authError&&EI.available&&e(c)});var l=I(s,2),u=e=>{V(e,iR())};U(l,e=>{EI.workflows.length>0&&EI.filteredWorkflows.length===0&&!EI.loading&&e(u)}),D(n),V(e,n),k()}var sR=B(``),cR=B(`
Workflows feature is unavailable.
`),lR=B(`
`),uR=B(`
`),dR=B(``),fR=B(`
`);function pR(e,t){O(t,!0),On(()=>{Y.refreshTick,EI.fetchPage()});var n=fR(),r=P(n),i=I(P(r),2),a=P(i),o=e=>{var t=sR();J(P(t),{get icon(){return lu},class:`form-action-icon`,"aria-hidden":`true`}),Ve(2),D(t),z(`click`,t,()=>EI.openCreate()),V(e,t)};U(a,e=>{EI.available&&e(o)}),D(i),D(r);var s=I(r,2),c=e=>{V(e,cR())};U(s,e=>{!EI.available&&!Y.authError&&e(c)});var l=I(s,2),u=e=>{var t=lR(),n=P(t,!0);D(t),L(()=>H(n,EI.error)),V(e,t)};U(l,e=>{EI.error&&!Y.authError&&e(u)});var d=I(l,2),f=e=>{var t=uR(),n=P(t);DO(P(n),{placeholder:`Filter by scope, name, hash, or guardrail...`,label:`Filter workflows by scope, name, hash, or guardrail`,get value(){return EI.filter},set value(e){EI.filter=e}}),D(n);var r=I(n,2),i=P(r),a=P(i,!0);D(i),D(r),D(t),L(()=>H(a,EI.filteredWorkflows.length+` active scopes`)),V(e,t)};U(d,e=>{EI.available&&e(f)});var p=I(d,2);eR(p,{});var m=I(p,2);oR(m,{});var h=I(m,2);W(h,20,()=>EI.guardrailRefs,e=>e,(e,t)=>{var n=dR(),r={};L(()=>{r!==(r=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(h),D(n),V(e,n),k()}Br([`click`]);function mR(e,{from:t,to:n},r={}){var{delay:i=0,duration:a=e=>Math.sqrt(e)*120,easing:o=nf}=r,s=getComputedStyle(e),c=s.transform===`none`?``:s.transform,[l,u]=s.transformOrigin.split(` `).map(parseFloat);l/=e.clientWidth,u/=e.clientHeight;var d=hR(e),f=e.clientWidth/n.width/d,p=e.clientHeight/n.height/d,m=t.left+t.width*l,h=t.top+t.height*u,g=n.left+n.width*l,_=n.top+n.height*u,v=(m-g)*f,y=(h-_)*p,b=t.width/n.width,x=t.height/n.height;return{delay:i,duration:typeof a==`function`?a(Math.sqrt(v*v+y*y)):a,easing:o,css:(e,t)=>`transform: ${c} translate(${t*v}px, ${t*y}px) scale(${e+t*b}, ${e+t*x});`}}function hR(e){if(`currentCSSZoom`in e)return e.currentCSSZoom;for(var t=e,n=1;t!==null;)n*=+getComputedStyle(t).zoom,t=t.parentElement;return n}var gR=null;function _R(){return gR===null&&(gR=typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`)),!!(gR&&gR.matches)}function vR(e){return _R()?0:e}function yR(e,t){return!t||!t.live?{duration:0}:ef(e,{duration:vR(150)})}var bR=new class{#e=j(N({}));get workflowVersionsByID(){return R(this.#e)}set workflowVersionsByID(e){M(this.#e,e,!0)}workflowVersionRequests={};workflowFeatureCaps(){return{cache:Td.cacheVisible(),audit:Td.auditVisible(),usage:Td.usageVisible(),budget:Td.budgetsVisible(),guardrails:Td.guardrailsVisible(),failover:Td.booleanFlag(`FAILOVER_ENABLED`,!0)}}cacheWorkflowVersion(e){let t=String(e&&e.id||``).trim();return t?(this.workflowVersionsByID={...this.workflowVersionsByID||{},[t]:e},e):null}cacheMissingWorkflowVersion(e){let t=String(e||``).trim();t&&(this.workflowVersionsByID={...this.workflowVersionsByID||{},[t]:null})}workflowVersionCacheHas(e){return Object.prototype.hasOwnProperty.call(this.workflowVersionsByID||{},String(e||``).trim())}workflowVersionByID(e){let t=String(e||``).trim();return t&&this.workflowVersionCacheHas(t)?this.workflowVersionsByID[t]:null}async fetchWorkflowVersion(e){let t=String(e||``).trim();if(!t)return null;if(this.workflowVersionCacheHas(t))return this.workflowVersionsByID[t];if(this.workflowVersionRequests[t])return this.workflowVersionRequests[t];let n=(async()=>{let e=typeof AbortController==`function`?new AbortController:null,n=e?setTimeout(()=>e.abort(),1e4):null;try{let n=await bd(`/admin/workflows/`+encodeURIComponent(t),{label:`workflow`,signal:e?e.signal:void 0});if(n.stale)return null;if(n.status===404)return this.cacheMissingWorkflowVersion(t),null;if(!n.ok)return null;let r=n.data;return!r||typeof r!=`object`||Array.isArray(r)?(this.cacheMissingWorkflowVersion(t),null):this.cacheWorkflowVersion(r)}catch(e){return e&&e.name===`AbortError`||console.error(`Failed to fetch workflow version:`,e),null}finally{n!==null&&clearTimeout(n),delete this.workflowVersionRequests[t]}})();return this.workflowVersionRequests[t]=n,n}async prefetchAuditWorkflows(e){let t=[...new Set((Array.isArray(e)?e:[]).map(e=>String(e&&e.workflow_version_id||``).trim()).filter(Boolean))];t.length!==0&&await Promise.all(t.map(e=>this.fetchWorkflowVersion(e)))}auditEntryWorkflow(e){let t=String(e&&e.workflow_version_id||``).trim();return t?this.workflowVersionByID(t):null}},xR=6;function SR(e){if(typeof e!=`string`)return null;try{return JSON.parse(e)}catch{return null}}function CR(e,t=0,n=null){let r=String(e||``).trim();if(!r)return``;if(t>xR)return r;let i=SR(r);return i==null?r:wR(i,t+1,n)||n&&n(i)||r}function wR(e,t=0,n=null,r=null){if(e==null||t>xR)return``;if(typeof e==`string`){let i=SR(e.trim());return i==null?``:wR(i,t+1,n,r)}if(typeof e!=`object`)return``;let i=r||new Set;if(i.has(e))return``;if(i.add(e),Array.isArray(e)){for(let r=0;r=400||DR(t&&t.response_body)}function kR(e){let t=e&&e.data?e.data:null;return t?TR(t.error_message)||(OR(e,t)?wR(t.response_body,0):``):``}function AR(e){if(e==null||String(e).trim()===``)return null;let t=Number(e);return!Number.isInteger(t)||t<0?null:t}function jR(e){let t=AR(e);return t===null?``:t===0?`Audit logs are retained indefinitely.`:t===1?`Audit logs are retained for 1 day.`:`Audit logs are retained for `+t+` days.`}function MR(e){let t=AR(e);return t===null?``:t===0?`Audit logs are retained `:`Audit logs are retained for `}function NR(e){let t=AR(e);return t===null?``:t===0?`indefinitely`:t===1?`1 day`:t+` days`}function PR({dateQuery:e,limit:t,offset:n,search:r,method:i,statusCode:a,stream:o}){let s=e;return s+=`&limit=`+t+`&offset=`+n,r&&(s+=`&search=`+encodeURIComponent(r)),i&&(s+=`&method=`+encodeURIComponent(i)),a&&(s+=`&status_code=`+encodeURIComponent(a)),o&&(s+=`&stream=`+encodeURIComponent(o)),s}function FR({sessionId:e,limit:t}){return`session_id=`+encodeURIComponent(e)+`&limit=`+(t||100)+`&offset=0`}function IR(e){return String(e&&e.session_id||``).trim()}function LR(e){let t=Number(e&&e.session_count);return Number.isFinite(t)&&t>1?t:1}function RR(e){return!!IR(e)&&LR(e)>1}function zR(e){return{entries:(Array.isArray(e&&e.sessions)?e.sessions:[]).filter(e=>e&&e.latest).map(e=>({...e.latest,session_id:IR(e.latest)||String(e.session_id||``).trim(),session_count:Number(e.count||1)})),total:Number(e&&e.total||0),limit:Number(e&&e.limit||25),offset:Number(e&&e.offset||0)}}function BR(e,t,n){let r=new Set((Array.isArray(n)?n:[]).flatMap(e=>WR(e))),i=(Array.isArray(t)?t:[]).filter(e=>!WR(e).some(e=>r.has(e))),a=new Set([...r,...i.flatMap(e=>WR(e))]),o=(e&&Array.isArray(e.entries)?e.entries:[]).filter(e=>e&&e._live&&!WR(e).some(e=>a.has(e)));return{entries:[...o,...i],preservedCount:o.length}}function VR(e,t){let n=e||{};if(!t)return n;if(n[t]){let e={...n};return delete e[t],e}return{...n,[t]:!0}}function HR(e,t){let n=e||{},r=new Set((Array.isArray(t)?t:[]).map(e=>IR(e)).filter(Boolean)),i={},a=!1;return Object.keys(n).forEach(e=>{if(r.has(e)){i[e]=n[e];return}a=!0}),a?i:n}function UR(e){return String(e&&e.id||``).trim()}function WR(e){if(!e)return[];let t=[],n=String(e.id||``).trim(),r=String(e.request_id||``).trim();return n&&t.push(`id:`+n),r&&t.push(`request:`+r),t}function GR(e){return!!(e&&e._live&&e._live_pending&&!e._audit_flushed)}function KR(e){let t=e&&e.customStartDate,n=e&&e.customEndDate;if(!t&&!n)return!0;let r=new Date;if(t){let e=new Date(t);if(e.setHours(0,0,0,0),Number.isFinite(e.getTime())&&re)return!1}return!0}function qR(e,t){return e&&Number(e.offset||0)===0&&!(t&&t.search)&&!(t&&t.method)&&!(t&&t.statusCode)&&!(t&&t.stream)&&KR(t)}function JR(e,t,n){let r=e&&typeof e==`object`?{...e}:{entries:[],total:0,limit:25,offset:0},i=Array.isArray(r.entries)?r.entries:[];if(r.entries=i,!qR(r,n))return r;let a=(Array.isArray(t)?t:[]).filter(e=>GR(e));if(a.length===0)return r;let o=new Set(i.flatMap(e=>WR(e))),s=[];return a.forEach(e=>{let t=WR(e);t.length!==0&&(t.some(e=>o.has(e))||(t.forEach(e=>o.add(e)),s.push(e)))}),s.length===0?r:(r.entries=[...s,...i].slice(0,r.limit||25),r.total=Number(r.total||0)+s.length,r)}function YR(e,t,n){let r=e&&typeof e==`object`?{...e}:{entries:[],total:0,limit:25,offset:0},i=Array.isArray(r.entries)?r.entries:[];if(r.entries=i,!qR(r,n))return r;let a=(Array.isArray(t)?t:[]).filter(e=>GR(e));if(a.length===0)return r;let o=new Set(i.flatMap(e=>WR(e))),s=new Map;i.forEach((e,t)=>{let n=IR(e);n&&!s.has(n)&&s.set(n,t)});let c=[],l=i;return a.forEach(e=>{let t=WR(e);if(t.length===0||t.some(e=>o.has(e)))return;let n=IR(e);if(n&&s.has(n)){let r=s.get(n);l===i&&(l=[...i]),l[r]={...e,session_count:Math.max(LR(l[r]),LR(e))},t.forEach(e=>o.add(e));return}t.forEach(e=>o.add(e)),c.push(e)}),r.entries=[...c,...l].slice(0,r.limit||25),r.total=Number(r.total||0)+c.length,r}function XR(e,t){let n=UR(t),r=e||{};return n?r[n]?{}:{[n]:!0}:r}function ZR(e,t){let n=e||{},r=new Set((Array.isArray(t)?t:[]).map(e=>UR(e)).filter(Boolean)),i={},a=!1;return Object.keys(n).forEach(e=>{if(r.has(e)){i[e]=!0;return}a=!0}),a?i:n}function QR(e){if(e==null)return`-`;let t=Number(e);return Number.isFinite(t)?t<=0?`pending`:t<1e6?Math.round(t/1e3)+` µs`:t<1e9?(t/1e6).toFixed(2)+` ms`:(t/1e9).toFixed(2)+` s`:`-`}function $R(e){if(e==null||e===``)return`status-unknown`;let t=Number(e);return Number.isFinite(t)?t>=500?`status-error`:t>=400?`status-warning`:t>=300?`status-neutral`:`status-success`:`status-unknown`}function ez(e){if(!e||!e._live||!e._live_pending)return!1;let t=String(e._live_state||``).trim();if(t===`audit.completed`||t===`audit.flushed`||t===`audit.detail`)return!1;if(e._response_partial)return!0;if(e.status_code!==null&&e.status_code!==void 0&&e.status_code!==``||Number(e.duration_ns||0)>0||e.error_type||e.error_message)return!1;let n=e.data||{};return!(n.response_headers||n.response_body||n.error_message)}function tz(e){let t=e&&e.data&&e.data.failover;return!t||typeof t!=`object`||Array.isArray(t)?null:String(t.target_model||t.targetModel||``).trim()||null}function nz(e){return(e&&e.data&&Array.isArray(e.data.attempts)?e.data.attempts:[]).map((e,t)=>({...e,seq:Number(e&&e.seq||t+1)})).sort((e,t)=>e.seq-t.seq)}function rz(e){let t=nz(e);return t.length>1||t.some(e=>!(e&&e.success))}function iz(e){if(!e)return`-`;let t=e.status_code||e.status;return t?String(t):e.success?`ok`:`error`}function az(e){return String(e&&e.kind||``).trim()||`attempt`}function oz(e){if(!e)return`-`;let t=String(e.provider_name||``).trim(),n=String(e.provider_type||e.provider||``).trim();return t&&n&&t!==n?t+` (`+n+`)`:t||n||`-`}function sz(e){return String(e&&e.model||``).trim()||`-`}function cz(e){let t=nz(e);return t.length>1||t.some(e=>!(e&&e.success))?t:[]}function lz(e){return nz(e).length+`×`}function uz(e){let t=nz(e),n=t.filter(e=>!(e&&e.success)).length,r=t.length===1?`attempt`:`attempts`,i=t.length+` provider `+r;return n>0?i+` · `+n+` failed`:i}function dz(e){if(!e)return``;let t=[`#`+Number(e.seq||0)],n=az(e);n&&n!==`attempt`&&t.push(n),t.push(iz(e));let r=oz(e);r&&r!==`-`&&t.push(r);let i=sz(e);return i&&i!==`-`&&t.push(i),t.push(e.success?`succeeded`:`failed`),t.join(` · `)}function fz(e,t){if(!t)return null;if(t.success){let t=e&&e.data?e.data:null;return t&&t.response_body!=null?t.response_body:null}return t.response_body!=null&&t.response_body!==``?t.response_body:null}function pz(e){if(!e||e.success)return``;let t=String(e.error_message||``).trim(),n=String(e.error_code||``).trim(),r=String(e.error_type||``).trim();return t&&n?n+`: `+t:t||n||r||`Provider attempt failed`}function mz(e,t){if(!t)return null;if(t.success){let t=e&&e.data?e.data:null;return t?t.response_headers:null}return t.response_headers||null}function hz(e){let t=Number(e&&e.status_code);return Number.isFinite(t)&&t>0?t:null}function gz(e,t){let n=!!(t&&t.success),r=e&&e.data?e.data:null,i=fz(e,t),a=mz(e,t),o=pz(t),s=i!=null&&i!==``,c=az(t),l=nz(e).length<=1;return{title:`Response`,direction:`response`,seq:l?0:Number(t&&t.seq||0),kind:l||c===`attempt`?``:c,statusCode:l?null:hz(t),layout:`split`,entry:e,copyHeaders:a,copyBody:i,showErrorMessage:!!o,errorMessage:o,showHeaders:!!a,headers:a,showBody:s,body:i,showEmpty:!o&&!s&&!a,emptyMessage:`No response was captured for this attempt.`,showTooLarge:!!(n&&r&&r.response_body_too_big_to_handle),tooLargeMessage:`Response body was too large to capture.`}}function _z(e){return e&&e.data&&Array.isArray(e.data.request_revisions)?e.data.request_revisions:[]}function vz(e){return _z(e).filter(e=>!(e&&e.no_change))}function yz(e){return _z(e).filter(e=>e&&e.no_change).map(e=>{let t=String(e.rewriter||`rewriter`);return{id:`step-`+Number(e.seq||0),rewriter:t,label:t+`: no change`,title:t+` ran and forwarded the request unchanged`}})}function bz(e){let t=Number(e&&e.bytes_before),n=Number(e&&e.bytes_after);if(!Number.isFinite(t)||!Number.isFinite(n)||t<=0||n>=t)return``;let r=(1-n/t)*100;return`-`+(r>=10?String(Math.round(r)):r.toFixed(1))+`%`}function xz(e,t){let n=t&&t.body,r=n!=null&&n!==``,i=vz(e).length<=1,a={rewriter:t&&t.rewriter||``,bytes:Number(t&&t.bytes_before||0)+` → `+Number(t&&t.bytes_after||0)};return t&&t.detail!=null&&(a.detail=t.detail),{title:`Rewritten`,direction:`request`,seq:i?0:Number(t&&t.seq||0),kind:t&&t.rewriter?String(t.rewriter):``,savingsLabel:bz(t),layout:`split`,entry:e,copyHeaders:a,copyBody:n,showErrorMessage:!1,errorMessage:null,showHeaders:!0,headers:a,headersTitle:`What changed`,showBody:r,body:n,showEmpty:!1,emptyMessage:``,showTooLarge:!r,tooLargeMessage:`Rewritten body not captured (body logging disabled or body too large).`}}function Sz(e){let t=e&&e.usage;return!t||typeof t!=`object`?null:t}function Cz(e){let t=Sz(e);return Number(t&&t.cached_input_tokens||0)>0}function wz(e){let t=Sz(e),n=Number(t&&t.input_tokens||0),r=Number(t&&t.cached_input_tokens||0);return!Number.isFinite(n)||n<=0||!Number.isFinite(r)||r<=0?0:Math.max(0,Math.min(100,r/n*100))}function Tz(e){let t=Sz(e);if(!t)return``;let n=Number(t.input_tokens||0),r=Number(t.cached_input_tokens||0);return n<=0?mf(r)+` cached`:wz(e).toFixed(1)+`% cached`}function Ez(e){return Cz(e)?Tz(e):``}function Dz(e,t){let n=Sz(e);if(!n||!e||!e.data||!e.data.request_body)return null;let r=Number(n.estimated_cached_characters||0);if(!Number.isFinite(r)||r<=0||typeof t!=`function`)return null;let i=t(e.data.request_body);return!Array.isArray(i)||i.length===0?null:{characters:r,segments:i}}function Oz(e,t){let n=e&&e.data?e.data:null,r=!n||!n.request_headers&&!n.request_body,i=r&&ez(e);return{title:`Request`,direction:`request`,layout:`split`,entry:e,copyHeaders:n&&n.request_headers,copyBody:n&&n.request_body,showErrorMessage:!1,errorMessage:null,showHeaders:!!(n&&n.request_headers),headers:n&&n.request_headers,showBody:!!(n&&n.request_body),body:n&&n.request_body,bodyCacheRatioLabel:Ez(e),promptCacheHighlight:Dz(e,t),noChangeSteps:yz(e),showEmpty:r&&!i,emptyMessage:`Request details were not captured.`,showPending:i,pendingMessage:`Waiting for request data…`,showTooLarge:!!(n&&n.request_body_too_big_to_handle),tooLargeMessage:`Request body was too large to capture.`}}function kz(e){let t=e&&e.data?e.data:null,n=kR(e),r=!t||!n&&!t.response_headers&&!t.response_body,i=r&&ez(e);return{title:`Response`,direction:`response`,layout:`split`,entry:e,copyHeaders:t&&t.response_headers,copyBody:t&&t.response_body,showErrorMessage:!!n,errorMessage:n,showHeaders:!!(t&&t.response_headers),headers:t&&t.response_headers,showBody:!!(t&&t.response_body),body:t&&t.response_body,streaming:!!(e&&e._response_partial&&t&&t.response_body)&&ez(e),showEmpty:r&&!i,emptyMessage:`Response details were not captured.`,showPending:i,pendingMessage:`Response in progress…`,showTooLarge:!!(t&&t.response_body_too_big_to_handle),tooLargeMessage:`Response body was too large to capture.`}}function Az(e,t){let n=[{id:`request`,pane:Oz(e,t)}];return vz(e).forEach(t=>{n.push({id:`revision-`+Number(t&&t.seq||0),pane:xz(e,t)})}),rz(e)?nz(e).forEach(t=>{n.push({id:`response-`+Number(t&&t.seq||0),pane:gz(e,t)})}):n.push({id:`response`,pane:kz(e)}),n}function jz(e){if(!rz(e))return`response`;let t=nz(e),n=null;return t.forEach(e=>{e&&e.success&&(n=e)}),n||=t[t.length-1],n?`response-`+Number(n.seq||0):`request`}function Mz(e,t,n){return e&&(Array.isArray(n)?n:Az(t)).some(t=>t.id===e)?e:jz(t)}function Nz(e,t,n){if(!t||!t.length)return null;let r=t.indexOf(n);r<0&&(r=0);let i;switch(e){case`ArrowRight`:case`ArrowDown`:i=(r+1)%t.length;break;case`ArrowLeft`:case`ArrowUp`:i=(r-1+t.length)%t.length;break;case`Home`:i=0;break;case`End`:i=t.length-1;break;default:return null}return t[i]}var Pz=100;function Fz(){return{entries:[],total:0,limit:25,offset:0}}var Iz=new class{#e=j(N({}));get auditExpandedEntries(){return R(this.#e)}set auditExpandedEntries(e){M(this.#e,e,!0)}#t=j(N({}));get auditExpandedThreads(){return R(this.#t)}set auditExpandedThreads(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}auditFetchToken=0;get auditLog(){return zD.auditLog}set auditLog(e){zD.auditLog=e}get auditSearch(){return zD.auditSearch}set auditSearch(e){zD.auditSearch=e}get auditMethod(){return zD.auditMethod}set auditMethod(e){zD.auditMethod=e}get auditStatusCode(){return zD.auditStatusCode}set auditStatusCode(e){zD.auditStatusCode=e}get auditStream(){return zD.auditStream}set auditStream(e){zD.auditStream=e}get auditGroupSessions(){return zD.auditGroupSessions}liveFilters(){return{search:this.auditSearch,method:this.auditMethod,statusCode:this.auditStatusCode,stream:this.auditStream,customStartDate:Vf.customStartDate,customEndDate:Vf.customEndDate}}toggleAuditGroupSessions(){zD.auditGroupSessions=!zD.auditGroupSessions,Ya(`gomodel_audit_group_sessions`,zD.auditGroupSessions),this.auditExpandedThreads={},zD.auditThreadChildren={},this.fetchAuditLog(!0)}async fetchAuditLog(e){let t=++this.auditFetchToken;this.loading=!0;try{e&&(this.auditLog.offset=0);let n=this.auditGroupSessions,r=PR({dateQuery:Vf.queryStr(),limit:this.auditLog.limit,offset:this.auditLog.offset,search:this.auditSearch,method:this.auditMethod,statusCode:this.auditStatusCode,stream:this.auditStream}),i=await bd((n?`/admin/audit/sessions?`:`/admin/audit/log?`)+r,{label:`audit log`});if(i.stale||t!==this.auditFetchToken)return;if(!i.ok){this.auditLog=Fz();return}let a=n?zR(i.data):i.data,o=(n?YR:JR)(a,this.auditLog&&this.auditLog.entries,this.liveFilters());Array.isArray(o.entries)||(o.entries=[]),o.entries=zD.upsertAuditRecords(o.entries,`audit.list`),this.auditLog=o,this.auditExpandedThreads=HR(this.auditExpandedThreads,o.entries),zD.auditThreadChildren=HR(zD.auditThreadChildren,o.entries);let s=[...o.entries,...this.loadedThreadChildren()];this.auditExpandedEntries=ZR(this.auditExpandedEntries,s);try{await bR.prefetchAuditWorkflows(s)}catch(e){console.error(`Failed to prefetch audit workflows:`,e)}}catch(e){if(console.error(`Failed to fetch audit log:`,e),t!==this.auditFetchToken)return;this.auditLog=Fz()}finally{t===this.auditFetchToken&&(this.loading=!1)}}loadedThreadChildren(){let e=zD.auditThreadChildren||{};return Object.keys(e).flatMap(t=>Array.isArray(e[t]&&e[t].entries)?e[t].entries:[])}isThreadExpanded(e){return!!(e&&this.auditExpandedThreads[e])}threadChildren(e){return e&&zD.auditThreadChildren[e]||null}async toggleThread(e){let t=IR(e);if(!t)return;let n=!this.isThreadExpanded(t);this.auditExpandedThreads=VR(this.auditExpandedThreads,t);let r=zD.auditThreadChildren[t];n&&!(r&&(r.loaded||r.loading))&&await this.fetchThreadEntries(e)}async fetchThreadEntries(e){let t=IR(e);if(!t)return;let n=zD.auditThreadChildren[t];zD.auditThreadChildren={...zD.auditThreadChildren,[t]:{loading:!0,loaded:!1,entries:n&&Array.isArray(n.entries)?n.entries:[],total:Number(n&&n.total||0)}};let r=()=>{let e={...zD.auditThreadChildren},n=e[t],r=n&&Array.isArray(n.entries)?n.entries:[];r.length>0?e[t]={loading:!1,loaded:!1,entries:r,total:r.length}:(delete e[t],this.auditExpandedThreads[t]&&(this.auditExpandedThreads=VR(this.auditExpandedThreads,t))),zD.auditThreadChildren=e};try{let n=await bd(`/admin/audit/log?`+FR({sessionId:t,limit:Pz}),{label:`audit session`});if(n.stale){r();return}if(!n.ok)throw Error(`audit session fetch failed`);let i=zD.auditThreadChildren[t],a=this.auditLog.entries.find(e=>IR(e)===t),o=BR(i,n.data.entries,a?[a]:[e]);o.entries=zD.upsertAuditRecords(o.entries,`audit.thread`),zD.auditThreadChildren={...zD.auditThreadChildren,[t]:{loading:!1,loaded:!0,entries:o.entries,total:Number(n.data.total||0)+o.preservedCount}}}catch(e){console.error(`Failed to fetch audit session entries:`,e),r()}}clearAuditFilters(){this.auditSearch=``,this.auditMethod=``,this.auditStatusCode=``,this.auditStream=``,this.fetchAuditLog(!0)}auditLogNextPage(){this.auditLog.offset+this.auditLog.limit0&&(this.auditLog.offset=Math.max(0,this.auditLog.offset-this.auditLog.limit),this.fetchAuditLog(!1))}isAuditEntryExpanded(e){let t=UR(e);return t?!!(this.auditExpandedEntries&&this.auditExpandedEntries[t]):!1}toggleAuditEntryExpanded(e){this.auditExpandedEntries=XR(this.auditExpandedEntries,e);let t=this.isAuditEntryExpanded(e);return t&&typeof zD.fetchAuditEntryDetail==`function`&&zD.fetchAuditEntryDetail(e),t}expandAuditEntry(e){this.isAuditEntryExpanded(e)||this.toggleAuditEntryExpanded(e)}};zD.fetchAuditLog=e=>Iz.fetchAuditLog(e),zD.isAuditEntryExpanded=e=>Iz.isAuditEntryExpanded(e);var Lz=B(`
`);function Rz(e,t){O(t,!0);let n=OO(()=>Iz.fetchAuditLog(!0));On(()=>n.cancel);var r=Lz(),i=P(r);DO(P(i),{id:`audit-filter-search`,placeholder:`Search by request ID, model, provider, path, user path, or error...`,label:`Search by request ID, model, provider, path, user path, or error`,get oninput(){return n},get value(){return Iz.auditSearch},set value(e){Iz.auditSearch=e}}),D(i);var a=I(i,2),o=P(a),s=P(o);s.value=s.__value=``;var c=I(s);c.value=c.__value=`GET`;var l=I(c);l.value=l.__value=`POST`;var u=I(l);u.value=u.__value=`PUT`;var d=I(u);d.value=d.__value=`PATCH`;var f=I(d);f.value=f.__value=`DELETE`,D(o);var p=I(o,2),m=P(p);m.value=m.__value=``;var h=I(m);h.value=h.__value=`200`;var g=I(h);g.value=g.__value=`201`;var _=I(g);_.value=_.__value=`400`;var v=I(_);v.value=v.__value=`401`;var y=I(v);y.value=y.__value=`403`;var b=I(y);b.value=b.__value=`404`;var x=I(b);x.value=x.__value=`429`;var S=I(x);S.value=S.__value=`500`;var C=I(S);C.value=C.__value=`502`;var w=I(C);w.value=w.__value=`503`;var T=I(w);T.value=T.__value=`504`,D(p);var E=I(p,2),ee=P(E);ee.value=ee.__value=``;var te=I(ee);te.value=te.__value=`true`;var ne=I(te);ne.value=ne.__value=`false`,D(E);var re=I(E,2);J(P(re),{get icon(){return Nu},class:`table-icon-svg`}),Ve(2),D(re),D(a),D(r),z(`change`,o,()=>Iz.fetchAuditLog(!0)),Ui(o,()=>Iz.auditMethod,e=>Iz.auditMethod=e),z(`change`,p,()=>Iz.fetchAuditLog(!0)),Ui(p,()=>Iz.auditStatusCode,e=>Iz.auditStatusCode=e),z(`change`,E,()=>Iz.fetchAuditLog(!0)),Ui(E,()=>Iz.auditStream,e=>Iz.auditStream=e),z(`click`,re,()=>Iz.clearAuditFilters()),V(e,r),k()}Br([`change`,`click`]);var zz=B(`Live stream connecting…`),Bz=B(` `),Vz=B(`Live`),Hz=B(` `);function Uz(e,t){O(t,!0);let n=A(()=>zD.auditLivePauseReason()),r=A(()=>zD.liveLogsStreaming&&!R(n));var i=Xr(),a=F(i),o=e=>{var t=Hz(),i=P(t);let a;var o=I(i,2),s=e=>{V(e,zz())},c=e=>{var t=Bz(),r=P(t,!0);D(t),L(e=>H(r,e),[()=>DD(R(n))]),V(e,t)},l=e=>{V(e,Vz())};U(o,e=>{zD.liveLogsStreaming?R(n)?e(c,1):e(l,-1):e(s)}),D(t),L(()=>a=G(i,1,`live-dot svelte-tve6yv`,null,a,{"is-streaming":R(r)})),V(e,t)},s=A(()=>Td.liveLogsVisible());U(a,e=>{R(s)&&e(o)}),V(e,i),k()}var Wz=B(` `),Gz=B(``);function Kz(e,t){O(t,!0);let n=A(()=>[{key:`provider`,text:wf(t.entry)||`-`},{key:`model`,text:t.entry.requested_model||t.entry.model||`-`,mono:!0},{key:`user_path`,text:t.entry.user_path,mono:!0},{key:`request_id`,text:`request_id: `+(t.entry.request_id||`-`),mono:!0},{key:`ip`,text:t.entry.client_ip&&`ip: `+t.entry.client_ip,mono:!0},{key:`auth_key_id`,text:t.entry.auth_key_id&&`auth_key_id: `+t.entry.auth_key_id,mono:!0},{key:`alias`,text:t.entry.alias_used&&`alias`,class:`audit-alias-badge`},{key:`resolved`,text:t.entry.alias_used&&t.entry.resolved_model&&`resolved: `+Df(t.entry),mono:!0},{key:`failover`,text:tz(t.entry)&&`failover: `+tz(t.entry),mono:!0},{key:`stream`,text:t.entry.stream&&`stream`},{key:`error_type`,text:t.entry.error_type}].filter(e=>!!e.text));var r=Gz(),i=I(P(r),2);W(i,21,()=>R(n),e=>e.key,(e,t)=>{var n=Wz(),r=P(n,!0);D(n),L(()=>{G(n,1,Ni([`provider-badge`,R(t).class,{mono:R(t).mono}]),`svelte-hyopt0`),H(r,R(t).text)}),V(e,n)}),D(i),D(r),V(e,r),k()}var qz=B(``),Jz=B(` `);function Yz(e,t){O(t,!0);let n=A(()=>cz(t.entry)),r=A(()=>R(n).length>0?uz(t.entry):``),i=A(()=>R(n).length>0?lz(t.entry):``);var a=Xr(),o=F(a),s=e=>{var a=Jz(),o=P(a);W(o,21,()=>R(n),e=>t.entry.id+`-pip-`+e.seq,(e,t)=>{var n=qz();let r;L(e=>{r=G(n,1,`audit-attempt-pip svelte-1eu22xn`,null,r,{"audit-attempt-success":!!(R(t)&&R(t).success),"audit-attempt-error":!(R(t)&&R(t).success)}),K(n,`title`,e)},[()=>dz(R(t))]),V(e,n)}),D(o);var s=I(o,2),c=P(s,!0);D(s),D(a),L(()=>{K(a,`title`,R(r)),K(a,`aria-label`,R(r)),H(c,R(i))}),V(e,a)};U(o,e=>{R(n).length>0&&e(s)}),V(e,a),k()}var Xz=new Set([`instructions`,`messages`,`input`,`previous_response_id`,`choices`,`output`]);function Zz(e){if(!e||typeof e!=`object`)return``;let t=String(e.type||``).toLowerCase();if(t===`image`||t===`image_url`||t===`input_image`||t===`output_image`)return`[Image]`;if(t===`audio`||t===`input_audio`||t===`output_audio`)return`[Audio]`;if(t===`file`||t===`input_file`||t===`output_file`){let t=String(e.filename||e.name||``).trim();return t?`[File: `+t+`]`:`[File]`}return typeof e.refusal==`string`?e.refusal:``}function Qz(e){if(e==null)return``;if(typeof e==`string`)return e.trim();if(Array.isArray(e))return e.map(e=>typeof e==`string`?e:!e||typeof e!=`object`?``:typeof e.text==`string`?e.text:typeof e.output_text==`string`?e.output_text:Zz(e)).filter(Boolean).join(` +`).trim();if(typeof e==`object`){if(typeof e.text==`string`)return e.text.trim();try{return JSON.stringify(e,null,2)}catch{return``}}return String(e).trim()}function $z(e){return!e||typeof e!=`object`?``:Qz(e.content)||(typeof e.refusal==`string`?e.refusal.trim():``)}function eB(e){if(e==null)return[];if(typeof e==`string`)return e?[e]:[];if(Array.isArray(e))return e.flatMap(e=>typeof e==`string`?e?[e]:[]:!e||typeof e!=`object`?[]:typeof e.text==`string`?e.text?[e.text]:[]:typeof e.output_text==`string`&&e.output_text?[e.output_text]:[]);if(typeof e==`object`)return typeof e.text==`string`&&e.text?[e.text]:[];let t=String(e);return t?[t]:[]}function tB(e){if(e==null)return[];if(Array.isArray(e))return e.flatMap(tB);if(typeof e==`object`)return Object.entries(e).flatMap(([e,t])=>[e,...tB(t)]);let t=String(e);return t?[t]:[]}function nB(e){return QB(e).flatMap(e=>[...e.name?[String(e.name)]:[],...tB(e.arguments)])}function rB(e){return Array.isArray(e)?e.flatMap(e=>e&&typeof e==`object`&&e.type===`tool_use`?nB([e]):eB(e)):eB(e)}function iB(e){let t=e&&e.usage?e.usage.estimated_cached_characters:null;if(t==null)return null;let n=Number(t);return Number.isFinite(n)&&n>0?Math.floor(n):0}function aB(e,t){if(!e)return null;let n=(Array.isArray(t)?t:[]).reduce((e,t)=>e+String(t||``).length,0),r=Math.min(String(e).length,n);return r>0?{total:r}:null}function oB(e){let t=e&&e.arguments!==void 0?e.arguments:``,n=``;if(typeof t==`string`)n=t;else try{n=JSON.stringify(t)}catch{n=String(t)}return(String(e&&e.name||``)+`(`+n+`)`).length}function sB(e){return{characters:(Array.isArray(e)?e:[]).map(oB)}}function cB(e,t){let n=Math.max(0,Number(t||0));return e.map(e=>{if(!e||e.role===`error`)return e;let t=Math.max(0,Number(e._promptTextCharacters||0)),r=Math.min(n,t);n-=r;let i=0;(Array.isArray(e._toolPromptCharacters)?e._toolPromptCharacters:[]).forEach(e=>{let t=Math.max(0,Number(e||0)),r=Math.min(n,t);n-=r,i+=r});let a=t+(e._toolPromptCharacters||[]).reduce((e,t)=>e+Math.max(0,Number(t||0)),0);return{...e,promptCacheRatio:a>0?(r+i)/a:0}})}function lB(e){if(e==null)return[];if(typeof e==`string`){let t=e.trim();return t?[{role:`user`,text:t}]:[]}if(!Array.isArray(e)){let t=Qz(e);return t?[{role:`user`,text:t}]:[]}return e.map(e=>{if(!e||typeof e!=`object`)return null;let t=String(e.role||`user`).toLowerCase(),n=Qz(e.content);return n?{role:t,text:n}:null}).filter(Boolean)}function uB(e){return $z(e)}function dB(e){if(!e||typeof e!=`object`)return[];let t=[];return t.push(...eB(e.instructions)),Array.isArray(e.messages)&&e.messages.forEach(e=>{!e||typeof e!=`object`||(t.push(...rB(e.content)),t.push(...nB(e.tool_calls)))}),typeof e.input==`string`?t.push(e.input):Array.isArray(e.input)?e.input.forEach(e=>{if(!(!e||typeof e!=`object`)){if(e.type===`function_call`||e.type===`tool_use`){t.push(...nB([e]));return}t.push(...rB(e.content)),typeof e.text==`string`&&t.push(e.text)}}):e.input&&typeof e.input==`object`&&(t.push(...eB(e.input.content)),typeof e.input.text==`string`&&t.push(e.input.text)),t.map(e=>String(e||``)).filter(e=>e.length>0)}var fB=e=>Qz(e);function pB(e){if(!e||!e.data)return``;let t=wR(e.data.response_body,0,fB);if(t)return t;let n=e.data.error_message;if(n==null)return``;if(typeof n==`string`){let e=n.trim();return e?wR(SR(e),0,fB)||e:``}return wR(n,0,fB)||Qz(n)}function mB(e){return Array.isArray(e)?e.some(e=>!e||typeof e!=`object`?!1:e.type===`message`||e.role===`assistant`||e.role===`user`||e.role===`system`?!0:Array.isArray(e.content)?e.content.some(e=>!e||typeof e!=`object`?!1:typeof e.text==`string`||e.type===`output_text`||e.type===`input_text`):!1):!1}function hB(e){if(!e)return!1;let t=String(e).toLowerCase();return t===`/v1/embeddings`||t===`/v1/embeddings/`||t.startsWith(`/v1/embeddings?`)||t.startsWith(`/v1/embeddings/`)}function gB(e){return e?!!vB(e):!1}function _B(e){let t=String(e||``).trim().split(`?`)[0].replace(/\/+$/,``).toLowerCase();return t.startsWith(`/v1/`)?t.slice(3):t}function vB(e){switch(_B(e)){case`/chat/completions`:return`chat`;case`/responses`:return`responses`;case`/messages`:return`messages`;default:return``}}function yB(e){if(!e||typeof e!=`object`)return null;try{return JSON.parse(JSON.stringify(e))}catch{return null}}function bB(e,t){if(!t||typeof t!=`object`)return;let n=e[e.length-1];try{if(n&&JSON.stringify(n)===JSON.stringify(t))return}catch{}e.push(t)}function xB(e){let t=vB(e&&e.path),n=e&&e.data&&e.data.request_body;return!t||!n||typeof n!=`object`?!1:t!==`responses`||(e.data&&e.data.response_body&&typeof e.data.response_body.id==`string`?e.data.response_body.id.trim():``)!==``||aV(n)!==``}function SB(e,t){let n=String(t||``).trim(),r=vB(e&&e.path),i=yB(e&&e.data&&e.data.request_body);if(!n||!r||!i)return null;let a=e&&e.data?e.data.response_body:null;if(r===`responses`){let e=a&&typeof a.id==`string`?a.id.trim():``,t=aV(i);return!e&&!t?null:(i.input=n,e&&!t?i.previous_response_id=e:delete i.previous_response_id,i)}let o=Array.isArray(i.messages)?i.messages:[];if(r===`chat`){let e=a&&Array.isArray(a.choices)?a.choices[0]:null;e&&e.message&&bB(o,yB(e.message)),o.push({role:`user`,content:n})}else a&&a.content!==void 0&&bB(o,{role:String(a.role||`assistant`),content:yB(a.content)||a.content}),o.push({role:`user`,content:n});return i.messages=o,i}var CB=new Set(`authorization.proxy-authorization.cookie.content-type.content-length.host.accept.connection.accept-encoding.content-encoding.transfer-encoding.user-agent.date.expect.upgrade.via.te.trailer.keep-alive.origin.referer.forwarded.x-real-ip.traceparent.tracestate.x-request-id.idempotency-key.x-idempotency-key.x-gomodel-timezone.x-gomodel-interaction-parent`.split(`.`));function wB(e,t,n=``){let r=e&&e.data&&e.data.request_headers,i={};return r&&typeof r==`object`&&Object.keys(r).forEach(e=>{let t=String(e).toLowerCase(),n=String(r[e]==null?``:r[e]);!e||!n||n===`[REDACTED]`||CB.has(t)||t.startsWith(`sec-`)||t.startsWith(`cf-`)||t.startsWith(`x-forwarded-`)||(i[e]=n)}),i[`X-GoModel-Interaction-Parent`]=String(t||e&&e.id||``).trim(),String(n||``).trim()&&(i[`X-Request-ID`]=String(n).trim()),i}function TB(e,t){let n=String(t||``).trim();return!n||!Array.isArray(e)?null:e.find(e=>String(e&&e.request_id||``).trim()===n)||null}function EB(e,t,n,r,i){let a=Array.isArray(e)?e:[],o=String(i&&i.id||``).trim(),s=String(i&&i.request_id||``).trim(),c=String(i&&i.session_id||``).trim(),l=String(r||``).trim(),u=DB(i),d=a.some(e=>o&&String(e&&e.id||``).trim()===o||s&&String(e&&e.request_id||``).trim()===s),f=!!l&&s===l,p=!!n&&c===String(n).trim(),m=!!u&&(u===String(t||``).trim()||a.some(e=>String(e&&e.id||``).trim()===u)),h=d||f||!l&&(p||m);return{accepted:h,submittedChild:f,followUpRequestID:h&&f&&o?``:l}}function DB(e){let t=e&&e.data&&e.data.request_headers;if(!t||typeof t!=`object`)return``;let n=Object.keys(t).find(e=>e.toLowerCase()===`x-gomodel-interaction-parent`);return n?String(t[n]||``).trim():``}function OB(e,t){return!Array.isArray(e)||!t?null:e.find(e=>String(e&&e.id||``)===String(t))||null}function kB(e){return!Array.isArray(e)||e.length===0?null:e.reduce((e,t)=>e?oV(t,e)>=0?t:e:t,null)}function AB(e,t){let n=new Set(Array.isArray(t)?t.map(String):[]);return kB((Array.isArray(e)?e:[]).filter(e=>{let t=String(e&&e.id||``);return n.has(t)&&e&&e.data&&e.data.request_body!=null}))}function jB(e,t){let n=kB(e);return!!n&&String(n.id||``)===String(t||``)}function MB(e,t,n){return String(e||``).trim()===`audit.flushed`&&String(t||``).trim()!==``&&String(t||``).trim()===String(n||``).trim()}function NB(e,t){let n=Array.isArray(e)?e.filter(Boolean).map(String):[];return(Array.isArray(t)?t:[]).forEach(e=>{let t=String(e&&(e.id||e.request_id)||``).trim();t&&!n.includes(t)&&n.push(t)}),n}function PB(e){if(e&&e.conversation_payload)return!0;let t=e&&e.data?e.data.request_body:null,n=e&&e.data?e.data.response_body:null,r=t&&(Array.isArray(t.messages)||t.input!==void 0||typeof t.instructions==`string`||typeof t.previous_response_id==`string`),i=n&&(Array.isArray(n.choices)||mB(n.output));return!!(r||i)}function FB(e){return!e||hB(e.path)?!1:gB(e.path)||PB(e)}function IB(e){let t=0,n=!1,r=!1,i=String(e||``);for(let e=0;e0&&a+1`,`>`).replaceAll(`"`,`"`).replaceAll(`'`,`'`)}function BB(e){return!!(e&&typeof e==`object`&&e.__audio__===!0)}function VB(e){let t=Number(e||0);if(!Number.isFinite(t)||t<=0)return`0 B`;let n=[`B`,`KB`,`MB`,`GB`],r=0,i=t;for(;i>=1024&&r`
`+zB(t)+``+zB(UB(e[t]))+`
`);return t.length?``:``}function GB(e){let t=HB(e.content_type),n=zB(t+` · `+VB(e.bytes)),r=WB(e.meta);if(e.stored&&e.encoding===`base64`&&e.data){let i=String(e.data).replace(/[^A-Za-z0-9+/=]/g,``);return`
`+n+`
`+r+`
`}let i=e.too_large?`Audio too large to store.`:`Audio not logged. Set LOGGING_LOG_AUDIO_BODIES=true to capture playable audio.`;return`
`+n+`
`+zB(i)+`
`+r+`
`}function KB(e){try{return JSON.stringify(String(e)).slice(1,-1)}catch{return``}}function qB(e){if(!e||typeof e!=`object`)return null;let t=Number(e.characters||0);if(!Number.isFinite(t)||t<=0)return null;let n=Array.isArray(e.segments)?e.segments.map(e=>String(e||``)).filter(Boolean):[];return n.length===0?null:{remaining:Math.floor(t),segments:n,segmentIndex:0}}function JB(e,t){if(!t||t.remaining<=0||t.segmentIndex>=t.segments.length)return zB(e);let n=``,r=0,i=0;for(;t.remaining>0&&t.segmentIndex`+zB(l)+``,r=s+l.length,i=s+o.length,t.remaining-=c,c>=a.length){t.segmentIndex++;continue}break}return n?n+zB(e.slice(r)):zB(e)}function YB(e,t,n){let r=n&&typeof n.formatJSON==`function`?n.formatJSON:e=>String(e),i=n&&typeof n.canShowConversation==`function`?n.canShowConversation:()=>!1,a=qB(n&&n.promptCacheHighlight),o=r(t);if(!o||o===`Not captured`)return zB(o);if(!i(e))return o.split(` +`).map(e=>JB(e,a)).join(` `);let s=o.split(` -`),c=[],l=0;for(;lUz(e,a)).join(` -`);c.push(``+o+``),l=r+1;continue}c.push(Uz(e,a)),l++}return c.join(` -`)}function Gz(e){let t=String(e||``).toLowerCase();return t===`system`||t===`developer`?{role:`system`,label:`System Prompt`,className:`role-system`}:t===`assistant`?{role:`assistant`,label:`Agent`,className:`role-assistant`}:t===`error`?{role:`error`,label:`Error`,className:`role-error`}:t===`function_call`?{role:`function_call`,label:`Function Call`,className:`role-function-call`}:t===`function_result`?{role:`function_result`,label:`Function Result`,className:`role-function-result`}:{role:`user`,label:`User`,className:`role-user`}}function Kz(e,t,{timestamp:n,entryID:r,isAnchor:i,isAfterAnchor:a,index:o,toolCalls:s,functionName:c,functionCallID:l,promptCache:u,toolPromptCache:d}){let f=Gz(e),p=u&&Number.isFinite(Number(u.total))?Math.max(0,Number(u.total)):u===null?0:String(t||``).length,m=d&&Array.isArray(d.characters)?d.characters:nz(s).characters;return{uid:r+`-`+o,entryID:r,timestamp:n,text:t,role:f.role,roleLabel:f.label,roleClass:f.className,isAnchor:i,isAfterAnchor:a,toolCalls:Array.isArray(s)&&s.length>0?s:null,functionName:c||``,functionCallID:l||``,promptCacheRatio:0,_promptTextCharacters:p,_toolPromptCharacters:m}}function qz(e){return Array.isArray(e)?e.map(e=>{if(!e)return null;let t=e.function||e,n=``;return t.arguments===void 0?e.arguments===void 0?t.input===void 0?e.input!==void 0&&(n=e.input):n=t.input:n=e.arguments:n=t.arguments,{name:t.name||e.name||``,arguments:n,id:e.call_id||e.id||``}}).filter(Boolean):[]}function Jz(e){return Array.isArray(e)?qz(e.filter(e=>e&&typeof e==`object`&&e.type===`tool_use`)):[]}function Yz(e){return Array.isArray(e)?e.filter(e=>e&&typeof e==`object`&&e.type===`tool_result`).map(e=>({id:e.tool_use_id||e.call_id||``,text:qR(e.content)})):[]}function Xz(e,t,n){!t||!n||[t.call_id,t.id].forEach(t=>{t&&(e[t]=n)})}function Zz(e,t,n){if(t&&Array.isArray(t.messages)&&t.messages.forEach(t=>{t&&[...Array.isArray(t.tool_calls)?t.tool_calls:[],...Array.isArray(t.content)?t.content.filter(e=>e&&e.type===`tool_use`):[]].forEach(t=>{t&&Xz(e,t,(t.function||t).name||t.name||``)})}),t&&Array.isArray(t.input)&&t.input.forEach(t=>{!t||typeof t!=`object`||t.type!==`function_call`&&t.type!==`tool_use`||Xz(e,t,t.name||``)}),n&&Array.isArray(n.choices)){let t=n.choices[0];t&&t.message&&Array.isArray(t.message.tool_calls)&&t.message.tool_calls.forEach(t=>{t&&Xz(e,t,(t.function||t).name||t.name||``)})}n&&Array.isArray(n.output)&&n.output.forEach(t=>{!t||t.type!==`function_call`&&t.type!==`tool_use`||Xz(e,t,t.name||``)}),n&&Array.isArray(n.content)&&n.content.forEach(t=>{!t||t.type!==`tool_use`||Xz(e,t,t.name||``)})}function Qz(e){return Array.isArray(e)?`[`+e.map(Qz).join(`,`)+`]`:e&&typeof e==`object`?`{`+Object.keys(e).sort().map(t=>JSON.stringify(t)+`:`+Qz(e[t])).join(`,`)+`}`:JSON.stringify(e)}function $z(e){if(!e||typeof e!=`object`)return null;let t=[];if(e.system!==void 0&&t.push({system:e.system}),e.instructions!==void 0&&t.push({instructions:e.instructions}),Array.isArray(e.messages))t.push(...e.messages);else if(Array.isArray(e.input)&&e.previous_response_id==null&&e.conversation==null)t.push(...e.input);else return null;return t.map(Qz)}function eB(e){let t=e&&e.conversation;return typeof t==`string`?t.trim():t&&typeof t.id==`string`?t.id.trim():``}function tB(e,t){let n=new Date(e&&e.timestamp).getTime(),r=new Date(t&&t.timestamp).getTime();if(Number.isFinite(n)&&Number.isFinite(r)&&n!==r)return n-r;let i=String(e&&e.timestamp||``).localeCompare(String(t&&t.timestamp||``));if(i!==0)return i;let a=String(e&&e.id||``),o=String(t&&t.id||``);return ao)}function nB(e,t){if(!Array.isArray(e)||e.length===0)return{messages:[],entryIDs:[]};let n=[...e].sort(tB),r={};n.forEach(e=>{let t=e.data&&e.data.request_body?e.data.request_body:null,n=e.data&&e.data.response_body?e.data.response_body:null;Zz(r,t,n)});let i=[],a=new Set,o=new Set,s=new Set,c=[],l=null,u=0,d=n.findIndex(e=>e.id===t),f=e=>JSON.stringify({role:e.role,text:e.text,toolCalls:e.toolCalls,functionName:e.functionName,functionCallID:e.functionCallID});return n.forEach((e,n)=>{let p=e.id===t,m=d>=0&&n>d,h=e.timestamp,g=e.data&&e.data.request_body?e.data.request_body:null,_=e.data&&e.data.response_body?e.data.response_body:null,v=i.length,y=(e,t)=>ez(e,t),b=e=>nz(e),x=(t,n,{toolCalls:r,functionName:i,functionCallID:a,promptCache:o,toolPromptCache:s}={})=>Kz(t,n,{timestamp:h,entryID:e.id,isAnchor:p,isAfterAnchor:m,index:++u,toolCalls:r,functionName:i,functionCallID:a,promptCache:o,toolPromptCache:s});if(g&&g.system!==void 0){let e=qR(g.system);e&&i.push(x(`system`,e,{promptCache:y(e,YR(g.system))}))}if(g&&g.instructions!==void 0){let e=qR(g.instructions);e&&i.push(x(`system`,e,{promptCache:y(e,YR(g.instructions))}))}g&&Array.isArray(g.messages)&&g.messages.forEach(e=>{if(!e)return;let t=(e.role||`user`).toLowerCase();if(t===`tool`){let t=qR(e.content),n=e.name||r[e.tool_call_id]||``;t&&i.push(x(`function_result`,t,{functionName:n,functionCallID:e.tool_call_id||``,promptCache:y(t,YR(e.content))}));return}if(t===`assistant`){let n=JR(e),r=[...qz(e.tool_calls),...Jz(e.content)];if(n||r.length>0){let a=y(n,YR(e.content));i.push(x(t,n,{toolCalls:r,promptCache:a,toolPromptCache:b(r)}))}return}Yz(e.content).forEach(e=>{e.text&&i.push(x(`function_result`,e.text,{functionName:r[e.id]||``,functionCallID:e.id,promptCache:y(e.text,[e.text])}))});let n=JR(e);n&&i.push(x(t,n,{promptCache:y(n,YR(e.content))}))}),g&&g.input!==void 0&&(Array.isArray(g.input)?g.input.forEach(e=>{if(!(!e||typeof e!=`object`)){if(e.type===`function_call_output`||e.type===`tool_result`){let t=e.type===`tool_result`,n=t?e.content:e.output,a=t?e.tool_use_id||e.call_id||``:e.call_id||``,o=typeof n==`string`?n:qR(n);o&&i.push(x(`function_result`,o,{functionName:r[a]||e.name||``,functionCallID:a,promptCache:y(o,t?YR(e.content):[o])}))}else if(e.type===`function_call`||e.type===`tool_use`){let t=qz([e]);i.push(x(`function_call`,``,{toolCalls:t,toolPromptCache:b(t)}))}else if(e.role){let t=String(e.role).toLowerCase(),n=qR(e.content);n&&i.push(x(t,n,{promptCache:y(n,YR(e.content))}))}}}):iz(g.input).forEach(e=>{if(!e.text)return;let t=[];typeof g.input==`string`?t=[g.input]:g.input&&typeof g.input==`object`&&(t=YR(g.input.content),typeof g.input.text==`string`&&t.push(g.input.text)),i.push(x(e.role,e.text,{promptCache:y(e.text,t)}))}));let S=i.splice(v),C=S.map(f),w=$z(g),T=w!==null,E=Sz(e),ee=!!E&&a.has(E),te=String(g&&g.previous_response_id||``).trim(),ne=eB(g),re=ee||!!te&&o.has(te)||!!ne&&s.has(ne);if(m){let e=T&&l&&l.length>0&&l.every((e,t)=>w[t]===e);if(T&&!e&&!ee||!T&&!re)return}p&&T&&(l=[...w]);let ie=String(e.id||``).trim();p&&(a.clear(),o.clear(),s.clear()),ie&&(p||m)&&a.add(ie),ne&&s.add(ne);let ae=0;for(;ae0;){let t=c.slice(-e),n=C.slice(0,e);if(t.every((e,t)=>e===n[t]))break;e--}i.push(...S.slice(e)),c.push(...C.slice(e))}let oe=$R(e);if(g&&oe!==null&&i.splice(0,i.length,...rz(i,oe)),_&&Array.isArray(_.choices)){let e=_.choices[0];if(e&&e.message){let t=(e.message.role||`assistant`).toLowerCase(),n=JR(e.message),r=qz(e.message.tool_calls);if(n||r.length>0){let e=x(t,n,{toolCalls:r});i.push(e),c.push(f(e))}}}if(_&&Array.isArray(_.output)&&_.output.forEach(e=>{if(!e)return;if(e.type===`function_call`||e.type===`tool_use`){let t=x(`function_call`,``,{toolCalls:qz([e])});i.push(t),c.push(f(t));return}let t=(e.role||`assistant`).toLowerCase(),n=az(e);if(n){let e=x(t,n);i.push(e),c.push(f(e))}}),_&&_.content!==void 0&&!Array.isArray(_.choices)&&!Array.isArray(_.output)){let e=String(_.role||`assistant`).toLowerCase(),t=qR(_.content),n=Jz(_.content);if(t||n.length>0){let r=x(e,t,{toolCalls:n});i.push(r),c.push(f(r))}}let se=cz(e);se&&i.push(x(`error`,se));let ce=String(_&&_.id||``).trim();ce&&o.add(ce)}),{messages:i,entryIDs:[...a]}}function rB(e){return e.role===`function_call`?(e.toolCalls||[]).map(function(e){return e.name+`(`+aB(e)+`)`}).join(` +`),c=[],l=0;for(;lJB(e,a)).join(` +`);c.push(``+o+``),l=r+1;continue}c.push(JB(e,a)),l++}return c.join(` +`)}function XB(e){let t=String(e||``).toLowerCase();return t===`system`||t===`developer`?{role:`system`,label:`System Prompt`,className:`role-system`}:t===`assistant`?{role:`assistant`,label:`Agent`,className:`role-assistant`}:t===`error`?{role:`error`,label:`Error`,className:`role-error`}:t===`function_call`?{role:`function_call`,label:`Function Call`,className:`role-function-call`}:t===`function_result`?{role:`function_result`,label:`Function Result`,className:`role-function-result`}:{role:`user`,label:`User`,className:`role-user`}}function ZB(e,t,{timestamp:n,entryID:r,isAnchor:i,isAfterAnchor:a,index:o,toolCalls:s,functionName:c,functionCallID:l,promptCache:u,toolPromptCache:d}){let f=XB(e),p=u&&Number.isFinite(Number(u.total))?Math.max(0,Number(u.total)):u===null?0:String(t||``).length,m=d&&Array.isArray(d.characters)?d.characters:sB(s).characters;return{uid:r+`-`+o,entryID:r,timestamp:n,text:t,role:f.role,roleLabel:f.label,roleClass:f.className,isAnchor:i,isAfterAnchor:a,toolCalls:Array.isArray(s)&&s.length>0?s:null,functionName:c||``,functionCallID:l||``,promptCacheRatio:0,_promptTextCharacters:p,_toolPromptCharacters:m}}function QB(e){return Array.isArray(e)?e.map(e=>{if(!e)return null;let t=e.function||e,n=``;return t.arguments===void 0?e.arguments===void 0?t.input===void 0?e.input!==void 0&&(n=e.input):n=t.input:n=e.arguments:n=t.arguments,{name:t.name||e.name||``,arguments:n,id:e.call_id||e.id||``}}).filter(Boolean):[]}function $B(e){return Array.isArray(e)?QB(e.filter(e=>e&&typeof e==`object`&&e.type===`tool_use`)):[]}function eV(e){return Array.isArray(e)?e.filter(e=>e&&typeof e==`object`&&e.type===`tool_result`).map(e=>({id:e.tool_use_id||e.call_id||``,text:Qz(e.content)})):[]}function tV(e,t,n){!t||!n||[t.call_id,t.id].forEach(t=>{t&&(e[t]=n)})}function nV(e,t,n){if(t&&Array.isArray(t.messages)&&t.messages.forEach(t=>{t&&[...Array.isArray(t.tool_calls)?t.tool_calls:[],...Array.isArray(t.content)?t.content.filter(e=>e&&e.type===`tool_use`):[]].forEach(t=>{t&&tV(e,t,(t.function||t).name||t.name||``)})}),t&&Array.isArray(t.input)&&t.input.forEach(t=>{!t||typeof t!=`object`||t.type!==`function_call`&&t.type!==`tool_use`||tV(e,t,t.name||``)}),n&&Array.isArray(n.choices)){let t=n.choices[0];t&&t.message&&Array.isArray(t.message.tool_calls)&&t.message.tool_calls.forEach(t=>{t&&tV(e,t,(t.function||t).name||t.name||``)})}n&&Array.isArray(n.output)&&n.output.forEach(t=>{!t||t.type!==`function_call`&&t.type!==`tool_use`||tV(e,t,t.name||``)}),n&&Array.isArray(n.content)&&n.content.forEach(t=>{!t||t.type!==`tool_use`||tV(e,t,t.name||``)})}function rV(e){return Array.isArray(e)?`[`+e.map(rV).join(`,`)+`]`:e&&typeof e==`object`?`{`+Object.keys(e).sort().map(t=>JSON.stringify(t)+`:`+rV(e[t])).join(`,`)+`}`:JSON.stringify(e)}function iV(e){if(!e||typeof e!=`object`)return null;let t=[];if(e.system!==void 0&&t.push({system:e.system}),e.instructions!==void 0&&t.push({instructions:e.instructions}),Array.isArray(e.messages))t.push(...e.messages);else if(Array.isArray(e.input)&&e.previous_response_id==null&&e.conversation==null)t.push(...e.input);else return null;return t.map(rV)}function aV(e){let t=e&&e.conversation;return typeof t==`string`?t.trim():t&&typeof t.id==`string`?t.id.trim():``}function oV(e,t){let n=new Date(e&&e.timestamp).getTime(),r=new Date(t&&t.timestamp).getTime();if(Number.isFinite(n)&&Number.isFinite(r)&&n!==r)return n-r;let i=String(e&&e.timestamp||``).localeCompare(String(t&&t.timestamp||``));if(i!==0)return i;let a=String(e&&e.id||``),o=String(t&&t.id||``);return ao)}function sV(e,t){if(!Array.isArray(e)||e.length===0)return{messages:[],entryIDs:[]};let n=[...e].sort(oV),r={};n.forEach(e=>{let t=e.data&&e.data.request_body?e.data.request_body:null,n=e.data&&e.data.response_body?e.data.response_body:null;nV(r,t,n)});let i=[],a=new Set,o=new Set,s=new Set,c=[],l=null,u=0,d=n.findIndex(e=>e.id===t),f=e=>JSON.stringify({role:e.role,text:e.text,toolCalls:e.toolCalls,functionName:e.functionName,functionCallID:e.functionCallID});return n.forEach((e,n)=>{let p=e.id===t,m=d>=0&&n>d,h=e.timestamp,g=e.data&&e.data.request_body?e.data.request_body:null,_=e.data&&e.data.response_body?e.data.response_body:null,v=i.length,y=(e,t)=>aB(e,t),b=e=>sB(e),x=(t,n,{toolCalls:r,functionName:i,functionCallID:a,promptCache:o,toolPromptCache:s}={})=>ZB(t,n,{timestamp:h,entryID:e.id,isAnchor:p,isAfterAnchor:m,index:++u,toolCalls:r,functionName:i,functionCallID:a,promptCache:o,toolPromptCache:s});if(g&&g.system!==void 0){let e=Qz(g.system);e&&i.push(x(`system`,e,{promptCache:y(e,eB(g.system))}))}if(g&&g.instructions!==void 0){let e=Qz(g.instructions);e&&i.push(x(`system`,e,{promptCache:y(e,eB(g.instructions))}))}g&&Array.isArray(g.messages)&&g.messages.forEach(e=>{if(!e)return;let t=(e.role||`user`).toLowerCase();if(t===`tool`){let t=Qz(e.content),n=e.name||r[e.tool_call_id]||``;t&&i.push(x(`function_result`,t,{functionName:n,functionCallID:e.tool_call_id||``,promptCache:y(t,eB(e.content))}));return}if(t===`assistant`){let n=$z(e),r=[...QB(e.tool_calls),...$B(e.content)];if(n||r.length>0){let a=y(n,eB(e.content));i.push(x(t,n,{toolCalls:r,promptCache:a,toolPromptCache:b(r)}))}return}eV(e.content).forEach(e=>{e.text&&i.push(x(`function_result`,e.text,{functionName:r[e.id]||``,functionCallID:e.id,promptCache:y(e.text,[e.text])}))});let n=$z(e);n&&i.push(x(t,n,{promptCache:y(n,eB(e.content))}))}),g&&g.input!==void 0&&(Array.isArray(g.input)?g.input.forEach(e=>{if(!(!e||typeof e!=`object`)){if(e.type===`function_call_output`||e.type===`tool_result`){let t=e.type===`tool_result`,n=t?e.content:e.output,a=t?e.tool_use_id||e.call_id||``:e.call_id||``,o=typeof n==`string`?n:Qz(n);o&&i.push(x(`function_result`,o,{functionName:r[a]||e.name||``,functionCallID:a,promptCache:y(o,t?eB(e.content):[o])}))}else if(e.type===`function_call`||e.type===`tool_use`){let t=QB([e]);i.push(x(`function_call`,``,{toolCalls:t,toolPromptCache:b(t)}))}else if(e.role){let t=String(e.role).toLowerCase(),n=Qz(e.content);n&&i.push(x(t,n,{promptCache:y(n,eB(e.content))}))}}}):lB(g.input).forEach(e=>{if(!e.text)return;let t=[];typeof g.input==`string`?t=[g.input]:g.input&&typeof g.input==`object`&&(t=eB(g.input.content),typeof g.input.text==`string`&&t.push(g.input.text)),i.push(x(e.role,e.text,{promptCache:y(e.text,t)}))}));let S=i.splice(v),C=S.map(f),w=iV(g),T=w!==null,E=DB(e),ee=!!E&&a.has(E),te=String(g&&g.previous_response_id||``).trim(),ne=aV(g),re=ee||!!te&&o.has(te)||!!ne&&s.has(ne);if(m){let e=T&&l&&l.length>0&&l.every((e,t)=>w[t]===e);if(T&&!e&&!ee||!T&&!re)return}p&&T&&(l=[...w]);let ie=String(e.id||``).trim();p&&(a.clear(),o.clear(),s.clear()),ie&&(p||m)&&a.add(ie),ne&&s.add(ne);let ae=0;for(;ae0;){let t=c.slice(-e),n=C.slice(0,e);if(t.every((e,t)=>e===n[t]))break;e--}i.push(...S.slice(e)),c.push(...C.slice(e))}let oe=iB(e);if(g&&oe!==null&&i.splice(0,i.length,...cB(i,oe)),_&&Array.isArray(_.choices)){let e=_.choices[0];if(e&&e.message){let t=(e.message.role||`assistant`).toLowerCase(),n=$z(e.message),r=QB(e.message.tool_calls);if(n||r.length>0){let e=x(t,n,{toolCalls:r});i.push(e),c.push(f(e))}}}if(_&&Array.isArray(_.output)&&_.output.forEach(e=>{if(!e)return;if(e.type===`function_call`||e.type===`tool_use`){let t=x(`function_call`,``,{toolCalls:QB([e])});i.push(t),c.push(f(t));return}let t=(e.role||`assistant`).toLowerCase(),n=uB(e);if(n){let e=x(t,n);i.push(e),c.push(f(e))}}),_&&_.content!==void 0&&!Array.isArray(_.choices)&&!Array.isArray(_.output)){let e=String(_.role||`assistant`).toLowerCase(),t=Qz(_.content),n=$B(_.content);if(t||n.length>0){let r=x(e,t,{toolCalls:n});i.push(r),c.push(f(r))}}let se=pB(e);se&&i.push(x(`error`,se));let ce=String(_&&_.id||``).trim();ce&&o.add(ce)}),{messages:i,entryIDs:[...a]}}function cV(e){return e.role===`function_call`?(e.toolCalls||[]).map(function(e){return e.name+`(`+uV(e)+`)`}).join(` -`):e.text||``}function iB(e){return e?[String(e.text||``),Array.isArray(e.toolCalls)&&e.toolCalls.length>0?rB({role:`function_call`,toolCalls:e.toolCalls}):``].filter(Boolean).join(` +`):e.text||``}function lV(e){return e?[String(e.text||``),Array.isArray(e.toolCalls)&&e.toolCalls.length>0?cV({role:`function_call`,toolCalls:e.toolCalls}):``].filter(Boolean).join(` -`):``}function aB(e){let t=e&&e.arguments!==void 0?e.arguments:``;if(typeof t!=`string`)try{return JSON.stringify(t,null,2)}catch{return String(t)}try{return JSON.stringify(JSON.parse(t),null,2)}catch{return t}}var oB=600*1e3,sB=15*1e3,cB=250,lB=class{#e=j(!1);get conversationOpen(){return R(this.#e)}set conversationOpen(e){M(this.#e,e,!0)}#t=j(!1);get conversationLoading(){return R(this.#t)}set conversationLoading(e){M(this.#t,e,!0)}#n=j(``);get conversationError(){return R(this.#n)}set conversationError(e){M(this.#n,e,!0)}#r=j(``);get conversationAnchorID(){return R(this.#r)}set conversationAnchorID(e){M(this.#r,e,!0)}#i=j(N([]));get conversationEntryIDs(){return R(this.#i)}set conversationEntryIDs(e){M(this.#i,e,!0)}#a=j(``);get conversationSessionID(){return R(this.#a)}set conversationSessionID(e){M(this.#a,e,!0)}#o=j(!1);get conversationTruncated(){return R(this.#o)}set conversationTruncated(e){M(this.#o,e,!0)}#s=j(!1);get conversationFollowLatest(){return R(this.#s)}set conversationFollowLatest(e){M(this.#s,e,!0)}#c=j(``);get conversationOpenedFromID(){return R(this.#c)}set conversationOpenedFromID(e){M(this.#c,e,!0)}#l=j(``);get followUpText(){return R(this.#l)}set followUpText(e){M(this.#l,e,!0)}#u=j(!1);get followUpSending(){return R(this.#u)}set followUpSending(e){M(this.#u,e,!0)}#d=j(``);get followUpError(){return R(this.#d)}set followUpError(e){M(this.#d,e,!0)}followUpRequestID=``;followUpAbort=null;conversationRequestToken=0;conversationReturnFocusEl=null;bodyPointerStart=null;#f=j(null);get conversationDialogEl(){return R(this.#f)}set conversationDialogEl(e){M(this.#f,e,!0)}#p=j(null);get conversationCloseBtnEl(){return R(this.#p)}set conversationCloseBtnEl(e){M(this.#p,e,!0)}#m=j(null);get conversationThreadEl(){return R(this.#m)}set conversationThreadEl(e){M(this.#m,e,!0)}get conversationEntries(){return(this.conversationEntryIDs||[]).map(e=>PE.auditRecord(e)).filter(Boolean)}#h=A(()=>nB(this.conversationEntries,this.conversationAnchorID));get conversationView(){return R(this.#h)}set conversationView(e){M(this.#h,e)}get conversationMessages(){return this.conversationView.messages}get conversationBranchEntryIDs(){return this.conversationView.entryIDs}_setConversationEntryIDs(e){this.conversationEntryIDs=[...new Set((Array.isArray(e)?e:[]).filter(Boolean))],PE.pinAuditRecords(this.conversationEntryIDs)}canShowConversation(e){return Az(e)}startBodyInteraction(e){this.bodyPointerStart={x:e.clientX,y:e.clientY}}_isBodyDrag(e){if(!this.bodyPointerStart)return!1;let t=Math.abs(e.clientX-this.bodyPointerStart.x),n=Math.abs(e.clientY-this.bodyPointerStart.y);return t>4||n>4}_hasActiveSelection(){let e=window.getSelection?window.getSelection():null;return!e||e.isCollapsed?!1:String(e.toString()||``).trim().length>0}handleBodyConversationClick(e,t){let n=this._isBodyDrag(e);if(this.bodyPointerStart=null,n||this._hasActiveSelection()||!this.canShowConversation(t))return;let r=e.target&&e.target.closest?e.target.closest(`[data-conversation-trigger="1"]`):null;r&&(e.preventDefault(),e.stopPropagation(),this.openConversation(t,r))}handleErrorConversationClick(e,t){let n=this._isBodyDrag(e);this.bodyPointerStart=null,!n&&(this._hasActiveSelection()||this.canShowConversation(t)&&(e.preventDefault(),e.stopPropagation(),this.openConversation(t,e.currentTarget)))}formatJSON(e){return sd(e)}renderBodyWithConversationHighlights(e,t,n){return Wz(e,t,{formatJSON:e=>this.formatJSON(e),canShowConversation:e=>this.canShowConversation(e),promptCacheHighlight:n&&n.promptCacheHighlight})}async openConversation(e,t){if(!e||!e.id||!this.canShowConversation(e))return;let n=document.activeElement instanceof HTMLElement?document.activeElement:null;t instanceof HTMLElement?this.conversationReturnFocusEl=t:n&&n!==document.body&&(this.conversationReturnFocusEl=n);let r=++this.conversationRequestToken;if(this.conversationOpen=!0,this.conversationError=``,this.conversationAnchorID=e.id,this.conversationOpenedFromID=e.id,this.conversationSessionID=String(e.session_id||``).trim(),this._setConversationEntryIDs([]),this.conversationTruncated=!1,this.conversationFollowLatest=!1,this.followUpText=``,this.followUpError=``,this.followUpRequestID=``,requestAnimationFrame(()=>this._focusConversationDrawer()),this._conversationEntryLivePending(e)){this.conversationFollowLatest=!0,this.conversationLoading=!1,this._addConversationRecord(PE.upsertAuditRecord(e,`conversation.live`));return}this.conversationLoading=!0,await this.fetchConversation(e.id,r,!0,!0)}_conversationEntryLivePending(e){return typeof PE.auditEntryLiveDetailPending==`function`&&PE.auditEntryLiveDetailPending(e)}_applyConversationView(){let e=this.conversationEntries,t=nB(e,this.conversationAnchorID);if(this.conversationFollowLatest){let n=Tz(e,t.entryIDs);n&&n.id&&String(n.id)!==this.conversationAnchorID&&(this.conversationAnchorID=String(n.id))}}handleAuditRecordChange(e,t){if(!this.conversationOpen||!e)return;let n=String(e.id||``).trim(),r=xz(this.conversationEntries,this.conversationAnchorID,this.conversationSessionID,this.followUpRequestID,e);if(r.accepted&&(this.followUpRequestID=r.followUpRequestID,n&&r.submittedChild&&(this.conversationAnchorID=n,this.conversationFollowLatest=!0),this._addConversationRecord(e),Dz(String(t||e._live_state||``).trim(),n,this.conversationAnchorID))){this.conversationMessages.length===0&&(this.conversationLoading=!0);let e=++this.conversationRequestToken;this.fetchConversation(n,e,!1)}}_addConversationRecord(e){let t=DE(e);t&&!this.conversationEntryIDs.includes(t)&&this._setConversationEntryIDs([...this.conversationEntryIDs,t]),!this.conversationSessionID&&e.session_id&&(this.conversationSessionID=String(e.session_id).trim()),this._applyConversationView(),this.conversationFollowLatest&&this._scheduleLatestScroll()}conversationLiveWaiting(){if(!this.conversationOpen)return!1;let e=new Set(this.conversationBranchEntryIDs||[]);return(this.conversationEntries||[]).some(t=>e.has(String(t&&t.id||``))&&t._live&&(typeof PE.liveAuditStateSettled!=`function`||!PE.liveAuditStateSettled(t._live_state)))}conversationLiveStatusText(){return(this.conversationMessages||[]).length>0?`Model is responding…`:`Waiting for request data…`}closeConversation(){this.followUpAbort&&this.followUpAbort.abort(),this.conversationOpen=!1,this.conversationRequestToken++,this.conversationSessionID=``,this._setConversationEntryIDs([]),this.conversationFollowLatest=!1,this.conversationOpenedFromID=``,this.followUpRequestID=``,this.followUpSending=!1;let e=this.conversationReturnFocusEl;this.conversationReturnFocusEl=null,e&&typeof e.focus==`function`&&document.contains(e)&&requestAnimationFrame(()=>e.focus())}_focusConversationDrawer(){if(!this.conversationOpen)return;let e=this.conversationCloseBtnEl;if(e&&typeof e.focus==`function`){e.focus();return}let t=this.conversationDialogEl;t&&typeof t.focus==`function`&&t.focus()}async fetchConversation(e,t,n=!0,r=!1){try{let i=await hu(`/admin/audit/conversation?`+(`log_id=`+encodeURIComponent(e)+`&limit=120`),{label:`audit conversation`});if(t!==this.conversationRequestToken||i.stale)return;if(!i.ok){this.conversationError=`Unable to load interactions.`;return}let a=i.data||{},o=a.anchor_id||e,s=Array.isArray(a.entries)?a.entries:[],c=PE.upsertAuditRecords(s,`conversation.hydrated`),l=Oz(this.conversationEntryIDs,c);l.length>this.conversationEntryIDs.length&&this._setConversationEntryIDs(l),r&&(this.conversationFollowLatest=Ez(c,o)),this.conversationAnchorID=o;let u=this.conversationEntries.find(e=>e.id===this.conversationAnchorID);u&&u.session_id&&(this.conversationSessionID=String(u.session_id).trim()),this.conversationTruncated=!!a.truncated,this._applyConversationView(),this.conversationFollowLatest?this._scheduleLatestScroll():n&&this._scheduleAnchorScroll()}catch(e){if(t!==this.conversationRequestToken)return;console.error(`Failed to fetch audit conversation:`,e),this.conversationError=`Failed to load interactions.`}finally{t===this.conversationRequestToken&&(this.conversationLoading=!1)}}selectedConversationEntry(){return Cz(this.conversationEntries,this.conversationAnchorID)}followUpKind(){let e=this.selectedConversationEntry();return gz(e)?pz(e.path):``}canSendFollowUp(){return!!this.followUpKind()&&!!String(this.followUpText||``).trim()&&!this.followUpSending&&!this.conversationLiveWaiting()}async sendFollowUp(){if(!this.canSendFollowUp())return;let e=this.selectedConversationEntry(),t=_z(e,this.followUpText);if(!e||!t)return;let n=this.conversationAnchorID,r=dB(),i=new AbortController,a=!1,o=setTimeout(()=>{a=!0,i.abort()},oB);this.followUpSending=!0,this.followUpError=``,this.followUpRequestID=r,this.followUpAbort=i;try{let a=yz(e,n,r),o=await pu(e.path,{method:`POST`,headers:a,body:JSON.stringify(t),signal:i.signal}),s=String(o.headers.get(`X-Request-ID`)||``).trim();if(s&&this.followUpRequestID&&(this.followUpRequestID=s),!o.ok){let e=`Unable to send message.`;try{let t=await o.json();e=t&&t.error&&t.error.message||e}catch{}this.followUpError=e,(this.followUpRequestID===r||this.followUpRequestID===s)&&(this.followUpRequestID=``);return}if(this.followUpText=``,await uB(o),!PE.liveLogsStreaming&&this.conversationOpen){let e=++this.conversationRequestToken;await this._selectPersistedFollowUp(n,this.followUpRequestID,e,i.signal)}}catch(e){_u(e)||i.signal.aborted?a&&this.conversationOpen&&(this.followUpError=`The request timed out.`):(console.error(`Failed to send interaction follow-up:`,e),this.followUpError=`Failed to send message.`)}finally{clearTimeout(o),this.followUpAbort===i&&(this.followUpAbort=null,this.followUpSending=!1)}}async _selectPersistedFollowUp(e,t,n,r){let i=Date.now()+sB;for(;this.conversationOpen&&n===this.conversationRequestToken&&Date.now(){let e=this.conversationThreadEl;if(!e)return;let t=e.querySelectorAll(`[data-conversation-anchor="true"]`),n=t[t.length-1];n&&typeof n.scrollIntoView==`function`&&n.scrollIntoView({block:`center`})})}_scheduleLatestScroll(){requestAnimationFrame(()=>{let e=this.conversationThreadEl;if(!e)return;let t=e.lastElementChild;t&&typeof t.scrollIntoView==`function`&&t.scrollIntoView({block:`end`})})}};async function uB(e){let t=e&&e.body&&typeof e.body.getReader==`function`?e.body.getReader():null;if(!t){await e.text();return}for(;!(await t.read()).done;);}function dB(){return globalThis.crypto&&typeof globalThis.crypto.randomUUID==`function`?globalThis.crypto.randomUUID():`dashboard-`+Date.now().toString(36)+`-`+Math.random().toString(36).slice(2)}function fB(e,t){return new Promise((n,r)=>{let i,a=()=>{clearTimeout(i),r(new DOMException(`Aborted`,`AbortError`))};if(i=setTimeout(()=>{t&&t.removeEventListener(`abort`,a),n()},e),t){if(t.aborted){a();return}t.addEventListener(`abort`,a,{once:!0})}})}var pB=new lB,mB=0;An(()=>{On(()=>{let e=kE(PE.auditRecordChanges,mB);e.length!==0&&(mB=Number(e[e.length-1].version||0),wr(()=>{e.forEach(e=>{if(!AE(e))return;let t=PE.auditRecord(e.key);pB.handleAuditRecordChange(t,e.eventType)})}))})});var hB=B(``),gB=B(` `),_B=B(` `),vB=B(``),yB=B(`
`);function bB(e,t){O(t,!0);let n=q(t,`thread`,3,null),r=q(t,`expanded`,3,!1),i=q(t,`onactivate`,3,null),a=q(t,`hidePath`,3,!1),o=A(()=>lu.formatTimestamp(t.entry.timestamp)),s=A(()=>R(o)===`-`?R(o):R(o).slice(R(o).lastIndexOf(` `)+1)),c=A(()=>pB.conversationOpen&&String(pB.conversationAnchorID||``)===String(t.entry.id||``));function l(e){e.preventDefault(),i()&&i()()}function u(e){e.stopPropagation(),e.preventDefault(),n().ontoggle()}function d(e){if(e.stopPropagation(),e.preventDefault(),R(c)){pB.closeConversation();return}pB.openConversation(t.entry,e.currentTarget)}var f=yB();let p;var m=P(f),h=P(m),g=e=>{var t=hB(),r=P(t);{let e=A(()=>n().expanded?Nc:Fc);J(r,{get icon(){return R(e)},class:`audit-thread-expander-svg`})}var i=I(r,2),a=P(i,!0);D(i),D(t),L(()=>{K(t,`aria-expanded`,n().expanded),K(t,`title`,`Session with `+n().count+` requests`),K(t,`aria-label`,`Session with `+n().count+` requests, `+(n().expanded?`collapse`:`expand`)),H(a,n().count)}),z(`click`,t,u),V(e,t)};U(h,e=>{n()&&e(g)});var _=I(h,2),v=P(_),y=P(v,!0);D(v);var b=I(v,2),x=P(b,!0);D(b),D(_);var S=I(_,2),C=e=>{var n=gB(),r=P(n,!0);D(n),L(e=>H(r,e),[()=>Sd(t.entry)]),V(e,n)};U(S,e=>{(t.entry.requested_model||t.entry.model)&&e(C)});var w=I(S,2),T=e=>{var n=_B(),r=P(n,!0);D(n),L(()=>H(r,t.entry.path||`-`)),V(e,n)};U(w,e=>{a()||e(T)}),D(m);var E=I(m,2),ee=P(E);WR(ee,{get entry(){return t.entry}});var te=I(ee,2),ne=P(te),re=P(ne,!0);D(ne);var ie=I(ne,2),ae=P(ie,!0);D(ie),D(te);var oe=I(te,2),se=P(oe,!0);D(oe);var ce=I(oe,2),le=e=>{var t=vB();let n;var r=P(t);{let e=A(()=>R(c)?Pc:Fc);J(r,{get icon(){return R(e)},class:`audit-conversation-trigger-svg`})}D(t),L(()=>{n=G(t,1,`audit-conversation-trigger svelte-17mysgz`,null,n,{"audit-conversation-trigger-active":R(c)}),K(t,`title`,R(c)?`Close interactions`:`Open interactions`),K(t,`aria-label`,R(c)?`Close interactions`:`Open interactions`),K(t,`aria-pressed`,R(c))}),z(`click`,t,d),V(e,t)},ue=A(()=>pB.canShowConversation(t.entry));U(ce,e=>{R(ue)&&e(le)}),D(E),D(f),L((e,n,i,a)=>{p=G(f,1,`audit-entry-summary svelte-17mysgz`,null,p,e),K(f,`aria-expanded`,r()),G(_,1,`audit-status-badge audit-request-badge ${n??``}`,`svelte-17mysgz`),K(_,`title`,`Status `+(t.entry.status_code||`-`)+` · `+(t.entry.method||`-`)),K(_,`aria-label`,(t.entry.status_code||`-`)+` `+(t.entry.method||`-`)),H(y,t.entry.status_code||`-`),H(x,t.entry.method||`-`),K(te,`title`,i),K(te,`aria-label`,R(o)),H(re,R(o)),H(ae,R(s)),H(se,a)},[()=>({"audit-entry-summary-live-in-progress":YL(t.entry),"audit-entry-summary-has-interactions":pB.canShowConversation(t.entry)}),()=>JL(t.entry.status_code),()=>gd(t.entry.timestamp),()=>qL(t.entry.duration_ns)]),z(`click`,f,l),V(e,f),k()}Br([`click`]);var xB=B(``);function SB(e,t){O(t,!0);let n=q(t,`label`,3,`Copy`),r=q(t,`copiedLabel`,3,`Copied`),i=q(t,`errorLabel`,3,``),a=q(t,`class`,3,`btn`),o=A(()=>t.state.error&&i()?i():t.state.copied?r():n());var s=xB();let c;var l=P(s),u=e=>{J(e,{get icon(){return Lc},width:`14`,height:`14`,"stroke-width":`2.5`})},d=e=>{J(e,{get icon(){return Bc},width:`14`,height:`14`})};U(l,e=>{t.state.copied?e(u):e(d,-1)});var f=I(l,2),p=P(f,!0);D(f),D(s),L(()=>{c=G(s,1,Ni([`copy-feedback-btn`,a()]),null,c,{"copy-feedback-btn-copied":t.state.copied}),H(p,R(o))}),z(`click`,s,e=>{e.preventDefault(),t.onclick?.(e)}),V(e,s),k()}Br([`click`]);var CB=B(`
Error Message
 
`),wB=B(`
 
`),TB=B(` `),EB=B(` streaming`),DB=B(`
Body
`),OB=B(`

`),kB=B(`

`),AB=B(`

`),jB=B(`
`);function MB(e,t){O(t,!0);let n=CF({logPrefix:`Failed to copy audit payload:`}),r=CF({logPrefix:`Failed to copy audit payload:`}),i=A(()=>t.pane&&t.pane.showHeaders?sd(t.pane.headers):``),a=A(()=>!t.pane||!t.pane.showBody?``:Fz(t.pane.body)?Bz(t.pane.body):pB.renderBodyWithConversationHighlights(t.pane.entry,t.pane.body,{promptCacheHighlight:t.pane.promptCacheHighlight})),o=A(()=>!!(t.pane&&pB.canShowConversation(t.pane.entry)));function s(e){e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),pB.handleErrorConversationClick(e,t.pane.entry))}var c=jB();let l;var u=P(c),d=e=>{var n=CB(),r=I(P(n),2);let i;var a=P(r,!0);D(r),D(n),L(()=>{i=G(r,1,`audit-json audit-pane-error-message svelte-1h5puht`,null,i,{"audit-pane-clickable-preview":R(o)}),K(r,`role`,R(o)?`button`:null),K(r,`tabindex`,R(o)?0:null),H(a,t.pane.errorMessage)}),z(`mousedown`,r,e=>pB.startBodyInteraction(e)),z(`keydown`,r,s),z(`click`,r,e=>pB.handleErrorConversationClick(e,t.pane.entry)),V(e,n)};U(u,e=>{t.pane.showErrorMessage&&e(d)});var f=I(u,2),p=e=>{var n=wB(),a=P(n),o=P(a),s=P(o,!0);D(o),SB(I(o,2),{get state(){return r},label:`Copy Headers`,errorLabel:`Copy failed`,class:`audit-copy-btn`,onclick:()=>r.copy(t.pane.copyHeaders,sd)}),D(a);var c=I(a,2),l=P(c,!0);D(c),D(n),L(()=>{H(s,t.pane.headersTitle||`Headers`),H(l,R(i))}),V(e,n)};U(f,e=>{t.pane.showHeaders&&e(p)});var m=I(f,2),h=e=>{var r=DB(),i=P(r),o=P(i),s=I(P(o),2),c=e=>{var n=TB(),r=P(n,!0);D(n),L(()=>H(r,t.pane.bodyCacheRatioLabel)),V(e,n)};U(s,e=>{t.pane.bodyCacheRatioLabel&&e(c)});var l=I(s,2),u=e=>{V(e,EB())};U(l,e=>{t.pane.streaming&&e(u)}),D(o),SB(I(o,2),{get state(){return n},label:`Copy Body`,errorLabel:`Copy failed`,class:`audit-copy-btn`,onclick:()=>n.copy(t.pane.copyBody,sd)}),D(i);var d=I(i,2);pi(d,()=>R(a),!0),D(d),D(r),z(`mousedown`,d,e=>pB.startBodyInteraction(e)),z(`click`,d,e=>pB.handleBodyConversationClick(e,t.pane.entry)),V(e,r)};U(m,e=>{t.pane.showBody&&e(h)});var g=I(m,2),_=e=>{var n=OB(),r=P(n,!0);D(n),L(()=>H(r,t.pane.emptyMessage)),V(e,n)};U(g,e=>{t.pane.showEmpty&&e(_)});var v=I(g,2),y=e=>{var n=kB(),r=I(P(n),2),i=P(r,!0);D(r),D(n),L(()=>H(i,t.pane.pendingMessage)),V(e,n)};U(v,e=>{t.pane.showPending&&e(y)});var b=I(v,2),x=e=>{var n=AB(),r=P(n,!0);D(n),L(()=>H(r,t.pane.tooLargeMessage)),V(e,n)};U(b,e=>{t.pane.showTooLarge&&e(x)}),D(c),L(()=>l=G(c,1,`audit-pane svelte-1h5puht`,null,l,{"audit-pane-split":t.pane&&t.pane.layout===`split`,"audit-pane-split-single":t.pane&&t.pane.layout===`split`&&!(t.pane.showHeaders&&t.pane.showBody)})),V(e,c),k()}Br([`mousedown`,`keydown`,`click`]);var NB=B(` `),PB=B(` `),FB=B(` `),IB=B(` `),LB=B(``),RB=B(`
`),zB=B(`
`);function BB(e,t){O(t,!0);let n=q(t,`panes`,19,()=>[]),r=j(null),i=A(()=>DR(R(r),t.entry,n())),a=e=>`audit-tab-`+t.entry.id+`-`+e,o=e=>`audit-tabpanel-`+t.entry.id+`-`+e;function s(e,t){let i=n().map(e=>e.id),a=OR(e.key,i,t);a!=null&&(e.preventDefault(),((e.currentTarget?.closest?.(`.audit-pane-tablist`))?.querySelectorAll(`.audit-pane-tab`)[i.indexOf(a)])?.focus?.(),M(r,a,!0))}var c=zB(),l=P(c);W(l,21,n,e=>e.id,(e,t)=>{var n=LB();let c;var l=P(n),u=P(l),d=e=>{J(e,{get icon(){return wc}})},f=e=>{J(e,{get icon(){return Cc}})};U(u,e=>{R(t).pane.direction===`request`?e(d):R(t).pane.direction===`response`&&e(f,1)}),D(l);var p=I(l,2),m=P(p,!0);D(p);var h=I(p,2),g=e=>{var n=NB(),r=P(n);D(n),L(()=>H(r,`#${R(t).pane.seq??``}`)),V(e,n)};U(h,e=>{R(t).pane.seq&&e(g)});var _=I(h,2),v=e=>{var n=PB(),r=P(n,!0);D(n),L(()=>{G(n,1,`provider-badge audit-pane-kind audit-pane-kind-${R(t).pane.kind??``}`,`svelte-1bc5vi5`),H(r,R(t).pane.kind)}),V(e,n)};U(_,e=>{R(t).pane.kind&&e(v)});var y=I(_,2);W(y,17,()=>R(t).pane.noChangeSteps||[],e=>e.id,(e,t)=>{var n=FB(),r=P(n,!0);D(n),L(()=>{K(n,`title`,R(t).title),H(r,R(t).label)}),V(e,n)});var b=I(y,2),x=e=>{var n=IB(),r=P(n,!0);D(n),L(()=>H(r,R(t).pane.savingsLabel)),V(e,n)};U(b,e=>{R(t).pane.savingsLabel&&e(x)});var S=I(b,2),C=e=>{var n=PB(),r=P(n,!0);D(n),L(e=>{G(n,1,`audit-status-badge ${e??``}`,`svelte-1bc5vi5`),H(r,R(t).pane.statusCode)},[()=>JL(R(t).pane.statusCode)]),V(e,n)};U(S,e=>{R(t).pane.statusCode&&e(C)}),D(n),L((e,r)=>{c=G(n,1,`audit-pane-tab svelte-1bc5vi5`,null,c,{"audit-pane-tab-active":R(i)===R(t).id}),K(n,`aria-selected`,R(i)===R(t).id),K(n,`id`,e),K(n,`aria-controls`,r),K(n,`tabindex`,R(i)===R(t).id?0:-1),G(l,1,Ni([`audit-pane-icon`,R(t).pane.direction&&`audit-pane-icon-${R(t).pane.direction}`]),`svelte-1bc5vi5`),H(m,R(t).pane.title)},[()=>a(R(t).id),()=>o(R(t).id)]),z(`keydown`,n,e=>s(e,R(t).id)),z(`click`,n,()=>M(r,R(t).id,!0)),V(e,n)}),D(l),W(I(l,2),17,n,e=>e.id,(e,t)=>{var n=RB();let r;MB(P(n),{get pane(){return R(t).pane}}),D(n),L((e,a)=>{K(n,`id`,e),K(n,`aria-labelledby`,a),r=Bi(n,``,r,{display:R(i)===R(t).id?null:`none`})},[()=>o(R(t).id),()=>a(R(t).id)]),V(e,n)}),D(c),V(e,c),k()}Br([`keydown`,`click`]);var VB=B(`
`),HB=B(`
`);function UB(e,t){O(t,!0);let n=q(t,`thread`,3,null),r=q(t,`hidePath`,3,!1),i=A(()=>jR.isAuditEntryExpanded(t.entry)),a=A(()=>pB.conversationOpen&&String(pB.conversationAnchorID||``)===String(t.entry.id||``)),o=A(()=>R(i)?TR(t.entry,oz):[]),s=A(()=>R(i)?bI(t.entry,hL.auditEntryWorkflow(t.entry),hL.workflowFeatureCaps()):null);function c(){jR.toggleAuditEntryExpanded(t.entry)}var l=HB();let u;var d=P(l);bB(d,{get entry(){return t.entry},get thread(){return n()},get expanded(){return R(i)},get hidePath(){return r()},onactivate:c});var f=I(d,2),p=e=>{var n=VB(),r=P(n),i=e=>{IF(e,{get chart(){return R(s)}})};U(r,e=>{R(s)&&e(i)});var a=I(r,2);BB(a,{get entry(){return t.entry},get panes(){return R(o)}}),VR(I(a,2),{get entry(){return t.entry}}),D(n),Di(3,n,()=>Ju,()=>({y:-6,duration:pL(150)})),V(e,n)};U(f,e=>{R(i)&&e(p)}),D(l),L(()=>u=G(l,1,`audit-entry svelte-cmjgwr`,null,u,{"audit-entry-interactions-open":R(a)})),V(e,l),k()}var WB=B(`
`),GB=B(`
`),KB=B(`

`),qB=B(`
`),JB=B(`
`);function YB(e,t){O(t,!0);let n=A(()=>jL(t.entry)),r=A(()=>jR.isThreadExpanded(R(n))),i=A(()=>jR.threadChildren(R(n))),a=A(()=>R(i)&&!R(i).loading&&Number(R(i).total||0)>R(i).entries.length+1);var o=Xr(),s=F(o),c=e=>{UB(e,{get entry(){return t.entry}})},l=A(()=>!NL(t.entry)),u=e=>{var n=JB(),o=P(n);{let e=A(()=>({count:ML(t.entry),expanded:R(r),ontoggle:()=>jR.toggleThread(t.entry)}));UB(o,{get entry(){return t.entry},get thread(){return R(e)}})}var s=I(o,2),c=e=>{var n=qB(),r=P(n),o=e=>{var t=WB();wT(P(t),{size:14,label:`Loading session requests`}),D(t),V(e,t)};U(r,e=>{R(i)&&R(i).loading&&e(o)});var s=I(r,2);W(s,17,()=>R(i)&&R(i).entries||[],e=>e.id,(e,n)=>{var r=GB(),i=P(r);{let e=A(()=>R(n).path===t.entry.path);UB(i,{get entry(){return R(n)},get hidePath(){return R(e)}})}D(r),V(e,r)});var c=I(s,2),l=e=>{var t=KB(),n=P(t);D(t),L(()=>H(n,`Showing the latest ${R(i).entries.length+1} of ${R(i).total??``} - requests in this session.`)),V(e,t)};U(c,e=>{R(a)&&e(l)}),D(n),Di(3,n,()=>Yu,()=>({duration:pL(150)})),V(e,n)};U(s,e=>{R(r)&&e(c)}),D(n),V(e,n)};U(s,e=>{R(l)?e(c):e(u,-1)}),V(e,o),k()}var XB=B(`

.

`),ZB=B(`
Audit logging is off. Live entries are temporary and disappear after - refresh. Set LOGGING_ENABLED=true to persist them.
`),QB=B(`

`),$B=B(`
`),eV=B(`
`),tV=B(`
`),nV=B(`
`),rV=B(`
`);function iV(e,t){O(t,!0);let n=A(()=>bu.config&&bu.config.LOGGING_RETENTION_DAYS);On(()=>{if(Y.refreshTick,Bl.page===`audit-logs`)return wr(()=>r())});function r(){let e=!1;return(async()=>{try{await bu.ensureLoaded()}finally{await jR.fetchAuditLog(!0),!e&&bu.liveLogsVisible()&&PE.ensureLiveLogs()}})(),()=>{e=!0,PE.stopLiveLogs()}}var i=rV(),a=P(i),o=P(a),s=I(P(o),2),c=e=>{YT(e,{copyId:`audit-retention-help-copy`,label:`retention help`,text:`If you want to change the retention period, set LOGGING_RETENTION_DAYS (env var) or logging.retention_days (config.yaml) and restart the gateway. Default is 30 days; 0 keeps audit logs forever.`,title:e=>{var t=XB(),r=P(t,!0),i=I(r),a=P(i,!0);D(i),Ve(),D(t),L((e,t)=>{H(r,e),H(a,t)},[()=>DL(R(n)),()=>OL(R(n))]),V(e,t)},$$slots:{title:!0}})},l=A(()=>EL(R(n)));U(s,e=>{R(l)&&e(c)}),D(o),D(a);var u=I(a,2);rf(P(u),{onchange:()=>jR.fetchAuditLog(!0)}),D(u);var d=I(u,2);Rd(d,{});var f=I(d,2),p=e=>{V(e,ZB())},m=A(()=>bu.loaded&&!bu.auditVisible()&&!Y.needsAuth);U(f,e=>{R(m)&&e(p)});var h=I(f,2),g=P(h);NR(g,{});var _=I(g,2),v=P(_),y=P(v),b=e=>{var t=QB(),n=P(t);D(t),L(e=>H(n,`Showing ${jR.auditLog.offset+1}-${e??``} of ${jR.auditLog.total??``} - ${jR.auditGroupSessions?`sessions`:`logs`}`),[()=>Math.min(jR.auditLog.offset+jR.auditLog.limit,jR.auditLog.total)]),V(e,t)};U(y,e=>{jR.auditLog.total>0&&e(b)});var x=I(y,2),S=P(x);ea(S),Ve(2),D(x),D(v),RR(I(v,2),{}),D(_);var C=I(_,2),w=e=>{var t=$B();wT(P(t),{size:18,label:`Loading audit logs`}),D(t),V(e,t)},T=e=>{var t=tV();W(t,29,()=>jR.auditLog.entries,e=>e.id,(e,t)=>{var n=eV(),r=P(n),i=e=>{YB(e,{get entry(){return R(t)}})},a=e=>{UB(e,{get entry(){return R(t)}})};U(r,e=>{jR.auditGroupSessions?e(i):e(a,-1)}),D(n),Ei(n,()=>lL,()=>({duration:pL(150)})),Di(1,n,()=>mL,()=>({live:R(t)._live})),V(e,n)}),D(t),V(e,t)};U(C,e=>{jR.loading&&jR.auditLog.entries.length===0?e(w):jR.auditLog.entries.length>0&&e(T,1)});var E=I(C,2),ee=e=>{var t=nV();DT(P(t),{}),D(t),V(e,t)};U(E,e=>{jR.auditLog.entries.length===0&&!jR.loading&&!Y.needsAuth&&e(ee)}),ZD(I(E,2),{get total(){return jR.auditLog.total},get offset(){return jR.auditLog.offset},get limit(){return jR.auditLog.limit},onprev:()=>jR.auditLogPrevPage(),onnext:()=>jR.auditLogNextPage()}),D(h),D(i),L(()=>na(S,jR.auditGroupSessions)),z(`change`,S,()=>jR.toggleAuditGroupSessions()),V(e,i),k()}Br([`change`]);function aV(e){try{let t=JSON.parse(JSON.stringify(e||{}));return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}function oV(e){return Array.isArray(e)?e.map(e=>String(e||``).trim()).filter(e=>e):e==null?[]:String(e).split(`,`).map(e=>e.trim()).filter(e=>e)}function sV(e,t){let n=String(t||``).trim();return(e||[]).find(e=>String(e&&e.type||``).trim()===n)||null}function cV(e){return Array.isArray(e)&&e.length>0&&String(e[0].type||``).trim()||`system_prompt`}function lV(e,t){let n=String(t||``).trim();return n&&sV(e,n)?n:cV(e)}function uV(e,t){let n=sV(e,t);return!n||!n.defaults?{}:aV(n.defaults)}function dV(e,t,n){return{...uV(e,n),...aV(t)}}function fV(e,t){let n=lV(e,t);return{name:``,type:n,description:``,user_path:``,config:uV(e,n)}}function pV(e,t){if(!t)return e||[];let n=String(t).toLowerCase();return(e||[]).filter(e=>[e.name,e.type,e.user_path,e.description,e.summary].some(e=>String(e||``).toLowerCase().includes(n)))}function mV(e,t){let n=sV(e,t);return n&&n.label?n.label:t||`Unknown`}function hV(e,t){let n=sV(e,t);return Array.isArray(n&&n.fields)?n.fields:[]}function gV(e,t){if(!t||!e)return t&&t.input===`checkboxes`?[]:``;let n=e[t.key];return n==null?t.input===`checkboxes`?[]:``:t.input===`checkboxes`?oV(n):n}function _V(e,t,n){if(!t)return e;let r=aV(e);if(t.input===`number`){let e=String(n||``).trim();if(e===``)delete r[t.key];else{let n=Number(e);r[t.key]=Number.isFinite(n)?n:e}}else t.input===`checkboxes`?r[t.key]=oV(n):r[t.key]=n;return r}function vV(e,t,n){return gV(e,t).includes(String(n||``).trim())}function yV(e,t,n,r){let i=oV(gV(e,t)),a=String(n||``).trim();return a?_V(e,t,r?Array.from(new Set([...i,a])):i.filter(e=>e!==a)):e}function bV(e){return{name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),description:String(e&&e.description||``).trim()||void 0,user_path:String(e&&e.user_path||``).trim()||void 0,config:aV(e&&e.config)}}var xV=new class{#e=j(N([]));get guardrails(){return R(this.#e)}set guardrails(e){M(this.#e,e,!0)}#t=j(N([]));get types(){return R(this.#t)}set types(e){M(this.#t,e,!0)}#n=j(!0);get available(){return R(this.#n)}set available(e){M(this.#n,e,!0)}#r=j(!1);get loading(){return R(this.#r)}set loading(e){M(this.#r,e,!0)}#i=j(!1);get typesLoading(){return R(this.#i)}set typesLoading(e){M(this.#i,e,!0)}#a=j(``);get error(){return R(this.#a)}set error(e){M(this.#a,e,!0)}#o=j(``);get filter(){return R(this.#o)}set filter(e){M(this.#o,e,!0)}#s=j(!1);get formOpen(){return R(this.#s)}set formOpen(e){M(this.#s,e,!0)}#c=j(!1);get formSubmitting(){return R(this.#c)}set formSubmitting(e){M(this.#c,e,!0)}#l=j(``);get deletingName(){return R(this.#l)}set deletingName(e){M(this.#l,e,!0)}#u=j(`create`);get formMode(){return R(this.#u)}set formMode(e){M(this.#u,e,!0)}#d=j(``);get formOriginalName(){return R(this.#d)}set formOriginalName(e){M(this.#d,e,!0)}#f=j(N({name:``,type:``,description:``,user_path:``,config:{}}));get form(){return R(this.#f)}set form(e){M(this.#f,e,!0)}get filtered(){return pV(this.guardrails,this.filter)}typeLabel(e){return mV(this.types,e)}typeFields(e){return hV(this.types,e)}fieldValue(e){return gV(this.form&&this.form.config,e)}setFieldValue(e,t){this.form={...this.form,config:_V(this.form.config,e,t)}}arrayFieldSelected(e,t){return vV(this.form&&this.form.config,e,t)}toggleArrayFieldValue(e,t,n){this.form={...this.form,config:yV(this.form.config,e,t,n)}}openCreate(){this.formMode=`create`,this.formOriginalName=``,this.error=``,this.form=fV(this.types,cV(this.types)),this.formOpen=!0}openEdit(e){let t=lV(this.types,e&&e.type);this.formMode=`edit`,this.formOriginalName=String(e&&e.name||``).trim(),this.error=``,this.form={name:this.formOriginalName,type:t,description:String(e&&e.description||``).trim(),user_path:String(e&&e.user_path||``).trim(),config:dV(this.types,e&&e.config,t)},this.formOpen=!0}closeForm(){this.formOpen=!1,this.formMode=`create`,this.formOriginalName=``,this.error=``,this.form=fV(this.types,cV(this.types))}changeType(e){let t=lV(this.types,e);this.form={...this.form,type:t,config:uV(this.types,t)}}async fetchTypes(){this.typesLoading=!0;try{let e=await bO(`/admin/guardrails/types`,{label:`guardrail types`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.types=[];return}if(e.result&&(this.available=!0),this.types=e.items,e.status===`error`){this.error=e.error;return}let t=lV(this.types,this.form.type);this.form={...this.form,type:t,config:dV(this.types,this.form.config,t)}}finally{this.typesLoading=!1}}async fetchGuardrails(){this.loading=!0,this.error=``;try{let e=await bO(`/admin/guardrails`,{label:`guardrails`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.guardrails=[];return}e.result&&(this.available=!0),this.guardrails=e.items,this.error=e.error}finally{this.loading=!1}}async fetchPage(){await Promise.all([this.fetchTypes(),this.fetchGuardrails()])}async submitForm(){let e=String(this.form.name||``).trim(),t=String(this.form.type||``).trim();if(!e){this.error=`Name is required.`;return}if(!t){this.error=`Type is required.`;return}this.error=``,this.formSubmitting=!0;let n=bV(this.form);try{let t=await xO(`/admin/guardrails`,`PUT`,n,{label:`save guardrail`,errorFallback:`Failed to save guardrail.`,unavailableMessage:`Guardrails feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error;return}ed.success(`Guardrail "`+e+`" saved.`),this.closeForm(),this.fetchGuardrails()}finally{this.formSubmitting=!1}}async deleteGuardrail(e){let t=String(e&&e.name||``).trim();if(!(!t||this.deletingName)&&window.confirm(`Delete guardrail "`+t+`"? Workflows that still reference it must be updated first.`)){this.deletingName=t;try{let e=await xO(`/admin/guardrails`,`DELETE`,{name:t},{label:`delete guardrail`,errorFallback:`Failed to delete guardrail.`,unavailableMessage:`Guardrails feature is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,ed.error(e.error);return}if(e.status===`error`){ed.error(e.error);return}ed.success(`Guardrail "`+t+`" deleted.`),this.formOpen&&this.formOriginalName===t&&this.closeForm(),this.fetchGuardrails()}finally{this.deletingName=``}}}},SV=B(`
`),CV=B(`

Loading guardrails...

`),wV=B(`
`),TV=B(`
`),EV=B(`
NameTypeUser PathSummaryActions
`),DV=B(`

No guardrails defined yet.

`),OV=B(`

Instances

Each instance has a reusable name, a type, an optional user path for +`):``}function uV(e){let t=e&&e.arguments!==void 0?e.arguments:``;if(typeof t!=`string`)try{return JSON.stringify(t,null,2)}catch{return String(t)}try{return JSON.stringify(JSON.parse(t),null,2)}catch{return t}}var dV=600*1e3,fV=15*1e3,pV=250,mV=class{#e=j(!1);get conversationOpen(){return R(this.#e)}set conversationOpen(e){M(this.#e,e,!0)}#t=j(!1);get conversationLoading(){return R(this.#t)}set conversationLoading(e){M(this.#t,e,!0)}#n=j(``);get conversationError(){return R(this.#n)}set conversationError(e){M(this.#n,e,!0)}#r=j(``);get conversationAnchorID(){return R(this.#r)}set conversationAnchorID(e){M(this.#r,e,!0)}#i=j(N([]));get conversationEntryIDs(){return R(this.#i)}set conversationEntryIDs(e){M(this.#i,e,!0)}#a=j(``);get conversationSessionID(){return R(this.#a)}set conversationSessionID(e){M(this.#a,e,!0)}#o=j(!1);get conversationTruncated(){return R(this.#o)}set conversationTruncated(e){M(this.#o,e,!0)}#s=j(!1);get conversationFollowLatest(){return R(this.#s)}set conversationFollowLatest(e){M(this.#s,e,!0)}#c=j(``);get conversationOpenedFromID(){return R(this.#c)}set conversationOpenedFromID(e){M(this.#c,e,!0)}#l=j(``);get followUpText(){return R(this.#l)}set followUpText(e){M(this.#l,e,!0)}#u=j(!1);get followUpSending(){return R(this.#u)}set followUpSending(e){M(this.#u,e,!0)}#d=j(``);get followUpError(){return R(this.#d)}set followUpError(e){M(this.#d,e,!0)}followUpRequestID=``;followUpAbort=null;conversationRequestToken=0;conversationReturnFocusEl=null;bodyPointerStart=null;#f=j(null);get conversationDialogEl(){return R(this.#f)}set conversationDialogEl(e){M(this.#f,e,!0)}#p=j(null);get conversationCloseBtnEl(){return R(this.#p)}set conversationCloseBtnEl(e){M(this.#p,e,!0)}#m=j(null);get conversationThreadEl(){return R(this.#m)}set conversationThreadEl(e){M(this.#m,e,!0)}get conversationEntries(){return(this.conversationEntryIDs||[]).map(e=>zD.auditRecord(e)).filter(Boolean)}#h=A(()=>sV(this.conversationEntries,this.conversationAnchorID));get conversationView(){return R(this.#h)}set conversationView(e){M(this.#h,e)}get conversationMessages(){return this.conversationView.messages}get conversationBranchEntryIDs(){return this.conversationView.entryIDs}_setConversationEntryIDs(e){this.conversationEntryIDs=[...new Set((Array.isArray(e)?e:[]).filter(Boolean))],zD.pinAuditRecords(this.conversationEntryIDs)}canShowConversation(e){return FB(e)}startBodyInteraction(e){this.bodyPointerStart={x:e.clientX,y:e.clientY}}_isBodyDrag(e){if(!this.bodyPointerStart)return!1;let t=Math.abs(e.clientX-this.bodyPointerStart.x),n=Math.abs(e.clientY-this.bodyPointerStart.y);return t>4||n>4}_hasActiveSelection(){let e=window.getSelection?window.getSelection():null;return!e||e.isCollapsed?!1:String(e.toString()||``).trim().length>0}handleBodyConversationClick(e,t){let n=this._isBodyDrag(e);if(this.bodyPointerStart=null,n||this._hasActiveSelection()||!this.canShowConversation(t))return;let r=e.target&&e.target.closest?e.target.closest(`[data-conversation-trigger="1"]`):null;r&&(e.preventDefault(),e.stopPropagation(),this.openConversation(t,r))}handleErrorConversationClick(e,t){let n=this._isBodyDrag(e);this.bodyPointerStart=null,!n&&(this._hasActiveSelection()||this.canShowConversation(t)&&(e.preventDefault(),e.stopPropagation(),this.openConversation(t,e.currentTarget)))}formatJSON(e){return pf(e)}renderBodyWithConversationHighlights(e,t,n){return YB(e,t,{formatJSON:e=>this.formatJSON(e),canShowConversation:e=>this.canShowConversation(e),promptCacheHighlight:n&&n.promptCacheHighlight})}async openConversation(e,t){if(!e||!e.id||!this.canShowConversation(e))return;let n=document.activeElement instanceof HTMLElement?document.activeElement:null;t instanceof HTMLElement?this.conversationReturnFocusEl=t:n&&n!==document.body&&(this.conversationReturnFocusEl=n);let r=++this.conversationRequestToken;if(this.conversationOpen=!0,this.conversationError=``,this.conversationAnchorID=e.id,this.conversationOpenedFromID=e.id,this.conversationSessionID=String(e.session_id||``).trim(),this._setConversationEntryIDs([]),this.conversationTruncated=!1,this.conversationFollowLatest=!1,this.followUpText=``,this.followUpError=``,this.followUpRequestID=``,requestAnimationFrame(()=>this._focusConversationDrawer()),this._conversationEntryLivePending(e)){this.conversationFollowLatest=!0,this.conversationLoading=!1,this._addConversationRecord(zD.upsertAuditRecord(e,`conversation.live`));return}this.conversationLoading=!0,await this.fetchConversation(e.id,r,!0,!0)}_conversationEntryLivePending(e){return typeof zD.auditEntryLiveDetailPending==`function`&&zD.auditEntryLiveDetailPending(e)}_applyConversationView(){let e=this.conversationEntries,t=sV(e,this.conversationAnchorID);if(this.conversationFollowLatest){let n=AB(e,t.entryIDs);n&&n.id&&String(n.id)!==this.conversationAnchorID&&(this.conversationAnchorID=String(n.id))}}handleAuditRecordChange(e,t){if(!this.conversationOpen||!e)return;let n=String(e.id||``).trim(),r=EB(this.conversationEntries,this.conversationAnchorID,this.conversationSessionID,this.followUpRequestID,e);if(r.accepted&&(this.followUpRequestID=r.followUpRequestID,n&&r.submittedChild&&(this.conversationAnchorID=n,this.conversationFollowLatest=!0),this._addConversationRecord(e),MB(String(t||e._live_state||``).trim(),n,this.conversationAnchorID))){this.conversationMessages.length===0&&(this.conversationLoading=!0);let e=++this.conversationRequestToken;this.fetchConversation(n,e,!1)}}_addConversationRecord(e){let t=MD(e);t&&!this.conversationEntryIDs.includes(t)&&this._setConversationEntryIDs([...this.conversationEntryIDs,t]),!this.conversationSessionID&&e.session_id&&(this.conversationSessionID=String(e.session_id).trim()),this._applyConversationView(),this.conversationFollowLatest&&this._scheduleLatestScroll()}conversationLiveWaiting(){if(!this.conversationOpen)return!1;let e=new Set(this.conversationBranchEntryIDs||[]);return(this.conversationEntries||[]).some(t=>e.has(String(t&&t.id||``))&&t._live&&(typeof zD.liveAuditStateSettled!=`function`||!zD.liveAuditStateSettled(t._live_state)))}conversationLiveStatusText(){return(this.conversationMessages||[]).length>0?`Model is responding…`:`Waiting for request data…`}closeConversation(){this.followUpAbort&&this.followUpAbort.abort(),this.conversationOpen=!1,this.conversationRequestToken++,this.conversationSessionID=``,this._setConversationEntryIDs([]),this.conversationFollowLatest=!1,this.conversationOpenedFromID=``,this.followUpRequestID=``,this.followUpSending=!1;let e=this.conversationReturnFocusEl;this.conversationReturnFocusEl=null,e&&typeof e.focus==`function`&&document.contains(e)&&requestAnimationFrame(()=>e.focus())}_focusConversationDrawer(){if(!this.conversationOpen)return;let e=this.conversationCloseBtnEl;if(e&&typeof e.focus==`function`){e.focus();return}let t=this.conversationDialogEl;t&&typeof t.focus==`function`&&t.focus()}async fetchConversation(e,t,n=!0,r=!1){try{let i=await bd(`/admin/audit/conversation?`+(`log_id=`+encodeURIComponent(e)+`&limit=120`),{label:`audit conversation`});if(t!==this.conversationRequestToken||i.stale)return;if(!i.ok){this.conversationError=`Unable to load interactions.`;return}let a=i.data||{},o=a.anchor_id||e,s=Array.isArray(a.entries)?a.entries:[],c=zD.upsertAuditRecords(s,`conversation.hydrated`),l=NB(this.conversationEntryIDs,c);l.length>this.conversationEntryIDs.length&&this._setConversationEntryIDs(l),r&&(this.conversationFollowLatest=jB(c,o)),this.conversationAnchorID=o;let u=this.conversationEntries.find(e=>e.id===this.conversationAnchorID);u&&u.session_id&&(this.conversationSessionID=String(u.session_id).trim()),this.conversationTruncated=!!a.truncated,this._applyConversationView(),this.conversationFollowLatest?this._scheduleLatestScroll():n&&this._scheduleAnchorScroll()}catch(e){if(t!==this.conversationRequestToken)return;console.error(`Failed to fetch audit conversation:`,e),this.conversationError=`Failed to load interactions.`}finally{t===this.conversationRequestToken&&(this.conversationLoading=!1)}}selectedConversationEntry(){return OB(this.conversationEntries,this.conversationAnchorID)}followUpKind(){let e=this.selectedConversationEntry();return xB(e)?vB(e.path):``}canSendFollowUp(){return!!this.followUpKind()&&!!String(this.followUpText||``).trim()&&!this.followUpSending&&!this.conversationLiveWaiting()}async sendFollowUp(){if(!this.canSendFollowUp())return;let e=this.selectedConversationEntry(),t=SB(e,this.followUpText);if(!e||!t)return;let n=this.conversationAnchorID,r=gV(),i=new AbortController,a=!1,o=setTimeout(()=>{a=!0,i.abort()},dV);this.followUpSending=!0,this.followUpError=``,this.followUpRequestID=r,this.followUpAbort=i;try{let a=wB(e,n,r),o=await vd(e.path,{method:`POST`,headers:a,body:JSON.stringify(t),signal:i.signal}),s=String(o.headers.get(`X-Request-ID`)||``).trim();if(s&&this.followUpRequestID&&(this.followUpRequestID=s),!o.ok){let e=`Unable to send message.`;try{let t=await o.json();e=t&&t.error&&t.error.message||e}catch{}this.followUpError=e,(this.followUpRequestID===r||this.followUpRequestID===s)&&(this.followUpRequestID=``);return}if(this.followUpText=``,await hV(o),!zD.liveLogsStreaming&&this.conversationOpen){let e=++this.conversationRequestToken;await this._selectPersistedFollowUp(n,this.followUpRequestID,e,i.signal)}}catch(e){Sd(e)||i.signal.aborted?a&&this.conversationOpen&&(this.followUpError=`The request timed out.`):(console.error(`Failed to send interaction follow-up:`,e),this.followUpError=`Failed to send message.`)}finally{clearTimeout(o),this.followUpAbort===i&&(this.followUpAbort=null,this.followUpSending=!1)}}async _selectPersistedFollowUp(e,t,n,r){let i=Date.now()+fV;for(;this.conversationOpen&&n===this.conversationRequestToken&&Date.now(){let e=this.conversationThreadEl;if(!e)return;let t=e.querySelectorAll(`[data-conversation-anchor="true"]`),n=t[t.length-1];n&&typeof n.scrollIntoView==`function`&&n.scrollIntoView({block:`center`})})}_scheduleLatestScroll(){requestAnimationFrame(()=>{let e=this.conversationThreadEl;if(!e)return;let t=e.lastElementChild;t&&typeof t.scrollIntoView==`function`&&t.scrollIntoView({block:`end`})})}};async function hV(e){let t=e&&e.body&&typeof e.body.getReader==`function`?e.body.getReader():null;if(!t){await e.text();return}for(;!(await t.read()).done;);}function gV(){return globalThis.crypto&&typeof globalThis.crypto.randomUUID==`function`?globalThis.crypto.randomUUID():`dashboard-`+Date.now().toString(36)+`-`+Math.random().toString(36).slice(2)}function _V(e,t){return new Promise((n,r)=>{let i,a=()=>{clearTimeout(i),r(new DOMException(`Aborted`,`AbortError`))};if(i=setTimeout(()=>{t&&t.removeEventListener(`abort`,a),n()},e),t){if(t.aborted){a();return}t.addEventListener(`abort`,a,{once:!0})}})}var vV=new mV,yV=0;An(()=>{On(()=>{let e=PD(zD.auditRecordChanges,yV);e.length!==0&&(yV=Number(e[e.length-1].version||0),wr(()=>{e.forEach(e=>{if(!FD(e))return;let t=zD.auditRecord(e.key);vV.handleAuditRecordChange(t,e.eventType)})}))})});var bV=B(``),xV=B(` `),SV=B(` `),CV=B(``),wV=B(`

`);function TV(e,t){O(t,!0);let n=q(t,`thread`,3,null),r=q(t,`expanded`,3,!1),i=q(t,`onactivate`,3,null),a=q(t,`hidePath`,3,!1),o=A(()=>md.formatTimestamp(t.entry.timestamp)),s=A(()=>R(o)===`-`?R(o):R(o).slice(R(o).lastIndexOf(` `)+1)),c=A(()=>vV.conversationOpen&&String(vV.conversationAnchorID||``)===String(t.entry.id||``));function l(e){e.preventDefault(),i()&&i()()}function u(e){e.stopPropagation(),e.preventDefault(),n().ontoggle()}function d(e){if(e.stopPropagation(),e.preventDefault(),R(c)){vV.closeConversation();return}vV.openConversation(t.entry,e.currentTarget)}var f=wV();let p;var m=P(f),h=P(m),g=e=>{var t=bV(),r=P(t);{let e=A(()=>n().expanded?Rl:Bl);J(r,{get icon(){return R(e)},class:`audit-thread-expander-svg`})}var i=I(r,2),a=P(i,!0);D(i),D(t),L(()=>{K(t,`aria-expanded`,n().expanded),K(t,`title`,`Session with `+n().count+` requests`),K(t,`aria-label`,`Session with `+n().count+` requests, `+(n().expanded?`collapse`:`expand`)),H(a,n().count)}),z(`click`,t,u),V(e,t)};U(h,e=>{n()&&e(g)});var _=I(h,2),v=P(_),y=P(v,!0);D(v);var b=I(v,2),x=P(b,!0);D(b),D(_);var S=I(_,2),C=e=>{var n=xV(),r=P(n,!0);D(n),L(e=>H(r,e),[()=>Of(t.entry)]),V(e,n)};U(S,e=>{(t.entry.requested_model||t.entry.model)&&e(C)});var w=I(S,2),T=e=>{var n=SV(),r=P(n,!0);D(n),L(()=>H(r,t.entry.path||`-`)),V(e,n)};U(w,e=>{a()||e(T)}),D(m);var E=I(m,2),ee=P(E);Yz(ee,{get entry(){return t.entry}});var te=I(ee,2),ne=P(te),re=P(ne,!0);D(ne);var ie=I(ne,2),ae=P(ie,!0);D(ie),D(te);var oe=I(te,2),se=P(oe,!0);D(oe);var ce=I(oe,2),le=e=>{var t=CV();let n;var r=P(t);{let e=A(()=>R(c)?zl:Bl);J(r,{get icon(){return R(e)},class:`audit-conversation-trigger-svg`})}D(t),L(()=>{n=G(t,1,`audit-conversation-trigger svelte-17mysgz`,null,n,{"audit-conversation-trigger-active":R(c)}),K(t,`title`,R(c)?`Close interactions`:`Open interactions`),K(t,`aria-label`,R(c)?`Close interactions`:`Open interactions`),K(t,`aria-pressed`,R(c))}),z(`click`,t,d),V(e,t)},ue=A(()=>vV.canShowConversation(t.entry));U(ce,e=>{R(ue)&&e(le)}),D(E),D(f),L((e,n,i,a)=>{p=G(f,1,`audit-entry-summary svelte-17mysgz`,null,p,e),K(f,`aria-expanded`,r()),G(_,1,`audit-status-badge audit-request-badge ${n??``}`,`svelte-17mysgz`),K(_,`title`,`Status `+(t.entry.status_code||`-`)+` · `+(t.entry.method||`-`)),K(_,`aria-label`,(t.entry.status_code||`-`)+` `+(t.entry.method||`-`)),H(y,t.entry.status_code||`-`),H(x,t.entry.method||`-`),K(te,`title`,i),K(te,`aria-label`,R(o)),H(re,R(o)),H(ae,R(s)),H(se,a)},[()=>({"audit-entry-summary-live-in-progress":ez(t.entry),"audit-entry-summary-has-interactions":vV.canShowConversation(t.entry)}),()=>$R(t.entry.status_code),()=>Sf(t.entry.timestamp),()=>QR(t.entry.duration_ns)]),z(`click`,f,l),V(e,f),k()}Br([`click`]);var EV=B(``);function DV(e,t){O(t,!0);let n=q(t,`label`,3,`Copy`),r=q(t,`copiedLabel`,3,`Copied`),i=q(t,`errorLabel`,3,``),a=q(t,`class`,3,`btn`),o=A(()=>t.state.error&&i()?i():t.state.copied?r():n());var s=EV();let c;var l=P(s),u=e=>{J(e,{get icon(){return Hl},width:`14`,height:`14`,"stroke-width":`2.5`})},d=e=>{J(e,{get icon(){return Gl},width:`14`,height:`14`})};U(l,e=>{t.state.copied?e(u):e(d,-1)});var f=I(l,2),p=P(f,!0);D(f),D(s),L(()=>{c=G(s,1,Ni([`copy-feedback-btn`,a()]),null,c,{"copy-feedback-btn-copied":t.state.copied}),H(p,R(o))}),z(`click`,s,e=>{e.preventDefault(),t.onclick?.(e)}),V(e,s),k()}Br([`click`]);var OV=B(`
Error Message
 
`),kV=B(`
 
`),AV=B(` `),jV=B(` streaming`),MV=B(`
Body
`),NV=B(`

`),PV=B(`

`),FV=B(`

`),IV=B(`
`);function LV(e,t){O(t,!0);let n=OI({logPrefix:`Failed to copy audit payload:`}),r=OI({logPrefix:`Failed to copy audit payload:`}),i=A(()=>t.pane&&t.pane.showHeaders?pf(t.pane.headers):``),a=A(()=>!t.pane||!t.pane.showBody?``:BB(t.pane.body)?GB(t.pane.body):vV.renderBodyWithConversationHighlights(t.pane.entry,t.pane.body,{promptCacheHighlight:t.pane.promptCacheHighlight})),o=A(()=>!!(t.pane&&vV.canShowConversation(t.pane.entry)));function s(e){e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),vV.handleErrorConversationClick(e,t.pane.entry))}var c=IV();let l;var u=P(c),d=e=>{var n=OV(),r=I(P(n),2);let i;var a=P(r,!0);D(r),D(n),L(()=>{i=G(r,1,`audit-json audit-pane-error-message svelte-1h5puht`,null,i,{"audit-pane-clickable-preview":R(o)}),K(r,`role`,R(o)?`button`:null),K(r,`tabindex`,R(o)?0:null),H(a,t.pane.errorMessage)}),z(`mousedown`,r,e=>vV.startBodyInteraction(e)),z(`keydown`,r,s),z(`click`,r,e=>vV.handleErrorConversationClick(e,t.pane.entry)),V(e,n)};U(u,e=>{t.pane.showErrorMessage&&e(d)});var f=I(u,2),p=e=>{var n=kV(),a=P(n),o=P(a),s=P(o,!0);D(o),DV(I(o,2),{get state(){return r},label:`Copy Headers`,errorLabel:`Copy failed`,class:`audit-copy-btn`,onclick:()=>r.copy(t.pane.copyHeaders,pf)}),D(a);var c=I(a,2),l=P(c,!0);D(c),D(n),L(()=>{H(s,t.pane.headersTitle||`Headers`),H(l,R(i))}),V(e,n)};U(f,e=>{t.pane.showHeaders&&e(p)});var m=I(f,2),h=e=>{var r=MV(),i=P(r),o=P(i),s=I(P(o),2),c=e=>{var n=AV(),r=P(n,!0);D(n),L(()=>H(r,t.pane.bodyCacheRatioLabel)),V(e,n)};U(s,e=>{t.pane.bodyCacheRatioLabel&&e(c)});var l=I(s,2),u=e=>{V(e,jV())};U(l,e=>{t.pane.streaming&&e(u)}),D(o),DV(I(o,2),{get state(){return n},label:`Copy Body`,errorLabel:`Copy failed`,class:`audit-copy-btn`,onclick:()=>n.copy(t.pane.copyBody,pf)}),D(i);var d=I(i,2);pi(d,()=>R(a),!0),D(d),D(r),z(`mousedown`,d,e=>vV.startBodyInteraction(e)),z(`click`,d,e=>vV.handleBodyConversationClick(e,t.pane.entry)),V(e,r)};U(m,e=>{t.pane.showBody&&e(h)});var g=I(m,2),_=e=>{var n=NV(),r=P(n,!0);D(n),L(()=>H(r,t.pane.emptyMessage)),V(e,n)};U(g,e=>{t.pane.showEmpty&&e(_)});var v=I(g,2),y=e=>{var n=PV(),r=I(P(n),2),i=P(r,!0);D(r),D(n),L(()=>H(i,t.pane.pendingMessage)),V(e,n)};U(v,e=>{t.pane.showPending&&e(y)});var b=I(v,2),x=e=>{var n=FV(),r=P(n,!0);D(n),L(()=>H(r,t.pane.tooLargeMessage)),V(e,n)};U(b,e=>{t.pane.showTooLarge&&e(x)}),D(c),L(()=>l=G(c,1,`audit-pane svelte-1h5puht`,null,l,{"audit-pane-split":t.pane&&t.pane.layout===`split`,"audit-pane-split-single":t.pane&&t.pane.layout===`split`&&!(t.pane.showHeaders&&t.pane.showBody)})),V(e,c),k()}Br([`mousedown`,`keydown`,`click`]);var RV=B(` `),zV=B(` `),BV=B(` `),VV=B(` `),HV=B(``),UV=B(`
`),WV=B(`
`);function GV(e,t){O(t,!0);let n=q(t,`panes`,19,()=>[]),r=j(null),i=A(()=>Mz(R(r),t.entry,n())),a=e=>`audit-tab-`+t.entry.id+`-`+e,o=e=>`audit-tabpanel-`+t.entry.id+`-`+e;function s(e,t){let i=n().map(e=>e.id),a=Nz(e.key,i,t);a!=null&&(e.preventDefault(),((e.currentTarget?.closest?.(`.audit-pane-tablist`))?.querySelectorAll(`.audit-pane-tab`)[i.indexOf(a)])?.focus?.(),M(r,a,!0))}var c=WV(),l=P(c);W(l,21,n,e=>e.id,(e,t)=>{var n=HV();let c;var l=P(n),u=P(l),d=e=>{J(e,{get icon(){return kl}})},f=e=>{J(e,{get icon(){return Ol}})};U(u,e=>{R(t).pane.direction===`request`?e(d):R(t).pane.direction===`response`&&e(f,1)}),D(l);var p=I(l,2),m=P(p,!0);D(p);var h=I(p,2),g=e=>{var n=RV(),r=P(n);D(n),L(()=>H(r,`#${R(t).pane.seq??``}`)),V(e,n)};U(h,e=>{R(t).pane.seq&&e(g)});var _=I(h,2),v=e=>{var n=zV(),r=P(n,!0);D(n),L(()=>{G(n,1,`provider-badge audit-pane-kind audit-pane-kind-${R(t).pane.kind??``}`,`svelte-1bc5vi5`),H(r,R(t).pane.kind)}),V(e,n)};U(_,e=>{R(t).pane.kind&&e(v)});var y=I(_,2);W(y,17,()=>R(t).pane.noChangeSteps||[],e=>e.id,(e,t)=>{var n=BV(),r=P(n,!0);D(n),L(()=>{K(n,`title`,R(t).title),H(r,R(t).label)}),V(e,n)});var b=I(y,2),x=e=>{var n=VV(),r=P(n,!0);D(n),L(()=>H(r,R(t).pane.savingsLabel)),V(e,n)};U(b,e=>{R(t).pane.savingsLabel&&e(x)});var S=I(b,2),C=e=>{var n=zV(),r=P(n,!0);D(n),L(e=>{G(n,1,`audit-status-badge ${e??``}`,`svelte-1bc5vi5`),H(r,R(t).pane.statusCode)},[()=>$R(R(t).pane.statusCode)]),V(e,n)};U(S,e=>{R(t).pane.statusCode&&e(C)}),D(n),L((e,r)=>{c=G(n,1,`audit-pane-tab svelte-1bc5vi5`,null,c,{"audit-pane-tab-active":R(i)===R(t).id}),K(n,`aria-selected`,R(i)===R(t).id),K(n,`id`,e),K(n,`aria-controls`,r),K(n,`tabindex`,R(i)===R(t).id?0:-1),G(l,1,Ni([`audit-pane-icon`,R(t).pane.direction&&`audit-pane-icon-${R(t).pane.direction}`]),`svelte-1bc5vi5`),H(m,R(t).pane.title)},[()=>a(R(t).id),()=>o(R(t).id)]),z(`keydown`,n,e=>s(e,R(t).id)),z(`click`,n,()=>M(r,R(t).id,!0)),V(e,n)}),D(l),W(I(l,2),17,n,e=>e.id,(e,t)=>{var n=UV();let r;LV(P(n),{get pane(){return R(t).pane}}),D(n),L((e,a)=>{K(n,`id`,e),K(n,`aria-labelledby`,a),r=Bi(n,``,r,{display:R(i)===R(t).id?null:`none`})},[()=>o(R(t).id),()=>a(R(t).id)]),V(e,n)}),D(c),V(e,c),k()}Br([`keydown`,`click`]);var KV=B(`
`),qV=B(`
`);function JV(e,t){O(t,!0);let n=q(t,`thread`,3,null),r=q(t,`hidePath`,3,!1),i=A(()=>Iz.isAuditEntryExpanded(t.entry)),a=A(()=>vV.conversationOpen&&String(vV.conversationAnchorID||``)===String(t.entry.id||``)),o=A(()=>R(i)?Az(t.entry,dB):[]),s=A(()=>R(i)?TL(t.entry,bR.auditEntryWorkflow(t.entry),bR.workflowFeatureCaps()):null);function c(){Iz.toggleAuditEntryExpanded(t.entry)}var l=qV();let u;var d=P(l);TV(d,{get entry(){return t.entry},get thread(){return n()},get expanded(){return R(i)},get hidePath(){return r()},onactivate:c});var f=I(d,2),p=e=>{var n=KV(),r=P(n),i=e=>{VI(e,{get chart(){return R(s)}})};U(r,e=>{R(s)&&e(i)});var a=I(r,2);GV(a,{get entry(){return t.entry},get panes(){return R(o)}}),Kz(I(a,2),{get entry(){return t.entry}}),D(n),Di(3,n,()=>$d,()=>({y:-6,duration:vR(150)})),V(e,n)};U(f,e=>{R(i)&&e(p)}),D(l),L(()=>u=G(l,1,`audit-entry svelte-cmjgwr`,null,u,{"audit-entry-interactions-open":R(a)})),V(e,l),k()}var YV=B(`
`),XV=B(`
`),ZV=B(`

`),QV=B(`
`),$V=B(`
`);function eH(e,t){O(t,!0);let n=A(()=>IR(t.entry)),r=A(()=>Iz.isThreadExpanded(R(n))),i=A(()=>Iz.threadChildren(R(n))),a=A(()=>R(i)&&!R(i).loading&&Number(R(i).total||0)>R(i).entries.length+1);var o=Xr(),s=F(o),c=e=>{JV(e,{get entry(){return t.entry}})},l=A(()=>!RR(t.entry)),u=e=>{var n=$V(),o=P(n);{let e=A(()=>({count:LR(t.entry),expanded:R(r),ontoggle:()=>Iz.toggleThread(t.entry)}));JV(o,{get entry(){return t.entry},get thread(){return R(e)}})}var s=I(o,2),c=e=>{var n=QV(),r=P(n),o=e=>{var t=YV();kE(P(t),{size:14,label:`Loading session requests`}),D(t),V(e,t)};U(r,e=>{R(i)&&R(i).loading&&e(o)});var s=I(r,2);W(s,17,()=>R(i)&&R(i).entries||[],e=>e.id,(e,n)=>{var r=XV(),i=P(r);{let e=A(()=>R(n).path===t.entry.path);JV(i,{get entry(){return R(n)},get hidePath(){return R(e)}})}D(r),V(e,r)});var c=I(s,2),l=e=>{var t=ZV(),n=P(t);D(t),L(()=>H(n,`Showing the latest ${R(i).entries.length+1} of ${R(i).total??``} + requests in this session.`)),V(e,t)};U(c,e=>{R(a)&&e(l)}),D(n),Di(3,n,()=>ef,()=>({duration:vR(150)})),V(e,n)};U(s,e=>{R(r)&&e(c)}),D(n),V(e,n)};U(s,e=>{R(l)?e(c):e(u,-1)}),V(e,o),k()}var tH=B(`

.

`),nH=B(`
Audit logging is off. Live entries are temporary and disappear after + refresh. Set LOGGING_ENABLED=true to persist them.
`),rH=B(`

`),iH=B(`
`),aH=B(`
`),oH=B(`
`),sH=B(`
`),cH=B(`
`);function lH(e,t){O(t,!0);let n=A(()=>Td.config&&Td.config.LOGGING_RETENTION_DAYS);On(()=>{if(Y.refreshTick,Gu.page===`audit-logs`)return wr(()=>r())});function r(){let e=!1;return(async()=>{try{await Td.ensureLoaded()}finally{await Iz.fetchAuditLog(!0),!e&&Td.liveLogsVisible()&&zD.ensureLiveLogs()}})(),()=>{e=!0,zD.stopLiveLogs()}}var i=cH(),a=P(i),o=P(a),s=I(P(o),2),c=e=>{eD(e,{copyId:`audit-retention-help-copy`,label:`retention help`,text:`If you want to change the retention period, set LOGGING_RETENTION_DAYS (env var) or logging.retention_days (config.yaml) and restart the gateway. Default is 30 days; 0 keeps audit logs forever.`,title:e=>{var t=tH(),r=P(t,!0),i=I(r),a=P(i,!0);D(i),Ve(),D(t),L((e,t)=>{H(r,e),H(a,t)},[()=>MR(R(n)),()=>NR(R(n))]),V(e,t)},$$slots:{title:!0}})},l=A(()=>jR(R(n)));U(s,e=>{R(l)&&e(c)}),D(o),D(a);var u=I(a,2);lp(P(u),{onchange:()=>Iz.fetchAuditLog(!0)}),D(u);var d=I(u,2);Wf(d,{});var f=I(d,2),p=e=>{V(e,nH())},m=A(()=>Td.loaded&&!Td.auditVisible()&&!Y.needsAuth);U(f,e=>{R(m)&&e(p)});var h=I(f,2),g=P(h);Rz(g,{});var _=I(g,2),v=P(_),y=P(v),b=e=>{var t=rH(),n=P(t);D(t),L(e=>H(n,`Showing ${Iz.auditLog.offset+1}-${e??``} of ${Iz.auditLog.total??``} + ${Iz.auditGroupSessions?`sessions`:`logs`}`),[()=>Math.min(Iz.auditLog.offset+Iz.auditLog.limit,Iz.auditLog.total)]),V(e,t)};U(y,e=>{Iz.auditLog.total>0&&e(b)});var x=I(y,2),S=P(x);ea(S),Ve(2),D(x),D(v),Uz(I(v,2),{}),D(_);var C=I(_,2),w=e=>{var t=iH();kE(P(t),{size:18,label:`Loading audit logs`}),D(t),V(e,t)},T=e=>{var t=oH();W(t,29,()=>Iz.auditLog.entries,e=>e.id,(e,t)=>{var n=aH(),r=P(n),i=e=>{eH(e,{get entry(){return R(t)}})},a=e=>{JV(e,{get entry(){return R(t)}})};U(r,e=>{Iz.auditGroupSessions?e(i):e(a,-1)}),D(n),Ei(n,()=>mR,()=>({duration:vR(150)})),Di(1,n,()=>yR,()=>({live:R(t)._live})),V(e,n)}),D(t),V(e,t)};U(C,e=>{Iz.loading&&Iz.auditLog.entries.length===0?e(w):Iz.auditLog.entries.length>0&&e(T,1)});var E=I(C,2),ee=e=>{var t=sH();ME(P(t),{}),D(t),V(e,t)};U(E,e=>{Iz.auditLog.entries.length===0&&!Iz.loading&&!Y.needsAuth&&e(ee)}),nk(I(E,2),{get total(){return Iz.auditLog.total},get offset(){return Iz.auditLog.offset},get limit(){return Iz.auditLog.limit},onprev:()=>Iz.auditLogPrevPage(),onnext:()=>Iz.auditLogNextPage()}),D(h),D(i),L(()=>na(S,Iz.auditGroupSessions)),z(`change`,S,()=>Iz.toggleAuditGroupSessions()),V(e,i),k()}Br([`change`]);function uH(e){try{let t=JSON.parse(JSON.stringify(e||{}));return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}function dH(e){return Array.isArray(e)?e.map(e=>String(e||``).trim()).filter(e=>e):e==null?[]:String(e).split(`,`).map(e=>e.trim()).filter(e=>e)}function fH(e,t){let n=String(t||``).trim();return(e||[]).find(e=>String(e&&e.type||``).trim()===n)||null}function pH(e){return Array.isArray(e)&&e.length>0&&String(e[0].type||``).trim()||`system_prompt`}function mH(e,t){let n=String(t||``).trim();return n&&fH(e,n)?n:pH(e)}function hH(e,t){let n=fH(e,t);return!n||!n.defaults?{}:uH(n.defaults)}function gH(e,t,n){return{...hH(e,n),...uH(t)}}function _H(e,t){let n=mH(e,t);return{name:``,type:n,description:``,user_path:``,config:hH(e,n)}}function vH(e,t){if(!t)return e||[];let n=String(t).toLowerCase();return(e||[]).filter(e=>[e.name,e.type,e.user_path,e.description,e.summary].some(e=>String(e||``).toLowerCase().includes(n)))}function yH(e,t){let n=fH(e,t);return n&&n.label?n.label:t||`Unknown`}function bH(e,t){let n=fH(e,t);return Array.isArray(n&&n.fields)?n.fields:[]}function xH(e,t){if(!t||!e)return t&&t.input===`checkboxes`?[]:``;let n=e[t.key];return n==null?t.input===`checkboxes`?[]:``:t.input===`checkboxes`?dH(n):n}function SH(e,t,n){if(!t)return e;let r=uH(e);if(t.input===`number`){let e=String(n||``).trim();if(e===``)delete r[t.key];else{let n=Number(e);r[t.key]=Number.isFinite(n)?n:e}}else t.input===`checkboxes`?r[t.key]=dH(n):r[t.key]=n;return r}function CH(e,t,n){return xH(e,t).includes(String(n||``).trim())}function wH(e,t,n,r){let i=dH(xH(e,t)),a=String(n||``).trim();return a?SH(e,t,r?Array.from(new Set([...i,a])):i.filter(e=>e!==a)):e}function TH(e){return{name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),description:String(e&&e.description||``).trim()||void 0,user_path:String(e&&e.user_path||``).trim()||void 0,config:uH(e&&e.config)}}var EH=new class{#e=j(N([]));get guardrails(){return R(this.#e)}set guardrails(e){M(this.#e,e,!0)}#t=j(N([]));get types(){return R(this.#t)}set types(e){M(this.#t,e,!0)}#n=j(!0);get available(){return R(this.#n)}set available(e){M(this.#n,e,!0)}#r=j(!1);get loading(){return R(this.#r)}set loading(e){M(this.#r,e,!0)}#i=j(!1);get typesLoading(){return R(this.#i)}set typesLoading(e){M(this.#i,e,!0)}#a=j(``);get error(){return R(this.#a)}set error(e){M(this.#a,e,!0)}#o=j(``);get filter(){return R(this.#o)}set filter(e){M(this.#o,e,!0)}#s=j(!1);get formOpen(){return R(this.#s)}set formOpen(e){M(this.#s,e,!0)}#c=j(!1);get formSubmitting(){return R(this.#c)}set formSubmitting(e){M(this.#c,e,!0)}#l=j(``);get deletingName(){return R(this.#l)}set deletingName(e){M(this.#l,e,!0)}#u=j(`create`);get formMode(){return R(this.#u)}set formMode(e){M(this.#u,e,!0)}#d=j(``);get formOriginalName(){return R(this.#d)}set formOriginalName(e){M(this.#d,e,!0)}#f=j(N({name:``,type:``,description:``,user_path:``,config:{}}));get form(){return R(this.#f)}set form(e){M(this.#f,e,!0)}get filtered(){return vH(this.guardrails,this.filter)}typeLabel(e){return yH(this.types,e)}typeFields(e){return bH(this.types,e)}fieldValue(e){return xH(this.form&&this.form.config,e)}setFieldValue(e,t){this.form={...this.form,config:SH(this.form.config,e,t)}}arrayFieldSelected(e,t){return CH(this.form&&this.form.config,e,t)}toggleArrayFieldValue(e,t,n){this.form={...this.form,config:wH(this.form.config,e,t,n)}}openCreate(){this.formMode=`create`,this.formOriginalName=``,this.error=``,this.form=_H(this.types,pH(this.types)),this.formOpen=!0}openEdit(e){let t=mH(this.types,e&&e.type);this.formMode=`edit`,this.formOriginalName=String(e&&e.name||``).trim(),this.error=``,this.form={name:this.formOriginalName,type:t,description:String(e&&e.description||``).trim(),user_path:String(e&&e.user_path||``).trim(),config:gH(this.types,e&&e.config,t)},this.formOpen=!0}closeForm(){this.formOpen=!1,this.formMode=`create`,this.formOriginalName=``,this.error=``,this.form=_H(this.types,pH(this.types))}changeType(e){let t=mH(this.types,e);this.form={...this.form,type:t,config:hH(this.types,t)}}async fetchTypes(){this.typesLoading=!0;try{let e=await Tk(`/admin/guardrails/types`,{label:`guardrail types`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.types=[];return}if(e.result&&(this.available=!0),this.types=e.items,e.status===`error`){this.error=e.error;return}let t=mH(this.types,this.form.type);this.form={...this.form,type:t,config:gH(this.types,this.form.config,t)}}finally{this.typesLoading=!1}}async fetchGuardrails(){this.loading=!0,this.error=``;try{let e=await Tk(`/admin/guardrails`,{label:`guardrails`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.guardrails=[];return}e.result&&(this.available=!0),this.guardrails=e.items,this.error=e.error}finally{this.loading=!1}}async fetchPage(){await Promise.all([this.fetchTypes(),this.fetchGuardrails()])}async submitForm(){let e=String(this.form.name||``).trim(),t=String(this.form.type||``).trim();if(!e){this.error=`Name is required.`;return}if(!t){this.error=`Type is required.`;return}this.error=``,this.formSubmitting=!0;let n=TH(this.form);try{let t=await Ek(`/admin/guardrails`,`PUT`,n,{label:`save guardrail`,errorFallback:`Failed to save guardrail.`,unavailableMessage:`Guardrails feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error;return}of.success(`Guardrail "`+e+`" saved.`),this.closeForm(),this.fetchGuardrails()}finally{this.formSubmitting=!1}}async deleteGuardrail(e){let t=String(e&&e.name||``).trim();if(!(!t||this.deletingName)&&window.confirm(`Delete guardrail "`+t+`"? Workflows that still reference it must be updated first.`)){this.deletingName=t;try{let e=await Ek(`/admin/guardrails`,`DELETE`,{name:t},{label:`delete guardrail`,errorFallback:`Failed to delete guardrail.`,unavailableMessage:`Guardrails feature is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,of.error(e.error);return}if(e.status===`error`){of.error(e.error);return}of.success(`Guardrail "`+t+`" deleted.`),this.formOpen&&this.formOriginalName===t&&this.closeForm(),this.fetchGuardrails()}finally{this.deletingName=``}}}},DH=B(`
`),OH=B(`

Loading guardrails...

`),kH=B(`
`),AH=B(`
`),jH=B(`
NameTypeUser PathSummaryActions
`),MH=B(`

No guardrails defined yet.

`),NH=B(`

Instances

Each instance has a reusable name, a type, an optional user path for future UI visibility scoping, and a JSON-backed config payload for - that type.

`);function kV(e,t){O(t,!0);var n=OV(),r=P(n),i=I(P(r),2);J(P(i),{get icon(){return il},class:`form-action-icon`}),Ve(2),D(i),D(r);var a=I(r,2),o=e=>{var t=SV(),n=P(t);SD(P(n),{id:`guardrail-filter`,placeholder:`Filter by name, type, user path, summary...`,label:`Guardrail filter`,get value(){return xV.filter},set value(e){xV.filter=e}}),D(n),D(t),V(e,t)};U(a,e=>{xV.available&&e(o)});var s=I(a,2),c=e=>{var t=CV();wT(P(t),{size:16,label:`Loading guardrails`}),Ve(),D(t),V(e,t)};U(s,e=>{xV.loading&&xV.filtered.length===0&&e(c)});var l=I(s,2),u=e=>{var t=EV(),n=P(t),r=I(P(n));W(r,21,()=>xV.filtered,e=>e.name,(e,t)=>{var n=TV(),r=P(n),i=P(r,!0);D(r);var a=I(r),o=P(a),s=P(o,!0);D(o),D(a);var c=I(a),l=P(c,!0);D(c);var u=I(c),d=P(u),f=P(d,!0);D(d);var p=I(d,2),m=e=>{var n=wV(),r=P(n,!0);D(n),L(()=>H(r,R(t).description)),V(e,n)};U(p,e=>{R(t).description&&e(m)}),D(u);var h=I(u),g=P(h),_=P(g);{let e=A(()=>`Edit guardrail `+R(t).name);yO(_,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>xV.openEdit(R(t)),children:(e,t)=>{J(e,{get icon(){return nl},class:`table-icon-svg`})},$$slots:{default:!0}})}var v=I(_,2);{let e=A(()=>(xV.deletingName===R(t).name?`Deleting guardrail `:`Delete guardrail `)+R(t).name),n=A(()=>xV.deletingName===R(t).name);yO(v,{get label(){return R(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>xV.deleteGuardrail(R(t)),get disabled(){return R(n)},children:(e,t)=>{J(e,{get icon(){return Ol},class:`table-icon-svg`})},$$slots:{default:!0}})}D(g),D(h),D(n),L(e=>{H(i,R(t).name),H(s,e),H(l,R(t).user_path||`—`),H(f,R(t).summary||R(t).description||`No summary yet.`)},[()=>xV.typeLabel(R(t).type)]),V(e,n)}),D(r),D(n),D(t),V(e,t)};U(l,e=>{xV.filtered.length>0&&e(u)});var d=I(l,2),f=e=>{V(e,DV())};U(d,e=>{xV.filtered.length===0&&!xV.loading&&xV.available&&!xV.error&&!Y.authError&&e(f)}),D(n),L(()=>i.disabled=xV.typesLoading||xV.formSubmitting||!xV.available),z(`click`,i,()=>xV.openCreate()),V(e,n),k()}Br([`click`]);var AV=B(`

Workflows reference these names directly, so renames are - intentionally avoided after creation.

`),jV=B(``),MV=B(``),NV=B(``),PV=B(``),FV=B(``),IV=B(``),LV=B(``),RV=B(``),zV=B(``),BV=B(`
`),VV=B(``),HV=B(` `),UV=B(`
`),WV=B(`
`);function GV(e,t){O(t,!0);let n=A(()=>xV.formMode===`edit`);{let t=e=>{V(e,AV())},r=A(()=>R(n)?`Edit Guardrail`:`Create Guardrail`);Ck(e,{get open(){return xV.formOpen},get title(){return R(r)},ariaLabel:`Guardrail editor`,get error(){return xV.error},get submitting(){return xV.formSubmitting},submitLabel:`Save Guardrail`,dialogClass:`settings-guardrails-editor guardrails-editor-wide`,onclose:()=>xV.closeForm(),onsubmit:()=>xV.submitForm(),headerHint:t,children:(e,t)=>{var r=WV(),i=P(r);Tk(i,{id:`guardrail-name`,label:`Name`,children:(e,t)=>{var r=jV();ea(r),L(()=>{r.disabled=R(n),K(r,`data-modal-autofocus`,!R(n)||void 0)}),la(r,()=>xV.form.name,e=>xV.form.name=e),V(e,r)},$$slots:{default:!0}});var a=I(i,2);Tk(a,{id:`guardrail-type`,label:`Type`,children:(e,t)=>{var r=NV();W(r,21,()=>xV.types,e=>e.type,(e,t)=>{var n=MV(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).type)&&(n.value=(n.__value=R(t).type)??``)}),V(e,n)}),D(r);var i;Hi(r),L(()=>{r.disabled=R(n),i!==(i=xV.form.type)&&(r.value=(r.__value=xV.form.type)??``,Vi(r,xV.form.type))}),z(`change`,r,e=>xV.changeType(e.currentTarget.value)),V(e,r)},$$slots:{default:!0}});var o=I(a,2);Tk(o,{id:`guardrail-description`,label:`Description`,children:(e,t)=>{var r=PV();ea(r),L(()=>K(r,`data-modal-autofocus`,R(n)?!0:void 0)),la(r,()=>xV.form.description,e=>xV.form.description=e),V(e,r)},$$slots:{default:!0}});var s=I(o,2),c=P(s);YT(c,{copyId:`guardrail-user-path-help-copy`,label:`guardrail user path help`,text:`Only used for auxiliary rewrite (llm_based_altering) guardrails; ignored for other guardrail types.`,title:e=>{V(e,FV())},$$slots:{title:!0}});var l=I(c,2);ea(l),D(s),W(I(s,2),17,()=>xV.typeFields(xV.form.type),e=>e.key,(e,t)=>{var n=Xr(),r=F(n),i=e=>{var n=BV(),r=P(n);{let e=e=>{var n=IV(),r=P(n,!0);D(n),L(()=>{K(n,`for`,`guardrail-field-`+R(t).key),H(r,R(t).label)}),V(e,n)},n=A(()=>`guardrail-field-help-`+R(t).key),i=A(()=>R(t).label+` help`),a=A(()=>R(t).help||``);YT(r,{get copyId(){return R(n)},get label(){return R(i)},get text(){return R(a)},title:e,$$slots:{title:!0}})}var i=I(r,2),a=e=>{var n=LV();W(n,21,()=>R(t).options||[],e=>e.value,(e,t)=>{var n=MV(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(n);var r;Hi(n),L(e=>{K(n,`id`,`guardrail-field-`+R(t).key),K(n,`aria-describedby`,R(t).help?`guardrail-field-help-`+R(t).key:void 0),r!==(r=e)&&(n.value=(n.__value=e)??``,Vi(n,e))},[()=>xV.fieldValue(R(t))]),z(`change`,n,e=>xV.setFieldValue(R(t),e.currentTarget.value)),V(e,n)},o=e=>{var n=RV();ut(n),L(e=>{K(n,`id`,`guardrail-field-`+R(t).key),K(n,`placeholder`,R(t).placeholder||``),ta(n,e),K(n,`aria-describedby`,R(t).help?`guardrail-field-help-`+R(t).key:void 0)},[()=>xV.fieldValue(R(t))]),z(`input`,n,e=>xV.setFieldValue(R(t),e.currentTarget.value)),V(e,n)},s=e=>{var n=zV();ea(n),L(e=>{K(n,`id`,`guardrail-field-`+R(t).key),K(n,`type`,R(t).input||`text`),K(n,`placeholder`,R(t).placeholder||``),ta(n,e),K(n,`aria-describedby`,R(t).help?`guardrail-field-help-`+R(t).key:void 0)},[()=>xV.fieldValue(R(t))]),z(`input`,n,e=>xV.setFieldValue(R(t),e.currentTarget.value)),V(e,n)};U(i,e=>{R(t).input===`select`?e(a):R(t).input===`textarea`?e(o,1):e(s,-1)}),D(n),V(e,n)},a=e=>{var n=UV(),r=P(n),i=P(r,!0);D(r);var a=I(r,2);W(a,21,()=>R(t).options||[],e=>R(t).key+`-`+e.value,(e,n)=>{var r=VV(),i=P(r);ea(i);var a=I(i,2),o=P(a,!0);D(a),D(r),L(e=>{na(i,e),H(o,R(n).label)},[()=>xV.arrayFieldSelected(R(t),R(n).value)]),z(`change`,i,e=>xV.toggleArrayFieldValue(R(t),R(n).value,e.currentTarget.checked)),V(e,r)}),D(a);var o=I(a,2),s=e=>{var n=HV(),r=P(n,!0);D(n),L(()=>{K(n,`id`,`guardrail-field-help-`+R(t).key),H(r,R(t).help)}),V(e,n)};U(o,e=>{R(t).help&&e(s)}),D(n),L(()=>{K(n,`aria-describedby`,R(t).help?`guardrail-field-help-`+R(t).key:void 0),H(i,R(t).label)}),V(e,n)};U(r,e=>{R(t).input===`checkboxes`?e(a,-1):e(i)}),V(e,n)}),D(r),la(l,()=>xV.form.user_path,e=>xV.form.user_path=e),V(e,r)},$$slots:{headerHint:!0,default:!0}})}k()}Br([`change`,`input`]);var KV=B(`

Guardrails

`),qV=B(`
Runtime guardrail execution is currently off because GUARDRAILS_ENABLED is disabled. You can still manage - definitions here.
`),JV=B(`
Guardrails feature is unavailable.
`),YV=B(`
`),XV=B(`

Reusable Policy Objects

Guardrail Library

Store guardrails in the database, keep them hot in memory, and attach - them to workflows by reference.

Instances
Types
`);function ZV(e,t){O(t,!0),On(()=>{Y.refreshTick,Bl.page===`guardrails`&&(bu.ensureLoaded(),xV.fetchPage())});var n=XV(),r=P(n),i=P(r);YT(P(i),{copyId:`guardrails-help-copy`,label:`guardrails help`,text:`Reusable policy objects stored in the database and kept hot in memory for workflow execution.`,title:e=>{V(e,KV())},$$slots:{title:!0}}),D(i),D(r);var a=I(r,2),o=I(P(a),2),s=P(o),c=I(P(s),2),l=P(c,!0);D(c),D(s);var u=I(s,2),d=I(P(u),2),f=P(d,!0);D(d),D(u),D(o),D(a);var p=I(a,2);Rd(p,{});var m=I(p,2),h=e=>{V(e,qV())},g=A(()=>!bu.guardrailsVisible());U(m,e=>{R(g)&&e(h)});var _=I(m,2),v=e=>{V(e,JV())};U(_,e=>{!Y.authError&&!xV.available&&e(v)});var y=I(_,2),b=e=>{var t=YV(),n=P(t,!0);D(t),L(()=>H(n,xV.error)),V(e,t)};U(y,e=>{!Y.authError&&xV.error&&!xV.formOpen&&e(b)});var x=I(y,2);GV(x,{}),kV(I(x,2),{}),D(n),L((e,t)=>{H(l,e),H(f,t)},[()=>cd(xV.guardrails.length),()=>cd(xV.types.length)]),V(e,n),k()}var $=new class{#e=j(N([]));get servers(){return R(this.#e)}set servers(e){M(this.#e,e,!0)}#t=j(!0);get available(){return R(this.#t)}set available(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}#r=j(``);get error(){return R(this.#r)}set error(e){M(this.#r,e,!0)}#i=j(``);get filter(){return R(this.#i)}set filter(e){M(this.#i,e,!0)}#a=j(!1);get formOpen(){return R(this.#a)}set formOpen(e){M(this.#a,e,!0)}#o=j(!1);get formSubmitting(){return R(this.#o)}set formSubmitting(e){M(this.#o,e,!0)}#s=j(`create`);get formMode(){return R(this.#s)}set formMode(e){M(this.#s,e,!0)}#c=j(!1);get slugEdited(){return R(this.#c)}set slugEdited(e){M(this.#c,e,!0)}#l=j(!1);get advancedOpen(){return R(this.#l)}set advancedOpen(e){M(this.#l,e,!0)}#u=j(N(pw()));get form(){return R(this.#u)}set form(e){M(this.#u,e,!0)}#d=j(``);get deletingName(){return R(this.#d)}set deletingName(e){M(this.#d,e,!0)}#f=j(``);get reconnectingName(){return R(this.#f)}set reconnectingName(e){M(this.#f,e,!0)}#p=j(!1);get catalogOpen(){return R(this.#p)}set catalogOpen(e){M(this.#p,e,!0)}#m=j(!1);get catalogLoading(){return R(this.#m)}set catalogLoading(e){M(this.#m,e,!0)}#h=j(``);get catalogError(){return R(this.#h)}set catalogError(e){M(this.#h,e,!0)}#g=j(N(mw()));get catalog(){return R(this.#g)}set catalog(e){M(this.#g,e,!0)}#_=A(()=>Tw(this.servers,this.filter));get filtered(){return R(this.#_)}set filtered(e){M(this.#_,e)}async fetchServers(){if(await bu.ensureLoaded(),!bu.mcpVisible()){this.available=!1,this.servers=[],this.error=``,this.loading=!1;return}this.loading=!0,this.error=``;try{let e=await bO(`/admin/mcp-servers`,{label:`mcp servers`,errorFallback:`Failed to load MCP servers.`,unavailableStatuses:[503,404]});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.servers=[];return}if(e.status===`error`){e.result&&(this.available=!0),this.servers=[],this.error=e.error;return}this.available=!0,this.servers=e.items}finally{this.loading=!1}}openCreate(){this.formMode=`create`,this.slugEdited=!1,this.advancedOpen=!1,this.error=``,this.form=pw(),this.formOpen=!0}openEdit(e){!e||e.managed||(this.formMode=`edit`,this.slugEdited=!0,this.advancedOpen=!1,this.error=``,this.form=Ew(e),this.formOpen=!0)}closeForm(){this.formOpen=!1,this.formMode=`create`,this.slugEdited=!1,this.advancedOpen=!1,this.error=``,this.form=pw()}syncSlugFromName(){this.formMode===`create`&&!this.slugEdited&&(this.form.slug=xw(this.form.name))}markSlugEdited(){this.formMode===`create`&&(this.slugEdited=!0)}addHeader(){this.form.headers.push({name:``,value:``})}removeHeader(e){this.form.headers.splice(e,1)}async submitForm(){let e=Dw(this.form,this.formMode,this.servers);if(e.error){this.error=e.error;return}this.error=``,this.formSubmitting=!0;try{let t=await xO(`/admin/mcp-servers`,`PUT`,e.payload,{label:`save mcp server`,errorFallback:`Failed to save MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error;return}ed.success(`MCP server "`+e.payload.name+`" saved.`),this.closeForm(),this.fetchServers()}finally{this.formSubmitting=!1}}async deleteServer(e){let t=String(e&&e.name||``).trim(),n=hw(e);if(!(!n||this.deletingName||e&&e.managed)&&confirm(`Delete MCP server "`+t+`"? Clients lose access to its tools immediately.`)){this.deletingName=n;try{let e=await xO(`/admin/mcp-servers/`+encodeURIComponent(n),`DELETE`,void 0,{label:`delete mcp server`,errorFallback:`Failed to delete MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,ed.error(e.error);return}if(e.status===`error`){ed.error(e.error);return}ed.success(`MCP server "`+t+`" deleted.`),this.formOpen&&this.form.slug===n&&this.closeForm(),this.fetchServers()}finally{this.deletingName=``}}}async reconnectServer(e){let t=String(e&&e.name||``).trim(),n=hw(e);if(!(!n||this.reconnectingName)){this.reconnectingName=n;try{let e=await xO(`/admin/mcp-servers/`+encodeURIComponent(n)+`/reconnect`,`POST`,void 0,{label:`reconnect mcp server`,errorFallback:`Failed to reconnect MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,ed.error(e.error);return}if(e.status===`error`){ed.error(e.error);return}let r=e.result.data,i=gw(r);i===`connected`?ed.success(`MCP server "`+t+`" reconnected.`):i===`disabled`?ed.success(`MCP server "`+t+`" is disabled; no connection was attempted.`):ed.error(`Reconnect attempted, but MCP server "`+t+`" is still `+i+`.`),r&&r.name?this.servers=(this.servers||[]).map(e=>hw(e)===hw(r)?r:e):this.fetchServers()}finally{this.reconnectingName=``}}}async openCatalog(e){let t=String(e&&e.name||``).trim(),n=hw(e);if(n){this.catalogOpen=!0,this.catalogLoading=!0,this.catalogError=``,this.catalog={...mw(),server:n,status:gw(e)};try{let e=await hu(`/admin/mcp-servers/`+encodeURIComponent(n)+`/catalog`,{label:`mcp server catalog`});if(e.stale)return;if(e.status===503){this.available=!1,this.catalogError=`MCP server management is unavailable.`;return}if(e.status===404){this.catalogError=`MCP server "`+t+`" was not found.`;return}if(!e.ok){this.catalogError=e.status===401?`Authentication required.`:uu(e.data,`Failed to load MCP server catalog.`);return}this.catalog=Ow(n,e.data)}catch(e){console.error(`Failed to load MCP server catalog:`,e),this.catalogError=`Failed to load MCP server catalog.`}finally{this.catalogLoading=!1}}}closeCatalog(){this.catalogOpen=!1,this.catalogLoading=!1,this.catalogError=``,this.catalog=mw()}},QV=B(``),$V=B(`

`),eH=B(`
`),tH=B(`

`),nH=B(`
  • `),rH=B(`

      `),iH=B(`

      No tools listed — the server may still be connecting or degraded.

      `),aH=B(` `,1),oH=B(``);function sH(e,t){O(t,!0);let n=A(()=>Aw($.catalog));Nu(e,{get open(){return $.catalogOpen},variant:`editor`,onclose:()=>$.closeCatalog(),children:(e,t)=>{var r=oH(),i=P(r),a=P(i),o=I(P(a),2),s=P(o),c=P(s,!0);D(s);var l=I(s,2),u=P(l,!0);D(l),D(o),D(a),ku(I(a,2),{label:`Close MCP server catalog`,onclick:()=>$.closeCatalog()}),D(i);var d=I(i,2),f=e=>{_O(e,{label:`Loading catalog...`})},p=e=>{var t=QV(),n=P(t,!0);D(t),L(()=>H(n,$.catalogError)),V(e,t)},m=e=>{var t=aH(),r=F(t),i=e=>{var t=$V(),n=P(t,!0);D(t),L(()=>H(n,$.catalog.instructions)),V(e,t)};U(r,e=>{$.catalog.instructions&&e(i)});var a=I(r,2);W(a,17,()=>R(n),e=>e.key,(e,t)=>{var n=rH(),r=P(n),i=P(r,!0);D(r);var a=I(r,2);W(a,21,()=>R(t).items,e=>e.key,(e,t)=>{var n=nH(),r=P(n),i=P(r,!0);D(r);var a=I(r,2),o=e=>{var n=eH(),r=P(n,!0);D(n),L(()=>{K(n,`title`,`Exposed on the aggregated /mcp endpoint as `+R(t).aggregated),H(r,R(t).aggregated)}),V(e,n)};U(a,e=>{R(t).aggregated&&e(o)});var s=I(a,2),c=e=>{var n=tH(),r=P(n,!0);D(n),L(()=>H(r,R(t).description)),V(e,n)};U(s,e=>{R(t).description&&e(c)}),D(n),L(()=>{K(r,`title`,R(t).aggregated||R(t).name),H(i,R(t).name)}),V(e,n)}),D(a),D(n),L(()=>H(i,R(t).title)),V(e,n)});var o=I(a,2),s=e=>{V(e,iH())},c=A(()=>jw($.catalog));U(o,e=>{R(c)&&e(s)}),V(e,t)};U(d,e=>{$.catalogLoading?e(f):$.catalogError?e(p,1):e(m,-1)});var h=I(d,2),g=P(h);D(h),D(r),L((e,t)=>{H(c,$.catalog.server),G(l,1,`audit-status-badge ${e??``}`,`svelte-1xqrzco`),H(u,t)},[()=>_w($.catalog),()=>gw($.catalog)]),z(`click`,g,()=>$.closeCatalog()),V(e,r)},$$slots:{default:!0}}),k()}Br([`click`]);var cH=B(`

      The display name can change. The slug is the stable client-facing identity.

      `),lH=B(` Human-readable and Unicode-friendly. You can change it later.`,1),uH=B(`Derived from the name. You may edit it before saving.`),dH=B(`Immutable because it is used in URLs, scope headers, and aggregated tool names.`),fH=B(` `,1),pH=B(` stdio servers are config-only: declare them in config.yaml under mcp.servers.`,1),mH=B(``),hH=B(`
      `),gH=B(`
      Headers
      Sent only to the configured server origin. Saved values are shown as ***; leave *** unchanged to keep the stored value.
      Advanced settings Description, access rules, and timeout
      `,1);function _H(e,t){O(t,!0);{let t=e=>{V(e,cH())},n=A(()=>$.formMode===`edit`?`Edit MCP Server`:`Add MCP Server`);Ck(e,{get open(){return $.formOpen},get title(){return R(n)},ariaLabel:`MCP server editor`,get error(){return $.error},get submitting(){return $.formSubmitting},onclose:()=>$.closeForm(),onsubmit:()=>$.submitForm(),headerHint:t,children:(e,t)=>{var n=gH(),r=F(n);Tk(r,{id:`mcp-server-name`,label:`Name`,children:(e,t)=>{var n=lH(),r=F(n);ea(r),Ve(2),z(`input`,r,()=>$.syncSlugFromName()),la(r,()=>$.form.name,e=>$.form.name=e),V(e,n)},$$slots:{default:!0}});var i=I(r,2);Tk(i,{id:`mcp-server-slug`,label:`Slug`,children:(e,t)=>{var n=fH(),r=F(n);ea(r);var i=I(r,2),a=e=>{V(e,uH())},o=e=>{V(e,dH())};U(i,e=>{$.formMode===`create`?e(a):e(o,-1)}),L(()=>r.disabled=$.formMode===`edit`),z(`input`,r,()=>$.markSlugEdited()),la(r,()=>$.form.slug,e=>$.form.slug=e),V(e,n)},$$slots:{default:!0}});var a=I(i,2);Tk(a,{id:`mcp-server-transport`,label:`Transport`,children:(e,t)=>{var n=pH(),r=F(n),i=P(r);i.value=i.__value=`http`;var a=I(i);a.value=a.__value=`sse`,D(r),Ve(2),Ui(r,()=>$.form.transport,e=>$.form.transport=e),V(e,n)},$$slots:{default:!0}});var o=I(a,2);Tk(o,{id:`mcp-server-url`,label:`URL`,children:(e,t)=>{var n=mH();ea(n),la(n,()=>$.form.url,e=>$.form.url=e),V(e,n)},$$slots:{default:!0}});var s=I(o,2),c=I(P(s),2);W(c,21,()=>$.form.headers,ii,(e,t,n)=>{var r=hH(),i=P(r);ea(i);var a=I(i,2);ea(a),yO(I(a,2),{label:`Remove header`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>$.removeHeader(n),children:(e,t)=>{J(e,{get icon(){return xl},class:`table-icon-svg`})},$$slots:{default:!0}}),D(r),la(i,()=>R(t).name,e=>R(t).name=e),la(a,()=>R(t).value,e=>R(t).value=e),V(e,r)}),D(c);var l=I(c,2),u=P(l);J(P(u),{get icon(){return il},class:`form-action-icon`}),Ve(2),D(u),D(l),Ve(2),D(s);var d=I(s,2),f=P(d);TN(P(f),{get enabled(){return $.form.enabled},label:`MCP server`,onclick:()=>$.form.enabled=!$.form.enabled}),D(f),D(d);var p=I(d,2),m=I(P(p),2),h=P(m),g=I(P(h),2);ea(g),D(h);var _=I(h,2),v=I(P(_),2);ea(v),D(_);var y=I(_,2),b=I(P(y),2);ea(b),D(y);var x=I(y,2),S=I(P(x),2);ut(S),K(S,`placeholder`,`/ -/team/alpha`),D(x);var C=I(x,2),w=I(P(C),2);ea(w),D(C),D(m),D(p),L(()=>p.open=$.advancedOpen),z(`click`,u,()=>$.addHeader()),zr(`toggle`,p,e=>$.advancedOpen=e.currentTarget.open),la(g,()=>$.form.description,e=>$.form.description=e),la(v,()=>$.form.allowed_tools,e=>$.form.allowed_tools=e),la(b,()=>$.form.disallowed_tools,e=>$.form.disallowed_tools=e),la(S,()=>$.form.user_paths,e=>$.form.user_paths=e),la(w,()=>$.form.tool_timeout_seconds,e=>$.form.tool_timeout_seconds=e),V(e,n)},$$slots:{headerHint:!0,default:!0}})}k()}Br([`input`,`click`]);var vH=B(`Config`),yH=B(`
      `),bH=B(`
      `),xH=B(`
      NameTransportEndpointStatusToolsEnabledActions
      `);function SH(e,t){O(t,!0);function n(e){return vw(e,e=>lu.formatTimestamp(e))}var r=xH(),i=P(r),a=I(P(i));W(a,21,()=>$.filtered,e=>hw(e),(e,t)=>{var r=bH(),i=P(r),a=P(i),o=P(a,!0);D(a);var s=I(a,2),c=e=>{V(e,vH())};U(s,e=>{R(t).managed&&e(c)});var l=I(s,2),u=P(l,!0);D(l),D(i);var d=I(i),f=P(d),p=P(f,!0);D(f),D(d);var m=I(d),h=P(m,!0);D(m);var g=I(m),_=P(g),v=P(_,!0);D(_);var y=I(_,2),b=e=>{var n=yH(),r=P(n,!0);D(n),L(()=>H(r,R(t).last_error)),V(e,n)},x=A(()=>gw(R(t))===`degraded`&&R(t).last_error);U(y,e=>{R(x)&&e(b)}),D(g);var S=I(g),C=P(S),w=P(C,!0);D(C);var T=I(C,2),E=P(T,!0);D(T),D(S);var ee=I(S),te=P(ee),ne=P(te,!0);D(te),D(ee);var re=I(ee),ie=P(re),ae=P(ie),oe=e=>{{let n=A(()=>`Edit MCP server `+R(t).name);yO(e,{get label(){return R(n)},class:`table-icon-btn`,onclick:()=>$.openEdit(R(t)),children:(e,t)=>{J(e,{get icon(){return nl},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(ae,e=>{R(t).managed||e(oe)});var se=I(ae,2);{let e=A(()=>`Inspect catalog of MCP server `+R(t).name);yO(se,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>$.openCatalog(R(t)),children:(e,t)=>{J(e,{get icon(){return Yc},class:`form-action-icon`})},$$slots:{default:!0}})}var ce=I(se,2);{let e=A(()=>($.reconnectingName===hw(R(t))?`Reconnecting MCP server `:`Reconnect MCP server `)+R(t).name),n=A(()=>$.reconnectingName===hw(R(t)));yO(ce,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>$.reconnectServer(R(t)),get disabled(){return R(n)},children:(e,t)=>{J(e,{get icon(){return ol},class:`form-action-icon`})},$$slots:{default:!0}})}var le=I(ce,2),ue=e=>{{let n=A(()=>($.deletingName===hw(R(t))?`Deleting MCP server `:`Delete MCP server `)+R(t).name),r=A(()=>$.deletingName===hw(R(t)));yO(e,{get label(){return R(n)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>$.deleteServer(R(t)),get disabled(){return R(r)},children:(e,t)=>{J(e,{get icon(){return Ol},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(le,e=>{R(t).managed||e(ue)}),D(ie),D(re),D(r),L((e,n,r,i,a,s,c,l)=>{H(o,R(t).name),H(u,e),H(p,R(t).transport||`http`),K(m,`title`,n),H(h,r),G(_,1,`audit-status-badge ${i??``}`,`svelte-ah8nrt`),K(_,`title`,a),H(v,s),H(w,c),H(E,l),G(te,1,Ni([`auth-key-status-badge`,R(t).enabled?`auth-key-status-active`:`auth-key-status-inactive`])),H(ne,R(t).enabled?`Enabled`:`Disabled`)},[()=>hw(R(t)),()=>yw(R(t)),()=>yw(R(t)),()=>_w(R(t)),()=>n(R(t)),()=>gw(R(t)),()=>cd(R(t).tool_count||0),()=>bw(R(t))]),V(e,r)}),D(a),D(i),D(r),V(e,r),k()}var CH=B(`

      MCP Servers

      `),wH=B(``),TH=B(`
      MCP server management is unavailable.
      `),EH=B(``),DH=B(`
      `),OH=B(`

      No MCP servers yet. Add one here, or declare servers in config.yaml under mcp.servers.

      `),kH=B(`

      No MCP servers match your filter.

      `),AH=B(`
      `);function jH(e,t){O(t,!0),On(()=>{Y.refreshTick,Bl.page===`mcp-servers`&&$.fetchServers()});var n=AH(),r=P(n),i=P(r);YT(P(i),{copyId:`mcp-servers-help-copy`,label:`MCP servers help`,text:`Upstream Model Context Protocol servers whose tools, prompts, and resources the gateway exposes to clients. Servers added here connect over HTTP or SSE; stdio servers and rows marked Config are declared in config.yaml under mcp.servers and are read-only in the dashboard. Saved header values are masked in API and dashboard responses.`,title:e=>{V(e,CH())},$$slots:{title:!0}}),D(i);var a=I(i,2),o=P(a),s=e=>{var t=wH();J(P(t),{get icon(){return il},class:`form-action-icon`}),Ve(2),D(t),L(()=>t.disabled=$.formSubmitting),z(`click`,t,()=>$.openCreate()),V(e,t)};U(o,e=>{$.available&&!Y.authError&&e(s)}),D(a),D(r);var c=I(r,2),l=e=>{V(e,TH())};U(c,e=>{!$.available&&!Y.authError&&e(l)});var u=I(c,2),d=e=>{var t=EH(),n=P(t,!0);D(t),L(()=>H(n,$.error)),V(e,t)};U(u,e=>{$.error&&!Y.authError&&!$.formOpen&&e(d)});var f=I(u,2),p=e=>{_O(e,{label:`Loading MCP servers...`})};U(f,e=>{$.loading&&!Y.authError&&e(p)});var m=I(f,2),h=e=>{var t=DH(),n=P(t);SD(P(n),{id:`mcp-server-filter`,placeholder:`Filter by name, slug, URL, transport, or status...`,label:`Filter MCP servers by name, slug, URL, transport, or status`,get value(){return $.filter},set value(e){$.filter=e}}),D(n),D(t),V(e,t)};U(m,e=>{($.servers.length>0||$.filter)&&$.available&&!Y.authError&&e(h)});var g=I(m,2);_H(g,{});var _=I(g,2);sH(_,{});var v=I(_,2),y=e=>{SH(e,{})};U(v,e=>{$.filtered.length>0&&$.available&&!Y.authError&&e(y)});var b=I(v,2),x=e=>{V(e,OH())};U(b,e=>{$.servers.length===0&&!$.filter&&!$.loading&&!Y.authError&&!$.error&&$.available&&e(x)});var S=I(b,2),C=e=>{V(e,kH())};U(S,e=>{$.servers.length>0&&$.filtered.length===0&&$.filter&&!$.loading&&!Y.authError&&$.available&&e(C)}),D(n),V(e,n),k()}Br([`click`]);var MH=`api_keys`,NH=`session_sticky_keys`,PH=`base_url`,FH=`service_account_json`,IH=`models`,LH={[MH]:{label:`API Keys`,control:`keys`,hint:`Identified sessions stay on one key by default, improving provider prompt-cache hits. Saved values are shown as ***********; leave the asterisks unchanged to keep the stored key.`},[NH]:{label:`Session-sticky API keys`,control:`checkbox`,hint:`Keep each identified conversation on one API key to preserve provider prompt-cache affinity. Turn off to rotate keys round-robin on every request.`},[PH]:{label:`Base URL`,control:`text`},api_version:{label:`API Version`,control:`text`,placeholder:`e.g. 2024-10-01-preview`,hint:`Leave empty for the provider default. Realtime endpoints may need a newer version.`},backend:{label:`Backend`,control:`select`,hint:`Which Google surface to call. Vertex authenticates with Google credentials instead of an API key.`},auth_type:{label:`Auth Type`,control:`select`,hint:`How to obtain Google credentials. Leave on the default to use Application Default Credentials.`},api_mode:{label:`API Mode`,control:`select`,hint:`Which request shape to send upstream.`},vertex_project:{label:`Vertex Project`,control:`text`,placeholder:`my-gcp-project`},vertex_location:{label:`Vertex Location`,control:`text`,placeholder:`us-central1`},service_account_file:{label:`Service Account File`,control:`text`,placeholder:`/path/to/service-account.json`,hint:`Path readable by the gateway process.`},[FH]:{label:`Service Account JSON`,control:`textarea`,placeholder:`Paste service account JSON`,hint:`Saved values are shown as ***********; leave the asterisks unchanged to keep the stored value, or clear it to remove.`},service_account_json_base64:{label:`Service Account JSON (base64)`,control:`text`,hint:`Saved values are shown as ***********; leave the asterisks unchanged to keep the stored value.`},gcp_scope:{label:`GCP Scope`,control:`text`,placeholder:`https://www.googleapis.com/auth/cloud-platform`},[IH]:{label:`Models (comma-separated)`,control:`text`,placeholder:`gpt-4o, gpt-4o-mini`,hint:`Leave empty to auto-discover models from the provider's /models endpoint where supported.`}};function RH(e){return LH[e]||{label:String(e||``).split(`_`).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),control:`text`}}function zH(){return{name:``,type:``,api_keys:[],session_sticky_keys:!0,base_url:``,api_version:``,backend:``,auth_type:``,api_mode:``,vertex_project:``,vertex_location:``,service_account_file:``,service_account_json:``,service_account_json_base64:``,gcp_scope:``,models:``,enabled:!0}}function BH(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.type,e.base_url].some(e=>String(e||``).toLowerCase().includes(r)))}function VH(e,t){let n=(Array.isArray(e)?e:[]).map(e=>String(e&&e.type||``).trim()).filter(Boolean),r=String(t||``).trim();return r&&!n.includes(r)&&n.push(r),n}function HH(e,t){let n=String(t||``).trim();return n&&(Array.isArray(e)?e:[]).find(e=>String(e&&e.type||``).trim()===n)||null}function UH(e,t){let n=e&&Array.isArray(e.fields)&&e.fields.length>0?e.fields:Object.keys(LH).map(e=>({name:e,advanced:e!==MH})),r=t||e&&e.default_base_url||``,i=[],a=[];for(let e of n){let t=String(e&&e.name||``).trim();if(!t)continue;let n={...RH(t),name:t,required:!!(e&&e.required),options:Array.isArray(e&&e.options)?e.options:[]};t===`base_url`&&r&&(n.placeholder=r,n.hint=`Defaults to `+r),n.options.length>0&&(n.control=`select`),(e&&e.advanced?a:i).push(n)}return{primary:i,advanced:a}}var WH=new Set([`name`,`type`,`enabled`]);function GH(e,t){let n=new Set([...t.primary||[],...t.advanced||[]].map(e=>e.name)),r=zH(),i={...e};for(let e of Object.keys(r))!WH.has(e)&&!n.has(e)&&(i[e]=r[e]);return i}function KH(e){let t=Array.isArray(e&&e.api_keys)?e.api_keys.length:0;return t>0?t+` key`+(t===1?``:`s`):String(e&&e.service_account_json||``).trim()||String(e&&e.service_account_json_base64||``).trim()||String(e&&e.service_account_file||``).trim()?`service account`:String(e&&e.vertex_project||``).trim()?`ADC`:`keyless`}function qH(e){let t=Array.isArray(e&&e.models)?e.models:[];return t.length===0?`auto-discovered`:t.length+` model`+(t.length===1?``:`s`)}function JH(e){return(Array.isArray(e)?e:[]).map(e=>({value:String(e||``)}))}function YH(e){return(Array.isArray(e)?e:[]).map(e=>String(e&&e.value||``))}function XH(e,t){let n=String(t||``).trim();if(!n)return``;let r=new Set((Array.isArray(e)?e:[]).map(e=>String(e&&e.name||``).trim()));if(!r.has(n))return n;let i=1;for(;r.has(n+`-`+i);)i+=1;return n+`-`+i}function ZH(e){return{name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),api_keys:JH(e&&e.api_keys),session_sticky_keys:!e||e.session_sticky_keys!==!1,base_url:String(e&&e.base_url||``),api_version:String(e&&e.api_version||``),backend:String(e&&e.backend||``),auth_type:String(e&&e.auth_type||``),api_mode:String(e&&e.api_mode||``),vertex_project:String(e&&e.vertex_project||``),vertex_location:String(e&&e.vertex_location||``),service_account_file:String(e&&e.service_account_file||``),service_account_json:String(e&&e.service_account_json||``),service_account_json_base64:String(e&&e.service_account_json_base64||``),gcp_scope:String(e&&e.gcp_scope||``),models:(Array.isArray(e&&e.models)?e.models:[]).join(`, `),enabled:!e||e.enabled!==!1}}function QH(e){let t=String(e||``).trim();return t.length>=3&&/^\*+$/.test(t)}function $H(e,t,n,r){let i={},a=String(e&&e.name||``).trim();String(e&&e.type||``).trim()||(i.type=`Select a provider type.`),a?a.includes(`/`)?i.name=`Name cannot contain '/' — it separates the provider from the model.`:t===`create`&&(Array.isArray(n)?n:[]).some(e=>String(e&&e.name||``).trim()===a)&&(i.name=`Provider "`+a+`" already exists.`):i.name=`Name is required.`;let{primary:o,advanced:s}=UH(r);for(let t of[...o,...s]){let n=eU(e,t);n&&(i[t.name]=n)}return i}function eU(e,t){if(t.name===`api_keys`){let n=YH(e&&e.api_keys);return t.required&&!n.some(e=>e.trim())?`At least one API key is required for this provider type.`:n.some(e=>!e.trim())?`Remove the empty row instead of leaving a key blank.`:``}let n=String(e&&e[t.name]||``).trim();if(t.required&&!n)return t.label+` is required for this provider type.`;if(!n)return``;if(t.name===`base_url`&&!n.includes(`://`)&&/[./]/.test(n))return`Include the scheme, e.g. https://`+n;if(t.name===`service_account_json`&&!QH(n))try{JSON.parse(n)}catch{return`Paste the service account JSON file's contents — this is not valid JSON.`}return``}function tU(e,t){let n={name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),enabled:!!(e&&e.enabled)},{primary:r,advanced:i}=UH(t),a=!!(t&&Array.isArray(t.fields)&&t.fields.length>0),o=new Set;for(let t of[...r,...i])!a&&t.name===`session_sticky_keys`||(o.add(t.name),n[t.name]=nU(e,t.name));for(let t of Object.keys(LH)){if(o.has(t)||t===`session_sticky_keys`)continue;let r=nU(e,t);(Array.isArray(r)?r.length>0:String(r).trim()!==``)&&(n[t]=r)}return n}function nU(e,t){switch(t){case MH:return YH(e&&e.api_keys);case IH:return od(e&&e.models);case NH:return!!(e&&e.session_sticky_keys);case FH:return e&&e.service_account_json||``;default:return String(e&&e[t]||``).trim()}}var rU=new class{#e=j(N([]));get rows(){return R(this.#e)}set rows(e){M(this.#e,e,!0)}#t=j(!0);get available(){return R(this.#t)}set available(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}#r=j(``);get error(){return R(this.#r)}set error(e){M(this.#r,e,!0)}#i=j(``);get filter(){return R(this.#i)}set filter(e){M(this.#i,e,!0)}#a=j(!1);get formOpen(){return R(this.#a)}set formOpen(e){M(this.#a,e,!0)}#o=j(!1);get formSubmitting(){return R(this.#o)}set formSubmitting(e){M(this.#o,e,!0)}#s=j(`create`);get formMode(){return R(this.#s)}set formMode(e){M(this.#s,e,!0)}#c=j(!1);get advancedOpen(){return R(this.#c)}set advancedOpen(e){M(this.#c,e,!0)}#l=j(N(zH()));get form(){return R(this.#l)}set form(e){M(this.#l,e,!0)}#u=j(N({}));get fieldErrors(){return R(this.#u)}set fieldErrors(e){M(this.#u,e,!0)}#d=j(``);get focusField(){return R(this.#d)}set focusField(e){M(this.#d,e,!0)}#f=j(``);get deletingName(){return R(this.#f)}set deletingName(e){M(this.#f,e,!0)}#p=j(!1);get deleteSubmitting(){return R(this.#p)}set deleteSubmitting(e){M(this.#p,e,!0)}#m=j(N([]));get types(){return R(this.#m)}set types(e){M(this.#m,e,!0)}#h=j(!1);get typesLoaded(){return R(this.#h)}set typesLoaded(e){M(this.#h,e,!0)}#g=null;get filteredRows(){return BH(this.rows,this.filter)}get schema(){return HH(this.types,this.form.type)}get formFields(){if(!String(this.form.type||``).trim())return{primary:[],advanced:[]};let e=this.schema;return UH(e,e&&e.default_base_url)}async fetchTypes(){let e=await bO(`/admin/provider-credentials/types`,{label:`provider credential types`});e.status===`ok`&&(this.types=e.items,this.typesLoaded=!0)}async fetchPage(){this.#g&&this.#g.abort();let e=new AbortController;this.#g=e,this.loading=!0,this.error=``;try{let t=await bO(`/admin/provider-credentials`,{label:`provider credentials`,errorFallback:`Failed to load provider credentials.`,unavailableStatuses:[503,404],options:{signal:e.signal}});if(t.status===`stale`||e.signal.aborted)return;if(t.status===`unavailable`){this.available=!1,this.rows=[];return}if(t.status===`error`){t.result&&(this.available=!0),this.rows=[],this.error=t.error;return}this.available=!0,this.rows=t.items,this.typesLoaded||await this.fetchTypes()}finally{this.#g===e&&(this.#g=null,this.loading=!1)}}#_(e,t){this.formMode=e,this.form=t,this.advancedOpen=!1,this.error=``,this.fieldErrors={},this.focusField=``}openCreate(){this.#_(`create`,zH()),this.formOpen=!0,this.typesLoaded||this.fetchTypes()}openEdit(e){!e||e.managed||(this.#_(`edit`,ZH(e)),this.formOpen=!0,this.typesLoaded||this.fetchTypes())}closeForm(){this.formOpen=!1,this.#_(`create`,zH())}selectType(){this.fieldErrors={};let e=this.formFields;this.formMode===`create`&&(this.form=GH(this.form,e));let t=e.primary.find(e=>e.name===`api_keys`);t&&t.required&&this.form.api_keys.length===0&&(this.form.api_keys=[{value:``}])}clearFieldError(e){if(this.fieldErrors[e]===void 0)return;let{[e]:t,...n}=this.fieldErrors;this.fieldErrors=n}addApiKeyRow(){this.form.api_keys.push({value:``}),this.clearFieldError(`api_keys`)}removeApiKeyRow(e){this.form.api_keys.splice(e,1),this.clearFieldError(`api_keys`)}#v(e){let t=uu(e,`Failed to save provider credential.`),n=String(e&&e.error&&typeof e.error==`object`&&e.error.param||``).trim();if(n&&this.#y(n)){this.fieldErrors={...this.fieldErrors,[n]:t},this.error=``,this.#b();return}this.error=t}#y(e){if(e===`name`||e===`type`)return!0;let{primary:t,advanced:n}=this.formFields;return[...t,...n].some(t=>t.name===e)}#b(){let e=Object.keys(this.fieldErrors);if(e.length===0)return;let{primary:t,advanced:n}=this.formFields;n.some(t=>e.includes(t.name))&&(this.advancedOpen=!0);let r=[`type`,`name`,...t.map(e=>e.name),...n.map(e=>e.name)];this.focusField=r.find(t=>e.includes(t))||e[0]}#x(){Id.fetchModels(),Id.fetchCategories()}async submitForm(){let e=this.schema,t=$H(this.form,this.formMode,this.rows,e);if(Object.keys(t).length>0){this.fieldErrors=t,this.error=``,this.#b();return}let n=tU(this.form,e);this.error=``,this.fieldErrors={},this.formSubmitting=!0;try{let e=await xO(`/admin/provider-credentials`,`PUT`,n,{label:`save provider credential`,errorFallback:`Failed to save provider credential.`,unavailableMessage:`Provider credential management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.error=e.error;return}if(e.status===`error`){e.result&&e.result.status!==401?this.#v(e.result.data):this.error=e.error;return}ed.success(`Provider "`+n.name+`" saved.`),this.closeForm(),this.#x(),this.fetchPage()}finally{this.formSubmitting=!1}}async performDelete(e){this.deleteSubmitting=!0,this.deletingName=e;try{let t=await xO(`/admin/provider-credentials/`+encodeURIComponent(e),`DELETE`,void 0,{label:`delete provider credential`,errorFallback:`Failed to delete provider credential.`,unavailableMessage:`Provider credential management is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,zu.error=t.error;return}if(t.status===`error`){zu.error=t.error;return}ed.success(`Provider "`+e+`" deleted.`),zu.close(),this.formOpen&&this.form.name===e&&this.closeForm(),this.#x(),this.fetchPage()}finally{this.deleteSubmitting=!1,this.deletingName=``}}requestDelete(e){let t=String(e||``).trim();if(!t||this.deleteSubmitting)return;let n=(this.rows||[]).find(e=>String(e&&e.name||``).trim()===t);n&&n.managed||zu.open({title:`Delete Provider`,titleId:`providerCredentialDeleteDialogTitle`,inputId:`provider-credential-delete-confirmation`,message:`Type "`+t+`" to permanently delete this provider credential. Requests routed to it will fail until it is reconfigured.`,requiredText:t,confirmLabel:`Delete Provider`,icon:xl,dialogClass:`budget-reset-dialog`,onConfirm:()=>this.performDelete(t)})}},iU=B(`Config`),aU=B(` `,1),oU=B(`
      `),sU=B(`
      NameTypeBase URLAuthModelsEnabledUpdatedActions
      `);function cU(e,t){O(t,!0);var n=sU(),r=P(n),i=I(P(r));W(i,21,()=>rU.filteredRows,e=>e.name,(e,t)=>{var n=oU(),r=P(n),i=P(r),a=P(i,!0);D(i);var o=I(i,2),s=e=>{V(e,iU())};U(o,e=>{R(t).managed&&e(s)}),D(r);var c=I(r),l=P(c),u=P(l,!0);D(l),D(c);var d=I(c),f=P(d,!0);D(d);var p=I(d),m=P(p,!0);D(p);var h=I(p),g=P(h,!0);D(h);var _=I(h),v=P(_);let y;var b=P(v,!0);D(v),D(_);var x=I(_),S=P(x,!0);D(x);var C=I(x),w=P(C),T=P(w),E=e=>{var n=aU(),r=F(n);{let e=A(()=>`Edit provider `+R(t).name);yO(r,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>rU.openEdit(R(t)),children:(e,t)=>{J(e,{get icon(){return nl},class:`table-icon-svg`})},$$slots:{default:!0}})}var i=I(r,2);{let e=A(()=>(rU.deletingName===R(t).name?`Deleting provider `:`Delete provider `)+R(t).name),n=A(()=>rU.deletingName===R(t).name);yO(i,{get label(){return R(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>rU.requestDelete(R(t).name),get disabled(){return R(n)},children:(e,t)=>{J(e,{get icon(){return Ol},class:`table-icon-svg`})},$$slots:{default:!0}})}V(e,n)};U(T,e=>{R(t).managed||e(E)}),D(w),D(C),D(n),L((e,n,r)=>{H(a,R(t).name),H(u,R(t).type),K(d,`title`,R(t).base_url||``),H(f,R(t).base_url||`—`),H(m,e),H(g,n),y=G(v,1,`auth-key-status-badge`,null,y,{"auth-key-status-active":R(t).enabled,"auth-key-status-inactive":!R(t).enabled}),H(b,R(t).enabled?`Enabled`:`Disabled`),H(S,r)},[()=>KH(R(t)),()=>qH(R(t)),()=>lu.formatTimestamp(R(t).updated_at)]),V(e,n)}),D(i),D(r),D(n),V(e,n),k()}var lU=B(``),uU=B(`
      `),dU=B(`
      `,1),fU=B(``),pU=B(``),mU=B(``),hU=B(``),gU=B(``),_U=B(` `),vU=B(` `),yU=B(`
      `);function bU(e,t){O(t,!0);let n=A(()=>`provider-credential-`+t.field.name),r=A(()=>rU.fieldErrors[t.field.name]||``),i=A(()=>R(r)?R(n)+`-error`:t.field.hint?R(n)+`-hint`:void 0),a=A(()=>{let e=String(rU.form[t.field.name]||``).trim();return!e||t.field.options.includes(e)?t.field.options:[...t.field.options,e]});function o(){rU.clearFieldError(t.field.name)}var s=yU(),c=P(s),l=P(c),u=I(l),d=e=>{V(e,lU())};U(u,e=>{t.field.required&&e(d)}),D(c);var f=I(c,2),p=e=>{var t=dU(),a=F(t);W(a,21,()=>rU.form.api_keys,ii,(e,t,a)=>{var s=uU(),c=P(s);ea(c),K(c,`aria-label`,`API key `+(a+1)),yO(I(c,2),{label:`Remove API key `+(a+1),class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>rU.removeApiKeyRow(a),children:(e,t)=>{J(e,{get icon(){return xl},class:`table-icon-svg`})},$$slots:{default:!0}}),D(s),L(()=>{K(c,`id`,a===0?R(n):R(n)+`-`+a),K(c,`aria-invalid`,R(r)?`true`:void 0),K(c,`aria-describedby`,a===0?R(i):void 0)}),z(`input`,c,o),la(c,()=>R(t).value,e=>R(t).value=e),V(e,s)}),D(a);var s=I(a,2),c=P(s);J(P(c),{get icon(){return il},class:`form-action-icon`}),Ve(2),D(c),D(s),L(()=>K(c,`id`,rU.form.api_keys.length===0?R(n):void 0)),z(`click`,c,()=>rU.addApiKeyRow()),V(e,t)},m=e=>{var s=pU(),c=P(s);c.value=c.__value=``,W(I(c),16,()=>R(a),e=>e,(e,t)=>{var n=fU(),r=P(n,!0);D(n);var i={};L(()=>{H(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(s),L(()=>{K(s,`id`,R(n)),K(s,`aria-invalid`,R(r)?`true`:void 0),K(s,`aria-describedby`,R(i))}),z(`change`,s,o),Ui(s,()=>rU.form[t.field.name],e=>rU.form[t.field.name]=e),V(e,s)},h=e=>{var a=mU();ea(a),L(()=>{K(a,`id`,R(n)),K(a,`aria-invalid`,R(r)?`true`:void 0),K(a,`aria-describedby`,R(i))}),z(`change`,a,o),ua(a,()=>rU.form[t.field.name],e=>rU.form[t.field.name]=e),V(e,a)},g=e=>{var a=hU();ut(a),L(()=>{K(a,`id`,R(n)),K(a,`placeholder`,t.field.placeholder||``),K(a,`aria-invalid`,R(r)?`true`:void 0),K(a,`aria-describedby`,R(i))}),z(`input`,a,o),la(a,()=>rU.form[t.field.name],e=>rU.form[t.field.name]=e),V(e,a)},_=e=>{var a=gU();ea(a),L(()=>{K(a,`id`,R(n)),K(a,`placeholder`,t.field.placeholder||``),K(a,`aria-invalid`,R(r)?`true`:void 0),K(a,`aria-describedby`,R(i))}),z(`input`,a,o),la(a,()=>rU.form[t.field.name],e=>rU.form[t.field.name]=e),V(e,a)};U(f,e=>{t.field.control===`keys`?e(p):t.field.control===`select`?e(m,1):t.field.control===`checkbox`?e(h,2):t.field.control===`textarea`?e(g,3):e(_,-1)});var v=I(f,2),y=e=>{var t=_U(),i=P(t,!0);D(t),L(()=>{K(t,`id`,R(n)+`-error`),H(i,R(r))}),V(e,t)},b=e=>{var r=vU(),i=P(r,!0);D(r),L(()=>{K(r,`id`,R(n)+`-hint`),H(i,t.field.hint)}),V(e,r)};U(v,e=>{R(r)?e(y):t.field.hint&&e(b,1)}),D(s),L(()=>{K(c,`for`,R(n)),H(l,`${t.field.label??``} `)}),V(e,s),k()}Br([`input`,`click`,`change`]);var xU=B(`

      The name is the stable identity used for routing and cannot change once created.

      `),SU=B(``),CU=B(` `),wU=B(`Determines which fields the gateway uses to build requests.`),TU=B(` `),EU=B(`Suggested from the selected type; used to route requests to this provider instance and editable before saving.`),DU=B(`Immutable once created.`),OU=B(`

      Pick a type to configure its credentials — each provider type asks for different settings.

      `),kU=B(`
      Advanced settings
      `),AU=B(`
      `,1);function jU(e,t){O(t,!0);let n=A(()=>VH(rU.types,rU.form.type)),r=A(()=>rU.formFields),i=A(()=>rU.fieldErrors.name||``),a=A(()=>rU.fieldErrors.type||``);function o(){rU.selectType(),rU.formMode===`create`&&(rU.form.name=XH(rU.rows,rU.form.type))}On(()=>{let e=rU.focusField;if(!e)return;rU.focusField=``;let t=document.getElementById(`provider-credential-`+e);t&&(t.scrollIntoView({block:`center`}),t.focus({preventScroll:!0}))});{let t=e=>{V(e,xU())},s=A(()=>rU.formMode===`edit`?`Edit Provider`:`Add Provider`);Ck(e,{get open(){return rU.formOpen},get title(){return R(s)},ariaLabel:`Provider credential editor`,get error(){return rU.error},get submitting(){return rU.formSubmitting},novalidate:!0,onclose:()=>rU.closeForm(),onsubmit:()=>rU.submitForm(),headerHint:t,children:(e,t)=>{var s=AU(),c=F(s),l=I(P(c),2),u=P(l);u.value=u.__value=``,W(I(u),16,()=>R(n),e=>e,(e,t)=>{var n=SU(),r=P(n,!0);D(n);var i={};L(()=>{H(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(l);var d=I(l,2),f=e=>{var t=CU(),n=P(t,!0);D(t),L(()=>H(n,R(a))),V(e,t)},p=e=>{V(e,wU())};U(d,e=>{R(a)?e(f):e(p,-1)}),D(c);var m=I(c,2),h=I(P(m),2);ea(h);var g=I(h,2),_=e=>{var t=TU(),n=P(t,!0);D(t),L(()=>H(n,R(i))),V(e,t)},v=e=>{V(e,EU())},y=e=>{V(e,DU())};U(g,e=>{R(i)?e(_):rU.formMode===`create`?e(v,1):e(y,-1)}),D(m);var b=I(m,2),x=e=>{V(e,OU())};U(b,e=>{rU.form.type||e(x)});var S=I(b,2);W(S,17,()=>R(r).primary,e=>e.name,(e,t)=>{bU(e,{get field(){return R(t)}})});var C=I(S,2),w=P(C);TN(P(w),{get enabled(){return rU.form.enabled},label:`provider`,onclick:()=>rU.form.enabled=!rU.form.enabled}),D(w),D(C);var T=I(C,2),E=e=>{var t=kU(),n=P(t),i=P(n),a=I(P(i),2),o=P(a,!0);D(a),D(i),D(n);var s=I(n,2);W(s,21,()=>R(r).advanced,e=>e.name,(e,t)=>{bU(e,{get field(){return R(t)}})}),D(s),D(t),L(e=>{t.open=rU.advancedOpen,H(o,e)},[()=>R(r).advanced.map(e=>e.label).join(`, `)]),zr(`toggle`,t,e=>rU.advancedOpen=e.currentTarget.open),V(e,t)};U(T,e=>{R(r).advanced.length>0&&e(E)}),L(()=>{l.disabled=rU.formMode===`edit`,K(l,`aria-invalid`,R(a)?`true`:void 0),K(l,`aria-describedby`,R(a)?`provider-credential-type-error`:`provider-credential-type-hint`),h.disabled=rU.formMode===`edit`,K(h,`aria-invalid`,R(i)?`true`:void 0),K(h,`aria-describedby`,R(i)?`provider-credential-name-error`:`provider-credential-name-hint`)}),z(`change`,l,o),Ui(l,()=>rU.form.type,e=>rU.form.type=e),z(`input`,h,()=>rU.clearFieldError(`name`)),la(h,()=>rU.form.name,e=>rU.form.name=e),V(e,s)},$$slots:{headerHint:!0,default:!0}})}k()}Br([`change`,`input`]);var MU=B(`

      Providers

      `),NU=B(``),PU=B(`
      Provider credential management is unavailable.
      `),FU=B(``),IU=B(`
      `),LU=B(`

      No dashboard-managed providers yet. Add one here, or declare providers in config.yaml / environment variables.

      `),RU=B(`

      No providers match your filter.

      `),zU=B(`
      `);function BU(e,t){O(t,!0),On(()=>{Y.refreshTick,Bl.page===`providers-config`&&rU.fetchPage()});var n=zU(),r=P(n),i=P(r);YT(P(i),{copyId:`providers-config-help-copy`,label:`model providers help`,title:e=>{V(e,MU())},help:e=>{Ve(),V(e,Yr(`Configure LLM provider credentials here instead of setting API keys as + that type.

      `);function PH(e,t){O(t,!0);var n=NH(),r=P(n),i=I(P(r),2);J(P(i),{get icon(){return lu},class:`form-action-icon`}),Ve(2),D(i),D(r);var a=I(r,2),o=e=>{var t=DH(),n=P(t);DO(P(n),{id:`guardrail-filter`,placeholder:`Filter by name, type, user path, summary...`,label:`Guardrail filter`,get value(){return EH.filter},set value(e){EH.filter=e}}),D(n),D(t),V(e,t)};U(a,e=>{EH.available&&e(o)});var s=I(a,2),c=e=>{var t=OH();kE(P(t),{size:16,label:`Loading guardrails`}),Ve(),D(t),V(e,t)};U(s,e=>{EH.loading&&EH.filtered.length===0&&e(c)});var l=I(s,2),u=e=>{var t=jH(),n=P(t),r=I(P(n));W(r,21,()=>EH.filtered,e=>e.name,(e,t)=>{var n=AH(),r=P(n),i=P(r,!0);D(r);var a=I(r),o=P(a),s=P(o,!0);D(o),D(a);var c=I(a),l=P(c,!0);D(c);var u=I(c),d=P(u),f=P(d,!0);D(d);var p=I(d,2),m=e=>{var n=kH(),r=P(n,!0);D(n),L(()=>H(r,R(t).description)),V(e,n)};U(p,e=>{R(t).description&&e(m)}),D(u);var h=I(u),g=P(h),_=P(g);{let e=A(()=>`Edit guardrail `+R(t).name);wk(_,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>EH.openEdit(R(t)),children:(e,t)=>{J(e,{get icon(){return su},class:`table-icon-svg`})},$$slots:{default:!0}})}var v=I(_,2);{let e=A(()=>(EH.deletingName===R(t).name?`Deleting guardrail `:`Delete guardrail `)+R(t).name),n=A(()=>EH.deletingName===R(t).name);wk(v,{get label(){return R(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>EH.deleteGuardrail(R(t)),get disabled(){return R(n)},children:(e,t)=>{J(e,{get icon(){return Nu},class:`table-icon-svg`})},$$slots:{default:!0}})}D(g),D(h),D(n),L(e=>{H(i,R(t).name),H(s,e),H(l,R(t).user_path||`—`),H(f,R(t).summary||R(t).description||`No summary yet.`)},[()=>EH.typeLabel(R(t).type)]),V(e,n)}),D(r),D(n),D(t),V(e,t)};U(l,e=>{EH.filtered.length>0&&e(u)});var d=I(l,2),f=e=>{V(e,MH())};U(d,e=>{EH.filtered.length===0&&!EH.loading&&EH.available&&!EH.error&&!Y.authError&&e(f)}),D(n),L(()=>i.disabled=EH.typesLoading||EH.formSubmitting||!EH.available),z(`click`,i,()=>EH.openCreate()),V(e,n),k()}Br([`click`]);var FH=B(`

      Workflows reference these names directly, so renames are + intentionally avoided after creation.

      `),IH=B(``),LH=B(``),RH=B(``),zH=B(``),BH=B(``),VH=B(``),HH=B(``),UH=B(``),WH=B(``),GH=B(`
      `),KH=B(``),qH=B(` `),JH=B(`
      `),YH=B(`
      `);function XH(e,t){O(t,!0);let n=A(()=>EH.formMode===`edit`);{let t=e=>{V(e,FH())},r=A(()=>R(n)?`Edit Guardrail`:`Create Guardrail`);OA(e,{get open(){return EH.formOpen},get title(){return R(r)},ariaLabel:`Guardrail editor`,get error(){return EH.error},get submitting(){return EH.formSubmitting},submitLabel:`Save Guardrail`,dialogClass:`settings-guardrails-editor guardrails-editor-wide`,onclose:()=>EH.closeForm(),onsubmit:()=>EH.submitForm(),headerHint:t,children:(e,t)=>{var r=YH(),i=P(r);AA(i,{id:`guardrail-name`,label:`Name`,children:(e,t)=>{var r=IH();ea(r),L(()=>{r.disabled=R(n),K(r,`data-modal-autofocus`,!R(n)||void 0)}),la(r,()=>EH.form.name,e=>EH.form.name=e),V(e,r)},$$slots:{default:!0}});var a=I(i,2);AA(a,{id:`guardrail-type`,label:`Type`,children:(e,t)=>{var r=RH();W(r,21,()=>EH.types,e=>e.type,(e,t)=>{var n=LH(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).type)&&(n.value=(n.__value=R(t).type)??``)}),V(e,n)}),D(r);var i;Hi(r),L(()=>{r.disabled=R(n),i!==(i=EH.form.type)&&(r.value=(r.__value=EH.form.type)??``,Vi(r,EH.form.type))}),z(`change`,r,e=>EH.changeType(e.currentTarget.value)),V(e,r)},$$slots:{default:!0}});var o=I(a,2);AA(o,{id:`guardrail-description`,label:`Description`,children:(e,t)=>{var r=zH();ea(r),L(()=>K(r,`data-modal-autofocus`,R(n)?!0:void 0)),la(r,()=>EH.form.description,e=>EH.form.description=e),V(e,r)},$$slots:{default:!0}});var s=I(o,2),c=P(s);eD(c,{copyId:`guardrail-user-path-help-copy`,label:`guardrail user path help`,text:`Only used for auxiliary rewrite (llm_based_altering) guardrails; ignored for other guardrail types.`,title:e=>{V(e,BH())},$$slots:{title:!0}});var l=I(c,2);ea(l),D(s),W(I(s,2),17,()=>EH.typeFields(EH.form.type),e=>e.key,(e,t)=>{var n=Xr(),r=F(n),i=e=>{var n=GH(),r=P(n);{let e=e=>{var n=VH(),r=P(n,!0);D(n),L(()=>{K(n,`for`,`guardrail-field-`+R(t).key),H(r,R(t).label)}),V(e,n)},n=A(()=>`guardrail-field-help-`+R(t).key),i=A(()=>R(t).label+` help`),a=A(()=>R(t).help||``);eD(r,{get copyId(){return R(n)},get label(){return R(i)},get text(){return R(a)},title:e,$$slots:{title:!0}})}var i=I(r,2),a=e=>{var n=HH();W(n,21,()=>R(t).options||[],e=>e.value,(e,t)=>{var n=LH(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(n);var r;Hi(n),L(e=>{K(n,`id`,`guardrail-field-`+R(t).key),K(n,`aria-describedby`,R(t).help?`guardrail-field-help-`+R(t).key:void 0),r!==(r=e)&&(n.value=(n.__value=e)??``,Vi(n,e))},[()=>EH.fieldValue(R(t))]),z(`change`,n,e=>EH.setFieldValue(R(t),e.currentTarget.value)),V(e,n)},o=e=>{var n=UH();ut(n),L(e=>{K(n,`id`,`guardrail-field-`+R(t).key),K(n,`placeholder`,R(t).placeholder||``),ta(n,e),K(n,`aria-describedby`,R(t).help?`guardrail-field-help-`+R(t).key:void 0)},[()=>EH.fieldValue(R(t))]),z(`input`,n,e=>EH.setFieldValue(R(t),e.currentTarget.value)),V(e,n)},s=e=>{var n=WH();ea(n),L(e=>{K(n,`id`,`guardrail-field-`+R(t).key),K(n,`type`,R(t).input||`text`),K(n,`placeholder`,R(t).placeholder||``),ta(n,e),K(n,`aria-describedby`,R(t).help?`guardrail-field-help-`+R(t).key:void 0)},[()=>EH.fieldValue(R(t))]),z(`input`,n,e=>EH.setFieldValue(R(t),e.currentTarget.value)),V(e,n)};U(i,e=>{R(t).input===`select`?e(a):R(t).input===`textarea`?e(o,1):e(s,-1)}),D(n),V(e,n)},a=e=>{var n=JH(),r=P(n),i=P(r,!0);D(r);var a=I(r,2);W(a,21,()=>R(t).options||[],e=>R(t).key+`-`+e.value,(e,n)=>{var r=KH(),i=P(r);ea(i);var a=I(i,2),o=P(a,!0);D(a),D(r),L(e=>{na(i,e),H(o,R(n).label)},[()=>EH.arrayFieldSelected(R(t),R(n).value)]),z(`change`,i,e=>EH.toggleArrayFieldValue(R(t),R(n).value,e.currentTarget.checked)),V(e,r)}),D(a);var o=I(a,2),s=e=>{var n=qH(),r=P(n,!0);D(n),L(()=>{K(n,`id`,`guardrail-field-help-`+R(t).key),H(r,R(t).help)}),V(e,n)};U(o,e=>{R(t).help&&e(s)}),D(n),L(()=>{K(n,`aria-describedby`,R(t).help?`guardrail-field-help-`+R(t).key:void 0),H(i,R(t).label)}),V(e,n)};U(r,e=>{R(t).input===`checkboxes`?e(a,-1):e(i)}),V(e,n)}),D(r),la(l,()=>EH.form.user_path,e=>EH.form.user_path=e),V(e,r)},$$slots:{headerHint:!0,default:!0}})}k()}Br([`change`,`input`]);var ZH=B(`

      Guardrails

      `),QH=B(`
      Runtime guardrail execution is currently off because GUARDRAILS_ENABLED is disabled. You can still manage + definitions here.
      `),$H=B(`
      Guardrails feature is unavailable.
      `),eU=B(`
      `),tU=B(`

      Reusable Policy Objects

      Guardrail Library

      Store guardrails in the database, keep them hot in memory, and attach + them to workflows by reference.

      Instances
      Types
      `);function nU(e,t){O(t,!0),On(()=>{Y.refreshTick,Gu.page===`guardrails`&&(Td.ensureLoaded(),EH.fetchPage())});var n=tU(),r=P(n),i=P(r);eD(P(i),{copyId:`guardrails-help-copy`,label:`guardrails help`,text:`Reusable policy objects stored in the database and kept hot in memory for workflow execution.`,title:e=>{V(e,ZH())},$$slots:{title:!0}}),D(i),D(r);var a=I(r,2),o=I(P(a),2),s=P(o),c=I(P(s),2),l=P(c,!0);D(c),D(s);var u=I(s,2),d=I(P(u),2),f=P(d,!0);D(d),D(u),D(o),D(a);var p=I(a,2);Wf(p,{});var m=I(p,2),h=e=>{V(e,QH())},g=A(()=>!Td.guardrailsVisible());U(m,e=>{R(g)&&e(h)});var _=I(m,2),v=e=>{V(e,$H())};U(_,e=>{!Y.authError&&!EH.available&&e(v)});var y=I(_,2),b=e=>{var t=eU(),n=P(t,!0);D(t),L(()=>H(n,EH.error)),V(e,t)};U(y,e=>{!Y.authError&&EH.error&&!EH.formOpen&&e(b)});var x=I(y,2);XH(x,{}),PH(I(x,2),{}),D(n),L((e,t)=>{H(l,e),H(f,t)},[()=>mf(EH.guardrails.length),()=>mf(EH.types.length)]),V(e,n),k()}var $=new class{#e=j(N([]));get servers(){return R(this.#e)}set servers(e){M(this.#e,e,!0)}#t=j(!0);get available(){return R(this.#t)}set available(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}#r=j(``);get error(){return R(this.#r)}set error(e){M(this.#r,e,!0)}#i=j(``);get filter(){return R(this.#i)}set filter(e){M(this.#i,e,!0)}#a=j(!1);get formOpen(){return R(this.#a)}set formOpen(e){M(this.#a,e,!0)}#o=j(!1);get formSubmitting(){return R(this.#o)}set formSubmitting(e){M(this.#o,e,!0)}#s=j(`create`);get formMode(){return R(this.#s)}set formMode(e){M(this.#s,e,!0)}#c=j(!1);get slugEdited(){return R(this.#c)}set slugEdited(e){M(this.#c,e,!0)}#l=j(!1);get advancedOpen(){return R(this.#l)}set advancedOpen(e){M(this.#l,e,!0)}#u=j(N(vT()));get form(){return R(this.#u)}set form(e){M(this.#u,e,!0)}#d=j(``);get deletingName(){return R(this.#d)}set deletingName(e){M(this.#d,e,!0)}#f=j(``);get reconnectingName(){return R(this.#f)}set reconnectingName(e){M(this.#f,e,!0)}#p=j(!1);get catalogOpen(){return R(this.#p)}set catalogOpen(e){M(this.#p,e,!0)}#m=j(!1);get catalogLoading(){return R(this.#m)}set catalogLoading(e){M(this.#m,e,!0)}#h=j(``);get catalogError(){return R(this.#h)}set catalogError(e){M(this.#h,e,!0)}#g=j(N(yT()));get catalog(){return R(this.#g)}set catalog(e){M(this.#g,e,!0)}#_=A(()=>AT(this.servers,this.filter));get filtered(){return R(this.#_)}set filtered(e){M(this.#_,e)}async fetchServers(){if(await Td.ensureLoaded(),!Td.mcpVisible()){this.available=!1,this.servers=[],this.error=``,this.loading=!1;return}this.loading=!0,this.error=``;try{let e=await Tk(`/admin/mcp-servers`,{label:`mcp servers`,errorFallback:`Failed to load MCP servers.`,unavailableStatuses:[503,404]});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.servers=[];return}if(e.status===`error`){e.result&&(this.available=!0),this.servers=[],this.error=e.error;return}this.available=!0,this.servers=e.items}finally{this.loading=!1}}openCreate(){this.formMode=`create`,this.slugEdited=!1,this.advancedOpen=!1,this.error=``,this.form=vT(),this.formOpen=!0}openEdit(e){!e||e.managed||(this.formMode=`edit`,this.slugEdited=!0,this.advancedOpen=!1,this.error=``,this.form=jT(e),this.formOpen=!0)}closeForm(){this.formOpen=!1,this.formMode=`create`,this.slugEdited=!1,this.advancedOpen=!1,this.error=``,this.form=vT()}syncSlugFromName(){this.formMode===`create`&&!this.slugEdited&&(this.form.slug=ET(this.form.name))}markSlugEdited(){this.formMode===`create`&&(this.slugEdited=!0)}addHeader(){this.form.headers.push({name:``,value:``})}removeHeader(e){this.form.headers.splice(e,1)}async submitForm(){let e=MT(this.form,this.formMode,this.servers);if(e.error){this.error=e.error;return}this.error=``,this.formSubmitting=!0;try{let t=await Ek(`/admin/mcp-servers`,`PUT`,e.payload,{label:`save mcp server`,errorFallback:`Failed to save MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error;return}of.success(`MCP server "`+e.payload.name+`" saved.`),this.closeForm(),this.fetchServers()}finally{this.formSubmitting=!1}}async deleteServer(e){let t=String(e&&e.name||``).trim(),n=bT(e);if(!(!n||this.deletingName||e&&e.managed)&&confirm(`Delete MCP server "`+t+`"? Clients lose access to its tools immediately.`)){this.deletingName=n;try{let e=await Ek(`/admin/mcp-servers/`+encodeURIComponent(n),`DELETE`,void 0,{label:`delete mcp server`,errorFallback:`Failed to delete MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,of.error(e.error);return}if(e.status===`error`){of.error(e.error);return}of.success(`MCP server "`+t+`" deleted.`),this.formOpen&&this.form.slug===n&&this.closeForm(),this.fetchServers()}finally{this.deletingName=``}}}async reconnectServer(e){let t=String(e&&e.name||``).trim(),n=bT(e);if(!(!n||this.reconnectingName)){this.reconnectingName=n;try{let e=await Ek(`/admin/mcp-servers/`+encodeURIComponent(n)+`/reconnect`,`POST`,void 0,{label:`reconnect mcp server`,errorFallback:`Failed to reconnect MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,of.error(e.error);return}if(e.status===`error`){of.error(e.error);return}let r=e.result.data,i=xT(r);i===`connected`?of.success(`MCP server "`+t+`" reconnected.`):i===`disabled`?of.success(`MCP server "`+t+`" is disabled; no connection was attempted.`):of.error(`Reconnect attempted, but MCP server "`+t+`" is still `+i+`.`),r&&r.name?this.servers=(this.servers||[]).map(e=>bT(e)===bT(r)?r:e):this.fetchServers()}finally{this.reconnectingName=``}}}async openCatalog(e){let t=String(e&&e.name||``).trim(),n=bT(e);if(n){this.catalogOpen=!0,this.catalogLoading=!0,this.catalogError=``,this.catalog={...yT(),server:n,status:xT(e)};try{let e=await bd(`/admin/mcp-servers/`+encodeURIComponent(n)+`/catalog`,{label:`mcp server catalog`});if(e.stale)return;if(e.status===503){this.available=!1,this.catalogError=`MCP server management is unavailable.`;return}if(e.status===404){this.catalogError=`MCP server "`+t+`" was not found.`;return}if(!e.ok){this.catalogError=e.status===401?`Authentication required.`:hd(e.data,`Failed to load MCP server catalog.`);return}this.catalog=NT(n,e.data)}catch(e){console.error(`Failed to load MCP server catalog:`,e),this.catalogError=`Failed to load MCP server catalog.`}finally{this.catalogLoading=!1}}}closeCatalog(){this.catalogOpen=!1,this.catalogLoading=!1,this.catalogError=``,this.catalog=yT()}},rU=B(``),iU=B(`

      `),aU=B(`
      `),oU=B(`

      `),sU=B(`
    • `),cU=B(`

        `),lU=B(`

        No tools listed — the server may still be connecting or degraded.

        `),uU=B(` `,1),dU=B(``);function fU(e,t){O(t,!0);let n=A(()=>FT($.catalog));Rd(e,{get open(){return $.catalogOpen},variant:`editor`,onclose:()=>$.closeCatalog(),children:(e,t)=>{var r=dU(),i=P(r),a=P(i),o=I(P(a),2),s=P(o),c=P(s,!0);D(s);var l=I(s,2),u=P(l,!0);D(l),D(o),D(a),Pd(I(a,2),{label:`Close MCP server catalog`,onclick:()=>$.closeCatalog()}),D(i);var d=I(i,2),f=e=>{Sk(e,{label:`Loading catalog...`})},p=e=>{var t=rU(),n=P(t,!0);D(t),L(()=>H(n,$.catalogError)),V(e,t)},m=e=>{var t=uU(),r=F(t),i=e=>{var t=iU(),n=P(t,!0);D(t),L(()=>H(n,$.catalog.instructions)),V(e,t)};U(r,e=>{$.catalog.instructions&&e(i)});var a=I(r,2);W(a,17,()=>R(n),e=>e.key,(e,t)=>{var n=cU(),r=P(n),i=P(r,!0);D(r);var a=I(r,2);W(a,21,()=>R(t).items,e=>e.key,(e,t)=>{var n=sU(),r=P(n),i=P(r,!0);D(r);var a=I(r,2),o=e=>{var n=aU(),r=P(n,!0);D(n),L(()=>{K(n,`title`,`Exposed on the aggregated /mcp endpoint as `+R(t).aggregated),H(r,R(t).aggregated)}),V(e,n)};U(a,e=>{R(t).aggregated&&e(o)});var s=I(a,2),c=e=>{var n=oU(),r=P(n,!0);D(n),L(()=>H(r,R(t).description)),V(e,n)};U(s,e=>{R(t).description&&e(c)}),D(n),L(()=>{K(r,`title`,R(t).aggregated||R(t).name),H(i,R(t).name)}),V(e,n)}),D(a),D(n),L(()=>H(i,R(t).title)),V(e,n)});var o=I(a,2),s=e=>{V(e,lU())},c=A(()=>IT($.catalog));U(o,e=>{R(c)&&e(s)}),V(e,t)};U(d,e=>{$.catalogLoading?e(f):$.catalogError?e(p,1):e(m,-1)});var h=I(d,2),g=P(h);D(h),D(r),L((e,t)=>{H(c,$.catalog.server),G(l,1,`audit-status-badge ${e??``}`,`svelte-1xqrzco`),H(u,t)},[()=>ST($.catalog),()=>xT($.catalog)]),z(`click`,g,()=>$.closeCatalog()),V(e,r)},$$slots:{default:!0}}),k()}Br([`click`]);var pU=B(`

        The display name can change. The slug is the stable client-facing identity.

        `),mU=B(` Human-readable and Unicode-friendly. You can change it later.`,1),hU=B(`Derived from the name. You may edit it before saving.`),gU=B(`Immutable because it is used in URLs, scope headers, and aggregated tool names.`),_U=B(` `,1),vU=B(` stdio servers are config-only: declare them in config.yaml under mcp.servers.`,1),yU=B(``),bU=B(`
        `),xU=B(`
        Headers
        Sent only to the configured server origin. Saved values are shown as ***; leave *** unchanged to keep the stored value.
        Advanced settings Description, access rules, and timeout
        `,1);function SU(e,t){O(t,!0);{let t=e=>{V(e,pU())},n=A(()=>$.formMode===`edit`?`Edit MCP Server`:`Add MCP Server`);OA(e,{get open(){return $.formOpen},get title(){return R(n)},ariaLabel:`MCP server editor`,get error(){return $.error},get submitting(){return $.formSubmitting},onclose:()=>$.closeForm(),onsubmit:()=>$.submitForm(),headerHint:t,children:(e,t)=>{var n=xU(),r=F(n);AA(r,{id:`mcp-server-name`,label:`Name`,children:(e,t)=>{var n=mU(),r=F(n);ea(r),Ve(2),z(`input`,r,()=>$.syncSlugFromName()),la(r,()=>$.form.name,e=>$.form.name=e),V(e,n)},$$slots:{default:!0}});var i=I(r,2);AA(i,{id:`mcp-server-slug`,label:`Slug`,children:(e,t)=>{var n=_U(),r=F(n);ea(r);var i=I(r,2),a=e=>{V(e,hU())},o=e=>{V(e,gU())};U(i,e=>{$.formMode===`create`?e(a):e(o,-1)}),L(()=>r.disabled=$.formMode===`edit`),z(`input`,r,()=>$.markSlugEdited()),la(r,()=>$.form.slug,e=>$.form.slug=e),V(e,n)},$$slots:{default:!0}});var a=I(i,2);AA(a,{id:`mcp-server-transport`,label:`Transport`,children:(e,t)=>{var n=vU(),r=F(n),i=P(r);i.value=i.__value=`http`;var a=I(i);a.value=a.__value=`sse`,D(r),Ve(2),Ui(r,()=>$.form.transport,e=>$.form.transport=e),V(e,n)},$$slots:{default:!0}});var o=I(a,2);AA(o,{id:`mcp-server-url`,label:`URL`,children:(e,t)=>{var n=yU();ea(n),la(n,()=>$.form.url,e=>$.form.url=e),V(e,n)},$$slots:{default:!0}});var s=I(o,2),c=I(P(s),2);W(c,21,()=>$.form.headers,ii,(e,t,n)=>{var r=bU(),i=P(r);ea(i);var a=I(i,2);ea(a),wk(I(a,2),{label:`Remove header`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>$.removeHeader(n),children:(e,t)=>{J(e,{get icon(){return Eu},class:`table-icon-svg`})},$$slots:{default:!0}}),D(r),la(i,()=>R(t).name,e=>R(t).name=e),la(a,()=>R(t).value,e=>R(t).value=e),V(e,r)}),D(c);var l=I(c,2),u=P(l);J(P(u),{get icon(){return lu},class:`form-action-icon`}),Ve(2),D(u),D(l),Ve(2),D(s);var d=I(s,2),f=P(d);AP(P(f),{get enabled(){return $.form.enabled},label:`MCP server`,onclick:()=>$.form.enabled=!$.form.enabled}),D(f),D(d);var p=I(d,2),m=I(P(p),2),h=P(m),g=I(P(h),2);ea(g),D(h);var _=I(h,2),v=I(P(_),2);ea(v),D(_);var y=I(_,2),b=I(P(y),2);ea(b),D(y);var x=I(y,2),S=I(P(x),2);ut(S),K(S,`placeholder`,`/ +/team/alpha`),D(x);var C=I(x,2),w=I(P(C),2);ea(w),D(C),D(m),D(p),L(()=>p.open=$.advancedOpen),z(`click`,u,()=>$.addHeader()),zr(`toggle`,p,e=>$.advancedOpen=e.currentTarget.open),la(g,()=>$.form.description,e=>$.form.description=e),la(v,()=>$.form.allowed_tools,e=>$.form.allowed_tools=e),la(b,()=>$.form.disallowed_tools,e=>$.form.disallowed_tools=e),la(S,()=>$.form.user_paths,e=>$.form.user_paths=e),la(w,()=>$.form.tool_timeout_seconds,e=>$.form.tool_timeout_seconds=e),V(e,n)},$$slots:{headerHint:!0,default:!0}})}k()}Br([`input`,`click`]);var CU=B(`Config`),wU=B(`
        `),TU=B(`
        `),EU=B(`
        NameTransportEndpointStatusToolsEnabledActions
        `);function DU(e,t){O(t,!0);function n(e){return CT(e,e=>md.formatTimestamp(e))}var r=EU(),i=P(r),a=I(P(i));W(a,21,()=>$.filtered,e=>bT(e),(e,t)=>{var r=TU(),i=P(r),a=P(i),o=P(a,!0);D(a);var s=I(a,2),c=e=>{V(e,CU())};U(s,e=>{R(t).managed&&e(c)});var l=I(s,2),u=P(l,!0);D(l),D(i);var d=I(i),f=P(d),p=P(f,!0);D(f),D(d);var m=I(d),h=P(m,!0);D(m);var g=I(m),_=P(g),v=P(_,!0);D(_);var y=I(_,2),b=e=>{var n=wU(),r=P(n,!0);D(n),L(()=>H(r,R(t).last_error)),V(e,n)},x=A(()=>xT(R(t))===`degraded`&&R(t).last_error);U(y,e=>{R(x)&&e(b)}),D(g);var S=I(g),C=P(S),w=P(C,!0);D(C);var T=I(C,2),E=P(T,!0);D(T),D(S);var ee=I(S),te=P(ee),ne=P(te,!0);D(te),D(ee);var re=I(ee),ie=P(re),ae=P(ie),oe=e=>{{let n=A(()=>`Edit MCP server `+R(t).name);wk(e,{get label(){return R(n)},class:`table-icon-btn`,onclick:()=>$.openEdit(R(t)),children:(e,t)=>{J(e,{get icon(){return su},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(ae,e=>{R(t).managed||e(oe)});var se=I(ae,2);{let e=A(()=>`Inspect catalog of MCP server `+R(t).name);wk(se,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>$.openCatalog(R(t)),children:(e,t)=>{J(e,{get icon(){return eu},class:`form-action-icon`})},$$slots:{default:!0}})}var ce=I(se,2);{let e=A(()=>($.reconnectingName===bT(R(t))?`Reconnecting MCP server `:`Reconnect MCP server `)+R(t).name),n=A(()=>$.reconnectingName===bT(R(t)));wk(ce,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>$.reconnectServer(R(t)),get disabled(){return R(n)},children:(e,t)=>{J(e,{get icon(){return du},class:`form-action-icon`})},$$slots:{default:!0}})}var le=I(ce,2),ue=e=>{{let n=A(()=>($.deletingName===bT(R(t))?`Deleting MCP server `:`Delete MCP server `)+R(t).name),r=A(()=>$.deletingName===bT(R(t)));wk(e,{get label(){return R(n)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>$.deleteServer(R(t)),get disabled(){return R(r)},children:(e,t)=>{J(e,{get icon(){return Nu},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(le,e=>{R(t).managed||e(ue)}),D(ie),D(re),D(r),L((e,n,r,i,a,s,c,l)=>{H(o,R(t).name),H(u,e),H(p,R(t).transport||`http`),K(m,`title`,n),H(h,r),G(_,1,`audit-status-badge ${i??``}`,`svelte-ah8nrt`),K(_,`title`,a),H(v,s),H(w,c),H(E,l),G(te,1,Ni([`auth-key-status-badge`,R(t).enabled?`auth-key-status-active`:`auth-key-status-inactive`])),H(ne,R(t).enabled?`Enabled`:`Disabled`)},[()=>bT(R(t)),()=>wT(R(t)),()=>wT(R(t)),()=>ST(R(t)),()=>n(R(t)),()=>xT(R(t)),()=>mf(R(t).tool_count||0),()=>TT(R(t))]),V(e,r)}),D(a),D(i),D(r),V(e,r),k()}var OU=B(`

        MCP Servers

        `),kU=B(``),AU=B(`
        MCP server management is unavailable.
        `),jU=B(``),MU=B(`
        `),NU=B(`

        No MCP servers yet. Add one here, or declare servers in config.yaml under mcp.servers.

        `),PU=B(`

        No MCP servers match your filter.

        `),FU=B(`
        `);function IU(e,t){O(t,!0),On(()=>{Y.refreshTick,Gu.page===`mcp-servers`&&$.fetchServers()});var n=FU(),r=P(n),i=P(r);eD(P(i),{copyId:`mcp-servers-help-copy`,label:`MCP servers help`,text:`Upstream Model Context Protocol servers whose tools, prompts, and resources the gateway exposes to clients. Servers added here connect over HTTP or SSE; stdio servers and rows marked Config are declared in config.yaml under mcp.servers and are read-only in the dashboard. Saved header values are masked in API and dashboard responses.`,title:e=>{V(e,OU())},$$slots:{title:!0}}),D(i);var a=I(i,2),o=P(a),s=e=>{var t=kU();J(P(t),{get icon(){return lu},class:`form-action-icon`}),Ve(2),D(t),L(()=>t.disabled=$.formSubmitting),z(`click`,t,()=>$.openCreate()),V(e,t)};U(o,e=>{$.available&&!Y.authError&&e(s)}),D(a),D(r);var c=I(r,2),l=e=>{V(e,AU())};U(c,e=>{!$.available&&!Y.authError&&e(l)});var u=I(c,2),d=e=>{var t=jU(),n=P(t,!0);D(t),L(()=>H(n,$.error)),V(e,t)};U(u,e=>{$.error&&!Y.authError&&!$.formOpen&&e(d)});var f=I(u,2),p=e=>{Sk(e,{label:`Loading MCP servers...`})};U(f,e=>{$.loading&&!Y.authError&&e(p)});var m=I(f,2),h=e=>{var t=MU(),n=P(t);DO(P(n),{id:`mcp-server-filter`,placeholder:`Filter by name, slug, URL, transport, or status...`,label:`Filter MCP servers by name, slug, URL, transport, or status`,get value(){return $.filter},set value(e){$.filter=e}}),D(n),D(t),V(e,t)};U(m,e=>{($.servers.length>0||$.filter)&&$.available&&!Y.authError&&e(h)});var g=I(m,2);SU(g,{});var _=I(g,2);fU(_,{});var v=I(_,2),y=e=>{DU(e,{})};U(v,e=>{$.filtered.length>0&&$.available&&!Y.authError&&e(y)});var b=I(v,2),x=e=>{V(e,NU())};U(b,e=>{$.servers.length===0&&!$.filter&&!$.loading&&!Y.authError&&!$.error&&$.available&&e(x)});var S=I(b,2),C=e=>{V(e,PU())};U(S,e=>{$.servers.length>0&&$.filtered.length===0&&$.filter&&!$.loading&&!Y.authError&&$.available&&e(C)}),D(n),V(e,n),k()}Br([`click`]);var LU=`api_keys`,RU=`session_sticky_keys`,zU=`base_url`,BU=`service_account_json`,VU=`models`,HU={[LU]:{label:`API Keys`,control:`keys`,hint:`Identified sessions stay on one key by default, improving provider prompt-cache hits. Saved values are shown as ***********; leave the asterisks unchanged to keep the stored key.`},[RU]:{label:`Session-sticky API keys`,control:`checkbox`,hint:`Keep each identified conversation on one API key to preserve provider prompt-cache affinity. Turn off to rotate keys round-robin on every request.`},[zU]:{label:`Base URL`,control:`text`},api_version:{label:`API Version`,control:`text`,placeholder:`e.g. 2024-10-01-preview`,hint:`Leave empty for the provider default. Realtime endpoints may need a newer version.`},backend:{label:`Backend`,control:`select`,hint:`Which Google surface to call. Vertex authenticates with Google credentials instead of an API key.`},auth_type:{label:`Auth Type`,control:`select`,hint:`How to obtain Google credentials. Leave on the default to use Application Default Credentials.`},api_mode:{label:`API Mode`,control:`select`,hint:`Which request shape to send upstream.`},vertex_project:{label:`Vertex Project`,control:`text`,placeholder:`my-gcp-project`},vertex_location:{label:`Vertex Location`,control:`text`,placeholder:`us-central1`},service_account_file:{label:`Service Account File`,control:`text`,placeholder:`/path/to/service-account.json`,hint:`Path readable by the gateway process.`},[BU]:{label:`Service Account JSON`,control:`textarea`,placeholder:`Paste service account JSON`,hint:`Saved values are shown as ***********; leave the asterisks unchanged to keep the stored value, or clear it to remove.`},service_account_json_base64:{label:`Service Account JSON (base64)`,control:`text`,hint:`Saved values are shown as ***********; leave the asterisks unchanged to keep the stored value.`},gcp_scope:{label:`GCP Scope`,control:`text`,placeholder:`https://www.googleapis.com/auth/cloud-platform`},[VU]:{label:`Models (comma-separated)`,control:`text`,placeholder:`gpt-4o, gpt-4o-mini`,hint:`Leave empty to auto-discover models from the provider's /models endpoint where supported.`}};function UU(e){return HU[e]||{label:String(e||``).split(`_`).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),control:`text`}}function WU(){return{name:``,type:``,api_keys:[],session_sticky_keys:!0,base_url:``,api_version:``,backend:``,auth_type:``,api_mode:``,vertex_project:``,vertex_location:``,service_account_file:``,service_account_json:``,service_account_json_base64:``,gcp_scope:``,models:``,enabled:!0}}function GU(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.type,e.base_url].some(e=>String(e||``).toLowerCase().includes(r)))}function KU(e,t){let n=(Array.isArray(e)?e:[]).map(e=>String(e&&e.type||``).trim()).filter(Boolean),r=String(t||``).trim();return r&&!n.includes(r)&&n.push(r),n}function qU(e,t){let n=String(t||``).trim();return n&&(Array.isArray(e)?e:[]).find(e=>String(e&&e.type||``).trim()===n)||null}function JU(e,t){let n=e&&Array.isArray(e.fields)&&e.fields.length>0?e.fields:Object.keys(HU).map(e=>({name:e,advanced:e!==LU})),r=t||e&&e.default_base_url||``,i=[],a=[];for(let e of n){let t=String(e&&e.name||``).trim();if(!t)continue;let n={...UU(t),name:t,required:!!(e&&e.required),options:Array.isArray(e&&e.options)?e.options:[]};t===`base_url`&&r&&(n.placeholder=r,n.hint=`Defaults to `+r),n.options.length>0&&(n.control=`select`),(e&&e.advanced?a:i).push(n)}return{primary:i,advanced:a}}var YU=new Set([`name`,`type`,`enabled`]);function XU(e,t){let n=new Set([...t.primary||[],...t.advanced||[]].map(e=>e.name)),r=WU(),i={...e};for(let e of Object.keys(r))!YU.has(e)&&!n.has(e)&&(i[e]=r[e]);return i}function ZU(e){let t=Array.isArray(e&&e.api_keys)?e.api_keys.length:0;return t>0?t+` key`+(t===1?``:`s`):String(e&&e.service_account_json||``).trim()||String(e&&e.service_account_json_base64||``).trim()||String(e&&e.service_account_file||``).trim()?`service account`:String(e&&e.vertex_project||``).trim()?`ADC`:`keyless`}function QU(e){let t=Array.isArray(e&&e.models)?e.models:[];return t.length===0?`auto-discovered`:t.length+` model`+(t.length===1?``:`s`)}function $U(e){return(Array.isArray(e)?e:[]).map(e=>({value:String(e||``)}))}function eW(e){return(Array.isArray(e)?e:[]).map(e=>String(e&&e.value||``))}function tW(e,t){let n=String(t||``).trim();if(!n)return``;let r=new Set((Array.isArray(e)?e:[]).map(e=>String(e&&e.name||``).trim()));if(!r.has(n))return n;let i=1;for(;r.has(n+`-`+i);)i+=1;return n+`-`+i}function nW(e){return{name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),api_keys:$U(e&&e.api_keys),session_sticky_keys:!e||e.session_sticky_keys!==!1,base_url:String(e&&e.base_url||``),api_version:String(e&&e.api_version||``),backend:String(e&&e.backend||``),auth_type:String(e&&e.auth_type||``),api_mode:String(e&&e.api_mode||``),vertex_project:String(e&&e.vertex_project||``),vertex_location:String(e&&e.vertex_location||``),service_account_file:String(e&&e.service_account_file||``),service_account_json:String(e&&e.service_account_json||``),service_account_json_base64:String(e&&e.service_account_json_base64||``),gcp_scope:String(e&&e.gcp_scope||``),models:(Array.isArray(e&&e.models)?e.models:[]).join(`, `),enabled:!e||e.enabled!==!1}}function rW(e){let t=String(e||``).trim();return t.length>=3&&/^\*+$/.test(t)}function iW(e,t,n,r){let i={},a=String(e&&e.name||``).trim();String(e&&e.type||``).trim()||(i.type=`Select a provider type.`),a?a.includes(`/`)?i.name=`Name cannot contain '/' — it separates the provider from the model.`:t===`create`&&(Array.isArray(n)?n:[]).some(e=>String(e&&e.name||``).trim()===a)&&(i.name=`Provider "`+a+`" already exists.`):i.name=`Name is required.`;let{primary:o,advanced:s}=JU(r);for(let t of[...o,...s]){let n=aW(e,t);n&&(i[t.name]=n)}return i}function aW(e,t){if(t.name===`api_keys`){let n=eW(e&&e.api_keys);return t.required&&!n.some(e=>e.trim())?`At least one API key is required for this provider type.`:n.some(e=>!e.trim())?`Remove the empty row instead of leaving a key blank.`:``}let n=String(e&&e[t.name]||``).trim();if(t.required&&!n)return t.label+` is required for this provider type.`;if(!n)return``;if(t.name===`base_url`&&!n.includes(`://`)&&/[./]/.test(n))return`Include the scheme, e.g. https://`+n;if(t.name===`service_account_json`&&!rW(n))try{JSON.parse(n)}catch{return`Paste the service account JSON file's contents — this is not valid JSON.`}return``}function oW(e,t){let n={name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),enabled:!!(e&&e.enabled)},{primary:r,advanced:i}=JU(t),a=!!(t&&Array.isArray(t.fields)&&t.fields.length>0),o=new Set;for(let t of[...r,...i])!a&&t.name===`session_sticky_keys`||(o.add(t.name),n[t.name]=sW(e,t.name));for(let t of Object.keys(HU)){if(o.has(t)||t===`session_sticky_keys`)continue;let r=sW(e,t);(Array.isArray(r)?r.length>0:String(r).trim()!==``)&&(n[t]=r)}return n}function sW(e,t){switch(t){case LU:return eW(e&&e.api_keys);case VU:return ff(e&&e.models);case RU:return!!(e&&e.session_sticky_keys);case BU:return e&&e.service_account_json||``;default:return String(e&&e[t]||``).trim()}}var cW=new class{#e=j(N([]));get rows(){return R(this.#e)}set rows(e){M(this.#e,e,!0)}#t=j(!0);get available(){return R(this.#t)}set available(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}#r=j(``);get error(){return R(this.#r)}set error(e){M(this.#r,e,!0)}#i=j(``);get filter(){return R(this.#i)}set filter(e){M(this.#i,e,!0)}#a=j(!1);get formOpen(){return R(this.#a)}set formOpen(e){M(this.#a,e,!0)}#o=j(!1);get formSubmitting(){return R(this.#o)}set formSubmitting(e){M(this.#o,e,!0)}#s=j(`create`);get formMode(){return R(this.#s)}set formMode(e){M(this.#s,e,!0)}#c=j(!1);get advancedOpen(){return R(this.#c)}set advancedOpen(e){M(this.#c,e,!0)}#l=j(N(WU()));get form(){return R(this.#l)}set form(e){M(this.#l,e,!0)}#u=j(N({}));get fieldErrors(){return R(this.#u)}set fieldErrors(e){M(this.#u,e,!0)}#d=j(``);get focusField(){return R(this.#d)}set focusField(e){M(this.#d,e,!0)}#f=j(``);get deletingName(){return R(this.#f)}set deletingName(e){M(this.#f,e,!0)}#p=j(!1);get deleteSubmitting(){return R(this.#p)}set deleteSubmitting(e){M(this.#p,e,!0)}#m=j(N([]));get types(){return R(this.#m)}set types(e){M(this.#m,e,!0)}#h=j(!1);get typesLoaded(){return R(this.#h)}set typesLoaded(e){M(this.#h,e,!0)}#g=null;get filteredRows(){return GU(this.rows,this.filter)}get schema(){return qU(this.types,this.form.type)}get formFields(){if(!String(this.form.type||``).trim())return{primary:[],advanced:[]};let e=this.schema;return JU(e,e&&e.default_base_url)}async fetchTypes(){let e=await Tk(`/admin/provider-credentials/types`,{label:`provider credential types`});e.status===`ok`&&(this.types=e.items,this.typesLoaded=!0)}async fetchPage(){this.#g&&this.#g.abort();let e=new AbortController;this.#g=e,this.loading=!0,this.error=``;try{let t=await Tk(`/admin/provider-credentials`,{label:`provider credentials`,errorFallback:`Failed to load provider credentials.`,unavailableStatuses:[503,404],options:{signal:e.signal}});if(t.status===`stale`||e.signal.aborted)return;if(t.status===`unavailable`){this.available=!1,this.rows=[];return}if(t.status===`error`){t.result&&(this.available=!0),this.rows=[],this.error=t.error;return}this.available=!0,this.rows=t.items,this.typesLoaded||await this.fetchTypes()}finally{this.#g===e&&(this.#g=null,this.loading=!1)}}#_(e,t){this.formMode=e,this.form=t,this.advancedOpen=!1,this.error=``,this.fieldErrors={},this.focusField=``}openCreate(){this.#_(`create`,WU()),this.formOpen=!0,this.typesLoaded||this.fetchTypes()}openEdit(e){!e||e.managed||(this.#_(`edit`,nW(e)),this.formOpen=!0,this.typesLoaded||this.fetchTypes())}closeForm(){this.formOpen=!1,this.#_(`create`,WU())}selectType(){this.fieldErrors={};let e=this.formFields;this.formMode===`create`&&(this.form=XU(this.form,e));let t=e.primary.find(e=>e.name===`api_keys`);t&&t.required&&this.form.api_keys.length===0&&(this.form.api_keys=[{value:``}])}clearFieldError(e){if(this.fieldErrors[e]===void 0)return;let{[e]:t,...n}=this.fieldErrors;this.fieldErrors=n}addApiKeyRow(){this.form.api_keys.push({value:``}),this.clearFieldError(`api_keys`)}removeApiKeyRow(e){this.form.api_keys.splice(e,1),this.clearFieldError(`api_keys`)}#v(e){let t=hd(e,`Failed to save provider credential.`),n=String(e&&e.error&&typeof e.error==`object`&&e.error.param||``).trim();if(n&&this.#y(n)){this.fieldErrors={...this.fieldErrors,[n]:t},this.error=``,this.#b();return}this.error=t}#y(e){if(e===`name`||e===`type`)return!0;let{primary:t,advanced:n}=this.formFields;return[...t,...n].some(t=>t.name===e)}#b(){let e=Object.keys(this.fieldErrors);if(e.length===0)return;let{primary:t,advanced:n}=this.formFields;n.some(t=>e.includes(t.name))&&(this.advancedOpen=!0);let r=[`type`,`name`,...t.map(e=>e.name),...n.map(e=>e.name)];this.focusField=r.find(t=>e.includes(t))||e[0]}#x(){Hf.fetchModels(),Hf.fetchCategories()}async submitForm(){let e=this.schema,t=iW(this.form,this.formMode,this.rows,e);if(Object.keys(t).length>0){this.fieldErrors=t,this.error=``,this.#b();return}let n=oW(this.form,e);this.error=``,this.fieldErrors={},this.formSubmitting=!0;try{let e=await Ek(`/admin/provider-credentials`,`PUT`,n,{label:`save provider credential`,errorFallback:`Failed to save provider credential.`,unavailableMessage:`Provider credential management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.error=e.error;return}if(e.status===`error`){e.result&&e.result.status!==401?this.#v(e.result.data):this.error=e.error;return}of.success(`Provider "`+n.name+`" saved.`),this.closeForm(),this.#x(),this.fetchPage()}finally{this.formSubmitting=!1}}async performDelete(e){this.deleteSubmitting=!0,this.deletingName=e;try{let t=await Ek(`/admin/provider-credentials/`+encodeURIComponent(e),`DELETE`,void 0,{label:`delete provider credential`,errorFallback:`Failed to delete provider credential.`,unavailableMessage:`Provider credential management is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,Wd.error=t.error;return}if(t.status===`error`){Wd.error=t.error;return}of.success(`Provider "`+e+`" deleted.`),Wd.close(),this.formOpen&&this.form.name===e&&this.closeForm(),this.#x(),this.fetchPage()}finally{this.deleteSubmitting=!1,this.deletingName=``}}requestDelete(e){let t=String(e||``).trim();if(!t||this.deleteSubmitting)return;let n=(this.rows||[]).find(e=>String(e&&e.name||``).trim()===t);n&&n.managed||Wd.open({title:`Delete Provider`,titleId:`providerCredentialDeleteDialogTitle`,inputId:`provider-credential-delete-confirmation`,message:`Type "`+t+`" to permanently delete this provider credential. Requests routed to it will fail until it is reconfigured.`,requiredText:t,confirmLabel:`Delete Provider`,icon:Eu,dialogClass:`budget-reset-dialog`,onConfirm:()=>this.performDelete(t)})}},lW=B(`Config`),uW=B(` `,1),dW=B(`
        `),fW=B(`
        NameTypeBase URLAuthModelsEnabledUpdatedActions
        `);function pW(e,t){O(t,!0);var n=fW(),r=P(n),i=I(P(r));W(i,21,()=>cW.filteredRows,e=>e.name,(e,t)=>{var n=dW(),r=P(n),i=P(r),a=P(i,!0);D(i);var o=I(i,2),s=e=>{V(e,lW())};U(o,e=>{R(t).managed&&e(s)}),D(r);var c=I(r),l=P(c),u=P(l,!0);D(l),D(c);var d=I(c),f=P(d,!0);D(d);var p=I(d),m=P(p,!0);D(p);var h=I(p),g=P(h,!0);D(h);var _=I(h),v=P(_);let y;var b=P(v,!0);D(v),D(_);var x=I(_),S=P(x,!0);D(x);var C=I(x),w=P(C),T=P(w),E=e=>{var n=uW(),r=F(n);{let e=A(()=>`Edit provider `+R(t).name);wk(r,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>cW.openEdit(R(t)),children:(e,t)=>{J(e,{get icon(){return su},class:`table-icon-svg`})},$$slots:{default:!0}})}var i=I(r,2);{let e=A(()=>(cW.deletingName===R(t).name?`Deleting provider `:`Delete provider `)+R(t).name),n=A(()=>cW.deletingName===R(t).name);wk(i,{get label(){return R(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>cW.requestDelete(R(t).name),get disabled(){return R(n)},children:(e,t)=>{J(e,{get icon(){return Nu},class:`table-icon-svg`})},$$slots:{default:!0}})}V(e,n)};U(T,e=>{R(t).managed||e(E)}),D(w),D(C),D(n),L((e,n,r)=>{H(a,R(t).name),H(u,R(t).type),K(d,`title`,R(t).base_url||``),H(f,R(t).base_url||`—`),H(m,e),H(g,n),y=G(v,1,`auth-key-status-badge`,null,y,{"auth-key-status-active":R(t).enabled,"auth-key-status-inactive":!R(t).enabled}),H(b,R(t).enabled?`Enabled`:`Disabled`),H(S,r)},[()=>ZU(R(t)),()=>QU(R(t)),()=>md.formatTimestamp(R(t).updated_at)]),V(e,n)}),D(i),D(r),D(n),V(e,n),k()}var mW=B(``),hW=B(`
        `),gW=B(`
        `,1),_W=B(``),vW=B(``),yW=B(``),bW=B(``),xW=B(``),SW=B(` `),CW=B(` `),wW=B(`
        `);function TW(e,t){O(t,!0);let n=A(()=>`provider-credential-`+t.field.name),r=A(()=>cW.fieldErrors[t.field.name]||``),i=A(()=>R(r)?R(n)+`-error`:t.field.hint?R(n)+`-hint`:void 0),a=A(()=>{let e=String(cW.form[t.field.name]||``).trim();return!e||t.field.options.includes(e)?t.field.options:[...t.field.options,e]});function o(){cW.clearFieldError(t.field.name)}var s=wW(),c=P(s),l=P(c),u=I(l),d=e=>{V(e,mW())};U(u,e=>{t.field.required&&e(d)}),D(c);var f=I(c,2),p=e=>{var t=gW(),a=F(t);W(a,21,()=>cW.form.api_keys,ii,(e,t,a)=>{var s=hW(),c=P(s);ea(c),K(c,`aria-label`,`API key `+(a+1)),wk(I(c,2),{label:`Remove API key `+(a+1),class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>cW.removeApiKeyRow(a),children:(e,t)=>{J(e,{get icon(){return Eu},class:`table-icon-svg`})},$$slots:{default:!0}}),D(s),L(()=>{K(c,`id`,a===0?R(n):R(n)+`-`+a),K(c,`aria-invalid`,R(r)?`true`:void 0),K(c,`aria-describedby`,a===0?R(i):void 0)}),z(`input`,c,o),la(c,()=>R(t).value,e=>R(t).value=e),V(e,s)}),D(a);var s=I(a,2),c=P(s);J(P(c),{get icon(){return lu},class:`form-action-icon`}),Ve(2),D(c),D(s),L(()=>K(c,`id`,cW.form.api_keys.length===0?R(n):void 0)),z(`click`,c,()=>cW.addApiKeyRow()),V(e,t)},m=e=>{var s=vW(),c=P(s);c.value=c.__value=``,W(I(c),16,()=>R(a),e=>e,(e,t)=>{var n=_W(),r=P(n,!0);D(n);var i={};L(()=>{H(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(s),L(()=>{K(s,`id`,R(n)),K(s,`aria-invalid`,R(r)?`true`:void 0),K(s,`aria-describedby`,R(i))}),z(`change`,s,o),Ui(s,()=>cW.form[t.field.name],e=>cW.form[t.field.name]=e),V(e,s)},h=e=>{var a=yW();ea(a),L(()=>{K(a,`id`,R(n)),K(a,`aria-invalid`,R(r)?`true`:void 0),K(a,`aria-describedby`,R(i))}),z(`change`,a,o),ua(a,()=>cW.form[t.field.name],e=>cW.form[t.field.name]=e),V(e,a)},g=e=>{var a=bW();ut(a),L(()=>{K(a,`id`,R(n)),K(a,`placeholder`,t.field.placeholder||``),K(a,`aria-invalid`,R(r)?`true`:void 0),K(a,`aria-describedby`,R(i))}),z(`input`,a,o),la(a,()=>cW.form[t.field.name],e=>cW.form[t.field.name]=e),V(e,a)},_=e=>{var a=xW();ea(a),L(()=>{K(a,`id`,R(n)),K(a,`placeholder`,t.field.placeholder||``),K(a,`aria-invalid`,R(r)?`true`:void 0),K(a,`aria-describedby`,R(i))}),z(`input`,a,o),la(a,()=>cW.form[t.field.name],e=>cW.form[t.field.name]=e),V(e,a)};U(f,e=>{t.field.control===`keys`?e(p):t.field.control===`select`?e(m,1):t.field.control===`checkbox`?e(h,2):t.field.control===`textarea`?e(g,3):e(_,-1)});var v=I(f,2),y=e=>{var t=SW(),i=P(t,!0);D(t),L(()=>{K(t,`id`,R(n)+`-error`),H(i,R(r))}),V(e,t)},b=e=>{var r=CW(),i=P(r,!0);D(r),L(()=>{K(r,`id`,R(n)+`-hint`),H(i,t.field.hint)}),V(e,r)};U(v,e=>{R(r)?e(y):t.field.hint&&e(b,1)}),D(s),L(()=>{K(c,`for`,R(n)),H(l,`${t.field.label??``} `)}),V(e,s),k()}Br([`input`,`click`,`change`]);var EW=B(`

        The name is the stable identity used for routing and cannot change once created.

        `),DW=B(``),OW=B(` `),kW=B(`Determines which fields the gateway uses to build requests.`),AW=B(` `),jW=B(`Suggested from the selected type; used to route requests to this provider instance and editable before saving.`),MW=B(`Immutable once created.`),NW=B(`

        Pick a type to configure its credentials — each provider type asks for different settings.

        `),PW=B(`
        Advanced settings
        `),FW=B(`
        `,1);function IW(e,t){O(t,!0);let n=A(()=>KU(cW.types,cW.form.type)),r=A(()=>cW.formFields),i=A(()=>cW.fieldErrors.name||``),a=A(()=>cW.fieldErrors.type||``);function o(){cW.selectType(),cW.formMode===`create`&&(cW.form.name=tW(cW.rows,cW.form.type))}On(()=>{let e=cW.focusField;if(!e)return;cW.focusField=``;let t=document.getElementById(`provider-credential-`+e);t&&(t.scrollIntoView({block:`center`}),t.focus({preventScroll:!0}))});{let t=e=>{V(e,EW())},s=A(()=>cW.formMode===`edit`?`Edit Provider`:`Add Provider`);OA(e,{get open(){return cW.formOpen},get title(){return R(s)},ariaLabel:`Provider credential editor`,get error(){return cW.error},get submitting(){return cW.formSubmitting},novalidate:!0,onclose:()=>cW.closeForm(),onsubmit:()=>cW.submitForm(),headerHint:t,children:(e,t)=>{var s=FW(),c=F(s),l=I(P(c),2),u=P(l);u.value=u.__value=``,W(I(u),16,()=>R(n),e=>e,(e,t)=>{var n=DW(),r=P(n,!0);D(n);var i={};L(()=>{H(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(l);var d=I(l,2),f=e=>{var t=OW(),n=P(t,!0);D(t),L(()=>H(n,R(a))),V(e,t)},p=e=>{V(e,kW())};U(d,e=>{R(a)?e(f):e(p,-1)}),D(c);var m=I(c,2),h=I(P(m),2);ea(h);var g=I(h,2),_=e=>{var t=AW(),n=P(t,!0);D(t),L(()=>H(n,R(i))),V(e,t)},v=e=>{V(e,jW())},y=e=>{V(e,MW())};U(g,e=>{R(i)?e(_):cW.formMode===`create`?e(v,1):e(y,-1)}),D(m);var b=I(m,2),x=e=>{V(e,NW())};U(b,e=>{cW.form.type||e(x)});var S=I(b,2);W(S,17,()=>R(r).primary,e=>e.name,(e,t)=>{TW(e,{get field(){return R(t)}})});var C=I(S,2),w=P(C);AP(P(w),{get enabled(){return cW.form.enabled},label:`provider`,onclick:()=>cW.form.enabled=!cW.form.enabled}),D(w),D(C);var T=I(C,2),E=e=>{var t=PW(),n=P(t),i=P(n),a=I(P(i),2),o=P(a,!0);D(a),D(i),D(n);var s=I(n,2);W(s,21,()=>R(r).advanced,e=>e.name,(e,t)=>{TW(e,{get field(){return R(t)}})}),D(s),D(t),L(e=>{t.open=cW.advancedOpen,H(o,e)},[()=>R(r).advanced.map(e=>e.label).join(`, `)]),zr(`toggle`,t,e=>cW.advancedOpen=e.currentTarget.open),V(e,t)};U(T,e=>{R(r).advanced.length>0&&e(E)}),L(()=>{l.disabled=cW.formMode===`edit`,K(l,`aria-invalid`,R(a)?`true`:void 0),K(l,`aria-describedby`,R(a)?`provider-credential-type-error`:`provider-credential-type-hint`),h.disabled=cW.formMode===`edit`,K(h,`aria-invalid`,R(i)?`true`:void 0),K(h,`aria-describedby`,R(i)?`provider-credential-name-error`:`provider-credential-name-hint`)}),z(`change`,l,o),Ui(l,()=>cW.form.type,e=>cW.form.type=e),z(`input`,h,()=>cW.clearFieldError(`name`)),la(h,()=>cW.form.name,e=>cW.form.name=e),V(e,s)},$$slots:{headerHint:!0,default:!0}})}k()}Br([`change`,`input`]);var LW=B(`

        Providers

        `),RW=B(``),zW=B(`
        Provider credential management is unavailable.
        `),BW=B(``),VW=B(`
        `),HW=B(`

        No dashboard-managed providers yet. Add one here, or declare providers in config.yaml / environment variables.

        `),UW=B(`

        No providers match your filter.

        `),WW=B(`
        `);function GW(e,t){O(t,!0),On(()=>{Y.refreshTick,Gu.page===`providers-config`&&cW.fetchPage()});var n=WW(),r=P(n),i=P(r);eD(P(i),{copyId:`providers-config-help-copy`,label:`model providers help`,title:e=>{V(e,LW())},help:e=>{Ve(),V(e,Yr(`Configure LLM provider credentials here instead of setting API keys as environment variables. Providers declared in config.yaml or env vars are read-only (Config badge) and cannot be edited or deleted from the - dashboard. Keys are masked after saving.`))},$$slots:{title:!0,help:!0}}),D(i);var a=I(i,2),o=P(a),s=e=>{var t=NU();J(P(t),{get icon(){return il},class:`form-action-icon`}),Ve(2),D(t),L(()=>t.disabled=rU.formSubmitting),z(`click`,t,()=>rU.openCreate()),V(e,t)};U(o,e=>{rU.available&&!Y.needsAuth&&e(s)}),D(a),D(r);var c=I(r,2),l=e=>{V(e,PU())};U(c,e=>{!rU.available&&!Y.needsAuth&&e(l)});var u=I(c,2),d=e=>{var t=FU(),n=P(t,!0);D(t),L(()=>H(n,rU.error)),V(e,t)};U(u,e=>{rU.error&&!Y.needsAuth&&!rU.formOpen&&e(d)});var f=I(u,2),p=e=>{_O(e,{label:`Loading providers...`})};U(f,e=>{rU.loading&&!Y.needsAuth&&e(p)});var m=I(f,2),h=e=>{var t=IU(),n=P(t);SD(P(n),{id:`provider-credential-filter`,placeholder:`Filter by name, type, or base URL...`,label:`Filter providers by name, type, or base URL`,get value(){return rU.filter},set value(e){rU.filter=e}}),D(n),D(t),V(e,t)};U(m,e=>{(rU.rows.length>0||rU.filter)&&rU.available&&!Y.needsAuth&&e(h)});var g=I(m,2);jU(g,{});var _=I(g,2),v=e=>{cU(e,{})};U(_,e=>{rU.filteredRows.length>0&&rU.available&&!Y.needsAuth&&e(v)});var y=I(_,2),b=e=>{V(e,LU())};U(y,e=>{rU.rows.length===0&&!rU.filter&&!rU.loading&&!Y.needsAuth&&!rU.error&&rU.available&&e(b)});var x=I(y,2),S=e=>{V(e,RU())};U(x,e=>{rU.rows.length>0&&rU.filteredRows.length===0&&rU.filter&&!rU.loading&&!Y.needsAuth&&rU.available&&e(S)}),D(n),V(e,n),k()}Br([`click`]);function VU(){return{name:``,description:``,user_path:``,labels:``,dashboard_access:!1,expires_at:``}}function HU(e){let t=[];for(let n of String(e||``).split(`,`)){let e=n.trim();e&&!t.includes(e)&&t.push(e)}return t}function UU(e){let t=String(e||``).trim();if(!t)return``;let n=t.startsWith(`/`)?t:`/`+t;for(let e of n.split(`/`)){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function WU(e){if(UU(e))return``;let t=String(e||``).trim();if(!t)return``;let n=t.startsWith(`/`)?t:`/`+t,r=[];for(let e of n.split(`/`)){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function GU(e){let t=e||{},n=String(t.name||``).trim();if(!n)return{error:`Name is required.`};let r=UU(t.user_path);if(r)return{error:r};let i=WU(t.user_path),a=HU(t.labels),o={name:n,description:String(t.description||``).trim()||void 0,user_path:i||void 0,labels:a.length?a:void 0,dashboard_access:t.dashboard_access?!0:void 0};return t.expires_at&&(o.expires_at=t.expires_at+`T23:59:59Z`),{payload:o}}function KU(e,t=Date.now()){let n=e&&e.expires_at;if(!n)return!1;let r=Date.parse(n);return Number.isFinite(r)&&r<=t}function qU(e){return e?!!e.deactivated_at||e.enabled===!1:!1}function JU(e,t=Date.now()){return!e||e.active===!1||qU(e)?!1:!KU(e,t)}function YU(e){return[e.name,e.description,e.user_path,e.redacted_value,...e.labels||[]].filter(Boolean).join(` `).toLowerCase()}function XU(e,t={}){let{query:n=``,showInactive:r=!1,now:i=Date.now()}=t,a=String(n||``).trim().toLowerCase();return(Array.isArray(e)?e:[]).filter(e=>!r&&!JU(e,i)?!1:!a||YU(e).includes(a))}function ZU(e,t){return qU(e)?2:+!JU(e,t)}function QU(e){let t=e&&e.expires_at;if(!t)return 1/0;let n=Date.parse(t);return Number.isFinite(n)?n:1/0}function $U(e){let t=Date.parse(e&&e.deactivated_at||``);return Number.isFinite(t)?t:-1/0}function eW(e,t=Date.now()){return(Array.isArray(e)?e.slice():[]).sort((e,n)=>{let r=ZU(e,t),i=ZU(n,t);if(r!==i)return r-i;let[a,o]=r===2?[$U(e),$U(n)]:[QU(e),QU(n)];return a===o?String(e.name||``).localeCompare(String(n.name||``)):a>o?-1:1})}function tW(e,t=Date.now()){return(Array.isArray(e)?e:[]).reduce((e,n)=>e+ +!JU(n,t),0)}function nW(){return{open:!1,id:``,name:``,value:``,submitting:!1,error:``}}var rW=new class{#e=j(N([]));get keys(){return R(this.#e)}set keys(e){M(this.#e,e,!0)}#t=j(!0);get available(){return R(this.#t)}set available(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}#r=j(``);get error(){return R(this.#r)}set error(e){M(this.#r,e,!0)}#i=j(``);get filter(){return R(this.#i)}set filter(e){M(this.#i,e,!0)}#a=j(!1);get showInactive(){return R(this.#a)}set showInactive(e){M(this.#a,e,!0)}#o=A(()=>eW(XU(this.keys,{query:this.filter,showInactive:this.showInactive})));get visibleKeys(){return R(this.#o)}set visibleKeys(e){M(this.#o,e)}#s=A(()=>tW(this.keys));get inactiveCount(){return R(this.#s)}set inactiveCount(e){M(this.#s,e)}#c=j(!1);get formOpen(){return R(this.#c)}set formOpen(e){M(this.#c,e,!0)}#l=j(!1);get formSubmitting(){return R(this.#l)}set formSubmitting(e){M(this.#l,e,!0)}#u=j(``);get issuedValue(){return R(this.#u)}set issuedValue(e){M(this.#u,e,!0)}#d=j(``);get deactivatingID(){return R(this.#d)}set deactivatingID(e){M(this.#d,e,!0)}#f=j(``);get dashboardAccessID(){return R(this.#f)}set dashboardAccessID(e){M(this.#f,e,!0)}#p=j(N(VU()));get form(){return R(this.#p)}set form(e){M(this.#p,e,!0)}#m=j(N(nW()));get labelsEditor(){return R(this.#m)}set labelsEditor(e){M(this.#m,e,!0)}copyState=CF({logPrefix:`Failed to copy auth key:`});async fetchKeys(){this.loading=!0,this.error=``;try{let e=await bO(`/admin/auth-keys`,{label:`auth keys`,errorFallback:`Unable to load API keys.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.keys=[];return}if(e.status===`error`){e.result&&(this.available=!0),this.error=e.error;return}this.available=!0,this.keys=e.items}finally{this.loading=!1}}openForm(){this.formSubmitting||this.formOpen||(this.formOpen=!0,this.error=``,this.issuedValue||(this.copyState.reset(),this.form=VU()))}closeForm(){this.formOpen&&(this.formOpen=!1,this.error=``,this.copyState.reset(),!this.formSubmitting&&!this.issuedValue&&(this.form=VU()))}copyIssuedValue(){return this.copyState.copy(this.issuedValue)}dismissIssuedKey(){this.issuedValue=``,this.copyState.reset(),this.form=VU()}async submitForm(){let e=GU(this.form);if(e.error){this.error=e.error;return}this.error=``,this.formSubmitting=!0;try{let t=await xO(`/admin/auth-keys`,`POST`,e.payload,{label:`create API key`,errorFallback:`Failed to create API key.`,unavailableMessage:`Auth keys feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error,t.result&&t.result.status!==401&&console.error(`Failed to create API key:`,t.result.status,this.error);return}let n=t.result.data||{};this.issuedValue=n.value||``,this.formOpen=!0,this.copyState.reset(),this.form=VU(),this.fetchKeys()}finally{this.formSubmitting=!1}}openLabelsEditor(e){!e||this.labelsEditor.submitting||(this.labelsEditor={open:!0,id:e.id,name:e.name||``,value:(e.labels||[]).join(`, `),submitting:!1,error:``})}closeLabelsEditor(){!this.labelsEditor.open||this.labelsEditor.submitting||(this.labelsEditor=nW())}async submitLabelsEditor(){let e=this.labelsEditor;if(!e.open||e.submitting||!e.id)return;e.submitting=!0,e.error=``;let t={labels:HU(e.value)};try{let n=await xO(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/labels`,`PUT`,t,{label:`update API key labels`,errorFallback:`Failed to update labels.`,unavailableMessage:`Auth keys feature is unavailable.`});if(n.status===`stale`)return;if(n.status===`unavailable`){this.available=!1,e.error=n.error;return}if(n.status===`error`){e.error=n.error,n.result&&n.result.status!==401&&console.error(`Failed to update auth key labels:`,n.result.status,e.error);return}ed.success(`Labels updated for key "`+e.name+`".`),e.submitting=!1,this.closeLabelsEditor(),this.fetchKeys()}finally{e.submitting=!1}}async toggleDashboardAccess(e){if(!e||!e.active||this.dashboardAccessID)return;let t=!e.dashboard_access;this.dashboardAccessID=e.id;try{let n=await xO(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/dashboard-access`,`PUT`,{dashboard_access:t},{label:`update API key dashboard access`,errorFallback:`Failed to update dashboard access.`,unavailableMessage:`Auth keys feature is unavailable.`});if(n.status===`stale`)return;if(n.status===`unavailable`){this.available=!1,ed.error(n.error);return}if(n.status===`error`){n.result&&n.result.status!==401&&console.error(`Failed to update auth key dashboard access:`,n.result.status,n.error),ed.error(n.error);return}ed.success(`Dashboard access `+(t?`granted to`:`revoked for`)+` key "`+e.name+`".`),this.fetchKeys()}finally{this.dashboardAccessID=``}}async deactivateKey(e){if(!(!e||!e.active)&&window.confirm(`Deactivate key "`+e.name+`"? This cannot be undone.`)){this.deactivatingID=e.id;try{let t=await xO(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/deactivate`,`POST`,void 0,{label:`deactivate API key`,errorFallback:`Failed to deactivate key.`,unavailableMessage:`Auth keys feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,ed.error(t.error);return}if(t.status===`error`){t.result&&t.result.status!==401&&console.error(`Failed to deactivate auth key:`,t.result.status,t.error),ed.error(t.error);return}ed.success(`Key "`+e.name+`" deactivated.`),this.fetchKeys()}finally{this.deactivatingID=``}}}},iW=B(``),aW=B(`

        Store this key securely — it won’t be shown again.

        `),oW=B(``),sW=B(``),cW=B(``),lW=B(``),uW=B(`
        `);function dW(e,t){O(t,!0);{let t=A(()=>rW.issuedValue?``:rW.error),n=A(()=>rW.issuedValue?`Done, I’ve stored it`:`Create API Key`),r=A(()=>rW.issuedValue?Mc:il);Ck(e,{get open(){return rW.formOpen},title:`Create API Key`,ariaLabel:`API key editor`,get error(){return R(t)},get submitting(){return rW.formSubmitting},get submitLabel(){return R(n)},submittingLabel:`Creating...`,get submitIcon(){return R(r)},cancel:!1,dialogClass:`auth-key-editor`,onclose:()=>rW.closeForm(),onsubmit:()=>rW.issuedValue?rW.dismissIssuedKey():rW.submitForm(),children:(e,t)=>{var n=Xr(),r=F(n),i=e=>{var t=aW(),n=I(P(t),2),r=P(n),i=P(r,!0);D(r),SB(I(r,2),{get state(){return rW.copyState},onclick:()=>rW.copyIssuedValue()}),D(n);var a=I(n,2),o=e=>{V(e,iW())};U(a,e=>{rW.copyState.error&&e(o)}),D(t),L(()=>H(i,rW.issuedValue)),V(e,t)},a=e=>{var t=uW(),n=P(t),r=P(n),i=I(P(r),2);ea(i),D(r);var a=I(r,2),o=I(P(a),2);ea(o),D(a),D(n);var s=I(n,2),c=P(s);YT(c,{copyId:`auth-key-user-path-help-copy`,label:`API key user path help`,title:e=>{V(e,oW())},help:e=>{Ve(),V(e,Yr(`When set, this key overrides the configured user path request - header for audit logging and downstream request context.`))},$$slots:{title:!0,help:!0}});var l=I(c,2);ea(l),D(s);var u=I(s,2),d=P(u);YT(d,{copyId:`auth-key-labels-help-copy`,label:`API key labels help`,title:e=>{V(e,sW())},help:e=>{Ve(),V(e,Yr(`Every request authenticated with this key gets these labels, in + dashboard. Keys are masked after saving.`))},$$slots:{title:!0,help:!0}}),D(i);var a=I(i,2),o=P(a),s=e=>{var t=RW();J(P(t),{get icon(){return lu},class:`form-action-icon`}),Ve(2),D(t),L(()=>t.disabled=cW.formSubmitting),z(`click`,t,()=>cW.openCreate()),V(e,t)};U(o,e=>{cW.available&&!Y.needsAuth&&e(s)}),D(a),D(r);var c=I(r,2),l=e=>{V(e,zW())};U(c,e=>{!cW.available&&!Y.needsAuth&&e(l)});var u=I(c,2),d=e=>{var t=BW(),n=P(t,!0);D(t),L(()=>H(n,cW.error)),V(e,t)};U(u,e=>{cW.error&&!Y.needsAuth&&!cW.formOpen&&e(d)});var f=I(u,2),p=e=>{Sk(e,{label:`Loading providers...`})};U(f,e=>{cW.loading&&!Y.needsAuth&&e(p)});var m=I(f,2),h=e=>{var t=VW(),n=P(t);DO(P(n),{id:`provider-credential-filter`,placeholder:`Filter by name, type, or base URL...`,label:`Filter providers by name, type, or base URL`,get value(){return cW.filter},set value(e){cW.filter=e}}),D(n),D(t),V(e,t)};U(m,e=>{(cW.rows.length>0||cW.filter)&&cW.available&&!Y.needsAuth&&e(h)});var g=I(m,2);IW(g,{});var _=I(g,2),v=e=>{pW(e,{})};U(_,e=>{cW.filteredRows.length>0&&cW.available&&!Y.needsAuth&&e(v)});var y=I(_,2),b=e=>{V(e,HW())};U(y,e=>{cW.rows.length===0&&!cW.filter&&!cW.loading&&!Y.needsAuth&&!cW.error&&cW.available&&e(b)});var x=I(y,2),S=e=>{V(e,UW())};U(x,e=>{cW.rows.length>0&&cW.filteredRows.length===0&&cW.filter&&!cW.loading&&!Y.needsAuth&&cW.available&&e(S)}),D(n),V(e,n),k()}Br([`click`]);function KW(){return{name:``,description:``,user_path:``,labels:``,dashboard_access:!1,expires_at:``}}function qW(e){let t=[];for(let n of String(e||``).split(`,`)){let e=n.trim();e&&!t.includes(e)&&t.push(e)}return t}function JW(e){let t=String(e||``).trim();if(!t)return``;let n=t.startsWith(`/`)?t:`/`+t;for(let e of n.split(`/`)){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function YW(e){if(JW(e))return``;let t=String(e||``).trim();if(!t)return``;let n=t.startsWith(`/`)?t:`/`+t,r=[];for(let e of n.split(`/`)){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function XW(e){let t=e||{},n=String(t.name||``).trim();if(!n)return{error:`Name is required.`};let r=JW(t.user_path);if(r)return{error:r};let i=YW(t.user_path),a=qW(t.labels),o={name:n,description:String(t.description||``).trim()||void 0,user_path:i||void 0,labels:a.length?a:void 0,dashboard_access:t.dashboard_access?!0:void 0};return t.expires_at&&(o.expires_at=t.expires_at+`T23:59:59Z`),{payload:o}}function ZW(e,t=Date.now()){let n=e&&e.expires_at;if(!n)return!1;let r=Date.parse(n);return Number.isFinite(r)&&r<=t}function QW(e){return e?!!e.deactivated_at||e.enabled===!1:!1}function $W(e,t=Date.now()){return!e||e.active===!1||QW(e)?!1:!ZW(e,t)}function eG(e){return[e.name,e.description,e.user_path,e.redacted_value,...e.labels||[]].filter(Boolean).join(` `).toLowerCase()}function tG(e,t={}){let{query:n=``,showInactive:r=!1,now:i=Date.now()}=t,a=String(n||``).trim().toLowerCase();return(Array.isArray(e)?e:[]).filter(e=>!r&&!$W(e,i)?!1:!a||eG(e).includes(a))}function nG(e,t){return QW(e)?2:+!$W(e,t)}function rG(e){let t=e&&e.expires_at;if(!t)return 1/0;let n=Date.parse(t);return Number.isFinite(n)?n:1/0}function iG(e){let t=Date.parse(e&&e.deactivated_at||``);return Number.isFinite(t)?t:-1/0}function aG(e,t=Date.now()){return(Array.isArray(e)?e.slice():[]).sort((e,n)=>{let r=nG(e,t),i=nG(n,t);if(r!==i)return r-i;let[a,o]=r===2?[iG(e),iG(n)]:[rG(e),rG(n)];return a===o?String(e.name||``).localeCompare(String(n.name||``)):a>o?-1:1})}function oG(e,t=Date.now()){return(Array.isArray(e)?e:[]).reduce((e,n)=>e+ +!$W(n,t),0)}function sG(){return{open:!1,id:``,name:``,value:``,submitting:!1,error:``}}var cG=new class{#e=j(N([]));get keys(){return R(this.#e)}set keys(e){M(this.#e,e,!0)}#t=j(!0);get available(){return R(this.#t)}set available(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}#r=j(``);get error(){return R(this.#r)}set error(e){M(this.#r,e,!0)}#i=j(``);get filter(){return R(this.#i)}set filter(e){M(this.#i,e,!0)}#a=j(!1);get showInactive(){return R(this.#a)}set showInactive(e){M(this.#a,e,!0)}#o=A(()=>aG(tG(this.keys,{query:this.filter,showInactive:this.showInactive})));get visibleKeys(){return R(this.#o)}set visibleKeys(e){M(this.#o,e)}#s=A(()=>oG(this.keys));get inactiveCount(){return R(this.#s)}set inactiveCount(e){M(this.#s,e)}#c=j(!1);get formOpen(){return R(this.#c)}set formOpen(e){M(this.#c,e,!0)}#l=j(!1);get formSubmitting(){return R(this.#l)}set formSubmitting(e){M(this.#l,e,!0)}#u=j(``);get issuedValue(){return R(this.#u)}set issuedValue(e){M(this.#u,e,!0)}#d=j(``);get deactivatingID(){return R(this.#d)}set deactivatingID(e){M(this.#d,e,!0)}#f=j(``);get dashboardAccessID(){return R(this.#f)}set dashboardAccessID(e){M(this.#f,e,!0)}#p=j(N(KW()));get form(){return R(this.#p)}set form(e){M(this.#p,e,!0)}#m=j(N(sG()));get labelsEditor(){return R(this.#m)}set labelsEditor(e){M(this.#m,e,!0)}copyState=OI({logPrefix:`Failed to copy auth key:`});async fetchKeys(){this.loading=!0,this.error=``;try{let e=await Tk(`/admin/auth-keys`,{label:`auth keys`,errorFallback:`Unable to load API keys.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.keys=[];return}if(e.status===`error`){e.result&&(this.available=!0),this.error=e.error;return}this.available=!0,this.keys=e.items}finally{this.loading=!1}}openForm(){this.formSubmitting||this.formOpen||(this.formOpen=!0,this.error=``,this.issuedValue||(this.copyState.reset(),this.form=KW()))}closeForm(){this.formOpen&&(this.formOpen=!1,this.error=``,this.copyState.reset(),!this.formSubmitting&&!this.issuedValue&&(this.form=KW()))}copyIssuedValue(){return this.copyState.copy(this.issuedValue)}dismissIssuedKey(){this.issuedValue=``,this.copyState.reset(),this.form=KW()}async submitForm(){let e=XW(this.form);if(e.error){this.error=e.error;return}this.error=``,this.formSubmitting=!0;try{let t=await Ek(`/admin/auth-keys`,`POST`,e.payload,{label:`create API key`,errorFallback:`Failed to create API key.`,unavailableMessage:`Auth keys feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error,t.result&&t.result.status!==401&&console.error(`Failed to create API key:`,t.result.status,this.error);return}let n=t.result.data||{};this.issuedValue=n.value||``,this.formOpen=!0,this.copyState.reset(),this.form=KW(),this.fetchKeys()}finally{this.formSubmitting=!1}}openLabelsEditor(e){!e||this.labelsEditor.submitting||(this.labelsEditor={open:!0,id:e.id,name:e.name||``,value:(e.labels||[]).join(`, `),submitting:!1,error:``})}closeLabelsEditor(){!this.labelsEditor.open||this.labelsEditor.submitting||(this.labelsEditor=sG())}async submitLabelsEditor(){let e=this.labelsEditor;if(!e.open||e.submitting||!e.id)return;e.submitting=!0,e.error=``;let t={labels:qW(e.value)};try{let n=await Ek(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/labels`,`PUT`,t,{label:`update API key labels`,errorFallback:`Failed to update labels.`,unavailableMessage:`Auth keys feature is unavailable.`});if(n.status===`stale`)return;if(n.status===`unavailable`){this.available=!1,e.error=n.error;return}if(n.status===`error`){e.error=n.error,n.result&&n.result.status!==401&&console.error(`Failed to update auth key labels:`,n.result.status,e.error);return}of.success(`Labels updated for key "`+e.name+`".`),e.submitting=!1,this.closeLabelsEditor(),this.fetchKeys()}finally{e.submitting=!1}}async toggleDashboardAccess(e){if(!e||!e.active||this.dashboardAccessID)return;let t=!e.dashboard_access;this.dashboardAccessID=e.id;try{let n=await Ek(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/dashboard-access`,`PUT`,{dashboard_access:t},{label:`update API key dashboard access`,errorFallback:`Failed to update dashboard access.`,unavailableMessage:`Auth keys feature is unavailable.`});if(n.status===`stale`)return;if(n.status===`unavailable`){this.available=!1,of.error(n.error);return}if(n.status===`error`){n.result&&n.result.status!==401&&console.error(`Failed to update auth key dashboard access:`,n.result.status,n.error),of.error(n.error);return}of.success(`Dashboard access `+(t?`granted to`:`revoked for`)+` key "`+e.name+`".`),this.fetchKeys()}finally{this.dashboardAccessID=``}}async deactivateKey(e){if(!(!e||!e.active)&&window.confirm(`Deactivate key "`+e.name+`"? This cannot be undone.`)){this.deactivatingID=e.id;try{let t=await Ek(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/deactivate`,`POST`,void 0,{label:`deactivate API key`,errorFallback:`Failed to deactivate key.`,unavailableMessage:`Auth keys feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,of.error(t.error);return}if(t.status===`error`){t.result&&t.result.status!==401&&console.error(`Failed to deactivate auth key:`,t.result.status,t.error),of.error(t.error);return}of.success(`Key "`+e.name+`" deactivated.`),this.fetchKeys()}finally{this.deactivatingID=``}}}},lG=B(``),uG=B(`

        Store this key securely — it won’t be shown again.

        `),dG=B(``),fG=B(``),pG=B(``),mG=B(``),hG=B(`
        `);function gG(e,t){O(t,!0);{let t=A(()=>cG.issuedValue?``:cG.error),n=A(()=>cG.issuedValue?`Done, I’ve stored it`:`Create API Key`),r=A(()=>cG.issuedValue?Ll:lu);OA(e,{get open(){return cG.formOpen},title:`Create API Key`,ariaLabel:`API key editor`,get error(){return R(t)},get submitting(){return cG.formSubmitting},get submitLabel(){return R(n)},submittingLabel:`Creating...`,get submitIcon(){return R(r)},cancel:!1,dialogClass:`auth-key-editor`,onclose:()=>cG.closeForm(),onsubmit:()=>cG.issuedValue?cG.dismissIssuedKey():cG.submitForm(),children:(e,t)=>{var n=Xr(),r=F(n),i=e=>{var t=uG(),n=I(P(t),2),r=P(n),i=P(r,!0);D(r),DV(I(r,2),{get state(){return cG.copyState},onclick:()=>cG.copyIssuedValue()}),D(n);var a=I(n,2),o=e=>{V(e,lG())};U(a,e=>{cG.copyState.error&&e(o)}),D(t),L(()=>H(i,cG.issuedValue)),V(e,t)},a=e=>{var t=hG(),n=P(t),r=P(n),i=I(P(r),2);ea(i),D(r);var a=I(r,2),o=I(P(a),2);ea(o),D(a),D(n);var s=I(n,2),c=P(s);eD(c,{copyId:`auth-key-user-path-help-copy`,label:`API key user path help`,title:e=>{V(e,dG())},help:e=>{Ve(),V(e,Yr(`When set, this key overrides the configured user path request + header for audit logging and downstream request context.`))},$$slots:{title:!0,help:!0}});var l=I(c,2);ea(l),D(s);var u=I(s,2),d=P(u);eD(d,{copyId:`auth-key-labels-help-copy`,label:`API key labels help`,title:e=>{V(e,fG())},help:e=>{Ve(),V(e,Yr(`Every request authenticated with this key gets these labels, in addition to any labels from tagging headers. Labels show up in - usage analytics, the request log, and audit logs.`))},$$slots:{title:!0,help:!0}});var f=I(d,2);ea(f),D(u);var p=I(u,2),m=P(p);YT(m,{copyId:`auth-key-dashboard-access-help-copy`,label:`API key dashboard access help`,title:e=>{V(e,cW())},help:e=>{Ve(),V(e,Yr(`When off, this key is denied the dashboard and every /admin API + usage analytics, the request log, and audit logs.`))},$$slots:{title:!0,help:!0}});var f=I(d,2);ea(f),D(u);var p=I(u,2),m=P(p);eD(m,{copyId:`auth-key-dashboard-access-help-copy`,label:`API key dashboard access help`,title:e=>{V(e,pG())},help:e=>{Ve(),V(e,Yr(`When off, this key is denied the dashboard and every /admin API endpoint. Model endpoints and GET /v1/usage stay available to - the key. The master key always has dashboard access.`))},$$slots:{title:!0,help:!0}});var h=I(m,2),g=P(h);ea(g),Ve(2),D(h),D(p),Tk(I(p,2),{id:`auth-key-description`,label:`Description (optional)`,children:(e,t)=>{var n=lW();ut(n),la(n,()=>rW.form.description,e=>rW.form.description=e),V(e,n)},$$slots:{default:!0}}),D(t),la(i,()=>rW.form.name,e=>rW.form.name=e),la(o,()=>rW.form.expires_at,e=>rW.form.expires_at=e),la(l,()=>rW.form.user_path,e=>rW.form.user_path=e),la(f,()=>rW.form.labels,e=>rW.form.labels=e),ua(g,()=>rW.form.dashboard_access,e=>rW.form.dashboard_access=e),V(e,t)};U(r,e=>{rW.issuedValue?e(i):e(a,-1)}),V(e,n)},$$slots:{default:!0}})}k()}var fW=B(`

        `),pW=B(`

        Applies to new requests made with this key. Leave empty to remove all labels.

        `,1);function mW(e,t){O(t,!0),Ck(e,{get open(){return rW.labelsEditor.open},title:`Edit Labels`,ariaLabel:`API key labels editor`,get error(){return rW.labelsEditor.error},get submitting(){return rW.labelsEditor.submitting},submitLabel:`Save Labels`,cancel:!1,dialogClass:`auth-key-editor`,onclose:()=>rW.closeLabelsEditor(),onsubmit:()=>rW.submitLabelsEditor(),headerHint:e=>{var t=fW(),n=P(t,!0);D(t),L(()=>H(n,rW.labelsEditor.name)),V(e,t)},children:(e,t)=>{Tk(e,{id:`auth-key-labels-edit`,label:`Labels (comma-separated)`,children:(e,t)=>{var n=pW(),r=F(n);ea(r),Ve(2),la(r,()=>rW.labelsEditor.value,e=>rW.labelsEditor.value=e),V(e,n)},$$slots:{default:!0}})},$$slots:{headerHint:!0,default:!0}}),k()}var hW=B(` `),gW=B(`
        `),_W=B(``),vW=B(`Expired`),yW=B(` `),bW=B(` `,1),xW=B(`Deactivated`),SW=B(`
        `),CW=B(`
        NameDescriptionUser PathLabelsTokenDashboard Access ExpiresCreated
        `);function wW(e,t){O(t,!0);var n=CW(),r=P(n),i=P(r),a=P(i),o=I(P(a),5),s=P(o);J(I(P(s)),{get icon(){return Kc},width:`13`,height:`13`}),D(s),D(o),Ve(3),D(a),D(i);var c=I(i);W(c,21,()=>rW.visibleKeys,e=>e.id,(e,t)=>{var n=SW();let r;var i=P(n),a=P(i,!0);D(i);var o=I(i),s=P(o,!0);D(o);var c=I(o),l=P(c,!0);D(c);var u=I(c),d=P(u),f=e=>{var n=gW();W(n,20,()=>R(t).labels||[],e=>e,(e,t)=>{var n=hW(),r=P(n,!0);D(n),L(e=>{Bi(n,e),H(r,t)},[()=>GS(t)]),V(e,n)}),D(n),V(e,n)},p=e=>{V(e,_W())};U(d,e=>{(R(t).labels||[]).length>0?e(f):e(p,-1)}),D(u);var m=I(u),h=P(m),g=P(h,!0);D(h),D(m);var _=I(m),v=P(_);let y;var b=P(v,!0);D(v),D(_);var x=I(_),S=P(x),C=e=>{var n=yW(),r=P(n),i=P(r,!0);D(r);var a=I(r,2),o=e=>{V(e,vW())},s=A(()=>KU(R(t)));U(a,e=>{R(s)&&e(o)}),D(n),L(e=>H(i,e),[()=>hd(R(t).expires_at)]),V(e,n)},w=e=>{V(e,Yr(`—`))};U(S,e=>{R(t).expires_at?e(C):e(w,-1)}),D(x);var T=I(x),E=P(T,!0);D(T);var ee=I(T),te=P(ee),ne=P(te),re=e=>{var n=bW(),r=F(n);{let e=A(()=>(R(t).dashboard_access?`Revoke dashboard access for API key `:`Grant dashboard access to API key `)+R(t).name),n=A(()=>!!rW.dashboardAccessID);yO(r,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>rW.toggleDashboardAccess(R(t)),get disabled(){return R(n)},children:(e,n)=>{{let n=A(()=>R(t).dashboard_access?hl:ml);J(e,{get icon(){return R(n)},class:`table-icon-svg`})}},$$slots:{default:!0}})}var i=I(r,2);{let e=A(()=>`Edit labels for API key `+R(t).name);yO(i,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>rW.openLabelsEditor(R(t)),children:(e,t)=>{J(e,{get icon(){return nl},class:`table-icon-svg`})},$$slots:{default:!0}})}var a=I(i,2);{let e=A(()=>(rW.deactivatingID===R(t).id?`Deactivating API key `:`Deactivate API key `)+R(t).name),n=A(()=>rW.deactivatingID===R(t).id);yO(a,{get label(){return R(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>rW.deactivateKey(R(t)),get disabled(){return R(n)},children:(e,t)=>{J(e,{get icon(){return al},class:`table-icon-svg`})},$$slots:{default:!0}})}V(e,n)},ie=e=>{var n=xW();L(e=>K(n,`title`,e),[()=>R(t).deactivated_at?`Deactivated on `+gd(R(t).deactivated_at):`Deactivated`]),V(e,n)},ae=A(()=>qU(R(t)));U(ne,e=>{R(t).active?e(re):R(ae)&&e(ie,1)}),D(te),D(ee),D(n),L((e,i,o)=>{r=G(n,1,`svelte-nf0ldb`,null,r,e),H(a,R(t).name),H(s,R(t).description||`—`),H(l,R(t).user_path||`—`),H(g,R(t).redacted_value),y=G(v,1,`auth-key-status-badge`,null,y,{"auth-key-status-active":R(t).dashboard_access,"auth-key-status-inactive":!R(t).dashboard_access}),H(b,R(t).dashboard_access?`Allowed`:`Denied`),K(x,`title`,i),H(E,o)},[()=>({"auth-key-row-deactivated":qU(R(t))}),()=>R(t).expires_at?gd(R(t).expires_at):``,()=>lu.formatTimestamp(R(t).created_at)]),V(e,n)}),D(c),D(r),D(n),V(e,n),k()}var TW=B(``),EW=B(`
        API key management is unavailable.
        `),DW=B(``),OW=B(`

        Managed API keys authenticate requests to the gateway. Deactivation is - permanent — create a new key if access needs to be restored.

        `),kW=B(`
        `),AW=B(`
        `),jW=B(`

        `),MW=B(`

        No API keys yet. Issue a key to get started.

        `),NW=B(`
        `);function PW(e,t){O(t,!0),On(()=>{Y.refreshTick,Bl.page===`auth-keys`&&rW.fetchKeys()});var n=NW(),r=P(n),i=I(P(r),2),a=P(i),o=e=>{var t=TW();J(P(t),{get icon(){return il},class:`table-icon-svg`}),Ve(2),D(t),L(()=>t.disabled=rW.formSubmitting),z(`click`,t,()=>{rW.formSubmitting||rW.openForm()}),V(e,t)};U(a,e=>{rW.available&&!Y.authError&&e(o)}),D(i),D(r);var s=I(r,2),c=e=>{V(e,EW())};U(s,e=>{!rW.available&&!Y.authError&&e(c)});var l=I(s,2),u=e=>{var t=DW(),n=P(t,!0);D(t),L(()=>H(n,rW.error)),V(e,t)};U(l,e=>{rW.error&&!Y.authError&&!rW.formOpen&&e(u)});var d=I(l,2),f=e=>{V(e,OW())};U(d,e=>{rW.available&&!Y.authError&&e(f)});var p=I(d,2);dW(p,{});var m=I(p,2);mW(m,{});var h=I(m,2),g=e=>{var t=kW();wT(P(t),{size:18,label:`Loading API keys`}),D(t),V(e,t)};U(h,e=>{rW.loading&&rW.keys.length===0&&e(g)});var _=I(h,2),v=e=>{var t=AW(),n=P(t);SD(P(n),{placeholder:`Filter by name, description, user path, label, or token...`,label:`Filter API keys by name, description, user path, label, or token`,get value(){return rW.filter},set value(e){rW.filter=e}}),D(n);var r=I(n,2),i=P(r),a=P(i);ea(a);var o=I(a,2),s=I(P(o)),c=e=>{var t=Yr();L(()=>H(t,`(${rW.inactiveCount??``})`)),V(e,t)};U(s,e=>{rW.inactiveCount>0&&e(c)}),D(o),D(i),D(r),D(t),ua(a,()=>rW.showInactive,e=>rW.showInactive=e),V(e,t)};U(_,e=>{rW.keys.length>0&&rW.available&&e(v)});var y=I(_,2),b=e=>{wW(e,{})};U(y,e=>{rW.visibleKeys.length>0&&rW.available&&e(b)});var x=I(y,2),S=e=>{var t=jW(),n=P(t);D(t),L(()=>H(n,`No API keys match the current filter.${rW.inactiveCount>0&&!rW.showInactive?` `+rW.inactiveCount+` inactive `+(rW.inactiveCount===1?`key is`:`keys are`)+` hidden.`:``}`)),V(e,t)};U(x,e=>{rW.keys.length>0&&rW.visibleKeys.length===0&&rW.available&&e(S)});var C=I(x,2),w=e=>{V(e,MW())};U(C,e=>{rW.keys.length===0&&!rW.loading&&!Y.authError&&!rW.error&&rW.available&&e(w)}),D(n),V(e,n),k()}Br([`click`]);var FW=B(`

        Timezone

        `),IW=B(``),LW=B(``),RW=B(`
        `,1);function zW(e,t){O(t,!0);function n(){lu.saveOverride(),Y.refresh()}function r(){lu.clearOverride(),Y.refresh()}var i=RW(),a=F(i);YT(P(a),{copyId:`timezone-help-copy`,label:`timezone help`,text:`Day-based analytics, charts, and date filters use your effective timezone. Usage and audit logs keep UTC in the hover title while rendering row timestamps in your effective timezone.`,title:e=>{V(e,FW())},$$slots:{title:!0}}),D(a);var o=I(a,2),s=P(o),c=I(P(s),2),l=P(c),u=P(l);D(l),l.value=l.__value=``,W(I(l),17,()=>lu.options,e=>e.value,(e,t)=>{var n=IW(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(c),D(s),D(o);var d=I(o,2),f=P(d),p=e=>{var t=LW();z(`click`,t,r),V(e,t)};U(f,e=>{lu.override&&e(p)}),D(d),L(e=>H(u,`Automatic (${e??``})`),[()=>lu.detectedTimeZoneLabel()]),zr(`focus`,c,()=>lu.ensureOptions()),z(`change`,c,n),Ui(c,()=>lu.override,e=>lu.override=e),V(e,i),k()}Br([`change`,`click`]);var BW=B(``),VW=B(`

        Failover

        `,1);function HW(e,t){O(t,!0);let n=A(()=>Q.failoverSaving||Q.failoverGenerating||Q.failoverDraftSaving||!Q.failoverAvailable||!Q.failoverEnabled());var r=VW(),i=F(r),a=I(P(i),2),o=P(a),s=P(o);J(s,{get icon(){return El},class:`form-action-icon`});var c=I(s,2),l=P(c,!0);D(c),D(o);var u=I(o,2);J(P(u),{get icon(){return xl},class:`form-action-icon`}),Ve(2),D(u),D(a),D(i);var d=I(i,2),f=P(d),p=e=>{var t=BW(),n=P(t,!0);D(t),L(()=>H(n,Q.failoverError)),V(e,t)};U(f,e=>{Q.failoverError&&e(p)}),D(d),vP(I(d,2),{}),L(()=>{o.disabled=R(n),H(l,Q.failoverGenerating?`Generating...`:`Generate failover models automatically`),u.disabled=R(n)}),z(`click`,o,()=>Q.generateFailoverRules()),z(`click`,u,()=>Q.openFailoverResetDialog()),V(e,r),k()}Br([`click`]);function UW(){return{daily_reset_hour:0,daily_reset_minute:0,weekly_reset_weekday:1,weekly_reset_hour:0,weekly_reset_minute:0,monthly_reset_day:1,monthly_reset_hour:0,monthly_reset_minute:0}}function WW(e,t){let n=t||{},r=(e,t)=>{if(e===``)return t;let n=Number(e);return Number.isFinite(n)&&Number.isInteger(n)?Math.trunc(n):t},i=(e,t)=>r(n[e],t),a=(t,n)=>e?r(e[t],n):n;return{daily_reset_hour:a(`daily_reset_hour`,i(`daily_reset_hour`,0)),daily_reset_minute:a(`daily_reset_minute`,i(`daily_reset_minute`,0)),weekly_reset_weekday:a(`weekly_reset_weekday`,i(`weekly_reset_weekday`,1)),weekly_reset_hour:a(`weekly_reset_hour`,i(`weekly_reset_hour`,0)),weekly_reset_minute:a(`weekly_reset_minute`,i(`weekly_reset_minute`,0)),monthly_reset_day:a(`monthly_reset_day`,i(`monthly_reset_day`,1)),monthly_reset_hour:a(`monthly_reset_hour`,i(`monthly_reset_hour`,0)),monthly_reset_minute:a(`monthly_reset_minute`,i(`monthly_reset_minute`,0))}}function GW(){return[{value:0,label:`Sunday`},{value:1,label:`Monday`},{value:2,label:`Tuesday`},{value:3,label:`Wednesday`},{value:4,label:`Thursday`},{value:5,label:`Friday`},{value:6,label:`Saturday`}]}var KW=B(`

        Budget Resets

        `),qW=B(``),JW=B(`

        If the selected day does not exist in a month, the reset runs on - the last day of that month.

        `),YW=B(``),XW=B(``),ZW=B(`
        Monthly
        Weekly
        Daily
        `,1);function QW(e,t){O(t,!0);let n=j(N(UW())),r=j(!1),i=j(!1),a=j(``),o=j(!1),s=A(()=>bu.budgetsVisible());async function c(){if(await bu.ensureLoaded(),!bu.budgetsVisible()){M(a,``);return}M(r,!0),M(a,``);try{let e=await hu(`/admin/budgets/settings`,{label:`budget settings`});if(e.stale)return;if(!e.ok){M(a,`Unable to load budget settings.`);return}M(n,WW(e.data,R(n)),!0)}catch(e){console.error(`Failed to fetch budget settings:`,e),M(a,`Unable to load budget settings.`)}finally{M(r,!1)}}async function l(){if(!R(i)){M(i,!0);try{let e=await gu(`/admin/budgets/settings`,`PUT`,WW(R(n),R(n)),{label:`budget settings`});if(e.stale)return;if(!e.ok){ed.error(`Unable to save budget settings.`);return}M(n,WW(e.data,R(n)),!0),M(a,``),ed.success(`Budget settings saved.`)}catch(e){console.error(`Failed to save budget settings:`,e),ed.error(`Unable to save budget settings.`)}finally{M(i,!1)}}}On(()=>{Y.refreshTick,c()});var u=Xr(),d=F(u),f=e=>{var t=ZW(),s=F(t),c=P(s);YT(c,{copyId:`budget-settings-help-copy`,label:`budget help`,text:`Budget reset anchors are stored in the database and evaluated in UTC. Hourly budgets reset at the top of each hour.`,title:e=>{V(e,KW())},$$slots:{title:!0}});var u=I(c,2),d=P(u),f=I(P(d),2),p=P(f);YT(p,{copyId:`budget-monthly-day-help-copy`,label:`day of month help`,external:!0,get open(){return R(o)},set open(e){M(o,e,!0)},title:e=>{V(e,qW())},$$slots:{title:!0}});var m=I(p,2);ea(m),D(f);var h=I(f,2),g=I(P(h),2);ea(g),D(h);var _=I(h,2),v=I(P(_),2);ea(v),D(_);var y=I(_,2),b=P(y),x=e=>{V(e,JW())};U(b,e=>{R(o)&&e(x)}),D(y),D(d);var S=I(d,2),C=I(P(S),2),w=I(P(C),2);W(w,21,GW,e=>e.value,(e,t)=>{var n=YW(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(w),D(C);var T=I(C,2),E=I(P(T),2);ea(E),D(T);var ee=I(T,2),te=I(P(ee),2);ea(te),D(ee),Ve(2),D(S);var ne=I(S,2),re=I(P(ne),4),ie=I(P(re),2);ea(ie),D(re);var ae=I(re,2),oe=I(P(ae),2);ea(oe),D(ae),Ve(2),D(ne),D(u);var se=I(u,2),ce=P(se);J(P(ce),{get icon(){return cl},class:`form-action-icon`}),Ve(2),D(ce);var le=I(ce,2),ue=e=>{wT(e,{size:16,label:`Loading budget settings`})};U(le,e=>{R(r)&&e(ue)}),D(se),D(s);var de=I(s,2),fe=P(de),pe=e=>{var t=XW(),n=P(t,!0);D(t),L(()=>H(n,R(a))),V(e,t)};U(fe,e=>{R(a)&&e(pe)}),D(de),L(()=>{ce.disabled=R(i)||R(r),K(ce,`aria-busy`,R(i)?`true`:`false`)}),la(m,()=>R(n).monthly_reset_day,e=>R(n).monthly_reset_day=e),la(g,()=>R(n).monthly_reset_hour,e=>R(n).monthly_reset_hour=e),la(v,()=>R(n).monthly_reset_minute,e=>R(n).monthly_reset_minute=e),Ui(w,()=>R(n).weekly_reset_weekday,e=>R(n).weekly_reset_weekday=e),la(E,()=>R(n).weekly_reset_hour,e=>R(n).weekly_reset_hour=e),la(te,()=>R(n).weekly_reset_minute,e=>R(n).weekly_reset_minute=e),la(ie,()=>R(n).daily_reset_hour,e=>R(n).daily_reset_hour=e),la(oe,()=>R(n).daily_reset_minute,e=>R(n).daily_reset_minute=e),z(`click`,ce,l),V(e,t)};U(d,e=>{R(s)&&e(f)}),V(e,u),k()}Br([`click`]);var $W=B(`

        Reset All Budgets

        Start new budget periods for every configured budget without changing - the limits.

        `);function eG(e,t){O(t,!0);var n=Xr(),r=F(n),i=e=>{var t=$W(),n=I(P(t),2),r=P(n);J(P(r),{get icon(){return sl},class:`form-action-icon`}),Ve(2),D(r),D(n),D(t),L(()=>r.disabled=X.resetAllLoading),z(`click`,r,()=>X.openResetDialog()),V(e,t)},a=A(()=>bu.budgetsVisible());U(r,e=>{R(a)&&e(i)}),V(e,n),k()}Br([`click`]);function tG(){return{header:``,prefix:``,do_not_pass:!1,delimiter:``,managed:!1}}function nG(e){return(e&&Array.isArray(e.headers)?e.headers:[]).map(e=>({header:typeof e.header==`string`?e.header:``,prefix:typeof e.prefix==`string`?e.prefix:``,do_not_pass:e.do_not_pass===!0,delimiter:typeof e.delimiter==`string`&&e.delimiter!==`,`?e.delimiter:``,managed:e.managed===!0}))}function rG(e){return{headers:(Array.isArray(e)?e:[]).filter(e=>!e.managed&&e.header.trim()!==``).map(e=>({header:e.header.trim(),prefix:e.prefix,do_not_pass:e.do_not_pass,delimiter:e.delimiter}))}}function iG(e){return e&&e.error&&e.error.message?e.error.message:``}var aG=B(`

        Tagging based on headers

        `),oG=B(`config`),sG=B(``),cG=B(`
        `),lG=B(`

        No tagging headers configured. Requests are not labelled.

        `),uG=B(``),dG=B(`
        `,1);function fG(e,t){O(t,!0);let n=j(N([])),r=j(!0),i=j(!1),a=j(!1),o=j(``);function s(){R(n).push(tG())}function c(e){let t=R(n)[e];!t||t.managed||R(n).splice(e,1)}async function l(){M(i,!0),M(o,``);try{let e=await hu(`/admin/tagging/settings`,{label:`tagging settings`});if(e.stale)return;if(!e.ok){M(o,`Unable to load tagging settings.`);return}M(n,nG(e.data),!0),M(r,e.data&&e.data.editable!==!1,!0)}catch(e){console.error(`Failed to fetch tagging settings:`,e),M(o,`Unable to load tagging settings.`)}finally{M(i,!1)}}async function u(){if(!(R(a)||!R(r))){M(a,!0);try{let e=await gu(`/admin/tagging/settings`,`PUT`,rG(R(n)),{label:`tagging settings`});if(e.stale)return;if(!e.ok){ed.error(e.status!==401&&iG(e.data)||`Unable to save tagging settings.`);return}M(n,nG(e.data),!0),M(r,e.data&&e.data.editable!==!1,!0),M(o,``),ed.success(`Tagging settings saved.`)}catch(e){console.error(`Failed to save tagging settings:`,e),ed.error(`Unable to save tagging settings.`)}finally{M(a,!1)}}}On(()=>{Y.refreshTick,l()});var d=dG(),f=F(d),p=P(f);YT(p,{copyId:`tagging-settings-help-copy`,label:`tagging help`,text:`Each request is labelled from the listed headers; labels land in usage tracking and audit logs. A header value can carry several labels split by the delimiter (default: comma). The prefix is trimmed from each label only — the header itself is forwarded unchanged unless 'Do not pass' is checked. Rows marked CONFIG come from config.yaml or TAGGING_HEADER_* env vars and are read-only here.`,title:e=>{V(e,aG())},$$slots:{title:!0}});var m=I(p,2),h=P(m);W(h,17,()=>R(n),ii,(e,t,n)=>{var i=cG(),a=P(i),o=P(a);K(o,`for`,`tagging-header-`+n);var s=I(o,2);ea(s),K(s,`id`,`tagging-header-`+n),D(a);var l=I(a,2),u=P(l);K(u,`for`,`tagging-prefix-`+n);var d=I(u,2);ea(d),K(d,`id`,`tagging-prefix-`+n),D(l);var f=I(l,2),p=P(f);K(p,`for`,`tagging-delimiter-`+n);var m=I(p,2);ea(m),K(m,`id`,`tagging-delimiter-`+n),D(f);var h=I(f,2),g=P(h);ea(g),Ve(2),D(h);var _=I(h,2),v=P(_),y=e=>{V(e,oG())},b=e=>{var i=sG();L(()=>{i.disabled=!R(r),K(i,`aria-label`,`Remove tagging header `+(R(t).header||n+1))}),z(`click`,i,()=>c(n)),V(e,i)};U(v,e=>{R(t).managed?e(y):e(b,-1)}),D(_),D(i),L(()=>{s.disabled=R(t).managed||!R(r),d.disabled=R(t).managed||!R(r),m.disabled=R(t).managed||!R(r),g.disabled=R(t).managed||!R(r)}),la(s,()=>R(t).header,e=>R(t).header=e),la(d,()=>R(t).prefix,e=>R(t).prefix=e),la(m,()=>R(t).delimiter,e=>R(t).delimiter=e),ua(g,()=>R(t).do_not_pass,e=>R(t).do_not_pass=e),V(e,i)});var g=I(h,2),_=e=>{wT(e,{size:16,label:`Loading tagging settings`})};U(g,e=>{R(i)&&e(_)});var v=I(g,2),y=e=>{V(e,lG())};U(v,e=>{!R(i)&&R(n).length===0&&e(y)}),D(m);var b=I(m,2),x=P(b);J(P(x),{get icon(){return il},class:`form-action-icon`}),Ve(2),D(x);var S=I(x,2);J(P(S),{get icon(){return cl},class:`form-action-icon`}),Ve(2),D(S),D(b),D(f);var C=I(f,2),w=P(C),T=e=>{var t=uG(),n=P(t,!0);D(t),L(()=>H(n,R(o))),V(e,t)};U(w,e=>{R(o)&&e(T)}),D(C),L(()=>{x.disabled=!R(r)||R(a)||R(i),S.disabled=!R(r)||R(a)||R(i),K(S,`aria-busy`,R(a)?`true`:`false`)}),z(`click`,x,s),z(`click`,S,u),V(e,d),k()}Br([`click`]);function pG(e){let t=e||{};if(t.selectedPreset)return{days:parseInt(t.selectedPreset,10)||30};let n=t.customStartDate?md(t.customStartDate):``,r=t.customEndDate||t.today||null;return{start_date:n,end_date:r?md(r):``}}function mG(e,t,n,r){return{...pG(e),user_path:String(t||``).trim(),selector:String(n||``).trim(),confirmation:r}}function hG(e){let t=Number(e&&e.matched||0),n=Number(e&&e.recalculated||0),r=Number(e&&e.without_pricing||0),i=`Pricing recalculated for `+n+` of `+t+` usage record`+(t===1?``:`s`)+`.`;return r>0&&(i+=` `+r+` usage record`+(r===1?` still lacks`:`s still lack`)+` pricing metadata.`),i}var gG=B(`

        Usage Pricing Recalculation

        `),_G=B(`
        `);function vG(e,t){O(t,!0);let n=j(``),r=j(``),i=j(!1),a=A(()=>bu.booleanFlag(`USAGE_PRICING_RECALCULATION_ENABLED`,!1));function o(){if(!R(a)){ed.error(`Usage pricing recalculation is unavailable.`);return}R(i)||zu.open({title:`Recalculate Pricing`,titleId:`pricingRecalculateDialogTitle`,inputId:`pricing-recalculate-confirmation`,requiredText:`recalculate`,confirmLabel:`Recalculate Pricing`,icon:Dc,dialogClass:`pricing-recalculate-dialog`,message:`Stored usage cost fields matching the selected filters will be overwritten.`,onConfirm:()=>s()})}async function s(){if(!R(a)){ed.error(`Usage pricing recalculation is unavailable.`);return}if(!R(i)){M(i,!0);try{let e=await gu(`/admin/usage/recalculate-pricing`,`POST`,mG({selectedPreset:Fd.selectedPreset,customStartDate:Fd.customStartDate,customEndDate:Fd.customEndDate,today:lu.todayDate()},R(n),R(r),`recalculate`),{label:`pricing recalculation`});if(e.stale)return;if(!e.ok){zu.error=`Unable to recalculate pricing.`;return}zu.close(),ed.success(hG(e.data)),Vd.fetchUsage()}catch(e){console.error(`Failed to recalculate pricing:`,e),zu.error=`Unable to recalculate pricing.`}finally{M(i,!1)}}}var c=Xr(),l=F(c),u=e=>{var t=_G(),s=P(t);YT(s,{copyId:`pricing-recalculate-help-copy`,label:`pricing recalculation help`,text:`Recalculate stored input, output, total, and Pro Saved costs from the current model pricing metadata. This overwrites matching historical cost fields. Filters are applied to the selected date range, user path subtree, and provider/model selector or alias.`,title:e=>{V(e,gG())},$$slots:{title:!0}});var c=I(s,2),l=P(c),u=I(P(l),2);rf(P(u),{}),D(u),D(l);var d=I(l,2),f=I(P(d),2);ea(f),D(d);var p=I(d,2),m=I(P(p),2);ea(m),D(p),D(c);var h=I(c,2),g=P(h);J(P(g),{get icon(){return Dc},class:`form-action-icon`}),Ve(2),D(g),D(h),D(t),L(()=>{g.disabled=R(i)||!R(a),K(g,`aria-busy`,R(i)?`true`:`false`)}),la(f,()=>R(n),e=>M(n,e)),la(m,()=>R(r),e=>M(r,e)),z(`click`,g,o),V(e,t)};U(l,e=>{R(a)&&e(u)}),V(e,c),k()}Br([`click`]);function yG(e){return String(e&&e.status||`ok`).toLowerCase()}function bG(e){if(!e||typeof e!=`object`)return`Runtime refresh completed.`;let t=Number(e.model_count||0),n=Number(e.provider_count||0),r=yG(e);return(r===`ok`?`Runtime refreshed.`:r===`partial`?`Runtime refresh completed with warnings.`:`Runtime refresh failed.`)+` `+t+` model`+(t===1?``:`s`)+` across `+n+` provider`+(n===1?``:`s`)+`.`}function xG(e){return!!e&&yG(e)===`ok`}function SG(e){let t=e&&e.steps;return Array.isArray(t)?t:[]}function CG(e){let t=String(e&&e.name||``).replace(/_/g,` `),n=String(e&&e.status||``).trim(),r=String(e&&(e.error||e.message)||``).trim();return t?r?t+`: `+n+` - `+r:t+`: `+n:r||n||``}var wG=B(`

        Runtime Refresh

        `),TG=B(`
      • `),EG=B(`
          `),DG=B(`
          `,1);function OG(e,t){O(t,!0);let n=j(!1),r=j(null);async function i(){if(!R(n)){M(n,!0),M(r,null);try{let e=await gu(`/admin/runtime/refresh`,`POST`,void 0,{label:`runtime refresh`});if(e.stale)return;if(!e.ok){ed.error(`Runtime refresh failed.`);return}M(r,e.data&&typeof e.data==`object`?e.data:null,!0),xG(R(r))?ed.success(bG(R(r))):ed.error(bG(R(r))),Y.refresh()}catch(e){console.error(`Failed to refresh runtime:`,e),ed.error(`Runtime refresh failed.`)}finally{M(n,!1)}}}var a=DG(),o=F(a),s=P(o);YT(s,{copyId:`runtime-refresh-help-copy`,label:`runtime refresh help`,text:`Pull the latest model metadata, provider inventory, API keys, aliases, model access rules, guardrails, and workflows.`,title:e=>{V(e,wG())},$$slots:{title:!0}});var c=I(s,2),l=P(c);let u;J(P(l),{get icon(){return ol},class:`settings-refresh-icon`}),Ve(2),D(l),D(c),D(o);var d=I(o,2),f=P(d),p=e=>{var t=EG();W(t,21,()=>SG(R(r)),e=>e.name,(e,t)=>{var n=TG(),r=P(n,!0);D(n),L(e=>{G(n,1,`runtime-refresh-step is-${R(t).status??``}`,`svelte-yeq2mp`),H(r,e)},[()=>CG(R(t))]),V(e,n)}),D(t),V(e,t)},m=A(()=>SG(R(r)).length>0);U(f,e=>{R(m)&&e(p)}),D(d),L(()=>{u=G(l,1,`btn btn-primary btn-with-icon settings-refresh-btn`,null,u,{"is-refreshing":R(n)}),l.disabled=R(n),K(l,`aria-busy`,R(n)?`true`:`false`)}),z(`click`,l,i),V(e,a),k()}Br([`click`]);var kG=B(``),AG=B(`

          `),jG=B(`

          `),MG=B(``),NG=B(`
          `),PG=B(`

          AI Processing

          `);function FG(e,t){O(t,!0);let n=j(N([])),r=j(!1),i=j(``),a=j(``);async function o(){M(r,!0),M(a,``);try{let e=await hu(`/admin/runtime/settings`,{label:`runtime settings`});if(e.stale)return;if(!e.ok){M(a,`Unable to load runtime settings.`);return}M(n,Array.isArray(e.data?.settings)?e.data.settings:[],!0)}catch(e){console.error(`Failed to load runtime settings:`,e),M(a,`Unable to load runtime settings.`)}finally{M(r,!1)}}async function s(e,t,r){if(!(e.locked||R(i))){M(i,e.key,!0);try{let i=await gu(`/admin/runtime/settings/${encodeURIComponent(e.key)}`,`PUT`,{value:t},{label:`save ${e.label}`});if(i.stale){r.value=e.value;return}if(!i.ok){r.value=e.value,ed.error(`Unable to save ${e.label}.`);return}M(n,R(n).map(t=>t.key===e.key?i.data:t),!0),ed.success(`${e.label} saved.`)}catch(t){r.value=e.value,console.error(`Failed to save runtime setting:`,t),ed.error(`Unable to save ${e.label}.`)}finally{M(i,``)}}}On(()=>{Y.refreshTick,o()});var c=Xr(),l=F(c),u=e=>{var t=PG(),o=P(t),c=I(P(o),2),l=e=>{var t=kG(),n=P(t,!0);D(t),L(()=>H(n,R(a))),V(e,t)};U(c,e=>{R(a)&&e(l)}),D(o);var u=I(o,2);W(u,21,()=>R(n),e=>e.key,(e,t)=>{var n=NG(),r=P(n),a=P(r),o=P(a,!0);D(a);var c=I(a,2),l=e=>{var n=AG(),r=P(n,!0);D(n),L(()=>H(r,R(t).description)),V(e,n)};U(c,e=>{R(t).description&&e(l)});var u=I(c,2),d=e=>{var n=jG(),r=P(n);D(n),L(()=>H(r,`Managed by ${(R(t).managed_by||`environment`)??``}`)),V(e,n)};U(u,e=>{R(t).locked&&e(d)}),D(r);var f=I(r,2);W(f,21,()=>R(t).options||[],e=>e.value,(e,t)=>{var n=MG(),r=P(n,!0);D(n);var i={};L(()=>{K(n,`title`,R(t).description||``),H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(f);var p;Hi(f),D(n),L(()=>{K(a,`for`,`runtime-setting-${R(t).key}`),H(o,R(t).label),K(f,`id`,`runtime-setting-${R(t).key}`),f.disabled=R(t).locked||R(i)!==``,p!==(p=R(t).value)&&(f.value=(f.__value=R(t).value)??``,Vi(f,R(t).value))}),z(`change`,f,e=>s(R(t),e.currentTarget.value,e.currentTarget)),V(e,n)}),D(u),D(t),L(()=>K(u,`aria-busy`,R(r)?`true`:`false`)),V(e,t)};U(l,e=>{(R(n).length>0||R(a))&&e(u)}),V(e,c),k()}Br([`change`]);var IG=B(`
          `);function LG(e,t){O(t,!0),On(()=>{Y.refreshTick,Bl.page===`settings`&&(lu.ensureOptions(),bu.ensureLoaded())});var n=IG(),r=I(P(n),2),i=P(r);zW(i,{});var a=I(i,2);HW(a,{});var o=I(a,2);QW(o,{});var s=I(o,2);eG(s,{});var c=I(s,2);fG(c,{});var l=I(c,2);FG(l,{});var u=I(l,2);vG(u,{}),OG(I(u,2),{}),D(r);var d=I(r,2),f=P(d,!0);D(d),D(n),L(e=>H(f,e),[()=>Fl()]),V(e,n),k()}var RG=B(`
          `),zG=B(`
           
          `),BG=B(`
           
          `),VG=B(`
           
          `),HG=B(`
          `),UG=B(`
          `,1),WG=B(`
          `);function GG(e,t){O(t,!0);let n=q(t,`showPromptCache`,3,!0),r=CF({logPrefix:`Failed to copy interaction message:`}),i=A(()=>t.msg.role===`function_call`||t.msg.role===`function_result`);function a(e){return(Math.max(0,Math.min(1,Number(e||0)))*100).toFixed(1)+`%`}function o(e){let t=Math.max(0,Math.min(1,Number(e||0)));return t>0?Math.round(t*100)+`% of this visible prompt item is estimated provider-cached`:void 0}function s(e){return e.role===`function_call`?(e.toolCalls||[]).map(e=>e.name+`()`).join(`, `):(e.functionName?e.functionName+`: `:``)+e.text}var c=WG();let l;var u=P(c),d=e=>{var r=zG(),i=P(r),a=P(i),c=P(a,!0);D(a);var l=I(a,2),u=P(l,!0);D(l);var d=I(l,2),f=P(d,!0);D(d),D(i);var p=I(i,2),m=e=>{var n=RG(),r=P(n);D(n),L(()=>H(r,`Call ID: ${t.msg.functionCallID??``}`)),V(e,n)};U(p,e=>{t.msg.functionCallID&&e(m)});var h=I(p,2),g=e=>{var n=Xr();W(F(n),17,()=>t.msg.toolCalls,ii,(e,n)=>{var r=Xr(),i=F(r),a=e=>{var r=RG(),i=P(r);D(r),L(()=>H(i,`Call ID${t.msg.toolCalls.length>1?` (`+R(n).name+`)`:``}: ${R(n).id??``}`)),V(e,r)};U(i,e=>{R(n).id&&e(a)}),V(e,r)}),V(e,n)};U(h,e=>{t.msg.role===`function_call`&&t.msg.toolCalls&&e(g)});var _=I(h,2),v=P(_,!0);D(_),D(r),L((e,n,i,a)=>{K(r,`title`,e),H(c,t.msg.roleLabel),H(u,n),H(f,i),H(v,a)},[()=>n()?o(t.msg.promptCacheRatio):void 0,()=>s(t.msg),()=>lu.formatTimestamp(t.msg.timestamp),()=>rB(t.msg)]),V(e,r)},f=e=>{var r=UG(),i=F(r),a=P(i),s=P(a,!0);D(a);var c=I(a,2),l=P(c,!0);D(c),D(i);var u=I(i,2),d=e=>{var r=BG(),i=P(r,!0);D(r),L(e=>{K(r,`title`,e),H(i,t.msg.text)},[()=>n()?o(t.msg.promptCacheRatio):void 0]),V(e,r)};U(u,e=>{t.msg.text&&e(d)});var f=I(u,2),p=e=>{var n=HG();W(n,23,()=>t.msg.toolCalls,(e,t)=>e.name+`-`+t,(e,t)=>{var n=VG(),r=P(n),i=P(r),a=P(i,!0);D(i);var o=I(i,2),s=P(o,!0);D(o),D(r);var c=I(r,2),l=e=>{var n=RG(),r=P(n);D(n),L(()=>H(r,`Call ID: ${R(t).id??``}`)),V(e,n)};U(c,e=>{R(t).id&&e(l)});var u=I(c,2),d=P(u,!0);D(u),D(n),L((e,n)=>{H(a,R(t).name+`()`),H(s,e),H(d,n)},[()=>aB(R(t))||`No arguments`,()=>aB(R(t))||`No arguments`]),V(e,n)}),D(n),V(e,n)};U(f,e=>{t.msg.toolCalls&&e(p)}),L((e,n)=>{K(i,`title`,e),H(s,t.msg.roleLabel),H(l,n)},[()=>n()?o(t.msg.promptCacheRatio):void 0,()=>lu.formatTimestamp(t.msg.timestamp)]),V(e,r)};U(u,e=>{R(i)?e(d):e(f,-1)});var p=I(u,2);let m;var h=P(p);{let e=A(()=>r.copied?Lc:Bc);J(h,{get icon(){return R(e)},width:`14`,height:`14`})}D(p),D(c),L(e=>{G(c,1,Ni([R(i)?`chat-function-note`:`chat-message`,t.msg.roleClass,{"is-anchor":t.msg.isAnchor,"is-after-anchor":t.msg.isAfterAnchor}]),`svelte-12s99s5`),K(c,`data-conversation-anchor`,t.msg.isAnchor?`true`:void 0),K(c,`data-entry-id`,t.msg.entryID),l=Bi(c,``,l,e),m=G(p,1,`chat-message-copy svelte-12s99s5`,null,m,{"is-copied":r.copied}),K(p,`aria-label`,r.copied?`Message copied`:`Copy message`),K(p,`title`,r.copied?`Copied`:`Copy message`)},[()=>({"--prompt-cache-fill":a(t.msg.promptCacheRatio),"--prompt-cache-visibility":n()&&t.msg.promptCacheRatio>0?`1`:`0`})]),z(`click`,p,e=>{e.stopPropagation(),r.copy(iB(t.msg))}),V(e,c),k()}Br([`click`]);function KG(e,t=0){let n=Math.max(0,XG(e)-Math.max(0,XG(t))),r=Math.min(320,Math.max(180,Math.floor(n*.58))),i=Math.min(360,Math.max(128,Math.floor(n*.35)));return{min:r,max:Math.max(r,n-i)}}function qG(e,t,n=0){let r=KG(t,n),i=XG(e)||520;return Math.min(r.max,Math.max(r.min,Math.round(i)))}function JG(e,t,n=0){return qG(XG(t)-XG(e),t,n)}function YG(e,t,n,r){if(!Array.isArray(e)||e.length===0)return{index:-1,align:`start`};let i=XG(t),a=0;e.forEach((e,t)=>{XG(e)<=i+1&&(a=t)});let o=Number(r)<0?-1:1,s=Math.min(e.length-1,Math.max(0,a+o)),c=e.length-1,l=XG(e[c])0&&s===c&&l?`end`:`start`}}function XG(e){let t=Number(e);return Number.isFinite(t)?t:0}var ZG=B(`
          `),QG=B(`
          `),$G=B(`

          Loading interactions...

          `),eK=B(`

          No interaction data available for this entry.

          `),tK=B(``),nK=B(`
          `,1),rK=B(`

          Showing the newest part of this session and the selected log.

          `),iK=B(`
          `),aK=B(``),oK=B(``),sK=B(``);function cK(e,t){O(t,!0);let n=pB,r=Number(Ja(`gomodel_interactions_panel_width`)),i=`gomodel_interactions_prompt_cache_fill`,a=Number.isFinite(r)&&r>0?r:520,o=j(N(a)),s=j(320),c=j(760),l=j(!1),u=j(!1),d=j(Ja(i,`true`)!==`false`),f=null;function p(e,{fullscreen:t,revealWithoutSlide:n=!1}){let r=pL(180);return t?Ju(e,{x:R(o),duration:r,easing:Zu}):n?{duration:0}:Yu(e,{axis:`x`,duration:r,easing:Zu})}async function m(e){if(e===R(l))return;let t=R(l)&&!e;M(u,t,!0),M(l,e,!0),t&&(await xr(),M(u,!1))}function h(){M(d,!R(d)),Ya(i,R(d))}function g(){return(document.querySelector(`.sidebar`)?.getBoundingClientRect().width||0)+(document.querySelector(`.sidebar-toggle`)?.getBoundingClientRect().width||0)}function _(){let e=g(),t=KG(window.innerWidth,e);M(s,t.min,!0),M(c,t.max,!0),M(o,qG(a,window.innerWidth,e),!0)}function v(e){M(o,JG(e,window.innerWidth,g()),!0),a=R(o)}function y(e){e.button===0&&(e.preventDefault(),f=e.pointerId,e.currentTarget.setPointerCapture(e.pointerId),document.body.classList.add(`conversation-panel-resizing`),v(e.clientX))}function b(e){e.pointerId===f&&v(e.clientX)}function x(e){f===null||e.pointerId!==void 0&&e.pointerId!==f||(f=null,document.body.classList.remove(`conversation-panel-resizing`),Ya(`gomodel_interactions_panel_width`,a))}function S(e){e.key!==`ArrowLeft`&&e.key!==`ArrowRight`||(e.preventDefault(),a=R(o)+(e.key===`ArrowLeft`?24:-24),_(),a=R(o),Ya(`gomodel_interactions_panel_width`,a))}function C(e){let t=document.getElementById(`interactions-drawer-content`),r=n.conversationThreadEl;if(!t||!r)return;let i=[...r.querySelectorAll(`[data-conversation-message="true"]`)],a=t.getBoundingClientRect(),o=a.top+14,s=YG(i.map(e=>e.getBoundingClientRect().top),o,a.bottom,e),c=i[s.index];if(!c)return;let l=s.align===`end`?t.scrollHeight:t.scrollTop+c.getBoundingClientRect().top-a.top-14;t.scrollTo({top:l,behavior:pL(1)>0?`smooth`:`auto`})}function w(){return[document.querySelector(`.sidebar`),document.querySelector(`.sidebar-toggle`),document.getElementById(`dashboard-content`)].filter(Boolean)}On(()=>{if(!n.conversationOpen)return;_();let e=document.querySelector(`.sidebar`),t=new ResizeObserver(_);e&&t.observe(e);let r=e=>{e.key===`Escape`&&!bc.anyOpen&&(R(l)?m(!1):n.closeConversation())};return window.addEventListener(`keydown`,r),window.addEventListener(`resize`,_),()=>{x({}),t.disconnect(),window.removeEventListener(`keydown`,r),window.removeEventListener(`resize`,_)}}),On(()=>{n.conversationOpen||M(l,!1)}),On(()=>{if(!R(l))return;let e=w().map(e=>({element:e,inert:e.inert,ariaHidden:e.getAttribute(`aria-hidden`)}));return e.forEach(({element:e})=>{e.inert=!0,e.setAttribute(`aria-hidden`,`true`)}),()=>{e.forEach(({element:e,inert:t,ariaHidden:n})=>{e.inert=t,n===null?e.removeAttribute(`aria-hidden`):e.setAttribute(`aria-hidden`,n)})}}),On(()=>{Bl.page!==`audit-logs`&&n.conversationOpen&&n.closeConversation()});var T=Xr(),E=F(T),ee=e=>{var t=Xr();W(F(t),16,()=>[R(l)],e=>e,(e,t)=>{var r=sK();let i,a;var l=P(r),f=I(l,2),g=P(f),_=I(P(g),2),v=P(_);let w;D(_),D(g);var T=I(g,2),E=P(T),ee=P(E);{let e=A(()=>t?$c:Qc);J(ee,{get icon(){return R(e)},class:`table-icon-svg`})}D(E),ku(I(E,2),{label:`Close interactions`,onclick:()=>n.closeConversation(),get el(){return n.conversationCloseBtnEl},set el(e){n.conversationCloseBtnEl=e}}),D(T),D(f);var te=I(f,2),ne=P(te),re=e=>{var t=ZG(),n=P(t);J(P(n),{get icon(){return Tc},width:`14`,height:`14`}),D(n);var r=I(n,2);J(P(r),{get icon(){return Sc},width:`14`,height:`14`}),D(r),D(t),z(`click`,n,()=>C(-1)),z(`click`,r,()=>C(1)),V(e,t)};U(ne,e=>{n.conversationMessages.length>1&&e(re)});var ie=I(ne,2),ae=e=>{var t=QG(),r=P(t,!0);D(t),L(()=>H(r,n.conversationError)),V(e,t)};U(ie,e=>{n.conversationError&&e(ae)});var oe=I(ie,2),se=e=>{V(e,$G())};U(oe,e=>{n.conversationLoading&&e(se)});var ce=I(oe,2),le=e=>{V(e,eK())},ue=A(()=>!n.conversationLoading&&!n.followUpSending&&!n.conversationError&&n.conversationMessages.length===0&&!n.conversationLiveWaiting());U(ce,e=>{R(ue)&&e(le)});var de=I(ce,2),fe=e=>{var t=nK(),r=F(t),i=e=>{var t=tK(),n=P(t);let r;Ve(2),D(t),L(()=>{K(t,`aria-checked`,R(d)),K(t,`title`,(R(d)?`Hide`:`Show`)+` estimated provider prompt-cache fill`),r=G(n,1,`conversation-cache-switch svelte-ssrzja`,null,r,{"is-active":R(d)})}),z(`click`,t,h),V(e,t)},a=A(()=>n.conversationMessages.some(e=>Number(e.promptCacheRatio||0)>0));U(r,e=>{R(a)&&e(i)});var o=I(r,2);W(o,21,()=>n.conversationMessages,e=>e.uid,(e,t)=>{GG(e,{get msg(){return R(t)},get showPromptCache(){return R(d)}})}),D(o),ma(o,e=>n.conversationThreadEl=e,()=>n?.conversationThreadEl),V(e,t)};U(de,e=>{n.conversationMessages.length>0&&e(fe)});var pe=I(de,2),me=e=>{V(e,rK())};U(pe,e=>{n.conversationTruncated&&e(me)});var he=I(pe,2),ge=e=>{var t=iK(),r=I(P(t),2),i=P(r,!0);D(r),D(t),L(e=>H(i,e),[()=>n.conversationLiveStatusText()]),V(e,t)},_e=A(()=>n.conversationLiveWaiting());U(he,e=>{R(_e)&&e(ge)}),D(te);var ve=I(te,2),ye=e=>{var t=oK(),r=P(t),i=P(r);ut(i);var a=I(i,2),o=e=>{var t=aK(),r=P(t,!0);D(t),L(()=>H(r,n.followUpError)),V(e,t)};U(a,e=>{n.followUpError&&e(o)});var s=I(a,2),c=P(s),l=P(c,!0);D(c);var u=I(c,2),d=P(u,!0);D(u),D(s),D(r),D(t),L((e,t,r)=>{i.disabled=e,H(l,t),u.disabled=r,H(d,n.followUpSending?`Sending…`:`Send`)},[()=>n.followUpSending||n.conversationLiveWaiting(),()=>n.selectedConversationEntry()?.path||``,()=>!n.canSendFollowUp()]),zr(`submit`,r,e=>{e.preventDefault(),n.sendFollowUp()}),la(i,()=>n.followUpText,e=>n.followUpText=e),V(e,t)},be=A(()=>n.conversationAnchorID&&n.followUpKind());U(ve,e=>{R(be)&&e(ye)}),D(r),ma(r,e=>n.conversationDialogEl=e,()=>n?.conversationDialogEl),L(()=>{i=G(r,1,`conversation-drawer svelte-ssrzja`,null,i,{"conversation-drawer-fullscreen":t}),K(r,`role`,t?`dialog`:void 0),K(r,`aria-modal`,t?`true`:void 0),a=Bi(r,``,a,{"--conversation-panel-width":R(o)+`px`}),K(l,`aria-valuemin`,R(s)),K(l,`aria-valuemax`,R(c)),K(l,`aria-valuenow`,R(o)),K(_,`aria-label`,n.conversationFollowLatest?`Following the latest interaction`:`Viewing a historical interaction`),K(_,`title`,n.conversationFollowLatest?`Following the latest interaction as new events arrive`:`Viewing a historical interaction; live updates are not followed`),w=G(v,1,`live-dot`,null,w,{"is-streaming":n.conversationFollowLatest}),K(E,`aria-label`,t?`Exit fullscreen interactions`:`Show interactions fullscreen`),K(E,`title`,t?`Exit fullscreen`:`Fullscreen`),K(E,`aria-pressed`,t)}),z(`pointerdown`,l,y),z(`pointermove`,l,b),z(`pointerup`,l,x),zr(`pointercancel`,l,x),zr(`lostpointercapture`,l,x),z(`keydown`,l,S),z(`click`,E,()=>m(!t)),Di(7,r,()=>p,()=>({fullscreen:t,revealWithoutSlide:!t&&R(u)})),V(e,r)}),V(e,t)};U(E,e=>{n.conversationOpen&&e(ee)}),V(e,T),k()}Br([`pointerdown`,`pointermove`,`pointerup`,`keydown`,`click`]);var lK=B(`
          `,1);function uK(e,t){O(t,!0);let n={overview:yE,usage:hO,budgets:Gk,"rate-limits":nj,models:VP,workflows:cL,"audit-logs":iV,guardrails:ZV,"mcp-servers":jH,"providers-config":BU,"auth-keys":PW,settings:LG};Za(),lu.init(),Fd.init(),Y.init(),vc.init(),yc.init(),Bl.init(),On(()=>{Y.refreshTick,bu.fetch(),Id.fetchModels(),Id.fetchCategories()}),On(()=>{document.body.classList.toggle(`dashboard-modal-open`,bc.anyOpen)});let r=A(()=>n[Bl.page]||yE);var i=lK(),a=F(i);Du(a,{});var o=I(a,2);let s;var c=P(o);ad(c,{}),hi(I(c,2),()=>R(r),(e,t)=>{t(e,{})}),D(o);var l=I(o,2);cK(l,{});var u=I(l,2);Lu(u,{});var d=I(u,2);Uu(d,{}),rd(I(d,2),{}),L(()=>s=G(o,1,`content`,null,s,{"interactions-open":pB.conversationOpen})),V(e,i),k()}$r(uK,{target:document.getElementById(`app`)}); \ No newline at end of file + the key. The master key always has dashboard access.`))},$$slots:{title:!0,help:!0}});var h=I(m,2),g=P(h);ea(g),Ve(2),D(h),D(p),AA(I(p,2),{id:`auth-key-description`,label:`Description (optional)`,children:(e,t)=>{var n=mG();ut(n),la(n,()=>cG.form.description,e=>cG.form.description=e),V(e,n)},$$slots:{default:!0}}),D(t),la(i,()=>cG.form.name,e=>cG.form.name=e),la(o,()=>cG.form.expires_at,e=>cG.form.expires_at=e),la(l,()=>cG.form.user_path,e=>cG.form.user_path=e),la(f,()=>cG.form.labels,e=>cG.form.labels=e),ua(g,()=>cG.form.dashboard_access,e=>cG.form.dashboard_access=e),V(e,t)};U(r,e=>{cG.issuedValue?e(i):e(a,-1)}),V(e,n)},$$slots:{default:!0}})}k()}var _G=B(`

          `),vG=B(`

          Applies to new requests made with this key. Leave empty to remove all labels.

          `,1);function yG(e,t){O(t,!0),OA(e,{get open(){return cG.labelsEditor.open},title:`Edit Labels`,ariaLabel:`API key labels editor`,get error(){return cG.labelsEditor.error},get submitting(){return cG.labelsEditor.submitting},submitLabel:`Save Labels`,cancel:!1,dialogClass:`auth-key-editor`,onclose:()=>cG.closeLabelsEditor(),onsubmit:()=>cG.submitLabelsEditor(),headerHint:e=>{var t=_G(),n=P(t,!0);D(t),L(()=>H(n,cG.labelsEditor.name)),V(e,t)},children:(e,t)=>{AA(e,{id:`auth-key-labels-edit`,label:`Labels (comma-separated)`,children:(e,t)=>{var n=vG(),r=F(n);ea(r),Ve(2),la(r,()=>cG.labelsEditor.value,e=>cG.labelsEditor.value=e),V(e,n)},$$slots:{default:!0}})},$$slots:{headerHint:!0,default:!0}}),k()}var bG=B(` `),xG=B(`
          `),SG=B(``),CG=B(`Expired`),wG=B(` `),TG=B(` `,1),EG=B(`Deactivated`),DG=B(`
          `),OG=B(`
          NameDescriptionUser PathLabelsTokenDashboard Access ExpiresCreated
          `);function kG(e,t){O(t,!0);var n=OG(),r=P(n),i=P(r),a=P(i),o=I(P(a),5),s=P(o);J(I(P(s)),{get icon(){return Zl},width:`13`,height:`13`}),D(s),D(o),Ve(3),D(a),D(i);var c=I(i);W(c,21,()=>cG.visibleKeys,e=>e.id,(e,t)=>{var n=DG();let r;var i=P(n),a=P(i,!0);D(i);var o=I(i),s=P(o,!0);D(o);var c=I(o),l=P(c,!0);D(c);var u=I(c),d=P(u),f=e=>{var n=xG();W(n,20,()=>R(t).labels||[],e=>e,(e,t)=>{var n=bG(),r=P(n,!0);D(n),L(e=>{Bi(n,e),H(r,t)},[()=>XC(t)]),V(e,n)}),D(n),V(e,n)},p=e=>{V(e,SG())};U(d,e=>{(R(t).labels||[]).length>0?e(f):e(p,-1)}),D(u);var m=I(u),h=P(m),g=P(h,!0);D(h),D(m);var _=I(m),v=P(_);let y;var b=P(v,!0);D(v),D(_);var x=I(_),S=P(x),C=e=>{var n=wG(),r=P(n),i=P(r,!0);D(r);var a=I(r,2),o=e=>{V(e,CG())},s=A(()=>ZW(R(t)));U(a,e=>{R(s)&&e(o)}),D(n),L(e=>H(i,e),[()=>xf(R(t).expires_at)]),V(e,n)},w=e=>{V(e,Yr(`—`))};U(S,e=>{R(t).expires_at?e(C):e(w,-1)}),D(x);var T=I(x),E=P(T,!0);D(T);var ee=I(T),te=P(ee),ne=P(te),re=e=>{var n=TG(),r=F(n);{let e=A(()=>(R(t).dashboard_access?`Revoke dashboard access for API key `:`Grant dashboard access to API key `)+R(t).name),n=A(()=>!!cG.dashboardAccessID);wk(r,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>cG.toggleDashboardAccess(R(t)),get disabled(){return R(n)},children:(e,n)=>{{let n=A(()=>R(t).dashboard_access?bu:yu);J(e,{get icon(){return R(n)},class:`table-icon-svg`})}},$$slots:{default:!0}})}var i=I(r,2);{let e=A(()=>`Edit labels for API key `+R(t).name);wk(i,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>cG.openLabelsEditor(R(t)),children:(e,t)=>{J(e,{get icon(){return su},class:`table-icon-svg`})},$$slots:{default:!0}})}var a=I(i,2);{let e=A(()=>(cG.deactivatingID===R(t).id?`Deactivating API key `:`Deactivate API key `)+R(t).name),n=A(()=>cG.deactivatingID===R(t).id);wk(a,{get label(){return R(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>cG.deactivateKey(R(t)),get disabled(){return R(n)},children:(e,t)=>{J(e,{get icon(){return uu},class:`table-icon-svg`})},$$slots:{default:!0}})}V(e,n)},ie=e=>{var n=EG();L(e=>K(n,`title`,e),[()=>R(t).deactivated_at?`Deactivated on `+Sf(R(t).deactivated_at):`Deactivated`]),V(e,n)},ae=A(()=>QW(R(t)));U(ne,e=>{R(t).active?e(re):R(ae)&&e(ie,1)}),D(te),D(ee),D(n),L((e,i,o)=>{r=G(n,1,`svelte-nf0ldb`,null,r,e),H(a,R(t).name),H(s,R(t).description||`—`),H(l,R(t).user_path||`—`),H(g,R(t).redacted_value),y=G(v,1,`auth-key-status-badge`,null,y,{"auth-key-status-active":R(t).dashboard_access,"auth-key-status-inactive":!R(t).dashboard_access}),H(b,R(t).dashboard_access?`Allowed`:`Denied`),K(x,`title`,i),H(E,o)},[()=>({"auth-key-row-deactivated":QW(R(t))}),()=>R(t).expires_at?Sf(R(t).expires_at):``,()=>md.formatTimestamp(R(t).created_at)]),V(e,n)}),D(c),D(r),D(n),V(e,n),k()}var AG=B(``),jG=B(`
          API key management is unavailable.
          `),MG=B(``),NG=B(`

          Managed API keys authenticate requests to the gateway. Deactivation is + permanent — create a new key if access needs to be restored.

          `),PG=B(`
          `),FG=B(`
          `),IG=B(`

          `),LG=B(`

          No API keys yet. Issue a key to get started.

          `),RG=B(`
          `);function zG(e,t){O(t,!0),On(()=>{Y.refreshTick,Gu.page===`auth-keys`&&cG.fetchKeys()});var n=RG(),r=P(n),i=I(P(r),2),a=P(i),o=e=>{var t=AG();J(P(t),{get icon(){return lu},class:`table-icon-svg`}),Ve(2),D(t),L(()=>t.disabled=cG.formSubmitting),z(`click`,t,()=>{cG.formSubmitting||cG.openForm()}),V(e,t)};U(a,e=>{cG.available&&!Y.authError&&e(o)}),D(i),D(r);var s=I(r,2),c=e=>{V(e,jG())};U(s,e=>{!cG.available&&!Y.authError&&e(c)});var l=I(s,2),u=e=>{var t=MG(),n=P(t,!0);D(t),L(()=>H(n,cG.error)),V(e,t)};U(l,e=>{cG.error&&!Y.authError&&!cG.formOpen&&e(u)});var d=I(l,2),f=e=>{V(e,NG())};U(d,e=>{cG.available&&!Y.authError&&e(f)});var p=I(d,2);gG(p,{});var m=I(p,2);yG(m,{});var h=I(m,2),g=e=>{var t=PG();kE(P(t),{size:18,label:`Loading API keys`}),D(t),V(e,t)};U(h,e=>{cG.loading&&cG.keys.length===0&&e(g)});var _=I(h,2),v=e=>{var t=FG(),n=P(t);DO(P(n),{placeholder:`Filter by name, description, user path, label, or token...`,label:`Filter API keys by name, description, user path, label, or token`,get value(){return cG.filter},set value(e){cG.filter=e}}),D(n);var r=I(n,2),i=P(r),a=P(i);ea(a);var o=I(a,2),s=I(P(o)),c=e=>{var t=Yr();L(()=>H(t,`(${cG.inactiveCount??``})`)),V(e,t)};U(s,e=>{cG.inactiveCount>0&&e(c)}),D(o),D(i),D(r),D(t),ua(a,()=>cG.showInactive,e=>cG.showInactive=e),V(e,t)};U(_,e=>{cG.keys.length>0&&cG.available&&e(v)});var y=I(_,2),b=e=>{kG(e,{})};U(y,e=>{cG.visibleKeys.length>0&&cG.available&&e(b)});var x=I(y,2),S=e=>{var t=IG(),n=P(t);D(t),L(()=>H(n,`No API keys match the current filter.${cG.inactiveCount>0&&!cG.showInactive?` `+cG.inactiveCount+` inactive `+(cG.inactiveCount===1?`key is`:`keys are`)+` hidden.`:``}`)),V(e,t)};U(x,e=>{cG.keys.length>0&&cG.visibleKeys.length===0&&cG.available&&e(S)});var C=I(x,2),w=e=>{V(e,LG())};U(C,e=>{cG.keys.length===0&&!cG.loading&&!Y.authError&&!cG.error&&cG.available&&e(w)}),D(n),V(e,n),k()}Br([`click`]);var BG=B(`

          Timezone

          `),VG=B(``),HG=B(``),UG=B(`
          `,1);function WG(e,t){O(t,!0);function n(){md.saveOverride(),Y.refresh()}function r(){md.clearOverride(),Y.refresh()}var i=UG(),a=F(i);eD(P(a),{copyId:`timezone-help-copy`,label:`timezone help`,text:`Day-based analytics, charts, and date filters use your effective timezone. Usage and audit logs keep UTC in the hover title while rendering row timestamps in your effective timezone.`,title:e=>{V(e,BG())},$$slots:{title:!0}}),D(a);var o=I(a,2),s=P(o),c=I(P(s),2),l=P(c),u=P(l);D(l),l.value=l.__value=``,W(I(l),17,()=>md.options,e=>e.value,(e,t)=>{var n=VG(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(c),D(s),D(o);var d=I(o,2),f=P(d),p=e=>{var t=HG();z(`click`,t,r),V(e,t)};U(f,e=>{md.override&&e(p)}),D(d),L(e=>H(u,`Automatic (${e??``})`),[()=>md.detectedTimeZoneLabel()]),zr(`focus`,c,()=>md.ensureOptions()),z(`change`,c,n),Ui(c,()=>md.override,e=>md.override=e),V(e,i),k()}Br([`change`,`click`]);var GG=B(``),KG=B(`

          Failover

          `,1);function qG(e,t){O(t,!0);let n=A(()=>Q.failoverSaving||Q.failoverGenerating||Q.failoverDraftSaving||!Q.failoverAvailable||!Q.failoverEnabled());var r=KG(),i=F(r),a=I(P(i),2),o=P(a),s=P(o);J(s,{get icon(){return ju},class:`form-action-icon`});var c=I(s,2),l=P(c,!0);D(c),D(o);var u=I(o,2);J(P(u),{get icon(){return Eu},class:`form-action-icon`}),Ve(2),D(u),D(a),D(i);var d=I(i,2),f=P(d),p=e=>{var t=GG(),n=P(t,!0);D(t),L(()=>H(n,Q.failoverError)),V(e,t)};U(f,e=>{Q.failoverError&&e(p)}),D(d),CF(I(d,2),{}),L(()=>{o.disabled=R(n),H(l,Q.failoverGenerating?`Generating...`:`Generate failover models automatically`),u.disabled=R(n)}),z(`click`,o,()=>Q.generateFailoverRules()),z(`click`,u,()=>Q.openFailoverResetDialog()),V(e,r),k()}Br([`click`]);function JG(){return{daily_reset_hour:0,daily_reset_minute:0,weekly_reset_weekday:1,weekly_reset_hour:0,weekly_reset_minute:0,monthly_reset_day:1,monthly_reset_hour:0,monthly_reset_minute:0}}function YG(e,t){let n=t||{},r=(e,t)=>{if(e===``)return t;let n=Number(e);return Number.isFinite(n)&&Number.isInteger(n)?Math.trunc(n):t},i=(e,t)=>r(n[e],t),a=(t,n)=>e?r(e[t],n):n;return{daily_reset_hour:a(`daily_reset_hour`,i(`daily_reset_hour`,0)),daily_reset_minute:a(`daily_reset_minute`,i(`daily_reset_minute`,0)),weekly_reset_weekday:a(`weekly_reset_weekday`,i(`weekly_reset_weekday`,1)),weekly_reset_hour:a(`weekly_reset_hour`,i(`weekly_reset_hour`,0)),weekly_reset_minute:a(`weekly_reset_minute`,i(`weekly_reset_minute`,0)),monthly_reset_day:a(`monthly_reset_day`,i(`monthly_reset_day`,1)),monthly_reset_hour:a(`monthly_reset_hour`,i(`monthly_reset_hour`,0)),monthly_reset_minute:a(`monthly_reset_minute`,i(`monthly_reset_minute`,0))}}function XG(){return[{value:0,label:`Sunday`},{value:1,label:`Monday`},{value:2,label:`Tuesday`},{value:3,label:`Wednesday`},{value:4,label:`Thursday`},{value:5,label:`Friday`},{value:6,label:`Saturday`}]}var ZG=B(`

          Budget Resets

          `),QG=B(``),$G=B(`

          If the selected day does not exist in a month, the reset runs on + the last day of that month.

          `),eK=B(``),tK=B(``),nK=B(`
          Monthly
          Weekly
          Daily
          `,1);function rK(e,t){O(t,!0);let n=j(N(JG())),r=j(!1),i=j(!1),a=j(``),o=j(!1),s=A(()=>Td.budgetsVisible());async function c(){if(await Td.ensureLoaded(),!Td.budgetsVisible()){M(a,``);return}M(r,!0),M(a,``);try{let e=await bd(`/admin/budgets/settings`,{label:`budget settings`});if(e.stale)return;if(!e.ok){M(a,`Unable to load budget settings.`);return}M(n,YG(e.data,R(n)),!0)}catch(e){console.error(`Failed to fetch budget settings:`,e),M(a,`Unable to load budget settings.`)}finally{M(r,!1)}}async function l(){if(!R(i)){M(i,!0);try{let e=await xd(`/admin/budgets/settings`,`PUT`,YG(R(n),R(n)),{label:`budget settings`});if(e.stale)return;if(!e.ok){of.error(`Unable to save budget settings.`);return}M(n,YG(e.data,R(n)),!0),M(a,``),of.success(`Budget settings saved.`)}catch(e){console.error(`Failed to save budget settings:`,e),of.error(`Unable to save budget settings.`)}finally{M(i,!1)}}}On(()=>{Y.refreshTick,c()});var u=Xr(),d=F(u),f=e=>{var t=nK(),s=F(t),c=P(s);eD(c,{copyId:`budget-settings-help-copy`,label:`budget help`,text:`Budget reset anchors are stored in the database and evaluated in UTC. Hourly budgets reset at the top of each hour.`,title:e=>{V(e,ZG())},$$slots:{title:!0}});var u=I(c,2),d=P(u),f=I(P(d),2),p=P(f);eD(p,{copyId:`budget-monthly-day-help-copy`,label:`day of month help`,external:!0,get open(){return R(o)},set open(e){M(o,e,!0)},title:e=>{V(e,QG())},$$slots:{title:!0}});var m=I(p,2);ea(m),D(f);var h=I(f,2),g=I(P(h),2);ea(g),D(h);var _=I(h,2),v=I(P(_),2);ea(v),D(_);var y=I(_,2),b=P(y),x=e=>{V(e,$G())};U(b,e=>{R(o)&&e(x)}),D(y),D(d);var S=I(d,2),C=I(P(S),2),w=I(P(C),2);W(w,21,XG,e=>e.value,(e,t)=>{var n=eK(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(w),D(C);var T=I(C,2),E=I(P(T),2);ea(E),D(T);var ee=I(T,2),te=I(P(ee),2);ea(te),D(ee),Ve(2),D(S);var ne=I(S,2),re=I(P(ne),4),ie=I(P(re),2);ea(ie),D(re);var ae=I(re,2),oe=I(P(ae),2);ea(oe),D(ae),Ve(2),D(ne),D(u);var se=I(u,2),ce=P(se);J(P(ce),{get icon(){return pu},class:`form-action-icon`}),Ve(2),D(ce);var le=I(ce,2),ue=e=>{kE(e,{size:16,label:`Loading budget settings`})};U(le,e=>{R(r)&&e(ue)}),D(se),D(s);var de=I(s,2),fe=P(de),pe=e=>{var t=tK(),n=P(t,!0);D(t),L(()=>H(n,R(a))),V(e,t)};U(fe,e=>{R(a)&&e(pe)}),D(de),L(()=>{ce.disabled=R(i)||R(r),K(ce,`aria-busy`,R(i)?`true`:`false`)}),la(m,()=>R(n).monthly_reset_day,e=>R(n).monthly_reset_day=e),la(g,()=>R(n).monthly_reset_hour,e=>R(n).monthly_reset_hour=e),la(v,()=>R(n).monthly_reset_minute,e=>R(n).monthly_reset_minute=e),Ui(w,()=>R(n).weekly_reset_weekday,e=>R(n).weekly_reset_weekday=e),la(E,()=>R(n).weekly_reset_hour,e=>R(n).weekly_reset_hour=e),la(te,()=>R(n).weekly_reset_minute,e=>R(n).weekly_reset_minute=e),la(ie,()=>R(n).daily_reset_hour,e=>R(n).daily_reset_hour=e),la(oe,()=>R(n).daily_reset_minute,e=>R(n).daily_reset_minute=e),z(`click`,ce,l),V(e,t)};U(d,e=>{R(s)&&e(f)}),V(e,u),k()}Br([`click`]);var iK=B(`

          Reset All Budgets

          Start new budget periods for every configured budget without changing + the limits.

          `);function aK(e,t){O(t,!0);var n=Xr(),r=F(n),i=e=>{var t=iK(),n=I(P(t),2),r=P(n);J(P(r),{get icon(){return fu},class:`form-action-icon`}),Ve(2),D(r),D(n),D(t),L(()=>r.disabled=X.resetAllLoading),z(`click`,r,()=>X.openResetDialog()),V(e,t)},a=A(()=>Td.budgetsVisible());U(r,e=>{R(a)&&e(i)}),V(e,n),k()}Br([`click`]);function oK(){return{header:``,prefix:``,do_not_pass:!1,delimiter:``,managed:!1}}function sK(e){return(e&&Array.isArray(e.headers)?e.headers:[]).map(e=>({header:typeof e.header==`string`?e.header:``,prefix:typeof e.prefix==`string`?e.prefix:``,do_not_pass:e.do_not_pass===!0,delimiter:typeof e.delimiter==`string`&&e.delimiter!==`,`?e.delimiter:``,managed:e.managed===!0}))}function cK(e){return{headers:(Array.isArray(e)?e:[]).filter(e=>!e.managed&&e.header.trim()!==``).map(e=>({header:e.header.trim(),prefix:e.prefix,do_not_pass:e.do_not_pass,delimiter:e.delimiter}))}}function lK(e){return e&&e.error&&e.error.message?e.error.message:``}var uK=B(`

          Tagging based on headers

          `),dK=B(`config`),fK=B(``),pK=B(`
          `),mK=B(`

          No tagging headers configured. Requests are not labelled.

          `),hK=B(``),gK=B(`
          `,1);function _K(e,t){O(t,!0);let n=j(N([])),r=j(!0),i=j(!1),a=j(!1),o=j(``);function s(){R(n).push(oK())}function c(e){let t=R(n)[e];!t||t.managed||R(n).splice(e,1)}async function l(){M(i,!0),M(o,``);try{let e=await bd(`/admin/tagging/settings`,{label:`tagging settings`});if(e.stale)return;if(!e.ok){M(o,`Unable to load tagging settings.`);return}M(n,sK(e.data),!0),M(r,e.data&&e.data.editable!==!1,!0)}catch(e){console.error(`Failed to fetch tagging settings:`,e),M(o,`Unable to load tagging settings.`)}finally{M(i,!1)}}async function u(){if(!(R(a)||!R(r))){M(a,!0);try{let e=await xd(`/admin/tagging/settings`,`PUT`,cK(R(n)),{label:`tagging settings`});if(e.stale)return;if(!e.ok){of.error(e.status!==401&&lK(e.data)||`Unable to save tagging settings.`);return}M(n,sK(e.data),!0),M(r,e.data&&e.data.editable!==!1,!0),M(o,``),of.success(`Tagging settings saved.`)}catch(e){console.error(`Failed to save tagging settings:`,e),of.error(`Unable to save tagging settings.`)}finally{M(a,!1)}}}On(()=>{Y.refreshTick,l()});var d=gK(),f=F(d),p=P(f);eD(p,{copyId:`tagging-settings-help-copy`,label:`tagging help`,text:`Each request is labelled from the listed headers; labels land in usage tracking and audit logs. A header value can carry several labels split by the delimiter (default: comma). The prefix is trimmed from each label only — the header itself is forwarded unchanged unless 'Do not pass' is checked. Rows marked CONFIG come from config.yaml or TAGGING_HEADER_* env vars and are read-only here.`,title:e=>{V(e,uK())},$$slots:{title:!0}});var m=I(p,2),h=P(m);W(h,17,()=>R(n),ii,(e,t,n)=>{var i=pK(),a=P(i),o=P(a);K(o,`for`,`tagging-header-`+n);var s=I(o,2);ea(s),K(s,`id`,`tagging-header-`+n),D(a);var l=I(a,2),u=P(l);K(u,`for`,`tagging-prefix-`+n);var d=I(u,2);ea(d),K(d,`id`,`tagging-prefix-`+n),D(l);var f=I(l,2),p=P(f);K(p,`for`,`tagging-delimiter-`+n);var m=I(p,2);ea(m),K(m,`id`,`tagging-delimiter-`+n),D(f);var h=I(f,2),g=P(h);ea(g),Ve(2),D(h);var _=I(h,2),v=P(_),y=e=>{V(e,dK())},b=e=>{var i=fK();L(()=>{i.disabled=!R(r),K(i,`aria-label`,`Remove tagging header `+(R(t).header||n+1))}),z(`click`,i,()=>c(n)),V(e,i)};U(v,e=>{R(t).managed?e(y):e(b,-1)}),D(_),D(i),L(()=>{s.disabled=R(t).managed||!R(r),d.disabled=R(t).managed||!R(r),m.disabled=R(t).managed||!R(r),g.disabled=R(t).managed||!R(r)}),la(s,()=>R(t).header,e=>R(t).header=e),la(d,()=>R(t).prefix,e=>R(t).prefix=e),la(m,()=>R(t).delimiter,e=>R(t).delimiter=e),ua(g,()=>R(t).do_not_pass,e=>R(t).do_not_pass=e),V(e,i)});var g=I(h,2),_=e=>{kE(e,{size:16,label:`Loading tagging settings`})};U(g,e=>{R(i)&&e(_)});var v=I(g,2),y=e=>{V(e,mK())};U(v,e=>{!R(i)&&R(n).length===0&&e(y)}),D(m);var b=I(m,2),x=P(b);J(P(x),{get icon(){return lu},class:`form-action-icon`}),Ve(2),D(x);var S=I(x,2);J(P(S),{get icon(){return pu},class:`form-action-icon`}),Ve(2),D(S),D(b),D(f);var C=I(f,2),w=P(C),T=e=>{var t=hK(),n=P(t,!0);D(t),L(()=>H(n,R(o))),V(e,t)};U(w,e=>{R(o)&&e(T)}),D(C),L(()=>{x.disabled=!R(r)||R(a)||R(i),S.disabled=!R(r)||R(a)||R(i),K(S,`aria-busy`,R(a)?`true`:`false`)}),z(`click`,x,s),z(`click`,S,u),V(e,d),k()}Br([`click`]);function vK(e){let t=e||{};if(t.selectedPreset)return{days:parseInt(t.selectedPreset,10)||30};let n=t.customStartDate?bf(t.customStartDate):``,r=t.customEndDate||t.today||null;return{start_date:n,end_date:r?bf(r):``}}function yK(e,t,n,r){return{...vK(e),user_path:String(t||``).trim(),selector:String(n||``).trim(),confirmation:r}}function bK(e){let t=Number(e&&e.matched||0),n=Number(e&&e.recalculated||0),r=Number(e&&e.without_pricing||0),i=`Pricing recalculated for `+n+` of `+t+` usage record`+(t===1?``:`s`)+`.`;return r>0&&(i+=` `+r+` usage record`+(r===1?` still lacks`:`s still lack`)+` pricing metadata.`),i}var xK=B(`

          Usage Pricing Recalculation

          `),SK=B(`
          `);function CK(e,t){O(t,!0);let n=j(``),r=j(``),i=j(!1),a=A(()=>Td.booleanFlag(`USAGE_PRICING_RECALCULATION_ENABLED`,!1));function o(){if(!R(a)){of.error(`Usage pricing recalculation is unavailable.`);return}R(i)||Wd.open({title:`Recalculate Pricing`,titleId:`pricingRecalculateDialogTitle`,inputId:`pricing-recalculate-confirmation`,requiredText:`recalculate`,confirmLabel:`Recalculate Pricing`,icon:Ml,dialogClass:`pricing-recalculate-dialog`,message:`Stored usage cost fields matching the selected filters will be overwritten.`,onConfirm:()=>s()})}async function s(){if(!R(a)){of.error(`Usage pricing recalculation is unavailable.`);return}if(!R(i)){M(i,!0);try{let e=await xd(`/admin/usage/recalculate-pricing`,`POST`,yK({selectedPreset:Vf.selectedPreset,customStartDate:Vf.customStartDate,customEndDate:Vf.customEndDate,today:md.todayDate()},R(n),R(r),`recalculate`),{label:`pricing recalculation`});if(e.stale)return;if(!e.ok){Wd.error=`Unable to recalculate pricing.`;return}Wd.close(),of.success(bK(e.data)),qf.fetchUsage()}catch(e){console.error(`Failed to recalculate pricing:`,e),Wd.error=`Unable to recalculate pricing.`}finally{M(i,!1)}}}var c=Xr(),l=F(c),u=e=>{var t=SK(),s=P(t);eD(s,{copyId:`pricing-recalculate-help-copy`,label:`pricing recalculation help`,text:`Recalculate stored input, output, total, and Pro Saved costs from the current model pricing metadata. This overwrites matching historical cost fields. Filters are applied to the selected date range, user path subtree, and provider/model selector or alias.`,title:e=>{V(e,xK())},$$slots:{title:!0}});var c=I(s,2),l=P(c),u=I(P(l),2);lp(P(u),{}),D(u),D(l);var d=I(l,2),f=I(P(d),2);ea(f),D(d);var p=I(d,2),m=I(P(p),2);ea(m),D(p),D(c);var h=I(c,2),g=P(h);J(P(g),{get icon(){return Ml},class:`form-action-icon`}),Ve(2),D(g),D(h),D(t),L(()=>{g.disabled=R(i)||!R(a),K(g,`aria-busy`,R(i)?`true`:`false`)}),la(f,()=>R(n),e=>M(n,e)),la(m,()=>R(r),e=>M(r,e)),z(`click`,g,o),V(e,t)};U(l,e=>{R(a)&&e(u)}),V(e,c),k()}Br([`click`]);function wK(e){return String(e&&e.status||`ok`).toLowerCase()}function TK(e){if(!e||typeof e!=`object`)return`Runtime refresh completed.`;let t=Number(e.model_count||0),n=Number(e.provider_count||0),r=wK(e);return(r===`ok`?`Runtime refreshed.`:r===`partial`?`Runtime refresh completed with warnings.`:`Runtime refresh failed.`)+` `+t+` model`+(t===1?``:`s`)+` across `+n+` provider`+(n===1?``:`s`)+`.`}function EK(e){return!!e&&wK(e)===`ok`}function DK(e){let t=e&&e.steps;return Array.isArray(t)?t:[]}function OK(e){let t=String(e&&e.name||``).replace(/_/g,` `),n=String(e&&e.status||``).trim(),r=String(e&&(e.error||e.message)||``).trim();return t?r?t+`: `+n+` - `+r:t+`: `+n:r||n||``}var kK=B(`

          Runtime Refresh

          `),AK=B(`
        • `),jK=B(`
            `),MK=B(`
            `,1);function NK(e,t){O(t,!0);let n=j(!1),r=j(null);async function i(){if(!R(n)){M(n,!0),M(r,null);try{let e=await xd(`/admin/runtime/refresh`,`POST`,void 0,{label:`runtime refresh`});if(e.stale)return;if(!e.ok){of.error(`Runtime refresh failed.`);return}M(r,e.data&&typeof e.data==`object`?e.data:null,!0),EK(R(r))?of.success(TK(R(r))):of.error(TK(R(r))),Y.refresh()}catch(e){console.error(`Failed to refresh runtime:`,e),of.error(`Runtime refresh failed.`)}finally{M(n,!1)}}}var a=MK(),o=F(a),s=P(o);eD(s,{copyId:`runtime-refresh-help-copy`,label:`runtime refresh help`,text:`Pull the latest model metadata, provider inventory, API keys, aliases, model access rules, guardrails, and workflows.`,title:e=>{V(e,kK())},$$slots:{title:!0}});var c=I(s,2),l=P(c);let u;J(P(l),{get icon(){return du},class:`settings-refresh-icon`}),Ve(2),D(l),D(c),D(o);var d=I(o,2),f=P(d),p=e=>{var t=jK();W(t,21,()=>DK(R(r)),e=>e.name,(e,t)=>{var n=AK(),r=P(n,!0);D(n),L(e=>{G(n,1,`runtime-refresh-step is-${R(t).status??``}`,`svelte-yeq2mp`),H(r,e)},[()=>OK(R(t))]),V(e,n)}),D(t),V(e,t)},m=A(()=>DK(R(r)).length>0);U(f,e=>{R(m)&&e(p)}),D(d),L(()=>{u=G(l,1,`btn btn-primary btn-with-icon settings-refresh-btn`,null,u,{"is-refreshing":R(n)}),l.disabled=R(n),K(l,`aria-busy`,R(n)?`true`:`false`)}),z(`click`,l,i),V(e,a),k()}Br([`click`]);var PK=B(``),FK=B(`

            `),IK=B(`

            `),LK=B(``),RK=B(`
            `),zK=B(`

            AI Processing

            `);function BK(e,t){O(t,!0);let n=j(N([])),r=j(!1),i=j(``),a=j(``);async function o(){M(r,!0),M(a,``);try{let e=await bd(`/admin/runtime/settings`,{label:`runtime settings`});if(e.stale)return;if(!e.ok){M(a,`Unable to load runtime settings.`);return}M(n,Array.isArray(e.data?.settings)?e.data.settings:[],!0)}catch(e){console.error(`Failed to load runtime settings:`,e),M(a,`Unable to load runtime settings.`)}finally{M(r,!1)}}async function s(e,t,r){if(!(e.locked||R(i))){M(i,e.key,!0);try{let i=await xd(`/admin/runtime/settings/${encodeURIComponent(e.key)}`,`PUT`,{value:t},{label:`save ${e.label}`});if(i.stale){r.value=e.value;return}if(!i.ok){r.value=e.value,of.error(`Unable to save ${e.label}.`);return}M(n,R(n).map(t=>t.key===e.key?i.data:t),!0),of.success(`${e.label} saved.`)}catch(t){r.value=e.value,console.error(`Failed to save runtime setting:`,t),of.error(`Unable to save ${e.label}.`)}finally{M(i,``)}}}On(()=>{Y.refreshTick,o()});var c=Xr(),l=F(c),u=e=>{var t=zK(),o=P(t),c=I(P(o),2),l=e=>{var t=PK(),n=P(t,!0);D(t),L(()=>H(n,R(a))),V(e,t)};U(c,e=>{R(a)&&e(l)}),D(o);var u=I(o,2);W(u,21,()=>R(n),e=>e.key,(e,t)=>{var n=RK(),r=P(n),a=P(r),o=P(a,!0);D(a);var c=I(a,2),l=e=>{var n=FK(),r=P(n,!0);D(n),L(()=>H(r,R(t).description)),V(e,n)};U(c,e=>{R(t).description&&e(l)});var u=I(c,2),d=e=>{var n=IK(),r=P(n);D(n),L(()=>H(r,`Managed by ${(R(t).managed_by||`environment`)??``}`)),V(e,n)};U(u,e=>{R(t).locked&&e(d)}),D(r);var f=I(r,2);W(f,21,()=>R(t).options||[],e=>e.value,(e,t)=>{var n=LK(),r=P(n,!0);D(n);var i={};L(()=>{K(n,`title`,R(t).description||``),H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(f);var p;Hi(f),D(n),L(()=>{K(a,`for`,`runtime-setting-${R(t).key}`),H(o,R(t).label),K(f,`id`,`runtime-setting-${R(t).key}`),f.disabled=R(t).locked||R(i)!==``,p!==(p=R(t).value)&&(f.value=(f.__value=R(t).value)??``,Vi(f,R(t).value))}),z(`change`,f,e=>s(R(t),e.currentTarget.value,e.currentTarget)),V(e,n)}),D(u),D(t),L(()=>K(u,`aria-busy`,R(r)?`true`:`false`)),V(e,t)};U(l,e=>{(R(n).length>0||R(a))&&e(u)}),V(e,c),k()}Br([`change`]);var VK=B(`
            `);function HK(e,t){O(t,!0),On(()=>{Y.refreshTick,Gu.page===`settings`&&(md.ensureOptions(),Td.ensureLoaded())});var n=VK(),r=I(P(n),2),i=P(r);WG(i,{});var a=I(i,2);qG(a,{});var o=I(a,2);rK(o,{});var s=I(o,2);aK(s,{});var c=I(s,2);_K(c,{});var l=I(c,2);BK(l,{});var u=I(l,2);CK(u,{}),NK(I(u,2),{}),D(r);var d=I(r,2),f=P(d,!0);D(d),D(n),L(e=>H(f,e),[()=>Bu()]),V(e,n),k()}var UK=B(`
            `),WK=B(`
             
            `),GK=B(`
             
            `),KK=B(`
             
            `),qK=B(`
            `),JK=B(`
            `,1),YK=B(`
            `);function XK(e,t){O(t,!0);let n=q(t,`showPromptCache`,3,!0),r=OI({logPrefix:`Failed to copy interaction message:`}),i=A(()=>t.msg.role===`function_call`||t.msg.role===`function_result`);function a(e){return(Math.max(0,Math.min(1,Number(e||0)))*100).toFixed(1)+`%`}function o(e){let t=Math.max(0,Math.min(1,Number(e||0)));return t>0?Math.round(t*100)+`% of this visible prompt item is estimated provider-cached`:void 0}function s(e){return e.role===`function_call`?(e.toolCalls||[]).map(e=>e.name+`()`).join(`, `):(e.functionName?e.functionName+`: `:``)+e.text}var c=YK();let l;var u=P(c),d=e=>{var r=WK(),i=P(r),a=P(i),c=P(a,!0);D(a);var l=I(a,2),u=P(l,!0);D(l);var d=I(l,2),f=P(d,!0);D(d),D(i);var p=I(i,2),m=e=>{var n=UK(),r=P(n);D(n),L(()=>H(r,`Call ID: ${t.msg.functionCallID??``}`)),V(e,n)};U(p,e=>{t.msg.functionCallID&&e(m)});var h=I(p,2),g=e=>{var n=Xr();W(F(n),17,()=>t.msg.toolCalls,ii,(e,n)=>{var r=Xr(),i=F(r),a=e=>{var r=UK(),i=P(r);D(r),L(()=>H(i,`Call ID${t.msg.toolCalls.length>1?` (`+R(n).name+`)`:``}: ${R(n).id??``}`)),V(e,r)};U(i,e=>{R(n).id&&e(a)}),V(e,r)}),V(e,n)};U(h,e=>{t.msg.role===`function_call`&&t.msg.toolCalls&&e(g)});var _=I(h,2),v=P(_,!0);D(_),D(r),L((e,n,i,a)=>{K(r,`title`,e),H(c,t.msg.roleLabel),H(u,n),H(f,i),H(v,a)},[()=>n()?o(t.msg.promptCacheRatio):void 0,()=>s(t.msg),()=>md.formatTimestamp(t.msg.timestamp),()=>cV(t.msg)]),V(e,r)},f=e=>{var r=JK(),i=F(r),a=P(i),s=P(a,!0);D(a);var c=I(a,2),l=P(c,!0);D(c),D(i);var u=I(i,2),d=e=>{var r=GK(),i=P(r,!0);D(r),L(e=>{K(r,`title`,e),H(i,t.msg.text)},[()=>n()?o(t.msg.promptCacheRatio):void 0]),V(e,r)};U(u,e=>{t.msg.text&&e(d)});var f=I(u,2),p=e=>{var n=qK();W(n,23,()=>t.msg.toolCalls,(e,t)=>e.name+`-`+t,(e,t)=>{var n=KK(),r=P(n),i=P(r),a=P(i,!0);D(i);var o=I(i,2),s=P(o,!0);D(o),D(r);var c=I(r,2),l=e=>{var n=UK(),r=P(n);D(n),L(()=>H(r,`Call ID: ${R(t).id??``}`)),V(e,n)};U(c,e=>{R(t).id&&e(l)});var u=I(c,2),d=P(u,!0);D(u),D(n),L((e,n)=>{H(a,R(t).name+`()`),H(s,e),H(d,n)},[()=>uV(R(t))||`No arguments`,()=>uV(R(t))||`No arguments`]),V(e,n)}),D(n),V(e,n)};U(f,e=>{t.msg.toolCalls&&e(p)}),L((e,n)=>{K(i,`title`,e),H(s,t.msg.roleLabel),H(l,n)},[()=>n()?o(t.msg.promptCacheRatio):void 0,()=>md.formatTimestamp(t.msg.timestamp)]),V(e,r)};U(u,e=>{R(i)?e(d):e(f,-1)});var p=I(u,2);let m;var h=P(p);{let e=A(()=>r.copied?Hl:Gl);J(h,{get icon(){return R(e)},width:`14`,height:`14`})}D(p),D(c),L(e=>{G(c,1,Ni([R(i)?`chat-function-note`:`chat-message`,t.msg.roleClass,{"is-anchor":t.msg.isAnchor,"is-after-anchor":t.msg.isAfterAnchor}]),`svelte-12s99s5`),K(c,`data-conversation-anchor`,t.msg.isAnchor?`true`:void 0),K(c,`data-entry-id`,t.msg.entryID),l=Bi(c,``,l,e),m=G(p,1,`chat-message-copy svelte-12s99s5`,null,m,{"is-copied":r.copied}),K(p,`aria-label`,r.copied?`Message copied`:`Copy message`),K(p,`title`,r.copied?`Copied`:`Copy message`)},[()=>({"--prompt-cache-fill":a(t.msg.promptCacheRatio),"--prompt-cache-visibility":n()&&t.msg.promptCacheRatio>0?`1`:`0`})]),z(`click`,p,e=>{e.stopPropagation(),r.copy(lV(t.msg))}),V(e,c),k()}Br([`click`]);function ZK(e,t=0){let n=Math.max(0,tq(e)-Math.max(0,tq(t))),r=Math.min(320,Math.max(180,Math.floor(n*.58))),i=Math.min(360,Math.max(128,Math.floor(n*.35)));return{min:r,max:Math.max(r,n-i)}}function QK(e,t,n=0){let r=ZK(t,n),i=tq(e)||520;return Math.min(r.max,Math.max(r.min,Math.round(i)))}function $K(e,t,n=0){return QK(tq(t)-tq(e),t,n)}function eq(e,t,n,r){if(!Array.isArray(e)||e.length===0)return{index:-1,align:`start`};let i=tq(t),a=0;e.forEach((e,t)=>{tq(e)<=i+1&&(a=t)});let o=Number(r)<0?-1:1,s=Math.min(e.length-1,Math.max(0,a+o)),c=e.length-1,l=tq(e[c])0&&s===c&&l?`end`:`start`}}function tq(e){let t=Number(e);return Number.isFinite(t)?t:0}var nq=B(`
            `),rq=B(`
            `),iq=B(`

            Loading interactions...

            `),aq=B(`

            No interaction data available for this entry.

            `),oq=B(``),sq=B(`
            `,1),cq=B(`

            Showing the newest part of this session and the selected log.

            `),lq=B(`
            `),uq=B(``),dq=B(``),fq=B(``);function pq(e,t){O(t,!0);let n=vV,r=Number(Ja(`gomodel_interactions_panel_width`)),i=`gomodel_interactions_prompt_cache_fill`,a=Number.isFinite(r)&&r>0?r:520,o=j(N(a)),s=j(320),c=j(760),l=j(!1),u=j(!1),d=j(Ja(i,`true`)!==`false`),f=null;function p(e,{fullscreen:t,revealWithoutSlide:n=!1}){let r=vR(180);return t?$d(e,{x:R(o),duration:r,easing:nf}):n?{duration:0}:ef(e,{axis:`x`,duration:r,easing:nf})}async function m(e){if(e===R(l))return;let t=R(l)&&!e;M(u,t,!0),M(l,e,!0),t&&(await xr(),M(u,!1))}function h(){M(d,!R(d)),Ya(i,R(d))}function g(){return(document.querySelector(`.sidebar`)?.getBoundingClientRect().width||0)+(document.querySelector(`.sidebar-toggle`)?.getBoundingClientRect().width||0)}function _(){let e=g(),t=ZK(window.innerWidth,e);M(s,t.min,!0),M(c,t.max,!0),M(o,QK(a,window.innerWidth,e),!0)}function v(e){M(o,$K(e,window.innerWidth,g()),!0),a=R(o)}function y(e){e.button===0&&(e.preventDefault(),f=e.pointerId,e.currentTarget.setPointerCapture(e.pointerId),document.body.classList.add(`conversation-panel-resizing`),v(e.clientX))}function b(e){e.pointerId===f&&v(e.clientX)}function x(e){f===null||e.pointerId!==void 0&&e.pointerId!==f||(f=null,document.body.classList.remove(`conversation-panel-resizing`),Ya(`gomodel_interactions_panel_width`,a))}function S(e){e.key!==`ArrowLeft`&&e.key!==`ArrowRight`||(e.preventDefault(),a=R(o)+(e.key===`ArrowLeft`?24:-24),_(),a=R(o),Ya(`gomodel_interactions_panel_width`,a))}function C(e){let t=document.getElementById(`interactions-drawer-content`),r=n.conversationThreadEl;if(!t||!r)return;let i=[...r.querySelectorAll(`[data-conversation-message="true"]`)],a=t.getBoundingClientRect(),o=a.top+14,s=eq(i.map(e=>e.getBoundingClientRect().top),o,a.bottom,e),c=i[s.index];if(!c)return;let l=s.align===`end`?t.scrollHeight:t.scrollTop+c.getBoundingClientRect().top-a.top-14;t.scrollTo({top:l,behavior:vR(1)>0?`smooth`:`auto`})}function w(){return[document.querySelector(`.sidebar`),document.querySelector(`.sidebar-toggle`),document.getElementById(`dashboard-content`)].filter(Boolean)}On(()=>{if(!n.conversationOpen)return;_();let e=document.querySelector(`.sidebar`),t=new ResizeObserver(_);e&&t.observe(e);let r=e=>{e.key===`Escape`&&!Tl.anyOpen&&(R(l)?m(!1):n.closeConversation())};return window.addEventListener(`keydown`,r),window.addEventListener(`resize`,_),()=>{x({}),t.disconnect(),window.removeEventListener(`keydown`,r),window.removeEventListener(`resize`,_)}}),On(()=>{n.conversationOpen||M(l,!1)}),On(()=>{if(!R(l))return;let e=w().map(e=>({element:e,inert:e.inert,ariaHidden:e.getAttribute(`aria-hidden`)}));return e.forEach(({element:e})=>{e.inert=!0,e.setAttribute(`aria-hidden`,`true`)}),()=>{e.forEach(({element:e,inert:t,ariaHidden:n})=>{e.inert=t,n===null?e.removeAttribute(`aria-hidden`):e.setAttribute(`aria-hidden`,n)})}}),On(()=>{Gu.page!==`audit-logs`&&n.conversationOpen&&n.closeConversation()});var T=Xr(),E=F(T),ee=e=>{var t=Xr();W(F(t),16,()=>[R(l)],e=>e,(e,t)=>{var r=fq();let i,a;var l=P(r),f=I(l,2),g=P(f),_=I(P(g),2),v=P(_);let w;D(_),D(g);var T=I(g,2),E=P(T),ee=P(E);{let e=A(()=>t?iu:ru);J(ee,{get icon(){return R(e)},class:`table-icon-svg`})}D(E),Pd(I(E,2),{label:`Close interactions`,onclick:()=>n.closeConversation(),get el(){return n.conversationCloseBtnEl},set el(e){n.conversationCloseBtnEl=e}}),D(T),D(f);var te=I(f,2),ne=P(te),re=e=>{var t=nq(),n=P(t);J(P(n),{get icon(){return Al},width:`14`,height:`14`}),D(n);var r=I(n,2);J(P(r),{get icon(){return Dl},width:`14`,height:`14`}),D(r),D(t),z(`click`,n,()=>C(-1)),z(`click`,r,()=>C(1)),V(e,t)};U(ne,e=>{n.conversationMessages.length>1&&e(re)});var ie=I(ne,2),ae=e=>{var t=rq(),r=P(t,!0);D(t),L(()=>H(r,n.conversationError)),V(e,t)};U(ie,e=>{n.conversationError&&e(ae)});var oe=I(ie,2),se=e=>{V(e,iq())};U(oe,e=>{n.conversationLoading&&e(se)});var ce=I(oe,2),le=e=>{V(e,aq())},ue=A(()=>!n.conversationLoading&&!n.followUpSending&&!n.conversationError&&n.conversationMessages.length===0&&!n.conversationLiveWaiting());U(ce,e=>{R(ue)&&e(le)});var de=I(ce,2),fe=e=>{var t=sq(),r=F(t),i=e=>{var t=oq(),n=P(t);let r;Ve(2),D(t),L(()=>{K(t,`aria-checked`,R(d)),K(t,`title`,(R(d)?`Hide`:`Show`)+` estimated provider prompt-cache fill`),r=G(n,1,`conversation-cache-switch svelte-ssrzja`,null,r,{"is-active":R(d)})}),z(`click`,t,h),V(e,t)},a=A(()=>n.conversationMessages.some(e=>Number(e.promptCacheRatio||0)>0));U(r,e=>{R(a)&&e(i)});var o=I(r,2);W(o,21,()=>n.conversationMessages,e=>e.uid,(e,t)=>{XK(e,{get msg(){return R(t)},get showPromptCache(){return R(d)}})}),D(o),ma(o,e=>n.conversationThreadEl=e,()=>n?.conversationThreadEl),V(e,t)};U(de,e=>{n.conversationMessages.length>0&&e(fe)});var pe=I(de,2),me=e=>{V(e,cq())};U(pe,e=>{n.conversationTruncated&&e(me)});var he=I(pe,2),ge=e=>{var t=lq(),r=I(P(t),2),i=P(r,!0);D(r),D(t),L(e=>H(i,e),[()=>n.conversationLiveStatusText()]),V(e,t)},_e=A(()=>n.conversationLiveWaiting());U(he,e=>{R(_e)&&e(ge)}),D(te);var ve=I(te,2),ye=e=>{var t=dq(),r=P(t),i=P(r);ut(i);var a=I(i,2),o=e=>{var t=uq(),r=P(t,!0);D(t),L(()=>H(r,n.followUpError)),V(e,t)};U(a,e=>{n.followUpError&&e(o)});var s=I(a,2),c=P(s),l=P(c,!0);D(c);var u=I(c,2),d=P(u,!0);D(u),D(s),D(r),D(t),L((e,t,r)=>{i.disabled=e,H(l,t),u.disabled=r,H(d,n.followUpSending?`Sending…`:`Send`)},[()=>n.followUpSending||n.conversationLiveWaiting(),()=>n.selectedConversationEntry()?.path||``,()=>!n.canSendFollowUp()]),zr(`submit`,r,e=>{e.preventDefault(),n.sendFollowUp()}),la(i,()=>n.followUpText,e=>n.followUpText=e),V(e,t)},be=A(()=>n.conversationAnchorID&&n.followUpKind());U(ve,e=>{R(be)&&e(ye)}),D(r),ma(r,e=>n.conversationDialogEl=e,()=>n?.conversationDialogEl),L(()=>{i=G(r,1,`conversation-drawer svelte-ssrzja`,null,i,{"conversation-drawer-fullscreen":t}),K(r,`role`,t?`dialog`:void 0),K(r,`aria-modal`,t?`true`:void 0),a=Bi(r,``,a,{"--conversation-panel-width":R(o)+`px`}),K(l,`aria-valuemin`,R(s)),K(l,`aria-valuemax`,R(c)),K(l,`aria-valuenow`,R(o)),K(_,`aria-label`,n.conversationFollowLatest?`Following the latest interaction`:`Viewing a historical interaction`),K(_,`title`,n.conversationFollowLatest?`Following the latest interaction as new events arrive`:`Viewing a historical interaction; live updates are not followed`),w=G(v,1,`live-dot`,null,w,{"is-streaming":n.conversationFollowLatest}),K(E,`aria-label`,t?`Exit fullscreen interactions`:`Show interactions fullscreen`),K(E,`title`,t?`Exit fullscreen`:`Fullscreen`),K(E,`aria-pressed`,t)}),z(`pointerdown`,l,y),z(`pointermove`,l,b),z(`pointerup`,l,x),zr(`pointercancel`,l,x),zr(`lostpointercapture`,l,x),z(`keydown`,l,S),z(`click`,E,()=>m(!t)),Di(7,r,()=>p,()=>({fullscreen:t,revealWithoutSlide:!t&&R(u)})),V(e,r)}),V(e,t)};U(E,e=>{n.conversationOpen&&e(ee)}),V(e,T),k()}Br([`pointerdown`,`pointermove`,`pointerup`,`keydown`,`click`]);var mq=B(`
            `,1);function hq(e,t){O(t,!0);let n={overview:wD,usage:bk,budgets:XA,"rate-limits":sM,models:KF,workflows:pR,"audit-logs":lH,guardrails:nU,"mcp-servers":IU,"providers-config":GW,"auth-keys":zG,settings:HK};Za(),md.init(),Vf.init(),Y.init(),Cl.init(),wl.init(),Gu.init(),On(()=>{Y.refreshTick,Td.fetch(),Hf.fetchModels(),Hf.fetchCategories()}),On(()=>{document.body.classList.toggle(`dashboard-modal-open`,Tl.anyOpen)});let r=A(()=>n[Gu.page]||wD);var i=mq(),a=F(i);Md(a,{});var o=I(a,2);let s;var c=P(o);df(c,{}),hi(I(c,2),()=>R(r),(e,t)=>{t(e,{})}),D(o);var l=I(o,2);pq(l,{});var u=I(l,2);Hd(u,{});var d=I(u,2);Jd(d,{}),lf(I(d,2),{}),L(()=>s=G(o,1,`content`,null,s,{"interactions-open":vV.conversationOpen})),V(e,i),k()}$r(hq,{target:document.getElementById(`app`)}); \ No newline at end of file diff --git a/internal/admin/dashboard/static/dist/index.html b/internal/admin/dashboard/static/dist/index.html index 1f61467d4..bbab8e893 100644 --- a/internal/admin/dashboard/static/dist/index.html +++ b/internal/admin/dashboard/static/dist/index.html @@ -7,7 +7,7 @@ GoModel Dashboard - + diff --git a/web/dashboard/messages/pl.json b/web/dashboard/messages/pl.json new file mode 100644 index 000000000..bdbe99cc8 --- /dev/null +++ b/web/dashboard/messages/pl.json @@ -0,0 +1,84 @@ +{ + "$schema": "https://inlang.com/schema/inlang-message-format", + "common_action_cancel": "Anuluj", + "common_action_next": "Dalej", + "common_action_previous": "Wstecz", + "common_label_admin": "Admin", + "navigation_overview": "Przegląd", + "navigation_providers": "Dostawcy", + "navigation_models": "Modele", + "navigation_audit_logs": "Logi audytowe", + "navigation_usage": "Zużycie", + "navigation_budgets": "Budżety", + "navigation_rate_limits": "Limity zapytań", + "navigation_api_keys": "Klucze API", + "navigation_workflows": "Workflows", + "navigation_guardrails_experimental": "Guardrails (eksperymentalne)", + "navigation_mcp_servers": "Serwery MCP", + "navigation_settings": "Ustawienia", + "sidebar_action_sign_out": "Wyloguj się", + "sidebar_action_enter_api_key": "Wprowadź klucz API", + "sidebar_action_change_api_key": "Zmień klucz API", + "sidebar_resize_label": "Zmień szerokość paska bocznego", + "sidebar_resize_help": "Przeciągnij, aby zmienić szerokość; kliknij, aby zwinąć lub rozwinąć", + "theme_label": "Motyw", + "theme_light": "Jasny motyw", + "theme_system": "Motyw systemowy", + "theme_dark": "Ciemny motyw", + "theme_change": "Zmień motyw (obecnie: {theme})", + "language_label": "Język", + "auth_banner_required": "Dostęp do danych panelu wymaga uwierzytelnienia.", + "auth_dialog_locked_title": "Panel zablokowany", + "auth_dialog_change_key_title": "Zmień klucz API", + "auth_dialog_close": "Zamknij okno uwierzytelniania", + "auth_dialog_sign_in_with_sso": "Zaloguj się przez SSO", + "auth_dialog_or_use_api_key": "lub użyj klucza API", + "auth_api_key_label": "Klucz API", + "auth_api_key_placeholder": "Klucz główny lub token Bearer", + "auth_api_key_invalid": "Aby kontynuować, wprowadź prawidłowy klucz API.", + "auth_api_key_storage_hint": "Klucz jest przechowywany w tej przeglądarce. Żądania używają nagłówka Authorization typu Bearer.", + "auth_action_unlock_dashboard": "Odblokuj panel", + "auth_action_save_api_key": "Zapisz klucz API", + "confirmation_close": "Zamknij okno potwierdzenia", + "notification_dismiss": "Zamknij powiadomienie", + "demo_mode_label": "Informacja o trybie demo", + "demo_mode_title": "Publiczne demo", + "demo_mode_warning": "Nie wprowadzaj danych poufnych ani osobowych. Dane demonstracyjne są regularnie resetowane.", + "demo_mode_website_label": "Strona GoModel", + "pagination_summary": "Wyświetlanie {start}–{end} z {total}", + "date_picker_last_days": [ + { + "declarations": ["input count", "local count_plural = count: plural"], + "selectors": ["count_plural"], + "match": { + "count_plural=one": "Ostatni {count} dzień", + "count_plural=few": "Ostatnie {count} dni", + "count_plural=many": "Ostatnie {count} dni", + "count_plural=*": "Ostatnie {count} dnia" + } + } + ], + "date_picker_days": [ + { + "declarations": ["input count", "local count_plural = count: plural"], + "selectors": ["count_plural"], + "match": { + "count_plural=one": "{count} dzień", + "count_plural=few": "{count} dni", + "count_plural=many": "{count} dni", + "count_plural=*": "{count} dnia" + } + } + ], + "date_picker_today": "Dzisiaj", + "date_picker_range": "{start} – {end}", + "date_picker_open_range": "{start} – ...", + "date_picker_select_start": "Wybierz datę początkową", + "date_picker_select_end": "Wybierz datę końcową", + "date_picker_previous_month": "Poprzedni miesiąc", + "date_picker_next_month": "Następny miesiąc", + "date_range_chart_title_daily": "Dzienne zużycie tokenów", + "date_range_chart_title_weekly": "Tygodniowe zużycie tokenów", + "date_range_chart_title_monthly": "Miesięczne zużycie tokenów", + "date_range_chart_title_yearly": "Roczne zużycie tokenów" +} diff --git a/web/dashboard/project.inlang/settings.json b/web/dashboard/project.inlang/settings.json index 102b77e3f..edb3cbb8c 100644 --- a/web/dashboard/project.inlang/settings.json +++ b/web/dashboard/project.inlang/settings.json @@ -1,7 +1,7 @@ { "$schema": "https://inlang.com/schema/project-settings", "baseLocale": "en", - "locales": ["en"], + "locales": ["en", "pl"], "modules": [ "https://cdn.jsdelivr.net/npm/@inlang/plugin-message-format@4.4.0/dist/index.js", "https://cdn.jsdelivr.net/npm/@inlang/plugin-m-function-matcher@2.2.6/dist/index.js" diff --git a/web/dashboard/tests/i18n.test.js b/web/dashboard/tests/i18n.test.js index 0f7d4d5ac..3530772f1 100644 --- a/web/dashboard/tests/i18n.test.js +++ b/web/dashboard/tests/i18n.test.js @@ -41,11 +41,30 @@ test("Paraglide compiles interpolation and locale-aware plurals", () => { assert.equal(m.date_picker_last_days({ count: 1 }), "Last 1 day"); assert.equal(m.date_picker_last_days({ count: 14 }), "Last 14 days"); assert.equal(m.date_picker_days({ count: 1 }), "1 day"); + assert.equal( + m.pagination_summary( + { start: 1, end: 25, total: 80 }, + { locale: "pl" }, + ), + "Wyświetlanie 1–25 z 80", + ); + assert.equal( + m.date_picker_last_days({ count: 1 }, { locale: "pl" }), + "Ostatni 1 dzień", + ); + assert.equal( + m.date_picker_last_days({ count: 2 }, { locale: "pl" }), + "Ostatnie 2 dni", + ); + assert.equal( + m.date_picker_last_days({ count: 5 }, { locale: "pl" }), + "Ostatnie 5 dni", + ); }); test("the browser locale strategy persists overrides without changing routes", () => { assert.equal(baseLocale, "en"); - assert.deepEqual(locales, ["en"]); + assert.deepEqual(locales, ["en", "pl"]); assert.deepEqual(strategy, [ "custom-dashboard", "preferredLanguage", From 0182c1ce2ea6f41e1288ca06bbc764e565f79a53 Mon Sep 17 00:00:00 2001 From: "Jakub A. W" Date: Fri, 14 Aug 2026 21:52:56 +0200 Subject: [PATCH 2/5] fix(dashboard): translate overview audit and settings pages --- .../static/dist/assets/index-C5HbE-2l.css | 1 - .../static/dist/assets/index-DvpsRGZe.js | 70 ---- .../static/dist/assets/index-YCkUyp1b.js | 65 ++++ .../static/dist/assets/index-o5upCDH8.css | 1 + .../admin/dashboard/static/dist/index.html | 4 +- web/dashboard/messages/en.json | 357 ++++++++++++++++++ web/dashboard/messages/pl.json | 336 +++++++++++++++++ .../molecules/LocaleSelector.svelte | 40 +- .../lib/components/organisms/Sidebar.svelte | 2 - web/dashboard/src/lib/i18n/README.md | 4 +- .../audit-logs/AuditEntryMetadata.svelte | 3 +- .../pages/audit-logs/AuditEntrySummary.svelte | 20 +- .../src/pages/audit-logs/AuditFilters.svelte | 23 +- .../pages/audit-logs/AuditLiveStatus.svelte | 5 +- .../src/pages/audit-logs/AuditLogsPage.svelte | 42 ++- .../src/pages/audit-logs/AuditPane.svelte | 17 +- .../src/pages/audit-logs/AuditPaneTabs.svelte | 5 +- .../pages/audit-logs/AuditThreadGroup.svelte | 9 +- .../src/pages/audit-logs/ChatMessage.svelte | 21 +- .../audit-logs/ConversationDrawer.svelte | 62 +-- .../src/pages/audit-logs/audit-logic.js | 66 ++-- .../pages/audit-logs/conversation-helpers.js | 25 +- .../audit-logs/conversationDrawer.svelte.js | 19 +- .../src/pages/audit-logs/live-logs-logic.js | 7 +- .../pages/overview/AuditStatsCharts.svelte | 26 +- .../src/pages/overview/CacheMeter.svelte | 7 +- .../overview/ContributionCalendar.svelte | 21 +- .../src/pages/overview/LiveTokens.svelte | 17 +- .../src/pages/overview/OverviewPage.svelte | 3 +- .../pages/overview/ProviderStatusCard.svelte | 25 +- .../overview/ProviderStatusCardDetails.svelte | 19 +- .../overview/ProviderStatusSection.svelte | 5 +- .../src/pages/overview/SummaryCards.svelte | 33 +- .../src/pages/overview/UsageChart.svelte | 18 +- .../src/pages/overview/auditStatsLogic.js | 33 +- .../src/pages/overview/cacheMeterLogic.js | 34 +- .../src/pages/overview/calendarLogic.js | 26 +- .../src/pages/overview/liveTokensLogic.js | 51 ++- .../src/pages/overview/mcpOverviewLogic.js | 21 +- .../src/pages/overview/overviewChartLogic.js | 11 +- .../pages/overview/overviewState.svelte.js | 5 +- .../src/pages/overview/providersLogic.js | 16 +- .../pages/settings/BudgetResetSettings.svelte | 10 +- .../src/pages/settings/BudgetSettings.svelte | 54 +-- .../pages/settings/FailoverSettings.svelte | 9 +- .../settings/PricingRecalculation.svelte | 36 +- .../src/pages/settings/RuntimeRefresh.svelte | 13 +- .../src/pages/settings/RuntimeSettings.svelte | 17 +- .../src/pages/settings/SettingsPage.svelte | 5 +- .../src/pages/settings/TaggingSettings.svelte | 41 +- .../pages/settings/TimezoneSettings.svelte | 15 +- .../pages/settings/budget-settings-logic.js | 16 +- .../src/pages/settings/pricing-logic.js | 17 +- .../pages/settings/runtime-refresh-logic.js | 10 +- web/dashboard/tests/i18n.test.js | 12 + 55 files changed, 1310 insertions(+), 520 deletions(-) delete mode 100644 internal/admin/dashboard/static/dist/assets/index-C5HbE-2l.css delete mode 100644 internal/admin/dashboard/static/dist/assets/index-DvpsRGZe.js create mode 100644 internal/admin/dashboard/static/dist/assets/index-YCkUyp1b.js create mode 100644 internal/admin/dashboard/static/dist/assets/index-o5upCDH8.css diff --git a/internal/admin/dashboard/static/dist/assets/index-C5HbE-2l.css b/internal/admin/dashboard/static/dist/assets/index-C5HbE-2l.css deleted file mode 100644 index 2bbd6283b..000000000 --- a/internal/admin/dashboard/static/dist/assets/index-C5HbE-2l.css +++ /dev/null @@ -1 +0,0 @@ -:root{--bg:#111110;--bg-surface:#1e1d1c;--bg-surface-hover:#2a2420;--border:#2a2826;--text:#e8e0d6;--text-muted:#9a918a;--accent:#b8956e;--accent-hover:#d4b896;--success:#34d399;--info:#3b82f6;--warning:#f59e0b;--danger:#ef4444;--prompt-cache-color:color-mix(in srgb, var(--info) 72%, #fff);--prompt-cache-color-bg:color-mix(in srgb, var(--token-prompt) 24%, var(--bg-surface));--cache-meter-uncached:var(--token-input);--cache-meter-local:var(--token-local);--cache-meter-prompt:var(--token-prompt);--token-input:#c0824a;--token-output:#ddb27a;--token-prompt:color-mix(in srgb, var(--info) 60%, transparent);--token-local:color-mix(in srgb, var(--info) 20%, transparent);--sidebar-width:240px;--radius:8px;--chart-grid:#2a2826;--chart-text:#9a918a;--chart-day-marker:var(--text);--chart-tooltip-bg:#1e1d1c;--chart-tooltip-border:#2a2826;--chart-tooltip-text:#e8e0d6;--cal-level-0:#161b22;--cal-level-1:color-mix(in srgb, var(--info) 15%, var(--bg-surface));--cal-level-2:color-mix(in srgb, var(--info) 25%, var(--bg-surface));--cal-level-3:color-mix(in srgb, var(--info) 36%, var(--bg-surface));--cal-level-4:color-mix(in srgb, var(--info) 48%, var(--bg-surface));--cal-level-5:color-mix(in srgb, var(--info) 60%, var(--bg-surface));--cal-level-6:color-mix(in srgb, var(--info) 73%, var(--bg-surface));--cal-level-7:color-mix(in srgb, var(--info) 87%, var(--bg-surface));--cal-level-8:var(--info);--cal-level-9:color-mix(in srgb, var(--info) 80%, #fff);--cal-level-10:color-mix(in srgb, var(--info) 62%, #fff);--alias-row-valid-bg:color-mix(in srgb, var(--bg-surface-hover) 86%, #fff 14%);--alias-row-valid-bg-hover:color-mix(in srgb, var(--bg-surface-hover) 72%, #fff 28%);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=light]{--bg:#f5f0ea;--bg-surface:#fff;--bg-surface-hover:#ece5dc;--border:#e8e0d6;--text:#2d2519;--text-muted:#7a7068;--accent:#755c3d;--accent-hover:#9a7d5a;--success:#34d399;--info:#2563eb;--warning:#d97706;--danger:#dc2626;--prompt-cache-color:color-mix(in srgb, var(--info) 84%, #0f172a);--prompt-cache-color-bg:color-mix(in srgb, var(--token-prompt) 18%, var(--bg-surface));--chart-grid:#e8e0d6;--chart-text:#7a7068;--chart-day-marker:var(--text);--chart-tooltip-bg:#fff;--chart-tooltip-border:#e8e0d6;--chart-tooltip-text:#2d2519;--cal-level-0:#ebedf0;--cal-level-1:color-mix(in srgb, var(--info) 12%, #fff);--cal-level-2:color-mix(in srgb, var(--info) 24%, #fff);--cal-level-3:color-mix(in srgb, var(--info) 37%, #fff);--cal-level-4:color-mix(in srgb, var(--info) 50%, #fff);--cal-level-5:color-mix(in srgb, var(--info) 64%, #fff);--cal-level-6:color-mix(in srgb, var(--info) 80%, #fff);--cal-level-7:var(--info);--cal-level-8:color-mix(in srgb, var(--info) 85%, #000);--cal-level-9:color-mix(in srgb, var(--info) 72%, #000);--cal-level-10:color-mix(in srgb, var(--info) 60%, #000);--alias-row-valid-bg:color-mix(in srgb, var(--bg-surface) 96%, var(--accent) 4%);--alias-row-valid-bg-hover:color-mix(in srgb, var(--bg-surface) 90%, var(--accent) 10%);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--bg:#f5f0ea;--bg-surface:#fff;--bg-surface-hover:#ece5dc;--border:#e8e0d6;--text:#2d2519;--text-muted:#7a7068;--accent:#755c3d;--accent-hover:#9a7d5a;--success:#34d399;--info:#2563eb;--warning:#d97706;--danger:#dc2626;--prompt-cache-color:color-mix(in srgb, var(--info) 84%, #0f172a);--prompt-cache-color-bg:color-mix(in srgb, var(--token-prompt) 18%, var(--bg-surface));--chart-grid:#e8e0d6;--chart-text:#7a7068;--chart-day-marker:var(--text);--chart-tooltip-bg:#fff;--chart-tooltip-border:#e8e0d6;--chart-tooltip-text:#2d2519;--cal-level-0:#ebedf0;--cal-level-1:color-mix(in srgb, var(--info) 12%, #fff);--cal-level-2:color-mix(in srgb, var(--info) 24%, #fff);--cal-level-3:color-mix(in srgb, var(--info) 37%, #fff);--cal-level-4:color-mix(in srgb, var(--info) 50%, #fff);--cal-level-5:color-mix(in srgb, var(--info) 64%, #fff);--cal-level-6:color-mix(in srgb, var(--info) 80%, #fff);--cal-level-7:var(--info);--cal-level-8:color-mix(in srgb, var(--info) 85%, #000);--cal-level-9:color-mix(in srgb, var(--info) 72%, #000);--cal-level-10:color-mix(in srgb, var(--info) 60%, #000);--alias-row-valid-bg:color-mix(in srgb, var(--bg-surface) 96%, var(--accent) 4%);--alias-row-valid-bg-hover:color-mix(in srgb, var(--bg-surface) 90%, var(--accent) 10%);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5}body.dashboard-modal-open{overflow:hidden}.app{height:100vh;min-height:0;display:flex;overflow:hidden}.badge{background:var(--accent);color:#fff;text-transform:uppercase;letter-spacing:.5px;border-radius:10px;padding:2px 8px;font-size:10px;font-weight:600}.auth-dialog{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);width:min(440px,100%);padding:22px;box-shadow:0 24px 70px #00000061}.auth-dialog-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:12px;display:flex}.auth-dialog h2{margin-top:2px;font-size:22px;line-height:1.2}.auth-dialog-close{background:var(--bg);border:1px solid var(--border);width:32px;min-width:32px;height:32px;color:var(--text-muted);cursor:pointer;font:inherit;border-radius:6px;flex:0 0 32px;justify-content:center;align-items:center;padding:0;line-height:1;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.auth-dialog-close:hover{color:var(--text);background:var(--bg-surface-hover)}.auth-dialog-close:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 36%, transparent);outline-offset:2px}.auth-dialog-hint{color:var(--text-muted);font-size:13px}.auth-dialog-error{color:var(--danger);font-size:13px;font-weight:600}.auth-dialog-form{gap:10px;margin-top:18px;display:grid}.auth-dialog-actions{justify-content:flex-end;gap:8px;margin-top:8px;display:flex}.content{-webkit-overflow-scrolling:touch;flex:1 1 0;width:100%;min-width:0;min-height:0;padding:32px;transition:width .2s;overflow-y:auto;container:dashboard-content/inline-size}.content>*{width:100%;max-width:1336px;margin-inline:auto}body.dashboard-modal-open .content{overflow-y:hidden}.content.interactions-open>*{max-width:none}.page-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.page-header h2{letter-spacing:-.3px;font-size:22px;font-weight:700}.page-header-controls{align-items:center;gap:12px;display:flex}.page-with-sticky-date{grid-template-columns:minmax(0,1fr) auto;align-items:start;column-gap:12px;display:grid}.page-with-sticky-date>*{grid-column:1/-1}.page-with-sticky-date>.date-range-page-header{grid-column:1}.page-with-sticky-date>.sticky-date-range{z-index:8;grid-column:2;justify-self:end;position:sticky;top:16px}.model-count{color:var(--text-muted);font-size:14px}.provider-status-section{margin-top:28px;scroll-margin-top:24px}.cards{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:28px;display:grid}.card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.card-label{text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);margin-bottom:8px;font-size:12px;font-weight:600}.card-value{letter-spacing:-.5px;font-size:28px;font-weight:700}.cache-meter{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:28px;padding:24px}.chart-container{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px}.chart-container h3{margin-bottom:16px;font-size:16px;font-weight:600}.chart-container-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.chart-container-header h3{margin-bottom:0}.chart-wrapper{height:210px;position:relative}.live-dot{background:var(--text-muted);border-radius:50%;flex-shrink:0;width:8px;height:8px}.live-dot.is-streaming{background:var(--success);position:relative}.live-dot.is-streaming:after{content:"";z-index:-1;background:color-mix(in srgb, var(--success) 55%, transparent);border-radius:50%;animation:1.8s ease-out infinite live-dot-pulse;position:absolute;inset:0}@media (prefers-reduced-motion:reduce){.live-dot.is-streaming:after{opacity:0;animation:none}}@keyframes live-dot-pulse{0%{opacity:1;transform:scale(1)}70%{opacity:0;transform:scale(2.5)}to{opacity:0;transform:scale(2.5)}}.alert{border-radius:var(--radius);margin-bottom:20px;padding:12px 16px;font-size:14px}.alert-warning{color:var(--warning);background:#f59e0b1a;border:1px solid #f59e0b4d}.table-toolbar{align-items:center;gap:12px;margin-bottom:16px;display:flex}.table-toolbar-main{flex:1;min-width:0}.table-toolbar-actions{justify-content:flex-end;margin-left:auto;display:flex}input:is([type=text],[type=date],[type=number]){background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text);outline:none;padding:8px 12px;font-family:inherit;font-size:13px}input:is([type=text],[type=date],[type=number]):focus{border-color:var(--accent)}input:is([type=text],[type=date],[type=number]):disabled,textarea:disabled,.form-input:disabled{opacity:.6;cursor:not-allowed}.table-wrapper{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.data-table{border-collapse:collapse;width:100%;font-size:14px}.data-table th{text-align:left;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);background:var(--bg);border-bottom:1px solid var(--border);padding:12px 16px;font-size:12px;font-weight:600}.data-table th.model-actions-header{text-align:right;white-space:nowrap;width:1%;min-width:156px}.data-table td{border-bottom:1px solid var(--border);padding:10px 16px}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:var(--bg-surface-hover)}.mono{font-family:SF Mono,Menlo,Consolas,monospace}.font-size-md{font-size:13px}.col-price,.data-table th.col-price{text-align:right}td.col-price{color:var(--text-muted);white-space:nowrap;font-family:SF Mono,Menlo,Consolas,monospace;font-size:13px}.provider-badge{background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:2px 10px;font-size:12px;font-weight:500;display:inline-block}.empty-state{text-align:center;color:var(--text-muted);padding:48px 0;font-size:14px}.empty-state-icon{width:auto;height:auto;max-height:160px;color:var(--text-muted);margin:0 auto;display:block}.empty-state-icon text{fill:var(--text-muted);font-family:inherit;font-weight:600}.chart-empty-overlay{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.chart-empty-overlay .empty-state-icon{width:auto;max-width:90%;height:auto;max-height:195px}.loading-spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:16px;height:16px;animation:.8s linear infinite loading-spin}@keyframes loading-spin{to{transform:rotate(360deg)}}.table-action-btn{background:var(--bg);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;gap:6px;padding:6px 12px;font-family:inherit;font-size:12px;font-weight:500;transition:all .15s;display:inline-flex}.table-action-btn:hover:not(:disabled){background:var(--bg-surface-hover)}.table-action-btn:disabled{opacity:.45;cursor:default}.table-action-btn-danger{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 50%, var(--border))}.table-action-btn-active{color:var(--accent-strong,var(--accent));background:color-mix(in srgb, var(--accent) 12%, var(--bg));border-color:color-mix(in srgb, var(--accent) 38%, var(--border))}.table-action-btn-active:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 18%, var(--bg-surface-hover))}.table-action-btn-failover-active{color:var(--info);background:color-mix(in srgb, var(--cache-meter-prompt) 35%, var(--bg));border-color:color-mix(in srgb, var(--info) 45%, var(--border));position:relative}.table-action-btn-failover-active:hover:not(:disabled){background:color-mix(in srgb, var(--cache-meter-prompt) 45%, var(--bg-surface-hover))}.table-icon-btn{border-radius:6px;gap:0;width:32px;min-width:32px;height:32px;padding:0}.table-icon-btn.table-action-btn-active{position:relative}.table-icon-btn.table-action-btn-active:after{content:"";background:var(--accent);width:6px;height:6px;box-shadow:0 0 0 2px var(--bg-surface);border-radius:999px;position:absolute;top:4px;right:4px}.table-icon-btn.table-action-btn-failover-active:after{content:"";background:var(--info);width:6px;height:6px;box-shadow:0 0 0 2px var(--bg-surface);border-radius:999px;position:absolute;top:4px;right:4px}.table-icon-svg{flex-shrink:0;width:14px;height:14px}.model-editor{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;padding:24px}.alias-kind-badge{border:1px solid var(--border);background:var(--bg);min-height:24px;color:var(--accent);letter-spacing:.2px;text-transform:uppercase;border-color:color-mix(in srgb, var(--accent) 55%, var(--border));border-radius:999px;justify-content:center;align-items:center;gap:4px;padding:0 10px;font-size:11px;font-weight:600;display:inline-flex}.form h3{font-size:20px;font-weight:700}.form-kicker,.form-hint{color:var(--text-muted);font-size:13px}.alias-actions-cell{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.model-list-actions{white-space:nowrap;flex-wrap:nowrap}.model-list-actions .table-icon-btn{flex:0 0 32px}.model-list-actions .alias-toggle{flex:none}.alias-toggle{border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:6px 10px;font-family:inherit;font-size:12px;transition:all .15s;display:inline-flex}.alias-toggle:hover:not(:disabled){background:var(--bg-surface-hover)}.alias-toggle:disabled{opacity:.45;cursor:default}.alias-toggle-track{background:color-mix(in srgb, var(--border) 80%, var(--bg));border-radius:6px;width:34px;height:18px;transition:background .15s;position:relative}.alias-toggle-thumb{background:var(--text-muted);border-radius:6px;width:16px;height:16px;transition:transform .15s,background .15s;position:absolute;top:1px;left:2px}.alias-toggle.enabled{border-color:color-mix(in srgb, var(--success) 50%, var(--border))}.alias-toggle.enabled .alias-toggle-track{background:color-mix(in srgb, var(--success) 55%, var(--bg))}.alias-toggle.enabled .alias-toggle-thumb{background:#fff;transform:translate(14px)}.alias-toggle.restricted{border-color:color-mix(in srgb, var(--accent) 50%, var(--border));color:color-mix(in srgb, var(--accent) 70%, var(--text))}.alias-toggle.restricted .alias-toggle-track{background:color-mix(in srgb, var(--accent) 55%, var(--bg))}.editor-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:20px;display:flex}.form{flex-direction:column;gap:16px;display:flex}.auth-key-editor{background:color-mix(in srgb, var(--bg-surface) 82%, var(--bg) 18%)}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.form-field{flex-direction:column;gap:8px;display:flex}.form-field-label{text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);font-size:12px;font-weight:600;display:inline-block}.vm-target-row{align-items:center;gap:8px;display:flex}.vm-target-row .vm-target-model{flex:auto;min-width:0}.vm-target-row .vm-target-weight{flex:0 0 88px;width:88px}.vm-status-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.vm-status-row .vm-status-toggle{margin-left:auto}.form-error{border:1px solid color-mix(in srgb, var(--danger) 42%, var(--border));border-radius:var(--radius);background:color-mix(in srgb, var(--danger) 10%, var(--bg-surface));color:var(--danger);overflow-wrap:anywhere;margin:0;padding:10px 12px;font-size:13px;font-weight:600;line-height:1.4}.form-error:empty{display:none}.form-field-error{color:var(--danger);overflow-wrap:anywhere;font-size:13px;font-weight:500;line-height:1.4}.form-field-required{color:var(--danger);margin-left:3px}:is(input,textarea,select)[aria-invalid=true]{border-color:color-mix(in srgb, var(--danger) 60%, var(--border))}:is(input,textarea,select)[aria-invalid=true]:focus{border-color:var(--danger)}textarea{resize:vertical;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;min-height:60px;color:var(--text);outline:none;padding:10px 12px;font-family:inherit;font-size:13px}textarea:focus{border-color:var(--accent)}.form-input{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;min-height:38px;color:var(--text);outline:none;padding:8px 10px;font-family:inherit;font-size:13px}.form-input:focus{border-color:var(--accent)}.form-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.failover-target-actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.data-table tr.alias-row.is-valid td{background:var(--alias-row-valid-bg)}.data-table tr.alias-row.is-valid:hover td{background:var(--alias-row-valid-bg-hover)}.data-table tr.alias-row:not(.is-valid) td{background:color-mix(in srgb, var(--accent) 10%, var(--bg-surface))}.data-table tr.alias-row:not(.is-valid):hover td{background:color-mix(in srgb, var(--accent) 16%, var(--bg-surface-hover))}.data-table tr.alias-row.is-disabled td{background:var(--bg-surface);opacity:.58}.data-table tr.alias-row.is-disabled:hover td{background:var(--bg-surface-hover);opacity:.72}.data-table tr.model-access-disabled-row td{background:color-mix(in srgb, var(--danger) 6%, var(--bg-surface))}.data-table tr.model-access-disabled-row:hover td{background:color-mix(in srgb, var(--danger) 10%, var(--bg-surface-hover))}.workflow-section-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.workflow-section-head h4{font-size:14px;font-weight:700}.workflow-preview{flex-direction:column;gap:12px;display:flex}.workflow-feature-toggles{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.workflow-feature-toggle{border:1px solid var(--border);background:var(--bg);border-radius:10px;align-items:center;gap:10px;padding:10px 12px;font-size:14px;font-weight:500;display:flex}.workflow-feature-toggle input{width:16px;height:16px}.model-chart-section{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:24px;padding:24px}.model-chart-section h3{margin:0;font-size:16px;font-weight:600}.model-chart-header{justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;display:flex}.bar-chart-wrap{width:100%;height:180px;position:relative}.form-select,.usage-log-select{appearance:none;background-color:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);cursor:pointer;background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - 17px),calc(100% - 12px);background-repeat:no-repeat;background-size:5px 5px;outline:none;min-width:140px;padding:8px 34px 8px 12px;font-family:inherit;font-size:13px}.form-select:disabled,.usage-log-select:disabled{cursor:not-allowed;opacity:.6}.form-select:focus,.usage-log-select:focus{border-color:var(--accent)}.form-select{width:100%;min-width:0}.usage-label-chips{flex-wrap:wrap;gap:4px;max-width:280px;display:inline-flex}.usage-label-chip{border:1px solid color-mix(in srgb, var(--label-color,var(--accent)) 45%, var(--border));background:color-mix(in srgb, var(--label-color,var(--accent)) 14%, var(--bg));min-height:20px;color:var(--text);white-space:nowrap;cursor:pointer;border-radius:999px;align-items:center;padding:1px 9px;font-family:inherit;font-size:11px;font-style:normal;font-weight:600;line-height:1.4;transition:background .15s,border-color .15s;display:inline-flex}.usage-label-chip:hover{background:color-mix(in srgb, var(--label-color,var(--accent)) 26%, var(--bg))}.usage-label-chip.active{background:color-mix(in srgb, var(--label-color,var(--accent)) 32%, var(--bg));border-color:var(--label-color,var(--accent));box-shadow:0 0 0 1px color-mix(in srgb, var(--label-color,var(--accent)) 55%, transparent)}@keyframes audit-live-summary-stripe-blink{0%,to{opacity:.9}50%{opacity:.28}}.audit-status-badge{border:1px solid var(--border);letter-spacing:.2px;background:var(--bg-surface);border-radius:999px;justify-content:center;align-items:center;min-width:46px;height:24px;padding:0 10px;font-size:12px;font-weight:600;display:inline-flex}.audit-status-badge.status-success{color:var(--success);border-color:color-mix(in srgb, var(--success) 50%, var(--border))}.audit-status-badge.status-warning{color:var(--warning);border-color:color-mix(in srgb, var(--warning) 50%, var(--border))}.audit-status-badge.status-error{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 50%, var(--border))}.audit-status-badge.status-neutral{color:var(--text-muted)}.audit-status-badge.status-unknown{color:var(--text-muted);border-color:color-mix(in srgb, var(--border) 75%, transparent)}.audit-pane{border:1px solid var(--border);background:var(--bg);border-top:0;border-radius:0 0 8px 8px;min-width:0;padding:12px}.audit-pane h5{text-transform:uppercase;letter-spacing:.4px;color:var(--text-muted);font-size:11px;font-weight:600}.audit-prompt-cache-pill{border:1px solid color-mix(in srgb, var(--prompt-cache-color) 45%, var(--border));background:var(--prompt-cache-color-bg);min-height:20px;color:var(--prompt-cache-color);letter-spacing:.02em;text-transform:none;border-radius:999px;align-items:center;padding:2px 8px;font-size:11px;font-weight:700;display:inline-flex}.audit-prompt-cache-highlight{color:var(--prompt-cache-color);font-weight:700}.audit-audio{white-space:normal;flex-direction:column;gap:8px;display:flex}.audit-audio-player{width:100%;max-width:420px;height:36px}.audit-audio-meta{color:var(--text-muted);font-size:12px}.audit-audio-empty{align-items:flex-start;padding:4px 0}.audit-audio-icon{font-size:20px;line-height:1}.audit-audio-note{color:var(--text-muted);font-size:12px}.audit-audio-metadata{flex-direction:column;gap:2px;margin-top:4px;font-size:12px;display:flex}.audit-audio-meta-row{gap:8px;display:flex}.audit-audio-meta-key{color:var(--text-muted);min-width:120px}.conversation-body-highlight{border-left:2px solid color-mix(in srgb, var(--accent) 70%, var(--border));background:color-mix(in srgb, var(--accent) 10%, transparent);cursor:pointer;line-height:inherit;border-radius:2px;margin:0 0 0 -2px;padding:0 0 0 2px;display:inline}.conversation-body-highlight:hover{background:color-mix(in srgb, var(--accent) 18%, transparent)}.conversation-body-highlight.conversation-system{border-left-color:color-mix(in srgb, var(--warning) 70%, var(--border));background:color-mix(in srgb, var(--warning) 10%, transparent)}.conversation-body-highlight.conversation-user{border-left-color:color-mix(in srgb, var(--accent) 75%, var(--border));background:color-mix(in srgb, var(--accent) 12%, transparent)}.conversation-body-highlight.conversation-assistant{border-left-color:color-mix(in srgb, var(--success) 65%, var(--border));background:color-mix(in srgb, var(--success) 10%, transparent)}#interactions-drawer-content{flex:1;min-height:0;overflow-y:auto}.pagination{justify-content:space-between;align-items:center;padding:12px 0 0;display:flex}.btn{background:var(--bg);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:6px;padding:6px 16px;font-family:inherit;font-size:13px;transition:all .15s}.btn:hover:not(:disabled){background:var(--bg-surface-hover)}.btn-primary{background:var(--accent);border-color:color-mix(in srgb, var(--accent) 70%, #000 10%);color:#fff;font-weight:600;box-shadow:0 10px 22px #3b82f62e}.btn-primary:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 90%, #fff 10%);border-color:color-mix(in srgb, var(--accent) 78%, #000 12%)}.btn-danger-outline{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 55%, var(--border));background:0 0;font-weight:600}.btn-danger-outline:hover:not(:disabled){background:color-mix(in srgb, var(--danger) 10%, var(--bg));border-color:color-mix(in srgb, var(--danger) 75%, var(--border))}.btn-danger{color:#fff;border-color:color-mix(in srgb, var(--danger) 76%, #000 12%);background:var(--danger);box-shadow:0 10px 22px color-mix(in srgb, var(--danger) 20%, transparent);font-weight:600}.btn-danger:hover:not(:disabled){background:color-mix(in srgb, var(--danger) 90%, #fff 10%);border-color:color-mix(in srgb, var(--danger) 82%, #000 14%)}.btn-with-icon{justify-content:center;align-items:center;gap:8px;display:inline-flex}.btn-with-icon .table-icon-svg{width:16px;height:16px}.btn:disabled{opacity:.4;cursor:default}.settings-panel{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px}.inline-help-section{flex-direction:column;gap:2px;display:flex}.inline-help-title-row{align-items:center;gap:10px;display:inline-flex}.inline-help-title-row h2,.inline-help-title-row h3{margin-bottom:0}.inline-help-title-row h2:empty,.inline-help-title-row h3:empty{display:none}.inline-help-toggle{border:1px solid color-mix(in srgb, var(--accent) 28%, var(--border));width:16px;height:16px;color:var(--accent);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:4px;justify-content:center;align-items:center;padding:0;transition:color .18s,border-color .18s;display:inline-flex;position:relative}.inline-help-toggle:before{content:"";pointer-events:auto;background:0 0;width:32px;height:32px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.inline-help-toggle:hover{border-color:color-mix(in srgb, var(--accent) 48%, var(--border));color:var(--text);background:0 0}.inline-help-toggle:active{background:0 0}.inline-help-toggle:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 28%, transparent);outline-offset:2px}.inline-help-toggle-icon{justify-content:center;align-items:center;width:100%;height:100%;padding-bottom:1px;font-size:13px;font-weight:700;line-height:1;transition:transform .52s cubic-bezier(.22,.72,.12,1);display:inline-flex;transform:rotate(0)}.inline-help-copy{max-width:780px;color:var(--text-muted);margin-top:2px;font-size:14px}.settings-select{width:100%}.settings-refresh-section{border-top:1px solid var(--border);justify-items:start;gap:12px;margin-top:24px;padding-top:22px;display:grid}.settings-refresh-section h3{font-size:18px}.settings-refresh-section p{max-width:720px;color:var(--text-muted);font-size:14px;line-height:1.55}.budget-list{gap:10px;padding:10px 0;display:grid}.budget-row{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);grid-template-columns:minmax(0,1fr);align-items:center;gap:16px;padding:12px 14px;display:grid}.budget-row-main{min-width:0}.budget-row-head{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:10px;min-width:0;display:grid}.budget-scope-value{width:fit-content;max-width:100%;min-height:24px;color:var(--text);text-overflow:ellipsis;white-space:nowrap;border-radius:6px;justify-self:start;align-items:center;gap:5px;padding:2px 8px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:12px;display:inline-flex;overflow:hidden}.budget-user-path{border:1px solid color-mix(in srgb, var(--accent) 32%, var(--border));background:color-mix(in srgb, var(--accent) 9%, var(--bg))}.budget-label{border:1px solid color-mix(in srgb, var(--label-color,var(--accent)) 45%, var(--border));background:color-mix(in srgb, var(--label-color,var(--accent)) 14%, var(--bg))}.budget-scope-icon{stroke-width:2.2px;opacity:.85;flex:0 0 12px;width:12px;height:12px}.budget-row-meta{min-width:0;color:var(--text-muted);align-items:center;gap:8px;font-size:12px;display:inline-flex}.budget-source{border:1px solid var(--border);background:var(--bg);color:var(--text-muted);border-radius:999px;padding:2px 7px;font-size:11px}.budget-row-period{justify-content:center;min-width:0;display:flex}.budget-row-controls{justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex}.budget-bars{gap:6px;margin-top:10px;display:grid}.budget-bar-line{grid-template-columns:118px minmax(0,1fr);align-items:center;gap:10px;display:grid}.budget-bar-label{color:var(--text-muted);justify-content:space-between;align-items:center;gap:6px;font-size:11px;line-height:1;display:flex}.budget-bar-percent{font-weight:700}.budget-bar-track{background:color-mix(in srgb, var(--border) 75%, var(--bg));border-radius:999px;height:16px;position:relative;overflow:hidden}.budget-bar-fill{border-radius:inherit;min-width:0;height:100%;transition:width .2s}.budget-bar-fill-usage{background:color-mix(in srgb, var(--success) 82%, var(--accent))}.budget-bar-fill-danger{background:var(--danger)}.budget-bar-text-row{z-index:1;pointer-events:none;color:var(--text);position:absolute;inset:0}.budget-bar-text{text-overflow:ellipsis;white-space:nowrap;max-width:min(44%,190px);font-size:11px;font-weight:700;line-height:12px;position:absolute;top:50%;overflow:hidden}.budget-bar-text-center{max-width:min(46%,240px);left:50%;transform:translate(-50%,-50%)}.budget-bar-text-end{text-align:right;max-width:min(34%,180px);right:8px;transform:translateY(-50%)}.budget-period-label{border:1px solid var(--border);color:var(--text);white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;gap:5px;padding:2px 7px;font-size:11px;font-weight:600;display:inline-flex}.budget-period-icon{stroke-width:2.2px;flex:0 0 12px;width:12px;height:12px}.budget-period-label-monthly{border-color:color-mix(in srgb, #30302c 62%, var(--border));background:color-mix(in srgb, #30302c 12%, var(--bg));color:color-mix(in srgb, #30302c 34%, var(--text) 66%)}.budget-period-label-weekly{border-color:color-mix(in srgb, #68765c 62%, var(--border));background:color-mix(in srgb, #68765c 12%, var(--bg));color:color-mix(in srgb, #68765c 34%, var(--text) 66%)}.budget-period-label-daily{border-color:color-mix(in srgb, #b5652d 62%, var(--border));background:color-mix(in srgb, #b5652d 12%, var(--bg));color:color-mix(in srgb, #b5652d 34%, var(--text) 66%)}.budget-period-label-hourly{border-color:color-mix(in srgb, #783f22 62%, var(--border));background:color-mix(in srgb, #783f22 12%, var(--bg));color:color-mix(in srgb, #783f22 34%, var(--text) 66%)}.budget-period-label-custom{border-style:dashed;border-color:color-mix(in srgb, #bfa584 68%, var(--border));background:color-mix(in srgb, #bfa584 16%, var(--bg));color:color-mix(in srgb, #8b6f4f 34%, var(--text) 66%)}[data-theme=light] .budget-period-label-monthly{color:#30302c}[data-theme=light] .budget-period-label-weekly{color:#68765c}[data-theme=light] .budget-period-label-daily{color:#b5652d}[data-theme=light] .budget-period-label-hourly{color:#783f22}[data-theme=light] .budget-period-label-custom{color:#8b6f4f}@media (prefers-color-scheme:light){:root:not([data-theme=dark]) .budget-period-label-monthly{color:#30302c}:root:not([data-theme=dark]) .budget-period-label-weekly{color:#68765c}:root:not([data-theme=dark]) .budget-period-label-daily{color:#b5652d}:root:not([data-theme=dark]) .budget-period-label-hourly{color:#783f22}:root:not([data-theme=dark]) .budget-period-label-custom{color:#8b6f4f}}.budget-row-actions{flex-flow:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.budget-action-btn{white-space:nowrap;justify-content:center;gap:0;width:28px;min-width:0;height:28px;padding:0;transition:width .18s,border-color .15s,background .15s,color .15s;overflow:hidden}.budget-action-btn:hover,.budget-action-btn:focus-visible{gap:6px;width:82px;padding:0 9px}.budget-action-label{opacity:0;max-width:0;transition:max-width .18s,opacity .12s;overflow:hidden}.budget-action-btn:hover .budget-action-label,.budget-action-btn:focus-visible .budget-action-label{opacity:1;max-width:58px}.budget-action-btn-warning{color:var(--warning);border-color:color-mix(in srgb, var(--warning) 50%, var(--border))}.budget-action-icon{flex:0 0 14px;width:14px;height:14px}.budget-editor{background:color-mix(in srgb, var(--bg-surface) 86%, var(--bg) 14%)}.budget-settings-actions{flex-wrap:wrap;gap:10px;display:flex}.budget-reset-dialog{max-width:460px}.form-action-icon{flex:0 0 16px;width:16px;height:16px}.settings-refresh-alert{margin-top:16px;margin-bottom:0}@media (width<=768px){.badge{display:none}.content{width:100%;margin:0 auto;padding:20px}.auth-dialog{padding:18px}.auth-dialog-actions{flex-direction:column-reverse}.auth-dialog-actions .btn{width:100%}.cards{grid-template-columns:repeat(2,1fr)}.page-header{flex-wrap:wrap;gap:12px}.page-header h2{width:100%}.page-header-controls{flex-wrap:wrap;justify-content:space-between;width:100%}.page-with-sticky-date{grid-template-columns:minmax(0,1fr)}.page-with-sticky-date>.date-range-page-header,.page-with-sticky-date>.sticky-date-range{grid-column:1}.page-with-sticky-date>.date-range-page-header{margin-bottom:12px}.page-with-sticky-date>.sticky-date-range{width:100%;margin-bottom:24px;top:10px}.sticky-date-range .date-picker-trigger{justify-content:space-between;width:100%}.usage-log-select{min-width:0}.budget-row{grid-template-columns:1fr}.budget-row-controls{flex-wrap:wrap}.budget-bar-line{grid-template-columns:1fr;gap:5px}.form-grid,.workflow-feature-toggles{grid-template-columns:1fr}.workflow-section-head{flex-direction:column;align-items:flex-start}.table-toolbar{flex-direction:column;align-items:stretch}.table-toolbar-actions{justify-content:stretch;margin-left:0}.table-toolbar-actions .btn{width:100%}.model-editor{padding:16px}.alias-actions-cell,.editor-header{flex-direction:column;align-items:flex-start}.alias-actions-cell .table-action-btn,.editor-header .table-action-btn{width:100%}.alias-actions-cell .table-icon-btn,.editor-header .table-icon-btn{width:36px}.model-list-actions{flex-flow:row;align-items:center}.model-list-actions .table-action-btn{width:auto}.model-list-actions .table-icon-btn{flex-basis:32px;width:32px}.model-editor .editor-header{flex-direction:row;align-items:flex-start}.model-editor .editor-header>:first-child{flex:1;min-width:0}.model-editor .editor-header .dialog-close-btn{flex:0 0 32px;align-self:flex-start;width:32px;min-width:32px}.settings-panel{padding:18px}.budget-settings-actions,.budget-settings-actions .btn{width:100%}}.workflow-conn{background:color-mix(in srgb, var(--accent) 44%, var(--border));flex:1 1 0;width:auto;min-width:13px;height:2px;position:relative}.workflow-conn:after{content:"";background:color-mix(in srgb, var(--accent) 44%, var(--border));clip-path:polygon(0 0,100% 50%,0 100%);width:7px;height:9px;position:absolute;top:50%;right:-1px;transform:translateY(-50%)}.workflow-node{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-surface);text-align:center;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;gap:4px;min-width:72px;padding:8px 12px;display:flex}.auth-key-description{color:var(--text-muted);max-width:220px;font-size:13px}.auth-key-status-badge{border-radius:999px;padding:2px 10px;font-size:12px;font-weight:600;display:inline-block}.auth-key-status-active{background:color-mix(in srgb, var(--success) 12%, var(--bg));border:1px solid color-mix(in srgb, var(--success) 30%, var(--border));color:var(--success)}.auth-key-status-inactive{background:color-mix(in srgb, var(--danger) 10%, var(--bg));border:1px solid color-mix(in srgb, var(--danger) 30%, var(--border));color:var(--danger)}.mcp-server-advanced{border:1px solid var(--border);border-radius:var(--radius);background:color-mix(in srgb, var(--bg-surface) 72%, var(--bg) 28%);overflow:hidden}.mcp-server-advanced>summary{color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;list-style:none;display:flex}.mcp-server-advanced>summary::-webkit-details-marker{display:none}.mcp-server-advanced>summary:after{border-right:2px solid var(--text-muted);border-bottom:2px solid var(--text-muted);content:"";flex:none;width:7px;height:7px;transition:transform .15s;transform:rotate(45deg)}.mcp-server-advanced[open]>summary:after{transform:rotate(225deg)}.mcp-server-advanced-summary-copy{flex-direction:column;gap:2px;min-width:0;display:flex}.mcp-server-advanced-title{font-size:13px;font-weight:600}.mcp-server-advanced-fields{border-top:1px solid var(--border);flex-direction:column;gap:16px;padding:14px;display:flex}.copy-feedback-btn{align-items:center;gap:6px;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}.copy-feedback-btn-copied{background:color-mix(in srgb, var(--success) 12%, var(--bg));border-color:color-mix(in srgb, var(--success) 40%, var(--border));color:var(--success)}.rate-limit-pressure-row{background-image:linear-gradient(to right, color-mix(in srgb, var(--success) 16%, transparent) var(--rate-limit-pressure,0%), transparent var(--rate-limit-pressure,0%))}.rate-limit-pressure-row.rate-limit-pressure-high{background-image:linear-gradient(to right, color-mix(in srgb, var(--warning) 20%, transparent) var(--rate-limit-pressure,0%), transparent var(--rate-limit-pressure,0%))}.rate-limit-pressure-row.rate-limit-pressure-full{background-image:linear-gradient(to right, color-mix(in srgb, var(--danger) 22%, transparent) var(--rate-limit-pressure,0%), transparent var(--rate-limit-pressure,0%))}.table-icon-btn.rate-limit-gauge-inherited{color:var(--accent-strong,var(--accent));background:linear-gradient(to right, color-mix(in srgb, var(--accent) 22%, var(--bg)) 50%, var(--bg) 50%);border-color:color-mix(in srgb, var(--accent) 30%, var(--border))}.auth-dialog-input-icon{width:16px;height:16px;color:var(--text-muted);pointer-events:none;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.auth-dialog-input-shell:focus-within .auth-dialog-input-icon{color:var(--accent)}.auth-dialog-submit-icon{flex:0 0 16px;width:16px;height:16px}.nav-icon{flex:0 0 18px;width:18px;height:18px}.api-key-open-icon{flex:0 0 15px;width:15px;height:15px}.theme-icon{flex:0 0 14px;width:14px;height:14px}.theme-toggle-mobile .theme-icon{flex-basis:16px;width:16px;height:16px}@media (width<=768px){.sidebar-footer .api-key-open-icon{flex-basis:16px;width:16px;height:16px}}.failover-drafts-loading{min-height:96px}.models-loading-state{top:16px;left:var(--sidebar-width);z-index:110;pointer-events:none;--loading-state-min-height:0;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-surface);width:fit-content;box-shadow:0 8px 24px color-mix(in srgb, var(--bg) 70%, transparent);margin:0 auto;padding:10px 14px;position:fixed;right:0}@media (width<=768px){.models-loading-state{left:60px}}.sidebar.sidebar-collapsed~.content .models-loading-state{left:60px}.alias-create-icon{flex:0 0 16px;width:16px;height:16px}.pricing-override-remove-row{margin-bottom:1px}@media (width<=768px){.pricing-override-remove-row{margin-bottom:0}}.pricing-recalculate-dialog{max-width:480px}.settings-refresh-btn.is-refreshing .settings-refresh-icon{transform-origin:50%;animation:.8s linear infinite loading-spin}.cost-source-icon{width:14px;height:14px;color:var(--success);cursor:help;vertical-align:-2px;stroke-width:2px;margin-left:4px}.cache-savings-icon{width:14px;height:14px;color:var(--accent);cursor:help;vertical-align:-2px;stroke-width:2px;margin-left:4px}.locale-selector.svelte-hr6ahz{color:var(--text-muted);gap:5px;margin-bottom:10px;font-size:11px;font-weight:600;display:grid}.locale-selector.svelte-hr6ahz select:where(.svelte-hr6ahz){border:1px solid var(--border);background:var(--bg);width:100%;min-width:0;color:var(--text);font:inherit;border-radius:6px;padding:6px 8px}.locale-selector.is-compact.svelte-hr6ahz{display:none}.theme-toggle.svelte-1keql7b{background:var(--bg);border:1px solid var(--border);border-radius:6px;align-items:center;margin-bottom:10px;padding:2px;display:inline-flex}.theme-btn.svelte-1keql7b{width:28px;height:24px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;transition:all .15s;display:flex}.theme-btn.svelte-1keql7b:hover{color:var(--text)}.theme-btn.active.svelte-1keql7b{background:var(--accent);color:#fff}.theme-btn.svelte-1keql7b:focus-visible,.theme-toggle-mobile.svelte-1keql7b:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 36%, transparent);outline-offset:2px}.theme-toggle-mobile.svelte-1keql7b{background:var(--bg);border:1px solid var(--border);width:36px;height:36px;color:var(--text-muted);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;transition:all .15s;display:none}.theme-toggle-mobile.svelte-1keql7b:hover{color:var(--text)}.theme-toggle.is-compact.svelte-1keql7b{display:none}.theme-toggle-mobile.is-compact.svelte-1keql7b{margin:0 auto;display:flex}@media (width<=768px){.theme-toggle.svelte-1keql7b{display:none}.theme-toggle-mobile.svelte-1keql7b{margin:0 auto;display:flex}}.sidebar.svelte-1nwtzae{flex:0 0 var(--sidebar-width);width:var(--sidebar-width);background:var(--bg-surface);border-right:1px solid var(--border);-webkit-overflow-scrolling:touch;z-index:10;flex-direction:column;max-height:100vh;transition:flex-basis .2s,width .2s;display:flex;position:sticky;top:0;overflow:hidden auto}.sidebar.sidebar-resizing.svelte-1nwtzae{transition:none}.sidebar-header.svelte-1nwtzae{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:20px;display:flex}.sidebar-logo.svelte-1nwtzae{width:28px;height:28px;color:var(--accent);flex-shrink:0}.sidebar-logo.svelte-1nwtzae svg{width:100%;height:100%}.sidebar-header.svelte-1nwtzae h1{letter-spacing:-.3px;font-size:18px;font-weight:700}.sidebar-nav.svelte-1nwtzae{flex-direction:column;flex:1;gap:4px;padding:12px;display:flex}.nav-item.svelte-1nwtzae{border-radius:var(--radius);color:var(--text-muted);align-items:center;gap:10px;padding:8px 12px;font-size:14px;font-weight:500;text-decoration:none;transition:all .15s;display:flex}.nav-item.svelte-1nwtzae:hover{background:var(--bg-surface-hover);color:var(--text)}.nav-item.active.svelte-1nwtzae{background:var(--accent);color:#fff}.nav-label.svelte-1nwtzae{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.sidebar-footer.svelte-1nwtzae{border-top:1px solid var(--border);padding:16px}.api-key-section.svelte-1nwtzae{gap:8px;display:grid}.external-auth-section.svelte-1nwtzae{gap:8px;margin-top:8px;display:grid}.external-auth-user.svelte-1nwtzae{min-width:0;color:var(--text-muted);align-items:center;gap:8px;font-size:12px;display:flex}.external-auth-user.svelte-1nwtzae span:where(.svelte-1nwtzae){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.api-key-open-btn.svelte-1nwtzae{border:1px solid var(--accent);border-radius:var(--radius);width:100%;color:var(--accent);cursor:pointer;background:0 0;justify-content:center;align-items:center;gap:8px;padding:8px 10px;font-family:inherit;font-size:13px;font-weight:600;transition:background-color .15s,border-color .15s;display:inline-flex}.api-key-open-btn.svelte-1nwtzae:hover{background:color-mix(in srgb, var(--accent) 10%, transparent);border-color:color-mix(in srgb, var(--accent) 78%, var(--text));color:color-mix(in srgb, var(--accent) 78%, var(--text))}.api-key-open-btn.svelte-1nwtzae:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 36%, transparent);outline-offset:2px}.sidebar-toggle.svelte-1nwtzae{cursor:ew-resize;z-index:11;background:0 0;border:none;flex:0 0 6px;width:6px;height:100vh;padding:0;transition:background .15s;position:sticky;top:0}.sidebar-toggle.svelte-1nwtzae:hover{background:color-mix(in srgb, var(--accent) 15%, transparent)}.sidebar-toggle.svelte-1nwtzae:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 36%, transparent);outline-offset:2px}body.sidebar-resizing{cursor:ew-resize;-webkit-user-select:none;user-select:none}.sidebar.sidebar-collapsed.svelte-1nwtzae .sidebar-header:where(.svelte-1nwtzae){justify-content:center;padding:16px}.sidebar.sidebar-collapsed.svelte-1nwtzae .sidebar-header:where(.svelte-1nwtzae) h1,.sidebar.sidebar-collapsed.svelte-1nwtzae .badge{display:none}.sidebar.sidebar-collapsed.svelte-1nwtzae .sidebar-nav:where(.svelte-1nwtzae) .nav-item:where(.svelte-1nwtzae){justify-content:center;padding:10px}.sidebar.sidebar-collapsed.svelte-1nwtzae .sidebar-nav:where(.svelte-1nwtzae) .nav-label:where(.svelte-1nwtzae){display:none}.sidebar.sidebar-collapsed.svelte-1nwtzae .sidebar-footer:where(.svelte-1nwtzae){padding:8px}.sidebar.sidebar-collapsed.svelte-1nwtzae .sidebar-footer:where(.svelte-1nwtzae) .api-key-section:where(.svelte-1nwtzae),.sidebar.sidebar-collapsed.svelte-1nwtzae .sidebar-footer:where(.svelte-1nwtzae) .external-auth-section:where(.svelte-1nwtzae){display:none}@media (width<=768px){.sidebar.svelte-1nwtzae{flex-basis:60px;width:60px}.sidebar-header.svelte-1nwtzae{justify-content:center;padding:16px}.sidebar-header.svelte-1nwtzae h1{display:none}.sidebar-nav.svelte-1nwtzae .nav-item:where(.svelte-1nwtzae){justify-content:center;padding:10px}.sidebar-nav.svelte-1nwtzae .nav-item:where(.svelte-1nwtzae) .nav-label:where(.svelte-1nwtzae){display:none}.sidebar-footer.svelte-1nwtzae{gap:8px;padding:8px;display:grid}.sidebar-footer.svelte-1nwtzae .api-key-section:where(.svelte-1nwtzae),.sidebar-footer.svelte-1nwtzae .external-auth-section:where(.svelte-1nwtzae),.sidebar.sidebar-collapsed.svelte-1nwtzae .sidebar-footer:where(.svelte-1nwtzae) .external-auth-section:where(.svelte-1nwtzae){display:grid}.sidebar-footer.svelte-1nwtzae .external-auth-user:where(.svelte-1nwtzae){display:none}.sidebar.sidebar-collapsed.svelte-1nwtzae .sidebar-footer:where(.svelte-1nwtzae) .api-key-section:where(.svelte-1nwtzae){display:grid}.sidebar-footer.svelte-1nwtzae .api-key-open-btn:where(.svelte-1nwtzae){justify-self:center;width:36px;height:36px;min-height:36px;padding:0}.sidebar-footer.svelte-1nwtzae .api-key-open-btn:where(.svelte-1nwtzae) span,.sidebar-toggle.svelte-1nwtzae{display:none}}.dialog-close-btn.svelte-11l1bb5{background:var(--bg);border:1px solid var(--border);width:32px;min-width:32px;height:32px;color:var(--text-muted);cursor:pointer;font:inherit;border-radius:6px;flex:0 0 32px;justify-content:center;align-items:center;padding:0;line-height:1;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.dialog-close-btn.svelte-11l1bb5:hover{color:var(--text);background:var(--bg-surface-hover)}.dialog-close-btn.svelte-11l1bb5:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 36%, transparent);outline-offset:2px}.auth-dialog-backdrop.svelte-17e0w4c,.editor-modal-backdrop.svelte-17e0w4c{z-index:80;background:#0000007a;position:fixed;inset:0}.auth-dialog-shell.svelte-17e0w4c{z-index:90;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.editor-modal-shell.svelte-17e0w4c{z-index:90;place-items:center;padding:20px;display:grid;position:fixed;inset:0;overflow-y:auto}.editor-modal-shell.svelte-17e0w4c>*{overscroll-behavior:contain;width:min(760px,100%);max-height:min(100vh - 40px,960px);margin:0;overflow:auto;box-shadow:0 24px 70px #00000061}@media (width<=768px){.auth-dialog-shell.svelte-17e0w4c,.editor-modal-shell.svelte-17e0w4c{align-items:end;padding:12px}.editor-modal-shell.svelte-17e0w4c>*{max-height:calc(100vh - 24px)}}.external-login-btn.svelte-1dsu6u0{justify-content:center;width:100%;text-decoration:none}.auth-dialog-separator.svelte-1dsu6u0{color:var(--text-muted);align-items:center;gap:10px;font-size:12px;display:flex}.auth-dialog-separator.svelte-1dsu6u0:before,.auth-dialog-separator.svelte-1dsu6u0:after{content:"";border-top:1px solid var(--border);flex:1}.auth-dialog-input-shell.svelte-1dsu6u0{position:relative}.auth-dialog-input.svelte-1dsu6u0{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text);outline:none;padding:11px 12px 11px 38px;font-family:inherit;font-size:14px}.auth-dialog-input.svelte-1dsu6u0:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent)}.flash-region.svelte-1i257xg{top:16px;left:var(--sidebar-width);z-index:120;pointer-events:none;flex-direction:column;align-items:center;gap:10px;display:flex;position:fixed;right:0}.sidebar.sidebar-collapsed~.flash-region.svelte-1i257xg{left:60px}@media (width<=768px){.flash-region.svelte-1i257xg{left:60px}}.flash-toast.svelte-1i257xg{border-radius:var(--radius);pointer-events:auto;align-items:flex-start;gap:10px;width:max-content;max-width:min(480px,100% - 32px);padding:12px 12px 12px 16px;font-size:14px;animation:.9s ease-out svelte-1i257xg-flash-toast-glow;display:flex;box-shadow:0 10px 30px #00000059}@keyframes svelte-1i257xg-flash-toast-glow{0%{box-shadow:0 0 0 4px color-mix(in srgb, currentColor 45%, transparent), 0 10px 30px #00000059}to{box-shadow:0 0 0 4px #0000,0 10px 30px #00000059}}@media (prefers-reduced-motion:reduce){.flash-toast.svelte-1i257xg{animation:none}}.flash-toast-success.svelte-1i257xg{background:color-mix(in srgb, var(--success) 14%, var(--bg-surface));color:var(--success);border:1px solid #34d39959}.flash-toast-error.svelte-1i257xg{background:color-mix(in srgb, var(--warning) 14%, var(--bg-surface));color:var(--warning);border:1px solid #f59e0b66}.flash-toast-text.svelte-1i257xg{overflow-wrap:anywhere;flex:1;min-width:0}.flash-toast-dismiss.svelte-1i257xg{color:inherit;cursor:pointer;opacity:.7;background:0 0;border:0;flex-shrink:0;padding:0 2px;font-size:18px;line-height:1}.flash-toast-dismiss.svelte-1i257xg:hover{opacity:1}.demo-mode-banner.svelte-1s3mcn8{border:1px solid color-mix(in srgb, var(--warning) 55%, var(--border));border-radius:var(--radius);background:color-mix(in srgb, var(--warning) 14%, var(--bg-surface));color:var(--text);box-shadow:0 8px 24px color-mix(in srgb, var(--bg) 70%, transparent);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;margin-bottom:24px;padding:12px 16px;display:grid}.demo-mode-banner-icon.svelte-1s3mcn8{width:20px;height:20px;color:var(--warning);flex:0 0 20px}.demo-mode-banner-copy.svelte-1s3mcn8{align-items:baseline;gap:8px;min-width:0;font-size:13px;display:flex}.demo-mode-banner.svelte-1s3mcn8 strong{color:var(--warning);letter-spacing:.06em;text-transform:uppercase;flex-shrink:0;font-size:12px}.demo-mode-banner-links.svelte-1s3mcn8{justify-content:flex-end;align-items:center;gap:6px;display:flex}.demo-mode-banner-links.svelte-1s3mcn8 a{border:1px solid color-mix(in srgb, var(--warning) 42%, var(--border));border-radius:var(--radius);min-height:28px;color:var(--text);white-space:nowrap;align-items:center;padding:4px 8px;font-size:12px;font-weight:600;line-height:1;text-decoration:none;display:inline-flex}.demo-mode-banner-links.svelte-1s3mcn8 a:hover{border-color:var(--warning);background:color-mix(in srgb, var(--warning) 16%, transparent);color:var(--text)}.demo-mode-banner-links.svelte-1s3mcn8 a:focus-visible{outline:2px solid color-mix(in srgb, var(--warning) 42%, transparent);outline-offset:2px}@media (width<=768px){.demo-mode-banner.svelte-1s3mcn8{grid-template-columns:auto minmax(0,1fr);align-items:flex-start}.demo-mode-banner-copy.svelte-1s3mcn8{gap:2px;display:grid}.demo-mode-banner-links.svelte-1s3mcn8{flex-wrap:wrap;grid-column:2;justify-content:flex-start}}.auth-banner.svelte-1c5yh36{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.dp-calendar.svelte-g7ga4u{flex-shrink:0;width:224px}.dp-cal-header.svelte-g7ga4u{justify-content:space-between;align-items:center;margin-bottom:8px;padding:0 4px;display:flex}.dp-cal-title.svelte-g7ga4u{font-size:13px;font-weight:600}.dp-nav-btn.svelte-g7ga4u{width:28px;height:28px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;transition:all .15s;display:flex}.dp-nav-btn.svelte-g7ga4u:hover{background:var(--bg-surface-hover);color:var(--text)}.dp-nav-btn.svelte-g7ga4u:disabled{opacity:.3;cursor:default;pointer-events:none}.dp-nav-prev-mobile.svelte-g7ga4u{display:none}.dp-weekdays.svelte-g7ga4u{text-align:center;grid-template-columns:repeat(7,1fr);margin-bottom:4px;display:grid}.dp-weekdays.svelte-g7ga4u span:where(.svelte-g7ga4u){color:var(--text-muted);padding:4px 0;font-size:11px;font-weight:600}.dp-days.svelte-g7ga4u{grid-template-columns:repeat(7,1fr);gap:1px;display:grid}.dp-day.svelte-g7ga4u{width:32px;height:32px;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;font-family:inherit;font-size:12px;transition:all .1s;display:flex}.dp-day.svelte-g7ga4u:hover:not(.disabled):not(.other-month){background:var(--bg-surface-hover)}.dp-day.other-month.svelte-g7ga4u{color:var(--text-muted);opacity:.3;cursor:default}.dp-day.today.svelte-g7ga4u{color:var(--accent);box-shadow:inset 0 0 0 1.5px var(--accent);font-weight:700}.dp-day.in-range.svelte-g7ga4u{background:color-mix(in srgb, var(--accent) 15%, transparent);border-radius:0}.dp-day.range-start.svelte-g7ga4u{background:var(--accent);color:#fff;border-radius:6px 0 0 6px;font-weight:600}.dp-day.range-end.svelte-g7ga4u{background:var(--accent);color:#fff;border-radius:0 6px 6px 0;font-weight:600}.dp-day.range-start.range-end.svelte-g7ga4u{border-radius:6px}.dp-day.range-start.today.svelte-g7ga4u,.dp-day.range-end.today.svelte-g7ga4u{box-shadow:none}.dp-day.disabled.svelte-g7ga4u{color:var(--text-muted);opacity:.3;cursor:default;pointer-events:none}@media (width<=768px){.dp-nav-prev-mobile.svelte-g7ga4u{display:flex}}.date-picker.svelte-ax7ma4{position:relative}.date-picker-trigger.svelte-ax7ma4{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);cursor:pointer;white-space:nowrap;align-items:center;gap:8px;padding:8px 12px;font-family:inherit;font-size:13px;transition:all .15s;display:inline-flex}.date-picker-trigger.svelte-ax7ma4:hover{background:var(--bg-surface-hover)}.date-picker-trigger.svelte-ax7ma4 svg:where(.svelte-ax7ma4){color:var(--text-muted);flex-shrink:0}.date-picker-chevron.svelte-ax7ma4{transition:transform .15s}.date-picker-chevron.open.svelte-ax7ma4{transform:rotate(180deg)}.date-picker-dropdown.svelte-ax7ma4{z-index:100;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);display:flex;position:absolute;top:calc(100% + 6px);right:0;overflow:hidden;box-shadow:0 8px 24px #00000040}.date-picker-presets.svelte-ax7ma4{border-right:1px solid var(--border);flex-direction:column;gap:2px;min-width:140px;padding:8px;display:flex}.preset-btn.svelte-ax7ma4{color:var(--text);text-align:left;cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;padding:8px 12px;font-family:inherit;font-size:13px;transition:all .15s}.preset-btn.svelte-ax7ma4:hover{background:var(--bg-surface-hover)}.preset-btn.active.svelte-ax7ma4{background:var(--accent);color:#fff}.date-picker-calendars.svelte-ax7ma4{flex-wrap:nowrap;gap:16px;padding:12px;display:flex}.dp-cursor-hint.svelte-ax7ma4{pointer-events:none;z-index:101;background:var(--bg-surface);color:var(--text);border:1px solid var(--accent);white-space:nowrap;border-radius:4px;align-items:center;gap:5px;padding:3px 8px;font-size:11px;font-weight:500;display:flex;position:fixed;transform:translate(12px,-50%)}.dp-cursor-hint.svelte-ax7ma4 svg:where(.svelte-ax7ma4){width:12px;height:12px;color:var(--accent);flex-shrink:0}@media (width<=768px){.date-picker-dropdown.svelte-ax7ma4{border-radius:var(--radius) var(--radius) 0 0;flex-direction:column;max-height:80vh;position:fixed;inset:auto 0 0;overflow-y:auto}.date-picker-presets.svelte-ax7ma4{-webkit-overflow-scrolling:touch;border-right:none;border-bottom:1px solid var(--border);flex-flow:row;min-width:0;overflow-x:auto}.date-picker-calendars.svelte-ax7ma4{justify-content:center}.date-picker-calendars.svelte-ax7ma4>.dp-calendar:first-child{display:none}}.segmented-control.svelte-92fh5i{background:var(--bg);border:1px solid var(--border);border-radius:6px;align-items:center;padding:2px;display:inline-flex}.segmented-btn.svelte-92fh5i{color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:5px 12px;font-family:inherit;font-size:12px;font-weight:500;transition:all .15s;display:flex}.segmented-btn.svelte-92fh5i:hover{color:var(--text)}.segmented-btn.active.svelte-92fh5i{background:var(--accent);color:#fff}@media (width<=768px){.segmented-btn.svelte-92fh5i{padding:4px 8px;font-size:11px}}.live-tokens.svelte-17qr2ta{margin-bottom:28px}.live-tokens-heading.svelte-17qr2ta{flex-direction:column;gap:2px;display:flex}.live-tokens-subtitle.svelte-17qr2ta{color:var(--text-muted);align-items:center;gap:6px;font-size:12px;display:inline-flex}.live-tokens-legend.svelte-17qr2ta{flex-wrap:wrap;gap:8px 18px;margin-bottom:16px;display:flex}.live-tokens-legend-item.svelte-17qr2ta{color:var(--text-muted);align-items:center;gap:7px;font-size:12px;display:inline-flex}.live-tokens-swatch.svelte-17qr2ta{border-radius:2px;flex-shrink:0;width:10px;height:10px}.live-tokens-legend-value.svelte-17qr2ta{color:var(--text);font-weight:600}.live-tokens-empty.svelte-17qr2ta .live-tokens-empty-text:where(.svelte-17qr2ta){color:var(--text-muted);font-size:13px}.provider-status-flag.svelte-6tr9cf{grid-column:span 2}.provider-status-overview-card.svelte-6tr9cf{grid-column:span 1}.provider-status-flag.is-healthy.svelte-6tr9cf{border-color:color-mix(in srgb, var(--success) 45%, var(--border));background:color-mix(in srgb, var(--success) 10%, var(--bg-surface))}.provider-status-flag.is-degraded.svelte-6tr9cf{border-color:color-mix(in srgb, var(--warning) 48%, var(--border));background:color-mix(in srgb, var(--warning) 26%, var(--bg-surface))}.provider-status-flag.is-unhealthy.svelte-6tr9cf{border-color:color-mix(in srgb, var(--danger) 45%, var(--border));background:color-mix(in srgb, var(--danger) 10%, var(--bg-surface))}.provider-status-value.svelte-6tr9cf{margin-bottom:8px}.provider-status-card-link.svelte-6tr9cf{color:var(--accent-strong,var(--accent));font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;margin:0;padding:0;font-size:13px;font-weight:600}.provider-status-card-link.svelte-6tr9cf:hover{color:var(--text);text-decoration:underline}.provider-status-card-link.svelte-6tr9cf:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 32%, transparent);outline-offset:3px;border-radius:4px}.provider-status-card-note.svelte-6tr9cf{color:var(--text-muted);font-size:13px;display:block}@media (width>=720px){.card-wide.svelte-6tr9cf{grid-column:span 2}}.cache-token-value.svelte-6tr9cf{flex-wrap:wrap;align-items:center;gap:6px;line-height:1;display:flex}.cache-token-part.svelte-6tr9cf{align-items:center;display:inline-flex}.cache-token-operator.svelte-6tr9cf{color:var(--text-muted);letter-spacing:0;font-size:24px;font-weight:600;line-height:1}.cache-token-marker.svelte-6tr9cf{color:var(--text-muted);letter-spacing:0;text-transform:uppercase;margin-left:2px;font-size:14px;font-weight:700}.prompt-cache-gauge.svelte-6tr9cf{width:120px;height:60px;margin:8px auto 0;position:relative;overflow:hidden}.prompt-cache-gauge.svelte-6tr9cf canvas{display:block}.prompt-cache-gauge-value.svelte-6tr9cf{text-align:center;color:var(--text);font-size:18px;font-weight:700;line-height:1;position:absolute;bottom:4px;left:0;right:0}@media (width<=768px){.provider-status-flag.svelte-6tr9cf{grid-column:span 1}}.mcp-servers-flag.svelte-6tr9cf{grid-column:span 1}.cache-meter-header.svelte-1yzecxj{flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin-bottom:16px;display:flex}.cache-meter-header.svelte-1yzecxj h3{font-size:16px;font-weight:600}.cache-meter-subtitle.svelte-1yzecxj{color:var(--text-muted);font-size:13px}.cache-meter-bar.svelte-1yzecxj{background:var(--bg-surface-hover);border-radius:6px;width:100%;height:28px;display:flex;overflow:hidden}.cache-meter-segment.svelte-1yzecxj{justify-content:center;align-items:center;min-width:3px;height:100%;transition:width .3s;display:flex;overflow:hidden}.cache-meter-segment-label.svelte-1yzecxj{color:#fff;white-space:nowrap;text-shadow:0 1px 2px #00000073;font-size:12px;font-weight:600;line-height:1}.cache-meter-segment.svelte-1yzecxj+.cache-meter-segment:where(.svelte-1yzecxj){box-shadow:-1px 0 0 var(--bg-surface)}.cache-meter-bar.is-empty.svelte-1yzecxj{background:var(--bg-surface-hover);justify-content:center;align-items:center;height:auto;min-height:28px;padding:6px 12px}.cache-meter-legend.svelte-1yzecxj{flex-wrap:wrap;gap:10px 24px;margin-top:16px;display:flex}.cache-meter-legend-item.svelte-1yzecxj{align-items:center;gap:8px;font-size:13px;display:flex}.cache-meter-swatch.svelte-1yzecxj{border-radius:3px;flex-shrink:0;width:12px;height:12px}.cache-meter-legend-label.svelte-1yzecxj{color:var(--text)}.cache-meter-legend-pct.svelte-1yzecxj{color:var(--text);font-weight:600}.cache-meter-legend-tokens.svelte-1yzecxj{color:var(--text-muted)}.cache-meter-empty.svelte-1yzecxj{color:var(--text-muted);text-align:center;font-size:13px}.spinner.svelte-b54l9o{width:var(--spinner-size);height:var(--spinner-size);border:2px solid var(--border,#80808059);border-top-color:var(--accent,currentColor);border-radius:50%;flex:none;animation:.7s linear infinite svelte-b54l9o-spinner-rotate;display:inline-block}@keyframes svelte-b54l9o-spinner-rotate{to{transform:rotate(360deg)}}.contribution-calendar-section.svelte-3hfxuq{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);margin-top:24px;padding:24px}.contribution-calendar-header.svelte-3hfxuq{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.contribution-calendar-header.svelte-3hfxuq h3{font-size:16px;font-weight:600}.contribution-calendar-grid-wrapper.svelte-3hfxuq{gap:8px;display:flex}.contribution-calendar-day-labels.svelte-3hfxuq{flex-direction:column;gap:2px;padding-top:22px;display:flex}.contribution-calendar-day-labels.svelte-3hfxuq span{height:13px;color:var(--text-muted);text-align:right;min-width:28px;font-size:10px;line-height:13px}.contribution-calendar-scroll.svelte-3hfxuq{--contribution-week-size:13px;--contribution-week-gap:2px;flex:1;min-width:0;overflow-x:auto}.contribution-calendar-months.svelte-3hfxuq{grid-auto-columns:var(--contribution-week-size);gap:var(--contribution-week-gap);grid-auto-flow:column;height:16px;margin-bottom:6px;display:grid}.contribution-calendar-month-label.svelte-3hfxuq{color:var(--text-muted);white-space:nowrap;font-size:10px}.contribution-calendar-grid.svelte-3hfxuq{gap:var(--contribution-week-gap);display:flex}.contribution-calendar-week.svelte-3hfxuq{flex-direction:column;gap:2px;display:flex}.contribution-calendar-cell.svelte-3hfxuq{width:var(--contribution-week-size);height:var(--contribution-week-size);background:var(--cal-level-0);border-radius:2px}.contribution-calendar-cell.level-1.svelte-3hfxuq{background:var(--cal-level-1)}.contribution-calendar-cell.level-2.svelte-3hfxuq{background:var(--cal-level-2)}.contribution-calendar-cell.level-3.svelte-3hfxuq{background:var(--cal-level-3)}.contribution-calendar-cell.level-4.svelte-3hfxuq{background:var(--cal-level-4)}.contribution-calendar-cell.level-5.svelte-3hfxuq{background:var(--cal-level-5)}.contribution-calendar-cell.level-6.svelte-3hfxuq{background:var(--cal-level-6)}.contribution-calendar-cell.level-7.svelte-3hfxuq{background:var(--cal-level-7)}.contribution-calendar-cell.level-8.svelte-3hfxuq{background:var(--cal-level-8)}.contribution-calendar-cell.level-9.svelte-3hfxuq{background:var(--cal-level-9)}.contribution-calendar-cell.level-10.svelte-3hfxuq{background:var(--cal-level-10)}.contribution-calendar-cell.empty.svelte-3hfxuq{background:0 0}.contribution-calendar-footer.svelte-3hfxuq{justify-content:space-between;align-items:center;gap:12px;margin-top:12px;display:flex}.contribution-calendar-meta.svelte-3hfxuq{flex-direction:column;gap:4px;display:flex}.contribution-calendar-summary.svelte-3hfxuq{color:var(--text-muted);font-size:12px}.contribution-calendar-legend.svelte-3hfxuq{color:var(--text-muted);align-items:center;gap:4px;font-size:11px;display:flex}.contribution-calendar-legend.svelte-3hfxuq .contribution-calendar-cell:where(.svelte-3hfxuq){cursor:default;width:11px;height:11px}.contribution-calendar-tooltip.svelte-3hfxuq{z-index:200;background:var(--bg-surface);color:var(--text);border:1px solid var(--border);white-space:nowrap;pointer-events:none;border-radius:4px;padding:4px 8px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:12px;position:fixed;transform:translate(-50%);box-shadow:0 4px 12px #0003}@media (width<=768px){.contribution-calendar-day-labels.svelte-3hfxuq{display:none}.contribution-calendar-section.svelte-3hfxuq{padding:16px}.contribution-calendar-footer.svelte-3hfxuq{flex-direction:column;align-items:flex-start}}.inline-help-toggle.is-open.svelte-y40or3{color:var(--text);background:0 0}.inline-help-toggle.is-open.svelte-y40or3 .inline-help-toggle-icon{transform:rotate(540deg)}.audit-stats-section.svelte-14e9yan{margin-top:24px}.audit-stats-header.svelte-14e9yan{align-items:flex-start}.audit-stats-kpis.svelte-14e9yan{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.audit-stats-kpi.svelte-14e9yan{color:var(--text-muted);white-space:nowrap;align-items:center;gap:6px;font-size:12px;display:inline-flex}.audit-stats-kpi-value.svelte-14e9yan{color:var(--text);font-size:13px}.audit-stats-kpi-dot.svelte-14e9yan{border-radius:2px;flex-shrink:0;width:8px;height:8px}.audit-stats-dot-2xx.svelte-14e9yan{background:var(--success)}.audit-stats-dot-4xx.svelte-14e9yan{background:var(--warning)}.audit-stats-dot-5xx.svelte-14e9yan{background:var(--danger)}.provider-status-details.svelte-6y9wjv{opacity:0;grid-template-rows:0fr;transition:grid-template-rows .28s,opacity .22s;display:grid}.provider-status-details.is-expanded.svelte-6y9wjv{opacity:1;grid-template-rows:1fr}.provider-status-details.is-collapsed.svelte-6y9wjv{pointer-events:none}.provider-status-details-inner.svelte-6y9wjv{flex-direction:column;gap:14px;min-height:0;display:flex;overflow:hidden}.provider-status-reason.svelte-6y9wjv{color:var(--text-muted);font-size:13px}.provider-status-error.svelte-6y9wjv{color:var(--danger);overflow-wrap:break-word;font-size:12px}.provider-status-config-label.svelte-6y9wjv{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:700}.provider-status-config.svelte-6y9wjv{border-top:1px solid var(--border);flex-direction:column;gap:10px;padding-top:12px;display:flex}.provider-status-config-row.svelte-6y9wjv{flex-direction:column;gap:4px;display:flex}.provider-status-config-value.svelte-6y9wjv{color:var(--text);overflow-wrap:break-word;font-size:13px;display:block}.provider-status-health.svelte-6y9wjv{border-top:1px solid var(--border);flex-direction:column;gap:10px;margin-bottom:12px;padding-top:12px;display:flex}.provider-status-health-state.svelte-6y9wjv{border:1px solid var(--border);border-radius:999px;align-items:center;padding:1px 8px;font-size:12px;font-weight:600;display:inline-flex}.provider-status-health-state.is-healthy.svelte-6y9wjv{color:var(--success);border-color:color-mix(in srgb, var(--success) 45%, var(--border));background:color-mix(in srgb, var(--success) 10%, transparent)}.provider-status-health-state.is-degraded.svelte-6y9wjv{color:var(--warning);border-color:color-mix(in srgb, var(--warning) 48%, var(--border));background:color-mix(in srgb, var(--warning) 26%, var(--bg-surface))}.provider-status-health-state.is-unhealthy.svelte-6y9wjv{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 45%, var(--border));background:color-mix(in srgb, var(--danger) 10%, transparent)}.provider-status-health-models.svelte-6y9wjv{flex-direction:column;gap:4px;display:flex}.provider-status-health-model.svelte-6y9wjv{color:var(--text);justify-content:space-between;gap:8px;font-size:13px;display:flex}.provider-status-health-model.is-flagged.svelte-6y9wjv{color:var(--danger)}.provider-status-health-model-name.svelte-6y9wjv{overflow-wrap:anywhere}.provider-status-health-model-stats.svelte-6y9wjv{white-space:nowrap;color:var(--text-muted)}.provider-status-health-model.is-flagged.svelte-6y9wjv .provider-status-health-model-stats:where(.svelte-6y9wjv){color:var(--danger);font-weight:700}.provider-status-card.svelte-nopjmh{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:14px;padding:18px;display:flex}.provider-status-card-toggle.svelte-nopjmh{border:0;border-top:1px solid var(--border);border-radius:0 0 var(--radius) var(--radius);color:var(--text-muted);cursor:pointer;background:0 0;justify-content:center;align-items:center;margin:auto -18px -18px;padding:7px 0;transition:background .15s,color .15s;display:flex}.provider-status-card-toggle.svelte-nopjmh:hover{background:color-mix(in srgb, var(--accent) 10%, transparent);color:var(--text)}.provider-status-card-toggle.svelte-nopjmh:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 32%, transparent);outline-offset:-2px}.provider-status-card-toggle.svelte-nopjmh .provider-status-card-toggle-icon{width:16px;height:16px;transition:transform .28s;display:block}.provider-status-card-toggle.is-expanded.svelte-nopjmh .provider-status-card-toggle-icon{transform:rotate(180deg)}.provider-status-card-head.svelte-nopjmh{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.provider-status-name.svelte-nopjmh{letter-spacing:-.02em;flex-wrap:wrap;align-items:baseline;gap:6px;font-size:16px;font-weight:700;display:flex}.provider-doc-help.svelte-nopjmh{align-self:center;text-decoration:none}.provider-status-name-type.svelte-nopjmh{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:700}.provider-status-pill.svelte-nopjmh{border:1px solid var(--border);white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;min-height:28px;padding:0 10px;font-size:12px;font-weight:700;display:inline-flex}.provider-status-pill.is-healthy.svelte-nopjmh{color:var(--success);border-color:color-mix(in srgb, var(--success) 45%, var(--border));background:color-mix(in srgb, var(--success) 10%, transparent)}.provider-status-pill.is-degraded.svelte-nopjmh{color:var(--warning);border-color:color-mix(in srgb, var(--warning) 48%, var(--border));background:color-mix(in srgb, var(--warning) 26%, var(--bg-surface))}.provider-status-pill.is-unhealthy.svelte-nopjmh{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 45%, var(--border));background:color-mix(in srgb, var(--danger) 10%, transparent)}.provider-status-meta.svelte-nopjmh{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.provider-status-meta-item.svelte-nopjmh{background:var(--bg);border:1px solid var(--border);border-radius:6px;flex-direction:column;gap:4px;padding:10px 12px;display:flex}.provider-status-meta-label.svelte-nopjmh{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:700}.provider-status-meta-value.svelte-nopjmh{color:var(--text);font-size:14px}@media (width<=768px){.provider-status-meta.svelte-nopjmh{grid-template-columns:1fr}}.provider-status-section-loading.svelte-1kx3uw4{justify-content:center;padding:24px 0;display:flex}.provider-status-section-header.svelte-1kx3uw4{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.provider-status-toggle.svelte-1kx3uw4{background:var(--bg-surface);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:6px;align-items:center;gap:10px;padding:8px 12px;font-family:inherit;font-size:12px;font-weight:600;transition:background-color .18s,border-color .18s,color .18s;display:inline-flex}.provider-status-toggle.svelte-1kx3uw4:hover{background:var(--bg-surface-hover)}.provider-status-toggle.svelte-1kx3uw4:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 28%, transparent);outline-offset:2px}.provider-status-toggle-copy.svelte-1kx3uw4{white-space:nowrap}.provider-status-toggle-track.svelte-1kx3uw4{background:color-mix(in srgb, var(--text-muted) 35%, var(--border));border-radius:999px;flex-shrink:0;width:34px;height:20px;transition:background-color .2s;position:relative}.provider-status-toggle-track.is-active.svelte-1kx3uw4{background:color-mix(in srgb, var(--accent) 82%, var(--bg-surface))}.provider-status-toggle-thumb.svelte-1kx3uw4{background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .2s;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #0000003d}.provider-status-toggle-track.is-active.svelte-1kx3uw4 .provider-status-toggle-thumb:where(.svelte-1kx3uw4){transform:translate(14px)}.provider-status-grid.svelte-1kx3uw4{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));align-items:start;gap:16px;display:grid}@media (width<=768px){.provider-status-section-header.svelte-1kx3uw4{flex-direction:column;align-items:flex-start}.provider-status-toggle.svelte-1kx3uw4{justify-content:space-between;width:100%}}.filter-input-wrap.svelte-30xz1k{flex:1;width:100%;min-width:min(400px,100%);display:flex;position:relative}.filter-input.svelte-30xz1k{flex:1;width:100%;min-width:0;padding-left:34px}.filter-input-wrap.svelte-30xz1k .filter-input-icon{width:14px;height:14px;color:var(--text-muted);pointer-events:none;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.usage-page-filters.svelte-1oi6ywk{flex-wrap:wrap;gap:10px;margin-bottom:20px;display:flex}.usage-page-filters.svelte-1oi6ywk .usage-log-select{flex:0 auto}.usage-page-filters.svelte-1oi6ywk .usage-page-filters-user-path{flex:220px;min-width:180px;max-width:360px}@media (width<=768px){.usage-page-filters.svelte-1oi6ywk .usage-log-select,.usage-page-filters.svelte-1oi6ywk .usage-page-filters-user-path{flex:100%;max-width:none}}.pro-saved-value.svelte-1qiwzdu{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.pro-saved-delta.svelte-1qiwzdu{color:var(--success);letter-spacing:0;font-size:13px;font-weight:600}.usage-breakdown-loading.svelte-1kee4g8{justify-content:center;align-items:center;min-height:120px;display:flex}.chart-view-toggle.svelte-1kee4g8{background:var(--bg);border:1px solid var(--border);border-radius:6px;align-items:center;padding:2px;display:inline-flex}.chart-view-btn.svelte-1kee4g8{width:30px;height:28px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;transition:all .15s;display:inline-flex}.chart-view-btn.svelte-1kee4g8:hover{color:var(--text)}.chart-view-btn.active.svelte-1kee4g8{background:var(--accent);color:#fff}.chart-view-btn.svelte-1kee4g8 svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:16px;height:16px}.usage-chart-table-wrapper.svelte-1kee4g8{-webkit-overflow-scrolling:touch;margin-top:0;overflow-x:auto}.usage-chart-data-table.svelte-1kee4g8{min-width:max-content}.usage-chart-data-table.svelte-1kee4g8 th,.usage-chart-data-table.svelte-1kee4g8 td{white-space:nowrap}.pagination-info.svelte-1imew3q{color:var(--text-muted);font-size:13px}.pagination-buttons.svelte-1imew3q{gap:8px;display:flex}.usage-log-loading.svelte-hg4ill{justify-content:center;align-items:center;min-height:120px;display:flex}.usage-log-section.svelte-hg4ill{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px}.usage-log-section.svelte-hg4ill h3{margin-bottom:16px;font-size:16px;font-weight:600}.usage-log-section.svelte-hg4ill .table-wrapper{overflow-x:auto}.usage-log-toolbar.svelte-hg4ill{gap:12px;margin-bottom:16px;display:grid}.usage-filter-row.svelte-hg4ill{grid-template-columns:repeat(12,minmax(0,1fr));align-items:center;gap:12px;display:grid}.usage-filter-row-search.svelte-hg4ill .filter-input-wrap{grid-column:1/-1}.usage-filter-row-options.svelte-hg4ill{grid-template-columns:1fr}.usage-log-checkbox.svelte-hg4ill{color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:13px;display:inline-flex}.usage-log-checkbox.svelte-hg4ill input{cursor:pointer;width:16px;height:16px}.usage-ts.svelte-hg4ill{white-space:nowrap;font-size:12px}.usage-log-row-cached.svelte-hg4ill td{opacity:.75;font-style:italic}.usage-log-row-cached.svelte-hg4ill .usage-log-cache-cell:where(.svelte-hg4ill){font-weight:700}.caveat-icon.svelte-hg4ill{color:var(--warning);cursor:help;margin-left:4px;font-size:14px}@media (width<=768px){.usage-log-toolbar.svelte-hg4ill{gap:10px}.usage-filter-row.svelte-hg4ill{grid-template-columns:1fr}.usage-filter-row-search.svelte-hg4ill .filter-input-wrap{grid-column:1}.usage-log-table.svelte-hg4ill{display:block;overflow-x:auto}}.usage-sticky-controls.svelte-spwie6{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;display:flex}.usage-charts-grid.svelte-spwie6{flex-wrap:wrap;gap:24px;margin-bottom:24px;display:flex}.usage-charts-grid.svelte-spwie6 .model-chart-section{flex:calc(50% - 24px);min-width:420px;margin-bottom:0}@media (width<=520px){.usage-charts-grid.svelte-spwie6 .model-chart-section{min-width:0}}.loading-state.svelte-hzxv1d{min-height:var(--loading-state-min-height,64px);color:var(--text-muted);justify-content:center;align-items:center;gap:10px;font-size:14px;display:flex}.budget-bar-text-row-on-fill.svelte-1jm56wo{color:#fff;clip-path:inset(0 calc(100% - var(--budget-progress,0%)) 0 0)}.budget-bar-text-start.svelte-1jm56wo{left:8px;transform:translateY(-50%)}.budget-bar-track-period-custom.svelte-1jm56wo .budget-bar-text-row-on-fill:where(.svelte-1jm56wo){color:#3f332a}.budget-override-dialog.svelte-13ryo7h{max-width:460px}.budget-sort-control.svelte-1752fqe{align-items:center;gap:8px}.budget-sort-control.svelte-1752fqe label{color:var(--text-muted);white-space:nowrap;font-size:12px;font-weight:600}.budget-sort-select.svelte-1752fqe{background-color:var(--bg-surface);min-width:132px}.budget-sort-select.svelte-1752fqe:hover{background-color:var(--bg-surface-hover)}.model-name-cell.svelte-1iynym{flex-direction:column;gap:8px;display:flex}.model-name-primary.svelte-1iynym{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.model-name-secondary.svelte-1iynym{color:var(--text-muted);font-size:12px}.model-redirect-remove-btn.svelte-1iynym{appearance:none;color:var(--danger);cursor:pointer;background:0 0;border:0;margin-left:4px;padding:0;font-size:11px}.model-redirect-remove-btn.svelte-1iynym:hover:not(:disabled){text-decoration:underline}.model-redirect-remove-btn.svelte-1iynym:disabled{opacity:.45;cursor:default}.model-kind-icon.svelte-1iynym{border:1px solid color-mix(in srgb, var(--accent) 55%, var(--border));background:var(--bg);width:24px;height:24px;color:var(--accent);border-radius:999px;flex:0 0 24px;justify-content:center;align-items:center;display:inline-flex}.model-kind-icon-svg.svelte-1iynym{width:14px;height:14px}.model-row-actions.svelte-1iynym{text-align:right;width:170px}@media (width<=768px){.model-name-primary.svelte-1iynym{flex-direction:column;align-items:flex-start}}.provider-group-row.svelte-1911hy6 td{background:color-mix(in srgb, var(--accent) 6%, var(--bg));padding-top:12px;padding-bottom:12px}.provider-group-row.svelte-1911hy6:hover td{background:color-mix(in srgb, var(--accent) 8%, var(--bg))}.provider-group-header.svelte-1911hy6{justify-content:space-between;align-items:center;gap:16px;display:flex}.provider-group-meta.svelte-1911hy6{flex-direction:column;gap:4px;min-width:0;display:flex}.provider-group-title.svelte-1911hy6{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.provider-group-type.svelte-1911hy6,.provider-group-count.svelte-1911hy6,.provider-group-summary.svelte-1911hy6{color:var(--text-muted);font-size:12px}@media (width<=768px){.provider-group-header.svelte-1911hy6{flex-direction:column;align-items:flex-start}}.vm-session-affinity-checkbox.svelte-d1j6xw{color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:13px;display:inline-flex}.vm-session-affinity-checkbox.svelte-d1j6xw input:where(.svelte-d1j6xw){accent-color:var(--accent);cursor:pointer}.pricing-override-rows.svelte-u8snes{gap:12px;display:grid}.pricing-override-row.svelte-u8snes{grid-template-columns:minmax(220px,1fr) minmax(130px,180px) 32px;align-items:end;gap:12px;display:grid}.pricing-override-row-actions.svelte-u8snes{justify-content:flex-start;display:flex}.pricing-override-tier-note.svelte-u8snes{border:1px solid var(--border);background:var(--bg);color:var(--text-muted);border-radius:6px;padding:10px 12px;font-size:13px}.pricing-preview.svelte-u8snes{border:1px solid var(--border);border-radius:6px;overflow:hidden}.pricing-preview-header.svelte-u8snes,.pricing-preview-row.svelte-u8snes{grid-template-columns:minmax(150px,1fr) minmax(90px,auto) minmax(130px,.8fr);align-items:center;gap:12px;padding:10px 12px;display:grid}.pricing-preview-header.svelte-u8snes{background:var(--bg);color:var(--text-muted);text-transform:uppercase;font-size:12px;font-weight:600}.pricing-preview-row.svelte-u8snes{border-top:1px solid var(--border);font-size:13px}.pricing-preview-row-empty.svelte-u8snes{color:var(--text-muted);grid-template-columns:1fr}@media (width<=768px){.pricing-override-row.svelte-u8snes,.pricing-preview-header.svelte-u8snes,.pricing-preview-row.svelte-u8snes{grid-template-columns:1fr}}.failover-drafts-editor.svelte-1n87bip{flex-direction:column;gap:16px;display:flex}.failover-draft-header-actions.svelte-1n87bip{flex:none;align-items:center;gap:10px;display:flex}.failover-draft-counter.svelte-1n87bip{color:var(--text-muted);white-space:nowrap;font-size:12px;font-weight:600}.failover-draft-toolbar.svelte-1n87bip{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.failover-draft-toolbar.svelte-1n87bip .filter-input-wrap,.failover-draft-toolbar.svelte-1n87bip .filter-input{min-width:0}.failover-draft-toggle-all.svelte-1n87bip{flex:none}.failover-draft-list.svelte-1n87bip{flex-direction:column;gap:8px;max-height:min(52vh,430px);padding-right:4px;display:flex;overflow-y:auto}.failover-draft-row.svelte-1n87bip{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);cursor:pointer;grid-template-columns:18px minmax(0,1fr);align-items:start;gap:10px;padding:10px;display:grid}.failover-draft-row.svelte-1n87bip:hover{border-color:color-mix(in srgb, var(--accent) 42%, var(--border));background:var(--bg-surface-hover)}.failover-draft-row.svelte-1n87bip input{width:16px;height:16px;margin-top:2px}.failover-draft-copy.svelte-1n87bip{gap:4px;min-width:0;display:grid}.failover-draft-source.svelte-1n87bip,.failover-draft-targets.svelte-1n87bip{overflow-wrap:anywhere}.failover-draft-targets.svelte-1n87bip{color:var(--text-muted);font-size:12px}.failover-drafts-empty.svelte-1n87bip{align-items:center;min-height:96px;display:flex}.failover-draft-actions.svelte-1n87bip{margin-top:0}.category-tabs.svelte-scpjps{-webkit-overflow-scrolling:touch;align-items:center;gap:4px;margin-bottom:16px;padding-bottom:2px;display:flex;overflow-x:auto}.category-tab.svelte-scpjps{background:var(--bg-surface);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;white-space:nowrap;border-radius:6px;flex-shrink:0;align-items:center;gap:6px;padding:6px 14px;font-family:inherit;font-size:13px;font-weight:500;transition:all .15s;display:inline-flex}.category-tab.svelte-scpjps:hover{color:var(--text);background:var(--bg-surface-hover)}.category-tab.active.svelte-scpjps{background:var(--accent);color:#fff;border-color:var(--accent)}.category-tab.svelte-scpjps .tab-count:where(.svelte-scpjps){background:#ffffff26;border-radius:9px;justify-content:center;align-items:center;min-width:20px;height:18px;padding:0 5px;font-size:11px;font-weight:600;line-height:1;display:inline-flex}.category-tab.svelte-scpjps:not(.active) .tab-count:where(.svelte-scpjps){background:var(--bg)}@media (width<=768px){.category-tabs.svelte-scpjps{gap:4px}.category-tab.svelte-scpjps{padding:5px 10px;font-size:12px}}.workflow-pipeline-meta.svelte-1viff7o{border:1px solid var(--border);background:color-mix(in srgb, var(--bg-surface) 86%, transparent);min-width:0;max-width:calc(100% - 28px);color:var(--text-muted);white-space:nowrap;appearance:none;cursor:pointer;text-align:left;border-radius:12px;align-items:center;gap:0;padding:2px 10px;font-size:12px;font-weight:500;line-height:1.2;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s;display:inline-flex;position:absolute;top:12px;right:14px;overflow:hidden}.workflow-pipeline-meta.svelte-1viff7o:hover,.workflow-pipeline-meta.svelte-1viff7o:focus-visible{border-color:color-mix(in srgb, var(--accent) 40%, var(--border));background:color-mix(in srgb, var(--accent) 8%, var(--bg-surface));color:color-mix(in srgb, var(--accent) 74%, var(--text))}.workflow-pipeline-meta.svelte-1viff7o:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 18%, transparent);outline:none}.workflow-pipeline-meta-label.svelte-1viff7o{flex:none;font-weight:700}.workflow-pipeline-meta-placeholder.svelte-1viff7o{opacity:1;flex:none;max-width:3ch;margin-left:4px;transition:max-width .18s,margin-left .18s,opacity .15s;overflow:hidden}.workflow-pipeline-meta-value.svelte-1viff7o{opacity:0;text-overflow:clip;flex:0 auto;max-width:0;margin-left:0;transition:max-width .22s,margin-left .18s,opacity .15s;overflow:hidden}.workflow-pipeline-meta.svelte-1viff7o:hover .workflow-pipeline-meta-placeholder:where(.svelte-1viff7o),.workflow-pipeline-meta.svelte-1viff7o:focus-visible .workflow-pipeline-meta-placeholder:where(.svelte-1viff7o),.workflow-pipeline-meta-copied.svelte-1viff7o .workflow-pipeline-meta-placeholder:where(.svelte-1viff7o),.workflow-pipeline-meta-error.svelte-1viff7o .workflow-pipeline-meta-placeholder:where(.svelte-1viff7o){opacity:0;max-width:0;margin-left:0}.workflow-pipeline-meta.svelte-1viff7o:hover .workflow-pipeline-meta-value:where(.svelte-1viff7o),.workflow-pipeline-meta.svelte-1viff7o:focus-visible .workflow-pipeline-meta-value:where(.svelte-1viff7o),.workflow-pipeline-meta-copied.svelte-1viff7o .workflow-pipeline-meta-value:where(.svelte-1viff7o),.workflow-pipeline-meta-error.svelte-1viff7o .workflow-pipeline-meta-value:where(.svelte-1viff7o){opacity:1;max-width:42ch;margin-left:4px}.workflow-pipeline-meta-icon.svelte-1viff7o{opacity:0;flex:none;justify-content:center;align-items:center;width:0;height:14px;margin-left:0;line-height:0;transition:width .18s,margin-left .18s,opacity .15s,transform .18s;display:inline-flex;overflow:hidden;transform:translate(4px)translateY(1px)scale(.84)}.workflow-pipeline-meta-icon.svelte-1viff7o svg{width:14px;height:14px}.workflow-pipeline-meta-copied.svelte-1viff7o,.workflow-pipeline-meta-copied.svelte-1viff7o:hover,.workflow-pipeline-meta-copied.svelte-1viff7o:focus-visible{background:color-mix(in srgb, var(--success) 12%, var(--bg));border-color:color-mix(in srgb, var(--success) 40%, var(--border));color:var(--success)}.workflow-pipeline-meta-copied.svelte-1viff7o .workflow-pipeline-meta-icon:where(.svelte-1viff7o){opacity:1;width:14px;margin-left:6px;transform:translateY(1px)}.workflow-pipeline-meta-error.svelte-1viff7o,.workflow-pipeline-meta-error.svelte-1viff7o:hover,.workflow-pipeline-meta-error.svelte-1viff7o:focus-visible{background:color-mix(in srgb, var(--danger) 10%, var(--bg));border-color:color-mix(in srgb, var(--danger) 34%, var(--border));color:var(--danger)}.workflow-pipeline.svelte-nbptrg{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg);flex-direction:column;gap:0;margin-bottom:12px;padding:18px 20px 20px;display:flex;position:relative}.workflow-pipeline-has-meta.svelte-nbptrg{padding-top:42px}.workflow-pipeline-row.svelte-nbptrg{align-items:center;width:100%;min-width:0;display:flex;overflow-x:auto}.workflow-node-icon.svelte-nbptrg{border-radius:var(--radius);background:var(--bg);width:28px;height:28px;color:var(--text-muted);justify-content:center;align-items:center;display:flex}.workflow-node-icon.svelte-nbptrg svg{stroke:currentColor;fill:none;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:15px;height:15px}.workflow-node-label.svelte-nbptrg{letter-spacing:.03em;color:var(--text);white-space:nowrap;font-size:11px;font-weight:700;line-height:1.2}.workflow-node-sub.svelte-nbptrg{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;max-width:120px;font-size:10px;font-weight:500;line-height:1.2;font-family:var(--font-mono,ui-monospace, monospace);overflow:hidden}.workflow-node-badge.svelte-nbptrg{border-radius:var(--radius);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;border:1px solid var(--border);background:var(--bg);color:var(--text-muted);align-items:center;padding:2px 7px;font-size:9px;font-weight:800;line-height:1.5;display:inline-flex}.workflow-node-endpoint.svelte-nbptrg{border-radius:var(--radius);border-color:var(--border);background:var(--bg-surface);flex-direction:row;gap:7px;min-width:auto;padding:10px 14px}.workflow-node-icon-endpoint.svelte-nbptrg{border-radius:var(--radius);width:auto;height:auto;color:var(--text-muted);background:0 0;justify-content:flex-start;padding:0}.workflow-node-icon-endpoint.svelte-nbptrg svg{width:14px;height:14px}.workflow-node-endpoint.svelte-nbptrg .workflow-node-label:where(.svelte-nbptrg){color:var(--text-muted);font-size:11px;font-weight:600}.workflow-node-feature.svelte-nbptrg{border-color:color-mix(in srgb, var(--accent) 46%, var(--border));background:color-mix(in srgb, var(--accent) 8%, var(--bg-surface))}.workflow-node-feature.svelte-nbptrg .workflow-node-icon:where(.svelte-nbptrg){background:color-mix(in srgb, var(--accent) 16%, var(--bg));color:var(--accent)}.workflow-node-feature.svelte-nbptrg .workflow-node-label:where(.svelte-nbptrg){color:var(--accent)}.workflow-node-feature.svelte-nbptrg .workflow-node-sub:where(.svelte-nbptrg){color:color-mix(in srgb, var(--accent) 70%, var(--text-muted))}.workflow-node-ai.svelte-nbptrg{border-radius:var(--radius);gap:6px;min-width:96px;padding:12px 16px}.workflow-async-section.svelte-nbptrg{justify-content:flex-end;align-items:center;gap:0;width:100%;min-width:0;margin-top:10px;display:flex}.workflow-async-turn.svelte-nbptrg{background:repeating-linear-gradient(to left, color-mix(in srgb, var(--text-muted) 45%, var(--border)) 0, color-mix(in srgb, var(--text-muted) 45%, var(--border)) 5px, transparent 5px, transparent 9px);flex:0 0 60px;height:2px;position:relative}.workflow-async-turn.svelte-nbptrg:before{content:"";background:color-mix(in srgb, var(--text-muted) 40%, var(--border));clip-path:polygon(100% 0,0 50%,100% 100%);width:7px;height:9px;position:absolute;top:50%;left:-7px;transform:translateY(-50%)}.workflow-async-turn.svelte-nbptrg:after{content:"";border-right:2px dashed color-mix(in srgb, var(--text-muted) 40%, var(--border));height:16px;position:absolute;bottom:1px;right:0}.workflow-async-row.svelte-nbptrg{align-items:center;min-width:0;margin-right:7px;display:flex}.workflow-conn-async.svelte-nbptrg{background:repeating-linear-gradient(to left, color-mix(in srgb, var(--text-muted) 45%, var(--border)) 0, color-mix(in srgb, var(--text-muted) 45%, var(--border)) 5px, transparent 5px, transparent 9px);flex:0 0 24px;width:24px}.workflow-conn-async.svelte-nbptrg:after{background:color-mix(in srgb, var(--text-muted) 45%, var(--border));clip-path:polygon(100% 0,0 50%,100% 100%);left:-1px;right:auto}.workflow-node-async.svelte-nbptrg{border-radius:var(--radius);border-style:dashed;flex-direction:row;gap:7px;min-width:auto;padding:7px 12px}.workflow-node-async.svelte-nbptrg .workflow-node-icon:where(.svelte-nbptrg){border-radius:var(--radius);width:12px;height:12px}.workflow-node-async.svelte-nbptrg .workflow-node-icon:where(.svelte-nbptrg) svg{width:12px;height:12px}.workflow-node-async.svelte-nbptrg .workflow-node-label:where(.svelte-nbptrg){font-size:10px;font-weight:700}.workflow-async-label.svelte-nbptrg{letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);opacity:.55;white-space:nowrap;flex-shrink:0;align-items:center;margin-left:8px;font-size:9px;font-weight:800;display:inline-flex}.workflow-node-success.svelte-nbptrg .workflow-node-icon:where(.svelte-nbptrg){background:color-mix(in srgb, var(--success) 18%, var(--bg));color:var(--success)}.workflow-node-success.svelte-nbptrg .workflow-node-icon-endpoint:where(.svelte-nbptrg){color:var(--success)}.workflow-node-success.svelte-nbptrg .workflow-node-label:where(.svelte-nbptrg){color:color-mix(in srgb, var(--success) 85%, var(--text))}.workflow-node-success.svelte-nbptrg .workflow-node-sub:where(.svelte-nbptrg){color:color-mix(in srgb, var(--success) 74%, var(--text-muted))}.workflow-node-success.svelte-nbptrg .workflow-node-badge:where(.svelte-nbptrg){background:color-mix(in srgb, var(--success) 14%, var(--bg));border-color:color-mix(in srgb, var(--success) 38%, var(--border));color:var(--success)}.workflow-node-current.svelte-nbptrg .workflow-node-icon:where(.svelte-nbptrg){background:color-mix(in srgb, var(--info) 16%, var(--bg));color:var(--info)}.workflow-node-current.svelte-nbptrg .workflow-node-icon-endpoint:where(.svelte-nbptrg){color:var(--info)}.workflow-node-current.svelte-nbptrg .workflow-node-label:where(.svelte-nbptrg){color:color-mix(in srgb, var(--info) 85%, var(--text))}.workflow-node-current.svelte-nbptrg .workflow-node-sub:where(.svelte-nbptrg){color:color-mix(in srgb, var(--info) 72%, var(--text-muted))}.workflow-node-current.svelte-nbptrg .workflow-node-badge:where(.svelte-nbptrg){background:color-mix(in srgb, var(--info) 13%, var(--bg));border-color:color-mix(in srgb, var(--info) 36%, var(--border));color:var(--info)}.workflow-node-warning.svelte-nbptrg .workflow-node-icon:where(.svelte-nbptrg){background:color-mix(in srgb, var(--warning) 14%, var(--bg));color:var(--warning)}.workflow-node-warning.svelte-nbptrg .workflow-node-icon-endpoint:where(.svelte-nbptrg){color:var(--warning)}.workflow-node-warning.svelte-nbptrg .workflow-node-label:where(.svelte-nbptrg){color:color-mix(in srgb, var(--warning) 85%, var(--text))}.workflow-node-warning.svelte-nbptrg .workflow-node-sub:where(.svelte-nbptrg){color:color-mix(in srgb, var(--warning) 72%, var(--text-muted))}.workflow-node-warning.svelte-nbptrg .workflow-node-badge:where(.svelte-nbptrg){background:color-mix(in srgb, var(--warning) 14%, var(--bg));border-color:color-mix(in srgb, var(--warning) 38%, var(--border));color:var(--warning)}.workflow-node-error.svelte-nbptrg .workflow-node-icon:where(.svelte-nbptrg){background:color-mix(in srgb, var(--danger) 14%, var(--bg));color:var(--danger)}.workflow-node-error.svelte-nbptrg .workflow-node-icon-endpoint:where(.svelte-nbptrg){color:var(--danger)}.workflow-node-error.svelte-nbptrg .workflow-node-label:where(.svelte-nbptrg){color:color-mix(in srgb, var(--danger) 85%, var(--text))}.workflow-node-error.svelte-nbptrg .workflow-node-sub:where(.svelte-nbptrg){color:color-mix(in srgb, var(--danger) 72%, var(--text-muted))}.workflow-node-neutral.svelte-nbptrg .workflow-node-icon:where(.svelte-nbptrg){background:color-mix(in srgb, var(--text-muted) 12%, var(--bg));color:var(--text-muted)}.workflow-node-neutral.svelte-nbptrg .workflow-node-icon-endpoint:where(.svelte-nbptrg),.workflow-node-neutral.svelte-nbptrg .workflow-node-label:where(.svelte-nbptrg){color:var(--text-muted)}.workflow-node-neutral.svelte-nbptrg .workflow-node-sub:where(.svelte-nbptrg){color:color-mix(in srgb, var(--text-muted) 84%, var(--border))}.workflow-node-neutral.svelte-nbptrg .workflow-node-badge:where(.svelte-nbptrg){background:color-mix(in srgb, var(--text-muted) 10%, var(--bg));border-color:color-mix(in srgb, var(--text-muted) 28%, var(--border));color:var(--text-muted)}.workflow-conn-hit.svelte-nbptrg,.workflow-conn-hit.svelte-nbptrg:after{background:color-mix(in srgb, var(--success) 58%, var(--border))}.workflow-conn-dim.svelte-nbptrg,.workflow-conn-dim.svelte-nbptrg:after{background:color-mix(in srgb, var(--border) 75%, transparent)}.workflow-node-success.svelte-nbptrg{border-color:color-mix(in srgb, var(--success) 52%, var(--border));background:color-mix(in srgb, var(--success) 9%, var(--bg-surface))}.workflow-node-current.svelte-nbptrg{border-color:color-mix(in srgb, var(--info) 56%, var(--border));background:color-mix(in srgb, var(--info) 10%, var(--bg-surface))}.workflow-node-warning.svelte-nbptrg{border-color:color-mix(in srgb, var(--warning) 52%, var(--border));background:color-mix(in srgb, var(--warning) 9%, var(--bg-surface))}.workflow-node-error.svelte-nbptrg{border-color:color-mix(in srgb, var(--danger) 52%, var(--border));background:color-mix(in srgb, var(--danger) 9%, var(--bg-surface))}.workflow-node-neutral.svelte-nbptrg{border-color:color-mix(in srgb, var(--text-muted) 40%, var(--border));background:color-mix(in srgb, var(--text-muted) 8%, var(--bg-surface))}.workflow-node-skipped.svelte-nbptrg{opacity:.28;position:relative}.workflow-card.svelte-1fo9fvq{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:16px;padding:20px;display:flex}.workflow-card-head.svelte-1fo9fvq{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.workflow-card-footer.svelte-1fo9fvq{flex-direction:column;align-items:stretch;gap:10px;display:flex}.workflow-card-head.svelte-1fo9fvq h3{font-size:18px;font-weight:700}.workflow-card-badges.svelte-1fo9fvq,.workflow-card-meta.svelte-1fo9fvq{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.workflow-card-meta-footer.svelte-1fo9fvq{justify-content:flex-start}.workflow-card-footer.svelte-1fo9fvq .alias-actions-cell{align-self:flex-end}.workflow-card-description.svelte-1fo9fvq{color:var(--text-muted);font-size:14px}.workflow-guardrails.svelte-1fo9fvq{flex-direction:column;gap:12px;display:flex}.workflow-guardrail-list.svelte-1fo9fvq{flex-direction:column;gap:10px;display:flex}.workflow-guardrail-item.svelte-1fo9fvq{border:1px solid var(--border);background:var(--bg);border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}@media (width<=768px){.workflow-card-head.svelte-1fo9fvq,.workflow-card-footer.svelte-1fo9fvq,.workflow-card-badges.svelte-1fo9fvq,.workflow-card-meta.svelte-1fo9fvq,.workflow-guardrail-item.svelte-1fo9fvq{flex-direction:column;align-items:flex-start}}.model-editor.workflow-editor{width:min(1080px,100%);margin-bottom:0}.alert-inline-actions.svelte-1bcpzh1{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.workflow-guardrail-editor.svelte-1bcpzh1{flex-direction:column;gap:12px;display:flex}.workflow-guardrail-list-editor.svelte-1bcpzh1{flex-direction:column;gap:10px;display:flex}.workflow-guardrail-row.svelte-1bcpzh1{border:1px solid var(--border);background:var(--bg);border-radius:10px;justify-content:stretch;align-items:center;gap:12px;padding:10px 12px;display:flex}.workflow-guardrail-field.svelte-1bcpzh1{flex:auto;min-width:0}.workflow-guardrail-step-field.svelte-1bcpzh1{flex:0 0 120px}.workflow-input.svelte-1bcpzh1{width:100%;max-width:none}.workflow-step-input.svelte-1bcpzh1{max-width:120px}@media (width<=768px){.workflow-guardrail-row.svelte-1bcpzh1{flex-direction:column;align-items:flex-start}.workflow-step-input.svelte-1bcpzh1{width:100%;max-width:none}.workflow-guardrail-field.svelte-1bcpzh1,.workflow-guardrail-step-field.svelte-1bcpzh1{flex-basis:auto;width:100%}}.workflow-list-loading.svelte-ie2kfk{justify-content:center;align-items:center;gap:8px;display:flex}.workflows-list.svelte-ie2kfk{min-width:0}.workflow-card-grid.svelte-ie2kfk{grid-template-columns:1fr;gap:16px;display:grid}.workflow-page-note.svelte-l8kr26{color:var(--text-muted);margin-top:6px;font-size:14px}.audit-log-toolbar.svelte-1pwbpcm{flex-direction:column;gap:10px;margin-bottom:14px;display:flex}.audit-filter-row.svelte-1pwbpcm{grid-template-columns:repeat(12,minmax(0,1fr));gap:10px;display:grid}.audit-filter-select.svelte-1pwbpcm{grid-column:span 2;min-width:0}.audit-filter-row-search.svelte-1pwbpcm .filter-input-wrap{grid-column:1/-1;max-width:none}.audit-filter-row-controls.svelte-1pwbpcm .audit-filter-select:where(.svelte-1pwbpcm){grid-column:span 2}.audit-filter-row-controls.svelte-1pwbpcm .btn{grid-column:11/-1;justify-self:end;min-width:108px}.audit-clear-btn.svelte-1pwbpcm{justify-content:center;align-items:center;gap:8px;font-weight:600;display:inline-flex}.audit-clear-btn.svelte-1pwbpcm .table-icon-svg{width:12px;height:12px}@media (width<=768px){.audit-log-toolbar.svelte-1pwbpcm{gap:8px}.audit-filter-row.svelte-1pwbpcm{grid-template-columns:1fr}.audit-filter-row.svelte-1pwbpcm .filter-input-wrap,.audit-filter-row.svelte-1pwbpcm .filter-input,.audit-filter-select.svelte-1pwbpcm,.audit-filter-row.svelte-1pwbpcm .btn{grid-column:auto}}.audit-live-status.svelte-tve6yv{color:var(--text-muted);align-items:center;gap:10px;margin-left:16px;padding-left:6px;font-size:12px;display:inline-flex}.audit-live-status.svelte-tve6yv .live-dot.is-streaming:where(.svelte-tve6yv){animation:1.8s ease-out infinite svelte-tve6yv-audit-live-dot-throb}@keyframes svelte-tve6yv-audit-live-dot-throb{0%{transform:scale(1)}35%{transform:scale(1.35)}70%{transform:scale(1)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.audit-live-status.svelte-tve6yv .live-dot.is-streaming:where(.svelte-tve6yv){animation:none}}.audit-live-status-text.is-live.svelte-tve6yv{color:var(--success);font-weight:600}.audit-entry-metadata.svelte-hyopt0{border-top:1px solid var(--border);align-items:center;gap:10px;margin-top:12px;padding-top:12px;display:flex}.audit-entry-metadata-label.svelte-hyopt0{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;flex:none;font-size:12px;font-weight:700}.audit-entry-context.svelte-hyopt0{flex-wrap:wrap;flex:auto;gap:8px;display:flex}.audit-alias-badge.svelte-hyopt0{background:color-mix(in srgb, var(--accent) 14%, var(--bg));border-color:color-mix(in srgb, var(--accent) 28%, var(--border));color:var(--accent-strong,var(--accent))}@media (width<=768px){.audit-entry-metadata.svelte-hyopt0{flex-direction:column;align-items:flex-start;gap:8px}}.audit-attempt-track.svelte-1eu22xn{cursor:pointer;align-items:center;gap:6px;display:inline-flex}.audit-attempt-track-pips.svelte-1eu22xn{align-items:center;gap:3px;display:inline-flex}.audit-attempt-pip.svelte-1eu22xn{background:var(--text-muted);border-radius:2px;width:8px;height:8px}.audit-attempt-pip.audit-attempt-success.svelte-1eu22xn{background:var(--success)}.audit-attempt-pip.audit-attempt-error.svelte-1eu22xn{background:var(--danger)}.audit-attempt-track-count.svelte-1eu22xn{color:var(--text-muted);font-size:11px}.audit-entry-summary.svelte-17mysgz{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:5px 14px;list-style:none;display:flex;position:relative}.audit-entry-summary.svelte-17mysgz::-webkit-details-marker{display:none}.audit-entry-summary-live-in-progress.svelte-17mysgz{background:color-mix(in srgb, var(--info) 7%, var(--bg))}.audit-entry-summary-has-interactions.svelte-17mysgz{padding-right:44px}.audit-entry-summary-live-in-progress.svelte-17mysgz:before{content:"";background:var(--info);pointer-events:none;width:3px;animation:1.2s ease-in-out infinite audit-live-summary-stripe-blink;position:absolute;inset:0 auto 0 0}@media (prefers-reduced-motion:reduce){.audit-entry-summary-live-in-progress.svelte-17mysgz:before{opacity:.78;animation:none}}.audit-entry-left.svelte-17mysgz{align-items:center;gap:8px;min-width:0;display:flex}.audit-entry-right.svelte-17mysgz{color:var(--text-muted);flex-shrink:0;align-items:center;gap:10px;min-height:28px;display:inline-flex}.audit-thread-expander.svelte-17mysgz{border:1px solid var(--border);background:var(--bg-surface);min-width:28px;height:28px;color:var(--text-muted);cursor:pointer;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;gap:3px;padding:0 7px 0 4px;transition:background .1s ease-out,color .1s ease-out;display:inline-flex}.audit-thread-expander.svelte-17mysgz:hover{background:color-mix(in srgb, var(--accent) 12%, var(--bg));color:var(--accent)}.audit-thread-expander.svelte-17mysgz .audit-thread-expander-svg{width:14px;height:14px}.audit-thread-count.svelte-17mysgz{font-size:11px;font-weight:600}.audit-conversation-trigger.svelte-17mysgz{border:0;border-left:1px solid var(--border);background:color-mix(in srgb, var(--accent) 12%, var(--bg));width:32px;height:100%;color:var(--accent);cursor:pointer;border-radius:0;justify-content:center;align-items:center;margin:0;transition:background .1s ease-out,color .1s ease-out;display:inline-flex;position:absolute;inset:0 0 0 auto}.audit-conversation-trigger.svelte-17mysgz:hover{background:color-mix(in srgb, var(--accent) 20%, var(--bg))}.audit-conversation-trigger-active.svelte-17mysgz{color:var(--accent-strong,var(--accent));background:color-mix(in srgb, var(--accent) 28%, var(--bg));border-left:0}.audit-conversation-trigger-active.svelte-17mysgz:hover{background:color-mix(in srgb, var(--accent) 34%, var(--bg))}.audit-conversation-trigger.svelte-17mysgz .audit-conversation-trigger-svg{stroke-linecap:butt;stroke-linejoin:miter;width:18px;height:18px}.audit-path.svelte-17mysgz{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.audit-request-badge.svelte-17mysgz{white-space:nowrap;gap:6px;min-width:0}.audit-timestamp-time.svelte-17mysgz{display:none}.audit-provider-model.svelte-17mysgz{border:1px solid var(--border);background:var(--bg-surface);height:24px;color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;border-radius:999px;align-items:center;max-width:420px;padding:0 10px;font-size:12px;display:inline-flex;overflow:hidden}@container dashboard-content (width<=699px){.audit-entry-summary.svelte-17mysgz{flex-direction:column;align-items:flex-start}.audit-entry-right.svelte-17mysgz{justify-content:space-between;width:100%}.audit-request-status.svelte-17mysgz,.audit-timestamp-full.svelte-17mysgz{display:none}.audit-timestamp-time.svelte-17mysgz{display:inline}}.audit-pane-split.svelte-1h5puht{grid-template-columns:1fr 2fr;align-items:start;gap:10px 14px;display:grid}.audit-pane-split-single.svelte-1h5puht{grid-template-columns:minmax(0,1fr)}@container dashboard-content (width<=699px){.audit-pane-split.svelte-1h5puht{grid-template-columns:minmax(0,1fr)}}.audit-pane-split.svelte-1h5puht .audit-pane-block-error:where(.svelte-1h5puht),.audit-pane-split.svelte-1h5puht .audit-pane-empty:where(.svelte-1h5puht),.audit-pane-split.svelte-1h5puht .audit-size-warning:where(.svelte-1h5puht){grid-column:1/-1}.audit-pane-block.svelte-1h5puht{min-width:0}.audit-pane-block.svelte-1h5puht>h5{margin-bottom:6px}.audit-pane-block-head.svelte-1h5puht{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.audit-pane-block-title.svelte-1h5puht{align-items:center;gap:8px;min-width:0;display:inline-flex}.audit-pane-block-head.svelte-1h5puht .audit-copy-btn{background-color:var(--bg-surface);border:1px solid color-mix(in srgb, var(--border) 70%, var(--text) 30%);color:var(--text);cursor:pointer;border-radius:6px;flex:none;align-items:center;gap:6px;padding:4px 8px;font-family:inherit;font-size:12px;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}.audit-pane-block-head.svelte-1h5puht .audit-copy-btn:hover:not(:disabled){background:color-mix(in srgb, var(--bg-surface) 80%, var(--text) 20%);border-color:color-mix(in srgb, var(--border) 45%, var(--text) 55%)}.audit-pane-block-head.svelte-1h5puht .audit-copy-btn.copy-feedback-btn-copied{background:color-mix(in srgb, var(--success) 18%, var(--bg-surface))}.audit-json.svelte-1h5puht{background:var(--bg-surface);border:1px solid var(--border);box-sizing:border-box;white-space:pre;max-width:100%;max-height:220px;color:var(--text);border-radius:6px;padding:10px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:12px;line-height:1.45;overflow:auto}.audit-pane-error-message.svelte-1h5puht{color:var(--danger)}.audit-pane-clickable-preview.svelte-1h5puht{cursor:pointer}.audit-pane-clickable-preview.svelte-1h5puht:hover{background:color-mix(in srgb, var(--danger) 8%, transparent)}.audit-json-body.svelte-1h5puht{white-space:pre;overflow-wrap:normal}.audit-pane-empty.svelte-1h5puht{text-align:left;padding:8px 0 0}.audit-pane-pending.svelte-1h5puht{align-items:center;gap:8px;display:flex}.audit-pane-streaming.svelte-1h5puht{letter-spacing:.02em;color:var(--text-muted);align-items:center;gap:7px;padding-left:4px;font-size:11px;font-weight:600;display:inline-flex}.audit-size-warning.svelte-1h5puht{color:var(--warning);margin-top:8px;font-size:12px}.audit-request-response.svelte-1bc5vi5{margin-top:4px}.audit-pane-tablist.svelte-1bc5vi5{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:2px;display:flex}.audit-pane-tab.svelte-1bc5vi5{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-bottom-color:#0000;border-radius:6px 6px 0 0;align-items:center;gap:8px;margin-bottom:-1px;margin-right:12px;padding:8px 12px;font-family:inherit;font-size:13px;transition:color .15s,border-color .15s,background-color .15s;display:inline-flex}.audit-pane-tab.svelte-1bc5vi5:not(.audit-pane-tab-active):hover{color:var(--text);background:color-mix(in srgb, var(--text) 5%, transparent)}.audit-pane-tab-active.svelte-1bc5vi5{color:var(--text);border-color:var(--border);border-bottom-color:var(--bg);background:var(--bg)}.audit-pane-tab-label.svelte-1bc5vi5{font-weight:600}.audit-pane-tabpanel.svelte-1bc5vi5{min-width:0}.audit-pane-icon.svelte-1bc5vi5{color:var(--text-muted);flex:none;align-items:center;display:inline-flex}.audit-pane-icon.svelte-1bc5vi5.audit-pane-icon-request{color:var(--accent)}.audit-pane-icon.svelte-1bc5vi5.audit-pane-icon-response{color:var(--info)}.audit-pane-icon.svelte-1bc5vi5 svg{width:16px;height:16px}.audit-pane-seq.svelte-1bc5vi5{color:var(--text-muted);font-size:12px}.audit-pane-kind.svelte-1bc5vi5{text-transform:uppercase;letter-spacing:.04em;font-size:10px;font-weight:600}.audit-pane-kind.svelte-1bc5vi5.audit-pane-kind-primary{color:var(--text-muted)}.audit-pane-kind.svelte-1bc5vi5.audit-pane-kind-failover{color:var(--accent);background:color-mix(in srgb, var(--accent) 14%, var(--bg));border-color:color-mix(in srgb, var(--accent) 30%, var(--border))}.audit-pane-kind.svelte-1bc5vi5.audit-pane-kind-retry{color:var(--warning);background:color-mix(in srgb, var(--warning) 14%, var(--bg));border-color:color-mix(in srgb, var(--warning) 30%, var(--border))}.audit-savings-pill.svelte-1bc5vi5{border:1px solid color-mix(in srgb, var(--prompt-cache-color) 45%, var(--border));background:var(--prompt-cache-color-bg);color:var(--prompt-cache-color);letter-spacing:.02em;border-radius:999px;align-items:center;padding:1px 7px;font-size:11px;font-weight:700;display:inline-flex}.audit-step-pill.svelte-1bc5vi5{border:1px dashed var(--border);color:var(--text-muted);letter-spacing:.02em;border-radius:999px;align-items:center;padding:1px 7px;font-size:11px;display:inline-flex}.audit-entry.svelte-cmjgwr{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);transition:background .12s ease-out,border-color .12s ease-out;overflow:hidden}.audit-entry-interactions-open.svelte-cmjgwr{border-width:2px;border-color:color-mix(in srgb, var(--prompt-cache-color) 38%, var(--border))}.audit-entry-details.svelte-cmjgwr{border-top:1px solid var(--border);background:var(--bg-surface);padding:12px;overflow:hidden}.audit-thread.svelte-pneivi{flex-direction:column;gap:10px;display:flex}.audit-thread-children.svelte-pneivi{flex-direction:column;gap:10px;margin-left:26px;display:flex}.audit-thread-child.svelte-pneivi,.audit-thread-loading.svelte-pneivi{position:relative}.audit-thread-child.svelte-pneivi:before,.audit-thread-loading.svelte-pneivi:before{content:"";border-left:1px solid var(--border);border-bottom:1px solid var(--border);pointer-events:none;border-bottom-left-radius:6px;width:12px;height:calc(50% + 10px);position:absolute;top:-10px;left:-14px}.audit-thread-child.svelte-pneivi:not(:last-child):after{content:"";border-left:1px solid var(--border);pointer-events:none;position:absolute;top:50%;bottom:-10px;left:-14px}.audit-thread-loading.svelte-pneivi{padding:6px 0 6px 4px;display:flex}.audit-thread-more.svelte-pneivi{color:var(--text-muted);padding-left:4px;font-size:12px}.audit-log-loading.svelte-1nhcbov{justify-content:center;padding:2rem 0;display:flex}.audit-list-toolbar.svelte-1nhcbov{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.audit-list-toolbar-left.svelte-1nhcbov{flex-wrap:wrap;align-items:center;gap:16px;display:inline-flex}.audit-group-checkbox.svelte-1nhcbov{color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:7px;font-size:13px;display:inline-flex}.audit-group-checkbox.svelte-1nhcbov input:where(.svelte-1nhcbov){accent-color:var(--accent);cursor:pointer}.audit-retention-note.svelte-1nhcbov{color:var(--text-muted);font-size:13px}.audit-retention-highlight.svelte-1nhcbov{color:var(--text);font-weight:600}.audit-log-section.svelte-1nhcbov{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px}.audit-log-summary.svelte-1nhcbov{color:var(--text-muted);font-size:13px}.audit-log-list.svelte-1nhcbov{flex-direction:column;gap:10px;display:flex}.settings-guardrails-list.svelte-1bvx512{min-width:0}.settings-guardrail-type-pill.svelte-1bvx512{border:1px solid color-mix(in srgb, var(--accent) 18%, var(--border));background:color-mix(in srgb, var(--accent) 12%, transparent);color:var(--text);white-space:nowrap;border-radius:999px;align-items:center;padding:6px 10px;font-size:12px;font-weight:600;display:inline-flex}.settings-guardrail-summary.svelte-1bvx512{color:var(--text);font-size:14px;line-height:1.45}.settings-guardrail-description.svelte-1bvx512{color:var(--text-muted);margin-top:6px;font-size:12px}.model-editor.guardrails-editor-wide{width:min(1080px,100%)}.form-field-fieldset.svelte-s964s3{border:0;min-inline-size:0;margin:0;padding:0}.form-field-legend.svelte-s964s3{color:var(--text-muted);letter-spacing:.5px;text-transform:uppercase;padding:0;font-size:12px;font-weight:600}.model-editor.settings-guardrails-editor{min-width:0}.settings-guardrails-hero.svelte-5x874c{border:1px solid color-mix(in srgb, var(--accent) 14%, var(--border));border-radius:var(--radius);background:radial-gradient(circle at top right, color-mix(in srgb, var(--accent-hover) 18%, transparent), transparent 42%), radial-gradient(circle at bottom left, color-mix(in srgb, var(--accent) 16%, transparent), transparent 40%), var(--bg-surface);justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:20px;padding:24px;display:flex}.settings-kicker.svelte-5x874c{color:var(--accent);letter-spacing:.08em;text-transform:uppercase;margin:0 0 10px;font-size:11px;font-weight:700}.settings-guardrails-hero.svelte-5x874c h3{margin-bottom:8px}.settings-guardrails-hero.svelte-5x874c p:last-child{color:var(--text-muted);margin-bottom:0}.settings-guardrails-meta.svelte-5x874c{gap:12px;display:flex}.settings-guardrails-stat.svelte-5x874c{border:1px solid color-mix(in srgb, var(--accent) 14%, var(--border));background:color-mix(in srgb, var(--bg-surface-hover) 76%, transparent);border-radius:16px;min-width:110px;padding:14px 16px}.settings-guardrails-stat-label.svelte-5x874c{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;margin-bottom:8px;font-size:11px;font-weight:700;display:block}.settings-guardrails-stat.svelte-5x874c strong{font-size:24px;font-weight:700}@media (width<=768px){.settings-guardrails-hero.svelte-5x874c{flex-direction:column}.settings-guardrails-meta.svelte-5x874c{width:100%}.settings-guardrails-stat.svelte-5x874c{flex:1 1 0}}.mcp-catalog-section.svelte-1xqrzco{margin-top:18px}.mcp-catalog-section.svelte-1xqrzco .form-field-label{margin-bottom:8px}.mcp-catalog-subtitle.svelte-1xqrzco{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.mcp-catalog-list.svelte-1xqrzco{flex-direction:column;gap:12px;margin:0 0 8px;padding:0;list-style:none;display:flex}.mcp-catalog-item-name.svelte-1xqrzco{overflow-wrap:anywhere;font-size:13px}.mcp-catalog-item-aggregated.svelte-1xqrzco{color:var(--text-muted);overflow-wrap:anywhere;margin-top:2px;font-size:11px}.mcp-catalog-item-description.svelte-1xqrzco{color:var(--text-muted);margin:2px 0 0;font-size:13px;font-weight:400}.mcp-server-sub-counts.svelte-ah8nrt{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;max-width:280px;margin-top:4px;font-size:11px;overflow:hidden}.mcp-server-table-wrapper.svelte-ah8nrt{overflow-x:auto}.mcp-server-table-wrapper.svelte-ah8nrt .data-table{min-width:860px}.auth-key-form-fields.svelte-1gswxes>.form-field{margin-bottom:4px}.auth-key-dashboard-toggle.svelte-1gswxes{cursor:pointer;align-items:center;gap:8px;font-size:13px;display:inline-flex}.auth-key-issued-banner.svelte-1gswxes{background:color-mix(in srgb, var(--success) 8%, var(--bg-surface));border:1px solid color-mix(in srgb, var(--success) 30%, var(--border));border-radius:var(--radius);margin-bottom:20px;padding:16px}.auth-key-issued-warning.svelte-1gswxes{color:color-mix(in srgb, var(--success) 80%, var(--text));margin-bottom:12px;font-size:13px;font-weight:600}.auth-key-issued-value-row.svelte-1gswxes{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;display:flex}.auth-key-issued-token.svelte-1gswxes{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);word-break:break-all;flex:1;min-width:0;padding:8px 12px;font-size:13px;overflow-x:auto}.usage-label-chip-static.svelte-nf0ldb,.usage-label-chip-static.svelte-nf0ldb:hover{cursor:default;background:color-mix(in srgb, var(--label-color,var(--accent)) 14%, var(--bg))}.auth-key-redacted.svelte-nf0ldb{color:var(--text-muted);font-size:13px}.auth-key-actions-cell.svelte-nf0ldb{white-space:nowrap}.auth-key-row-deactivated.svelte-nf0ldb td:where(.svelte-nf0ldb):not(.auth-key-actions-cell){opacity:.55}.auth-key-expiry.svelte-nf0ldb{white-space:nowrap;align-items:center;gap:8px;display:inline-flex}.auth-key-th-help.svelte-nf0ldb{cursor:help;align-items:center;gap:4px;display:inline-flex}.auth-key-row-actions.svelte-nf0ldb{align-items:center;gap:6px;display:inline-flex}.auth-keys-loading.svelte-1xpdcqx{justify-content:center;align-items:center;padding:32px 0;display:flex}.auth-keys-help-notice.svelte-1xpdcqx{margin-bottom:20px}.auth-keys-inactive-toggle.svelte-1xpdcqx{color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;align-items:center;gap:8px;font-size:13px;display:inline-flex}.auth-keys-inactive-toggle.svelte-1xpdcqx input:where(.svelte-1xpdcqx){width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.settings-panel-header.svelte-15kyv2y{justify-content:space-between;gap:16px;margin-bottom:20px;display:flex}.settings-panel-header.svelte-15kyv2y h3{font-size:18px}.settings-form-grid.svelte-15kyv2y{grid-template-columns:minmax(280px,420px);gap:16px;display:grid}@media (width<=768px){.settings-form-grid.svelte-15kyv2y{grid-template-columns:1fr}}.budget-settings-section.svelte-a747ys{width:100%}.budget-settings-grid.svelte-a747ys{gap:12px;display:grid}.budget-settings-row.svelte-a747ys{grid-template-columns:96px minmax(170px,1fr) minmax(110px,140px) minmax(110px,140px) minmax(220px,280px);align-items:start;gap:12px;display:grid}.budget-settings-period.svelte-a747ys{color:var(--text);letter-spacing:0;text-transform:uppercase;align-self:end;min-height:35px;padding-bottom:9px;font-size:12px;font-weight:700}.budget-settings-spacer.svelte-a747ys{min-height:1px}.budget-settings-help-cell.svelte-a747ys{align-self:start;min-width:0;min-height:35px}.budget-settings-help-cell.svelte-a747ys .inline-help-copy{max-width:280px;margin:22px 0 0;font-size:12px;line-height:1.35}@media (width<=768px){.budget-settings-grid.svelte-a747ys,.budget-settings-row.svelte-a747ys{grid-template-columns:1fr}.budget-settings-spacer.svelte-a747ys{display:none}}.tagging-settings-grid.svelte-18e8yem{gap:12px;display:grid}.tagging-settings-row.svelte-18e8yem{grid-template-columns:minmax(170px,1fr) minmax(150px,1fr) minmax(80px,110px) auto minmax(90px,auto);align-items:end;gap:12px;display:grid}.tagging-do-not-pass.svelte-18e8yem{color:var(--text);white-space:nowrap;align-items:center;gap:6px;min-height:35px;font-size:13px;display:flex}.tagging-row-trailer.svelte-18e8yem{align-items:center;gap:8px;min-height:35px;display:flex}.tagging-settings-empty.svelte-18e8yem{color:var(--text-muted);margin:0}.tagging-settings-actions.svelte-18e8yem{flex-wrap:wrap;gap:10px;display:flex}@media (width<=768px){.tagging-settings-row.svelte-18e8yem{grid-template-columns:1fr;align-items:stretch}.tagging-settings-actions.svelte-18e8yem,.tagging-settings-actions.svelte-18e8yem .btn{width:100%}}.pricing-recalculate-section.svelte-1cdxzyk{width:100%}.pricing-recalculate-grid.svelte-1cdxzyk{grid-template-columns:minmax(220px,320px) minmax(260px,360px);justify-content:start;align-items:end;gap:12px;width:100%;display:grid}.pricing-recalculate-date-field.svelte-1cdxzyk{grid-column:1/-1;width:100%;max-width:320px}.pricing-recalculate-filter-field.svelte-1cdxzyk{width:100%;max-width:360px}.pricing-recalculate-date-field.svelte-1cdxzyk .date-picker{width:100%}.pricing-recalculate-date-field.svelte-1cdxzyk .date-picker-trigger{justify-content:space-between;width:100%}.pricing-recalculate-actions.svelte-1cdxzyk{flex-wrap:wrap;gap:10px;display:flex}@media (width<=768px){.pricing-recalculate-grid.svelte-1cdxzyk{grid-template-columns:1fr}.pricing-recalculate-actions.svelte-1cdxzyk,.pricing-recalculate-actions.svelte-1cdxzyk .btn{width:100%}}.pricing-recalculate-date-field.svelte-1cdxzyk .date-picker-dropdown{inset:auto auto calc(100% + 6px) 0}.settings-refresh-icon.svelte-yeq2mp{flex:0 0 16px;width:16px;height:16px}.runtime-refresh-steps.svelte-yeq2mp{color:var(--text-muted);gap:8px;margin-top:14px;padding-left:18px;font-size:13px;display:grid}.runtime-refresh-step.is-ok.svelte-yeq2mp{color:var(--success)}.runtime-refresh-step.is-partial.svelte-yeq2mp{color:var(--warning)}.runtime-refresh-step.is-failed.svelte-yeq2mp{color:var(--danger)}.runtime-settings-copy.svelte-tldbe5{min-width:180px}.runtime-settings-fields.svelte-tldbe5{gap:16px;width:min(560px,100%);display:grid}.runtime-setting-row.svelte-tldbe5{grid-template-columns:minmax(220px,1fr) 180px;align-items:center;gap:20px;display:grid}.runtime-setting-description.svelte-tldbe5,.runtime-setting-managed.svelte-tldbe5{color:var(--text-muted);margin:4px 0 0;font-size:12px}.runtime-setting-managed.svelte-tldbe5{color:var(--warning)}@media (width<=720px){.runtime-setting-row.svelte-tldbe5{grid-template-columns:1fr;gap:8px}}.settings-version-footer.svelte-3naq7u{color:var(--text-muted);text-align:right;margin-top:24px;font-size:12px}.chat-message.svelte-12s99s5{border:1px solid var(--border);background:var(--bg);border-radius:10px;max-width:94%;padding:10px 42px 10px 12px;position:relative;overflow:hidden}.chat-message.is-anchor.svelte-12s99s5{border-color:color-mix(in srgb, var(--accent) 55%, var(--border));box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 25%, transparent)}.chat-message.is-after-anchor.svelte-12s99s5,.chat-function-note.is-after-anchor.svelte-12s99s5{opacity:.46}.chat-message.role-user.svelte-12s99s5{align-self:flex-start}.chat-message.role-assistant.svelte-12s99s5{background:color-mix(in srgb, var(--accent) 18%, var(--bg));align-self:flex-end}.chat-message.role-system.svelte-12s99s5{background:color-mix(in srgb, var(--warning) 10%, var(--bg));align-self:center;width:100%;max-width:100%}.chat-message.role-error.svelte-12s99s5{border-color:color-mix(in srgb, var(--danger) 55%, var(--border));background:color-mix(in srgb, var(--danger) 10%, var(--bg));align-self:flex-end}.chat-message.role-error.svelte-12s99s5 .chat-role:where(.svelte-12s99s5){color:color-mix(in srgb, var(--danger) 75%, var(--text-muted))}.chat-message-meta.svelte-12s99s5{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:6px;display:flex}.chat-role.svelte-12s99s5{text-transform:uppercase;letter-spacing:.4px;color:var(--text-muted);font-size:12px;font-weight:700}.chat-time.svelte-12s99s5{color:var(--text-muted);white-space:nowrap;font-size:11px}.chat-content.svelte-12s99s5{white-space:pre-wrap;overflow-wrap:break-word;color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:13px;line-height:1.5}.chat-message.svelte-12s99s5:before,.chat-function-note.svelte-12s99s5:before{content:"";z-index:0;pointer-events:none;opacity:var(--prompt-cache-visibility);background:linear-gradient(90deg, color-mix(in srgb, var(--prompt-cache-color) 18%, transparent) 0, color-mix(in srgb, var(--prompt-cache-color) 18%, transparent) var(--prompt-cache-fill), transparent var(--prompt-cache-fill), transparent 100%);transition:opacity .15s;position:absolute;inset:0}.chat-message.svelte-12s99s5>:where(.svelte-12s99s5),.chat-function-note.svelte-12s99s5>:where(.svelte-12s99s5){z-index:1;position:relative}.chat-message-copy.svelte-12s99s5{z-index:2;border:1px solid var(--border);background:color-mix(in srgb, var(--bg-surface) 92%, transparent);width:26px;height:26px;color:var(--text-muted);opacity:0;pointer-events:none;border-radius:6px;justify-content:center;align-items:center;padding:0;transition:opacity .12s,transform .12s,color .12s,background-color .12s,border-color .12s;display:inline-flex;position:absolute;bottom:6px;right:6px;transform:translateY(3px)}.chat-message.svelte-12s99s5:hover .chat-message-copy:where(.svelte-12s99s5),.chat-function-note.svelte-12s99s5:hover .chat-message-copy:where(.svelte-12s99s5),.chat-message.svelte-12s99s5:focus-within .chat-message-copy:where(.svelte-12s99s5),.chat-function-note.svelte-12s99s5:focus-within .chat-message-copy:where(.svelte-12s99s5),.chat-message-copy.is-copied.svelte-12s99s5{opacity:1;pointer-events:auto;transform:translateY(0)}.chat-message-copy.svelte-12s99s5:hover{color:var(--text);background:var(--bg-surface-hover)}.chat-message-copy.svelte-12s99s5:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 45%, transparent);outline-offset:1px}.chat-message-copy.is-copied.svelte-12s99s5{color:var(--success);border-color:color-mix(in srgb, var(--success) 45%, var(--border))}.chat-tool-calls.svelte-12s99s5{border-top:1px solid var(--border);flex-direction:column;gap:3px;margin-top:8px;padding-top:6px;display:flex}.chat-tool-call.svelte-12s99s5{color:var(--text-muted);border-radius:5px;min-width:0;padding:3px 5px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:11px;position:relative;overflow:hidden}.chat-tool-call-summary.svelte-12s99s5{cursor:pointer;align-items:baseline;gap:6px;min-width:0;display:flex}.chat-tool-call-preview.svelte-12s99s5{white-space:nowrap;text-overflow:ellipsis;opacity:.8;flex:1;min-width:0;overflow:hidden}.chat-tool-call-arguments.svelte-12s99s5{background:color-mix(in srgb, var(--border) 45%, transparent);color:var(--text);font:inherit;white-space:pre-wrap;overflow-wrap:anywhere;border-radius:6px;max-height:200px;margin-top:5px;padding:6px 8px;line-height:1.45;overflow:auto}.chat-tool-call-name.svelte-12s99s5:before{content:"⚡"}.chat-function-note.svelte-12s99s5{max-width:94%;color:var(--text-muted);background:color-mix(in srgb, var(--border) 40%, transparent);border:1px dashed var(--border);border-radius:12px;align-self:center;padding:4px 42px 4px 12px;font-size:12px;position:relative;overflow:hidden}.chat-function-note.is-anchor.svelte-12s99s5{border-color:color-mix(in srgb, var(--accent) 55%, var(--border))}.chat-function-note-inner.svelte-12s99s5{align-items:baseline;gap:6px;min-height:26px;display:flex;overflow:hidden}.chat-function-note-inner.svelte-12s99s5 .chat-time:where(.svelte-12s99s5){flex-shrink:0;margin-left:auto}.chat-function-call-id.svelte-12s99s5{color:var(--text-muted);overflow-wrap:anywhere;margin-top:6px;font-size:10px}.chat-function-label.svelte-12s99s5{text-transform:uppercase;letter-spacing:.3px;white-space:nowrap;flex-shrink:0;font-size:11px;font-weight:600}.chat-function-label.svelte-12s99s5:before{content:"▸";margin-right:4px;transition:transform .12s;display:inline-block}.chat-function-note-details[open].svelte-12s99s5 .chat-function-label:where(.svelte-12s99s5):before{transform:rotate(90deg)}.chat-function-detail.svelte-12s99s5{white-space:nowrap;text-overflow:ellipsis;font-family:SF Mono,Menlo,Consolas,monospace;font-size:11px;overflow:hidden}.chat-function-note.role-function-call.svelte-12s99s5{background:color-mix(in srgb, var(--accent) 8%, transparent);border-color:color-mix(in srgb, var(--accent) 30%, var(--border));align-self:flex-end}.chat-function-note.role-function-result.svelte-12s99s5{background:color-mix(in srgb, var(--success) 8%, transparent);border-color:color-mix(in srgb, var(--success) 30%, var(--border));align-self:flex-start}.chat-function-note.is-anchor.role-function-call.svelte-12s99s5,.chat-function-note.is-anchor.role-function-result.svelte-12s99s5{border-color:color-mix(in srgb, var(--accent) 55%, var(--border))}.chat-function-note-details.svelte-12s99s5{width:100%}.chat-function-note-details.svelte-12s99s5>summary{cursor:pointer;list-style:none}.chat-function-note-details.svelte-12s99s5>summary::-webkit-details-marker{display:none}.chat-function-expanded.svelte-12s99s5{border-top:1px solid var(--border);white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text);max-height:200px;margin-top:6px;padding-top:6px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:11px;line-height:1.45;overflow:auto}@media (width<=768px){.chat-message.svelte-12s99s5{max-width:100%}}@media (hover:none){.chat-message-copy.svelte-12s99s5{opacity:1;pointer-events:auto;transform:none}}@media (prefers-reduced-motion:reduce){.chat-message-copy.svelte-12s99s5{transition:none}}.conversation-drawer.svelte-ssrzja{width:var(--conversation-panel-width);background:var(--bg-surface);border-left:1px solid var(--border);z-index:12;flex-direction:column;flex:none;min-width:0;height:100vh;display:flex;position:sticky;top:0}.conversation-drawer-fullscreen.svelte-ssrzja{z-index:70;border-left:0;flex-basis:auto;width:100vw;height:100dvh;position:fixed;inset:0}.conversation-drawer-fullscreen.svelte-ssrzja .conversation-resize-handle:where(.svelte-ssrzja){display:none}.conversation-resize-handle.svelte-ssrzja{z-index:2;cursor:col-resize;touch-action:none;background:0 0;border:0;border-radius:0;outline:none;width:10px;padding:0;position:absolute;top:0;bottom:0;left:-5px}.conversation-resize-handle.svelte-ssrzja:after{content:"";background:0 0;width:2px;transition:background .15s;position:absolute;top:0;bottom:0;left:4px}.conversation-resize-handle.svelte-ssrzja:hover:after,.conversation-resize-handle.svelte-ssrzja:focus-visible:after{background:color-mix(in srgb, var(--accent) 70%, var(--border))}body.conversation-panel-resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}.conversation-drawer-header.svelte-ssrzja{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:10px;padding:14px 16px;display:flex}.conversation-drawer-header-actions.svelte-ssrzja{align-items:center;gap:6px;display:flex}.conversation-drawer-title.svelte-ssrzja{align-items:center;gap:9px;min-width:0;display:flex}.conversation-follow-status.svelte-ssrzja{justify-content:center;align-items:center;margin:-4px;padding:4px;display:inline-flex}.conversation-drawer-header.svelte-ssrzja h3{font-size:16px;font-weight:700}#interactions-drawer-content.svelte-ssrzja{position:relative}.conversation-message-navigation.svelte-ssrzja{z-index:4;opacity:0;pointer-events:none;flex-direction:column;gap:4px;width:max-content;height:0;margin-left:auto;margin-right:12px;transition:opacity .12s,transform .12s;display:flex;position:sticky;top:12px;transform:translateY(-3px)}#interactions-drawer-content.svelte-ssrzja:hover .conversation-message-navigation:where(.svelte-ssrzja),.conversation-message-navigation.svelte-ssrzja:focus-within{opacity:1;pointer-events:auto;transform:translateY(0)}.conversation-message-navigation.svelte-ssrzja button:where(.svelte-ssrzja){border:1px solid var(--border);background:color-mix(in srgb, var(--bg-surface) 94%, transparent);width:30px;height:30px;min-height:30px;color:var(--text-muted);border-radius:6px;justify-content:center;align-items:center;padding:0;display:inline-flex;box-shadow:0 1px 3px #00000029}.conversation-message-navigation.svelte-ssrzja button:where(.svelte-ssrzja):hover{color:var(--text);background:var(--bg-surface-hover)}.conversation-message-navigation.svelte-ssrzja button:where(.svelte-ssrzja):focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 45%, transparent);outline-offset:1px}.conversation-drawer-footer.svelte-ssrzja{border-top:1px solid var(--border);background:var(--bg-surface);flex-direction:column;flex-shrink:0;gap:9px;padding:10px 16px;display:flex}.conversation-composer.svelte-ssrzja{flex-direction:column;gap:7px;display:flex}.conversation-composer.svelte-ssrzja textarea:where(.svelte-ssrzja){resize:vertical;border:1px solid var(--border);background:var(--bg);width:100%;min-height:50px;color:var(--text);font:inherit;border-radius:7px;padding:9px 10px;line-height:1.45}.conversation-composer.svelte-ssrzja textarea:where(.svelte-ssrzja):focus{outline:2px solid color-mix(in srgb, var(--accent) 38%, transparent);outline-offset:1px}.conversation-composer.svelte-ssrzja textarea:where(.svelte-ssrzja):disabled{opacity:.65}.conversation-composer-actions.svelte-ssrzja{justify-content:space-between;align-items:center;gap:10px;display:flex}.conversation-endpoint.svelte-ssrzja{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-muted);font-size:11px;overflow:hidden}.conversation-send-error.svelte-ssrzja{color:var(--danger);font-size:12px}.conversation-truncated.svelte-ssrzja{color:var(--text-muted);padding:0 16px 14px;font-size:12px}.conversation-cache-legend.svelte-ssrzja{color:var(--text-muted);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:7px;margin:12px 16px 0;padding:0;font-family:inherit;font-size:11px;display:flex}.conversation-cache-legend.svelte-ssrzja:hover{color:var(--text)}.conversation-cache-legend.svelte-ssrzja:focus-visible{outline:2px solid color-mix(in srgb, var(--prompt-cache-color) 35%, transparent);outline-offset:3px;border-radius:3px}.conversation-cache-switch.svelte-ssrzja{background:color-mix(in srgb, var(--text-muted) 30%, var(--border));border-radius:999px;flex:none;width:28px;height:16px;transition:background-color .15s;position:relative}.conversation-cache-switch.is-active.svelte-ssrzja{background:color-mix(in srgb, var(--prompt-cache-color) 80%, var(--bg))}.conversation-cache-switch-thumb.svelte-ssrzja{background:#fff;border-radius:50%;width:12px;height:12px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #0000003d}.conversation-cache-switch.is-active.svelte-ssrzja .conversation-cache-switch-thumb:where(.svelte-ssrzja){transform:translate(12px)}.conversation-cache-estimate.svelte-ssrzja{opacity:.75}.conversation-thread.svelte-ssrzja{flex-direction:column;gap:10px;padding:14px 16px 20px;display:flex}.conversation-live-status.svelte-ssrzja{color:var(--text-muted);align-items:center;gap:10px;padding:4px 16px 20px;font-size:13px;display:flex}@media (hover:none){.conversation-message-navigation.svelte-ssrzja{opacity:1;pointer-events:auto;transform:none}}@media (prefers-reduced-motion:reduce){.conversation-message-navigation.svelte-ssrzja{transition:none}} diff --git a/internal/admin/dashboard/static/dist/assets/index-DvpsRGZe.js b/internal/admin/dashboard/static/dist/assets/index-DvpsRGZe.js deleted file mode 100644 index b3a8f08f4..000000000 --- a/internal/admin/dashboard/static/dist/assets/index-DvpsRGZe.js +++ /dev/null @@ -1,70 +0,0 @@ -(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 e=Array.isArray,t=Array.prototype.indexOf,n=Array.prototype.includes,r=Array.from,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyDescriptors,s=Object.prototype,c=Array.prototype,l=Object.getPrototypeOf,u=Object.isExtensible;function d(e){return typeof e==`function`}var f=()=>{};function p(e){for(var t=0;t{e=n,t=r}),resolve:e,reject:t}}function h(e,t,n=!1){return e===void 0?n?t():t:e}function g(e,t){if(Array.isArray(e))return e;if(t===void 0||!(Symbol.iterator in e))return Array.from(e);let n=[];for(let r of e)if(n.push(r),n.length===t)break;return n}var _=1<<24,v=1024,y=2048,b=4096,x=8192,S=16384,C=32768,w=1<<25,T=65536,E=1<<19,ee=1<<20,te=1<<25,ne=65536,re=1<<21,ie=1<<22,ae=1<<23,oe=Symbol(`$state`),se=Symbol(`legacy props`),ce=Symbol(``),le=Symbol(`attributes`),ue=Symbol(`class`),de=Symbol(`style`),fe=Symbol(`text`),pe=Symbol(`form reset`),me=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},he=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`);function ge(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function _e(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function ve(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function ye(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function be(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function xe(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function Se(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function Ce(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function we(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function Te(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Ee(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var De={},Oe=Symbol(`uninitialized`),ke=`http://www.w3.org/1999/xhtml`,Ae=`http://www.w3.org/2000/svg`,je=`http://www.w3.org/1998/Math/MathML`;function Me(){console.warn(`https://svelte.dev/e/derived_inert`)}function Ne(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Pe(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function Fe(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var Ie=!1;function Le(e){Ie=e}var Re;function ze(e){if(e===null)throw Ne(),De;return Re=e}function Be(){return ze(vn(Re))}function D(e){if(Ie){if(vn(Re)!==null)throw Ne(),De;Re=e}}function Ve(e=1){if(Ie){for(var t=e,n=Re;t--;)n=vn(n);Re=n}}function He(e=!0){for(var t=0,n=Re;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else(r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=vn(n);e&&n.remove(),n=i}}function Ue(e){if(!e||e.nodeType!==8)throw Ne(),De;return e.data}function We(e){return e===this.v}function Ge(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function Ke(e){return!Ge(e,this.v)}var qe=null;function Je(e){qe=e}function O(e,t=!1,n){qe={p:qe,i:!1,c:null,e:null,s:e,x:null,r:nr,l:null}}function k(e){var t=qe,n=t.e;if(n!==null){t.e=null;for(var r of n)kn(r)}return e!==void 0&&(t.x=e),t.i=!0,qe=t.p,e??{}}function Ye(){return!0}var Xe=[];function Ze(){var e=Xe;Xe=[],p(e)}function Qe(e){if(Xe.length===0&&!Lt){var t=Xe;queueMicrotask(()=>{t===Xe&&Ze()})}Xe.push(e)}function $e(){for(;Xe.length>0;)Ze()}function et(e){var t=nr;if(t===null)return $n.f|=ae,e;if(!(t.f&32768)&&!(t.f&4))throw e;tt(e,t)}function tt(e,t){if(!(t!==null&&t.f&16384)){for(;t!==null;){if(t.f&128){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}}var nt=~(y|b|v);function rt(e,t){e.f=e.f&nt|t}function it(e){e.f&512||e.deps===null?rt(e,v):rt(e,b)}function at(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=ne,at(t.deps))}function ot(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),at(e.deps),rt(e,v)}var st=!1;function ct(e){var t=st;try{return st=!1,[e(),st]}finally{st=t}}function lt(e,t){if(t){let t=document.body;e.autofocus=!0,Qe(()=>{document.activeElement===t&&e.focus()})}}function ut(e){Ie&&_n(e)!==null&&yn(e)}var dt=!1;function ft(){dt||(dt=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[pe]?.()})},{capture:!0}))}function pt(e){var t=$n,n=nr;tr(null),rr(null);try{return e()}finally{tr(t),rr(n)}}function mt(e,t,n,r=n){e.addEventListener(t,()=>pt(n));let i=e[pe];i?e[pe]=()=>{i(),r(!0)}:e[pe]=()=>r(!0),ft()}function ht(e){let t=0,n=nn(0),r;return()=>{En()&&(R(n),Pn(()=>(t===0&&(r=wr(()=>e(()=>sn(n)))),t+=1,()=>{Qe(()=>{--t,t===0&&(r?.(),r=void 0,sn(n))})})))}}var gt=T|E;function _t(e,t,n,r){new vt(e,t,n,r)}var vt=class{parent;is_pending=!1;transform_error;#e;#t=Ie?Re:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=ht(()=>(this.#m=nn(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=nr;t.b=this,t.f|=128,n(e)},this.parent=nr.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=Fn(()=>{if(Ie){let e=this.#t;Be();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));this.#_(t)}else t?this.#v():this.#g()}else this.#y()},gt),Ie&&(this.#e=Re)}#g(){try{this.#a=Ln(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed;t&&(this.#s=Ln(()=>{t(this.#e,()=>e,()=>()=>{})}))}#v(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=Ln(()=>e(this.#e)),Qe(()=>{var e=this.#c=document.createDocumentFragment(),t=gn();e.append(t),this.#a=this.#x(()=>Ln(()=>this.#r(t))),this.#u===0&&(this.#e.before(e),this.#c=null,Wn(this.#o,()=>{this.#o=null}),this.#b(Nt))}))}#y(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=Ln(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();Jn(this.#a,e);let t=this.#n.pending;this.#o=Ln(()=>t(this.#e))}else this.#b(Nt)}catch(e){this.error(e)}}#b(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){ot(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#x(e){var t=nr,n=$n,r=qe;rr(this.#i),tr(this.#i),Je(this.#i.ctx);try{return Ut.ensure(),e()}catch(e){return et(e),null}finally{rr(t),tr(n),Je(r)}}#S(e,t){if(!this.has_pending_snippet()){this.parent&&this.parent.#S(e,t);return}this.#u+=e,this.#u===0&&(this.#b(t),this.#o&&Wn(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#S(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,Qe(()=>{this.#d=!1,this.#m&&an(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),R(this.#m)}error(e){if(!this.#n.onerror&&!this.#n.failed)throw e;Nt?.is_fork?(this.#a&&Nt.skip_effect(this.#a),this.#o&&Nt.skip_effect(this.#o),this.#s&&Nt.skip_effect(this.#s),Nt.oncommit(()=>{this.#C(e)})):this.#C(e)}#C(e){this.#a&&=(Vn(this.#a),null),this.#o&&=(Vn(this.#o),null),this.#s&&=(Vn(this.#s),null),Ie&&(ze(this.#t),Ve(),ze(He()));var t=this.#n.onerror;let n=this.#n.failed;var r=!1,i=!1;let a=()=>{if(r){Fe();return}r=!0,i&&Ee(),this.#s!==null&&Wn(this.#s,()=>{this.#s=null}),this.#x(()=>{this.#y()})},o=e=>{try{i=!0,t?.(e,a),i=!1}catch(e){tt(e,this.#i&&this.#i.parent)}n&&(this.#s=this.#x(()=>{try{return Ln(()=>{var t=nr;t.b=this,t.f|=128,n(this.#e,()=>e,()=>a)})}catch(e){return tt(e,this.#i.parent),null}}))};Qe(()=>{var t;try{t=this.transform_error(e)}catch(e){tt(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>tt(e,this.#i&&this.#i.parent)):o(t)})}};function yt(e,t,n,r){let i=Ye()?Ct:Et;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=nr,c=bt(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){tt(e,s)}xt()}}var d=St();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>Tt(e))).then(u).catch(e=>tt(e,s)).finally(d)}l?l.then(()=>{c(),f(),xt()}):f()}function bt(){var e=nr,t=$n,n=qe,r=Nt;return function(i=!0){rr(e),tr(t),Je(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function xt(e=!0){rr(null),tr(null),Je(null),e&&Nt?.deactivate()}function St(){var e=nr,t=e.b,n=Nt,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function Ct(e){var t=2|y;return nr!==null&&(nr.f|=E),{ctx:qe,deps:null,effects:null,equals:We,f:t,fn:e,reactions:null,rv:0,v:Oe,wv:0,parent:nr,ac:null}}var wt=Symbol(`obsolete`);function Tt(e,t,n){let r=nr;r===null&&ge();var i=void 0,a=nn(Oe),o=!$n,s=new Set;return Nn(()=>{var t=nr,n=m();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==me&&n.reject(e)}).finally(xt)}catch(e){n.reject(e),xt()}var c=Nt;if(o){if(t.f&32768)var l=St();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(wt);else for(let e of s.values())e.reject(wt);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==wt&&(c.activate(),t?(a.f|=ae,an(a,t)):(a.f&8388608&&(a.f^=ae),an(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),Dn(()=>{for(let e of s)e.reject(wt)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function A(e){let t=Ct(e);return ar(t),t}function Et(e){let t=Ct(e);return t.equals=Ke,t}function Dt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n{t.ac.abort(me),t.ac=null}),t.fn!==null&&(t.teardown=f),yr(t,0),zn(t))}function jt(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&br(t)}var Mt=null,Nt=null,Pt=null,Ft=null,It=null,Lt=!1,Rt=!1,zt=null,Bt=null,Vt=0,Ht=1,Ut=class e{id=Ht++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#r=new Set;#i=new Set;#a=0;#o=new Map;#s=null;#c=[];#l=[];#u=new Set;#d=new Set;#f=new Map;#p=new Set;is_fork=!1;#m=!1;constructor(){Mt===null?Mt=this:(Mt.#n=this,this.#t=Mt),Mt=this}#h(){if(this.is_fork)return!0;for(let n of this.#o.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#f.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var r of n.d)rt(r,y),t(r);for(r of n.m)rt(r,b),t(r)}this.#p.add(e)}#g(){this.#e=!0,Vt++>1e3&&(this.#x(),Gt());for(let e of this.#u)this.#d.delete(e),rt(e,y),this.schedule(e);for(let e of this.#d)rt(e,b),this.schedule(e);let t=this.#c;this.#c=[],this.apply();var n=zt=[],r=[],i=Bt=[];for(let e of t)try{this.#_(e,n,r)}catch(t){throw Qt(e),this.#h()||this.discard(),t}if(Nt=null,i.length>0){var a=e.ensure();for(let e of i)a.schedule(e)}if(zt=null,Bt=null,this.#h()){this.#b(r),this.#b(n);for(let[e,t]of this.#f)Zt(e,t);i.length>0&&Nt.#g();return}let o=this.#v();if(o){this.#b(r),this.#b(n),o.#y(this);return}this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),Pt=this,qt(r),qt(n),Pt=null,this.#s?.resolve();var s=Nt;if(this.#a===0&&(this.#c.length===0||s!==null)&&this.#x(),this.#c.length>0)if(s!==null){let e=s;e.#c.push(...this.#c.filter(t=>!e.#c.includes(t)))}else s=this;s!==null&&s.#g()}#_(e,t,n){e.f^=v;for(var r=e.first;r!==null;){var i=r.f,a=(i&96)!=0;if(!(a&&i&1024||i&8192||this.#f.has(r))&&r.fn!==null){a?r.f^=v:i&4?t.push(r):hr(r)&&(i&16&&this.#d.add(r),br(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#v(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#y(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#u,e.#d);let t=e=>{var n=e.reactions;if(n!==null&&!(e.f&2&&!(e.f&6144)))for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#d.delete(i),rt(i,y),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#x(),Nt=this,this.#g()}#b(e){for(var t=0;t{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#u.add(t);for(let e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}settled(){return(this.#s??=m()).promise}static ensure(){if(Nt===null){let t=Nt=new e;!Rt&&!Lt&&Qe(()=>{t.#e||t.flush()})}return Nt}apply(){Ft=null}schedule(e){if(It=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}for(var t=e;t.parent!==null;){t=t.parent;var n=t.f;if(zt!==null&&t===nr&&($n===null||!($n.f&2)))return;if(n&96){if(!(n&1024))return;t.f^=v}}this.#c.push(t)}#x(){if(this.linked){var e=this.#t,t=this.#n;e===null||(e.#n=t),t===null?Mt=e:t.#t=e,this.linked=!1}}};function Wt(e){var t=Lt;Lt=!0;try{var n;for(e&&(Nt!==null&&!Nt.is_fork&&Nt.flush(),n=e());;){if($e(),Nt===null)return n;Nt.flush()}}finally{Lt=t}}function Gt(){try{xe()}catch(e){tt(e,It)}}var Kt=null;function qt(e){var t=e.length;if(t!==0){for(var n=0;n0)){en.clear();for(let e of Kt){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)Kt.has(n)&&(Kt.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||br(n)}}Kt.clear()}}Kt=null}}function Jt(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?Jt(i,t,n,r):e&4194320&&!(e&2048)&&Yt(i,t,r)&&(rt(i,y),Xt(i))}}function Yt(e,t,r){let i=r.get(e);if(i!==void 0)return i;if(e.deps!==null)for(let i of e.deps){if(n.call(t,i))return!0;if(i.f&2&&Yt(i,t,r))return r.set(i,!0),!0}return r.set(e,!1),!1}function Xt(e){Nt.schedule(e)}function Zt(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),rt(e,v);for(var n=e.first;n!==null;)Zt(n,t),n=n.next}}function Qt(e){rt(e,v);for(var t=e.first;t!==null;)Qt(t),t=t.next}var $t=new Set,en=new Map,tn=!1;function nn(e,t){return{f:0,v:e,reactions:null,equals:We,rv:0,wv:0}}function j(e,t){let n=nn(e,t);return ar(n),n}function rn(e,t=!1,n=!0){let r=nn(e);return t||(r.equals=Ke),r}function M(e,t,n=!1){return $n!==null&&(!er||$n.f&131072)&&Ye()&&$n.f&4325394&&(ir===null||!ir.has(e))&&Te(),an(e,n?N(t):t,Bt)}function an(e,t,n=null){if(!e.equals(t)){en.set(e,Zn?t:e.v);var r=Ut.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&Ot(t),Ft===null&&it(t)}e.wv=mr(),cn(e,y,n),Ye()&&nr!==null&&nr.f&1024&&!(nr.f&96)&&(cr===null?lr([e]):cr.push(e)),!r.is_fork&&$t.size>0&&!tn&&on()}return t}function on(){tn=!1;for(let e of $t){e.f&1024&&rt(e,b);let t;try{t=hr(e)}catch{t=!0}t&&br(e)}$t.clear()}function sn(e){M(e,e.v+1)}function cn(e,t,n){var r=e.reactions;if(r!==null)for(var i=Ye(),a=r.length,o=0;o{if(fr===d)return e();var t=$n,n=fr;tr(null),pr(d);var r=e();return tr(t),pr(n),r};return i&&r.set(`length`,j(t.length,u)),new Proxy(t,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&Ce();var i=r.get(t);return i===void 0?f(()=>{var e=j(n.value,u);return r.set(t,e),e}):M(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>j(Oe,u));r.set(t,e),sn(o)}}else M(n,Oe),sn(o);return!0},get(e,n,i){if(n===oe)return t;var o=r.get(n),s=n in e;if(o===void 0&&(!s||a(e,n)?.writable)&&(o=f(()=>j(N(s?e[n]:Oe),u)),r.set(n,o)),o!==void 0){var c=R(o);return c===Oe?void 0:c}return Reflect.get(e,n,i)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&`value`in n){var i=r.get(t);i&&(n.value=R(i))}else if(n===void 0){var a=r.get(t),o=a?.v;if(a!==void 0&&o!==Oe)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,t){if(t===oe)return!0;var n=r.get(t),i=n!==void 0&&n.v!==Oe||Reflect.has(e,t);return(n!==void 0||nr!==null&&(!i||a(e,t)?.writable))&&(n===void 0&&(n=f(()=>j(i?N(e[t]):Oe,u)),r.set(t,n)),R(n)===Oe)?!1:i},set(e,t,n,s){var c=r.get(t),l=t in e;if(i&&t===`length`)for(var d=n;dj(Oe,u)),r.set(d+``,p)):M(p,Oe)}if(c===void 0)(!l||a(e,t)?.writable)&&(c=f(()=>j(void 0,u)),M(c,N(n)),r.set(t,c));else{l=c.v!==Oe;var m=f(()=>N(n));M(c,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(s,n),!l){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&M(g,_+1)}sn(o)}return!0},ownKeys(e){R(o);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==Oe});for(var[n,i]of r)i.v!==Oe&&!(n in e)&&t.push(n);return t},setPrototypeOf(){we()}})}function ln(e){try{if(typeof e==`object`&&e&&oe in e)return e[oe]}catch{}return e}function un(e,t){return Object.is(ln(e),ln(t))}var dn,fn,pn,mn;function hn(){if(dn===void 0){dn=window,fn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;pn=a(t,`firstChild`).get,mn=a(t,`nextSibling`).get,u(e)&&(e[ue]=void 0,e[le]=null,e[de]=void 0,e.__e=void 0),u(n)&&(n[fe]=void 0)}}function gn(e=``){return document.createTextNode(e)}function _n(e){return pn.call(e)}function vn(e){return mn.call(e)}function P(e,t){if(!Ie)return _n(e);var n=_n(Re);if(n===null)n=Re.appendChild(gn());else if(t&&n.nodeType!==3){var r=gn();return n?.before(r),ze(r),r}return t&&Sn(n),ze(n),n}function F(e,t=!1){if(!Ie){var n=_n(e);return n instanceof Comment&&n.data===``?vn(n):n}if(t){if(Re?.nodeType!==3){var r=gn();return Re?.before(r),ze(r),r}Sn(Re)}return Re}function I(e,t=1,n=!1){let r=Ie?Re:e;for(var i;t--;)i=r,r=vn(r);if(!Ie)return r;if(n){if(r?.nodeType!==3){var a=gn();return r===null?i?.after(a):r.before(a),ze(a),a}Sn(r)}return ze(r),r}function yn(e){e.textContent=``}function bn(){return!1}function xn(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function Sn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function Cn(e){nr===null&&($n===null&&be(e),ye()),Zn&&ve(e)}function wn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function Tn(e,t){var n=nr;n!==null&&n.f&8192&&(e|=x);var r={ctx:qe,deps:null,nodes:null,f:e|y|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};Nt?.register_created_effect(r);var i=r;if(e&4)zt===null?Ut.ensure().schedule(r):zt.push(r);else if(t!==null){try{br(r)}catch(e){throw Vn(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=T))}if(i!==null&&(i.parent=n,n!==null&&wn(i,n),$n!==null&&$n.f&2&&!(e&64))){var a=$n;(a.effects??=[]).push(i)}return r}function En(){return $n!==null&&!er}function Dn(e){let t=Tn(8,null);return rt(t,v),t.teardown=e,t}function On(e){Cn(`$effect`);var t=nr.f;if(!$n&&t&32&&qe!==null&&!qe.i){var n=qe;(n.e??=[]).push(e)}else return kn(e)}function kn(e){return Tn(4|ee,e)}function An(e){Ut.ensure();let t=Tn(64|E,e);return()=>{Vn(t)}}function jn(e){Ut.ensure();let t=Tn(64|E,e);return(e={})=>new Promise(n=>{e.outro?Wn(t,()=>{Vn(t),n(void 0)}):(Vn(t),n(void 0))})}function Mn(e){return Tn(4,e)}function Nn(e){return Tn(ie|E,e)}function Pn(e,t=0){return Tn(8|t,e)}function L(e,t=[],n=[],r=[]){yt(r,t,n,t=>{Tn(8,()=>{e(...t.map(R))})})}function Fn(e,t=0){return Tn(16|t,e)}function In(e,t=0){return Tn(_|t,e)}function Ln(e){return Tn(32|E,e)}function Rn(e){var t=e.teardown;if(t!==null){let e=Zn,n=$n;Qn(!0),tr(null);try{t.call(null)}finally{Qn(e),tr(n)}}}function zn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&pt(()=>{e.abort(me)});var r=n.next;n.f&64?n.parent=null:Vn(n,t),n=r}}function Bn(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||Vn(t),t=n}}function Vn(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(Hn(e.nodes.start,e.nodes.end),n=!0),e.f|=w,zn(e,t&&!n),yr(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();Rn(e),e.f^=w,e.f|=S;var i=e.parent;i!==null&&i.first!==null&&Un(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Hn(e,t){for(;e!==null;){var n=e===t?null:vn(e);e.remove(),e=n}}function Un(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Wn(e,t,n=!0){var r=[];Gn(e,r,!0);var i=()=>{n&&Vn(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function Gn(e,t,n){if(!(e.f&8192)){e.f^=x;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;Gn(i,t,o?n:!1)}i=a}}}function Kn(e){qn(e,!0)}function qn(e,t){if(e.f&8192){e.f^=x,e.f&1024||(rt(e,y),Ut.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;qn(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function Jn(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:vn(n);t.append(n),n=i}}var Yn=null,Xn=!1,Zn=!1;function Qn(e){Zn=e}var $n=null,er=!1;function tr(e){$n=e}var nr=null;function rr(e){nr=e}var ir=null;function ar(e){$n!==null&&(ir??=new Set).add(e)}var or=null,sr=0,cr=null;function lr(e){cr=e}var ur=1,dr=0,fr=dr;function pr(e){fr=e}function mr(){return++ur}function hr(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~ne),t&4096){for(var n=e.deps,r=n.length,i=0;ie.wv)return!0}t&512&&Ft===null&&rt(e,v)}return!1}function gr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(ir!==null&&ir.has(e)))for(var i=0;i{e.ac.abort(me)}),e.ac=null);try{e.f|=re;var u=e.fn,d=u();e.f|=C;var f=e.deps,p=Nt?.is_fork;if(or!==null){var m;if(p||yr(e,sr),f!==null&&sr>0)for(f.length=sr+or.length,m=0;m{s.ac.abort(me),s.ac=null,rt(s,y)}),At(s),yr(s,0)}}function yr(e,t){var n=e.deps;if(n!==null)for(var r=t;rn?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?Qe(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function zr(e,t,n,r,i){var a={capture:r,passive:i},o=Rr(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&Dn(()=>{t.removeEventListener(e,o,a)})}function z(e,t,n){(t[Fr]??={})[e]=n}function Br(e){for(var t=0;t{throw e});throw p}}finally{e[Fr]=t,delete e.currentTarget,tr(d),rr(f)}}}var Ur=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function Wr(e){return Ur?.createHTML(e)??e}function Gr(e){var t=xn(`template`);return t.innerHTML=Wr(e.replaceAll(``,``)),t.content}function Kr(e,t){var n=nr;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function B(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(``);return()=>{if(Ie)return Kr(Re,null),Re;i===void 0&&(i=Gr(a?e:``+e),n||(i=_n(i)));var t=r||fn?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=_n(t),s=t.lastChild;Kr(o,s)}else Kr(t,t);return t}}function qr(e,t,n=`svg`){var r=!e.startsWith(``),i=(t&1)!=0,a=`<${n}>${r?e:``+e}`,o;return()=>{if(Ie)return Kr(Re,null),Re;if(!o){var e=_n(Gr(a));if(i)for(o=document.createDocumentFragment();_n(e);)o.appendChild(_n(e));else o=_n(e)}var t=o.cloneNode(!0);if(i){var n=_n(t),r=t.lastChild;Kr(n,r)}else Kr(t,t);return t}}function Jr(e,t){return qr(e,t,`svg`)}function Yr(e=``){if(!Ie){var t=gn(e+``);return Kr(t,t),t}var n=Re;return n.nodeType===3?Sn(n):(n.before(n=gn()),ze(n)),Kr(n,n),n}function Xr(){if(Ie)return Kr(Re,null),Re;var e=document.createDocumentFragment(),t=document.createComment(``),n=gn();return e.append(t,n),Kr(t,n),e}function V(e,t){if(Ie){var n=nr;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=Re),Be();return}e!==null&&e.before(t)}var Zr=!0;function Qr(e){Zr=e}function H(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[fe]??=e.nodeValue)&&(e[fe]=n,e.nodeValue=`${n}`)}function $r(e,t){return ti(e,t)}var ei=new Map;function ti(e,{target:t,anchor:n,props:i={},events:a,context:o,intro:s=!0,transformError:c}){hn();var l=void 0,u=jn(()=>{var u=n??t.appendChild(gn());_t(u,{pending:()=>{}},t=>{O({});var n=qe;if(o&&(n.c=o),a&&(i.$$events=a),Ie&&Kr(t,null),Zr=s,l=e(t,i)||{},Zr=!0,Ie&&(nr.nodes.end=Re,Re===null||Re.nodeType!==8||Re.data!==`]`))throw Ne(),De;k()},c);var d=new Set,f=e=>{for(var n=0;n{for(var e of d)for(let n of[t,document]){var r=ei.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,Hr),r.delete(e),r.size===0&&ei.delete(n)):r.set(e,i)}Lr.delete(f),u!==n&&u.parentNode?.removeChild(u)}});return ni.set(l,u),l}var ni=new WeakMap,ri=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)Kn(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(Kn(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(Vn(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();Jn(r,t),t.append(gn()),this.#n.set(e,{effect:r,fragment:t})}else Vn(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),Wn(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(Vn(n.effect),this.#n.delete(e))};ensure(e,t){var n=Nt,r=bn();if(t&&!this.#t.has(e)&&!this.#n.has(e))if(r){var i=document.createDocumentFragment(),a=gn();i.append(a),this.#n.set(e,{effect:Ln(()=>t(a)),fragment:i})}else this.#t.set(e,Ln(()=>t(this.anchor)));if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else Ie&&(this.anchor=Re),this.#a(n)}};function U(e,t,n=!1){var r;Ie&&(r=Re,Be());var i=new ri(e),a=n?T:0;function o(e,t){if(Ie){var n=Ue(r);if(e!==parseInt(n.substring(1))){var a=He();ze(a),i.anchor=a,Le(!1),i.ensure(e,t),Le(!0);return}}i.ensure(e,t)}Fn(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function ii(e,t){return t}function ai(e,t,n){for(var i=[],a=t.length,o,s=t.length,c=0;c{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;oi(e,r(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else--s},!1)}if(s===0){var l=i.length===0&&n!==null;if(l){var u=n,d=u.parentNode;yn(d),d.append(u),e.items.clear()}oi(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function oi(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i{var t=i();return e(t)?t:t==null?[]:r(t)}),p,m=new Map,h=!0;function g(e){v.effect.f&16384||(v.pending.delete(e),v.fallback=d,li(v,p,c,n,a),d!==null&&(p.length===0?d.f&33554432?(d.f^=te,di(d,null,c)):Kn(d):Wn(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:Fn(()=>{p=R(f);var e=p.length;let t=!1;Ie&&Ue(c)===`[!`!=(e===0)&&(c=He(),ze(c),Le(!1),t=!0);for(var r=new Set,u=Nt,v=bn(),y=0;ys(c)):(d=Ln(()=>s(si??=gn())),d.f|=te)),e>r.size&&_e(``,``,``),Ie&&e>0&&ze(He()),!h)if(m.set(u,r),v){for(let[e,t]of l)r.has(e)||u.skip_effect(t.e);u.oncommit(g),u.ondiscard(_)}else g(u);t&&Le(!0),R(f)}),flags:n,items:l,pending:m,outrogroups:null,fallback:d};h=!1,Ie&&(c=Re)}function ci(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function li(e,t,n,i,a){var o=(i&8)!=0,s=t.length,c=e.items,l=ci(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v0){var E=i&4&&s===0?n:null;if(o){for(v=0;v{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function ui(e,t,n,r,i,a,o,s){var c=o&1?o&16?nn(n):rn(n,!1,!1):null,l=o&2?nn(i):null;return{v:c,i:l,e:Ln(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function di(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=vn(r);if(a.before(r),r===i)return;r=o}}function fi(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function pi(e,t,n=!1,r=!1,i=!1,a=!1){var o=e,s=``;if(n){var c=e;Ie&&(o=ze(_n(c)))}L(()=>{var e=nr;if(s===(s=t()??``)){Ie&&Be();return}if(n&&!Ie){e.nodes=null,c.innerHTML=s,s!==``&&Kr(_n(c),c.lastChild);return}if(e.nodes!==null&&(Hn(e.nodes.start,e.nodes.end),e.nodes=null),s!==``){if(Ie){for(var a=Re.data,l=Be(),u=l;l!==null&&(l.nodeType!==8||l.data!==``);)u=l,l=vn(l);if(l===null)throw Ne(),De;Kr(Re,u),o=ze(l);return}var d=xn(r?`svg`:i?`math`:`template`,r?Ae:i?je:void 0);d.innerHTML=s;var f=r||i?d:d.content;if(Kr(_n(f),f.lastChild),r||i)for(;_n(f);)o.before(_n(f));else o.before(f)}})}function mi(e,t,...n){var r=new ri(e);Fn(()=>{let e=t()??null;r.ensure(e,e&&(t=>e(t,...n)))},T)}function hi(e,t,n){var r;Ie&&(r=Re,Be());var i=new ri(e);Fn(()=>{var e=t()??null;if(Ie&&Ue(r)===`[`!=(e!==null)){var a=He();ze(a),i.anchor=a,Le(!1),i.ensure(e,e&&(t=>n(t,e))),Le(!0);return}i.ensure(e,e&&(t=>n(t,e)))},T)}var gi=()=>performance.now(),_i={tick:e=>requestAnimationFrame(e),now:()=>gi(),tasks:new Set};function vi(){let e=_i.now();_i.tasks.forEach(t=>{t.c(e)||(_i.tasks.delete(t),t.f())}),_i.tasks.size!==0&&_i.tick(vi)}function yi(e){let t;return _i.tasks.size===0&&_i.tick(vi),{promise:new Promise(n=>{_i.tasks.add(t={c:e,f:n})}),abort(){_i.tasks.delete(t)}}}function bi(e,t){pt(()=>{e.dispatchEvent(new CustomEvent(t))})}function xi(e){if(e===`float`)return`cssFloat`;if(e===`offset`)return`cssOffset`;if(e.startsWith(`--`))return e;let t=e.split(`-`);return t.length===1?t[0]:t[0]+t.slice(1).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}function Si(e){let t={},n=e.split(`;`);for(let e of n){let[n,r]=e.split(`:`);if(!n||r===void 0)break;let i=xi(n.trim());t[i]=r.trim()}return t}var Ci=e=>e,wi=null;function Ti(e){wi=e}function Ei(e,t,n){var r=(wi??nr).nodes,i,a,o,s=null;r.a??={element:e,measure(){i=this.element.getBoundingClientRect()},apply(){if(o?.abort(),a=this.element.getBoundingClientRect(),i.left!==a.left||i.right!==a.right||i.top!==a.top||i.bottom!==a.bottom){let e=t()(this.element,{from:i,to:a},n?.());o=Oi(this.element,e,void 0,1,()=>{},()=>{o?.abort(),o=void 0})}},fix(){if(!e.getAnimations().length){var{position:t,width:n,height:r}=getComputedStyle(e);if(t!==`absolute`&&t!==`fixed`){var a=e.style;s={position:a.position,width:a.width,height:a.height,transform:a.transform},a.position=`absolute`,a.width=n,a.height=r;var o=e.getBoundingClientRect();if(i.left!==o.left||i.top!==o.top){var c=`translate(${i.left-o.left}px, ${i.top-o.top}px)`;a.transform=a.transform?`${a.transform} ${c}`:c}}}},unfix(){if(s){var t=e.style;t.position=s.position,t.width=s.width,t.height=s.height,t.transform=s.transform}}},r.a.element=e}function Di(e,t,n,r){var i=(e&1)!=0,a=(e&2)!=0,o=i&&a,s=(e&4)!=0,c=o?`both`:i?`in`:`out`,l,u=t.inert,d=t.style.overflow,f,p;function m(){return pt(()=>l??=n()(t,r?.()??{},{direction:c}))}var h={is_global:s,in(){if(t.inert=u,!i){p?.abort(),p?.reset?.();return}a||f?.abort(),f=Oi(t,m(),p,1,()=>{bi(t,`introstart`)},()=>{bi(t,`introend`),f?.abort(),f=l=void 0,t.style.overflow=d})},out(e){if(!a){e?.(),l=void 0;return}t.inert=!0,p=Oi(t,m(),f,0,()=>{bi(t,`outrostart`)},()=>{bi(t,`outroend`),e?.()})},stop:()=>{f?.abort(),p?.abort()}},g=nr;if((g.nodes.t??=[]).push(h),i&&Zr){var _=s;if(!_){for(var v=g.parent;v&&v.f&65536;)for(;(v=v.parent)&&!(v.f&16););_=!v||(v.f&32768)!=0}_&&Mn(()=>{wr(()=>h.in())})}}function Oi(e,t,n,r,i,a){var o=r===1;if(d(t)){var s,c=!1;return Qe(()=>{c||(s=Oi(e,t({direction:o?`in`:`out`}),n,r,i,a))}),{abort:()=>{c=!0,s?.abort()},deactivate:()=>s.deactivate(),reset:()=>s.reset(),t:()=>s.t()}}if(n?.deactivate(),!t?.duration&&!t?.delay)return i(),a(),{abort:f,deactivate:f,reset:f,t:()=>r};let{delay:l=0,css:u,tick:p,easing:m=Ci}=t;var h=[];if(o&&n===void 0&&(p&&p(0,1),u)){var g=Si(u(0,1));h.push(g,g)}var _=()=>1-r,v=e.animate(h,{duration:l,fill:`forwards`});return v.onfinish=()=>{v.cancel(),i();var o=n?.t()??1-r;n?.abort();var s=r-o,c=t.duration*Math.abs(s),l=[];if(c>0){var d=!1;if(u)for(var f=Math.ceil(c/(1e3/60)),h=0;h<=f;h+=1){var g=o+s*m(h/f),y=Si(u(g,1-g));l.push(y),d||=y.overflow===`hidden`}d&&(e.style.overflow=`hidden`),_=()=>{var e=v.currentTime;return o+s*m(e/c)},p&&yi(()=>{if(v.playState!==`running`)return!1;var e=_();return p(e,1-e),!0})}v=e.animate(l,{duration:c,fill:`forwards`}),v.onfinish=()=>{_=()=>r,p?.(r,1-r),a()}},{abort:()=>{v&&(v.cancel(),v.effect=null,v.onfinish=f)},deactivate:()=>{a=f},reset:()=>{r===0&&p?.(1,0)},t:()=>_()}}function ki(e,t,n,r,i,a){let o=Ie;Ie&&Be();var s=null;Ie&&Re.nodeType===1&&(s=Re,Be());var c=Ie?Re:e,l=nr,u=new ri(c,!1);Fn(()=>{let e=t()||null;var a=i?i():n||e===`svg`?Ae:void 0;if(e===null){u.ensure(null,null),Qr(!0);return}return u.ensure(e,t=>{if(e){if(s=Ie?s:xn(e,a),Kr(s,s),r){var n=null;Ie&&Pr(e)&&s.append(n=document.createComment(``));var i=Ie?_n(s):s.appendChild(gn());Ie&&(i===null?Le(!1):ze(i)),Ti(l),r(s,i),n?.remove(),Ti(null)}nr.nodes.end=s,t.before(s)}Ie&&ze(t)}),Qr(!0),()=>{e&&Qr(!1)}},T),Dn(()=>{Qr(!0)}),o&&(Le(!0),ze(c))}function Ai(e,t){var n=void 0,r;In(()=>{n!==(n=t())&&(r&&=(Vn(r),null),n&&(r=Ln(()=>{Mn(()=>n(e))})))})}function ji(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t=0;){var s=o+a;(o===0||Pi.includes(r[o-1]))&&(s===r.length||Pi.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Ii(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function Li(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function Ri(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(Li)),i&&c.push(...Object.keys(i).map(Li));var l=0,u=-1;let t=e.length;for(var d=0;d{Vi(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),Dn(()=>{t.disconnect()})}function Ui(e,t,n=t){var r=new WeakSet,i=!0;mt(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),Wi);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&Wi(o)}n(a),e.__value=a,Nt!==null&&r.add(Nt)}),Mn(()=>{var a=t();if(e===document.activeElement){var o=Nt;if(r.has(o))return}if(Vi(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=Wi(s),n(a))}e.__value=a,i=!1}),Hi(e)}function Wi(e){return`__value`in e?e.__value:e.value}var Gi=Symbol(`class`),Ki=Symbol(`style`),qi=Symbol(`is custom element`),Ji=Symbol(`is html`),Yi=he?`link`:`LINK`,Xi=he?`input`:`INPUT`,Zi=he?`option`:`OPTION`,Qi=he?`select`:`SELECT`,$i=he?`progress`:`PROGRESS`;function ea(e){if(Ie){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;K(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;K(e,`checked`,null),e.checked=r}}};e[pe]=n,Qe(n),ft()}}function ta(e,t){var n=oa(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==$i)||(e.value=t??``)}function na(e,t){var n=oa(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function ra(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function K(e,t,n,r){var i=oa(e);Ie&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===Yi)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[ce]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&ca(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function ia(e,t,n,r,i=!1,a=!1){if(Ie&&i&&e.nodeName===Xi){var o=e;(o.type===`checkbox`?`defaultChecked`:`defaultValue`)in n||ea(o)}var s=oa(e),c=s[qi],l=!s[Ji];let u=Ie&&c;u&&Le(!1);var d=t||{},f=e.nodeName===Zi;for(var p in t)p in n||(n[p]=null);n.class?n.class=Ni(n.class):(r||n[Gi])&&(n.class=null),n[Ki]&&(n.style??=null);var m=ca(e);if(e.nodeName===Xi&&`type`in n&&(`value`in n||`__value`in n)){var h=n.type;(h!==d.type||h===void 0&&e.hasAttribute(`type`))&&(d.type=h,K(e,`type`,h,a))}for(let i in n){let o=n[i];if(f&&i===`value`&&o==null){e.value=e.__value=``,d[i]=o;continue}if(i===`class`){G(e,e.namespaceURI===`http://www.w3.org/1999/xhtml`,o,r,t?.[Gi],n[Gi]),d[i]=o,d[Gi]=n[Gi];continue}if(i===`style`){Bi(e,o,t?.[Ki],n[Ki]),d[i]=o,d[Ki]=n[Ki];continue}var g=d[i];if(!(o===g&&!(o===void 0&&e.hasAttribute(i)))){d[i]=o;var _=i[0]+i[1];if(_!==`$$`)if(_===`on`){let t={},n=`$$`+i,r=i.slice(2);var v=Dr(r);if(Tr(r)&&(r=r.slice(0,-7),t.capture=!0),!v&&g){if(o!=null)continue;e.removeEventListener(r,d[n],t),d[n]=null}if(v)z(r,e,o),Br([r]);else if(o!=null){function a(e){d[i].call(this,e)}d[n]=Rr(r,e,a,t)}}else if(i===`style`)K(e,i,o);else if(i===`autofocus`)lt(e,!!o);else if(!c&&(i===`__value`||i===`value`&&o!=null))e.value=e.__value=o;else if(i===`selected`&&f)ra(e,o);else{var y=i;l||(y=Ar(y));var b=y===`defaultValue`||y===`defaultChecked`;if(o==null&&!c&&!b)if(s[i]=null,y===`value`||y===`checked`){let n=e,r=t===void 0;if(y===`value`){let e=n.defaultValue;n.removeAttribute(y),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(y),n.defaultChecked=e,n.checked=r?e:!1}}else e.removeAttribute(i);else b||m.includes(y)&&(c||typeof o!=`string`)?(e[y]=o,y in s&&(s[y]=Oe)):typeof o!=`function`&&K(e,y,o,a)}}}return u&&Le(!0),d}function aa(e,t,n=[],r=[],i=[],a,o=!1,s=!1){yt(i,n,r,n=>{var r=void 0,i={},c=e.nodeName===Qi,l=!1;if(In(()=>{var u=t(...n.map(R)),d=ia(e,r,u,a,o,s);l&&c&&`value`in u&&Vi(e,u.value);for(let e of Object.getOwnPropertySymbols(i))u[e]||Vn(i[e]);for(let t of Object.getOwnPropertySymbols(u)){var f=u[t];t.description===`@attach`&&(!r||f!==r[t])&&(i[t]&&Vn(i[t]),i[t]=Ln(()=>Ai(e,()=>f))),d[t]=f}r=d}),c){var u=e;Mn(()=>{Vi(u,r.value,!0),Hi(u)})}l=!0})}function oa(e){return e[le]??={[qi]:e.nodeName.includes(`-`),[Ji]:e.namespaceURI===ke}}var sa=new Map;function ca(e){var t=e.getAttribute(`is`)||e.nodeName,n=sa.get(t);if(n)return n;sa.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var s in r=o(i),r)r[s].set&&s!==`innerHTML`&&s!==`textContent`&&s!==`innerText`&&n.push(s);i=l(i)}return n}function la(e,t,n=t){var r=new WeakSet;mt(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=da(e)?fa(a):a,n(a),Nt!==null&&r.add(Nt),await xr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(Ie&&e.defaultValue!==e.value||wr(t)==null&&e.value)&&(n(da(e)?fa(e.value):e.value),Nt!==null&&r.add(Nt)),Pn(()=>{var n=t();if(e===document.activeElement){var i=Nt;if(r.has(i))return}da(e)&&n===fa(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function ua(e,t,n=t){mt(e,`change`,t=>{n(t?e.defaultChecked:e.checked)}),(Ie&&e.defaultChecked!==e.checked||wr(t)==null)&&n(e.checked),Pn(()=>{e.checked=!!t()})}function da(e){var t=e.type;return t===`number`||t===`range`}function fa(e){return e===``?null:+e}function pa(e,t){return e===t||e?.[oe]===t}function ma(e={},t,n,r){var i=qe.r,a=nr;return Mn(()=>{var o,s;return Pn(()=>{o=s,s=r?.()||[],wr(()=>{pa(n(...s),e)||(t(e,...s),o&&pa(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&pa(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}var ha={get(e,t){if(!e.exclude.has(t))return e.props[t]},set(e,t){return!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.has(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return!e.exclude.has(t)&&t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.has(t))}};function ga(e,t,n){return new Proxy({props:e,exclude:t},ha)}function q(e,t,n,r){var i=!0,o=(n&8)!=0,s=(n&16)!=0,c=r,l=!0,u=void 0,d=()=>s&&i?(u??=Ct(r),R(u)):(l&&(l=!1,c=s?wr(r):r),c);let f;if(o){var p=oe in e||se in e;f=a(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;o?[m,h]=ct(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&Se(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?Ct:Et)(()=>(v=!1,g()));o&&R(y);var b=nr;return(function(e,t){if(arguments.length>0){let n=t?R(y):i&&o?N(e):e;return M(y,n),v=!0,c!==void 0&&(c=n),e}return Zn&&v||b.f&16384?y.v:R(y)})}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);var _a=new Set([`$$slots`,`$$events`,`$$legacy`,`icon`,`class`]),va=Jr(``);function J(e,t){let n=q(t,`icon`,19,()=>[]),r=q(t,`class`,3,``),i=ga(t,_a);var a=va();aa(a,()=>({xmlns:`http://www.w3.org/2000/svg`,width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,class:r(),"aria-hidden":`true`,focusable:`false`,...i}));{let e=(t,n=f)=>{var r=Xr();W(F(r),17,n,ii,(t,n)=>{var r=A(()=>g(R(n),3));let i=()=>R(r)[0],a=()=>R(r)[1],o=()=>R(r)[2];var s=Xr();ki(F(s),i,!0,(t,n)=>{aa(t,()=>({xmlns:`http://www.w3.org/2000/svg`,...a()}));var r=Xr(),i=F(r),s=t=>{e(t,o)},c=A(()=>Array.isArray(o()));U(i,e=>{R(c)&&e(s)}),V(n,r)}),V(t,s)}),V(t,r)};e(P(a),n),D(a)}V(e,a)}var ya=Jr(``);function ba(e){V(e,ya())}var xa={},Sa=[`en`,`pl`],Ca=`PARAGLIDE_LOCALE`,wa=[`custom-dashboard`,`preferredLanguage`,`baseLocale`],Ta=[];globalThis.__paraglide=globalThis.__paraglide??{},globalThis.__paraglide.ssr=globalThis.__paraglide.ssr??{};var Ea=!1,Da=()=>{let e=wa;typeof window<`u`&&window.location?.href&&(e=Ua(window.location.href));let t=Oa(e,typeof window<`u`?window.location?.href:void 0);if(t)return Ea||(Ea=!0,Ma(t,{reload:!1})),t;throw Error(`No locale found. Read the docs https://paraglidejs.com/errors#no-locale-found`)};function Oa(e,t){let n;for(let t of e){if(t===`baseLocale`)n=`en`;else if(t===`preferredLanguage`)n=La();else if(Ga(t)&&Wa.has(t)){let e=Wa.get(t);if(e){let t=e.getLocale();if(t instanceof Promise)continue;if(t!==void 0)return Fa(t)}}let e=Pa(n);if(e)return e}}var ka=new Set([`ar`,`dv`,`fa`,`he`,`ks`,`ku`,`ps`,`sd`,`ug`,`ur`,`yi`]);function Aa(e=Da()){try{let t=new Intl.Locale(e),n=t.getTextInfo?.().direction??t.textInfo?.direction;if(n===`ltr`||n===`rtl`)return n}catch{}let t=e.split(`-`)[0]?.toLowerCase();return ka.has(t??``)?`rtl`:`ltr`}var ja=e=>{e?window.location.href=e:window.location.reload()},Ma=(e,t)=>{let n={reload:!0,...t},r;try{r=Da()}catch{}let i=[],a=wa;typeof window<`u`&&window.location?.href&&(a=Ua(window.location.href));for(let t of a)if(t===`baseLocale`)continue;else if(Ga(t)&&Wa.has(t)){let n=Wa.get(t);if(n){let r=n.setLocale(e);r instanceof Promise&&(r=r.catch(e=>{throw Error(`Custom strategy "${t}" setLocale failed.`,{cause:e})}),i.push(r))}}let o=()=>{n.reload&&window.location&&e!==r&&ja(void 0)};if(i.length)return Promise.all(i).then(()=>{o()});o()},Na=()=>typeof window<`u`?window.location.origin:`http://fallback.com`;function Pa(e){if(typeof e!=`string`)return;let t=e.toLowerCase();for(let e of Sa)if(e.toLowerCase()===t)return e}function Fa(e){let t=Pa(e);if(t)return t;throw Error(`Invalid locale: ${e}. Expected one of: ${Sa.join(`, `)}`)}var Ia=Ca.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);RegExp(`(?:^|;\\s*)${Ia}=([^;]*)`);function La(){if(!navigator?.languages?.length)return;let e=navigator.languages.map(e=>({fullTag:e,baseTag:e.split(`-`)[0]}));for(let t of e){let e=Pa(t.fullTag);if(e)return e;let n=Pa(t.baseTag);if(n)return n}}function Ra(e){return za(e)}function za(e){let t=typeof e==`string`?new URL(e,Na()):new URL(e),n=t.pathname.split(`/`).filter(Boolean);return n.length>0&&Pa(n[0])&&(t.pathname=`/`+n.slice(1).join(`/`)),t}var Ba,Va;function Ha(e){if(Ta.length===0)return;let t=typeof e==`string`?e:e.href;if(Ba===t)return Va;let n=new URL(t,`http://example.com`),r=Ra(n),i=r.href===n.href?[n]:[n,r],a;for(let e of i){for(let t of Ta)if(new xa(t.match,e.href).exec(e.href)){a=t;break}if(a)break}return Ba=t,Va=a,a}function Ua(e){let t=Ha(e);return t&&t.exclude!==!0&&Array.isArray(t.strategy)?t.strategy:wa}var Wa=new Map;function Ga(e){return typeof e==`string`&&/^custom-[A-Za-z0-9_-]+$/.test(e)}function Ka(e,t){if(!Ga(e))throw Error(`Invalid custom strategy: "${e}". Must be a custom strategy following the pattern custom-name.`);Wa.set(e,t)}function qa(){try{return typeof window>`u`?null:window.localStorage}catch{return null}}function Ja(e,t=null){let n=qa();if(!n)return t;try{return n.getItem(e)??t}catch{return t}}function Ya(e,t){let n=qa();if(n)try{n.setItem(e,String(t))}catch{}}var Xa=`gomodel_locale`;Ka(`custom-dashboard`,{getLocale:()=>Ja(Xa)||void 0,setLocale:e=>Ya(Xa,e)});function Za(){let e=Da();document.documentElement.lang=e,document.documentElement.dir=Aa(e)}function Qa(e){return typeof Intl.DisplayNames==`function`&&new Intl.DisplayNames([e],{type:`language`}).of(e)||e}function $a(e,t){return new Intl.NumberFormat(Da(),t).format(e)}function eo(e,t){return new Intl.DateTimeFormat(Da(),t).format(e)}var to=()=>`Cancel`,no=()=>`Anuluj`,ro=((e={},t={})=>(t.locale??Da())===`pl`?no(e):to(e)),io=()=>`Next`,ao=()=>`Dalej`,oo=((e={},t={})=>(t.locale??Da())===`pl`?ao(e):io(e)),so=()=>`Previous`,co=()=>`Wstecz`,lo=((e={},t={})=>(t.locale??Da())===`pl`?co(e):so(e)),uo=()=>`Admin`,fo=()=>`Admin`,po=((e={},t={})=>(t.locale??Da())===`pl`?fo(e):uo(e)),mo=()=>`Overview`,ho=()=>`Przegląd`,go=((e={},t={})=>(t.locale??Da())===`pl`?ho(e):mo(e)),_o=()=>`Providers`,vo=()=>`Dostawcy`,yo=((e={},t={})=>(t.locale??Da())===`pl`?vo(e):_o(e)),bo=()=>`Models`,xo=()=>`Modele`,So=((e={},t={})=>(t.locale??Da())===`pl`?xo(e):bo(e)),Co=()=>`Audit Logs`,wo=()=>`Logi audytowe`,To=((e={},t={})=>(t.locale??Da())===`pl`?wo(e):Co(e)),Eo=()=>`Usage`,Do=()=>`Zużycie`,Oo=((e={},t={})=>(t.locale??Da())===`pl`?Do(e):Eo(e)),ko=()=>`Budgets`,Ao=()=>`Budżety`,jo=((e={},t={})=>(t.locale??Da())===`pl`?Ao(e):ko(e)),Mo=()=>`Rate Limits`,No=()=>`Limity zapytań`,Po=((e={},t={})=>(t.locale??Da())===`pl`?No(e):Mo(e)),Fo=()=>`API Keys`,Io=()=>`Klucze API`,Lo=((e={},t={})=>(t.locale??Da())===`pl`?Io(e):Fo(e)),Ro=()=>`Workflows`,zo=()=>`Workflows`,Bo=((e={},t={})=>(t.locale??Da())===`pl`?zo(e):Ro(e)),Vo=()=>`Guardrails (experimental)`,Ho=()=>`Guardrails (eksperymentalne)`,Uo=((e={},t={})=>(t.locale??Da())===`pl`?Ho(e):Vo(e)),Wo=()=>`MCP Servers`,Go=()=>`Serwery MCP`,Ko=((e={},t={})=>(t.locale??Da())===`pl`?Go(e):Wo(e)),qo=()=>`Settings`,Jo=()=>`Ustawienia`,Yo=((e={},t={})=>(t.locale??Da())===`pl`?Jo(e):qo(e)),Xo=()=>`Sign out`,Zo=()=>`Wyloguj się`,Qo=((e={},t={})=>(t.locale??Da())===`pl`?Zo(e):Xo(e)),$o=()=>`Enter API key`,es=()=>`Wprowadź klucz API`,ts=((e={},t={})=>(t.locale??Da())===`pl`?es(e):$o(e)),ns=()=>`Change API key`,rs=()=>`Zmień klucz API`,is=((e={},t={})=>(t.locale??Da())===`pl`?rs(e):ns(e)),as=()=>`Resize sidebar`,os=()=>`Zmień szerokość paska bocznego`,ss=((e={},t={})=>(t.locale??Da())===`pl`?os(e):as(e)),cs=()=>`Drag to resize; click to collapse or expand`,ls=()=>`Przeciągnij, aby zmienić szerokość; kliknij, aby zwinąć lub rozwinąć`,us=((e={},t={})=>(t.locale??Da())===`pl`?ls(e):cs(e)),ds=()=>`Theme`,fs=()=>`Motyw`,ps=((e={},t={})=>(t.locale??Da())===`pl`?fs(e):ds(e)),ms=()=>`Light theme`,hs=()=>`Jasny motyw`,gs=((e={},t={})=>(t.locale??Da())===`pl`?hs(e):ms(e)),_s=()=>`System theme`,vs=()=>`Motyw systemowy`,ys=((e={},t={})=>(t.locale??Da())===`pl`?vs(e):_s(e)),bs=()=>`Dark theme`,xs=()=>`Ciemny motyw`,Ss=((e={},t={})=>(t.locale??Da())===`pl`?xs(e):bs(e)),Cs=e=>`Change theme (currently ${e?.theme})`,ws=e=>`Zmień motyw (obecnie: ${e?.theme})`,Ts=((e,t={})=>(t.locale??Da())===`pl`?ws(e):Cs(e)),Es=()=>`Language`,Ds=()=>`Język`,Os=((e={},t={})=>(t.locale??Da())===`pl`?Ds(e):Es(e)),ks=()=>`Authentication required for dashboard data.`,As=()=>`Dostęp do danych panelu wymaga uwierzytelnienia.`,js=((e={},t={})=>(t.locale??Da())===`pl`?As(e):ks(e)),Ms=()=>`Dashboard locked`,Ns=()=>`Panel zablokowany`,Ps=((e={},t={})=>(t.locale??Da())===`pl`?Ns(e):Ms(e)),Fs=()=>`Change API key`,Is=()=>`Zmień klucz API`,Ls=((e={},t={})=>(t.locale??Da())===`pl`?Is(e):Fs(e)),Rs=()=>`Close authentication dialog`,zs=()=>`Zamknij okno uwierzytelniania`,Bs=((e={},t={})=>(t.locale??Da())===`pl`?zs(e):Rs(e)),Vs=()=>`Sign in with SSO`,Hs=()=>`Zaloguj się przez SSO`,Us=((e={},t={})=>(t.locale??Da())===`pl`?Hs(e):Vs(e)),Ws=()=>`or use an API key`,Gs=()=>`lub użyj klucza API`,Ks=((e={},t={})=>(t.locale??Da())===`pl`?Gs(e):Ws(e)),qs=()=>`API key`,Js=()=>`Klucz API`,Ys=((e={},t={})=>(t.locale??Da())===`pl`?Js(e):qs(e)),Xs=()=>`Master key or bearer token`,Zs=()=>`Klucz główny lub token Bearer`,Qs=((e={},t={})=>(t.locale??Da())===`pl`?Zs(e):Xs(e)),$s=()=>`Enter a valid API key to continue.`,ec=()=>`Aby kontynuować, wprowadź prawidłowy klucz API.`,tc=((e={},t={})=>(t.locale??Da())===`pl`?ec(e):$s(e)),nc=()=>`Stored in this browser. Requests use the Authorization bearer header.`,rc=()=>`Klucz jest przechowywany w tej przeglądarce. Żądania używają nagłówka Authorization typu Bearer.`,ic=((e={},t={})=>(t.locale??Da())===`pl`?rc(e):nc(e)),ac=()=>`Unlock dashboard`,oc=()=>`Odblokuj panel`,sc=((e={},t={})=>(t.locale??Da())===`pl`?oc(e):ac(e)),cc=()=>`Save API key`,lc=()=>`Zapisz klucz API`,uc=((e={},t={})=>(t.locale??Da())===`pl`?lc(e):cc(e)),dc=()=>`Close confirmation dialog`,fc=()=>`Zamknij okno potwierdzenia`,pc=((e={},t={})=>(t.locale??Da())===`pl`?fc(e):dc(e)),mc=()=>`Dismiss notification`,hc=()=>`Zamknij powiadomienie`,gc=((e={},t={})=>(t.locale??Da())===`pl`?hc(e):mc(e)),_c=()=>`Demo mode notice`,vc=()=>`Informacja o trybie demo`,yc=((e={},t={})=>(t.locale??Da())===`pl`?vc(e):_c(e)),bc=()=>`Public demo`,xc=()=>`Publiczne demo`,Sc=((e={},t={})=>(t.locale??Da())===`pl`?xc(e):bc(e)),Cc=()=>`Do not enter sensitive or personal data. Demo data is reset regularly.`,wc=()=>`Nie wprowadzaj danych poufnych ani osobowych. Dane demonstracyjne są regularnie resetowane.`,Tc=((e={},t={})=>(t.locale??Da())===`pl`?wc(e):Cc(e)),Ec=()=>`GoModel website`,Dc=()=>`Strona GoModel`,Oc=((e={},t={})=>(t.locale??Da())===`pl`?Dc(e):Ec(e)),kc=e=>`Showing ${e?.start}–${e?.end} of ${e?.total}`,Ac=e=>`Wyświetlanie ${e?.start}–${e?.end} z ${e?.total}`,jc=((e,t={})=>(t.locale??Da())===`pl`?Ac(e):kc(e));function Mc(e,t,n){return new Intl.PluralRules(e,n).select(Number(t))}var Nc=e=>Mc(`en`,e?.count,{})===`one`?`Last ${e?.count} day`:`Last ${e?.count} days`,Pc=e=>{let t=Mc(`pl`,e?.count,{});return t===`one`?`Ostatni ${e?.count} dzień`:t===`few`||t===`many`?`Ostatnie ${e?.count} dni`:`Ostatnie ${e?.count} dnia`},Fc=((e,t={})=>(t.locale??Da())===`pl`?Pc(e):Nc(e)),Ic=e=>Mc(`en`,e?.count,{})===`one`?`${e?.count} day`:`${e?.count} days`,Lc=e=>{let t=Mc(`pl`,e?.count,{});return t===`one`?`${e?.count} dzień`:t===`few`||t===`many`?`${e?.count} dni`:`${e?.count} dnia`},Rc=((e,t={})=>(t.locale??Da())===`pl`?Lc(e):Ic(e)),zc=()=>`Today`,Bc=()=>`Dzisiaj`,Vc=((e={},t={})=>(t.locale??Da())===`pl`?Bc(e):zc(e)),Hc=e=>`${e?.start} – ${e?.end}`,Uc=e=>`${e?.start} – ${e?.end}`,Wc=((e,t={})=>(t.locale??Da())===`pl`?Uc(e):Hc(e)),Gc=e=>`${e?.start} – ...`,Kc=e=>`${e?.start} – ...`,qc=((e,t={})=>(t.locale??Da())===`pl`?Kc(e):Gc(e)),Jc=()=>`Select start date`,Yc=()=>`Wybierz datę początkową`,Xc=((e={},t={})=>(t.locale??Da())===`pl`?Yc(e):Jc(e)),Zc=()=>`Select end date`,Qc=()=>`Wybierz datę końcową`,$c=((e={},t={})=>(t.locale??Da())===`pl`?Qc(e):Zc(e)),el=()=>`Previous month`,tl=()=>`Poprzedni miesiąc`,nl=((e={},t={})=>(t.locale??Da())===`pl`?tl(e):el(e)),rl=()=>`Next month`,il=()=>`Następny miesiąc`,al=((e={},t={})=>(t.locale??Da())===`pl`?il(e):rl(e)),ol=()=>`Daily Token Usage`,sl=()=>`Dzienne zużycie tokenów`,cl=((e={},t={})=>(t.locale??Da())===`pl`?sl(e):ol(e)),ll=()=>`Weekly Token Usage`,ul=()=>`Tygodniowe zużycie tokenów`,dl=((e={},t={})=>(t.locale??Da())===`pl`?ul(e):ll(e)),fl=()=>`Monthly Token Usage`,pl=()=>`Miesięczne zużycie tokenów`,ml=((e={},t={})=>(t.locale??Da())===`pl`?pl(e):fl(e)),hl=()=>`Yearly Token Usage`,gl=()=>`Roczne zużycie tokenów`,_l=((e={},t={})=>(t.locale??Da())===`pl`?gl(e):hl(e)),vl=B(``),yl=B(``);function bl(e,t){O(t,!0);let n=q(t,`compact`,3,!1),r=Sa.map(e=>({value:e,label:Qa(e)}));var i=Xr(),a=F(i),o=e=>{var t=yl();let i;var a=P(t),o=P(a,!0);D(a);var s=I(a,2);W(s,21,()=>r,e=>e.value,(e,t)=>{var n=vl(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(s);var c;Hi(s),D(t),L((e,r,a)=>{i=G(t,1,`locale-selector svelte-hr6ahz`,null,i,{"is-compact":n()}),H(o,e),K(s,`aria-label`,r),c!==(c=a)&&(s.value=(s.__value=a)??``,Vi(s,a))},[()=>Os(),()=>Os(),()=>Da()]),z(`change`,s,e=>Ma(e.currentTarget.value)),V(e,t)};U(a,e=>{r.length>1&&e(o)}),V(e,i),k()}Br([`change`]);function xl(e){let t=Number(e);return Number.isFinite(t)?Math.min(240,Math.max(60,Math.round(t))):240}function Sl(e,t,n){return xl(Number(e)+Number(n)-Number(t))}var Cl=new class{#e=j(`system`);get theme(){return R(this.#e)}set theme(e){M(this.#e,e,!0)}#t=j(0);get tick(){return R(this.#t)}set tick(e){M(this.#t,e,!0)}init(){this.theme=Ja(`gomodel_theme`,`system`),this.apply(),window.matchMedia(`(prefers-color-scheme: dark)`).addEventListener(`change`,()=>{this.theme===`system`&&this.tick++})}set(e){this.theme=e,Ya(`gomodel_theme`,e),this.apply(),this.tick++}toggle(){let e=[`light`,`system`,`dark`];this.set(e[(e.indexOf(this.theme)+1)%e.length])}apply(){let e=document.documentElement;this.theme===`system`?e.removeAttribute(`data-theme`):e.setAttribute(`data-theme`,this.theme)}},wl=new class{#e=j(N(240));get width(){return R(this.#e)}set width(e){M(this.#e,e,!0)}get collapsed(){return this.width===60}init(){let e=Ja(`gomodel_sidebar_width`),t=Ja(`gomodel_sidebar_collapsed`)===`true`;this.setWidth(e??(t?60:240))}toggle(){this.setWidth(this.collapsed?240:60,!0)}setWidth(e,t=!1){this.width=xl(e),typeof document<`u`&&document.documentElement.style.setProperty(`--sidebar-width`,`${this.width}px`),t&&(Ya(`gomodel_sidebar_width`,this.width),Ya(`gomodel_sidebar_collapsed`,this.collapsed))}},Tl=new class{#e=j(N([]));get stack(){return R(this.#e)}set stack(e){M(this.#e,e,!0)}#t=1;opened(){let e=this.#t++;return this.stack=[...this.stack,e],e}closed(e){this.stack=this.stack.filter(t=>t!==e)}isTop(e){return this.stack.length>0&&this.stack[this.stack.length-1]===e}get openCount(){return this.stack.length}get anyOpen(){return this.stack.length>0}},El=[[`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`}]],Dl=[[`path`,{d:`M12 5v14`}],[`path`,{d:`m19 12-7 7-7-7`}]],Ol=[[`path`,{d:`m12 19-7-7 7-7`}],[`path`,{d:`M19 12H5`}]],kl=[[`path`,{d:`M5 12h14`}],[`path`,{d:`m12 5 7 7-7 7`}]],Al=[[`path`,{d:`m5 12 7-7 7 7`}],[`path`,{d:`M12 19V5`}]],jl=[[`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`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`}],[`path`,{d:`M12 22V12`}]],Ml=[[`rect`,{width:`16`,height:`20`,x:`4`,y:`2`,rx:`2`}],[`line`,{x1:`8`,x2:`16`,y1:`6`,y2:`6`}],[`line`,{x1:`16`,x2:`16`,y1:`14`,y2:`18`}],[`path`,{d:`M16 10h.01`}],[`path`,{d:`M12 10h.01`}],[`path`,{d:`M8 10h.01`}],[`path`,{d:`M12 14h.01`}],[`path`,{d:`M8 14h.01`}],[`path`,{d:`M12 18h.01`}],[`path`,{d:`M8 18h.01`}]],Nl=[[`path`,{d:`M8 2v4`}],[`path`,{d:`M16 2v4`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`}],[`path`,{d:`M3 10h18`}],[`path`,{d:`M8 14h.01`}],[`path`,{d:`M12 14h.01`}],[`path`,{d:`M16 14h.01`}],[`path`,{d:`M8 18h.01`}],[`path`,{d:`M12 18h.01`}],[`path`,{d:`M16 18h.01`}]],Pl=[[`path`,{d:`M8 2v4`}],[`path`,{d:`M16 2v4`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`}],[`path`,{d:`M3 10h18`}]],Fl=[[`path`,{d:`M13 17V9`}],[`path`,{d:`M18 17V5`}],[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`}],[`path`,{d:`M8 17v-3`}]],Il=[[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`}],[`path`,{d:`M18 17V9`}],[`path`,{d:`M13 17V5`}],[`path`,{d:`M8 17v-3`}]],Ll=[[`path`,{d:`M20 6 9 17l-5-5`}]],Rl=[[`path`,{d:`m6 9 6 6 6-6`}]],zl=[[`path`,{d:`m15 18-6-6 6-6`}]],Bl=[[`path`,{d:`m9 18 6-6-6-6`}]],Vl=[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`}],[`path`,{d:`m9 11 3 3L22 4`}]],Hl=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`m9 12 2 2 4-4`}]],Ul=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8`}],[`path`,{d:`M12 18V6`}]],Wl=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 6v6l4 2`}]],Gl=[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`}]],Kl=[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`}],[`path`,{d:`M3 5V19A9 3 0 0 0 15 21.84`}],[`path`,{d:`M21 5V8`}],[`path`,{d:`M21 12L18 17H22L19 22`}],[`path`,{d:`M3 12A9 3 0 0 0 14.59 14.87`}]],ql=[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`}]],Jl=[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`}],[`path`,{d:`M10 9H8`}],[`path`,{d:`M16 13H8`}],[`path`,{d:`M16 17H8`}]],Yl=[[`path`,{d:`m12 14 4-4`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`}]],Xl=[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`}],[`path`,{d:`M3 3v5h5`}],[`path`,{d:`M12 7v5l4 2`}]],Zl=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 16v-4`}],[`path`,{d:`M12 8h.01`}]],Ql=[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]],$l=[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`}]],eu=[[`path`,{d:`M3 5h.01`}],[`path`,{d:`M3 12h.01`}],[`path`,{d:`M3 19h.01`}],[`path`,{d:`M8 5h13`}],[`path`,{d:`M8 12h13`}],[`path`,{d:`M8 19h13`}]],tu=[[`circle`,{cx:`12`,cy:`16`,r:`1`}],[`rect`,{x:`3`,y:`10`,width:`18`,height:`12`,rx:`2`}],[`path`,{d:`M7 10V7a5 5 0 0 1 10 0v3`}]],nu=[[`path`,{d:`m16 17 5-5-5-5`}],[`path`,{d:`M21 12H9`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`}]],ru=[[`path`,{d:`M15 3h6v6`}],[`path`,{d:`m21 3-7 7`}],[`path`,{d:`m3 21 7-7`}],[`path`,{d:`M9 21H3v-6`}]],iu=[[`path`,{d:`m14 10 7-7`}],[`path`,{d:`M20 10h-6V4`}],[`path`,{d:`m3 21 7-7`}],[`path`,{d:`M4 14h6v6`}]],au=[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`}]],ou=[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`}]],su=[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`}],[`path`,{d:`m15 5 4 4`}]],cu=[[`path`,{d:`M12 22v-5`}],[`path`,{d:`M15 8V2`}],[`path`,{d:`M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z`}],[`path`,{d:`M9 8V2`}]],lu=[[`path`,{d:`M5 12h14`}],[`path`,{d:`M12 5v14`}]],uu=[[`path`,{d:`M12 2v10`}],[`path`,{d:`M18.4 6.6a9 9 0 1 1-12.77.04`}]],du=[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`}],[`path`,{d:`M21 3v5h-5`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`}],[`path`,{d:`M8 16H3v5`}]],fu=[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`}],[`path`,{d:`M3 3v5h5`}]],pu=[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`}]],mu=[[`path`,{d:`m21 21-4.34-4.34`}],[`circle`,{cx:`11`,cy:`11`,r:`8`}]],hu=[[`path`,{d:`m10.852 14.772-.383.923`}],[`path`,{d:`M13.148 14.772a3 3 0 1 0-2.296-5.544l-.383-.923`}],[`path`,{d:`m13.148 9.228.383-.923`}],[`path`,{d:`m13.53 15.696-.382-.924a3 3 0 1 1-2.296-5.544`}],[`path`,{d:`m14.772 10.852.923-.383`}],[`path`,{d:`m14.772 13.148.923.383`}],[`path`,{d:`M4.5 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-.5`}],[`path`,{d:`M4.5 14H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-.5`}],[`path`,{d:`M6 18h.01`}],[`path`,{d:`M6 6h.01`}],[`path`,{d:`m9.228 10.852-.923-.383`}],[`path`,{d:`m9.228 13.148-.923.383`}]],gu=[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`}]],_u=[[`path`,{d:`M14 17H5`}],[`path`,{d:`M19 7h-9`}],[`circle`,{cx:`17`,cy:`17`,r:`3`}],[`circle`,{cx:`7`,cy:`7`,r:`3`}]],vu=[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`}],[`circle`,{cx:`12`,cy:`12`,r:`3`}]],yu=[[`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`}],[`path`,{d:`m9 12 2 2 4-4`}]],bu=[[`path`,{d:`m2 2 20 20`}],[`path`,{d:`M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71`}],[`path`,{d:`M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264`}]],xu=[[`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`}]],Su=[[`path`,{d:`m18 14 4 4-4 4`}],[`path`,{d:`m18 2 4 4-4 4`}],[`path`,{d:`M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22`}],[`path`,{d:`M2 6h1.972a4 4 0 0 1 3.6 2.2`}],[`path`,{d:`M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45`}]],Cu=[[`circle`,{cx:`12`,cy:`12`,r:`4`}],[`path`,{d:`M12 2v2`}],[`path`,{d:`M12 20v2`}],[`path`,{d:`m4.93 4.93 1.41 1.41`}],[`path`,{d:`m17.66 17.66 1.41 1.41`}],[`path`,{d:`M2 12h2`}],[`path`,{d:`M20 12h2`}],[`path`,{d:`m6.34 17.66-1.41 1.41`}],[`path`,{d:`m19.07 4.93-1.41 1.41`}]],wu=[[`path`,{d:`M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z`}],[`circle`,{cx:`7.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]],Tu=[[`line`,{x1:`10`,x2:`14`,y1:`2`,y2:`2`}],[`line`,{x1:`12`,x2:`15`,y1:`14`,y2:`11`}],[`circle`,{cx:`12`,cy:`14`,r:`8`}]],Eu=[[`path`,{d:`M10 11v6`}],[`path`,{d:`M14 11v6`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]],Du=[[`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`}],[`path`,{d:`M12 9v4`}],[`path`,{d:`M12 17h.01`}]],Ou=[[`circle`,{cx:`12`,cy:`8`,r:`5`}],[`path`,{d:`M20 21a8 8 0 0 0-16 0`}]],ku=[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`}],[`circle`,{cx:`12`,cy:`7`,r:`4`}]],Au=[[`path`,{d:`M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1`}],[`path`,{d:`M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4`}]],ju=[[`path`,{d:`m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72`}],[`path`,{d:`m14 7 3 3`}],[`path`,{d:`M5 6v4`}],[`path`,{d:`M19 14v4`}],[`path`,{d:`M10 2v2`}],[`path`,{d:`M7 8H3`}],[`path`,{d:`M21 16h-4`}],[`path`,{d:`M11 3H9`}]],Mu=[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`}]],Nu=[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]],Pu=B(``),Fu=B(`
            `,1);function Iu(e,t){O(t,!0);let n=q(t,`compact`,3,!1),r=[{value:`light`,icon:Cu,label:gs()},{value:`system`,icon:au,label:ys()},{value:`dark`,icon:ou,label:Ss()}],i=A(()=>r.find(e=>e.value===Cl.theme)||r[1]),a=A(()=>Ts({theme:R(i).label}));var o=Fu(),s=F(o);let c;W(s,21,()=>r,e=>e.value,(e,t)=>{var n=Pu();let r;J(P(n),{get icon(){return R(t).icon},class:`theme-icon`}),D(n),L(()=>{r=G(n,1,`theme-btn svelte-1keql7b`,null,r,{active:Cl.theme===R(t).value}),K(n,`aria-pressed`,Cl.theme===R(t).value),K(n,`title`,R(t).label),K(n,`aria-label`,R(t).label)}),z(`click`,n,()=>Cl.set(R(t).value)),V(e,n)}),D(s);var l=I(s,2);let u;J(P(l),{get icon(){return R(i).icon},class:`theme-icon`}),D(l),L(e=>{c=G(s,1,`theme-toggle svelte-1keql7b`,null,c,{"is-compact":n()}),K(s,`aria-label`,e),u=G(l,1,`theme-toggle-mobile svelte-1keql7b`,null,u,{"is-compact":n()}),K(l,`title`,R(a)),K(l,`aria-label`,R(a))},[()=>ps()]),z(`click`,l,()=>Cl.toggle()),V(e,o),k()}Br([`click`]);function Lu(){return typeof window>`u`?`/`:window.GOMODEL_BASE_PATH||`/`}function Ru(e){let t=Lu();return!e||e.charAt(0)!==`/`||e.indexOf(`//`)===0||t===`/`||e===t||e.indexOf(t+`/`)===0?e:t+e}function zu(e){let t=Lu();return t===`/`||!e?e:e===t?`/`:e.indexOf(t+`/`)===0?e.slice(t.length)||`/`:e}function Bu(){return typeof window>`u`?``:window.GOMODEL_VERSION||``}function Vu(){return typeof window>`u`?!1:window.GOMODEL_DEMO_MODE===!0}var Hu=[`overview`,`usage`,`budgets`,`rate-limits`,`models`,`workflows`,`audit-logs`,`guardrails`,`mcp-servers`,`providers-config`,`auth-keys`,`settings`];function Uu(e){return e.startsWith(`/admin/static/`)?`/`+e.slice(14).replace(/^\/+/,``):e}function Wu(e){let t=Uu(zu(e)).replace(/\/$/,``).replace(`/admin/dashboard`,``).replace(/^\//,``).split(`/`),n=t[0];n===`audit`&&(n=`audit-logs`);let r=t[1]||null;return n===`settings`&&r===`guardrails`?{page:`guardrails`,sub:null}:(n=Hu.includes(n)?n:`overview`,{page:n,sub:r})}var Gu=new class{#e=j(`overview`);get page(){return R(this.#e)}set page(e){M(this.#e,e,!0)}#t=j(null);get sub(){return R(this.#t)}set sub(e){M(this.#t,e,!0)}init(){let{page:e,sub:t}=Wu(window.location.pathname);this.page=e,this.sub=t,window.addEventListener(`popstate`,()=>{let{page:e,sub:t}=Wu(window.location.pathname);this.page=e,this.sub=t})}navigate(e,t=null){let n=t?`/`+t:``;history.pushState(null,``,Ru(`/admin/dashboard/`+e+n)),this.page=e,this.sub=t}},Ku=`X-GoModel-Auth-Login`,qu=`X-GoModel-Auth-Logout`,Ju=`X-GoModel-Auth-User`;function Yu(e){let t=String(e||``).trim();return!t.startsWith(`/`)||t.startsWith(`//`)||t.includes(`\\`)?``:t}function Xu(e,t=globalThis.location){let n=Yu(e),r=Yu(t?.pathname);if(!n||!r)return n;let i=String(t?.search||``),a=r+(i.startsWith(`?`)?i:``),o=n.indexOf(`#`),s=o<0?n:n.slice(0,o),c=o<0?``:n.slice(o);return`${s}${s.includes(`?`)?`&`:`?`}return_to=${encodeURIComponent(a)}${c}`}function Zu(e){let t=e?.headers;if(!t||typeof t.has!=`function`)return null;let n={};return t.has(Ku)&&(n.loginURL=Yu(t.get(Ku))),t.has(qu)&&(n.logoutURL=Yu(t.get(qu))),t.has(Ju)&&(n.user=String(t.get(Ju)||``).trim().slice(0,256)),n}var Qu=`gomodel_api_key`;function $u(e){let t=String(e||``).trim();if(/^Bearer\s*$/i.test(t))return``;let n=t.match(/^Bearer\s+(.+)$/i);return n?n[1].trim():t}var Y=new class{#e=j(``);get apiKey(){return R(this.#e)}set apiKey(e){M(this.#e,e,!0)}#t=j(!1);get needsAuth(){return R(this.#t)}set needsAuth(e){M(this.#t,e,!0)}#n=j(!1);get authError(){return R(this.#n)}set authError(e){M(this.#n,e,!0)}#r=j(``);get authErrorMessage(){return R(this.#r)}set authErrorMessage(e){M(this.#r,e,!0)}#i=j(!1);get dialogOpen(){return R(this.#i)}set dialogOpen(e){M(this.#i,e,!0)}#a=j(``);get externalLoginURL(){return R(this.#a)}set externalLoginURL(e){M(this.#a,e,!0)}#o=j(``);get externalLogoutURL(){return R(this.#o)}set externalLogoutURL(e){M(this.#o,e,!0)}#s=j(``);get externalUser(){return R(this.#s)}set externalUser(e){M(this.#s,e,!0)}#c=j(0);get generation(){return R(this.#c)}set generation(e){M(this.#c,e,!0)}#l=j(0);get refreshTick(){return R(this.#l)}set refreshTick(e){M(this.#l,e,!0)}init(){try{this.apiKey=$u(localStorage.getItem(Qu)||``)}catch{this.apiKey=``}}hasApiKey(){return $u(this.apiKey)!==``}save(){this.apiKey=$u(this.apiKey);try{localStorage.setItem(Qu,this.apiKey)}catch{}}selectExternalAuthentication(){this.apiKey=``;try{localStorage.removeItem(Qu)}catch{}this.generation++,this.authError=!1,this.authErrorMessage=``,this.needsAuth=!0}openDialog(){this.dialogOpen=!0}closeDialog(){this.dialogOpen=!1}submit(){let e=$u(this.apiKey);return e?(this.apiKey=e,this.save(),this.generation++,this.authError=!1,this.authErrorMessage=``,this.needsAuth=!1,this.closeDialog(),this.refresh(),!0):(this.apiKey=``,this.authError=!0,this.authErrorMessage=``,this.needsAuth=!0,this.openDialog(),!1)}refresh(){this.refreshTick++}observeResponse(e){let t=Zu(e);t&&(Object.hasOwn(t,`loginURL`)&&(this.externalLoginURL=t.loginURL),Object.hasOwn(t,`logoutURL`)&&(this.externalLogoutURL=t.logoutURL),Object.hasOwn(t,`user`)&&(this.externalUser=t.user))}handleUnauthorized(e,t=``){return typeof e==`number`&&e{r[e.type]=e.value}),r.year+`-`+r.month+`-`+r.day}formatTimestampInTimeZone(e,t){if(e==null)return`-`;let n=new Date(e);if(Number.isNaN(n.getTime()))return`-`;let r=ud(`en-CA`,{timeZone:dd(t)?t:od,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`}).formatToParts(n),i={};return r.forEach(e=>{i[e.type]=e.value}),i.year+`-`+i.month+`-`+i.day+` `+i.hour+`:`+i.minute+`:`+i.second}formatTimestamp(e){return this.formatTimestampInTimeZone(e,this.effectiveTimezone())}currentDateKey(e){return this.dateKeyInTimeZone(e||new Date,this.effectiveTimezone())}dateKeyToDate(e){return td(e)}dateToDateKey(e){return nd(e)}addDaysToDateKey(e,t){return rd(e,t)}todayDate(){return this.dateKeyToDate(this.currentDateKey())}startOfMonthDate(e){let t=e instanceof Date?e:this.todayDate();return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),1))}timeZoneOffsetLabel(e,t){let n=dd(e)?e:od;try{let e=ud(`en-US`,{timeZone:n,hour:`2-digit`,minute:`2-digit`,hourCycle:`h23`,timeZoneName:`longOffset`}).formatToParts(t||new Date).find(e=>e.type===`timeZoneName`);if(!e||!e.value)return`UTC+00:00`;let r=e.value.replace(`GMT`,`UTC`);return r===`UTC`?`UTC+00:00`:r}catch{return`UTC+00:00`}}timeZoneOffsetMinutes(e,t){let n=/^UTC([+-])(\d{2}):(\d{2})$/.exec(this.timeZoneOffsetLabel(e,t));if(!n)return 0;let r=Number(n[2])*60+Number(n[3]);return n[1]===`-`?-r:r}timeZoneOptionLabel(e,t){return e+` (`+this.timeZoneOffsetLabel(e,t)+`)`}detectedTimeZoneLabel(){return this.timeZoneOptionLabel(this.detectedTimezone)}effectiveTimeZoneLabel(){return this.timeZoneOptionLabel(this.effectiveTimezone())}ensureOptions(){if(this.optionsLoaded)return;let e=new Date,t=[];try{typeof Intl.supportedValuesOf==`function`&&(t=Intl.supportedValuesOf(`timeZone`))}catch{t=[]}[od,this.detectedTimezone,this.override].forEach(e=>{e&&t.indexOf(e)===-1&&dd(e)&&t.push(e)}),t=t.filter(e=>dd(e)),t.sort((t,n)=>{let r=this.timeZoneOffsetMinutes(t,e)-this.timeZoneOffsetMinutes(n,e);return r===0?t.localeCompare(n):r}),this.options=t.map(t=>({value:t,label:this.timeZoneOptionLabel(t,e)})),this.optionsLoaded=!0}saveOverride(){let e=qa();if(e)if(this.override&&dd(this.override))try{e.setItem(sd,this.override)}catch{}else{try{e.removeItem(sd)}catch{}this.override=``}this.optionsLoaded=!1,this.ensureOptions()}clearOverride(){let e=qa();if(e)try{e.removeItem(sd)}catch{}this.override=``}calendarTimeZoneText(){let e=this.override?`manual override`:`auto-detected`;return`Activity grouped by `+this.effectiveTimeZoneLabel()+` (`+e+`)`}};function hd(e,t){let n=e&&typeof e==`object`&&e.error&&e.error.message;return(typeof n==`string`?n.trim():``)||t}function gd(e,t){let n=e&&e.data;if(n&&typeof n==`object`){let e=[n.message,n.error,n.error&&typeof n.error==`object`?n.error.message:null];for(let t of e)if(typeof t==`string`&&t.trim())return t.trim()}return t}function _d(){let e={"Content-Type":`application/json`},t=$u(Y.apiKey);return t&&(e.Authorization=`Bearer `+t),e[`X-GoModel-Timezone`]=md.effectiveTimezone(),e}function vd(e,t={}){return fetch(Ru(e),{...t,headers:{..._d(),...t.headers||{}}})}async function yd(e,t,{label:n=e,parse:r=!0}={}){let i=Y.generation,a=await vd(e,t),o=ie.trim()).filter(Boolean);return e.length>0?e:wd}cacheVisible(){if(this.flag(`CACHE_ENABLED`)!==``)return this.booleanFlag(`CACHE_ENABLED`,!1);let e=this.flag(`REDIS_URL`),t=this.flag(`SEMANTIC_CACHE_ENABLED`);return e===``&&t===``||this.booleanFlag(`REDIS_URL`,!1)||this.booleanFlag(`SEMANTIC_CACHE_ENABLED`,!1)}auditVisible(){return this.booleanFlag(`LOGGING_ENABLED`,!0)}usageVisible(){return this.booleanFlag(`USAGE_ENABLED`,!0)}budgetsVisible(){return this.booleanFlag(`BUDGETS_ENABLED`,!0)}rateLimitsVisible(){return this.booleanFlag(`RATE_LIMITS_ENABLED`,!0)}guardrailsVisible(){return this.booleanFlag(`GUARDRAILS_ENABLED`,!0)}mcpVisible(){return this.booleanFlag(`MCP_ENABLED`,!0)}liveLogsVisible(){return this.booleanFlag(`DASHBOARD_LIVE_LOGS_ENABLED`,!0)}fetch(){return this.#n||=this.#r().finally(()=>{this.#n=null}),this.#n}async ensureLoaded(){if(this.#n){await this.#n;return}this.loaded||await this.fetch()}async#r(){let e=typeof AbortController==`function`?new AbortController:null,t=e?setTimeout(()=>e.abort(),1e4):null;try{let t=await bd(`/admin/runtime/config`,{label:`dashboard config`,signal:e?e.signal:void 0});if(t.stale)return;if(!t.ok){this.config={},this.loaded=!1;return}let n=t.data,r={};for(let e of Cd)n&&typeof n==`object`&&!Array.isArray(n)&&n[e]!==void 0&&n[e]!==null&&(r[e]=String(n[e]).trim());this.config=r,this.loaded=!0}catch(e){console.error(`Failed to fetch dashboard config:`,e),this.config={},this.loaded=!1}finally{t!==null&&clearTimeout(t)}}},Ed=[{page:`overview`,label:go,icon:$l},{page:`providers-config`,label:yo,icon:hu},{page:`models`,label:So,icon:jl},{page:`audit-logs`,label:To,icon:Xl},{page:`usage`,label:Oo,icon:Il},{page:`budgets`,label:jo,icon:Au,visible:()=>Td.budgetsVisible()},{page:`rate-limits`,label:Po,icon:Yl,visible:()=>Td.rateLimitsVisible()},{page:`auth-keys`,label:Lo,icon:Ql},{page:`workflows`,label:Bo,icon:Mu},{page:`guardrails`,label:Uo,icon:yu,visible:()=>Td.guardrailsVisible()},{page:`mcp-servers`,label:Ko,icon:cu,visible:()=>Td.mcpVisible()},{page:`settings`,label:Yo,icon:vu}],Dd=B(` `),Od=B(`
            `),kd=B(``),Ad=B(`
            `),jd=B(` `,1);function Md(e,t){O(t,!0);let n=A(()=>Ed.filter(e=>!e.visible||e.visible())),r=j(null),i=0,a=0,o=!1;function s(e){e.button===0&&(e.preventDefault(),M(r,e.pointerId,!0),i=e.clientX,a=wl.width,o=!1,e.currentTarget.setPointerCapture(e.pointerId),document.body.classList.add(`sidebar-resizing`))}function c(e){e.pointerId===R(r)&&(!o&&Math.abs(e.clientX-i)<=4||(o=!0,wl.setWidth(Sl(a,i,e.clientX))))}function l(e){R(r)===null||e.pointerId!==void 0&&e.pointerId!==R(r)||(M(r,null),document.body.classList.remove(`sidebar-resizing`),wl.setWidth(wl.width,!0))}function u(){if(o){o=!1;return}wl.toggle()}function d(e){let t;if(e.key===`ArrowLeft`)t=wl.width-12;else if(e.key===`ArrowRight`)t=wl.width+12;else if(e.key===`Home`)t=60;else if(e.key===`End`)t=240;else if(e.key===`Enter`||e.key===` `){e.preventDefault(),wl.toggle();return}else return;e.preventDefault(),wl.setWidth(t,!0)}var f=jd(),p=F(f);let m;var h=P(p),g=P(h);ba(P(g),{}),D(g);var _=I(g,4),v=P(_,!0);D(_),D(h);var y=I(h,2);W(y,21,()=>R(n),e=>e.page,(e,t)=>{var n=Dd();let r;var i=P(n);J(i,{get icon(){return R(t).icon},class:`nav-icon`});var a=I(i,2),o=P(a,!0);D(a),D(n),L((e,i,a)=>{K(n,`href`,e),r=G(n,1,`nav-item svelte-1nwtzae`,null,r,{active:Gu.page===R(t).page}),K(n,`title`,i),H(o,a)},[()=>Ru(`/admin/dashboard/`+R(t).page),()=>R(t).label(),()=>R(t).label()]),z(`click`,n,e=>{e.preventDefault(),Gu.navigate(R(t).page)}),V(e,n)}),D(y);var b=I(y,2),x=P(b);bl(x,{get compact(){return wl.collapsed}});var S=I(x,2);Iu(S,{get compact(){return wl.collapsed}});var C=I(S,2),w=e=>{var t=kd(),n=P(t),r=e=>{var t=Od(),n=P(t);J(n,{get icon(){return Ou},class:`api-key-open-icon`});var r=I(n,2),i=P(r,!0);D(r),D(t),L(()=>{K(t,`title`,Y.externalUser),H(i,Y.externalUser)}),V(e,t)};U(n,e=>{Y.externalUser&&e(r)});var i=I(n,2),a=P(i);J(a,{get icon(){return nu},class:`api-key-open-icon`});var o=I(a,2),s=P(o,!0);D(o),D(i),D(t),L((e,t,n)=>{K(i,`href`,e),K(i,`aria-label`,t),H(s,n)},[()=>Ru(Y.externalLogoutURL),()=>Qo(),()=>Qo()]),V(e,t)};U(C,e=>{Y.externalLogoutURL&&e(w)});var T=I(C,2),E=e=>{var t=Ad(),n=P(t),r=P(n);J(r,{get icon(){return tu},class:`api-key-open-icon`});var i=I(r,2),a=P(i,!0);D(i),D(n),D(t),L((e,t)=>{K(n,`aria-label`,e),H(a,t)},[()=>Y.needsAuth?ts():is(),()=>Y.needsAuth?ts():is()]),z(`click`,n,()=>Y.openDialog()),V(e,t)},ee=A(()=>Y.needsAuth||Y.hasApiKey());U(T,e=>{R(ee)&&e(E)}),D(b),D(p);var te=I(p,2);L((e,t,n)=>{m=G(p,1,`sidebar svelte-1nwtzae`,null,m,{"sidebar-collapsed":wl.collapsed,"sidebar-resizing":R(r)!==null}),H(v,e),K(te,`title`,t),K(te,`aria-label`,n),K(te,`aria-valuemin`,60),K(te,`aria-valuemax`,240),K(te,`aria-valuenow`,wl.width)},[()=>po(),()=>us(),()=>ss()]),z(`pointerdown`,te,s),z(`pointermove`,te,c),z(`pointerup`,te,l),zr(`pointercancel`,te,l),zr(`lostpointercapture`,te,l),z(`keydown`,te,d),z(`click`,te,u),V(e,f),k()}Br([`click`,`pointerdown`,`pointermove`,`pointerup`,`keydown`]);var Nd=B(``);function Pd(e,t){O(t,!0);let n=q(t,`label`,3,`Close`),r=q(t,`class`,3,``),i=q(t,`iconClass`,3,`table-icon-svg`),a=q(t,`disabled`,3,!1),o=q(t,`el`,15,null);var s=Nd();J(P(s),{get icon(){return Nu},get class(){return i()}}),D(s),ma(s,e=>o(e),()=>o()),L(()=>{G(s,1,Ni([`dialog-close-btn`,r()]),`svelte-11l1bb5`),K(s,`aria-label`,n()),s.disabled=a()}),z(`click`,s,function(...e){t.onclick?.apply(this,e)}),V(e,s),k()}Br([`click`]);function Fd(e){return t=>{let n=n=>{t.contains(n.target)||e()},r=t=>{t.key===`Escape`&&e()};return document.addEventListener(`click`,n,!0),window.addEventListener(`keydown`,r),()=>{document.removeEventListener(`click`,n,!0),window.removeEventListener(`keydown`,r)}}}function Id(e=`[data-modal-autofocus]`){return t=>{let n=t.querySelector(e);n&&typeof n.focus==`function`&&n.focus()}}var Ld=B(`
            `,1);function Rd(e,t){O(t,!0);let n=q(t,`open`,3,!1),r=q(t,`variant`,3,`editor`),i=q(t,`closeOnBackdrop`,3,!0),a=A(()=>r()===`auth`?`auth-dialog-backdrop`:`editor-modal-backdrop`),o=A(()=>r()===`auth`?`auth-dialog-shell`:`editor-modal-shell`);On(()=>{if(!n())return;let e=wr(()=>Tl.opened()),r=n=>{n.key===`Escape`&&Tl.isTop(e)&&t.onclose?.()};return window.addEventListener(`keydown`,r),()=>{Tl.closed(e),window.removeEventListener(`keydown`,r)}});function s(e){i()&&e.target===e.currentTarget&&t.onclose?.()}var c=Xr(),l=F(c),u=e=>{var n=Ld(),r=F(n),i=I(r,2);mi(P(i),()=>t.children??f),D(i),Ai(i,Id),L(()=>{G(r,1,Ni(R(a)),`svelte-17e0w4c`),G(i,1,Ni(R(o)),`svelte-17e0w4c`)}),z(`click`,i,s),V(e,n)};U(l,e=>{n()&&e(u)}),V(e,c),k()}Br([`click`]);var zd=B(`
            `,1),Bd=B(``),Vd=B(``);function Hd(e,t){O(t,!0),Rd(e,{get open(){return Y.dialogOpen},variant:`auth`,onclose:()=>Y.closeDialog(),children:(e,t)=>{var n=Vd(),r=P(n),i=P(r),a=P(i),o=P(a,!0);D(a),D(i);var s=I(i,2);{let e=A(()=>Bs());Pd(s,{get label(){return R(e)},onclick:()=>Y.closeDialog(),class:`auth-dialog-close`,iconClass:``})}D(r);var c=I(r,2),l=P(c),u=e=>{var t=zd(),n=F(t),r=P(n);J(r,{get icon(){return Ql}});var i=I(r,2),a=P(i,!0);D(i),D(n);var o=I(n,2),s=P(o),c=P(s,!0);D(s),D(o),L((e,t,r)=>{K(n,`href`,e),H(a,t),H(c,r)},[()=>Xu(Ru(Y.externalLoginURL)),()=>Us(),()=>Ks()]),z(`click`,n,()=>Y.selectExternalAuthentication()),V(e,t)};U(l,e=>{Y.externalLoginURL&&e(u)});var d=I(l,2),f=P(d);J(f,{get icon(){return tu},class:`auth-dialog-input-icon`});var p=I(f,2);ea(p),D(d);var m=I(d,2),h=e=>{var t=Bd(),n=P(t,!0);D(t),L(e=>H(n,e),[()=>Y.authErrorMessage||tc()]),V(e,t)};U(m,e=>{Y.authError&&e(h)});var g=I(m,2),_=P(g,!0);D(g);var v=I(g,2),y=P(v),b=P(y);J(b,{get icon(){return Ll},class:`auth-dialog-submit-icon`});var x=I(b,2),S=P(x,!0);D(x),D(y),D(v),D(c),D(n),L((e,t,n,r,i)=>{H(o,e),K(p,`placeholder`,t),K(p,`aria-label`,n),H(_,r),H(S,i)},[()=>Y.needsAuth?Ps():Ls(),()=>Qs(),()=>Ys(),()=>ic(),()=>Y.needsAuth?sc():uc()]),zr(`submit`,c,e=>{e.preventDefault(),Y.submit()}),la(p,()=>Y.apiKey,e=>Y.apiKey=e),V(e,n)},$$slots:{default:!0}}),k()}Br([`click`]);function Ud(){return{open:!1,title:``,titleId:`typedConfirmationDialogTitle`,inputId:`typed-confirmation-input`,message:``,requiredText:``,value:``,confirmLabel:`Confirm`,icon:Du,dialogClass:``,loading:!1,onConfirm:null,onClose:null}}var Wd=new class{#e=j(N(Ud()));get state(){return R(this.#e)}set state(e){M(this.#e,e,!0)}#t=j(``);get error(){return R(this.#t)}set error(e){M(this.#t,e,!0)}open(e){this.error=``,this.state={...Ud(),open:!0,...e||{}}}close(){let e=this.state;typeof e.onClose==`function`&&e.onClose(),this.state=Ud(),this.error=``}ready(){return String(this.state.value||``).trim().toLowerCase()===String(this.state.requiredText||``).trim().toLowerCase()}inputLabel(){return`Type `+String(this.state.requiredText||``).trim()+` to confirm`}async submit(){if(!this.ready()){this.error=this.inputLabel()+`.`;return}if(typeof this.state.onConfirm==`function`){this.state.loading=!0;try{await this.state.onConfirm()}finally{this.state.loading=!1}}}},Gd=B(`

            `),Kd=B(``),qd=B(`

            `);function Jd(e,t){O(t,!0);let n=A(()=>Wd.state);Rd(e,{get open(){return R(n).open},variant:`auth`,onclose:()=>Wd.close(),children:(e,t)=>{var r=qd(),i=P(r),a=P(i),o=P(a,!0);D(a);var s=I(a,2);{let e=A(()=>pc());Pd(s,{get label(){return R(e)},onclick:()=>Wd.close(),class:`auth-dialog-close`,iconClass:``})}D(i);var c=I(i,2),l=P(c),u=e=>{var t=Gd(),r=P(t,!0);D(t),L(()=>H(r,R(n).message)),V(e,t)};U(l,e=>{R(n).message&&e(u)});var d=I(l,2),f=P(d),p=P(f,!0);D(f);var m=I(f,2);ea(m),D(d);var h=I(d,2),g=e=>{var t=Kd(),n=P(t,!0);D(t),L(()=>H(n,Wd.error)),V(e,t)};U(h,e=>{Wd.error&&e(g)});var _=I(h,2),v=P(_),y=P(v,!0);D(v);var b=I(v,2),x=P(b);J(x,{get icon(){return R(n).icon},class:`form-action-icon`});var S=I(x,2),C=P(S,!0);D(S),D(b),D(_),D(c),D(r),L((e,t,i)=>{G(r,1,`auth-dialog ${R(n).dialogClass??``}`),K(r,`aria-labelledby`,R(n).titleId),K(a,`id`,R(n).titleId),H(o,R(n).title),K(f,`for`,R(n).inputId),H(p,e),K(m,`id`,R(n).inputId),H(y,t),b.disabled=i,H(C,R(n).confirmLabel)},[()=>Wd.inputLabel(),()=>ro(),()=>R(n).loading||!Wd.ready()]),zr(`submit`,c,e=>{e.preventDefault(),Wd.submit()}),la(m,()=>Wd.state.value,e=>Wd.state.value=e),z(`click`,v,()=>Wd.close()),V(e,r)},$$slots:{default:!0}}),k()}Br([`click`]);var Yd=e=>e;function Xd(e){let t=e-1;return t*t*t+1}function Zd(e){let t=typeof e==`string`&&e.match(/^\s*(-?[\d.]+)([^\s]*)\s*$/);return t?[parseFloat(t[1]),t[2]||`px`]:[e,`px`]}function Qd(e,{delay:t=0,duration:n=400,easing:r=Yd}={}){let i=+getComputedStyle(e).opacity;return{delay:t,duration:n,easing:r,css:e=>`opacity: ${e*i}`}}function $d(e,{delay:t=0,duration:n=400,easing:r=Xd,x:i=0,y:a=0,opacity:o=0}={}){let s=getComputedStyle(e),c=+s.opacity,l=s.transform===`none`?``:s.transform,u=c*(1-o),[d,f]=Zd(i),[p,m]=Zd(a);return{delay:t,duration:n,easing:r,css:(e,t)=>` - transform: ${l} translate(${(1-e)*d}${f}, ${(1-e)*p}${m}); - opacity: ${c-u*t}`}}function ef(e,{delay:t=0,duration:n=400,easing:r=Xd,axis:i=`y`}={}){let a=getComputedStyle(e),o=+a.opacity,s=i===`y`?`height`:`width`,c=parseFloat(a[s]),l=i===`y`?[`top`,`bottom`]:[`left`,`right`],u=l.map(e=>`${e[0].toUpperCase()}${e.slice(1)}`),d=parseFloat(a[`padding${u[0]}`]),f=parseFloat(a[`padding${u[1]}`]),p=parseFloat(a[`margin${u[0]}`]),m=parseFloat(a[`margin${u[1]}`]),h=parseFloat(a[`border${u[0]}Width`]),g=parseFloat(a[`border${u[1]}Width`]);return{delay:t,duration:n,easing:r,css:e=>`overflow: hidden;opacity: ${Math.min(e*20,1)*o};${s}: ${e*c}px;padding-${l[0]}: ${e*d}px;padding-${l[1]}: ${e*f}px;margin-${l[0]}: ${e*p}px;margin-${l[1]}: ${e*m}px;border-${l[0]}-width: ${e*h}px;border-${l[1]}-width: ${e*g}px;min-${s}: 0`}}function tf(e){return--e*e*(2.70158*e+1.70158)+1}function nf(e){let t=e-1;return t*t*t+1}var rf=5e3,af=8e3,of=new class{#e=j(N([]));get toasts(){return R(this.#e)}set toasts(e){M(this.#e,e,!0)}#t=0;#n=new Map;success(e){this.#r(`success`,e,rf)}error(e){this.#r(`error`,e,af)}dismiss(e){let t=this.#n.get(e);t&&(clearTimeout(t),this.#n.delete(e)),this.toasts=this.toasts.filter(t=>t.id!==e)}#r(e,t,n){let r=String(t||``).trim();if(!r)return;let i=this.toasts.find(t=>t.kind===e&&t.text===r);i&&this.dismiss(i.id);let a=++this.#t;this.toasts=[...this.toasts,{id:a,kind:e,text:r}],this.#n.set(a,setTimeout(()=>this.dismiss(a),n))}},sf=B(`
            `),cf=B(`
            `);function lf(e,t){O(t,!0);var n=cf();W(n,21,()=>of.toasts,e=>e.id,(e,t)=>{var n=sf();let r;var i=P(n),a=P(i,!0);D(i);var o=I(i,2);D(n),L(e=>{r=G(n,1,`flash-toast svelte-1i257xg`,null,r,{"flash-toast-success":R(t).kind===`success`,"flash-toast-error":R(t).kind===`error`}),K(n,`role`,R(t).kind===`error`?`alert`:`status`),K(n,`aria-live`,R(t).kind===`error`?`assertive`:`polite`),H(a,R(t).text),K(o,`aria-label`,e)},[()=>gc()]),z(`click`,o,()=>of.dismiss(R(t).id)),Di(1,n,()=>$d,()=>({y:-24,duration:360,easing:tf})),Di(2,n,()=>Qd,()=>({duration:150})),V(e,n)}),D(n),V(e,n),k()}Br([`click`]);var uf=B(``);function df(e,t){O(t,!0);var n=Xr(),r=F(n),i=e=>{var t=uf(),n=I(P(t),2),r=P(n),i=P(r,!0);D(r);var a=I(r,2),o=P(a,!0);D(a),D(n);var s=I(n,2);D(t),L((e,n,r,a)=>{K(t,`aria-label`,e),H(i,n),H(o,r),K(s,`aria-label`,a)},[()=>yc(),()=>Sc(),()=>Tc(),()=>Oc()]),V(e,t)},a=A(()=>Vu());U(r,e=>{R(a)&&e(i)}),V(e,n),k()}function ff(e){return String(e||``).split(`,`).map(e=>e.trim()).filter(e=>e)}function pf(e){if(e==null||e===``)return`Not captured`;if(typeof e==`string`){let t=e.trim();if(t.startsWith(`{`)&&t.endsWith(`}`)||t.startsWith(`[`)&&t.endsWith(`]`))try{return JSON.stringify(JSON.parse(t),null,2)}catch{return e}return e}try{return JSON.stringify(e,null,2)}catch{return String(e)}}function mf(e){return e==null||e===void 0?`-`:e.toLocaleString()}function hf(e){if(e==null)return`---`;let t=Number(e);return Number.isFinite(t)?t>0&&t<1e-4?`<$0.0001`:`$`+t.toFixed(4).replace(/(\.\d{2}\d*?)0+$/,`$1`):`---`}function gf(e){return e==null||e===void 0?`—`:`$`+e.toFixed(2)}function _f(e){return e==null||e===void 0?`—`:e<.01?`$`+e.toFixed(6):`$`+e.toFixed(4)}function vf(e){if(e==null||e===``)return`-`;let t=Number(e);if(!Number.isFinite(t))return`-`;let n=Math.abs(t),r=[{threshold:1e9,suffix:`B`},{threshold:1e6,suffix:`M`},{threshold:1e3,suffix:`K`}];for(let e=0;e=i.threshold){let n=t/i.threshold;return Math.abs(Number(n.toFixed(1)))>=1e3&&e>0&&(i=r[e-1],n=t/i.threshold),n.toFixed(1).replace(/\.0$/,``)+i.suffix}}return String(t)}function yf(e,t){let n=t==null||t===``?NaN:Number(t),r=Number.isFinite(n)?mf(n):`-`;return String(e||`Tokens`)+`: `+r}function bf(e){return e?typeof e==`string`?e:e.getUTCFullYear()+`-`+String(e.getUTCMonth()+1).padStart(2,`0`)+`-`+String(e.getUTCDate()).padStart(2,`0`):``}function xf(e){if(!e)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:t.getUTCFullYear()+`-`+String(t.getUTCMonth()+1).padStart(2,`0`)+`-`+String(t.getUTCDate()).padStart(2,`0`)}function Sf(e){if(!e)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:t.getUTCFullYear()+`-`+String(t.getUTCMonth()+1).padStart(2,`0`)+`-`+String(t.getUTCDate()).padStart(2,`0`)+` `+String(t.getUTCHours()).padStart(2,`0`)+`:`+String(t.getUTCMinutes()).padStart(2,`0`)+`:`+String(t.getUTCSeconds()).padStart(2,`0`)+` UTC`}function Cf(e){return String(e&&e.provider||``).trim()}function wf(e){return String(e&&e.provider_name||``).trim()||Cf(e)}function Tf(e,t){let n=String(t||``).trim();if(!n)return`-`;let r=wf(e);return!r||n===r||n.startsWith(r+`/`)?n:r+`/`+n}function Ef(e){return Tf(e,e&&e.model)}function Df(e){return Tf(e,e&&e.resolved_model)}function Of(e){let t=String(e&&(e.requested_model||e.model)||``).trim();if(!e)return t;let n=String(e.data&&e.data.failover&&e.data.failover.target_model||``).trim();if(n&&n!==t)return t+` ⮕ `+n;if(e.alias_used&&e.resolved_model){let n=Df(e);if(n&&n!==`-`&&n!==t)return t+` ⮕ `+n}return t}var kf=`gomodel_date_range`,Af=1;function jf(e){return/^[1-9]\d*$/.test(String(e??``))}function Mf({selectedPreset:e,startKey:t,endKey:n,followsToday:r}){return e&&jf(e)?{v:Af,mode:`preset`,days:String(e)}:e?null:id(t)&&id(n)?{v:Af,mode:`custom`,start:t,end:n,follow:r===!0}:null}function Nf(e){let t=e;if(typeof e==`string`)try{t=JSON.parse(e)}catch{return null}return!t||typeof t!=`object`?null:t.mode===`preset`?jf(t.days)?{mode:`preset`,days:String(t.days)}:null:t.mode===`custom`&&id(t.start)&&id(t.end)&&t.start<=t.end?{mode:`custom`,start:t.start,end:t.end,follow:t.follow===!0}:null}function Pf(e,t,n){let r=ad(e,t);return r<1||!id(n)?{start:e,end:t}:{start:rd(n,-(r-1)),end:n}}function Ff(e){return Fc({count:Number(e)})}function If(e,t){return e===t?Vc():eo(new Date(e+`T00:00:00Z`),{day:`numeric`,month:`short`,year:`numeric`,timeZone:`UTC`})}function Lf({selectedPreset:e,startKey:t,endKey:n,todayKey:r}){if(e)return Ff(e);if(id(t)&&id(n)){if(t>n)return Ff(`30`);let e=If(t,r);return t===n?e:Wc({start:e,end:If(n,r)})}return id(t)?qc({start:If(t,r)}):Ff(`30`)}function Rf({selectedPreset:e,startKey:t,endKey:n,followsToday:r,todayKey:i}){if(e)return Ff(e);if(!id(t)||!id(n)||t>n)return``;let a=ad(t,n);return r||n===i?a===1?Vc():Ff(a):Rc({count:a})}function zf(e){switch(e){case`weekly`:return dl();case`monthly`:return ml();case`yearly`:return _l();default:return cl()}}var Bf=6e4,Vf=new class{#e=j(N(`30`));get days(){return R(this.#e)}set days(e){M(this.#e,e,!0)}#t=j(N(`30`));get selectedPreset(){return R(this.#t)}set selectedPreset(e){M(this.#t,e,!0)}#n=j(null);get customStartDate(){return R(this.#n)}set customStartDate(e){M(this.#n,e,!0)}#r=j(null);get customEndDate(){return R(this.#r)}set customEndDate(e){M(this.#r,e,!0)}#i=j(!1);get followsToday(){return R(this.#i)}set followsToday(e){M(this.#i,e,!0)}#a=j(`daily`);get interval(){return R(this.#a)}set interval(e){M(this.#a,e,!0)}#o=j(0);get syncTick(){return R(this.#o)}set syncTick(e){M(this.#o,e,!0)}init(){this.restore(),this.syncToToday(),typeof setInterval==`function`&&setInterval(()=>this.syncToToday(),Bf)}queryStr(){return this.customStartDate&&this.customEndDate?`start_date=`+bf(this.customStartDate)+`&end_date=`+bf(this.customEndDate):`days=`+this.days}selectPreset(e){this.selectedPreset=e,this.customStartDate=null,this.customEndDate=null,this.followsToday=!1,this.days=e,this.persist()}selectStart(e){this.selectedPreset=null,this.customStartDate=e,this.customEndDate&&this.customEndDatet.category===e);return t?t.count:0}get filteredModels(){if(!this.filter)return this.models;let e=this.filter.toLowerCase();return this.models.filter(t=>(t.model?.id??``).toLowerCase().includes(e)||(t.provider_name??``).toLowerCase().includes(e)||(t.provider_type??``).toLowerCase().includes(e)||(t.selector??``).toLowerCase().includes(e)||(t.model?.owned_by??``).toLowerCase().includes(e)||(t.model?.metadata?.modes??[]).join(`,`).toLowerCase().includes(e)||(t.model?.metadata?.categories??[]).join(`,`).toLowerCase().includes(e))}},Uf=B(``);function Wf(e,t){O(t,!0);var n=Xr(),r=F(n),i=e=>{var t=Uf(),n=P(t),r=P(n,!0);D(n);var i=I(n,2),a=P(i,!0);D(i),D(t),L((e,t)=>{H(r,e),H(a,t)},[()=>js(),()=>ts()]),z(`click`,i,()=>Y.openDialog()),V(e,t)};U(r,e=>{Y.authError&&e(i)}),V(e,n),k()}Br([`click`]);function Gf(){return{total_requests:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,total_input_cost:null,total_output_cost:null,total_cost:null}}function Kf(){return{summary:{total_hits:0,exact_hits:0,semantic_hits:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,total_saved_cost:null},daily:[]}}var qf=new class{#e=j(N(Gf()));get summary(){return R(this.#e)}set summary(e){M(this.#e,e,!0)}#t=j(N([]));get daily(){return R(this.#t)}set daily(e){M(this.#t,e,!0)}#n=j(N(Kf()));get cacheOverview(){return R(this.#n)}set cacheOverview(e){M(this.#n,e,!0)}#r=j(!1);get loading(){return R(this.#r)}set loading(e){M(this.#r,e,!0)}#i=null;#a=null;cacheAnalyticsEnabled(){return Td.cacheVisible()}async fetchUsage(){this.#i&&this.#i.abort();let e=new AbortController;this.#i=e,this.loading=!0;try{let t=Vf.queryStr()+`&interval=`+Vf.interval,[n,r]=await Promise.all([bd(`/admin/usage/summary?`+t,{label:`usage summary`,signal:e.signal}),bd(`/admin/usage/daily?`+t,{label:`usage daily`,signal:e.signal})]);if(n.stale||r.stale||e.signal.aborted)return;if(!n.ok||!r.ok){this.summary=Gf(),this.daily=[],this.cacheOverview=Kf();return}this.summary=n.data||Gf(),this.daily=Array.isArray(r.data)?r.data:[]}catch(e){if(Sd(e))return;console.error(`Failed to fetch usage:`,e),this.summary=Gf(),this.daily=[]}finally{this.#i===e&&(this.#i=null,this.loading=!1)}}async fetchCacheOverview(e=``){if(await Td.ensureLoaded(),!this.cacheAnalyticsEnabled()){this.cacheOverview=Kf();return}this.#a&&this.#a.abort();let t=new AbortController;this.#a=t;try{let n=await bd(`/admin/cache/overview?`+(Vf.queryStr()+`&interval=`+Vf.interval+e),{label:`cache overview`,signal:t.signal});if(n.stale||t.signal.aborted)return;if(!n.ok){this.cacheOverview=Kf();return}let r=n.data&&typeof n.data==`object`?n.data:Kf();r.summary||=Kf().summary,Array.isArray(r.daily)||(r.daily=[]),this.cacheOverview=r}catch(e){if(Sd(e))return;console.error(`Failed to fetch cache overview:`,e),this.cacheOverview=Kf()}finally{this.#a===t&&(this.#a=null)}}};function Jf(e,t,n){let r=e.getUTCFullYear(),i=e.getUTCMonth()+t,a=new Date(Date.UTC(r,i,1)),o=new Date(Date.UTC(r,i+1,0)),s=(a.getUTCDay()+6)%7,c=[],l=new Date(Date.UTC(r,i,0));for(let e=s-1;e>=0;e--){let t=l.getUTCDate()-e,a=new Date(Date.UTC(r,i-1,t));c.push({day:t,date:a,current:!1,key:`p-`+n(a)})}for(let e=1;e<=o.getUTCDate();e++){let t=new Date(Date.UTC(r,i,e));c.push({day:e,date:t,current:!0,key:`c-`+n(t)})}let u=42-c.length;for(let e=1;e<=u;e++){let t=new Date(Date.UTC(r,i+1,e));c.push({day:e,date:t,current:!1,key:`n-`+n(t)})}return c}function Yf(e,t,n){let r=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+t,1));return n&&r.getTime()>n.getTime()?e:r}function Xf(e,t){return e.getUTCFullYear()===t.getUTCFullYear()&&e.getUTCMonth()===t.getUTCMonth()}var Zf=B(``),Qf=B(``),$f=B(` `),ep=B(``),tp=B(`
            `);function np(e,t){O(t,!0);let n=q(t,`offset`,3,0),r=A(()=>Jf(t.calendarMonth,n(),e=>md.dateToDateKey(e))),i=A(()=>Xf(t.calendarMonth,md.todayDate())),a=A(()=>eo(new Date(Date.UTC(t.calendarMonth.getUTCFullYear(),t.calendarMonth.getUTCMonth()+n(),1)),{month:`long`,year:`numeric`,timeZone:`UTC`})),o=Array.from({length:7},(e,t)=>eo(new Date(Date.UTC(2024,0,1+t)),{weekday:`short`,timeZone:`UTC`})),s=e=>md.dateToDateKey(e.date),c=e=>s(e)>md.currentDateKey(),l=e=>e.current&&s(e)===md.currentDateKey();function u(e,t){let n=t===`start`?Vf.rangeStart():Vf.rangeEnd();return e.current&&!!n&&s(e)===md.dateToDateKey(n)}function d(e){let t=Vf.rangeStart(),n=Vf.rangeEnd();return!e.current||!t||!n?!1:s(e)>=md.dateToDateKey(t)&&s(e)<=md.dateToDateKey(n)}var f=tp(),p=P(f),m=P(p);let h;var g=I(m,2),_=P(g,!0);D(g);var v=I(g,2),y=e=>{V(e,Zf())},b=e=>{var n=Qf();L(e=>{n.disabled=R(i),K(n,`aria-label`,e)},[()=>al()]),z(`click`,n,function(...e){t.onnext?.apply(this,e)}),V(e,n)};U(v,e=>{n()===-1?e(y):e(b,-1)}),D(p);var x=I(p,2);W(x,21,()=>o,ii,(e,t)=>{var n=$f(),r=P(n,!0);D(n),L(()=>H(r,R(t))),V(e,n)}),D(x);var S=I(x,2);W(S,21,()=>R(r),e=>e.key,(e,n)=>{var r=ep(),i=P(r,!0);D(r),L((e,t)=>{G(r,1,e,`svelte-g7ga4u`),r.disabled=t,H(i,R(n).day)},[()=>Ni([`dp-day`,{"other-month":!R(n).current,today:l(R(n)),"range-start":u(R(n),`start`),"range-end":u(R(n),`end`),"in-range":d(R(n)),disabled:c(R(n))}]),()=>c(R(n))||!R(n).current]),z(`click`,r,()=>t.onselect?.(R(n))),V(e,r)}),D(S),D(f),L(e=>{h=G(m,1,`dp-nav-btn svelte-g7ga4u`,null,h,{"dp-nav-prev-mobile":n()!==-1}),K(m,`aria-label`,e),H(_,R(a))},[()=>nl()]),z(`click`,m,function(...e){t.onprev?.apply(this,e)}),V(e,f),k()}Br([`click`]);var rp=B(``),ip=B(`
            `),ap=Jr(``),op=Jr(``),sp=B(`
            `),cp=B(`
            `);function lp(e,t){O(t,!0);let n=[`3`,`7`,`14`,`30`,`90`],r=j(!1),i=j(`start`),a=j(N(new Date)),o=j(N({show:!1,x:0,y:0}));function s(){M(r,!R(r)),R(r)&&(Vf.syncToToday(),M(a,md.startOfMonthDate(Vf.customEndDate||md.todayDate()),!0),M(i,`start`))}function c(){M(r,!1),M(o,{show:!1,x:0,y:0},!0)}let l=Vf.syncTick;On(()=>{let e=Vf.syncTick;e!==l&&(l=e,t.onchange?.())});function u(e){Vf.selectPreset(e),M(i,`start`),t.onchange?.(),c()}let d=()=>M(a,Yf(R(a),-1),!0),f=()=>M(a,Yf(R(a),1,md.startOfMonthDate(md.todayDate())),!0);function p(e){let n=new Date(e.date);if(R(i)===`start`){Vf.selectStart(n),M(i,`end`),t.onchange?.();return}Vf.selectEnd(n),M(i,`start`),t.onchange?.(),c()}var m=cp(),h=P(m),g=I(P(h),2),_=P(g,!0);D(g);var v=I(g,2);let y;D(h);var b=I(h,2),x=e=>{var t=ip(),r=P(t);W(r,20,()=>n,e=>e,(e,t)=>{var n=rp();let r;var i=P(n,!0);D(n),L(e=>{r=G(n,1,`preset-btn svelte-ax7ma4`,null,r,{active:Vf.selectedPreset===t}),H(i,e)},[()=>Fc({count:Number(t)})]),z(`click`,n,()=>u(t)),V(e,n)}),D(r);var i=I(r,2);W(i,20,()=>[-1,0],e=>e,(e,t)=>{np(e,{get calendarMonth(){return R(a)},get offset(){return t},onprev:d,onnext:f,onselect:p})}),D(i),D(t),z(`mousemove`,i,e=>M(o,{show:!0,x:e.clientX,y:e.clientY},!0)),zr(`mouseleave`,i,()=>M(o,{show:!1,x:0,y:0},!0)),V(e,t)};U(b,e=>{R(r)&&e(x)});var S=I(b,2),C=e=>{var t=sp(),n=P(t),r=e=>{V(e,ap())},a=e=>{V(e,op())};U(n,e=>{R(i)===`start`?e(r):e(a,-1)});var s=I(n,2),c=P(s,!0);D(s),D(t),L(e=>{Bi(t,`left:${R(o).x??``}px;top:${R(o).y??``}px`),H(c,e)},[()=>R(i)===`end`?$c():Xc()]),V(e,t)};U(S,e=>{R(o).show&&e(C)}),D(m),Ai(m,()=>R(r)?Fd(c):void 0),L((e,t)=>{K(h,`title`,e),H(_,t),y=G(v,0,`date-picker-chevron svelte-ax7ma4`,null,y,{open:R(r)})},[()=>Vf.dateRangeSpanLabel(),()=>Vf.dateRangeLabel()]),z(`click`,h,s),V(e,m),k()}Br([`click`,`mousemove`]);function up(e){return e+.5|0}var dp=(e,t,n)=>Math.max(Math.min(e,n),t);function fp(e){return dp(up(e*2.55),0,255)}function pp(e){return dp(up(e*255),0,255)}function mp(e){return dp(up(e/2.55)/100,0,1)}function hp(e){return dp(up(e*100),0,100)}var gp={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},_p=[...`0123456789ABCDEF`],vp=e=>_p[e&15],yp=e=>_p[(e&240)>>4]+_p[e&15],bp=e=>(e&240)>>4==(e&15),xp=e=>bp(e.r)&&bp(e.g)&&bp(e.b)&&bp(e.a);function Sp(e){var t=e.length,n;return e[0]===`#`&&(t===4||t===5?n={r:255&gp[e[1]]*17,g:255&gp[e[2]]*17,b:255&gp[e[3]]*17,a:t===5?gp[e[4]]*17:255}:(t===7||t===9)&&(n={r:gp[e[1]]<<4|gp[e[2]],g:gp[e[3]]<<4|gp[e[4]],b:gp[e[5]]<<4|gp[e[6]],a:t===9?gp[e[7]]<<4|gp[e[8]]:255})),n}var Cp=(e,t)=>e<255?t(e):``;function wp(e){var t=xp(e)?vp:yp;return e?`#`+t(e.r)+t(e.g)+t(e.b)+Cp(e.a,t):void 0}var Tp=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Ep(e,t,n){let r=t*Math.min(n,1-n),i=(t,i=(t+e/30)%12)=>n-r*Math.max(Math.min(i-3,9-i,1),-1);return[i(0),i(8),i(4)]}function Dp(e,t,n){let r=(r,i=(r+e/60)%6)=>n-n*t*Math.max(Math.min(i,4-i,1),0);return[r(5),r(3),r(1)]}function Op(e,t,n){let r=Ep(e,1,.5),i;for(t+n>1&&(i=1/(t+n),t*=i,n*=i),i=0;i<3;i++)r[i]*=1-t-n,r[i]+=t;return r}function kp(e,t,n,r,i){return e===i?(t-n)/r+(t.5?l/(2-i-a):l/(i+a),s=kp(t,n,r,l,i),s=s*60+.5),[s|0,c||0,o]}function jp(e,t,n,r){return(Array.isArray(t)?e(t[0],t[1],t[2]):e(t,n,r)).map(pp)}function Mp(e,t,n){return jp(Ep,e,t,n)}function Np(e,t,n){return jp(Op,e,t,n)}function Pp(e,t,n){return jp(Dp,e,t,n)}function Fp(e){return(e%360+360)%360}function Ip(e){let t=Tp.exec(e),n=255,r;if(!t)return;t[5]!==r&&(n=t[6]?fp(+t[5]):pp(+t[5]));let i=Fp(+t[2]),a=t[3]/100,o=t[4]/100;return r=t[1]===`hwb`?Np(i,a,o):t[1]===`hsv`?Pp(i,a,o):Mp(i,a,o),{r:r[0],g:r[1],b:r[2],a:n}}function Lp(e,t){var n=Ap(e);n[0]=Fp(n[0]+t),n=Mp(n),e.r=n[0],e.g=n[1],e.b=n[2]}function Rp(e){if(!e)return;let t=Ap(e),n=t[0],r=hp(t[1]),i=hp(t[2]);return e.a<255?`hsla(${n}, ${r}%, ${i}%, ${mp(e.a)})`:`hsl(${n}, ${r}%, ${i}%)`}var zp={x:`dark`,Z:`light`,Y:`re`,X:`blu`,W:`gr`,V:`medium`,U:`slate`,A:`ee`,T:`ol`,S:`or`,B:`ra`,C:`lateg`,D:`ights`,R:`in`,Q:`turquois`,E:`hi`,P:`ro`,O:`al`,N:`le`,M:`de`,L:`yello`,F:`en`,K:`ch`,G:`arks`,H:`ea`,I:`ightg`,J:`wh`},Bp={OiceXe:`f0f8ff`,antiquewEte:`faebd7`,aqua:`ffff`,aquamarRe:`7fffd4`,azuY:`f0ffff`,beige:`f5f5dc`,bisque:`ffe4c4`,black:`0`,blanKedOmond:`ffebcd`,Xe:`ff`,XeviTet:`8a2be2`,bPwn:`a52a2a`,burlywood:`deb887`,caMtXe:`5f9ea0`,KartYuse:`7fff00`,KocTate:`d2691e`,cSO:`ff7f50`,cSnflowerXe:`6495ed`,cSnsilk:`fff8dc`,crimson:`dc143c`,cyan:`ffff`,xXe:`8b`,xcyan:`8b8b`,xgTMnPd:`b8860b`,xWay:`a9a9a9`,xgYF:`6400`,xgYy:`a9a9a9`,xkhaki:`bdb76b`,xmagFta:`8b008b`,xTivegYF:`556b2f`,xSange:`ff8c00`,xScEd:`9932cc`,xYd:`8b0000`,xsOmon:`e9967a`,xsHgYF:`8fbc8f`,xUXe:`483d8b`,xUWay:`2f4f4f`,xUgYy:`2f4f4f`,xQe:`ced1`,xviTet:`9400d3`,dAppRk:`ff1493`,dApskyXe:`bfff`,dimWay:`696969`,dimgYy:`696969`,dodgerXe:`1e90ff`,fiYbrick:`b22222`,flSOwEte:`fffaf0`,foYstWAn:`228b22`,fuKsia:`ff00ff`,gaRsbSo:`dcdcdc`,ghostwEte:`f8f8ff`,gTd:`ffd700`,gTMnPd:`daa520`,Way:`808080`,gYF:`8000`,gYFLw:`adff2f`,gYy:`808080`,honeyMw:`f0fff0`,hotpRk:`ff69b4`,RdianYd:`cd5c5c`,Rdigo:`4b0082`,ivSy:`fffff0`,khaki:`f0e68c`,lavFMr:`e6e6fa`,lavFMrXsh:`fff0f5`,lawngYF:`7cfc00`,NmoncEffon:`fffacd`,ZXe:`add8e6`,ZcSO:`f08080`,Zcyan:`e0ffff`,ZgTMnPdLw:`fafad2`,ZWay:`d3d3d3`,ZgYF:`90ee90`,ZgYy:`d3d3d3`,ZpRk:`ffb6c1`,ZsOmon:`ffa07a`,ZsHgYF:`20b2aa`,ZskyXe:`87cefa`,ZUWay:`778899`,ZUgYy:`778899`,ZstAlXe:`b0c4de`,ZLw:`ffffe0`,lime:`ff00`,limegYF:`32cd32`,lRF:`faf0e6`,magFta:`ff00ff`,maPon:`800000`,VaquamarRe:`66cdaa`,VXe:`cd`,VScEd:`ba55d3`,VpurpN:`9370db`,VsHgYF:`3cb371`,VUXe:`7b68ee`,VsprRggYF:`fa9a`,VQe:`48d1cc`,VviTetYd:`c71585`,midnightXe:`191970`,mRtcYam:`f5fffa`,mistyPse:`ffe4e1`,moccasR:`ffe4b5`,navajowEte:`ffdead`,navy:`80`,Tdlace:`fdf5e6`,Tive:`808000`,TivedBb:`6b8e23`,Sange:`ffa500`,SangeYd:`ff4500`,ScEd:`da70d6`,pOegTMnPd:`eee8aa`,pOegYF:`98fb98`,pOeQe:`afeeee`,pOeviTetYd:`db7093`,papayawEp:`ffefd5`,pHKpuff:`ffdab9`,peru:`cd853f`,pRk:`ffc0cb`,plum:`dda0dd`,powMrXe:`b0e0e6`,purpN:`800080`,YbeccapurpN:`663399`,Yd:`ff0000`,Psybrown:`bc8f8f`,PyOXe:`4169e1`,saddNbPwn:`8b4513`,sOmon:`fa8072`,sandybPwn:`f4a460`,sHgYF:`2e8b57`,sHshell:`fff5ee`,siFna:`a0522d`,silver:`c0c0c0`,skyXe:`87ceeb`,UXe:`6a5acd`,UWay:`708090`,UgYy:`708090`,snow:`fffafa`,sprRggYF:`ff7f`,stAlXe:`4682b4`,tan:`d2b48c`,teO:`8080`,tEstN:`d8bfd8`,tomato:`ff6347`,Qe:`40e0d0`,viTet:`ee82ee`,JHt:`f5deb3`,wEte:`ffffff`,wEtesmoke:`f5f5f5`,Lw:`ffff00`,LwgYF:`9acd32`};function Vp(){let e={},t=Object.keys(Bp),n=Object.keys(zp),r,i,a,o,s;for(r=0;r>16&255,a>>8&255,a&255]}return e}var Hp;function Up(e){Hp||(Hp=Vp(),Hp.transparent=[0,0,0,0]);let t=Hp[e.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:t.length===4?t[3]:255}}var Wp=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function Gp(e){let t=Wp.exec(e),n=255,r,i,a;if(t){if(t[7]!==r){let e=+t[7];n=t[8]?fp(e):dp(e*255,0,255)}return r=+t[1],i=+t[3],a=+t[5],r=255&(t[2]?fp(r):dp(r,0,255)),i=255&(t[4]?fp(i):dp(i,0,255)),a=255&(t[6]?fp(a):dp(a,0,255)),{r,g:i,b:a,a:n}}}function Kp(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${mp(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}var qp=e=>e<=.0031308?e*12.92:e**(1/2.4)*1.055-.055,Jp=e=>e<=.04045?e/12.92:((e+.055)/1.055)**2.4;function Yp(e,t,n){let r=Jp(mp(e.r)),i=Jp(mp(e.g)),a=Jp(mp(e.b));return{r:pp(qp(r+n*(Jp(mp(t.r))-r))),g:pp(qp(i+n*(Jp(mp(t.g))-i))),b:pp(qp(a+n*(Jp(mp(t.b))-a))),a:e.a+n*(t.a-e.a)}}function Xp(e,t,n){if(e){let r=Ap(e);r[t]=Math.max(0,Math.min(r[t]+r[t]*n,t===0?360:1)),r=Mp(r),e.r=r[0],e.g=r[1],e.b=r[2]}}function Zp(e,t){return e&&Object.assign(t||{},e)}function Qp(e){var t={r:0,g:0,b:0,a:255};return Array.isArray(e)?e.length>=3&&(t={r:e[0],g:e[1],b:e[2],a:255},e.length>3&&(t.a=pp(e[3]))):(t=Zp(e,{r:0,g:0,b:0,a:1}),t.a=pp(t.a)),t}function $p(e){return e.charAt(0)===`r`?Gp(e):Ip(e)}var em=class e{constructor(t){if(t instanceof e)return t;let n=typeof t,r;n===`object`?r=Qp(t):n===`string`&&(r=Sp(t)||Up(t)||$p(t)),this._rgb=r,this._valid=!!r}get valid(){return this._valid}get rgb(){var e=Zp(this._rgb);return e&&(e.a=mp(e.a)),e}set rgb(e){this._rgb=Qp(e)}rgbString(){return this._valid?Kp(this._rgb):void 0}hexString(){return this._valid?wp(this._rgb):void 0}hslString(){return this._valid?Rp(this._rgb):void 0}mix(e,t){if(e){let n=this.rgb,r=e.rgb,i,a=t===i?.5:t,o=2*a-1,s=n.a-r.a,c=((o*s===-1?o:(o+s)/(1+o*s))+1)/2;i=1-c,n.r=255&c*n.r+i*r.r+.5,n.g=255&c*n.g+i*r.g+.5,n.b=255&c*n.b+i*r.b+.5,n.a=a*n.a+(1-a)*r.a,this.rgb=n}return this}interpolate(e,t){return e&&(this._rgb=Yp(this._rgb,e._rgb,t)),this}clone(){return new e(this.rgb)}alpha(e){return this._rgb.a=pp(e),this}clearer(e){let t=this._rgb;return t.a*=1-e,this}greyscale(){let e=this._rgb;return e.r=e.g=e.b=up(e.r*.3+e.g*.59+e.b*.11),this}opaquer(e){let t=this._rgb;return t.a*=1+e,this}negate(){let e=this._rgb;return e.r=255-e.r,e.g=255-e.g,e.b=255-e.b,this}lighten(e){return Xp(this._rgb,2,e),this}darken(e){return Xp(this._rgb,2,-e),this}saturate(e){return Xp(this._rgb,1,e),this}desaturate(e){return Xp(this._rgb,1,-e),this}rotate(e){return Lp(this._rgb,e),this}};function tm(){}var nm=(()=>{let e=0;return()=>e++})();function rm(e){return e==null}function im(e){if(Array.isArray&&Array.isArray(e))return!0;let t=Object.prototype.toString.call(e);return t.slice(0,7)===`[object`&&t.slice(-6)===`Array]`}function am(e){return e!==null&&Object.prototype.toString.call(e)===`[object Object]`}function om(e){return(typeof e==`number`||e instanceof Number)&&isFinite(+e)}function sm(e,t){return om(e)?e:t}function cm(e,t){return e===void 0?t:e}var lm=(e,t)=>typeof e==`string`&&e.endsWith(`%`)?parseFloat(e)/100:+e/t,um=(e,t)=>typeof e==`string`&&e.endsWith(`%`)?parseFloat(e)/100*t:+e;function dm(e,t,n){if(e&&typeof e.call==`function`)return e.apply(n,t)}function fm(e,t,n,r){let i,a,o;if(im(e))if(a=e.length,r)for(i=a-1;i>=0;i--)t.call(n,e[i],i);else for(i=0;ie,x:e=>e.x,y:e=>e.y};function xm(e){let t=e.split(`.`),n=[],r=``;for(let e of t)r+=e,r.endsWith(`\\`)?r=r.slice(0,-1)+`.`:(n.push(r),r=``);return n}function Sm(e){let t=xm(e);return e=>{for(let n of t){if(n===``)break;e&&=e[n]}return e}}function Cm(e,t){return(bm[t]||(bm[t]=Sm(t)))(e)}function wm(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Tm=e=>e!==void 0,Em=e=>typeof e==`function`,Dm=(e,t)=>{if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0};function Om(e){return e.type===`mouseup`||e.type===`click`||e.type===`contextmenu`}var km=Math.PI,Am=2*km,jm=Am+km,Mm=1/0,Nm=km/180,Pm=km/2,Fm=km/4,Im=km*2/3,Lm=Math.log10,Rm=Math.sign;function zm(e,t,n){return Math.abs(e-t)e-t).pop(),t}function Hm(e){return typeof e==`symbol`||typeof e==`object`&&!!e&&!(Symbol.toPrimitive in e||`toString`in e||`valueOf`in e)}function Um(e){return!Hm(e)&&!isNaN(parseFloat(e))&&isFinite(e)}function Wm(e,t){let n=Math.round(e);return n-t<=e&&n+t>=e}function Gm(e,t,n){let r,i,a;for(r=0,i=e.length;rc&&l=Math.min(t,n)-r&&e<=Math.max(t,n)+r}function rh(e,t,n){n||=(n=>e[n]1;)a=i+r>>1,n(a)?i=a:r=a;return{lo:i,hi:r}}var ih=(e,t,n,r)=>rh(e,n,r?r=>{let i=e[r][t];return ie[r][t]rh(e,n,r=>e[r][t]>=n);function oh(e,t,n){let r=0,i=e.length;for(;rr&&e[i-1]>n;)i--;return r>0||i{let n=`_onData`+wm(t),r=e[t];Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value(...t){let i=r.apply(this,t);return e._chartjs.listeners.forEach(e=>{typeof e[n]==`function`&&e[n](...t)}),i}})})}function lh(e,t){let n=e._chartjs;if(!n)return;let r=n.listeners,i=r.indexOf(t);i!==-1&&r.splice(i,1),!(r.length>0)&&(sh.forEach(t=>{delete e[t]}),delete e._chartjs)}function uh(e){let t=new Set(e);return t.size===e.length?e:Array.from(t)}var dh=function(){return typeof window>`u`?function(e){return e()}:window.requestAnimationFrame}();function fh(e,t){let n=[],r=!1;return function(...i){n=i,r||(r=!0,dh.call(window,()=>{r=!1,e.apply(t,n)}))}}function ph(e,t){let n;return function(...r){return t?(clearTimeout(n),n=setTimeout(e,t,r)):e.apply(this,r),t}}var mh=e=>e===`start`?`left`:e===`end`?`right`:`center`,hh=(e,t,n)=>e===`start`?t:e===`end`?n:(t+n)/2,gh=(e,t,n,r)=>e===(r?`left`:`right`)?n:e===`center`?(t+n)/2:t;function _h(e,t,n){let r=t.length,i=0,a=r;if(e._sorted){let{iScale:o,vScale:s,_parsed:c}=e,l=e.dataset&&e.dataset.options?e.dataset.options.spanGaps:null,u=o.axis,{min:d,max:f,minDefined:p,maxDefined:m}=o.getUserBounds();if(p){if(i=Math.min(ih(c,u,d).lo,n?r:ih(t,u,o.getPixelForValue(d)).lo),l){let e=c.slice(0,i+1).reverse().findIndex(e=>!rm(e[s.axis]));i-=Math.max(0,e)}i=eh(i,0,r-1)}if(m){let e=Math.max(ih(c,o.axis,f,!0).hi+1,n?0:ih(t,u,o.getPixelForValue(f),!0).hi+1);if(l){let t=c.slice(e-1).findIndex(e=>!rm(e[s.axis]));e+=Math.max(0,t)}a=eh(e,i,r)-i}else a=r-i}return{start:i,count:a}}function vh(e){let{xScale:t,yScale:n,_scaleRanges:r}=e,i={xmin:t.min,xmax:t.max,ymin:n.min,ymax:n.max};if(!r)return e._scaleRanges=i,!0;let a=r.xmin!==t.min||r.xmax!==t.max||r.ymin!==n.min||r.ymax!==n.max;return Object.assign(r,i),a}var yh=e=>e===0||e===1,bh=(e,t,n)=>-(2**(10*--e)*Math.sin((e-t)*Am/n)),xh=(e,t,n)=>2**(-10*e)*Math.sin((e-t)*Am/n)+1,Sh={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>-e*(e-2),easeInOutQuad:e=>(e/=.5)<1?.5*e*e:-.5*(--e*(e-2)-1),easeInCubic:e=>e*e*e,easeOutCubic:e=>--e*e*e+1,easeInOutCubic:e=>(e/=.5)<1?.5*e*e*e:.5*((e-=2)*e*e+2),easeInQuart:e=>e*e*e*e,easeOutQuart:e=>-(--e*e*e*e-1),easeInOutQuart:e=>(e/=.5)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2),easeInQuint:e=>e*e*e*e*e,easeOutQuint:e=>--e*e*e*e*e+1,easeInOutQuint:e=>(e/=.5)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2),easeInSine:e=>-Math.cos(e*Pm)+1,easeOutSine:e=>Math.sin(e*Pm),easeInOutSine:e=>-.5*(Math.cos(km*e)-1),easeInExpo:e=>e===0?0:2**(10*(e-1)),easeOutExpo:e=>e===1?1:-(2**(-10*e))+1,easeInOutExpo:e=>yh(e)?e:e<.5?.5*2**(10*(e*2-1)):.5*(-(2**(-10*(e*2-1)))+2),easeInCirc:e=>e>=1?e:-(Math.sqrt(1-e*e)-1),easeOutCirc:e=>Math.sqrt(1- --e*e),easeInOutCirc:e=>(e/=.5)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1),easeInElastic:e=>yh(e)?e:bh(e,.075,.3),easeOutElastic:e=>yh(e)?e:xh(e,.075,.3),easeInOutElastic(e){let t=.1125,n=.45;return yh(e)?e:e<.5?.5*bh(e*2,t,n):.5+.5*xh(e*2-1,t,n)},easeInBack(e){return e*e*(2.70158*e-1.70158)},easeOutBack(e){return--e*e*(2.70158*e+1.70158)+1},easeInOutBack(e){let t=1.70158;return(e/=.5)<1?.5*(e*e*(((t*=1.525)+1)*e-t)):.5*((e-=2)*e*(((t*=1.525)+1)*e+t)+2)},easeInBounce:e=>1-Sh.easeOutBounce(1-e),easeOutBounce(e){let t=7.5625,n=2.75;return e<1/n?t*e*e:e<2/n?t*(e-=1.5/n)*e+.75:e<2.5/n?t*(e-=2.25/n)*e+.9375:t*(e-=2.625/n)*e+.984375},easeInOutBounce:e=>e<.5?Sh.easeInBounce(e*2)*.5:Sh.easeOutBounce(e*2-1)*.5+.5};function Ch(e){if(e&&typeof e==`object`){let t=e.toString();return t===`[object CanvasPattern]`||t===`[object CanvasGradient]`}return!1}function wh(e){return Ch(e)?e:new em(e)}function Th(e){return Ch(e)?e:new em(e).saturate(.5).darken(.1).hexString()}var Eh=[`x`,`y`,`borderWidth`,`radius`,`tension`],Dh=[`color`,`borderColor`,`backgroundColor`];function Oh(e){e.set(`animation`,{delay:void 0,duration:1e3,easing:`easeOutQuart`,fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),e.describe(`animation`,{_fallback:!1,_indexable:!1,_scriptable:e=>e!==`onProgress`&&e!==`onComplete`&&e!==`fn`}),e.set(`animations`,{colors:{type:`color`,properties:Dh},numbers:{type:`number`,properties:Eh}}),e.describe(`animations`,{_fallback:`animation`}),e.set(`transitions`,{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:`transparent`},visible:{type:`boolean`,duration:0}}},hide:{animations:{colors:{to:`transparent`},visible:{type:`boolean`,easing:`linear`,fn:e=>e|0}}}})}function kh(e){e.set(`layout`,{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}var Ah=new Map;function jh(e,t){t||={};let n=e+JSON.stringify(t),r=Ah.get(n);return r||(r=new Intl.NumberFormat(e,t),Ah.set(n,r)),r}function Mh(e,t,n){return jh(t,n).format(e)}var Nh={values(e){return im(e)?e:``+e},numeric(e,t,n){if(e===0)return`0`;let r=this.chart.options.locale,i,a=e;if(n.length>1){let t=Math.max(Math.abs(n[0].value),Math.abs(n[n.length-1].value));(t<1e-4||t>0x38d7ea4c68000)&&(i=`scientific`),a=Ph(e,n)}let o=Lm(Math.abs(a)),s=isNaN(o)?1:Math.max(Math.min(-1*Math.floor(o),20),0),c={notation:i,minimumFractionDigits:s,maximumFractionDigits:s};return Object.assign(c,this.options.ticks.format),Mh(e,r,c)},logarithmic(e,t,n){if(e===0)return`0`;let r=n[t].significand||e/10**Math.floor(Lm(e));return[1,2,3,5,10,15].includes(r)||t>.8*n.length?Nh.numeric.call(this,e,t,n):``}};function Ph(e,t){let n=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(n)>=1&&e!==Math.floor(e)&&(n=e-Math.floor(e)),n}var Fh={formatters:Nh};function Ih(e){e.set(`scale`,{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:`ticks`,clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(e,t)=>t.lineWidth,tickColor:(e,t)=>t.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:``,padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:``,padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Fh.formatters.values,minor:{},major:{},align:`center`,crossAlign:`near`,showLabelBackdrop:!1,backdropColor:`rgba(255, 255, 255, 0.75)`,backdropPadding:2}}),e.route(`scale.ticks`,`color`,``,`color`),e.route(`scale.grid`,`color`,``,`borderColor`),e.route(`scale.border`,`color`,``,`borderColor`),e.route(`scale.title`,`color`,``,`color`),e.describe(`scale`,{_fallback:!1,_scriptable:e=>!e.startsWith(`before`)&&!e.startsWith(`after`)&&e!==`callback`&&e!==`parser`,_indexable:e=>e!==`borderDash`&&e!==`tickBorderDash`&&e!==`dash`}),e.describe(`scales`,{_fallback:`scale`}),e.describe(`scale.ticks`,{_scriptable:e=>e!==`backdropPadding`&&e!==`callback`,_indexable:e=>e!==`backdropPadding`})}var Lh=Object.create(null),Rh=Object.create(null);function zh(e,t){if(!t)return e;let n=t.split(`.`);for(let t=0,r=n.length;te.chart.platform.getDevicePixelRatio(),this.elements={},this.events=[`mousemove`,`mouseout`,`click`,`touchstart`,`touchmove`],this.font={family:`'Helvetica Neue', 'Helvetica', 'Arial', sans-serif`,size:12,style:`normal`,lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(e,t)=>Th(t.backgroundColor),this.hoverBorderColor=(e,t)=>Th(t.borderColor),this.hoverColor=(e,t)=>Th(t.color),this.indexAxis=`x`,this.interaction={mode:`nearest`,intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(e),this.apply(t)}set(e,t){return Bh(this,e,t)}get(e){return zh(this,e)}describe(e,t){return Bh(Rh,e,t)}override(e,t){return Bh(Lh,e,t)}route(e,t,n,r){let i=zh(this,e),a=zh(this,n),o=`_`+t;Object.defineProperties(i,{[o]:{value:i[t],writable:!0},[t]:{enumerable:!0,get(){let e=this[o],t=a[r];return am(e)?Object.assign({},t,e):cm(e,t)},set(e){this[o]=e}}})}apply(e){e.forEach(e=>e(this))}}({_scriptable:e=>!e.startsWith(`on`),_indexable:e=>e!==`events`,hover:{_fallback:`interaction`},interaction:{_scriptable:!1,_indexable:!1}},[Oh,kh,Ih]);function Hh(e){return!e||rm(e.size)||rm(e.family)?null:(e.style?e.style+` `:``)+(e.weight?e.weight+` `:``)+e.size+`px `+e.family}function Uh(e,t,n,r,i){let a=t[i];return a||(a=t[i]=e.measureText(i).width,n.push(i)),a>r&&(r=a),r}function Wh(e,t,n,r){r||={};let i=r.data=r.data||{},a=r.garbageCollect=r.garbageCollect||[];r.font!==t&&(i=r.data={},a=r.garbageCollect=[],r.font=t),e.save(),e.font=t;let o=0,s=n.length,c,l,u,d,f;for(c=0;cn.length){for(c=0;c0&&e.stroke()}}function Yh(e,t,n){return n||=.5,!t||e&&e.x>t.left-n&&e.xt.top-n&&e.y0&&a.strokeColor!==``,c,l;for(e.save(),e.font=i.string,eg(e,a),c=0;c+e||0;function lg(e,t){let n={},r=am(t),i=r?Object.keys(t):t,a=am(e)?r?n=>cm(e[n],e[t[n]]):t=>e[t]:()=>e;for(let e of i)n[e]=cg(a(e));return n}function ug(e){return lg(e,{top:`y`,right:`x`,bottom:`y`,left:`x`})}function dg(e){return lg(e,[`topLeft`,`topRight`,`bottomLeft`,`bottomRight`])}function fg(e){let t=ug(e);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function pg(e,t){e||={},t||=Vh.font;let n=cm(e.size,t.size);typeof n==`string`&&(n=parseInt(n,10));let r=cm(e.style,t.style);r&&!(``+r).match(og)&&(console.warn(`Invalid font style specified: "`+r+`"`),r=void 0);let i={family:cm(e.family,t.family),lineHeight:sg(cm(e.lineHeight,t.lineHeight),n),size:n,style:r,weight:cm(e.weight,t.weight),string:``};return i.string=Hh(i),i}function mg(e,t,n,r){let i=!0,a,o,s;for(a=0,o=e.length;an&&e===0?0:e+t;return{min:o(r,-Math.abs(a)),max:o(i,a)}}function gg(e,t){return Object.assign(Object.create(e),t)}function _g(e,t=[``],n,r,i=()=>e[0]){let a=n||e;return r===void 0&&(r=Ng(`_fallback`,e)),new Proxy({[Symbol.toStringTag]:`Object`,_cacheable:!0,_scopes:e,_rootScopes:a,_fallback:r,_getTarget:i,override:n=>_g([n,...e],t,a,r)},{deleteProperty(t,n){return delete t[n],delete t._keys,delete e[0][n],!0},get(n,r){return Sg(n,r,()=>Mg(r,t,e,n))},getOwnPropertyDescriptor(e,t){return Reflect.getOwnPropertyDescriptor(e._scopes[0],t)},getPrototypeOf(){return Reflect.getPrototypeOf(e[0])},has(e,t){return Pg(e).includes(t)},ownKeys(e){return Pg(e)},set(e,t,n){let r=e._storage||=i();return e[t]=r[t]=n,delete e._keys,!0}})}function vg(e,t,n,r){let i={_cacheable:!1,_proxy:e,_context:t,_subProxy:n,_stack:new Set,_descriptors:yg(e,r),setContext:t=>vg(e,t,n,r),override:i=>vg(e.override(i),t,n,r)};return new Proxy(i,{deleteProperty(t,n){return delete t[n],delete e[n],!0},get(e,t,n){return Sg(e,t,()=>Cg(e,t,n))},getOwnPropertyDescriptor(t,n){return t._descriptors.allKeys?Reflect.has(e,n)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(e,n)},getPrototypeOf(){return Reflect.getPrototypeOf(e)},has(t,n){return Reflect.has(e,n)},ownKeys(){return Reflect.ownKeys(e)},set(t,n,r){return e[n]=r,delete t[n],!0}})}function yg(e,t={scriptable:!0,indexable:!0}){let{_scriptable:n=t.scriptable,_indexable:r=t.indexable,_allKeys:i=t.allKeys}=e;return{allKeys:i,scriptable:n,indexable:r,isScriptable:Em(n)?n:()=>n,isIndexable:Em(r)?r:()=>r}}var bg=(e,t)=>e?e+wm(t):t,xg=(e,t)=>am(t)&&e!==`adapters`&&(Object.getPrototypeOf(t)===null||t.constructor===Object);function Sg(e,t,n){if(Object.prototype.hasOwnProperty.call(e,t)||t===`constructor`)return e[t];let r=n();return e[t]=r,r}function Cg(e,t,n){let{_proxy:r,_context:i,_subProxy:a,_descriptors:o}=e,s=r[t];return Em(s)&&o.isScriptable(t)&&(s=wg(t,s,e,n)),im(s)&&s.length&&(s=Tg(t,s,e,o.isIndexable)),xg(t,s)&&(s=vg(s,i,a&&a[t],o)),s}function wg(e,t,n,r){let{_proxy:i,_context:a,_subProxy:o,_stack:s}=n;if(s.has(e))throw Error(`Recursion detected: `+Array.from(s).join(`->`)+`->`+e);s.add(e);let c=t(a,o||r);return s.delete(e),xg(e,c)&&(c=kg(i._scopes,i,e,c)),c}function Tg(e,t,n,r){let{_proxy:i,_context:a,_subProxy:o,_descriptors:s}=n;if(a.index!==void 0&&r(e))return t[a.index%t.length];if(am(t[0])){let n=t,r=i._scopes.filter(e=>e!==n);t=[];for(let c of n){let n=kg(r,i,e,c);t.push(vg(n,a,o&&o[e],s))}}return t}function Eg(e,t,n){return Em(e)?e(t,n):e}var Dg=(e,t)=>e===!0?t:typeof e==`string`?Cm(t,e):void 0;function Og(e,t,n,r,i){for(let a of t){let t=Dg(n,a);if(t){e.add(t);let a=Eg(t._fallback,n,i);if(a!==void 0&&a!==n&&a!==r)return a}else if(t===!1&&r!==void 0&&n!==r)return null}return!1}function kg(e,t,n,r){let i=t._rootScopes,a=Eg(t._fallback,n,r),o=[...e,...i],s=new Set;s.add(r);let c=Ag(s,o,n,a||n,r);return c===null||a!==void 0&&a!==n&&(c=Ag(s,o,a,c,r),c===null)?!1:_g(Array.from(s),[``],i,a,()=>jg(t,n,r))}function Ag(e,t,n,r,i){for(;n;)n=Og(e,t,n,r,i);return n}function jg(e,t,n){let r=e._getTarget();t in r||(r[t]={});let i=r[t];return im(i)&&am(n)?n:i||{}}function Mg(e,t,n,r){let i;for(let a of t)if(i=Ng(bg(a,e),n),i!==void 0)return xg(e,i)?kg(n,r,e,i):i}function Ng(e,t){for(let n of t){if(!n)continue;let t=n[e];if(t!==void 0)return t}}function Pg(e){let t=e._keys;return t||=e._keys=Fg(e._scopes),t}function Fg(e){let t=new Set;for(let n of e)for(let e of Object.keys(n).filter(e=>!e.startsWith(`_`)))t.add(e);return Array.from(t)}function Ig(e,t,n,r){let{iScale:i}=e,{key:a=`r`}=this._parsing,o=Array(r),s,c,l,u;for(s=0,c=r;ste===`x`?`y`:`x`;function Bg(e,t,n,r){let i=e.skip?t:e,a=t,o=n.skip?t:n,s=Xm(a,i),c=Xm(o,a),l=s/(s+c),u=c/(s+c);l=isNaN(l)?0:l,u=isNaN(u)?0:u;let d=r*l,f=r*u;return{previous:{x:a.x-d*(o.x-i.x),y:a.y-d*(o.y-i.y)},next:{x:a.x+f*(o.x-i.x),y:a.y+f*(o.y-i.y)}}}function Vg(e,t,n){let r=e.length,i,a,o,s,c,l=Rg(e,0);for(let u=0;u!e.skip)),t.cubicInterpolationMode===`monotone`)Ug(e,i);else{let n=r?e[e.length-1]:e[0];for(a=0,o=e.length;ae.ownerDocument.defaultView.getComputedStyle(e,null);function Zg(e,t){return Xg(e).getPropertyValue(t)}var Qg=[`top`,`right`,`bottom`,`left`];function $g(e,t,n){let r={};n=n?`-`+n:``;for(let i=0;i<4;i++){let a=Qg[i];r[a]=parseFloat(e[t+`-`+a+n])||0}return r.width=r.left+r.right,r.height=r.top+r.bottom,r}var e_=(e,t,n)=>(e>0||t>0)&&(!n||!n.shadowRoot);function t_(e,t){let n=e.touches,r=n&&n.length?n[0]:e,{offsetX:i,offsetY:a}=r,o=!1,s,c;if(e_(i,a,e.target))s=i,c=a;else{let e=t.getBoundingClientRect();s=r.clientX-e.left,c=r.clientY-e.top,o=!0}return{x:s,y:c,box:o}}function n_(e,t){if(`native`in e)return e;let{canvas:n,currentDevicePixelRatio:r}=t,i=Xg(n),a=i.boxSizing===`border-box`,o=$g(i,`padding`),s=$g(i,`border`,`width`),{x:c,y:l,box:u}=t_(e,n),d=o.left+(u&&s.left),f=o.top+(u&&s.top),{width:p,height:m}=t;return a&&(p-=o.width+s.width,m-=o.height+s.height),{x:Math.round((c-d)/p*n.width/r),y:Math.round((l-f)/m*n.height/r)}}function r_(e,t,n){let r,i;if(t===void 0||n===void 0){let a=e&&Jg(e);if(!a)t=e.clientWidth,n=e.clientHeight;else{let e=a.getBoundingClientRect(),o=Xg(a),s=$g(o,`border`,`width`),c=$g(o,`padding`);t=e.width-c.width-s.width,n=e.height-c.height-s.height,r=Yg(o.maxWidth,a,`clientWidth`),i=Yg(o.maxHeight,a,`clientHeight`)}}return{width:t,height:n,maxWidth:r||Mm,maxHeight:i||Mm}}var i_=e=>Math.round(e*10)/10;function a_(e,t,n,r){let i=Xg(e),a=$g(i,`margin`),o=Yg(i.maxWidth,e,`clientWidth`)||Mm,s=Yg(i.maxHeight,e,`clientHeight`)||Mm,c=r_(e,t,n),{width:l,height:u}=c;if(i.boxSizing===`content-box`){let e=$g(i,`border`,`width`),t=$g(i,`padding`);l-=t.width+e.width,u-=t.height+e.height}return l=Math.max(0,l-a.width),u=Math.max(0,r?l/r:u-a.height),l=i_(Math.min(l,o,c.maxWidth)),u=i_(Math.min(u,s,c.maxHeight)),l&&!u&&(u=i_(l/2)),(t!==void 0||n!==void 0)&&r&&c.height&&u>c.height&&(u=c.height,l=i_(Math.floor(u*r))),{width:l,height:u}}function o_(e,t,n){let r=t||1,i=i_(e.height*r),a=i_(e.width*r);e.height=i_(e.height),e.width=i_(e.width);let o=e.canvas;return o.style&&(n||!o.style.height&&!o.style.width)&&(o.style.height=`${e.height}px`,o.style.width=`${e.width}px`),e.currentDevicePixelRatio!==r||o.height!==i||o.width!==a?(e.currentDevicePixelRatio=r,o.height=i,o.width=a,e.ctx.setTransform(r,0,0,r,0,0),!0):!1}var s_=function(){let e=!1;try{let t={get passive(){return e=!0,!1}};qg()&&(window.addEventListener(`test`,null,t),window.removeEventListener(`test`,null,t))}catch{}return e}();function c_(e,t){let n=Zg(e,t),r=n&&n.match(/^(\d+)(\.\d+)?px$/);return r?+r[1]:void 0}function l_(e,t,n,r){return{x:e.x+n*(t.x-e.x),y:e.y+n*(t.y-e.y)}}function u_(e,t,n,r){return{x:e.x+n*(t.x-e.x),y:r===`middle`?n<.5?e.y:t.y:r===`after`?n<1?e.y:t.y:n>0?t.y:e.y}}function d_(e,t,n,r){let i={x:e.cp2x,y:e.cp2y},a={x:t.cp1x,y:t.cp1y},o=l_(e,i,n),s=l_(i,a,n),c=l_(a,t,n);return l_(l_(o,s,n),l_(s,c,n),n)}var f_=function(e,t){return{x(n){return e+e+t-n},setWidth(e){t=e},textAlign(e){return e===`center`?e:e===`right`?`left`:`right`},xPlus(e,t){return e-t},leftForLtr(e,t){return e-t}}},p_=function(){return{x(e){return e},setWidth(e){},textAlign(e){return e},xPlus(e,t){return e+t},leftForLtr(e,t){return e}}};function m_(e,t,n){return e?f_(t,n):p_()}function h_(e,t){let n,r;(t===`ltr`||t===`rtl`)&&(n=e.canvas.style,r=[n.getPropertyValue(`direction`),n.getPropertyPriority(`direction`)],n.setProperty(`direction`,t,`important`),e.prevTextDirection=r)}function g_(e,t){t!==void 0&&(delete e.prevTextDirection,e.canvas.style.setProperty(`direction`,t[0],t[1]))}function __(e){return e===`angle`?{between:$m,compare:Zm,normalize:Qm}:{between:nh,compare:(e,t)=>e-t,normalize:e=>e}}function v_({start:e,end:t,count:n,loop:r,style:i}){return{start:e%n,end:t%n,loop:r&&(t-e+1)%n===0,style:i}}function y_(e,t,n){let{property:r,start:i,end:a}=n,{between:o,normalize:s}=__(r),c=t.length,{start:l,end:u,loop:d}=e,f,p;if(d){for(l+=c,u+=c,f=0,p=c;fc(i,y,_)&&s(i,y)!==0,x=()=>s(a,_)===0||c(a,y,_),S=()=>h||b(),C=()=>!h||x();for(let e=u,n=u;e<=d;++e)v=t[e%o],!v.skip&&(_=l(v[r]),_!==y&&(h=c(_,i,a),g===null&&S()&&(g=s(_,i)===0?e:n),g!==null&&C()&&(m.push(v_({start:g,end:e,loop:f,count:o,style:p})),g=null),n=e,y=_));return g!==null&&m.push(v_({start:g,end:d,loop:f,count:o,style:p})),m}function x_(e,t){let n=[],r=e.segments;for(let i=0;ii&&e[a%t].skip;)a--;return a%=t,{start:i,end:a}}function C_(e,t,n,r){let i=e.length,a=[],o=t,s=e[t],c;for(c=t+1;c<=n;++c){let n=e[c%i];n.skip||n.stop?s.skip||(r=!1,a.push({start:t%i,end:(c-1)%i,loop:r}),t=o=n.stop?c:null):(o=c,s.skip&&(t=c)),s=n}return o!==null&&a.push({start:t%i,end:o%i,loop:r}),a}function w_(e,t){let n=e.points,r=e.options.spanGaps,i=n.length;if(!i)return[];let a=!!e._loop,{start:o,end:s}=S_(n,i,a,r);return r===!0?T_(e,[{start:o,end:s,loop:a}],n,t):T_(e,C_(n,o,sr({chart:e,initial:t.initial,numSteps:a,currentStep:Math.min(n-t.start,a)}))}_refresh(){this._request||=(this._running=!0,dh.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(e=Date.now()){let t=0;this._charts.forEach((n,r)=>{if(!n.running||!n.items.length)return;let i=n.items,a=i.length-1,o=!1,s;for(;a>=0;--a)s=i[a],s._active?(s._total>n.duration&&(n.duration=s._total),s.tick(e),o=!0):(i[a]=i[i.length-1],i.pop());o&&(r.draw(),this._notify(r,n,e,`progress`)),i.length||(n.running=!1,this._notify(r,n,e,`complete`),n.initial=!1),t+=i.length}),this._lastDate=e,t===0&&(this._running=!1)}_getAnims(e){let t=this._charts,n=t.get(e);return n||(n={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},t.set(e,n)),n}listen(e,t,n){this._getAnims(e).listeners[t].push(n)}add(e,t){!t||!t.length||this._getAnims(e).items.push(...t)}has(e){return this._getAnims(e).items.length>0}start(e){let t=this._charts.get(e);t&&(t.running=!0,t.start=Date.now(),t.duration=t.items.reduce((e,t)=>Math.max(e,t._duration),0),this._refresh())}running(e){if(!this._running)return!1;let t=this._charts.get(e);return!(!t||!t.running||!t.items.length)}stop(e){let t=this._charts.get(e);if(!t||!t.items.length)return;let n=t.items,r=n.length-1;for(;r>=0;--r)n[r].cancel();t.items=[],this._notify(e,t,Date.now(),`complete`)}remove(e){return this._charts.delete(e)}},N_=`transparent`,P_={boolean(e,t,n){return n>.5?t:e},color(e,t,n){let r=wh(e||N_),i=r.valid&&wh(t||N_);return i&&i.valid?i.mix(r,n).hexString():t},number(e,t,n){return e+(t-e)*n}},F_=class{constructor(e,t,n,r){let i=t[n];r=mg([e.to,r,i,e.from]);let a=mg([e.from,i,r]);this._active=!0,this._fn=e.fn||P_[e.type||typeof a],this._easing=Sh[e.easing]||Sh.linear,this._start=Math.floor(Date.now()+(e.delay||0)),this._duration=this._total=Math.floor(e.duration),this._loop=!!e.loop,this._target=t,this._prop=n,this._from=a,this._to=r,this._promises=void 0}active(){return this._active}update(e,t,n){if(this._active){this._notify(!1);let r=this._target[this._prop],i=n-this._start,a=this._duration-i;this._start=n,this._duration=Math.floor(Math.max(a,e.duration)),this._total+=i,this._loop=!!e.loop,this._to=mg([e.to,t,r,e.from]),this._from=mg([e.from,r,t])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(e){let t=e-this._start,n=this._duration,r=this._prop,i=this._from,a=this._loop,o=this._to,s;if(this._active=i!==o&&(a||t1?2-s:s,s=this._easing(Math.min(1,Math.max(0,s))),this._target[r]=this._fn(i,o,s)}wait(){let e=this._promises||=[];return new Promise((t,n)=>{e.push({res:t,rej:n})})}_notify(e){let t=e?`res`:`rej`,n=this._promises||[];for(let e=0;e{let i=e[r];if(!am(i))return;let a={};for(let e of t)a[e]=i[e];(im(i.properties)&&i.properties||[r]).forEach(e=>{(e===r||!n.has(e))&&n.set(e,a)})})}_animateOptions(e,t){let n=t.options,r=R_(e,n);if(!r)return[];let i=this._createAnimations(r,n);return n.$shared&&L_(e.options.$animations,n).then(()=>{e.options=n},()=>{}),i}_createAnimations(e,t){let n=this._properties,r=[],i=e.$animations||={},a=Object.keys(t),o=Date.now(),s;for(s=a.length-1;s>=0;--s){let c=a[s];if(c.charAt(0)===`$`)continue;if(c===`options`){r.push(...this._animateOptions(e,t));continue}let l=t[c],u=i[c],d=n.get(c);if(u)if(d&&u.active()){u.update(d,l,o);continue}else u.cancel();if(!d||!d.duration){e[c]=l;continue}i[c]=u=new F_(d,e,c,l),r.push(u)}return r}update(e,t){if(this._properties.size===0){Object.assign(e,t);return}let n=this._createAnimations(e,t);if(n.length)return M_.add(this._chart,n),!0}};function L_(e,t){let n=[],r=Object.keys(t);for(let t=0;t0||!n&&t<0)return i.index}return null}function X_(e,t){let{chart:n,_cachedMeta:r}=e,i=n._stacks||={},{iScale:a,vScale:o,index:s}=r,c=a.axis,l=o.axis,u=K_(a,o,r),d=t.length,f;for(let e=0;en[e].axis===t).shift()}function Q_(e,t){return gg(e,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:`default`,type:`dataset`})}function $_(e,t,n){return gg(e,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:n,index:t,mode:`default`,type:`data`})}function ev(e,t){let n=e.controller.index,r=e.vScale&&e.vScale.axis;if(r){t||=e._parsed;for(let e of t){let t=e._stacks;if(!t||t[r]===void 0||t[r][n]===void 0)return;delete t[r][n],t[r]._visualValues!==void 0&&t[r]._visualValues[n]!==void 0&&delete t[r]._visualValues[n]}}}var tv=e=>e===`reset`||e===`none`,nv=(e,t)=>t?e:Object.assign({},e),rv=(e,t,n)=>e&&!t.hidden&&t._stacked&&{keys:H_(n,!0),values:null},iv=class{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(e,t){this.chart=e,this._ctx=e.ctx,this.index=t,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){let e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=G_(e.vScale,e),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled(`filler`)&&console.warn(`Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options`)}updateIndex(e){this.index!==e&&ev(this._cachedMeta),this.index=e}linkScales(){let e=this.chart,t=this._cachedMeta,n=this.getDataset(),r=(e,t,n,r)=>e===`x`?t:e===`r`?r:n,i=t.xAxisID=cm(n.xAxisID,Z_(e,`x`)),a=t.yAxisID=cm(n.yAxisID,Z_(e,`y`)),o=t.rAxisID=cm(n.rAxisID,Z_(e,`r`)),s=t.indexAxis,c=t.iAxisID=r(s,i,a,o),l=t.vAxisID=r(s,a,i,o);t.xScale=this.getScaleForId(i),t.yScale=this.getScaleForId(a),t.rScale=this.getScaleForId(o),t.iScale=this.getScaleForId(c),t.vScale=this.getScaleForId(l)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){let t=this._cachedMeta;return e===t.iScale?t.vScale:t.iScale}reset(){this._update(`reset`)}_destroy(){let e=this._cachedMeta;this._data&&lh(this._data,this),e._stacked&&ev(e)}_dataCheck(){let e=this.getDataset(),t=e.data||=[],n=this._data;if(am(t)){let e=this._cachedMeta;this._data=W_(t,e)}else if(n!==t){if(n){lh(n,this);let e=this._cachedMeta;ev(e),e._parsed=[]}t&&Object.isExtensible(t)&&ch(t,this),this._syncList=[],this._data=t}}addElements(){let e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){let t=this._cachedMeta,n=this.getDataset(),r=!1;this._dataCheck();let i=t._stacked;t._stacked=G_(t.vScale,t),t.stack!==n.stack&&(r=!0,ev(t),t.stack=n.stack),this._resyncElements(e),(r||i!==t._stacked)&&(X_(this,t._parsed),t._stacked=G_(t.vScale,t))}configure(){let e=this.chart.config,t=e.datasetScopeKeys(this._type),n=e.getOptionScopes(this.getDataset(),t,!0);this.options=e.createResolver(n,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,t){let{_cachedMeta:n,_data:r}=this,{iScale:i,_stacked:a}=n,o=i.axis,s=e===0&&t===r.length||n._sorted,c=e>0&&n._parsed[e-1],l,u,d;if(this._parsing===!1)n._parsed=r,n._sorted=!0,d=r;else{d=im(r[e])?this.parseArrayData(n,r,e,t):am(r[e])?this.parseObjectData(n,r,e,t):this.parsePrimitiveData(n,r,e,t);let i=()=>u[o]===null||c&&u[o]t||u=0;--d)if(!p()){this.updateRangeFromParsed(c,e,f,s);break}}return c}getAllParsedValues(e){let t=this._cachedMeta._parsed,n=[],r,i,a;for(r=0,i=t.length;r=0&&ethis.getContext(n,r,t),u);return p.$shared&&(p.$shared=s,i[a]=Object.freeze(nv(p,s))),p}_resolveAnimations(e,t,n){let r=this.chart,i=this._cachedDataOpts,a=`animation-${t}`,o=i[a];if(o)return o;let s;if(r.options.animation!==!1){let r=this.chart.config,i=r.datasetAnimationScopeKeys(this._type,t),a=r.getOptionScopes(this.getDataset(),i);s=r.createResolver(a,this.getContext(e,n,t))}let c=new I_(r,s&&s.animations);return s&&s._cacheable&&(i[a]=Object.freeze(c)),c}getSharedOptions(e){if(e.$shared)return this._sharedOptions||=Object.assign({},e)}includeOptions(e,t){return!t||tv(e)||this.chart._animationsDisabled}_getSharedOptions(e,t){let n=this.resolveDataElementOptions(e,t),r=this._sharedOptions,i=this.getSharedOptions(n),a=this.includeOptions(t,i)||i!==r;return this.updateSharedOptions(i,t,n),{sharedOptions:i,includeOptions:a}}updateElement(e,t,n,r){tv(r)?Object.assign(e,n):this._resolveAnimations(t,r).update(e,n)}updateSharedOptions(e,t,n){e&&!tv(t)&&this._resolveAnimations(void 0,t).update(e,n)}_setStyle(e,t,n,r){e.active=r;let i=this.getStyle(t,r);this._resolveAnimations(t,n,r).update(e,{options:!r&&this.getSharedOptions(i)||i})}removeHoverStyle(e,t,n){this._setStyle(e,n,`active`,!1)}setHoverStyle(e,t,n){this._setStyle(e,n,`active`,!0)}_removeDatasetHoverStyle(){let e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,`active`,!1)}_setDatasetHoverStyle(){let e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,`active`,!0)}_resyncElements(e){let t=this._data,n=this._cachedMeta.data;for(let[e,t,n]of this._syncList)this[e](t,n);this._syncList=[];let r=n.length,i=t.length,a=Math.min(i,r);a&&this.parse(0,a),i>r?this._insertElements(r,i-r,e):i{for(e.length+=t,o=e.length-1;o>=a;o--)e[o]=e[o-t]};for(s(i),o=e;oe-t))}return e._cache.$bar}function ov(e){let t=e.iScale,n=av(t,e.type),r=t._length,i,a,o,s,c=()=>{o===32767||o===-32768||(Tm(s)&&(r=Math.min(r,Math.abs(o-s)||r)),s=o)};for(i=0,a=n.length;i0?i[e-1]:null,s=eMath.abs(s)&&(c=s,l=o),t[n.axis]=l,t._custom={barStart:c,barEnd:l,start:i,end:a,min:o,max:s}}function uv(e,t,n,r){return im(e)?lv(e,t,n,r):t[n.axis]=n.parse(e,r),t}function dv(e,t,n,r){let i=e.iScale,a=e.vScale,o=i.getLabels(),s=i===a,c=[],l,u,d,f;for(l=n,u=n+r;l=n?1:-1):Rm(e)}function mv(e){let t,n,r,i,a;return e.horizontal?(t=e.base>e.x,n=`left`,r=`right`):(t=e.basee.controller.options.grouped),i=n.options.stacked,a=[],o=this._cachedMeta.controller.getParsed(t),s=o&&o[n.axis],c=e=>{let t=e._parsed.find(e=>e[n.axis]===s),r=t&&t[e.vScale.axis];if(rm(r)||isNaN(r))return!0};for(let n of r)if(!(t!==void 0&&c(n))&&((i===!1||a.indexOf(n.stack)===-1||i===void 0&&n.stack===void 0)&&a.push(n.stack),n.index===e))break;return a.length||a.push(void 0),a}_getStackCount(e){return this._getStacks(void 0,e).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){let e=this.chart.scales,t=this.chart.options.indexAxis;return Object.keys(e).filter(n=>e[n].axis===t).shift()}_getAxis(){let e={},t=this.getFirstScaleIdForIndexAxis();for(let n of this.chart.data.datasets)e[cm(this.chart.options.indexAxis===`x`?n.xAxisID:n.yAxisID,t)]=!0;return Object.keys(e)}_getStackIndex(e,t,n){let r=this._getStacks(e,n),i=t===void 0?-1:r.indexOf(t);return i===-1?r.length-1:i}_getRuler(){let e=this.options,t=this._cachedMeta,n=t.iScale,r=[],i,a;for(i=0,a=t.data.length;i=0;--n)t=Math.max(t,e[n].size(this.resolveDataElementOptions(n))/2);return t>0&&t}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart.data.labels||[],{xScale:r,yScale:i}=t,a=this.getParsed(e),o=r.getLabelForValue(a.x),s=i.getLabelForValue(a.y),c=a._custom;return{label:n[e]||``,value:`(`+o+`, `+s+(c?`, `+c:``)+`)`}}update(e){let t=this._cachedMeta.data;this.updateElements(t,0,t.length,e)}updateElements(e,t,n,r){let i=r===`reset`,{iScale:a,vScale:o}=this._cachedMeta,{sharedOptions:s,includeOptions:c}=this._getSharedOptions(t,r),l=a.axis,u=o.axis;for(let d=t;d$m(e,s,c,!0)?1:Math.max(t,t*n,r,r*n),m=(e,t,r)=>$m(e,s,c,!0)?-1:Math.min(t,t*n,r,r*n),h=p(0,l,d),g=p(Pm,u,f),_=m(km,l,d),v=m(km+Pm,u,f);r=(h-_)/2,i=(g-v)/2,a=-(h+_)/2,o=-(g+v)/2}return{ratioX:r,ratioY:i,offsetX:a,offsetY:o}}var Cv=class extends iv{static id=`doughnut`;static defaults={datasetElementType:!1,dataElementType:`arc`,animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:`number`,properties:[`circumference`,`endAngle`,`innerRadius`,`outerRadius`,`startAngle`,`x`,`y`,`offset`,`borderWidth`,`spacing`]}},cutout:`50%`,rotation:0,circumference:360,radius:`100%`,spacing:0,indexAxis:`r`};static descriptors={_scriptable:e=>e!==`spacing`,_indexable:e=>e!==`spacing`&&!e.startsWith(`borderDash`)&&!e.startsWith(`hoverBorderDash`)};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){let t=e.data,{labels:{pointStyle:n,textAlign:r,color:i,useBorderRadius:a,borderRadius:o}}=e.legend.options;return t.labels.length&&t.datasets.length?t.labels.map((t,s)=>{let c=e.getDatasetMeta(0).controller.getStyle(s);return{text:t,fillStyle:c.backgroundColor,fontColor:i,hidden:!e.getDataVisibility(s),lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:c.borderWidth,strokeStyle:c.borderColor,textAlign:r,pointStyle:n,borderRadius:a&&(o||c.borderRadius),index:s}}):[]}},onClick(e,t,n){n.chart.toggleDataVisibility(t.index),n.chart.update()}}}};constructor(e,t){super(e,t),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(e,t){let n=this.getDataset().data,r=this._cachedMeta;if(this._parsing===!1)r._parsed=n;else{let i=e=>+n[e];if(am(n[e])){let{key:e=`value`}=this._parsing;i=t=>+Cm(n[t],e)}let a,o;for(a=e,o=e+t;a0&&!isNaN(e)?Math.abs(e)/t*Am:0}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart,r=n.data.labels||[],i=Mh(t._parsed[e],n.options.locale);return{label:r[e]||``,value:i}}getMaxBorderWidth(e){let t=0,n=this.chart,r,i,a,o,s;if(!e){for(r=0,i=n.data.datasets.length;r0&&this.getParsed(t-1);for(let n=0;n=_){v.skip=!0;continue}let b=this.getParsed(n),x=rm(b[f]),S=v[d]=a.getPixelForValue(b[d],n),C=v[f]=i||x?o.getBasePixel():o.getPixelForValue(s?this.applyStack(o,b,s):b[f],n);v.skip=isNaN(S)||isNaN(C)||x,v.stop=n>0&&Math.abs(b[d]-y[d])>h,m&&(v.parsed=b,v.raw=c.data[n]),u&&(v.options=l||this.resolveDataElementOptions(n,p.active?`active`:r)),g||this.updateElement(p,n,v,r),y=b}}getMaxOverflow(){let e=this._cachedMeta,t=e.dataset,n=t.options&&t.options.borderWidth||0,r=e.data||[];if(!r.length)return n;let i=r[0].size(this.resolveDataElementOptions(0)),a=r[r.length-1].size(this.resolveDataElementOptions(r.length-1));return Math.max(n,i,a)/2}draw(){let e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}},Tv=class extends iv{static id=`polarArea`;static defaults={dataElementType:`arc`,animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:`number`,properties:[`x`,`y`,`startAngle`,`endAngle`,`innerRadius`,`outerRadius`]}},indexAxis:`r`,startAngle:0};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){let t=e.data;if(t.labels.length&&t.datasets.length){let{labels:{pointStyle:n,color:r}}=e.legend.options;return t.labels.map((t,i)=>{let a=e.getDatasetMeta(0).controller.getStyle(i);return{text:t,fillStyle:a.backgroundColor,strokeStyle:a.borderColor,fontColor:r,lineWidth:a.borderWidth,pointStyle:n,hidden:!e.getDataVisibility(i),index:i}})}return[]}},onClick(e,t,n){n.chart.toggleDataVisibility(t.index),n.chart.update()}}},scales:{r:{type:`radialLinear`,angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(e,t){super(e,t),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart,r=n.data.labels||[],i=Mh(t._parsed[e].r,n.options.locale);return{label:r[e]||``,value:i}}parseObjectData(e,t,n,r){return Ig.bind(this)(e,t,n,r)}update(e){let t=this._cachedMeta.data;this._updateRadius(),this.updateElements(t,0,t.length,e)}getMinMax(){let e=this._cachedMeta,t={min:1/0,max:-1/0};return e.data.forEach((e,n)=>{let r=this.getParsed(n).r;!isNaN(r)&&this.chart.getDataVisibility(n)&&(rt.max&&(t.max=r))}),t}_updateRadius(){let e=this.chart,t=e.chartArea,n=e.options,r=Math.min(t.right-t.left,t.bottom-t.top),i=Math.max(r/2,0),a=(i-Math.max(n.cutoutPercentage?i/100*n.cutoutPercentage:1,0))/e.getVisibleDatasetCount();this.outerRadius=i-a*this.index,this.innerRadius=this.outerRadius-a}updateElements(e,t,n,r){let i=r===`reset`,a=this.chart,o=a.options.animation,s=this._cachedMeta.rScale,c=s.xCenter,l=s.yCenter,u=s.getIndexAngle(0)-.5*km,d=u,f,p=360/this.countVisibleElements();for(f=0;f{!isNaN(this.getParsed(n).r)&&this.chart.getDataVisibility(n)&&t++}),t}_computeAngle(e,t,n){return this.chart.getDataVisibility(e)?Km(this.resolveDataElementOptions(e,t).angle||n):0}},Ev=Object.freeze({__proto__:null,BarController:bv,BubbleController:xv,DoughnutController:Cv,LineController:wv,PieController:class extends Cv{static id=`pie`;static defaults={cutout:0,rotation:0,circumference:360,radius:`100%`}},PolarAreaController:Tv,RadarController:class extends iv{static id=`radar`;static defaults={datasetElementType:`line`,dataElementType:`point`,indexAxis:`r`,showLine:!0,elements:{line:{fill:`start`}}};static overrides={aspectRatio:1,scales:{r:{type:`radialLinear`}}};getLabelAndValue(e){let t=this._cachedMeta.vScale,n=this.getParsed(e);return{label:t.getLabels()[e],value:``+t.getLabelForValue(n[t.axis])}}parseObjectData(e,t,n,r){return Ig.bind(this)(e,t,n,r)}update(e){let t=this._cachedMeta,n=t.dataset,r=t.data||[],i=t.iScale.getLabels();if(n.points=r,e!==`resize`){let t=this.resolveDatasetElementOptions(e);this.options.showLine||(t.borderWidth=0);let a={_loop:!0,_fullLoop:i.length===r.length,options:t};this.updateElement(n,void 0,a,e)}this.updateElements(r,0,r.length,e)}updateElements(e,t,n,r){let i=this._cachedMeta.rScale,a=r===`reset`;for(let o=t;o0&&this.getParsed(t-1);for(let l=t;l0&&Math.abs(n[f]-v[f])>g,h&&(m.parsed=n,m.raw=c.data[l]),d&&(m.options=u||this.resolveDataElementOptions(l,t.active?`active`:r)),_||this.updateElement(t,l,m,r),v=n}this.updateSharedOptions(u,r,l)}getMaxOverflow(){let e=this._cachedMeta,t=e.data||[];if(!this.options.showLine){let e=0;for(let n=t.length-1;n>=0;--n)e=Math.max(e,t[n].size(this.resolveDataElementOptions(n))/2);return e>0&&e}let n=e.dataset,r=n.options&&n.options.borderWidth||0;if(!t.length)return r;let i=t[0].size(this.resolveDataElementOptions(0)),a=t[t.length-1].size(this.resolveDataElementOptions(t.length-1));return Math.max(r,i,a)/2}}});function Dv(){throw Error(`This method is not implemented: Check that a complete date adapter is provided.`)}var Ov={_date:class e{static override(t){Object.assign(e.prototype,t)}options;constructor(e){this.options=e||{}}init(){}formats(){return Dv()}parse(){return Dv()}format(){return Dv()}add(){return Dv()}diff(){return Dv()}startOf(){return Dv()}endOf(){return Dv()}}};function kv(e,t,n,r){let{controller:i,data:a,_sorted:o}=e,s=i._cachedMeta.iScale,c=e.dataset&&e.dataset.options?e.dataset.options.spanGaps:null;if(s&&t===s.axis&&t!==`r`&&o&&a.length){let o=s._reversePixels?ah:ih;if(!r){let r=o(a,t,n);if(c){let{vScale:t}=i._cachedMeta,{_parsed:n}=e,a=n.slice(0,r.lo+1).reverse().findIndex(e=>!rm(e[t.axis]));r.lo-=Math.max(0,a);let o=n.slice(r.hi).findIndex(e=>!rm(e[t.axis]));r.hi+=Math.max(0,o)}return r}else if(i._sharedOptions){let e=a[0],r=typeof e.getRange==`function`&&e.getRange(t);if(r){let e=o(a,t,n-r),i=o(a,t,n+r);return{lo:e.lo,hi:i.hi}}}}return{lo:0,hi:a.length-1}}function Av(e,t,n,r,i){let a=e.getSortedVisibleDatasetMetas(),o=n[t];for(let e=0,n=a.length;e{e[o]&&e[o](t[n],i)&&(a.push({element:e,datasetIndex:r,index:c}),s||=e.inRange(t.x,t.y,i))}),r&&!s?[]:a}var Lv={evaluateInteractionItems:Av,modes:{index(e,t,n,r){let i=n_(t,e),a=n.axis||`x`,o=n.includeInvisible||!1,s=n.intersect?Mv(e,i,a,r,o):Fv(e,i,a,!1,r,o),c=[];return s.length?(e.getSortedVisibleDatasetMetas().forEach(e=>{let t=s[0].index,n=e.data[t];n&&!n.skip&&c.push({element:n,datasetIndex:e.index,index:t})}),c):[]},dataset(e,t,n,r){let i=n_(t,e),a=n.axis||`xy`,o=n.includeInvisible||!1,s=n.intersect?Mv(e,i,a,r,o):Fv(e,i,a,!1,r,o);if(s.length>0){let t=s[0].datasetIndex,n=e.getDatasetMeta(t).data;s=[];for(let e=0;ee.pos===t)}function Bv(e,t){return e.filter(e=>Rv.indexOf(e.pos)===-1&&e.box.axis===t)}function Vv(e,t){return e.sort((e,n)=>{let r=t?n:e,i=t?e:n;return r.weight===i.weight?r.index-i.index:r.weight-i.weight})}function Hv(e){let t=[],n,r,i,a,o,s;for(n=0,r=(e||[]).length;ne.box.fullSize),!0),r=Vv(zv(t,`left`),!0),i=Vv(zv(t,`right`)),a=Vv(zv(t,`top`),!0),o=Vv(zv(t,`bottom`)),s=Bv(t,`x`),c=Bv(t,`y`);return{fullSize:n,leftAndTop:r.concat(a),rightAndBottom:i.concat(c).concat(o).concat(s),chartArea:zv(t,`chartArea`),vertical:r.concat(i).concat(c),horizontal:a.concat(o).concat(s)}}function Kv(e,t,n,r){return Math.max(e[n],t[n])+Math.max(e[r],t[r])}function qv(e,t){e.top=Math.max(e.top,t.top),e.left=Math.max(e.left,t.left),e.bottom=Math.max(e.bottom,t.bottom),e.right=Math.max(e.right,t.right)}function Jv(e,t,n,r){let{pos:i,box:a}=n,o=e.maxPadding;if(!am(i)){n.size&&(e[i]-=n.size);let t=r[n.stack]||{size:0,count:1};t.size=Math.max(t.size,n.horizontal?a.height:a.width),n.size=t.size/t.count,e[i]+=n.size}a.getPadding&&qv(o,a.getPadding());let s=Math.max(0,t.outerWidth-Kv(o,e,`left`,`right`)),c=Math.max(0,t.outerHeight-Kv(o,e,`top`,`bottom`)),l=s!==e.w,u=c!==e.h;return e.w=s,e.h=c,n.horizontal?{same:l,other:u}:{same:u,other:l}}function Yv(e){let t=e.maxPadding;function n(n){let r=Math.max(t[n]-e[n],0);return e[n]+=r,r}e.y+=n(`top`),e.x+=n(`left`),n(`right`),n(`bottom`)}function Xv(e,t){let n=t.maxPadding;function r(e){let r={left:0,top:0,right:0,bottom:0};return e.forEach(e=>{r[e]=Math.max(t[e],n[e])}),r}return r(e?[`left`,`right`]:[`top`,`bottom`])}function Zv(e,t,n,r){let i=[],a,o,s,c,l,u;for(a=0,o=e.length,l=0;a{typeof e.beforeLayout==`function`&&e.beforeLayout()});let u=c.reduce((e,t)=>t.box.options&&t.box.options.display===!1?e:e+1,0)||1,d=Object.freeze({outerWidth:t,outerHeight:n,padding:i,availableWidth:a,availableHeight:o,vBoxMaxWidth:a/2/u,hBoxMaxHeight:o/2}),f=Object.assign({},i);qv(f,fg(r));let p=Object.assign({maxPadding:f,w:a,h:o,x:i.left,y:i.top},i),m=Wv(c.concat(l),d);Zv(s.fullSize,p,d,m),Zv(c,p,d,m),Zv(l,p,d,m)&&Zv(c,p,d,m),Yv(p),$v(s.leftAndTop,p,d,m),p.x+=p.w,p.y+=p.h,$v(s.rightAndBottom,p,d,m),e.chartArea={left:p.left,top:p.top,right:p.left+p.w,bottom:p.top+p.h,height:p.h,width:p.w},fm(s.chartArea,t=>{let n=t.box;Object.assign(n,e.chartArea),n.update(p.w,p.h,{left:0,top:0,right:0,bottom:0})})}},ty=class{acquireContext(e,t){}releaseContext(e){return!1}addEventListener(e,t,n){}removeEventListener(e,t,n){}getDevicePixelRatio(){return 1}getMaximumSize(e,t,n,r){return t=Math.max(0,t||e.width),n||=e.height,{width:t,height:Math.max(0,r?Math.floor(t/r):n)}}isAttached(e){return!0}updateConfig(e){}},ny=class extends ty{acquireContext(e){return e&&e.getContext&&e.getContext(`2d`)||null}updateConfig(e){e.options.animation=!1}},ry=`$chartjs`,iy={touchstart:`mousedown`,touchmove:`mousemove`,touchend:`mouseup`,pointerenter:`mouseenter`,pointerdown:`mousedown`,pointermove:`mousemove`,pointerup:`mouseup`,pointerleave:`mouseout`,pointerout:`mouseout`},ay=e=>e===null||e===``;function oy(e,t){let n=e.style,r=e.getAttribute(`height`),i=e.getAttribute(`width`);if(e[ry]={initial:{height:r,width:i,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||`block`,n.boxSizing=n.boxSizing||`border-box`,ay(i)){let t=c_(e,`width`);t!==void 0&&(e.width=t)}if(ay(r))if(e.style.height===``)e.height=e.width/(t||2);else{let t=c_(e,`height`);t!==void 0&&(e.height=t)}return e}var sy=s_?{passive:!0}:!1;function cy(e,t,n){e&&e.addEventListener(t,n,sy)}function ly(e,t,n){e&&e.canvas&&e.canvas.removeEventListener(t,n,sy)}function uy(e,t){let n=iy[e.type]||e.type,{x:r,y:i}=n_(e,t);return{type:n,chart:t,native:e,x:r===void 0?null:r,y:i===void 0?null:i}}function dy(e,t){for(let n of e)if(n===t||n.contains(t))return!0}function fy(e,t,n){let r=e.canvas,i=new MutationObserver(e=>{let t=!1;for(let n of e)t||=dy(n.addedNodes,r),t&&=!dy(n.removedNodes,r);t&&n()});return i.observe(document,{childList:!0,subtree:!0}),i}function py(e,t,n){let r=e.canvas,i=new MutationObserver(e=>{let t=!1;for(let n of e)t||=dy(n.removedNodes,r),t&&=!dy(n.addedNodes,r);t&&n()});return i.observe(document,{childList:!0,subtree:!0}),i}var my=new Map,hy=0;function gy(){let e=window.devicePixelRatio;e!==hy&&(hy=e,my.forEach((t,n)=>{n.currentDevicePixelRatio!==e&&t()}))}function _y(e,t){my.size||window.addEventListener(`resize`,gy),my.set(e,t)}function vy(e){my.delete(e),my.size||window.removeEventListener(`resize`,gy)}function yy(e,t,n){let r=e.canvas,i=r&&Jg(r);if(!i)return;let a=fh((e,t)=>{let r=i.clientWidth;n(e,t),r{let t=e[0],n=t.contentRect.width,r=t.contentRect.height;n===0&&r===0||a(n,r)});return o.observe(i),_y(e,a),o}function by(e,t,n){n&&n.disconnect(),t===`resize`&&vy(e)}function xy(e,t,n){let r=e.canvas,i=fh(t=>{e.ctx!==null&&n(uy(t,e))},e);return cy(r,t,i),i}var Sy=class extends ty{acquireContext(e,t){let n=e&&e.getContext&&e.getContext(`2d`);return n&&n.canvas===e?(oy(e,t),n):null}releaseContext(e){let t=e.canvas;if(!t[ry])return!1;let n=t[ry].initial;[`height`,`width`].forEach(e=>{let r=n[e];rm(r)?t.removeAttribute(e):t.setAttribute(e,r)});let r=n.style||{};return Object.keys(r).forEach(e=>{t.style[e]=r[e]}),t.width=t.width,delete t[ry],!0}addEventListener(e,t,n){this.removeEventListener(e,t);let r=e.$proxies||={};r[t]=({attach:fy,detach:py,resize:yy}[t]||xy)(e,t,n)}removeEventListener(e,t){let n=e.$proxies||={},r=n[t];r&&(({attach:by,detach:by,resize:by}[t]||ly)(e,t,r),n[t]=void 0)}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(e,t,n,r){return a_(e,t,n,r)}isAttached(e){let t=e&&Jg(e);return!!(t&&t.isConnected)}};function Cy(e){return!qg()||typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas?ny:Sy}var wy=class{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(e){let{x:t,y:n}=this.getProps([`x`,`y`],e);return{x:t,y:n}}hasValue(){return Um(this.x)&&Um(this.y)}getProps(e,t){let n=this.$animations;if(!t||!n)return this;let r={};return e.forEach(e=>{r[e]=n[e]&&n[e].active()?n[e]._to:this[e]}),r}};function Ty(e,t){let n=e.options.ticks,r=Ey(e),i=Math.min(n.maxTicksLimit||r,r),a=n.major.enabled?Oy(t):[],o=a.length,s=a[0],c=a[o-1],l=[];if(o>i)return ky(t,l,a,o/i),l;let u=Dy(a,t,i);if(o>0){let e,n,r=o>1?Math.round((c-s)/(o-1)):null;for(Ay(t,l,u,rm(r)?0:s-r,s),e=0,n=o-1;ei)return t}return Math.max(i,1)}function Oy(e){let t=[],n,r;for(n=0,r=e.length;ne===`left`?`right`:e===`right`?`left`:e,Ny=(e,t,n)=>t===`top`||t===`left`?e[t]+n:e[t]-n,Py=(e,t)=>Math.min(t||e,e);function Fy(e,t){let n=[],r=e.length/t,i=e.length,a=0;for(;ao+s)))return c}function Ly(e,t){fm(e,e=>{let n=e.gc,r=n.length/2,i;if(r>t){for(i=0;in?n:t,n=r&&t>n?t:n,{min:sm(t,sm(n,t)),max:sm(n,sm(t,n))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){let e=this.chart.data;return this.options.labels||(this.isHorizontal()?e.xLabels:e.yLabels)||e.labels||[]}getLabelItems(e=this.chart.chartArea){return this._labelItems||=this._computeLabelItems(e)}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){dm(this.options.beforeUpdate,[this])}update(e,t,n){let{beginAtZero:r,grace:i,ticks:a}=this.options,o=a.sampleSize;this.beforeUpdate(),this.maxWidth=e,this.maxHeight=t,this._margins=n=Object.assign({left:0,right:0,top:0,bottom:0},n),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+n.left+n.right:this.height+n.top+n.bottom,this._dataLimitsCached||=(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=hg(this,i,r),!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();let s=o=i||n<=1||!this.isHorizontal()){this.labelRotation=r;return}let l=this._getLabelSizes(),u=l.widest.width,d=l.highest.height,f=eh(this.chart.width-u,0,this.maxWidth);o=e.offset?this.maxWidth/n:f/(n-1),u+6>o&&(o=f/(n-(e.offset?.5:1)),s=this.maxHeight-Ry(e.grid)-t.padding-zy(e.title,this.chart.options.font),c=Math.sqrt(u*u+d*d),a=qm(Math.min(Math.asin(eh((l.highest.height+6)/o,-1,1)),Math.asin(eh(s/c,-1,1))-Math.asin(eh(d/c,-1,1)))),a=Math.max(r,Math.min(i,a))),this.labelRotation=a}afterCalculateLabelRotation(){dm(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){dm(this.options.beforeFit,[this])}fit(){let e={width:0,height:0},{chart:t,options:{ticks:n,title:r,grid:i}}=this,a=this._isVisible(),o=this.isHorizontal();if(a){let a=zy(r,t.options.font);if(o?(e.width=this.maxWidth,e.height=Ry(i)+a):(e.height=this.maxHeight,e.width=Ry(i)+a),n.display&&this.ticks.length){let{first:t,last:r,widest:i,highest:a}=this._getLabelSizes(),s=n.padding*2,c=Km(this.labelRotation),l=Math.cos(c),u=Math.sin(c);if(o){let t=n.mirror?0:u*i.width+l*a.height;e.height=Math.min(this.maxHeight,e.height+t+s)}else{let t=n.mirror?0:l*i.width+u*a.height;e.width=Math.min(this.maxWidth,e.width+t+s)}this._calculatePadding(t,r,u,l)}}this._handleMargins(),o?(this.width=this._length=t.width-this._margins.left-this._margins.right,this.height=e.height):(this.width=e.width,this.height=this._length=t.height-this._margins.top-this._margins.bottom)}_calculatePadding(e,t,n,r){let{ticks:{align:i,padding:a},position:o}=this.options,s=this.labelRotation!==0,c=o!==`top`&&this.axis===`x`;if(this.isHorizontal()){let o=this.getPixelForTick(0)-this.left,l=this.right-this.getPixelForTick(this.ticks.length-1),u=0,d=0;s?c?(u=r*e.width,d=n*t.height):(u=n*e.height,d=r*t.width):i===`start`?d=t.width:i===`end`?u=e.width:i!==`inner`&&(u=e.width/2,d=t.width/2),this.paddingLeft=Math.max((u-o+a)*this.width/(this.width-o),0),this.paddingRight=Math.max((d-l+a)*this.width/(this.width-l),0)}else{let n=t.height/2,r=e.height/2;i===`start`?(n=0,r=e.height):i===`end`&&(n=t.height,r=0),this.paddingTop=n+a,this.paddingBottom=r+a}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){dm(this.options.afterFit,[this])}isHorizontal(){let{axis:e,position:t}=this.options;return t===`top`||t===`bottom`||e===`x`}isFullSize(){return this.options.fullSize}_convertTicksToLabels(e){this.beforeTickToLabelConversion(),this.generateTickLabels(e);let t,n;for(t=0,n=e.length;t({width:a[e]||0,height:o[e]||0});return{first:C(0),last:C(t-1),widest:C(x),highest:C(S),widths:a,heights:o}}getLabelForValue(e){return e}getPixelForValue(e,t){return NaN}getValueForPixel(e){}getPixelForTick(e){let t=this.ticks;return e<0||e>t.length-1?null:this.getPixelForValue(t[e].value)}getPixelForDecimal(e){this._reversePixels&&(e=1-e);let t=this._startPixel+e*this._length;return th(this._alignToPixels?Gh(this.chart,t,0):t)}getDecimalForPixel(e){let t=(e-this._startPixel)/this._length;return this._reversePixels?1-t:t}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){let{min:e,max:t}=this;return e<0&&t<0?t:e>0&&t>0?e:0}getContext(e){let t=this.ticks||[];if(e>=0&&eo*r?o/n:s/r:s*r0:!!e}_computeGridLineItems(e){let t=this.axis,n=this.chart,r=this.options,{grid:i,position:a,border:o}=r,s=i.offset,c=this.isHorizontal(),l=this.ticks.length+ +!!s,u=Ry(i),d=[],f=o.setContext(this.getContext()),p=f.display?f.width:0,m=p/2,h=function(e){return Gh(n,e,p)},g,_,v,y,b,x,S,C,w,T,E,ee;if(a===`top`)g=h(this.bottom),x=this.bottom-u,C=g-m,T=h(e.top)+m,ee=e.bottom;else if(a===`bottom`)g=h(this.top),T=e.top,ee=h(e.bottom)-m,x=g+m,C=this.top+u;else if(a===`left`)g=h(this.right),b=this.right-u,S=g-m,w=h(e.left)+m,E=e.right;else if(a===`right`)g=h(this.left),w=e.left,E=h(e.right)-m,b=g+m,S=this.left+u;else if(t===`x`){if(a===`center`)g=h((e.top+e.bottom)/2+.5);else if(am(a)){let e=Object.keys(a)[0],t=a[e];g=h(this.chart.scales[e].getPixelForValue(t))}T=e.top,ee=e.bottom,x=g+m,C=x+u}else if(t===`y`){if(a===`center`)g=h((e.left+e.right)/2);else if(am(a)){let e=Object.keys(a)[0],t=a[e];g=h(this.chart.scales[e].getPixelForValue(t))}b=g-m,S=b-u,w=e.left,E=e.right}let te=cm(r.ticks.maxTicksLimit,l),ne=Math.max(1,Math.ceil(l/te));for(_=0;_0&&(a-=r/2);break}f={left:a,top:i,width:r+t.width,height:n+t.height,color:e.backdropColor}}h.push({label:y,font:w,textOffset:ee,options:{rotation:m,color:n,strokeColor:s,strokeWidth:l,textAlign:d,textBaseline:te,translation:[b,x],backdrop:f}})}return h}_getXAxisLabelAlignment(){let{position:e,ticks:t}=this.options;if(-Km(this.labelRotation))return e===`top`?`left`:`right`;let n=`center`;return t.align===`start`?n=`left`:t.align===`end`?n=`right`:t.align===`inner`&&(n=`inner`),n}_getYAxisLabelAlignment(e){let{position:t,ticks:{crossAlign:n,mirror:r,padding:i}}=this.options,a=this._getLabelSizes(),o=e+i,s=a.widest.width,c,l;return t===`left`?r?(l=this.right+i,n===`near`?c=`left`:n===`center`?(c=`center`,l+=s/2):(c=`right`,l+=s)):(l=this.right-o,n===`near`?c=`right`:n===`center`?(c=`center`,l-=s/2):(c=`left`,l=this.left)):t===`right`?r?(l=this.left+i,n===`near`?c=`right`:n===`center`?(c=`center`,l-=s/2):(c=`left`,l-=s)):(l=this.left+o,n===`near`?c=`left`:n===`center`?(c=`center`,l+=s/2):(c=`right`,l=this.right)):c=`right`,{textAlign:c,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;let e=this.chart,t=this.options.position;if(t===`left`||t===`right`)return{top:0,left:this.left,bottom:e.height,right:this.right};if(t===`top`||t===`bottom`)return{top:this.top,left:0,bottom:this.bottom,right:e.width}}drawBackground(){let{ctx:e,options:{backgroundColor:t},left:n,top:r,width:i,height:a}=this;t&&(e.save(),e.fillStyle=t,e.fillRect(n,r,i,a),e.restore())}getLineWidthForValue(e){let t=this.options.grid;if(!this._isVisible()||!t.display)return 0;let n=this.ticks.findIndex(t=>t.value===e);return n>=0?t.setContext(this.getContext(n)).lineWidth:0}drawGrid(e){let t=this.options.grid,n=this.ctx,r=this._gridLineItems||=this._computeGridLineItems(e),i,a,o=(e,t,r)=>{!r.width||!r.color||(n.save(),n.lineWidth=r.width,n.strokeStyle=r.color,n.setLineDash(r.borderDash||[]),n.lineDashOffset=r.borderDashOffset,n.beginPath(),n.moveTo(e.x,e.y),n.lineTo(t.x,t.y),n.stroke(),n.restore())};if(t.display)for(i=0,a=r.length;i{this.draw(e)}}]:[{z:r,draw:e=>{this.drawBackground(),this.drawGrid(e),this.drawTitle()}},{z:i,draw:()=>{this.drawBorder()}},{z:n,draw:e=>{this.drawLabels(e)}}]}getMatchingVisibleMetas(e){let t=this.chart.getSortedVisibleDatasetMetas(),n=this.axis+`AxisID`,r=[],i,a;for(i=0,a=t.length;i{let r=n.split(`.`),i=r.pop(),a=[e].concat(r).join(`.`),o=t[n].split(`.`),s=o.pop(),c=o.join(`.`);Vh.route(a,i,c,s)})}function Jy(e){return`id`in e&&`defaults`in e}var Yy=new class{constructor(){this.controllers=new Gy(iv,`datasets`,!0),this.elements=new Gy(wy,`elements`),this.plugins=new Gy(Object,`plugins`),this.scales=new Gy(Wy,`scales`),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...e){this._each(`register`,e)}remove(...e){this._each(`unregister`,e)}addControllers(...e){this._each(`register`,e,this.controllers)}addElements(...e){this._each(`register`,e,this.elements)}addPlugins(...e){this._each(`register`,e,this.plugins)}addScales(...e){this._each(`register`,e,this.scales)}getController(e){return this._get(e,this.controllers,`controller`)}getElement(e){return this._get(e,this.elements,`element`)}getPlugin(e){return this._get(e,this.plugins,`plugin`)}getScale(e){return this._get(e,this.scales,`scale`)}removeControllers(...e){this._each(`unregister`,e,this.controllers)}removeElements(...e){this._each(`unregister`,e,this.elements)}removePlugins(...e){this._each(`unregister`,e,this.plugins)}removeScales(...e){this._each(`unregister`,e,this.scales)}_each(e,t,n){[...t].forEach(t=>{let r=n||this._getRegistryForType(t);n||r.isForType(t)||r===this.plugins&&t.id?this._exec(e,r,t):fm(t,t=>{let r=n||this._getRegistryForType(t);this._exec(e,r,t)})})}_exec(e,t,n){let r=wm(e);dm(n[`before`+r],[],n),t[e](n),dm(n[`after`+r],[],n)}_getRegistryForType(e){for(let t=0;te.filter(e=>!t.some(t=>e.plugin.id===t.plugin.id));this._notify(r(t,n),e,`stop`),this._notify(r(n,t),e,`start`)}};function Zy(e){let t={},n=[],r=Object.keys(Yy.plugins.items);for(let e=0;e1&&ib(e[0].toLowerCase());if(t)return t}throw Error(`Cannot determine type of '${e}' axis. Please provide 'axis' or 'position' option.`)}function sb(e,t,n){if(n[t+`AxisID`]===e)return{axis:t}}function cb(e,t){if(t.data&&t.data.datasets){let n=t.data.datasets.filter(t=>t.xAxisID===e||t.yAxisID===e);if(n.length)return sb(e,`x`,n[0])||sb(e,`y`,n[0])}return{}}function lb(e,t){let n=Lh[e.type]||{scales:{}},r=t.scales||{},i=tb(e.type,t),a=Object.create(null);return Object.keys(r).forEach(t=>{let o=r[t];if(!am(o))return console.error(`Invalid scale configuration for scale: ${t}`);if(o._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);let s=ob(t,o,cb(t,e),Vh.scales[o.type]),c=rb(s,i),l=n.scales||{};a[t]=vm(Object.create(null),[{axis:s},o,l[s],l[c]])}),e.data.datasets.forEach(n=>{let i=n.type||e.type,o=n.indexAxis||tb(i,t),s=(Lh[i]||{}).scales||{};Object.keys(s).forEach(e=>{let t=nb(e,o),i=n[t+`AxisID`]||t;a[i]=a[i]||Object.create(null),vm(a[i],[{axis:t},r[i],s[e]])})}),Object.keys(a).forEach(e=>{let t=a[e];vm(t,[Vh.scales[t.type],Vh.scale])}),a}function ub(e){let t=e.options||={};t.plugins=cm(t.plugins,{}),t.scales=lb(e,t)}function db(e){return e||={},e.datasets=e.datasets||[],e.labels=e.labels||[],e}function fb(e){return e||={},e.data=db(e.data),ub(e),e}var pb=new Map,mb=new Set;function hb(e,t){let n=pb.get(e);return n||(n=t(),pb.set(e,n),mb.add(n)),n}var gb=(e,t,n)=>{let r=Cm(t,n);r!==void 0&&e.add(r)},_b=class{constructor(e){this._config=fb(e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(e){this._config.type=e}get data(){return this._config.data}set data(e){this._config.data=db(e)}get options(){return this._config.options}set options(e){this._config.options=e}get plugins(){return this._config.plugins}update(){let e=this._config;this.clearCache(),ub(e)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(e){return hb(e,()=>[[`datasets.${e}`,``]])}datasetAnimationScopeKeys(e,t){return hb(`${e}.transition.${t}`,()=>[[`datasets.${e}.transitions.${t}`,`transitions.${t}`],[`datasets.${e}`,``]])}datasetElementScopeKeys(e,t){return hb(`${e}-${t}`,()=>[[`datasets.${e}.elements.${t}`,`datasets.${e}`,`elements.${t}`,``]])}pluginScopeKeys(e){let t=e.id,n=this.type;return hb(`${n}-plugin-${t}`,()=>[[`plugins.${t}`,...e.additionalOptionScopes||[]]])}_cachedScopes(e,t){let n=this._scopeCache,r=n.get(e);return(!r||t)&&(r=new Map,n.set(e,r)),r}getOptionScopes(e,t,n){let{options:r,type:i}=this,a=this._cachedScopes(e,n),o=a.get(t);if(o)return o;let s=new Set;t.forEach(t=>{e&&(s.add(e),t.forEach(t=>gb(s,e,t))),t.forEach(e=>gb(s,r,e)),t.forEach(e=>gb(s,Lh[i]||{},e)),t.forEach(e=>gb(s,Vh,e)),t.forEach(e=>gb(s,Rh,e))});let c=Array.from(s);return c.length===0&&c.push(Object.create(null)),mb.has(t)&&a.set(t,c),c}chartOptionScopes(){let{options:e,type:t}=this;return[e,Lh[t]||{},Vh.datasets[t]||{},{type:t},Vh,Rh]}resolveNamedOptions(e,t,n,r=[``]){let i={$shared:!0},{resolver:a,subPrefixes:o}=vb(this._resolverCache,e,r),s=a;if(bb(a,t)){i.$shared=!1,n=Em(n)?n():n;let t=this.createResolver(e,n,o);s=vg(a,n,t)}for(let e of t)i[e]=s[e];return i}createResolver(e,t,n=[``],r){let{resolver:i}=vb(this._resolverCache,e,n);return am(t)?vg(i,t,void 0,r):i}};function vb(e,t,n){let r=e.get(t);r||(r=new Map,e.set(t,r));let i=n.join(),a=r.get(i);return a||(a={resolver:_g(t,n),subPrefixes:n.filter(e=>!e.toLowerCase().includes(`hover`))},r.set(i,a)),a}var yb=e=>am(e)&&Object.getOwnPropertyNames(e).some(t=>Em(e[t]));function bb(e,t){let{isScriptable:n,isIndexable:r}=yg(e);for(let i of t){let t=n(i),a=r(i),o=(a||t)&&e[i];if(t&&(Em(o)||yb(o))||a&&im(o))return!0}return!1}var xb=`4.5.1`,Sb=[`top`,`bottom`,`left`,`right`,`chartArea`];function Cb(e,t){return e===`top`||e===`bottom`||Sb.indexOf(e)===-1&&t===`x`}function wb(e,t){return function(n,r){return n[e]===r[e]?n[t]-r[t]:n[e]-r[e]}}function Tb(e){let t=e.chart,n=t.options.animation;t.notifyPlugins(`afterRender`),dm(n&&n.onComplete,[e],t)}function Eb(e){let t=e.chart,n=t.options.animation;dm(n&&n.onProgress,[e],t)}function Db(e){return qg()&&typeof e==`string`?e=document.getElementById(e):e&&e.length&&(e=e[0]),e&&e.canvas&&(e=e.canvas),e}var Ob={},kb=e=>{let t=Db(e);return Object.values(Ob).filter(e=>e.canvas===t).pop()};function Ab(e,t,n){let r=Object.keys(e);for(let i of r){let r=+i;if(r>=t){let a=e[i];delete e[i],(n>0||r>t)&&(e[r+n]=a)}}}function jb(e,t,n,r){return!n||e.type===`mouseout`?null:r?t:e}var Mb=class{static defaults=Vh;static instances=Ob;static overrides=Lh;static registry=Yy;static version=xb;static getChart=kb;static register(...e){Yy.add(...e),Nb()}static unregister(...e){Yy.remove(...e),Nb()}constructor(e,t){let n=this.config=new _b(t),r=Db(e),i=kb(r);if(i)throw Error(`Canvas is already in use. Chart with ID '`+i.id+`' must be destroyed before the canvas with ID '`+i.canvas.id+`' can be reused.`);let a=n.createResolver(n.chartOptionScopes(),this.getContext());this.platform=new(n.platform||(Cy(r))),this.platform.updateConfig(n);let o=this.platform.acquireContext(r,a.aspectRatio),s=o&&o.canvas,c=s&&s.height,l=s&&s.width;if(this.id=nm(),this.ctx=o,this.canvas=s,this.width=l,this.height=c,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Xy,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=ph(e=>this.update(e),a.resizeDelay||0),this._dataChanges=[],Ob[this.id]=this,!o||!s){console.error(`Failed to create chart: can't acquire context from the given item`);return}M_.listen(this,`complete`,Tb),M_.listen(this,`progress`,Eb),this._initialize(),this.attached&&this.update()}get aspectRatio(){let{options:{aspectRatio:e,maintainAspectRatio:t},width:n,height:r,_aspectRatio:i}=this;return rm(e)?t&&i?i:r?n/r:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return Yy}_initialize(){return this.notifyPlugins(`beforeInit`),this.options.responsive?this.resize():o_(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins(`afterInit`),this}clear(){return Kh(this.canvas,this.ctx),this}stop(){return M_.stop(this),this}resize(e,t){M_.running(this)?this._resizeBeforeDraw={width:e,height:t}:this._resize(e,t)}_resize(e,t){let n=this.options,r=this.canvas,i=n.maintainAspectRatio&&this.aspectRatio,a=this.platform.getMaximumSize(r,e,t,i),o=n.devicePixelRatio||this.platform.getDevicePixelRatio(),s=this.width?`resize`:`attach`;this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,o_(this,o,!0)&&(this.notifyPlugins(`resize`,{size:a}),dm(n.onResize,[this,a],this),this.attached&&this._doResize(s)&&this.render())}ensureScalesHaveIDs(){fm(this.options.scales||{},(e,t)=>{e.id=t})}buildOrUpdateScales(){let e=this.options,t=e.scales,n=this.scales,r=Object.keys(n).reduce((e,t)=>(e[t]=!1,e),{}),i=[];t&&(i=i.concat(Object.keys(t).map(e=>{let n=t[e],r=ob(e,n),i=r===`r`,a=r===`x`;return{options:n,dposition:i?`chartArea`:a?`bottom`:`left`,dtype:i?`radialLinear`:a?`category`:`linear`}}))),fm(i,t=>{let i=t.options,a=i.id,o=ob(a,i),s=cm(i.type,t.dtype);(i.position===void 0||Cb(i.position,o)!==Cb(t.dposition))&&(i.position=t.dposition),r[a]=!0;let c=null;a in n&&n[a].type===s?c=n[a]:(c=new(Yy.getScale(s))({id:a,type:s,ctx:this.ctx,chart:this}),n[c.id]=c),c.init(i,e)}),fm(r,(e,t)=>{e||delete n[t]}),fm(n,e=>{ey.configure(this,e,e.options),ey.addBox(this,e)})}_updateMetasets(){let e=this._metasets,t=this.data.datasets.length,n=e.length;if(e.sort((e,t)=>e.index-t.index),n>t){for(let e=t;et.length&&delete this._stacks,e.forEach((e,n)=>{t.filter(t=>t===e._dataset).length===0&&this._destroyDatasetMeta(n)})}buildOrUpdateControllers(){let e=[],t=this.data.datasets,n,r;for(this._removeUnreferencedMetasets(),n=0,r=t.length;n{this.getDatasetMeta(t).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins(`reset`)}update(e){let t=this.config;t.update();let n=this._options=t.createResolver(t.chartOptionScopes(),this.getContext()),r=this._animationsDisabled=!n.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins(`beforeUpdate`,{mode:e,cancelable:!0})===!1)return;let i=this.buildOrUpdateControllers();this.notifyPlugins(`beforeElementsUpdate`);let a=0;for(let e=0,t=this.data.datasets.length;e{e.reset()}),this._updateDatasets(e),this.notifyPlugins(`afterUpdate`,{mode:e}),this._layers.sort(wb(`z`,`_idx`));let{_active:o,_lastEvent:s}=this;s?this._eventHandler(s,!0):o.length&&this._updateHoverStyles(o,o,!0),this.render()}_updateScales(){fm(this.scales,e=>{ey.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){let e=this.options;(!Dm(new Set(Object.keys(this._listeners)),new Set(e.events))||!!this._responsiveListeners!==e.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){let{_hiddenIndices:e}=this,t=this._getUniformDataChanges()||[];for(let{method:n,start:r,count:i}of t)Ab(e,r,n===`_removeElements`?-i:i)}_getUniformDataChanges(){let e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];let t=this.data.datasets.length,n=t=>new Set(e.filter(e=>e[0]===t).map((e,t)=>t+`,`+e.splice(1).join(`,`))),r=n(0);for(let e=1;ee.split(`,`)).map(e=>({method:e[1],start:+e[2],count:+e[3]}))}_updateLayout(e){if(this.notifyPlugins(`beforeLayout`,{cancelable:!0})===!1)return;ey.update(this,this.width,this.height,e);let t=this.chartArea,n=t.width<=0||t.height<=0;this._layers=[],fm(this.boxes,e=>{n&&e.position===`chartArea`||(e.configure&&e.configure(),this._layers.push(...e._layers()))},this),this._layers.forEach((e,t)=>{e._idx=t}),this.notifyPlugins(`afterLayout`)}_updateDatasets(e){if(this.notifyPlugins(`beforeDatasetsUpdate`,{mode:e,cancelable:!0})!==!1){for(let e=0,t=this.data.datasets.length;e=0;--t)this._drawDataset(e[t]);this.notifyPlugins(`afterDatasetsDraw`)}_drawDataset(e){let t=this.ctx,n={meta:e,index:e.index,cancelable:!0},r=j_(this,e);this.notifyPlugins(`beforeDatasetDraw`,n)!==!1&&(r&&Xh(t,r),e.controller.draw(),r&&Zh(t),n.cancelable=!1,this.notifyPlugins(`afterDatasetDraw`,n))}isPointInArea(e){return Yh(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,t,n,r){let i=Lv.modes[t];return typeof i==`function`?i(this,e,n,r):[]}getDatasetMeta(e){let t=this.data.datasets[e],n=this._metasets,r=n.filter(e=>e&&e._dataset===t).pop();return r||(r={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:t&&t.order||0,index:e,_dataset:t,_parsed:[],_sorted:!1},n.push(r)),r}getContext(){return this.$context||=gg(null,{chart:this,type:`chart`})}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){let t=this.data.datasets[e];if(!t)return!1;let n=this.getDatasetMeta(e);return typeof n.hidden==`boolean`?!n.hidden:!t.hidden}setDatasetVisibility(e,t){let n=this.getDatasetMeta(e);n.hidden=!t}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,t,n){let r=n?`show`:`hide`,i=this.getDatasetMeta(e),a=i.controller._resolveAnimations(void 0,r);Tm(t)?(i.data[t].hidden=!n,this.update()):(this.setDatasetVisibility(e,n),a.update(i,{visible:n}),this.update(t=>t.datasetIndex===e?r:void 0))}hide(e,t){this._updateVisibility(e,t,!1)}show(e,t){this._updateVisibility(e,t,!0)}_destroyDatasetMeta(e){let t=this._metasets[e];t&&t.controller&&t.controller._destroy(),delete this._metasets[e]}_stop(){let e,t;for(this.stop(),M_.remove(this),e=0,t=this.data.datasets.length;e{t.addEventListener(this,n,r),e[n]=r},r=(e,t,n)=>{e.offsetX=t,e.offsetY=n,this._eventHandler(e)};fm(this.options.events,e=>n(e,r))}bindResponsiveEvents(){this._responsiveListeners||={};let e=this._responsiveListeners,t=this.platform,n=(n,r)=>{t.addEventListener(this,n,r),e[n]=r},r=(n,r)=>{e[n]&&(t.removeEventListener(this,n,r),delete e[n])},i=(e,t)=>{this.canvas&&this.resize(e,t)},a,o=()=>{r(`attach`,o),this.attached=!0,this.resize(),n(`resize`,i),n(`detach`,a)};a=()=>{this.attached=!1,r(`resize`,i),this._stop(),this._resize(0,0),n(`attach`,o)},t.isAttached(this.canvas)?o():a()}unbindEvents(){fm(this._listeners,(e,t)=>{this.platform.removeEventListener(this,t,e)}),this._listeners={},fm(this._responsiveListeners,(e,t)=>{this.platform.removeEventListener(this,t,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,t,n){let r=n?`set`:`remove`,i,a,o,s;for(t===`dataset`&&(i=this.getDatasetMeta(e[0].datasetIndex),i.controller[`_`+r+`DatasetHoverStyle`]()),o=0,s=e.length;o{let n=this.getDatasetMeta(e);if(!n)throw Error(`No dataset found at index `+e);return{datasetIndex:e,element:n.data[t],index:t}});pm(n,t)||(this._active=n,this._lastEvent=null,this._updateHoverStyles(n,t))}notifyPlugins(e,t,n){return this._plugins.notify(this,e,t,n)}isPluginEnabled(e){return this._plugins._cache.filter(t=>t.plugin.id===e).length===1}_updateHoverStyles(e,t,n){let r=this.options.hover,i=(e,t)=>e.filter(e=>!t.some(t=>e.datasetIndex===t.datasetIndex&&e.index===t.index)),a=i(t,e),o=n?e:i(e,t);a.length&&this.updateHoverStyle(a,r.mode,!1),o.length&&r.mode&&this.updateHoverStyle(o,r.mode,!0)}_eventHandler(e,t){let n={event:e,replay:t,cancelable:!0,inChartArea:this.isPointInArea(e)},r=t=>(t.options.events||this.options.events).includes(e.native.type);if(this.notifyPlugins(`beforeEvent`,n,r)===!1)return;let i=this._handleEvent(e,t,n.inChartArea);return n.cancelable=!1,this.notifyPlugins(`afterEvent`,n,r),(i||n.changed)&&this.render(),this}_handleEvent(e,t,n){let{_active:r=[],options:i}=this,a=t,o=this._getActiveElements(e,r,n,a),s=Om(e),c=jb(e,this._lastEvent,n,s);n&&(this._lastEvent=null,dm(i.onHover,[e,o,this],this),s&&dm(i.onClick,[e,o,this],this));let l=!pm(o,r);return(l||t)&&(this._active=o,this._updateHoverStyles(o,r,t)),this._lastEvent=c,l}_getActiveElements(e,t,n,r){if(e.type===`mouseout`)return[];if(!n)return t;let i=this.options.hover;return this.getElementsAtEventForMode(e,i.mode,i,r)}};function Nb(){return fm(Mb.instances,e=>e._plugins.invalidate())}function Pb(e,t,n){let{startAngle:r,x:i,y:a,outerRadius:o,innerRadius:s,options:c}=t,{borderWidth:l,borderJoinStyle:u}=c,d=Math.min(l/o,Qm(r-n));if(e.beginPath(),e.arc(i,a,o-l/2,r+d/2,n-d/2),s>0){let t=Math.min(l/s,Qm(r-n));e.arc(i,a,s+l/2,n-t/2,r+t/2,!0)}else{let t=Math.min(l/2,o*Qm(r-n));if(u===`round`)e.arc(i,a,t,n-km/2,r+km/2,!0);else if(u===`bevel`){let o=2*t*t,s=-o*Math.cos(n+km/2)+i,c=-o*Math.sin(n+km/2)+a,l=o*Math.cos(r+km/2)+i,u=o*Math.sin(r+km/2)+a;e.lineTo(s,c),e.lineTo(l,u)}}e.closePath(),e.moveTo(0,0),e.rect(0,0,e.canvas.width,e.canvas.height),e.clip(`evenodd`)}function Fb(e,t,n){let{startAngle:r,pixelMargin:i,x:a,y:o,outerRadius:s,innerRadius:c}=t,l=i/s;e.beginPath(),e.arc(a,o,s,r-l,n+l),c>i?(l=i/c,e.arc(a,o,c,n+l,r-l,!0)):e.arc(a,o,i,n+Pm,r-Pm),e.closePath(),e.clip()}function Ib(e){return lg(e,[`outerStart`,`outerEnd`,`innerStart`,`innerEnd`])}function Lb(e,t,n,r){let i=Ib(e.options.borderRadius),a=(n-t)/2,o=Math.min(a,r*t/2),s=e=>{let t=(n-Math.min(a,e))*r/2;return eh(e,0,Math.min(a,t))};return{outerStart:s(i.outerStart),outerEnd:s(i.outerEnd),innerStart:eh(i.innerStart,0,o),innerEnd:eh(i.innerEnd,0,o)}}function Rb(e,t,n,r){return{x:n+e*Math.cos(t),y:r+e*Math.sin(t)}}function zb(e,t,n,r,i,a){let{x:o,y:s,startAngle:c,pixelMargin:l,innerRadius:u}=t,d=Math.max(t.outerRadius+r+n-l,0),f=u>0?u+r+n+l:0,p=0,m=i-c;if(r){let e=((u>0?u-r:0)+(d>0?d-r:0))/2;p=(m-(e===0?m:m*e/(e+r)))/2}let h=(m-Math.max(.001,m*d-n/km)/d)/2,g=c+h+p,_=i-h-p,{outerStart:v,outerEnd:y,innerStart:b,innerEnd:x}=Lb(t,f,d,_-g),S=d-v,C=d-y,w=g+v/S,T=_-y/C,E=f+b,ee=f+x,te=g+b/E,ne=_-x/ee;if(e.beginPath(),a){let t=(w+T)/2;if(e.arc(o,s,d,w,t),e.arc(o,s,d,t,T),y>0){let t=Rb(C,T,o,s);e.arc(t.x,t.y,y,T,_+Pm)}let n=Rb(ee,_,o,s);if(e.lineTo(n.x,n.y),x>0){let t=Rb(ee,ne,o,s);e.arc(t.x,t.y,x,_+Pm,ne+Math.PI)}let r=(_-x/f+(g+b/f))/2;if(e.arc(o,s,f,_-x/f,r,!0),e.arc(o,s,f,r,g+b/f,!0),b>0){let t=Rb(E,te,o,s);e.arc(t.x,t.y,b,te+Math.PI,g-Pm)}let i=Rb(S,g,o,s);if(e.lineTo(i.x,i.y),v>0){let t=Rb(S,w,o,s);e.arc(t.x,t.y,v,g-Pm,w)}}else{e.moveTo(o,s);let t=Math.cos(w)*d+o,n=Math.sin(w)*d+s;e.lineTo(t,n);let r=Math.cos(T)*d+o,i=Math.sin(T)*d+s;e.lineTo(r,i)}e.closePath()}function Bb(e,t,n,r,i){let{fullCircles:a,startAngle:o,circumference:s}=t,c=t.endAngle;if(a){zb(e,t,n,r,c,i);for(let t=0;t=km&&p===0&&u!==`miter`&&Pb(e,t,h),a||(zb(e,t,n,r,h,i),e.stroke())}var Hb=class extends wy{static id=`arc`;static defaults={borderAlign:`center`,borderColor:`#fff`,borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0,selfJoin:!1};static defaultRoutes={backgroundColor:`backgroundColor`};static descriptors={_scriptable:!0,_indexable:e=>e!==`borderDash`};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(e){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,e&&Object.assign(this,e)}inRange(e,t,n){let{angle:r,distance:i}=Ym(this.getProps([`x`,`y`],n),{x:e,y:t}),{startAngle:a,endAngle:o,innerRadius:s,outerRadius:c,circumference:l}=this.getProps([`startAngle`,`endAngle`,`innerRadius`,`outerRadius`,`circumference`],n),u=(this.options.spacing+this.options.borderWidth)/2,d=cm(l,o-a),f=$m(r,a,o)&&a!==o,p=d>=Am||f,m=nh(i,s+u,c+u);return p&&m}getCenterPoint(e){let{x:t,y:n,startAngle:r,endAngle:i,innerRadius:a,outerRadius:o}=this.getProps([`x`,`y`,`startAngle`,`endAngle`,`innerRadius`,`outerRadius`],e),{offset:s,spacing:c}=this.options,l=(r+i)/2,u=(a+o+c+s)/2;return{x:t+Math.cos(l)*u,y:n+Math.sin(l)*u}}tooltipPosition(e){return this.getCenterPoint(e)}draw(e){let{options:t,circumference:n}=this,r=(t.offset||0)/4,i=(t.spacing||0)/2,a=t.circular;if(this.pixelMargin=t.borderAlign===`inner`?.33:0,this.fullCircles=n>Am?Math.floor(n/Am):0,n===0||this.innerRadius<0||this.outerRadius<0)return;e.save();let o=(this.startAngle+this.endAngle)/2;e.translate(Math.cos(o)*r,Math.sin(o)*r);let s=r*(1-Math.sin(Math.min(km,n||0)));e.fillStyle=t.backgroundColor,e.strokeStyle=t.borderColor,Bb(e,this,s,i,a),Vb(e,this,s,i,a),e.restore()}};function Ub(e,t,n=t){e.lineCap=cm(n.borderCapStyle,t.borderCapStyle),e.setLineDash(cm(n.borderDash,t.borderDash)),e.lineDashOffset=cm(n.borderDashOffset,t.borderDashOffset),e.lineJoin=cm(n.borderJoinStyle,t.borderJoinStyle),e.lineWidth=cm(n.borderWidth,t.borderWidth),e.strokeStyle=cm(n.borderColor,t.borderColor)}function Wb(e,t,n){e.lineTo(n.x,n.y)}function Gb(e){return e.stepped?Qh:e.tension||e.cubicInterpolationMode===`monotone`?$h:Wb}function Kb(e,t,n={}){let r=e.length,{start:i=0,end:a=r-1}=n,{start:o,end:s}=t,c=Math.max(i,o),l=Math.min(a,s),u=is&&a>s;return{count:r,start:c,loop:t.loop,ilen:l(o+(l?s-e:e))%a,y=()=>{h!==g&&(e.lineTo(u,g),e.lineTo(u,h),e.lineTo(u,_))};for(c&&(p=i[v(0)],e.moveTo(p.x,p.y)),f=0;f<=s;++f){if(p=i[v(f)],p.skip)continue;let t=p.x,n=p.y,r=t|0;r===m?(ng&&(g=n),u=(d*u+t)/++d):(y(),e.lineTo(t,n),m=r,d=0,h=g=n),_=n}y()}function Yb(e){let t=e.options,n=t.borderDash&&t.borderDash.length;return!e._decimated&&!e._loop&&!t.tension&&t.cubicInterpolationMode!==`monotone`&&!t.stepped&&!n?Jb:qb}function Xb(e){return e.stepped?u_:e.tension||e.cubicInterpolationMode===`monotone`?d_:l_}function Zb(e,t,n,r){let i=t._path;i||(i=t._path=new Path2D,t.path(i,n,r)&&i.closePath()),Ub(e,t.options),e.stroke(i)}function Qb(e,t,n,r){let{segments:i,options:a}=t,o=Yb(t);for(let s of i)Ub(e,a,s.style),e.beginPath(),o(e,t,s,{start:n,end:n+r-1})&&e.closePath(),e.stroke()}var $b=typeof Path2D==`function`;function ex(e,t,n,r){$b&&!t.options.segment?Zb(e,t,n,r):Qb(e,t,n,r)}var tx=class extends wy{static id=`line`;static defaults={borderCapStyle:`butt`,borderDash:[],borderDashOffset:0,borderJoinStyle:`miter`,borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:`default`,fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:`backgroundColor`,borderColor:`borderColor`};static descriptors={_scriptable:!0,_indexable:e=>e!==`borderDash`&&e!==`fill`};constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,t){let n=this.options;if((n.tension||n.cubicInterpolationMode===`monotone`)&&!n.stepped&&!this._pointsUpdated){let r=n.spanGaps?this._loop:this._fullLoop;Kg(this._points,n,e,r,t),this._pointsUpdated=!0}}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||=w_(this,this.options.segment)}first(){let e=this.segments,t=this.points;return e.length&&t[e[0].start]}last(){let e=this.segments,t=this.points,n=e.length;return n&&t[e[n-1].end]}interpolate(e,t){let n=this.options,r=e[t],i=this.points,a=x_(this,{property:t,start:r,end:r});if(!a.length)return;let o=[],s=Xb(n),c,l;for(c=0,l=a.length;ce.replace(`rgb(`,`rgba(`).replace(`)`,`, 0.5)`));function gx(e){return mx[e%mx.length]}function _x(e){return hx[e%hx.length]}function vx(e,t){return e.borderColor=gx(t),e.backgroundColor=_x(t),++t}function yx(e,t){return e.backgroundColor=e.data.map(()=>gx(t++)),t}function bx(e,t){return e.backgroundColor=e.data.map(()=>_x(t++)),t}function xx(e){let t=0;return(n,r)=>{let i=e.getDatasetMeta(r).controller;i instanceof Cv?t=yx(n,t):i instanceof Tv?t=bx(n,t):i&&(t=vx(n,t))}}function Sx(e){let t;for(t in e)if(e[t].borderColor||e[t].backgroundColor)return!0;return!1}function Cx(e){return e&&(e.borderColor||e.backgroundColor)}function wx(){return Vh.borderColor!==`rgba(0,0,0,0.1)`||Vh.backgroundColor!==`rgba(0,0,0,0.1)`}var Tx={id:`colors`,defaults:{enabled:!0,forceOverride:!1},beforeLayout(e,t,n){if(!n.enabled)return;let{data:{datasets:r},options:i}=e.config,{elements:a}=i,o=Sx(r)||Cx(i)||a&&Sx(a)||wx();if(!n.forceOverride&&o)return;let s=xx(e);r.forEach(s)}};function Ex(e,t,n,r,i){let a=i.samples||r;if(a>=n)return e.slice(t,t+n);let o=[],s=(n-2)/(a-2),c=0,l=t+n-1,u=t,d,f,p,m,h;for(o[c++]=e[u],d=0;dp&&(p=m,f=e[a],h=a);o[c++]=f,u=h}return o[c++]=e[l],o}function Dx(e,t,n,r){let i=0,a=0,o,s,c,l,u,d,f,p,m,h,g=[],_=t+n-1,v=e[t].x,y=e[_].x-v;for(o=t;oh&&(h=l,f=o),i=(a*i+s.x)/++a;else{let n=o-1;if(!rm(d)&&!rm(f)){let t=Math.min(d,f),r=Math.max(d,f);t!==p&&t!==n&&g.push({...e[t],x:i}),r!==p&&r!==n&&g.push({...e[r],x:i})}o>0&&n!==p&&g.push(e[n]),g.push(s),u=t,a=0,m=h=l,d=f=p=o}}return g}function Ox(e){if(e._decimated){let t=e._data;delete e._decimated,delete e._data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,writable:!0,value:t})}}function kx(e){e.data.datasets.forEach(e=>{Ox(e)})}function Ax(e,t){let n=t.length,r=0,i,{iScale:a}=e,{min:o,max:s,minDefined:c,maxDefined:l}=a.getUserBounds();return c&&(r=eh(ih(t,a.axis,o).lo,0,n-1)),i=l?eh(ih(t,a.axis,s).hi+1,r,n)-r:n-r,{start:r,count:i}}var jx={id:`decimation`,defaults:{algorithm:`min-max`,enabled:!1},beforeElementsUpdate:(e,t,n)=>{if(!n.enabled){kx(e);return}let r=e.width;e.data.datasets.forEach((t,i)=>{let{_data:a,indexAxis:o}=t,s=e.getDatasetMeta(i),c=a||t.data;if(mg([o,e.options.indexAxis])===`y`||!s.controller.supportsDecimation)return;let l=e.scales[s.xAxisID];if(l.type!==`linear`&&l.type!==`time`||e.options.parsing)return;let{start:u,count:d}=Ax(s,c);if(d<=(n.threshold||4*r)){Ox(t);return}rm(a)&&(t._data=c,delete t.data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(e){this._data=e}}));let f;switch(n.algorithm){case`lttb`:f=Ex(c,u,d,r,n);break;case`min-max`:f=Dx(c,u,d,r);break;default:throw Error(`Unsupported decimation algorithm '${n.algorithm}'`)}t._decimated=f})},destroy(e){kx(e)}};function Mx(e,t,n){let r=e.segments,i=e.points,a=t.points,o=[];for(let e of r){let{start:r,end:s}=e;s=Fx(r,s,i);let c=Nx(n,i[r],i[s],e.loop);if(!t.segments){o.push({source:e,target:c,start:i[r],end:i[s]});continue}let l=x_(t,c);for(let t of l){let r=Nx(n,a[t.start],a[t.end],t.loop),s=b_(e,i,r);for(let e of s)o.push({source:e,target:t,start:{[n]:Ix(c,r,`start`,Math.max)},end:{[n]:Ix(c,r,`end`,Math.min)}})}}return o}function Nx(e,t,n,r){if(r)return;let i=t[e],a=n[e];return e===`angle`&&(i=Qm(i),a=Qm(a)),{property:e,start:i,end:a}}function Px(e,t){let{x:n=null,y:r=null}=e||{},i=t.points,a=[];return t.segments.forEach(({start:e,end:t})=>{t=Fx(e,t,i);let o=i[e],s=i[t];r===null?n!==null&&(a.push({x:n,y:o.y}),a.push({x:n,y:s.y})):(a.push({x:o.x,y:r}),a.push({x:s.x,y:r}))}),a}function Fx(e,t,n){for(;t>e;t--){let e=n[t];if(!isNaN(e.x)&&!isNaN(e.y))break}return t}function Ix(e,t,n,r){return e&&t?r(e[n],t[n]):e?e[n]:t?t[n]:0}function Lx(e,t){let n=[],r=!1;return im(e)?(r=!0,n=e):n=Px(e,t),n.length?new tx({points:n,options:{tension:0},_loop:r,_fullLoop:r}):null}function Rx(e){return e&&e.fill!==!1}function zx(e,t,n){let r=e[t].fill,i=[t],a;if(!n)return r;for(;r!==!1&&i.indexOf(r)===-1;){if(!om(r))return r;if(a=e[r],!a)return!1;if(a.visible)return r;i.push(r),r=a.fill}return!1}function Bx(e,t,n){let r=Wx(e);if(am(r))return!isNaN(r.value)&&r;let i=parseFloat(r);return om(i)&&Math.floor(i)===i?Vx(r[0],t,i,n):[`origin`,`start`,`end`,`stack`,`shape`].indexOf(r)>=0&&r}function Vx(e,t,n,r){return(e===`-`||e===`+`)&&(n=t+n),n===t||n<0||n>=r?!1:n}function Hx(e,t){let n=null;return e===`start`?n=t.bottom:e===`end`?n=t.top:am(e)?n=t.getPixelForValue(e.value):t.getBasePixel&&(n=t.getBasePixel()),n}function Ux(e,t,n){let r;return r=e===`start`?n:e===`end`?t.options.reverse?t.min:t.max:am(e)?e.value:t.getBaseValue(),r}function Wx(e){let t=e.options,n=t.fill,r=cm(n&&n.target,n);return r===void 0&&(r=!!t.backgroundColor),r===!1||r===null?!1:r===!0?`origin`:r}function Gx(e){let{scale:t,index:n,line:r}=e,i=[],a=r.segments,o=r.points,s=Kx(t,n);s.push(Lx({x:null,y:t.bottom},r));for(let e=0;e=0;--t){let n=i[t].$filler;n&&(n.line.updateControlPoints(a,n.axis),r&&n.fill&&tS(e.ctx,n,a))}},beforeDatasetsDraw(e,t,n){if(n.drawTime!==`beforeDatasetsDraw`)return;let r=e.getSortedVisibleDatasetMetas();for(let t=r.length-1;t>=0;--t){let n=r[t].$filler;Rx(n)&&tS(e.ctx,n,e.chartArea)}},beforeDatasetDraw(e,t,n){let r=t.meta.$filler;!Rx(r)||n.drawTime!==`beforeDatasetDraw`||tS(e.ctx,r,e.chartArea)},defaults:{propagate:!0,drawTime:`beforeDatasetDraw`}},lS=(e,t)=>{let{boxHeight:n=t,boxWidth:r=t}=e;return e.usePointStyle&&(n=Math.min(n,t),r=e.pointStyleWidth||Math.min(r,t)),{boxWidth:r,boxHeight:n,itemHeight:Math.max(t,n)}},uS=(e,t)=>e!==null&&t!==null&&e.datasetIndex===t.datasetIndex&&e.index===t.index,dS=class extends wy{constructor(e){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,t,n){this.maxWidth=e,this.maxHeight=t,this._margins=n,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){let e=this.options.labels||{},t=dm(e.generateLabels,[this.chart],this)||[];e.filter&&(t=t.filter(t=>e.filter(t,this.chart.data))),e.sort&&(t=t.sort((t,n)=>e.sort(t,n,this.chart.data))),this.options.reverse&&t.reverse(),this.legendItems=t}fit(){let{options:e,ctx:t}=this;if(!e.display){this.width=this.height=0;return}let n=e.labels,r=pg(n.font),i=r.size,a=this._computeTitleHeight(),{boxWidth:o,itemHeight:s}=lS(n,i),c,l;t.font=r.string,this.isHorizontal()?(c=this.maxWidth,l=this._fitRows(a,i,o,s)+10):(l=this.maxHeight,c=this._fitCols(a,r,o,s)+10),this.width=Math.min(c,e.maxWidth||this.maxWidth),this.height=Math.min(l,e.maxHeight||this.maxHeight)}_fitRows(e,t,n,r){let{ctx:i,maxWidth:a,options:{labels:{padding:o}}}=this,s=this.legendHitBoxes=[],c=this.lineWidths=[0],l=r+o,u=e;i.textAlign=`left`,i.textBaseline=`middle`;let d=-1,f=-l;return this.legendItems.forEach((e,p)=>{let m=n+t/2+i.measureText(e.text).width;(p===0||c[c.length-1]+m+2*o>a)&&(u+=l,c[c.length-(p>0?0:1)]=0,f+=l,d++),s[p]={left:0,top:f,row:d,width:m,height:r},c[c.length-1]+=m+o}),u}_fitCols(e,t,n,r){let{ctx:i,maxHeight:a,options:{labels:{padding:o}}}=this,s=this.legendHitBoxes=[],c=this.columnSizes=[],l=a-e,u=o,d=0,f=0,p=0,m=0;return this.legendItems.forEach((e,a)=>{let{itemWidth:h,itemHeight:g}=fS(n,t,i,e,r);a>0&&f+g+2*o>l&&(u+=d+o,c.push({width:d,height:f}),p+=d+o,m++,d=f=0),s[a]={left:p,top:f,col:m,width:h,height:g},d=Math.max(d,h),f+=g+o}),u+=d,c.push({width:d,height:f}),u}adjustHitBoxes(){if(!this.options.display)return;let e=this._computeTitleHeight(),{legendHitBoxes:t,options:{align:n,labels:{padding:r},rtl:i}}=this,a=m_(i,this.left,this.width);if(this.isHorizontal()){let i=0,o=hh(n,this.left+r,this.right-this.lineWidths[i]);for(let s of t)i!==s.row&&(i=s.row,o=hh(n,this.left+r,this.right-this.lineWidths[i])),s.top+=this.top+e+r,s.left=a.leftForLtr(a.x(o),s.width),o+=s.width+r}else{let i=0,o=hh(n,this.top+e+r,this.bottom-this.columnSizes[i].height);for(let s of t)s.col!==i&&(i=s.col,o=hh(n,this.top+e+r,this.bottom-this.columnSizes[i].height)),s.top=o,s.left+=this.left+r,s.left=a.leftForLtr(a.x(s.left),s.width),o+=s.height+r}}isHorizontal(){return this.options.position===`top`||this.options.position===`bottom`}draw(){if(this.options.display){let e=this.ctx;Xh(e,this),this._draw(),Zh(e)}}_draw(){let{options:e,columnSizes:t,lineWidths:n,ctx:r}=this,{align:i,labels:a}=e,o=Vh.color,s=m_(e.rtl,this.left,this.width),c=pg(a.font),{padding:l}=a,u=c.size,d=u/2,f;this.drawTitle(),r.textAlign=s.textAlign(`left`),r.textBaseline=`middle`,r.lineWidth=.5,r.font=c.string;let{boxWidth:p,boxHeight:m,itemHeight:h}=lS(a,u),g=function(e,t,n){if(isNaN(p)||p<=0||isNaN(m)||m<0)return;r.save();let i=cm(n.lineWidth,1);if(r.fillStyle=cm(n.fillStyle,o),r.lineCap=cm(n.lineCap,`butt`),r.lineDashOffset=cm(n.lineDashOffset,0),r.lineJoin=cm(n.lineJoin,`miter`),r.lineWidth=i,r.strokeStyle=cm(n.strokeStyle,o),r.setLineDash(cm(n.lineDash,[])),a.usePointStyle){let o={radius:m*Math.SQRT2/2,pointStyle:n.pointStyle,rotation:n.rotation,borderWidth:i},c=s.xPlus(e,p/2),l=t+d;Jh(r,o,c,l,a.pointStyleWidth&&p)}else{let a=t+Math.max((u-m)/2,0),o=s.leftForLtr(e,p),c=dg(n.borderRadius);r.beginPath(),Object.values(c).some(e=>e!==0)?ig(r,{x:o,y:a,w:p,h:m,radius:c}):r.rect(o,a,p,m),r.fill(),i!==0&&r.stroke()}r.restore()},_=function(e,t,n){rg(r,n.text,e,t+h/2,c,{strikethrough:n.hidden,textAlign:s.textAlign(n.textAlign)})},v=this.isHorizontal(),y=this._computeTitleHeight();f=v?{x:hh(i,this.left+l,this.right-n[0]),y:this.top+l+y,line:0}:{x:this.left+l,y:hh(i,this.top+y+l,this.bottom-t[0].height),line:0},h_(this.ctx,e.textDirection);let b=h+l;this.legendItems.forEach((o,u)=>{r.strokeStyle=o.fontColor,r.fillStyle=o.fontColor;let m=r.measureText(o.text).width,h=s.textAlign(o.textAlign||=a.textAlign),x=p+d+m,S=f.x,C=f.y;s.setWidth(this.width),v?u>0&&S+x+l>this.right&&(C=f.y+=b,f.line++,S=f.x=hh(i,this.left+l,this.right-n[f.line])):u>0&&C+b>this.bottom&&(S=f.x=S+t[f.line].width+l,f.line++,C=f.y=hh(i,this.top+y+l,this.bottom-t[f.line].height));let w=s.x(S);if(g(w,C,o),S=gh(h,S+p+d,v?S+x:this.right,e.rtl),_(s.x(S),C,o),v)f.x+=x+l;else if(typeof o.text!=`string`){let e=c.lineHeight;f.y+=hS(o,e)+l}else f.y+=b}),g_(this.ctx,e.textDirection)}drawTitle(){let e=this.options,t=e.title,n=pg(t.font),r=fg(t.padding);if(!t.display)return;let i=m_(e.rtl,this.left,this.width),a=this.ctx,o=t.position,s=n.size/2,c=r.top+s,l,u=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),l=this.top+c,u=hh(e.align,u,this.right-d);else{let t=this.columnSizes.reduce((e,t)=>Math.max(e,t.height),0);l=c+hh(e.align,this.top,this.bottom-t-e.labels.padding-this._computeTitleHeight())}let f=hh(o,u,u+d);a.textAlign=i.textAlign(mh(o)),a.textBaseline=`middle`,a.strokeStyle=t.color,a.fillStyle=t.color,a.font=n.string,rg(a,t.text,f,l,n)}_computeTitleHeight(){let e=this.options.title,t=pg(e.font),n=fg(e.padding);return e.display?t.lineHeight+n.height:0}_getLegendItemAt(e,t){let n,r,i;if(nh(e,this.left,this.right)&&nh(t,this.top,this.bottom)){for(i=this.legendHitBoxes,n=0;ne.length>t.length?e:t)),t+n.size/2+r.measureText(i).width}function mS(e,t,n){let r=e;return typeof t.text!=`string`&&(r=hS(t,n)),r}function hS(e,t){return t*(e.text?e.text.length:0)}function gS(e,t){return!!((e===`mousemove`||e===`mouseout`)&&(t.onHover||t.onLeave)||t.onClick&&(e===`click`||e===`mouseup`))}var _S={id:`legend`,_element:dS,start(e,t,n){let r=e.legend=new dS({ctx:e.ctx,options:n,chart:e});ey.configure(e,r,n),ey.addBox(e,r)},stop(e){ey.removeBox(e,e.legend),delete e.legend},beforeUpdate(e,t,n){let r=e.legend;ey.configure(e,r,n),r.options=n},afterUpdate(e){let t=e.legend;t.buildLabels(),t.adjustHitBoxes()},afterEvent(e,t){t.replay||e.legend.handleEvent(t.event)},defaults:{display:!0,position:`top`,align:`center`,fullSize:!0,reverse:!1,weight:1e3,onClick(e,t,n){let r=t.datasetIndex,i=n.chart;i.isDatasetVisible(r)?(i.hide(r),t.hidden=!0):(i.show(r),t.hidden=!1)},onHover:null,onLeave:null,labels:{color:e=>e.chart.options.color,boxWidth:40,padding:10,generateLabels(e){let t=e.data.datasets,{labels:{usePointStyle:n,pointStyle:r,textAlign:i,color:a,useBorderRadius:o,borderRadius:s}}=e.legend.options;return e._getSortedDatasetMetas().map(e=>{let c=e.controller.getStyle(n?0:void 0),l=fg(c.borderWidth);return{text:t[e.index].label,fillStyle:c.backgroundColor,fontColor:a,hidden:!e.visible,lineCap:c.borderCapStyle,lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:(l.width+l.height)/4,strokeStyle:c.borderColor,pointStyle:r||c.pointStyle,rotation:c.rotation,textAlign:i||c.textAlign,borderRadius:o&&(s||c.borderRadius),datasetIndex:e.index}},this)}},title:{color:e=>e.chart.options.color,display:!1,position:`center`,text:``}},descriptors:{_scriptable:e=>!e.startsWith(`on`),labels:{_scriptable:e=>![`generateLabels`,`filter`,`sort`].includes(e)}}},vS=class extends wy{constructor(e){super(),this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,t){let n=this.options;if(this.left=0,this.top=0,!n.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=e,this.height=this.bottom=t;let r=im(n.text)?n.text.length:1;this._padding=fg(n.padding);let i=r*pg(n.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=i:this.width=i}isHorizontal(){let e=this.options.position;return e===`top`||e===`bottom`}_drawArgs(e){let{top:t,left:n,bottom:r,right:i,options:a}=this,o=a.align,s=0,c,l,u;return this.isHorizontal()?(l=hh(o,n,i),u=t+e,c=i-n):(a.position===`left`?(l=n+e,u=hh(o,r,t),s=km*-.5):(l=i-e,u=hh(o,t,r),s=km*.5),c=r-t),{titleX:l,titleY:u,maxWidth:c,rotation:s}}draw(){let e=this.ctx,t=this.options;if(!t.display)return;let n=pg(t.font),r=n.lineHeight/2+this._padding.top,{titleX:i,titleY:a,maxWidth:o,rotation:s}=this._drawArgs(r);rg(e,t.text,0,0,n,{color:t.color,maxWidth:o,rotation:s,textAlign:mh(t.align),textBaseline:`middle`,translation:[i,a]})}};function yS(e,t){let n=new vS({ctx:e.ctx,options:t,chart:e});ey.configure(e,n,t),ey.addBox(e,n),e.titleBlock=n}var bS={id:`title`,_element:vS,start(e,t,n){yS(e,n)},stop(e){let t=e.titleBlock;ey.removeBox(e,t),delete e.titleBlock},beforeUpdate(e,t,n){let r=e.titleBlock;ey.configure(e,r,n),r.options=n},defaults:{align:`center`,display:!1,font:{weight:`bold`},fullSize:!0,padding:10,position:`top`,text:``,weight:2e3},defaultRoutes:{color:`color`},descriptors:{_scriptable:!0,_indexable:!1}},xS=new WeakMap,SS={id:`subtitle`,start(e,t,n){let r=new vS({ctx:e.ctx,options:n,chart:e});ey.configure(e,r,n),ey.addBox(e,r),xS.set(e,r)},stop(e){ey.removeBox(e,xS.get(e)),xS.delete(e)},beforeUpdate(e,t,n){let r=xS.get(e);ey.configure(e,r,n),r.options=n},defaults:{align:`center`,display:!1,font:{weight:`normal`},fullSize:!0,padding:0,position:`top`,text:``,weight:1500},defaultRoutes:{color:`color`},descriptors:{_scriptable:!0,_indexable:!1}},CS={average(e){if(!e.length)return!1;let t,n,r=new Set,i=0,a=0;for(t=0,n=e.length;te+t)/r.size,y:i/a}},nearest(e,t){if(!e.length)return!1;let n=t.x,r=t.y,i=1/0,a,o,s;for(a=0,o=e.length;a-1?e.split(` -`):e}function ES(e,t){let{element:n,datasetIndex:r,index:i}=t,a=e.getDatasetMeta(r).controller,{label:o,value:s}=a.getLabelAndValue(i);return{chart:e,label:o,parsed:a.getParsed(i),raw:e.data.datasets[r].data[i],formattedValue:s,dataset:a.getDataset(),dataIndex:i,datasetIndex:r,element:n}}function DS(e,t){let n=e.chart.ctx,{body:r,footer:i,title:a}=e,{boxWidth:o,boxHeight:s}=t,c=pg(t.bodyFont),l=pg(t.titleFont),u=pg(t.footerFont),d=a.length,f=i.length,p=r.length,m=fg(t.padding),h=m.height,g=0,_=r.reduce((e,t)=>e+t.before.length+t.lines.length+t.after.length,0);if(_+=e.beforeBody.length+e.afterBody.length,d&&(h+=d*l.lineHeight+(d-1)*t.titleSpacing+t.titleMarginBottom),_){let e=t.displayColors?Math.max(s,c.lineHeight):c.lineHeight;h+=p*e+(_-p)*c.lineHeight+(_-1)*t.bodySpacing}f&&(h+=t.footerMarginTop+f*u.lineHeight+(f-1)*t.footerSpacing);let v=0,y=function(e){g=Math.max(g,n.measureText(e).width+v)};return n.save(),n.font=l.string,fm(e.title,y),n.font=c.string,fm(e.beforeBody.concat(e.afterBody),y),v=t.displayColors?o+2+t.boxPadding:0,fm(r,e=>{fm(e.before,y),fm(e.lines,y),fm(e.after,y)}),v=0,n.font=u.string,fm(e.footer,y),n.restore(),g+=m.width,{width:g,height:h}}function OS(e,t){let{y:n,height:r}=t;return ne.height-r/2?`bottom`:`center`}function kS(e,t,n,r){let{x:i,width:a}=r,o=n.caretSize+n.caretPadding;if(e===`left`&&i+a+o>t.width||e===`right`&&i-a-o<0)return!0}function AS(e,t,n,r){let{x:i,width:a}=n,{width:o,chartArea:{left:s,right:c}}=e,l=`center`;return r===`center`?l=i<=(s+c)/2?`left`:`right`:i<=a/2?l=`left`:i>=o-a/2&&(l=`right`),kS(l,e,t,n)&&(l=`center`),l}function jS(e,t,n){let r=n.yAlign||t.yAlign||OS(e,n);return{xAlign:n.xAlign||t.xAlign||AS(e,t,n,r),yAlign:r}}function MS(e,t){let{x:n,width:r}=e;return t===`right`?n-=r:t===`center`&&(n-=r/2),n}function NS(e,t,n){let{y:r,height:i}=e;return t===`top`?r+=n:t===`bottom`?r-=i+n:r-=i/2,r}function PS(e,t,n,r){let{caretSize:i,caretPadding:a,cornerRadius:o}=e,{xAlign:s,yAlign:c}=n,l=i+a,{topLeft:u,topRight:d,bottomLeft:f,bottomRight:p}=dg(o),m=MS(t,s),h=NS(t,c,l);return c===`center`?s===`left`?m+=l:s===`right`&&(m-=l):s===`left`?m-=Math.max(u,f)+i:s===`right`&&(m+=Math.max(d,p)+i),{x:eh(m,0,r.width-t.width),y:eh(h,0,r.height-t.height)}}function FS(e,t,n){let r=fg(n.padding);return t===`center`?e.x+e.width/2:t===`right`?e.x+e.width-r.right:e.x+r.left}function IS(e){return wS([],TS(e))}function LS(e,t,n){return gg(e,{tooltip:t,tooltipItems:n,type:`tooltip`})}function RS(e,t){let n=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return n?e.override(n):e}var zS={beforeTitle:tm,title(e){if(e.length>0){let t=e[0],n=t.chart.data.labels,r=n?n.length:0;if(this&&this.options&&this.options.mode===`dataset`)return t.dataset.label||``;if(t.label)return t.label;if(r>0&&t.dataIndex{let t={before:[],lines:[],after:[]},i=RS(n,e);wS(t.before,TS(BS(i,`beforeLabel`,this,e))),wS(t.lines,BS(i,`label`,this,e)),wS(t.after,TS(BS(i,`afterLabel`,this,e))),r.push(t)}),r}getAfterBody(e,t){return IS(BS(t.callbacks,`afterBody`,this,e))}getFooter(e,t){let{callbacks:n}=t,r=BS(n,`beforeFooter`,this,e),i=BS(n,`footer`,this,e),a=BS(n,`afterFooter`,this,e),o=[];return o=wS(o,TS(r)),o=wS(o,TS(i)),o=wS(o,TS(a)),o}_createItems(e){let t=this._active,n=this.chart.data,r=[],i=[],a=[],o=[],s,c;for(s=0,c=t.length;se.filter(t,r,i,n))),e.itemSort&&(o=o.sort((t,r)=>e.itemSort(t,r,n))),fm(o,t=>{let n=RS(e.callbacks,t);r.push(BS(n,`labelColor`,this,t)),i.push(BS(n,`labelPointStyle`,this,t)),a.push(BS(n,`labelTextColor`,this,t))}),this.labelColors=r,this.labelPointStyles=i,this.labelTextColors=a,this.dataPoints=o,o}update(e,t){let n=this.options.setContext(this.getContext()),r=this._active,i,a=[];if(!r.length)this.opacity!==0&&(i={opacity:0});else{let e=CS[n.position].call(this,r,this._eventPosition);a=this._createItems(n),this.title=this.getTitle(a,n),this.beforeBody=this.getBeforeBody(a,n),this.body=this.getBody(a,n),this.afterBody=this.getAfterBody(a,n),this.footer=this.getFooter(a,n);let t=this._size=DS(this,n),o=Object.assign({},e,t),s=jS(this.chart,n,o),c=PS(n,o,s,this.chart);this.xAlign=s.xAlign,this.yAlign=s.yAlign,i={opacity:1,x:c.x,y:c.y,width:t.width,height:t.height,caretX:e.x,caretY:e.y}}this._tooltipItems=a,this.$context=void 0,i&&this._resolveAnimations().update(this,i),e&&n.external&&n.external.call(this,{chart:this.chart,tooltip:this,replay:t})}drawCaret(e,t,n,r){let i=this.getCaretPosition(e,n,r);t.lineTo(i.x1,i.y1),t.lineTo(i.x2,i.y2),t.lineTo(i.x3,i.y3)}getCaretPosition(e,t,n){let{xAlign:r,yAlign:i}=this,{caretSize:a,cornerRadius:o}=n,{topLeft:s,topRight:c,bottomLeft:l,bottomRight:u}=dg(o),{x:d,y:f}=e,{width:p,height:m}=t,h,g,_,v,y,b;return i===`center`?(y=f+m/2,r===`left`?(h=d,g=h-a,v=y+a,b=y-a):(h=d+p,g=h+a,v=y-a,b=y+a),_=h):(g=r===`left`?d+Math.max(s,l)+a:r===`right`?d+p-Math.max(c,u)-a:this.caretX,i===`top`?(v=f,y=v-a,h=g-a,_=g+a):(v=f+m,y=v+a,h=g+a,_=g-a),b=v),{x1:h,x2:g,x3:_,y1:v,y2:y,y3:b}}drawTitle(e,t,n){let r=this.title,i=r.length,a,o,s;if(i){let c=m_(n.rtl,this.x,this.width);for(e.x=FS(this,n.titleAlign,n),t.textAlign=c.textAlign(n.titleAlign),t.textBaseline=`middle`,a=pg(n.titleFont),o=n.titleSpacing,t.fillStyle=n.titleColor,t.font=a.string,s=0;se!==0)?(e.beginPath(),e.fillStyle=i.multiKeyBackground,ig(e,{x:t,y:p,w:c,h:s,radius:o}),e.fill(),e.stroke(),e.fillStyle=a.backgroundColor,e.beginPath(),ig(e,{x:n,y:p+1,w:c-2,h:s-2,radius:o}),e.fill()):(e.fillStyle=i.multiKeyBackground,e.fillRect(t,p,c,s),e.strokeRect(t,p,c,s),e.fillStyle=a.backgroundColor,e.fillRect(n,p+1,c-2,s-2))}e.fillStyle=this.labelTextColors[n]}drawBody(e,t,n){let{body:r}=this,{bodySpacing:i,bodyAlign:a,displayColors:o,boxHeight:s,boxWidth:c,boxPadding:l}=n,u=pg(n.bodyFont),d=u.lineHeight,f=0,p=m_(n.rtl,this.x,this.width),m=function(n){t.fillText(n,p.x(e.x+f),e.y+d/2),e.y+=d+i},h=p.textAlign(a),g,_,v,y,b,x,S;for(t.textAlign=a,t.textBaseline=`middle`,t.font=u.string,e.x=FS(this,h,n),t.fillStyle=n.bodyColor,fm(this.beforeBody,m),f=o&&h!==`right`?a===`center`?c/2+l:c+2+l:0,y=0,x=r.length;y0&&t.stroke()}_updateAnimationTarget(e){let t=this.chart,n=this.$animations,r=n&&n.x,i=n&&n.y;if(r||i){let n=CS[e.position].call(this,this._active,this._eventPosition);if(!n)return;let a=this._size=DS(this,e),o=Object.assign({},n,this._size),s=jS(t,e,o),c=PS(e,o,s,t);(r._to!==c.x||i._to!==c.y)&&(this.xAlign=s.xAlign,this.yAlign=s.yAlign,this.width=a.width,this.height=a.height,this.caretX=n.x,this.caretY=n.y,this._resolveAnimations().update(this,c))}}_willRender(){return!!this.opacity}draw(e){let t=this.options.setContext(this.getContext()),n=this.opacity;if(!n)return;this._updateAnimationTarget(t);let r={width:this.width,height:this.height},i={x:this.x,y:this.y};n=Math.abs(n)<.001?0:n;let a=fg(t.padding),o=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;t.enabled&&o&&(e.save(),e.globalAlpha=n,this.drawBackground(i,e,r,t),h_(e,t.textDirection),i.y+=a.top,this.drawTitle(i,e,t),this.drawBody(i,e,t),this.drawFooter(i,e,t),g_(e,t.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,t){let n=this._active,r=e.map(({datasetIndex:e,index:t})=>{let n=this.chart.getDatasetMeta(e);if(!n)throw Error(`Cannot find a dataset at index `+e);return{datasetIndex:e,element:n.data[t],index:t}}),i=!pm(n,r),a=this._positionChanged(r,t);(i||a)&&(this._active=r,this._eventPosition=t,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,t,n=!0){if(t&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;let r=this.options,i=this._active||[],a=this._getActiveElements(e,i,t,n),o=this._positionChanged(a,e),s=t||!pm(a,i)||o;return s&&(this._active=a,(r.enabled||r.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,t))),s}_getActiveElements(e,t,n,r){let i=this.options;if(e.type===`mouseout`)return[];if(!r)return t.filter(e=>this.chart.data.datasets[e.datasetIndex]&&this.chart.getDatasetMeta(e.datasetIndex).controller.getParsed(e.index)!==void 0);let a=this.chart.getElementsAtEventForMode(e,i.mode,i,n);return i.reverse&&a.reverse(),a}_positionChanged(e,t){let{caretX:n,caretY:r,options:i}=this,a=CS[i.position].call(this,e,t);return a!==!1&&(n!==a.x||r!==a.y)}},HS=Object.freeze({__proto__:null,Colors:Tx,Decimation:jx,Filler:cS,Legend:_S,SubTitle:SS,Title:bS,Tooltip:{id:`tooltip`,_element:VS,positioners:CS,afterInit(e,t,n){n&&(e.tooltip=new VS({chart:e,options:n}))},beforeUpdate(e,t,n){e.tooltip&&e.tooltip.initialize(n)},reset(e,t,n){e.tooltip&&e.tooltip.initialize(n)},afterDraw(e){let t=e.tooltip;if(t&&t._willRender()){let n={tooltip:t};if(e.notifyPlugins(`beforeTooltipDraw`,{...n,cancelable:!0})===!1)return;t.draw(e.ctx),e.notifyPlugins(`afterTooltipDraw`,n)}},afterEvent(e,t){if(e.tooltip){let n=t.replay;e.tooltip.handleEvent(t.event,n,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:`average`,backgroundColor:`rgba(0,0,0,0.8)`,titleColor:`#fff`,titleFont:{weight:`bold`},titleSpacing:2,titleMarginBottom:6,titleAlign:`left`,bodyColor:`#fff`,bodySpacing:2,bodyFont:{},bodyAlign:`left`,footerColor:`#fff`,footerSpacing:2,footerMarginTop:6,footerFont:{weight:`bold`},footerAlign:`left`,padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(e,t)=>t.bodyFont.size,boxWidth:(e,t)=>t.bodyFont.size,multiKeyBackground:`#fff`,displayColors:!0,boxPadding:0,borderColor:`rgba(0,0,0,0)`,borderWidth:0,animation:{duration:400,easing:`easeOutQuart`},animations:{numbers:{type:`number`,properties:[`x`,`y`,`width`,`height`,`caretX`,`caretY`]},opacity:{easing:`linear`,duration:200}},callbacks:zS},defaultRoutes:{bodyFont:`font`,footerFont:`font`,titleFont:`font`},descriptors:{_scriptable:e=>e!==`filter`&&e!==`itemSort`&&e!==`external`,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:`animation`}},additionalOptionScopes:[`interaction`]}}),US=(e,t,n,r)=>(typeof t==`string`?(n=e.push(t)-1,r.unshift({index:n,label:t})):isNaN(t)&&(n=null),n);function WS(e,t,n,r){let i=e.indexOf(t);return i===-1?US(e,t,n,r):i===e.lastIndexOf(t)?i:n}var GS=(e,t)=>e===null?null:eh(Math.round(e),0,t);function KS(e){let t=this.getLabels();return e>=0&&et.length-1?null:this.getPixelForValue(t[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}};function JS(e,t){let n=[],{bounds:r,step:i,min:a,max:o,precision:s,count:c,maxTicks:l,maxDigits:u,includeBounds:d}=e,f=i||1,p=l-1,{min:m,max:h}=t,g=!rm(a),_=!rm(o),v=!rm(c),y=(h-m)/(u+1),b=Bm((h-m)/p/f)*f,x,S,C,w;if(b<1e-14&&!g&&!_)return[{value:m},{value:h}];w=Math.ceil(h/b)-Math.floor(m/b),w>p&&(b=Bm(w*b/p/f)*f),rm(s)||(x=10**s,b=Math.ceil(b*x)/x),r===`ticks`?(S=Math.floor(m/b)*b,C=Math.ceil(h/b)*b):(S=m,C=h),g&&_&&i&&Wm((o-a)/i,b/1e3)?(w=Math.round(Math.min((o-a)/b,l)),b=(o-a)/w,S=a,C=o):v?(S=g?a:S,C=_?o:C,w=c-1,b=(C-S)/w):(w=(C-S)/b,w=zm(w,Math.round(w),b/1e3)?Math.round(w):Math.ceil(w));let T=Math.max(Jm(b),Jm(S));x=10**(rm(s)?T:s),S=Math.round(S*x)/x,C=Math.round(C*x)/x;let E=0;for(g&&(d&&S!==a?(n.push({value:a}),So)break;n.push({value:e})}return _&&d&&C!==o?n.length&&zm(n[n.length-1].value,o,YS(o,y,e))?n[n.length-1].value=o:n.push({value:o}):(!_||C===o)&&n.push({value:C}),n}function YS(e,t,{horizontal:n,minRotation:r}){let i=Km(r),a=(n?Math.sin(i):Math.cos(i))||.001,o=.75*t*(``+e).length;return Math.min(t/a,o)}var XS=class extends Wy{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(e,t){return rm(e)||(typeof e==`number`||e instanceof Number)&&!isFinite(+e)?null:+e}handleTickRangeOptions(){let{beginAtZero:e}=this.options,{minDefined:t,maxDefined:n}=this.getUserBounds(),{min:r,max:i}=this,a=e=>r=t?r:e,o=e=>i=n?i:e;if(e){let e=Rm(r),t=Rm(i);e<0&&t<0?o(0):e>0&&t>0&&a(0)}if(r===i){let t=i===0?1:Math.abs(i*.05);o(i+t),e||a(r-t)}this.min=r,this.max=i}getTickLimit(){let{maxTicksLimit:e,stepSize:t}=this.options.ticks,n;return t?(n=Math.ceil(this.max/t)-Math.floor(this.min/t)+1,n>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${t} would result generating up to ${n} ticks. Limiting to 1000.`),n=1e3)):(n=this.computeTickLimit(),e||=11),e&&(n=Math.min(e,n)),n}computeTickLimit(){return 1/0}buildTicks(){let e=this.options,t=e.ticks,n=this.getTickLimit();n=Math.max(2,n);let r=JS({maxTicks:n,bounds:e.bounds,min:e.min,max:e.max,precision:t.precision,step:t.stepSize,count:t.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:t.minRotation||0,includeBounds:t.includeBounds!==!1},this._range||this);return e.bounds===`ticks`&&Gm(r,this,`value`),e.reverse?(r.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),r}configure(){let e=this.ticks,t=this.min,n=this.max;if(super.configure(),this.options.offset&&e.length){let r=(n-t)/Math.max(e.length-1,1)/2;t-=r,n+=r}this._startValue=t,this._endValue=n,this._valueRange=n-t}getLabelForValue(e){return Mh(e,this.chart.options.locale,this.options.ticks.format)}},ZS=class extends XS{static id=`linear`;static defaults={ticks:{callback:Fh.formatters.numeric}};determineDataLimits(){let{min:e,max:t}=this.getMinMax(!0);this.min=om(e)?e:0,this.max=om(t)?t:1,this.handleTickRangeOptions()}computeTickLimit(){let e=this.isHorizontal(),t=e?this.width:this.height,n=Km(this.options.ticks.minRotation),r=(e?Math.sin(n):Math.cos(n))||.001,i=this._resolveTickFontOptions(0);return Math.ceil(t/Math.min(40,i.lineHeight/r))}getPixelForValue(e){return e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}},QS=e=>Math.floor(Lm(e)),$S=(e,t)=>10**(QS(e)+t);function eC(e){return e/10**QS(e)==1}function tC(e,t,n){let r=10**n,i=Math.floor(e/r);return Math.ceil(t/r)-i}function nC(e,t){let n=QS(t-e);for(;tC(e,t,n)>10;)n++;for(;tC(e,t,n)<10;)n--;return Math.min(n,QS(e))}function rC(e,{min:t,max:n}){t=sm(e.min,t);let r=[],i=QS(t),a=nC(t,n),o=a<0?10**Math.abs(a):1,s=10**a,c=i>a?10**i:0,l=Math.round((t-c)*o)/o,u=Math.floor((t-c)/s/10)*s*10,d=Math.floor((l-u)/10**a),f=sm(e.min,Math.round((c+u+d*10**a)*o)/o);for(;f=10?d=d<15?15:20:d++,d>=20&&(a++,d=2,o=a>=0?1:o),f=Math.round((c+u+d*10**a)*o)/o;let p=sm(e.max,f);return r.push({value:p,major:eC(p),significand:d}),r}var iC=class extends Wy{static id=`logarithmic`;static defaults={ticks:{callback:Fh.formatters.logarithmic,major:{enabled:!0}}};constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(e,t){let n=XS.prototype.parse.apply(this,[e,t]);if(n===0){this._zero=!0;return}return om(n)&&n>0?n:null}determineDataLimits(){let{min:e,max:t}=this.getMinMax(!0);this.min=om(e)?Math.max(0,e):null,this.max=om(t)?Math.max(0,t):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!om(this._userMin)&&(this.min=e===$S(this.min,0)?$S(this.min,-1):$S(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){let{minDefined:e,maxDefined:t}=this.getUserBounds(),n=this.min,r=this.max,i=t=>n=e?n:t,a=e=>r=t?r:e;n===r&&(n<=0?(i(1),a(10)):(i($S(n,-1)),a($S(r,1)))),n<=0&&i($S(r,-1)),r<=0&&a($S(n,1)),this.min=n,this.max=r}buildTicks(){let e=this.options,t=rC({min:this._userMin,max:this._userMax},this);return e.bounds===`ticks`&&Gm(t,this,`value`),e.reverse?(t.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),t}getLabelForValue(e){return e===void 0?`0`:Mh(e,this.chart.options.locale,this.options.ticks.format)}configure(){let e=this.min;super.configure(),this._startValue=Lm(e),this._valueRange=Lm(this.max)-Lm(e)}getPixelForValue(e){return(e===void 0||e===0)&&(e=this.min),e===null||isNaN(e)?NaN:this.getPixelForDecimal(e===this.min?0:(Lm(e)-this._startValue)/this._valueRange)}getValueForPixel(e){let t=this.getDecimalForPixel(e);return 10**(this._startValue+t*this._valueRange)}};function aC(e){let t=e.ticks;if(t.display&&e.display){let e=fg(t.backdropPadding);return cm(t.font&&t.font.size,Vh.font.size)+e.height}return 0}function oC(e,t,n){return n=im(n)?n:[n],{w:Wh(e,t.string,n),h:n.length*t.lineHeight}}function sC(e,t,n,r,i){return e===r||e===i?{start:t-n/2,end:t+n/2}:ei?{start:t-n,end:t}:{start:t,end:t+n}}function cC(e){let t={l:e.left+e._padding.left,r:e.right-e._padding.right,t:e.top+e._padding.top,b:e.bottom-e._padding.bottom},n=Object.assign({},t),r=[],i=[],a=e._pointLabels.length,o=e.options.pointLabels,s=o.centerPointLabels?km/a:0;for(let c=0;ct.r&&(s=(r.end-t.r)/a,e.r=Math.max(e.r,t.r+s)),i.startt.b&&(c=(i.end-t.b)/o,e.b=Math.max(e.b,t.b+c))}function uC(e,t,n){let r=e.drawingArea,{extra:i,additionalAngle:a,padding:o,size:s}=n,c=e.getPointPosition(t,r+i+o,a),l=Math.round(qm(Qm(c.angle+Pm))),u=hC(c.y,s.h,l),d=pC(l),f=mC(c.x,s.w,d);return{visible:!0,x:c.x,y:u,textAlign:d,left:f,top:u,right:f+s.w,bottom:u+s.h}}function dC(e,t){if(!t)return!0;let{left:n,top:r,right:i,bottom:a}=e;return!(Yh({x:n,y:r},t)||Yh({x:n,y:a},t)||Yh({x:i,y:r},t)||Yh({x:i,y:a},t))}function fC(e,t,n){let r=[],i=e._pointLabels.length,a=e.options,{centerPointLabels:o,display:s}=a.pointLabels,c={extra:aC(a)/2,additionalAngle:o?km/i:0},l;for(let a=0;a270||n<90)&&(e-=t),e}function gC(e,t,n){let{left:r,top:i,right:a,bottom:o}=n,{backdropColor:s}=t;if(!rm(s)){let n=dg(t.borderRadius),c=fg(t.backdropPadding);e.fillStyle=s;let l=r-c.left,u=i-c.top,d=a-r+c.width,f=o-i+c.height;Object.values(n).some(e=>e!==0)?(e.beginPath(),ig(e,{x:l,y:u,w:d,h:f,radius:n}),e.fill()):e.fillRect(l,u,d,f)}}function _C(e,t){let{ctx:n,options:{pointLabels:r}}=e;for(let i=t-1;i>=0;i--){let t=e._pointLabelItems[i];if(!t.visible)continue;let a=r.setContext(e.getPointLabelContext(i));gC(n,a,t);let o=pg(a.font),{x:s,y:c,textAlign:l}=t;rg(n,e._pointLabels[i],s,c+o.lineHeight/2,o,{color:a.color,textAlign:l,textBaseline:`middle`})}}function vC(e,t,n,r){let{ctx:i}=e;if(n)i.arc(e.xCenter,e.yCenter,t,0,Am);else{let n=e.getPointPosition(0,t);i.moveTo(n.x,n.y);for(let a=1;a{let n=dm(this.options.pointLabels.callback,[e,t],this);return n||n===0?n:``}).filter((e,t)=>this.chart.getDataVisibility(t))}fit(){let e=this.options;e.display&&e.pointLabels.display?cC(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(e,t,n,r){this.xCenter+=Math.floor((e-t)/2),this.yCenter+=Math.floor((n-r)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(e,t,n,r))}getIndexAngle(e){let t=Am/(this._pointLabels.length||1),n=this.options.startAngle||0;return Qm(e*t+Km(n))}getDistanceFromCenterForValue(e){if(rm(e))return NaN;let t=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-e)*t:(e-this.min)*t}getValueForDistanceFromCenter(e){if(rm(e))return NaN;let t=e/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-t:this.min+t}getPointLabelContext(e){let t=this._pointLabels||[];if(e>=0&&e{if(t!==0||t===0&&this.min<0){s=this.getDistanceFromCenterForValue(e.value);let n=this.getContext(t),o=r.setContext(n),c=i.setContext(n);yC(this,o,s,a,c)}}),n.display){for(e.save(),o=a-1;o>=0;o--){let r=n.setContext(this.getPointLabelContext(o)),{color:i,lineWidth:a}=r;!a||!i||(e.lineWidth=a,e.strokeStyle=i,e.setLineDash(r.borderDash),e.lineDashOffset=r.borderDashOffset,s=this.getDistanceFromCenterForValue(t.reverse?this.min:this.max),c=this.getPointPosition(o,s),e.beginPath(),e.moveTo(this.xCenter,this.yCenter),e.lineTo(c.x,c.y),e.stroke())}e.restore()}}drawBorder(){}drawLabels(){let e=this.ctx,t=this.options,n=t.ticks;if(!n.display)return;let r=this.getIndexAngle(0),i,a;e.save(),e.translate(this.xCenter,this.yCenter),e.rotate(r),e.textAlign=`center`,e.textBaseline=`middle`,this.ticks.forEach((r,o)=>{if(o===0&&this.min>=0&&!t.reverse)return;let s=n.setContext(this.getContext(o)),c=pg(s.font);if(i=this.getDistanceFromCenterForValue(this.ticks[o].value),s.showLabelBackdrop){e.font=c.string,a=e.measureText(r.label).width,e.fillStyle=s.backdropColor;let t=fg(s.backdropPadding);e.fillRect(-a/2-t.left,-i-c.size/2-t.top,a+t.width,c.size+t.height)}rg(e,r.label,0,-i,c,{color:s.color,strokeColor:s.textStrokeColor,strokeWidth:s.textStrokeWidth})}),e.restore()}drawTitle(){}},SC={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},CC=Object.keys(SC);function wC(e,t){return e-t}function TC(e,t){if(rm(t))return null;let n=e._adapter,{parser:r,round:i,isoWeekday:a}=e._parseOpts,o=t;return typeof r==`function`&&(o=r(o)),om(o)||(o=typeof r==`string`?n.parse(o,r):n.parse(o)),o===null?null:(i&&(o=i===`week`&&(Um(a)||a===!0)?n.startOf(o,`isoWeek`,a):n.startOf(o,i)),+o)}function EC(e,t,n,r){let i=CC.length;for(let a=CC.indexOf(e);a=CC.indexOf(n);a--){let n=CC[a];if(SC[n].common&&e._adapter.diff(i,r,n)>=t-1)return n}return CC[n?CC.indexOf(n):0]}function OC(e){for(let t=CC.indexOf(e)+1,n=CC.length;t=t?n[r]:n[i];e[a]=!0}}function AC(e,t,n,r){let i=e._adapter,a=+i.startOf(t[0].value,r),o=t[t.length-1].value,s,c;for(s=a;s<=o;s=+i.add(s,1,r))c=n[s],c>=0&&(t[c].major=!0);return t}function jC(e,t,n){let r=[],i={},a=t.length,o,s;for(o=0;o+e.value))}initOffsets(e=[]){let t=0,n=0,r,i;this.options.offset&&e.length&&(r=this.getDecimalForValue(e[0]),t=e.length===1?1-r:(this.getDecimalForValue(e[1])-r)/2,i=this.getDecimalForValue(e[e.length-1]),n=e.length===1?i:(i-this.getDecimalForValue(e[e.length-2]))/2);let a=e.length<3?.5:.25;t=eh(t,0,a),n=eh(n,0,a),this._offsets={start:t,end:n,factor:1/(t+1+n)}}_generate(){let e=this._adapter,t=this.min,n=this.max,r=this.options,i=r.time,a=i.unit||EC(i.minUnit,t,n,this._getLabelCapacity(t)),o=cm(r.ticks.stepSize,1),s=a===`week`&&i.isoWeekday,c=Um(s)||s===!0,l={},u=t,d,f;if(c&&(u=+e.startOf(u,`isoWeek`,s)),u=+e.startOf(u,c?`day`:a),e.diff(n,t,a)>1e5*o)throw Error(t+` and `+n+` are too far apart with stepSize of `+o+` `+a);let p=r.ticks.source===`data`&&this.getDataTimestamps();for(d=u,f=0;d+e)}getLabelForValue(e){let t=this._adapter,n=this.options.time;return n.tooltipFormat?t.format(e,n.tooltipFormat):t.format(e,n.displayFormats.datetime)}format(e,t){let n=this.options.time.displayFormats,r=this._unit,i=t||n[r];return this._adapter.format(e,i)}_tickFormatFunction(e,t,n,r){let i=this.options,a=i.ticks.callback;if(a)return dm(a,[e,t,n],this);let o=i.time.displayFormats,s=this._unit,c=this._majorUnit,l=s&&o[s],u=c&&o[c],d=n[t],f=c&&u&&d&&d.major;return this._adapter.format(e,r||(f?u:l))}generateTickLabels(e){let t,n,r;for(t=0,n=e.length;t0?o:1}getDataTimestamps(){let e=this._cache.data||[],t,n;if(e.length)return e;let r=this.getMatchingVisibleMetas();if(this._normalized&&r.length)return this._cache.data=r[0].controller.getAllParsedValues(this);for(t=0,n=r.length;t=e[r].pos&&t<=e[i].pos&&({lo:r,hi:i}=ih(e,`pos`,t)),{pos:a,time:s}=e[r],{pos:o,time:c}=e[i]):(t>=e[r].time&&t<=e[i].time&&({lo:r,hi:i}=ih(e,`time`,t)),{time:a,pos:s}=e[r],{time:o,pos:c}=e[i]);let l=o-a;return l?s+(c-s)*(t-a)/l:s}var PC=class extends MC{static id=`timeseries`;static defaults=MC.defaults;constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){let e=this._getTimestampsForTable(),t=this._table=this.buildLookupTable(e);this._minPos=NC(t,this.min),this._tableRange=NC(t,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){let{min:t,max:n}=this,r=[],i=[],a,o,s,c,l;for(a=0,o=e.length;a=t&&c<=n&&r.push(c);if(r.length<2)return[{time:t,pos:0},{time:n,pos:1}];for(a=0,o=r.length;ae-t)}_getTimestampsForTable(){let e=this._cache.all||[];if(e.length)return e;let t=this.getDataTimestamps(),n=this.getLabelTimestamps();return e=t.length&&n.length?this.normalize(t.concat(n)):t.length?t:n,e=this._cache.all=e,e}getDecimalForValue(e){return(NC(this._table,e)-this._minPos)/this._tableRange}getValueForPixel(e){let t=this._offsets,n=this.getDecimalForPixel(e)/t.factor-t.end;return NC(this._table,n*this._tableRange+this._minPos,!0)}},FC=[Ev,px,HS,Object.freeze({__proto__:null,CategoryScale:qS,LinearScale:ZS,LogarithmicScale:iC,RadialLinearScale:xC,TimeScale:MC,TimeSeriesScale:PC})];Mb.register(...FC);var IC=Mb,LC=B(``);function RC(e,t){O(t,!0);let n=q(t,`class`,3,``),r=q(t,`ariaLabel`,3,``);function i(e){if(Cl.tick,typeof t.build!=`function`)return;let n=t.build();if(!n)return;let r=new IC(e.getContext(`2d`),n);return()=>r.destroy()}var a=LC();Ai(a,()=>i),L(()=>{G(a,1,Ni(n())),K(a,`aria-label`,r())}),V(e,a),k()}var zC=B(``),BC=B(`
            `);function VC(e,t){O(t,!0);let n=q(t,`options`,19,()=>[]),r=q(t,`ariaLabel`,3,``),i=q(t,`class`,3,``);var a=BC();W(a,21,n,e=>e.value,(e,n)=>{var r=zC();let i;var a=P(r,!0);D(r),L(()=>{i=G(r,1,`segmented-btn svelte-92fh5i`,null,i,{active:t.value===R(n).value}),K(r,`aria-pressed`,t.value===R(n).value),H(a,R(n).label)}),z(`click`,r,()=>t.onchange?.(R(n).value)),V(e,r)}),D(a),L(()=>{G(a,1,Ni([`segmented-control`,i()]),`svelte-92fh5i`),K(a,`aria-label`,r())}),V(e,a),k()}Br([`click`]);function HC(e){return getComputedStyle(document.documentElement).getPropertyValue(e).trim()}function UC(){return{grid:HC(`--chart-grid`),text:HC(`--chart-text`),dayMarker:HC(`--chart-day-marker`),tooltipBg:HC(`--chart-tooltip-bg`),tooltipBorder:HC(`--chart-tooltip-border`),tooltipText:HC(`--chart-tooltip-text`)}}function WC(){return{size:11,family:`'SF Mono', Menlo, Consolas, monospace`}}function GC(e,t){return{backgroundColor:e.tooltipBg,borderColor:e.tooltipBorder,borderWidth:1,titleColor:e.tooltipText,bodyColor:e.tooltipText,callbacks:t}}function KC(e){if(typeof document>`u`||!document.body)return e;let t=document.createElement(`span`);t.style.display=`none`,t.style.color=e,document.body.appendChild(t);let n=getComputedStyle(t).color;return document.body.removeChild(t),n||e}var qC=[`#c2845a`,`#7a9e7e`,`#d4a574`,`#b8a98e`,`#8b9e6b`,`#7d8a97`,`#c47a5a`,`#6b8e6b`,`#a09486`,`#9b7ea4`,`#c49a6c`];function JC(){return[...qC]}function YC(e){let t=5381,n=String(e||``);for(let e=0;evf(e)}}var tw={seconds:{apiName:`second`,windowLabel:`Last 60 seconds`,refreshMs:2e3},minutes:{apiName:`minute`,windowLabel:`Last 60 minutes`,refreshMs:5e3},hours:{apiName:`hour`,windowLabel:`Last 24 hours`,refreshMs:2e4},days:{apiName:`day`,windowLabel:`Last 30 days`,refreshMs:6e4}},nw=[{value:`seconds`,label:`Seconds`},{value:`minutes`,label:`Minutes`},{value:`hours`,label:`Hours`},{value:`days`,label:`Days`}];function rw(){return{input:0,output:0,prompt:0,local:0}}function iw(e){return String(e).padStart(2,`0`)}function aw(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:0}function ow(e,t){if(!Number.isFinite(t))return``;let n=new Date(t);switch(e){case`seconds`:return iw(n.getHours())+`:`+iw(n.getMinutes())+`:`+iw(n.getSeconds());case`minutes`:return iw(n.getHours())+`:`+iw(n.getMinutes());case`hours`:return iw(n.getHours())+`:00`;default:return iw(n.getMonth()+1)+`-`+iw(n.getDate())}}function sw(e,t){let n=[],r=[],i={input:[],output:[],prompt:[],local:[]},a=rw();for(let o of e||[]){let e=Date.parse(o&&o.start),s=aw(o&&o.input_tokens),c=aw(o&&o.output_tokens),l=aw(o&&o.prompt_cached_tokens),u=aw(o&&o.locally_cached_tokens);n.push(ow(t,e)),r.push(Number.isFinite(e)?e:null),i.input.push(s),i.output.push(c),i.prompt.push(l),i.local.push(u),a.input+=s,a.output+=c,a.prompt+=l,a.local+=u}return{labels:n,stamps:r,cols:i,totals:a}}function cw(e){let t=e||rw();return t.input+t.output+t.prompt+t.local>0}function lw(e,t){return vf(Math.max(0,Math.round(e&&e[t]||0)))}function uw(e){return(tw[e]||tw.minutes).windowLabel}function dw(e,t){return`Live token throughput, `+uw(t).toLowerCase()+`. Input `+lw(e,`input`)+`, output `+lw(e,`output`)+`, prompt cached `+lw(e,`prompt`)+`, locally cached `+lw(e,`local`)+` tokens.`}function fw(e,t,n,r){let i=e=>vf(Math.max(0,Math.round(e))),a=n.stamps,o=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderWidth:0,borderRadius:0,categoryPercentage:1,barPercentage:1,stack:`tokens`});return{type:`bar`,plugins:[{id:`liveTokensDayMarks`,afterDatasetsDraw:t=>{if(r===`days`)return;let n=t.getDatasetMeta(0),i=t.chartArea;if(!n||!n.data||!i)return;let o=t.ctx;o.save(),o.font=`10px 'SF Mono', Menlo, Consolas, monospace`;let s=null;for(let t=0;t{if(!e.length)return``;let t=a[e[0].dataIndex];if(!t)return e[0].label;let n=new Date(t);return r===`days`?n.toLocaleDateString():n.toLocaleString()},label:e=>e.dataset.label+`: `+i(e.parsed.y),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),`Total: `+i(t)}})}}}}var pw=900,mw=new class{#e=j(`minutes`);get granularity(){return R(this.#e)}set granularity(e){M(this.#e,e,!0)}#t=j(N([]));get buckets(){return R(this.#t)}set buckets(e){M(this.#t,e,!0)}#n=j(!1);get active(){return R(this.#n)}set active(e){M(this.#n,e,!0)}#r=null;#i=null;#a=null;#o=0;#s=null;#c=!1;start(){this.stop(),this.active=!0,this.fetch(),this.#l(),this.#u()}stop(){this.active=!1,this.#r&&=(clearInterval(this.#r),null),this.#i&&=(clearTimeout(this.#i),null),this.#a&&=(clearTimeout(this.#a),null),this.#o=0,this.#s&&=(this.#s.abort(),null),this.buckets=[]}setGranularity(e){!tw[e]||e===this.granularity||(this.granularity=e,this.buckets=[],this.#l(),this.fetch())}#l(){this.#r&&=(clearInterval(this.#r),null);let e=tw[this.granularity]||tw.minutes;this.#r=setInterval(()=>{this.active&&this.fetch()},e.refreshMs)}noteUsageEvent(e){!this.active||e!==`usage.flushed`||(this.#i||=setTimeout(()=>{this.#i=null,this.fetch()},pw))}async fetch(){if(!this.active||this.#c)return;this.#c=!0;let e=this.granularity;try{let t=await bd(`/admin/usage/throughput?granularity=`+(tw[e]||tw.minutes).apiName,{label:`token throughput`});if(t.stale||!t.ok||this.granularity!==e)return;this.buckets=t.data&&Array.isArray(t.data.buckets)?t.data.buckets:[]}catch(e){if(Sd(e))return;console.error(`Failed to fetch token throughput:`,e)}finally{this.#c=!1,this.active&&this.granularity!==e&&this.fetch()}}async#u(){await Td.ensureLoaded(),this.active&&Td.liveLogsVisible()&&(typeof ReadableStream>`u`||(this.#s&&this.#s.abort(),this.#s=new AbortController,this.#d(this.#s)))}async#d(e){let t=()=>{e.signal.aborted||this.#s!==e||this.#p()};try{let n=await vd(`/admin/live/logs?types=usage`,{signal:e.signal});if(!n.ok||!n.body||typeof n.body.getReader!=`function`){t();return}this.#o=0,await ZC(n.body.getReader(),e=>this.#f(e)),t()}catch(n){if(Sd(n)||e.signal.aborted)return;console.error(`Live usage stream failed:`,n),t()}}#f(e){if(!e||typeof e!=`object`)return;let t=String(e.type||``).trim();t.indexOf(`usage.`)===0&&this.noteUsageEvent(t)}#p(){if(!this.active||this.#a)return;let{attempt:e,delay:t}=$C(this.#o);this.#o=e,this.#a=setTimeout(()=>{this.#a=null,this.#u()},t)}},hw=B(`
            `),gw=B(`
            Waiting for live requests…
            `),_w=B(`

            Live Token Throughput

            `);function vw(e,t){O(t,!0);let n=A(()=>sw(mw.buckets,mw.granularity)),r=A(()=>R(n).totals);function i(){return{input:KC(`var(--token-input)`),output:KC(`var(--token-output)`),prompt:KC(`var(--token-prompt)`),local:KC(`var(--token-local)`)}}let a=[{metric:`input`,label:`Input Tokens`,colorVar:`--token-input`},{metric:`output`,label:`Output Tokens`,colorVar:`--token-output`},{metric:`prompt`,label:`Prompt (Input) Cached`,colorVar:`--token-prompt`},{metric:`local`,label:`Locally Cached`,colorVar:`--token-local`}];var o=_w(),s=P(o),c=P(s),l=I(P(c),2),u=P(l);let d;var f=I(u,2),p=P(f,!0);D(f),D(l),D(c),VC(I(c,2),{ariaLabel:`Live token throughput granularity`,get options(){return nw},get value(){return mw.granularity},onchange:e=>mw.setGranularity(e)}),D(s);var m=I(s,2);W(m,21,()=>a,e=>e.metric,(e,t)=>{var n=hw(),i=P(n),a=I(i,2),o=P(a,!0);D(a);var s=I(a,2),c=P(s,!0);D(s),D(n),L(e=>{Bi(i,`background: var(${R(t).colorVar??``})`),H(o,R(t).label),H(c,e)},[()=>lw(R(r),R(t).metric)]),V(e,n)}),D(m);var h=I(m,2),g=P(h);{let e=A(()=>dw(R(r),mw.granularity));RC(g,{get ariaLabel(){return R(e)},build:()=>fw(UC(),i(),R(n),mw.granularity)})}var _=I(g,2),v=e=>{V(e,gw())},y=A(()=>!cw(R(r)));U(_,e=>{R(y)&&e(v)}),D(h),D(o),L(e=>{d=G(u,1,`live-dot`,null,d,{"is-streaming":mw.active}),H(p,e)},[()=>uw(mw.granularity)]),V(e,o),k()}function yw(e){let t=e||{};if(t.total_tokens!==null&&t.total_tokens!==void 0){let e=Number(t.total_tokens);if(Number.isFinite(e))return e}let n=Number(t.total_input_tokens||0),r=Number(t.total_output_tokens||0);return(Number.isFinite(n)?n:0)+(Number.isFinite(r)?r:0)}function bw(e,t){if(!t)return 0;let n=e&&e.summary?e.summary:{},r=Number(n.total_hits||0);return Number.isFinite(r)&&r>0?r:0}function xw(e,t,n){let r=Number(e&&e.total_requests||0);return(Number.isFinite(r)?r:0)+bw(t,n)}function Sw(e,t,n){let r=bw(t,n);return r<=0?``:mf(xw(e,t,n)-r)+` to providers + `+mf(r)+` from cache`}function Cw(e){let t=e&&e.summary?e.summary:{},n=Number(t.total_input_tokens||0),r=Number(t.total_output_tokens||0);return(Number.isFinite(n)?n:0)+(Number.isFinite(r)?r:0)}function ww(e,t,n){let r=e=>{let t=Number(e||0);return Number.isFinite(t)&&t>0?t:0},i=e||{},a=r(i.uncached_input_tokens),o=r(i.cached_input_tokens),s=r(i.cache_write_input_tokens),c=t&&t.summary?t.summary:{},l=n?r(c.total_input_tokens):0;return[{key:`uncached`,label:`Regular`,tokens:a+s,colorVar:`--cache-meter-uncached`,note:s>0?`Includes `+mf(s)+` cache-write tokens`:``},{key:`prompt`,label:`Prompt cached`,tokens:o,colorVar:`--cache-meter-prompt`,note:`Provider prompt-cache reads`},{key:`local`,label:`Locally cached`,tokens:l,colorVar:`--cache-meter-local`,note:`Served from GoModel response cache`}]}function Tw(e,t,n){return ww(e,t,n).reduce((e,t)=>e+t.tokens,0)}function Ew(e,t,n){return Tw(e,t,n)>0}function Dw(e,t,n){let r=ww(e,t,n),i=r.reduce((e,t)=>e+t.tokens,0);if(i<=0)return r.map(e=>Object.assign({},e,{pct:0}));let a=r.map(e=>{let t=e.tokens/i*100,n=Math.floor(t);return Object.assign({},e,{pct:n,remainder:t-n})}),o=100-a.reduce((e,t)=>e+t.pct,0);return a.map((e,t)=>({index:t,remainder:e.remainder,tokens:e.tokens})).filter(e=>e.tokens>0).sort((e,t)=>t.remainder-e.remainder).forEach(e=>{o>0&&(a[e.index].pct+=1,--o)}),a}function Ow(e,t,n){return Dw(e,t,n).filter(e=>e.tokens>0)}function kw(e){let t=[e.label+`: `+mf(e.tokens)+` input tokens (`+e.pct+`%)`];return e.note&&t.push(e.note),t.join(` -`)}function Aw(e){let t=(e||[]).map(e=>e.label+` `+e.pct+`%`);return`Cache breakdown of input tokens — `+(t.length?t.join(`, `):`no data`)}function jw(e){return e.getUTCFullYear()+`-`+String(e.getUTCMonth()+1).padStart(2,`0`)+`-`+String(e.getUTCDate()).padStart(2,`0`)}function Mw(e,t,n,r){if(t!==`daily`||!n||!r)return e;let i={};(e||[]).forEach(e=>{i[e.date]=e});let a=[];for(let e=new Date(n);e<=r;e.setUTCDate(e.getUTCDate()+1)){let t=jw(e);a.push(i[t]||{date:t,input_tokens:0,output_tokens:0,total_tokens:0,requests:0,input_cost:null,output_cost:null,total_cost:null})}return a}function Nw(e,t){let n=e=>Number(e)||0,r=e.map(e=>e.date),i=e.map(e=>n(e.uncached_input_tokens)+n(e.cache_write_input_tokens)+n(e.cached_input_tokens)>0?n(e.uncached_input_tokens)+n(e.cache_write_input_tokens):n(e.input_tokens)),a=e.map(e=>n(e.output_tokens)),o=e.map(e=>n(e.cached_input_tokens)),s={};return(t||[]).forEach(e=>{s[e.date]=e}),{labels:r,inputPaid:i,output:a,prompt:o,local:r.map(e=>{let t=s[e];return t?n(t.input_tokens)+n(t.output_tokens):0})}}function Pw(e){let t=e||{},n=Math.max(0,Number(t.uncached_input_tokens)||0),r=Math.max(0,Number(t.cached_input_tokens)||0),i=Math.max(0,Number(t.cache_write_input_tokens)||0),a=n+r+i;return a>0?r/a*100:0}function Fw(e){let t=e||{};return(Number(t.uncached_input_tokens)||0)+(Number(t.cached_input_tokens)||0)+(Number(t.cache_write_input_tokens)||0)>0}function Iw(e){return Fw(e)?Math.round(Pw(e))+`%`:`—`}function Lw(e,t,n={}){let r=!!n.cacheEnabled,i=n.resolve||(e=>e),a=(e,t)=>i(`color-mix(in srgb, `+e+` `+t+`%, transparent)`),o=(e,t,n,r)=>Object.assign({label:e,data:t,borderColor:n,backgroundColor:n,fill:!1,tension:.3,borderWidth:2,pointRadius:0,pointHoverRadius:4},r||{}),s=[o(`Input Tokens`,t.inputPaid,i(`var(--token-input)`),{fill:`origin`}),o(`Output Tokens`,t.output,i(`var(--token-output)`),{fill:`-1`}),o(`Prompt (Input) Cached`,t.prompt,i(`var(--token-prompt)`),{fill:`-1`,borderDash:[6,4]})];return r&&s.push(o(`Locally Cached`,t.local,a(`var(--info)`,35),{fill:`-1`,borderDash:[2,3]})),{type:`line`,data:{labels:t.labels,datasets:s},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:GC(e,{label:e=>e.dataset.label+`: `+e.parsed.y.toLocaleString(),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),`Total: `+t.toLocaleString()}})},scales:{x:{stacked:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:WC(),maxRotation:0,autoSkip:!0,maxTicksLimit:10}},y:{stacked:!0,beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:ew(e)}}}}}function Rw(e,t,n){let r=Math.max(0,Math.min(100,e));return{type:`doughnut`,data:{datasets:[{data:[r,100-r],backgroundColor:[t,n],borderWidth:0,spacing:0}]},options:{rotation:-90,circumference:180,cutout:`84%`,responsive:!0,maintainAspectRatio:!1,animation:{duration:0},layout:{padding:1},events:[],plugins:{legend:{display:!1},tooltip:{enabled:!1}}}}}var zw=`gomodel_provider_status_details_expanded`,Bw=`gomodel_provider_card_expanded_overrides`,Vw=3e3,Hw=`https://gomodel.enterpilot.io/docs/providers/`,Uw={anthropic:`anthropic`,azure:`azure`,bailian:`bailian`,bedrock:`bedrock`,"bedrock-mantle":`bedrock-mantle`,cohere:`cohere`,deepseek:`deepseek`,elevenlabs:`elevenlabs`,gemini:`gemini`,llmd:`llmd`,opencode_go:`opencode-go`,oracle:`oracle`,sglang:`sglang`,vertex:`vertex`,vllm:`vllm`,xiaomi:`xiaomi`};function Ww(){return{summary:{total:0,healthy:0,degraded:0,unhealthy:0,overall_status:`degraded`},providers:[]}}function Gw(e){let t={detailsExpanded:!1,cardOverrides:{}};try{if(e){let n=e.getItem(zw);n===`true`||n===`false`?t.detailsExpanded=n===`true`:e.setItem(zw,`false`);let r=JSON.parse(e.getItem(Bw)||`{}`);r&&typeof r==`object`&&!Array.isArray(r)&&(t.cardOverrides=r)}}catch{}return t}function Kw(e,t){if(e)try{e.setItem(zw,t?`true`:`false`)}catch{}}function qw(e,t){if(e)try{e.setItem(Bw,JSON.stringify(t))}catch{}}function Jw(e,t,n){let r=n&&n.name?String(n.name):``;return r&&Object.prototype.hasOwnProperty.call(e,r)?e[r]===!0:t}function Yw(e){return`is-`+(String(e&&e.overall_status||`degraded`).trim()||`degraded`)}function Xw(e){return`is-`+(String(e||`degraded`).trim()||`degraded`)}function Zw(e){let t=e||{};return String(t.healthy||0)+`/`+String(t.total||0)}function Qw(e){let t=e||{},n=Number(t.total||0),r=Number(t.healthy||0);return n>0&&rString(e&&e.status_label||``).trim().toLowerCase()===`starting`)}function tT(e){if(!e||!e.runtime)return``;let t=e.runtime.last_model_fetch_at||``,n=e.runtime.last_availability_check_at||``;return t?n&&Date.parse(n)>Date.parse(t)?n:t:n}function nT(e,t){let n=tT(e);if(!n||typeof t!=`function`)return`-`;let r=t(n);if(!r||r===`-`)return`-`;let i=String(r).split(` `);return i.length>1?i.slice(1).join(` `):r}function rT(e,t){let n=tT(e);return n?typeof t==`function`?t(n):String(n):``}function iT(e){if(!e)return``;let t=String(e.name||``).trim(),n=String(e.type||e.config&&e.config.type||``).trim();return!n||n===t?``:n}function aT(e){let t=String(e&&(e.type||e.config&&e.config.type)||``).trim().toLowerCase(),n=t?Uw[t]:``;return n?Hw+n+`?utm_source=gomodel_dashboard`:``}function oT(e){let t=e&&e.config&&e.config.resilience?e.config.resilience.retry:null;return t?String(t.max_retries)+` retries, `+t.initial_backoff+` initial, `+t.max_backoff+` max, factor `+t.backoff_factor+`, jitter `+t.jitter_factor:`-`}function sT(e){let t=e&&e.config&&e.config.resilience?e.config.resilience.circuit_breaker:null;return t?String(t.failure_threshold)+` fail, `+String(t.success_threshold)+` success, `+t.timeout+` timeout`:`-`}function cT(e){let t=e&&e.config&&Array.isArray(e.config.models)?e.config.models.filter(Boolean):[];return t.length===0?`Automatic`:t.join(`, `)}function lT(e){if(!e)return``;let t=[];return e.status_reason&&t.push(String(e.status_reason)),e.last_error&&t.push(`Last error: `+String(e.last_error)),t.join(` - -`)}function uT(e){let t=e&&e.request_health;return t&&typeof t==`object`?t:null}function dT(e){let t=uT(e);return t?String(t.circuit_state||``).trim():``}function fT(e){let t=dT(e);return t?t.charAt(0).toUpperCase()+t.slice(1):``}function pT(e){let t=dT(e);return t===`open`?`is-unhealthy`:t===`half-open`?`is-degraded`:`is-healthy`}function mT(e){let t=uT(e);if(!t)return``;let n=Number(t.requests||0),r=Number(t.errors||0),i=Math.round(Number(t.window_seconds||0)/60),a=i>0?`last `+i+` min`:`recent`;return String(n)+` request`+(n===1?``:`s`)+` · `+String(r)+` error`+(r===1?``:`s`)+` (`+a+`)`}function hT(e){let t=uT(e);return t&&Array.isArray(t.models)?t.models:[]}function gT(e){return e?String(Number(e.errors||0))+`/`+String(Number(e.requests||0))+` failed`:``}function _T(e){let t=e&&e.last_error;return!t||!t.message?``:(t.status_code?`HTTP `+String(t.status_code)+`: `:``)+t.message}function vT(){return{name:``,slug:``,url:``,transport:`http`,description:``,enabled:!0,headers:[],allowed_tools:``,disallowed_tools:``,user_paths:``,tool_timeout_seconds:``}}function yT(){return{server:``,status:``,instructions:``,tools:[],prompts:[],resources:[],templates:[]}}function bT(e){return String(e&&(e.slug||e.name)||``).trim()}function xT(e){return String(e&&e.status||``).trim()||`connecting`}function ST(e){switch(xT(e)){case`connected`:return`status-success`;case`degraded`:return String(e&&e.last_error||``).trim()?`status-error`:`status-warning`;case`connecting`:return`status-neutral`;default:return`status-unknown`}}function CT(e,t){let n=xT(e),r=String(e&&e.last_error||``).trim();return r&&n!==`connected`?r:n===`connected`&&e&&e.connected_at?`Connected since `+(typeof t==`function`?t:String)(e.connected_at):``}function wT(e){return String(e&&e.transport||``)===`stdio`?`local command`:String(e&&e.url||``).trim()||`—`}function TT(e){let t=Number(e&&e.prompt_count||0),n=Number(e&&e.resource_count||0);return t+` prompts · `+n+` resources`}function ET(e){let t=String(e||``).normalize(`NFKD`).toLowerCase(),n=t.replace(/[\u0300-\u036f]/g,``).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,64).replace(/-+$/g,``);if(n)return n;let r=2166136261;for(let e of t)r=Math.imul((r^e.codePointAt(0))>>>0,16777619)>>>0;return`mcp-`+r.toString(16).padStart(8,`0`)}function DT(e){return String(e||``).split(` -`).map(e=>e.trim()).filter(e=>e)}function OT(e){return!e||typeof e!=`object`||Array.isArray(e)?[]:Object.keys(e).sort().map(t=>({name:t,value:String(e[t]||``)}))}function kT(e){let t={};return(Array.isArray(e)?e:[]).forEach(e=>{let n=String(e&&e.name||``).trim();n&&(t[n]=String(e&&e.value||``))}),t}function AT(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.slug,e.url,e.transport,e.description,e.status].some(e=>String(e||``).toLowerCase().includes(r)))}function jT(e){return{name:String(e.name||``).trim(),slug:bT(e),url:String(e.url||``).trim(),transport:e.transport===`sse`?`sse`:`http`,description:String(e.description||``).trim(),enabled:e.enabled!==!1,headers:OT(e.headers),allowed_tools:(Array.isArray(e.allowed_tools)?e.allowed_tools:[]).join(`, `),disallowed_tools:(Array.isArray(e.disallowed_tools)?e.disallowed_tools:[]).join(`, `),user_paths:(Array.isArray(e.user_paths)?e.user_paths:[]).join(` -`),tool_timeout_seconds:e.tool_timeout_seconds?String(e.tool_timeout_seconds):``}}function MT(e,t,n){let r=String(e.name||``).trim(),i=String(e.slug||ET(r)).trim().toLowerCase(),a=String(e.url||``).trim(),o=e.transport===`sse`?`sse`:`http`;if(!r)return{error:`Name is required.`};if(!/^[a-z0-9][a-z0-9_-]{0,63}$/.test(i))return{error:`Slug must use 1–64 lowercase ASCII letters, numbers, hyphens, or underscores.`};if(t===`create`&&(n||[]).some(e=>bT(e)===i))return{error:`Slug "`+i+`" is already in use.`};if(!a)return{error:`URL is required.`};let s,c=String(e.tool_timeout_seconds||``).trim();if(c!==``){let e=Number(c);if(!Number.isSafeInteger(e)||e<0)return{error:`Tool timeout must be a non-negative whole number of seconds.`};s=e}return{payload:{name:r,slug:i,url:a,transport:o,headers:kT(e.headers),description:String(e.description||``).trim(),enabled:!!e.enabled,allowed_tools:ff(e.allowed_tools),disallowed_tools:ff(e.disallowed_tools),user_paths:DT(e.user_paths),tool_timeout_seconds:s}}}function NT(e,t){let n=t&&typeof t==`object`&&!Array.isArray(t)?t:{},r=e=>(Array.isArray(e)?e:[]).filter(e=>e&&typeof e==`object`);return{server:String(n.server||e||``).trim(),status:String(n.status||``).trim(),instructions:String(n.instructions||``).trim(),tools:r(n.tools),prompts:r(n.prompts),resources:r(n.resources),templates:r(n.templates)}}function PT(e,t){return String(e&&e.server||``)+`_`+String(t||``)}function FT(e){let t=e||yT(),n=(e,t)=>{let n=String(e||``).trim(),r=String(t||``).trim();return n&&r?n+` — `+r:r||n},r=e=>n=>({key:e+`:`+String(n.name||``),name:String(n.name||``),aggregated:PT(t,n.name),description:String(n.description||``).trim()});return[{key:`tools`,title:`Tools`,items:(t.tools||[]).map(r(`tool`))},{key:`prompts`,title:`Prompts`,items:(t.prompts||[]).map(r(`prompt`))},{key:`resources`,title:`Resources`,items:(t.resources||[]).map(e=>({key:`resource:`+String(e.uri||``),name:String(e.uri||``),aggregated:``,description:n(e.name,e.description)}))},{key:`templates`,title:`Resource templates`,items:(t.templates||[]).map(e=>({key:`template:`+String(e.uri_template||``),name:String(e.uri_template||``),aggregated:``,description:n(e.name,e.description)}))}].filter(e=>e.items.length>0)}function IT(e){return FT(e).length===0}function LT(e){return(e||[]).length}function RT(e){return(e||[]).filter(e=>xT(e)===`connected`).length}function zT(e){return(e||[]).filter(e=>e&&e.enabled!==!1&&xT(e)===`degraded`).length}function BT(e,t){return!!e&<(t)>0}function VT(e){return String(RT(e))+`/`+String(LT(e))}function HT(e){return zT(e)>0?`is-degraded`:`is-healthy`}function UT(e){let t=zT(e);if(t>0)return String(t)+` server`+(t===1?``:`s`)+` need`+(t===1?`s`:``)+` attention`;let n=LT(e),r=RT(e);return n>0&&r===n?`All MCP servers connected`:String(r)+` of `+String(n)+` server`+(n===1?``:`s`)+` connected`}function WT(){return{interval:`day`,buckets:[],summary:{requests:0},provider_latency:[]}}function GT(e){let t=e&&typeof e==`object`?e:{};return{interval:t.interval===`hour`?`hour`:`day`,buckets:Array.isArray(t.buckets)?t.buckets:[],summary:t.summary&&typeof t.summary==`object`?t.summary:{requests:0},provider_latency:Array.isArray(t.provider_latency)?t.provider_latency:[]}}function KT(e){return Number(e&&e.summary&&e.summary.requests||0)>0}function qT(e){return(e&&Array.isArray(e.provider_latency)?e.provider_latency:[]).length>0}function JT(e){let t=e&&e.summary?e.summary.success_rate:null;return t==null?`—`:(Math.round(Number(t)*1e3)/10).toFixed(1)+`%`}function YT(e,t){return Number(e&&e.summary&&e.summary[t]||0)}function XT(e){let t=Number(e);return Number.isFinite(t)?t>=6e4?(t/6e4).toFixed(1)+` min`:t>=1e3?(t/1e3).toFixed(2)+` s`:Math.round(t)+` ms`:`-`}function ZT(e){let t=e&&e.summary?e.summary.avg_duration_ms:null;return t==null?`—`:XT(Number(t))}function QT(e,t){try{let n={};return new Intl.DateTimeFormat(`en-US`,{timeZone:t,year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,hourCycle:`h23`}).formatToParts(e).forEach(e=>{n[e.type]=e.value}),{year:n.year,month:n.month,day:n.day,hour:Number(n.hour)}}catch{return{year:String(e.getFullYear()),month:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`][e.getMonth()],day:String(e.getDate()),hour:e.getHours()}}}function $T(e,t,n){let r=new Date(e.start);if(Number.isNaN(r.getTime()))return String(e.start||``);let i=QT(r,n),a=i.month+` `+i.day;return t!==`hour`||i.hour===0?a:String(i.hour).padStart(2,`0`)+`:00`}function eE(e,t,n,r){let i=new Date(e.start);if(Number.isNaN(i.getTime()))return String(e.start||``);if(t===`hour`)return r(e.start);let a=QT(i,n);return a.month+` `+a.day+`, `+a.year}function tE(e){return{ok:e(`var(--success)`),clientError:e(`var(--warning)`),serverError:e(`var(--danger)`),other:e(`color-mix(in srgb, var(--text-muted) 55%, transparent)`)}}function nE(e,t,n={}){let r=n.interval===`hour`?`hour`:`day`,i=n.zone,a=n.resolve||(e=>e),o=n.formatTimestamp||(e=>String(e)),s=t.map(e=>$T(e,r,i)),c=tE(a),l=a(`var(--bg-surface)`),u=e=>Number(e)||0,d=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderColor:l,borderWidth:1,borderSkipped:!1,borderRadius:2,maxBarThickness:28}),f=[d(`2xx`,t.map(e=>u(e.status_2xx)),c.ok),d(`4xx`,t.map(e=>u(e.status_4xx)),c.clientError),d(`5xx`,t.map(e=>u(e.status_5xx)),c.serverError)];return t.some(e=>u(e.status_other)>0)&&f.push(d(`Other`,t.map(e=>u(e.status_other)),c.other)),{type:`bar`,data:{labels:s,datasets:f},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:GC(e,{title:e=>e.length?eE(t[e[0].dataIndex],r,i,o):``,label:e=>e.dataset.label+`: `+e.parsed.y.toLocaleString(),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),`Total: `+t.toLocaleString()}})},scales:{x:{stacked:!0,grid:{display:!1},border:{display:!1},ticks:{color:e.text,font:WC(),maxRotation:0,autoSkip:!0,maxTicksLimit:12}},y:{stacked:!0,beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:WC(),precision:0,callback:e=>vf(e)}}}}}}function rE(e=JC()){let t={};return function(n){return n in t||(t[n]=e[Object.keys(t).length%e.length]),t[n]}}function iE(e,t,n,r={}){let i=r.interval===`hour`?`hour`:`day`,a=r.zone,o=r.formatTimestamp||(e=>String(e)),s=r.providerColor||rE();return{type:`line`,data:{labels:t.map(e=>$T(e,i,a)),datasets:n.map(e=>({label:e.provider,data:(e.avg_duration_ms||[]).map(e=>e==null?null:Number(e)),borderColor:s(e.provider),backgroundColor:s(e.provider),fill:!1,tension:.3,borderWidth:2,pointRadius:0,pointHoverRadius:4,spanGaps:i===`hour`&&2}))},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:GC(e,{title:e=>e.length?eE(t[e[0].dataIndex],i,a,o):``,label:e=>{let t=(n[e.datasetIndex]&&n[e.datasetIndex].requests||[])[e.dataIndex],r=Number(t)||0;return e.dataset.label+`: `+XT(e.parsed.y)+(r>0?` (`+r.toLocaleString()+` req)`:``)}})},scales:{x:{grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:WC(),maxRotation:0,autoSkip:!0,maxTicksLimit:12}},y:{beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:WC(),callback:e=>XT(e)}}}}}}var aE=class{#e=j(N(Ww()));get status(){return R(this.#e)}set status(e){M(this.#e,e,!0)}#t=j(!1);get loading(){return R(this.#t)}set loading(e){M(this.#t,e,!0)}#n=j(!1);get loadedOnce(){return R(this.#n)}set loadedOnce(e){M(this.#n,e,!0)}#r=j(!1);get detailsExpanded(){return R(this.#r)}set detailsExpanded(e){M(this.#r,e,!0)}#i=j(N({}));get cardOverrides(){return R(this.#i)}set cardOverrides(e){M(this.#i,e,!0)}#a=null;#o=null;#s=!1;initPreferences(){if(this.#s)return;this.#s=!0;let e=Gw(qa());this.detailsExpanded=e.detailsExpanded,this.cardOverrides=e.cardOverrides}cardExpanded(e){return Jw(this.cardOverrides,this.detailsExpanded,e)}toggleCard(e){let t=e&&e.name?String(e.name):``;if(!t)return;let n={...this.cardOverrides};n[t]=!this.cardExpanded(e),this.cardOverrides=n,qw(qa(),this.cardOverrides)}toggleDetails(){this.detailsExpanded=!this.detailsExpanded,this.cardOverrides={},Kw(qa(),this.detailsExpanded),qw(qa(),this.cardOverrides)}detailsToggleLabel(){return this.detailsExpanded?`Show Details`:`Hide Details`}async fetch(){this.initPreferences(),this.#a&&this.#a.abort();let e=new AbortController;this.#a=e,this.loading=!0;try{let t=await bd(`/admin/providers/status`,{label:`provider status`,signal:e.signal});if(t.stale||e.signal.aborted)return;if(!t.ok){this.status=Ww(),this.#l();return}let n=t.data&&typeof t.data==`object`?t.data:Ww();n.summary||=Ww().summary,Array.isArray(n.providers)||(n.providers=[]),this.status=n,this.#c()}catch(e){if(Sd(e))return;console.error(`Failed to fetch provider status:`,e),this.status=Ww(),this.#l()}finally{this.#a===e&&(this.#a=null,this.loading=!1,this.loadedOnce=!0)}}#c(){this.#l(),eT(this.status.providers)&&(this.#o=setTimeout(()=>{this.#o=null,this.fetch()},Vw))}#l(){this.#o&&=(clearTimeout(this.#o),null)}stopPolling(){this.#l()}},oE=class{#e=j(N(WT()));get stats(){return R(this.#e)}set stats(e){M(this.#e,e,!0)}#t=j(!1);get loading(){return R(this.#t)}set loading(e){M(this.#t,e,!0)}#n=0;async fetch(){let e=++this.#n;this.loading=!0;try{let t=await bd(`/admin/audit/stats?`+Vf.queryStr(),{label:`audit stats`});if(t.stale||e!==this.#n)return;if(!t.ok){this.stats=WT();return}this.stats=GT(t.data)}catch(t){if(console.error(`Failed to fetch audit stats:`,t),e!==this.#n)return;this.stats=WT()}finally{e===this.#n&&(this.loading=!1)}}},sE=class{#e=j(N([]));get servers(){return R(this.#e)}set servers(e){M(this.#e,e,!0)}#t=j(!1);get available(){return R(this.#t)}set available(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}async fetch(){if(await Td.ensureLoaded(),!Td.mcpVisible()){this.available=!1,this.servers=[];return}this.loading=!0;try{let e=await bd(`/admin/mcp-servers`,{label:`mcp servers`});if(e.stale)return;if(e.status===503||e.status===404){this.available=!1,this.servers=[];return}if(this.available=!0,!e.ok){this.servers=[];return}this.servers=Array.isArray(e.data)?e.data:[]}catch(e){console.error(`Failed to fetch MCP servers:`,e),this.servers=[]}finally{this.loading=!1}}},cE=class{#e=j(N([]));get data(){return R(this.#e)}set data(e){M(this.#e,e,!0)}#t=j(`tokens`);get mode(){return R(this.#t)}set mode(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}#r=null;async fetch(){this.#r&&this.#r.abort();let e=new AbortController;this.#r=e,this.loading=!0;try{let t=await bd(`/admin/usage/daily?days=365&interval=daily`,{label:`calendar`,signal:e.signal});if(t.stale||e.signal.aborted)return;if(!t.ok){this.data=[];return}this.data=Array.isArray(t.data)?t.data:[]}catch(e){if(Sd(e))return;console.error(`Failed to fetch calendar data:`,e),this.data=[]}finally{this.#r===e&&(this.#r=null,this.loading=!1)}}},lE=new aE,uE=new oE,dE=new sE,fE=new cE,pE=(e,t=f,n=f,r=f,i=f)=>{var a=hE(),o=P(a),s=P(o,!0);D(o);var c=I(o,2),l=P(c),u=P(l),d=P(u,!0);D(u),Ve(),D(l);var p=I(l,4),m=P(p),h=P(m,!0);D(m),Ve(),D(p);var g=I(p,4),_=P(g,!0);D(g),D(c),D(a),L((e,n,r,i,a,o)=>{H(s,t()),K(l,`title`,e),H(d,n),K(p,`title`,r),H(h,i),K(g,`title`,a),H(_,o)},[()=>yf(`Input tokens`,n()),()=>vf(n()),()=>yf(`Output tokens`,r()),()=>vf(r()),()=>yf(`Total tokens`,i()),()=>vf(i())]),V(e,a)},mE=(e,t=f,n=f,r=f,i=f,a=f,o=f)=>{var s=vE(),c=P(s),l=P(c,!0);D(c);var u=I(c,2),d=P(u,!0);D(u);var p=I(u,2),m=e=>{var t=gE(),n=P(t,!0);D(t),L(()=>{K(t,`aria-label`,o().title),K(t,`title`,o().title),H(n,a())}),z(`click`,t,function(...e){o().onclick?.apply(this,e)}),V(e,t)},h=e=>{var t=_E(),n=P(t,!0);D(t),L(()=>H(n,a())),V(e,t)};U(p,e=>{o()?e(m):e(h,-1)}),D(s),L(()=>{G(s,1,`card provider-status-flag ${t()??``} ${n()??``}`,`svelte-6tr9cf`),H(l,r()),H(d,i())}),V(e,s)},hE=B(`
            i + o =
            `),gE=B(``),_E=B(` `),vE=B(`
            `),yE=B(`
            Cache Hits
            `),bE=B(`
            Total Requests
            Estimated Cost
            Prompt Cache Rate
            `);function xE(e,t){O(t,!0);let n=A(()=>qf.summary),r=A(()=>qf.cacheOverview),i=A(()=>qf.cacheAnalyticsEnabled()),a=A(()=>lE.status.summary);function o(){let e=document.getElementById(`provider-status-section`);e&&(e.scrollIntoView({behavior:`smooth`,block:`start`}),e.focus({preventScroll:!0}))}var s=bE(),c=P(s);{let e=A(()=>yw(R(n)));pE(c,()=>`Tokens`,()=>R(n).total_input_tokens,()=>R(n).total_output_tokens,()=>R(e))}var l=I(c,2),u=I(P(l),2),d=P(u,!0);D(u),D(l);var f=I(l,2),p=e=>{var t=yE(),n=I(P(t),2),i=P(n,!0);D(n),D(t),L(e=>H(i,e),[()=>mf(R(r).summary.total_hits)]),V(e,t)};U(f,e=>{R(i)&&e(p)});var m=I(f,2),h=I(P(m),2),g=P(h,!0);D(h),D(m);var _=I(m,2),v=e=>{{let t=A(()=>Cw(R(r)));pE(e,()=>`Local Cache`,()=>R(r).summary.total_input_tokens,()=>R(r).summary.total_output_tokens,()=>R(t))}};U(_,e=>{R(i)&&e(v)});var y=I(_,2),b=I(P(y),2),x=P(b);RC(x,{build:()=>Rw(Pw(R(n)),KC(`var(--token-prompt)`),KC(`var(--bg-surface-hover)`))});var S=I(x,2),C=P(S,!0);D(S),D(b),D(y);var w=I(y,2),T=e=>{{let t=A(()=>Yw(R(a))),n=A(()=>Zw(R(a))),r=A(()=>$w(R(a))),i=A(()=>Qw(R(a))?{title:`View providers overview`,onclick:o}:null);mE(e,()=>`provider-status-overview-card`,()=>R(t),()=>`Provider Status`,()=>R(n),()=>R(r),()=>R(i))}};U(w,e=>{R(a).total>0&&e(T)});var E=I(w,2),ee=e=>{{let t=A(()=>HT(dE.servers)),n=A(()=>VT(dE.servers)),r=A(()=>UT(dE.servers));mE(e,()=>`mcp-servers-flag`,()=>R(t),()=>`MCP Servers`,()=>R(n),()=>R(r),()=>({title:`View MCP servers`,onclick:()=>Gu.navigate(`mcp-servers`)}))}},te=A(()=>BT(dE.available,dE.servers));U(E,e=>{R(te)&&e(ee)}),D(s),L((e,t,n,r,i)=>{K(u,`title`,e),H(d,t),H(g,n),K(b,`aria-label`,r),H(C,i)},[()=>Sw(R(n),R(r),R(i)),()=>mf(xw(R(n),R(r),R(i))),()=>hf(R(n).total_cost),()=>`Prompt cache rate `+Iw(R(n)),()=>Iw(R(n))]),V(e,s),k()}Br([`click`]);var SE=B(` `),CE=B(`
            `),wE=B(`No usage in the selected period yet`),TE=B(`
            `),EE=B(`

            Tokens

            Share of input tokens over the selected period
            `);function DE(e,t){O(t,!0);let n=A(()=>qf.cacheAnalyticsEnabled()),r=A(()=>Dw(qf.summary,qf.cacheOverview,R(n))),i=A(()=>Ow(qf.summary,qf.cacheOverview,R(n))),a=A(()=>Ew(qf.summary,qf.cacheOverview,R(n)));var o=EE(),s=I(P(o),2);let c;var l=P(s);W(l,17,()=>R(i),e=>e.key,(e,t)=>{var n=CE(),r=P(n),i=e=>{var n=SE(),r=P(n);D(n),L(()=>H(r,`${R(t).pct??``}%`)),V(e,n)};U(r,e=>{R(t).pct>=8&&e(i)}),D(n),L(e=>{Bi(n,`width: ${R(t).pct??``}%; background: var(${R(t).colorVar??``})`),K(n,`title`,e)},[()=>kw(R(t))]),V(e,n)});var u=I(l,2),d=e=>{V(e,wE())};U(u,e=>{R(a)||e(d)}),D(s);var f=I(s,2);W(f,21,()=>R(r),e=>e.key,(e,t)=>{var n=TE(),r=P(n),i=I(r,2),a=P(i,!0);D(i);var o=I(i,2),s=P(o);D(o);var c=I(o,2),l=P(c,!0);D(c),D(n),L((e,i)=>{K(n,`title`,e),Bi(r,`background: var(${R(t).colorVar??``})`),H(a,R(t).label),H(s,`${R(t).pct??``}%`),H(l,i)},[()=>kw(R(t)),()=>mf(R(t).tokens)]),V(e,n)}),D(f),D(o),L(e=>{c=G(s,1,`cache-meter-bar svelte-1yzecxj`,null,c,{"is-empty":!R(a)}),K(s,`aria-label`,e)},[()=>Aw(R(i))]),V(e,o),k()}var OE=B(``);function kE(e,t){let n=q(t,`size`,3,16),r=q(t,`label`,3,`Loading`),i=q(t,`class`,3,``);var a=OE();L(()=>{G(a,1,Ni([`spinner`,i()]),`svelte-b54l9o`),Bi(a,`--spinner-size: ${n()??``}px`),K(a,`aria-label`,r())}),V(e,a)}var AE=Jr(` `),jE=Jr(``);function ME(e,t){let n=q(t,`label`,3,`No data`);var r=jE(),i=I(P(r),9),a=e=>{var t=AE(),r=P(t,!0);D(t),L(()=>H(r,n())),V(e,t)};U(i,e=>{n()&&e(a)}),D(r),L(()=>{K(r,`role`,n()?`img`:void 0),K(r,`aria-label`,n()||void 0),K(r,`aria-hidden`,n()?void 0:`true`)}),V(e,r)}var NE=B(`
            `),PE=B(`

            `);function FE(e,t){O(t,!0);let n=[`daily`,`weekly`,`monthly`,`yearly`];function r(e){Vf.interval=e,t.onintervalchange?.()}function i(){let e=qf.daily;if(e.length===0)return null;let t=Vf.rangeStart(),n=Vf.rangeEnd(),r=Nw(Mw(e,Vf.interval,t,n),Mw(Array.isArray(qf.cacheOverview.daily)?qf.cacheOverview.daily:[],Vf.interval,t,n));return Lw(UC(),r,{cacheEnabled:qf.cacheAnalyticsEnabled(),resolve:KC})}var a=PE(),o=P(a),s=P(o),c=P(s,!0);D(s);var l=I(s,2);{let e=A(()=>n.map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1)})));VC(l,{ariaLabel:`Usage chart interval`,get options(){return R(e)},get value(){return Vf.interval},onchange:r})}D(o);var u=I(o,2),d=P(u);RC(d,{build:i});var f=I(d,2),p=e=>{var t=NE();kE(P(t),{size:24,label:`Loading usage`}),D(t),V(e,t)},m=e=>{var t=NE();ME(P(t),{}),D(t),V(e,t)};U(f,e=>{qf.daily.length===0&&qf.loading?e(p):qf.daily.length===0&&!Y.authError&&e(m,1)}),D(u),D(a),L(e=>H(c,e),[()=>Vf.chartTitle()]),V(e,a),k()}var IE=10,LE=.7;function RE(e,t){if(e<=0||t<=0)return 0;let n=(e/t)**+LE,r=Math.ceil(n*IE);return r<1?1:r>IE?IE:r}function zE(){let e=[];for(let t=0;t<=IE;t++)e.push(t);return e}function BE(e,t,n){let r={};(e||[]).forEach(e=>{r[e.date]=e});let i=td(rd(n,-364)),a=i.getUTCDay();i.setUTCDate(i.getUTCDate()-a);let o=[];for(let e=new Date(i);nd(e)<=n;e.setUTCDate(e.getUTCDate()+1)){let n=nd(e),i=r[n],a=0;i&&(a=t===`costs`?i.total_cost==null?0:i.total_cost:i.total_tokens||0),o.push({dateStr:n,value:a,level:0,empty:!1})}let s=0;for(let e=0;es&&(s=o[e].value);for(let e=0;e0){for(;l.length<7;)l.push({dateStr:``,value:0,level:0,empty:!0});c.push(l)}return c}function VE(e){let t=td(rd(e,-364)),n=t.getUTCDay();t.setUTCDate(t.getUTCDate()-n);let r=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],i=[],a={},o=0;for(let n=new Date(t);nd(n)<=e;n.setUTCDate(n.getUTCDate()+7),o++){let t=null;if(o===0)t=new Date(n);else for(let r=0;r<7;r++){let i=new Date(n);if(i.setUTCDate(n.getUTCDate()+r),nd(i)>e)break;if(i.getUTCDate()===1){t=i;break}}if(!t)continue;let s=t.getUTCFullYear()+`-`+t.getUTCMonth();a[s]||(i.push({label:r[t.getUTCMonth()],col:o,key:s}),a[s]=!0)}for(let e=0;e `),GE=B(`
            `),KE=B(`
            `),qE=B(`
            `),JE=B(`
            `),YE=B(`

            Activity

            Mon Wed Fri
            `,1);function XE(e,t){O(t,!0);let n=j(N({show:!1,x:0,y:0,text:``})),r=A(()=>md.currentDateKey()),i=A(()=>BE(fE.data,fE.mode,R(r))),a=A(()=>VE(R(r)));function o(e,t){t.empty||M(n,{show:!0,x:e.clientX,y:e.clientY,text:UE(t,fE.mode)},!0)}function s(){M(n,{show:!1,x:0,y:0,text:``},!0)}var c=YE(),l=F(c),u=P(l),d=I(P(u),2),f=e=>{kE(e,{size:14,label:`Loading activity`})};U(d,e=>{fE.loading&&fE.data.length===0&&e(f)}),VC(I(d,2),{ariaLabel:`Activity calendar mode`,options:[{value:`tokens`,label:`Tokens`},{value:`costs`,label:`Costs`}],get value(){return fE.mode},onchange:e=>fE.mode=e}),D(u);var p=I(u,2),m=I(P(p),2),h=P(m);W(h,21,()=>R(a),e=>e.key,(e,t)=>{var n=WE(),r=P(n,!0);D(n),L(()=>{Bi(n,`grid-column: ${R(t).col+1} / span ${R(t).span??``}`),H(r,R(t).label)}),V(e,n)}),D(h);var g=I(h,2);W(g,21,()=>R(i),ii,(e,t,n)=>{var r=KE();W(r,23,()=>R(t),(e,t)=>n+`-`+t,(e,t)=>{var n=GE();L(()=>G(n,1,Ni([`contribution-calendar-cell`,R(t).empty?`empty`:`level-${R(t).level}`]),`svelte-3hfxuq`)),zr(`mouseenter`,n,e=>o(e,R(t))),zr(`mouseleave`,n,s),V(e,n)}),D(r),V(e,r)}),D(g),D(m),D(p);var _=I(p,2),v=P(_),y=P(v),b=P(y,!0);D(y),D(v);var x=I(v,2);W(I(P(x),2),16,zE,e=>e,(e,t)=>{var n=qE();L(()=>G(n,1,`contribution-calendar-cell level-${t??``}`,`svelte-3hfxuq`)),V(e,n)}),Ve(2),D(x),D(_),D(l);var S=I(l,2),C=e=>{var t=JE(),r=P(t,!0);D(t),L(()=>{Bi(t,`left: ${R(n).x??``}px; top: ${R(n).y-40}px`),H(r,R(n).text)}),V(e,t)};U(S,e=>{R(n).show&&e(C)}),L(e=>H(b,e),[()=>HE(fE.data,fE.mode)]),V(e,c),k()}var ZE=B(``),QE=B(`

            `),$E=B(`
            `);function eD(e,t){O(t,!0);let n=q(t,`label`,3,`help`),r=q(t,`text`,3,``),i=q(t,`open`,15,!1),a=q(t,`external`,3,!1),o=A(()=>!!r()||!!t.help||a());var s=$E(),c=P(s),l=P(c);mi(l,()=>t.title??f);var u=I(l,2),d=e=>{var r=ZE();let a;L(()=>{a=G(r,1,`inline-help-toggle svelte-y40or3`,null,a,{"is-open":i()}),K(r,`aria-label`,(i()?`Hide `:`Show `)+n()),K(r,`aria-expanded`,i()),K(r,`aria-controls`,t.copyId)}),z(`click`,r,()=>i(!i())),V(e,r)};U(u,e=>{R(o)&&e(d)}),mi(I(u,2),()=>t.extra??f),D(c);var p=I(c,2),m=e=>{var n=QE(),i=P(n),a=e=>{var n=Xr();mi(F(n),()=>t.help),V(e,n)},o=e=>{var t=Yr();L(()=>H(t,r())),V(e,t)};U(i,e=>{t.help?e(a):e(o,-1)}),D(n),L(()=>K(n,`id`,t.copyId)),V(e,n)};U(p,e=>{i()&&R(o)&&!a()&&e(m)}),D(s),V(e,s),k()}Br([`click`]);var tD=B(`

            Provider Latency

            `),nD=B(`
            Avg
            `),rD=B(`

            Requests by Status

            Success 2xx 4xx 5xx
            `,1);function iD(e,t){O(t,!0);let n=rE(),r=A(()=>uE.stats);function i(){return{interval:R(r).interval,zone:md.effectiveTimezone(),resolve:KC,formatTimestamp:e=>md.formatTimestamp(e)}}var a=Xr(),o=F(a),s=e=>{var t=rD(),a=F(t),o=P(a),s=I(P(o),2),c=P(s),l=I(P(c),2),u=P(l,!0);D(l),D(c);var d=I(c,2),f=I(P(d),4),p=P(f,!0);D(f),D(d);var m=I(d,2),h=I(P(m),4),g=P(h,!0);D(h),D(m);var _=I(m,2),v=I(P(_),4),y=P(v,!0);D(v),D(_),D(s),D(o);var b=I(o,2);RC(P(b),{build:()=>nE(UC(),R(r).buckets,i())}),D(b),D(a);var x=I(a,2),S=e=>{var t=nD(),a=P(t),o=P(a);eD(o,{copyId:`audit-latency-help-copy`,label:`provider latency help`,text:`Average duration of successful requests as measured at the gateway, per provider. Local cache hits and failed requests are excluded; streamed responses count until the stream completes.`,title:e=>{V(e,tD())},$$slots:{title:!0}});var s=I(o,2),c=P(s),l=I(P(c),2),u=P(l,!0);D(l),D(c),D(s),D(a);var d=I(a,2);RC(P(d),{build:()=>iE(UC(),R(r).buckets,R(r).provider_latency,{...i(),providerColor:n})}),D(d),D(t),L(e=>H(u,e),[()=>ZT(R(r))]),V(e,t)},C=A(()=>qT(R(r)));U(x,e=>{R(C)&&e(S)}),L((e,t,n,r)=>{H(u,e),H(p,t),H(g,n),H(y,r)},[()=>JT(R(r)),()=>mf(YT(R(r),`status_2xx`)),()=>mf(YT(R(r),`status_4xx`)),()=>mf(YT(R(r),`status_5xx`))]),V(e,t)},c=A(()=>KT(R(r)));U(o,e=>{R(c)&&e(s)}),V(e,a),k()}var aD=(e,t=f,n=f,r)=>{let i=Et(()=>h(r?.(),!1));var a=cD(),o=P(a),s=P(o,!0);D(o);var c=I(o,2),l=e=>{var t=oD(),r=P(t,!0);D(t),L(()=>H(r,n())),V(e,t)},u=e=>{var t=sD(),r=P(t,!0);D(t),L(()=>H(r,n())),V(e,t)};U(c,e=>{R(i)?e(l):e(u,-1)}),D(a),L(()=>H(s,t())),V(e,a)},oD=B(` `),sD=B(` `),cD=B(`
            `),lD=B(`

            `),uD=B(`
            Breaker State
            `),dD=B(`
            `),fD=B(`
            Models (Recent Traffic)
            `),pD=B(`
            `),mD=B(`

            `);function hD(e,t){O(t,!0);let n=A(()=>pT(t.provider)),r=A(()=>[[`Base URL`,t.provider.config?.base_url],[`API Version`,t.provider.config?.api_version]].filter(([,e])=>!!e));var i=mD();let a;var o=P(i),s=P(o),c=P(s,!0);D(s);var l=I(s,2),u=e=>{var n=lD(),r=P(n,!0);D(n),L(()=>H(r,t.provider.last_error)),V(e,n)};U(l,e=>{t.provider.last_error&&e(u)});var d=I(l,2),f=e=>{var r=pD(),i=P(r);{let e=A(()=>mT(t.provider));aD(i,()=>`Recent Requests`,()=>R(e))}var a=I(i,2),o=e=>{var r=uD(),i=I(P(r),2),a=P(i),o=P(a,!0);D(a),D(i),D(r),L(e=>{G(a,1,Ni([`provider-status-health-state`,R(n)]),`svelte-6y9wjv`),H(o,e)},[()=>fT(t.provider)]),V(e,r)},s=A(()=>dT(t.provider));U(a,e=>{R(s)&&e(o)});var c=I(a,2),l=e=>{var n=fD(),r=I(P(n),2);W(r,21,()=>hT(t.provider),e=>e.model,(e,t)=>{var n=dD();let r;var i=P(n),a=P(i,!0);D(i);var o=I(i,2),s=P(o,!0);D(o),D(n),L((e,i)=>{r=G(n,1,`provider-status-health-model svelte-6y9wjv`,null,r,{"is-flagged":R(t).flagged}),K(n,`title`,e),H(a,R(t).model),H(s,i)},[()=>_T(R(t)),()=>gT(R(t))]),V(e,n)}),D(r),D(n),V(e,n)},u=A(()=>hT(t.provider).length>0);U(c,e=>{R(u)&&e(l)}),D(r),V(e,r)},p=A(()=>uT(t.provider));U(d,e=>{R(p)&&e(f)});var m=I(d,2),h=P(m);W(h,17,()=>R(r),([e,t])=>e,(e,t)=>{var n=A(()=>g(R(t),2));aD(e,()=>R(n)[0],()=>R(n)[1],()=>!0)});var _=I(h,2);{let e=A(()=>cT(t.provider));aD(_,()=>`Configured Models`,()=>R(e))}var v=I(_,2);{let e=A(()=>oT(t.provider));aD(v,()=>`Retry`,()=>R(e))}var y=I(v,2);{let e=A(()=>sT(t.provider));aD(y,()=>`Circuit Breaker`,()=>R(e))}D(m),D(o),D(i),L(()=>{a=G(i,1,`provider-status-details svelte-6y9wjv`,null,a,{"is-expanded":t.expanded,"is-collapsed":!t.expanded}),K(i,`aria-hidden`,!t.expanded),H(c,t.provider.status_reason)}),V(e,i),k()}var gD=B(` `),_D=B(``),vD=B(`

            Models Available
            Last Checked
            `);function yD(e,t){O(t,!0);let n=A(()=>lE.cardExpanded(t.provider)),r=e=>md.formatTimestamp(e);var i=vD(),a=P(i),o=P(a),s=P(o),c=P(s),l=P(c,!0);D(c);var u=I(c,2),d=e=>{var n=gD(),r=P(n);D(n),L(e=>H(r,`(${e??``})`),[()=>iT(t.provider)]),V(e,n)},f=A(()=>iT(t.provider));U(u,e=>{R(f)&&e(d)});var p=I(u,2),m=e=>{var n=_D();L((e,t,r)=>{K(n,`href`,e),K(n,`aria-label`,t),K(n,`title`,r)},[()=>aT(t.provider),()=>`View `+(iT(t.provider)||t.provider.name)+` provider docs`,()=>`View `+(iT(t.provider)||t.provider.name)+` provider docs`]),V(e,n)},h=A(()=>aT(t.provider));U(p,e=>{R(h)&&e(m)}),D(s),D(o);var g=I(o,2),_=P(g,!0);D(g),D(a);var v=I(a,2),y=P(v),b=I(P(y),2),x=P(b,!0);D(b),D(y);var S=I(y,2),C=I(P(S),2),w=P(C,!0);D(C),D(S),D(v);var T=I(v,2);hD(T,{get provider(){return t.provider},get expanded(){return R(n)}});var E=I(T,2);let ee;J(P(E),{get icon(){return Rl},class:`provider-status-card-toggle-icon`}),D(E),D(i),L((e,r,i,a,o)=>{H(l,t.provider.name),G(g,1,`provider-status-pill ${e??``}`,`svelte-nopjmh`),K(g,`title`,r),H(_,t.provider.status_label),H(x,i),K(C,`title`,a),H(w,o),ee=G(E,1,`provider-status-card-toggle svelte-nopjmh`,null,ee,{"is-expanded":R(n)}),K(E,`aria-expanded`,R(n)),K(E,`aria-label`,(R(n)?`Collapse `:`Expand `)+t.provider.name+` details`),K(E,`title`,R(n)?`Collapse details`:`Expand details`)},[()=>Xw(t.provider.status),()=>lT(t.provider),()=>mf(t.provider.runtime?.discovered_model_count),()=>rT(t.provider,r),()=>nT(t.provider,r)]),z(`click`,E,()=>lE.toggleCard(t.provider)),V(e,i),k()}Br([`click`]);var bD=B(`

            Providers Overview

            `),xD=B(`
            `);function SD(e,t){O(t,!0);let n=A(()=>lE.status.providers);var r=Xr(),i=F(r),a=e=>{var t=bD(),r=P(t),i=I(P(r),2),a=P(i),o=P(a,!0);D(a);var s=I(a,2);let c;D(i),D(r);var l=I(r,2);W(l,21,()=>R(n),e=>e.name,(e,t)=>{yD(e,{get provider(){return R(t)}})}),D(l),D(t),L((e,t)=>{K(i,`aria-checked`,lE.detailsExpanded),K(i,`title`,e),H(o,t),c=G(s,1,`provider-status-toggle-track svelte-1kx3uw4`,null,c,{"is-active":lE.detailsExpanded})},[()=>lE.detailsToggleLabel(),()=>lE.detailsToggleLabel()]),z(`click`,i,()=>lE.toggleDetails()),V(e,t)},o=e=>{var t=xD();kE(P(t),{size:18,label:`Loading provider status`}),D(t),V(e,t)};U(i,e=>{R(n).length>0?e(a):lE.loading&&!lE.loadedOnce&&e(o,1)}),V(e,r),k()}Br([`click`]);var CD=B(`
            `);function wD(e,t){O(t,!0);function n(){qf.fetchUsage(),qf.fetchCacheOverview(``),uE.fetch(),lE.fetch(),dE.fetch(),fE.fetch()}function r(){qf.fetchUsage(),qf.fetchCacheOverview(``),uE.fetch()}function i(){r(),fE.fetch()}On(()=>{if(Y.refreshTick,Gu.page===`overview`)return wr(()=>{n(),mw.start()}),()=>{mw.stop(),lE.stopPolling()}});var a=CD(),o=P(a);vw(o,{});var s=I(o,4);lp(P(s),{onchange:i}),D(s);var c=I(s,2);Wf(c,{});var l=I(c,2);xE(l,{});var u=I(l,2);DE(u,{});var d=I(u,2);FE(d,{onintervalchange:r});var f=I(d,2);XE(f,{});var p=I(f,2);iD(p,{}),SD(I(p,2),{}),D(a),V(e,a),k()}var TD=`/admin/live/logs?types=audit,usage`;function ED(e,t,n){return!!t&&String(e&&e.id||``).trim()===t||!!n&&String(e&&e.request_id||``).trim()===n}function DD(e){switch(e){case`date_range`:return`Live paused — the selected date range does not include today. Set it to today to resume.`;case`filters`:return`Live paused while filters are active. Clear them to resume.`;case`pagination`:return`Live paused on later pages. Go to the first page to resume.`;default:return``}}function OD(e){let t=TD,n=Number(e||0);return Number.isFinite(n)&&n>0&&(t+=`&cursor=`+encodeURIComponent(String(n))),t}function kD(){return{async consumeLiveLogsBody(e){await ZC(e,e=>this.applyLiveLogEvent(e))},applyLiveLogEvent(e){if(!e||typeof e!=`object`)return;let t=Number(e.seq||0);Number.isFinite(t)&&t>this.liveLogsLastSeq&&(this.liveLogsLastSeq=t);let n=String(e.type||``).trim();if(n!==`heartbeat`){if(n===`reset`){this.reloadLiveLogSources();return}if(n===`audit.removed`){this.removeLiveAuditEntry(e.data);return}if(n.indexOf(`audit.`)===0){this.mergeLiveAuditEntry(e.data||{},n);return}n.indexOf(`usage.`)===0&&(this.mergeLiveUsageEntry(e.data||{},n),typeof this.noteLiveTokenUsage==`function`&&this.noteLiveTokenUsage(n))}},reloadLiveLogSources(){typeof this.fetchUsage==`function`&&this.fetchUsage(),this.page===`audit-logs`&&typeof this.fetchAuditLog==`function`&&this.fetchAuditLog(!0)},auditLivePauseReason(){return!this.auditLog||this.auditLog.offset!==0?`pagination`:this.auditSearch||this.auditMethod||this.auditStatusCode||this.auditStream?`filters`:!this.followsToday&&(this.customStartDate||this.customEndDate)?`date_range`:null},auditLiveInsertAllowed(){return!this.auditLivePauseReason()},usageLiveInsertAllowed(){return this.usageLog&&this.usageLog.offset===0&&!this.usageLogSearch&&!this.usageFilterModel&&!this.usageFilterProvider&&!this.usageFilterLabel&&!this.usageFilterUserPath},mergeLiveAuditEntry(e,t){if(!e||typeof e!=`object`)return;let n=String(e.id||e.request_id||``).trim();if(!n)return;let r=String(e.request_id||``).trim(),i=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],a=i.findIndex(e=>ED(e,n,r)),o=a>=0&&i[a]||{},s=t===`audit.detail`,c=s?{...e,_detail_loaded:!0,_response_partial:!1,bodies_omitted:!1}:this.liveAuditPatch(o,e,t);if(a>=0){let e=this.mergeLiveAuditPatch(o,c);return i.splice(a,1,e),this.auditLog.entries=[...i],this.regroupLiveAuditHead(e),s||this.fetchExpandedAuditDetailIfReady(e),this.cacheMergedAuditRecord(e,t),e}let l=this.mergeLiveAuditChild(e,c);if(l)return s||this.fetchExpandedAuditDetailIfReady(l),this.cacheMergedAuditRecord(l,t),l;if(!this.auditLiveInsertAllowed()){this.cacheMergedAuditRecord(c,t);return}if(!s&&this.auditGroupSessions){let e=this.foldLiveAuditIntoThread(c);if(e)return this.fetchExpandedAuditDetailIfReady(e),this.cacheMergedAuditRecord(e,t),e}this.auditLog.entries=[this.mergeLiveAuditUsagePatch(c),...i].slice(0,this.auditLog.limit||25),this.auditLog.total=Number(this.auditLog.total||0)+1;let u=this.auditLog.entries[0];return s||this.fetchExpandedAuditDetailIfReady(u),this.cacheMergedAuditRecord(u,t),u},liveAuditPatch(e,t,n){let r=this.liveAuditStateAfter(e._live_state,n),i=this.liveAuditEventFlushed(e._live_state)||this.liveAuditEventFlushed(r),a={...t,_live:!0,_live_state:r,_audit_flushed:i,_live_pending:!i};return n===`audit.stream`?a._response_partial=!0:this.liveAuditStateSettled(n)&&(a._response_partial=!1),a},mergeLiveAuditChild(e,t){let n=this.auditThreadChildren;if(!n||typeof n!=`object`)return null;let r=String(e.id||``).trim(),i=String(e.request_id||``).trim(),a=Object.keys(n);for(let e=0;eED(e,r,i));if(c<0)continue;let l=this.mergeLiveAuditPatch(s[c]||{},t),u=[...s];return u.splice(c,1,l),this.auditThreadChildren={...n,[a[e]]:{...o,entries:u}},l}return null},regroupLiveAuditHead(e){if(!this.auditGroupSessions)return null;let t=String(e&&e.session_id||``).trim();if(!t)return null;let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=String(e.id||``).trim(),i=n.findIndex(e=>String(e.id||``).trim()===r);if(i<0)return null;let a=n.findIndex((e,n)=>n!==i&&String(e.session_id||``).trim()===t);if(a<0)return null;let o=n[a],s=Date.parse(o&&o.timestamp),c=Date.parse(e&&e.timestamp),l=Number.isFinite(s)&&Number.isFinite(c)&&s>c,u=l?o:e,d=l?e:o,f={...u,session_count:Math.max(1,Number(o.session_count||1))+Math.max(1,Number(e.session_count||1))},p=n.filter((e,t)=>t!==i&&t!==a);return p.unshift(f),this.auditLog.entries=p,this.auditLog.total=Math.max(0,Number(this.auditLog.total||0)-1),this.prependLiveAuditThreadChild(t,d),f},foldLiveAuditIntoThread(e){let t=String(e&&e.session_id||``).trim();if(!t)return null;let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=n.findIndex(e=>String(e.session_id||``).trim()===t);if(r<0)return null;let i=n[r],a=Number(i.session_count),o=this.mergeLiveAuditUsagePatch({...e,session_count:(Number.isFinite(a)&&a>0?a:1)+1}),s=[...n];return s.splice(r,1),s.unshift(o),this.auditLog.entries=s,this.prependLiveAuditThreadChild(t,i),o},prependLiveAuditThreadChild(e,t){let n=this.auditThreadChildren||{},r=n[e],i={...t};delete i.session_count;let a=r&&Array.isArray(r.entries)?{...r,entries:[i,...r.entries],total:Number(r.total||r.entries.length)+1}:{loading:!1,loaded:!1,entries:[i],total:1};this.auditThreadChildren={...n,[e]:a}},removeLiveAuditThreadChild(e,t){let n=this.auditThreadChildren;!n||typeof n!=`object`||Object.keys(n).forEach(r=>{let i=n[r],a=i&&Array.isArray(i.entries)?i.entries:[],o=a.filter(n=>!ED(n,e,t)),s=a.length-o.length;s!==0&&(this.auditThreadChildren={...this.auditThreadChildren,[r]:{...i,entries:o,total:Math.max(0,Number(i.total||a.length)-s)}},this.decrementLiveAuditThreadCount(r,s))})},decrementLiveAuditThreadCount(e,t){let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=n.findIndex(t=>String(t.session_id||``).trim()===e);if(r<0)return;let i=n[r],a=[...n];a.splice(r,1,{...i,session_count:Math.max(1,Number(i.session_count||1)-t)}),this.auditLog.entries=a},mergeLiveAuditPatch(e,t){let n={...e,...t};return t.data===void 0&&e.data!==void 0?n.data=e.data:e.data&&t.data&&typeof e.data==`object`&&typeof t.data==`object`&&!Array.isArray(e.data)&&!Array.isArray(t.data)&&(n.data={...e.data,...t.data}),this.mergeLiveAuditUsagePatch(n)},mergeLiveAuditUsagePatch(e){let t=this.liveUsageEntryForAudit(e);if(!t)return e;let n=this.auditEntryWithLiveUsage(e,t);return this.removeSkippedLiveUsage(t),n},liveUsageEntryForAudit(e){let t=String(e&&e.request_id||``).trim();return t&&((this.usageLog&&Array.isArray(this.usageLog.entries)?this.usageLog.entries:[]).find(e=>String(e&&e.request_id||``).trim()===t)||this.skippedLiveUsageByRequestId&&this.skippedLiveUsageByRequestId[t])||null},cacheMergedAuditRecord(e,t){return e&&typeof this.cacheAuditRecord==`function`?this.cacheAuditRecord(e,t):e},fetchExpandedAuditDetailIfReady(e){!e||!this.isAuditEntryExpanded||!this.isAuditEntryExpanded(e)||String(e._live_state||``).trim()!==`audit.flushed`&&!e._audit_flushed||typeof this.fetchAuditEntryDetail==`function`&&this.fetchAuditEntryDetail(e)},liveAuditStateRank(e){switch(String(e||``).trim()){case`audit.started`:return 10;case`audit.updated`:case`audit.stream`:return 20;case`audit.completed`:return 30;case`audit.failed`:case`audit.flushed`:case`audit.detail`:return 40;default:return 0}},liveAuditStateAfter(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return this.liveAuditStateRank(n)>this.liveAuditStateRank(r)?n:r},liveAuditStateSettled(e){return this.liveAuditStateRank(e)>=this.liveAuditStateRank(`audit.completed`)},liveAuditEventFlushed(e){let t=String(e||``).trim();return t===`audit.failed`||t===`audit.flushed`||t===`audit.detail`},removeLiveAuditEntry(e){if(!e||!this.auditLog||!Array.isArray(this.auditLog.entries))return;let t=String(e.id||``).trim(),n=String(e.request_id||``).trim();if(!t&&!n)return;let r=this.auditLog.entries,i=[],a=0,o=0,s=!1;r.forEach(e=>{if(!ED(e,t,n)){i.push(e);return}a++;let r=String(e.session_id||``).trim(),c=Math.max(1,Number(e.session_count||1));if(!this.auditGroupSessions||!r||c<=1)return;o++;let l=this.auditThreadChildren&&this.auditThreadChildren[r],u=l&&Array.isArray(l.entries)?l.entries.filter(e=>!ED(e,t,n)):[];if(u.length===0){s=!0;return}let d={...u[0],session_id:r,session_count:c-1};i.push(d),this.auditThreadChildren={...this.auditThreadChildren,[r]:{...l,entries:u.slice(1),total:Math.max(0,Number(l.total||c)-1)}}}),a>0&&(this.auditLog.entries=i,this.auditLog.total=Math.max(0,Number(this.auditLog.total||0)-a+o)),this.removeLiveAuditThreadChild(t,n),s&&typeof this.fetchAuditLog==`function`&&this.fetchAuditLog(!0)},mergeLiveUsageEntry(e,t){if(!e||typeof e!=`object`)return;e={...e,_live_state:t||e._live_state||`usage.completed`};let n=String(e.id||``).trim();if(!n)return;let r=this.usageLog&&Array.isArray(this.usageLog.entries)?this.usageLog.entries:[],i=r.findIndex(e=>String(e.id||``).trim()===n);if(i>=0){let t=r[i]||{},n=this.mergeLiveUsagePatch(t,e);if(this.applyLiveUsageToAudit(n),this.liveUsageShouldSkip(n)){r.splice(i,1),this.usageLog.entries=[...r],this.usageLog.total=Math.max(0,Number(this.usageLog.total||0)-1),this.storeSkippedLiveUsage(n);return}r.splice(i,1,n),this.usageLog.entries=[...r],this.removeSkippedLiveUsage(n);return}let a=this.mergeLiveUsagePatch(this.liveUsageSeedForEntry(e),e);if(this.applyLiveUsageToAudit(a),this.liveUsageShouldSkip(a)){this.storeSkippedLiveUsage(a);return}this.removeSkippedLiveUsage(a),this.usageLog.entries=[a,...r].slice(0,this.usageLog.limit||50),this.usageLog.total=Number(this.usageLog.total||0)+1},mergeLiveUsagePatch(e,t){e=e&&typeof e==`object`?e:{};let n=this.liveUsageStateAfter(e._live_state,t&&t._live_state),r=this.liveUsageEventFlushed(e)||this.liveUsageEventFlushed({...t,_live_state:n});return{...e,...t,_live:!0,_live_state:n||`usage.completed`,_live_pending:!r,_usage_flushed:r}},liveUsageShouldSkip(e){return!!(this.usageLogHideCached&&this.liveUsageEntryCached(e))||!this.usageLiveInsertAllowed()},liveUsageSeedForEntry(e){return this.skippedLiveUsageForEntry(e)||this.auditLiveUsageForEntry(e)},skippedLiveUsageForEntry(e){let t=String(e&&e.request_id||``).trim();return t&&this.skippedLiveUsageByRequestId?this.skippedLiveUsageByRequestId[t]:null},auditLiveUsageForEntry(e){let t=String(e&&e.request_id||``).trim();if(!t||!this.auditLog||!Array.isArray(this.auditLog.entries))return null;let n=this.auditLog.entries.find(e=>String(e&&e.request_id||``).trim()===t),r=n&&n.usage&&typeof n.usage==`object`&&!Array.isArray(n.usage)?n.usage:null;return r?{id:e&&e.id,request_id:t,entries:r.entries,input_tokens:r.input_tokens,uncached_input_tokens:r.uncached_input_tokens,cached_input_tokens:r.cached_input_tokens,cache_write_input_tokens:r.cache_write_input_tokens,output_tokens:r.output_tokens,total_tokens:r.total_tokens,cached_input_ratio:r.cached_input_ratio,estimated_cached_characters:r.estimated_cached_characters,_live_state:n._usage_live_state,_live_pending:n._usage_live_pending,_usage_flushed:n._usage_flushed}:null},storeSkippedLiveUsage(e){let t=String(e&&e.request_id||``).trim();t&&((!this.skippedLiveUsageByRequestId||typeof this.skippedLiveUsageByRequestId!=`object`||Array.isArray(this.skippedLiveUsageByRequestId))&&(this.skippedLiveUsageByRequestId={}),this.skippedLiveUsageByRequestId[t]=e)},removeSkippedLiveUsage(e){let t=String(e&&e.request_id||``).trim();t&&this.skippedLiveUsageByRequestId&&delete this.skippedLiveUsageByRequestId[t]},liveUsageEntryCached(e){let t=String(e&&e.cache_type||``).trim().toLowerCase();return t===`exact`||t===`semantic`||!!(e&&e.cache_hit)},liveUsageEventFlushed(e){let t=String(e&&e._live_state||``).trim();return!!(e&&e._usage_flushed)||t===`usage.failed`||t===`usage.flushed`},liveUsageStateRank(e){switch(String(e||``).trim()){case`usage.completed`:return 10;case`usage.failed`:case`usage.flushed`:return 20;default:return 0}},liveUsageStateAfter(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return this.liveUsageStateRank(n)>this.liveUsageStateRank(r)?n:r},applyLiveUsageToAudit(e){let t=String(e&&e.request_id||``).trim();if(!t||!this.auditLog||!Array.isArray(this.auditLog.entries))return;let n=this.auditLog.entries.findIndex(e=>String(e.request_id||``).trim()===t);if(n>=0){let t=this.auditLog.entries[n];this.auditLog.entries.splice(n,1,this.auditEntryWithLiveUsage(t,e)),this.auditLog.entries=[...this.auditLog.entries]}let r=this.auditThreadChildren;if(!r||typeof r!=`object`)return;let i=r,a=!1;Object.keys(r).forEach(n=>{let r=i[n],o=r&&Array.isArray(r.entries)?r.entries:[],s=o.findIndex(e=>String(e.request_id||``).trim()===t);if(s<0)return;let c=[...o];c.splice(s,1,this.auditEntryWithLiveUsage(o[s],e)),i={...i,[n]:{...r,entries:c}},a=!0}),a&&(this.auditThreadChildren=i)},auditEntryWithLiveUsage(e,t){let n=this.liveUsageStateAfter(e._usage_live_state,t._live_state||`usage.completed`),r=this.liveUsageEventFlushed({_live_state:n,_usage_flushed:e._usage_flushed||t._usage_flushed});return{...e,usage:this.liveUsageSummary(t,e.usage),_usage_live_state:n||`usage.completed`,_usage_live_pending:!r,_usage_flushed:r}},liveUsageSummary(e,t){let n=t&&typeof t==`object`&&!Array.isArray(t)?t:{},r=this.liveNumber(e.input_tokens,this.liveNumber(n.input_tokens,0)),i=this.liveNumber(e.output_tokens,this.liveNumber(n.output_tokens,0)),a=this.liveNumber(e.uncached_input_tokens,this.liveNumber(n.uncached_input_tokens,0)),o=this.liveNumber(e.cached_input_tokens,this.liveNumber(n.cached_input_tokens,0)),s=this.liveNumber(e.cache_write_input_tokens,this.liveNumber(n.cache_write_input_tokens,0));r>0&&a+o+s===0&&(a=r);let c=a+o+s||r,l=c+i||this.liveNumber(e.total_tokens,this.liveNumber(n.total_tokens,0)),u=this.liveNumber(e.cached_input_ratio,this.liveNumber(n.cached_input_ratio,c>0?o/c:0));return{entries:Math.max(1,this.liveNumber(e.entries,this.liveNumber(n.entries,1))),input_tokens:c,uncached_input_tokens:a,cached_input_tokens:o,cache_write_input_tokens:s,output_tokens:i,total_tokens:l,cached_input_ratio:u,estimated_cached_characters:this.liveNumber(e.estimated_cached_characters,this.liveNumber(n.estimated_cached_characters,o*4))}},liveNumber(e,t){let n=Number(e);return Number.isFinite(n)?n:t},auditEntryShouldFetchDetail(e){return!e||e._detail_loading||e._detail_loaded||this.auditEntryLiveDetailPending(e)?!1:this.auditEntryNeedsPersistedLiveDetail(e)||e.bodies_omitted?!0:!this.auditEntryHasDetailData(e)},auditEntryLiveDetailPending(e){if(!e||!e._live)return!1;let t=String(e._live_state||``).trim();return t===`audit.failed`||!e._audit_flushed&&t!==`audit.flushed`&&t!==`audit.detail`},auditEntryNeedsPersistedLiveDetail(e){return!!(e&&e._live&&!e._detail_loaded)},auditEntryHasDetailData(e){let t=e&&e.data;return!t||typeof t!=`object`?!1:t.request_headers!==void 0||t.response_headers!==void 0||t.request_body!==void 0||t.response_body!==void 0||t.request_body_too_big_to_handle!==void 0||t.response_body_too_big_to_handle!==void 0||t.user_agent!==void 0||t.api_key_hash!==void 0||t.temperature!==void 0||t.max_tokens!==void 0||t.error_message!==void 0||t.error_code!==void 0},clearAuditDetailLoading(e){if(!e)return;let t=String(e.id||``).trim(),n=String(e.request_id||``).trim(),r=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],i=r.find(e=>t&&String(e.id||``).trim()===t?!0:!!(n&&String(e.request_id||``).trim()===n)),a=i||e;a._detail_loading=!1,i&&(this.auditLog.entries=[...r])}}}var AD={"audit.started":10,"audit.updated":20,"audit.stream":20,"audit.completed":30,"audit.failed":40,"audit.flushed":40,"audit.detail":40},jD=new Set(Object.keys(AD));function MD(e){return String(e&&(e.id||e.request_id)||``).trim()}function ND(e,t){let n=e&&typeof e==`object`?e:{},r=t&&typeof t==`object`?t:{},i={...n,...r};r.data==null&&n.data!=null?i.data=n.data:ID(n.data)&&ID(r.data)&&(i.data={...n.data,...r.data});let a=String(n._live_state||``).trim(),o=String(r._live_state||``).trim();return(AD[a]||0)>(AD[o]||0)&&(i._live_state=a),n._audit_flushed&&(i._audit_flushed=!0),i._audit_flushed&&(i._live_pending=!1),n._detail_loaded&&!r._detail_loaded&&(i._detail_loaded=!0,i.bodies_omitted=!1),i.bodies_omitted&&ID(i.data)&&(i.data.request_body!==void 0||i.data.response_body!==void 0)&&(i.bodies_omitted=!1),i}function PD(e,t){let n=Number(t||0);return(Array.isArray(e)?e:[]).filter(e=>Number(e&&e.version||0)>n)}function FD(e){return jD.has(String(e&&e.eventType||``).trim())}function ID(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}var LD=200,RD=class{#e=j(N({entries:[],total:0,limit:25,offset:0}));get auditLog(){return R(this.#e)}set auditLog(e){M(this.#e,e,!0)}#t=j(N({entries:[],total:0,limit:50,offset:0}));get usageLog(){return R(this.#t)}set usageLog(e){M(this.#t,e,!0)}#n=j(N({}));get auditRecords(){return R(this.#n)}set auditRecords(e){M(this.#n,e,!0)}#r=j(N([]));get auditRecordChanges(){return R(this.#r)}set auditRecordChanges(e){M(this.#r,e,!0)}auditRecordVersion=0;auditRecordPins=new Set;#i=j(``);get auditSearch(){return R(this.#i)}set auditSearch(e){M(this.#i,e,!0)}#a=j(``);get auditMethod(){return R(this.#a)}set auditMethod(e){M(this.#a,e,!0)}#o=j(``);get auditStatusCode(){return R(this.#o)}set auditStatusCode(e){M(this.#o,e,!0)}#s=j(``);get auditStream(){return R(this.#s)}set auditStream(e){M(this.#s,e,!0)}#c=j(Ja(`gomodel_audit_group_sessions`,`true`)!==`false`);get auditGroupSessions(){return R(this.#c)}set auditGroupSessions(e){M(this.#c,e,!0)}#l=j(N({}));get auditThreadChildren(){return R(this.#l)}set auditThreadChildren(e){M(this.#l,e,!0)}#u=j(``);get usageLogSearch(){return R(this.#u)}set usageLogSearch(e){M(this.#u,e,!0)}#d=j(``);get usageFilterModel(){return R(this.#d)}set usageFilterModel(e){M(this.#d,e,!0)}#f=j(``);get usageFilterProvider(){return R(this.#f)}set usageFilterProvider(e){M(this.#f,e,!0)}#p=j(``);get usageFilterLabel(){return R(this.#p)}set usageFilterLabel(e){M(this.#p,e,!0)}#m=j(``);get usageFilterUserPath(){return R(this.#m)}set usageFilterUserPath(e){M(this.#m,e,!0)}#h=j(!1);get usageLogHideCached(){return R(this.#h)}set usageLogHideCached(e){M(this.#h,e,!0)}#g=j(!1);get liveLogsStreaming(){return R(this.#g)}set liveLogsStreaming(e){M(this.#g,e,!0)}liveLogsLastSeq=0;liveLogsReconnectAttempts=0;liveLogsReconnectTimer=null;liveLogsController=null;skippedLiveUsageByRequestId=null;fetchUsage=null;fetchAuditLog=null;isAuditEntryExpanded=null;noteLiveTokenUsage=null;upsertAuditRecord(e,t=``){let n=MD(e);if(!n)return e;let r=ND(this.auditRecords[n],e);return this.auditRecords={...this.auditRecords,[n]:r},this.pruneAuditRecords(),this.auditRecordVersion++,this.auditRecordChanges=[...this.auditRecordChanges,{version:this.auditRecordVersion,key:n,eventType:t}].slice(-512),r}upsertAuditRecords(e,t=``){return(Array.isArray(e)?e:[]).map(e=>this.upsertAuditRecord(e,t))}auditRecord(e){let t=typeof e==`string`?String(e).trim():MD(e);return t&&this.auditRecords[t]||null}cacheAuditRecord(e,t){return this.upsertAuditRecord(e,t)}pinAuditRecords(e){this.auditRecordPins=new Set((Array.isArray(e)?e:[]).map(String))}pruneAuditRecords(){let e=Object.keys(this.auditRecords);if(e.length<=LD)return;let t={...this.auditRecords},n=e.length-LD;for(let r of e){if(n<=0)break;this.auditRecordPins.has(r)||(delete t[r],n--)}this.auditRecords=t}get page(){return Gu.page}get customStartDate(){return Vf.customStartDate}get customEndDate(){return Vf.customEndDate}get followsToday(){return Vf.followsToday}liveLogsEnabled(){return Td.liveLogsVisible()}async startLiveLogs(){typeof fetch!=`function`||typeof ReadableStream>`u`||(await Td.ensureLoaded(),this.liveLogsEnabled()&&(this.stopLiveLogs(),this.liveLogsController=typeof AbortController==`function`?new AbortController:null,this.readLiveLogsStream(this.liveLogsController)))}stopLiveLogs(){this.liveLogsStreaming=!1,this.liveLogsReconnectTimer&&=(clearTimeout(this.liveLogsReconnectTimer),null),this.liveLogsController&&typeof this.liveLogsController.abort==`function`&&this.liveLogsController.abort(),this.liveLogsController=null}ensureLiveLogs(){this.liveLogsController||this.liveLogsReconnectTimer||this.startLiveLogs()}async readLiveLogsStream(e){let t={};e&&(t.signal=e.signal);let n=OD(this.liveLogsLastSeq),r=Y.generation;try{let i=await vd(n,t);if(i.status===401){if(Y.handleUnauthorized(r),r{this.liveLogsReconnectTimer=null,this.startLiveLogs()},t)}async fetchAuditEntryDetail(e){if(!this.auditEntryShouldFetchDetail(e))return;let t=String(e.id||``).trim();if(!t)return;e._detail_loading=!0;let n=e;try{let e=await bd(`/admin/audit/detail?log_id=`+encodeURIComponent(t),{label:`audit detail`});if(e.stale||!e.ok)return;n=this.mergeLiveAuditEntry(e.data,`audit.detail`)||n}catch(e){console.error(`Failed to fetch audit detail:`,e)}finally{this.clearAuditDetailLoading(n)}}};Object.assign(RD.prototype,kD());var zD=new RD;if(typeof window<`u`){let e=!1;window.addEventListener(`pagehide`,()=>{e=!!zD.liveLogsController,zD.stopLiveLogs()}),window.addEventListener(`pageshow`,t=>{t.persisted&&e&&zD.ensureLiveLogs()})}var BD=null;An(()=>{On(()=>{let e=Y.refreshTick;if(BD===null){BD=e;return}e!==BD&&(BD=e,wr(()=>{zD.stopLiveLogs(),zD.startLiveLogs()}))})});function VD(){return{total_requests:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,uncached_input_tokens:0,cached_input_tokens:0,cache_write_input_tokens:0,total_input_cost:null,total_output_cost:null,total_cost:null,rewrite_tokens_saved:0,rewrite_cost_saved:null}}function HD(){return{entries:[],total:0,limit:50,offset:0}}function UD(e,t){let n=[[`model`,e&&e.model],[`provider`,e&&e.provider],[`label`,e&&e.label],[`user_path`,e&&e.user_path]],r=``;for(let[e,i]of n)!i||e===t||(r+=`&`+e+`=`+encodeURIComponent(i));return r}function WD({limit:e,offset:t,hideCached:n,search:r}){let i=`&limit=`+e+`&offset=`+t;return i+=`&cache_mode=`+(n?`uncached`:`all`),r&&(i+=`&search=`+encodeURIComponent(r)),i}function GD(e,t){let n=new Set(e||[]);return t&&n.add(t),[...n].sort()}function KD(e,t){let n=Number(t&&t.total_requests||0)-Number(e&&e.total_requests||0);return Number.isFinite(n)&&n>0?n:0}function qD(e,t,n){let r=n?e:t,i=Number(r&&r.total_requests||0);return Number.isFinite(i)?i:0}function JD(e,t,n){let r=KD(e,t);return r<=0?``:n?mf(r)+` cached requests hidden`:mf(Number(e&&e.total_requests||0))+` to providers + `+mf(r)+` from cache`}function YD(e){let t=e||{};return t.total_input_cost===null||t.total_input_cost===void 0?``:hf(t.total_input_cost)+` input + `+hf(t.total_output_cost)+` output`}function XD(e){let t=Number(e&&e.rewrite_tokens_saved||0);return Number.isFinite(t)&&t>0?t:0}function ZD(e){return XD(e)>0}function QD(e){let t=e||{};return t.rewrite_cost_saved===void 0?null:t.rewrite_cost_saved}function $D(){return`Estimated at 4 net characters removed per token`}function eO(e,t){return t===`costs`?hf(QD(e)):vf(XD(e))}function tO(e,t){let n=t===`costs`,r=n?Number(QD(e)):XD(e);if(!Number.isFinite(r)||r<=0)return null;let i=e&&(n?e.total_cost:e.total_input_tokens);if(i==null)return null;let a=Number(i);return!Number.isFinite(a)||a<0?null:r/(a+r)*100}function nO(e,t){let n=tO(e,t);return n===null?``:(n<.1?`<0.1`:n.toFixed(1))+`% less`}function rO(e,t){let n=XD(e);if(n<=0)return``;let r=[mf(n)+` estimated prompt token-transmissions removed across provider requests`,$D(),`Savings are summed per provider request; resent conversation history is counted again`],i=QD(e);i!=null&&(r.push(hf(i)+` estimated gross input cost avoided`),r.push(`Prompt-cache changes caused by rewriting are not included`));let a=nO(e,t);return a&&r.push(a+` than the same traffic without rewriting (`+(t===`costs`?`cost`:`tokens`)+`)`),r.join(` -`)}function iO(e){return String(e&&e.cost_source||``).trim()}function aO(e){let t=iO(e);return t===`openrouter_credits`||t===`xai_cost_in_usd_ticks`}function oO(e){switch(iO(e)){case`openrouter_credits`:return`Costs from OpenRouter USD-based credits.`;case`xai_cost_in_usd_ticks`:return`Costs from xAI usage.cost_in_usd_ticks.`;default:return``}}function sO(e){return String(e&&e.cache_type||``).trim().toLowerCase()}function cO(e){let t=sO(e);return t===`exact`||t===`semantic`}function lO(e){let t=sO(e);return t===`exact`?`Exact`:t===`semantic`?`Semantic`:`-`}function uO(e,t){let n=t?String(t):``;return cO(e)?n?`Saved by cache — not charged -`+n:`Saved by cache — not charged`:n}function dO(e){let t=Number(e&&e.cached_input_ratio);return!Number.isFinite(t)||t<=0?0:Math.min(1,t)}function fO(e){return Number(e&&e.cached_input_tokens||0)>0}function pO(e){return fO(e)?(dO(e)*100).toFixed(1)+`%`:``}function mO(e){if(!fO(e))return``;let t=Number(e.cached_input_tokens||0),n=Number(e.uncached_input_tokens||0),r=Number(e.cache_write_input_tokens||0),i=t+n+r,a=[mf(t)+` cached / `+mf(i)+` input tokens`];return r>0&&a.push(mf(r)+` cache write`),a.join(` -`)}function hO(e){let t=[];if(oO(e)&&(t.push(oO(e)),t.push(``)),t.push(`Input: `+hf(e.input_cost)),t.push(`Output: `+hf(e.output_cost)),e.raw_data){t.push(``);for(let[n,r]of Object.entries(e.raw_data)){let e=n.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase()),i=r&&typeof r==`object`?JSON.stringify(r):mf(r);t.push(e+`: `+i)}}return t.join(` -`)}function gO(e){return Array.isArray(e&&e.labels)?e.labels:[]}function _O(e,t,n){return(e||[]).length>0||t?!0:(n||[]).some(e=>gO(e).length>0)}function vO(e){return e&&typeof e.total_tokens==`number`?e.total_tokens:(e&&e.input_tokens||0)+(e&&e.output_tokens||0)}function yO(e,t){return t?e.total_cost||0:vO(e)}function bO(e,t){return[...e||[]].sort((e,n)=>t?(n.total_cost||0)-(e.total_cost||0):yO(n,t)-yO(e,t))}function xO(e){let t=Array.isArray(e)?e:[];if(t.length===0)return!1;if(t.length!==1)return!0;let n=String(t[0]&&t[0].user_path||``).trim();return n!==``&&n!==`/`}function SO(e){return(e||`chart`)===`chart`||e===`stacked`}function CO(e,t,n){let r=bO(e,n),i=e=>Number(e)||0,a=e=>n?Math.min(i(e.cached_input_cost),i(e.input_cost)):i(e.cached_input_tokens),o=e=>n?i(e.input_cost)-a(e):i(e.uncached_input_tokens)+i(e.cached_input_tokens)+i(e.cache_write_input_tokens)>0?i(e.uncached_input_tokens)+i(e.cache_write_input_tokens):i(e.input_tokens),s=e=>i(n?e.output_cost:e.output_tokens),c=e=>n?0:i(e.local_cached_input_tokens),l=e=>n?0:i(e.local_cached_output_tokens),u=r.slice(0,10),d=r.slice(10),f=u.map(t),p=u.map(o),m=u.map(s),h=u.map(a),g=u.map(c),_=u.map(l);if(d.length>0){f.push(`Other`);let e=e=>d.reduce((t,n)=>t+e(n),0);p.push(e(o)),m.push(e(s)),h.push(e(a)),g.push(e(c)),_.push(e(l))}return{labels:f,inputs:p,outputs:m,prompts:h,localIns:g,localOuts:_}}function wO(e){return Math.max(200,e*32+72)}var TO=new class{#e=j(`tokens`);get usageMode(){return R(this.#e)}set usageMode(e){M(this.#e,e,!0)}get usageFilterModel(){return zD.usageFilterModel}set usageFilterModel(e){zD.usageFilterModel=e}get usageFilterProvider(){return zD.usageFilterProvider}set usageFilterProvider(e){zD.usageFilterProvider=e}get usageFilterLabel(){return zD.usageFilterLabel}set usageFilterLabel(e){zD.usageFilterLabel=e}get usageFilterUserPath(){return zD.usageFilterUserPath}set usageFilterUserPath(e){zD.usageFilterUserPath=e}#t=j(N({models:[],providers:[],labels:[]}));get usageFacetOptions(){return R(this.#t)}set usageFacetOptions(e){M(this.#t,e,!0)}#n=j(N(VD()));get usageSummary(){return R(this.#n)}set usageSummary(e){M(this.#n,e,!0)}#r=j(N(VD()));get usageSummaryAll(){return R(this.#r)}set usageSummaryAll(e){M(this.#r,e,!0)}#i=j(N([]));get modelUsage(){return R(this.#i)}set modelUsage(e){M(this.#i,e,!0)}#a=j(N([]));get userPathUsage(){return R(this.#a)}set userPathUsage(e){M(this.#a,e,!0)}#o=j(N([]));get labelUsage(){return R(this.#o)}set labelUsage(e){M(this.#o,e,!0)}get usageLog(){return zD.usageLog}set usageLog(e){zD.usageLog=e}get usageLogSearch(){return zD.usageLogSearch}set usageLogSearch(e){zD.usageLogSearch=e}get usageLogHideCached(){return zD.usageLogHideCached}set usageLogHideCached(e){zD.usageLogHideCached=e}#s=j(`chart`);get modelUsageView(){return R(this.#s)}set modelUsageView(e){M(this.#s,e,!0)}#c=j(`chart`);get userPathUsageView(){return R(this.#c)}set userPathUsageView(e){M(this.#c,e,!0)}#l=j(`chart`);get labelUsageView(){return R(this.#l)}set labelUsageView(e){M(this.#l,e,!0)}#u=j(!1);get summaryLoading(){return R(this.#u)}set summaryLoading(e){M(this.#u,e,!0)}#d=j(!1);get modelUsageLoading(){return R(this.#d)}set modelUsageLoading(e){M(this.#d,e,!0)}#f=j(!1);get userPathUsageLoading(){return R(this.#f)}set userPathUsageLoading(e){M(this.#f,e,!0)}#p=j(!1);get labelUsageLoading(){return R(this.#p)}set labelUsageLoading(e){M(this.#p,e,!0)}#m=j(!1);get usageLogLoading(){return R(this.#m)}set usageLogLoading(e){M(this.#m,e,!0)}#h={};#g(e){this.#h[e]&&this.#h[e].abort();let t=new AbortController;return this.#h[e]=t,t}#_(e,t){this.#h[e]===t&&(this.#h[e]=null)}filterQueryStr(e){return UD({model:this.usageFilterModel,provider:this.usageFilterProvider,label:this.usageFilterLabel,user_path:this.usageFilterUserPath},e)}onUsageFilterChanged(){this.fetchUsagePage()}toggleUsageLabelFilter(e){this.usageFilterLabel=this.usageFilterLabel===e?``:e,this.onUsageFilterChanged()}usageLabelChipTitle(e){return this.usageFilterLabel===e?`Clear label filter`:`Filter usage by "`+e+`"`}toggleUsageMode(e){this.usageMode=e,Gu.navigate(`usage`,e===`costs`?`costs`:null)}toggleUsageChartView(e,t){e===`model`&&(this.modelUsageView=t),e===`userPath`&&(this.userPathUsageView=t),e===`label`&&(this.labelUsageView=t)}usageFilterModelOptions(){return GD(this.usageFacetOptions.models,this.usageFilterModel)}usageFilterProviderOptions(){return GD(this.usageFacetOptions.providers,this.usageFilterProvider)}usageFilterLabelOptions(){return GD(this.usageFacetOptions.labels,this.usageFilterLabel)}async fetchUsagePage(){await Td.ensureLoaded();let e=[this.fetchUsagePageSummary(),this.fetchUsageFacetOptions(),this.fetchModelUsage(),this.fetchUserPathUsage(),this.fetchLabelUsage(),this.fetchUsageLog(!0)];qf.cacheAnalyticsEnabled()&&e.push(qf.fetchCacheOverview(this.filterQueryStr())),await Promise.all(e)}async fetchUsagePageSummary(){let e=this.#g(`summary`);this.summaryLoading=!0;try{let t=Vf.queryStr()+this.filterQueryStr(),[n,r]=await Promise.all([bd(`/admin/usage/summary?`+t+`&cache_mode=uncached`,{label:`usage page summary`,signal:e.signal}),bd(`/admin/usage/summary?`+t+`&cache_mode=all`,{label:`usage page summary (all)`,signal:e.signal})]);if(n.stale||r.stale||e.signal.aborted)return;if(!n.ok||!r.ok){this.usageSummary=VD(),this.usageSummaryAll=VD();return}this.usageSummary=n.data&&typeof n.data==`object`?n.data:VD(),this.usageSummaryAll=r.data&&typeof r.data==`object`?r.data:VD()}catch(e){if(Sd(e))return;console.error(`Failed to fetch usage page summary:`,e),this.usageSummary=VD(),this.usageSummaryAll=VD()}finally{this.#_(`summary`,e),this.#h.summary===null&&(this.summaryLoading=!1)}}async fetchUsageFacetOptions(){let e=this.#g(`facets`);try{let t=async(t,n)=>{let r=await bd(t+`?`+Vf.queryStr()+this.filterQueryStr(n),{label:`usage facet options`,signal:e.signal});return r.stale?null:r.ok&&Array.isArray(r.data)?r.data:[]},n=t(`/admin/usage/models`,`model`),r=!this.usageFilterModel&&!this.usageFilterProvider,[i,a,o]=await Promise.all([n,r?n:t(`/admin/usage/models`,`provider`),t(`/admin/usage/labels`,`label`)]);if(e.signal.aborted||i===null||a===null||o===null)return;this.usageFacetOptions={models:i.map(e=>e&&e.model).filter(Boolean),providers:a.map(e=>wf(e)).filter(Boolean),labels:o.map(e=>e&&e.label).filter(Boolean)}}catch(e){if(Sd(e))return;console.error(`Failed to fetch usage facet options:`,e),this.usageFacetOptions={models:[],providers:[],labels:[]}}finally{this.#_(`facets`,e)}}async#v(e,t,n,r,i){let a=this.#g(e);i(!0);try{let e=await bd(t+`?`+Vf.queryStr()+this.filterQueryStr(),{label:n,signal:a.signal});if(e.stale||a.signal.aborted)return;if(!e.ok){r([]);return}r(Array.isArray(e.data)?e.data:[])}catch(e){if(Sd(e))return;console.error(`Failed to fetch `+n+`:`,e),r([])}finally{this.#_(e,a),this.#h[e]===null&&i(!1)}}fetchModelUsage(){return this.#v(`modelUsage`,`/admin/usage/models`,`usage models`,e=>this.modelUsage=e,e=>this.modelUsageLoading=e)}fetchUserPathUsage(){return this.#v(`userPathUsage`,`/admin/usage/user-paths`,`usage user paths`,e=>this.userPathUsage=e,e=>this.userPathUsageLoading=e)}fetchLabelUsage(){return this.#v(`labelUsage`,`/admin/usage/labels`,`usage labels`,e=>this.labelUsage=e,e=>this.labelUsageLoading=e)}async fetchUsageLog(e){let t=this.#g(`usageLog`);this.usageLogLoading=!0;try{e&&(this.usageLog.offset=0);let n=Vf.queryStr()+this.filterQueryStr();n+=WD({limit:this.usageLog.limit,offset:this.usageLog.offset,hideCached:this.usageLogHideCached,search:this.usageLogSearch});let r=await bd(`/admin/usage/log?`+n,{label:`usage log`,signal:t.signal});if(r.stale||t.signal.aborted)return;if(!r.ok){this.usageLog=HD();return}let i=r.data&&typeof r.data==`object`?r.data:HD();i.entries||=[],this.usageLog=i}catch(e){if(Sd(e))return;console.error(`Failed to fetch usage log:`,e),this.usageLog=HD()}finally{this.#_(`usageLog`,t),this.#h.usageLog===null&&(this.usageLogLoading=!1)}}usageLogNextPage(){this.usageLog.offset+this.usageLog.limit0&&(this.usageLog.offset=Math.max(0,this.usageLog.offset-this.usageLog.limit),this.fetchUsageLog(!1))}};zD.fetchUsage=()=>{Gu.page===`usage`&&TO.fetchUsagePage()};var EO=B(`
            `);function DO(e,t){O(t,!0);let n=q(t,`value`,15,``),r=q(t,`placeholder`,3,``),i=q(t,`label`,3,``),a=q(t,`id`,3,void 0),o=q(t,`oninput`,3,void 0),s=q(t,`class`,3,``);var c=EO(),l=P(c);J(l,{get icon(){return mu},class:`filter-input-icon`});var u=I(l,2);ea(u),D(c),L(()=>{G(c,1,Ni([`filter-input-wrap`,s()]),`svelte-30xz1k`),K(u,`id`,a()),K(u,`placeholder`,r()),K(u,`aria-label`,i())}),z(`input`,u,function(...e){o()?.apply(this,e)}),la(u,n),V(e,c),k()}Br([`input`]);function OO(e,t=300){let n=null,r=(...r)=>{clearTimeout(n),n=setTimeout(()=>{n=null,e(...r)},t)};return r.cancel=()=>{clearTimeout(n),n=null},r}var kO=B(``),AO=B(``),jO=B(`
            `);function MO(e,t){O(t,!0);let n=OO(()=>TO.onUsageFilterChanged());On(()=>n.cancel);var r=jO(),i=P(r),a=P(i);a.value=a.__value=``,W(I(a),16,()=>TO.usageFilterModelOptions(),e=>e,(e,t)=>{var n=kO(),r=P(n,!0);D(n);var i={};L(()=>{H(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(i);var o=I(i,2),s=P(o);s.value=s.__value=``,W(I(s),16,()=>TO.usageFilterProviderOptions(),e=>e,(e,t)=>{var n=kO(),r=P(n,!0);D(n);var i={};L(()=>{H(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(o);var c=I(o,2),l=e=>{var t=AO(),n=P(t);n.value=n.__value=``,W(I(n),16,()=>TO.usageFilterLabelOptions(),e=>e,(e,t)=>{var n=kO(),r=P(n,!0);D(n);var i={};L(()=>{H(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(t),z(`change`,t,()=>TO.onUsageFilterChanged()),Ui(t,()=>TO.usageFilterLabel,e=>TO.usageFilterLabel=e),V(e,t)},u=A(()=>TO.usageFilterLabelOptions().length>0);U(c,e=>{R(u)&&e(l)}),DO(I(c,2),{class:`usage-page-filters-user-path`,placeholder:`User path /team/alpha`,label:`Filter by user path`,get oninput(){return n},get value(){return TO.usageFilterUserPath},set value(e){TO.usageFilterUserPath=e}}),D(r),z(`change`,i,()=>TO.onUsageFilterChanged()),Ui(i,()=>TO.usageFilterModel,e=>TO.usageFilterModel=e),z(`change`,o,()=>TO.onUsageFilterChanged()),Ui(o,()=>TO.usageFilterProvider,e=>TO.usageFilterProvider=e),V(e,r),k()}Br([`change`]);var NO=B(`
            Cache Saved
            Cache Hits
            `,1);function PO(e,t){O(t,!0);var n=Xr(),r=F(n),i=e=>{var t=NO(),n=F(t),r=I(P(n),2),i=P(r,!0);D(r),D(n);var a=I(n,2),o=I(P(a),2),s=P(o,!0);D(o),D(a),L((e,t)=>{H(i,e),H(s,t)},[()=>hf(qf.cacheOverview.summary.total_saved_cost),()=>mf(qf.cacheOverview.summary.total_hits)]),V(e,t)},a=A(()=>qf.cacheAnalyticsEnabled());U(r,e=>{R(a)&&e(i)}),V(e,n),k()}var FO=B(` `),IO=B(`
            Pro Saved
            `),LO=B(`
            Total Requests
            Estimated Cost
            `);function RO(e,t){O(t,!0);let n=A(()=>ZD(TO.usageSummary)),r=A(()=>eO(TO.usageSummary,TO.usageMode)),i=A(()=>nO(TO.usageSummary,TO.usageMode));var a=LO(),o=P(a),s=I(P(o),2),c=P(s),l=e=>{kE(e,{size:18,label:`Loading usage summary`})},u=e=>{var t=Yr();L(e=>H(t,e),[()=>mf(qD(TO.usageSummary,TO.usageSummaryAll,TO.usageLogHideCached))]),V(e,t)};U(c,e=>{TO.summaryLoading?e(l):e(u,-1)}),D(s),D(o);var d=I(o,2),f=I(P(d),2),p=P(f),m=e=>{kE(e,{size:18,label:`Loading usage summary`})},h=e=>{var t=Yr();L(e=>H(t,e),[()=>hf(TO.usageSummary.total_cost)]),V(e,t)};U(p,e=>{TO.summaryLoading?e(m):e(h,-1)}),D(f),D(d);var g=I(d,2),_=e=>{var t=IO(),n=I(P(t),2),a=P(n),o=P(a,!0);D(a);var s=I(a,2),c=e=>{var t=FO(),n=P(t,!0);D(t),L(()=>H(n,R(i))),V(e,t)};U(s,e=>{R(i)&&e(c)}),D(n),D(t),L(e=>{K(n,`title`,e),H(o,R(r))},[()=>rO(TO.usageSummary,TO.usageMode)]),V(e,t)};U(g,e=>{R(n)&&e(_)}),PO(I(g,2),{}),D(a),L((e,t)=>{K(s,`title`,e),K(f,`title`,t)},[()=>JD(TO.usageSummary,TO.usageSummaryAll,TO.usageLogHideCached),()=>YD(TO.usageSummary)]),V(e,a),k()}function zO(e,t,n,r){let{stacked:i=!1,costs:a=!1,resolve:o=e=>e}=r||{},s=e=>a?`$`+Math.abs(e).toFixed(2):vf(Math.abs(e)),c=e=>a?`$`+Math.abs(e).toFixed(4):Math.abs(e).toLocaleString(),l=e=>e.map(e=>i?Math.abs(e):-Math.abs(e)),u=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderColor:`transparent`,borderWidth:0,borderRadius:4,maxBarThickness:22}),d=e=>(e||[]).some(e=>Math.abs(e)>0),f=[u(a?`Input Cost`:`Input Tokens`,l(n.inputs),o(`var(--token-input)`)),u(a?`Output Cost`:`Output Tokens`,n.outputs,o(`var(--token-output)`))];return d(n.prompts)&&f.push(u(a?`Prompt Cached Cost`:`Prompt Cached`,l(n.prompts),o(`var(--token-prompt)`))),!a&&d(n.localIns)&&f.push(u(`Locally Cached (Input)`,l(n.localIns),o(`var(--token-local)`))),!a&&d(n.localOuts)&&f.push(u(`Locally Cached (Output)`,n.localOuts,o(`var(--token-local)`))),{type:`bar`,data:{labels:t,datasets:f},options:{indexAxis:`y`,responsive:!0,maintainAspectRatio:!1,animation:{duration:0},layout:{padding:{top:8}},scales:{x:{stacked:!0,beginAtZero:!0,grid:i?{color:e.grid}:{color:t=>t.tick&&t.tick.value===0?e.text:e.grid},border:{display:!1},ticks:{color:e.text,font:WC(),callback:e=>s(e)}},y:{stacked:!0,grid:{display:!1},border:{display:!1},ticks:{color:e.text,font:WC(),autoSkip:!1}}},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:GC(e,{label:e=>e.dataset.label+`: `+c(e.parsed.x),footer:e=>{let t=0;return e.forEach(e=>{t+=Math.abs(Number(e.parsed.x))||0}),`Total: `+c(t)}})}}}}var BO=B(`
            `),VO=B(`

            `),HO=B(`

            `,1),UO=B(`
            `),WO=B(`Model Provider`,1),GO=B(`User Path`),KO=B(`Label Requests`,1),qO=B(` `,1),JO=B(` `),YO=B(` `,1),XO=B(` `),ZO=B(`
            Input TokensOutput TokensPrompt CachedLocal CachedTotal TokensInput CostOutput CostTotal Cost
            `),QO=B(`
            `),$O=B(`
            `);function ek(e,t){O(t,!0);let n=e=>{var n=BO(),r=P(n);let a;var o=I(r,2);let s;var l=I(o,2);let u;D(n),L(()=>{K(n,`aria-label`,R(i).group),a=G(r,1,`chart-view-btn svelte-1kee4g8`,null,a,{active:R(c)===`chart`}),K(r,`aria-pressed`,R(c)===`chart`),K(r,`aria-label`,`Show ${R(i).noun??``} chart`),s=G(o,1,`chart-view-btn svelte-1kee4g8`,null,s,{active:R(c)===`stacked`}),K(o,`aria-pressed`,R(c)===`stacked`),K(o,`aria-label`,`Show ${R(i).noun??``} stacked chart`),u=G(l,1,`chart-view-btn svelte-1kee4g8`,null,u,{active:R(c)===`table`}),K(l,`aria-pressed`,R(c)===`table`),K(l,`aria-label`,`Show ${R(i).noun??``} table`)}),z(`click`,r,()=>TO.toggleUsageChartView(t.kind,`chart`)),z(`click`,o,()=>TO.toggleUsageChartView(t.kind,`stacked`)),z(`click`,l,()=>TO.toggleUsageChartView(t.kind,`table`)),V(e,n)},r={model:{group:`Model usage view`,noun:`model usage`,tokensTitle:`Token Usage by Model`,costsTitle:`Cost by Model`},userPath:{group:`User path usage view`,noun:`user path usage`,tokensTitle:`Usage by User Path`,costsTitle:`Cost by User Path`},label:{group:`Label usage view`,noun:`label usage`,tokensTitle:`Usage by Label`,costsTitle:`Cost by Label`}},i=A(()=>r[t.kind]),a=A(()=>t.kind===`model`?e=>Ef(e):t.kind===`userPath`?e=>e.user_path||`/`:e=>e.label);function o(e){return t.kind===`model`?(e.provider_name||e.provider||`-`)+`/`+e.model:t.kind===`userPath`?e.user_path||`/`:e.label}let s=A(()=>t.kind===`model`?TO.modelUsage:t.kind===`userPath`?TO.userPathUsage:TO.labelUsage),c=A(()=>t.kind===`model`?TO.modelUsageView:t.kind===`userPath`?TO.userPathUsageView:TO.labelUsageView),l=A(()=>t.kind===`model`?TO.modelUsageLoading:t.kind===`userPath`?TO.userPathUsageLoading:TO.labelUsageLoading),u=A(()=>TO.usageMode===`costs`),d=A(()=>t.kind===`userPath`?xO(R(s)):R(s).length>0),f=A(()=>R(u)?R(i).costsTitle:R(i).tokensTitle),p=A(()=>CO(R(s),R(a),R(u))),m=A(()=>bO(R(s),R(u)));function h(){return SO(R(c))?zO(UC(),R(p).labels,R(p),{stacked:R(c)===`stacked`,costs:R(u),resolve:KC}):null}var g=Xr(),_=F(g),v=e=>{var r=QO(),a=P(r),s=P(a),u=e=>{eD(e,{copyId:`label-usage-help-copy`,label:`label usage help`,text:`One request can have multiple labels. Such a request counts once under each of its labels, so label rows can overlap and add up to more than the period totals.`,title:e=>{var t=VO(),n=P(t,!0);D(t),L(()=>H(n,R(f))),V(e,t)},extra:e=>{var t=Xr(),n=F(t),r=e=>{kE(e,{size:14,get label(){return`Loading ${R(i).noun??``}`}})};U(n,e=>{R(l)&&e(r)}),V(e,t)},$$slots:{title:!0,extra:!0}})},d=e=>{var t=HO(),n=F(t),r=P(n,!0);D(n);var a=I(n,2),o=e=>{kE(e,{size:14,get label(){return`Loading ${R(i).noun??``}`}})};U(a,e=>{R(l)&&e(o)}),L(()=>H(r,R(f))),V(e,t)};U(s,e=>{t.kind===`label`?e(u):e(d,-1)});var g=I(s,2);n(g),D(a);var _=I(a,2),v=e=>{var t=UO();let n;RC(P(t),{build:h}),D(t),L(e=>n=Bi(t,``,n,e),[()=>({height:`${wO(R(p).labels.length)??``}px`})]),V(e,t)},y=A(()=>SO(R(c))),b=e=>{var n=ZO(),r=P(n),i=P(r),a=P(i),s=P(a),c=e=>{var t=WO();Ve(2),V(e,t)},l=e=>{V(e,GO())},u=e=>{var t=KO();Ve(2),V(e,t)};U(s,e=>{t.kind===`model`?e(c):t.kind===`userPath`?e(l,1):e(u,-1)}),Ve(8),D(a),D(i);var d=I(i);W(d,21,()=>R(m),e=>o(e),(e,n)=>{var r=XO(),i=P(r),a=e=>{var t=qO(),r=F(t),i=P(r,!0);D(r);var a=I(r,2),o=P(a),s=P(o,!0);D(o),D(a),L(e=>{H(i,R(n).model||`-`),H(s,e)},[()=>wf(R(n))||`-`]),V(e,t)},o=e=>{var t=JO(),r=P(t,!0);D(t),L(()=>H(r,R(n).user_path||`/`)),V(e,t)},s=e=>{var t=YO(),r=F(t),i=P(r);let a;var o=P(i,!0);D(i),D(r);var s=I(r,2),c=P(s,!0);D(s),L((e,t,r)=>{a=G(i,1,`usage-label-chip`,null,a,{active:TO.usageFilterLabel===R(n).label}),Bi(i,`--label-color: ${e??``}`),K(i,`title`,t),H(o,R(n).label),H(c,r)},[()=>YC(R(n).label),()=>TO.usageLabelChipTitle(R(n).label),()=>mf(R(n).requests)]),z(`click`,i,()=>TO.toggleUsageLabelFilter(R(n).label)),V(e,t)};U(i,e=>{t.kind===`model`?e(a):t.kind===`userPath`?e(o,1):e(s,-1)});var c=I(i),l=P(c,!0);D(c);var u=I(c),d=P(u,!0);D(u);var f=I(u),p=P(f,!0);D(f);var m=I(f),h=P(m,!0);D(m);var g=I(m),_=P(g,!0);D(g);var v=I(g),y=P(v,!0);D(v);var b=I(v),x=P(b,!0);D(b);var S=I(b),C=P(S,!0);D(S),D(r),L((e,t,n,r,i,a,o,s,c,u,g)=>{H(l,e),H(d,t),K(f,`title`,n),H(p,r),K(m,`title`,`${i??``} input + ${a??``} output`),H(h,o),H(_,s),H(y,c),H(x,u),H(C,g)},[()=>mf(R(n).input_tokens),()=>mf(R(n).output_tokens),()=>R(n).cached_input_cost==null?``:`~`+hf(R(n).cached_input_cost)+` at current cached-input pricing`,()=>mf(R(n).cached_input_tokens||0),()=>mf(R(n).local_cached_input_tokens||0),()=>mf(R(n).local_cached_output_tokens||0),()=>mf((R(n).local_cached_input_tokens||0)+(R(n).local_cached_output_tokens||0)),()=>mf(vO(R(n))),()=>hf(R(n).input_cost),()=>hf(R(n).output_cost),()=>hf(R(n).total_cost)]),V(e,r)}),D(d),D(r),D(n),V(e,n)};U(_,e=>{R(y)?e(v):e(b,-1)}),D(r),V(e,r)},y=e=>{var t=$O();kE(P(t),{size:20,get label(){return`Loading ${R(i).noun??``}`}}),D(t),V(e,t)};U(_,e=>{R(d)?e(v):R(l)&&e(y,1)}),V(e,g),k()}Br([`click`]);var tk=B(``);function nk(e,t){O(t,!0);let n=q(t,`total`,3,0),r=q(t,`offset`,3,0),i=q(t,`limit`,3,25);var a=Xr(),o=F(a),s=e=>{var a=tk(),o=P(a),s=P(o,!0);D(o);var c=I(o,2),l=P(c),u=P(l,!0);D(l);var d=I(l,2),f=P(d,!0);D(d),D(c),D(a),L((e,t,a)=>{H(s,e),l.disabled=r()===0,H(u,t),d.disabled=r()+i()>=n(),H(f,a)},[()=>jc({start:$a(r()+1),end:$a(Math.min(r()+i(),n())),total:$a(n())}),()=>lo(),()=>oo()]),z(`click`,l,()=>t.onprev?.()),z(`click`,d,()=>t.onnext?.()),V(e,a)};U(o,e=>{n()>0&&e(s)}),V(e,a),k()}Br([`click`]);var rk=(e,t=f)=>{var n=Xr(),r=F(n),i=e=>{var n=ak();W(n,20,()=>gO(t()),e=>e,(e,t)=>{var n=ik();let r;var i=P(n,!0);D(n),L((e,a)=>{r=G(n,1,`usage-label-chip`,null,r,{active:TO.usageFilterLabel===t}),Bi(n,`--label-color: ${e??``}`),K(n,`title`,a),H(i,t)},[()=>YC(t),()=>TO.usageLabelChipTitle(t)]),z(`click`,n,()=>TO.toggleUsageLabelFilter(t)),V(e,n)}),D(n),V(e,n)},a=A(()=>gO(t()).length>0),o=e=>{V(e,ok())};U(r,e=>{R(a)?e(i):e(o,-1)}),V(e,n)},ik=B(``),ak=B(`
            `),ok=B(`-`),sk=B(`Labels`),ck=B(`Cost`),lk=B(``),uk=B(` `),dk=B(``),fk=B(` `),pk=B(` `),mk=B(`
            TimestampProviderModelUser PathCacheProvider Cache
            `),hk=B(`
            `),gk=B(`
            `),_k=B(`

            Request Log

            `);function vk(e,t){O(t,!0);let n=A(()=>TO.usageMode===`costs`),r=A(()=>_O(TO.labelUsage,TO.usageFilterLabel,TO.usageLog.entries)),i=OO(()=>TO.fetchUsageLog(!0));On(()=>i.cancel);var a=_k(),o=I(P(a),2),s=P(o);DO(P(s),{placeholder:`Search by request ID, model, provider...`,label:`Search by request ID, model, provider`,get oninput(){return i},get value(){return TO.usageLogSearch},set value(e){TO.usageLogSearch=e}}),D(s);var c=I(s,2),l=P(c),u=P(l);ea(u),Ve(2),D(l),D(c),D(o);var d=I(o,2),f=e=>{var t=mk(),i=P(t),a=P(i),o=P(a),s=I(P(o),4),c=e=>{V(e,sk())};U(s,e=>{R(r)&&e(c)});var l=I(s,3),u=P(l,!0);D(l);var d=I(l),f=P(d,!0);D(d);var p=I(d),m=P(p,!0);D(p);var h=I(p),g=e=>{V(e,ck())};U(h,e=>{R(n)||e(g)}),D(o),D(a);var _=I(a);W(_,21,()=>TO.usageLog.entries,e=>e.id,(e,t)=>{var i=pk();let a;var o=P(i),s=P(o,!0);D(o);var c=I(o),l=P(c),u=P(l,!0);D(l),D(c);var d=I(c),f=P(d,!0);D(d);var p=I(d),m=P(p,!0);D(p);var h=I(p),g=e=>{var n=lk();rk(P(n),()=>R(t)),D(n),V(e,n)};U(h,e=>{R(r)&&e(g)});var _=I(h),v=P(_,!0);D(_);var y=I(_),b=P(y),x=e=>{var n=uk(),r=P(n,!0);D(n),L(e=>H(r,e),[()=>pO(R(t))]),V(e,n)},S=A(()=>fO(R(t))),C=e=>{V(e,ok())};U(b,e=>{R(S)?e(x):e(C,-1)}),D(y);var w=I(y),T=P(w,!0);D(w);var E=I(w),ee=P(E,!0);D(E);var te=I(E),ne=P(te),re=P(ne,!0);D(ne);var ie=I(ne,2),ae=e=>{{let n=A(()=>oO(R(t)));J(e,{get icon(){return Ul},class:`cost-source-icon`,get title(){return R(n)}})}},oe=A(()=>R(n)&&aO(R(t)));U(ie,e=>{R(oe)&&e(ae)});var se=I(ie,2),ce=e=>{J(e,{get icon(){return Kl},class:`cache-savings-icon`})},le=A(()=>R(n)&&cO(R(t)));U(se,e=>{R(le)&&e(ce)});var ue=I(se,2),de=e=>{var n=dk();L(()=>K(n,`title`,R(t).costs_calculation_caveat)),V(e,n)};U(ue,e=>{R(n)&&R(t).costs_calculation_caveat&&e(de)}),D(te);var fe=I(te),pe=e=>{var n=fk(),r=P(n),i=P(r,!0);D(r);var a=I(r,2),o=e=>{{let n=A(()=>oO(R(t)));J(e,{get icon(){return Ul},class:`cost-source-icon`,get title(){return R(n)}})}},s=A(()=>aO(R(t)));U(a,e=>{R(s)&&e(o)});var c=I(a,2),l=e=>{J(e,{get icon(){return Kl},class:`cache-savings-icon`})},u=A(()=>cO(R(t)));U(c,e=>{R(u)&&e(l)});var d=I(c,2),f=e=>{var n=dk();L(()=>K(n,`title`,R(t).costs_calculation_caveat)),V(e,n)};U(d,e=>{R(t).costs_calculation_caveat&&e(f)}),D(n),L((e,t)=>{K(n,`title`,e),H(i,t)},[()=>uO(R(t),hO(R(t))),()=>hf(R(t).total_cost)]),V(e,n)};U(fe,e=>{R(n)||e(pe)}),D(i),L((e,n,r,c,l,d,p,h,g,_,b,x,S)=>{a=G(i,1,`svelte-hg4ill`,null,a,e),K(o,`title`,n),H(s,r),H(u,c),H(f,R(t).model),H(m,R(t).user_path||`-`),H(v,l),K(y,`title`,d),K(w,`title`,p),H(T,h),K(E,`title`,g),H(ee,_),K(te,`title`,b),K(ne,`title`,x),H(re,S)},[()=>({"usage-log-row-cached":cO(R(t))}),()=>Sf(R(t).timestamp),()=>md.formatTimestamp(R(t).timestamp),()=>wf(R(t))||`-`,()=>lO(R(t)),()=>mO(R(t)),()=>R(n)?mf(R(t).input_tokens)+` tokens`:``,()=>R(n)?hf(R(t).input_cost):mf(R(t).input_tokens),()=>R(n)?mf(R(t).output_tokens)+` tokens`:``,()=>R(n)?hf(R(t).output_cost):mf(R(t).output_tokens),()=>R(n)?uO(R(t),``):``,()=>R(n)?uO(R(t),mf(R(t).total_tokens)+` tokens -`+hO(R(t))):``,()=>R(n)?hf(R(t).total_cost):mf(R(t).total_tokens)]),V(e,i)}),D(_),D(i),D(t),L(()=>{H(u,R(n)?`Input Cost`:`Input`),H(f,R(n)?`Output Cost`:`Output`),H(m,R(n)?`Total Cost`:`Total`)}),V(e,t)},p=e=>{var t=hk();kE(P(t),{size:20,label:`Loading request log`}),D(t),V(e,t)},m=e=>{var t=gk();ME(P(t),{}),D(t),V(e,t)};U(d,e=>{TO.usageLog.entries.length>0?e(f):TO.usageLogLoading?e(p,1):e(m,-1)}),nk(I(d,2),{get total(){return TO.usageLog.total},get offset(){return TO.usageLog.offset},get limit(){return TO.usageLog.limit},onprev:()=>TO.usageLogPrevPage(),onnext:()=>TO.usageLogNextPage()}),D(a),z(`change`,u,()=>TO.fetchUsageLog(!0)),ua(u,()=>TO.usageLogHideCached,e=>TO.usageLogHideCached=e),V(e,a),k()}Br([`click`,`change`]);var yk=B(`
            `);function bk(e,t){O(t,!0);let n=`usage`;On(()=>{Y.refreshTick,Gu.page===n&&(TO.fetchUsagePage(),zD.ensureLiveLogs())}),On(()=>{Gu.page===n&&(TO.usageMode=Gu.sub===`costs`?`costs`:`tokens`)});var r=yk(),i=I(P(r),2),a=P(i);VC(a,{ariaLabel:`Usage mode`,options:[{value:`tokens`,label:`Tokens`},{value:`costs`,label:`Costs`}],get value(){return TO.usageMode},onchange:e=>TO.toggleUsageMode(e)}),lp(I(a,2),{onchange:()=>TO.fetchUsagePage()}),D(i);var o=I(i,2);MO(o,{});var s=I(o,2);RO(s,{});var c=I(s,2),l=P(c);ek(l,{kind:`model`});var u=I(l,2);ek(u,{kind:`userPath`}),ek(I(u,2),{kind:`label`}),D(c),vk(I(c,2),{}),D(r),V(e,r),k()}var xk=B(`
            `);function Sk(e,t){let n=q(t,`label`,3,`Loading...`),r=q(t,`class`,3,``);var i=xk(),a=I(P(i),2),o=P(a,!0);D(a),D(i),L(()=>{G(i,1,Ni([`loading-state`,r()]),`svelte-hzxv1d`),H(o,n())}),V(e,i)}var Ck=B(``);function wk(e,t){let n=q(t,`label`,3,``),r=q(t,`class`,3,``),i=q(t,`disabled`,3,!1);var a=Ck();mi(P(a),()=>t.children??f),D(a),L(()=>{G(a,1,Ni([`table-action-btn`,r()])),K(a,`aria-label`,n()),K(a,`title`,n()),a.disabled=i()}),z(`click`,a,function(...e){t.onclick?.apply(this,e)}),V(e,a)}Br([`click`]);async function Tk(e,{label:t,errorFallback:n=`Unable to load ${t}.`,unavailableStatuses:r=[503],normalize:i=e=>Array.isArray(e)?e:[],options:a}){let o;try{o=await bd(e,{...a||{},label:t})}catch(e){return Sd(e)||console.error(`Failed to fetch ${t}:`,e),{status:`error`,items:[],error:n,result:null}}return o.stale?{status:`stale`,items:[],error:``,result:o}:r.includes(o.status)?{status:`unavailable`,items:[],error:``,result:o}:o.ok?{status:`ok`,items:i(o.data),error:``,result:o}:{status:`error`,items:[],error:o.status===401?``:hd(o.data,n),result:o}}async function Ek(e,t,n,{label:r,errorFallback:i=`Unable to ${r}.`,unavailableStatuses:a=[503],unavailableMessage:o=`This feature is unavailable on the gateway.`,options:s}){let c;try{c=await xd(e,t,n,{...s||{},label:r})}catch(e){return Sd(e)||console.error(`Failed to ${r}:`,e),{status:`error`,error:i,result:null}}return c.stale?{status:`stale`,error:``,result:c}:a.includes(c.status)?{status:`unavailable`,error:o,result:c}:c.ok?{status:`ok`,error:``,result:c}:{status:`error`,error:c.status===401?`Authentication required.`:hd(c.data,i),result:c}}function Dk(){return{scope:`user_path`,subject:`/`,period:`daily`,period_seconds:86400,amount:``,source:`manual`}}function Ok(e){let t={user_path:{label:`User path`,chip:`user path`,fieldLabel:`User Path`,placeholder:`/team/alpha`},label:{label:`Label`,chip:`label`,fieldLabel:`Label`,placeholder:`Mobile-App-iOS`}};return t[e]||t.user_path}function kk(){return[`user_path`,`label`].map(e=>({value:e,label:Ok(e).label}))}function Ak(e){return String(e&&e.scope||``).trim()||`user_path`}function jk(e){return String(e&&e.subject||``).trim()||String(e&&e.user_path||``)}function Mk(e){return Ok(Ak(e)).chip}function Nk(e){return Ak(e)===`label`?`budget-label`:`budget-user-path`}function Pk(e){return Ok(String(e&&e.scope||``)).fieldLabel}function Fk(e){return Ok(String(e&&e.scope||``)).placeholder}function Ik(e){e.subject=String(e&&e.scope||``)===`user_path`?`/`:``}function Lk(){return[{value:`hourly`,label:`Hourly`},{value:`daily`,label:`Daily`},{value:`weekly`,label:`Weekly`},{value:`monthly`,label:`Monthly`},{value:`custom`,label:`Custom seconds`}]}function Rk(e){switch(String(e||``).trim().toLowerCase()){case`hourly`:return 3600;case`daily`:return 86400;case`weekly`:return 604800;case`monthly`:return 2592e3;default:return 0}}function zk(e){switch(Number(e||0)){case 3600:return`hourly`;case 86400:return`daily`;case 604800:return`weekly`;case 2592e3:return`monthly`;default:return`custom`}}function Bk(e){return Ak(e)+`:`+jk(e)+`:`+String(e&&e.period_seconds||``)}function Vk(e,t){if(!t||!Array.isArray(e))return null;let n=Bk(t);return e.find(e=>Bk(e)===n)||null}function Hk(e){let t=String(e||``).trim();if(!t)return`User path is required.`;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`);for(let e of n){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function Uk(e){if(Hk(e))return``;let t=String(e||``).trim(),n=(t.startsWith(`/`)?t:`/`+t).split(`/`),r=[];for(let e of n){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function Wk(e){return`/`+String(e||``).trimStart().replace(/^\/+/,``)}function Gk(e){return Array.isArray(e)?e:e&&Array.isArray(e.budgets)?e.budgets:[]}function Kk(e){let t=Number(e&&e.period_seconds||0);return[jk(e),Mk(e),lA(e),zk(t),t?String(t)+`s`:``,t?String(t)+` seconds`:``].join(` `).toLowerCase()}var qk={user_path:0,label:1};function Jk(e,t){let n=Array.isArray(e)?e.slice():[],r=String(t||`subject`);return n.sort((e,t)=>{let n=(qk[Ak(e)]||0)-(qk[Ak(t)]||0),i=jk(e).localeCompare(jk(t)),a=Number(t&&t.period_seconds||0)-Number(e&&e.period_seconds||0);return r===`period`?a||n||i:n||i||a}),n}function Yk(e,t,n){let r=Array.isArray(e)?e:[],i=String(t||``).trim().toLowerCase();return Jk(i?r.filter(e=>Kk(e).includes(i)):r.slice(),n)}function Xk(e){let t=e||{},n=Ak(t),r=String(t.subject||``).trim();if(n===`user_path`){let e=Hk(r);if(e)return{payload:null,error:e}}else if(!r)return{payload:null,error:`Label is required.`};let i=Number(t.amount);if(!Number.isFinite(i)||i<=0)return{payload:null,error:`Amount must be greater than 0.`};let a=String(t.period||``).trim(),o=Rk(a);return a===`custom`&&(o=Number(t.period_seconds)),!Number.isFinite(o)||o<=0?{payload:null,error:`Period seconds must be greater than 0.`}:{payload:{scope:n,subject:n===`user_path`?Uk(r):r,period_seconds:Math.trunc(o),amount:i,source:String(t.source||`manual`).trim()||`manual`},error:``}}function Zk(e){return{scope:Ak(e),subject:jk(e),budget_key:{period_seconds:e.period_seconds},amount:e.amount}}function Qk(e){return{scope:Ak(e),subject:jk(e),budget_key:{period_seconds:e.period_seconds}}}function $k(e){return{scope:Ak(e),subject:jk(e),period_seconds:e.period_seconds}}function eA(e){return hf(e)}function tA(e,t){let n=e||{},r=t||{};return`A budget for "`+((jk(n)||jk(r))+` `+lA({period_seconds:n.period_seconds||r.period_seconds,period_label:r.period_label}))+`" already exists. Saving will override the current `+eA(r.amount)+` limit with `+eA(n.amount)+`.`}function nA(e){let t=Number(e);return!Number.isFinite(t)||t<0?0:t}function rA(e,t){let n=nA(e);return Math.round((t?Math.min(n,1):n)*1e3)/10}function iA(e){return nA(e&&e.usage_ratio)}function aA(e){return rA(iA(e),!0)}function oA(e){return rA(e&&e.period_ratio,!0)}function sA(e){return rA(iA(e),!1).toFixed(1).replace(/\.0$/,``)+`%`}function cA(e){return oA(e).toFixed(1).replace(/\.0$/,``)+`%`}function lA(e){let t=Number(e&&e.period_seconds||0);switch(t){case 3600:return`Hourly`;case 86400:return`Daily`;case 604800:return`Weekly`;case 2592e3:return`Monthly`;default:{let n=String(e&&e.period_label||``).trim();return n?`Custom `+n:`Custom `+String(t||``)+`s`}}}function uA(e){switch(Number(e&&e.period_seconds||0)){case 3600:return`budget-period-label-hourly`;case 86400:return`budget-period-label-daily`;case 604800:return`budget-period-label-weekly`;case 2592e3:return`budget-period-label-monthly`;default:return`budget-period-label-custom`}}function dA(e){return uA(e).replace(`budget-period-label-`,`budget-bar-fill-period-`)}function fA(e){return uA(e).replace(`budget-period-label-`,`budget-bar-track-period-`)}function pA(e){switch(Number(e&&e.period_seconds||0)){case 3600:return Wl;case 86400:return Cu;case 604800:return Nl;case 2592e3:return Pl;default:return _u}}function mA(e){let t=Math.max(0,Math.trunc(Number(e||0)));return t+` `+(t===1?`second`:`seconds`)}function hA(e){let t=Number(e&&e.period_seconds||0);switch(t){case 3600:return`1 hour`;case 86400:return`1 day`;case 604800:return`1 week`;case 2592e3:return`1 month`;default:return mA(t)}}function gA(e){return String(e&&e.source||``).trim()||`manual`}function _A(e){let t=gA(e).toLowerCase();return t===`manual`?`Created from the dashboard.`:t===`config`?`Loaded from configuration.`:`Budget source: `+t}function vA(e){let t=Number(e&&e.remaining);return Number.isFinite(t)?t<0?hf(Math.abs(t))+` over`:hf(t)+` remaining`:``}var X=new class{#e=j(N([]));get budgets(){return R(this.#e)}set budgets(e){M(this.#e,e,!0)}#t=j(!0);get budgetsAvailable(){return R(this.#t)}set budgetsAvailable(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}#r=j(``);get filter(){return R(this.#r)}set filter(e){M(this.#r,e,!0)}#i=j(`subject`);get sortBy(){return R(this.#i)}set sortBy(e){M(this.#i,e,!0)}#a=j(``);get error(){return R(this.#a)}set error(e){M(this.#a,e,!0)}#o=j(!1);get formOpen(){return R(this.#o)}set formOpen(e){M(this.#o,e,!0)}#s=j(!1);get formSubmitting(){return R(this.#s)}set formSubmitting(e){M(this.#s,e,!0)}#c=j(``);get formError(){return R(this.#c)}set formError(e){M(this.#c,e,!0)}#l=j(!1);get editing(){return R(this.#l)}set editing(e){M(this.#l,e,!0)}#u=j(N(Dk()));get form(){return R(this.#u)}set form(e){M(this.#u,e,!0)}#d=j(!1);get overrideDialogOpen(){return R(this.#d)}set overrideDialogOpen(e){M(this.#d,e,!0)}#f=j(null);get overridePendingPayload(){return R(this.#f)}set overridePendingPayload(e){M(this.#f,e,!0)}#p=j(null);get overrideExistingBudget(){return R(this.#p)}set overrideExistingBudget(e){M(this.#p,e,!0)}#m=j(``);get resettingKey(){return R(this.#m)}set resettingKey(e){M(this.#m,e,!0)}#h=j(``);get deletingKey(){return R(this.#h)}set deletingKey(e){M(this.#h,e,!0)}#g=j(!1);get resetAllLoading(){return R(this.#g)}set resetAllLoading(e){M(this.#g,e,!0)}#_=null;managementEnabled(){return Td.budgetsVisible()}filteredBudgets(){return Yk(this.budgets,this.filter,this.sortBy)}async fetchBudgetsPage(){if(await Td.ensureLoaded(),!this.managementEnabled()){this.budgets=[],this.budgetsAvailable=!1,this.error=``;return}return this.#_||=this.fetchBudgets().finally(()=>{this.#_=null}),this.#_}async fetchBudgets(){this.loading=!0,this.error=``;let e=await Tk(`/admin/budgets`,{label:`budgets`,errorFallback:`Unable to load budgets.`,normalize:Gk});if(this.loading=!1,e.status!==`stale`){if(e.status===`unavailable`){this.budgetsAvailable=!1,this.budgets=[];return}if(!e.result){this.budgets=[],this.error=e.error;return}if(this.budgetsAvailable=!0,e.status===`error`){this.error=e.error;return}this.budgets=e.items}}openForm(e){if(this.editing=!!e,this.formError=``,e){let t=Number(e.period_seconds||0);this.form={scope:Ak(e),subject:jk(e),period:zk(t),period_seconds:t,amount:String(e.amount||``),source:String(e.source||`manual`)}}else this.form=Dk();this.formOpen=!0}syncPeriodSeconds(){let e=Rk(String(this.form.period||``).trim());e>0&&(this.form.period_seconds=e)}setFormSubject(e){this.form.subject=this.form.scope===`label`?String(e??``):Wk(e)}syncScope(){Ik(this.form)}closeForm(){this.closeOverrideDialog(),this.formOpen=!1,this.formSubmitting=!1,this.formError=``,this.editing=!1,this.form=Dk()}async submitForm(){if(this.formSubmitting)return;let{payload:e,error:t}=Xk(this.form);if(!e){this.formError=t;return}if(!this.editing){let t=Vk(this.budgets,e);if(t){this.openOverrideDialog(t,e);return}}await this.saveBudgetPayload(e)}async saveBudgetPayload(e){if(this.formSubmitting||!e)return;this.formSubmitting=!0,this.formError=``;let t=await Ek(`/admin/budgets`,`PUT`,Zk(e),{label:`save budget`,errorFallback:`Unable to save budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.formSubmitting=!1,t.status!==`stale`){if(t.status===`unavailable`){this.budgetsAvailable=!1,this.formError=t.error;return}if(t.status===`error`){this.formError=t.error;return}this.closeForm(),of.success(`Budget saved.`),this.fetchBudgets()}}openOverrideDialog(e,t){this.overrideExistingBudget=e||null,this.overridePendingPayload=t||null,this.overrideDialogOpen=!0}closeOverrideDialog(){this.overrideDialogOpen=!1,this.overridePendingPayload=null,this.overrideExistingBudget=null}async confirmOverride(){if(!this.overridePendingPayload){this.closeOverrideDialog();return}let e=this.overridePendingPayload;this.closeOverrideDialog(),await this.saveBudgetPayload(e)}async resetBudget(e){if(!e)return;let t=Bk(e);if(this.resettingKey===t)return;let n=jk(e)+` `+lA(e);if(!confirm(`Reset budget "`+n+`"?`))return;this.resettingKey=t;let r=await Ek(`/admin/budgets/reset-one`,`POST`,$k(e),{label:`reset budget`,errorFallback:`Unable to reset budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.resettingKey=``,r.status!==`stale`){if(r.status===`unavailable`){this.budgetsAvailable=!1,of.error(r.error);return}if(r.status===`error`){of.error(r.error);return}of.success(`Budget reset.`),this.fetchBudgets()}}async deleteBudget(e){if(!e)return;let t=Bk(e);if(this.deletingKey===t)return;let n=jk(e)+` `+lA(e);if(!confirm(`Delete budget "`+n+`"? This cannot be undone.`))return;this.deletingKey=t;let r=await Ek(`/admin/budgets`,`DELETE`,Qk(e),{label:`delete budget`,errorFallback:`Unable to delete budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.deletingKey=``,r.status!==`stale`){if(r.status===`unavailable`){this.budgetsAvailable=!1,of.error(r.error);return}if(r.status===`error`){of.error(r.error);return}this.budgets=Gk(r.result.data),of.success(`Budget deleted.`)}}openResetDialog(){Wd.open({title:`Reset Budgets`,titleId:`budgetResetDialogTitle`,inputId:`budget-reset-confirmation`,requiredText:`reset`,confirmLabel:`Reset All Budgets`,icon:fu,dialogClass:`budget-reset-dialog`,onConfirm:()=>this.resetAllBudgets()})}async resetAllBudgets(){if(this.resetAllLoading)return;this.resetAllLoading=!0;let e=await Ek(`/admin/budgets/reset`,`POST`,{confirmation:`reset`},{label:`reset budgets`,errorFallback:`Unable to reset budgets.`,unavailableStatuses:[]});if(this.resetAllLoading=!1,e.status!==`stale`){if(e.status!==`ok`){Wd.error=e.error;return}Wd.close(),of.success(`Budgets reset.`),Gu.page===`budgets`&&this.fetchBudgets()}}},yA=B(` Edit`,1),bA=B(` `,1),xA=B(`
            Usage
            Period
            `),SA=B(`
            `);function CA(e,t){O(t,!0);let n=q(t,`budgets`,19,()=>[]);function r(e){if(!e)return``;let t=md.formatTimestamp(e);return!t||t===`-`?``:t+` `+md.effectiveTimeZoneLabel()}var i=SA();W(i,21,n,e=>Bk(e),(e,t)=>{var n=xA(),i=P(n),a=P(i),o=P(a),s=P(o),c=e=>{J(e,{get icon(){return wu},class:`budget-scope-icon`})},l=A(()=>Ak(R(t))===`label`);U(s,e=>{R(l)&&e(c)});var u=I(s);D(o);var d=I(o,2),f=P(d),p=P(f);{let e=A(()=>pA(R(t)));J(p,{get icon(){return R(e)},class:`budget-period-icon`})}var m=I(p,2),h=P(m,!0);D(m),D(f),D(d);var g=I(d,2),_=P(g),v=P(_),y=P(v,!0);D(v),D(_);var b=I(_,2),x=P(b);wk(x,{label:`Edit budget`,class:`budget-action-btn`,onclick:()=>X.openForm(R(t)),children:(e,t)=>{var n=yA();J(F(n),{get icon(){return su},class:`budget-action-icon`}),Ve(2),V(e,n)},$$slots:{default:!0}});var S=I(x,2);{let e=A(()=>X.resettingKey===Bk(R(t))?`Resetting budget`:`Reset budget`),n=A(()=>X.resettingKey===Bk(R(t)));wk(S,{get label(){return R(e)},class:`budget-action-btn budget-action-btn-warning`,onclick:()=>X.resetBudget(R(t)),get disabled(){return R(n)},children:(e,n)=>{var r=bA(),i=F(r);J(i,{get icon(){return fu},class:`budget-action-icon`});var a=I(i,2),o=P(a,!0);D(a),L(e=>H(o,e),[()=>X.resettingKey===Bk(R(t))?`Resetting`:`Reset`]),V(e,r)},$$slots:{default:!0}})}var C=I(S,2);{let e=A(()=>X.deletingKey===Bk(R(t))?`Deleting budget`:`Delete budget`),n=A(()=>X.deletingKey===Bk(R(t)));wk(C,{get label(){return R(e)},class:`table-action-btn-danger budget-action-btn`,onclick:()=>X.deleteBudget(R(t)),get disabled(){return R(n)},children:(e,n)=>{var r=bA(),i=F(r);J(i,{get icon(){return Eu},class:`budget-action-icon`});var a=I(i,2),o=P(a,!0);D(a),L(e=>H(o,e),[()=>X.deletingKey===Bk(R(t))?`Deleting`:`Delete`]),V(e,r)},$$slots:{default:!0}})}D(b),D(g),D(a);var w=I(a,2),T=P(w),E=P(T),ee=I(P(E),2),te=P(ee,!0);D(ee),D(E);var ne=I(E,2),re=P(ne);let ie;var ae=I(re,2),oe=P(ae),se=P(oe,!0);D(oe);var ce=I(oe,2),le=P(ce,!0);D(ce),D(ae);var ue=I(ae,2),de=P(ue),fe=P(de,!0);D(de);var pe=I(de,2),me=P(pe,!0);D(pe),D(ue),D(ne),D(T);var he=I(T,2),ge=P(he),_e=I(P(ge),2),ve=P(_e,!0);D(_e),D(ge);var ye=I(ge,2),be=P(ye),xe=I(be,2),Se=P(xe),Ce=P(Se,!0);D(Se);var we=I(Se,2),Te=P(we,!0);D(we);var Ee=I(we,2),De=P(Ee,!0);D(Ee),D(xe);var Oe=I(xe,2),ke=P(Oe),Ae=P(ke,!0);D(ke);var je=I(ke,2),Me=P(je,!0);D(je);var Ne=I(je,2),Pe=P(Ne,!0);D(Ne),D(Oe),D(ye),D(he),D(w),D(i),D(n),L((e,t,n,r,i,a,s,c,l,d,p,m,g,_,b,x,S,C,w,T,E,ee,ae,oe,ce,ue,de,pe,he,ge)=>{G(o,1,`budget-scope-value ${e??``}`,`svelte-1jm56wo`),Bi(o,t),K(o,`title`,n),H(u,` ${r??``}`),G(f,1,`budget-period-label ${i??``}`,`svelte-1jm56wo`),H(h,a),K(v,`title`,s),H(y,c),H(te,l),K(ne,`aria-valuenow`,d),K(ne,`aria-label`,p),Bi(ne,`--budget-progress: ${m??``}%`),ie=G(re,1,`budget-bar-fill budget-bar-fill-usage`,null,ie,g),H(se,_),H(le,b),H(fe,x),H(me,S),H(ve,C),G(ye,1,`budget-bar-track ${w??``}`,`svelte-1jm56wo`),K(ye,`aria-valuenow`,T),Bi(ye,`--budget-progress: ${E??``}%`),G(be,1,`budget-bar-fill budget-bar-fill-period ${ee??``}`,`svelte-1jm56wo`),K(Se,`title`,ae),H(Ce,oe),H(Te,ce),K(Ee,`title`,ue),H(De,de),H(Ae,pe),H(Me,he),H(Pe,ge)},[()=>Nk(R(t)),()=>Ak(R(t))===`label`?`--label-color: `+YC(jk(R(t))):void 0,()=>Mk(R(t))+`: `+jk(R(t)),()=>jk(R(t)),()=>uA(R(t)),()=>lA(R(t)),()=>_A(R(t)),()=>gA(R(t)),()=>sA(R(t)),()=>aA(R(t)),()=>`Budget usage: `+hf(R(t).spent)+` of `+hf(R(t).amount)+`, `+vA(R(t)),()=>aA(R(t)),()=>({"budget-bar-fill-danger":iA(R(t))>=1}),()=>hf(R(t).spent)+` of `+hf(R(t).amount),()=>vA(R(t)),()=>hf(R(t).spent)+` of `+hf(R(t).amount),()=>vA(R(t)),()=>cA(R(t)),()=>fA(R(t)),()=>oA(R(t)),()=>oA(R(t)),()=>dA(R(t)),()=>r(R(t).period_start),()=>md.formatTimestamp(R(t).period_start),()=>hA(R(t)),()=>r(R(t).period_end),()=>md.formatTimestamp(R(t).period_end),()=>md.formatTimestamp(R(t).period_start),()=>hA(R(t)),()=>md.formatTimestamp(R(t).period_end)]),V(e,n)}),D(i),V(e,i),k()}var wA=B(`

            `,1),TA=B(``),EA=B(``),DA=B(`
            `);function OA(e,t){O(t,!0);let n=q(t,`open`,3,!1),r=q(t,`title`,3,``),i=q(t,`ariaLabel`,3,``),a=q(t,`error`,3,``),o=q(t,`submitting`,3,!1),s=q(t,`submitDisabled`,3,!1),c=q(t,`submitLabel`,3,`Save`),l=q(t,`submittingLabel`,3,`Saving...`),u=q(t,`submitIcon`,3,pu),d=q(t,`cancel`,3,!0),p=q(t,`dialogClass`,3,``),m=q(t,`novalidate`,3,!1),h=q(t,`canClose`,3,()=>!0);function g(){Y.dialogOpen||h()()&&t.onclose?.()}Rd(e,{get open(){return n()},variant:`editor`,onclose:g,children:(e,n)=>{var h=DA(),g=P(h),_=P(g),v=P(_),y=P(v),b=e=>{var n=Xr();mi(F(n),()=>t.header),V(e,n)},x=e=>{var n=wA(),i=F(n),a=P(i,!0);D(i);var o=I(i,2),s=e=>{var n=Xr();mi(F(n),()=>t.headerHint),V(e,n)};U(o,e=>{t.headerHint&&e(s)}),L(()=>H(a,r())),V(e,n)};U(y,e=>{t.header?e(b):e(x,-1)}),D(v);var S=I(v,2);{let e=A(()=>`Close `+(i()||r()).toLowerCase());Pd(S,{get label(){return R(e)},onclick:()=>t.onclose?.()})}D(_);var C=I(_,2);mi(C,()=>t.children??f);var w=I(C,2),T=e=>{var t=TA(),n=P(t,!0);D(t),L(()=>H(n,a())),V(e,t)};U(w,e=>{a()&&e(T)});var E=I(w,2),ee=P(E),te=e=>{var n=EA();z(`click`,n,()=>t.onclose?.()),V(e,n)};U(ee,e=>{d()&&e(te)});var ne=I(ee,2),re=e=>{var n=Xr();mi(F(n),()=>t.extraActions),V(e,n)};U(ne,e=>{t.extraActions&&e(re)});var ie=I(ne,2),ae=P(ie);J(ae,{get icon(){return u()},class:`form-action-icon`});var oe=I(ae,2),se=P(oe,!0);D(oe),D(ie),D(E),D(g),D(h),L(()=>{G(h,1,Ni([`model-editor`,p()])),K(h,`aria-label`,i()||r()),g.noValidate=m(),ie.disabled=o()||s(),H(se,o()?l():c())}),zr(`submit`,g,e=>{e.preventDefault(),t.onsubmit?.()}),V(e,h)},$$slots:{default:!0}}),k()}Br([`click`]);var kA=B(`
            `);function AA(e,t){let n=q(t,`label`,3,``);var r=kA(),i=P(r),a=P(i,!0);D(i),mi(I(i,2),()=>t.children??f),D(r),L(()=>{K(i,`for`,t.id),H(a,n())}),V(e,r)}var jA=B(``),MA=B(``),NA=B(``),PA=B(``),FA=B(``),IA=B(``),LA=B(`

            Editing a budget updates its limit only. Use Reset to start a new - budget period.

            `),RA=B(`
            `,1),zA=B(``),BA=B(` `,1);function VA(e,t){O(t,!0);function n(e){X.setFormSubject(e.target.value),e.target.value=X.form.subject}var r=BA(),i=F(r);{let e=A(()=>X.editing?`Edit Budget`:`Create Budget`);OA(i,{get open(){return X.formOpen},get title(){return R(e)},ariaLabel:`Budget editor`,get error(){return X.formError},get submitting(){return X.formSubmitting},submitLabel:`Save Budget`,dialogClass:`budget-editor`,canClose:()=>!X.overrideDialogOpen,onclose:()=>X.closeForm(),onsubmit:()=>X.submitForm(),children:(e,t)=>{var r=RA(),i=F(r),a=P(i);AA(a,{id:`budget-scope`,label:`Scope`,children:(e,t)=>{var n=MA();W(n,21,kk,e=>e.value,(e,t)=>{var n=jA(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(n),L(()=>n.disabled=X.editing),z(`change`,n,()=>X.syncScope()),Ui(n,()=>X.form.scope,e=>X.form.scope=e),V(e,n)},$$slots:{default:!0}});var o=I(a,2);{let e=A(()=>Pk(X.form));AA(o,{id:`budget-subject`,get label(){return R(e)},children:(e,t)=>{var r=NA();ea(r),L(e=>{K(r,`placeholder`,e),ta(r,X.form.subject),r.disabled=X.editing,K(r,`data-modal-autofocus`,!X.editing||void 0)},[()=>Fk(X.form)]),z(`input`,r,n),V(e,r)},$$slots:{default:!0}})}var s=I(o,2);AA(s,{id:`budget-period`,label:`Period`,children:(e,t)=>{var n=PA();W(n,21,Lk,e=>e.value,(e,t)=>{var n=jA(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(n),L(()=>n.disabled=X.editing),z(`change`,n,()=>X.syncPeriodSeconds()),Ui(n,()=>X.form.period,e=>X.form.period=e),V(e,n)},$$slots:{default:!0}});var c=I(s,2),l=e=>{AA(e,{id:`budget-period-seconds`,label:`Period Seconds`,children:(e,t)=>{var n=FA();ea(n),L(()=>n.disabled=X.editing),la(n,()=>X.form.period_seconds,e=>X.form.period_seconds=e),V(e,n)},$$slots:{default:!0}})};U(c,e=>{X.form.period===`custom`&&e(l)}),AA(I(c,2),{id:`budget-amount`,label:`Amount`,children:(e,t)=>{var n=IA();ea(n),L(()=>K(n,`data-modal-autofocus`,X.editing||void 0)),la(n,()=>X.form.amount,e=>X.form.amount=e),V(e,n)},$$slots:{default:!0}}),D(i);var u=I(i,2),d=e=>{V(e,LA())};U(u,e=>{X.editing&&e(d)}),V(e,r)},$$slots:{default:!0}})}Rd(I(i,2),{get open(){return X.overrideDialogOpen},variant:`auth`,onclose:()=>X.closeOverrideDialog(),children:(e,t)=>{var n=zA(),r=P(n);Pd(I(P(r),2),{label:`Close budget override dialog`,onclick:()=>X.closeOverrideDialog(),class:`auth-dialog-close`,iconClass:``}),D(r);var i=I(r,2),a=P(i),o=P(a,!0);D(a);var s=I(a,2),c=P(s),l=I(c,2),u=P(l);J(u,{get icon(){return pu},class:`form-action-icon`});var d=I(u,2),f=P(d,!0);D(d),D(l),D(s),D(i),D(n),L(e=>{H(o,e),l.disabled=X.formSubmitting,H(f,X.formSubmitting?`Saving...`:`Override Budget`)},[()=>tA(X.overridePendingPayload,X.overrideExistingBudget)]),zr(`submit`,i,e=>{e.preventDefault(),X.confirmOverride()}),z(`click`,c,()=>X.closeOverrideDialog()),V(e,n)},$$slots:{default:!0}}),V(e,r),k()}Br([`change`,`input`,`click`]);var HA=B(`

            Budgets

            `),UA=B(``),WA=B(`
            Budget management is unavailable.
            `),GA=B(``),KA=B(`
            `),qA=B(`

            No budgets configured yet.

            `),JA=B(`

            No budgets match your filter.

            `),YA=B(`
            `);function XA(e,t){O(t,!0),On(()=>{Y.refreshTick,Gu.page===`budgets`&&X.fetchBudgetsPage()});let n=A(()=>X.filteredBudgets());var r=YA(),i=P(r),a=P(i);eD(P(a),{copyId:`budgets-help-copy`,label:`budgets help`,title:e=>{V(e,HA())},help:e=>{Ve(),V(e,Yr(`Budgets are evaluated from tracked usage cost records for each user - path subtree. Enforcement runs only when Budget is enabled for the - active workflow.`))},$$slots:{title:!0,help:!0}}),D(a);var o=I(a,2),s=P(o),c=e=>{var t=UA();J(P(t),{get icon(){return lu},class:`form-action-icon`}),Ve(2),D(t),L(()=>t.disabled=X.formSubmitting),z(`click`,t,()=>X.openForm()),V(e,t)},l=A(()=>X.managementEnabled()&&X.budgetsAvailable&&!Y.authError);U(s,e=>{R(l)&&e(c)}),D(o),D(i);var u=I(i,2);Wf(u,{});var d=I(u,2),f=e=>{V(e,WA())},p=A(()=>(!X.managementEnabled()||!X.budgetsAvailable)&&!Y.authError);U(d,e=>{R(p)&&e(f)});var m=I(d,2),h=e=>{var t=GA(),n=P(t,!0);D(t),L(()=>H(n,X.error)),V(e,t)};U(m,e=>{X.error&&!Y.authError&&e(h)});var g=I(m,2),_=e=>{Sk(e,{label:`Loading budgets...`})};U(g,e=>{X.loading&&!Y.authError&&e(_)});var v=I(g,2),y=e=>{var t=KA(),n=P(t);DO(P(n),{id:`budget-filter`,placeholder:`Filter by user path, label, or period...`,label:`Filter budgets by user path or period`,get value(){return X.filter},set value(e){X.filter=e}}),D(n);var r=I(n,2),i=I(P(r),2),a=P(i);a.value=a.__value=`subject`;var o=I(a);o.value=o.__value=`period`,D(i),D(r),D(t),Ui(i,()=>X.sortBy,e=>X.sortBy=e),V(e,t)};U(v,e=>{(X.budgets.length>0||X.filter)&&X.budgetsAvailable&&!Y.authError&&!X.formOpen&&e(y)});var b=I(v,2);VA(b,{});var x=I(b,2),S=e=>{CA(e,{get budgets(){return R(n)}})};U(x,e=>{R(n).length>0&&X.budgetsAvailable&&!Y.authError&&e(S)});var C=I(x,2),w=e=>{V(e,qA())},T=A(()=>X.budgets.length===0&&!X.filter&&!X.loading&&!Y.authError&&!X.error&&X.budgetsAvailable&&X.managementEnabled());U(C,e=>{R(T)&&e(w)});var E=I(C,2),ee=e=>{V(e,JA())},te=A(()=>X.budgets.length>0&&R(n).length===0&&X.filter&&!X.loading&&!Y.authError&&!X.error&&X.budgetsAvailable&&X.managementEnabled());U(E,e=>{R(te)&&e(ee)}),D(r),V(e,r),k()}Br([`click`]);function ZA(){return{scope:`user_path`,subject:`/`,period:`minute`,period_seconds:60,max_requests:``,max_tokens:``,source:`manual`}}function QA(e){let t={user_path:{label:`User path`,chip:`user path`,fieldLabel:`User Path`,placeholder:`/team/alpha`},provider:{label:`Provider`,chip:`provider`,fieldLabel:`Provider Name`,placeholder:`openai`},model:{label:`Model`,chip:`model`,fieldLabel:`Model`,placeholder:`openai/gpt-4o`}};return t[e]||t.user_path}function $A(){return[`user_path`,`provider`,`model`].map(e=>({value:e,label:QA(e).label}))}function ej(e){return String(e&&e.scope||``).trim()||`user_path`}function tj(e){return String(e&&e.subject||``).trim()||String(e&&e.user_path||``)}function nj(e){return QA(ej(e)).chip}function rj(e){return QA(String(e&&e.scope||``)).fieldLabel}function ij(e){return QA(String(e&&e.scope||``)).placeholder}function aj(e){e.subject=String(e&&e.scope||``)===`user_path`?`/`:``}function oj(){return[{value:`minute`,label:`Per minute`},{value:`hour`,label:`Per hour`},{value:`day`,label:`Per day`},{value:`concurrent`,label:`Concurrent (in-flight)`},{value:`custom`,label:`Custom seconds`}]}function sj(e){switch(String(e||``).trim().toLowerCase()){case`minute`:return 60;case`hour`:return 3600;case`day`:return 86400;case`concurrent`:return 0;default:return-1}}function cj(e){switch(Number(e||0)){case 60:return`minute`;case 3600:return`hour`;case 86400:return`day`;case 0:return`concurrent`;default:return`custom`}}function lj(e){let t=String(e&&e.period||``).trim(),n=sj(t);n>=0&&(e.period_seconds=n),t===`concurrent`&&(e.max_tokens=``)}function uj(e){return ej(e)+`:`+tj(e)+`:`+String(e&&e.period_seconds||`0`)}function dj(e){return Number(e&&e.period_seconds||0)===0}function fj(e){return String(e&&e.period_label||``).trim()||cj(Number(e&&e.period_seconds||0))}function pj(e){return String(e&&e.source||``)===`config`?`config`:`manual`}function mj(e){return String(e&&e.source||``)===`config`}function hj(e){let t=Number(e);return Number.isFinite(t)?t.toLocaleString():`0`}function gj(e,t){let n=Number(e),r=Number(t);if(!Number.isFinite(n)||!Number.isFinite(r)||r<=0)return 0;let i=Math.round(n/r*100);return Math.min(Math.max(i,0),100)}function _j(e,t){let n=String(t||``).trim().toLowerCase(),r=Array.isArray(e)?e.slice():[],i={user_path:0,provider:1,model:2};return r.sort((e,t)=>{let n=(i[ej(e)]||0)-(i[ej(t)]||0);if(n!==0)return n;let r=tj(e).localeCompare(tj(t));return r===0?Number(e.period_seconds||0)-Number(t.period_seconds||0):r}),n?r.filter(e=>{let t=tj(e).toLowerCase(),r=nj(e).toLowerCase(),i=fj(e).toLowerCase();return t.includes(n)||r.includes(n)||i.includes(n)}):r}function vj(e){return!e||!Array.isArray(e.rate_limits)?[]:e.rate_limits}function yj(e,t,n){let r=String(t||``).trim();return r=e===`provider`||e===`model`?r.toLowerCase():`/`+r.split(`/`).map(e=>e.trim()).filter(Boolean).join(`/`),e+`:`+r+`:`+Number(n||0)}function bj(e,t){return e?yj(t.scope,t.subject,t.limit_key.period_seconds)!==yj(e.scope,e.subject,e.period_seconds):!1}function xj(e){let t=e||{},n=String(t.scope||`user_path`),r=String(t.subject||``).trim();if(n!==`user_path`&&!r)return{error:rj(t)+` is required.`};let i=String(t.period||``)===`concurrent`,a=t.period_seconds;if(a===``||a==null)return{error:`Period seconds is required.`};let o=Number(a);if(!Number.isInteger(o)||o<0||o===0&&!i)return{error:`Period seconds must be a positive integer (0 only for the concurrent period).`};let s=String(t.max_requests===void 0||t.max_requests===null?``:t.max_requests).trim(),c=String(t.max_tokens===void 0||t.max_tokens===null?``:t.max_tokens).trim();if(!s&&!c)return{error:`Set max requests, max tokens, or both.`};if(i&&c)return{error:`Token limits are not valid for the concurrent period.`};let l={scope:n,subject:r||`/`,limit_key:{period_seconds:o}};if(s){let e=Number(s);if(!Number.isInteger(e)||e<=0)return{error:`Max requests must be a positive integer.`};l.max_requests=e}if(c){let e=Number(c);if(!Number.isInteger(e)||e<=0)return{error:`Max tokens must be a positive integer.`};l.max_tokens=e}return{payload:l}}function Sj(e,t,n){if(ej(e)!==`model`)return!1;let r=String(tj(e)).toLowerCase(),i=String(n||``).trim().toLowerCase();if(!i)return!1;if(r===i)return!0;let a=String(t||``).trim().toLowerCase();return a?r===a+`/`+i||i.startsWith(a+`/`)&&r===i.slice(a.length+1):!1}function Cj(e,t){return ej(e)===`provider`&&String(tj(e)).toLowerCase()===String(t||``).trim().toLowerCase()}function wj(e){let t=e||{},n=String(t.model||``),r=String(t.provider||``);return!r||n.toLowerCase().startsWith(r+`/`)?n:r+`/`+n}function Tj(e,t){let n=e||{},r=Array.isArray(t)?t:[],i=[];return n.kind===`model`&&i.push({key:`model`,title:`Model limits`,scope:`model`,subject:wj(n),hint:``,items:r.filter(e=>Sj(e,n.provider,n.model))}),i.push({key:`provider`,title:`Provider limits (`+n.provider+`)`,scope:`provider`,subject:n.provider,hint:n.kind===`model`?`Shared by every model routed to this provider.`:``,items:r.filter(e=>Cj(e,n.provider))}),i.push({key:`global`,title:`Global limits`,scope:`user_path`,subject:`/`,hint:`Root user-path rules throttle all traffic. Narrower user-path rules also apply, per consumer.`,items:r.filter(e=>ej(e)===`user_path`&&tj(e)===`/`)}),i}function Ej(e){return dj(e)?gj(e.in_flight,e.max_requests):Math.max(gj(e.requests_used,e.max_requests),gj(e.tokens_used,e.max_tokens))}function Dj(e){return`--rate-limit-pressure: `+Ej(e)+`%`}function Oj(e){let t=Ej(e);return t>=100?`rate-limit-pressure-row rate-limit-pressure-full`:t>=75?`rate-limit-pressure-row rate-limit-pressure-high`:`rate-limit-pressure-row`}function kj(e){return(Array.isArray(e)?e:[]).some(e=>ej(e)===`user_path`&&tj(e)===`/`)}function Aj(e,t,n){let r=Array.isArray(e)?e:[];return r.some(e=>Sj(e,t,n))?`table-action-btn-active`:r.some(e=>Cj(e,t))||kj(r)?`rate-limit-gauge-inherited`:``}function jj(e,t){let n=Array.isArray(e)?e:[];return n.some(e=>Cj(e,t))?`table-action-btn-active`:kj(n)?`rate-limit-gauge-inherited`:``}function Mj(e,t){let n=`Rate limits for `+e;return t===`table-action-btn-active`?n+` (direct limits configured)`:t?n+` (inherited limits apply)`:n}function Nj(e){if(dj(e))return hj(e.in_flight)+` of `+hj(e.max_requests)+` in flight`;let t=[];return e.max_requests!==null&&e.max_requests!==void 0&&t.push(hj(e.requests_used)+`/`+hj(e.max_requests)+` req`),e.max_tokens!==null&&e.max_tokens!==void 0&&t.push(hj(e.tokens_used)+`/`+hj(e.max_tokens)+` tok`),t.join(` · `)}var Z=new class{#e=j(N([]));get rateLimits(){return R(this.#e)}set rateLimits(e){M(this.#e,e,!0)}#t=j(!0);get rateLimitsAvailable(){return R(this.#t)}set rateLimitsAvailable(e){M(this.#t,e,!0)}#n=j(!1);get rateLimitsLoading(){return R(this.#n)}set rateLimitsLoading(e){M(this.#n,e,!0)}rateLimitFetchPromise=null;#r=j(``);get rateLimitFilter(){return R(this.#r)}set rateLimitFilter(e){M(this.#r,e,!0)}#i=j(``);get rateLimitError(){return R(this.#i)}set rateLimitError(e){M(this.#i,e,!0)}#a=j(!1);get rateLimitFormOpen(){return R(this.#a)}set rateLimitFormOpen(e){M(this.#a,e,!0)}#o=j(!1);get rateLimitFormSubmitting(){return R(this.#o)}set rateLimitFormSubmitting(e){M(this.#o,e,!0)}#s=j(``);get rateLimitFormError(){return R(this.#s)}set rateLimitFormError(e){M(this.#s,e,!0)}#c=j(!1);get rateLimitEditing(){return R(this.#c)}set rateLimitEditing(e){M(this.#c,e,!0)}rateLimitEditingOriginal=null;rateLimitFormReturnToInspector=!1;#l=j(``);get rateLimitResettingKey(){return R(this.#l)}set rateLimitResettingKey(e){M(this.#l,e,!0)}#u=j(``);get rateLimitDeletingKey(){return R(this.#u)}set rateLimitDeletingKey(e){M(this.#u,e,!0)}#d=j(!1);get rateLimitInspectorOpen(){return R(this.#d)}set rateLimitInspectorOpen(e){M(this.#d,e,!0)}#f=j(N({kind:``,provider:``,model:``,title:``}));get rateLimitInspector(){return R(this.#f)}set rateLimitInspector(e){M(this.#f,e,!0)}#p=j(N(ZA()));get rateLimitForm(){return R(this.#p)}set rateLimitForm(e){M(this.#p,e,!0)}rateLimitsEnabled(){return Td.rateLimitsVisible()}defaultRateLimitForm(){return ZA()}rateLimitScopeMeta(e){return QA(e)}rateLimitScopeOptions(){return $A()}rateLimitScope(e){return ej(e)}rateLimitSubject(e){return tj(e)}rateLimitScopeLabel(e){return nj(e)}rateLimitSubjectFieldLabel(){return rj(this.rateLimitForm)}rateLimitSubjectPlaceholder(){return ij(this.rateLimitForm)}syncRateLimitScope(){aj(this.rateLimitForm)}rateLimitPeriodOptions(){return oj()}rateLimitPeriodSeconds(e){return sj(e)}rateLimitPeriodFromSeconds(e){return cj(e)}syncRateLimitPeriodSeconds(){lj(this.rateLimitForm)}rateLimitKey(e){return uj(e)}rateLimitIsConcurrent(e){return dj(e)}rateLimitPeriodLabel(e){return fj(e)}rateLimitSourceLabel(e){return pj(e)}rateLimitIsReadOnly(e){return mj(e)}formatRateLimitNumber(e){return hj(e)}rateLimitUsagePercent(e,t){return gj(e,t)}filteredRateLimits(){return _j(this.rateLimits,this.rateLimitFilter)}normalizeRateLimitListPayload(e){return vj(e)}async fetchRateLimitsPage(){if(await Td.ensureLoaded(),!this.rateLimitsEnabled()){this.rateLimits=[],this.rateLimitsAvailable=!1,this.rateLimitError=``;return}return this.rateLimitFetchPromise||=this.fetchRateLimits().finally(()=>{this.rateLimitFetchPromise=null}),this.rateLimitFetchPromise}async fetchRateLimits(){this.rateLimitsLoading=!0,this.rateLimitError=``;let e=await Tk(`/admin/rate-limits`,{label:`rate limits`,errorFallback:`Unable to load rate limits.`,normalize:vj});if(this.rateLimitsLoading=!1,e.status!==`stale`){if(e.status===`unavailable`){this.rateLimitsAvailable=!1,this.rateLimits=[];return}if(!e.result){this.rateLimits=[],this.rateLimitError=e.error;return}if(this.rateLimitsAvailable=!0,e.status===`error`){this.rateLimitError=e.error;return}this.rateLimits=e.items}}openRateLimitForm(e){if(this.rateLimitEditing=!!e,this.rateLimitFormError=``,e){let t=Number(e.period_seconds||0);this.rateLimitEditingOriginal={scope:ej(e),subject:tj(e),period_seconds:t},this.rateLimitForm={scope:ej(e),subject:tj(e),period:cj(t),period_seconds:t,max_requests:e.max_requests===null||e.max_requests===void 0?``:String(e.max_requests),max_tokens:e.max_tokens===null||e.max_tokens===void 0?``:String(e.max_tokens),source:String(e.source||`manual`)}}else this.rateLimitEditingOriginal=null,this.rateLimitForm=ZA();this.rateLimitFormOpen=!0}closeRateLimitForm(){this.rateLimitFormOpen=!1,this.rateLimitFormSubmitting=!1,this.rateLimitFormError=``,this.rateLimitEditing=!1,this.rateLimitEditingOriginal=null,this.rateLimitForm=ZA(),this.rateLimitFormReturnToInspector&&(this.rateLimitFormReturnToInspector=!1,this.rateLimitInspectorOpen=!0)}rateLimitNormalizedIdentity(e,t,n){return yj(e,t,n)}rateLimitIdentityMoved(e){return bj(this.rateLimitEditingOriginal,e)}setRateLimitFormSubject(e){this.rateLimitForm.subject=String(e||``)}rateLimitFormPayload(){return xj(this.rateLimitForm)}async submitRateLimitForm(){if(this.rateLimitFormSubmitting)return;let{payload:e,error:t}=this.rateLimitFormPayload();if(t){this.rateLimitFormError=t;return}let n=this.rateLimitIdentityMoved(e),r=this.rateLimitEditingOriginal;this.rateLimitFormSubmitting=!0,this.rateLimitFormError=``;try{let t=await Ek(`/admin/rate-limits`,`PUT`,e,{label:`save rate limit`,errorFallback:`Unable to save rate limit.`,unavailableStatuses:[]});if(t.status===`stale`)return;if(t.status!==`ok`){this.rateLimitFormError=t.error;return}if(this.rateLimits=vj(t.result.data),n&&!await this.deleteMovedRateLimitOriginal(r))return;this.closeRateLimitForm(),of.success(n?`Rate limit moved; live counters restarted.`:`Rate limit saved.`)}finally{this.rateLimitFormSubmitting=!1}}async deleteMovedRateLimitOriginal(e){let t=await Ek(`/admin/rate-limits`,`DELETE`,{scope:e.scope,subject:e.subject,limit_key:{period_seconds:Number(e.period_seconds||0)}},{label:`remove the moved rate limit`,errorFallback:`The new rule was saved, but the previous one could not be removed. Delete it manually.`,unavailableStatuses:[]});return t.status===`stale`?!1:t.status===`ok`?(this.rateLimits=vj(t.result.data),!0):(this.rateLimitFormError=t.error,!1)}async deleteRateLimit(e){let t=uj(e);if(this.rateLimitDeletingKey===t)return;this.rateLimitDeletingKey=t;let n=await Ek(`/admin/rate-limits`,`DELETE`,{scope:ej(e),subject:tj(e),limit_key:{period_seconds:Number(e.period_seconds||0)}},{label:`delete rate limit`,errorFallback:`Unable to delete rate limit.`,unavailableStatuses:[]});if(this.rateLimitDeletingKey=``,n.status!==`stale`){if(n.status!==`ok`){of.error(n.error);return}this.rateLimits=vj(n.result.data),of.success(`Rate limit deleted.`)}}async resetRateLimit(e){let t=uj(e);if(this.rateLimitResettingKey===t)return;this.rateLimitResettingKey=t;let n=await Ek(`/admin/rate-limits/reset-one`,`POST`,{scope:ej(e),subject:tj(e),period_seconds:Number(e.period_seconds||0)},{label:`reset rate limit`,errorFallback:`Unable to reset rate limit.`,unavailableStatuses:[]});if(this.rateLimitResettingKey=``,n.status!==`stale`){if(n.status!==`ok`){of.error(n.error);return}this.rateLimits=vj(n.result.data),of.success(`Rate limit counters reset.`)}}rateLimitInspectorModelID(e){return String(e&&e.model&&e.model.id||``).trim()}openRateLimitInspectorForModel(e){let t=this.rateLimitInspectorModelID(e),n=String(e&&e.provider_name||``).trim().toLowerCase();this.rateLimitInspector={kind:`model`,provider:n,model:t,title:String(e&&e.display_name||t)},this.showRateLimitInspector()}openRateLimitInspectorForProvider(e){let t=String(e&&e.provider_name||``).trim().toLowerCase();this.rateLimitInspector={kind:`provider`,provider:t,model:``,title:String(e&&e.display_name||t)},this.showRateLimitInspector()}showRateLimitInspector(){this.rateLimitInspectorOpen=!0,this.fetchRateLimitsPage()}closeRateLimitInspector(){this.rateLimitInspectorOpen=!1}rateLimitRuleMatchesModel(e,t,n){return Sj(e,t,n)}rateLimitRuleMatchesProvider(e,t){return Cj(e,t)}rateLimitInspectorQualifiedModel(){return wj(this.rateLimitInspector)}rateLimitInspectorSections(){return Tj(this.rateLimitInspector,this.rateLimits)}rateLimitPressurePercent(e){return Ej(e)}rateLimitPressureStyle(e){return Dj(e)}rateLimitPressureClass(e){return Oj(e)}rateLimitGaugeCache={rules:null,states:{}};rateLimitGaugeMemo(e,t){this.rateLimitGaugeCache.rules!==this.rateLimits&&(this.rateLimitGaugeCache={rules:this.rateLimits,states:{}});let n=this.rateLimitGaugeCache.states;return e in n||(n[e]=t()),n[e]}rateLimitGaugeClassForModel(e){let t=this.rateLimitInspectorModelID(e),n=String(e&&e.provider_name||``).trim().toLowerCase(),r=this.rateLimits;return this.rateLimitGaugeMemo(`model:`+n+`/`+t,()=>Aj(r,n,t))}rateLimitGaugeClassForProvider(e){let t=String(e&&e.provider_name||``).trim().toLowerCase(),n=this.rateLimits;return this.rateLimitGaugeMemo(`provider:`+t,()=>jj(n,t))}hasGlobalRateLimits(){let e=this.rateLimits;return this.rateLimitGaugeMemo(`global`,()=>kj(e))}rateLimitGaugeTitle(e,t){return Mj(e,t)}rateLimitInspectorSummary(e){return Nj(e)}openRateLimitFormFromInspector(e,t,n){this.rateLimitInspectorOpen=!1,this.rateLimitFormReturnToInspector=!0,this.openRateLimitForm(n||void 0),n||(this.rateLimitForm.scope=e,this.rateLimitForm.subject=t)}},Pj=B(``),Fj=B(``),Ij=B(``),Lj=B(``),Rj=B(``),zj=B(``),Bj=B(``),Vj=B(`

            Scope, subject, and period identify the rule: changing any of them - moves the rule to a new key and restarts its live counters.

            `),Hj=B(`

            A user path rule limits the whole subtree; provider and model rules cap - all traffic routed there and make load balancing skip the target while - it is saturated. One shared counter per rule. Leave a field empty to - skip that limit. Token limits require usage tracking.

            `,1);function Uj(e,t){O(t,!0);{let t=A(()=>Z.rateLimitEditing?`Edit Rate Limit`:`Create Rate Limit`);OA(e,{get open(){return Z.rateLimitFormOpen},get title(){return R(t)},ariaLabel:`Rate limit editor`,get error(){return Z.rateLimitFormError},get submitting(){return Z.rateLimitFormSubmitting},submitLabel:`Save Rate Limit`,dialogClass:`budget-editor`,novalidate:!0,onclose:()=>Z.closeRateLimitForm(),onsubmit:()=>Z.submitRateLimitForm(),children:(e,t)=>{var n=Hj(),r=F(n),i=P(r);AA(i,{id:`rate-limit-scope`,label:`Scope`,children:(e,t)=>{var n=Fj();W(n,21,()=>Z.rateLimitScopeOptions(),e=>e.value,(e,t)=>{var n=Pj(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(n),z(`change`,n,()=>Z.syncRateLimitScope()),Ui(n,()=>Z.rateLimitForm.scope,e=>Z.rateLimitForm.scope=e),V(e,n)},$$slots:{default:!0}});var a=I(i,2);{let e=A(()=>Z.rateLimitSubjectFieldLabel());AA(a,{id:`rate-limit-subject`,get label(){return R(e)},children:(e,t)=>{var n=Ij();ea(n),L(e=>{K(n,`placeholder`,e),K(n,`data-modal-autofocus`,!Z.rateLimitEditing||void 0),ta(n,Z.rateLimitForm.subject)},[()=>Z.rateLimitSubjectPlaceholder()]),z(`input`,n,e=>Z.setRateLimitFormSubject(e.currentTarget.value)),V(e,n)},$$slots:{default:!0}})}var o=I(a,2);AA(o,{id:`rate-limit-period`,label:`Period`,children:(e,t)=>{var n=Lj();W(n,21,()=>Z.rateLimitPeriodOptions(),e=>e.value,(e,t)=>{var n=Pj(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(n),z(`change`,n,()=>Z.syncRateLimitPeriodSeconds()),Ui(n,()=>Z.rateLimitForm.period,e=>Z.rateLimitForm.period=e),V(e,n)},$$slots:{default:!0}});var s=I(o,2),c=e=>{AA(e,{id:`rate-limit-period-seconds`,label:`Period Seconds`,children:(e,t)=>{var n=Rj();ea(n),la(n,()=>Z.rateLimitForm.period_seconds,e=>Z.rateLimitForm.period_seconds=e),V(e,n)},$$slots:{default:!0}})};U(s,e=>{Z.rateLimitForm.period===`custom`&&e(c)});var l=I(s,2);{let e=A(()=>Z.rateLimitForm.period===`concurrent`?`Max In-Flight Requests`:`Max Requests`);AA(l,{id:`rate-limit-max-requests`,get label(){return R(e)},children:(e,t)=>{var n=zj();ea(n),L(()=>K(n,`data-modal-autofocus`,Z.rateLimitEditing?!0:void 0)),la(n,()=>Z.rateLimitForm.max_requests,e=>Z.rateLimitForm.max_requests=e),V(e,n)},$$slots:{default:!0}})}var u=I(l,2),d=e=>{AA(e,{id:`rate-limit-max-tokens`,label:`Max Tokens`,children:(e,t)=>{var n=Bj();ea(n),la(n,()=>Z.rateLimitForm.max_tokens,e=>Z.rateLimitForm.max_tokens=e),V(e,n)},$$slots:{default:!0}})};U(u,e=>{Z.rateLimitForm.period!==`concurrent`&&e(d)}),D(r);var f=I(r,4),p=e=>{V(e,Vj())};U(f,e=>{Z.rateLimitEditing&&e(p)}),V(e,n)},$$slots:{default:!0}})}k()}Br([`change`,`input`]);var Wj=B(` `),Gj=B(` Edit`,1),Kj=B(` `,1),qj=B(`
            In-flight
            `),Jj=B(`
            Requests
            `),Yj=B(`
            Tokens
            `),Xj=B(`
            `),Zj=B(`
            `);function Qj(e,t){O(t,!0);var n=Zj();W(n,21,()=>t.rules,e=>Z.rateLimitKey(e),(e,t)=>{var n=Xj(),r=P(n),i=P(r),a=P(i),o=P(a,!0);D(a);var s=I(a,2),c=P(s),l=e=>{var n=Wj(),r=P(n);{let e=A(()=>Z.rateLimitScope(R(t))===`provider`?gu:jl);J(r,{get icon(){return R(e)},class:`budget-period-icon`})}var i=I(r,2),a=P(i,!0);D(i),D(n),L((e,t)=>{K(n,`title`,e),H(a,t)},[()=>`Rule scope: `+Z.rateLimitScopeLabel(R(t)),()=>Z.rateLimitScopeLabel(R(t))]),V(e,n)},u=A(()=>Z.rateLimitScope(R(t))!==`user_path`);U(c,e=>{R(u)&&e(l)});var d=I(c,2),f=P(d);{let e=A(()=>Z.rateLimitIsConcurrent(R(t))?El:Tu);J(f,{get icon(){return R(e)},class:`budget-period-icon`})}var p=I(f,2),m=P(p,!0);D(p),D(d),D(s);var h=I(s,2),g=P(h),_=P(g),v=P(_,!0);D(_),D(g);var y=I(g,2),b=P(y),x=e=>{wk(e,{label:`Edit rate limit`,class:`budget-action-btn`,onclick:()=>Z.openRateLimitForm(R(t)),children:(e,t)=>{var n=Gj();J(F(n),{get icon(){return su},class:`budget-action-icon`}),Ve(2),V(e,n)},$$slots:{default:!0}})},S=A(()=>!Z.rateLimitIsReadOnly(R(t)));U(b,e=>{R(S)&&e(x)});var C=I(b,2);{let e=A(()=>Z.rateLimitResettingKey===Z.rateLimitKey(R(t))?`Resetting counters`:`Reset counters`),n=A(()=>Z.rateLimitResettingKey===Z.rateLimitKey(R(t)));wk(C,{get label(){return R(e)},class:`budget-action-btn budget-action-btn-warning`,onclick:()=>Z.resetRateLimit(R(t)),get disabled(){return R(n)},children:(e,n)=>{var r=Kj(),i=F(r);J(i,{get icon(){return fu},class:`budget-action-icon`});var a=I(i,2),o=P(a,!0);D(a),L(e=>H(o,e),[()=>Z.rateLimitResettingKey===Z.rateLimitKey(R(t))?`Resetting`:`Reset`]),V(e,r)},$$slots:{default:!0}})}var w=I(C,2),T=e=>{{let n=A(()=>Z.rateLimitDeletingKey===Z.rateLimitKey(R(t))?`Deleting rate limit`:`Delete rate limit`),r=A(()=>Z.rateLimitDeletingKey===Z.rateLimitKey(R(t)));wk(e,{get label(){return R(n)},class:`table-action-btn-danger budget-action-btn`,onclick:()=>Z.deleteRateLimit(R(t)),get disabled(){return R(r)},children:(e,n)=>{var r=Kj(),i=F(r);J(i,{get icon(){return Eu},class:`budget-action-icon`});var a=I(i,2),o=P(a,!0);D(a),L(e=>H(o,e),[()=>Z.rateLimitDeletingKey===Z.rateLimitKey(R(t))?`Deleting`:`Delete`]),V(e,r)},$$slots:{default:!0}})}},E=A(()=>!Z.rateLimitIsReadOnly(R(t)));U(w,e=>{R(E)&&e(T)}),D(y),D(h),D(i);var ee=I(i,2),te=P(ee),ne=e=>{var n=qj(),r=P(n),i=I(P(r),2),a=P(i,!0);D(i),D(r);var o=I(r,2),s=P(o);let c;var l=I(s,2),u=P(l),d=P(u,!0);D(u),D(l),D(o),D(n),L((e,t,n,r,i,l)=>{H(a,e),K(o,`aria-valuenow`,t),K(o,`aria-label`,n),Bi(o,r),c=G(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),H(d,l)},[()=>Z.rateLimitUsagePercent(R(t).in_flight,R(t).max_requests)+`%`,()=>Z.rateLimitUsagePercent(R(t).in_flight,R(t).max_requests),()=>`In-flight requests: `+Z.formatRateLimitNumber(R(t).in_flight)+` of `+Z.formatRateLimitNumber(R(t).max_requests),()=>`--budget-progress: `+Z.rateLimitUsagePercent(R(t).in_flight,R(t).max_requests)+`%`,()=>({"budget-bar-fill-danger":Z.rateLimitUsagePercent(R(t).in_flight,R(t).max_requests)>=100}),()=>Z.formatRateLimitNumber(R(t).in_flight)+` of `+Z.formatRateLimitNumber(R(t).max_requests)+` in flight`]),V(e,n)},re=A(()=>Z.rateLimitIsConcurrent(R(t)));U(te,e=>{R(re)&&e(ne)});var ie=I(te,2),ae=e=>{var n=Jj(),r=P(n),i=I(P(r),2),a=P(i,!0);D(i),D(r);var o=I(r,2),s=P(o);let c;var l=I(s,2),u=P(l),d=P(u,!0);D(u);var f=I(u,2),p=P(f,!0);D(f),D(l),D(o),D(n),L((e,t,n,r,i,l,u)=>{H(a,e),K(o,`aria-valuenow`,t),K(o,`aria-label`,n),Bi(o,r),c=G(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),H(d,l),H(p,u)},[()=>Z.rateLimitUsagePercent(R(t).requests_used,R(t).max_requests)+`%`,()=>Z.rateLimitUsagePercent(R(t).requests_used,R(t).max_requests),()=>`Requests used: `+Z.formatRateLimitNumber(R(t).requests_used)+` of `+Z.formatRateLimitNumber(R(t).max_requests),()=>`--budget-progress: `+Z.rateLimitUsagePercent(R(t).requests_used,R(t).max_requests)+`%`,()=>({"budget-bar-fill-danger":Z.rateLimitUsagePercent(R(t).requests_used,R(t).max_requests)>=100}),()=>Z.formatRateLimitNumber(R(t).requests_used)+` of `+Z.formatRateLimitNumber(R(t).max_requests)+` requests`,()=>Z.formatRateLimitNumber(R(t).requests_remaining)+` left`]),V(e,n)},oe=A(()=>!Z.rateLimitIsConcurrent(R(t))&&R(t).max_requests);U(ie,e=>{R(oe)&&e(ae)});var se=I(ie,2),ce=e=>{var n=Yj(),r=P(n),i=I(P(r),2),a=P(i,!0);D(i),D(r);var o=I(r,2),s=P(o);let c;var l=I(s,2),u=P(l),d=P(u,!0);D(u);var f=I(u,2),p=P(f,!0);D(f),D(l),D(o),D(n),L((e,t,n,r,i,l,u)=>{H(a,e),K(o,`aria-valuenow`,t),K(o,`aria-label`,n),Bi(o,r),c=G(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),H(d,l),H(p,u)},[()=>Z.rateLimitUsagePercent(R(t).tokens_used,R(t).max_tokens)+`%`,()=>Z.rateLimitUsagePercent(R(t).tokens_used,R(t).max_tokens),()=>`Tokens used: `+Z.formatRateLimitNumber(R(t).tokens_used)+` of `+Z.formatRateLimitNumber(R(t).max_tokens),()=>`--budget-progress: `+Z.rateLimitUsagePercent(R(t).tokens_used,R(t).max_tokens)+`%`,()=>({"budget-bar-fill-danger":Z.rateLimitUsagePercent(R(t).tokens_used,R(t).max_tokens)>=100}),()=>Z.formatRateLimitNumber(R(t).tokens_used)+` of `+Z.formatRateLimitNumber(R(t).max_tokens)+` tokens`,()=>Z.formatRateLimitNumber(R(t).tokens_remaining)+` left`]),V(e,n)},le=A(()=>!Z.rateLimitIsConcurrent(R(t))&&R(t).max_tokens);U(se,e=>{R(le)&&e(ce)}),D(ee),D(r),D(n),L((e,t,n,r,i)=>{K(a,`title`,e),H(o,t),H(m,n),K(_,`title`,r),H(v,i)},[()=>Z.rateLimitScopeLabel(R(t))+`: `+Z.rateLimitSubject(R(t)),()=>Z.rateLimitSubject(R(t)),()=>Z.rateLimitPeriodLabel(R(t)),()=>Z.rateLimitIsReadOnly(R(t))?`Declared in configuration; read-only in the dashboard`:`Managed via dashboard or admin API`,()=>Z.rateLimitSourceLabel(R(t))]),V(e,n)}),D(n),V(e,n),k()}var $j=B(`

            Rate Limits

            `),eM=B(``),tM=B(`
            Rate limit management is unavailable.
            `),nM=B(``),rM=B(`
            `),iM=B(`

            No rate limits configured yet.

            `),aM=B(`

            No rate limits match your filter.

            `),oM=B(`
            `);function sM(e,t){O(t,!0),On(()=>{Y.refreshTick,Gu.page===`rate-limits`&&Z.fetchRateLimitsPage()});let n=A(()=>Z.filteredRateLimits());var r=oM(),i=P(r),a=P(i);eD(P(a),{copyId:`rate-limits-help-copy`,label:`rate limits help`,text:`Rate limits cap requests, tokens, and in-flight concurrency for a user path subtree, a provider, or a model. Consumer (user path) breaches return 429 with Retry-After and x-ratelimit-* headers; saturated providers and models are skipped by load balancing and failover while capacity exists elsewhere. Counters are per gateway instance and reset on restart; token limits need usage tracking.`,title:e=>{V(e,$j())},$$slots:{title:!0}}),D(a);var o=I(a,2),s=P(o),c=e=>{var t=eM();J(P(t),{get icon(){return lu},class:`form-action-icon`}),Ve(2),D(t),L(()=>t.disabled=Z.rateLimitFormSubmitting),z(`click`,t,()=>Z.openRateLimitForm()),V(e,t)},l=A(()=>Z.rateLimitsEnabled()&&Z.rateLimitsAvailable&&!Y.authError);U(s,e=>{R(l)&&e(c)}),D(o),D(i);var u=I(i,2);Wf(u,{});var d=I(u,2),f=e=>{V(e,tM())},p=A(()=>(!Z.rateLimitsEnabled()||!Z.rateLimitsAvailable)&&!Y.authError);U(d,e=>{R(p)&&e(f)});var m=I(d,2),h=e=>{var t=nM(),n=P(t,!0);D(t),L(()=>H(n,Z.rateLimitError)),V(e,t)};U(m,e=>{Z.rateLimitError&&!Y.authError&&e(h)});var g=I(m,2),_=e=>{Sk(e,{label:`Loading rate limits...`})};U(g,e=>{Z.rateLimitsLoading&&!Y.authError&&e(_)});var v=I(g,2),y=e=>{var t=rM(),n=P(t);DO(P(n),{id:`rate-limit-filter`,placeholder:`Filter by subject, scope, or period...`,label:`Filter rate limits by subject, scope, or period`,get value(){return Z.rateLimitFilter},set value(e){Z.rateLimitFilter=e}}),D(n),D(t),V(e,t)};U(v,e=>{(Z.rateLimits.length>0||Z.rateLimitFilter)&&Z.rateLimitsAvailable&&!Y.authError&&!Z.rateLimitFormOpen&&e(y)});var b=I(v,2);Uj(b,{});var x=I(b,2),S=e=>{Qj(e,{get rules(){return R(n)}})};U(x,e=>{R(n).length>0&&Z.rateLimitsAvailable&&!Y.authError&&e(S)});var C=I(x,2),w=e=>{V(e,iM())},T=A(()=>Z.rateLimits.length===0&&!Z.rateLimitFilter&&!Z.rateLimitsLoading&&!Y.authError&&!Z.rateLimitError&&Z.rateLimitsAvailable&&Z.rateLimitsEnabled());U(C,e=>{R(T)&&e(w)});var E=I(C,2),ee=e=>{V(e,aM())},te=A(()=>Z.rateLimits.length>0&&R(n).length===0&&Z.rateLimitFilter&&!Z.rateLimitsLoading&&!Y.authError&&!Z.rateLimitError&&Z.rateLimitsAvailable&&Z.rateLimitsEnabled());U(E,e=>{R(te)&&e(ee)}),D(r),V(e,r),k()}Br([`click`]);function cM(e){return String(e||``).trim().toLowerCase()}function lM(e){if(!e)return``;let t=String(e.selector||``).trim();if(t)return t;if(!e.model||!e.model.id)return``;let n=String(e.model.id||``).trim(),r=String(e.provider_name||``).trim();if(r)return r+`/`+n;let i=String(e.provider_type||``).trim();return!i||n.includes(`/`)?n:i+`/`+n}function uM(e,t,n,r){let i=new Set,a=String(e||``).trim().toLowerCase(),o=String(t||``).trim().toLowerCase(),s=String(n||``).trim().toLowerCase(),c=String(r||``).trim().toLowerCase();if(c&&i.add(c),!a)return i;i.add(a),s&&i.add(s+`/`+a),o&&!a.includes(`/`)&&i.add(o+`/`+a);let l=a.split(`/`);return l.length===2&&l[1]&&i.add(l[1]),i}function dM(e){return uM(e&&e.model?e.model.id:``,e?e.provider_type:``,e?e.provider_name:``,e?e.selector:``)}function fM(e){let t=new Set,n=String(e.resolved_model||``).trim().toLowerCase(),r=String(e.target_model||``).trim().toLowerCase(),i=String(e.target_provider||``).trim().toLowerCase();if(n){t.add(n);let e=n.split(`/`);e.length===2&&e[1]&&t.add(e[1])}if(r){t.add(r);let e=r.split(`/`);e.length===2&&e[1]&&t.add(e[1])}return r&&i&&t.add(i+`/`+r),t}function pM(e){if(!e)return``;let t=String(e.provider||``).trim(),n=String(e.model||``).trim();return!t||!n||n===t||n.startsWith(t+`/`)?n:t+`/`+n}function mM(e){if(e===``||e==null)return null;let t=Number(e);return!Number.isFinite(t)||t<=0?null:t}function hM(e,t){let n={model:e},r=mM(t);return r!==null&&(n.weight=r),n}function gM(e){let t=Array.isArray(e)?e:[],n=[];for(let e of t){let t=String(e&&e.model||``).trim();t&&n.push(hM(t,e&&e.weight))}return n}function _M(e){switch(String(e||``).toLowerCase()){case`cost`:return`lowest cost`;case`round_robin`:case``:return`round robin`;default:return e}}var vM={round_robin:`Round-robin (rotate across targets; honors weights)`,cost:`Lowest cost (cheapest target per request)`,adaptive:`Adaptive (target chosen by the registered routing extension)`};function yM(e,t){let n=Array.isArray(e)?[...e]:[],r=String(t||``).trim().toLowerCase();return r&&!n.includes(r)&&n.push(r),n.map(e=>({value:e,label:vM[e]||e}))}function bM(e){let t=Array.isArray(e.targets)?e.targets:[],n=t.length>0?t[0]:{},r=t.map(e=>{let t={provider:e.provider||``,model:e.model||``};return e.weight&&(t.weight=e.weight),t});return{name:e.source,target_provider:n.provider||``,target_model:n.model||``,targets:r,strategy:e.strategy||``,session_affinity:e.session_affinity!==!1,description:e.description||``,slowdown:e.slowdown==null?null:Number(e.slowdown),enabled:e.enabled!==!1,managed:!!e.managed,valid:!!e.valid,resolved_model:e.resolved_model||``,provider_type:e.provider_type||``,user_paths:Array.isArray(e.user_paths)?e.user_paths:[]}}function xM(e){let t=Array.isArray(e)?e:[],n=[],r=[];for(let e of t)!e||typeof e!=`object`||(e.kind===`redirect`?n.push(bM(e)):e.kind===`policy`&&r.push({selector:e.source,provider_name:e.provider_name||``,model:e.model||``,user_paths:Array.isArray(e.user_paths)?e.user_paths:[],description:e.description||``,slowdown:e.slowdown==null?null:Number(e.slowdown),enabled:e.enabled!==!1,managed:!!e.managed,scope_kind:e.scope_kind||``}));return{aliases:n,policies:r}}function SM(e){if(!e)return`—`;let t=Array.isArray(e.targets)?e.targets:[];return t.length>1?t.length+` targets · `+_M(e.strategy):e.resolved_model?e.resolved_model:e.target_provider?e.target_provider+`/`+e.target_model:e.target_model||`—`}function CM(e){return e?e.enabled===!1?`is-disabled`:e.valid?`is-valid`:`is-invalid`:`is-invalid`}function wM(e){return e?e.enabled===!1?`Disabled`:e.valid?`Active`:`Invalid`:`Invalid`}function TM(e){return Array.isArray(e)&&e.length>0&&e.indexOf(`/`)===-1}function EM(e,t){return!t||!e?``:e.effective_enabled===!1?`is-disabled`:TM(e.user_paths)?`is-restricted`:`is-enabled`}function DM(e){if(!e)return``;let t=[];e.effective_enabled===!1&&t.push(e.default_enabled===!1?`Disabled by default`:`Disabled`);let n=Array.isArray(e.user_paths)?e.user_paths:[];return n.length>0&&t.push(`Allowed for `+n.join(`, `)),t.join(` · `)}function OM({models:e,aliases:t,virtualModelsAvailable:n,activeCategory:r}){let i=Array.isArray(e)?e:[],a=Array.isArray(t)?t:[],o=new Map;if(n)for(let e of a){let t=cM(e&&e.name);!t||e.enabled===!1||!e.valid||o.set(t,e)}let s=new Map,c=i.map(e=>{let t=lM(e),n=null;for(let t of dM(e))s.has(t)||s.set(t,e),!n&&o.has(t)&&(n=o.get(t));let r=e&&e.access?e.access:null;return{key:`model:`+t,display_name:t,secondary_name:``,provider_name:e.provider_name||``,provider_type:e.provider_type||``,model:e.model,selector:e.selector||``,is_alias:!1,alias:null,access:r,masking_alias:n,has_virtual_model:!!(n||r&&r.override),alias_state_class:``,alias_state_text:``}});if(!n)return c;for(let e of a){let t=s.get(cM(e&&e.name));if(e&&e.enabled!==!1&&e.valid&&t)continue;let n=null;for(let t of fM(e))if(n=s.get(t)||null,n)break;!n&&r&&r!==`all`||c.push({key:`alias:`+e.name,display_name:e.name,secondary_name:SM(e),provider_name:n&&n.provider_name||``,provider_type:n?n.provider_type||e.provider_type||``:e.provider_type||``,model:n?n.model:{id:e.name,object:`model`},selector:``,is_alias:!0,alias:e,access:null,masking_alias:null,source_model_exists:!!t,has_virtual_model:!0,alias_state_class:CM(e),alias_state_text:wM(e)})}return c.sort((e,t)=>e.is_alias===t.is_alias?String(e.display_name||``).localeCompare(String(t.display_name||``)):e.is_alias?-1:1)}function kM(e,t){if(!t)return e;let n=String(t).toLowerCase();return e.filter(e=>[e.display_name,e.secondary_name,e.provider_name,e.provider_type,e.model&&e.model.owned_by,e.alias&&e.alias.description,e.alias&&e.alias_state_text,e.model&&e.model.metadata&&e.model.metadata.modes?e.model.metadata.modes.join(`,`):``,e.model&&e.model.metadata&&e.model.metadata.categories?e.model.metadata.categories.join(`,`):``].some(e=>String(e||``).toLowerCase().includes(n)))}function AM(e,t){return String(e||``).trim()||String(t||``).trim()||`Unassigned`}function jM(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return!r||r===n?``:r}function MM(e){let t=String(e||``).trim();return t?t+`/`:``}function NM(e){let t=Array.isArray(e)?e:[],n=t.filter(e=>e&&!e.is_alias).length,r=t.filter(e=>e&&e.is_alias).length,i=[];return n>0&&i.push(n+(n===1?` model`:` models`)),r>0&&i.push(r+(r===1?` alias`:` aliases`)),i.join(` · `)}function PM(e,t,n){let r=String(t||``).trim(),i=String(n||``).trim();for(let t of Array.isArray(e)?e:[]){let e=String(t&&t.provider_name||``).trim(),n=String(t&&t.provider_type||``).trim();if(!(r&&e!==r)&&!(!r&&i&&n!==i)&&t&&t.access)return t.access.default_enabled!==!1}return!0}function FM(e){for(let t of Array.isArray(e)?e:[])if(t&&t.access)return t.access.default_enabled!==!1;return!0}function IM(e,t){let n=String(t||``).trim();if(!n)return null;for(let t of Array.isArray(e)?e:[])if(String(t&&t.selector||``).trim()===n)return t;return null}function LM(e,t,n,r){let i=MM(t),a=r&&r.get(`/`)||null,o=i&&r&&r.get(i)||null,s=PM(e,t,n),c=o||a,l=c&&Array.isArray(c.user_paths)?Array.from(new Set(c.user_paths)).sort():[];return{selector:i,default_enabled:s,effective_enabled:c?c.enabled!==!1:s,user_paths:l,override:o}}function RM(e,t,n){if(!Array.isArray(e)||e.length===0)return[];let r=new Map;for(let e of Array.isArray(n)?n:[]){let t=String(e&&e.selector||``).trim();t&&r.set(t,e)}let i=[],a=new Map;for(let t of e){if(t&&t.is_alias){i.push(t);continue}let e=String(t&&t.provider_name||``).trim(),n=String(t&&t.provider_type||``).trim(),r=`provider-group:`+(e||n||`unassigned`);a.has(r)||a.set(r,{key:r,provider_name:e,provider_type:n,display_name:AM(e,n),type_label:jM(e,n),rows:[]});let o=a.get(r);!o.provider_name&&e&&(o.provider_name=e),!o.provider_type&&n&&(o.provider_type=n),o.display_name=AM(o.provider_name,o.provider_type),o.type_label=jM(o.provider_name,o.provider_type),o.rows.push(t)}let o=Array.from(a.values()).map(e=>{let n=LM(t,e.provider_name,e.provider_type,r);return{...e,access:n,access_summary:DM(n),item_count_label:NM(e.rows)}}).sort((e,t)=>String(e.display_name||``).localeCompare(String(t.display_name||``)));return i.length>0&&o.unshift({key:`virtual-model-group`,is_virtual_models:!0,provider_name:``,provider_type:``,display_name:`Virtual models`,type_label:``,rows:i,access:{selector:``},access_summary:``,item_count_label:NM(i)}),o}function zM(e,t){let n=IM(t,`/`),r=FM(e),i=n&&Array.isArray(n.user_paths)?n.user_paths:[];return{key:`scope-global`,is_alias:!1,display_name:`all providers and models`,access:{selector:`/`,default_enabled:r,effective_enabled:n?n.enabled!==!1:r,user_paths:i,override:n}}}function BM(e){return e?String(e.access&&e.access.selector||``).trim()||String(e.override_selector||``).trim()||lM(e):``}function VM(e){if(!e)return[];let t=[];return e.is_alias?t.push(`alias-row`,CM(e.alias)):e.has_virtual_model&&t.push(`alias-row`,`is-valid`),!e.is_alias&&e.masking_alias&&t.push(`masked-model-row`),!e.is_alias&&e.access&&e.access.effective_enabled===!1&&t.push(`model-access-disabled-row`),t}function HM(e){return!!(e&&e.is_alias&&e.alias&&e.alias.name&&!e.alias.managed)}function UM(e){return!!(e&&!e.is_alias&&e.masking_alias&&e.masking_alias.name&&!e.masking_alias.managed)}function WM(e){return e&&e.is_alias&&e.alias&&e.alias.name?`alias-row-`+String(e.alias.name).replace(/[^a-zA-Z0-9_-]+/g,`-`):``}function GM(e){return e?e.is_alias?!!(e.alias&&e.alias.managed):!!(e.access&&e.access.override&&e.access.override.managed||e.masking_alias&&e.masking_alias.managed):!1}function KM(e){return!!(e&&e.override)}function qM(e){return e?`table-action-btn-active`:``}function JM(e,t){let n=`Edit `+String(e||`model access`);return t?n+` (virtual model exists)`:n}function YM(){return{source:``,target_model:``,target_weight:1,targets:[],strategy:`round_robin`,session_affinity:!0,user_paths:``,description:``,slowdown:``,enabled:!0}}function XM(e){return String(e&&e.target_model||``).trim()!==``}function ZM(e){return String(e&&e.target_model||``).trim()?!0:gM(e&&e.targets).length>0}function QM(e){if(ZM(e))return!0;let t=String(e&&e.source||``).trim();return!!t&&t!==`/`&&!t.endsWith(`/`)}function $M(e){return!!e&&Array.isArray(e.targets)&&e.targets.length>0}function eN(e){return $M(e)&&String(e&&e.strategy||``).toLowerCase()!==`cost`}function tN(e){let t=Array.isArray(e.targets)?e.targets:[];if(t.length>0){let n=t.shift();e.target_model=n.model||``,e.target_weight=n.weight||1;return}e.target_model=``,e.target_weight=1}function nN(e){let t=Array.isArray(e&&e.targets)?e.targets:[];return t.length>0?{primaryModel:pM(t[0]),primaryWeight:t[0].weight||1,extraTargets:t.slice(1).map(e=>({model:pM(e),weight:e.weight||1}))}:{primaryModel:e&&e.target_provider?e.target_provider+`/`+e.target_model:e&&e.target_model||``,primaryWeight:1,extraTargets:[]}}function rN(e){return String(e||``).split(/\r?\n|,/).map(e=>String(e||``).trim()).filter(Boolean)}function iN(e,t,n){let r=String(e&&e.source||``).trim(),i=String(e&&e.target_model||``).trim(),a=gM(e&&e.targets),o=ZM(e),s=String(t||``).trim(),c=n===`edit`&&!!s&&r!==s,l={source:r,user_paths:rN(e&&e.user_paths),description:String(e&&e.description||``).trim(),enabled:!!(e&&e.enabled)},u=e&&e.slowdown;if(u!==``&&u!=null){let e=Number(u);Number.isFinite(e)&&(l.slowdown=e)}if(c&&(l.old_source=s),o){let t=[];if(i&&t.push(hM(i,e.target_weight)),t.push(...a),t.length>1){let n=e.strategy||`round_robin`;l.targets=n===`cost`?t.map(e=>({model:e.model})):t,l.strategy=n,e&&e.session_affinity===!1&&(l.session_affinity=!1)}else l.target_model=t[0].model}return{payload:l,source:r,isRedirect:o,isRename:c}}function aN(e){let t={source:e.name,description:String(e.description||``).trim(),user_paths:Array.isArray(e.user_paths)?e.user_paths:[],enabled:e.enabled===!1};if(e.slowdown!=null){let n=Number(e.slowdown);Number.isFinite(n)&&(t.slowdown=n)}let n=Array.isArray(e.targets)?e.targets:[];return n.length>1?(t.strategy=e.strategy||`round_robin`,e.session_affinity===!1&&(t.session_affinity=!1),t.targets=t.strategy===`cost`?n.map(e=>({model:pM(e)})):n.map(e=>hM(pM(e),e.weight))):n.length===1?t.target_model=pM(n[0]):t.target_model=e.target_provider?e.target_provider+`/`+e.target_model:e.target_model,t}function oN(e,t,n){let r=n||{},i=r.effective_enabled===!1,a=t&&Array.isArray(t.user_paths)?t.user_paths:[],o=String(t&&t.description||``).trim(),s=!!(t&&t.slowdown!=null),c=Number(s?t.slowdown:0),l={};o&&(l.description=o),s&&Number.isFinite(c)&&(l.slowdown=c);let u=`PUT`,d;return i===!1?d={source:e,enabled:!1,user_paths:a,...l}:t&&a.length===0&&!o&&!s&&r.default_enabled!==!1?(u=`DELETE`,d={source:e}):d={source:e,enabled:!0,user_paths:a,...l},{method:u,payload:d,desired:i}}function sN(e,t,n){let r=Math.max(1,Number(t||75)),i=Math.min(n,e+r);return{limit:i,rendering:iOM({models:Hf.models,aliases:this.aliases,virtualModelsAvailable:this.virtualModelsAvailable,activeCategory:Hf.activeCategory}));get displayModels(){return R(this.#T)}set displayModels(e){M(this.#T,e)}#E=A(()=>RM(this.displayModels,Hf.models,this.modelOverrideViews));get displayModelGroups(){return R(this.#E)}set displayModelGroups(e){M(this.#E,e)}#D=A(()=>kM(this.displayModels,Hf.filter));get filteredDisplayModels(){return R(this.#D)}set filteredDisplayModels(e){M(this.#D,e)}#O=A(()=>{let e=this.filteredDisplayModels,t=Math.max(0,Math.min(Number(this.modelRenderLimit||0),e.length));return!Hf.filter&&t>=this.displayModels.length?this.displayModelGroups:RM(e.slice(0,t),Hf.models,this.modelOverrideViews)});get filteredDisplayModelGroups(){return R(this.#O)}set filteredDisplayModelGroups(e){M(this.#O,e)}#k=A(()=>zM(Hf.models,this.modelOverrideViews));get globalScopeRow(){return R(this.#k)}set globalScopeRow(e){M(this.#k,e)}modelsBusy(){return!!(Hf.loading||this.modelsRendering)}modelLoadingText(){if(Hf.loading)return this.displayModels.length>0?`Refreshing models...`:`Loading models...`;let e=this.filteredDisplayModels.length;return`Rendering models... `+Math.min(Number(this.modelRenderLimit||0),e)+` / `+e}restartModelRendering(e){let t=++this.#a,n=cN(this.modelRenderBatchSize,e);this.modelRenderLimit=n.limit,this.modelsRendering=n.rendering,n.rendering&&this.#A(t)}stopModelRendering(){this.#a++,this.modelsRendering=!1}#A(e){let t=()=>{if(e!==this.#a)return;let t=sN(this.modelRenderLimit,this.modelRenderBatchSize,this.filteredDisplayModels.length);this.modelRenderLimit=t.limit,this.modelsRendering=t.rendering,t.rendering&&this.#A(e)};typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>setTimeout(t,0)):setTimeout(t,0)}async fetchVirtualModels(){this.aliasLoading=!0,this.aliasError=``;try{let e=await bd(`/admin/virtual-models`,{label:`virtual models`});if(e.status===503){this.virtualModelsAvailable=!1,this.aliases=[],this.modelOverrideViews=[];return}if(e.stale)return;if(this.virtualModelsAvailable=!0,!e.ok){this.aliases=[],this.modelOverrideViews=[];return}let{aliases:t,policies:n}=xM(e.data);this.aliases=t,this.modelOverrideViews=n}catch(e){console.error(`Failed to fetch virtual models:`,e),this.aliases=[],this.modelOverrideViews=[],this.aliasError=`Unable to load virtual models.`}finally{this.aliasLoading=!1}}qualifiedModelName(e){return lM(e)}findModelOverrideView(e){return IM(this.modelOverrideViews,e)}hasGlobalModelOverride(){return!!this.findModelOverrideView(`/`)}findExistingAliasByName(e){let t=cM(e);if(!t)return null;for(let e of this.aliases)if(cM(e&&e.name)===t)return e;return null}findConcreteModelByName(e){let t=cM(e);if(!t)return null;for(let e of Hf.models)if(dM(e).has(t))return e;return null}rowToggleEnabled(e){return e?e.is_alias?e.alias&&e.alias.enabled!==!1:!!(e.access&&e.access.effective_enabled!==!1):!1}rowToggleLabel(e){return this.rowTogglingKey&&this.rowTogglingKey===e.key?`Updating...`:this.rowToggleRestricted(e)?`Restricted`:this.rowToggleEnabled(e)?`Enabled`:`Disabled`}rowToggleRestricted(e){return!!e&&!e.is_alias&&EM(e.access,this.virtualModelsAvailable)===`is-restricted`}rowToggleAriaLabel(e){if(!e)return``;let t=this.rowToggleEnabled(e)?`Disable `:`Enable `,n;return n=e.is_alias?`alias `+String(e.alias&&e.alias.name||``):String(e.display_name||e.access&&e.access.selector||`model`),t+n.trim()}async toggleRowEnabled(e){if(this.virtualModelsAvailable&&!(!e||this.rowTogglingKey===e.key)){if(GM(e)){of.success(`This virtual model is managed by configuration and is read-only.`);return}if(e.is_alias){await this.toggleAliasRow(e);return}await this.toggleModelRow(e)}}async toggleAliasRow(e){let t=e.alias;if(!t||!t.name)return;this.rowTogglingKey=e.key;let n=aN(t);try{let e=await xd(`/admin/virtual-models`,`PUT`,n,{label:`alias state`});if(e.status===503){this.virtualModelsAvailable=!1,of.error(`Virtual models feature is unavailable.`);return}if(e.stale)return;if(!e.ok){of.error(e.status===401?`Authentication required.`:gd(e,`Failed to update alias state.`));return}of.success(n.enabled?`Alias enabled.`:`Alias disabled.`),this.fetchVirtualModels()}catch(e){console.error(`Failed to toggle alias state:`,e),of.error(`Failed to update alias state.`)}finally{this.rowTogglingKey=``}}async toggleModelRow(e){let t=BM(e);if(!t)return;let{method:n,payload:r,desired:i}=oN(t,this.findModelOverrideView(t),e.access||{});this.rowTogglingKey=e.key;try{let e=await xd(`/admin/virtual-models`,n,r,{label:`model access`});if(e.status===503){this.virtualModelsAvailable=!1,of.error(`Virtual models feature is unavailable.`);return}if(!(n===`DELETE`&&e.status===404)){if(e.stale)return;if(!e.ok){of.error(e.status===401?`Authentication required.`:gd(e,`Failed to update model access.`));return}}of.success(i?`Model enabled.`:`Model disabled.`),Promise.all([Hf.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to toggle model access:`,e),of.error(`Failed to update model access.`)}finally{this.rowTogglingKey=``}}async removeAliasRow(e){if(!(e&&e.is_alias&&e.alias&&e.alias.name&&!e.alias.managed)||this.rowDeletingKey)return;let t=String(e.alias.name||``).trim();t&&await this.mutateVirtualModelRow({rowKey:e.key,confirmMessage:`Remove the virtual model alias "`+t+`"?`,method:`DELETE`,payload:{source:t},operation:`virtual model`,failureMessage:`Failed to remove virtual model.`,notice:`Virtual model removed.`,ignoreNotFound:!0})}async removeRedirectRow(e){let t=e&&e.masking_alias;if(!(e&&!e.is_alias&&t&&t.name&&!t.managed)||this.rowDeletingKey)return;let n=String(t.name||``).trim();n&&await this.mutateVirtualModelRow({rowKey:e.key,confirmMessage:`Remove the redirect for "`+n+`"? Other virtual model settings will be preserved.`,method:`PUT`,payload:{source:n,user_paths:Array.isArray(t.user_paths)?t.user_paths:[],description:String(t.description||``).trim(),enabled:t.enabled!==!1,...t.slowdown==null?{}:{slowdown:Number(t.slowdown)}},operation:`virtual model redirect`,failureMessage:`Failed to remove redirect.`,notice:`Redirect removed. Other virtual model settings were preserved.`})}async mutateVirtualModelRow(e){if(!this.rowDeletingKey&&window.confirm(e.confirmMessage)){this.rowDeletingKey=e.rowKey;try{let t=await xd(`/admin/virtual-models`,e.method,e.payload,{label:e.operation});if(t.status===503){this.virtualModelsAvailable=!1,of.error(`Virtual models feature is unavailable.`);return}if(!(e.ignoreNotFound&&t.status===404)){if(t.stale)return;if(!t.ok){of.error(t.status===401?`Authentication required.`:gd(t,e.failureMessage));return}}this.virtualModelsAvailable=!0,of.success(e.notice),Promise.all([Hf.fetchModels(),this.fetchVirtualModels()])}catch(t){console.error(e.failureMessage,t),of.error(e.failureMessage)}finally{this.rowDeletingKey=``}}}addVmTarget(){Array.isArray(this.vmForm.targets)||(this.vmForm.targets=[]),this.vmForm.targets.push({model:``,weight:1})}removeVmTarget(e){Array.isArray(this.vmForm.targets)&&this.vmForm.targets.splice(e,1)}removePrimaryTarget(){tN(this.vmForm)}vmFormHasPrimaryTarget(){return XM(this.vmForm)}vmFormShowStrategy(){return $M(this.vmForm)}vmStrategyOptions(){return yM(Td.virtualModelStrategies(),this.vmForm.strategy)}vmFormShowWeights(){return eN(this.vmForm)}vmFormSupportsSlowdown(){return QM(this.vmForm)}vmFormToggleRestricted(){return!!(this.vmForm&&this.vmForm.enabled)&&TM(rN(this.vmForm.user_paths))}vmFormToggleLabel(){return!this.vmForm||!this.vmForm.enabled?`Disabled`:this.vmFormToggleRestricted()?`Restricted`:`Enabled`}resetVirtualModelForm(){this.vmFormError=``,this.vmFormHelpOpen=!1,this.vmFormUserPathsHelpOpen=!1,this.vmSubmitting=!1,this.vmDeleting=!1,this.vmFormHasExisting=!1,this.vmFormDefaultEnabled=!0,this.vmFormEffectiveEnabled=!0,this.vmFormDisplayName=``,this.vmFormSourceLocked=!1,this.vmFormOriginalSource=``,this.vmFormManaged=!1,this.vmForm=YM()}closeVirtualModelForm(){this.vmFormOpen=!1,this.resetVirtualModelForm()}openVirtualModelCreate(e){this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`create`,this.vmFormSourceLocked=!1,this.vmFormDisplayName=`New virtual model`,e&&e.model&&e.model.id&&(this.vmForm.target_model=lM(e))}openVirtualModelEditAlias(e){if(!e)return;this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!1,this.vmFormHasExisting=!0,this.vmFormManaged=!!e.managed,this.vmFormOriginalSource=e.name||``,this.vmFormDisplayName=e.name||``,this.vmFormDefaultEnabled=FM(Hf.models),this.vmFormEffectiveEnabled=e.enabled!==!1;let{primaryModel:t,primaryWeight:n,extraTargets:r}=nN(e);this.vmForm={source:e.name||``,target_model:t,target_weight:n,targets:r,strategy:e.strategy||`round_robin`,session_affinity:e.session_affinity!==!1,user_paths:(Array.isArray(e.user_paths)?e.user_paths:[]).join(` -`),description:e.description||``,slowdown:e.slowdown??``,enabled:e.enabled!==!1}}openVirtualModelEditModel(e){if(!e||e.is_alias)return;let t=e.access||{},n=t.override||null,r=n&&Array.isArray(n.user_paths)?n.user_paths:Array.isArray(t.user_paths)?t.user_paths:[],i=BM(e);this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!0,this.vmFormHasExisting=!!n,this.vmFormOriginalSource=i;let a=n?n.enabled!==!1:t.effective_enabled!==!1;this.vmFormDefaultEnabled=t.default_enabled!==!1,this.vmFormEffectiveEnabled=a,this.vmFormManaged=!!(n&&n.managed),this.vmFormDisplayName=e.access_display_name||e.display_name||i||``,this.vmForm={source:i,target_model:``,target_weight:``,targets:[],strategy:`round_robin`,user_paths:r.join(` -`),description:n&&n.description?n.description:``,slowdown:n&&n.slowdown!=null?n.slowdown:``,enabled:a}}openGlobalModelOverrideEdit(){let e=this.findModelOverrideView(`/`),t=e&&Array.isArray(e.user_paths)?e.user_paths:[],n=FM(Hf.models);this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!0,this.vmFormHasExisting=!!e,this.vmFormOriginalSource=`/`,this.vmFormDefaultEnabled=n,this.vmFormEffectiveEnabled=e?e.enabled!==!1:n,this.vmFormManaged=!!(e&&e.managed),this.vmFormDisplayName=`All providers and models`,this.vmForm={source:`/`,target_model:``,target_weight:``,targets:[],strategy:`round_robin`,user_paths:t.join(` -`),description:e&&e.description?e.description:``,slowdown:e&&e.slowdown!=null?e.slowdown:``,enabled:e?e.enabled!==!1:n}}openProviderOverrideEdit(e){!e||!e.access||!e.access.selector||this.openVirtualModelEditModel({display_name:e.display_name,access_display_name:`All models in `+e.display_name,provider_name:e.provider_name,provider_type:e.provider_type,access:e.access,override_selector:e.access.selector,is_alias:!1})}async submitVirtualModelForm(){if(this.vmFormManaged){this.vmFormError=`This virtual model is managed by configuration and cannot be edited here.`;return}let{payload:e,source:t,isRedirect:n,isRename:r}=iN(this.vmForm,this.vmFormOriginalSource,this.vmFormMode);if(!t){this.vmFormError=`Source is required.`;return}if(this.vmFormError=``,this.vmFormMode!==`edit`){let e=this.findExistingAliasByName(t),r=e?null:this.findModelOverrideView(t);if(e||r){let n=e?`A virtual model named "`+e.name+`" already exists. Saving will update that virtual model. Continue?`:`An access policy for "`+t+`" already exists. Saving will update that virtual model. Continue?`;if(!window.confirm(n)){this.vmFormError=`Choose a different source or edit the existing virtual model.`;return}}else if(n){let e=this.findConcreteModelByName(t);if(e){let t=lM(e)||String(e.model&&e.model.id||``).trim();if(!window.confirm(`A model named "`+t+`" already exists. Creating this alias will mask that model in the list. Continue?`)){this.vmFormError=`Choose a different source to avoid masking an existing model.`;return}}}}else if(r){let e=(this.aliases||[]).find(e=>e&&e.name===t)||null,r=e?null:this.findModelOverrideView(t);if(e||r){this.vmFormError=`A virtual model for "`+t+`" already exists. Choose a different source.`;return}if(n){let e=this.findConcreteModelByName(t);if(e){let t=lM(e)||String(e.model&&e.model.id||``).trim();if(!window.confirm(`A model named "`+t+`" already exists. Renaming to that name will mask the model in the list. Continue?`)){this.vmFormError=`Choose a different source to avoid masking an existing model.`;return}}}}this.vmSubmitting=!0;try{let t=await xd(`/admin/virtual-models`,`PUT`,e,{label:`virtual model`});if(t.status===503){this.virtualModelsAvailable=!1,this.vmFormError=`Virtual models feature is unavailable.`;return}if(t.stale)return;if(!t.ok){this.vmFormError=t.status===401?`Authentication required.`:gd(t,`Failed to save virtual model.`);return}let r=!n&&t.status===204;this.virtualModelsAvailable=!0,this.closeVirtualModelForm(),of.success(n?`Alias saved.`:r?`Model access reset to inherited/default.`:`Model access saved.`),Promise.all([Hf.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to save virtual model:`,e),this.vmFormError=`Failed to save virtual model.`}finally{this.vmSubmitting=!1}}async deleteVirtualModel(){if(this.vmFormManaged){this.vmFormError=`This virtual model is managed by configuration and cannot be removed here.`;return}let e=String(this.vmForm.source||this.vmFormOriginalSource||``).trim();if(!(!e||!this.vmFormHasExisting)&&window.confirm(`Remove the virtual model for "`+e+`"? This reverts to inherited/default behavior.`)){this.vmDeleting=!0,this.vmFormError=``;try{let t=await xd(`/admin/virtual-models`,`DELETE`,{source:e},{label:`virtual model`});if(t.status===503){this.virtualModelsAvailable=!1,this.vmFormError=`Virtual models feature is unavailable.`;return}if(t.status!==404){if(t.stale)return;if(!t.ok){this.vmFormError=t.status===401?`Authentication required.`:gd(t,`Failed to remove virtual model.`);return}}this.virtualModelsAvailable=!0,this.closeVirtualModelForm(),of.success(`Virtual model removed.`),Promise.all([Hf.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to delete virtual model:`,e),this.vmFormError=`Failed to remove virtual model.`}finally{this.vmDeleting=!1}}}},uN=[{value:`input_per_mtok`,label:`Input $/MTok`,group:`Tokens`},{value:`output_per_mtok`,label:`Output $/MTok`,group:`Tokens`},{value:`cached_input_per_mtok`,label:`Cached input $/MTok`,group:`Tokens`},{value:`cache_write_per_mtok`,label:`Cache write $/MTok`,group:`Tokens`},{value:`reasoning_output_per_mtok`,label:`Reasoning output $/MTok`,group:`Tokens`},{value:`batch_input_per_mtok`,label:`Batch input $/MTok`,group:`Batch`},{value:`batch_output_per_mtok`,label:`Batch output $/MTok`,group:`Batch`},{value:`audio_input_per_mtok`,label:`Audio input $/MTok`,group:`Audio`},{value:`audio_output_per_mtok`,label:`Audio output $/MTok`,group:`Audio`},{value:`per_image`,label:`$/Image`,group:`Image`},{value:`input_per_image`,label:`Input $/Image`,group:`Image`},{value:`per_second_input`,label:`Input $/Second`,group:`Audio/Video`},{value:`per_second_output`,label:`Output $/Second`,group:`Video`},{value:`per_character_input`,label:`$/Character`,group:`Audio`},{value:`per_page`,label:`$/Page`,group:`Utility`},{value:`per_request`,label:`$/Request`,group:`Utility`}];function dN(e){let t=uN.find(t=>t.value===e);return t?t.label:String(e||``).replace(/_/g,` `)}function fN(e){return e&&typeof e==`object`?JSON.parse(JSON.stringify(e)):{}}function pN(e,t){let n=fN(e),r=t&&t.pricing?t.pricing:t;if(!r||typeof r!=`object`)return n;for(let e of uN)r[e.value]!==null&&r[e.value]!==void 0&&(n[e.value]=Number(r[e.value]));return Array.isArray(r.tiers)&&r.tiers.length>0&&(n.tiers=fN(r.tiers)),n}function mN(e){switch(String(e||``).trim()){case`config_yaml`:return`config.yaml`;case`model_registry`:return`Model registry`;default:return e?String(e):`Unknown`}}function hN(e){let t=e&&e.pricing?e.pricing:{},n=e&&e.pricing_sources&&typeof e.pricing_sources==`object`?e.pricing_sources:{},r={};for(let e of uN)t[e.value]!==null&&t[e.value]!==void 0&&(r[e.value]=mN(n[e.value]||`model_registry`));return r}function gN(e){let t=String(e&&e.selector||``).trim();return t?`Dashboard/API override (`+t+`)`:`Dashboard/API override`}function _N(e){let t=String(e||``).trim();return t?t+`/`:``}function vN(e){return String(e&&e.model&&e.model.id||``).trim()}function yN(e){let t=String(e&&e.provider_name||``).trim(),n=vN(e);return t&&n?t+`/`+n:n}function bN(e){return vN(e)}function xN(e){let t=new Map;for(let n of Array.isArray(e)?e:[]){let e=String(n&&n.selector||``).trim();e&&t.set(e,n)}return t}function SN(e,t){let n=String(t||``).trim();return n&&xN(e).get(n)||null}function CN(e,t,n){let r=xN(e),i=yN(t),a=bN(t),o=_N(t&&t.provider_name),s=String(n||``).trim();for(let e of[i,a,o,`/`]){if(!e||e===s)continue;let t=r.get(e);if(t)return t}return null}function wN(e,t,n){let r=e&&e.model&&e.model.metadata?e.model.metadata:null,i=fN(r&&r.pricing),a=hN(r),o=CN(t,e,n),s=o&&o.pricing?o.pricing:null;if(s){let e=gN(o);for(let t of uN)s[t.value]!==null&&s[t.value]!==void 0&&(i[t.value]=Number(s[t.value]),a[t.value]=e);Array.isArray(s.tiers)&&s.tiers.length>0&&(i.tiers=fN(s.tiers),a.tiers=e)}return{pricing:i,sources:a}}function TN(e,t){let n=e&&e.pricing?e.pricing:{},r=[];for(let e of uN)n[e.value]!==null&&n[e.value]!==void 0&&r.push({id:t(),field:e.value,value:String(n[e.value])});return r}function EN(e,t){let n=new Set;for(let r of Array.isArray(e)?e:[]){if(t&&r.id===t)continue;let e=String(r.field||``).trim();e&&n.add(e)}return n}function DN(e,t){let n=EN(e,t&&t.id);return uN.filter(e=>e.value===(t&&t.field)||!n.has(e.value))}function ON(e,t){let n={},r=new Set;for(let t of Array.isArray(e)?e:[]){let e=String(t.field||``).trim();if(!e)return{error:`Choose a price type for every row.`};if(r.has(e))return{error:`Each price type can only be used once.`};r.add(e);let i=String(t.value||``).trim();if(i===``)return{error:`Enter a value for `+dN(e)+`.`};let a=Number(i);if(!Number.isFinite(a)||a<0)return{error:`Pricing values must be numbers greater than or equal to 0.`};n[e]=a}let i=Array.isArray(t)?t:[];return i.length>0&&(n.tiers=fN(i)),Object.keys(n).length===0?{error:`Add at least one pricing field before saving.`}:{pricing:n}}function kN(e,t,n){let r=e||{},i=t||{},a=n||{},o=pN(r,a);return uN.map(e=>{let t=a[e.value]!==null&&a[e.value]!==void 0,n=r[e.value]!==null&&r[e.value]!==void 0;return{field:e.value,label:e.label,value:o[e.value],source:t?`Form/API value`:n?i[e.value]||`Model registry`:`Unset`}}).filter(e=>e.source!==`Unset`||e.value!==void 0)}var AN=new class{#e=j(!0);get modelPricingOverridesAvailable(){return R(this.#e)}set modelPricingOverridesAvailable(e){M(this.#e,e,!0)}#t=j(N([]));get modelPricingOverrideViews(){return R(this.#t)}set modelPricingOverrideViews(e){M(this.#t,e,!0)}#n=j(``);get modelPricingOverrideError(){return R(this.#n)}set modelPricingOverrideError(e){M(this.#n,e,!0)}#r=j(!1);get modelPricingOverrideFormOpen(){return R(this.#r)}set modelPricingOverrideFormOpen(e){M(this.#r,e,!0)}#i=j(!1);get modelPricingOverrideSubmitting(){return R(this.#i)}set modelPricingOverrideSubmitting(e){M(this.#i,e,!0)}#a=j(!1);get modelPricingOverrideFormHasExistingOverride(){return R(this.#a)}set modelPricingOverrideFormHasExistingOverride(e){M(this.#a,e,!0)}#o=j(``);get modelPricingOverrideFormDisplayName(){return R(this.#o)}set modelPricingOverrideFormDisplayName(e){M(this.#o,e,!0)}#s=j(``);get modelPricingOverrideFormScope(){return R(this.#s)}set modelPricingOverrideFormScope(e){M(this.#s,e,!0)}#c=j(N([]));get modelPricingOverrideFormScopeOptions(){return R(this.#c)}set modelPricingOverrideFormScopeOptions(e){M(this.#c,e,!0)}#l=j(null);get modelPricingOverrideFormRow(){return R(this.#l)}set modelPricingOverrideFormRow(e){M(this.#l,e,!0)}#u=j(null);get modelPricingOverrideFormBasePricing(){return R(this.#u)}set modelPricingOverrideFormBasePricing(e){M(this.#u,e,!0)}#d=j(null);get modelPricingOverrideFormBasePricingSources(){return R(this.#d)}set modelPricingOverrideFormBasePricingSources(e){M(this.#d,e,!0)}#f=j(N([]));get modelPricingOverrideFormPreservedTiers(){return R(this.#f)}set modelPricingOverrideFormPreservedTiers(e){M(this.#f,e,!0)}#p=j(N([]));get modelPricingOverrideRows(){return R(this.#p)}set modelPricingOverrideRows(e){M(this.#p,e,!0)}#m=j(N({selector:``}));get modelPricingOverrideForm(){return R(this.#m)}set modelPricingOverrideForm(e){M(this.#m,e,!0)}_modelPricingOverrideRowID=0;pricingFieldOptions(){return uN}pricingFieldLabel(e){return dN(e)}async fetchModelPricingOverrides(){this.modelPricingOverrideError=``;try{let e=await bd(`/admin/model-pricing-overrides`,{label:`model pricing overrides`});if(e.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideViews=[];return}if(e.stale)return;if(this.modelPricingOverridesAvailable=!0,!e.ok){this.modelPricingOverrideViews=[];return}this.modelPricingOverrideViews=Array.isArray(e.data)?e.data:[]}catch(e){console.error(`Failed to fetch model pricing overrides:`,e),this.modelPricingOverrideViews=[],this.modelPricingOverrideError=`Unable to load model pricing overrides.`}}findModelPricingOverrideView(e){return SN(this.modelPricingOverrideViews,e)}hasGlobalPricingOverride(){return!!this.findModelPricingOverrideView(`/`)}hasProviderPricingOverride(e){return!!this.findModelPricingOverrideView(_N(e&&e.provider_name))}hasModelPricingOverride(e){return!!this.findModelPricingOverrideView(yN(e))}modelPricingButtonClass(e){return e?`table-action-btn-active`:``}modelPricingButtonLabel(e,t){let n=`Edit `+String(e||`model pricing`);return t?n+` (override exists)`:n}modelRowPricing(e){return wN(e,this.modelPricingOverrideViews).pricing}openGlobalPricingOverrideEdit(){this.openModelPricingOverrideForm({displayName:`All providers and models`,selector:`/`,scope:`global`,scopeOptions:[{value:`global`,label:`All providers and models`,selector:`/`}],row:null})}openProviderPricingOverrideEdit(e){let t=_N(e&&e.provider_name);t&&this.openModelPricingOverrideForm({displayName:`All models in `+(e.display_name||e.provider_name||t),selector:t,scope:`provider`,scopeOptions:[{value:`provider`,label:`Provider`,selector:t}],row:null})}openModelPricingOverrideEdit(e){if(!e||e.is_alias)return;let t=yN(e),n=bN(e),r=[{value:`exact`,label:`This provider and model`,selector:t}];n&&n!==t&&r.push({value:`model`,label:`This model across providers`,selector:n}),this.openModelPricingOverrideForm({displayName:e.display_name||t,selector:t,scope:`exact`,scopeOptions:r,row:e})}openModelPricingOverrideForm(e){let t=e||{};this.modelPricingOverrideFormOpen=!0,this.modelPricingOverrideError=``,this.modelPricingOverrideFormDisplayName=t.displayName||t.selector||`Pricing`,this.modelPricingOverrideFormScope=t.scope||``,this.modelPricingOverrideFormScopeOptions=Array.isArray(t.scopeOptions)?t.scopeOptions:[],this.modelPricingOverrideFormRow=t.row||null,this.modelPricingOverrideForm={selector:t.selector||``},this.loadModelPricingOverrideFormSelector(t.selector||``)}loadModelPricingOverrideFormSelector(e){e=String(e||``).trim();let t=this.findModelPricingOverrideView(e);this.modelPricingOverrideFormHasExistingOverride=!!t,this.modelPricingOverrideRows=TN(t,()=>this.nextModelPricingOverrideRowID()),this.modelPricingOverrideFormPreservedTiers=t&&t.pricing&&Array.isArray(t.pricing.tiers)?fN(t.pricing.tiers):[],this.modelPricingOverrideRows.length===0&&this.modelPricingOverrideFormPreservedTiers.length===0&&this.addModelPricingOverrideRow();let n=this.modelPricingOverrideFormRow,r=n?wN(n,this.modelPricingOverrideViews,e):{pricing:{},sources:{}};this.modelPricingOverrideFormBasePricing=r.pricing,this.modelPricingOverrideFormBasePricingSources=r.sources}setModelPricingOverrideScope(e){this.modelPricingOverrideFormScope=e;let t=this.modelPricingOverrideFormScopeOptions.find(t=>t.value===e);t&&(this.modelPricingOverrideForm.selector=t.selector,this.loadModelPricingOverrideFormSelector(t.selector))}nextModelPricingOverrideRowID(){return this._modelPricingOverrideRowID=(this._modelPricingOverrideRowID||0)+1,`pricing-row-`+this._modelPricingOverrideRowID}availablePricingFieldOptions(e){return DN(this.modelPricingOverrideRows,e)}addModelPricingOverrideRow(){let e=EN(this.modelPricingOverrideRows),t=uN.find(t=>!e.has(t.value))||uN[0];t&&this.modelPricingOverrideRows.push({id:this.nextModelPricingOverrideRowID(),field:t.value,value:``})}removeModelPricingOverrideRow(e){this.modelPricingOverrideRows=this.modelPricingOverrideRows.filter(t=>t.id!==e.id),this.modelPricingOverrideRows.length===0&&this.modelPricingOverrideFormPreservedTiers.length===0&&this.addModelPricingOverrideRow()}modelPricingOverridePayload(){return ON(this.modelPricingOverrideRows,this.modelPricingOverrideFormPreservedTiers)}modelPricingOverrideDraftPricing(){let e=this.modelPricingOverridePayload();return e&&e.pricing?e.pricing:{}}modelPricingEffectivePreviewRows(){return kN(this.modelPricingOverrideFormBasePricing,this.modelPricingOverrideFormBasePricingSources,this.modelPricingOverrideDraftPricing())}closeModelPricingOverrideForm(){this.modelPricingOverrideFormOpen=!1,this.modelPricingOverrideSubmitting=!1,this.modelPricingOverrideError=``,this.modelPricingOverrideFormHasExistingOverride=!1,this.modelPricingOverrideFormDisplayName=``,this.modelPricingOverrideFormScope=``,this.modelPricingOverrideFormScopeOptions=[],this.modelPricingOverrideFormRow=null,this.modelPricingOverrideFormBasePricing=null,this.modelPricingOverrideFormBasePricingSources=null,this.modelPricingOverrideFormPreservedTiers=[],this.modelPricingOverrideRows=[],this.modelPricingOverrideForm={selector:``}}async submitModelPricingOverrideForm(){let e=String(this.modelPricingOverrideForm.selector||``).trim();if(!e){this.modelPricingOverrideError=`Model pricing selector is required.`;return}let t=this.modelPricingOverridePayload();if(t.error){this.modelPricingOverrideError=t.error;return}let n={selector:e,...t};this.modelPricingOverrideSubmitting=!0,this.modelPricingOverrideError=``;try{let e=await xd(`/admin/model-pricing-overrides`,`PUT`,n,{label:`model pricing override`});if(e.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideError=`Model pricing overrides feature is unavailable.`;return}if(e.stale)return;if(!e.ok){this.modelPricingOverrideError=e.status===401?`Authentication required.`:gd(e,`Failed to save model pricing.`);return}this.modelPricingOverridesAvailable=!0,this.closeModelPricingOverrideForm(),of.success(`Model pricing saved.`),this.fetchModelPricingOverrides()}catch(e){console.error(`Failed to save model pricing override:`,e),this.modelPricingOverrideError=`Failed to save model pricing.`}finally{this.modelPricingOverrideSubmitting=!1}}async deleteModelPricingOverride(){let e=String(this.modelPricingOverrideForm.selector||``).trim();if(!(!e||!this.modelPricingOverrideFormHasExistingOverride)&&window.confirm(`Remove the model pricing override for "`+e+`"?`)){this.modelPricingOverrideSubmitting=!0,this.modelPricingOverrideError=``;try{let t=await xd(`/admin/model-pricing-overrides`,`DELETE`,{selector:e},{label:`model pricing override`});if(t.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideError=`Model pricing overrides feature is unavailable.`;return}if(t.status!==404){if(t.stale)return;if(!t.ok){this.modelPricingOverrideError=t.status===401?`Authentication required.`:gd(t,`Failed to remove model pricing override.`);return}}this.modelPricingOverridesAvailable=!0,this.closeModelPricingOverrideForm(),of.success(`Model pricing override removed.`),this.fetchModelPricingOverrides()}catch(e){console.error(`Failed to delete model pricing override:`,e),this.modelPricingOverrideError=`Failed to remove model pricing override.`}finally{this.modelPricingOverrideSubmitting=!1}}}},jN=B(``);function MN(e,t){O(t,!0);var n=jN();let r;var i=I(P(n),2),a=P(i,!0);D(i),D(n),L((e,i,o)=>{r=G(n,1,`alias-toggle`,null,r,e),n.disabled=lN.rowTogglingKey===t.row.key||!lN.virtualModelsAvailable,K(n,`aria-label`,i),H(a,o)},[()=>({enabled:lN.rowToggleEnabled(t.row),restricted:lN.rowToggleRestricted(t.row)}),()=>lN.rowToggleAriaLabel(t.row),()=>lN.rowToggleLabel(t.row)]),z(`click`,n,()=>lN.toggleRowEnabled(t.row)),V(e,n),k()}Br([`click`]);var NN=B(`
            `);function PN(e,t){O(t,!0);var n=NN(),r=P(n),i=e=>{MN(e,{get row(){return lN.globalScopeRow}})};U(r,e=>{lN.virtualModelsAvailable&&e(i)});var a=I(r,2),o=e=>{{let t=A(()=>AN.modelPricingButtonLabel(`global model pricing`,AN.hasGlobalPricingOverride())),n=A(()=>AN.modelPricingButtonClass(AN.hasGlobalPricingOverride()));wk(e,{get label(){return R(t)},get class(){return`table-icon-btn ${R(n)??``}`},onclick:()=>AN.openGlobalPricingOverrideEdit(),children:(e,t)=>{J(e,{get icon(){return Ul},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(a,e=>{AN.modelPricingOverridesAvailable&&e(o)});var s=I(a,2),c=e=>{{let t=A(()=>JM(`global model access`,lN.hasGlobalModelOverride())),n=A(()=>qM(lN.hasGlobalModelOverride()));wk(e,{get label(){return R(t)},get class(){return`table-icon-btn ${R(n)??``}`},onclick:()=>lN.openGlobalModelOverrideEdit(),children:(e,t)=>{J(e,{get icon(){return su},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(s,e=>{lN.virtualModelsAvailable&&e(c)}),D(n),V(e,n),k()}function FN(e){return String(e&&(e.primary_model||e.source)||``).trim()}function IN(e){return Array.isArray(e&&e.fallback_models)?e.fallback_models:Array.isArray(e&&e.targets)?e.targets:[]}function LN(e){return Array.isArray(e)?e.map(e=>({...e,source:FN(e),targets:IN(e)})):[]}function RN(e){let t=IN(e);return t.length===0?`-`:t.join(`, `)}function zN(e){return e&&e.enabled===!1?`Off`:e&&e.managed?`Config`:`On`}function BN(e,t){let n=String(t||``).trim();return n&&(Array.isArray(e)?e:[]).find(e=>FN(e)===n)||null}function VN(e,t){if(!t||t.is_alias)return!1;let n=BN(e,lM(t));return!!(n&&n.enabled!==!1&&IN(n).length>0)}function HN(e,t){return VN(e,t)?`table-action-btn-failover-active`:``}function UN(e,t){let n=`Edit failover for `+(t&&t.display_name?t.display_name:`model`);return VN(e,t)?n+` (active)`:n}function WN(e){let t=[e&&e.target_model];return(Array.isArray(e&&e.targets)?e.targets:[]).forEach(e=>t.push(e&&e.model)),t.map(e=>String(e||``).trim()).filter(Boolean)}function GN(e){let t=Array.isArray(e)?e.map(e=>String(e||``).trim()).filter(Boolean):[];return{target_model:t[0]||``,targets:t.slice(1).map(e=>({model:e}))}}function KN(e){return{primary_model:String(e&&e.source||``).trim(),fallback_models:WN(e),enabled:!(e&&e.enabled===!1)}}function qN(e){return FN(e)}function JN(e){let t={};return(Array.isArray(e)?e:[]).forEach(e=>{let n=qN(e);n&&(t[n]=!0)}),t}function YN(e,t){let n=qN(t);return!!(n&&e&&e[n])}function XN(e,t){return(Array.isArray(e)?e:[]).filter(e=>YN(t,e))}function ZN(e,t){let n=Array.isArray(e)?e:[];return n.length>0&&XN(n,t).length===n.length}function QN(e){return[FN(e),IN(e).join(` `)].join(` `).toLowerCase()}function $N(e,t){let n=Array.isArray(e)?e:[],r=String(t||``).trim().toLowerCase();return r?n.filter(e=>QN(e).includes(r)):n}function eP(e){return{primary_model:FN(e),fallback_models:IN(e).map(e=>String(e||``).trim()).filter(Boolean),enabled:!!(e&&e.enabled!==!1)}}function tP(){return{source:``,target_model:``,targets:[],enabled:!0}}var Q=new class{#e=j(!0);get failoverAvailable(){return R(this.#e)}set failoverAvailable(e){M(this.#e,e,!0)}#t=j(N([]));get failoverRules(){return R(this.#t)}set failoverRules(e){M(this.#t,e,!0)}#n=j(!1);get failoverLoading(){return R(this.#n)}set failoverLoading(e){M(this.#n,e,!0)}#r=j(!1);get failoverSaving(){return R(this.#r)}set failoverSaving(e){M(this.#r,e,!0)}#i=j(!1);get failoverGenerating(){return R(this.#i)}set failoverGenerating(e){M(this.#i,e,!0)}#a=j(``);get failoverError(){return R(this.#a)}set failoverError(e){M(this.#a,e,!0)}#o=j(N([]));get failoverGeneratedRules(){return R(this.#o)}set failoverGeneratedRules(e){M(this.#o,e,!0)}#s=j(!1);get failoverDraftsOpen(){return R(this.#s)}set failoverDraftsOpen(e){M(this.#s,e,!0)}#c=j(N({}));get failoverDraftSelections(){return R(this.#c)}set failoverDraftSelections(e){M(this.#c,e,!0)}#l=j(``);get failoverDraftFilter(){return R(this.#l)}set failoverDraftFilter(e){M(this.#l,e,!0)}#u=j(!1);get failoverDraftSaving(){return R(this.#u)}set failoverDraftSaving(e){M(this.#u,e,!0)}#d=j(!1);get failoverFormOpen(){return R(this.#d)}set failoverFormOpen(e){M(this.#d,e,!0)}#f=j(`create`);get failoverFormMode(){return R(this.#f)}set failoverFormMode(e){M(this.#f,e,!0)}#p=j(!1);get failoverFormManaged(){return R(this.#p)}set failoverFormManaged(e){M(this.#p,e,!0)}#m=j(N(tP()));get failoverForm(){return R(this.#m)}set failoverForm(e){M(this.#m,e,!0)}failoverEnabled(){return Td.booleanFlag(`FAILOVER_ENABLED`,!0)}async fetchFailoverRules(){if(!this.failoverEnabled()){this.failoverAvailable=!1,this.failoverRules=[],this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!1,this.failoverError=``,this.failoverLoading=!1;return}this.failoverLoading=!0,this.failoverError=``;try{let e=await bd(`/admin/failover`,{label:`failover mappings`});if(e.status===503){this.failoverAvailable=!1,this.failoverRules=[];return}if(e.stale)return;if(this.failoverAvailable=!0,!e.ok){this.failoverRules=[];return}this.failoverRules=LN(e.data)}catch(e){console.error(`Failed to fetch failover mappings:`,e),this.failoverRules=[],this.failoverError=`Unable to load failover mappings.`}finally{this.failoverLoading=!1}}resetFailoverForm(){this.failoverFormMode=`create`,this.failoverFormManaged=!1,this.failoverForm=tP()}openFailoverCreate(){this.resetFailoverForm(),this.failoverFormOpen=!0,this.focusFailoverEditor()}openFailoverEdit(e){if(!e)return;this.resetFailoverForm(),this.failoverFormMode=`edit`,this.failoverFormOpen=!0,this.failoverFormManaged=!!e.managed;let t=this.failoverPrimaryModel(e),n=this.failoverTargets(e);this.failoverForm={source:t,target_model:n[0]||``,targets:n.slice(1).map(e=>({model:e})),enabled:e.enabled!==!1},this.focusFailoverEditor()}openFailoverForModel(e){if(!e||e.is_alias)return;let t=this.qualifiedModelName(e),n=this.failoverRules.find(e=>this.failoverPrimaryModel(e)===t);if(n){this.openFailoverEdit(n);return}this.resetFailoverForm(),this.failoverFormMode=`create`,this.failoverFormOpen=!0,this.failoverForm.source=t,this.focusFailoverEditor()}closeFailoverForm(){this.failoverFormOpen=!1}closeFailoverDraftsModal(){this.failoverDraftSaving||(this.failoverDraftsOpen=!1)}failoverFormTargets(){return WN(this.failoverForm)}setFailoverFormTargets(e){let t=GN(e);this.failoverForm.target_model=t.target_model,this.failoverForm.targets=t.targets}addFailoverTarget(){Array.isArray(this.failoverForm.targets)||(this.failoverForm.targets=[]),this.failoverForm.targets.push({model:``}),this.focusFailoverEditor()}removeFailoverTarget(e){if(!Array.isArray(this.failoverForm.targets)){this.failoverForm.targets=[];return}this.failoverForm.targets.splice(e,1)}removePrimaryFailoverTarget(){let e=Array.isArray(this.failoverForm.targets)?this.failoverForm.targets:[];if(e.length>0){let t=e.shift();this.failoverForm.target_model=t&&t.model?t.model:``,this.failoverForm.targets=e;return}this.failoverForm.target_model=``}failoverRulePayload(){return KN(this.failoverForm)}async submitFailoverForm(){if(this.failoverSaving||this.failoverGenerating||this.failoverFormManaged)return;let e=this.failoverRulePayload();if(!e.primary_model){this.failoverError=`Primary model is required.`;return}if(e.enabled&&e.fallback_models.length===0){this.failoverError=`Add at least one failover target.`;return}this.failoverSaving=!0,this.failoverError=``;try{let t=await xd(`/admin/failover`,`PUT`,e,{label:`failover mapping`});if(t.stale)return;if(!t.ok){this.failoverError=`Failed to save failover mapping.`;return}of.success(`Failover mapping saved.`),this.closeFailoverForm(),this.fetchFailoverRules()}catch(e){console.error(`Failed to save failover mapping:`,e),this.failoverError=`Failed to save failover mapping.`}finally{this.failoverSaving=!1}}async deleteFailoverRule(e){let t=String(e&&this.failoverPrimaryModel(e)||this.failoverForm.source||``).trim();if(!(!t||this.failoverSaving||this.failoverGenerating)&&confirm(`Remove failover mapping for "`+t+`"?`)){this.failoverSaving=!0,this.failoverError=``;try{let e=await xd(`/admin/failover`,`DELETE`,{primary_model:t},{label:`failover mapping`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to remove failover mapping.`;return}of.success(`Failover mapping removed.`),this.closeFailoverForm(),this.fetchFailoverRules()}catch(e){console.error(`Failed to remove failover mapping:`,e),this.failoverError=`Failed to remove failover mapping.`}finally{this.failoverSaving=!1}}}async generateFailoverForForm(){if(this.failoverGenerating||this.failoverSaving||this.failoverFormManaged)return;let e=String(this.failoverForm.source||``).trim();if(!e){this.failoverError=`Primary model is required.`;return}this.failoverGenerating=!0,this.failoverError=``;try{let t=await xd(`/admin/failover/generate`,`POST`,{primary_model:e},{label:`failover generation`});if(t.stale)return;if(!t.ok){this.failoverError=`Failed to generate failover mapping.`;return}let n=LN(t.data),r=n.find(t=>this.failoverPrimaryModel(t)===e)||n[0]||null,i=this.failoverTargets(r);if(i.length===0){this.failoverError=`No failover suggestions were generated for this model.`;return}this.setFailoverFormTargets(i),of.success(`Generated `+i.length+` fallback model`+(i.length===1?`.`:`s.`)),this.focusFailoverEditor()}catch(e){console.error(`Failed to generate failover mapping:`,e),this.failoverError=`Failed to generate failover mapping.`}finally{this.failoverGenerating=!1}}openFailoverResetDialog(){Wd.open({title:`Remove failover models`,titleId:`failoverResetDialogTitle`,inputId:`failover-reset-confirmation`,message:`Remove every dashboard-managed failover mapping. Configuration-managed mappings remain active.`,requiredText:`remove`,confirmLabel:`Remove Failover`,icon:Eu,dialogClass:`budget-reset-dialog`,onConfirm:async()=>{await this.resetFailoverRules(),this.failoverError&&(Wd.error=this.failoverError)}})}async resetFailoverRules(){if(!this.failoverSaving){this.failoverSaving=!0,this.failoverError=``;try{let e=await xd(`/admin/failover/reset`,`POST`,void 0,{label:`failover removal`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to remove failover mappings.`;return}this.failoverRules=LN(e.data),this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!1,of.success(`Dashboard-managed failover mappings removed.`),Wd.close()}catch(e){console.error(`Failed to remove failover mappings:`,e),this.failoverError=`Failed to remove failover mappings.`}finally{this.failoverSaving=!1}}}async generateFailoverRules(){if(!(this.failoverGenerating||this.failoverDraftSaving)){this.failoverGenerating=!0,this.failoverError=``,this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!0;try{let e=await xd(`/admin/failover/generate`,`POST`,void 0,{label:`failover generation`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to generate failover mappings.`;return}this.failoverGeneratedRules=LN(e.data),this.selectAllFailoverDrafts(this.failoverGeneratedRules)}catch(e){console.error(`Failed to generate failover mappings:`,e),this.failoverError=`Failed to generate failover mappings.`}finally{this.failoverGenerating=!1}}}failoverDraftKey(e){return qN(e)}selectAllFailoverDrafts(e){this.failoverDraftSelections=JN(e)}failoverDraftSelected(e){return YN(this.failoverDraftSelections,e)}setFailoverDraftSelected(e,t){let n=this.failoverDraftKey(e);n&&(this.failoverDraftSelections={...this.failoverDraftSelections,[n]:!!t})}selectedFailoverDrafts(){return XN(this.failoverGeneratedRules,this.failoverDraftSelections)}selectedFailoverDraftCount(){return this.selectedFailoverDrafts().length}failoverDraftCountLabel(){return this.selectedFailoverDraftCount()+` / `+this.failoverGeneratedRules.length+` selected`}allFailoverDraftsSelected(){return ZN(this.failoverGeneratedRules,this.failoverDraftSelections)}toggleAllFailoverDrafts(){if(!(this.failoverDraftSaving||this.failoverGenerating||this.failoverGeneratedRules.length===0)){if(this.allFailoverDraftsSelected()){this.failoverDraftSelections={};return}this.selectAllFailoverDrafts(this.failoverGeneratedRules)}}failoverDraftSearchText(e){return QN(e)}filteredFailoverDrafts(){return $N(this.failoverGeneratedRules,this.failoverDraftFilter)}failoverDraftPayload(e){return eP(e)}async saveSelectedFailoverDrafts(){if(this.failoverDraftSaving||this.failoverGenerating)return;let e=this.selectedFailoverDrafts();if(e.length===0){this.failoverError=`Select at least one failover draft.`;return}this.failoverDraftSaving=!0,this.failoverError=``;try{for(let t of e){let e=this.failoverDraftPayload(t);if(!e.primary_model||e.fallback_models.length===0){this.failoverError=`Generated failover draft is missing model data.`;return}let n=await xd(`/admin/failover`,`PUT`,e,{label:`failover mapping`});if(n.stale)return;if(!n.ok){this.failoverError=`Failed to save failover mapping.`;return}}of.success(`Saved `+e.length+` failover mapping`+(e.length===1?`.`:`s.`)),this.failoverDraftsOpen=!1,this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.fetchFailoverRules()}catch(e){console.error(`Failed to save generated failover mappings:`,e),this.failoverError=`Failed to save failover mappings.`}finally{this.failoverDraftSaving=!1}}focusFailoverEditor(){setTimeout(()=>{let e=document.querySelector(`[data-failover-editor]`),t=e&&e.querySelector?e.querySelector(`[data-modal-autofocus], input:not([disabled]), textarea:not([disabled]), button:not([disabled])`):null;t&&typeof t.focus==`function`&&t.focus({preventScroll:!0})},0)}failoverTargetLabel(e){return RN(e)}failoverPrimaryModel(e){return FN(e)}failoverTargets(e){return IN(e)}findFailoverMapping(e){return BN(this.failoverRules,e)}hasActiveFailoverMapping(e){return VN(this.failoverRules,e)}failoverButtonClass(e){return HN(this.failoverRules,e)}failoverButtonLabel(e){return UN(this.failoverRules,e)}normalizeFailoverRules(e){return LN(e)}failoverRuleStatus(e){return zN(e)}qualifiedModelName(e){return lM(e)}},nP=B(``),rP=B(``),iP=B(`Config`),aP=B(`
            Targets
            `),oP=B(``),sP=B(`
            Redirects to
            `),cP=B(`
            Slowdown
            `),lP=B(` `),uP=B(`
            `),dP=B(`
            `),fP=B(`
            `);function pP(e,t){O(t,!0);let n=A(()=>AN.modelRowPricing(t.row)),r=A(()=>t.row.is_alias?t.row.alias&&t.row.alias.slowdown:t.row.masking_alias&&t.row.masking_alias.slowdown!=null?t.row.masking_alias.slowdown:t.row.access&&t.row.access.override&&t.row.access.override.slowdown),i=A(()=>Number(R(r)==null?0:R(r)));var a=fP(),o=P(a),s=P(o),c=P(s),l=P(c),u=P(l,!0);D(l);var d=I(l,2),f=e=>{V(e,nP())};U(d,e=>{t.row.is_alias&&e(f)});var p=I(d,2),m=e=>{V(e,rP())};U(p,e=>{!t.row.is_alias&&t.row.masking_alias&&e(m)});var h=I(p,2),g=e=>{V(e,iP())},_=A(()=>GM(t.row));U(h,e=>{R(_)&&e(g)}),D(c);var v=I(c,2),y=e=>{var n=aP(),r=I(P(n)),i=P(r,!0);D(r),D(n),L(()=>H(i,t.row.secondary_name)),V(e,n)};U(v,e=>{t.row.is_alias&&e(y)});var b=I(v,2),x=e=>{var n=sP(),r=I(P(n)),i=P(r,!0);D(r);var a=I(r,2),o=e=>{var n=oP();L(e=>{K(n,`aria-label`,lN.rowDeletingKey===t.row.key?`Removing redirect for `+t.row.display_name:`Remove redirect for `+t.row.display_name),K(n,`title`,lN.rowDeletingKey===t.row.key?`Removing redirect for `+t.row.display_name:`Remove redirect for `+t.row.display_name),n.disabled=e},[()=>!!lN.rowDeletingKey]),z(`click`,n,()=>lN.removeRedirectRow(t.row)),V(e,n)},s=A(()=>lN.virtualModelsAvailable&&UM(t.row));U(a,e=>{R(s)&&e(o)}),D(n),L(e=>H(i,e),[()=>SM(t.row.masking_alias)]),V(e,n)};U(b,e=>{!t.row.is_alias&&t.row.masking_alias&&e(x)});var S=I(b,2),C=e=>{var t=cP(),n=I(P(t)),r=P(n);D(n),D(t),L(()=>H(r,`+${R(i)??``}× inference time`)),V(e,t)};U(S,e=>{R(i)>0&&e(C)}),D(s),D(o);var w=I(o);W(w,17,()=>t.columns,ii,(e,r)=>{var i=lP(),a=P(i,!0);D(i),L(e=>{G(i,1,Ni(R(r).class),`svelte-1iynym`),H(a,e)},[()=>R(r).value(t.row,R(n))]),V(e,i)});var T=I(w),E=P(T),ee=e=>{var n=uP(),r=P(n);MN(r,{get row(){return t.row}});var i=I(r,2),a=e=>{{let n=A(()=>lN.rowDeletingKey===t.row.key?`Removing alias `+t.row.alias.name:`Remove alias `+t.row.alias.name),r=A(()=>!!lN.rowDeletingKey);wk(e,{get label(){return R(n)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>lN.removeAliasRow(t.row),get disabled(){return R(r)},children:(e,t)=>{J(e,{get icon(){return Eu},class:`table-icon-svg`})},$$slots:{default:!0}})}},o=A(()=>lN.virtualModelsAvailable&&HM(t.row));U(i,e=>{R(o)&&e(a)});var s=I(i,2),c=e=>{{let n=A(()=>`Edit alias `+t.row.alias.name);wk(e,{get label(){return R(n)},class:`table-icon-btn table-action-btn-active`,onclick:()=>lN.openVirtualModelEditAlias(t.row.alias),children:(e,t)=>{J(e,{get icon(){return su},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(s,e=>{lN.virtualModelsAvailable&&e(c)}),D(n),V(e,n)},te=e=>{var n=dP(),r=P(n);MN(r,{get row(){return t.row}});var i=I(r,2),a=e=>{{let n=A(()=>AN.modelPricingButtonLabel(`model pricing for `+t.row.display_name,AN.hasModelPricingOverride(t.row))),r=A(()=>AN.modelPricingButtonClass(AN.hasModelPricingOverride(t.row)));wk(e,{get label(){return R(n)},get class(){return`table-icon-btn ${R(r)??``}`},onclick:()=>AN.openModelPricingOverrideEdit(t.row),children:(e,t)=>{J(e,{get icon(){return Ul},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(i,e=>{AN.modelPricingOverridesAvailable&&e(a)});var o=I(i,2),s=e=>{{let n=A(()=>Q.failoverButtonLabel(t.row)),r=A(()=>Q.failoverButtonClass(t.row));wk(e,{get label(){return R(n)},get class(){return`table-icon-btn ${R(r)??``}`},onclick:()=>Q.openFailoverForModel(t.row),children:(e,t)=>{J(e,{get icon(){return Su},class:`table-icon-svg`})},$$slots:{default:!0}})}},c=A(()=>Q.failoverAvailable&&Q.failoverEnabled());U(o,e=>{R(c)&&e(s)});var l=I(o,2),u=e=>{{let n=A(()=>Z.rateLimitGaugeTitle(t.row.display_name,Z.rateLimitGaugeClassForModel(t.row))),r=A(()=>Z.rateLimitGaugeClassForModel(t.row));wk(e,{get label(){return R(n)},get class(){return`table-icon-btn ${R(r)??``}`},onclick:()=>Z.openRateLimitInspectorForModel(t.row),children:(e,t)=>{J(e,{get icon(){return Yl},class:`table-icon-svg`})},$$slots:{default:!0}})}},d=A(()=>Z.rateLimitsEnabled()&&Z.rateLimitInspectorModelID(t.row));U(l,e=>{R(d)&&e(u)});var f=I(l,2),p=e=>{{let n=A(()=>`Edit redirect for `+t.row.display_name);wk(e,{get label(){return R(n)},class:`table-icon-btn table-action-btn-active`,onclick:()=>lN.openVirtualModelEditAlias(t.row.masking_alias),children:(e,t)=>{J(e,{get icon(){return su},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(f,e=>{lN.virtualModelsAvailable&&t.row.masking_alias&&t.row.masking_alias.name&&e(p)});var m=I(f,2),h=e=>{{let n=A(()=>JM(`model settings for `+t.row.display_name,KM(t.row.access))),r=A(()=>qM(KM(t.row.access)));wk(e,{get label(){return R(n)},get class(){return`table-icon-btn ${R(r)??``}`},onclick:()=>lN.openVirtualModelEditModel(t.row),children:(e,t)=>{J(e,{get icon(){return su},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(m,e=>{lN.virtualModelsAvailable&&!t.row.masking_alias&&e(h)}),D(n),V(e,n)};U(E,e=>{t.row.is_alias?e(ee):e(te,-1)}),D(T),D(a),L((e,n)=>{K(a,`id`,e),G(a,1,n,`svelte-1iynym`),H(u,t.row.display_name)},[()=>WM(t.row)||void 0,()=>Ni(VM(t.row))]),V(e,a),k()}Br([`click`]);var mP={headerLines:[`Modes`],value:e=>(e.model?.metadata?.modes??[]).join(`, `)||`-`};function hP(e,t){return{headerLines:e,class:`col-price`,value:t}}var gP=hP([`Input / Output ($/MTok)`],(e,t)=>gf(t?.input_per_mtok)+` / `+gf(t?.output_per_mtok)),_P={all:[gP],text_generation:[mP,gP,hP([`Cached $/MTok`],(e,t)=>gf(t?.cached_input_per_mtok))],embedding:[hP([`Input`,`$/MTok`],(e,t)=>gf(t?.input_per_mtok))],image:[hP([`$/Image`],(e,t)=>_f(t?.per_image))],audio:[hP([`$/Second`],(e,t)=>_f(t?.per_second_input)),hP([`$/Character`],(e,t)=>_f(t?.per_character_input))],video:[hP([`$/Second (In)`],(e,t)=>_f(t?.per_second_input)),hP([`$/Second (Out)`],(e,t)=>_f(t?.per_second_output))],utility:[hP([`$/Page`],(e,t)=>_f(t?.per_page)),hP([`$/Request`],(e,t)=>_f(t?.per_request))]};function vP(e){return _P[e]||_P.all}function yP(e){return vP(e).length+2}var bP=B(`
            `),xP=B(` `,1),SP=B(``),CP=B(` `),wP=B(` `),TP=B(`
            `),EP=B(`
            `),DP=B(`
            Model
            `);function OP(e,t){O(t,!0);let n=A(()=>Hf.activeCategory||`all`),r=A(()=>vP(R(n))),i=A(()=>yP(R(n)));var a=DP(),o=P(a),s=P(o),c=P(s),l=I(P(c));W(l,17,()=>R(r),ii,(e,t)=>{var n=SP();W(n,21,()=>R(t).headerLines,ii,(e,t,n)=>{var r=xP(),i=F(r),a=e=>{V(e,bP())};U(i,e=>{n>0&&e(a)});var o=I(i,1,!0);L(()=>H(o,R(t))),V(e,r)}),D(n),L(()=>G(n,1,Ni(R(t).class),`svelte-1911hy6`)),V(e,n)});var u=I(l);PN(P(u),{}),D(u),D(c),D(s),W(I(s),17,()=>lN.filteredDisplayModelGroups,e=>e.key,(e,t)=>{var n=EP(),a=P(n),o=P(a),s=P(o),c=P(s),l=P(c),u=P(l),d=P(u,!0);D(u);var f=I(u,2),p=e=>{var n=CP(),r=P(n,!0);D(n),L(()=>H(r,`(`+R(t).type_label+`)`)),V(e,n)};U(f,e=>{R(t).type_label&&e(p)});var m=I(f,2),h=e=>{var n=wP(),r=P(n,!0);D(n),L(()=>H(r,R(t).item_count_label)),V(e,n)};U(m,e=>{R(t).item_count_label&&e(h)}),D(l);var g=I(l,2),_=e=>{var n=TP(),r=P(n,!0);D(n),L(()=>H(r,R(t).access_summary)),V(e,n)};U(g,e=>{R(t).access_summary&&e(_)}),D(c);var v=I(c,2),y=P(v),b=e=>{MN(e,{get row(){return R(t)}})};U(y,e=>{R(t).access.selector&&e(b)});var x=I(y,2),S=e=>{{let n=A(()=>AN.modelPricingButtonLabel(`provider pricing for `+R(t).display_name,AN.hasProviderPricingOverride(R(t)))),r=A(()=>AN.modelPricingButtonClass(AN.hasProviderPricingOverride(R(t))));wk(e,{get label(){return R(n)},get class(){return`table-icon-btn ${R(r)??``}`},onclick:()=>AN.openProviderPricingOverrideEdit(R(t)),children:(e,t)=>{J(e,{get icon(){return Ul},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(x,e=>{AN.modelPricingOverridesAvailable&&R(t).provider_name&&e(S)});var C=I(x,2),w=e=>{{let n=A(()=>Z.rateLimitGaugeTitle(`provider `+R(t).display_name,Z.rateLimitGaugeClassForProvider(R(t)))),r=A(()=>Z.rateLimitGaugeClassForProvider(R(t)));wk(e,{get label(){return R(n)},get class(){return`table-icon-btn ${R(r)??``}`},onclick:()=>Z.openRateLimitInspectorForProvider(R(t)),children:(e,t)=>{J(e,{get icon(){return Yl},class:`table-icon-svg`})},$$slots:{default:!0}})}},T=A(()=>Z.rateLimitsEnabled()&&R(t).provider_name);U(C,e=>{R(T)&&e(w)});var E=I(C,2),ee=e=>{{let n=A(()=>JM(`provider access for `+R(t).display_name,KM(R(t).access))),r=A(()=>qM(KM(R(t).access)));wk(e,{get label(){return R(n)},get class(){return`table-icon-btn ${R(r)??``}`},onclick:()=>lN.openProviderOverrideEdit(R(t)),children:(e,t)=>{J(e,{get icon(){return su},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(E,e=>{lN.virtualModelsAvailable&&R(t).access.selector&&e(ee)}),D(v),D(s),D(o),D(a),W(I(a),17,()=>R(t).rows,e=>e.key,(e,t)=>{pP(e,{get row(){return R(t)},get columns(){return R(r)}})}),D(n),L(()=>{K(o,`colspan`,R(i)),H(d,R(t).display_name)}),V(e,n)}),D(o),D(a),V(e,a),k()}var kP=B(``);function AP(e,t){let n=q(t,`enabled`,3,!1),r=q(t,`label`,3,``),i=q(t,`disabled`,3,!1),a=q(t,`restricted`,3,!1);var o=kP();let s;var c=I(P(o),2),l=P(c,!0);D(c),D(o),L(()=>{s=G(o,1,`alias-toggle`,null,s,{enabled:n(),restricted:a()}),o.disabled=i(),K(o,`aria-label`,(n()?`Disable `:`Enable `)+r()),H(l,t.text??(n()?`Enabled`:`Disabled`))}),z(`click`,o,function(...e){t.onclick?.apply(this,e)}),V(e,o)}Br([`click`]);var jP=B(``),MP=B(`
            `);function NP(e,t){O(t,!0);let n=q(t,`model`,15,``),r=q(t,`weight`,15),i=q(t,`id`,3,void 0),a=q(t,`placeholder`,3,`openai/gpt-4o`),o=q(t,`showRemove`,3,!0);var s=MP(),c=P(s);ea(c);var l=I(c,2),u=e=>{var t=jP();ea(t),L(()=>t.disabled=lN.vmFormManaged),la(t,r),V(e,t)},d=A(()=>lN.vmFormShowWeights());U(l,e=>{R(d)&&e(u)});var f=I(l,2),p=e=>{wk(e,{label:`Remove target`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,get onclick(){return t.onremove},get disabled(){return lN.vmFormManaged},children:(e,t)=>{J(e,{get icon(){return Eu},class:`table-icon-svg`})},$$slots:{default:!0}})};U(f,e=>{o()&&e(p)}),D(s),L(()=>{K(c,`id`,i()),K(c,`placeholder`,a()),c.disabled=lN.vmFormManaged}),la(c,n),V(e,s),k()}var PP=B(`

            `),FP=B(`adaptive lets the registered routing extension pick the target per - request.`,1),IP=B(`Add one target to make this a redirect/alias, or two or more to load - balance across them, then pick a strategy: round_robin rotates across targets - (weight biases the share) and cost always routes to the cheapest available - target. Leave Targets empty to make it only an access policy on the Source selector. The selector uses / for all providers and - models, for one provider, or for one model. user_paths is - matched against the effective request user_path: the managed API key user_path when present, otherwise the configured user path request header.`,1),LP=B(``),RP=B(`

            This virtual model is defined in configuration (config.yaml / VIRTUAL_MODELS) and is read-only here. Edit your configuration to change it.

            `),zP=B(``),BP=B(``),VP=B(``),HP=B(`
            `,1),UP=B(``),WP=B(`Use / to allow every user path. Use a team path to restrict to that - subtree, or an unused path to make the selector unavailable.`,1),GP=B(``),KP=B(` Adds a fraction of measured inference time: 0.5 adds 50%. Streaming chunks are buffered - and released on the slowed timeline. Use 0 to override inherited slowdown, or leave empty - to inherit it; active values are 0.1–10.`,1),qP=B(` `),JP=B(`
            Targets
            `,1);function YP(e,t){O(t,!0);let n=lN;On(()=>{n.vmFormOpen&&Td.ensureLoaded()});{let t=e=>{eD(e,{copyId:`virtual-model-help-copy`,label:`virtual model help`,get open(){return n.vmFormHelpOpen},set open(e){n.vmFormHelpOpen=e},title:e=>{var t=PP(),r=P(t,!0);D(t),L(()=>H(r,n.vmFormDisplayName||n.vmForm.source||`Virtual model`)),V(e,t)},help:e=>{Ve();var t=IP(),n=I(F(t),7),r=e=>{var t=FP();Ve(),V(e,t)},i=A(()=>Td.virtualModelStrategies().includes(`adaptive`));U(n,e=>{R(i)&&e(r)});var a=I(n,8);a.textContent=`{provider_name}/`;var o=I(a,2);o.textContent=`{provider_name}/{model}`,Ve(7),V(e,t)},$$slots:{title:!0,help:!0}})},r=e=>{var t=Xr(),r=F(t),i=e=>{var t=LP();L(()=>t.disabled=n.vmDeleting||n.vmSubmitting),z(`click`,t,()=>n.deleteVirtualModel()),V(e,t)};U(r,e=>{n.vmFormHasExisting&&!n.vmFormManaged&&e(i)}),V(e,t)},i=A(()=>n.vmDeleting||n.vmFormManaged),a=A(()=>n.vmFormMode===`edit`?`Save`:`Create`),o=A(()=>n.vmFormMode===`edit`?pu:lu);OA(e,{get open(){return n.vmFormOpen},ariaLabel:`Virtual model editor`,get error(){return n.vmFormError},get submitting(){return n.vmSubmitting},get submitDisabled(){return R(i)},get submitLabel(){return R(a)},get submitIcon(){return R(o)},onclose:()=>n.closeVirtualModelForm(),onsubmit:()=>n.submitVirtualModelForm(),header:t,extraActions:r,children:(e,t)=>{var r=JP(),i=F(r),a=e=>{V(e,RP())};U(i,e=>{n.vmFormManaged&&e(a)});var o=I(i,2);AA(o,{id:`virtual-model-source`,label:`Source`,children:(e,t)=>{var r=zP();ea(r),L(()=>r.disabled=n.vmFormSourceLocked||n.vmFormManaged),la(r,()=>n.vmForm.source,e=>n.vmForm.source=e),V(e,r)},$$slots:{default:!0}});var s=I(o,2);W(s,21,()=>Hf.models,e=>lM(e),(e,t)=>{var n=BP(),r=P(n,!0);D(n);var i={};L((e,t)=>{H(r,e),i!==(i=t)&&(n.value=(n.__value=t)??``)},[()=>lM(R(t)),()=>lM(R(t))]),V(e,n)}),D(s);var c=I(s,2),l=I(P(c),2);{let e=A(()=>n.vmFormHasPrimaryTarget());NP(l,{id:`virtual-model-target`,get showRemove(){return R(e)},onremove:()=>n.removePrimaryTarget(),get model(){return n.vmForm.target_model},set model(e){n.vmForm.target_model=e},get weight(){return n.vmForm.target_weight},set weight(e){n.vmForm.target_weight=e}})}var u=I(l,2);W(u,17,()=>n.vmForm.targets,ii,(e,t,r)=>{NP(e,{placeholder:`groq/llama`,onremove:()=>n.removeVmTarget(r),get model(){return R(t).model},set model(e){R(t).model=e},get weight(){return R(t).weight},set weight(e){R(t).weight=e}})});var d=I(u,2),f=P(d);J(P(f),{get icon(){return lu},class:`form-action-icon`}),Ve(2),D(f),D(d),D(c);var p=I(c,2),m=e=>{var t=HP(),r=F(t);AA(r,{id:`virtual-model-strategy`,label:`Load-balancing strategy`,children:(e,t)=>{var r=VP();W(r,21,()=>n.vmStrategyOptions(),e=>e.value,(e,t)=>{var n=BP(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(r),L(()=>r.disabled=n.vmFormManaged),Ui(r,()=>n.vmForm.strategy,e=>n.vmForm.strategy=e),V(e,r)},$$slots:{default:!0}});var i=I(r,2),a=P(i),o=P(a);ea(o),Ve(2),D(a),D(i),L(()=>o.disabled=n.vmFormManaged),ua(o,()=>n.vmForm.session_affinity,e=>n.vmForm.session_affinity=e),V(e,t)},h=A(()=>n.vmFormShowStrategy());U(p,e=>{R(h)&&e(m)});var g=I(p,2),_=P(g);eD(_,{copyId:`virtual-model-user-paths-help`,label:`user paths help`,get open(){return n.vmFormUserPathsHelpOpen},set open(e){n.vmFormUserPathsHelpOpen=e},title:e=>{V(e,UP())},help:e=>{Ve();var t=WP();Ve(2),V(e,t)},$$slots:{title:!0,help:!0}});var v=I(_,2);ut(v),K(v,`placeholder`,`/ -/team/alpha -/non-existing`),D(g);var y=I(g,2);AA(y,{id:`virtual-model-description`,label:`Description`,children:(e,t)=>{var r=GP();ut(r),L(()=>r.disabled=n.vmFormManaged),la(r,()=>n.vmForm.description,e=>n.vmForm.description=e),V(e,r)},$$slots:{default:!0}});var b=I(y,2),x=e=>{AA(e,{id:`virtual-model-slowdown`,label:`Slowdown (extra inference time)`,children:(e,t)=>{var r=KP(),i=F(r);ea(i),Ve(2),L(()=>i.disabled=n.vmFormManaged),la(i,()=>n.vmForm.slowdown,e=>n.vmForm.slowdown=e),V(e,r)},$$slots:{default:!0}})},S=A(()=>n.vmFormSupportsSlowdown());U(b,e=>{R(S)&&e(x)});var C=I(b,2),w=P(C),T=e=>{var t=qP(),r=P(t,!0);D(t),L(()=>H(r,`Default enabled: `+(n.vmFormDefaultEnabled?`yes`:`no`)+` · Effective now: `+(n.vmFormEffectiveEnabled?`yes`:`no`))),V(e,t)};U(w,e=>{n.vmFormMode===`edit`&&e(T)});var E=I(w,2),ee=P(E);{let e=A(()=>n.vmFormToggleRestricted()),t=A(()=>n.vmFormToggleLabel());AP(ee,{get enabled(){return n.vmForm.enabled},get restricted(){return R(e)},label:`virtual model`,get disabled(){return n.vmFormManaged},get text(){return R(t)},onclick:()=>{n.vmFormManaged||(n.vmForm.enabled=!n.vmForm.enabled)}})}D(E),D(C),L(()=>{f.disabled=n.vmFormManaged,v.disabled=n.vmFormManaged}),z(`click`,f,()=>n.addVmTarget()),la(v,()=>n.vmForm.user_paths,e=>n.vmForm.user_paths=e),V(e,r)},$$slots:{header:!0,extraActions:!0,default:!0}})}k()}Br([`click`]);var XP=B(`

            Pricing override

            `,1),ZP=B(``),QP=B(``),$P=B(``),eF=B(``),tF=B(`
            `),nF=B(`
            Tiered pricing exists for this override and will be preserved. Tier editing can be added - without a database migration.
            `),rF=B(`
            No pricing fields set.
            `),iF=B(`
            `),aF=B(`

            Currency is USD. Saved fields override model registry and config.yaml pricing for this - selector; unset fields continue to inherit.

            Price Type USD Source
            `,1);function oF(e,t){O(t,!0);let n=AN;OA(e,{get open(){return n.modelPricingOverrideFormOpen},ariaLabel:`Model pricing editor`,dialogClass:`model-pricing-editor`,get error(){return n.modelPricingOverrideError},get submitting(){return n.modelPricingOverrideSubmitting},submitLabel:`Save Pricing`,onclose:()=>n.closeModelPricingOverrideForm(),onsubmit:()=>n.submitModelPricingOverrideForm(),header:e=>{var t=XP(),r=I(F(t),2),i=P(r,!0);D(r),L(()=>H(i,n.modelPricingOverrideFormDisplayName||n.modelPricingOverrideForm.selector||`Pricing`)),V(e,t)},extraActions:e=>{var t=Xr(),r=F(t),i=e=>{var t=ZP();L(()=>t.disabled=n.modelPricingOverrideSubmitting),z(`click`,t,()=>n.deleteModelPricingOverride()),V(e,t)};U(r,e=>{n.modelPricingOverrideFormHasExistingOverride&&e(i)}),V(e,t)},children:(e,t)=>{var r=aF(),i=F(r),a=P(i);AA(a,{id:`model-pricing-override-selector`,label:`Selector`,children:(e,t)=>{var r=QP();ea(r),la(r,()=>n.modelPricingOverrideForm.selector,e=>n.modelPricingOverrideForm.selector=e),V(e,r)},$$slots:{default:!0}});var o=I(a,2),s=e=>{AA(e,{id:`model-pricing-override-scope`,label:`Scope`,children:(e,t)=>{var r=eF();W(r,21,()=>n.modelPricingOverrideFormScopeOptions,e=>e.value,(e,t)=>{var n=$P(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(r),z(`change`,r,()=>n.setModelPricingOverrideScope(n.modelPricingOverrideFormScope)),Ui(r,()=>n.modelPricingOverrideFormScope,e=>n.modelPricingOverrideFormScope=e),V(e,r)},$$slots:{default:!0}})};U(o,e=>{n.modelPricingOverrideFormScopeOptions.length>1&&e(s)}),D(i);var c=I(i,4);W(c,21,()=>n.modelPricingOverrideRows,e=>e.id,(e,t,r)=>{var i=tF(),a=P(i),o=P(a),s=I(o,2);W(s,21,()=>n.availablePricingFieldOptions(R(t)),e=>e.value,(e,t)=>{var n=$P(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).group+` - `+R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(s),D(a);var c=I(a,2),l=P(c),u=I(l,2);ea(u),D(c);var d=I(c,2);{let e=A(()=>`Remove `+n.pricingFieldLabel(R(t).field));wk(d,{get label(){return R(e)},class:`table-action-btn-danger table-icon-btn pricing-override-remove-row`,onclick:()=>n.removeModelPricingOverrideRow(R(t)),children:(e,t)=>{J(e,{get icon(){return Nu},class:`table-icon-svg`})},$$slots:{default:!0}})}D(i),L(()=>{K(o,`for`,`pricing-type-`+R(t).id),K(s,`id`,`pricing-type-`+R(t).id),K(l,`for`,`pricing-value-`+R(t).id),K(u,`id`,`pricing-value-`+R(t).id)}),Ui(s,()=>R(t).field,e=>R(t).field=e),la(u,()=>R(t).value,e=>R(t).value=e),V(e,i)}),D(c);var l=I(c,2),u=P(l);J(P(u),{get icon(){return lu},class:`form-action-icon`}),Ve(2),D(u),D(l);var d=I(l,2),f=e=>{V(e,nF())};U(d,e=>{n.modelPricingOverrideFormPreservedTiers.length>0&&e(f)});var p=I(d,2),m=I(P(p),2),h=e=>{V(e,rF())},g=A(()=>n.modelPricingEffectivePreviewRows().length===0);U(m,e=>{R(g)&&e(h)}),W(I(m,2),17,()=>n.modelPricingEffectivePreviewRows(),e=>e.field,(e,t)=>{var n=iF(),r=P(n),i=P(r,!0);D(r);var a=I(r,2),o=P(a,!0);D(a);var s=I(a,2),c=P(s,!0);D(s),D(n),L(e=>{H(i,R(t).label),H(o,e),H(c,R(t).source)},[()=>R(t).value===null||R(t).value===void 0?`-`:_f(Number(R(t).value))]),V(e,n)}),D(p),z(`click`,u,()=>n.addModelPricingOverrideRow()),V(e,r)},$$slots:{header:!0,extraActions:!0,default:!0}}),k()}Br([`click`,`change`]);var sF=B(`

            Failover mapping

            `,1),cF=B(``),lF=B(`

            This failover mapping is defined in configuration and is read-only here.

            `),uF=B(``),dF=B(`
            `),fF=B(`
            `,1),pF=B(`
            `);function mF(e,t){O(t,!0);{let t=e=>{var t=sF(),n=I(F(t),2),r=P(n,!0);D(n),L(()=>H(r,Q.failoverForm.source||`Failover`)),V(e,t)},n=e=>{var t=Xr(),n=F(t),r=e=>{var t=cF();L(()=>t.disabled=Q.failoverSaving||Q.failoverGenerating),z(`click`,t,()=>Q.deleteFailoverRule()),V(e,t)};U(n,e=>{Q.failoverFormMode===`edit`&&!Q.failoverFormManaged&&e(r)}),V(e,t)},r=A(()=>Q.failoverGenerating||Q.failoverFormManaged);OA(e,{get open(){return Q.failoverFormOpen},ariaLabel:`Failover editor`,get error(){return Q.failoverError},get submitting(){return Q.failoverSaving},get submitDisabled(){return R(r)},submitLabel:`Save`,onclose:()=>Q.closeFailoverForm(),onsubmit:()=>Q.submitFailoverForm(),header:t,extraActions:n,children:(e,t)=>{var n=pF(),r=P(n),i=e=>{V(e,lF())};U(r,e=>{Q.failoverFormManaged&&e(i)});var a=I(r,2);W(a,21,()=>Hf.models,ii,(e,t)=>{var n=uF(),r=P(n,!0);D(n);var i={};L((e,t)=>{H(r,e),i!==(i=t)&&(n.value=(n.__value=t)??``)},[()=>lM(R(t)),()=>lM(R(t))]),V(e,n)}),D(a);var o=I(a,2);AA(o,{id:`failover-target`,label:`Fallback models`,children:(e,t)=>{var n=fF(),r=F(n),i=P(r),a=P(i);ea(a);var o=I(a,2),s=e=>{wk(e,{label:`Remove fallback model`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Q.removePrimaryFailoverTarget(),get disabled(){return Q.failoverFormManaged},children:(e,t)=>{J(e,{get icon(){return Eu},class:`table-icon-svg`})},$$slots:{default:!0}})};U(o,e=>{Q.failoverForm.target_model&&e(s)}),D(i),W(I(i,2),17,()=>Q.failoverForm.targets,ii,(e,t,n)=>{var r=dF(),i=P(r);ea(i),wk(I(i,2),{label:`Remove fallback model`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Q.removeFailoverTarget(n),get disabled(){return Q.failoverFormManaged},children:(e,t)=>{J(e,{get icon(){return Eu},class:`table-icon-svg`})},$$slots:{default:!0}}),D(r),L(()=>i.disabled=Q.failoverFormManaged),la(i,()=>R(t).model,e=>R(t).model=e),V(e,r)}),D(r);var c=I(r,2),l=P(c);J(P(l),{get icon(){return lu},class:`form-action-icon`}),Ve(2),D(l);var u=I(l,2),d=P(u);J(d,{get icon(){return ju},class:`form-action-icon`});var f=I(d,2),p=P(f,!0);D(f),D(u),D(c),L(e=>{a.disabled=Q.failoverFormManaged,l.disabled=Q.failoverFormManaged||Q.failoverGenerating||Q.failoverSaving,u.disabled=e,H(p,Q.failoverGenerating?`Generating...`:`Generate automatically`)},[()=>Q.failoverFormManaged||Q.failoverGenerating||Q.failoverSaving||!Q.failoverEnabled()]),la(a,()=>Q.failoverForm.target_model,e=>Q.failoverForm.target_model=e),z(`click`,l,()=>Q.addFailoverTarget()),z(`click`,u,()=>Q.generateFailoverForForm()),V(e,n)},$$slots:{default:!0}});var s=I(o,2),c=P(s);AP(P(c),{get enabled(){return Q.failoverForm.enabled},label:`failover mapping`,get disabled(){return Q.failoverFormManaged},onclick:()=>{Q.failoverFormManaged||(Q.failoverForm.enabled=!Q.failoverForm.enabled)}}),D(c),D(s),D(n),V(e,n)},$$slots:{header:!0,extraActions:!0,default:!0}})}k()}Br([`click`]);var hF=B(` `),gF=B(`
            `),_F=B(``),vF=B(`
            `),yF=B(`

            No failover suggestions were generated.

            `),bF=B(`

            No failover drafts match the filter.

            `),xF=B(``),SF=B(``);function CF(e,t){O(t,!0),Rd(e,{get open(){return Q.failoverDraftsOpen},variant:`editor`,onclose:()=>Q.closeFailoverDraftsModal(),children:(e,t)=>{var n=SF(),r=P(n),i=I(P(r),2),a=P(i),o=e=>{var t=hF(),n=P(t,!0);D(t),L(e=>H(n,e),[()=>Q.failoverDraftCountLabel()]),V(e,t)};U(a,e=>{Q.failoverGeneratedRules.length>0&&e(o)}),Pd(I(a,2),{label:`Close failover drafts`,onclick:()=>Q.closeFailoverDraftsModal(),get disabled(){return Q.failoverDraftSaving}}),D(i),D(r);var s=I(r,2),c=e=>{Sk(e,{label:`Generating failover drafts...`,class:`failover-drafts-loading`})};U(s,e=>{Q.failoverGenerating&&e(c)});var l=I(s,2),u=e=>{var t=gF(),n=P(t);DO(n,{placeholder:`Filter failover drafts...`,label:`Filter failover drafts`,get value(){return Q.failoverDraftFilter},set value(e){Q.failoverDraftFilter=e}});var r=I(n,2),i=P(r);J(i,{get icon(){return Ll},class:`form-action-icon`});var a=I(i,2),o=P(a,!0);D(a),D(r),D(t),L(e=>{r.disabled=Q.failoverDraftSaving,H(o,e)},[()=>Q.allFailoverDraftsSelected()?`Deselect all`:`Select all`]),z(`click`,r,()=>Q.toggleAllFailoverDrafts()),V(e,t)};U(l,e=>{!Q.failoverGenerating&&Q.failoverGeneratedRules.length>0&&e(u)});var d=I(l,2),f=e=>{var t=vF();W(t,21,()=>Q.filteredFailoverDrafts(),e=>`failover-draft:`+Q.failoverPrimaryModel(e),(e,t)=>{var n=_F(),r=P(n);ea(r);var i=I(r,2),a=P(i),o=P(a,!0);D(a);var s=I(a,2),c=P(s,!0);D(s),D(i),D(n),L((e,t,n,i)=>{na(r,e),r.disabled=Q.failoverDraftSaving,K(r,`aria-label`,t),H(o,n),H(c,i)},[()=>Q.failoverDraftSelected(R(t)),()=>`Select failover draft for `+Q.failoverPrimaryModel(R(t)),()=>Q.failoverPrimaryModel(R(t)),()=>Q.failoverTargetLabel(R(t))]),z(`change`,r,e=>Q.setFailoverDraftSelected(R(t),e.currentTarget.checked)),V(e,n)}),D(t),V(e,t)},p=A(()=>!Q.failoverGenerating&&Q.filteredFailoverDrafts().length>0);U(d,e=>{R(p)&&e(f)});var m=I(d,2),h=e=>{V(e,yF())};U(m,e=>{!Q.failoverGenerating&&Q.failoverGeneratedRules.length===0&&!Q.failoverError&&e(h)});var g=I(m,2),_=e=>{V(e,bF())},v=A(()=>!Q.failoverGenerating&&Q.failoverGeneratedRules.length>0&&Q.filteredFailoverDrafts().length===0);U(g,e=>{R(v)&&e(_)});var y=I(g,2),b=e=>{var t=xF(),n=P(t,!0);D(t),L(()=>H(n,Q.failoverError)),V(e,t)};U(y,e=>{Q.failoverError&&e(b)});var x=I(y,2),S=P(x),C=I(S,2),w=P(C);J(w,{get icon(){return pu},class:`form-action-icon`});var T=I(w,2),E=P(T,!0);D(T),D(C),D(x),D(n),L(e=>{S.disabled=Q.failoverDraftSaving,C.disabled=e,H(E,Q.failoverDraftSaving?`Saving...`:`Save selected`)},[()=>Q.failoverGenerating||Q.failoverDraftSaving||Q.selectedFailoverDraftCount()===0]),z(`click`,S,()=>Q.closeFailoverDraftsModal()),z(`click`,C,()=>Q.saveSelectedFailoverDrafts()),V(e,n)},$$slots:{default:!0}}),k()}Br([`click`,`change`]);var wF=B(`
            Rate limit management is unavailable.
            `),TF=B(` Add`,1),EF=B(`

            `),DF=B(`

            No rules.

            `),OF=B(` Edit`,1),kF=B(`
            `),AF=B(`
            `),jF=B(`

            `),MF=B(``),NF=B(``);function PF(e,t){O(t,!0);function n(){Y.dialogOpen||Z.closeRateLimitInspector()}Rd(e,{get open(){return Z.rateLimitInspectorOpen},variant:`editor`,onclose:n,children:(e,t)=>{var n=NF(),r=P(n),i=P(r),a=I(P(i),2),o=P(a),s=P(o,!0);D(o),D(a),D(i),Pd(I(i,2),{label:`Close rate limits inspector`,onclick:()=>Z.closeRateLimitInspector()}),D(r);var c=I(r,2),l=e=>{Sk(e,{label:`Loading rate limits...`})},u=e=>{V(e,wF())},d=e=>{var t=Xr();W(F(t),17,()=>Z.rateLimitInspectorSections(),e=>e.key,(e,t)=>{var n=jF(),r=P(n),i=P(r),a=P(i,!0);D(i);var o=I(i,2);{let e=A(()=>`Add `+R(t).title.toLowerCase());wk(o,{get label(){return R(e)},class:`budget-action-btn`,onclick:()=>Z.openRateLimitFormFromInspector(R(t).scope,R(t).subject),children:(e,t)=>{var n=TF();J(F(n),{get icon(){return lu},class:`table-icon-svg`}),Ve(2),V(e,n)},$$slots:{default:!0}})}D(r);var s=I(r,2),c=e=>{var n=EF(),r=P(n,!0);D(n),L(()=>H(r,R(t).hint)),V(e,n)};U(s,e=>{R(t).hint&&e(c)});var l=I(s,2),u=e=>{V(e,DF())},d=e=>{var n=AF();W(n,21,()=>R(t).items,e=>Z.rateLimitKey(e),(e,t)=>{var n=kF(),r=P(n),i=P(r),a=P(i),o=P(a,!0);D(a);var s=I(a,2),c=P(s),l=P(c);{let e=A(()=>Z.rateLimitIsConcurrent(R(t))?El:Tu);J(l,{get icon(){return R(e)},class:`budget-period-icon`})}var u=I(l,2),d=P(u,!0);D(u),D(c),D(s);var f=I(s,2),p=P(f),m=P(p),h=P(m,!0);D(m);var g=I(m,2),_=P(g,!0);D(g),D(p);var v=I(p,2),y=P(v),b=e=>{wk(e,{label:`Edit rate limit`,class:`budget-action-btn`,onclick:()=>Z.openRateLimitFormFromInspector(null,null,R(t)),children:(e,t)=>{var n=OF();J(F(n),{get icon(){return su},class:`budget-action-icon`}),Ve(2),V(e,n)},$$slots:{default:!0}})},x=A(()=>!Z.rateLimitIsReadOnly(R(t)));U(y,e=>{R(x)&&e(b)}),D(v),D(f),D(i),D(r),D(n),L((e,t,r,i,a,s,c,l)=>{G(n,1,`budget-row ${e??``}`),Bi(n,t),K(n,`title`,r),H(o,i),H(d,a),H(h,s),K(g,`title`,c),H(_,l)},[()=>Z.rateLimitPressureClass(R(t)),()=>Z.rateLimitPressureStyle(R(t)),()=>Z.rateLimitPressurePercent(R(t))+`% of the most constrained cap used`,()=>Z.rateLimitSubject(R(t)),()=>Z.rateLimitPeriodLabel(R(t)),()=>Z.rateLimitInspectorSummary(R(t)),()=>Z.rateLimitIsReadOnly(R(t))?`Declared in configuration; read-only in the dashboard`:`Managed via dashboard or admin API`,()=>Z.rateLimitSourceLabel(R(t))]),V(e,n)}),D(n),V(e,n)};U(l,e=>{R(t).items.length===0?e(u):e(d,-1)}),D(n),L(()=>H(a,R(t).title)),V(e,n)}),V(e,t)};U(c,e=>{Z.rateLimitsLoading?e(l):Z.rateLimitsAvailable?e(d,-1):e(u,1)});var f=I(c,2),p=P(f),m=I(p,2),h=e=>{var t=MF();z(`click`,t,()=>{Z.closeRateLimitInspector(),Gu.navigate(`rate-limits`)}),V(e,t)},g=A(()=>Z.rateLimitsEnabled());U(m,e=>{R(g)&&e(h)}),D(f),D(n),L(()=>H(s,Z.rateLimitInspector.title)),z(`click`,p,()=>Z.closeRateLimitInspector()),V(e,n)},$$slots:{default:!0}}),k()}Br([`click`]);var FF=B(`
            models
            `),IF=B(`
            Virtual models feature is unavailable.
            `),LF=B(`
            `),RF=B(``),zF=B(`
            `),BF=B(``),VF=B(`
            `),HF=B(`

            No models registered.

            `),UF=B(`

            No models in this category.

            `),WF=B(`

            No models match your filter.

            `),GF=B(`
            `);function KF(e,t){O(t,!0),On(()=>{Y.refreshTick,Gu.page===`models`&&(lN.fetchVirtualModels(),AN.fetchModelPricingOverrides(),Q.fetchFailoverRules(),Z.fetchRateLimitsPage())}),On(()=>{let e=lN.filteredDisplayModels.length;return wr(()=>lN.restartModelRendering(e)),()=>lN.stopModelRendering()});let n=A(()=>Y.needsAuth);var r=GF(),i=P(r),a=I(P(i),2),o=e=>{var t=FF(),n=P(t),r=P(n,!0);D(n),Ve(),D(t),L(()=>H(r,Hf.filter?lN.filteredDisplayModels.length+` / `+lN.displayModels.length:lN.displayModels.length)),V(e,t)};U(a,e=>{lN.displayModels.length>0&&e(o)}),D(i);var s=I(i,2);Wf(s,{});var c=I(s,2),l=e=>{V(e,IF())};U(c,e=>{!lN.virtualModelsAvailable&&!R(n)&&e(l)});var u=I(c,2),d=e=>{var t=LF(),n=P(t,!0);D(t),L(()=>H(n,lN.aliasError)),V(e,t)};U(u,e=>{lN.aliasError&&!R(n)&&e(d)});var f=I(u,2),p=e=>{var t=LF(),n=P(t,!0);D(t),L(()=>H(n,AN.modelPricingOverrideError)),V(e,t)};U(f,e=>{AN.modelPricingOverrideError&&!R(n)&&!AN.modelPricingOverrideFormOpen&&e(p)});var m=I(f,2),h=e=>{var t=zF();W(t,21,()=>Hf.categories,e=>e.category,(e,t)=>{var n=RF();let r;var i=P(n),a=P(i,!0);D(i);var o=I(i,2),s=P(o,!0);D(o),D(n),L(()=>{r=G(n,1,`category-tab svelte-scpjps`,null,r,{active:Hf.activeCategory===R(t).category}),H(a,R(t).display_name),H(s,R(t).count)}),z(`click`,n,()=>Hf.selectCategory(R(t).category)),V(e,n)}),D(t),V(e,t)};U(m,e=>{Hf.categories.length>0&&e(h)});var g=I(m,2),_=e=>{var t=VF(),n=P(t);DO(P(n),{placeholder:`Filter by provider, provider/model, alias, or owner...`,label:`Filter models by provider, provider/model, alias, or owner`,get value(){return Hf.filter},set value(e){Hf.filter=e}}),D(n);var r=I(n,2),i=P(r),a=e=>{var t=BF();J(P(t),{get icon(){return lu},class:`alias-create-icon`}),Ve(2),D(t),z(`click`,t,()=>lN.openVirtualModelCreate()),V(e,t)};U(i,e=>{lN.virtualModelsAvailable&&e(a)}),D(r),D(t),V(e,t)};U(g,e=>{(lN.displayModels.length>0||Hf.filter||lN.virtualModelsAvailable)&&e(_)});var v=I(g,2),y=e=>{{let t=A(()=>lN.modelLoadingText());Sk(e,{get label(){return R(t)},class:`models-loading-state`})}},b=A(()=>lN.modelsBusy()&&!R(n));U(v,e=>{R(b)&&e(y)});var x=I(v,2);YP(x,{});var S=I(x,2);oF(S,{});var C=I(S,2),w=e=>{OP(e,{})};U(C,e=>{(lN.displayModels.length>0||Hf.filter)&&e(w)});var T=I(C,2),E=e=>{V(e,HF())};U(T,e=>{lN.displayModels.length===0&&!Hf.loading&&!R(n)&&!Hf.filter&&(Hf.activeCategory===`all`||!Hf.activeCategory)&&e(E)});var ee=I(T,2),te=e=>{V(e,UF())};U(ee,e=>{lN.displayModels.length===0&&!Hf.loading&&!R(n)&&!Hf.filter&&Hf.activeCategory&&Hf.activeCategory!==`all`&&e(te)});var ne=I(ee,2),re=e=>{V(e,WF())};U(ne,e=>{lN.displayModels.length>0&&lN.filteredDisplayModels.length===0&&Hf.filter&&e(re)});var ie=I(ne,2);PF(ie,{});var ae=I(ie,2);Uj(ae,{});var oe=I(ae,2);mF(oe,{}),CF(I(oe,2),{}),D(r),V(e,r),k()}Br([`click`]);var qF=`draft-workflow-preview`;function JF(){return{scope_provider:``,scope_model:``,scope_user_path:``,name:``,description:``,features:{cache:!0,audit:!0,usage:!0,budget:!0,guardrails:!1,failover:!0},guardrails:[]}}function YF(){return{scope_provider:``,scope_model:``,scope_user_path:``}}function XF(e){return{ref:``,step:Number.isFinite(e)?e:10}}function ZF(e){let t=e==null?``:String(e).trim();if(t===``)return NaN;let n=Number(t);return Number.isFinite(n)?n:NaN}function QF(e,t,n){if(!e||typeof e!=`object`||Array.isArray(e))return n;let r=t.charAt(0).toUpperCase()+t.slice(1);for(let n of[t,r])if(Object.prototype.hasOwnProperty.call(e,n)&&e[n]!==null&&e[n]!==void 0)return e[n];return n}function $F(e,t){return!e||typeof e!=`object`||Array.isArray(e)?!1:[t,t.charAt(0).toUpperCase()+t.slice(1)].some(t=>Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==null&&e[t]!==void 0)}function eI(e){return{cache:!!QF(e,`cache`,!1),audit:!!QF(e,`audit`,!1),usage:!!QF(e,`usage`,!1),budget:QF(e,`budget`,!0)!==!1,guardrails:!!QF(e,`guardrails`,!1),failover:QF(e,`failover`,!0)!==!1}}function tI(e,t){let n=eI(e),r=t||{},i=n.usage&&!!r.usage;return{cache:n.cache&&!!r.cache,audit:n.audit&&!!r.audit,usage:i,budget:i&&n.budget&&!!r.budget,guardrails:n.guardrails&&!!r.guardrails,failover:n.failover&&!!r.failover}}function nI(e,t){let n=e&&e.workflow_payload&&e.workflow_payload.features?e.workflow_payload.features:e&&e.features?e.features:{};return{...tI((e&&e.effective_features&&typeof e.effective_features==`object`&&!Array.isArray(e.effective_features)?e.effective_features:null)||n,t),failover:eI(n).failover}}function rI(e,t){return nI(e,t).failover?`On`:`Off`}function iI(e){return(Array.isArray(e&&e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:Array.isArray(e&&e.guardrails)?e.guardrails:[]).map(e=>({ref:String(e&&e.ref||``).trim(),step:ZF(e&&e.step)})).filter(e=>Number.isInteger(e.step)&&e.step>=0)}function aI(e,t){return nI(e,t).guardrails&&Array.isArray(e&&e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:[]}function oI(e){return String(e&&(e.scope_provider_name||e.scope_provider)||``).trim()}function sI(e){return String(e&&(e.provider_name||e.provider_type)||``).trim()}function cI(e,t){let n=new Set,r=String(t&&t.scope_provider||``).trim();return r&&n.add(r),(Array.isArray(e)?e:[]).forEach(e=>{let t=sI(e);t&&n.add(t)}),[...n].sort()}function lI(e,t,n){let r=String(t||``).trim(),i=new Set,a=String(n&&n.scope_provider||``).trim(),o=String(n&&n.scope_model||``).trim();return r&&r===a&&o&&i.add(o),(Array.isArray(e)?e:[]).forEach(e=>{if(r&&sI(e)!==r)return;let t=String(e&&e.model&&e.model.id||``).trim();t&&i.add(t)}),[...i].sort()}function uI(e){let t=String(e&&e.scope_type||``).trim();return t===`provider_model`?`Provider Name + Model`:t===`provider_model_path`?`Provider Name + Model + Path`:t===`provider_path`?`Provider Name + Path`:t===`path`?`Path`:t===`provider`?`Provider Name`:`Global`}function dI(e){return String(e&&e.scope_display||`global`).trim()||`global`}function fI(e){let t=String(e&&e.name||``).trim();if(t)return t;let n=dI(e);return n===`global`?`All models`:n}function pI(e){let t=String(e||``).trim();if(!t)return``;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`);for(let e of n){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function mI(e){if(pI(e))return``;let t=String(e||``).trim();if(!t)return``;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`),r=[];for(let e of n){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function hI(e){let t=e||JF(),n=String(t.scope_provider||``).trim(),r=mI(t.scope_user_path);return{scope_provider:n,scope_model:n?String(t.scope_model||``).trim():``,scope_user_path:r}}function gI(e){let t=String(e&&e.scope_provider||``).trim(),n=t?String(e&&e.scope_model||``).trim():``,r=mI(e&&e.scope_user_path);return!t&&!r?`global`:!t&&r?`path`:!n&&!r?`provider`:!n&&r?`provider_path`:r?`provider_model_path`:`provider_model`}function _I(e){let t=String(e&&e.scope_provider||``).trim(),n=t?String(e&&e.scope_model||``).trim():``,r=mI(e&&e.scope_user_path),i=gI({scope_provider:t,scope_model:n,scope_user_path:r});return i===`global`?`global`:i===`path`?r:i===`provider`?t:i===`provider_path`?t+` @ `+r:i===`provider_model_path`?t+`/`+n+` @ `+r:t+`/`+n}function vI(e,t){let n=t||YF(),r=oI(e&&e.scope),i=r?String(e&&e.scope&&e.scope.scope_model||``).trim():``,a=mI(e&&e.scope&&e.scope.scope_user_path);return r===String(n.scope_provider||``).trim()&&i===String(n.scope_model||``).trim()&&a===mI(n.scope_user_path)}function yI(e,t,n){let r=hI(t);return!(r.scope_provider!==``||r.scope_model!==``||r.scope_user_path!==``)&&!n?null:(Array.isArray(e)?e:[]).find(e=>vI(e,r))||null}function bI(e){return String(e&&e.scope_type||``).trim()!==`global`}function xI(e){let t=String(e||``).trim();return t?t.length<=14?t:t.slice(0,12)+`…`:`—`}function SI(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.description,e.scope_display,e.scope_type,oI(e&&e.scope),e.scope&&e.scope.scope_model,e.scope&&e.scope.scope_user_path,e.workflow_hash,...Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails.map(e=>e.ref):[]].some(e=>String(e||``).toLowerCase().includes(r)))}function CI(e,t){let n=e||JF(),r=hI(n),i=eI(n.features||{}),a=tI(i,t);a.failover=i.failover;let o=!!a.guardrails,s=o?iI(n):[];return{id:qF,scope_type:gI(r),scope_display:_I(r),scope:{scope_provider_name:r.scope_provider,scope_model:r.scope_model,...r.scope_user_path?{scope_user_path:r.scope_user_path}:{}},name:String(n.name||``).trim(),description:String(n.description||``).trim(),workflow_payload:{schema_version:1,features:{cache:!!a.cache,audit:!!a.audit,usage:!!a.usage,budget:!!a.budget,guardrails:o,failover:!!a.failover},guardrails:s}}}function wI({form:e,caps:t,workflows:n=[],formHydrated:r=!1,hydratedScope:i=null}){let a=e||JF(),o=String(a.scope_provider||``).trim(),s=o?String(a.scope_model||``).trim():``,c=mI(a.scope_user_path),l=eI(a.features||{}),u=tI(l,t),d=yI(n,a,r),f=d&&d.workflow_payload&&d.workflow_payload.features,p=$F(f,`failover`),m=p?QF(f,`failover`,!0)!==!1:null,h=i||YF(),g=String(h.scope_provider||``).trim()===o&&String(h.scope_model||``).trim()===s&&mI(h.scope_user_path)===mI(c),_=!!(t&&t.failover),v=_||!!r&&g&&Object.prototype.hasOwnProperty.call(l,`failover`)||!r&&!!d&&p,y=u.guardrails?(Array.isArray(a.guardrails)?a.guardrails:[]).map(e=>({ref:String(e&&e.ref||``).trim(),step:ZF(e&&e.step)})):[],b={scope_provider_name:o,scope_model:s,...c?{scope_user_path:c}:{},name:String(a.name||``).trim(),description:String(a.description||``).trim(),workflow_payload:{schema_version:1,features:{cache:!!u.cache,audit:!!u.audit,usage:!!u.usage,budget:!!u.budget,guardrails:!!u.guardrails},guardrails:y}};return v&&(b.workflow_payload.features.failover=!_&&!r&&d&&p?m:!!l.failover),b}function TI(e,{models:t=[],hydratedScope:n=null}={}){let r=n||YF(),i=String(r.scope_provider||``).trim(),a=String(r.scope_model||``).trim(),o=String(e&&(e.scope_provider_name||e.scope_provider)||``).trim(),s=String(e&&e.scope_model||``).trim();if(o&&!cI(t,r).includes(o)&&o!==i)return`Choose a registered provider name.`;if(s&&!o)return`Model selection requires a provider name.`;if(s){let e=lI(t,o,r),n=o===i&&s===a;if(!e.includes(s)&&!n)return`Choose a registered model for the selected provider name.`}let c=pI(e.scope_user_path);if(c)return c;let l=e.workflow_payload&&e.workflow_payload.features?e.workflow_payload.features:{},u=Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:[];if(!l.guardrails)return``;let d=new Set;for(let e of u){if(!e.ref)return`Each guardrail step needs a guardrail ref.`;if(!Number.isInteger(e.step)||e.step<0)return`Each guardrail step must use a non-negative integer step number.`;if(d.has(e.ref))return`Each guardrail ref may appear only once in a workflow.`;d.add(e.ref)}return``}var EI=new class{#e=j(N([]));get workflows(){return R(this.#e)}set workflows(e){M(this.#e,e,!0)}#t=j(!0);get available(){return R(this.#t)}set available(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}#r=j(``);get error(){return R(this.#r)}set error(e){M(this.#r,e,!0)}#i=j(``);get filter(){return R(this.#i)}set filter(e){M(this.#i,e,!0)}#a=j(!1);get formOpen(){return R(this.#a)}set formOpen(e){M(this.#a,e,!0)}#o=j(!1);get submitting(){return R(this.#o)}set submitting(e){M(this.#o,e,!0)}#s=j(``);get deactivatingID(){return R(this.#s)}set deactivatingID(e){M(this.#s,e,!0)}#c=j(``);get formError(){return R(this.#c)}set formError(e){M(this.#c,e,!0)}#l=j(!1);get formHydrated(){return R(this.#l)}set formHydrated(e){M(this.#l,e,!0)}#u=j(N(YF()));get hydratedScope(){return R(this.#u)}set hydratedScope(e){M(this.#u,e,!0)}#d=j(N([]));get guardrailRefs(){return R(this.#d)}set guardrailRefs(e){M(this.#d,e,!0)}#f=j(N(JF()));get form(){return R(this.#f)}set form(e){M(this.#f,e,!0)}#p=null;failoverVisible(){return Td.booleanFlag(`FAILOVER_ENABLED`,!0)}featureCaps(){return{cache:Td.cacheVisible(),audit:Td.auditVisible(),usage:Td.usageVisible(),budget:Td.budgetsVisible(),guardrails:Td.guardrailsVisible(),failover:this.failoverVisible()}}get filteredWorkflows(){return SI(this.workflows,this.filter)}providerOptions(){return cI(Hf.models,this.hydratedScope)}modelOptions(e){return lI(Hf.models,e,this.hydratedScope)}activeScopeMatch(){return yI(this.workflows,this.form,this.formHydrated)}submitMode(){return this.activeScopeMatch()?`save`:`create`}submitLabel(){return this.submitMode()===`save`?`Save`:`Create`}submittingLabel(){return this.submitMode()===`save`?`Saving...`:`Creating...`}preview(){return CI(this.form,this.featureCaps())}openCreate(e){if(this.formOpen=!0,this.submitting=!1,this.formError=``,!e){this.formHydrated=!1,this.hydratedScope=YF(),this.form=JF();return}this.formHydrated=!0,this.hydratedScope={scope_provider:oI(e.scope),scope_model:String(e.scope&&e.scope.scope_model||``).trim(),scope_user_path:String(e.scope&&e.scope.scope_user_path||``).trim()};let t=e.workflow_payload&&e.workflow_payload.features?eI(e.workflow_payload.features):nI(e,this.featureCaps()),n=Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails.map(e=>({ref:String(e&&e.ref||``).trim(),step:ZF(e&&e.step)})).filter(e=>Number.isInteger(e.step)&&e.step>=0):iI(e);this.form={scope_provider:oI(e.scope),scope_model:String(e.scope&&e.scope.scope_model||``),scope_user_path:String(e.scope&&e.scope.scope_user_path||``),name:String(e.name||``),description:String(e.description||``),features:{cache:!!t.cache,audit:!!t.audit,usage:!!t.usage,budget:!!t.budget,guardrails:!!t.guardrails,failover:!!t.failover},guardrails:n.map(e=>({ref:String(e&&e.ref||``),step:Number.isFinite(e&&e.step)?e.step:10}))}}closeForm(){this.formOpen=!1,this.submitting=!1,this.formError=``,this.formHydrated=!1,this.hydratedScope=YF(),this.form=JF()}setProvider(e){if(this.form.scope_provider=String(e||``).trim(),!this.form.scope_provider){this.form.scope_model=``;return}this.modelOptions(this.form.scope_provider).includes(String(this.form.scope_model||``).trim())||(this.form.scope_model=``)}addGuardrailStep(){let e=(Array.isArray(this.form.guardrails)?this.form.guardrails:[]).reduce((e,t)=>{let n=Number(t&&t.step);return Number.isFinite(n)?Math.max(e,n):e},0)+10;this.form.guardrails.push(XF(e))}removeGuardrailStep(e){Array.isArray(this.form.guardrails)&&this.form.guardrails.splice(e,1)}buildRequest(){return wI({form:this.form,caps:this.featureCaps(),workflows:this.workflows,formHydrated:this.formHydrated,hydratedScope:this.hydratedScope})}async fetchWorkflows(){this.#p&&this.#p.abort();let e=new AbortController;this.#p=e,this.loading=!0,this.error=``;let t=setTimeout(()=>e.abort(),1e4),n=await Tk(`/admin/workflows`,{label:`workflows`,options:{signal:e.signal}});if(clearTimeout(t),this.#p===e&&(this.#p=null,this.loading=!1,n.status!==`stale`)){if(n.status===`unavailable`){this.available=!1,this.workflows=[];return}if(n.result&&(this.available=!0),n.status===`error`){this.workflows=[],this.error=e.signal.aborted?`Loading workflows timed out.`:n.error;return}this.workflows=n.items}}async fetchGuardrailRefs(){let e=await Tk(`/admin/workflows/guardrails`,{label:`workflow guardrails`});e.status!==`stale`&&(this.guardrailRefs=e.items)}async fetchPage(){await Promise.all([Td.ensureLoaded(),this.fetchWorkflows(),this.fetchGuardrailRefs()])}async submitForm(){if(this.submitting)return;this.formError=``;let e=this.buildRequest(),t=TI(e,{models:Hf.models,hydratedScope:this.hydratedScope});if(t){this.formError=t;return}this.submitting=!0;try{let t=await Ek(`/admin/workflows`,`POST`,e,{label:`create workflow`,unavailableStatuses:[]});if(t.status===`stale`||t.result&&t.result.status===401)return;if(t.status===`error`){this.formError=t.error;return}of.success(`Workflow created and activated.`),this.closeForm(),this.fetchPage()}finally{this.submitting=!1}}async deactivate(e){let t=String(e&&e.id||``).trim();if(!t||this.deactivatingID||!bI(e))return;let n=fI(e);if(confirm(`Deactivate workflow "`+n+`"? Requests will fall back to the next active workflow for this scope.`)){this.deactivatingID=t;try{let e=await Ek(`/admin/workflows/`+encodeURIComponent(t)+`/deactivate`,`POST`,void 0,{label:`deactivate workflow`,unavailableStatuses:[]});if(e.status===`stale`||e.result&&e.result.status===401)return;if(e.status===`error`){of.error(e.error);return}of.success(`Workflow deactivated.`),this.fetchPage()}finally{this.deactivatingID=``}}}};function DI(e){let t=String(e??``),n=typeof navigator<`u`?navigator.clipboard:null;if(n&&typeof n.writeText==`function`)return n.writeText(t);let r=typeof document<`u`?document:null;if(!r||!r.body||typeof r.execCommand!=`function`)return Promise.reject(Error(`Clipboard API unavailable`));let i=r.createElement(`textarea`);i.value=t,i.setAttribute(`readonly`,``),i.style.position=`fixed`,i.style.top=`0`,i.style.left=`0`,i.style.opacity=`0`;try{if(r.body.appendChild(i),i.focus(),i.select(),i.setSelectionRange(0,i.value.length),!r.execCommand(`copy`))throw Error(`execCommand copy returned false`)}finally{i.parentNode&&i.parentNode.removeChild(i)}return Promise.resolve()}function OI({resetDelayMs:e=2e3,logPrefix:t}={}){let n=N({copied:!1,error:!1}),r=null;function i(){r!==null&&clearTimeout(r),r=null}function a(){i(),r=setTimeout(()=>{n.copied=!1,n.error=!1,r=null},e)}return{get copied(){return n.copied},get error(){return n.error},reset(){i(),n.copied=!1,n.error=!1},async copy(e,r){if(!(e==null||e===``)){i(),n.copied=!1,n.error=!1;try{await DI(typeof r==`function`?r(e):String(e)),n.copied=!0,n.error=!1}catch(e){console.error(t||`Failed to copy text:`,e),n.copied=!1,n.error=!0}a()}}}}var kI=B(``);function AI(e,t){O(t,!0);let n=q(t,`workflowID`,3,``),r=OI({logPrefix:`Failed to copy workflow ID:`});On(()=>{n(),r.reset()});let i=A(()=>r.error?`Unable to copy workflow ID`:r.copied?`Workflow ID copied`:`Copy workflow ID`),a=A(()=>n()?R(i)+` `+n():R(i));async function o(e){e.preventDefault(),n()&&await r.copy(n())}var s=kI();let c;var l=I(P(s),4),u=P(l,!0);D(l);var d=I(l,2);J(P(d),{get icon(){return Gl}}),D(d),D(s),L(()=>{c=G(s,1,`workflow-pipeline-meta mono svelte-1viff7o`,null,c,{"workflow-pipeline-meta-copied":r.copied,"workflow-pipeline-meta-error":r.error}),K(s,`title`,R(i)),K(s,`aria-label`,R(a)),H(u,n())}),z(`click`,s,o),V(e,s),k()}Br([`click`]);var jI=(e,t)=>{let n=()=>(t?.()).icon,r=()=>(t?.()).label,i=Et(()=>h((t?.()).variant,`workflow-node-feature`)),a=()=>(t?.()).state,o=()=>(t?.()).sub,s=()=>(t?.()).badge;var c=FI(),l=P(c),u=e=>{var t=MI();let r;J(P(t),{get icon(){return n()}}),D(t),L(()=>r=G(t,1,`workflow-node-icon svelte-nbptrg`,null,r,{"workflow-node-icon-endpoint":R(i)===`workflow-node-endpoint`})),V(e,t)};U(l,e=>{n()&&e(u)});var d=I(l,2),f=P(d,!0);D(d);var p=I(d,2),m=e=>{var t=NI(),n=P(t,!0);D(t),L(()=>H(n,s())),V(e,t)};U(p,e=>{s()&&e(m)});var g=I(p,2),_=e=>{var t=PI(),n=P(t,!0);D(t),L(()=>H(n,o())),V(e,t)};U(g,e=>{o()&&e(_)}),D(c),L(()=>{G(c,1,Ni([`workflow-node`,R(i),a()]),`svelte-nbptrg`),H(f,r())}),V(e,c)},MI=B(`
            `),NI=B(` `),PI=B(` `),FI=B(`
            `),II=B(`
            `,1),LI=B(`
            `,1),RI=B(`
            `),zI=B(`
            Async
            `),BI=B(`
            `);function VI(e,t){O(t,!0);let n=q(t,`chart`,19,()=>({}));var r=BI();let i;var a=P(r),o=e=>{AI(e,{get workflowID(){return n().workflowID}})};U(a,e=>{n().workflowID&&e(o)});var s=I(a,2),c=P(s);jI(c,()=>({icon:ku,label:`Client`,variant:`workflow-node-endpoint`}));var l=I(c,4);jI(l,()=>({icon:ql,label:`Auth`,state:n().authNodeClass,sub:n().authNodeSublabel}));var u=I(l,2),d=e=>{var t=II(),r=F(t);jI(I(r,2),()=>({icon:ql,label:`Cache`,state:n().cacheNodeClass,badge:n().cacheStatusLabel})),L(()=>G(r,1,Ni([`workflow-conn`,n().cacheConnClass]),`svelte-nbptrg`)),V(e,t)};U(u,e=>{n().showCache&&e(d)});var f=I(u,2),p=e=>{var t=LI();jI(I(F(t),2),()=>({icon:Au,label:`Budget`,state:n().budgetNodeClass,badge:n().budgetStatusLabel})),V(e,t)};U(f,e=>{n().showBudget&&e(p)});var m=I(f,2),h=e=>{var t=LI();jI(I(F(t),2),()=>({icon:xu,label:`Guardrails`,sub:n().guardrailLabel})),V(e,t)};U(m,e=>{n().showGuardrails&&e(h)});var g=I(m,2),_=I(g,2);jI(_,()=>({label:n().aiLabel,variant:`workflow-node-ai`,state:n().aiNodeClass,sub:n().aiSublabel}));var v=I(_,2),y=e=>{var t=II(),r=F(t);jI(I(r,2),()=>({icon:ru,label:`Failover`,state:n().failoverNodeClass,badge:n().failoverStatusLabel,sub:n().failoverTargetLabel})),L(()=>G(r,1,Ni([`workflow-conn`,n().failoverConnClass]),`svelte-nbptrg`)),V(e,t)};U(v,e=>{n().showFailover&&e(y)});var b=I(v,2);jI(I(b,2),()=>({icon:Vl,label:`Response`,variant:`workflow-node-endpoint`,state:n().responseNodeClass,sub:n().responseNodeSublabel})),D(s);var x=I(s,2),S=e=>{var t=zI(),r=P(t),i=P(r),a=e=>{jI(e,()=>({icon:Fl,label:`Usage`,variant:`workflow-node-feature workflow-node-async`,state:n().usageNodeClass}))};U(i,e=>{n().showUsage&&e(a)});var o=I(i,2),s=e=>{V(e,RI())};U(o,e=>{n().showUsage&&n().showAudit&&e(s)});var c=I(o,2),l=e=>{jI(e,()=>({icon:Jl,label:`Audit Log`,variant:`workflow-node-feature workflow-node-async`,state:n().auditNodeClass}))};U(c,e=>{n().showAudit&&e(l)}),D(r),Ve(4),D(t),V(e,t)};U(x,e=>{n().showAsync&&e(S)}),D(r),L(()=>{i=G(r,1,`workflow-pipeline svelte-nbptrg`,null,i,{"workflow-pipeline-has-meta":n().workflowID}),G(g,1,Ni([`workflow-conn`,n().aiConnClass]),`svelte-nbptrg`),G(b,1,Ni([`workflow-conn`,n().responseConnClass]),`svelte-nbptrg`)}),V(e,r),k()}function HI(e){let t=iI(e).length;return t===0?``:t===1?`1 step`:t+` steps`}function UI(e,t){return t&&t.provider?t.provider:oI(e&&e.scope)||`AI`}function WI(e,t){return t&&t.model?t.model:e&&e.scope&&e.scope.scope_model||null}function GI(e,t){let n=String(e&&e.id||``).trim();if(n&&n!==`draft-workflow-preview`)return n;let r=String(t&&t.workflow_version_id||``).trim();return r&&r!==`draft-workflow-preview`?r:null}function KI(e){let t=e&&e.data&&e.data.workflow_features;return!t||typeof t!=`object`||Array.isArray(t)?null:eI(t)}function qI(e){let t=e&&e.data&&e.data.failover;if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=String(t.target_model||t.targetModel||``).trim()||null;return n?{targetModel:n}:null}function JI(e,t=0){if(t>4||e==null)return``;if(typeof e==`string`){let n=e.trim();if(!n||n[0]!==`{`&&n[0]!==`[`)return``;try{return JI(JSON.parse(n),t+1)}catch{return``}}if(Array.isArray(e)){for(let n of e){let e=JI(n,t+1);if(e)return e}return``}return typeof e==`object`?String(e.code||``).trim()||(e.error===void 0?``:JI(e.error,t+1)):``}function YI(e){let t=e&&e.data&&typeof e.data==`object`&&!Array.isArray(e.data)?e.data:{};return String(t.error_code||t.errorCode||``).trim()||JI(t.response_body)}function XI(e){let t=String(e||``).trim();if(!t)return null;let n=t.indexOf(`/`);return n<=0||n>=t.length-1?null:{provider:t.slice(0,n),model:t.slice(n+1)}}function ZI(e,t){let n=String(e&&(e.requested_model||e.model)||``).trim(),r=qI(e);if(!(r&&r.targetModel))return{provider:String(e&&e.provider||``).trim()||null,model:n||null};let i=XI(n);if(i)return i;let a=oI(t&&t.scope),o=a?String(t&&t.scope&&t.scope.scope_model||``).trim():``;return a||o?{provider:a||null,model:o||n||null}:{provider:null,model:n||null}}function QI(e,t){if(!e)return null;let n=(()=>{let t=String(e.cache_type||``).trim().toLowerCase();return t===`exact`||t===`semantic`?t:null})(),r=(()=>{if(e.status_code===void 0||e.status_code===null)return null;let t=String(e.status_code).trim();if(!t)return null;let n=Number(t);return Number.isFinite(n)?n:null})(),i=n?!0:e.cache_hit!==void 0&&e.cache_hit!==null&&!!e.cache_hit,a=qI(e),o=ZI(e,t),s=Number.isFinite(r)&&r>=200&&r<300,c=String(e.error_type||``).trim().toLowerCase()===`authentication_error`,l=String(e.auth_method||``).trim().toLowerCase()||null,u=YI(e).toLowerCase()===`budget_exceeded`;return{cacheHit:i,cacheType:n||null,failoverTarget:a&&a.targetModel?a.targetModel:null,provider:o.provider,model:o.model,statusCode:r,responseSuccess:s,aiSuccess:s&&!i,authError:c,authMethod:l,budgetExceeded:u}}function $I(e){return!!(e&&e.cacheHit)}function eL(e){return!!(e&&e.failoverTarget)}function tL(e){return!!(e&&e.budgetExceeded)}function nL(e,t){return t?`workflow-node-current`:e&&e.cacheHit?`workflow-node-success`:``}function rL(e){return e&&e.cacheHit?`workflow-conn-hit`:``}function iL(e){return!e||!e.cacheHit?null:e.cacheType===`semantic`?`Hit (Semantic)`:`Hit (Exact)`}function aL(e,t,n,r){return e?tL(t)?`workflow-node-error`:r?`workflow-node-current`:n?`workflow-node-success`:``:``}function oL(e){return tL(e)?`Exceeded`:null}function sL(e){return e&&e.cacheHit?`workflow-node-skipped`:e&&e.failoverTarget?`workflow-node-success`:``}function cL(e){return e&&e.cacheHit?`workflow-conn-dim`:e&&e.failoverTarget?`workflow-conn-hit`:``}function lL(e){return e&&e.failoverTarget?`Redirected`:null}function uL(e){return e&&e.failoverTarget?e.failoverTarget:null}function dL(e){return e&&e.cacheHit?`workflow-conn-dim`:``}function fL(e,t){return e?e.cacheHit?`workflow-node-skipped`:t?`workflow-node-current`:e.aiSuccess?`workflow-node-success`:``:``}function pL(e,t){if(!e)return``;let n=e.statusCode;return!Number.isFinite(n)&&t?`workflow-node-current`:Number.isFinite(n)?n>=500?`workflow-node-error`:n>=400?`workflow-node-warning`:n>=300?`workflow-node-neutral`:n>=200?`workflow-node-success`:``:``}function mL(e){return!e||!Number.isFinite(e.statusCode)?null:String(e.statusCode)}function hL(e,t){return e?e.authError?`workflow-node-error`:t?`workflow-node-current`:e.authMethod===`api_key`||e.authMethod===`master_key`?`workflow-node-success`:``:``}function gL(e){return!e||!e.authMethod?null:e.authMethod}function _L(e,t,n){return e?n?`workflow-node-current`:t?`workflow-node-success`:``:``}function vL(e,t){if(!e||!e._live)return!!t;let n=String(e._live_state||``).trim();return!!e._audit_flushed||n===`audit.flushed`||n===`audit.detail`}function yL(e,t){if(!e)return!!t;let n=e.usage||{},r=Number(n.entries||0)>0;if(!e._live)return r;let i=String(e._usage_live_state||``).trim();return e._usage_flushed||i===`usage.flushed`?!0:!e._usage_live_pending&&r&&!e._live_pending}function bL(e){return!!(e&&e._live&&e._usage_live_pending&&!e._usage_flushed)}function xL(e,t){return!e||!e._live||vL(e,!1)?!1:String(e._live_state||``).trim()===`audit.completed`||!!(t&&Number.isFinite(t.statusCode))}function SL(e,t,n){return!e||!e._live?``:bL(e)?`usage`:xL(e,t)?`audit`:vL(e,!1)&&!e._live_pending?``:t&&t.cacheHit?`cache`:t&&(t.provider||t.model)?`ai`:n&&n.budget&&(e.workflow_version_id||e.requested_model)?`budget`:t&&t.authMethod?``:`auth`}function CL(e,t,n,r){let i=n||{},a=i.features&&typeof i.features==`object`&&!Array.isArray(i.features)?eI(i.features):nI(e,r),o=!!i.forceAudit,s=!!i.highlightAsyncPresent,c=!!a.budget||tL(t),l=!!a.guardrails,u=!!a.usage,d=o||!!a.audit,f=!!i.forceAsync||!!(u||d),p=!!a.failover||eL(t),m=GI(e,i.entry),h=SL(i.entry,t,a),g=bL(i.entry),_=xL(i.entry,t),v=vL(i.entry,s),y=yL(i.entry,s);return{showBudget:c,budgetNodeClass:aL(c,t,s,h===`budget`),budgetStatusLabel:oL(t),showGuardrails:l,guardrailLabel:l?HI(e):``,showCache:!!i.forceCache||!!a.cache||$I(t),cacheNodeClass:nL(t,h===`cache`),cacheConnClass:rL(t),cacheStatusLabel:iL(t),showFailover:p,failoverNodeClass:p?sL(t):``,failoverConnClass:p?cL(t):``,failoverStatusLabel:p?lL(t):null,failoverTargetLabel:p?uL(t):null,aiLabel:UI(e,t),aiSublabel:WI(e,t),aiConnClass:dL(t),aiNodeClass:fL(t,h===`ai`),responseConnClass:dL(t),responseNodeClass:pL(t,h===`response`),responseNodeSublabel:mL(t),authNodeClass:hL(t,h===`auth`),authNodeSublabel:gL(t),usageNodeClass:_L(u,y,g),auditNodeClass:_L(d,v,_),showAsync:f,showUsage:u,showAudit:d,workflowID:m}}function wL(e,t){return CL(e,null,{forceCache:!1},t)}function TL(e,t,n){return CL(t,QI(e,t),{entry:e,features:KI(e)||(t?nI(t,n):{cache:!1,audit:!1,usage:!1,budget:!1,guardrails:!1,failover:!1}),forceAudit:!0,forceAsync:!0,highlightAsyncPresent:!0},n)}var EL=B(`

            `),DL=B(`

            `),OL=B(`
            `),kL=B(`
            `),AL=B(`

            No guardrails configured for this workflow.

            `),jL=B(`

            Guardrails

            `),ML=B(``),NL=B(`

            `);function PL(e,t){O(t,!0);let n=q(t,`preview`,3,!1),r=A(()=>EI.featureCaps()),i=A(()=>fI(t.workflow)),a=A(()=>aI(t.workflow,R(r))),o=A(()=>wL(t.workflow,R(r))),s=A(()=>n()?`draft-workflow-preview-guardrail-`:t.workflow.id+`-guardrail-`);var c=NL();let l;var u=P(c),d=P(u),f=P(d),p=P(f,!0);D(f);var m=I(f,2),h=P(m,!0);D(m),D(d);var g=I(d,2),_=P(g),v=P(_,!0);D(_),D(g),D(u);var y=I(u,2),b=e=>{var n=EL(),r=P(n,!0);D(n),L(()=>H(r,t.workflow.description)),V(e,n)};U(y,e=>{t.workflow.description&&e(b)});var x=I(y,2),S=e=>{var n=DL(),i=P(n);D(n),L(e=>H(i,`Failover: ${e??``}`),[()=>rI(t.workflow,R(r))]),V(e,n)},C=A(()=>EI.failoverVisible());U(x,e=>{R(C)&&e(S)});var w=I(x,2);VI(w,{get chart(){return R(o)}});var T=I(w,2),E=e=>{var t=jL(),n=P(t),r=I(P(n),2),i=P(r,!0);D(r),D(n);var o=I(n,2),c=e=>{var t=kL();W(t,23,()=>R(a),(e,t)=>R(s)+t,(e,t)=>{var n=OL(),r=P(n),i=P(r,!0);D(r);var a=I(r,2),o=P(a);D(a),D(n),L(()=>{H(i,R(t).ref),H(o,`step ${R(t).step??``}`)}),V(e,n)}),D(t),V(e,t)},l=e=>{V(e,AL())};U(o,e=>{R(a).length>0?e(c):e(l,-1)}),D(t),L(()=>H(i,R(a).length?R(a).length+` steps`:`None`)),V(e,t)},ee=A(()=>Td.guardrailsVisible());U(T,e=>{R(ee)&&e(E)});var te=I(T,2),ne=e=>{var n=ML(),r=P(n),a=P(r),o=P(a,!0);D(a);var s=I(a,2);{let e=A(()=>`Edit workflow `+R(i));wk(s,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>EI.openCreate(t.workflow),children:(e,t)=>{J(e,{get icon(){return su},class:`table-icon-svg`})},$$slots:{default:!0}})}D(r);var c=I(r,2),l=P(c),u=P(l);D(l);var d=I(l,2),f=P(d);D(d);var p=I(d,2),m=P(p);D(p),D(c),D(n),L((e,n,r,s)=>{a.disabled=e,K(a,`aria-label`,`Deactivate workflow `+R(i)),K(a,`title`,n),H(o,EI.deactivatingID===t.workflow.id?`Deactivating...`:`Deactivate`),H(u,`version: v${t.workflow.version??``}`),H(f,`created: ${r??``}`),H(m,`hash: ${s??``}`)},[()=>EI.deactivatingID===t.workflow.id||!bI(t.workflow),()=>bI(t.workflow)?`Deactivate active workflow`:`The global workflow cannot be deactivated.`,()=>md.formatTimestamp(t.workflow.created_at),()=>xI(t.workflow.workflow_hash)]),z(`click`,a,()=>EI.deactivate(t.workflow)),V(e,n)};U(te,e=>{n()||e(ne)}),D(c),L((e,t)=>{l=G(c,1,`workflow-card svelte-1fo9fvq`,null,l,{"workflow-preview-card":n()}),H(p,e),H(h,R(i)),H(v,t)},[()=>uI(t.workflow),()=>dI(t.workflow)]),V(e,c),k()}Br([`click`]);var FL=B(`

            `),IL=B(``),LL=B(``),RL=B(``),zL=B(``),BL=B(``),VL=B(``),HL=B(``),UL=B(``),WL=B(``),GL=B(``),KL=B(``),qL=B(``),JL=B(`
            No named guardrails are currently registered on this deployment. You can still draft a workflow, but guardrail-backed creation may be rejected.
            `),YL=B(`
            `),XL=B(`
            `),ZL=B(`

            No guardrail steps configured yet.

            `),QL=B(`

            Guardrail Steps

            Guardrails in the same numeric step run together. Later steps wait for earlier ones to finish.

            `),$L=B(`

            Leave provider name empty to target all providers and models. Select a provider name without a model to target all models for that configured provider.

            Add a path to scope the workflow to that subtree. Leading slashes are optional and will be normalized; you can enter "team/alpha" or "/team/alpha". Matching checks the deepest user path first, then falls back toward the root.

            If you leave the name empty, the workflow will display as the matched provider/model scope or “All models”.

            Preview

            Live
            `,1);function eR(e,t){O(t,!0);{let t=e=>{eD(e,{copyId:`workflow-help-copy`,label:`workflow help`,text:`Create immutable version. Submitting activates it for the selected scope.`,title:e=>{var t=FL(),n=P(t,!0);D(t),L(e=>H(n,e),[()=>EI.submitMode()===`save`?`Edit Workflow`:`Create Workflow`]),V(e,t)},$$slots:{title:!0}})},n=A(()=>EI.submitLabel()),r=A(()=>EI.submittingLabel()),i=A(()=>EI.submitMode()===`create`?lu:pu);OA(e,{get open(){return EI.formOpen},ariaLabel:`Workflow editor`,get error(){return EI.formError},get submitting(){return EI.submitting},get submitLabel(){return R(n)},get submittingLabel(){return R(r)},get submitIcon(){return R(i)},dialogClass:`workflow-editor`,onclose:()=>EI.closeForm(),onsubmit:()=>EI.submitForm(),header:t,children:(e,t)=>{var n=$L(),r=F(n),i=P(r);AA(i,{id:`workflow-scope-provider`,label:`Provider Name`,children:(e,t)=>{var n=LL(),r=P(n);r.value=r.__value=``,W(I(r),16,()=>EI.providerOptions(),e=>e,(e,t)=>{var n=IL(),r=P(n,!0);D(n);var i={};L(()=>{H(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(n),z(`change`,n,e=>EI.setProvider(e.currentTarget.value)),Ui(n,()=>EI.form.scope_provider,e=>EI.form.scope_provider=e),V(e,n)},$$slots:{default:!0}});var a=I(i,2),o=e=>{AA(e,{id:`workflow-scope-model`,label:`Model`,children:(e,t)=>{var n=RL(),r=P(n);r.value=r.__value=``,W(I(r),17,()=>EI.modelOptions(EI.form.scope_provider),e=>EI.form.scope_provider+`-`+e,(e,t)=>{var n=IL(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t)),i!==(i=R(t))&&(n.value=(n.__value=R(t))??``)}),V(e,n)}),D(n),Ui(n,()=>EI.form.scope_model,e=>EI.form.scope_model=e),V(e,n)},$$slots:{default:!0}})};U(a,e=>{EI.form.scope_provider&&e(o)});var s=I(a,2);AA(s,{id:`workflow-name`,label:`Name`,children:(e,t)=>{var n=zL();ea(n),la(n,()=>EI.form.name,e=>EI.form.name=e),V(e,n)},$$slots:{default:!0}}),AA(I(s,2),{id:`workflow-user-path`,label:`User Path`,children:(e,t)=>{var n=BL();ea(n),la(n,()=>EI.form.scope_user_path,e=>EI.form.scope_user_path=e),V(e,n)},$$slots:{default:!0}}),D(r);var c=I(r,8);AA(c,{id:`workflow-description`,label:`Description`,children:(e,t)=>{var n=VL();ut(n),la(n,()=>EI.form.description,e=>EI.form.description=e),V(e,n)},$$slots:{default:!0}});var l=I(c,2),u=P(l),d=e=>{var t=HL(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>EI.form.features.cache,e=>EI.form.features.cache=e),V(e,t)},f=A(()=>Td.cacheVisible());U(u,e=>{R(f)&&e(d)});var p=I(u,2),m=e=>{var t=UL(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>EI.form.features.audit,e=>EI.form.features.audit=e),V(e,t)},h=A(()=>Td.auditVisible());U(p,e=>{R(h)&&e(m)});var g=I(p,2),_=e=>{var t=WL(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>EI.form.features.usage,e=>EI.form.features.usage=e),V(e,t)},v=A(()=>Td.usageVisible());U(g,e=>{R(v)&&e(_)});var y=I(g,2),b=e=>{var t=GL(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>EI.form.features.budget,e=>EI.form.features.budget=e),V(e,t)},x=A(()=>Td.budgetsVisible());U(y,e=>{R(x)&&e(b)});var S=I(y,2),C=e=>{var t=KL(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>EI.form.features.guardrails,e=>EI.form.features.guardrails=e),V(e,t)},w=A(()=>Td.guardrailsVisible());U(S,e=>{R(w)&&e(C)});var T=I(S,2),E=e=>{var t=qL(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>EI.form.features.failover,e=>EI.form.features.failover=e),V(e,t)},ee=A(()=>EI.failoverVisible());U(T,e=>{R(ee)&&e(E)}),D(l);var te=I(l,2),ne=I(P(te),2);{let e=A(()=>EI.preview());PL(ne,{get workflow(){return R(e)},preview:!0})}D(te);var re=I(te,2),ie=e=>{var t=QL(),n=P(t),r=I(P(n),2);D(n);var i=I(n,2),a=e=>{var t=JL(),n=I(P(t),2);D(t),z(`click`,n,()=>Gu.navigate(`guardrails`)),V(e,t)};U(i,e=>{EI.guardrailRefs.length===0&&e(a)});var o=I(i,2),s=e=>{var t=XL();W(t,21,()=>EI.form.guardrails,ii,(e,t,n)=>{var r=YL(),i=P(r),a=P(i);K(a,`for`,`workflow-guardrail-ref-`+n);var o=I(a,2);ea(o),K(o,`id`,`workflow-guardrail-ref-`+n),K(o,`aria-label`,`Guardrail reference `+(n+1)),D(i);var s=I(i,2),c=P(s);K(c,`for`,`workflow-guardrail-step-`+n);var l=I(c,2);ea(l),K(l,`id`,`workflow-guardrail-step-`+n),K(l,`aria-label`,`Guardrail step `+(n+1)),D(s);var u=I(s,2);D(r),la(o,()=>R(t).ref,e=>R(t).ref=e),la(l,()=>R(t).step,e=>R(t).step=e),z(`click`,u,()=>EI.removeGuardrailStep(n)),V(e,r)}),D(t),V(e,t)},c=e=>{V(e,ZL())};U(o,e=>{EI.form.guardrails.length>0?e(s):e(c,-1)}),D(t),z(`click`,r,()=>EI.addGuardrailStep()),V(e,t)},ae=A(()=>EI.form.features.guardrails&&Td.guardrailsVisible());U(re,e=>{R(ae)&&e(ie)}),V(e,n)},$$slots:{header:!0,default:!0}})}k()}Br([`change`,`click`]);var tR=B(`

            Loading workflows...

            `),nR=B(`
            `),rR=B(`

            No active workflows found.

            `),iR=B(`

            No workflows match your filter.

            `),aR=B(`
            `);function oR(e,t){O(t,!0);var n=aR(),r=P(n),i=e=>{var t=tR();kE(P(t),{size:16,label:`Loading workflows`}),Ve(),D(t),V(e,t)};U(r,e=>{EI.loading&&!Y.authError&&e(i)});var a=I(r,2),o=e=>{var t=nR();W(t,21,()=>EI.filteredWorkflows,e=>e.id,(e,t)=>{PL(e,{get workflow(){return R(t)}})}),D(t),V(e,t)};U(a,e=>{EI.filteredWorkflows.length>0&&e(o)});var s=I(a,2),c=e=>{V(e,rR())};U(s,e=>{EI.workflows.length===0&&!EI.loading&&!Y.authError&&EI.available&&e(c)});var l=I(s,2),u=e=>{V(e,iR())};U(l,e=>{EI.workflows.length>0&&EI.filteredWorkflows.length===0&&!EI.loading&&e(u)}),D(n),V(e,n),k()}var sR=B(``),cR=B(`
            Workflows feature is unavailable.
            `),lR=B(`
            `),uR=B(`
            `),dR=B(``),fR=B(`
            `);function pR(e,t){O(t,!0),On(()=>{Y.refreshTick,EI.fetchPage()});var n=fR(),r=P(n),i=I(P(r),2),a=P(i),o=e=>{var t=sR();J(P(t),{get icon(){return lu},class:`form-action-icon`,"aria-hidden":`true`}),Ve(2),D(t),z(`click`,t,()=>EI.openCreate()),V(e,t)};U(a,e=>{EI.available&&e(o)}),D(i),D(r);var s=I(r,2),c=e=>{V(e,cR())};U(s,e=>{!EI.available&&!Y.authError&&e(c)});var l=I(s,2),u=e=>{var t=lR(),n=P(t,!0);D(t),L(()=>H(n,EI.error)),V(e,t)};U(l,e=>{EI.error&&!Y.authError&&e(u)});var d=I(l,2),f=e=>{var t=uR(),n=P(t);DO(P(n),{placeholder:`Filter by scope, name, hash, or guardrail...`,label:`Filter workflows by scope, name, hash, or guardrail`,get value(){return EI.filter},set value(e){EI.filter=e}}),D(n);var r=I(n,2),i=P(r),a=P(i,!0);D(i),D(r),D(t),L(()=>H(a,EI.filteredWorkflows.length+` active scopes`)),V(e,t)};U(d,e=>{EI.available&&e(f)});var p=I(d,2);eR(p,{});var m=I(p,2);oR(m,{});var h=I(m,2);W(h,20,()=>EI.guardrailRefs,e=>e,(e,t)=>{var n=dR(),r={};L(()=>{r!==(r=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(h),D(n),V(e,n),k()}Br([`click`]);function mR(e,{from:t,to:n},r={}){var{delay:i=0,duration:a=e=>Math.sqrt(e)*120,easing:o=nf}=r,s=getComputedStyle(e),c=s.transform===`none`?``:s.transform,[l,u]=s.transformOrigin.split(` `).map(parseFloat);l/=e.clientWidth,u/=e.clientHeight;var d=hR(e),f=e.clientWidth/n.width/d,p=e.clientHeight/n.height/d,m=t.left+t.width*l,h=t.top+t.height*u,g=n.left+n.width*l,_=n.top+n.height*u,v=(m-g)*f,y=(h-_)*p,b=t.width/n.width,x=t.height/n.height;return{delay:i,duration:typeof a==`function`?a(Math.sqrt(v*v+y*y)):a,easing:o,css:(e,t)=>`transform: ${c} translate(${t*v}px, ${t*y}px) scale(${e+t*b}, ${e+t*x});`}}function hR(e){if(`currentCSSZoom`in e)return e.currentCSSZoom;for(var t=e,n=1;t!==null;)n*=+getComputedStyle(t).zoom,t=t.parentElement;return n}var gR=null;function _R(){return gR===null&&(gR=typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`)),!!(gR&&gR.matches)}function vR(e){return _R()?0:e}function yR(e,t){return!t||!t.live?{duration:0}:ef(e,{duration:vR(150)})}var bR=new class{#e=j(N({}));get workflowVersionsByID(){return R(this.#e)}set workflowVersionsByID(e){M(this.#e,e,!0)}workflowVersionRequests={};workflowFeatureCaps(){return{cache:Td.cacheVisible(),audit:Td.auditVisible(),usage:Td.usageVisible(),budget:Td.budgetsVisible(),guardrails:Td.guardrailsVisible(),failover:Td.booleanFlag(`FAILOVER_ENABLED`,!0)}}cacheWorkflowVersion(e){let t=String(e&&e.id||``).trim();return t?(this.workflowVersionsByID={...this.workflowVersionsByID||{},[t]:e},e):null}cacheMissingWorkflowVersion(e){let t=String(e||``).trim();t&&(this.workflowVersionsByID={...this.workflowVersionsByID||{},[t]:null})}workflowVersionCacheHas(e){return Object.prototype.hasOwnProperty.call(this.workflowVersionsByID||{},String(e||``).trim())}workflowVersionByID(e){let t=String(e||``).trim();return t&&this.workflowVersionCacheHas(t)?this.workflowVersionsByID[t]:null}async fetchWorkflowVersion(e){let t=String(e||``).trim();if(!t)return null;if(this.workflowVersionCacheHas(t))return this.workflowVersionsByID[t];if(this.workflowVersionRequests[t])return this.workflowVersionRequests[t];let n=(async()=>{let e=typeof AbortController==`function`?new AbortController:null,n=e?setTimeout(()=>e.abort(),1e4):null;try{let n=await bd(`/admin/workflows/`+encodeURIComponent(t),{label:`workflow`,signal:e?e.signal:void 0});if(n.stale)return null;if(n.status===404)return this.cacheMissingWorkflowVersion(t),null;if(!n.ok)return null;let r=n.data;return!r||typeof r!=`object`||Array.isArray(r)?(this.cacheMissingWorkflowVersion(t),null):this.cacheWorkflowVersion(r)}catch(e){return e&&e.name===`AbortError`||console.error(`Failed to fetch workflow version:`,e),null}finally{n!==null&&clearTimeout(n),delete this.workflowVersionRequests[t]}})();return this.workflowVersionRequests[t]=n,n}async prefetchAuditWorkflows(e){let t=[...new Set((Array.isArray(e)?e:[]).map(e=>String(e&&e.workflow_version_id||``).trim()).filter(Boolean))];t.length!==0&&await Promise.all(t.map(e=>this.fetchWorkflowVersion(e)))}auditEntryWorkflow(e){let t=String(e&&e.workflow_version_id||``).trim();return t?this.workflowVersionByID(t):null}},xR=6;function SR(e){if(typeof e!=`string`)return null;try{return JSON.parse(e)}catch{return null}}function CR(e,t=0,n=null){let r=String(e||``).trim();if(!r)return``;if(t>xR)return r;let i=SR(r);return i==null?r:wR(i,t+1,n)||n&&n(i)||r}function wR(e,t=0,n=null,r=null){if(e==null||t>xR)return``;if(typeof e==`string`){let i=SR(e.trim());return i==null?``:wR(i,t+1,n,r)}if(typeof e!=`object`)return``;let i=r||new Set;if(i.has(e))return``;if(i.add(e),Array.isArray(e)){for(let r=0;r=400||DR(t&&t.response_body)}function kR(e){let t=e&&e.data?e.data:null;return t?TR(t.error_message)||(OR(e,t)?wR(t.response_body,0):``):``}function AR(e){if(e==null||String(e).trim()===``)return null;let t=Number(e);return!Number.isInteger(t)||t<0?null:t}function jR(e){let t=AR(e);return t===null?``:t===0?`Audit logs are retained indefinitely.`:t===1?`Audit logs are retained for 1 day.`:`Audit logs are retained for `+t+` days.`}function MR(e){let t=AR(e);return t===null?``:t===0?`Audit logs are retained `:`Audit logs are retained for `}function NR(e){let t=AR(e);return t===null?``:t===0?`indefinitely`:t===1?`1 day`:t+` days`}function PR({dateQuery:e,limit:t,offset:n,search:r,method:i,statusCode:a,stream:o}){let s=e;return s+=`&limit=`+t+`&offset=`+n,r&&(s+=`&search=`+encodeURIComponent(r)),i&&(s+=`&method=`+encodeURIComponent(i)),a&&(s+=`&status_code=`+encodeURIComponent(a)),o&&(s+=`&stream=`+encodeURIComponent(o)),s}function FR({sessionId:e,limit:t}){return`session_id=`+encodeURIComponent(e)+`&limit=`+(t||100)+`&offset=0`}function IR(e){return String(e&&e.session_id||``).trim()}function LR(e){let t=Number(e&&e.session_count);return Number.isFinite(t)&&t>1?t:1}function RR(e){return!!IR(e)&&LR(e)>1}function zR(e){return{entries:(Array.isArray(e&&e.sessions)?e.sessions:[]).filter(e=>e&&e.latest).map(e=>({...e.latest,session_count:Math.max(1,Number(e.request_count)||1)})),total:Number(e&&e.total||0),limit:Number(e&&e.limit||25),offset:Number(e&&e.offset||0)}}function BR(e,t,n){let r=new Set((Array.isArray(n)?n:[]).flatMap(e=>WR(e))),i=(Array.isArray(t)?t:[]).filter(e=>!WR(e).some(e=>r.has(e))),a=new Set([...r,...i.flatMap(e=>WR(e))]),o=(e&&Array.isArray(e.entries)?e.entries:[]).filter(e=>e&&e._live&&!WR(e).some(e=>a.has(e)));return{entries:[...o,...i],preservedCount:o.length}}function VR(e,t){let n=e||{};if(!t)return n;if(n[t]){let e={...n};return delete e[t],e}return{...n,[t]:!0}}function HR(e,t){let n=e||{},r=new Set((Array.isArray(t)?t:[]).map(e=>IR(e)).filter(Boolean)),i={},a=!1;return Object.keys(n).forEach(e=>{if(r.has(e)){i[e]=n[e];return}a=!0}),a?i:n}function UR(e){return String(e&&e.id||``).trim()}function WR(e){if(!e)return[];let t=[],n=String(e.id||``).trim(),r=String(e.request_id||``).trim();return n&&t.push(`id:`+n),r&&t.push(`request:`+r),t}function GR(e){return!!(e&&e._live&&e._live_pending&&!e._audit_flushed)}function KR(e){let t=e&&e.customStartDate,n=e&&e.customEndDate;if(!t&&!n)return!0;let r=new Date;if(t){let e=new Date(t);if(e.setHours(0,0,0,0),Number.isFinite(e.getTime())&&re)return!1}return!0}function qR(e,t){return e&&Number(e.offset||0)===0&&!(t&&t.search)&&!(t&&t.method)&&!(t&&t.statusCode)&&!(t&&t.stream)&&KR(t)}function JR(e,t,n){let r=e&&typeof e==`object`?{...e}:{entries:[],total:0,limit:25,offset:0},i=Array.isArray(r.entries)?r.entries:[];if(r.entries=i,!qR(r,n))return r;let a=(Array.isArray(t)?t:[]).filter(e=>GR(e));if(a.length===0)return r;let o=new Set(i.flatMap(e=>WR(e))),s=[];return a.forEach(e=>{let t=WR(e);t.length!==0&&(t.some(e=>o.has(e))||(t.forEach(e=>o.add(e)),s.push(e)))}),s.length===0?r:(r.entries=[...s,...i].slice(0,r.limit||25),r.total=Number(r.total||0)+s.length,r)}function YR(e,t,n){let r=e&&typeof e==`object`?{...e}:{entries:[],total:0,limit:25,offset:0},i=Array.isArray(r.entries)?r.entries:[];if(r.entries=i,!qR(r,n))return r;let a=(Array.isArray(t)?t:[]).filter(e=>GR(e));if(a.length===0)return r;let o=new Set(i.flatMap(e=>WR(e))),s=new Map;i.forEach((e,t)=>{let n=IR(e);n&&!s.has(n)&&s.set(n,t)});let c=[],l=i;return a.forEach(e=>{let t=WR(e);if(t.length===0||t.some(e=>o.has(e)))return;let n=IR(e);if(n&&s.has(n)){let r=s.get(n);l===i&&(l=[...i]);let a=LR(l[r]),c=Number(e&&e.session_count),u=Number.isFinite(c)&&c>1?c:null;l[r]={...e,session_count:u===null?a+1:Math.max(a,u)},t.forEach(e=>o.add(e));return}t.forEach(e=>o.add(e)),c.push(e)}),r.entries=[...c,...l].slice(0,r.limit||25),r.total=Number(r.total||0)+c.length,r}function XR(e,t){let n=UR(t),r=e||{};return n?r[n]?{}:{[n]:!0}:r}function ZR(e,t){let n=e||{},r=new Set((Array.isArray(t)?t:[]).map(e=>UR(e)).filter(Boolean)),i={},a=!1;return Object.keys(n).forEach(e=>{if(r.has(e)){i[e]=!0;return}a=!0}),a?i:n}function QR(e){if(e==null)return`-`;let t=Number(e);return Number.isFinite(t)?t<=0?`pending`:t<1e6?Math.round(t/1e3)+` µs`:t<1e9?(t/1e6).toFixed(2)+` ms`:(t/1e9).toFixed(2)+` s`:`-`}function $R(e){if(e==null||e===``)return`status-unknown`;let t=Number(e);return Number.isFinite(t)?t>=500?`status-error`:t>=400?`status-warning`:t>=300?`status-neutral`:`status-success`:`status-unknown`}function ez(e){if(!e||!e._live||!e._live_pending)return!1;let t=String(e._live_state||``).trim();if(t===`audit.completed`||t===`audit.flushed`||t===`audit.detail`)return!1;if(e._response_partial)return!0;if(e.status_code!==null&&e.status_code!==void 0&&e.status_code!==``||Number(e.duration_ns||0)>0||e.error_type||e.error_message)return!1;let n=e.data||{};return!(n.response_headers||n.response_body||n.error_message)}function tz(e){let t=e&&e.data&&e.data.failover;return!t||typeof t!=`object`||Array.isArray(t)?null:String(t.target_model||t.targetModel||``).trim()||null}function nz(e){return(e&&e.data&&Array.isArray(e.data.attempts)?e.data.attempts:[]).map((e,t)=>({...e,seq:Number(e&&e.seq||t+1)})).sort((e,t)=>e.seq-t.seq)}function rz(e){let t=nz(e);return t.length>1||t.some(e=>!(e&&e.success))}function iz(e){if(!e)return`-`;let t=e.status_code||e.status;return t?String(t):e.success?`ok`:`error`}function az(e){return String(e&&e.kind||``).trim()||`attempt`}function oz(e){if(!e)return`-`;let t=String(e.provider_name||``).trim(),n=String(e.provider_type||e.provider||``).trim();return t&&n&&t!==n?t+` (`+n+`)`:t||n||`-`}function sz(e){return String(e&&e.model||``).trim()||`-`}function cz(e){let t=nz(e);return t.length>1||t.some(e=>!(e&&e.success))?t:[]}function lz(e){return nz(e).length+`×`}function uz(e){let t=nz(e),n=t.filter(e=>!(e&&e.success)).length,r=t.length===1?`attempt`:`attempts`,i=t.length+` provider `+r;return n>0?i+` · `+n+` failed`:i}function dz(e){if(!e)return``;let t=[`#`+Number(e.seq||0)],n=az(e);n&&n!==`attempt`&&t.push(n),t.push(iz(e));let r=oz(e);r&&r!==`-`&&t.push(r);let i=sz(e);return i&&i!==`-`&&t.push(i),t.push(e.success?`succeeded`:`failed`),t.join(` · `)}function fz(e,t){if(!t)return null;if(t.success){let t=e&&e.data?e.data:null;return t&&t.response_body!=null?t.response_body:null}return t.response_body!=null&&t.response_body!==``?t.response_body:null}function pz(e){if(!e||e.success)return``;let t=String(e.error_message||``).trim(),n=String(e.error_code||``).trim(),r=String(e.error_type||``).trim();return t&&n?n+`: `+t:t||n||r||`Provider attempt failed`}function mz(e,t){if(!t)return null;if(t.success){let t=e&&e.data?e.data:null;return t?t.response_headers:null}return t.response_headers||null}function hz(e){let t=Number(e&&e.status_code);return Number.isFinite(t)&&t>0?t:null}function gz(e,t){let n=!!(t&&t.success),r=e&&e.data?e.data:null,i=fz(e,t),a=mz(e,t),o=pz(t),s=i!=null&&i!==``,c=az(t),l=nz(e).length<=1;return{title:`Response`,direction:`response`,seq:l?0:Number(t&&t.seq||0),kind:l||c===`attempt`?``:c,statusCode:l?null:hz(t),layout:`split`,entry:e,copyHeaders:a,copyBody:i,showErrorMessage:!!o,errorMessage:o,showHeaders:!!a,headers:a,showBody:s,body:i,showEmpty:!o&&!s&&!a,emptyMessage:`No response was captured for this attempt.`,showTooLarge:!!(n&&r&&r.response_body_too_big_to_handle),tooLargeMessage:`Response body was too large to capture.`}}function _z(e){return e&&e.data&&Array.isArray(e.data.request_revisions)?e.data.request_revisions:[]}function vz(e){return _z(e).filter(e=>!(e&&e.no_change))}function yz(e){return _z(e).filter(e=>e&&e.no_change).map(e=>{let t=String(e.rewriter||`rewriter`);return{id:`step-`+Number(e.seq||0),rewriter:t,label:t+`: no change`,title:t+` ran and forwarded the request unchanged`}})}function bz(e){let t=Number(e&&e.bytes_before),n=Number(e&&e.bytes_after);if(!Number.isFinite(t)||!Number.isFinite(n)||t<=0||n>=t)return``;let r=(1-n/t)*100;return`-`+(r>=10?String(Math.round(r)):r.toFixed(1))+`%`}function xz(e,t){let n=t&&t.body,r=n!=null&&n!==``,i=vz(e).length<=1,a={rewriter:t&&t.rewriter||``,bytes:Number(t&&t.bytes_before||0)+` → `+Number(t&&t.bytes_after||0)};return t&&t.detail!=null&&(a.detail=t.detail),{title:`Rewritten`,direction:`request`,seq:i?0:Number(t&&t.seq||0),kind:t&&t.rewriter?String(t.rewriter):``,savingsLabel:bz(t),layout:`split`,entry:e,copyHeaders:a,copyBody:n,showErrorMessage:!1,errorMessage:null,showHeaders:!0,headers:a,headersTitle:`What changed`,showBody:r,body:n,showEmpty:!1,emptyMessage:``,showTooLarge:!r,tooLargeMessage:`Rewritten body not captured (body logging disabled or body too large).`}}function Sz(e){let t=e&&e.usage;return!t||typeof t!=`object`?null:t}function Cz(e){let t=Sz(e);return Number(t&&t.cached_input_tokens||0)>0}function wz(e){let t=Sz(e),n=Number(t&&t.input_tokens||0),r=Number(t&&t.cached_input_tokens||0);return!Number.isFinite(n)||n<=0||!Number.isFinite(r)||r<=0?0:Math.max(0,Math.min(100,r/n*100))}function Tz(e){let t=Sz(e);if(!t)return``;let n=Number(t.input_tokens||0),r=Number(t.cached_input_tokens||0);return n<=0?mf(r)+` cached`:wz(e).toFixed(1)+`% cached`}function Ez(e){return Cz(e)?Tz(e):``}function Dz(e,t){let n=Sz(e);if(!n||!e||!e.data||!e.data.request_body)return null;let r=Number(n.estimated_cached_characters||0);if(!Number.isFinite(r)||r<=0||typeof t!=`function`)return null;let i=t(e.data.request_body);return!Array.isArray(i)||i.length===0?null:{characters:r,segments:i}}function Oz(e,t){let n=e&&e.data?e.data:null,r=!n||!n.request_headers&&!n.request_body,i=r&&ez(e);return{title:`Request`,direction:`request`,layout:`split`,entry:e,copyHeaders:n&&n.request_headers,copyBody:n&&n.request_body,showErrorMessage:!1,errorMessage:null,showHeaders:!!(n&&n.request_headers),headers:n&&n.request_headers,showBody:!!(n&&n.request_body),body:n&&n.request_body,bodyCacheRatioLabel:Ez(e),promptCacheHighlight:Dz(e,t),noChangeSteps:yz(e),showEmpty:r&&!i,emptyMessage:`Request details were not captured.`,showPending:i,pendingMessage:`Waiting for request data…`,showTooLarge:!!(n&&n.request_body_too_big_to_handle),tooLargeMessage:`Request body was too large to capture.`}}function kz(e){let t=e&&e.data?e.data:null,n=kR(e),r=!t||!n&&!t.response_headers&&!t.response_body,i=r&&ez(e);return{title:`Response`,direction:`response`,layout:`split`,entry:e,copyHeaders:t&&t.response_headers,copyBody:t&&t.response_body,showErrorMessage:!!n,errorMessage:n,showHeaders:!!(t&&t.response_headers),headers:t&&t.response_headers,showBody:!!(t&&t.response_body),body:t&&t.response_body,streaming:!!(e&&e._response_partial&&t&&t.response_body)&&ez(e),showEmpty:r&&!i,emptyMessage:`Response details were not captured.`,showPending:i,pendingMessage:`Response in progress…`,showTooLarge:!!(t&&t.response_body_too_big_to_handle),tooLargeMessage:`Response body was too large to capture.`}}function Az(e,t){let n=[{id:`request`,pane:Oz(e,t)}];return vz(e).forEach(t=>{n.push({id:`revision-`+Number(t&&t.seq||0),pane:xz(e,t)})}),rz(e)?nz(e).forEach(t=>{n.push({id:`response-`+Number(t&&t.seq||0),pane:gz(e,t)})}):n.push({id:`response`,pane:kz(e)}),n}function jz(e){if(!rz(e))return`response`;let t=nz(e),n=null;return t.forEach(e=>{e&&e.success&&(n=e)}),n||=t[t.length-1],n?`response-`+Number(n.seq||0):`request`}function Mz(e,t,n){return e&&(Array.isArray(n)?n:Az(t)).some(t=>t.id===e)?e:jz(t)}function Nz(e,t,n){if(!t||!t.length)return null;let r=t.indexOf(n);r<0&&(r=0);let i;switch(e){case`ArrowRight`:case`ArrowDown`:i=(r+1)%t.length;break;case`ArrowLeft`:case`ArrowUp`:i=(r-1+t.length)%t.length;break;case`Home`:i=0;break;case`End`:i=t.length-1;break;default:return null}return t[i]}var Pz=100;function Fz(){return{entries:[],total:0,limit:25,offset:0}}var Iz=new class{#e=j(N({}));get auditExpandedEntries(){return R(this.#e)}set auditExpandedEntries(e){M(this.#e,e,!0)}#t=j(N({}));get auditExpandedThreads(){return R(this.#t)}set auditExpandedThreads(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}auditFetchToken=0;get auditLog(){return zD.auditLog}set auditLog(e){zD.auditLog=e}get auditSearch(){return zD.auditSearch}set auditSearch(e){zD.auditSearch=e}get auditMethod(){return zD.auditMethod}set auditMethod(e){zD.auditMethod=e}get auditStatusCode(){return zD.auditStatusCode}set auditStatusCode(e){zD.auditStatusCode=e}get auditStream(){return zD.auditStream}set auditStream(e){zD.auditStream=e}get auditGroupSessions(){return zD.auditGroupSessions}liveFilters(){return{search:this.auditSearch,method:this.auditMethod,statusCode:this.auditStatusCode,stream:this.auditStream,customStartDate:Vf.customStartDate,customEndDate:Vf.customEndDate}}toggleAuditGroupSessions(){zD.auditGroupSessions=!zD.auditGroupSessions,Ya(`gomodel_audit_group_sessions`,zD.auditGroupSessions),this.auditExpandedThreads={},zD.auditThreadChildren={},this.fetchAuditLog(!0)}async fetchAuditLog(e){let t=++this.auditFetchToken;this.loading=!0;try{e&&(this.auditLog.offset=0);let n=this.auditGroupSessions,r=PR({dateQuery:Vf.queryStr(),limit:this.auditLog.limit,offset:this.auditLog.offset,search:this.auditSearch,method:this.auditMethod,statusCode:this.auditStatusCode,stream:this.auditStream}),i=await bd((n?`/admin/audit/sessions?`:`/admin/audit/log?`)+r,{label:`audit log`});if(i.stale||t!==this.auditFetchToken)return;if(!i.ok){this.auditLog=Fz();return}let a=n?zR(i.data):i.data,o=(n?YR:JR)(a,this.auditLog&&this.auditLog.entries,this.liveFilters());Array.isArray(o.entries)||(o.entries=[]),o.entries=zD.upsertAuditRecords(o.entries,`audit.list`),this.auditLog=o,this.auditExpandedThreads=HR(this.auditExpandedThreads,o.entries),zD.auditThreadChildren=HR(zD.auditThreadChildren,o.entries);let s=[...o.entries,...this.loadedThreadChildren()];this.auditExpandedEntries=ZR(this.auditExpandedEntries,s);try{await bR.prefetchAuditWorkflows(s)}catch(e){console.error(`Failed to prefetch audit workflows:`,e)}}catch(e){if(console.error(`Failed to fetch audit log:`,e),t!==this.auditFetchToken)return;this.auditLog=Fz()}finally{t===this.auditFetchToken&&(this.loading=!1)}}loadedThreadChildren(){let e=zD.auditThreadChildren||{};return Object.keys(e).flatMap(t=>Array.isArray(e[t]&&e[t].entries)?e[t].entries:[])}isThreadExpanded(e){return!!(e&&this.auditExpandedThreads[e])}threadChildren(e){return e&&zD.auditThreadChildren[e]||null}async toggleThread(e){let t=IR(e);if(!t)return;let n=!this.isThreadExpanded(t);this.auditExpandedThreads=VR(this.auditExpandedThreads,t);let r=zD.auditThreadChildren[t];n&&!(r&&(r.loaded||r.loading))&&await this.fetchThreadEntries(e)}async fetchThreadEntries(e){let t=IR(e);if(!t)return;let n=zD.auditThreadChildren[t];zD.auditThreadChildren={...zD.auditThreadChildren,[t]:{loading:!0,loaded:!1,entries:n&&Array.isArray(n.entries)?n.entries:[],total:Number(n&&n.total||0)}};let r=()=>{let e={...zD.auditThreadChildren},n=e[t],r=n&&Array.isArray(n.entries)?n.entries:[];r.length>0?e[t]={loading:!1,loaded:!1,entries:r,total:r.length}:(delete e[t],this.auditExpandedThreads[t]&&(this.auditExpandedThreads=VR(this.auditExpandedThreads,t))),zD.auditThreadChildren=e};try{let n=await bd(`/admin/audit/log?`+FR({sessionId:t,limit:Pz}),{label:`audit session`});if(n.stale){r();return}if(!n.ok)throw Error(`audit session fetch failed`);let i=zD.auditThreadChildren[t],a=this.auditLog.entries.find(e=>IR(e)===t),o=BR(i,n.data.entries,a?[a]:[e]);o.entries=zD.upsertAuditRecords(o.entries,`audit.thread`),zD.auditThreadChildren={...zD.auditThreadChildren,[t]:{loading:!1,loaded:!0,entries:o.entries,total:Number(n.data.total||0)+o.preservedCount}}}catch(e){console.error(`Failed to fetch audit session entries:`,e),r()}}clearAuditFilters(){this.auditSearch=``,this.auditMethod=``,this.auditStatusCode=``,this.auditStream=``,this.fetchAuditLog(!0)}auditLogNextPage(){this.auditLog.offset+this.auditLog.limit0&&(this.auditLog.offset=Math.max(0,this.auditLog.offset-this.auditLog.limit),this.fetchAuditLog(!1))}isAuditEntryExpanded(e){let t=UR(e);return t?!!(this.auditExpandedEntries&&this.auditExpandedEntries[t]):!1}toggleAuditEntryExpanded(e){this.auditExpandedEntries=XR(this.auditExpandedEntries,e);let t=this.isAuditEntryExpanded(e);return t&&typeof zD.fetchAuditEntryDetail==`function`&&zD.fetchAuditEntryDetail(e),t}expandAuditEntry(e){this.isAuditEntryExpanded(e)||this.toggleAuditEntryExpanded(e)}};zD.fetchAuditLog=e=>Iz.fetchAuditLog(e),zD.isAuditEntryExpanded=e=>Iz.isAuditEntryExpanded(e);var Lz=B(`
            `);function Rz(e,t){O(t,!0);let n=OO(()=>Iz.fetchAuditLog(!0));On(()=>n.cancel);var r=Lz(),i=P(r);DO(P(i),{id:`audit-filter-search`,placeholder:`Search by request ID, model, provider, path, user path, or error...`,label:`Search by request ID, model, provider, path, user path, or error`,get oninput(){return n},get value(){return Iz.auditSearch},set value(e){Iz.auditSearch=e}}),D(i);var a=I(i,2),o=P(a),s=P(o);s.value=s.__value=``;var c=I(s);c.value=c.__value=`GET`;var l=I(c);l.value=l.__value=`POST`;var u=I(l);u.value=u.__value=`PUT`;var d=I(u);d.value=d.__value=`PATCH`;var f=I(d);f.value=f.__value=`DELETE`,D(o);var p=I(o,2),m=P(p);m.value=m.__value=``;var h=I(m);h.value=h.__value=`200`;var g=I(h);g.value=g.__value=`201`;var _=I(g);_.value=_.__value=`400`;var v=I(_);v.value=v.__value=`401`;var y=I(v);y.value=y.__value=`403`;var b=I(y);b.value=b.__value=`404`;var x=I(b);x.value=x.__value=`429`;var S=I(x);S.value=S.__value=`500`;var C=I(S);C.value=C.__value=`502`;var w=I(C);w.value=w.__value=`503`;var T=I(w);T.value=T.__value=`504`,D(p);var E=I(p,2),ee=P(E);ee.value=ee.__value=``;var te=I(ee);te.value=te.__value=`true`;var ne=I(te);ne.value=ne.__value=`false`,D(E);var re=I(E,2);J(P(re),{get icon(){return Nu},class:`table-icon-svg`}),Ve(2),D(re),D(a),D(r),z(`change`,o,()=>Iz.fetchAuditLog(!0)),Ui(o,()=>Iz.auditMethod,e=>Iz.auditMethod=e),z(`change`,p,()=>Iz.fetchAuditLog(!0)),Ui(p,()=>Iz.auditStatusCode,e=>Iz.auditStatusCode=e),z(`change`,E,()=>Iz.fetchAuditLog(!0)),Ui(E,()=>Iz.auditStream,e=>Iz.auditStream=e),z(`click`,re,()=>Iz.clearAuditFilters()),V(e,r),k()}Br([`change`,`click`]);var zz=B(`Live stream connecting…`),Bz=B(` `),Vz=B(`Live`),Hz=B(` `);function Uz(e,t){O(t,!0);let n=A(()=>zD.auditLivePauseReason()),r=A(()=>zD.liveLogsStreaming&&!R(n));var i=Xr(),a=F(i),o=e=>{var t=Hz(),i=P(t);let a;var o=I(i,2),s=e=>{V(e,zz())},c=e=>{var t=Bz(),r=P(t,!0);D(t),L(e=>H(r,e),[()=>DD(R(n))]),V(e,t)},l=e=>{V(e,Vz())};U(o,e=>{zD.liveLogsStreaming?R(n)?e(c,1):e(l,-1):e(s)}),D(t),L(()=>a=G(i,1,`live-dot svelte-tve6yv`,null,a,{"is-streaming":R(r)})),V(e,t)},s=A(()=>Td.liveLogsVisible());U(a,e=>{R(s)&&e(o)}),V(e,i),k()}var Wz=B(` `),Gz=B(``);function Kz(e,t){O(t,!0);let n=A(()=>[{key:`provider`,text:wf(t.entry)||`-`},{key:`model`,text:t.entry.requested_model||t.entry.model||`-`,mono:!0},{key:`user_path`,text:t.entry.user_path,mono:!0},{key:`request_id`,text:`request_id: `+(t.entry.request_id||`-`),mono:!0},{key:`ip`,text:t.entry.client_ip&&`ip: `+t.entry.client_ip,mono:!0},{key:`auth_key_id`,text:t.entry.auth_key_id&&`auth_key_id: `+t.entry.auth_key_id,mono:!0},{key:`alias`,text:t.entry.alias_used&&`alias`,class:`audit-alias-badge`},{key:`resolved`,text:t.entry.alias_used&&t.entry.resolved_model&&`resolved: `+Df(t.entry),mono:!0},{key:`failover`,text:tz(t.entry)&&`failover: `+tz(t.entry),mono:!0},{key:`stream`,text:t.entry.stream&&`stream`},{key:`error_type`,text:t.entry.error_type}].filter(e=>!!e.text));var r=Gz(),i=I(P(r),2);W(i,21,()=>R(n),e=>e.key,(e,t)=>{var n=Wz(),r=P(n,!0);D(n),L(()=>{G(n,1,Ni([`provider-badge`,R(t).class,{mono:R(t).mono}]),`svelte-hyopt0`),H(r,R(t).text)}),V(e,n)}),D(i),D(r),V(e,r),k()}var qz=B(``),Jz=B(` `);function Yz(e,t){O(t,!0);let n=A(()=>cz(t.entry)),r=A(()=>R(n).length>0?uz(t.entry):``),i=A(()=>R(n).length>0?lz(t.entry):``);var a=Xr(),o=F(a),s=e=>{var a=Jz(),o=P(a);W(o,21,()=>R(n),e=>t.entry.id+`-pip-`+e.seq,(e,t)=>{var n=qz();let r;L(e=>{r=G(n,1,`audit-attempt-pip svelte-1eu22xn`,null,r,{"audit-attempt-success":!!(R(t)&&R(t).success),"audit-attempt-error":!(R(t)&&R(t).success)}),K(n,`title`,e)},[()=>dz(R(t))]),V(e,n)}),D(o);var s=I(o,2),c=P(s,!0);D(s),D(a),L(()=>{K(a,`title`,R(r)),K(a,`aria-label`,R(r)),H(c,R(i))}),V(e,a)};U(o,e=>{R(n).length>0&&e(s)}),V(e,a),k()}var Xz=new Set([`instructions`,`messages`,`input`,`previous_response_id`,`choices`,`output`]);function Zz(e){if(!e||typeof e!=`object`)return``;let t=String(e.type||``).toLowerCase();if(t===`image`||t===`image_url`||t===`input_image`||t===`output_image`)return`[Image]`;if(t===`audio`||t===`input_audio`||t===`output_audio`)return`[Audio]`;if(t===`file`||t===`input_file`||t===`output_file`){let t=String(e.filename||e.name||``).trim();return t?`[File: `+t+`]`:`[File]`}return typeof e.refusal==`string`?e.refusal:``}function Qz(e){if(e==null)return``;if(typeof e==`string`)return e.trim();if(Array.isArray(e))return e.map(e=>typeof e==`string`?e:!e||typeof e!=`object`?``:typeof e.text==`string`?e.text:typeof e.output_text==`string`?e.output_text:Zz(e)).filter(Boolean).join(` -`).trim();if(typeof e==`object`){if(typeof e.text==`string`)return e.text.trim();try{return JSON.stringify(e,null,2)}catch{return``}}return String(e).trim()}function $z(e){return!e||typeof e!=`object`?``:Qz(e.content)||(typeof e.refusal==`string`?e.refusal.trim():``)}function eB(e){if(e==null)return[];if(typeof e==`string`)return e?[e]:[];if(Array.isArray(e))return e.flatMap(e=>typeof e==`string`?e?[e]:[]:!e||typeof e!=`object`?[]:typeof e.text==`string`?e.text?[e.text]:[]:typeof e.output_text==`string`&&e.output_text?[e.output_text]:[]);if(typeof e==`object`)return typeof e.text==`string`&&e.text?[e.text]:[];let t=String(e);return t?[t]:[]}function tB(e){if(e==null)return[];if(Array.isArray(e))return e.flatMap(tB);if(typeof e==`object`)return Object.entries(e).flatMap(([e,t])=>[e,...tB(t)]);let t=String(e);return t?[t]:[]}function nB(e){return QB(e).flatMap(e=>[...e.name?[String(e.name)]:[],...tB(e.arguments)])}function rB(e){return Array.isArray(e)?e.flatMap(e=>e&&typeof e==`object`&&e.type===`tool_use`?nB([e]):eB(e)):eB(e)}function iB(e){let t=e&&e.usage?e.usage.estimated_cached_characters:null;if(t==null)return null;let n=Number(t);return Number.isFinite(n)&&n>0?Math.floor(n):0}function aB(e,t){if(!e)return null;let n=(Array.isArray(t)?t:[]).reduce((e,t)=>e+String(t||``).length,0),r=Math.min(String(e).length,n);return r>0?{total:r}:null}function oB(e){let t=e&&e.arguments!==void 0?e.arguments:``,n=``;if(typeof t==`string`)n=t;else try{n=JSON.stringify(t)}catch{n=String(t)}return(String(e&&e.name||``)+`(`+n+`)`).length}function sB(e){return{characters:(Array.isArray(e)?e:[]).map(oB)}}function cB(e,t){let n=Math.max(0,Number(t||0));return e.map(e=>{if(!e||e.role===`error`)return e;let t=Math.max(0,Number(e._promptTextCharacters||0)),r=Math.min(n,t);n-=r;let i=0;(Array.isArray(e._toolPromptCharacters)?e._toolPromptCharacters:[]).forEach(e=>{let t=Math.max(0,Number(e||0)),r=Math.min(n,t);n-=r,i+=r});let a=t+(e._toolPromptCharacters||[]).reduce((e,t)=>e+Math.max(0,Number(t||0)),0);return{...e,promptCacheRatio:a>0?(r+i)/a:0}})}function lB(e){if(e==null)return[];if(typeof e==`string`){let t=e.trim();return t?[{role:`user`,text:t}]:[]}if(!Array.isArray(e)){let t=Qz(e);return t?[{role:`user`,text:t}]:[]}return e.map(e=>{if(!e||typeof e!=`object`)return null;let t=String(e.role||`user`).toLowerCase(),n=Qz(e.content);return n?{role:t,text:n}:null}).filter(Boolean)}function uB(e){return $z(e)}function dB(e){if(!e||typeof e!=`object`)return[];let t=[];return t.push(...eB(e.instructions)),Array.isArray(e.messages)&&e.messages.forEach(e=>{!e||typeof e!=`object`||(t.push(...rB(e.content)),t.push(...nB(e.tool_calls)))}),typeof e.input==`string`?t.push(e.input):Array.isArray(e.input)?e.input.forEach(e=>{if(!(!e||typeof e!=`object`)){if(e.type===`function_call`||e.type===`tool_use`){t.push(...nB([e]));return}t.push(...rB(e.content)),typeof e.text==`string`&&t.push(e.text)}}):e.input&&typeof e.input==`object`&&(t.push(...eB(e.input.content)),typeof e.input.text==`string`&&t.push(e.input.text)),t.map(e=>String(e||``)).filter(e=>e.length>0)}var fB=e=>Qz(e);function pB(e){if(!e||!e.data)return``;let t=wR(e.data.response_body,0,fB);if(t)return t;let n=e.data.error_message;if(n==null)return``;if(typeof n==`string`){let e=n.trim();return e?wR(SR(e),0,fB)||e:``}return wR(n,0,fB)||Qz(n)}function mB(e){return Array.isArray(e)?e.some(e=>!e||typeof e!=`object`?!1:e.type===`message`||e.role===`assistant`||e.role===`user`||e.role===`system`?!0:Array.isArray(e.content)?e.content.some(e=>!e||typeof e!=`object`?!1:typeof e.text==`string`||e.type===`output_text`||e.type===`input_text`):!1):!1}function hB(e){if(!e)return!1;let t=String(e).toLowerCase();return t===`/v1/embeddings`||t===`/v1/embeddings/`||t.startsWith(`/v1/embeddings?`)||t.startsWith(`/v1/embeddings/`)}function gB(e){return e?!!vB(e):!1}function _B(e){let t=String(e||``).trim().split(`?`)[0].replace(/\/+$/,``).toLowerCase();return t.startsWith(`/v1/`)?t.slice(3):t}function vB(e){switch(_B(e)){case`/chat/completions`:return`chat`;case`/responses`:return`responses`;case`/messages`:return`messages`;default:return``}}function yB(e){if(!e||typeof e!=`object`)return null;try{return JSON.parse(JSON.stringify(e))}catch{return null}}function bB(e,t){if(!t||typeof t!=`object`)return;let n=e[e.length-1];try{if(n&&JSON.stringify(n)===JSON.stringify(t))return}catch{}e.push(t)}function xB(e){let t=vB(e&&e.path),n=e&&e.data&&e.data.request_body;return!t||!n||typeof n!=`object`?!1:t!==`responses`||(e.data&&e.data.response_body&&typeof e.data.response_body.id==`string`?e.data.response_body.id.trim():``)!==``||aV(n)!==``}function SB(e,t){let n=String(t||``).trim(),r=vB(e&&e.path),i=yB(e&&e.data&&e.data.request_body);if(!n||!r||!i)return null;let a=e&&e.data?e.data.response_body:null;if(r===`responses`){let e=a&&typeof a.id==`string`?a.id.trim():``,t=aV(i);return!e&&!t?null:(i.input=n,e&&!t?i.previous_response_id=e:delete i.previous_response_id,i)}let o=Array.isArray(i.messages)?i.messages:[];if(r===`chat`){let e=a&&Array.isArray(a.choices)?a.choices[0]:null;e&&e.message&&bB(o,yB(e.message)),o.push({role:`user`,content:n})}else a&&a.content!==void 0&&bB(o,{role:String(a.role||`assistant`),content:yB(a.content)||a.content}),o.push({role:`user`,content:n});return i.messages=o,i}var CB=new Set(`authorization.proxy-authorization.cookie.content-type.content-length.host.accept.connection.accept-encoding.content-encoding.transfer-encoding.user-agent.date.expect.upgrade.via.te.trailer.keep-alive.origin.referer.forwarded.x-real-ip.traceparent.tracestate.x-request-id.idempotency-key.x-idempotency-key.x-gomodel-timezone.x-gomodel-interaction-parent`.split(`.`));function wB(e,t,n=``){let r=e&&e.data&&e.data.request_headers,i={};return r&&typeof r==`object`&&Object.keys(r).forEach(e=>{let t=String(e).toLowerCase(),n=String(r[e]==null?``:r[e]);!e||!n||n===`[REDACTED]`||CB.has(t)||t.startsWith(`sec-`)||t.startsWith(`cf-`)||t.startsWith(`x-forwarded-`)||(i[e]=n)}),i[`X-GoModel-Interaction-Parent`]=String(t||e&&e.id||``).trim(),String(n||``).trim()&&(i[`X-Request-ID`]=String(n).trim()),i}function TB(e,t){let n=String(t||``).trim();return!n||!Array.isArray(e)?null:e.find(e=>String(e&&e.request_id||``).trim()===n)||null}function EB(e,t,n,r,i){let a=Array.isArray(e)?e:[],o=String(i&&i.id||``).trim(),s=String(i&&i.request_id||``).trim(),c=String(i&&i.session_id||``).trim(),l=String(r||``).trim(),u=DB(i),d=a.some(e=>o&&String(e&&e.id||``).trim()===o||s&&String(e&&e.request_id||``).trim()===s),f=!!l&&s===l,p=!!n&&c===String(n).trim(),m=!!u&&(u===String(t||``).trim()||a.some(e=>String(e&&e.id||``).trim()===u)),h=d||f||!l&&(p||m);return{accepted:h,submittedChild:f,followUpRequestID:h&&f&&o?``:l}}function DB(e){let t=e&&e.data&&e.data.request_headers;if(!t||typeof t!=`object`)return``;let n=Object.keys(t).find(e=>e.toLowerCase()===`x-gomodel-interaction-parent`);return n?String(t[n]||``).trim():``}function OB(e,t){return!Array.isArray(e)||!t?null:e.find(e=>String(e&&e.id||``)===String(t))||null}function kB(e){return!Array.isArray(e)||e.length===0?null:e.reduce((e,t)=>e?oV(t,e)>=0?t:e:t,null)}function AB(e,t){let n=new Set(Array.isArray(t)?t.map(String):[]);return kB((Array.isArray(e)?e:[]).filter(e=>{let t=String(e&&e.id||``);return n.has(t)&&e&&e.data&&e.data.request_body!=null}))}function jB(e,t){let n=kB(e);return!!n&&String(n.id||``)===String(t||``)}function MB(e,t,n){return String(e||``).trim()===`audit.flushed`&&String(t||``).trim()!==``&&String(t||``).trim()===String(n||``).trim()}function NB(e,t){let n=Array.isArray(e)?e.filter(Boolean).map(String):[];return(Array.isArray(t)?t:[]).forEach(e=>{let t=String(e&&(e.id||e.request_id)||``).trim();t&&!n.includes(t)&&n.push(t)}),n}function PB(e){if(e&&e.conversation_payload)return!0;let t=e&&e.data?e.data.request_body:null,n=e&&e.data?e.data.response_body:null,r=t&&(Array.isArray(t.messages)||t.input!==void 0||typeof t.instructions==`string`||typeof t.previous_response_id==`string`),i=n&&(Array.isArray(n.choices)||mB(n.output));return!!(r||i)}function FB(e){return!e||hB(e.path)?!1:gB(e.path)||PB(e)}function IB(e){let t=0,n=!1,r=!1,i=String(e||``);for(let e=0;e0&&a+1`,`>`).replaceAll(`"`,`"`).replaceAll(`'`,`'`)}function BB(e){return!!(e&&typeof e==`object`&&e.__audio__===!0)}function VB(e){let t=Number(e||0);if(!Number.isFinite(t)||t<=0)return`0 B`;let n=[`B`,`KB`,`MB`,`GB`],r=0,i=t;for(;i>=1024&&r`
            `+zB(t)+``+zB(UB(e[t]))+`
            `);return t.length?``:``}function GB(e){let t=HB(e.content_type),n=zB(t+` · `+VB(e.bytes)),r=WB(e.meta);if(e.stored&&e.encoding===`base64`&&e.data){let i=String(e.data).replace(/[^A-Za-z0-9+/=]/g,``);return`
            `+n+`
            `+r+`
            `}let i=e.too_large?`Audio too large to store.`:`Audio not logged. Set LOGGING_LOG_AUDIO_BODIES=true to capture playable audio.`;return`
            `+n+`
            `+zB(i)+`
            `+r+`
            `}function KB(e){try{return JSON.stringify(String(e)).slice(1,-1)}catch{return``}}function qB(e){if(!e||typeof e!=`object`)return null;let t=Number(e.characters||0);if(!Number.isFinite(t)||t<=0)return null;let n=Array.isArray(e.segments)?e.segments.map(e=>String(e||``)).filter(Boolean):[];return n.length===0?null:{remaining:Math.floor(t),segments:n,segmentIndex:0}}function JB(e,t){if(!t||t.remaining<=0||t.segmentIndex>=t.segments.length)return zB(e);let n=``,r=0,i=0;for(;t.remaining>0&&t.segmentIndex`+zB(l)+``,r=s+l.length,i=s+o.length,t.remaining-=c,c>=a.length){t.segmentIndex++;continue}break}return n?n+zB(e.slice(r)):zB(e)}function YB(e,t,n){let r=n&&typeof n.formatJSON==`function`?n.formatJSON:e=>String(e),i=n&&typeof n.canShowConversation==`function`?n.canShowConversation:()=>!1,a=qB(n&&n.promptCacheHighlight),o=r(t);if(!o||o===`Not captured`)return zB(o);if(!i(e))return o.split(` -`).map(e=>JB(e,a)).join(` -`);let s=o.split(` -`),c=[],l=0;for(;lJB(e,a)).join(` -`);c.push(``+o+``),l=r+1;continue}c.push(JB(e,a)),l++}return c.join(` -`)}function XB(e){let t=String(e||``).toLowerCase();return t===`system`||t===`developer`?{role:`system`,label:`System Prompt`,className:`role-system`}:t===`assistant`?{role:`assistant`,label:`Agent`,className:`role-assistant`}:t===`error`?{role:`error`,label:`Error`,className:`role-error`}:t===`function_call`?{role:`function_call`,label:`Function Call`,className:`role-function-call`}:t===`function_result`?{role:`function_result`,label:`Function Result`,className:`role-function-result`}:{role:`user`,label:`User`,className:`role-user`}}function ZB(e,t,{timestamp:n,entryID:r,isAnchor:i,isAfterAnchor:a,index:o,toolCalls:s,functionName:c,functionCallID:l,promptCache:u,toolPromptCache:d}){let f=XB(e),p=u&&Number.isFinite(Number(u.total))?Math.max(0,Number(u.total)):u===null?0:String(t||``).length,m=d&&Array.isArray(d.characters)?d.characters:sB(s).characters;return{uid:r+`-`+o,entryID:r,timestamp:n,text:t,role:f.role,roleLabel:f.label,roleClass:f.className,isAnchor:i,isAfterAnchor:a,toolCalls:Array.isArray(s)&&s.length>0?s:null,functionName:c||``,functionCallID:l||``,promptCacheRatio:0,_promptTextCharacters:p,_toolPromptCharacters:m}}function QB(e){return Array.isArray(e)?e.map(e=>{if(!e)return null;let t=e.function||e,n=``;return t.arguments===void 0?e.arguments===void 0?t.input===void 0?e.input!==void 0&&(n=e.input):n=t.input:n=e.arguments:n=t.arguments,{name:t.name||e.name||``,arguments:n,id:e.call_id||e.id||``}}).filter(Boolean):[]}function $B(e){return Array.isArray(e)?QB(e.filter(e=>e&&typeof e==`object`&&e.type===`tool_use`)):[]}function eV(e){return Array.isArray(e)?e.filter(e=>e&&typeof e==`object`&&e.type===`tool_result`).map(e=>({id:e.tool_use_id||e.call_id||``,text:Qz(e.content)})):[]}function tV(e,t,n){!t||!n||[t.call_id,t.id].forEach(t=>{t&&(e[t]=n)})}function nV(e,t,n){if(t&&Array.isArray(t.messages)&&t.messages.forEach(t=>{t&&[...Array.isArray(t.tool_calls)?t.tool_calls:[],...Array.isArray(t.content)?t.content.filter(e=>e&&e.type===`tool_use`):[]].forEach(t=>{t&&tV(e,t,(t.function||t).name||t.name||``)})}),t&&Array.isArray(t.input)&&t.input.forEach(t=>{!t||typeof t!=`object`||t.type!==`function_call`&&t.type!==`tool_use`||tV(e,t,t.name||``)}),n&&Array.isArray(n.choices)){let t=n.choices[0];t&&t.message&&Array.isArray(t.message.tool_calls)&&t.message.tool_calls.forEach(t=>{t&&tV(e,t,(t.function||t).name||t.name||``)})}n&&Array.isArray(n.output)&&n.output.forEach(t=>{!t||t.type!==`function_call`&&t.type!==`tool_use`||tV(e,t,t.name||``)}),n&&Array.isArray(n.content)&&n.content.forEach(t=>{!t||t.type!==`tool_use`||tV(e,t,t.name||``)})}function rV(e){return Array.isArray(e)?`[`+e.map(rV).join(`,`)+`]`:e&&typeof e==`object`?`{`+Object.keys(e).sort().map(t=>JSON.stringify(t)+`:`+rV(e[t])).join(`,`)+`}`:JSON.stringify(e)}function iV(e){if(!e||typeof e!=`object`)return null;let t=[];if(e.system!==void 0&&t.push({system:e.system}),e.instructions!==void 0&&t.push({instructions:e.instructions}),Array.isArray(e.messages))t.push(...e.messages);else if(Array.isArray(e.input)&&e.previous_response_id==null&&e.conversation==null)t.push(...e.input);else return null;return t.map(rV)}function aV(e){let t=e&&e.conversation;return typeof t==`string`?t.trim():t&&typeof t.id==`string`?t.id.trim():``}function oV(e,t){let n=new Date(e&&e.timestamp).getTime(),r=new Date(t&&t.timestamp).getTime();if(Number.isFinite(n)&&Number.isFinite(r)&&n!==r)return n-r;let i=String(e&&e.timestamp||``).localeCompare(String(t&&t.timestamp||``));if(i!==0)return i;let a=String(e&&e.id||``),o=String(t&&t.id||``);return ao)}function sV(e,t){if(!Array.isArray(e)||e.length===0)return{messages:[],entryIDs:[]};let n=[...e].sort(oV),r={};n.forEach(e=>{let t=e.data&&e.data.request_body?e.data.request_body:null,n=e.data&&e.data.response_body?e.data.response_body:null;nV(r,t,n)});let i=[],a=new Set,o=new Set,s=new Set,c=[],l=null,u=0,d=n.findIndex(e=>e.id===t),f=e=>JSON.stringify({role:e.role,text:e.text,toolCalls:e.toolCalls,functionName:e.functionName,functionCallID:e.functionCallID});return n.forEach((e,n)=>{let p=e.id===t,m=d>=0&&n>d,h=e.timestamp,g=e.data&&e.data.request_body?e.data.request_body:null,_=e.data&&e.data.response_body?e.data.response_body:null,v=i.length,y=(e,t)=>aB(e,t),b=e=>sB(e),x=(t,n,{toolCalls:r,functionName:i,functionCallID:a,promptCache:o,toolPromptCache:s}={})=>ZB(t,n,{timestamp:h,entryID:e.id,isAnchor:p,isAfterAnchor:m,index:++u,toolCalls:r,functionName:i,functionCallID:a,promptCache:o,toolPromptCache:s});if(g&&g.system!==void 0){let e=Qz(g.system);e&&i.push(x(`system`,e,{promptCache:y(e,eB(g.system))}))}if(g&&g.instructions!==void 0){let e=Qz(g.instructions);e&&i.push(x(`system`,e,{promptCache:y(e,eB(g.instructions))}))}g&&Array.isArray(g.messages)&&g.messages.forEach(e=>{if(!e)return;let t=(e.role||`user`).toLowerCase();if(t===`tool`){let t=Qz(e.content),n=e.name||r[e.tool_call_id]||``;t&&i.push(x(`function_result`,t,{functionName:n,functionCallID:e.tool_call_id||``,promptCache:y(t,eB(e.content))}));return}if(t===`assistant`){let n=$z(e),r=[...QB(e.tool_calls),...$B(e.content)];if(n||r.length>0){let a=y(n,eB(e.content));i.push(x(t,n,{toolCalls:r,promptCache:a,toolPromptCache:b(r)}))}return}eV(e.content).forEach(e=>{e.text&&i.push(x(`function_result`,e.text,{functionName:r[e.id]||``,functionCallID:e.id,promptCache:y(e.text,[e.text])}))});let n=$z(e);n&&i.push(x(t,n,{promptCache:y(n,eB(e.content))}))}),g&&g.input!==void 0&&(Array.isArray(g.input)?g.input.forEach(e=>{if(!(!e||typeof e!=`object`)){if(e.type===`function_call_output`||e.type===`tool_result`){let t=e.type===`tool_result`,n=t?e.content:e.output,a=t?e.tool_use_id||e.call_id||``:e.call_id||``,o=typeof n==`string`?n:Qz(n);o&&i.push(x(`function_result`,o,{functionName:r[a]||e.name||``,functionCallID:a,promptCache:y(o,t?eB(e.content):[o])}))}else if(e.type===`function_call`||e.type===`tool_use`){let t=QB([e]);i.push(x(`function_call`,``,{toolCalls:t,toolPromptCache:b(t)}))}else if(e.role){let t=String(e.role).toLowerCase(),n=Qz(e.content);n&&i.push(x(t,n,{promptCache:y(n,eB(e.content))}))}}}):lB(g.input).forEach(e=>{if(!e.text)return;let t=[];typeof g.input==`string`?t=[g.input]:g.input&&typeof g.input==`object`&&(t=eB(g.input.content),typeof g.input.text==`string`&&t.push(g.input.text)),i.push(x(e.role,e.text,{promptCache:y(e.text,t)}))}));let S=i.splice(v),C=S.map(f),w=iV(g),T=w!==null,E=DB(e),ee=!!E&&a.has(E),te=String(g&&g.previous_response_id||``).trim(),ne=aV(g),re=ee||!!te&&o.has(te)||!!ne&&s.has(ne);if(m){let e=T&&l&&l.length>0&&l.every((e,t)=>w[t]===e);if(T&&!e&&!ee||!T&&!re)return}p&&T&&(l=[...w]);let ie=String(e.id||``).trim();p&&(a.clear(),o.clear(),s.clear()),ie&&(p||m)&&a.add(ie),ne&&s.add(ne);let ae=0;for(;ae0;){let t=c.slice(-e),n=C.slice(0,e);if(t.every((e,t)=>e===n[t]))break;e--}i.push(...S.slice(e)),c.push(...C.slice(e))}let oe=iB(e);if(g&&oe!==null&&i.splice(0,i.length,...cB(i,oe)),_&&Array.isArray(_.choices)){let e=_.choices[0];if(e&&e.message){let t=(e.message.role||`assistant`).toLowerCase(),n=$z(e.message),r=QB(e.message.tool_calls);if(n||r.length>0){let e=x(t,n,{toolCalls:r});i.push(e),c.push(f(e))}}}if(_&&Array.isArray(_.output)&&_.output.forEach(e=>{if(!e)return;if(e.type===`function_call`||e.type===`tool_use`){let t=x(`function_call`,``,{toolCalls:QB([e])});i.push(t),c.push(f(t));return}let t=(e.role||`assistant`).toLowerCase(),n=uB(e);if(n){let e=x(t,n);i.push(e),c.push(f(e))}}),_&&_.content!==void 0&&!Array.isArray(_.choices)&&!Array.isArray(_.output)){let e=String(_.role||`assistant`).toLowerCase(),t=Qz(_.content),n=$B(_.content);if(t||n.length>0){let r=x(e,t,{toolCalls:n});i.push(r),c.push(f(r))}}let se=pB(e);se&&i.push(x(`error`,se));let ce=String(_&&_.id||``).trim();ce&&o.add(ce)}),{messages:i,entryIDs:[...a]}}function cV(e){return e.role===`function_call`?(e.toolCalls||[]).map(function(e){return e.name+`(`+uV(e)+`)`}).join(` - -`):e.text||``}function lV(e){return e?[String(e.text||``),Array.isArray(e.toolCalls)&&e.toolCalls.length>0?cV({role:`function_call`,toolCalls:e.toolCalls}):``].filter(Boolean).join(` - -`):``}function uV(e){let t=e&&e.arguments!==void 0?e.arguments:``;if(typeof t!=`string`)try{return JSON.stringify(t,null,2)}catch{return String(t)}try{return JSON.stringify(JSON.parse(t),null,2)}catch{return t}}var dV=600*1e3,fV=15*1e3,pV=250,mV=class{#e=j(!1);get conversationOpen(){return R(this.#e)}set conversationOpen(e){M(this.#e,e,!0)}#t=j(!1);get conversationLoading(){return R(this.#t)}set conversationLoading(e){M(this.#t,e,!0)}#n=j(``);get conversationError(){return R(this.#n)}set conversationError(e){M(this.#n,e,!0)}#r=j(``);get conversationAnchorID(){return R(this.#r)}set conversationAnchorID(e){M(this.#r,e,!0)}#i=j(N([]));get conversationEntryIDs(){return R(this.#i)}set conversationEntryIDs(e){M(this.#i,e,!0)}#a=j(``);get conversationSessionID(){return R(this.#a)}set conversationSessionID(e){M(this.#a,e,!0)}#o=j(!1);get conversationTruncated(){return R(this.#o)}set conversationTruncated(e){M(this.#o,e,!0)}#s=j(!1);get conversationFollowLatest(){return R(this.#s)}set conversationFollowLatest(e){M(this.#s,e,!0)}#c=j(``);get conversationOpenedFromID(){return R(this.#c)}set conversationOpenedFromID(e){M(this.#c,e,!0)}#l=j(``);get followUpText(){return R(this.#l)}set followUpText(e){M(this.#l,e,!0)}#u=j(!1);get followUpSending(){return R(this.#u)}set followUpSending(e){M(this.#u,e,!0)}#d=j(``);get followUpError(){return R(this.#d)}set followUpError(e){M(this.#d,e,!0)}followUpRequestID=``;followUpAbort=null;conversationRequestToken=0;conversationReturnFocusEl=null;bodyPointerStart=null;#f=j(null);get conversationDialogEl(){return R(this.#f)}set conversationDialogEl(e){M(this.#f,e,!0)}#p=j(null);get conversationCloseBtnEl(){return R(this.#p)}set conversationCloseBtnEl(e){M(this.#p,e,!0)}#m=j(null);get conversationThreadEl(){return R(this.#m)}set conversationThreadEl(e){M(this.#m,e,!0)}get conversationEntries(){return(this.conversationEntryIDs||[]).map(e=>zD.auditRecord(e)).filter(Boolean)}#h=A(()=>sV(this.conversationEntries,this.conversationAnchorID));get conversationView(){return R(this.#h)}set conversationView(e){M(this.#h,e)}get conversationMessages(){return this.conversationView.messages}get conversationBranchEntryIDs(){return this.conversationView.entryIDs}_setConversationEntryIDs(e){this.conversationEntryIDs=[...new Set((Array.isArray(e)?e:[]).filter(Boolean))],zD.pinAuditRecords(this.conversationEntryIDs)}canShowConversation(e){return FB(e)}startBodyInteraction(e){this.bodyPointerStart={x:e.clientX,y:e.clientY}}_isBodyDrag(e){if(!this.bodyPointerStart)return!1;let t=Math.abs(e.clientX-this.bodyPointerStart.x),n=Math.abs(e.clientY-this.bodyPointerStart.y);return t>4||n>4}_hasActiveSelection(){let e=window.getSelection?window.getSelection():null;return!e||e.isCollapsed?!1:String(e.toString()||``).trim().length>0}handleBodyConversationClick(e,t){let n=this._isBodyDrag(e);if(this.bodyPointerStart=null,n||this._hasActiveSelection()||!this.canShowConversation(t))return;let r=e.target&&e.target.closest?e.target.closest(`[data-conversation-trigger="1"]`):null;r&&(e.preventDefault(),e.stopPropagation(),this.openConversation(t,r))}handleErrorConversationClick(e,t){let n=this._isBodyDrag(e);this.bodyPointerStart=null,!n&&(this._hasActiveSelection()||this.canShowConversation(t)&&(e.preventDefault(),e.stopPropagation(),this.openConversation(t,e.currentTarget)))}formatJSON(e){return pf(e)}renderBodyWithConversationHighlights(e,t,n){return YB(e,t,{formatJSON:e=>this.formatJSON(e),canShowConversation:e=>this.canShowConversation(e),promptCacheHighlight:n&&n.promptCacheHighlight})}async openConversation(e,t){if(!e||!e.id||!this.canShowConversation(e))return;let n=document.activeElement instanceof HTMLElement?document.activeElement:null;t instanceof HTMLElement?this.conversationReturnFocusEl=t:n&&n!==document.body&&(this.conversationReturnFocusEl=n);let r=++this.conversationRequestToken;if(this.conversationOpen=!0,this.conversationError=``,this.conversationAnchorID=e.id,this.conversationOpenedFromID=e.id,this.conversationSessionID=String(e.session_id||``).trim(),this._setConversationEntryIDs([]),this.conversationTruncated=!1,this.conversationFollowLatest=!1,this.followUpText=``,this.followUpError=``,this.followUpRequestID=``,requestAnimationFrame(()=>this._focusConversationDrawer()),this._conversationEntryLivePending(e)){this.conversationFollowLatest=!0,this.conversationLoading=!1,this._addConversationRecord(zD.upsertAuditRecord(e,`conversation.live`));return}this.conversationLoading=!0,await this.fetchConversation(e.id,r,!0,!0)}_conversationEntryLivePending(e){return typeof zD.auditEntryLiveDetailPending==`function`&&zD.auditEntryLiveDetailPending(e)}_applyConversationView(){let e=this.conversationEntries,t=sV(e,this.conversationAnchorID);if(this.conversationFollowLatest){let n=AB(e,t.entryIDs);n&&n.id&&String(n.id)!==this.conversationAnchorID&&(this.conversationAnchorID=String(n.id))}}handleAuditRecordChange(e,t){if(!this.conversationOpen||!e)return;let n=String(e.id||``).trim(),r=EB(this.conversationEntries,this.conversationAnchorID,this.conversationSessionID,this.followUpRequestID,e);if(r.accepted&&(this.followUpRequestID=r.followUpRequestID,n&&r.submittedChild&&(this.conversationAnchorID=n,this.conversationFollowLatest=!0),this._addConversationRecord(e),MB(String(t||e._live_state||``).trim(),n,this.conversationAnchorID))){this.conversationMessages.length===0&&(this.conversationLoading=!0);let e=++this.conversationRequestToken;this.fetchConversation(n,e,!1)}}_addConversationRecord(e){let t=MD(e);t&&!this.conversationEntryIDs.includes(t)&&this._setConversationEntryIDs([...this.conversationEntryIDs,t]),!this.conversationSessionID&&e.session_id&&(this.conversationSessionID=String(e.session_id).trim()),this._applyConversationView(),this.conversationFollowLatest&&this._scheduleLatestScroll()}conversationLiveWaiting(){if(!this.conversationOpen)return!1;let e=new Set(this.conversationBranchEntryIDs||[]);return(this.conversationEntries||[]).some(t=>e.has(String(t&&t.id||``))&&t._live&&(typeof zD.liveAuditStateSettled!=`function`||!zD.liveAuditStateSettled(t._live_state)))}conversationLiveStatusText(){return(this.conversationMessages||[]).length>0?`Model is responding…`:`Waiting for request data…`}closeConversation(){this.followUpAbort&&this.followUpAbort.abort(),this.conversationOpen=!1,this.conversationRequestToken++,this.conversationSessionID=``,this._setConversationEntryIDs([]),this.conversationFollowLatest=!1,this.conversationOpenedFromID=``,this.followUpRequestID=``,this.followUpSending=!1;let e=this.conversationReturnFocusEl;this.conversationReturnFocusEl=null,e&&typeof e.focus==`function`&&document.contains(e)&&requestAnimationFrame(()=>e.focus())}_focusConversationDrawer(){if(!this.conversationOpen)return;let e=this.conversationCloseBtnEl;if(e&&typeof e.focus==`function`){e.focus();return}let t=this.conversationDialogEl;t&&typeof t.focus==`function`&&t.focus()}async fetchConversation(e,t,n=!0,r=!1){try{let i=await bd(`/admin/audit/conversation?`+(`log_id=`+encodeURIComponent(e)+`&limit=120`),{label:`audit conversation`});if(t!==this.conversationRequestToken||i.stale)return;if(!i.ok){this.conversationError=`Unable to load interactions.`;return}let a=i.data||{},o=a.anchor_id||e,s=Array.isArray(a.entries)?a.entries:[],c=zD.upsertAuditRecords(s,`conversation.hydrated`),l=NB(this.conversationEntryIDs,c);l.length>this.conversationEntryIDs.length&&this._setConversationEntryIDs(l),r&&(this.conversationFollowLatest=jB(c,o)),this.conversationAnchorID=o;let u=this.conversationEntries.find(e=>e.id===this.conversationAnchorID);u&&u.session_id&&(this.conversationSessionID=String(u.session_id).trim()),this.conversationTruncated=!!a.truncated,this._applyConversationView(),this.conversationFollowLatest?this._scheduleLatestScroll():n&&this._scheduleAnchorScroll()}catch(e){if(t!==this.conversationRequestToken)return;console.error(`Failed to fetch audit conversation:`,e),this.conversationError=`Failed to load interactions.`}finally{t===this.conversationRequestToken&&(this.conversationLoading=!1)}}selectedConversationEntry(){return OB(this.conversationEntries,this.conversationAnchorID)}followUpKind(){let e=this.selectedConversationEntry();return xB(e)?vB(e.path):``}canSendFollowUp(){return!!this.followUpKind()&&!!String(this.followUpText||``).trim()&&!this.followUpSending&&!this.conversationLiveWaiting()}async sendFollowUp(){if(!this.canSendFollowUp())return;let e=this.selectedConversationEntry(),t=SB(e,this.followUpText);if(!e||!t)return;let n=this.conversationAnchorID,r=gV(),i=new AbortController,a=!1,o=setTimeout(()=>{a=!0,i.abort()},dV);this.followUpSending=!0,this.followUpError=``,this.followUpRequestID=r,this.followUpAbort=i;try{let a=wB(e,n,r),o=await vd(e.path,{method:`POST`,headers:a,body:JSON.stringify(t),signal:i.signal}),s=String(o.headers.get(`X-Request-ID`)||``).trim();if(s&&this.followUpRequestID&&(this.followUpRequestID=s),!o.ok){let e=`Unable to send message.`;try{let t=await o.json();e=t&&t.error&&t.error.message||e}catch{}this.followUpError=e,(this.followUpRequestID===r||this.followUpRequestID===s)&&(this.followUpRequestID=``);return}if(this.followUpText=``,await hV(o),!zD.liveLogsStreaming&&this.conversationOpen){let e=++this.conversationRequestToken;await this._selectPersistedFollowUp(n,this.followUpRequestID,e,i.signal)}}catch(e){Sd(e)||i.signal.aborted?a&&this.conversationOpen&&(this.followUpError=`The request timed out.`):(console.error(`Failed to send interaction follow-up:`,e),this.followUpError=`Failed to send message.`)}finally{clearTimeout(o),this.followUpAbort===i&&(this.followUpAbort=null,this.followUpSending=!1)}}async _selectPersistedFollowUp(e,t,n,r){let i=Date.now()+fV;for(;this.conversationOpen&&n===this.conversationRequestToken&&Date.now(){let e=this.conversationThreadEl;if(!e)return;let t=e.querySelectorAll(`[data-conversation-anchor="true"]`),n=t[t.length-1];n&&typeof n.scrollIntoView==`function`&&n.scrollIntoView({block:`center`})})}_scheduleLatestScroll(){requestAnimationFrame(()=>{let e=this.conversationThreadEl;if(!e)return;let t=e.lastElementChild;t&&typeof t.scrollIntoView==`function`&&t.scrollIntoView({block:`end`})})}};async function hV(e){let t=e&&e.body&&typeof e.body.getReader==`function`?e.body.getReader():null;if(!t){await e.text();return}for(;!(await t.read()).done;);}function gV(){return globalThis.crypto&&typeof globalThis.crypto.randomUUID==`function`?globalThis.crypto.randomUUID():`dashboard-`+Date.now().toString(36)+`-`+Math.random().toString(36).slice(2)}function _V(e,t){return new Promise((n,r)=>{let i,a=()=>{clearTimeout(i),r(new DOMException(`Aborted`,`AbortError`))};if(i=setTimeout(()=>{t&&t.removeEventListener(`abort`,a),n()},e),t){if(t.aborted){a();return}t.addEventListener(`abort`,a,{once:!0})}})}var vV=new mV,yV=0;An(()=>{On(()=>{let e=PD(zD.auditRecordChanges,yV);e.length!==0&&(yV=Number(e[e.length-1].version||0),wr(()=>{e.forEach(e=>{if(!FD(e))return;let t=zD.auditRecord(e.key);vV.handleAuditRecordChange(t,e.eventType)})}))})});var bV=B(``),xV=B(` `),SV=B(` `),CV=B(``),wV=B(`
            `);function TV(e,t){O(t,!0);let n=q(t,`thread`,3,null),r=q(t,`expanded`,3,!1),i=q(t,`onactivate`,3,null),a=q(t,`hidePath`,3,!1),o=A(()=>md.formatTimestamp(t.entry.timestamp)),s=A(()=>R(o)===`-`?R(o):R(o).slice(R(o).lastIndexOf(` `)+1)),c=A(()=>vV.conversationOpen&&String(vV.conversationAnchorID||``)===String(t.entry.id||``));function l(e){e.preventDefault(),i()&&i()()}function u(e){e.stopPropagation(),e.preventDefault(),n().ontoggle()}function d(){return`Session with `+Number(n().count||1)+` requests`}function f(e){if(e.stopPropagation(),e.preventDefault(),R(c)){vV.closeConversation();return}vV.openConversation(t.entry,e.currentTarget)}var p=wV();let m;var h=P(p),g=P(h),_=e=>{var t=bV(),r=P(t);{let e=A(()=>n().expanded?Rl:Bl);J(r,{get icon(){return R(e)},class:`audit-thread-expander-svg`})}var i=I(r,2),a=P(i,!0);D(i),D(t),L((e,r)=>{K(t,`aria-expanded`,n().expanded),K(t,`title`,e),K(t,`aria-label`,r),H(a,n().count)},[()=>d(),()=>d()+`, `+(n().expanded?`collapse`:`expand`)]),z(`click`,t,u),V(e,t)};U(g,e=>{n()&&e(_)});var v=I(g,2),y=P(v),b=P(y,!0);D(y);var x=I(y,2),S=P(x,!0);D(x),D(v);var C=I(v,2),w=e=>{var n=xV(),r=P(n,!0);D(n),L(e=>H(r,e),[()=>Of(t.entry)]),V(e,n)};U(C,e=>{(t.entry.requested_model||t.entry.model)&&e(w)});var T=I(C,2),E=e=>{var n=SV(),r=P(n,!0);D(n),L(()=>H(r,t.entry.path||`-`)),V(e,n)};U(T,e=>{a()||e(E)}),D(h);var ee=I(h,2),te=P(ee);Yz(te,{get entry(){return t.entry}});var ne=I(te,2),re=P(ne),ie=P(re,!0);D(re);var ae=I(re,2),oe=P(ae,!0);D(ae),D(ne);var se=I(ne,2),ce=P(se,!0);D(se);var le=I(se,2),ue=e=>{var t=CV();let n;var r=P(t);{let e=A(()=>R(c)?zl:Bl);J(r,{get icon(){return R(e)},class:`audit-conversation-trigger-svg`})}D(t),L(()=>{n=G(t,1,`audit-conversation-trigger svelte-17mysgz`,null,n,{"audit-conversation-trigger-active":R(c)}),K(t,`title`,R(c)?`Close interactions`:`Open interactions`),K(t,`aria-label`,R(c)?`Close interactions`:`Open interactions`),K(t,`aria-pressed`,R(c))}),z(`click`,t,f),V(e,t)},de=A(()=>vV.canShowConversation(t.entry));U(le,e=>{R(de)&&e(ue)}),D(ee),D(p),L((e,n,i,a)=>{m=G(p,1,`audit-entry-summary svelte-17mysgz`,null,m,e),K(p,`aria-expanded`,r()),G(v,1,`audit-status-badge audit-request-badge ${n??``}`,`svelte-17mysgz`),K(v,`title`,`Status `+(t.entry.status_code||`-`)+` · `+(t.entry.method||`-`)),K(v,`aria-label`,(t.entry.status_code||`-`)+` `+(t.entry.method||`-`)),H(b,t.entry.status_code||`-`),H(S,t.entry.method||`-`),K(ne,`title`,i),K(ne,`aria-label`,R(o)),H(ie,R(o)),H(oe,R(s)),H(ce,a)},[()=>({"audit-entry-summary-live-in-progress":ez(t.entry),"audit-entry-summary-has-interactions":vV.canShowConversation(t.entry)}),()=>$R(t.entry.status_code),()=>Sf(t.entry.timestamp),()=>QR(t.entry.duration_ns)]),z(`click`,p,l),V(e,p),k()}Br([`click`]);var EV=B(``);function DV(e,t){O(t,!0);let n=q(t,`label`,3,`Copy`),r=q(t,`copiedLabel`,3,`Copied`),i=q(t,`errorLabel`,3,``),a=q(t,`class`,3,`btn`),o=A(()=>t.state.error&&i()?i():t.state.copied?r():n());var s=EV();let c;var l=P(s),u=e=>{J(e,{get icon(){return Hl},width:`14`,height:`14`,"stroke-width":`2.5`})},d=e=>{J(e,{get icon(){return Gl},width:`14`,height:`14`})};U(l,e=>{t.state.copied?e(u):e(d,-1)});var f=I(l,2),p=P(f,!0);D(f),D(s),L(()=>{c=G(s,1,Ni([`copy-feedback-btn`,a()]),null,c,{"copy-feedback-btn-copied":t.state.copied}),H(p,R(o))}),z(`click`,s,e=>{e.preventDefault(),t.onclick?.(e)}),V(e,s),k()}Br([`click`]);var OV=B(`
            Error Message
             
            `),kV=B(`
             
            `),AV=B(` `),jV=B(` streaming`),MV=B(`
            Body
            `),NV=B(`

            `),PV=B(`

            `),FV=B(`

            `),IV=B(`
            `);function LV(e,t){O(t,!0);let n=OI({logPrefix:`Failed to copy audit payload:`}),r=OI({logPrefix:`Failed to copy audit payload:`}),i=A(()=>t.pane&&t.pane.showHeaders?pf(t.pane.headers):``),a=A(()=>!t.pane||!t.pane.showBody?``:BB(t.pane.body)?GB(t.pane.body):vV.renderBodyWithConversationHighlights(t.pane.entry,t.pane.body,{promptCacheHighlight:t.pane.promptCacheHighlight})),o=A(()=>!!(t.pane&&vV.canShowConversation(t.pane.entry)));function s(e){e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),vV.handleErrorConversationClick(e,t.pane.entry))}var c=IV();let l;var u=P(c),d=e=>{var n=OV(),r=I(P(n),2);let i;var a=P(r,!0);D(r),D(n),L(()=>{i=G(r,1,`audit-json audit-pane-error-message svelte-1h5puht`,null,i,{"audit-pane-clickable-preview":R(o)}),K(r,`role`,R(o)?`button`:null),K(r,`tabindex`,R(o)?0:null),H(a,t.pane.errorMessage)}),z(`mousedown`,r,e=>vV.startBodyInteraction(e)),z(`keydown`,r,s),z(`click`,r,e=>vV.handleErrorConversationClick(e,t.pane.entry)),V(e,n)};U(u,e=>{t.pane.showErrorMessage&&e(d)});var f=I(u,2),p=e=>{var n=kV(),a=P(n),o=P(a),s=P(o,!0);D(o),DV(I(o,2),{get state(){return r},label:`Copy Headers`,errorLabel:`Copy failed`,class:`audit-copy-btn`,onclick:()=>r.copy(t.pane.copyHeaders,pf)}),D(a);var c=I(a,2),l=P(c,!0);D(c),D(n),L(()=>{H(s,t.pane.headersTitle||`Headers`),H(l,R(i))}),V(e,n)};U(f,e=>{t.pane.showHeaders&&e(p)});var m=I(f,2),h=e=>{var r=MV(),i=P(r),o=P(i),s=I(P(o),2),c=e=>{var n=AV(),r=P(n,!0);D(n),L(()=>H(r,t.pane.bodyCacheRatioLabel)),V(e,n)};U(s,e=>{t.pane.bodyCacheRatioLabel&&e(c)});var l=I(s,2),u=e=>{V(e,jV())};U(l,e=>{t.pane.streaming&&e(u)}),D(o),DV(I(o,2),{get state(){return n},label:`Copy Body`,errorLabel:`Copy failed`,class:`audit-copy-btn`,onclick:()=>n.copy(t.pane.copyBody,pf)}),D(i);var d=I(i,2);pi(d,()=>R(a),!0),D(d),D(r),z(`mousedown`,d,e=>vV.startBodyInteraction(e)),z(`click`,d,e=>vV.handleBodyConversationClick(e,t.pane.entry)),V(e,r)};U(m,e=>{t.pane.showBody&&e(h)});var g=I(m,2),_=e=>{var n=NV(),r=P(n,!0);D(n),L(()=>H(r,t.pane.emptyMessage)),V(e,n)};U(g,e=>{t.pane.showEmpty&&e(_)});var v=I(g,2),y=e=>{var n=PV(),r=I(P(n),2),i=P(r,!0);D(r),D(n),L(()=>H(i,t.pane.pendingMessage)),V(e,n)};U(v,e=>{t.pane.showPending&&e(y)});var b=I(v,2),x=e=>{var n=FV(),r=P(n,!0);D(n),L(()=>H(r,t.pane.tooLargeMessage)),V(e,n)};U(b,e=>{t.pane.showTooLarge&&e(x)}),D(c),L(()=>l=G(c,1,`audit-pane svelte-1h5puht`,null,l,{"audit-pane-split":t.pane&&t.pane.layout===`split`,"audit-pane-split-single":t.pane&&t.pane.layout===`split`&&!(t.pane.showHeaders&&t.pane.showBody)})),V(e,c),k()}Br([`mousedown`,`keydown`,`click`]);var RV=B(` `),zV=B(` `),BV=B(` `),VV=B(` `),HV=B(``),UV=B(`
            `),WV=B(`
            `);function GV(e,t){O(t,!0);let n=q(t,`panes`,19,()=>[]),r=j(null),i=A(()=>Mz(R(r),t.entry,n())),a=e=>`audit-tab-`+t.entry.id+`-`+e,o=e=>`audit-tabpanel-`+t.entry.id+`-`+e;function s(e,t){let i=n().map(e=>e.id),a=Nz(e.key,i,t);a!=null&&(e.preventDefault(),((e.currentTarget?.closest?.(`.audit-pane-tablist`))?.querySelectorAll(`.audit-pane-tab`)[i.indexOf(a)])?.focus?.(),M(r,a,!0))}var c=WV(),l=P(c);W(l,21,n,e=>e.id,(e,t)=>{var n=HV();let c;var l=P(n),u=P(l),d=e=>{J(e,{get icon(){return kl}})},f=e=>{J(e,{get icon(){return Ol}})};U(u,e=>{R(t).pane.direction===`request`?e(d):R(t).pane.direction===`response`&&e(f,1)}),D(l);var p=I(l,2),m=P(p,!0);D(p);var h=I(p,2),g=e=>{var n=RV(),r=P(n);D(n),L(()=>H(r,`#${R(t).pane.seq??``}`)),V(e,n)};U(h,e=>{R(t).pane.seq&&e(g)});var _=I(h,2),v=e=>{var n=zV(),r=P(n,!0);D(n),L(()=>{G(n,1,`provider-badge audit-pane-kind audit-pane-kind-${R(t).pane.kind??``}`,`svelte-1bc5vi5`),H(r,R(t).pane.kind)}),V(e,n)};U(_,e=>{R(t).pane.kind&&e(v)});var y=I(_,2);W(y,17,()=>R(t).pane.noChangeSteps||[],e=>e.id,(e,t)=>{var n=BV(),r=P(n,!0);D(n),L(()=>{K(n,`title`,R(t).title),H(r,R(t).label)}),V(e,n)});var b=I(y,2),x=e=>{var n=VV(),r=P(n,!0);D(n),L(()=>H(r,R(t).pane.savingsLabel)),V(e,n)};U(b,e=>{R(t).pane.savingsLabel&&e(x)});var S=I(b,2),C=e=>{var n=zV(),r=P(n,!0);D(n),L(e=>{G(n,1,`audit-status-badge ${e??``}`,`svelte-1bc5vi5`),H(r,R(t).pane.statusCode)},[()=>$R(R(t).pane.statusCode)]),V(e,n)};U(S,e=>{R(t).pane.statusCode&&e(C)}),D(n),L((e,r)=>{c=G(n,1,`audit-pane-tab svelte-1bc5vi5`,null,c,{"audit-pane-tab-active":R(i)===R(t).id}),K(n,`aria-selected`,R(i)===R(t).id),K(n,`id`,e),K(n,`aria-controls`,r),K(n,`tabindex`,R(i)===R(t).id?0:-1),G(l,1,Ni([`audit-pane-icon`,R(t).pane.direction&&`audit-pane-icon-${R(t).pane.direction}`]),`svelte-1bc5vi5`),H(m,R(t).pane.title)},[()=>a(R(t).id),()=>o(R(t).id)]),z(`keydown`,n,e=>s(e,R(t).id)),z(`click`,n,()=>M(r,R(t).id,!0)),V(e,n)}),D(l),W(I(l,2),17,n,e=>e.id,(e,t)=>{var n=UV();let r;LV(P(n),{get pane(){return R(t).pane}}),D(n),L((e,a)=>{K(n,`id`,e),K(n,`aria-labelledby`,a),r=Bi(n,``,r,{display:R(i)===R(t).id?null:`none`})},[()=>o(R(t).id),()=>a(R(t).id)]),V(e,n)}),D(c),V(e,c),k()}Br([`keydown`,`click`]);var KV=B(`
            `),qV=B(`
            `);function JV(e,t){O(t,!0);let n=q(t,`thread`,3,null),r=q(t,`hidePath`,3,!1),i=A(()=>Iz.isAuditEntryExpanded(t.entry)),a=A(()=>vV.conversationOpen&&String(vV.conversationAnchorID||``)===String(t.entry.id||``)),o=A(()=>R(i)?Az(t.entry,dB):[]),s=A(()=>R(i)?TL(t.entry,bR.auditEntryWorkflow(t.entry),bR.workflowFeatureCaps()):null);function c(){Iz.toggleAuditEntryExpanded(t.entry)}var l=qV();let u;var d=P(l);TV(d,{get entry(){return t.entry},get thread(){return n()},get expanded(){return R(i)},get hidePath(){return r()},onactivate:c});var f=I(d,2),p=e=>{var n=KV(),r=P(n),i=e=>{VI(e,{get chart(){return R(s)}})};U(r,e=>{R(s)&&e(i)});var a=I(r,2);GV(a,{get entry(){return t.entry},get panes(){return R(o)}}),Kz(I(a,2),{get entry(){return t.entry}}),D(n),Di(3,n,()=>$d,()=>({y:-6,duration:vR(150)})),V(e,n)};U(f,e=>{R(i)&&e(p)}),D(l),L(()=>u=G(l,1,`audit-entry svelte-cmjgwr`,null,u,{"audit-entry-interactions-open":R(a)})),V(e,l),k()}var YV=B(`
            `),XV=B(`
            `),ZV=B(`

            `),QV=B(`
            `),$V=B(`
            `);function eH(e,t){O(t,!0);let n=A(()=>IR(t.entry)),r=A(()=>Iz.isThreadExpanded(R(n))),i=A(()=>Iz.threadChildren(R(n))),a=A(()=>R(i)&&!R(i).loading&&Number(R(i).total||0)>R(i).entries.length+1);var o=Xr(),s=F(o),c=e=>{JV(e,{get entry(){return t.entry}})},l=A(()=>!RR(t.entry)),u=e=>{var n=$V(),o=P(n);{let e=A(()=>({count:LR(t.entry),expanded:R(r),ontoggle:()=>Iz.toggleThread(t.entry)}));JV(o,{get entry(){return t.entry},get thread(){return R(e)}})}var s=I(o,2),c=e=>{var n=QV(),r=P(n),o=e=>{var t=YV();kE(P(t),{size:14,label:`Loading session requests`}),D(t),V(e,t)};U(r,e=>{R(i)&&R(i).loading&&e(o)});var s=I(r,2);W(s,17,()=>R(i)&&R(i).entries||[],e=>e.id,(e,n)=>{var r=XV(),i=P(r);{let e=A(()=>R(n).path===t.entry.path);JV(i,{get entry(){return R(n)},get hidePath(){return R(e)}})}D(r),V(e,r)});var c=I(s,2),l=e=>{var t=ZV(),n=P(t);D(t),L(()=>H(n,`Showing the latest ${R(i).entries.length+1} of ${R(i).total??``} - requests in this session.`)),V(e,t)};U(c,e=>{R(a)&&e(l)}),D(n),Di(3,n,()=>ef,()=>({duration:vR(150)})),V(e,n)};U(s,e=>{R(r)&&e(c)}),D(n),V(e,n)};U(s,e=>{R(l)?e(c):e(u,-1)}),V(e,o),k()}var tH=B(`

            .

            `),nH=B(`
            Audit logging is off. Live entries are temporary and disappear after - refresh. Set LOGGING_ENABLED=true to persist them.
            `),rH=B(`

            `),iH=B(`
            `),aH=B(`
            `),oH=B(`
            `),sH=B(`
            `),cH=B(`
            `);function lH(e,t){O(t,!0);let n=A(()=>Td.config&&Td.config.LOGGING_RETENTION_DAYS);On(()=>{if(Y.refreshTick,Gu.page===`audit-logs`)return wr(()=>r())});function r(){let e=!1;return(async()=>{try{await Td.ensureLoaded()}finally{await Iz.fetchAuditLog(!0),!e&&Td.liveLogsVisible()&&zD.ensureLiveLogs()}})(),()=>{e=!0,zD.stopLiveLogs()}}var i=cH(),a=P(i),o=P(a),s=I(P(o),2),c=e=>{eD(e,{copyId:`audit-retention-help-copy`,label:`retention help`,text:`If you want to change the retention period, set LOGGING_RETENTION_DAYS (env var) or logging.retention_days (config.yaml) and restart the gateway. Default is 30 days; 0 keeps audit logs forever.`,title:e=>{var t=tH(),r=P(t,!0),i=I(r),a=P(i,!0);D(i),Ve(),D(t),L((e,t)=>{H(r,e),H(a,t)},[()=>MR(R(n)),()=>NR(R(n))]),V(e,t)},$$slots:{title:!0}})},l=A(()=>jR(R(n)));U(s,e=>{R(l)&&e(c)}),D(o),D(a);var u=I(a,2);lp(P(u),{onchange:()=>Iz.fetchAuditLog(!0)}),D(u);var d=I(u,2);Wf(d,{});var f=I(d,2),p=e=>{V(e,nH())},m=A(()=>Td.loaded&&!Td.auditVisible()&&!Y.needsAuth);U(f,e=>{R(m)&&e(p)});var h=I(f,2),g=P(h);Rz(g,{});var _=I(g,2),v=P(_),y=P(v),b=e=>{var t=rH(),n=P(t);D(t),L(e=>H(n,`Showing ${Iz.auditLog.offset+1}-${e??``} of ${Iz.auditLog.total??``} - ${Iz.auditGroupSessions?`sessions`:`logs`}`),[()=>Math.min(Iz.auditLog.offset+Iz.auditLog.limit,Iz.auditLog.total)]),V(e,t)};U(y,e=>{Iz.auditLog.total>0&&e(b)});var x=I(y,2),S=P(x);ea(S),Ve(2),D(x),D(v),Uz(I(v,2),{}),D(_);var C=I(_,2),w=e=>{var t=iH();kE(P(t),{size:18,label:`Loading audit logs`}),D(t),V(e,t)},T=e=>{var t=oH();W(t,29,()=>Iz.auditLog.entries,e=>e.id,(e,t)=>{var n=aH(),r=P(n),i=e=>{eH(e,{get entry(){return R(t)}})},a=e=>{JV(e,{get entry(){return R(t)}})};U(r,e=>{Iz.auditGroupSessions?e(i):e(a,-1)}),D(n),Ei(n,()=>mR,()=>({duration:vR(150)})),Di(1,n,()=>yR,()=>({live:R(t)._live})),V(e,n)}),D(t),V(e,t)};U(C,e=>{Iz.loading&&Iz.auditLog.entries.length===0?e(w):Iz.auditLog.entries.length>0&&e(T,1)});var E=I(C,2),ee=e=>{var t=sH();ME(P(t),{}),D(t),V(e,t)};U(E,e=>{Iz.auditLog.entries.length===0&&!Iz.loading&&!Y.needsAuth&&e(ee)}),nk(I(E,2),{get total(){return Iz.auditLog.total},get offset(){return Iz.auditLog.offset},get limit(){return Iz.auditLog.limit},onprev:()=>Iz.auditLogPrevPage(),onnext:()=>Iz.auditLogNextPage()}),D(h),D(i),L(()=>na(S,Iz.auditGroupSessions)),z(`change`,S,()=>Iz.toggleAuditGroupSessions()),V(e,i),k()}Br([`change`]);function uH(e){try{let t=JSON.parse(JSON.stringify(e||{}));return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}function dH(e){return Array.isArray(e)?e.map(e=>String(e||``).trim()).filter(e=>e):e==null?[]:String(e).split(`,`).map(e=>e.trim()).filter(e=>e)}function fH(e,t){let n=String(t||``).trim();return(e||[]).find(e=>String(e&&e.type||``).trim()===n)||null}function pH(e){return Array.isArray(e)&&e.length>0&&String(e[0].type||``).trim()||`system_prompt`}function mH(e,t){let n=String(t||``).trim();return n&&fH(e,n)?n:pH(e)}function hH(e,t){let n=fH(e,t);return!n||!n.defaults?{}:uH(n.defaults)}function gH(e,t,n){return{...hH(e,n),...uH(t)}}function _H(e,t){let n=mH(e,t);return{name:``,type:n,description:``,user_path:``,config:hH(e,n)}}function vH(e,t){if(!t)return e||[];let n=String(t).toLowerCase();return(e||[]).filter(e=>[e.name,e.type,e.user_path,e.description,e.summary].some(e=>String(e||``).toLowerCase().includes(n)))}function yH(e,t){let n=fH(e,t);return n&&n.label?n.label:t||`Unknown`}function bH(e,t){let n=fH(e,t);return Array.isArray(n&&n.fields)?n.fields:[]}function xH(e,t){if(!t||!e)return t&&t.input===`checkboxes`?[]:``;let n=e[t.key];return n==null?t.input===`checkboxes`?[]:``:t.input===`checkboxes`?dH(n):n}function SH(e,t,n){if(!t)return e;let r=uH(e);if(t.input===`number`){let e=String(n||``).trim();if(e===``)delete r[t.key];else{let n=Number(e);r[t.key]=Number.isFinite(n)?n:e}}else t.input===`checkboxes`?r[t.key]=dH(n):r[t.key]=n;return r}function CH(e,t,n){return xH(e,t).includes(String(n||``).trim())}function wH(e,t,n,r){let i=dH(xH(e,t)),a=String(n||``).trim();return a?SH(e,t,r?Array.from(new Set([...i,a])):i.filter(e=>e!==a)):e}function TH(e){return{name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),description:String(e&&e.description||``).trim()||void 0,user_path:String(e&&e.user_path||``).trim()||void 0,config:uH(e&&e.config)}}var EH=new class{#e=j(N([]));get guardrails(){return R(this.#e)}set guardrails(e){M(this.#e,e,!0)}#t=j(N([]));get types(){return R(this.#t)}set types(e){M(this.#t,e,!0)}#n=j(!0);get available(){return R(this.#n)}set available(e){M(this.#n,e,!0)}#r=j(!1);get loading(){return R(this.#r)}set loading(e){M(this.#r,e,!0)}#i=j(!1);get typesLoading(){return R(this.#i)}set typesLoading(e){M(this.#i,e,!0)}#a=j(``);get error(){return R(this.#a)}set error(e){M(this.#a,e,!0)}#o=j(``);get filter(){return R(this.#o)}set filter(e){M(this.#o,e,!0)}#s=j(!1);get formOpen(){return R(this.#s)}set formOpen(e){M(this.#s,e,!0)}#c=j(!1);get formSubmitting(){return R(this.#c)}set formSubmitting(e){M(this.#c,e,!0)}#l=j(``);get deletingName(){return R(this.#l)}set deletingName(e){M(this.#l,e,!0)}#u=j(`create`);get formMode(){return R(this.#u)}set formMode(e){M(this.#u,e,!0)}#d=j(``);get formOriginalName(){return R(this.#d)}set formOriginalName(e){M(this.#d,e,!0)}#f=j(N({name:``,type:``,description:``,user_path:``,config:{}}));get form(){return R(this.#f)}set form(e){M(this.#f,e,!0)}get filtered(){return vH(this.guardrails,this.filter)}typeLabel(e){return yH(this.types,e)}typeFields(e){return bH(this.types,e)}fieldValue(e){return xH(this.form&&this.form.config,e)}setFieldValue(e,t){this.form={...this.form,config:SH(this.form.config,e,t)}}arrayFieldSelected(e,t){return CH(this.form&&this.form.config,e,t)}toggleArrayFieldValue(e,t,n){this.form={...this.form,config:wH(this.form.config,e,t,n)}}openCreate(){this.formMode=`create`,this.formOriginalName=``,this.error=``,this.form=_H(this.types,pH(this.types)),this.formOpen=!0}openEdit(e){let t=mH(this.types,e&&e.type);this.formMode=`edit`,this.formOriginalName=String(e&&e.name||``).trim(),this.error=``,this.form={name:this.formOriginalName,type:t,description:String(e&&e.description||``).trim(),user_path:String(e&&e.user_path||``).trim(),config:gH(this.types,e&&e.config,t)},this.formOpen=!0}closeForm(){this.formOpen=!1,this.formMode=`create`,this.formOriginalName=``,this.error=``,this.form=_H(this.types,pH(this.types))}changeType(e){let t=mH(this.types,e);this.form={...this.form,type:t,config:hH(this.types,t)}}async fetchTypes(){this.typesLoading=!0;try{let e=await Tk(`/admin/guardrails/types`,{label:`guardrail types`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.types=[];return}if(e.result&&(this.available=!0),this.types=e.items,e.status===`error`){this.error=e.error;return}let t=mH(this.types,this.form.type);this.form={...this.form,type:t,config:gH(this.types,this.form.config,t)}}finally{this.typesLoading=!1}}async fetchGuardrails(){this.loading=!0,this.error=``;try{let e=await Tk(`/admin/guardrails`,{label:`guardrails`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.guardrails=[];return}e.result&&(this.available=!0),this.guardrails=e.items,this.error=e.error}finally{this.loading=!1}}async fetchPage(){await Promise.all([this.fetchTypes(),this.fetchGuardrails()])}async submitForm(){let e=String(this.form.name||``).trim(),t=String(this.form.type||``).trim();if(!e){this.error=`Name is required.`;return}if(!t){this.error=`Type is required.`;return}this.error=``,this.formSubmitting=!0;let n=TH(this.form);try{let t=await Ek(`/admin/guardrails`,`PUT`,n,{label:`save guardrail`,errorFallback:`Failed to save guardrail.`,unavailableMessage:`Guardrails feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error;return}of.success(`Guardrail "`+e+`" saved.`),this.closeForm(),this.fetchGuardrails()}finally{this.formSubmitting=!1}}async deleteGuardrail(e){let t=String(e&&e.name||``).trim();if(!(!t||this.deletingName)&&window.confirm(`Delete guardrail "`+t+`"? Workflows that still reference it must be updated first.`)){this.deletingName=t;try{let e=await Ek(`/admin/guardrails`,`DELETE`,{name:t},{label:`delete guardrail`,errorFallback:`Failed to delete guardrail.`,unavailableMessage:`Guardrails feature is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,of.error(e.error);return}if(e.status===`error`){of.error(e.error);return}of.success(`Guardrail "`+t+`" deleted.`),this.formOpen&&this.formOriginalName===t&&this.closeForm(),this.fetchGuardrails()}finally{this.deletingName=``}}}},DH=B(`
            `),OH=B(`

            Loading guardrails...

            `),kH=B(`
            `),AH=B(`
            `),jH=B(`
            NameTypeUser PathSummaryActions
            `),MH=B(`

            No guardrails defined yet.

            `),NH=B(`

            Instances

            Each instance has a reusable name, a type, an optional user path for - future UI visibility scoping, and a JSON-backed config payload for - that type.

            `);function PH(e,t){O(t,!0);var n=NH(),r=P(n),i=I(P(r),2);J(P(i),{get icon(){return lu},class:`form-action-icon`}),Ve(2),D(i),D(r);var a=I(r,2),o=e=>{var t=DH(),n=P(t);DO(P(n),{id:`guardrail-filter`,placeholder:`Filter by name, type, user path, summary...`,label:`Guardrail filter`,get value(){return EH.filter},set value(e){EH.filter=e}}),D(n),D(t),V(e,t)};U(a,e=>{EH.available&&e(o)});var s=I(a,2),c=e=>{var t=OH();kE(P(t),{size:16,label:`Loading guardrails`}),Ve(),D(t),V(e,t)};U(s,e=>{EH.loading&&EH.filtered.length===0&&e(c)});var l=I(s,2),u=e=>{var t=jH(),n=P(t),r=I(P(n));W(r,21,()=>EH.filtered,e=>e.name,(e,t)=>{var n=AH(),r=P(n),i=P(r,!0);D(r);var a=I(r),o=P(a),s=P(o,!0);D(o),D(a);var c=I(a),l=P(c,!0);D(c);var u=I(c),d=P(u),f=P(d,!0);D(d);var p=I(d,2),m=e=>{var n=kH(),r=P(n,!0);D(n),L(()=>H(r,R(t).description)),V(e,n)};U(p,e=>{R(t).description&&e(m)}),D(u);var h=I(u),g=P(h),_=P(g);{let e=A(()=>`Edit guardrail `+R(t).name);wk(_,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>EH.openEdit(R(t)),children:(e,t)=>{J(e,{get icon(){return su},class:`table-icon-svg`})},$$slots:{default:!0}})}var v=I(_,2);{let e=A(()=>(EH.deletingName===R(t).name?`Deleting guardrail `:`Delete guardrail `)+R(t).name),n=A(()=>EH.deletingName===R(t).name);wk(v,{get label(){return R(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>EH.deleteGuardrail(R(t)),get disabled(){return R(n)},children:(e,t)=>{J(e,{get icon(){return Nu},class:`table-icon-svg`})},$$slots:{default:!0}})}D(g),D(h),D(n),L(e=>{H(i,R(t).name),H(s,e),H(l,R(t).user_path||`—`),H(f,R(t).summary||R(t).description||`No summary yet.`)},[()=>EH.typeLabel(R(t).type)]),V(e,n)}),D(r),D(n),D(t),V(e,t)};U(l,e=>{EH.filtered.length>0&&e(u)});var d=I(l,2),f=e=>{V(e,MH())};U(d,e=>{EH.filtered.length===0&&!EH.loading&&EH.available&&!EH.error&&!Y.authError&&e(f)}),D(n),L(()=>i.disabled=EH.typesLoading||EH.formSubmitting||!EH.available),z(`click`,i,()=>EH.openCreate()),V(e,n),k()}Br([`click`]);var FH=B(`

            Workflows reference these names directly, so renames are - intentionally avoided after creation.

            `),IH=B(``),LH=B(``),RH=B(``),zH=B(``),BH=B(``),VH=B(``),HH=B(``),UH=B(``),WH=B(``),GH=B(`
            `),KH=B(``),qH=B(` `),JH=B(`
            `),YH=B(`
            `);function XH(e,t){O(t,!0);let n=A(()=>EH.formMode===`edit`);{let t=e=>{V(e,FH())},r=A(()=>R(n)?`Edit Guardrail`:`Create Guardrail`);OA(e,{get open(){return EH.formOpen},get title(){return R(r)},ariaLabel:`Guardrail editor`,get error(){return EH.error},get submitting(){return EH.formSubmitting},submitLabel:`Save Guardrail`,dialogClass:`settings-guardrails-editor guardrails-editor-wide`,onclose:()=>EH.closeForm(),onsubmit:()=>EH.submitForm(),headerHint:t,children:(e,t)=>{var r=YH(),i=P(r);AA(i,{id:`guardrail-name`,label:`Name`,children:(e,t)=>{var r=IH();ea(r),L(()=>{r.disabled=R(n),K(r,`data-modal-autofocus`,!R(n)||void 0)}),la(r,()=>EH.form.name,e=>EH.form.name=e),V(e,r)},$$slots:{default:!0}});var a=I(i,2);AA(a,{id:`guardrail-type`,label:`Type`,children:(e,t)=>{var r=RH();W(r,21,()=>EH.types,e=>e.type,(e,t)=>{var n=LH(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).type)&&(n.value=(n.__value=R(t).type)??``)}),V(e,n)}),D(r);var i;Hi(r),L(()=>{r.disabled=R(n),i!==(i=EH.form.type)&&(r.value=(r.__value=EH.form.type)??``,Vi(r,EH.form.type))}),z(`change`,r,e=>EH.changeType(e.currentTarget.value)),V(e,r)},$$slots:{default:!0}});var o=I(a,2);AA(o,{id:`guardrail-description`,label:`Description`,children:(e,t)=>{var r=zH();ea(r),L(()=>K(r,`data-modal-autofocus`,R(n)?!0:void 0)),la(r,()=>EH.form.description,e=>EH.form.description=e),V(e,r)},$$slots:{default:!0}});var s=I(o,2),c=P(s);eD(c,{copyId:`guardrail-user-path-help-copy`,label:`guardrail user path help`,text:`Only used for auxiliary rewrite (llm_based_altering) guardrails; ignored for other guardrail types.`,title:e=>{V(e,BH())},$$slots:{title:!0}});var l=I(c,2);ea(l),D(s),W(I(s,2),17,()=>EH.typeFields(EH.form.type),e=>e.key,(e,t)=>{var n=Xr(),r=F(n),i=e=>{var n=GH(),r=P(n);{let e=e=>{var n=VH(),r=P(n,!0);D(n),L(()=>{K(n,`for`,`guardrail-field-`+R(t).key),H(r,R(t).label)}),V(e,n)},n=A(()=>`guardrail-field-help-`+R(t).key),i=A(()=>R(t).label+` help`),a=A(()=>R(t).help||``);eD(r,{get copyId(){return R(n)},get label(){return R(i)},get text(){return R(a)},title:e,$$slots:{title:!0}})}var i=I(r,2),a=e=>{var n=HH();W(n,21,()=>R(t).options||[],e=>e.value,(e,t)=>{var n=LH(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(n);var r;Hi(n),L(e=>{K(n,`id`,`guardrail-field-`+R(t).key),K(n,`aria-describedby`,R(t).help?`guardrail-field-help-`+R(t).key:void 0),r!==(r=e)&&(n.value=(n.__value=e)??``,Vi(n,e))},[()=>EH.fieldValue(R(t))]),z(`change`,n,e=>EH.setFieldValue(R(t),e.currentTarget.value)),V(e,n)},o=e=>{var n=UH();ut(n),L(e=>{K(n,`id`,`guardrail-field-`+R(t).key),K(n,`placeholder`,R(t).placeholder||``),ta(n,e),K(n,`aria-describedby`,R(t).help?`guardrail-field-help-`+R(t).key:void 0)},[()=>EH.fieldValue(R(t))]),z(`input`,n,e=>EH.setFieldValue(R(t),e.currentTarget.value)),V(e,n)},s=e=>{var n=WH();ea(n),L(e=>{K(n,`id`,`guardrail-field-`+R(t).key),K(n,`type`,R(t).input||`text`),K(n,`placeholder`,R(t).placeholder||``),ta(n,e),K(n,`aria-describedby`,R(t).help?`guardrail-field-help-`+R(t).key:void 0)},[()=>EH.fieldValue(R(t))]),z(`input`,n,e=>EH.setFieldValue(R(t),e.currentTarget.value)),V(e,n)};U(i,e=>{R(t).input===`select`?e(a):R(t).input===`textarea`?e(o,1):e(s,-1)}),D(n),V(e,n)},a=e=>{var n=JH(),r=P(n),i=P(r,!0);D(r);var a=I(r,2);W(a,21,()=>R(t).options||[],e=>R(t).key+`-`+e.value,(e,n)=>{var r=KH(),i=P(r);ea(i);var a=I(i,2),o=P(a,!0);D(a),D(r),L(e=>{na(i,e),H(o,R(n).label)},[()=>EH.arrayFieldSelected(R(t),R(n).value)]),z(`change`,i,e=>EH.toggleArrayFieldValue(R(t),R(n).value,e.currentTarget.checked)),V(e,r)}),D(a);var o=I(a,2),s=e=>{var n=qH(),r=P(n,!0);D(n),L(()=>{K(n,`id`,`guardrail-field-help-`+R(t).key),H(r,R(t).help)}),V(e,n)};U(o,e=>{R(t).help&&e(s)}),D(n),L(()=>{K(n,`aria-describedby`,R(t).help?`guardrail-field-help-`+R(t).key:void 0),H(i,R(t).label)}),V(e,n)};U(r,e=>{R(t).input===`checkboxes`?e(a,-1):e(i)}),V(e,n)}),D(r),la(l,()=>EH.form.user_path,e=>EH.form.user_path=e),V(e,r)},$$slots:{headerHint:!0,default:!0}})}k()}Br([`change`,`input`]);var ZH=B(`

            Guardrails

            `),QH=B(`
            Runtime guardrail execution is currently off because GUARDRAILS_ENABLED is disabled. You can still manage - definitions here.
            `),$H=B(`
            Guardrails feature is unavailable.
            `),eU=B(`
            `),tU=B(`

            Reusable Policy Objects

            Guardrail Library

            Store guardrails in the database, keep them hot in memory, and attach - them to workflows by reference.

            Instances
            Types
            `);function nU(e,t){O(t,!0),On(()=>{Y.refreshTick,Gu.page===`guardrails`&&(Td.ensureLoaded(),EH.fetchPage())});var n=tU(),r=P(n),i=P(r);eD(P(i),{copyId:`guardrails-help-copy`,label:`guardrails help`,text:`Reusable policy objects stored in the database and kept hot in memory for workflow execution.`,title:e=>{V(e,ZH())},$$slots:{title:!0}}),D(i),D(r);var a=I(r,2),o=I(P(a),2),s=P(o),c=I(P(s),2),l=P(c,!0);D(c),D(s);var u=I(s,2),d=I(P(u),2),f=P(d,!0);D(d),D(u),D(o),D(a);var p=I(a,2);Wf(p,{});var m=I(p,2),h=e=>{V(e,QH())},g=A(()=>!Td.guardrailsVisible());U(m,e=>{R(g)&&e(h)});var _=I(m,2),v=e=>{V(e,$H())};U(_,e=>{!Y.authError&&!EH.available&&e(v)});var y=I(_,2),b=e=>{var t=eU(),n=P(t,!0);D(t),L(()=>H(n,EH.error)),V(e,t)};U(y,e=>{!Y.authError&&EH.error&&!EH.formOpen&&e(b)});var x=I(y,2);XH(x,{}),PH(I(x,2),{}),D(n),L((e,t)=>{H(l,e),H(f,t)},[()=>mf(EH.guardrails.length),()=>mf(EH.types.length)]),V(e,n),k()}var $=new class{#e=j(N([]));get servers(){return R(this.#e)}set servers(e){M(this.#e,e,!0)}#t=j(!0);get available(){return R(this.#t)}set available(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}#r=j(``);get error(){return R(this.#r)}set error(e){M(this.#r,e,!0)}#i=j(``);get filter(){return R(this.#i)}set filter(e){M(this.#i,e,!0)}#a=j(!1);get formOpen(){return R(this.#a)}set formOpen(e){M(this.#a,e,!0)}#o=j(!1);get formSubmitting(){return R(this.#o)}set formSubmitting(e){M(this.#o,e,!0)}#s=j(`create`);get formMode(){return R(this.#s)}set formMode(e){M(this.#s,e,!0)}#c=j(!1);get slugEdited(){return R(this.#c)}set slugEdited(e){M(this.#c,e,!0)}#l=j(!1);get advancedOpen(){return R(this.#l)}set advancedOpen(e){M(this.#l,e,!0)}#u=j(N(vT()));get form(){return R(this.#u)}set form(e){M(this.#u,e,!0)}#d=j(``);get deletingName(){return R(this.#d)}set deletingName(e){M(this.#d,e,!0)}#f=j(``);get reconnectingName(){return R(this.#f)}set reconnectingName(e){M(this.#f,e,!0)}#p=j(!1);get catalogOpen(){return R(this.#p)}set catalogOpen(e){M(this.#p,e,!0)}#m=j(!1);get catalogLoading(){return R(this.#m)}set catalogLoading(e){M(this.#m,e,!0)}#h=j(``);get catalogError(){return R(this.#h)}set catalogError(e){M(this.#h,e,!0)}#g=j(N(yT()));get catalog(){return R(this.#g)}set catalog(e){M(this.#g,e,!0)}#_=A(()=>AT(this.servers,this.filter));get filtered(){return R(this.#_)}set filtered(e){M(this.#_,e)}async fetchServers(){if(await Td.ensureLoaded(),!Td.mcpVisible()){this.available=!1,this.servers=[],this.error=``,this.loading=!1;return}this.loading=!0,this.error=``;try{let e=await Tk(`/admin/mcp-servers`,{label:`mcp servers`,errorFallback:`Failed to load MCP servers.`,unavailableStatuses:[503,404]});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.servers=[];return}if(e.status===`error`){e.result&&(this.available=!0),this.servers=[],this.error=e.error;return}this.available=!0,this.servers=e.items}finally{this.loading=!1}}openCreate(){this.formMode=`create`,this.slugEdited=!1,this.advancedOpen=!1,this.error=``,this.form=vT(),this.formOpen=!0}openEdit(e){!e||e.managed||(this.formMode=`edit`,this.slugEdited=!0,this.advancedOpen=!1,this.error=``,this.form=jT(e),this.formOpen=!0)}closeForm(){this.formOpen=!1,this.formMode=`create`,this.slugEdited=!1,this.advancedOpen=!1,this.error=``,this.form=vT()}syncSlugFromName(){this.formMode===`create`&&!this.slugEdited&&(this.form.slug=ET(this.form.name))}markSlugEdited(){this.formMode===`create`&&(this.slugEdited=!0)}addHeader(){this.form.headers.push({name:``,value:``})}removeHeader(e){this.form.headers.splice(e,1)}async submitForm(){let e=MT(this.form,this.formMode,this.servers);if(e.error){this.error=e.error;return}this.error=``,this.formSubmitting=!0;try{let t=await Ek(`/admin/mcp-servers`,`PUT`,e.payload,{label:`save mcp server`,errorFallback:`Failed to save MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error;return}of.success(`MCP server "`+e.payload.name+`" saved.`),this.closeForm(),this.fetchServers()}finally{this.formSubmitting=!1}}async deleteServer(e){let t=String(e&&e.name||``).trim(),n=bT(e);if(!(!n||this.deletingName||e&&e.managed)&&confirm(`Delete MCP server "`+t+`"? Clients lose access to its tools immediately.`)){this.deletingName=n;try{let e=await Ek(`/admin/mcp-servers/`+encodeURIComponent(n),`DELETE`,void 0,{label:`delete mcp server`,errorFallback:`Failed to delete MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,of.error(e.error);return}if(e.status===`error`){of.error(e.error);return}of.success(`MCP server "`+t+`" deleted.`),this.formOpen&&this.form.slug===n&&this.closeForm(),this.fetchServers()}finally{this.deletingName=``}}}async reconnectServer(e){let t=String(e&&e.name||``).trim(),n=bT(e);if(!(!n||this.reconnectingName)){this.reconnectingName=n;try{let e=await Ek(`/admin/mcp-servers/`+encodeURIComponent(n)+`/reconnect`,`POST`,void 0,{label:`reconnect mcp server`,errorFallback:`Failed to reconnect MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,of.error(e.error);return}if(e.status===`error`){of.error(e.error);return}let r=e.result.data,i=xT(r);i===`connected`?of.success(`MCP server "`+t+`" reconnected.`):i===`disabled`?of.success(`MCP server "`+t+`" is disabled; no connection was attempted.`):of.error(`Reconnect attempted, but MCP server "`+t+`" is still `+i+`.`),r&&r.name?this.servers=(this.servers||[]).map(e=>bT(e)===bT(r)?r:e):this.fetchServers()}finally{this.reconnectingName=``}}}async openCatalog(e){let t=String(e&&e.name||``).trim(),n=bT(e);if(n){this.catalogOpen=!0,this.catalogLoading=!0,this.catalogError=``,this.catalog={...yT(),server:n,status:xT(e)};try{let e=await bd(`/admin/mcp-servers/`+encodeURIComponent(n)+`/catalog`,{label:`mcp server catalog`});if(e.stale)return;if(e.status===503){this.available=!1,this.catalogError=`MCP server management is unavailable.`;return}if(e.status===404){this.catalogError=`MCP server "`+t+`" was not found.`;return}if(!e.ok){this.catalogError=e.status===401?`Authentication required.`:hd(e.data,`Failed to load MCP server catalog.`);return}this.catalog=NT(n,e.data)}catch(e){console.error(`Failed to load MCP server catalog:`,e),this.catalogError=`Failed to load MCP server catalog.`}finally{this.catalogLoading=!1}}}closeCatalog(){this.catalogOpen=!1,this.catalogLoading=!1,this.catalogError=``,this.catalog=yT()}},rU=B(``),iU=B(`

            `),aU=B(`
            `),oU=B(`

            `),sU=B(`
          • `),cU=B(`

              `),lU=B(`

              No tools listed — the server may still be connecting or degraded.

              `),uU=B(` `,1),dU=B(``);function fU(e,t){O(t,!0);let n=A(()=>FT($.catalog));Rd(e,{get open(){return $.catalogOpen},variant:`editor`,onclose:()=>$.closeCatalog(),children:(e,t)=>{var r=dU(),i=P(r),a=P(i),o=I(P(a),2),s=P(o),c=P(s,!0);D(s);var l=I(s,2),u=P(l,!0);D(l),D(o),D(a),Pd(I(a,2),{label:`Close MCP server catalog`,onclick:()=>$.closeCatalog()}),D(i);var d=I(i,2),f=e=>{Sk(e,{label:`Loading catalog...`})},p=e=>{var t=rU(),n=P(t,!0);D(t),L(()=>H(n,$.catalogError)),V(e,t)},m=e=>{var t=uU(),r=F(t),i=e=>{var t=iU(),n=P(t,!0);D(t),L(()=>H(n,$.catalog.instructions)),V(e,t)};U(r,e=>{$.catalog.instructions&&e(i)});var a=I(r,2);W(a,17,()=>R(n),e=>e.key,(e,t)=>{var n=cU(),r=P(n),i=P(r,!0);D(r);var a=I(r,2);W(a,21,()=>R(t).items,e=>e.key,(e,t)=>{var n=sU(),r=P(n),i=P(r,!0);D(r);var a=I(r,2),o=e=>{var n=aU(),r=P(n,!0);D(n),L(()=>{K(n,`title`,`Exposed on the aggregated /mcp endpoint as `+R(t).aggregated),H(r,R(t).aggregated)}),V(e,n)};U(a,e=>{R(t).aggregated&&e(o)});var s=I(a,2),c=e=>{var n=oU(),r=P(n,!0);D(n),L(()=>H(r,R(t).description)),V(e,n)};U(s,e=>{R(t).description&&e(c)}),D(n),L(()=>{K(r,`title`,R(t).aggregated||R(t).name),H(i,R(t).name)}),V(e,n)}),D(a),D(n),L(()=>H(i,R(t).title)),V(e,n)});var o=I(a,2),s=e=>{V(e,lU())},c=A(()=>IT($.catalog));U(o,e=>{R(c)&&e(s)}),V(e,t)};U(d,e=>{$.catalogLoading?e(f):$.catalogError?e(p,1):e(m,-1)});var h=I(d,2),g=P(h);D(h),D(r),L((e,t)=>{H(c,$.catalog.server),G(l,1,`audit-status-badge ${e??``}`,`svelte-1xqrzco`),H(u,t)},[()=>ST($.catalog),()=>xT($.catalog)]),z(`click`,g,()=>$.closeCatalog()),V(e,r)},$$slots:{default:!0}}),k()}Br([`click`]);var pU=B(`

              The display name can change. The slug is the stable client-facing identity.

              `),mU=B(` Human-readable and Unicode-friendly. You can change it later.`,1),hU=B(`Derived from the name. You may edit it before saving.`),gU=B(`Immutable because it is used in URLs, scope headers, and aggregated tool names.`),_U=B(` `,1),vU=B(` stdio servers are config-only: declare them in config.yaml under mcp.servers.`,1),yU=B(``),bU=B(`
              `),xU=B(`
              Headers
              Sent only to the configured server origin. Saved values are shown as ***; leave *** unchanged to keep the stored value.
              Advanced settings Description, access rules, and timeout
              `,1);function SU(e,t){O(t,!0);{let t=e=>{V(e,pU())},n=A(()=>$.formMode===`edit`?`Edit MCP Server`:`Add MCP Server`);OA(e,{get open(){return $.formOpen},get title(){return R(n)},ariaLabel:`MCP server editor`,get error(){return $.error},get submitting(){return $.formSubmitting},onclose:()=>$.closeForm(),onsubmit:()=>$.submitForm(),headerHint:t,children:(e,t)=>{var n=xU(),r=F(n);AA(r,{id:`mcp-server-name`,label:`Name`,children:(e,t)=>{var n=mU(),r=F(n);ea(r),Ve(2),z(`input`,r,()=>$.syncSlugFromName()),la(r,()=>$.form.name,e=>$.form.name=e),V(e,n)},$$slots:{default:!0}});var i=I(r,2);AA(i,{id:`mcp-server-slug`,label:`Slug`,children:(e,t)=>{var n=_U(),r=F(n);ea(r);var i=I(r,2),a=e=>{V(e,hU())},o=e=>{V(e,gU())};U(i,e=>{$.formMode===`create`?e(a):e(o,-1)}),L(()=>r.disabled=$.formMode===`edit`),z(`input`,r,()=>$.markSlugEdited()),la(r,()=>$.form.slug,e=>$.form.slug=e),V(e,n)},$$slots:{default:!0}});var a=I(i,2);AA(a,{id:`mcp-server-transport`,label:`Transport`,children:(e,t)=>{var n=vU(),r=F(n),i=P(r);i.value=i.__value=`http`;var a=I(i);a.value=a.__value=`sse`,D(r),Ve(2),Ui(r,()=>$.form.transport,e=>$.form.transport=e),V(e,n)},$$slots:{default:!0}});var o=I(a,2);AA(o,{id:`mcp-server-url`,label:`URL`,children:(e,t)=>{var n=yU();ea(n),la(n,()=>$.form.url,e=>$.form.url=e),V(e,n)},$$slots:{default:!0}});var s=I(o,2),c=I(P(s),2);W(c,21,()=>$.form.headers,ii,(e,t,n)=>{var r=bU(),i=P(r);ea(i);var a=I(i,2);ea(a),wk(I(a,2),{label:`Remove header`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>$.removeHeader(n),children:(e,t)=>{J(e,{get icon(){return Eu},class:`table-icon-svg`})},$$slots:{default:!0}}),D(r),la(i,()=>R(t).name,e=>R(t).name=e),la(a,()=>R(t).value,e=>R(t).value=e),V(e,r)}),D(c);var l=I(c,2),u=P(l);J(P(u),{get icon(){return lu},class:`form-action-icon`}),Ve(2),D(u),D(l),Ve(2),D(s);var d=I(s,2),f=P(d);AP(P(f),{get enabled(){return $.form.enabled},label:`MCP server`,onclick:()=>$.form.enabled=!$.form.enabled}),D(f),D(d);var p=I(d,2),m=I(P(p),2),h=P(m),g=I(P(h),2);ea(g),D(h);var _=I(h,2),v=I(P(_),2);ea(v),D(_);var y=I(_,2),b=I(P(y),2);ea(b),D(y);var x=I(y,2),S=I(P(x),2);ut(S),K(S,`placeholder`,`/ -/team/alpha`),D(x);var C=I(x,2),w=I(P(C),2);ea(w),D(C),D(m),D(p),L(()=>p.open=$.advancedOpen),z(`click`,u,()=>$.addHeader()),zr(`toggle`,p,e=>$.advancedOpen=e.currentTarget.open),la(g,()=>$.form.description,e=>$.form.description=e),la(v,()=>$.form.allowed_tools,e=>$.form.allowed_tools=e),la(b,()=>$.form.disallowed_tools,e=>$.form.disallowed_tools=e),la(S,()=>$.form.user_paths,e=>$.form.user_paths=e),la(w,()=>$.form.tool_timeout_seconds,e=>$.form.tool_timeout_seconds=e),V(e,n)},$$slots:{headerHint:!0,default:!0}})}k()}Br([`input`,`click`]);var CU=B(`Config`),wU=B(`
              `),TU=B(`
              `),EU=B(`
              NameTransportEndpointStatusToolsEnabledActions
              `);function DU(e,t){O(t,!0);function n(e){return CT(e,e=>md.formatTimestamp(e))}var r=EU(),i=P(r),a=I(P(i));W(a,21,()=>$.filtered,e=>bT(e),(e,t)=>{var r=TU(),i=P(r),a=P(i),o=P(a,!0);D(a);var s=I(a,2),c=e=>{V(e,CU())};U(s,e=>{R(t).managed&&e(c)});var l=I(s,2),u=P(l,!0);D(l),D(i);var d=I(i),f=P(d),p=P(f,!0);D(f),D(d);var m=I(d),h=P(m,!0);D(m);var g=I(m),_=P(g),v=P(_,!0);D(_);var y=I(_,2),b=e=>{var n=wU(),r=P(n,!0);D(n),L(()=>H(r,R(t).last_error)),V(e,n)},x=A(()=>xT(R(t))===`degraded`&&R(t).last_error);U(y,e=>{R(x)&&e(b)}),D(g);var S=I(g),C=P(S),w=P(C,!0);D(C);var T=I(C,2),E=P(T,!0);D(T),D(S);var ee=I(S),te=P(ee),ne=P(te,!0);D(te),D(ee);var re=I(ee),ie=P(re),ae=P(ie),oe=e=>{{let n=A(()=>`Edit MCP server `+R(t).name);wk(e,{get label(){return R(n)},class:`table-icon-btn`,onclick:()=>$.openEdit(R(t)),children:(e,t)=>{J(e,{get icon(){return su},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(ae,e=>{R(t).managed||e(oe)});var se=I(ae,2);{let e=A(()=>`Inspect catalog of MCP server `+R(t).name);wk(se,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>$.openCatalog(R(t)),children:(e,t)=>{J(e,{get icon(){return eu},class:`form-action-icon`})},$$slots:{default:!0}})}var ce=I(se,2);{let e=A(()=>($.reconnectingName===bT(R(t))?`Reconnecting MCP server `:`Reconnect MCP server `)+R(t).name),n=A(()=>$.reconnectingName===bT(R(t)));wk(ce,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>$.reconnectServer(R(t)),get disabled(){return R(n)},children:(e,t)=>{J(e,{get icon(){return du},class:`form-action-icon`})},$$slots:{default:!0}})}var le=I(ce,2),ue=e=>{{let n=A(()=>($.deletingName===bT(R(t))?`Deleting MCP server `:`Delete MCP server `)+R(t).name),r=A(()=>$.deletingName===bT(R(t)));wk(e,{get label(){return R(n)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>$.deleteServer(R(t)),get disabled(){return R(r)},children:(e,t)=>{J(e,{get icon(){return Nu},class:`table-icon-svg`})},$$slots:{default:!0}})}};U(le,e=>{R(t).managed||e(ue)}),D(ie),D(re),D(r),L((e,n,r,i,a,s,c,l)=>{H(o,R(t).name),H(u,e),H(p,R(t).transport||`http`),K(m,`title`,n),H(h,r),G(_,1,`audit-status-badge ${i??``}`,`svelte-ah8nrt`),K(_,`title`,a),H(v,s),H(w,c),H(E,l),G(te,1,Ni([`auth-key-status-badge`,R(t).enabled?`auth-key-status-active`:`auth-key-status-inactive`])),H(ne,R(t).enabled?`Enabled`:`Disabled`)},[()=>bT(R(t)),()=>wT(R(t)),()=>wT(R(t)),()=>ST(R(t)),()=>n(R(t)),()=>xT(R(t)),()=>mf(R(t).tool_count||0),()=>TT(R(t))]),V(e,r)}),D(a),D(i),D(r),V(e,r),k()}var OU=B(`

              MCP Servers

              `),kU=B(``),AU=B(`
              MCP server management is unavailable.
              `),jU=B(``),MU=B(`
              `),NU=B(`

              No MCP servers yet. Add one here, or declare servers in config.yaml under mcp.servers.

              `),PU=B(`

              No MCP servers match your filter.

              `),FU=B(`
              `);function IU(e,t){O(t,!0),On(()=>{Y.refreshTick,Gu.page===`mcp-servers`&&$.fetchServers()});var n=FU(),r=P(n),i=P(r);eD(P(i),{copyId:`mcp-servers-help-copy`,label:`MCP servers help`,text:`Upstream Model Context Protocol servers whose tools, prompts, and resources the gateway exposes to clients. Servers added here connect over HTTP or SSE; stdio servers and rows marked Config are declared in config.yaml under mcp.servers and are read-only in the dashboard. Saved header values are masked in API and dashboard responses.`,title:e=>{V(e,OU())},$$slots:{title:!0}}),D(i);var a=I(i,2),o=P(a),s=e=>{var t=kU();J(P(t),{get icon(){return lu},class:`form-action-icon`}),Ve(2),D(t),L(()=>t.disabled=$.formSubmitting),z(`click`,t,()=>$.openCreate()),V(e,t)};U(o,e=>{$.available&&!Y.authError&&e(s)}),D(a),D(r);var c=I(r,2),l=e=>{V(e,AU())};U(c,e=>{!$.available&&!Y.authError&&e(l)});var u=I(c,2),d=e=>{var t=jU(),n=P(t,!0);D(t),L(()=>H(n,$.error)),V(e,t)};U(u,e=>{$.error&&!Y.authError&&!$.formOpen&&e(d)});var f=I(u,2),p=e=>{Sk(e,{label:`Loading MCP servers...`})};U(f,e=>{$.loading&&!Y.authError&&e(p)});var m=I(f,2),h=e=>{var t=MU(),n=P(t);DO(P(n),{id:`mcp-server-filter`,placeholder:`Filter by name, slug, URL, transport, or status...`,label:`Filter MCP servers by name, slug, URL, transport, or status`,get value(){return $.filter},set value(e){$.filter=e}}),D(n),D(t),V(e,t)};U(m,e=>{($.servers.length>0||$.filter)&&$.available&&!Y.authError&&e(h)});var g=I(m,2);SU(g,{});var _=I(g,2);fU(_,{});var v=I(_,2),y=e=>{DU(e,{})};U(v,e=>{$.filtered.length>0&&$.available&&!Y.authError&&e(y)});var b=I(v,2),x=e=>{V(e,NU())};U(b,e=>{$.servers.length===0&&!$.filter&&!$.loading&&!Y.authError&&!$.error&&$.available&&e(x)});var S=I(b,2),C=e=>{V(e,PU())};U(S,e=>{$.servers.length>0&&$.filtered.length===0&&$.filter&&!$.loading&&!Y.authError&&$.available&&e(C)}),D(n),V(e,n),k()}Br([`click`]);var LU=`api_keys`,RU=`session_sticky_keys`,zU=`base_url`,BU=`service_account_json`,VU=`models`,HU={[LU]:{label:`API Keys`,control:`keys`,hint:`Identified sessions stay on one key by default, improving provider prompt-cache hits. Saved values are shown as ***********; leave the asterisks unchanged to keep the stored key.`},[RU]:{label:`Session-sticky API keys`,control:`checkbox`,hint:`Keep each identified conversation on one API key to preserve provider prompt-cache affinity. Turn off to rotate keys round-robin on every request.`},[zU]:{label:`Base URL`,control:`text`},api_version:{label:`API Version`,control:`text`,placeholder:`e.g. 2024-10-01-preview`,hint:`Leave empty for the provider default. Realtime endpoints may need a newer version.`},backend:{label:`Backend`,control:`select`,hint:`Which Google surface to call. Vertex authenticates with Google credentials instead of an API key.`},auth_type:{label:`Auth Type`,control:`select`,hint:`How to obtain Google credentials. Leave on the default to use Application Default Credentials.`},api_mode:{label:`API Mode`,control:`select`,hint:`Which request shape to send upstream.`},vertex_project:{label:`Vertex Project`,control:`text`,placeholder:`my-gcp-project`},vertex_location:{label:`Vertex Location`,control:`text`,placeholder:`us-central1`},service_account_file:{label:`Service Account File`,control:`text`,placeholder:`/path/to/service-account.json`,hint:`Path readable by the gateway process.`},[BU]:{label:`Service Account JSON`,control:`textarea`,placeholder:`Paste service account JSON`,hint:`Saved values are shown as ***********; leave the asterisks unchanged to keep the stored value, or clear it to remove.`},service_account_json_base64:{label:`Service Account JSON (base64)`,control:`text`,hint:`Saved values are shown as ***********; leave the asterisks unchanged to keep the stored value.`},gcp_scope:{label:`GCP Scope`,control:`text`,placeholder:`https://www.googleapis.com/auth/cloud-platform`},[VU]:{label:`Models (comma-separated)`,control:`text`,placeholder:`gpt-4o, gpt-4o-mini`,hint:`Leave empty to auto-discover models from the provider's /models endpoint where supported.`}};function UU(e){return HU[e]||{label:String(e||``).split(`_`).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),control:`text`}}function WU(){return{name:``,type:``,api_keys:[],session_sticky_keys:!0,base_url:``,api_version:``,backend:``,auth_type:``,api_mode:``,vertex_project:``,vertex_location:``,service_account_file:``,service_account_json:``,service_account_json_base64:``,gcp_scope:``,models:``,enabled:!0}}function GU(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.type,e.base_url].some(e=>String(e||``).toLowerCase().includes(r)))}function KU(e,t){let n=(Array.isArray(e)?e:[]).map(e=>String(e&&e.type||``).trim()).filter(Boolean),r=String(t||``).trim();return r&&!n.includes(r)&&n.push(r),n}function qU(e,t){let n=String(t||``).trim();return n&&(Array.isArray(e)?e:[]).find(e=>String(e&&e.type||``).trim()===n)||null}function JU(e,t){let n=e&&Array.isArray(e.fields)&&e.fields.length>0?e.fields:Object.keys(HU).map(e=>({name:e,advanced:e!==LU})),r=t||e&&e.default_base_url||``,i=[],a=[];for(let e of n){let t=String(e&&e.name||``).trim();if(!t)continue;let n={...UU(t),name:t,required:!!(e&&e.required),options:Array.isArray(e&&e.options)?e.options:[]};t===`base_url`&&r&&(n.placeholder=r,n.hint=`Defaults to `+r),n.options.length>0&&(n.control=`select`),(e&&e.advanced?a:i).push(n)}return{primary:i,advanced:a}}var YU=new Set([`name`,`type`,`enabled`]);function XU(e,t){let n=new Set([...t.primary||[],...t.advanced||[]].map(e=>e.name)),r=WU(),i={...e};for(let e of Object.keys(r))!YU.has(e)&&!n.has(e)&&(i[e]=r[e]);return i}function ZU(e){let t=Array.isArray(e&&e.api_keys)?e.api_keys.length:0;return t>0?t+` key`+(t===1?``:`s`):String(e&&e.service_account_json||``).trim()||String(e&&e.service_account_json_base64||``).trim()||String(e&&e.service_account_file||``).trim()?`service account`:String(e&&e.vertex_project||``).trim()?`ADC`:`keyless`}function QU(e){let t=Array.isArray(e&&e.models)?e.models:[];return t.length===0?`auto-discovered`:t.length+` model`+(t.length===1?``:`s`)}function $U(e){return(Array.isArray(e)?e:[]).map(e=>({value:String(e||``)}))}function eW(e){return(Array.isArray(e)?e:[]).map(e=>String(e&&e.value||``))}function tW(e,t){let n=String(t||``).trim();if(!n)return``;let r=new Set((Array.isArray(e)?e:[]).map(e=>String(e&&e.name||``).trim()));if(!r.has(n))return n;let i=1;for(;r.has(n+`-`+i);)i+=1;return n+`-`+i}function nW(e){return{name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),api_keys:$U(e&&e.api_keys),session_sticky_keys:!e||e.session_sticky_keys!==!1,base_url:String(e&&e.base_url||``),api_version:String(e&&e.api_version||``),backend:String(e&&e.backend||``),auth_type:String(e&&e.auth_type||``),api_mode:String(e&&e.api_mode||``),vertex_project:String(e&&e.vertex_project||``),vertex_location:String(e&&e.vertex_location||``),service_account_file:String(e&&e.service_account_file||``),service_account_json:String(e&&e.service_account_json||``),service_account_json_base64:String(e&&e.service_account_json_base64||``),gcp_scope:String(e&&e.gcp_scope||``),models:(Array.isArray(e&&e.models)?e.models:[]).join(`, `),enabled:!e||e.enabled!==!1}}function rW(e){let t=String(e||``).trim();return t.length>=3&&/^\*+$/.test(t)}function iW(e,t,n,r){let i={},a=String(e&&e.name||``).trim();String(e&&e.type||``).trim()||(i.type=`Select a provider type.`),a?a.includes(`/`)?i.name=`Name cannot contain '/' — it separates the provider from the model.`:t===`create`&&(Array.isArray(n)?n:[]).some(e=>String(e&&e.name||``).trim()===a)&&(i.name=`Provider "`+a+`" already exists.`):i.name=`Name is required.`;let{primary:o,advanced:s}=JU(r);for(let t of[...o,...s]){let n=aW(e,t);n&&(i[t.name]=n)}return i}function aW(e,t){if(t.name===`api_keys`){let n=eW(e&&e.api_keys);return t.required&&!n.some(e=>e.trim())?`At least one API key is required for this provider type.`:n.some(e=>!e.trim())?`Remove the empty row instead of leaving a key blank.`:``}let n=String(e&&e[t.name]||``).trim();if(t.required&&!n)return t.label+` is required for this provider type.`;if(!n)return``;if(t.name===`base_url`&&!n.includes(`://`)&&/[./]/.test(n))return`Include the scheme, e.g. https://`+n;if(t.name===`service_account_json`&&!rW(n))try{JSON.parse(n)}catch{return`Paste the service account JSON file's contents — this is not valid JSON.`}return``}function oW(e,t){let n={name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),enabled:!!(e&&e.enabled)},{primary:r,advanced:i}=JU(t),a=!!(t&&Array.isArray(t.fields)&&t.fields.length>0),o=new Set;for(let t of[...r,...i])!a&&t.name===`session_sticky_keys`||(o.add(t.name),n[t.name]=sW(e,t.name));for(let t of Object.keys(HU)){if(o.has(t)||t===`session_sticky_keys`)continue;let r=sW(e,t);(Array.isArray(r)?r.length>0:String(r).trim()!==``)&&(n[t]=r)}return n}function sW(e,t){switch(t){case LU:return eW(e&&e.api_keys);case VU:return ff(e&&e.models);case RU:return!!(e&&e.session_sticky_keys);case BU:return e&&e.service_account_json||``;default:return String(e&&e[t]||``).trim()}}var cW=new class{#e=j(N([]));get rows(){return R(this.#e)}set rows(e){M(this.#e,e,!0)}#t=j(!0);get available(){return R(this.#t)}set available(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}#r=j(``);get error(){return R(this.#r)}set error(e){M(this.#r,e,!0)}#i=j(``);get filter(){return R(this.#i)}set filter(e){M(this.#i,e,!0)}#a=j(!1);get formOpen(){return R(this.#a)}set formOpen(e){M(this.#a,e,!0)}#o=j(!1);get formSubmitting(){return R(this.#o)}set formSubmitting(e){M(this.#o,e,!0)}#s=j(`create`);get formMode(){return R(this.#s)}set formMode(e){M(this.#s,e,!0)}#c=j(!1);get advancedOpen(){return R(this.#c)}set advancedOpen(e){M(this.#c,e,!0)}#l=j(N(WU()));get form(){return R(this.#l)}set form(e){M(this.#l,e,!0)}#u=j(N({}));get fieldErrors(){return R(this.#u)}set fieldErrors(e){M(this.#u,e,!0)}#d=j(``);get focusField(){return R(this.#d)}set focusField(e){M(this.#d,e,!0)}#f=j(``);get deletingName(){return R(this.#f)}set deletingName(e){M(this.#f,e,!0)}#p=j(!1);get deleteSubmitting(){return R(this.#p)}set deleteSubmitting(e){M(this.#p,e,!0)}#m=j(N([]));get types(){return R(this.#m)}set types(e){M(this.#m,e,!0)}#h=j(!1);get typesLoaded(){return R(this.#h)}set typesLoaded(e){M(this.#h,e,!0)}#g=null;get filteredRows(){return GU(this.rows,this.filter)}get schema(){return qU(this.types,this.form.type)}get formFields(){if(!String(this.form.type||``).trim())return{primary:[],advanced:[]};let e=this.schema;return JU(e,e&&e.default_base_url)}async fetchTypes(){let e=await Tk(`/admin/provider-credentials/types`,{label:`provider credential types`});e.status===`ok`&&(this.types=e.items,this.typesLoaded=!0)}async fetchPage(){this.#g&&this.#g.abort();let e=new AbortController;this.#g=e,this.loading=!0,this.error=``;try{let t=await Tk(`/admin/provider-credentials`,{label:`provider credentials`,errorFallback:`Failed to load provider credentials.`,unavailableStatuses:[503,404],options:{signal:e.signal}});if(t.status===`stale`||e.signal.aborted)return;if(t.status===`unavailable`){this.available=!1,this.rows=[];return}if(t.status===`error`){t.result&&(this.available=!0),this.rows=[],this.error=t.error;return}this.available=!0,this.rows=t.items,this.typesLoaded||await this.fetchTypes()}finally{this.#g===e&&(this.#g=null,this.loading=!1)}}#_(e,t){this.formMode=e,this.form=t,this.advancedOpen=!1,this.error=``,this.fieldErrors={},this.focusField=``}openCreate(){this.#_(`create`,WU()),this.formOpen=!0,this.typesLoaded||this.fetchTypes()}openEdit(e){!e||e.managed||(this.#_(`edit`,nW(e)),this.formOpen=!0,this.typesLoaded||this.fetchTypes())}closeForm(){this.formOpen=!1,this.#_(`create`,WU())}selectType(){this.fieldErrors={};let e=this.formFields;this.formMode===`create`&&(this.form=XU(this.form,e));let t=e.primary.find(e=>e.name===`api_keys`);t&&t.required&&this.form.api_keys.length===0&&(this.form.api_keys=[{value:``}])}clearFieldError(e){if(this.fieldErrors[e]===void 0)return;let{[e]:t,...n}=this.fieldErrors;this.fieldErrors=n}addApiKeyRow(){this.form.api_keys.push({value:``}),this.clearFieldError(`api_keys`)}removeApiKeyRow(e){this.form.api_keys.splice(e,1),this.clearFieldError(`api_keys`)}#v(e){let t=hd(e,`Failed to save provider credential.`),n=String(e&&e.error&&typeof e.error==`object`&&e.error.param||``).trim();if(n&&this.#y(n)){this.fieldErrors={...this.fieldErrors,[n]:t},this.error=``,this.#b();return}this.error=t}#y(e){if(e===`name`||e===`type`)return!0;let{primary:t,advanced:n}=this.formFields;return[...t,...n].some(t=>t.name===e)}#b(){let e=Object.keys(this.fieldErrors);if(e.length===0)return;let{primary:t,advanced:n}=this.formFields;n.some(t=>e.includes(t.name))&&(this.advancedOpen=!0);let r=[`type`,`name`,...t.map(e=>e.name),...n.map(e=>e.name)];this.focusField=r.find(t=>e.includes(t))||e[0]}#x(){Hf.fetchModels(),Hf.fetchCategories()}async submitForm(){let e=this.schema,t=iW(this.form,this.formMode,this.rows,e);if(Object.keys(t).length>0){this.fieldErrors=t,this.error=``,this.#b();return}let n=oW(this.form,e);this.error=``,this.fieldErrors={},this.formSubmitting=!0;try{let e=await Ek(`/admin/provider-credentials`,`PUT`,n,{label:`save provider credential`,errorFallback:`Failed to save provider credential.`,unavailableMessage:`Provider credential management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.error=e.error;return}if(e.status===`error`){e.result&&e.result.status!==401?this.#v(e.result.data):this.error=e.error;return}of.success(`Provider "`+n.name+`" saved.`),this.closeForm(),this.#x(),this.fetchPage()}finally{this.formSubmitting=!1}}async performDelete(e){this.deleteSubmitting=!0,this.deletingName=e;try{let t=await Ek(`/admin/provider-credentials/`+encodeURIComponent(e),`DELETE`,void 0,{label:`delete provider credential`,errorFallback:`Failed to delete provider credential.`,unavailableMessage:`Provider credential management is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,Wd.error=t.error;return}if(t.status===`error`){Wd.error=t.error;return}of.success(`Provider "`+e+`" deleted.`),Wd.close(),this.formOpen&&this.form.name===e&&this.closeForm(),this.#x(),this.fetchPage()}finally{this.deleteSubmitting=!1,this.deletingName=``}}requestDelete(e){let t=String(e||``).trim();if(!t||this.deleteSubmitting)return;let n=(this.rows||[]).find(e=>String(e&&e.name||``).trim()===t);n&&n.managed||Wd.open({title:`Delete Provider`,titleId:`providerCredentialDeleteDialogTitle`,inputId:`provider-credential-delete-confirmation`,message:`Type "`+t+`" to permanently delete this provider credential. Requests routed to it will fail until it is reconfigured.`,requiredText:t,confirmLabel:`Delete Provider`,icon:Eu,dialogClass:`budget-reset-dialog`,onConfirm:()=>this.performDelete(t)})}},lW=B(`Config`),uW=B(` `,1),dW=B(`
              `),fW=B(`
              NameTypeBase URLAuthModelsEnabledUpdatedActions
              `);function pW(e,t){O(t,!0);var n=fW(),r=P(n),i=I(P(r));W(i,21,()=>cW.filteredRows,e=>e.name,(e,t)=>{var n=dW(),r=P(n),i=P(r),a=P(i,!0);D(i);var o=I(i,2),s=e=>{V(e,lW())};U(o,e=>{R(t).managed&&e(s)}),D(r);var c=I(r),l=P(c),u=P(l,!0);D(l),D(c);var d=I(c),f=P(d,!0);D(d);var p=I(d),m=P(p,!0);D(p);var h=I(p),g=P(h,!0);D(h);var _=I(h),v=P(_);let y;var b=P(v,!0);D(v),D(_);var x=I(_),S=P(x,!0);D(x);var C=I(x),w=P(C),T=P(w),E=e=>{var n=uW(),r=F(n);{let e=A(()=>`Edit provider `+R(t).name);wk(r,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>cW.openEdit(R(t)),children:(e,t)=>{J(e,{get icon(){return su},class:`table-icon-svg`})},$$slots:{default:!0}})}var i=I(r,2);{let e=A(()=>(cW.deletingName===R(t).name?`Deleting provider `:`Delete provider `)+R(t).name),n=A(()=>cW.deletingName===R(t).name);wk(i,{get label(){return R(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>cW.requestDelete(R(t).name),get disabled(){return R(n)},children:(e,t)=>{J(e,{get icon(){return Nu},class:`table-icon-svg`})},$$slots:{default:!0}})}V(e,n)};U(T,e=>{R(t).managed||e(E)}),D(w),D(C),D(n),L((e,n,r)=>{H(a,R(t).name),H(u,R(t).type),K(d,`title`,R(t).base_url||``),H(f,R(t).base_url||`—`),H(m,e),H(g,n),y=G(v,1,`auth-key-status-badge`,null,y,{"auth-key-status-active":R(t).enabled,"auth-key-status-inactive":!R(t).enabled}),H(b,R(t).enabled?`Enabled`:`Disabled`),H(S,r)},[()=>ZU(R(t)),()=>QU(R(t)),()=>md.formatTimestamp(R(t).updated_at)]),V(e,n)}),D(i),D(r),D(n),V(e,n),k()}var mW=B(``),hW=B(`
              `),gW=B(`
              `,1),_W=B(``),vW=B(``),yW=B(``),bW=B(``),xW=B(``),SW=B(` `),CW=B(` `),wW=B(`
              `);function TW(e,t){O(t,!0);let n=A(()=>`provider-credential-`+t.field.name),r=A(()=>cW.fieldErrors[t.field.name]||``),i=A(()=>R(r)?R(n)+`-error`:t.field.hint?R(n)+`-hint`:void 0),a=A(()=>{let e=String(cW.form[t.field.name]||``).trim();return!e||t.field.options.includes(e)?t.field.options:[...t.field.options,e]});function o(){cW.clearFieldError(t.field.name)}var s=wW(),c=P(s),l=P(c),u=I(l),d=e=>{V(e,mW())};U(u,e=>{t.field.required&&e(d)}),D(c);var f=I(c,2),p=e=>{var t=gW(),a=F(t);W(a,21,()=>cW.form.api_keys,ii,(e,t,a)=>{var s=hW(),c=P(s);ea(c),K(c,`aria-label`,`API key `+(a+1)),wk(I(c,2),{label:`Remove API key `+(a+1),class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>cW.removeApiKeyRow(a),children:(e,t)=>{J(e,{get icon(){return Eu},class:`table-icon-svg`})},$$slots:{default:!0}}),D(s),L(()=>{K(c,`id`,a===0?R(n):R(n)+`-`+a),K(c,`aria-invalid`,R(r)?`true`:void 0),K(c,`aria-describedby`,a===0?R(i):void 0)}),z(`input`,c,o),la(c,()=>R(t).value,e=>R(t).value=e),V(e,s)}),D(a);var s=I(a,2),c=P(s);J(P(c),{get icon(){return lu},class:`form-action-icon`}),Ve(2),D(c),D(s),L(()=>K(c,`id`,cW.form.api_keys.length===0?R(n):void 0)),z(`click`,c,()=>cW.addApiKeyRow()),V(e,t)},m=e=>{var s=vW(),c=P(s);c.value=c.__value=``,W(I(c),16,()=>R(a),e=>e,(e,t)=>{var n=_W(),r=P(n,!0);D(n);var i={};L(()=>{H(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(s),L(()=>{K(s,`id`,R(n)),K(s,`aria-invalid`,R(r)?`true`:void 0),K(s,`aria-describedby`,R(i))}),z(`change`,s,o),Ui(s,()=>cW.form[t.field.name],e=>cW.form[t.field.name]=e),V(e,s)},h=e=>{var a=yW();ea(a),L(()=>{K(a,`id`,R(n)),K(a,`aria-invalid`,R(r)?`true`:void 0),K(a,`aria-describedby`,R(i))}),z(`change`,a,o),ua(a,()=>cW.form[t.field.name],e=>cW.form[t.field.name]=e),V(e,a)},g=e=>{var a=bW();ut(a),L(()=>{K(a,`id`,R(n)),K(a,`placeholder`,t.field.placeholder||``),K(a,`aria-invalid`,R(r)?`true`:void 0),K(a,`aria-describedby`,R(i))}),z(`input`,a,o),la(a,()=>cW.form[t.field.name],e=>cW.form[t.field.name]=e),V(e,a)},_=e=>{var a=xW();ea(a),L(()=>{K(a,`id`,R(n)),K(a,`placeholder`,t.field.placeholder||``),K(a,`aria-invalid`,R(r)?`true`:void 0),K(a,`aria-describedby`,R(i))}),z(`input`,a,o),la(a,()=>cW.form[t.field.name],e=>cW.form[t.field.name]=e),V(e,a)};U(f,e=>{t.field.control===`keys`?e(p):t.field.control===`select`?e(m,1):t.field.control===`checkbox`?e(h,2):t.field.control===`textarea`?e(g,3):e(_,-1)});var v=I(f,2),y=e=>{var t=SW(),i=P(t,!0);D(t),L(()=>{K(t,`id`,R(n)+`-error`),H(i,R(r))}),V(e,t)},b=e=>{var r=CW(),i=P(r,!0);D(r),L(()=>{K(r,`id`,R(n)+`-hint`),H(i,t.field.hint)}),V(e,r)};U(v,e=>{R(r)?e(y):t.field.hint&&e(b,1)}),D(s),L(()=>{K(c,`for`,R(n)),H(l,`${t.field.label??``} `)}),V(e,s),k()}Br([`input`,`click`,`change`]);var EW=B(`

              The name is the stable identity used for routing and cannot change once created.

              `),DW=B(``),OW=B(` `),kW=B(`Determines which fields the gateway uses to build requests.`),AW=B(` `),jW=B(`Suggested from the selected type; used to route requests to this provider instance and editable before saving.`),MW=B(`Immutable once created.`),NW=B(`

              Pick a type to configure its credentials — each provider type asks for different settings.

              `),PW=B(`
              Advanced settings
              `),FW=B(`
              `,1);function IW(e,t){O(t,!0);let n=A(()=>KU(cW.types,cW.form.type)),r=A(()=>cW.formFields),i=A(()=>cW.fieldErrors.name||``),a=A(()=>cW.fieldErrors.type||``);function o(){cW.selectType(),cW.formMode===`create`&&(cW.form.name=tW(cW.rows,cW.form.type))}On(()=>{let e=cW.focusField;if(!e)return;cW.focusField=``;let t=document.getElementById(`provider-credential-`+e);t&&(t.scrollIntoView({block:`center`}),t.focus({preventScroll:!0}))});{let t=e=>{V(e,EW())},s=A(()=>cW.formMode===`edit`?`Edit Provider`:`Add Provider`);OA(e,{get open(){return cW.formOpen},get title(){return R(s)},ariaLabel:`Provider credential editor`,get error(){return cW.error},get submitting(){return cW.formSubmitting},novalidate:!0,onclose:()=>cW.closeForm(),onsubmit:()=>cW.submitForm(),headerHint:t,children:(e,t)=>{var s=FW(),c=F(s),l=I(P(c),2),u=P(l);u.value=u.__value=``,W(I(u),16,()=>R(n),e=>e,(e,t)=>{var n=DW(),r=P(n,!0);D(n);var i={};L(()=>{H(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(l);var d=I(l,2),f=e=>{var t=OW(),n=P(t,!0);D(t),L(()=>H(n,R(a))),V(e,t)},p=e=>{V(e,kW())};U(d,e=>{R(a)?e(f):e(p,-1)}),D(c);var m=I(c,2),h=I(P(m),2);ea(h);var g=I(h,2),_=e=>{var t=AW(),n=P(t,!0);D(t),L(()=>H(n,R(i))),V(e,t)},v=e=>{V(e,jW())},y=e=>{V(e,MW())};U(g,e=>{R(i)?e(_):cW.formMode===`create`?e(v,1):e(y,-1)}),D(m);var b=I(m,2),x=e=>{V(e,NW())};U(b,e=>{cW.form.type||e(x)});var S=I(b,2);W(S,17,()=>R(r).primary,e=>e.name,(e,t)=>{TW(e,{get field(){return R(t)}})});var C=I(S,2),w=P(C);AP(P(w),{get enabled(){return cW.form.enabled},label:`provider`,onclick:()=>cW.form.enabled=!cW.form.enabled}),D(w),D(C);var T=I(C,2),E=e=>{var t=PW(),n=P(t),i=P(n),a=I(P(i),2),o=P(a,!0);D(a),D(i),D(n);var s=I(n,2);W(s,21,()=>R(r).advanced,e=>e.name,(e,t)=>{TW(e,{get field(){return R(t)}})}),D(s),D(t),L(e=>{t.open=cW.advancedOpen,H(o,e)},[()=>R(r).advanced.map(e=>e.label).join(`, `)]),zr(`toggle`,t,e=>cW.advancedOpen=e.currentTarget.open),V(e,t)};U(T,e=>{R(r).advanced.length>0&&e(E)}),L(()=>{l.disabled=cW.formMode===`edit`,K(l,`aria-invalid`,R(a)?`true`:void 0),K(l,`aria-describedby`,R(a)?`provider-credential-type-error`:`provider-credential-type-hint`),h.disabled=cW.formMode===`edit`,K(h,`aria-invalid`,R(i)?`true`:void 0),K(h,`aria-describedby`,R(i)?`provider-credential-name-error`:`provider-credential-name-hint`)}),z(`change`,l,o),Ui(l,()=>cW.form.type,e=>cW.form.type=e),z(`input`,h,()=>cW.clearFieldError(`name`)),la(h,()=>cW.form.name,e=>cW.form.name=e),V(e,s)},$$slots:{headerHint:!0,default:!0}})}k()}Br([`change`,`input`]);var LW=B(`

              Providers

              `),RW=B(``),zW=B(`
              Provider credential management is unavailable.
              `),BW=B(``),VW=B(`
              `),HW=B(`

              No dashboard-managed providers yet. Add one here, or declare providers in config.yaml / environment variables.

              `),UW=B(`

              No providers match your filter.

              `),WW=B(`
              `);function GW(e,t){O(t,!0),On(()=>{Y.refreshTick,Gu.page===`providers-config`&&cW.fetchPage()});var n=WW(),r=P(n),i=P(r);eD(P(i),{copyId:`providers-config-help-copy`,label:`model providers help`,title:e=>{V(e,LW())},help:e=>{Ve(),V(e,Yr(`Configure LLM provider credentials here instead of setting API keys as - environment variables. Providers declared in config.yaml or env vars - are read-only (Config badge) and cannot be edited or deleted from the - dashboard. Keys are masked after saving.`))},$$slots:{title:!0,help:!0}}),D(i);var a=I(i,2),o=P(a),s=e=>{var t=RW();J(P(t),{get icon(){return lu},class:`form-action-icon`}),Ve(2),D(t),L(()=>t.disabled=cW.formSubmitting),z(`click`,t,()=>cW.openCreate()),V(e,t)};U(o,e=>{cW.available&&!Y.needsAuth&&e(s)}),D(a),D(r);var c=I(r,2),l=e=>{V(e,zW())};U(c,e=>{!cW.available&&!Y.needsAuth&&e(l)});var u=I(c,2),d=e=>{var t=BW(),n=P(t,!0);D(t),L(()=>H(n,cW.error)),V(e,t)};U(u,e=>{cW.error&&!Y.needsAuth&&!cW.formOpen&&e(d)});var f=I(u,2),p=e=>{Sk(e,{label:`Loading providers...`})};U(f,e=>{cW.loading&&!Y.needsAuth&&e(p)});var m=I(f,2),h=e=>{var t=VW(),n=P(t);DO(P(n),{id:`provider-credential-filter`,placeholder:`Filter by name, type, or base URL...`,label:`Filter providers by name, type, or base URL`,get value(){return cW.filter},set value(e){cW.filter=e}}),D(n),D(t),V(e,t)};U(m,e=>{(cW.rows.length>0||cW.filter)&&cW.available&&!Y.needsAuth&&e(h)});var g=I(m,2);IW(g,{});var _=I(g,2),v=e=>{pW(e,{})};U(_,e=>{cW.filteredRows.length>0&&cW.available&&!Y.needsAuth&&e(v)});var y=I(_,2),b=e=>{V(e,HW())};U(y,e=>{cW.rows.length===0&&!cW.filter&&!cW.loading&&!Y.needsAuth&&!cW.error&&cW.available&&e(b)});var x=I(y,2),S=e=>{V(e,UW())};U(x,e=>{cW.rows.length>0&&cW.filteredRows.length===0&&cW.filter&&!cW.loading&&!Y.needsAuth&&cW.available&&e(S)}),D(n),V(e,n),k()}Br([`click`]);function KW(){return{name:``,description:``,user_path:``,labels:``,dashboard_access:!1,expires_at:``}}function qW(e){let t=[];for(let n of String(e||``).split(`,`)){let e=n.trim();e&&!t.includes(e)&&t.push(e)}return t}function JW(e){let t=String(e||``).trim();if(!t)return``;let n=t.startsWith(`/`)?t:`/`+t;for(let e of n.split(`/`)){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function YW(e){if(JW(e))return``;let t=String(e||``).trim();if(!t)return``;let n=t.startsWith(`/`)?t:`/`+t,r=[];for(let e of n.split(`/`)){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function XW(e){let t=e||{},n=String(t.name||``).trim();if(!n)return{error:`Name is required.`};let r=JW(t.user_path);if(r)return{error:r};let i=YW(t.user_path),a=qW(t.labels),o={name:n,description:String(t.description||``).trim()||void 0,user_path:i||void 0,labels:a.length?a:void 0,dashboard_access:t.dashboard_access?!0:void 0};return t.expires_at&&(o.expires_at=t.expires_at+`T23:59:59Z`),{payload:o}}function ZW(e,t=Date.now()){let n=e&&e.expires_at;if(!n)return!1;let r=Date.parse(n);return Number.isFinite(r)&&r<=t}function QW(e){return e?!!e.deactivated_at||e.enabled===!1:!1}function $W(e,t=Date.now()){return!e||e.active===!1||QW(e)?!1:!ZW(e,t)}function eG(e){return[e.name,e.description,e.user_path,e.redacted_value,...e.labels||[]].filter(Boolean).join(` `).toLowerCase()}function tG(e,t={}){let{query:n=``,showInactive:r=!1,now:i=Date.now()}=t,a=String(n||``).trim().toLowerCase();return(Array.isArray(e)?e:[]).filter(e=>!r&&!$W(e,i)?!1:!a||eG(e).includes(a))}function nG(e,t){return QW(e)?2:+!$W(e,t)}function rG(e){let t=e&&e.expires_at;if(!t)return 1/0;let n=Date.parse(t);return Number.isFinite(n)?n:1/0}function iG(e){let t=Date.parse(e&&e.deactivated_at||``);return Number.isFinite(t)?t:-1/0}function aG(e,t=Date.now()){return(Array.isArray(e)?e.slice():[]).sort((e,n)=>{let r=nG(e,t),i=nG(n,t);if(r!==i)return r-i;let[a,o]=r===2?[iG(e),iG(n)]:[rG(e),rG(n)];return a===o?String(e.name||``).localeCompare(String(n.name||``)):a>o?-1:1})}function oG(e,t=Date.now()){return(Array.isArray(e)?e:[]).reduce((e,n)=>e+ +!$W(n,t),0)}function sG(){return{open:!1,id:``,name:``,value:``,submitting:!1,error:``}}var cG=new class{#e=j(N([]));get keys(){return R(this.#e)}set keys(e){M(this.#e,e,!0)}#t=j(!0);get available(){return R(this.#t)}set available(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}#r=j(``);get error(){return R(this.#r)}set error(e){M(this.#r,e,!0)}#i=j(``);get filter(){return R(this.#i)}set filter(e){M(this.#i,e,!0)}#a=j(!1);get showInactive(){return R(this.#a)}set showInactive(e){M(this.#a,e,!0)}#o=A(()=>aG(tG(this.keys,{query:this.filter,showInactive:this.showInactive})));get visibleKeys(){return R(this.#o)}set visibleKeys(e){M(this.#o,e)}#s=A(()=>oG(this.keys));get inactiveCount(){return R(this.#s)}set inactiveCount(e){M(this.#s,e)}#c=j(!1);get formOpen(){return R(this.#c)}set formOpen(e){M(this.#c,e,!0)}#l=j(!1);get formSubmitting(){return R(this.#l)}set formSubmitting(e){M(this.#l,e,!0)}#u=j(``);get issuedValue(){return R(this.#u)}set issuedValue(e){M(this.#u,e,!0)}#d=j(``);get deactivatingID(){return R(this.#d)}set deactivatingID(e){M(this.#d,e,!0)}#f=j(``);get dashboardAccessID(){return R(this.#f)}set dashboardAccessID(e){M(this.#f,e,!0)}#p=j(N(KW()));get form(){return R(this.#p)}set form(e){M(this.#p,e,!0)}#m=j(N(sG()));get labelsEditor(){return R(this.#m)}set labelsEditor(e){M(this.#m,e,!0)}copyState=OI({logPrefix:`Failed to copy auth key:`});async fetchKeys(){this.loading=!0,this.error=``;try{let e=await Tk(`/admin/auth-keys`,{label:`auth keys`,errorFallback:`Unable to load API keys.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.keys=[];return}if(e.status===`error`){e.result&&(this.available=!0),this.error=e.error;return}this.available=!0,this.keys=e.items}finally{this.loading=!1}}openForm(){this.formSubmitting||this.formOpen||(this.formOpen=!0,this.error=``,this.issuedValue||(this.copyState.reset(),this.form=KW()))}closeForm(){this.formOpen&&(this.formOpen=!1,this.error=``,this.copyState.reset(),!this.formSubmitting&&!this.issuedValue&&(this.form=KW()))}copyIssuedValue(){return this.copyState.copy(this.issuedValue)}dismissIssuedKey(){this.issuedValue=``,this.copyState.reset(),this.form=KW()}async submitForm(){let e=XW(this.form);if(e.error){this.error=e.error;return}this.error=``,this.formSubmitting=!0;try{let t=await Ek(`/admin/auth-keys`,`POST`,e.payload,{label:`create API key`,errorFallback:`Failed to create API key.`,unavailableMessage:`Auth keys feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error,t.result&&t.result.status!==401&&console.error(`Failed to create API key:`,t.result.status,this.error);return}let n=t.result.data||{};this.issuedValue=n.value||``,this.formOpen=!0,this.copyState.reset(),this.form=KW(),this.fetchKeys()}finally{this.formSubmitting=!1}}openLabelsEditor(e){!e||this.labelsEditor.submitting||(this.labelsEditor={open:!0,id:e.id,name:e.name||``,value:(e.labels||[]).join(`, `),submitting:!1,error:``})}closeLabelsEditor(){!this.labelsEditor.open||this.labelsEditor.submitting||(this.labelsEditor=sG())}async submitLabelsEditor(){let e=this.labelsEditor;if(!e.open||e.submitting||!e.id)return;e.submitting=!0,e.error=``;let t={labels:qW(e.value)};try{let n=await Ek(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/labels`,`PUT`,t,{label:`update API key labels`,errorFallback:`Failed to update labels.`,unavailableMessage:`Auth keys feature is unavailable.`});if(n.status===`stale`)return;if(n.status===`unavailable`){this.available=!1,e.error=n.error;return}if(n.status===`error`){e.error=n.error,n.result&&n.result.status!==401&&console.error(`Failed to update auth key labels:`,n.result.status,e.error);return}of.success(`Labels updated for key "`+e.name+`".`),e.submitting=!1,this.closeLabelsEditor(),this.fetchKeys()}finally{e.submitting=!1}}async toggleDashboardAccess(e){if(!e||!e.active||this.dashboardAccessID)return;let t=!e.dashboard_access;this.dashboardAccessID=e.id;try{let n=await Ek(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/dashboard-access`,`PUT`,{dashboard_access:t},{label:`update API key dashboard access`,errorFallback:`Failed to update dashboard access.`,unavailableMessage:`Auth keys feature is unavailable.`});if(n.status===`stale`)return;if(n.status===`unavailable`){this.available=!1,of.error(n.error);return}if(n.status===`error`){n.result&&n.result.status!==401&&console.error(`Failed to update auth key dashboard access:`,n.result.status,n.error),of.error(n.error);return}of.success(`Dashboard access `+(t?`granted to`:`revoked for`)+` key "`+e.name+`".`),this.fetchKeys()}finally{this.dashboardAccessID=``}}async deactivateKey(e){if(!(!e||!e.active)&&window.confirm(`Deactivate key "`+e.name+`"? This cannot be undone.`)){this.deactivatingID=e.id;try{let t=await Ek(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/deactivate`,`POST`,void 0,{label:`deactivate API key`,errorFallback:`Failed to deactivate key.`,unavailableMessage:`Auth keys feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,of.error(t.error);return}if(t.status===`error`){t.result&&t.result.status!==401&&console.error(`Failed to deactivate auth key:`,t.result.status,t.error),of.error(t.error);return}of.success(`Key "`+e.name+`" deactivated.`),this.fetchKeys()}finally{this.deactivatingID=``}}}},lG=B(``),uG=B(`

              Store this key securely — it won’t be shown again.

              `),dG=B(``),fG=B(``),pG=B(``),mG=B(``),hG=B(`
              `);function gG(e,t){O(t,!0);{let t=A(()=>cG.issuedValue?``:cG.error),n=A(()=>cG.issuedValue?`Done, I’ve stored it`:`Create API Key`),r=A(()=>cG.issuedValue?Ll:lu);OA(e,{get open(){return cG.formOpen},title:`Create API Key`,ariaLabel:`API key editor`,get error(){return R(t)},get submitting(){return cG.formSubmitting},get submitLabel(){return R(n)},submittingLabel:`Creating...`,get submitIcon(){return R(r)},cancel:!1,dialogClass:`auth-key-editor`,onclose:()=>cG.closeForm(),onsubmit:()=>cG.issuedValue?cG.dismissIssuedKey():cG.submitForm(),children:(e,t)=>{var n=Xr(),r=F(n),i=e=>{var t=uG(),n=I(P(t),2),r=P(n),i=P(r,!0);D(r),DV(I(r,2),{get state(){return cG.copyState},onclick:()=>cG.copyIssuedValue()}),D(n);var a=I(n,2),o=e=>{V(e,lG())};U(a,e=>{cG.copyState.error&&e(o)}),D(t),L(()=>H(i,cG.issuedValue)),V(e,t)},a=e=>{var t=hG(),n=P(t),r=P(n),i=I(P(r),2);ea(i),D(r);var a=I(r,2),o=I(P(a),2);ea(o),D(a),D(n);var s=I(n,2),c=P(s);eD(c,{copyId:`auth-key-user-path-help-copy`,label:`API key user path help`,title:e=>{V(e,dG())},help:e=>{Ve(),V(e,Yr(`When set, this key overrides the configured user path request - header for audit logging and downstream request context.`))},$$slots:{title:!0,help:!0}});var l=I(c,2);ea(l),D(s);var u=I(s,2),d=P(u);eD(d,{copyId:`auth-key-labels-help-copy`,label:`API key labels help`,title:e=>{V(e,fG())},help:e=>{Ve(),V(e,Yr(`Every request authenticated with this key gets these labels, in - addition to any labels from tagging headers. Labels show up in - usage analytics, the request log, and audit logs.`))},$$slots:{title:!0,help:!0}});var f=I(d,2);ea(f),D(u);var p=I(u,2),m=P(p);eD(m,{copyId:`auth-key-dashboard-access-help-copy`,label:`API key dashboard access help`,title:e=>{V(e,pG())},help:e=>{Ve(),V(e,Yr(`When off, this key is denied the dashboard and every /admin API - endpoint. Model endpoints and GET /v1/usage stay available to - the key. The master key always has dashboard access.`))},$$slots:{title:!0,help:!0}});var h=I(m,2),g=P(h);ea(g),Ve(2),D(h),D(p),AA(I(p,2),{id:`auth-key-description`,label:`Description (optional)`,children:(e,t)=>{var n=mG();ut(n),la(n,()=>cG.form.description,e=>cG.form.description=e),V(e,n)},$$slots:{default:!0}}),D(t),la(i,()=>cG.form.name,e=>cG.form.name=e),la(o,()=>cG.form.expires_at,e=>cG.form.expires_at=e),la(l,()=>cG.form.user_path,e=>cG.form.user_path=e),la(f,()=>cG.form.labels,e=>cG.form.labels=e),ua(g,()=>cG.form.dashboard_access,e=>cG.form.dashboard_access=e),V(e,t)};U(r,e=>{cG.issuedValue?e(i):e(a,-1)}),V(e,n)},$$slots:{default:!0}})}k()}var _G=B(`

              `),vG=B(`

              Applies to new requests made with this key. Leave empty to remove all labels.

              `,1);function yG(e,t){O(t,!0),OA(e,{get open(){return cG.labelsEditor.open},title:`Edit Labels`,ariaLabel:`API key labels editor`,get error(){return cG.labelsEditor.error},get submitting(){return cG.labelsEditor.submitting},submitLabel:`Save Labels`,cancel:!1,dialogClass:`auth-key-editor`,onclose:()=>cG.closeLabelsEditor(),onsubmit:()=>cG.submitLabelsEditor(),headerHint:e=>{var t=_G(),n=P(t,!0);D(t),L(()=>H(n,cG.labelsEditor.name)),V(e,t)},children:(e,t)=>{AA(e,{id:`auth-key-labels-edit`,label:`Labels (comma-separated)`,children:(e,t)=>{var n=vG(),r=F(n);ea(r),Ve(2),la(r,()=>cG.labelsEditor.value,e=>cG.labelsEditor.value=e),V(e,n)},$$slots:{default:!0}})},$$slots:{headerHint:!0,default:!0}}),k()}var bG=B(` `),xG=B(`
              `),SG=B(``),CG=B(`Expired`),wG=B(` `),TG=B(` `,1),EG=B(`Deactivated`),DG=B(`
              `),OG=B(`
              NameDescriptionUser PathLabelsTokenDashboard Access ExpiresCreated
              `);function kG(e,t){O(t,!0);var n=OG(),r=P(n),i=P(r),a=P(i),o=I(P(a),5),s=P(o);J(I(P(s)),{get icon(){return Zl},width:`13`,height:`13`}),D(s),D(o),Ve(3),D(a),D(i);var c=I(i);W(c,21,()=>cG.visibleKeys,e=>e.id,(e,t)=>{var n=DG();let r;var i=P(n),a=P(i,!0);D(i);var o=I(i),s=P(o,!0);D(o);var c=I(o),l=P(c,!0);D(c);var u=I(c),d=P(u),f=e=>{var n=xG();W(n,20,()=>R(t).labels||[],e=>e,(e,t)=>{var n=bG(),r=P(n,!0);D(n),L(e=>{Bi(n,e),H(r,t)},[()=>XC(t)]),V(e,n)}),D(n),V(e,n)},p=e=>{V(e,SG())};U(d,e=>{(R(t).labels||[]).length>0?e(f):e(p,-1)}),D(u);var m=I(u),h=P(m),g=P(h,!0);D(h),D(m);var _=I(m),v=P(_);let y;var b=P(v,!0);D(v),D(_);var x=I(_),S=P(x),C=e=>{var n=wG(),r=P(n),i=P(r,!0);D(r);var a=I(r,2),o=e=>{V(e,CG())},s=A(()=>ZW(R(t)));U(a,e=>{R(s)&&e(o)}),D(n),L(e=>H(i,e),[()=>xf(R(t).expires_at)]),V(e,n)},w=e=>{V(e,Yr(`—`))};U(S,e=>{R(t).expires_at?e(C):e(w,-1)}),D(x);var T=I(x),E=P(T,!0);D(T);var ee=I(T),te=P(ee),ne=P(te),re=e=>{var n=TG(),r=F(n);{let e=A(()=>(R(t).dashboard_access?`Revoke dashboard access for API key `:`Grant dashboard access to API key `)+R(t).name),n=A(()=>!!cG.dashboardAccessID);wk(r,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>cG.toggleDashboardAccess(R(t)),get disabled(){return R(n)},children:(e,n)=>{{let n=A(()=>R(t).dashboard_access?bu:yu);J(e,{get icon(){return R(n)},class:`table-icon-svg`})}},$$slots:{default:!0}})}var i=I(r,2);{let e=A(()=>`Edit labels for API key `+R(t).name);wk(i,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>cG.openLabelsEditor(R(t)),children:(e,t)=>{J(e,{get icon(){return su},class:`table-icon-svg`})},$$slots:{default:!0}})}var a=I(i,2);{let e=A(()=>(cG.deactivatingID===R(t).id?`Deactivating API key `:`Deactivate API key `)+R(t).name),n=A(()=>cG.deactivatingID===R(t).id);wk(a,{get label(){return R(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>cG.deactivateKey(R(t)),get disabled(){return R(n)},children:(e,t)=>{J(e,{get icon(){return uu},class:`table-icon-svg`})},$$slots:{default:!0}})}V(e,n)},ie=e=>{var n=EG();L(e=>K(n,`title`,e),[()=>R(t).deactivated_at?`Deactivated on `+Sf(R(t).deactivated_at):`Deactivated`]),V(e,n)},ae=A(()=>QW(R(t)));U(ne,e=>{R(t).active?e(re):R(ae)&&e(ie,1)}),D(te),D(ee),D(n),L((e,i,o)=>{r=G(n,1,`svelte-nf0ldb`,null,r,e),H(a,R(t).name),H(s,R(t).description||`—`),H(l,R(t).user_path||`—`),H(g,R(t).redacted_value),y=G(v,1,`auth-key-status-badge`,null,y,{"auth-key-status-active":R(t).dashboard_access,"auth-key-status-inactive":!R(t).dashboard_access}),H(b,R(t).dashboard_access?`Allowed`:`Denied`),K(x,`title`,i),H(E,o)},[()=>({"auth-key-row-deactivated":QW(R(t))}),()=>R(t).expires_at?Sf(R(t).expires_at):``,()=>md.formatTimestamp(R(t).created_at)]),V(e,n)}),D(c),D(r),D(n),V(e,n),k()}var AG=B(``),jG=B(`
              API key management is unavailable.
              `),MG=B(``),NG=B(`

              Managed API keys authenticate requests to the gateway. Deactivation is - permanent — create a new key if access needs to be restored.

              `),PG=B(`
              `),FG=B(`
              `),IG=B(`

              `),LG=B(`

              No API keys yet. Issue a key to get started.

              `),RG=B(`
              `);function zG(e,t){O(t,!0),On(()=>{Y.refreshTick,Gu.page===`auth-keys`&&cG.fetchKeys()});var n=RG(),r=P(n),i=I(P(r),2),a=P(i),o=e=>{var t=AG();J(P(t),{get icon(){return lu},class:`table-icon-svg`}),Ve(2),D(t),L(()=>t.disabled=cG.formSubmitting),z(`click`,t,()=>{cG.formSubmitting||cG.openForm()}),V(e,t)};U(a,e=>{cG.available&&!Y.authError&&e(o)}),D(i),D(r);var s=I(r,2),c=e=>{V(e,jG())};U(s,e=>{!cG.available&&!Y.authError&&e(c)});var l=I(s,2),u=e=>{var t=MG(),n=P(t,!0);D(t),L(()=>H(n,cG.error)),V(e,t)};U(l,e=>{cG.error&&!Y.authError&&!cG.formOpen&&e(u)});var d=I(l,2),f=e=>{V(e,NG())};U(d,e=>{cG.available&&!Y.authError&&e(f)});var p=I(d,2);gG(p,{});var m=I(p,2);yG(m,{});var h=I(m,2),g=e=>{var t=PG();kE(P(t),{size:18,label:`Loading API keys`}),D(t),V(e,t)};U(h,e=>{cG.loading&&cG.keys.length===0&&e(g)});var _=I(h,2),v=e=>{var t=FG(),n=P(t);DO(P(n),{placeholder:`Filter by name, description, user path, label, or token...`,label:`Filter API keys by name, description, user path, label, or token`,get value(){return cG.filter},set value(e){cG.filter=e}}),D(n);var r=I(n,2),i=P(r),a=P(i);ea(a);var o=I(a,2),s=I(P(o)),c=e=>{var t=Yr();L(()=>H(t,`(${cG.inactiveCount??``})`)),V(e,t)};U(s,e=>{cG.inactiveCount>0&&e(c)}),D(o),D(i),D(r),D(t),ua(a,()=>cG.showInactive,e=>cG.showInactive=e),V(e,t)};U(_,e=>{cG.keys.length>0&&cG.available&&e(v)});var y=I(_,2),b=e=>{kG(e,{})};U(y,e=>{cG.visibleKeys.length>0&&cG.available&&e(b)});var x=I(y,2),S=e=>{var t=IG(),n=P(t);D(t),L(()=>H(n,`No API keys match the current filter.${cG.inactiveCount>0&&!cG.showInactive?` `+cG.inactiveCount+` inactive `+(cG.inactiveCount===1?`key is`:`keys are`)+` hidden.`:``}`)),V(e,t)};U(x,e=>{cG.keys.length>0&&cG.visibleKeys.length===0&&cG.available&&e(S)});var C=I(x,2),w=e=>{V(e,LG())};U(C,e=>{cG.keys.length===0&&!cG.loading&&!Y.authError&&!cG.error&&cG.available&&e(w)}),D(n),V(e,n),k()}Br([`click`]);var BG=B(`

              Timezone

              `),VG=B(``),HG=B(``),UG=B(`
              `,1);function WG(e,t){O(t,!0);function n(){md.saveOverride(),Y.refresh()}function r(){md.clearOverride(),Y.refresh()}var i=UG(),a=F(i);eD(P(a),{copyId:`timezone-help-copy`,label:`timezone help`,text:`Day-based analytics, charts, and date filters use your effective timezone. Usage and audit logs keep UTC in the hover title while rendering row timestamps in your effective timezone.`,title:e=>{V(e,BG())},$$slots:{title:!0}}),D(a);var o=I(a,2),s=P(o),c=I(P(s),2),l=P(c),u=P(l);D(l),l.value=l.__value=``,W(I(l),17,()=>md.options,e=>e.value,(e,t)=>{var n=VG(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(c),D(s),D(o);var d=I(o,2),f=P(d),p=e=>{var t=HG();z(`click`,t,r),V(e,t)};U(f,e=>{md.override&&e(p)}),D(d),L(e=>H(u,`Automatic (${e??``})`),[()=>md.detectedTimeZoneLabel()]),zr(`focus`,c,()=>md.ensureOptions()),z(`change`,c,n),Ui(c,()=>md.override,e=>md.override=e),V(e,i),k()}Br([`change`,`click`]);var GG=B(``),KG=B(`

              Failover

              `,1);function qG(e,t){O(t,!0);let n=A(()=>Q.failoverSaving||Q.failoverGenerating||Q.failoverDraftSaving||!Q.failoverAvailable||!Q.failoverEnabled());var r=KG(),i=F(r),a=I(P(i),2),o=P(a),s=P(o);J(s,{get icon(){return ju},class:`form-action-icon`});var c=I(s,2),l=P(c,!0);D(c),D(o);var u=I(o,2);J(P(u),{get icon(){return Eu},class:`form-action-icon`}),Ve(2),D(u),D(a),D(i);var d=I(i,2),f=P(d),p=e=>{var t=GG(),n=P(t,!0);D(t),L(()=>H(n,Q.failoverError)),V(e,t)};U(f,e=>{Q.failoverError&&e(p)}),D(d),CF(I(d,2),{}),L(()=>{o.disabled=R(n),H(l,Q.failoverGenerating?`Generating...`:`Generate failover models automatically`),u.disabled=R(n)}),z(`click`,o,()=>Q.generateFailoverRules()),z(`click`,u,()=>Q.openFailoverResetDialog()),V(e,r),k()}Br([`click`]);function JG(){return{daily_reset_hour:0,daily_reset_minute:0,weekly_reset_weekday:1,weekly_reset_hour:0,weekly_reset_minute:0,monthly_reset_day:1,monthly_reset_hour:0,monthly_reset_minute:0}}function YG(e,t){let n=t||{},r=(e,t)=>{if(e===``)return t;let n=Number(e);return Number.isFinite(n)&&Number.isInteger(n)?Math.trunc(n):t},i=(e,t)=>r(n[e],t),a=(t,n)=>e?r(e[t],n):n;return{daily_reset_hour:a(`daily_reset_hour`,i(`daily_reset_hour`,0)),daily_reset_minute:a(`daily_reset_minute`,i(`daily_reset_minute`,0)),weekly_reset_weekday:a(`weekly_reset_weekday`,i(`weekly_reset_weekday`,1)),weekly_reset_hour:a(`weekly_reset_hour`,i(`weekly_reset_hour`,0)),weekly_reset_minute:a(`weekly_reset_minute`,i(`weekly_reset_minute`,0)),monthly_reset_day:a(`monthly_reset_day`,i(`monthly_reset_day`,1)),monthly_reset_hour:a(`monthly_reset_hour`,i(`monthly_reset_hour`,0)),monthly_reset_minute:a(`monthly_reset_minute`,i(`monthly_reset_minute`,0))}}function XG(){return[{value:0,label:`Sunday`},{value:1,label:`Monday`},{value:2,label:`Tuesday`},{value:3,label:`Wednesday`},{value:4,label:`Thursday`},{value:5,label:`Friday`},{value:6,label:`Saturday`}]}var ZG=B(`

              Budget Resets

              `),QG=B(``),$G=B(`

              If the selected day does not exist in a month, the reset runs on - the last day of that month.

              `),eK=B(``),tK=B(``),nK=B(`
              Monthly
              Weekly
              Daily
              `,1);function rK(e,t){O(t,!0);let n=j(N(JG())),r=j(!1),i=j(!1),a=j(``),o=j(!1),s=A(()=>Td.budgetsVisible());async function c(){if(await Td.ensureLoaded(),!Td.budgetsVisible()){M(a,``);return}M(r,!0),M(a,``);try{let e=await bd(`/admin/budgets/settings`,{label:`budget settings`});if(e.stale)return;if(!e.ok){M(a,`Unable to load budget settings.`);return}M(n,YG(e.data,R(n)),!0)}catch(e){console.error(`Failed to fetch budget settings:`,e),M(a,`Unable to load budget settings.`)}finally{M(r,!1)}}async function l(){if(!R(i)){M(i,!0);try{let e=await xd(`/admin/budgets/settings`,`PUT`,YG(R(n),R(n)),{label:`budget settings`});if(e.stale)return;if(!e.ok){of.error(`Unable to save budget settings.`);return}M(n,YG(e.data,R(n)),!0),M(a,``),of.success(`Budget settings saved.`)}catch(e){console.error(`Failed to save budget settings:`,e),of.error(`Unable to save budget settings.`)}finally{M(i,!1)}}}On(()=>{Y.refreshTick,c()});var u=Xr(),d=F(u),f=e=>{var t=nK(),s=F(t),c=P(s);eD(c,{copyId:`budget-settings-help-copy`,label:`budget help`,text:`Budget reset anchors are stored in the database and evaluated in UTC. Hourly budgets reset at the top of each hour.`,title:e=>{V(e,ZG())},$$slots:{title:!0}});var u=I(c,2),d=P(u),f=I(P(d),2),p=P(f);eD(p,{copyId:`budget-monthly-day-help-copy`,label:`day of month help`,external:!0,get open(){return R(o)},set open(e){M(o,e,!0)},title:e=>{V(e,QG())},$$slots:{title:!0}});var m=I(p,2);ea(m),D(f);var h=I(f,2),g=I(P(h),2);ea(g),D(h);var _=I(h,2),v=I(P(_),2);ea(v),D(_);var y=I(_,2),b=P(y),x=e=>{V(e,$G())};U(b,e=>{R(o)&&e(x)}),D(y),D(d);var S=I(d,2),C=I(P(S),2),w=I(P(C),2);W(w,21,XG,e=>e.value,(e,t)=>{var n=eK(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(w),D(C);var T=I(C,2),E=I(P(T),2);ea(E),D(T);var ee=I(T,2),te=I(P(ee),2);ea(te),D(ee),Ve(2),D(S);var ne=I(S,2),re=I(P(ne),4),ie=I(P(re),2);ea(ie),D(re);var ae=I(re,2),oe=I(P(ae),2);ea(oe),D(ae),Ve(2),D(ne),D(u);var se=I(u,2),ce=P(se);J(P(ce),{get icon(){return pu},class:`form-action-icon`}),Ve(2),D(ce);var le=I(ce,2),ue=e=>{kE(e,{size:16,label:`Loading budget settings`})};U(le,e=>{R(r)&&e(ue)}),D(se),D(s);var de=I(s,2),fe=P(de),pe=e=>{var t=tK(),n=P(t,!0);D(t),L(()=>H(n,R(a))),V(e,t)};U(fe,e=>{R(a)&&e(pe)}),D(de),L(()=>{ce.disabled=R(i)||R(r),K(ce,`aria-busy`,R(i)?`true`:`false`)}),la(m,()=>R(n).monthly_reset_day,e=>R(n).monthly_reset_day=e),la(g,()=>R(n).monthly_reset_hour,e=>R(n).monthly_reset_hour=e),la(v,()=>R(n).monthly_reset_minute,e=>R(n).monthly_reset_minute=e),Ui(w,()=>R(n).weekly_reset_weekday,e=>R(n).weekly_reset_weekday=e),la(E,()=>R(n).weekly_reset_hour,e=>R(n).weekly_reset_hour=e),la(te,()=>R(n).weekly_reset_minute,e=>R(n).weekly_reset_minute=e),la(ie,()=>R(n).daily_reset_hour,e=>R(n).daily_reset_hour=e),la(oe,()=>R(n).daily_reset_minute,e=>R(n).daily_reset_minute=e),z(`click`,ce,l),V(e,t)};U(d,e=>{R(s)&&e(f)}),V(e,u),k()}Br([`click`]);var iK=B(`

              Reset All Budgets

              Start new budget periods for every configured budget without changing - the limits.

              `);function aK(e,t){O(t,!0);var n=Xr(),r=F(n),i=e=>{var t=iK(),n=I(P(t),2),r=P(n);J(P(r),{get icon(){return fu},class:`form-action-icon`}),Ve(2),D(r),D(n),D(t),L(()=>r.disabled=X.resetAllLoading),z(`click`,r,()=>X.openResetDialog()),V(e,t)},a=A(()=>Td.budgetsVisible());U(r,e=>{R(a)&&e(i)}),V(e,n),k()}Br([`click`]);function oK(){return{header:``,prefix:``,do_not_pass:!1,delimiter:``,managed:!1}}function sK(e){return(e&&Array.isArray(e.headers)?e.headers:[]).map(e=>({header:typeof e.header==`string`?e.header:``,prefix:typeof e.prefix==`string`?e.prefix:``,do_not_pass:e.do_not_pass===!0,delimiter:typeof e.delimiter==`string`&&e.delimiter!==`,`?e.delimiter:``,managed:e.managed===!0}))}function cK(e){return{headers:(Array.isArray(e)?e:[]).filter(e=>!e.managed&&e.header.trim()!==``).map(e=>({header:e.header.trim(),prefix:e.prefix,do_not_pass:e.do_not_pass,delimiter:e.delimiter}))}}function lK(e){return e&&e.error&&e.error.message?e.error.message:``}var uK=B(`

              Tagging based on headers

              `),dK=B(`config`),fK=B(``),pK=B(`
              `),mK=B(`

              No tagging headers configured. Requests are not labelled.

              `),hK=B(``),gK=B(`
              `,1);function _K(e,t){O(t,!0);let n=j(N([])),r=j(!0),i=j(!1),a=j(!1),o=j(``);function s(){R(n).push(oK())}function c(e){let t=R(n)[e];!t||t.managed||R(n).splice(e,1)}async function l(){M(i,!0),M(o,``);try{let e=await bd(`/admin/tagging/settings`,{label:`tagging settings`});if(e.stale)return;if(!e.ok){M(o,`Unable to load tagging settings.`);return}M(n,sK(e.data),!0),M(r,e.data&&e.data.editable!==!1,!0)}catch(e){console.error(`Failed to fetch tagging settings:`,e),M(o,`Unable to load tagging settings.`)}finally{M(i,!1)}}async function u(){if(!(R(a)||!R(r))){M(a,!0);try{let e=await xd(`/admin/tagging/settings`,`PUT`,cK(R(n)),{label:`tagging settings`});if(e.stale)return;if(!e.ok){of.error(e.status!==401&&lK(e.data)||`Unable to save tagging settings.`);return}M(n,sK(e.data),!0),M(r,e.data&&e.data.editable!==!1,!0),M(o,``),of.success(`Tagging settings saved.`)}catch(e){console.error(`Failed to save tagging settings:`,e),of.error(`Unable to save tagging settings.`)}finally{M(a,!1)}}}On(()=>{Y.refreshTick,l()});var d=gK(),f=F(d),p=P(f);eD(p,{copyId:`tagging-settings-help-copy`,label:`tagging help`,text:`Each request is labelled from the listed headers; labels land in usage tracking and audit logs. A header value can carry several labels split by the delimiter (default: comma). The prefix is trimmed from each label only — the header itself is forwarded unchanged unless 'Do not pass' is checked. Rows marked CONFIG come from config.yaml or TAGGING_HEADER_* env vars and are read-only here.`,title:e=>{V(e,uK())},$$slots:{title:!0}});var m=I(p,2),h=P(m);W(h,17,()=>R(n),ii,(e,t,n)=>{var i=pK(),a=P(i),o=P(a);K(o,`for`,`tagging-header-`+n);var s=I(o,2);ea(s),K(s,`id`,`tagging-header-`+n),D(a);var l=I(a,2),u=P(l);K(u,`for`,`tagging-prefix-`+n);var d=I(u,2);ea(d),K(d,`id`,`tagging-prefix-`+n),D(l);var f=I(l,2),p=P(f);K(p,`for`,`tagging-delimiter-`+n);var m=I(p,2);ea(m),K(m,`id`,`tagging-delimiter-`+n),D(f);var h=I(f,2),g=P(h);ea(g),Ve(2),D(h);var _=I(h,2),v=P(_),y=e=>{V(e,dK())},b=e=>{var i=fK();L(()=>{i.disabled=!R(r),K(i,`aria-label`,`Remove tagging header `+(R(t).header||n+1))}),z(`click`,i,()=>c(n)),V(e,i)};U(v,e=>{R(t).managed?e(y):e(b,-1)}),D(_),D(i),L(()=>{s.disabled=R(t).managed||!R(r),d.disabled=R(t).managed||!R(r),m.disabled=R(t).managed||!R(r),g.disabled=R(t).managed||!R(r)}),la(s,()=>R(t).header,e=>R(t).header=e),la(d,()=>R(t).prefix,e=>R(t).prefix=e),la(m,()=>R(t).delimiter,e=>R(t).delimiter=e),ua(g,()=>R(t).do_not_pass,e=>R(t).do_not_pass=e),V(e,i)});var g=I(h,2),_=e=>{kE(e,{size:16,label:`Loading tagging settings`})};U(g,e=>{R(i)&&e(_)});var v=I(g,2),y=e=>{V(e,mK())};U(v,e=>{!R(i)&&R(n).length===0&&e(y)}),D(m);var b=I(m,2),x=P(b);J(P(x),{get icon(){return lu},class:`form-action-icon`}),Ve(2),D(x);var S=I(x,2);J(P(S),{get icon(){return pu},class:`form-action-icon`}),Ve(2),D(S),D(b),D(f);var C=I(f,2),w=P(C),T=e=>{var t=hK(),n=P(t,!0);D(t),L(()=>H(n,R(o))),V(e,t)};U(w,e=>{R(o)&&e(T)}),D(C),L(()=>{x.disabled=!R(r)||R(a)||R(i),S.disabled=!R(r)||R(a)||R(i),K(S,`aria-busy`,R(a)?`true`:`false`)}),z(`click`,x,s),z(`click`,S,u),V(e,d),k()}Br([`click`]);function vK(e){let t=e||{};if(t.selectedPreset)return{days:parseInt(t.selectedPreset,10)||30};let n=t.customStartDate?bf(t.customStartDate):``,r=t.customEndDate||t.today||null;return{start_date:n,end_date:r?bf(r):``}}function yK(e,t,n,r){return{...vK(e),user_path:String(t||``).trim(),selector:String(n||``).trim(),confirmation:r}}function bK(e){let t=Number(e&&e.matched||0),n=Number(e&&e.recalculated||0),r=Number(e&&e.without_pricing||0),i=`Pricing recalculated for `+n+` of `+t+` usage record`+(t===1?``:`s`)+`.`;return r>0&&(i+=` `+r+` usage record`+(r===1?` still lacks`:`s still lack`)+` pricing metadata.`),i}var xK=B(`

              Usage Pricing Recalculation

              `),SK=B(`
              `);function CK(e,t){O(t,!0);let n=j(``),r=j(``),i=j(!1),a=A(()=>Td.booleanFlag(`USAGE_PRICING_RECALCULATION_ENABLED`,!1));function o(){if(!R(a)){of.error(`Usage pricing recalculation is unavailable.`);return}R(i)||Wd.open({title:`Recalculate Pricing`,titleId:`pricingRecalculateDialogTitle`,inputId:`pricing-recalculate-confirmation`,requiredText:`recalculate`,confirmLabel:`Recalculate Pricing`,icon:Ml,dialogClass:`pricing-recalculate-dialog`,message:`Stored usage cost fields matching the selected filters will be overwritten.`,onConfirm:()=>s()})}async function s(){if(!R(a)){of.error(`Usage pricing recalculation is unavailable.`);return}if(!R(i)){M(i,!0);try{let e=await xd(`/admin/usage/recalculate-pricing`,`POST`,yK({selectedPreset:Vf.selectedPreset,customStartDate:Vf.customStartDate,customEndDate:Vf.customEndDate,today:md.todayDate()},R(n),R(r),`recalculate`),{label:`pricing recalculation`});if(e.stale)return;if(!e.ok){Wd.error=`Unable to recalculate pricing.`;return}Wd.close(),of.success(bK(e.data)),qf.fetchUsage()}catch(e){console.error(`Failed to recalculate pricing:`,e),Wd.error=`Unable to recalculate pricing.`}finally{M(i,!1)}}}var c=Xr(),l=F(c),u=e=>{var t=SK(),s=P(t);eD(s,{copyId:`pricing-recalculate-help-copy`,label:`pricing recalculation help`,text:`Recalculate stored input, output, total, and Pro Saved costs from the current model pricing metadata. This overwrites matching historical cost fields. Filters are applied to the selected date range, user path subtree, and provider/model selector or alias.`,title:e=>{V(e,xK())},$$slots:{title:!0}});var c=I(s,2),l=P(c),u=I(P(l),2);lp(P(u),{}),D(u),D(l);var d=I(l,2),f=I(P(d),2);ea(f),D(d);var p=I(d,2),m=I(P(p),2);ea(m),D(p),D(c);var h=I(c,2),g=P(h);J(P(g),{get icon(){return Ml},class:`form-action-icon`}),Ve(2),D(g),D(h),D(t),L(()=>{g.disabled=R(i)||!R(a),K(g,`aria-busy`,R(i)?`true`:`false`)}),la(f,()=>R(n),e=>M(n,e)),la(m,()=>R(r),e=>M(r,e)),z(`click`,g,o),V(e,t)};U(l,e=>{R(a)&&e(u)}),V(e,c),k()}Br([`click`]);function wK(e){return String(e&&e.status||`ok`).toLowerCase()}function TK(e){if(!e||typeof e!=`object`)return`Runtime refresh completed.`;let t=Number(e.model_count||0),n=Number(e.provider_count||0),r=wK(e);return(r===`ok`?`Runtime refreshed.`:r===`partial`?`Runtime refresh completed with warnings.`:`Runtime refresh failed.`)+` `+t+` model`+(t===1?``:`s`)+` across `+n+` provider`+(n===1?``:`s`)+`.`}function EK(e){return!!e&&wK(e)===`ok`}function DK(e){let t=e&&e.steps;return Array.isArray(t)?t:[]}function OK(e){let t=String(e&&e.name||``).replace(/_/g,` `),n=String(e&&e.status||``).trim(),r=String(e&&(e.error||e.message)||``).trim();return t?r?t+`: `+n+` - `+r:t+`: `+n:r||n||``}var kK=B(`

              Runtime Refresh

              `),AK=B(`
            • `),jK=B(`
                `),MK=B(`
                `,1);function NK(e,t){O(t,!0);let n=j(!1),r=j(null);async function i(){if(!R(n)){M(n,!0),M(r,null);try{let e=await xd(`/admin/runtime/refresh`,`POST`,void 0,{label:`runtime refresh`});if(e.stale)return;if(!e.ok){of.error(`Runtime refresh failed.`);return}M(r,e.data&&typeof e.data==`object`?e.data:null,!0),EK(R(r))?of.success(TK(R(r))):of.error(TK(R(r))),Y.refresh()}catch(e){console.error(`Failed to refresh runtime:`,e),of.error(`Runtime refresh failed.`)}finally{M(n,!1)}}}var a=MK(),o=F(a),s=P(o);eD(s,{copyId:`runtime-refresh-help-copy`,label:`runtime refresh help`,text:`Pull the latest model metadata, provider inventory, API keys, aliases, model access rules, guardrails, and workflows.`,title:e=>{V(e,kK())},$$slots:{title:!0}});var c=I(s,2),l=P(c);let u;J(P(l),{get icon(){return du},class:`settings-refresh-icon`}),Ve(2),D(l),D(c),D(o);var d=I(o,2),f=P(d),p=e=>{var t=jK();W(t,21,()=>DK(R(r)),e=>e.name,(e,t)=>{var n=AK(),r=P(n,!0);D(n),L(e=>{G(n,1,`runtime-refresh-step is-${R(t).status??``}`,`svelte-yeq2mp`),H(r,e)},[()=>OK(R(t))]),V(e,n)}),D(t),V(e,t)},m=A(()=>DK(R(r)).length>0);U(f,e=>{R(m)&&e(p)}),D(d),L(()=>{u=G(l,1,`btn btn-primary btn-with-icon settings-refresh-btn`,null,u,{"is-refreshing":R(n)}),l.disabled=R(n),K(l,`aria-busy`,R(n)?`true`:`false`)}),z(`click`,l,i),V(e,a),k()}Br([`click`]);var PK=B(``),FK=B(`

                `),IK=B(`

                `),LK=B(``),RK=B(`
                `),zK=B(`

                AI Processing

                `);function BK(e,t){O(t,!0);let n=j(N([])),r=j(!1),i=j(``),a=j(``);async function o(){M(r,!0),M(a,``);try{let e=await bd(`/admin/runtime/settings`,{label:`runtime settings`});if(e.stale)return;if(!e.ok){M(a,`Unable to load runtime settings.`);return}M(n,Array.isArray(e.data?.settings)?e.data.settings:[],!0)}catch(e){console.error(`Failed to load runtime settings:`,e),M(a,`Unable to load runtime settings.`)}finally{M(r,!1)}}async function s(e,t,r){if(!(e.locked||R(i))){M(i,e.key,!0);try{let i=await xd(`/admin/runtime/settings/${encodeURIComponent(e.key)}`,`PUT`,{value:t},{label:`save ${e.label}`});if(i.stale){r.value=e.value;return}if(!i.ok){r.value=e.value,of.error(`Unable to save ${e.label}.`);return}M(n,R(n).map(t=>t.key===e.key?i.data:t),!0),of.success(`${e.label} saved.`)}catch(t){r.value=e.value,console.error(`Failed to save runtime setting:`,t),of.error(`Unable to save ${e.label}.`)}finally{M(i,``)}}}On(()=>{Y.refreshTick,o()});var c=Xr(),l=F(c),u=e=>{var t=zK(),o=P(t),c=I(P(o),2),l=e=>{var t=PK(),n=P(t,!0);D(t),L(()=>H(n,R(a))),V(e,t)};U(c,e=>{R(a)&&e(l)}),D(o);var u=I(o,2);W(u,21,()=>R(n),e=>e.key,(e,t)=>{var n=RK(),r=P(n),a=P(r),o=P(a,!0);D(a);var c=I(a,2),l=e=>{var n=FK(),r=P(n,!0);D(n),L(()=>H(r,R(t).description)),V(e,n)};U(c,e=>{R(t).description&&e(l)});var u=I(c,2),d=e=>{var n=IK(),r=P(n);D(n),L(()=>H(r,`Managed by ${(R(t).managed_by||`environment`)??``}`)),V(e,n)};U(u,e=>{R(t).locked&&e(d)}),D(r);var f=I(r,2);W(f,21,()=>R(t).options||[],e=>e.value,(e,t)=>{var n=LK(),r=P(n,!0);D(n);var i={};L(()=>{K(n,`title`,R(t).description||``),H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(f);var p;Hi(f),D(n),L(()=>{K(a,`for`,`runtime-setting-${R(t).key}`),H(o,R(t).label),K(f,`id`,`runtime-setting-${R(t).key}`),f.disabled=R(t).locked||R(i)!==``,p!==(p=R(t).value)&&(f.value=(f.__value=R(t).value)??``,Vi(f,R(t).value))}),z(`change`,f,e=>s(R(t),e.currentTarget.value,e.currentTarget)),V(e,n)}),D(u),D(t),L(()=>K(u,`aria-busy`,R(r)?`true`:`false`)),V(e,t)};U(l,e=>{(R(n).length>0||R(a))&&e(u)}),V(e,c),k()}Br([`change`]);var VK=B(`
                `);function HK(e,t){O(t,!0),On(()=>{Y.refreshTick,Gu.page===`settings`&&(md.ensureOptions(),Td.ensureLoaded())});var n=VK(),r=I(P(n),2),i=P(r);WG(i,{});var a=I(i,2);qG(a,{});var o=I(a,2);rK(o,{});var s=I(o,2);aK(s,{});var c=I(s,2);_K(c,{});var l=I(c,2);BK(l,{});var u=I(l,2);CK(u,{}),NK(I(u,2),{}),D(r);var d=I(r,2),f=P(d,!0);D(d),D(n),L(e=>H(f,e),[()=>Bu()]),V(e,n),k()}var UK=B(`
                `),WK=B(`
                 
                `),GK=B(`
                 
                `),KK=B(`
                 
                `),qK=B(`
                `),JK=B(`
                `,1),YK=B(`
                `);function XK(e,t){O(t,!0);let n=q(t,`showPromptCache`,3,!0),r=OI({logPrefix:`Failed to copy interaction message:`}),i=A(()=>t.msg.role===`function_call`||t.msg.role===`function_result`);function a(e){return(Math.max(0,Math.min(1,Number(e||0)))*100).toFixed(1)+`%`}function o(e){let t=Math.max(0,Math.min(1,Number(e||0)));return t>0?Math.round(t*100)+`% of this visible prompt item is estimated provider-cached`:void 0}function s(e){return e.role===`function_call`?(e.toolCalls||[]).map(e=>e.name+`()`).join(`, `):(e.functionName?e.functionName+`: `:``)+e.text}var c=YK();let l;var u=P(c),d=e=>{var r=WK(),i=P(r),a=P(i),c=P(a,!0);D(a);var l=I(a,2),u=P(l,!0);D(l);var d=I(l,2),f=P(d,!0);D(d),D(i);var p=I(i,2),m=e=>{var n=UK(),r=P(n);D(n),L(()=>H(r,`Call ID: ${t.msg.functionCallID??``}`)),V(e,n)};U(p,e=>{t.msg.functionCallID&&e(m)});var h=I(p,2),g=e=>{var n=Xr();W(F(n),17,()=>t.msg.toolCalls,ii,(e,n)=>{var r=Xr(),i=F(r),a=e=>{var r=UK(),i=P(r);D(r),L(()=>H(i,`Call ID${t.msg.toolCalls.length>1?` (`+R(n).name+`)`:``}: ${R(n).id??``}`)),V(e,r)};U(i,e=>{R(n).id&&e(a)}),V(e,r)}),V(e,n)};U(h,e=>{t.msg.role===`function_call`&&t.msg.toolCalls&&e(g)});var _=I(h,2),v=P(_,!0);D(_),D(r),L((e,n,i,a)=>{K(r,`title`,e),H(c,t.msg.roleLabel),H(u,n),H(f,i),H(v,a)},[()=>n()?o(t.msg.promptCacheRatio):void 0,()=>s(t.msg),()=>md.formatTimestamp(t.msg.timestamp),()=>cV(t.msg)]),V(e,r)},f=e=>{var r=JK(),i=F(r),a=P(i),s=P(a,!0);D(a);var c=I(a,2),l=P(c,!0);D(c),D(i);var u=I(i,2),d=e=>{var r=GK(),i=P(r,!0);D(r),L(e=>{K(r,`title`,e),H(i,t.msg.text)},[()=>n()?o(t.msg.promptCacheRatio):void 0]),V(e,r)};U(u,e=>{t.msg.text&&e(d)});var f=I(u,2),p=e=>{var n=qK();W(n,23,()=>t.msg.toolCalls,(e,t)=>e.name+`-`+t,(e,t)=>{var n=KK(),r=P(n),i=P(r),a=P(i,!0);D(i);var o=I(i,2),s=P(o,!0);D(o),D(r);var c=I(r,2),l=e=>{var n=UK(),r=P(n);D(n),L(()=>H(r,`Call ID: ${R(t).id??``}`)),V(e,n)};U(c,e=>{R(t).id&&e(l)});var u=I(c,2),d=P(u,!0);D(u),D(n),L((e,n)=>{H(a,R(t).name+`()`),H(s,e),H(d,n)},[()=>uV(R(t))||`No arguments`,()=>uV(R(t))||`No arguments`]),V(e,n)}),D(n),V(e,n)};U(f,e=>{t.msg.toolCalls&&e(p)}),L((e,n)=>{K(i,`title`,e),H(s,t.msg.roleLabel),H(l,n)},[()=>n()?o(t.msg.promptCacheRatio):void 0,()=>md.formatTimestamp(t.msg.timestamp)]),V(e,r)};U(u,e=>{R(i)?e(d):e(f,-1)});var p=I(u,2);let m;var h=P(p);{let e=A(()=>r.copied?Hl:Gl);J(h,{get icon(){return R(e)},width:`14`,height:`14`})}D(p),D(c),L(e=>{G(c,1,Ni([R(i)?`chat-function-note`:`chat-message`,t.msg.roleClass,{"is-anchor":t.msg.isAnchor,"is-after-anchor":t.msg.isAfterAnchor}]),`svelte-12s99s5`),K(c,`data-conversation-anchor`,t.msg.isAnchor?`true`:void 0),K(c,`data-entry-id`,t.msg.entryID),l=Bi(c,``,l,e),m=G(p,1,`chat-message-copy svelte-12s99s5`,null,m,{"is-copied":r.copied}),K(p,`aria-label`,r.copied?`Message copied`:`Copy message`),K(p,`title`,r.copied?`Copied`:`Copy message`)},[()=>({"--prompt-cache-fill":a(t.msg.promptCacheRatio),"--prompt-cache-visibility":n()&&t.msg.promptCacheRatio>0?`1`:`0`})]),z(`click`,p,e=>{e.stopPropagation(),r.copy(lV(t.msg))}),V(e,c),k()}Br([`click`]);function ZK(e,t=0){let n=Math.max(0,tq(e)-Math.max(0,tq(t))),r=Math.min(320,Math.max(180,Math.floor(n*.58))),i=Math.min(360,Math.max(128,Math.floor(n*.35)));return{min:r,max:Math.max(r,n-i)}}function QK(e,t,n=0){let r=ZK(t,n),i=tq(e)||520;return Math.min(r.max,Math.max(r.min,Math.round(i)))}function $K(e,t,n=0){return QK(tq(t)-tq(e),t,n)}function eq(e,t,n,r){if(!Array.isArray(e)||e.length===0)return{index:-1,align:`start`};let i=tq(t),a=0;e.forEach((e,t)=>{tq(e)<=i+1&&(a=t)});let o=Number(r)<0?-1:1,s=Math.min(e.length-1,Math.max(0,a+o)),c=e.length-1,l=tq(e[c])0&&s===c&&l?`end`:`start`}}function tq(e){let t=Number(e);return Number.isFinite(t)?t:0}var nq=B(`
                `),rq=B(`
                `),iq=B(`

                Loading interactions...

                `),aq=B(`

                No interaction data available for this entry.

                `),oq=B(``),sq=B(`
                `,1),cq=B(`

                Showing the newest part of this session and the selected log.

                `),lq=B(`
                `),uq=B(``),dq=B(``),fq=B(``);function pq(e,t){O(t,!0);let n=vV,r=Number(Ja(`gomodel_interactions_panel_width`)),i=`gomodel_interactions_prompt_cache_fill`,a=Number.isFinite(r)&&r>0?r:520,o=j(N(a)),s=j(320),c=j(760),l=j(!1),u=j(!1),d=j(Ja(i,`true`)!==`false`),f=null;function p(e,{fullscreen:t,revealWithoutSlide:n=!1}){let r=vR(180);return t?$d(e,{x:R(o),duration:r,easing:nf}):n?{duration:0}:ef(e,{axis:`x`,duration:r,easing:nf})}async function m(e){if(e===R(l))return;let t=R(l)&&!e;M(u,t,!0),M(l,e,!0),t&&(await xr(),M(u,!1))}function h(){M(d,!R(d)),Ya(i,R(d))}function g(){return(document.querySelector(`.sidebar`)?.getBoundingClientRect().width||0)+(document.querySelector(`.sidebar-toggle`)?.getBoundingClientRect().width||0)}function _(){let e=g(),t=ZK(window.innerWidth,e);M(s,t.min,!0),M(c,t.max,!0),M(o,QK(a,window.innerWidth,e),!0)}function v(e){M(o,$K(e,window.innerWidth,g()),!0),a=R(o)}function y(e){e.button===0&&(e.preventDefault(),f=e.pointerId,e.currentTarget.setPointerCapture(e.pointerId),document.body.classList.add(`conversation-panel-resizing`),v(e.clientX))}function b(e){e.pointerId===f&&v(e.clientX)}function x(e){f===null||e.pointerId!==void 0&&e.pointerId!==f||(f=null,document.body.classList.remove(`conversation-panel-resizing`),Ya(`gomodel_interactions_panel_width`,a))}function S(e){e.key!==`ArrowLeft`&&e.key!==`ArrowRight`||(e.preventDefault(),a=R(o)+(e.key===`ArrowLeft`?24:-24),_(),a=R(o),Ya(`gomodel_interactions_panel_width`,a))}function C(e){let t=document.getElementById(`interactions-drawer-content`),r=n.conversationThreadEl;if(!t||!r)return;let i=[...r.querySelectorAll(`[data-conversation-message="true"]`)],a=t.getBoundingClientRect(),o=a.top+14,s=eq(i.map(e=>e.getBoundingClientRect().top),o,a.bottom,e),c=i[s.index];if(!c)return;let l=s.align===`end`?t.scrollHeight:t.scrollTop+c.getBoundingClientRect().top-a.top-14;t.scrollTo({top:l,behavior:vR(1)>0?`smooth`:`auto`})}function w(){return[document.querySelector(`.sidebar`),document.querySelector(`.sidebar-toggle`),document.getElementById(`dashboard-content`)].filter(Boolean)}On(()=>{if(!n.conversationOpen)return;_();let e=document.querySelector(`.sidebar`),t=new ResizeObserver(_);e&&t.observe(e);let r=e=>{e.key===`Escape`&&!Tl.anyOpen&&(R(l)?m(!1):n.closeConversation())};return window.addEventListener(`keydown`,r),window.addEventListener(`resize`,_),()=>{x({}),t.disconnect(),window.removeEventListener(`keydown`,r),window.removeEventListener(`resize`,_)}}),On(()=>{n.conversationOpen||M(l,!1)}),On(()=>{if(!R(l))return;let e=w().map(e=>({element:e,inert:e.inert,ariaHidden:e.getAttribute(`aria-hidden`)}));return e.forEach(({element:e})=>{e.inert=!0,e.setAttribute(`aria-hidden`,`true`)}),()=>{e.forEach(({element:e,inert:t,ariaHidden:n})=>{e.inert=t,n===null?e.removeAttribute(`aria-hidden`):e.setAttribute(`aria-hidden`,n)})}}),On(()=>{Gu.page!==`audit-logs`&&n.conversationOpen&&n.closeConversation()});var T=Xr(),E=F(T),ee=e=>{var t=Xr();W(F(t),16,()=>[R(l)],e=>e,(e,t)=>{var r=fq();let i,a;var l=P(r),f=I(l,2),g=P(f),_=I(P(g),2),v=P(_);let w;D(_),D(g);var T=I(g,2),E=P(T),ee=P(E);{let e=A(()=>t?iu:ru);J(ee,{get icon(){return R(e)},class:`table-icon-svg`})}D(E),Pd(I(E,2),{label:`Close interactions`,onclick:()=>n.closeConversation(),get el(){return n.conversationCloseBtnEl},set el(e){n.conversationCloseBtnEl=e}}),D(T),D(f);var te=I(f,2),ne=P(te),re=e=>{var t=nq(),n=P(t);J(P(n),{get icon(){return Al},width:`14`,height:`14`}),D(n);var r=I(n,2);J(P(r),{get icon(){return Dl},width:`14`,height:`14`}),D(r),D(t),z(`click`,n,()=>C(-1)),z(`click`,r,()=>C(1)),V(e,t)};U(ne,e=>{n.conversationMessages.length>1&&e(re)});var ie=I(ne,2),ae=e=>{var t=rq(),r=P(t,!0);D(t),L(()=>H(r,n.conversationError)),V(e,t)};U(ie,e=>{n.conversationError&&e(ae)});var oe=I(ie,2),se=e=>{V(e,iq())};U(oe,e=>{n.conversationLoading&&e(se)});var ce=I(oe,2),le=e=>{V(e,aq())},ue=A(()=>!n.conversationLoading&&!n.followUpSending&&!n.conversationError&&n.conversationMessages.length===0&&!n.conversationLiveWaiting());U(ce,e=>{R(ue)&&e(le)});var de=I(ce,2),fe=e=>{var t=sq(),r=F(t),i=e=>{var t=oq(),n=P(t);let r;Ve(2),D(t),L(()=>{K(t,`aria-checked`,R(d)),K(t,`title`,(R(d)?`Hide`:`Show`)+` estimated provider prompt-cache fill`),r=G(n,1,`conversation-cache-switch svelte-ssrzja`,null,r,{"is-active":R(d)})}),z(`click`,t,h),V(e,t)},a=A(()=>n.conversationMessages.some(e=>Number(e.promptCacheRatio||0)>0));U(r,e=>{R(a)&&e(i)});var o=I(r,2);W(o,21,()=>n.conversationMessages,e=>e.uid,(e,t)=>{XK(e,{get msg(){return R(t)},get showPromptCache(){return R(d)}})}),D(o),ma(o,e=>n.conversationThreadEl=e,()=>n?.conversationThreadEl),V(e,t)};U(de,e=>{n.conversationMessages.length>0&&e(fe)});var pe=I(de,2),me=e=>{V(e,cq())};U(pe,e=>{n.conversationTruncated&&e(me)});var he=I(pe,2),ge=e=>{var t=lq(),r=I(P(t),2),i=P(r,!0);D(r),D(t),L(e=>H(i,e),[()=>n.conversationLiveStatusText()]),V(e,t)},_e=A(()=>n.conversationLiveWaiting());U(he,e=>{R(_e)&&e(ge)}),D(te);var ve=I(te,2),ye=e=>{var t=dq(),r=P(t),i=P(r);ut(i);var a=I(i,2),o=e=>{var t=uq(),r=P(t,!0);D(t),L(()=>H(r,n.followUpError)),V(e,t)};U(a,e=>{n.followUpError&&e(o)});var s=I(a,2),c=P(s),l=P(c,!0);D(c);var u=I(c,2),d=P(u,!0);D(u),D(s),D(r),D(t),L((e,t,r)=>{i.disabled=e,H(l,t),u.disabled=r,H(d,n.followUpSending?`Sending…`:`Send`)},[()=>n.followUpSending||n.conversationLiveWaiting(),()=>n.selectedConversationEntry()?.path||``,()=>!n.canSendFollowUp()]),zr(`submit`,r,e=>{e.preventDefault(),n.sendFollowUp()}),la(i,()=>n.followUpText,e=>n.followUpText=e),V(e,t)},be=A(()=>n.conversationAnchorID&&n.followUpKind());U(ve,e=>{R(be)&&e(ye)}),D(r),ma(r,e=>n.conversationDialogEl=e,()=>n?.conversationDialogEl),L(()=>{i=G(r,1,`conversation-drawer svelte-ssrzja`,null,i,{"conversation-drawer-fullscreen":t}),K(r,`role`,t?`dialog`:void 0),K(r,`aria-modal`,t?`true`:void 0),a=Bi(r,``,a,{"--conversation-panel-width":R(o)+`px`}),K(l,`aria-valuemin`,R(s)),K(l,`aria-valuemax`,R(c)),K(l,`aria-valuenow`,R(o)),K(_,`aria-label`,n.conversationFollowLatest?`Following the latest interaction`:`Viewing a historical interaction`),K(_,`title`,n.conversationFollowLatest?`Following the latest interaction as new events arrive`:`Viewing a historical interaction; live updates are not followed`),w=G(v,1,`live-dot`,null,w,{"is-streaming":n.conversationFollowLatest}),K(E,`aria-label`,t?`Exit fullscreen interactions`:`Show interactions fullscreen`),K(E,`title`,t?`Exit fullscreen`:`Fullscreen`),K(E,`aria-pressed`,t)}),z(`pointerdown`,l,y),z(`pointermove`,l,b),z(`pointerup`,l,x),zr(`pointercancel`,l,x),zr(`lostpointercapture`,l,x),z(`keydown`,l,S),z(`click`,E,()=>m(!t)),Di(7,r,()=>p,()=>({fullscreen:t,revealWithoutSlide:!t&&R(u)})),V(e,r)}),V(e,t)};U(E,e=>{n.conversationOpen&&e(ee)}),V(e,T),k()}Br([`pointerdown`,`pointermove`,`pointerup`,`keydown`,`click`]);var mq=B(`
                `,1);function hq(e,t){O(t,!0);let n={overview:wD,usage:bk,budgets:XA,"rate-limits":sM,models:KF,workflows:pR,"audit-logs":lH,guardrails:nU,"mcp-servers":IU,"providers-config":GW,"auth-keys":zG,settings:HK};Za(),md.init(),Vf.init(),Y.init(),Cl.init(),wl.init(),Gu.init(),On(()=>{Y.refreshTick,Td.fetch(),Hf.fetchModels(),Hf.fetchCategories()}),On(()=>{document.body.classList.toggle(`dashboard-modal-open`,Tl.anyOpen)});let r=A(()=>n[Gu.page]||wD);var i=mq(),a=F(i);Md(a,{});var o=I(a,2);let s;var c=P(o);df(c,{}),hi(I(c,2),()=>R(r),(e,t)=>{t(e,{})}),D(o);var l=I(o,2);pq(l,{});var u=I(l,2);Hd(u,{});var d=I(u,2);Jd(d,{}),lf(I(d,2),{}),L(()=>s=G(o,1,`content`,null,s,{"interactions-open":vV.conversationOpen})),V(e,i),k()}$r(hq,{target:document.getElementById(`app`)}); \ No newline at end of file diff --git a/internal/admin/dashboard/static/dist/assets/index-YCkUyp1b.js b/internal/admin/dashboard/static/dist/assets/index-YCkUyp1b.js new file mode 100644 index 000000000..ac8d734d8 --- /dev/null +++ b/internal/admin/dashboard/static/dist/assets/index-YCkUyp1b.js @@ -0,0 +1,65 @@ +(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 e=Array.isArray,t=Array.prototype.indexOf,n=Array.prototype.includes,r=Array.from,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyDescriptors,s=Object.prototype,c=Array.prototype,l=Object.getPrototypeOf,u=Object.isExtensible;function d(e){return typeof e==`function`}var f=()=>{};function p(e){for(var t=0;t{e=n,t=r}),resolve:e,reject:t}}function h(e,t,n=!1){return e===void 0?n?t():t:e}function g(e,t){if(Array.isArray(e))return e;if(t===void 0||!(Symbol.iterator in e))return Array.from(e);let n=[];for(let r of e)if(n.push(r),n.length===t)break;return n}var _=1<<24,v=1024,y=2048,b=4096,x=8192,S=16384,C=32768,w=1<<25,T=65536,ee=1<<19,te=1<<20,ne=1<<25,re=65536,ie=1<<21,ae=1<<22,oe=1<<23,se=Symbol(`$state`),ce=Symbol(`legacy props`),le=Symbol(``),ue=Symbol(`attributes`),de=Symbol(`class`),fe=Symbol(`style`),pe=Symbol(`text`),me=Symbol(`form reset`),he=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},ge=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`);function _e(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function ve(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function ye(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function be(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function xe(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function Se(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function Ce(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function we(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function Te(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function Ee(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function De(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var Oe={},ke=Symbol(`uninitialized`),Ae=`http://www.w3.org/1999/xhtml`,je=`http://www.w3.org/2000/svg`,Me=`http://www.w3.org/1998/Math/MathML`;function Ne(){console.warn(`https://svelte.dev/e/derived_inert`)}function Pe(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Fe(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function Ie(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var Le=!1;function Re(e){Le=e}var ze;function Be(e){if(e===null)throw Pe(),Oe;return ze=e}function Ve(){return Be(yn(ze))}function E(e){if(Le){if(yn(ze)!==null)throw Pe(),Oe;ze=e}}function He(e=1){if(Le){for(var t=e,n=ze;t--;)n=yn(n);ze=n}}function Ue(e=!0){for(var t=0,n=ze;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else(r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=yn(n);e&&n.remove(),n=i}}function We(e){if(!e||e.nodeType!==8)throw Pe(),Oe;return e.data}function Ge(e){return e===this.v}function Ke(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function qe(e){return!Ke(e,this.v)}var Je=null;function Ye(e){Je=e}function D(e,t=!1,n){Je={p:Je,i:!1,c:null,e:null,s:e,x:null,r:rr,l:null}}function O(e){var t=Je,n=t.e;if(n!==null){t.e=null;for(var r of n)An(r)}return e!==void 0&&(t.x=e),t.i=!0,Je=t.p,e??{}}function Xe(){return!0}var Ze=[];function Qe(){var e=Ze;Ze=[],p(e)}function $e(e){if(Ze.length===0&&!Rt){var t=Ze;queueMicrotask(()=>{t===Ze&&Qe()})}Ze.push(e)}function et(){for(;Ze.length>0;)Qe()}function tt(e){var t=rr;if(t===null)return er.f|=oe,e;if(!(t.f&32768)&&!(t.f&4))throw e;nt(e,t)}function nt(e,t){if(!(t!==null&&t.f&16384)){for(;t!==null;){if(t.f&128){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}}var rt=~(y|b|v);function it(e,t){e.f=e.f&rt|t}function at(e){e.f&512||e.deps===null?it(e,v):it(e,b)}function ot(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=re,ot(t.deps))}function st(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),ot(e.deps),it(e,v)}var ct=!1;function lt(e){var t=ct;try{return ct=!1,[e(),ct]}finally{ct=t}}function ut(e,t){if(t){let t=document.body;e.autofocus=!0,$e(()=>{document.activeElement===t&&e.focus()})}}function dt(e){Le&&vn(e)!==null&&bn(e)}var ft=!1;function pt(){ft||(ft=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[me]?.()})},{capture:!0}))}function mt(e){var t=er,n=rr;nr(null),ir(null);try{return e()}finally{nr(t),ir(n)}}function ht(e,t,n,r=n){e.addEventListener(t,()=>mt(n));let i=e[me];i?e[me]=()=>{i(),r(!0)}:e[me]=()=>r(!0),pt()}function gt(e){let t=0,n=rn(0),r;return()=>{Dn()&&(L(n),Fn(()=>(t===0&&(r=Tr(()=>e(()=>cn(n)))),t+=1,()=>{$e(()=>{--t,t===0&&(r?.(),r=void 0,cn(n))})})))}}var _t=T|ee;function vt(e,t,n,r){new yt(e,t,n,r)}var yt=class{parent;is_pending=!1;transform_error;#e;#t=Le?ze:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=gt(()=>(this.#m=rn(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=rr;t.b=this,t.f|=128,n(e)},this.parent=rr.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=In(()=>{if(Le){let e=this.#t;Ve();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));this.#_(t)}else t?this.#v():this.#g()}else this.#y()},_t),Le&&(this.#e=ze)}#g(){try{this.#a=Rn(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed;t&&(this.#s=Rn(()=>{t(this.#e,()=>e,()=>()=>{})}))}#v(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=Rn(()=>e(this.#e)),$e(()=>{var e=this.#c=document.createDocumentFragment(),t=_n();e.append(t),this.#a=this.#x(()=>Rn(()=>this.#r(t))),this.#u===0&&(this.#e.before(e),this.#c=null,Gn(this.#o,()=>{this.#o=null}),this.#b(Pt))}))}#y(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=Rn(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();Yn(this.#a,e);let t=this.#n.pending;this.#o=Rn(()=>t(this.#e))}else this.#b(Pt)}catch(e){this.error(e)}}#b(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){st(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#x(e){var t=rr,n=er,r=Je;ir(this.#i),nr(this.#i),Ye(this.#i.ctx);try{return Wt.ensure(),e()}catch(e){return tt(e),null}finally{ir(t),nr(n),Ye(r)}}#S(e,t){if(!this.has_pending_snippet()){this.parent&&this.parent.#S(e,t);return}this.#u+=e,this.#u===0&&(this.#b(t),this.#o&&Gn(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#S(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,$e(()=>{this.#d=!1,this.#m&&on(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),L(this.#m)}error(e){if(!this.#n.onerror&&!this.#n.failed)throw e;Pt?.is_fork?(this.#a&&Pt.skip_effect(this.#a),this.#o&&Pt.skip_effect(this.#o),this.#s&&Pt.skip_effect(this.#s),Pt.oncommit(()=>{this.#C(e)})):this.#C(e)}#C(e){this.#a&&=(Hn(this.#a),null),this.#o&&=(Hn(this.#o),null),this.#s&&=(Hn(this.#s),null),Le&&(Be(this.#t),He(),Be(Ue()));var t=this.#n.onerror;let n=this.#n.failed;var r=!1,i=!1;let a=()=>{if(r){Ie();return}r=!0,i&&De(),this.#s!==null&&Gn(this.#s,()=>{this.#s=null}),this.#x(()=>{this.#y()})},o=e=>{try{i=!0,t?.(e,a),i=!1}catch(e){nt(e,this.#i&&this.#i.parent)}n&&(this.#s=this.#x(()=>{try{return Rn(()=>{var t=rr;t.b=this,t.f|=128,n(this.#e,()=>e,()=>a)})}catch(e){return nt(e,this.#i.parent),null}}))};$e(()=>{var t;try{t=this.transform_error(e)}catch(e){nt(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>nt(e,this.#i&&this.#i.parent)):o(t)})}};function bt(e,t,n,r){let i=Xe()?wt:Dt;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=rr,c=xt(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){nt(e,s)}St()}}var d=Ct();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>Et(e))).then(u).catch(e=>nt(e,s)).finally(d)}l?l.then(()=>{c(),f(),St()}):f()}function xt(){var e=rr,t=er,n=Je,r=Pt;return function(i=!0){ir(e),nr(t),Ye(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function St(e=!0){ir(null),nr(null),Ye(null),e&&Pt?.deactivate()}function Ct(){var e=rr,t=e.b,n=Pt,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function wt(e){var t=2|y;return rr!==null&&(rr.f|=ee),{ctx:Je,deps:null,effects:null,equals:Ge,f:t,fn:e,reactions:null,rv:0,v:ke,wv:0,parent:rr,ac:null}}var Tt=Symbol(`obsolete`);function Et(e,t,n){let r=rr;r===null&&_e();var i=void 0,a=rn(ke),o=!er,s=new Set;return Pn(()=>{var t=rr,n=m();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==he&&n.reject(e)}).finally(St)}catch(e){n.reject(e),St()}var c=Pt;if(o){if(t.f&32768)var l=Ct();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(Tt);else for(let e of s.values())e.reject(Tt);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==Tt&&(c.activate(),t?(a.f|=oe,on(a,t)):(a.f&8388608&&(a.f^=oe),on(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),On(()=>{for(let e of s)e.reject(Tt)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function k(e){let t=wt(e);return or(t),t}function Dt(e){let t=wt(e);return t.equals=qe,t}function Ot(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n{t.ac.abort(he),t.ac=null}),t.fn!==null&&(t.teardown=f),br(t,0),Bn(t))}function Mt(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&xr(t)}var Nt=null,Pt=null,Ft=null,It=null,Lt=null,Rt=!1,zt=!1,Bt=null,Vt=null,Ht=0,Ut=1,Wt=class e{id=Ut++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#r=new Set;#i=new Set;#a=0;#o=new Map;#s=null;#c=[];#l=[];#u=new Set;#d=new Set;#f=new Map;#p=new Set;is_fork=!1;#m=!1;constructor(){Nt===null?Nt=this:(Nt.#n=this,this.#t=Nt),Nt=this}#h(){if(this.is_fork)return!0;for(let n of this.#o.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#f.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var r of n.d)it(r,y),t(r);for(r of n.m)it(r,b),t(r)}this.#p.add(e)}#g(){this.#e=!0,Ht++>1e3&&(this.#x(),Kt());for(let e of this.#u)this.#d.delete(e),it(e,y),this.schedule(e);for(let e of this.#d)it(e,b),this.schedule(e);let t=this.#c;this.#c=[],this.apply();var n=Bt=[],r=[],i=Vt=[];for(let e of t)try{this.#_(e,n,r)}catch(t){throw $t(e),this.#h()||this.discard(),t}if(Pt=null,i.length>0){var a=e.ensure();for(let e of i)a.schedule(e)}if(Bt=null,Vt=null,this.#h()){this.#b(r),this.#b(n);for(let[e,t]of this.#f)Qt(e,t);i.length>0&&Pt.#g();return}let o=this.#v();if(o){this.#b(r),this.#b(n),o.#y(this);return}this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),Ft=this,Jt(r),Jt(n),Ft=null,this.#s?.resolve();var s=Pt;if(this.#a===0&&(this.#c.length===0||s!==null)&&this.#x(),this.#c.length>0)if(s!==null){let e=s;e.#c.push(...this.#c.filter(t=>!e.#c.includes(t)))}else s=this;s!==null&&s.#g()}#_(e,t,n){e.f^=v;for(var r=e.first;r!==null;){var i=r.f,a=(i&96)!=0;if(!(a&&i&1024||i&8192||this.#f.has(r))&&r.fn!==null){a?r.f^=v:i&4?t.push(r):gr(r)&&(i&16&&this.#d.add(r),xr(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#v(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#y(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#u,e.#d);let t=e=>{var n=e.reactions;if(n!==null&&!(e.f&2&&!(e.f&6144)))for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#d.delete(i),it(i,y),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#x(),Pt=this,this.#g()}#b(e){for(var t=0;t{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#u.add(t);for(let e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}settled(){return(this.#s??=m()).promise}static ensure(){if(Pt===null){let t=Pt=new e;!zt&&!Rt&&$e(()=>{t.#e||t.flush()})}return Pt}apply(){It=null}schedule(e){if(Lt=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}for(var t=e;t.parent!==null;){t=t.parent;var n=t.f;if(Bt!==null&&t===rr&&(er===null||!(er.f&2)))return;if(n&96){if(!(n&1024))return;t.f^=v}}this.#c.push(t)}#x(){if(this.linked){var e=this.#t,t=this.#n;e===null||(e.#n=t),t===null?Nt=e:t.#t=e,this.linked=!1}}};function Gt(e){var t=Rt;Rt=!0;try{var n;for(e&&(Pt!==null&&!Pt.is_fork&&Pt.flush(),n=e());;){if(et(),Pt===null)return n;Pt.flush()}}finally{Rt=t}}function Kt(){try{Se()}catch(e){nt(e,Lt)}}var qt=null;function Jt(e){var t=e.length;if(t!==0){for(var n=0;n0)){tn.clear();for(let e of qt){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)qt.has(n)&&(qt.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||xr(n)}}qt.clear()}}qt=null}}function Yt(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?Yt(i,t,n,r):e&4194320&&!(e&2048)&&Xt(i,t,r)&&(it(i,y),Zt(i))}}function Xt(e,t,r){let i=r.get(e);if(i!==void 0)return i;if(e.deps!==null)for(let i of e.deps){if(n.call(t,i))return!0;if(i.f&2&&Xt(i,t,r))return r.set(i,!0),!0}return r.set(e,!1),!1}function Zt(e){Pt.schedule(e)}function Qt(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),it(e,v);for(var n=e.first;n!==null;)Qt(n,t),n=n.next}}function $t(e){it(e,v);for(var t=e.first;t!==null;)$t(t),t=t.next}var en=new Set,tn=new Map,nn=!1;function rn(e,t){return{f:0,v:e,reactions:null,equals:Ge,rv:0,wv:0}}function A(e,t){let n=rn(e,t);return or(n),n}function an(e,t=!1,n=!0){let r=rn(e);return t||(r.equals=qe),r}function j(e,t,n=!1){return er!==null&&(!tr||er.f&131072)&&Xe()&&er.f&4325394&&(ar===null||!ar.has(e))&&Ee(),on(e,n?M(t):t,Vt)}function on(e,t,n=null){if(!e.equals(t)){tn.set(e,Qn?t:e.v);var r=Wt.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&kt(t),It===null&&at(t)}e.wv=hr(),ln(e,y,n),Xe()&&rr!==null&&rr.f&1024&&!(rr.f&96)&&(lr===null?ur([e]):lr.push(e)),!r.is_fork&&en.size>0&&!nn&&sn()}return t}function sn(){nn=!1;for(let e of en){e.f&1024&&it(e,b);let t;try{t=gr(e)}catch{t=!0}t&&xr(e)}en.clear()}function cn(e){j(e,e.v+1)}function ln(e,t,n){var r=e.reactions;if(r!==null)for(var i=Xe(),a=r.length,o=0;o{if(pr===d)return e();var t=er,n=pr;nr(null),mr(d);var r=e();return nr(t),mr(n),r};return i&&r.set(`length`,A(t.length,u)),new Proxy(t,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&we();var i=r.get(t);return i===void 0?f(()=>{var e=A(n.value,u);return r.set(t,e),e}):j(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>A(ke,u));r.set(t,e),cn(o)}}else j(n,ke),cn(o);return!0},get(e,n,i){if(n===se)return t;var o=r.get(n),s=n in e;if(o===void 0&&(!s||a(e,n)?.writable)&&(o=f(()=>A(M(s?e[n]:ke),u)),r.set(n,o)),o!==void 0){var c=L(o);return c===ke?void 0:c}return Reflect.get(e,n,i)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&`value`in n){var i=r.get(t);i&&(n.value=L(i))}else if(n===void 0){var a=r.get(t),o=a?.v;if(a!==void 0&&o!==ke)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,t){if(t===se)return!0;var n=r.get(t),i=n!==void 0&&n.v!==ke||Reflect.has(e,t);return(n!==void 0||rr!==null&&(!i||a(e,t)?.writable))&&(n===void 0&&(n=f(()=>A(i?M(e[t]):ke,u)),r.set(t,n)),L(n)===ke)?!1:i},set(e,t,n,s){var c=r.get(t),l=t in e;if(i&&t===`length`)for(var d=n;dA(ke,u)),r.set(d+``,p)):j(p,ke)}if(c===void 0)(!l||a(e,t)?.writable)&&(c=f(()=>A(void 0,u)),j(c,M(n)),r.set(t,c));else{l=c.v!==ke;var m=f(()=>M(n));j(c,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(s,n),!l){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&j(g,_+1)}cn(o)}return!0},ownKeys(e){L(o);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==ke});for(var[n,i]of r)i.v!==ke&&!(n in e)&&t.push(n);return t},setPrototypeOf(){Te()}})}function un(e){try{if(typeof e==`object`&&e&&se in e)return e[se]}catch{}return e}function dn(e,t){return Object.is(un(e),un(t))}var fn,pn,mn,hn;function gn(){if(fn===void 0){fn=window,pn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;mn=a(t,`firstChild`).get,hn=a(t,`nextSibling`).get,u(e)&&(e[de]=void 0,e[ue]=null,e[fe]=void 0,e.__e=void 0),u(n)&&(n[pe]=void 0)}}function _n(e=``){return document.createTextNode(e)}function vn(e){return mn.call(e)}function yn(e){return hn.call(e)}function N(e,t){if(!Le)return vn(e);var n=vn(ze);if(n===null)n=ze.appendChild(_n());else if(t&&n.nodeType!==3){var r=_n();return n?.before(r),Be(r),r}return t&&Cn(n),Be(n),n}function P(e,t=!1){if(!Le){var n=vn(e);return n instanceof Comment&&n.data===``?yn(n):n}if(t){if(ze?.nodeType!==3){var r=_n();return ze?.before(r),Be(r),r}Cn(ze)}return ze}function F(e,t=1,n=!1){let r=Le?ze:e;for(var i;t--;)i=r,r=yn(r);if(!Le)return r;if(n){if(r?.nodeType!==3){var a=_n();return r===null?i?.after(a):r.before(a),Be(a),a}Cn(r)}return Be(r),r}function bn(e){e.textContent=``}function xn(){return!1}function Sn(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function Cn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function wn(e){rr===null&&(er===null&&xe(e),be()),Qn&&ye(e)}function Tn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function En(e,t){var n=rr;n!==null&&n.f&8192&&(e|=x);var r={ctx:Je,deps:null,nodes:null,f:e|y|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};Pt?.register_created_effect(r);var i=r;if(e&4)Bt===null?Wt.ensure().schedule(r):Bt.push(r);else if(t!==null){try{xr(r)}catch(e){throw Hn(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=T))}if(i!==null&&(i.parent=n,n!==null&&Tn(i,n),er!==null&&er.f&2&&!(e&64))){var a=er;(a.effects??=[]).push(i)}return r}function Dn(){return er!==null&&!tr}function On(e){let t=En(8,null);return it(t,v),t.teardown=e,t}function kn(e){wn(`$effect`);var t=rr.f;if(!er&&t&32&&Je!==null&&!Je.i){var n=Je;(n.e??=[]).push(e)}else return An(e)}function An(e){return En(4|te,e)}function jn(e){Wt.ensure();let t=En(64|ee,e);return()=>{Hn(t)}}function Mn(e){Wt.ensure();let t=En(64|ee,e);return(e={})=>new Promise(n=>{e.outro?Gn(t,()=>{Hn(t),n(void 0)}):(Hn(t),n(void 0))})}function Nn(e){return En(4,e)}function Pn(e){return En(ae|ee,e)}function Fn(e,t=0){return En(8|t,e)}function I(e,t=[],n=[],r=[]){bt(r,t,n,t=>{En(8,()=>{e(...t.map(L))})})}function In(e,t=0){return En(16|t,e)}function Ln(e,t=0){return En(_|t,e)}function Rn(e){return En(32|ee,e)}function zn(e){var t=e.teardown;if(t!==null){let e=Qn,n=er;$n(!0),nr(null);try{t.call(null)}finally{$n(e),nr(n)}}}function Bn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&mt(()=>{e.abort(he)});var r=n.next;n.f&64?n.parent=null:Hn(n,t),n=r}}function Vn(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||Hn(t),t=n}}function Hn(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(Un(e.nodes.start,e.nodes.end),n=!0),e.f|=w,Bn(e,t&&!n),br(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();zn(e),e.f^=w,e.f|=S;var i=e.parent;i!==null&&i.first!==null&&Wn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Un(e,t){for(;e!==null;){var n=e===t?null:yn(e);e.remove(),e=n}}function Wn(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Gn(e,t,n=!0){var r=[];Kn(e,r,!0);var i=()=>{n&&Hn(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function Kn(e,t,n){if(!(e.f&8192)){e.f^=x;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;Kn(i,t,o?n:!1)}i=a}}}function qn(e){Jn(e,!0)}function Jn(e,t){if(e.f&8192){e.f^=x,e.f&1024||(it(e,y),Wt.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;Jn(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function Yn(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:yn(n);t.append(n),n=i}}var Xn=null,Zn=!1,Qn=!1;function $n(e){Qn=e}var er=null,tr=!1;function nr(e){er=e}var rr=null;function ir(e){rr=e}var ar=null;function or(e){er!==null&&(ar??=new Set).add(e)}var sr=null,cr=0,lr=null;function ur(e){lr=e}var dr=1,fr=0,pr=fr;function mr(e){pr=e}function hr(){return++dr}function gr(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~re),t&4096){for(var n=e.deps,r=n.length,i=0;ie.wv)return!0}t&512&&It===null&&it(e,v)}return!1}function _r(e,t,n=!0){var r=e.reactions;if(r!==null&&!(ar!==null&&ar.has(e)))for(var i=0;i{e.ac.abort(he)}),e.ac=null);try{e.f|=ie;var u=e.fn,d=u();e.f|=C;var f=e.deps,p=Pt?.is_fork;if(sr!==null){var m;if(p||br(e,cr),f!==null&&cr>0)for(f.length=cr+sr.length,m=0;m{s.ac.abort(he),s.ac=null,it(s,y)}),jt(s),br(s,0)}}function br(e,t){var n=e.deps;if(n!==null)for(var r=t;rn?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?$e(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function Br(e,t,n,r,i){var a={capture:r,passive:i},o=zr(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&On(()=>{t.removeEventListener(e,o,a)})}function R(e,t,n){(t[Ir]??={})[e]=n}function Vr(e){for(var t=0;t{throw e});throw p}}finally{e[Ir]=t,delete e.currentTarget,nr(d),ir(f)}}}var Wr=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function Gr(e){return Wr?.createHTML(e)??e}function Kr(e){var t=Sn(`template`);return t.innerHTML=Gr(e.replaceAll(``,``)),t.content}function qr(e,t){var n=rr;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function z(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(``);return()=>{if(Le)return qr(ze,null),ze;i===void 0&&(i=Kr(a?e:``+e),n||(i=vn(i)));var t=r||pn?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=vn(t),s=t.lastChild;qr(o,s)}else qr(t,t);return t}}function Jr(e,t,n=`svg`){var r=!e.startsWith(``),i=(t&1)!=0,a=`<${n}>${r?e:``+e}`,o;return()=>{if(Le)return qr(ze,null),ze;if(!o){var e=vn(Kr(a));if(i)for(o=document.createDocumentFragment();vn(e);)o.appendChild(vn(e));else o=vn(e)}var t=o.cloneNode(!0);if(i){var n=vn(t),r=t.lastChild;qr(n,r)}else qr(t,t);return t}}function Yr(e,t){return Jr(e,t,`svg`)}function Xr(e=``){if(!Le){var t=_n(e+``);return qr(t,t),t}var n=ze;return n.nodeType===3?Cn(n):(n.before(n=_n()),Be(n)),qr(n,n),n}function Zr(){if(Le)return qr(ze,null),ze;var e=document.createDocumentFragment(),t=document.createComment(``),n=_n();return e.append(t,n),qr(t,n),e}function B(e,t){if(Le){var n=rr;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=ze),Ve();return}e!==null&&e.before(t)}var Qr=!0;function $r(e){Qr=e}function V(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[pe]??=e.nodeValue)&&(e[pe]=n,e.nodeValue=`${n}`)}function ei(e,t){return ni(e,t)}var ti=new Map;function ni(e,{target:t,anchor:n,props:i={},events:a,context:o,intro:s=!0,transformError:c}){gn();var l=void 0,u=Mn(()=>{var u=n??t.appendChild(_n());vt(u,{pending:()=>{}},t=>{D({});var n=Je;if(o&&(n.c=o),a&&(i.$$events=a),Le&&qr(t,null),Qr=s,l=e(t,i)||{},Qr=!0,Le&&(rr.nodes.end=ze,ze===null||ze.nodeType!==8||ze.data!==`]`))throw Pe(),Oe;O()},c);var d=new Set,f=e=>{for(var n=0;n{for(var e of d)for(let n of[t,document]){var r=ti.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,Ur),r.delete(e),r.size===0&&ti.delete(n)):r.set(e,i)}Rr.delete(f),u!==n&&u.parentNode?.removeChild(u)}});return ri.set(l,u),l}var ri=new WeakMap,ii=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)qn(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(qn(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(Hn(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();Yn(r,t),t.append(_n()),this.#n.set(e,{effect:r,fragment:t})}else Hn(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),Gn(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(Hn(n.effect),this.#n.delete(e))};ensure(e,t){var n=Pt,r=xn();if(t&&!this.#t.has(e)&&!this.#n.has(e))if(r){var i=document.createDocumentFragment(),a=_n();i.append(a),this.#n.set(e,{effect:Rn(()=>t(a)),fragment:i})}else this.#t.set(e,Rn(()=>t(this.anchor)));if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else Le&&(this.anchor=ze),this.#a(n)}};function H(e,t,n=!1){var r;Le&&(r=ze,Ve());var i=new ii(e),a=n?T:0;function o(e,t){if(Le){var n=We(r);if(e!==parseInt(n.substring(1))){var a=Ue();Be(a),i.anchor=a,Re(!1),i.ensure(e,t),Re(!0);return}}i.ensure(e,t)}In(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function ai(e,t){return t}function oi(e,t,n){for(var i=[],a=t.length,o,s=t.length,c=0;c{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;si(e,r(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else--s},!1)}if(s===0){var l=i.length===0&&n!==null;if(l){var u=n,d=u.parentNode;bn(d),d.append(u),e.items.clear()}si(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function si(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i{var t=i();return e(t)?t:t==null?[]:r(t)}),p,m=new Map,h=!0;function g(e){v.effect.f&16384||(v.pending.delete(e),v.fallback=d,ui(v,p,c,n,a),d!==null&&(p.length===0?d.f&33554432?(d.f^=ne,fi(d,null,c)):qn(d):Gn(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:In(()=>{p=L(f);var e=p.length;let t=!1;Le&&We(c)===`[!`!=(e===0)&&(c=Ue(),Be(c),Re(!1),t=!0);for(var r=new Set,u=Pt,v=xn(),y=0;ys(c)):(d=Rn(()=>s(ci??=_n())),d.f|=ne)),e>r.size&&ve(``,``,``),Le&&e>0&&Be(Ue()),!h)if(m.set(u,r),v){for(let[e,t]of l)r.has(e)||u.skip_effect(t.e);u.oncommit(g),u.ondiscard(_)}else g(u);t&&Re(!0),L(f)}),flags:n,items:l,pending:m,outrogroups:null,fallback:d};h=!1,Le&&(c=ze)}function li(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function ui(e,t,n,i,a){var o=(i&8)!=0,s=t.length,c=e.items,l=li(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v0){var ee=i&4&&s===0?n:null;if(o){for(v=0;v{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function di(e,t,n,r,i,a,o,s){var c=o&1?o&16?rn(n):an(n,!1,!1):null,l=o&2?rn(i):null;return{v:c,i:l,e:Rn(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function fi(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=yn(r);if(a.before(r),r===i)return;r=o}}function pi(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function mi(e,t,n=!1,r=!1,i=!1,a=!1){var o=e,s=``;if(n){var c=e;Le&&(o=Be(vn(c)))}I(()=>{var e=rr;if(s===(s=t()??``)){Le&&Ve();return}if(n&&!Le){e.nodes=null,c.innerHTML=s,s!==``&&qr(vn(c),c.lastChild);return}if(e.nodes!==null&&(Un(e.nodes.start,e.nodes.end),e.nodes=null),s!==``){if(Le){for(var a=ze.data,l=Ve(),u=l;l!==null&&(l.nodeType!==8||l.data!==``);)u=l,l=yn(l);if(l===null)throw Pe(),Oe;qr(ze,u),o=Be(l);return}var d=Sn(r?`svg`:i?`math`:`template`,r?je:i?Me:void 0);d.innerHTML=s;var f=r||i?d:d.content;if(qr(vn(f),f.lastChild),r||i)for(;vn(f);)o.before(vn(f));else o.before(f)}})}function hi(e,t,...n){var r=new ii(e);In(()=>{let e=t()??null;r.ensure(e,e&&(t=>e(t,...n)))},T)}function gi(e,t,n){var r;Le&&(r=ze,Ve());var i=new ii(e);In(()=>{var e=t()??null;if(Le&&We(r)===`[`!=(e!==null)){var a=Ue();Be(a),i.anchor=a,Re(!1),i.ensure(e,e&&(t=>n(t,e))),Re(!0);return}i.ensure(e,e&&(t=>n(t,e)))},T)}var _i=()=>performance.now(),vi={tick:e=>requestAnimationFrame(e),now:()=>_i(),tasks:new Set};function yi(){let e=vi.now();vi.tasks.forEach(t=>{t.c(e)||(vi.tasks.delete(t),t.f())}),vi.tasks.size!==0&&vi.tick(yi)}function bi(e){let t;return vi.tasks.size===0&&vi.tick(yi),{promise:new Promise(n=>{vi.tasks.add(t={c:e,f:n})}),abort(){vi.tasks.delete(t)}}}function xi(e,t){mt(()=>{e.dispatchEvent(new CustomEvent(t))})}function Si(e){if(e===`float`)return`cssFloat`;if(e===`offset`)return`cssOffset`;if(e.startsWith(`--`))return e;let t=e.split(`-`);return t.length===1?t[0]:t[0]+t.slice(1).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}function Ci(e){let t={},n=e.split(`;`);for(let e of n){let[n,r]=e.split(`:`);if(!n||r===void 0)break;let i=Si(n.trim());t[i]=r.trim()}return t}var wi=e=>e,Ti=null;function Ei(e){Ti=e}function Di(e,t,n){var r=(Ti??rr).nodes,i,a,o,s=null;r.a??={element:e,measure(){i=this.element.getBoundingClientRect()},apply(){if(o?.abort(),a=this.element.getBoundingClientRect(),i.left!==a.left||i.right!==a.right||i.top!==a.top||i.bottom!==a.bottom){let e=t()(this.element,{from:i,to:a},n?.());o=ki(this.element,e,void 0,1,()=>{},()=>{o?.abort(),o=void 0})}},fix(){if(!e.getAnimations().length){var{position:t,width:n,height:r}=getComputedStyle(e);if(t!==`absolute`&&t!==`fixed`){var a=e.style;s={position:a.position,width:a.width,height:a.height,transform:a.transform},a.position=`absolute`,a.width=n,a.height=r;var o=e.getBoundingClientRect();if(i.left!==o.left||i.top!==o.top){var c=`translate(${i.left-o.left}px, ${i.top-o.top}px)`;a.transform=a.transform?`${a.transform} ${c}`:c}}}},unfix(){if(s){var t=e.style;t.position=s.position,t.width=s.width,t.height=s.height,t.transform=s.transform}}},r.a.element=e}function Oi(e,t,n,r){var i=(e&1)!=0,a=(e&2)!=0,o=i&&a,s=(e&4)!=0,c=o?`both`:i?`in`:`out`,l,u=t.inert,d=t.style.overflow,f,p;function m(){return mt(()=>l??=n()(t,r?.()??{},{direction:c}))}var h={is_global:s,in(){if(t.inert=u,!i){p?.abort(),p?.reset?.();return}a||f?.abort(),f=ki(t,m(),p,1,()=>{xi(t,`introstart`)},()=>{xi(t,`introend`),f?.abort(),f=l=void 0,t.style.overflow=d})},out(e){if(!a){e?.(),l=void 0;return}t.inert=!0,p=ki(t,m(),f,0,()=>{xi(t,`outrostart`)},()=>{xi(t,`outroend`),e?.()})},stop:()=>{f?.abort(),p?.abort()}},g=rr;if((g.nodes.t??=[]).push(h),i&&Qr){var _=s;if(!_){for(var v=g.parent;v&&v.f&65536;)for(;(v=v.parent)&&!(v.f&16););_=!v||(v.f&32768)!=0}_&&Nn(()=>{Tr(()=>h.in())})}}function ki(e,t,n,r,i,a){var o=r===1;if(d(t)){var s,c=!1;return $e(()=>{c||(s=ki(e,t({direction:o?`in`:`out`}),n,r,i,a))}),{abort:()=>{c=!0,s?.abort()},deactivate:()=>s.deactivate(),reset:()=>s.reset(),t:()=>s.t()}}if(n?.deactivate(),!t?.duration&&!t?.delay)return i(),a(),{abort:f,deactivate:f,reset:f,t:()=>r};let{delay:l=0,css:u,tick:p,easing:m=wi}=t;var h=[];if(o&&n===void 0&&(p&&p(0,1),u)){var g=Ci(u(0,1));h.push(g,g)}var _=()=>1-r,v=e.animate(h,{duration:l,fill:`forwards`});return v.onfinish=()=>{v.cancel(),i();var o=n?.t()??1-r;n?.abort();var s=r-o,c=t.duration*Math.abs(s),l=[];if(c>0){var d=!1;if(u)for(var f=Math.ceil(c/(1e3/60)),h=0;h<=f;h+=1){var g=o+s*m(h/f),y=Ci(u(g,1-g));l.push(y),d||=y.overflow===`hidden`}d&&(e.style.overflow=`hidden`),_=()=>{var e=v.currentTime;return o+s*m(e/c)},p&&bi(()=>{if(v.playState!==`running`)return!1;var e=_();return p(e,1-e),!0})}v=e.animate(l,{duration:c,fill:`forwards`}),v.onfinish=()=>{_=()=>r,p?.(r,1-r),a()}},{abort:()=>{v&&(v.cancel(),v.effect=null,v.onfinish=f)},deactivate:()=>{a=f},reset:()=>{r===0&&p?.(1,0)},t:()=>_()}}function Ai(e,t,n,r,i,a){let o=Le;Le&&Ve();var s=null;Le&&ze.nodeType===1&&(s=ze,Ve());var c=Le?ze:e,l=rr,u=new ii(c,!1);In(()=>{let e=t()||null;var a=i?i():n||e===`svg`?je:void 0;if(e===null){u.ensure(null,null),$r(!0);return}return u.ensure(e,t=>{if(e){if(s=Le?s:Sn(e,a),qr(s,s),r){var n=null;Le&&Fr(e)&&s.append(n=document.createComment(``));var i=Le?vn(s):s.appendChild(_n());Le&&(i===null?Re(!1):Be(i)),Ei(l),r(s,i),n?.remove(),Ei(null)}rr.nodes.end=s,t.before(s)}Le&&Be(t)}),$r(!0),()=>{e&&$r(!1)}},T),On(()=>{$r(!0)}),o&&(Re(!0),Be(c))}function ji(e,t){var n=void 0,r;Ln(()=>{n!==(n=t())&&(r&&=(Hn(r),null),n&&(r=Rn(()=>{Nn(()=>n(e))})))})}function Mi(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t=0;){var s=o+a;(o===0||Fi.includes(r[o-1]))&&(s===r.length||Fi.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Li(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function Ri(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function zi(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(Ri)),i&&c.push(...Object.keys(i).map(Ri));var l=0,u=-1;let t=e.length;for(var d=0;d{Hi(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),On(()=>{t.disconnect()})}function Wi(e,t,n=t){var r=new WeakSet,i=!0;ht(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),Gi);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&Gi(o)}n(a),e.__value=a,Pt!==null&&r.add(Pt)}),Nn(()=>{var a=t();if(e===document.activeElement){var o=Pt;if(r.has(o))return}if(Hi(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=Gi(s),n(a))}e.__value=a,i=!1}),Ui(e)}function Gi(e){return`__value`in e?e.__value:e.value}var Ki=Symbol(`class`),qi=Symbol(`style`),Ji=Symbol(`is custom element`),Yi=Symbol(`is html`),Xi=ge?`link`:`LINK`,Zi=ge?`input`:`INPUT`,Qi=ge?`option`:`OPTION`,$i=ge?`select`:`SELECT`,ea=ge?`progress`:`PROGRESS`;function ta(e){if(Le){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;G(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;G(e,`checked`,null),e.checked=r}}};e[me]=n,$e(n),pt()}}function na(e,t){var n=sa(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==ea)||(e.value=t??``)}function ra(e,t){var n=sa(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function ia(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function G(e,t,n,r){var i=sa(e);Le&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===Xi)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[le]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&la(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function aa(e,t,n,r,i=!1,a=!1){if(Le&&i&&e.nodeName===Zi){var o=e;(o.type===`checkbox`?`defaultChecked`:`defaultValue`)in n||ta(o)}var s=sa(e),c=s[Ji],l=!s[Yi];let u=Le&&c;u&&Re(!1);var d=t||{},f=e.nodeName===Qi;for(var p in t)p in n||(n[p]=null);n.class?n.class=Pi(n.class):(r||n[Ki])&&(n.class=null),n[qi]&&(n.style??=null);var m=la(e);if(e.nodeName===Zi&&`type`in n&&(`value`in n||`__value`in n)){var h=n.type;(h!==d.type||h===void 0&&e.hasAttribute(`type`))&&(d.type=h,G(e,`type`,h,a))}for(let i in n){let o=n[i];if(f&&i===`value`&&o==null){e.value=e.__value=``,d[i]=o;continue}if(i===`class`){W(e,e.namespaceURI===`http://www.w3.org/1999/xhtml`,o,r,t?.[Ki],n[Ki]),d[i]=o,d[Ki]=n[Ki];continue}if(i===`style`){Vi(e,o,t?.[qi],n[qi]),d[i]=o,d[qi]=n[qi];continue}var g=d[i];if(!(o===g&&!(o===void 0&&e.hasAttribute(i)))){d[i]=o;var _=i[0]+i[1];if(_!==`$$`)if(_===`on`){let t={},n=`$$`+i,r=i.slice(2);var v=Or(r);if(Er(r)&&(r=r.slice(0,-7),t.capture=!0),!v&&g){if(o!=null)continue;e.removeEventListener(r,d[n],t),d[n]=null}if(v)R(r,e,o),Vr([r]);else if(o!=null){function a(e){d[i].call(this,e)}d[n]=zr(r,e,a,t)}}else if(i===`style`)G(e,i,o);else if(i===`autofocus`)ut(e,!!o);else if(!c&&(i===`__value`||i===`value`&&o!=null))e.value=e.__value=o;else if(i===`selected`&&f)ia(e,o);else{var y=i;l||(y=jr(y));var b=y===`defaultValue`||y===`defaultChecked`;if(o==null&&!c&&!b)if(s[i]=null,y===`value`||y===`checked`){let n=e,r=t===void 0;if(y===`value`){let e=n.defaultValue;n.removeAttribute(y),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(y),n.defaultChecked=e,n.checked=r?e:!1}}else e.removeAttribute(i);else b||m.includes(y)&&(c||typeof o!=`string`)?(e[y]=o,y in s&&(s[y]=ke)):typeof o!=`function`&&G(e,y,o,a)}}}return u&&Re(!0),d}function oa(e,t,n=[],r=[],i=[],a,o=!1,s=!1){bt(i,n,r,n=>{var r=void 0,i={},c=e.nodeName===$i,l=!1;if(Ln(()=>{var u=t(...n.map(L)),d=aa(e,r,u,a,o,s);l&&c&&`value`in u&&Hi(e,u.value);for(let e of Object.getOwnPropertySymbols(i))u[e]||Hn(i[e]);for(let t of Object.getOwnPropertySymbols(u)){var f=u[t];t.description===`@attach`&&(!r||f!==r[t])&&(i[t]&&Hn(i[t]),i[t]=Rn(()=>ji(e,()=>f))),d[t]=f}r=d}),c){var u=e;Nn(()=>{Hi(u,r.value,!0),Ui(u)})}l=!0})}function sa(e){return e[ue]??={[Ji]:e.nodeName.includes(`-`),[Yi]:e.namespaceURI===Ae}}var ca=new Map;function la(e){var t=e.getAttribute(`is`)||e.nodeName,n=ca.get(t);if(n)return n;ca.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var s in r=o(i),r)r[s].set&&s!==`innerHTML`&&s!==`textContent`&&s!==`innerText`&&n.push(s);i=l(i)}return n}function ua(e,t,n=t){var r=new WeakSet;ht(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=fa(e)?pa(a):a,n(a),Pt!==null&&r.add(Pt),await Sr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(Le&&e.defaultValue!==e.value||Tr(t)==null&&e.value)&&(n(fa(e)?pa(e.value):e.value),Pt!==null&&r.add(Pt)),Fn(()=>{var n=t();if(e===document.activeElement){var i=Pt;if(r.has(i))return}fa(e)&&n===pa(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function da(e,t,n=t){ht(e,`change`,t=>{n(t?e.defaultChecked:e.checked)}),(Le&&e.defaultChecked!==e.checked||Tr(t)==null)&&n(e.checked),Fn(()=>{e.checked=!!t()})}function fa(e){var t=e.type;return t===`number`||t===`range`}function pa(e){return e===``?null:+e}function ma(e,t){return e===t||e?.[se]===t}function ha(e={},t,n,r){var i=Je.r,a=rr;return Nn(()=>{var o,s;return Fn(()=>{o=s,s=r?.()||[],Tr(()=>{ma(n(...s),e)||(t(e,...s),o&&ma(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&ma(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}var ga={get(e,t){if(!e.exclude.has(t))return e.props[t]},set(e,t){return!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.has(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return!e.exclude.has(t)&&t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.has(t))}};function _a(e,t,n){return new Proxy({props:e,exclude:t},ga)}function K(e,t,n,r){var i=!0,o=(n&8)!=0,s=(n&16)!=0,c=r,l=!0,u=void 0,d=()=>s&&i?(u??=wt(r),L(u)):(l&&(l=!1,c=s?Tr(r):r),c);let f;if(o){var p=se in e||ce in e;f=a(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;o?[m,h]=lt(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&Ce(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?wt:Dt)(()=>(v=!1,g()));o&&L(y);var b=rr;return(function(e,t){if(arguments.length>0){let n=t?L(y):i&&o?M(e):e;return j(y,n),v=!0,c!==void 0&&(c=n),e}return Qn&&v||b.f&16384?y.v:L(y)})}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);var va=new Set([`$$slots`,`$$events`,`$$legacy`,`icon`,`class`]),ya=Yr(``);function q(e,t){let n=K(t,`icon`,19,()=>[]),r=K(t,`class`,3,``),i=_a(t,va);var a=ya();oa(a,()=>({xmlns:`http://www.w3.org/2000/svg`,width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,class:r(),"aria-hidden":`true`,focusable:`false`,...i}));{let e=(t,n=f)=>{var r=Zr();U(P(r),17,n,ai,(t,n)=>{var r=k(()=>g(L(n),3));let i=()=>L(r)[0],a=()=>L(r)[1],o=()=>L(r)[2];var s=Zr();Ai(P(s),i,!0,(t,n)=>{oa(t,()=>({xmlns:`http://www.w3.org/2000/svg`,...a()}));var r=Zr(),i=P(r),s=t=>{e(t,o)},c=k(()=>Array.isArray(o()));H(i,e=>{L(c)&&e(s)}),B(n,r)}),B(t,s)}),B(t,r)};e(N(a),n),E(a)}B(e,a)}var ba=Yr(``);function xa(e){B(e,ba())}function Sa(){try{return typeof window>`u`?null:window.localStorage}catch{return null}}function Ca(e,t=null){let n=Sa();if(!n)return t;try{return n.getItem(e)??t}catch{return t}}function wa(e,t){let n=Sa();if(n)try{n.setItem(e,String(t))}catch{}}function Ta(e){let t=Number(e);return Number.isFinite(t)?Math.min(240,Math.max(60,Math.round(t))):240}function Ea(e,t,n){return Ta(Number(e)+Number(n)-Number(t))}var Da=new class{#e=A(`system`);get theme(){return L(this.#e)}set theme(e){j(this.#e,e,!0)}#t=A(0);get tick(){return L(this.#t)}set tick(e){j(this.#t,e,!0)}init(){this.theme=Ca(`gomodel_theme`,`system`),this.apply(),window.matchMedia(`(prefers-color-scheme: dark)`).addEventListener(`change`,()=>{this.theme===`system`&&this.tick++})}set(e){this.theme=e,wa(`gomodel_theme`,e),this.apply(),this.tick++}toggle(){let e=[`light`,`system`,`dark`];this.set(e[(e.indexOf(this.theme)+1)%e.length])}apply(){let e=document.documentElement;this.theme===`system`?e.removeAttribute(`data-theme`):e.setAttribute(`data-theme`,this.theme)}},Oa=new class{#e=A(M(240));get width(){return L(this.#e)}set width(e){j(this.#e,e,!0)}get collapsed(){return this.width===60}init(){let e=Ca(`gomodel_sidebar_width`),t=Ca(`gomodel_sidebar_collapsed`)===`true`;this.setWidth(e??(t?60:240))}toggle(){this.setWidth(this.collapsed?240:60,!0)}setWidth(e,t=!1){this.width=Ta(e),typeof document<`u`&&document.documentElement.style.setProperty(`--sidebar-width`,`${this.width}px`),t&&(wa(`gomodel_sidebar_width`,this.width),wa(`gomodel_sidebar_collapsed`,this.collapsed))}},ka=new class{#e=A(M([]));get stack(){return L(this.#e)}set stack(e){j(this.#e,e,!0)}#t=1;opened(){let e=this.#t++;return this.stack=[...this.stack,e],e}closed(e){this.stack=this.stack.filter(t=>t!==e)}isTop(e){return this.stack.length>0&&this.stack[this.stack.length-1]===e}get openCount(){return this.stack.length}get anyOpen(){return this.stack.length>0}},Aa={},ja=[`en`,`pl`],Ma=`PARAGLIDE_LOCALE`,Na=[`custom-dashboard`,`preferredLanguage`,`baseLocale`],Pa=[];globalThis.__paraglide=globalThis.__paraglide??{},globalThis.__paraglide.ssr=globalThis.__paraglide.ssr??{};var Fa=!1,J=()=>{let e=Na;typeof window<`u`&&window.location?.href&&(e=Za(window.location.href));let t=Ia(e,typeof window<`u`?window.location?.href:void 0);if(t)return Fa||(Fa=!0,Ba(t,{reload:!1})),t;throw Error(`No locale found. Read the docs https://paraglidejs.com/errors#no-locale-found`)};function Ia(e,t){let n;for(let t of e){if(t===`baseLocale`)n=`en`;else if(t===`preferredLanguage`)n=Ga();else if($a(t)&&Qa.has(t)){let e=Qa.get(t);if(e){let t=e.getLocale();if(t instanceof Promise)continue;if(t!==void 0)return Ua(t)}}let e=Ha(n);if(e)return e}}var La=new Set([`ar`,`dv`,`fa`,`he`,`ks`,`ku`,`ps`,`sd`,`ug`,`ur`,`yi`]);function Ra(e=J()){try{let t=new Intl.Locale(e),n=t.getTextInfo?.().direction??t.textInfo?.direction;if(n===`ltr`||n===`rtl`)return n}catch{}let t=e.split(`-`)[0]?.toLowerCase();return La.has(t??``)?`rtl`:`ltr`}var za=e=>{e?window.location.href=e:window.location.reload()},Ba=(e,t)=>{let n={reload:!0,...t},r;try{r=J()}catch{}let i=[],a=Na;typeof window<`u`&&window.location?.href&&(a=Za(window.location.href));for(let t of a)if(t===`baseLocale`)continue;else if($a(t)&&Qa.has(t)){let n=Qa.get(t);if(n){let r=n.setLocale(e);r instanceof Promise&&(r=r.catch(e=>{throw Error(`Custom strategy "${t}" setLocale failed.`,{cause:e})}),i.push(r))}}let o=()=>{n.reload&&window.location&&e!==r&&za(void 0)};if(i.length)return Promise.all(i).then(()=>{o()});o()},Va=()=>typeof window<`u`?window.location.origin:`http://fallback.com`;function Ha(e){if(typeof e!=`string`)return;let t=e.toLowerCase();for(let e of ja)if(e.toLowerCase()===t)return e}function Ua(e){let t=Ha(e);if(t)return t;throw Error(`Invalid locale: ${e}. Expected one of: ${ja.join(`, `)}`)}var Wa=Ma.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);RegExp(`(?:^|;\\s*)${Wa}=([^;]*)`);function Ga(){if(!navigator?.languages?.length)return;let e=navigator.languages.map(e=>({fullTag:e,baseTag:e.split(`-`)[0]}));for(let t of e){let e=Ha(t.fullTag);if(e)return e;let n=Ha(t.baseTag);if(n)return n}}function Ka(e){return qa(e)}function qa(e){let t=typeof e==`string`?new URL(e,Va()):new URL(e),n=t.pathname.split(`/`).filter(Boolean);return n.length>0&&Ha(n[0])&&(t.pathname=`/`+n.slice(1).join(`/`)),t}var Ja,Ya;function Xa(e){if(Pa.length===0)return;let t=typeof e==`string`?e:e.href;if(Ja===t)return Ya;let n=new URL(t,`http://example.com`),r=Ka(n),i=r.href===n.href?[n]:[n,r],a;for(let e of i){for(let t of Pa)if(new Aa(t.match,e.href).exec(e.href)){a=t;break}if(a)break}return Ja=t,Ya=a,a}function Za(e){let t=Xa(e);return t&&t.exclude!==!0&&Array.isArray(t.strategy)?t.strategy:Na}var Qa=new Map;function $a(e){return typeof e==`string`&&/^custom-[A-Za-z0-9_-]+$/.test(e)}function eo(e,t){if(!$a(e))throw Error(`Invalid custom strategy: "${e}". Must be a custom strategy following the pattern custom-name.`);Qa.set(e,t)}var to=()=>`Cancel`,no=()=>`Anuluj`,ro=((e={},t={})=>(t.locale??J())===`pl`?no(e):to(e)),io=()=>`Next`,ao=()=>`Dalej`,oo=((e={},t={})=>(t.locale??J())===`pl`?ao(e):io(e)),so=()=>`Previous`,co=()=>`Wstecz`,lo=((e={},t={})=>(t.locale??J())===`pl`?co(e):so(e)),uo=()=>`Admin`,fo=()=>`Admin`,po=((e={},t={})=>(t.locale??J())===`pl`?fo(e):uo(e)),mo=()=>`Overview`,ho=()=>`Przegląd`,go=((e={},t={})=>(t.locale??J())===`pl`?ho(e):mo(e)),_o=()=>`Providers`,vo=()=>`Dostawcy`,yo=((e={},t={})=>(t.locale??J())===`pl`?vo(e):_o(e)),bo=()=>`Models`,xo=()=>`Modele`,So=((e={},t={})=>(t.locale??J())===`pl`?xo(e):bo(e)),Co=()=>`Audit Logs`,wo=()=>`Logi audytowe`,To=((e={},t={})=>(t.locale??J())===`pl`?wo(e):Co(e)),Eo=()=>`Usage`,Do=()=>`Zużycie`,Oo=((e={},t={})=>(t.locale??J())===`pl`?Do(e):Eo(e)),ko=()=>`Budgets`,Ao=()=>`Budżety`,jo=((e={},t={})=>(t.locale??J())===`pl`?Ao(e):ko(e)),Mo=()=>`Rate Limits`,No=()=>`Limity zapytań`,Po=((e={},t={})=>(t.locale??J())===`pl`?No(e):Mo(e)),Fo=()=>`API Keys`,Io=()=>`Klucze API`,Lo=((e={},t={})=>(t.locale??J())===`pl`?Io(e):Fo(e)),Ro=()=>`Workflows`,zo=()=>`Workflows`,Bo=((e={},t={})=>(t.locale??J())===`pl`?zo(e):Ro(e)),Vo=()=>`Guardrails (experimental)`,Ho=()=>`Guardrails (eksperymentalne)`,Uo=((e={},t={})=>(t.locale??J())===`pl`?Ho(e):Vo(e)),Wo=()=>`MCP Servers`,Go=()=>`Serwery MCP`,Ko=((e={},t={})=>(t.locale??J())===`pl`?Go(e):Wo(e)),qo=()=>`Settings`,Jo=()=>`Ustawienia`,Yo=((e={},t={})=>(t.locale??J())===`pl`?Jo(e):qo(e)),Xo=()=>`Usage Overview`,Zo=()=>`Przegląd zużycia`,Qo=((e={},t={})=>(t.locale??J())===`pl`?Zo(e):Xo(e)),$o=()=>`Usage chart interval`,es=()=>`Interwał wykresu zużycia`,ts=((e={},t={})=>(t.locale??J())===`pl`?es(e):$o(e)),ns=()=>`Daily`,rs=()=>`Dziennie`,is=((e={},t={})=>(t.locale??J())===`pl`?rs(e):ns(e)),as=()=>`Weekly`,os=()=>`Tygodniowo`,ss=((e={},t={})=>(t.locale??J())===`pl`?os(e):as(e)),cs=()=>`Monthly`,ls=()=>`Miesięcznie`,us=((e={},t={})=>(t.locale??J())===`pl`?ls(e):cs(e)),ds=()=>`Yearly`,fs=()=>`Rocznie`,ps=((e={},t={})=>(t.locale??J())===`pl`?fs(e):ds(e)),ms=()=>`Loading usage`,hs=()=>`Wczytywanie danych o zużyciu`,gs=((e={},t={})=>(t.locale??J())===`pl`?hs(e):ms(e)),_s=()=>`Settings`,vs=()=>`Ustawienia`,ys=((e={},t={})=>(t.locale??J())===`pl`?vs(e):_s(e)),bs=()=>`Clear`,xs=()=>`Wyczyść`,Ss=((e={},t={})=>(t.locale??J())===`pl`?xs(e):bs(e)),Cs=()=>`expand`,ws=()=>`rozwiń`,Ts=((e={},t={})=>(t.locale??J())===`pl`?ws(e):Cs(e)),Es=()=>`collapse`,Ds=()=>`zwiń`,Os=((e={},t={})=>(t.locale??J())===`pl`?Ds(e):Es(e)),ks=()=>`Send`,As=()=>`Wyślij`,js=((e={},t={})=>(t.locale??J())===`pl`?As(e):ks(e)),Ms=()=>`Sending…`,Ns=()=>`Wysyłanie…`,Ps=((e={},t={})=>(t.locale??J())===`pl`?Ns(e):Ms(e)),Fs=()=>`Copy failed`,Is=()=>`Kopiowanie nie powiodło się`,Ls=((e={},t={})=>(t.locale??J())===`pl`?Is(e):Fs(e)),Rs=()=>`Audit Logs`,zs=()=>`Logi audytowe`,Bs=((e={},t={})=>(t.locale??J())===`pl`?zs(e):Rs(e)),Vs=()=>`Retention help`,Hs=()=>`Pomoc dotycząca retencji`,Us=((e={},t={})=>(t.locale??J())===`pl`?Hs(e):Vs(e)),Ws=()=>`To change the retention period, set LOGGING_RETENTION_DAYS (environment variable) or logging.retention_days (config.yaml) and restart the gateway. The default is 30 days; 0 keeps audit logs forever.`,Gs=()=>`Aby zmienić okres retencji, ustaw LOGGING_RETENTION_DAYS (zmienna środowiskowa) lub logging.retention_days (config.yaml), a następnie uruchom gateway ponownie. Domyślna wartość to 30 dni; 0 przechowuje logi audytowe bezterminowo.`,Ks=((e={},t={})=>(t.locale??J())===`pl`?Gs(e):Ws(e)),qs=()=>`Audit logs are retained `,Js=()=>`Logi audytowe są przechowywane `,Ys=((e={},t={})=>(t.locale??J())===`pl`?Js(e):qs(e)),Xs=()=>`Audit logs are retained for `,Zs=()=>`Logi audytowe są przechowywane przez `,Qs=((e={},t={})=>(t.locale??J())===`pl`?Zs(e):Xs(e)),$s=()=>`indefinitely`,ec=()=>`czas nieokreślony`,tc=((e={},t={})=>(t.locale??J())===`pl`?ec(e):$s(e));function nc(e,t,n){return new Intl.PluralRules(e,n).select(Number(t))}var rc=e=>nc(`en`,e?.count,{})===`one`?`${e?.count} day`:`${e?.count} days`,ic=e=>{let t=nc(`pl`,e?.count,{});return t===`one`?`${e?.count} dzień`:t===`few`||t===`many`?`${e?.count} dni`:`${e?.count} dnia`},ac=((e,t={})=>(t.locale??J())===`pl`?ic(e):rc(e)),oc=()=>`Audit logging is off. Live entries are temporary and disappear after refresh. Set `,sc=()=>`Rejestrowanie audytu jest wyłączone. Wpisy Live są tymczasowe i znikają po odświeżeniu. Ustaw `,cc=((e={},t={})=>(t.locale??J())===`pl`?sc(e):oc(e)),lc=()=>` to persist them.`,uc=()=>`, aby je zachować.`,dc=((e={},t={})=>(t.locale??J())===`pl`?uc(e):lc(e)),fc=e=>`Showing ${e?.start}–${e?.end} of ${e?.total} sessions`,pc=e=>`Wyświetlanie ${e?.start}–${e?.end} z ${e?.total} sesji`,mc=((e,t={})=>(t.locale??J())===`pl`?pc(e):fc(e)),hc=e=>`Showing ${e?.start}–${e?.end} of ${e?.total} logs`,gc=e=>`Wyświetlanie ${e?.start}–${e?.end} z ${e?.total} logów`,_c=((e,t={})=>(t.locale??J())===`pl`?gc(e):hc(e)),vc=()=>`Group by session`,yc=()=>`Grupuj według sesji`,bc=((e={},t={})=>(t.locale??J())===`pl`?yc(e):vc(e)),xc=()=>`Loading audit logs`,Sc=()=>`Wczytywanie logów audytowych`,Cc=((e={},t={})=>(t.locale??J())===`pl`?Sc(e):xc(e)),wc=()=>`Search by request ID, model, provider, path, user path, or error…`,Tc=()=>`Szukaj według ID żądania, modelu, dostawcy, ścieżki, ścieżki użytkownika lub błędu…`,Ec=((e={},t={})=>(t.locale??J())===`pl`?Tc(e):wc(e)),Dc=()=>`Search by request ID, model, provider, path, user path, or error`,Oc=()=>`Szukaj według ID żądania, modelu, dostawcy, ścieżki, ścieżki użytkownika lub błędu`,kc=((e={},t={})=>(t.locale??J())===`pl`?Oc(e):Dc(e)),Ac=()=>`HTTP method filter`,jc=()=>`Filtr metody HTTP`,Mc=((e={},t={})=>(t.locale??J())===`pl`?jc(e):Ac(e)),Nc=()=>`All Methods`,Pc=()=>`Wszystkie metody`,Fc=((e={},t={})=>(t.locale??J())===`pl`?Pc(e):Nc(e)),Ic=()=>`Status code filter`,Lc=()=>`Filtr kodu statusu`,Rc=((e={},t={})=>(t.locale??J())===`pl`?Lc(e):Ic(e)),zc=()=>`All Statuses`,Bc=()=>`Wszystkie statusy`,Vc=((e={},t={})=>(t.locale??J())===`pl`?Bc(e):zc(e)),Hc=()=>`Streaming mode filter`,Uc=()=>`Filtr trybu streamingu`,Wc=((e={},t={})=>(t.locale??J())===`pl`?Uc(e):Hc(e)),Gc=()=>`All Modes`,Kc=()=>`Wszystkie tryby`,qc=((e={},t={})=>(t.locale??J())===`pl`?Kc(e):Gc(e)),Jc=()=>`Streaming`,Yc=()=>`Streaming`,Xc=((e={},t={})=>(t.locale??J())===`pl`?Yc(e):Jc(e)),Zc=()=>`Non-streaming`,Qc=()=>`Bez streamingu`,$c=((e={},t={})=>(t.locale??J())===`pl`?Qc(e):Zc(e)),el=()=>`Live stream connecting…`,tl=()=>`Łączenie ze strumieniem Live…`,nl=((e={},t={})=>(t.locale??J())===`pl`?tl(e):el(e)),rl=()=>`Live`,il=()=>`Live`,al=((e={},t={})=>(t.locale??J())===`pl`?il(e):rl(e)),ol=()=>`Live paused — the selected date range does not include today. Set it to today to resume.`,sl=()=>`Live wstrzymany — wybrany zakres dat nie obejmuje dzisiaj. Ustaw datę dzisiejszą, aby wznowić.`,cl=((e={},t={})=>(t.locale??J())===`pl`?sl(e):ol(e)),ll=()=>`Live paused while filters are active. Clear them to resume.`,ul=()=>`Live wstrzymany, gdy filtry są aktywne. Wyczyść je, aby wznowić.`,dl=((e={},t={})=>(t.locale??J())===`pl`?ul(e):ll(e)),fl=()=>`Live paused on later pages. Go to the first page to resume.`,pl=()=>`Live wstrzymany na dalszych stronach. Przejdź do pierwszej strony, aby wznowić.`,ml=((e={},t={})=>(t.locale??J())===`pl`?pl(e):fl(e)),hl=e=>nc(`en`,e?.count,{})===`one`?`Session with ${e?.count} request`:`Session with ${e?.count} requests`,gl=e=>{let t=nc(`pl`,e?.count,{});return t===`one`?`Sesja z ${e?.count} żądaniem`:t===`few`||t===`many`?`Sesja z ${e?.count} żądaniami`:`Sesja z ${e?.count} żądania`},_l=((e,t={})=>(t.locale??J())===`pl`?gl(e):hl(e)),vl=e=>`Status ${e?.status} · ${e?.method}`,yl=e=>`Status ${e?.status} · ${e?.method}`,bl=((e,t={})=>(t.locale??J())===`pl`?yl(e):vl(e)),xl=()=>`Open interactions`,Sl=()=>`Otwórz interakcje`,Cl=((e={},t={})=>(t.locale??J())===`pl`?Sl(e):xl(e)),wl=()=>`Close interactions`,Tl=()=>`Zamknij interakcje`,El=((e={},t={})=>(t.locale??J())===`pl`?Tl(e):wl(e)),Dl=()=>`Loading session requests`,Ol=()=>`Wczytywanie żądań sesji`,kl=((e={},t={})=>(t.locale??J())===`pl`?Ol(e):Dl(e)),Al=e=>`Showing the latest ${e?.shown} of ${e?.total} requests in this session.`,jl=e=>`Wyświetlanie najnowszych ${e?.shown} z ${e?.total} żądań w tej sesji.`,Ml=((e,t={})=>(t.locale??J())===`pl`?jl(e):Al(e)),Nl=()=>`Metadata:`,Pl=()=>`Metadane:`,Fl=((e={},t={})=>(t.locale??J())===`pl`?Pl(e):Nl(e)),Il=()=>`Error Message`,Ll=()=>`Komunikat błędu`,Rl=((e={},t={})=>(t.locale??J())===`pl`?Ll(e):Il(e)),zl=()=>`Headers`,Bl=()=>`Nagłówki`,Vl=((e={},t={})=>(t.locale??J())===`pl`?Bl(e):zl(e)),Hl=()=>`Copy Headers`,Ul=()=>`Kopiuj nagłówki`,Wl=((e={},t={})=>(t.locale??J())===`pl`?Ul(e):Hl(e)),Gl=()=>`Body`,Kl=()=>`Treść`,ql=((e={},t={})=>(t.locale??J())===`pl`?Kl(e):Gl(e)),Jl=()=>`streaming`,Yl=()=>`streaming`,Xl=((e={},t={})=>(t.locale??J())===`pl`?Yl(e):Jl(e)),Zl=()=>`Copy Body`,Ql=()=>`Kopiuj treść`,$l=((e={},t={})=>(t.locale??J())===`pl`?Ql(e):Zl(e)),eu=()=>`Request and response`,tu=()=>`Żądanie i odpowiedź`,nu=((e={},t={})=>(t.locale??J())===`pl`?tu(e):eu(e)),ru=()=>`Share of the request body removed by this rewrite`,iu=()=>`Część treści żądania usunięta podczas tego przetwarzania`,au=((e={},t={})=>(t.locale??J())===`pl`?iu(e):ru(e)),ou=()=>`Request`,su=()=>`Żądanie`,cu=((e={},t={})=>(t.locale??J())===`pl`?su(e):ou(e)),lu=()=>`Response`,uu=()=>`Odpowiedź`,du=((e={},t={})=>(t.locale??J())===`pl`?uu(e):lu(e)),fu=()=>`Rewritten`,pu=()=>`Po przetworzeniu`,mu=((e={},t={})=>(t.locale??J())===`pl`?pu(e):fu(e)),hu=()=>`What changed`,gu=()=>`Co się zmieniło`,_u=((e={},t={})=>(t.locale??J())===`pl`?gu(e):hu(e)),vu=()=>`Provider attempt failed`,yu=()=>`Próba dostawcy nie powiodła się`,bu=((e={},t={})=>(t.locale??J())===`pl`?yu(e):vu(e)),xu=e=>nc(`en`,e?.count,{})===`one`?`${e?.count} provider attempt`:`${e?.count} provider attempts`,Su=e=>(nc(`pl`,e?.count,{}),`Próby dostawców: ${e?.count}`),Cu=((e,t={})=>(t.locale??J())===`pl`?Su(e):xu(e)),wu=e=>`${e?.count} provider attempts · ${e?.failed} failed`,Tu=e=>`Próby dostawców: ${e?.count} · nieudane: ${e?.failed}`,Eu=((e,t={})=>(t.locale??J())===`pl`?Tu(e):wu(e)),Du=()=>`succeeded`,Ou=()=>`powodzenie`,ku=((e={},t={})=>(t.locale??J())===`pl`?Ou(e):Du(e)),Au=()=>`failed`,ju=()=>`niepowodzenie`,Mu=((e={},t={})=>(t.locale??J())===`pl`?ju(e):Au(e)),Nu=()=>`No response was captured for this attempt.`,Pu=()=>`Nie zapisano odpowiedzi dla tej próby.`,Fu=((e={},t={})=>(t.locale??J())===`pl`?Pu(e):Nu(e)),Iu=()=>`Request details were not captured.`,Lu=()=>`Nie zapisano szczegółów żądania.`,Ru=((e={},t={})=>(t.locale??J())===`pl`?Lu(e):Iu(e)),zu=()=>`Waiting for request data…`,Bu=()=>`Oczekiwanie na dane żądania…`,Vu=((e={},t={})=>(t.locale??J())===`pl`?Bu(e):zu(e)),Hu=()=>`Request body was too large to capture.`,Uu=()=>`Treść żądania była zbyt duża, aby ją zapisać.`,Wu=((e={},t={})=>(t.locale??J())===`pl`?Uu(e):Hu(e)),Gu=()=>`Response details were not captured.`,Ku=()=>`Nie zapisano szczegółów odpowiedzi.`,qu=((e={},t={})=>(t.locale??J())===`pl`?Ku(e):Gu(e)),Ju=()=>`Response in progress…`,Yu=()=>`Odpowiedź w toku…`,Xu=((e={},t={})=>(t.locale??J())===`pl`?Yu(e):Ju(e)),Zu=()=>`Response body was too large to capture.`,Qu=()=>`Treść odpowiedzi była zbyt duża, aby ją zapisać.`,$u=((e={},t={})=>(t.locale??J())===`pl`?Qu(e):Zu(e)),ed=()=>`Rewritten body not captured (body logging disabled or body too large).`,td=()=>`Nie zapisano przetworzonej treści (rejestrowanie treści jest wyłączone lub treść jest zbyt duża).`,nd=((e={},t={})=>(t.locale??J())===`pl`?td(e):ed(e)),rd=e=>`${e?.rewriter}: no change`,id=e=>`${e?.rewriter}: bez zmian`,ad=((e,t={})=>(t.locale??J())===`pl`?id(e):rd(e)),od=e=>`${e?.rewriter} ran and forwarded the request unchanged`,sd=e=>`${e?.rewriter} uruchomił się i przekazał żądanie bez zmian`,cd=((e,t={})=>(t.locale??J())===`pl`?sd(e):od(e)),ld=e=>`${e?.count} cached`,ud=e=>`${e?.count} z cache`,dd=((e,t={})=>(t.locale??J())===`pl`?ud(e):ld(e)),fd=e=>`${e?.percent}% cached`,pd=e=>`${e?.percent}% z cache`,md=((e,t={})=>(t.locale??J())===`pl`?pd(e):fd(e)),hd=()=>`Audio too large to store.`,gd=()=>`Audio jest zbyt duże, aby je zapisać.`,_d=((e={},t={})=>(t.locale??J())===`pl`?gd(e):hd(e)),vd=()=>`Audio not logged. Set LOGGING_LOG_AUDIO_BODIES=true to capture playable audio.`,yd=()=>`Audio nie zostało zapisane. Ustaw LOGGING_LOG_AUDIO_BODIES=true, aby zapisywać audio możliwe do odtworzenia.`,bd=((e={},t={})=>(t.locale??J())===`pl`?yd(e):vd(e)),xd=()=>`Resize interactions panel`,Sd=()=>`Zmień szerokość panelu interakcji`,Cd=((e={},t={})=>(t.locale??J())===`pl`?Sd(e):xd(e)),wd=()=>`Interactions`,Td=()=>`Interakcje`,Ed=((e={},t={})=>(t.locale??J())===`pl`?Td(e):wd(e)),Dd=()=>`Following the latest interaction`,Od=()=>`Śledzenie najnowszej interakcji`,kd=((e={},t={})=>(t.locale??J())===`pl`?Od(e):Dd(e)),Ad=()=>`Viewing a historical interaction`,jd=()=>`Wyświetlanie historycznej interakcji`,Md=((e={},t={})=>(t.locale??J())===`pl`?jd(e):Ad(e)),Nd=()=>`Following the latest interaction as new events arrive`,Pd=()=>`Śledzenie najnowszej interakcji w miarę pojawiania się nowych zdarzeń`,Fd=((e={},t={})=>(t.locale??J())===`pl`?Pd(e):Nd(e)),Id=()=>`Viewing a historical interaction; live updates are not followed`,Ld=()=>`Wyświetlanie historycznej interakcji; aktualizacje Live nie są śledzone`,Rd=((e={},t={})=>(t.locale??J())===`pl`?Ld(e):Id(e)),zd=()=>`Exit fullscreen interactions`,Bd=()=>`Wyłącz pełny ekran interakcji`,Vd=((e={},t={})=>(t.locale??J())===`pl`?Bd(e):zd(e)),Hd=()=>`Show interactions fullscreen`,Ud=()=>`Wyświetl interakcje na pełnym ekranie`,Wd=((e={},t={})=>(t.locale??J())===`pl`?Ud(e):Hd(e)),Gd=()=>`Exit fullscreen`,Kd=()=>`Wyłącz pełny ekran`,qd=((e={},t={})=>(t.locale??J())===`pl`?Kd(e):Gd(e)),Jd=()=>`Fullscreen`,Yd=()=>`Pełny ekran`,Xd=((e={},t={})=>(t.locale??J())===`pl`?Yd(e):Jd(e)),Zd=()=>`Close interactions`,Qd=()=>`Zamknij interakcje`,$d=((e={},t={})=>(t.locale??J())===`pl`?Qd(e):Zd(e)),ef=()=>`Navigate interaction messages`,tf=()=>`Nawigacja między wiadomościami interakcji`,nf=((e={},t={})=>(t.locale??J())===`pl`?tf(e):ef(e)),rf=()=>`Previous message`,af=()=>`Poprzednia wiadomość`,of=((e={},t={})=>(t.locale??J())===`pl`?af(e):rf(e)),sf=()=>`Next message`,cf=()=>`Następna wiadomość`,lf=((e={},t={})=>(t.locale??J())===`pl`?cf(e):sf(e)),uf=()=>`Loading interactions…`,df=()=>`Wczytywanie interakcji…`,ff=((e={},t={})=>(t.locale??J())===`pl`?df(e):uf(e)),pf=()=>`No interaction data available for this entry.`,mf=()=>`Brak danych interakcji dla tego wpisu.`,hf=((e={},t={})=>(t.locale??J())===`pl`?mf(e):pf(e)),gf=()=>`Hide estimated provider prompt-cache fill`,_f=()=>`Ukryj szacowane wykorzystanie prompt cache dostawcy`,vf=((e={},t={})=>(t.locale??J())===`pl`?_f(e):gf(e)),yf=()=>`Show estimated provider prompt-cache fill`,bf=()=>`Pokaż szacowane wykorzystanie prompt cache dostawcy`,xf=((e={},t={})=>(t.locale??J())===`pl`?bf(e):yf(e)),Sf=()=>`Blue fill shows cached prompt share`,Cf=()=>`Niebieskie wypełnienie pokazuje część promptu z cache`,wf=((e={},t={})=>(t.locale??J())===`pl`?Cf(e):Sf(e)),Tf=()=>`(estimated)`,Ef=()=>`(szacunkowo)`,Df=((e={},t={})=>(t.locale??J())===`pl`?Ef(e):Tf(e)),Of=()=>`Showing the newest part of this session and the selected log.`,kf=()=>`Wyświetlanie najnowszej części tej sesji i wybranego logu.`,Af=((e={},t={})=>(t.locale??J())===`pl`?kf(e):Of(e)),jf=()=>`Send a message`,Mf=()=>`Wyślij wiadomość`,Nf=((e={},t={})=>(t.locale??J())===`pl`?Mf(e):jf(e)),Pf=()=>`Continue this interaction…`,Ff=()=>`Kontynuuj tę interakcję…`,If=((e={},t={})=>(t.locale??J())===`pl`?Ff(e):Pf(e)),Lf=()=>`Model is responding…`,Rf=()=>`Model odpowiada…`,zf=((e={},t={})=>(t.locale??J())===`pl`?Rf(e):Lf(e)),Bf=()=>`Unable to load interactions.`,Vf=()=>`Nie można wczytać interakcji.`,Hf=((e={},t={})=>(t.locale??J())===`pl`?Vf(e):Bf(e)),Uf=()=>`Failed to load interactions.`,Wf=()=>`Wczytywanie interakcji nie powiodło się.`,Gf=((e={},t={})=>(t.locale??J())===`pl`?Wf(e):Uf(e)),Kf=()=>`Unable to send message.`,qf=()=>`Nie można wysłać wiadomości.`,Jf=((e={},t={})=>(t.locale??J())===`pl`?qf(e):Kf(e)),Yf=()=>`The request timed out.`,Xf=()=>`Upłynął limit czasu żądania.`,Zf=((e={},t={})=>(t.locale??J())===`pl`?Xf(e):Yf(e)),Qf=()=>`Failed to send message.`,$f=()=>`Wysyłanie wiadomości nie powiodło się.`,ep=((e={},t={})=>(t.locale??J())===`pl`?$f(e):Qf(e)),tp=()=>`Message sent, but its saved interaction is not available yet.`,np=()=>`Wiadomość została wysłana, ale jej zapisana interakcja nie jest jeszcze dostępna.`,rp=((e={},t={})=>(t.locale??J())===`pl`?np(e):tp(e)),ip=()=>`System Prompt`,ap=()=>`Prompt systemowy`,op=((e={},t={})=>(t.locale??J())===`pl`?ap(e):ip(e)),sp=()=>`Agent`,cp=()=>`Agent`,lp=((e={},t={})=>(t.locale??J())===`pl`?cp(e):sp(e)),up=()=>`Error`,dp=()=>`Błąd`,fp=((e={},t={})=>(t.locale??J())===`pl`?dp(e):up(e)),pp=()=>`Function Call`,mp=()=>`Wywołanie funkcji`,hp=((e={},t={})=>(t.locale??J())===`pl`?mp(e):pp(e)),gp=()=>`Function Result`,_p=()=>`Wynik funkcji`,vp=((e={},t={})=>(t.locale??J())===`pl`?_p(e):gp(e)),yp=()=>`User`,bp=()=>`Użytkownik`,xp=((e={},t={})=>(t.locale??J())===`pl`?bp(e):yp(e)),Sp=()=>`[Image]`,Cp=()=>`[Obraz]`,wp=((e={},t={})=>(t.locale??J())===`pl`?Cp(e):Sp(e)),Tp=()=>`[Audio]`,Ep=()=>`[Audio]`,Dp=((e={},t={})=>(t.locale??J())===`pl`?Ep(e):Tp(e)),Op=()=>`[File]`,kp=()=>`[Plik]`,Ap=((e={},t={})=>(t.locale??J())===`pl`?kp(e):Op(e)),jp=e=>`[File: ${e?.name}]`,Mp=e=>`[Plik: ${e?.name}]`,Np=((e,t={})=>(t.locale??J())===`pl`?Mp(e):jp(e)),Pp=()=>`Message copied`,Fp=()=>`Wiadomość skopiowana`,Ip=((e={},t={})=>(t.locale??J())===`pl`?Fp(e):Pp(e)),Lp=()=>`Copy message`,Rp=()=>`Kopiuj wiadomość`,zp=((e={},t={})=>(t.locale??J())===`pl`?Rp(e):Lp(e)),Bp=e=>`${e?.percent}% of this visible prompt item is estimated provider-cached`,Vp=e=>`Szacuje się, że ${e?.percent}% tego widocznego elementu promptu pochodzi z cache dostawcy`,Hp=((e,t={})=>(t.locale??J())===`pl`?Vp(e):Bp(e)),Up=()=>`Call ID`,Wp=()=>`ID wywołania`,Gp=((e={},t={})=>(t.locale??J())===`pl`?Wp(e):Up(e)),Kp=e=>`Call ID (${e?.name})`,qp=e=>`ID wywołania (${e?.name})`,Jp=((e,t={})=>(t.locale??J())===`pl`?qp(e):Kp(e)),Yp=()=>`No arguments`,Xp=()=>`Brak argumentów`,Zp=((e={},t={})=>(t.locale??J())===`pl`?Xp(e):Yp(e)),Qp=()=>`Copied`,$p=()=>`Skopiowano`,em=((e={},t={})=>(t.locale??J())===`pl`?$p(e):Qp(e)),tm=()=>`Tokens`,nm=()=>`Tokeny`,rm=((e={},t={})=>(t.locale??J())===`pl`?nm(e):tm(e)),im=()=>`Input tokens`,am=()=>`Tokeny wejściowe`,om=((e={},t={})=>(t.locale??J())===`pl`?am(e):im(e)),sm=()=>`Output tokens`,cm=()=>`Tokeny wyjściowe`,lm=((e={},t={})=>(t.locale??J())===`pl`?cm(e):sm(e)),um=()=>`Input Tokens`,dm=()=>`Tokeny wejściowe`,fm=((e={},t={})=>(t.locale??J())===`pl`?dm(e):um(e)),pm=()=>`Output Tokens`,mm=()=>`Tokeny wyjściowe`,hm=((e={},t={})=>(t.locale??J())===`pl`?mm(e):pm(e)),gm=()=>`Total tokens`,_m=()=>`Wszystkie tokeny`,vm=((e={},t={})=>(t.locale??J())===`pl`?_m(e):gm(e)),ym=()=>`Total Requests`,bm=()=>`Łączna liczba żądań`,xm=((e={},t={})=>(t.locale??J())===`pl`?bm(e):ym(e)),Sm=()=>`Cache Hits`,Cm=()=>`Trafienia cache`,wm=((e={},t={})=>(t.locale??J())===`pl`?Cm(e):Sm(e)),Tm=()=>`Estimated Cost`,Em=()=>`Szacowany koszt`,Dm=((e={},t={})=>(t.locale??J())===`pl`?Em(e):Tm(e)),Om=()=>`Local Cache`,km=()=>`Lokalny cache`,Am=((e={},t={})=>(t.locale??J())===`pl`?km(e):Om(e)),jm=()=>`Prompt Cache Rate`,Mm=()=>`Wskaźnik prompt cache`,Nm=((e={},t={})=>(t.locale??J())===`pl`?Mm(e):jm(e)),Pm=()=>`Share of input tokens served from the provider prompt cache over the selected period`,Fm=()=>`Część tokenów wejściowych obsłużona przez prompt cache dostawcy w wybranym okresie`,Im=((e={},t={})=>(t.locale??J())===`pl`?Fm(e):Pm(e)),Lm=e=>`Prompt cache rate ${e?.rate}`,Rm=e=>`Wskaźnik prompt cache: ${e?.rate}`,zm=((e,t={})=>(t.locale??J())===`pl`?Rm(e):Lm(e)),Bm=()=>`Provider Status`,Vm=()=>`Status dostawców`,Hm=((e={},t={})=>(t.locale??J())===`pl`?Vm(e):Bm(e)),Um=()=>`View providers overview`,Wm=()=>`Zobacz przegląd dostawców`,Gm=((e={},t={})=>(t.locale??J())===`pl`?Wm(e):Um(e)),Km=()=>`View MCP servers`,qm=()=>`Zobacz serwery MCP`,Jm=((e={},t={})=>(t.locale??J())===`pl`?qm(e):Km(e)),Ym=()=>`Requests by Status`,Xm=()=>`Żądania według statusu`,Zm=((e={},t={})=>(t.locale??J())===`pl`?Xm(e):Ym(e)),Qm=()=>`Request status summary`,$m=()=>`Podsumowanie statusów żądań`,eh=((e={},t={})=>(t.locale??J())===`pl`?$m(e):Qm(e)),th=()=>`Share of requests answered with a 2xx status`,nh=()=>`Część żądań zakończonych statusem 2xx`,rh=((e={},t={})=>(t.locale??J())===`pl`?nh(e):th(e)),ih=()=>`Success`,ah=()=>`Powodzenie`,oh=((e={},t={})=>(t.locale??J())===`pl`?ah(e):ih(e)),sh=()=>`Provider Latency`,ch=()=>`Opóźnienie dostawców`,lh=((e={},t={})=>(t.locale??J())===`pl`?ch(e):sh(e)),uh=()=>`Provider latency help`,dh=()=>`Pomoc dotycząca opóźnienia dostawców`,fh=((e={},t={})=>(t.locale??J())===`pl`?dh(e):uh(e)),ph=()=>`Average duration of successful requests measured at the gateway for each provider. Local cache hits and failed requests are excluded; streamed responses count until the stream completes.`,mh=()=>`Średni czas trwania udanych żądań mierzony przez gateway dla każdego dostawcy. Trafienia lokalnego cache i nieudane żądania są pomijane; w przypadku streamingu czas jest liczony do zakończenia strumienia.`,hh=((e={},t={})=>(t.locale??J())===`pl`?mh(e):ph(e)),gh=()=>`Average duration of successful, uncached requests across all providers`,_h=()=>`Średni czas trwania udanych żądań bez cache dla wszystkich dostawców`,vh=((e={},t={})=>(t.locale??J())===`pl`?_h(e):gh(e)),yh=()=>`Avg`,bh=()=>`Śr.`,xh=((e={},t={})=>(t.locale??J())===`pl`?bh(e):yh(e)),Sh=()=>`Providers Overview`,Ch=()=>`Przegląd dostawców`,wh=((e={},t={})=>(t.locale??J())===`pl`?Ch(e):Sh(e)),Th=()=>`Loading provider status`,Eh=()=>`Wczytywanie statusu dostawców`,Dh=((e={},t={})=>(t.locale??J())===`pl`?Eh(e):Th(e)),Oh=()=>`Show Details`,kh=()=>`Pokaż szczegóły`,Ah=((e={},t={})=>(t.locale??J())===`pl`?kh(e):Oh(e)),jh=()=>`Hide Details`,Mh=()=>`Ukryj szczegóły`,Nh=((e={},t={})=>(t.locale??J())===`pl`?Mh(e):jh(e)),Ph=e=>`View ${e?.provider} provider docs`,Fh=e=>`Zobacz dokumentację dostawcy ${e?.provider}`,Ih=((e,t={})=>(t.locale??J())===`pl`?Fh(e):Ph(e)),Lh=()=>`Models Available`,Rh=()=>`Dostępne modele`,zh=((e={},t={})=>(t.locale??J())===`pl`?Rh(e):Lh(e)),Bh=()=>`Last Checked`,Vh=()=>`Ostatnio sprawdzono`,Hh=((e={},t={})=>(t.locale??J())===`pl`?Vh(e):Bh(e)),Uh=e=>`Expand ${e?.provider} details`,Wh=e=>`Rozwiń szczegóły dostawcy ${e?.provider}`,Gh=((e,t={})=>(t.locale??J())===`pl`?Wh(e):Uh(e)),Kh=e=>`Collapse ${e?.provider} details`,qh=e=>`Zwiń szczegóły dostawcy ${e?.provider}`,Jh=((e,t={})=>(t.locale??J())===`pl`?qh(e):Kh(e)),Yh=()=>`Expand details`,Xh=()=>`Rozwiń szczegóły`,Zh=((e={},t={})=>(t.locale??J())===`pl`?Xh(e):Yh(e)),Qh=()=>`Collapse details`,$h=()=>`Zwiń szczegóły`,eg=((e={},t={})=>(t.locale??J())===`pl`?$h(e):Qh(e)),tg=()=>`Base URL`,ng=()=>`Bazowy URL`,rg=((e={},t={})=>(t.locale??J())===`pl`?ng(e):tg(e)),ig=()=>`API Version`,ag=()=>`Wersja API`,og=((e={},t={})=>(t.locale??J())===`pl`?ag(e):ig(e)),sg=()=>`Recent Requests`,cg=()=>`Ostatnie żądania`,lg=((e={},t={})=>(t.locale??J())===`pl`?cg(e):sg(e)),ug=()=>`Breaker State`,dg=()=>`Stan circuit breakera`,fg=((e={},t={})=>(t.locale??J())===`pl`?dg(e):ug(e)),pg=()=>`Models (Recent Traffic)`,mg=()=>`Modele (ostatni ruch)`,hg=((e={},t={})=>(t.locale??J())===`pl`?mg(e):pg(e)),gg=()=>`Configured Models`,_g=()=>`Skonfigurowane modele`,vg=((e={},t={})=>(t.locale??J())===`pl`?_g(e):gg(e)),yg=()=>`Retry`,bg=()=>`Retry`,xg=((e={},t={})=>(t.locale??J())===`pl`?bg(e):yg(e)),Sg=()=>`Circuit Breaker`,Cg=()=>`Circuit Breaker`,wg=((e={},t={})=>(t.locale??J())===`pl`?Cg(e):Sg(e)),Tg=()=>`None configured`,Eg=()=>`Brak konfiguracji`,Dg=((e={},t={})=>(t.locale??J())===`pl`?Eg(e):Tg(e)),Og=()=>`All healthy`,kg=()=>`Wszystkie działają prawidłowo`,Ag=((e={},t={})=>(t.locale??J())===`pl`?kg(e):Og(e)),jg=()=>`None healthy`,Mg=()=>`Żaden nie działa prawidłowo`,Ng=((e={},t={})=>(t.locale??J())===`pl`?Mg(e):jg(e)),Pg=()=>`Automatic`,Fg=()=>`Automatycznie`,Ig=((e={},t={})=>(t.locale??J())===`pl`?Fg(e):Pg(e)),Lg=e=>`Last error: ${e?.error}`,Rg=e=>`Ostatni błąd: ${e?.error}`,zg=((e,t={})=>(t.locale??J())===`pl`?Rg(e):Lg(e)),Bg=()=>`All MCP servers connected`,Vg=()=>`Wszystkie serwery MCP są połączone`,Hg=((e={},t={})=>(t.locale??J())===`pl`?Vg(e):Bg(e)),Ug=()=>`Share of input tokens over the selected period`,Wg=()=>`Udział tokenów wejściowych w wybranym okresie`,Gg=((e={},t={})=>(t.locale??J())===`pl`?Wg(e):Ug(e)),Kg=()=>`No usage in the selected period yet`,qg=()=>`Brak danych o zużyciu w wybranym okresie`,Jg=((e={},t={})=>(t.locale??J())===`pl`?qg(e):Kg(e)),Yg=()=>`Regular`,Xg=()=>`Standardowe`,Zg=((e={},t={})=>(t.locale??J())===`pl`?Xg(e):Yg(e)),Qg=e=>`Includes ${e?.count} cache-write tokens`,$g=e=>`Obejmuje ${e?.count} tokenów zapisu do cache`,e_=((e,t={})=>(t.locale??J())===`pl`?$g(e):Qg(e)),t_=()=>`Prompt cached`,n_=()=>`Prompt cache`,r_=((e={},t={})=>(t.locale??J())===`pl`?n_(e):t_(e)),i_=()=>`Provider prompt-cache reads`,a_=()=>`Odczyty z prompt cache dostawcy`,o_=((e={},t={})=>(t.locale??J())===`pl`?a_(e):i_(e)),s_=()=>`Locally cached`,c_=()=>`Lokalny cache`,l_=((e={},t={})=>(t.locale??J())===`pl`?c_(e):s_(e)),u_=()=>`Served from GoModel response cache`,d_=()=>`Obsłużone przez response cache GoModel`,f_=((e={},t={})=>(t.locale??J())===`pl`?d_(e):u_(e)),p_=e=>`Cache breakdown of input tokens — ${e?.details}`,m_=e=>`Podział tokenów wejściowych według cache — ${e?.details}`,h_=((e,t={})=>(t.locale??J())===`pl`?m_(e):p_(e)),g_=()=>`Activity`,__=()=>`Aktywność`,v_=((e={},t={})=>(t.locale??J())===`pl`?__(e):g_(e)),y_=()=>`Loading activity`,b_=()=>`Wczytywanie aktywności`,x_=((e={},t={})=>(t.locale??J())===`pl`?b_(e):y_(e)),S_=()=>`Activity calendar mode`,C_=()=>`Tryb kalendarza aktywności`,w_=((e={},t={})=>(t.locale??J())===`pl`?C_(e):S_(e)),T_=()=>`Costs`,E_=()=>`Koszty`,D_=((e={},t={})=>(t.locale??J())===`pl`?E_(e):T_(e)),O_=()=>`Mon`,k_=()=>`Pon`,A_=((e={},t={})=>(t.locale??J())===`pl`?k_(e):O_(e)),j_=()=>`Wed`,M_=()=>`Śr`,N_=((e={},t={})=>(t.locale??J())===`pl`?M_(e):j_(e)),P_=()=>`Fri`,F_=()=>`Pt`,I_=((e={},t={})=>(t.locale??J())===`pl`?F_(e):P_(e)),L_=()=>`Less`,R_=()=>`Mniej`,z_=((e={},t={})=>(t.locale??J())===`pl`?R_(e):L_(e)),B_=()=>`More`,V_=()=>`Więcej`,H_=((e={},t={})=>(t.locale??J())===`pl`?V_(e):B_(e)),U_=()=>`Live Token Throughput`,W_=()=>`Przepustowość tokenów Live`,G_=((e={},t={})=>(t.locale??J())===`pl`?W_(e):U_(e)),K_=()=>`Live token throughput granularity`,q_=()=>`Ziarnistość przepustowości tokenów Live`,J_=((e={},t={})=>(t.locale??J())===`pl`?q_(e):K_(e)),Y_=()=>`Waiting for live requests…`,X_=()=>`Oczekiwanie na żądania Live…`,Z_=((e={},t={})=>(t.locale??J())===`pl`?X_(e):Y_(e)),Q_=()=>`Seconds`,$_=()=>`Sekundy`,ev=((e={},t={})=>(t.locale??J())===`pl`?$_(e):Q_(e)),tv=()=>`Minutes`,nv=()=>`Minuty`,rv=((e={},t={})=>(t.locale??J())===`pl`?nv(e):tv(e)),iv=()=>`Hours`,av=()=>`Godziny`,ov=((e={},t={})=>(t.locale??J())===`pl`?av(e):iv(e)),sv=()=>`Days`,cv=()=>`Dni`,lv=((e={},t={})=>(t.locale??J())===`pl`?cv(e):sv(e)),uv=()=>`Last 60 seconds`,dv=()=>`Ostatnie 60 sekund`,fv=((e={},t={})=>(t.locale??J())===`pl`?dv(e):uv(e)),pv=()=>`Last 60 minutes`,mv=()=>`Ostatnie 60 minut`,hv=((e={},t={})=>(t.locale??J())===`pl`?mv(e):pv(e)),gv=()=>`Last 24 hours`,_v=()=>`Ostatnie 24 godziny`,vv=((e={},t={})=>(t.locale??J())===`pl`?_v(e):gv(e)),yv=()=>`Last 30 days`,bv=()=>`Ostatnie 30 dni`,xv=((e={},t={})=>(t.locale??J())===`pl`?bv(e):yv(e)),Sv=()=>`Prompt (Input) Cached`,Cv=()=>`Prompt (wejście) z cache`,wv=((e={},t={})=>(t.locale??J())===`pl`?Cv(e):Sv(e)),Tv=()=>`Locally Cached`,Ev=()=>`Lokalny cache`,Dv=((e={},t={})=>(t.locale??J())===`pl`?Ev(e):Tv(e)),Ov=e=>`Total: ${e?.total}`,kv=e=>`Łącznie: ${e?.total}`,Av=((e,t={})=>(t.locale??J())===`pl`?kv(e):Ov(e)),jv=e=>`${e?.provider} to providers + ${e?.cache} from cache`,Mv=e=>`${e?.provider} do dostawców + ${e?.cache} z cache`,Nv=((e,t={})=>(t.locale??J())===`pl`?Mv(e):jv(e)),Pv=e=>`${e?.label}: ${e?.tokens} input tokens (${e?.percent}%)`,Fv=e=>`${e?.label}: ${e?.tokens} tokenów wejściowych (${e?.percent}%)`,Iv=((e,t={})=>(t.locale??J())===`pl`?Fv(e):Pv(e)),Lv=()=>`no data`,Rv=()=>`brak danych`,zv=((e={},t={})=>(t.locale??J())===`pl`?Rv(e):Lv(e)),Bv=e=>nc(`en`,e?.count,{})===`one`?`${e?.count} needs attention`:`${e?.count} need attention`,Vv=e=>{let t=nc(`pl`,e?.count,{});return t===`one`?`${e?.count} wymaga uwagi`:t===`few`?`${e?.count} wymagają uwagi`:`${e?.count} wymaga uwagi`},Hv=((e,t={})=>(t.locale??J())===`pl`?Vv(e):Bv(e)),Uv=e=>`${e?.count} servers need attention`,Wv=e=>`Serwery wymagające uwagi: ${e?.count}`,Gv=((e,t={})=>(t.locale??J())===`pl`?Wv(e):Uv(e)),Kv=e=>`${e?.connected} of ${e?.total} servers connected`,qv=e=>`Połączone serwery: ${e?.connected} z ${e?.total}`,Jv=((e,t={})=>(t.locale??J())===`pl`?qv(e):Kv(e)),Yv=e=>`$${e?.total} in the last year`,Xv=e=>`$${e?.total} w ostatnim roku`,Zv=((e,t={})=>(t.locale??J())===`pl`?Xv(e):Yv(e)),Qv=e=>`${e?.total} tokens in the last year`,$v=e=>`${e?.total} tokenów w ostatnim roku`,ey=((e,t={})=>(t.locale??J())===`pl`?$v(e):Qv(e)),ty=e=>`$${e?.total} on ${e?.date}`,ny=e=>`$${e?.total} dnia ${e?.date}`,ry=((e,t={})=>(t.locale??J())===`pl`?ny(e):ty(e)),iy=e=>`${e?.total} tokens on ${e?.date}`,ay=e=>`${e?.total} tokenów dnia ${e?.date}`,oy=((e,t={})=>(t.locale??J())===`pl`?ay(e):iy(e)),sy=e=>`Live token throughput, ${e?.window}. Input ${e?.input}, output ${e?.output}, prompt cached ${e?.prompt}, locally cached ${e?.local} tokens.`,cy=e=>`Przepustowość tokenów Live, ${e?.window}. Wejście ${e?.input}, wyjście ${e?.output}, prompt cache ${e?.prompt}, lokalny cache ${e?.local} tokenów.`,ly=((e,t={})=>(t.locale??J())===`pl`?cy(e):sy(e)),uy=()=>`Other`,dy=()=>`Inne`,fy=((e={},t={})=>(t.locale??J())===`pl`?dy(e):uy(e)),py=()=>`Timezone`,my=()=>`Strefa czasowa`,hy=((e={},t={})=>(t.locale??J())===`pl`?my(e):py(e)),gy=()=>`Timezone help`,_y=()=>`Pomoc dotycząca strefy czasowej`,vy=((e={},t={})=>(t.locale??J())===`pl`?_y(e):gy(e)),yy=()=>`Day-based analytics, charts, and date filters use your effective timezone. Usage and audit logs keep UTC in the hover title while rendering row timestamps in your effective timezone.`,by=()=>`Analityka dzienna, wykresy i filtry dat korzystają z obowiązującej strefy czasowej. Logi zużycia i audytu zachowują UTC w podpowiedzi, a znaczniki czasu w wierszach wyświetlają w obowiązującej strefie czasowej.`,xy=((e={},t={})=>(t.locale??J())===`pl`?by(e):yy(e)),Sy=()=>`Timezone Override`,Cy=()=>`Nadpisanie strefy czasowej`,wy=((e={},t={})=>(t.locale??J())===`pl`?Cy(e):Sy(e)),Ty=e=>`Automatic (${e?.timezone})`,Ey=e=>`Automatycznie (${e?.timezone})`,Dy=((e,t={})=>(t.locale??J())===`pl`?Ey(e):Ty(e)),Oy=()=>`Use Browser Timezone`,ky=()=>`Użyj strefy czasowej przeglądarki`,Ay=((e={},t={})=>(t.locale??J())===`pl`?ky(e):Oy(e)),jy=()=>`Failover`,My=()=>`Failover`,Ny=((e={},t={})=>(t.locale??J())===`pl`?My(e):jy(e)),Py=()=>`Generating…`,Fy=()=>`Generowanie…`,Iy=((e={},t={})=>(t.locale??J())===`pl`?Fy(e):Py(e)),Ly=()=>`Generate failover models automatically`,Ry=()=>`Wygeneruj modele failover automatycznie`,zy=((e={},t={})=>(t.locale??J())===`pl`?Ry(e):Ly(e)),By=()=>`Remove all failover models`,Vy=()=>`Usuń wszystkie modele failover`,Hy=((e={},t={})=>(t.locale??J())===`pl`?Vy(e):By(e)),Uy=()=>`Reset All Budgets`,Wy=()=>`Zresetuj wszystkie budżety`,Gy=((e={},t={})=>(t.locale??J())===`pl`?Wy(e):Uy(e)),Ky=()=>`Start new budget periods for every configured budget without changing the limits.`,qy=()=>`Rozpocznij nowe okresy dla wszystkich skonfigurowanych budżetów bez zmiany limitów.`,Jy=((e={},t={})=>(t.locale??J())===`pl`?qy(e):Ky(e)),Yy=()=>`Reset Budgets`,Xy=()=>`Resetuj budżety`,Zy=((e={},t={})=>(t.locale??J())===`pl`?Xy(e):Yy(e)),Qy=()=>`Budget help`,$y=()=>`Pomoc dotycząca budżetów`,eb=((e={},t={})=>(t.locale??J())===`pl`?$y(e):Qy(e)),tb=()=>`Budget reset anchors are stored in the database and evaluated in UTC. Hourly budgets reset at the top of each hour.`,nb=()=>`Punkty resetowania budżetów są przechowywane w bazie danych i obliczane w UTC. Budżety godzinowe resetują się na początku każdej godziny.`,rb=((e={},t={})=>(t.locale??J())===`pl`?nb(e):tb(e)),ib=()=>`Budget Resets`,ab=()=>`Resetowanie budżetów`,ob=((e={},t={})=>(t.locale??J())===`pl`?ab(e):ib(e)),sb=()=>`Monthly`,cb=()=>`Miesięcznie`,lb=((e={},t={})=>(t.locale??J())===`pl`?cb(e):sb(e)),ub=()=>`Weekly`,db=()=>`Tygodniowo`,fb=((e={},t={})=>(t.locale??J())===`pl`?db(e):ub(e)),pb=()=>`Daily`,mb=()=>`Dziennie`,hb=((e={},t={})=>(t.locale??J())===`pl`?mb(e):pb(e)),gb=()=>`Day of month help`,_b=()=>`Pomoc dotycząca dnia miesiąca`,vb=((e={},t={})=>(t.locale??J())===`pl`?_b(e):gb(e)),yb=()=>`Day of Month`,bb=()=>`Dzień miesiąca`,xb=((e={},t={})=>(t.locale??J())===`pl`?bb(e):yb(e)),Sb=()=>`If the selected day does not exist in a month, the reset runs on the last day of that month.`,Cb=()=>`Jeśli wybrany dzień nie występuje w danym miesiącu, reset nastąpi w ostatnim dniu tego miesiąca.`,wb=((e={},t={})=>(t.locale??J())===`pl`?Cb(e):Sb(e)),Tb=()=>`Day of Week`,Eb=()=>`Dzień tygodnia`,Db=((e={},t={})=>(t.locale??J())===`pl`?Eb(e):Tb(e)),Ob=()=>`Hour`,kb=()=>`Godzina`,Ab=((e={},t={})=>(t.locale??J())===`pl`?kb(e):Ob(e)),jb=()=>`Minute`,Mb=()=>`Minuta`,Nb=((e={},t={})=>(t.locale??J())===`pl`?Mb(e):jb(e)),Pb=()=>`Save Budget Settings`,Fb=()=>`Zapisz ustawienia budżetów`,Ib=((e={},t={})=>(t.locale??J())===`pl`?Fb(e):Pb(e)),Lb=()=>`Loading budget settings`,Rb=()=>`Wczytywanie ustawień budżetów`,zb=((e={},t={})=>(t.locale??J())===`pl`?Rb(e):Lb(e)),Bb=()=>`Unable to load budget settings.`,Vb=()=>`Nie można wczytać ustawień budżetów.`,Hb=((e={},t={})=>(t.locale??J())===`pl`?Vb(e):Bb(e)),Ub=()=>`Unable to save budget settings.`,Wb=()=>`Nie można zapisać ustawień budżetów.`,Gb=((e={},t={})=>(t.locale??J())===`pl`?Wb(e):Ub(e)),Kb=()=>`Budget settings saved.`,qb=()=>`Ustawienia budżetów zapisane.`,Jb=((e={},t={})=>(t.locale??J())===`pl`?qb(e):Kb(e)),Yb=()=>`Sunday`,Xb=()=>`Niedziela`,Zb=((e={},t={})=>(t.locale??J())===`pl`?Xb(e):Yb(e)),Qb=()=>`Monday`,$b=()=>`Poniedziałek`,ex=((e={},t={})=>(t.locale??J())===`pl`?$b(e):Qb(e)),tx=()=>`Tuesday`,nx=()=>`Wtorek`,rx=((e={},t={})=>(t.locale??J())===`pl`?nx(e):tx(e)),ix=()=>`Wednesday`,ax=()=>`Środa`,ox=((e={},t={})=>(t.locale??J())===`pl`?ax(e):ix(e)),sx=()=>`Thursday`,cx=()=>`Czwartek`,lx=((e={},t={})=>(t.locale??J())===`pl`?cx(e):sx(e)),ux=()=>`Friday`,dx=()=>`Piątek`,fx=((e={},t={})=>(t.locale??J())===`pl`?dx(e):ux(e)),px=()=>`Saturday`,mx=()=>`Sobota`,hx=((e={},t={})=>(t.locale??J())===`pl`?mx(e):px(e)),gx=()=>`Tagging based on headers`,_x=()=>`Tagowanie na podstawie nagłówków`,vx=((e={},t={})=>(t.locale??J())===`pl`?_x(e):gx(e)),yx=()=>`Tagging help`,bx=()=>`Pomoc dotycząca tagowania`,xx=((e={},t={})=>(t.locale??J())===`pl`?bx(e):yx(e)),Sx=()=>`Each request is labelled from the listed headers; labels appear in usage tracking and audit logs. A header value can contain multiple labels separated by the delimiter (comma by default). The prefix is trimmed only from each label—the header itself is forwarded unchanged unless Do not pass is selected. Rows marked CONFIG come from config.yaml or TAGGING_HEADER_* environment variables and are read-only here.`,Cx=()=>`Każde żądanie otrzymuje etykiety z podanych nagłówków; etykiety trafiają do śledzenia zużycia i logów audytowych. Wartość nagłówka może zawierać kilka etykiet rozdzielonych separatorem (domyślnie przecinkiem). Prefiks jest usuwany tylko z każdej etykiety—sam nagłówek jest przekazywany bez zmian, chyba że zaznaczono Nie przekazuj. Wiersze oznaczone CONFIG pochodzą z config.yaml lub zmiennych środowiskowych TAGGING_HEADER_* i są tutaj tylko do odczytu.`,wx=((e={},t={})=>(t.locale??J())===`pl`?Cx(e):Sx(e)),Tx=()=>`Header`,Ex=()=>`Nagłówek`,Dx=((e={},t={})=>(t.locale??J())===`pl`?Ex(e):Tx(e)),Ox=()=>`Prefix to trim (optional)`,kx=()=>`Prefiks do usunięcia (opcjonalnie)`,Ax=((e={},t={})=>(t.locale??J())===`pl`?kx(e):Ox(e)),jx=()=>`Delimiter`,Mx=()=>`Separator`,Nx=((e={},t={})=>(t.locale??J())===`pl`?Mx(e):jx(e)),Px=()=>`Do not pass upstream`,Fx=()=>`Nie przekazuj dalej`,Ix=((e={},t={})=>(t.locale??J())===`pl`?Fx(e):Px(e)),Lx=()=>`Declared in config.yaml or TAGGING_HEADER_* environment variables; read-only here.`,Rx=()=>`Zdefiniowane w config.yaml lub zmiennych środowiskowych TAGGING_HEADER_*; tutaj tylko do odczytu.`,zx=((e={},t={})=>(t.locale??J())===`pl`?Rx(e):Lx(e)),Bx=()=>`Remove`,Vx=()=>`Usuń`,Hx=((e={},t={})=>(t.locale??J())===`pl`?Vx(e):Bx(e)),Ux=e=>`Remove tagging header ${e?.header}`,Wx=e=>`Usuń nagłówek tagowania ${e?.header}`,Gx=((e,t={})=>(t.locale??J())===`pl`?Wx(e):Ux(e)),Kx=()=>`Loading tagging settings`,qx=()=>`Wczytywanie ustawień tagowania`,Jx=((e={},t={})=>(t.locale??J())===`pl`?qx(e):Kx(e)),Yx=()=>`No tagging headers configured. Requests are not labelled.`,Xx=()=>`Nie skonfigurowano nagłówków tagowania. Żądania nie otrzymują etykiet.`,Zx=((e={},t={})=>(t.locale??J())===`pl`?Xx(e):Yx(e)),Qx=()=>`Add Header`,$x=()=>`Dodaj nagłówek`,eS=((e={},t={})=>(t.locale??J())===`pl`?$x(e):Qx(e)),tS=()=>`Save Tagging Settings`,nS=()=>`Zapisz ustawienia tagowania`,rS=((e={},t={})=>(t.locale??J())===`pl`?nS(e):tS(e)),iS=()=>`Unable to load tagging settings.`,aS=()=>`Nie można wczytać ustawień tagowania.`,oS=((e={},t={})=>(t.locale??J())===`pl`?aS(e):iS(e)),sS=()=>`Unable to save tagging settings.`,cS=()=>`Nie można zapisać ustawień tagowania.`,lS=((e={},t={})=>(t.locale??J())===`pl`?cS(e):sS(e)),uS=()=>`Tagging settings saved.`,dS=()=>`Ustawienia tagowania zapisane.`,fS=((e={},t={})=>(t.locale??J())===`pl`?dS(e):uS(e)),pS=()=>`Runtime Refresh`,mS=()=>`Odświeżenie runtime`,hS=((e={},t={})=>(t.locale??J())===`pl`?mS(e):pS(e)),gS=()=>`Runtime refresh help`,_S=()=>`Pomoc dotycząca odświeżenia runtime`,vS=((e={},t={})=>(t.locale??J())===`pl`?_S(e):gS(e)),yS=()=>`Pull the latest model metadata, provider inventory, API keys, aliases, model access rules, Guardrails, and Workflows.`,bS=()=>`Pobierz najnowsze metadane modeli, listę dostawców, klucze API, aliasy, reguły dostępu do modeli, Guardrails i Workflows.`,xS=((e={},t={})=>(t.locale??J())===`pl`?bS(e):yS(e)),SS=()=>`Refresh`,CS=()=>`Odśwież`,wS=((e={},t={})=>(t.locale??J())===`pl`?CS(e):SS(e)),TS=()=>`Runtime refresh completed.`,ES=()=>`Odświeżenie runtime zakończone.`,DS=((e={},t={})=>(t.locale??J())===`pl`?ES(e):TS(e)),OS=()=>`Runtime refreshed.`,kS=()=>`Runtime odświeżony.`,AS=((e={},t={})=>(t.locale??J())===`pl`?kS(e):OS(e)),jS=()=>`Runtime refresh completed with warnings.`,MS=()=>`Odświeżenie runtime zakończone z ostrzeżeniami.`,NS=((e={},t={})=>(t.locale??J())===`pl`?MS(e):jS(e)),PS=()=>`Runtime refresh failed.`,FS=()=>`Odświeżenie runtime nie powiodło się.`,IS=((e={},t={})=>(t.locale??J())===`pl`?FS(e):PS(e)),LS=()=>`AI Processing`,RS=()=>`Przetwarzanie AI`,zS=((e={},t={})=>(t.locale??J())===`pl`?RS(e):LS(e)),BS=()=>`Unable to load runtime settings.`,VS=()=>`Nie można wczytać ustawień runtime.`,HS=((e={},t={})=>(t.locale??J())===`pl`?VS(e):BS(e)),US=e=>`Unable to save ${e?.setting}.`,WS=e=>`Nie można zapisać ustawienia ${e?.setting}.`,GS=((e,t={})=>(t.locale??J())===`pl`?WS(e):US(e)),KS=e=>`${e?.setting} saved.`,qS=e=>`Zapisano ustawienie ${e?.setting}.`,JS=((e,t={})=>(t.locale??J())===`pl`?qS(e):KS(e)),YS=e=>`Managed by ${e?.source}`,XS=e=>`Zarządzane przez: ${e?.source}`,ZS=((e,t={})=>(t.locale??J())===`pl`?XS(e):YS(e)),QS=()=>`environment`,$S=()=>`środowisko`,eC=((e={},t={})=>(t.locale??J())===`pl`?$S(e):QS(e)),tC=()=>`Usage Pricing Recalculation`,nC=()=>`Ponowne przeliczenie cen zużycia`,rC=((e={},t={})=>(t.locale??J())===`pl`?nC(e):tC(e)),iC=()=>`Pricing recalculation help`,aC=()=>`Pomoc dotycząca przeliczania cen`,oC=((e={},t={})=>(t.locale??J())===`pl`?aC(e):iC(e)),sC=()=>`Recalculate stored input, output, total, and Pro Saved costs from the current model pricing metadata. This overwrites matching historical cost fields. Filters apply to the selected date range, user path subtree, and provider/model selector or alias.`,cC=()=>`Przelicz zapisane koszty wejścia, wyjścia, łączne oraz Pro Saved na podstawie bieżących metadanych cen modeli. Operacja nadpisuje pasujące historyczne pola kosztów. Filtry dotyczą wybranego zakresu dat, poddrzewa ścieżki użytkownika oraz selektora lub aliasu dostawcy/modelu.`,lC=((e={},t={})=>(t.locale??J())===`pl`?cC(e):sC(e)),uC=()=>`Date Range`,dC=()=>`Zakres dat`,fC=((e={},t={})=>(t.locale??J())===`pl`?dC(e):uC(e)),pC=()=>`User Path (optional)`,mC=()=>`Ścieżka użytkownika (opcjonalnie)`,hC=((e={},t={})=>(t.locale??J())===`pl`?mC(e):pC(e)),gC=()=>`Provider/Model or Alias (optional)`,_C=()=>`Dostawca/model lub alias (opcjonalnie)`,vC=((e={},t={})=>(t.locale??J())===`pl`?_C(e):gC(e)),yC=()=>`openai/gpt-4o or smart`,bC=()=>`openai/gpt-4o lub smart`,xC=((e={},t={})=>(t.locale??J())===`pl`?bC(e):yC(e)),SC=()=>`Recalculate Pricing`,CC=()=>`Przelicz ceny`,wC=((e={},t={})=>(t.locale??J())===`pl`?CC(e):SC(e)),TC=()=>`Usage pricing recalculation is unavailable.`,EC=()=>`Ponowne przeliczanie cen zużycia jest niedostępne.`,DC=((e={},t={})=>(t.locale??J())===`pl`?EC(e):TC(e)),OC=()=>`recalculate`,kC=()=>`recalculate`,AC=((e={},t={})=>(t.locale??J())===`pl`?kC(e):OC(e)),jC=()=>`Stored usage cost fields matching the selected filters will be overwritten.`,MC=()=>`Zapisane pola kosztów zużycia pasujące do wybranych filtrów zostaną nadpisane.`,NC=((e={},t={})=>(t.locale??J())===`pl`?MC(e):jC(e)),PC=()=>`Unable to recalculate pricing.`,FC=()=>`Nie można przeliczyć cen.`,IC=((e={},t={})=>(t.locale??J())===`pl`?FC(e):PC(e)),LC=e=>nc(`en`,e?.matched,{})===`one`?`Pricing recalculated for ${e?.recalculated} of ${e?.matched} usage record.`:`Pricing recalculated for ${e?.recalculated} of ${e?.matched} usage records.`,RC=e=>(nc(`pl`,e?.matched,{}),`Przeliczono ceny dla ${e?.recalculated} z ${e?.matched} rekordów zużycia.`),zC=((e,t={})=>(t.locale??J())===`pl`?RC(e):LC(e)),BC=e=>nc(`en`,e?.count,{})===`one`?`${e?.count} usage record still lacks pricing metadata.`:`${e?.count} usage records still lack pricing metadata.`,VC=e=>(nc(`pl`,e?.count,{}),`Rekordy bez metadanych cen: ${e?.count}.`),HC=((e,t={})=>(t.locale??J())===`pl`?VC(e):BC(e)),UC=()=>`Sign out`,WC=()=>`Wyloguj się`,GC=((e={},t={})=>(t.locale??J())===`pl`?WC(e):UC(e)),KC=()=>`Enter API key`,qC=()=>`Wprowadź klucz API`,JC=((e={},t={})=>(t.locale??J())===`pl`?qC(e):KC(e)),YC=()=>`Change API key`,XC=()=>`Zmień klucz API`,ZC=((e={},t={})=>(t.locale??J())===`pl`?XC(e):YC(e)),QC=()=>`Resize sidebar`,$C=()=>`Zmień szerokość paska bocznego`,ew=((e={},t={})=>(t.locale??J())===`pl`?$C(e):QC(e)),tw=()=>`Drag to resize; click to collapse or expand`,nw=()=>`Przeciągnij, aby zmienić szerokość; kliknij, aby zwinąć lub rozwinąć`,rw=((e={},t={})=>(t.locale??J())===`pl`?nw(e):tw(e)),iw=()=>`Theme`,aw=()=>`Motyw`,ow=((e={},t={})=>(t.locale??J())===`pl`?aw(e):iw(e)),sw=()=>`Light theme`,cw=()=>`Jasny motyw`,lw=((e={},t={})=>(t.locale??J())===`pl`?cw(e):sw(e)),uw=()=>`System theme`,dw=()=>`Motyw systemowy`,fw=((e={},t={})=>(t.locale??J())===`pl`?dw(e):uw(e)),pw=()=>`Dark theme`,mw=()=>`Ciemny motyw`,hw=((e={},t={})=>(t.locale??J())===`pl`?mw(e):pw(e)),gw=e=>`Change theme (currently ${e?.theme})`,_w=e=>`Zmień motyw (obecnie: ${e?.theme})`,vw=((e,t={})=>(t.locale??J())===`pl`?_w(e):gw(e)),yw=()=>`Language`,bw=()=>`Język`,xw=((e={},t={})=>(t.locale??J())===`pl`?bw(e):yw(e)),Sw=()=>`Authentication required for dashboard data.`,Cw=()=>`Dostęp do danych panelu wymaga uwierzytelnienia.`,ww=((e={},t={})=>(t.locale??J())===`pl`?Cw(e):Sw(e)),Tw=()=>`Dashboard locked`,Ew=()=>`Panel zablokowany`,Dw=((e={},t={})=>(t.locale??J())===`pl`?Ew(e):Tw(e)),Ow=()=>`Change API key`,kw=()=>`Zmień klucz API`,Aw=((e={},t={})=>(t.locale??J())===`pl`?kw(e):Ow(e)),jw=()=>`Close authentication dialog`,Mw=()=>`Zamknij okno uwierzytelniania`,Nw=((e={},t={})=>(t.locale??J())===`pl`?Mw(e):jw(e)),Pw=()=>`Sign in with SSO`,Fw=()=>`Zaloguj się przez SSO`,Iw=((e={},t={})=>(t.locale??J())===`pl`?Fw(e):Pw(e)),Lw=()=>`or use an API key`,Rw=()=>`lub użyj klucza API`,zw=((e={},t={})=>(t.locale??J())===`pl`?Rw(e):Lw(e)),Bw=()=>`API key`,Vw=()=>`Klucz API`,Hw=((e={},t={})=>(t.locale??J())===`pl`?Vw(e):Bw(e)),Uw=()=>`Master key or bearer token`,Ww=()=>`Klucz główny lub token Bearer`,Gw=((e={},t={})=>(t.locale??J())===`pl`?Ww(e):Uw(e)),Kw=()=>`Enter a valid API key to continue.`,qw=()=>`Aby kontynuować, wprowadź prawidłowy klucz API.`,Jw=((e={},t={})=>(t.locale??J())===`pl`?qw(e):Kw(e)),Yw=()=>`Stored in this browser. Requests use the Authorization bearer header.`,Xw=()=>`Klucz jest przechowywany w tej przeglądarce. Żądania używają nagłówka Authorization typu Bearer.`,Zw=((e={},t={})=>(t.locale??J())===`pl`?Xw(e):Yw(e)),Qw=()=>`Unlock dashboard`,$w=()=>`Odblokuj panel`,eT=((e={},t={})=>(t.locale??J())===`pl`?$w(e):Qw(e)),tT=()=>`Save API key`,nT=()=>`Zapisz klucz API`,rT=((e={},t={})=>(t.locale??J())===`pl`?nT(e):tT(e)),iT=()=>`Close confirmation dialog`,aT=()=>`Zamknij okno potwierdzenia`,oT=((e={},t={})=>(t.locale??J())===`pl`?aT(e):iT(e)),sT=()=>`Dismiss notification`,cT=()=>`Zamknij powiadomienie`,lT=((e={},t={})=>(t.locale??J())===`pl`?cT(e):sT(e)),uT=()=>`Demo mode notice`,dT=()=>`Informacja o trybie demo`,fT=((e={},t={})=>(t.locale??J())===`pl`?dT(e):uT(e)),pT=()=>`Public demo`,mT=()=>`Publiczne demo`,hT=((e={},t={})=>(t.locale??J())===`pl`?mT(e):pT(e)),gT=()=>`Do not enter sensitive or personal data. Demo data is reset regularly.`,_T=()=>`Nie wprowadzaj danych poufnych ani osobowych. Dane demonstracyjne są regularnie resetowane.`,vT=((e={},t={})=>(t.locale??J())===`pl`?_T(e):gT(e)),yT=()=>`GoModel website`,bT=()=>`Strona GoModel`,xT=((e={},t={})=>(t.locale??J())===`pl`?bT(e):yT(e)),ST=e=>`Showing ${e?.start}–${e?.end} of ${e?.total}`,CT=e=>`Wyświetlanie ${e?.start}–${e?.end} z ${e?.total}`,wT=((e,t={})=>(t.locale??J())===`pl`?CT(e):ST(e)),TT=e=>nc(`en`,e?.count,{})===`one`?`Last ${e?.count} day`:`Last ${e?.count} days`,ET=e=>{let t=nc(`pl`,e?.count,{});return t===`one`?`Ostatni ${e?.count} dzień`:t===`few`||t===`many`?`Ostatnie ${e?.count} dni`:`Ostatnie ${e?.count} dnia`},DT=((e,t={})=>(t.locale??J())===`pl`?ET(e):TT(e)),OT=e=>nc(`en`,e?.count,{})===`one`?`${e?.count} day`:`${e?.count} days`,kT=e=>{let t=nc(`pl`,e?.count,{});return t===`one`?`${e?.count} dzień`:t===`few`||t===`many`?`${e?.count} dni`:`${e?.count} dnia`},AT=((e,t={})=>(t.locale??J())===`pl`?kT(e):OT(e)),jT=()=>`Today`,MT=()=>`Dzisiaj`,NT=((e={},t={})=>(t.locale??J())===`pl`?MT(e):jT(e)),PT=e=>`${e?.start} – ${e?.end}`,FT=e=>`${e?.start} – ${e?.end}`,IT=((e,t={})=>(t.locale??J())===`pl`?FT(e):PT(e)),LT=e=>`${e?.start} – ...`,RT=e=>`${e?.start} – ...`,zT=((e,t={})=>(t.locale??J())===`pl`?RT(e):LT(e)),BT=()=>`Select start date`,VT=()=>`Wybierz datę początkową`,HT=((e={},t={})=>(t.locale??J())===`pl`?VT(e):BT(e)),UT=()=>`Select end date`,WT=()=>`Wybierz datę końcową`,GT=((e={},t={})=>(t.locale??J())===`pl`?WT(e):UT(e)),KT=()=>`Previous month`,qT=()=>`Poprzedni miesiąc`,JT=((e={},t={})=>(t.locale??J())===`pl`?qT(e):KT(e)),YT=()=>`Next month`,XT=()=>`Następny miesiąc`,ZT=((e={},t={})=>(t.locale??J())===`pl`?XT(e):YT(e)),QT=()=>`Daily Token Usage`,$T=()=>`Dzienne zużycie tokenów`,eE=((e={},t={})=>(t.locale??J())===`pl`?$T(e):QT(e)),tE=()=>`Weekly Token Usage`,nE=()=>`Tygodniowe zużycie tokenów`,rE=((e={},t={})=>(t.locale??J())===`pl`?nE(e):tE(e)),iE=()=>`Monthly Token Usage`,aE=()=>`Miesięczne zużycie tokenów`,oE=((e={},t={})=>(t.locale??J())===`pl`?aE(e):iE(e)),sE=()=>`Yearly Token Usage`,cE=()=>`Roczne zużycie tokenów`,lE=((e={},t={})=>(t.locale??J())===`pl`?cE(e):sE(e)),uE=[[`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`}]],dE=[[`path`,{d:`M12 5v14`}],[`path`,{d:`m19 12-7 7-7-7`}]],fE=[[`path`,{d:`m12 19-7-7 7-7`}],[`path`,{d:`M19 12H5`}]],pE=[[`path`,{d:`M5 12h14`}],[`path`,{d:`m12 5 7 7-7 7`}]],mE=[[`path`,{d:`m5 12 7-7 7 7`}],[`path`,{d:`M12 19V5`}]],hE=[[`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`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`}],[`path`,{d:`M12 22V12`}]],gE=[[`rect`,{width:`16`,height:`20`,x:`4`,y:`2`,rx:`2`}],[`line`,{x1:`8`,x2:`16`,y1:`6`,y2:`6`}],[`line`,{x1:`16`,x2:`16`,y1:`14`,y2:`18`}],[`path`,{d:`M16 10h.01`}],[`path`,{d:`M12 10h.01`}],[`path`,{d:`M8 10h.01`}],[`path`,{d:`M12 14h.01`}],[`path`,{d:`M8 14h.01`}],[`path`,{d:`M12 18h.01`}],[`path`,{d:`M8 18h.01`}]],_E=[[`path`,{d:`M8 2v4`}],[`path`,{d:`M16 2v4`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`}],[`path`,{d:`M3 10h18`}],[`path`,{d:`M8 14h.01`}],[`path`,{d:`M12 14h.01`}],[`path`,{d:`M16 14h.01`}],[`path`,{d:`M8 18h.01`}],[`path`,{d:`M12 18h.01`}],[`path`,{d:`M16 18h.01`}]],vE=[[`path`,{d:`M8 2v4`}],[`path`,{d:`M16 2v4`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`}],[`path`,{d:`M3 10h18`}]],yE=[[`path`,{d:`M13 17V9`}],[`path`,{d:`M18 17V5`}],[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`}],[`path`,{d:`M8 17v-3`}]],bE=[[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`}],[`path`,{d:`M18 17V9`}],[`path`,{d:`M13 17V5`}],[`path`,{d:`M8 17v-3`}]],xE=[[`path`,{d:`M20 6 9 17l-5-5`}]],SE=[[`path`,{d:`m6 9 6 6 6-6`}]],CE=[[`path`,{d:`m15 18-6-6 6-6`}]],wE=[[`path`,{d:`m9 18 6-6-6-6`}]],TE=[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`}],[`path`,{d:`m9 11 3 3L22 4`}]],EE=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`m9 12 2 2 4-4`}]],DE=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8`}],[`path`,{d:`M12 18V6`}]],OE=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 6v6l4 2`}]],kE=[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`}]],AE=[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`}],[`path`,{d:`M3 5V19A9 3 0 0 0 15 21.84`}],[`path`,{d:`M21 5V8`}],[`path`,{d:`M21 12L18 17H22L19 22`}],[`path`,{d:`M3 12A9 3 0 0 0 14.59 14.87`}]],jE=[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`}]],ME=[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`}],[`path`,{d:`M10 9H8`}],[`path`,{d:`M16 13H8`}],[`path`,{d:`M16 17H8`}]],NE=[[`path`,{d:`m12 14 4-4`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`}]],PE=[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`}],[`path`,{d:`M3 3v5h5`}],[`path`,{d:`M12 7v5l4 2`}]],FE=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 16v-4`}],[`path`,{d:`M12 8h.01`}]],IE=[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]],LE=[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`}]],RE=[[`path`,{d:`M3 5h.01`}],[`path`,{d:`M3 12h.01`}],[`path`,{d:`M3 19h.01`}],[`path`,{d:`M8 5h13`}],[`path`,{d:`M8 12h13`}],[`path`,{d:`M8 19h13`}]],zE=[[`circle`,{cx:`12`,cy:`16`,r:`1`}],[`rect`,{x:`3`,y:`10`,width:`18`,height:`12`,rx:`2`}],[`path`,{d:`M7 10V7a5 5 0 0 1 10 0v3`}]],BE=[[`path`,{d:`m16 17 5-5-5-5`}],[`path`,{d:`M21 12H9`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`}]],VE=[[`path`,{d:`M15 3h6v6`}],[`path`,{d:`m21 3-7 7`}],[`path`,{d:`m3 21 7-7`}],[`path`,{d:`M9 21H3v-6`}]],HE=[[`path`,{d:`m14 10 7-7`}],[`path`,{d:`M20 10h-6V4`}],[`path`,{d:`m3 21 7-7`}],[`path`,{d:`M4 14h6v6`}]],UE=[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`}]],WE=[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`}]],GE=[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`}],[`path`,{d:`m15 5 4 4`}]],KE=[[`path`,{d:`M12 22v-5`}],[`path`,{d:`M15 8V2`}],[`path`,{d:`M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z`}],[`path`,{d:`M9 8V2`}]],qE=[[`path`,{d:`M5 12h14`}],[`path`,{d:`M12 5v14`}]],JE=[[`path`,{d:`M12 2v10`}],[`path`,{d:`M18.4 6.6a9 9 0 1 1-12.77.04`}]],YE=[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`}],[`path`,{d:`M21 3v5h-5`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`}],[`path`,{d:`M8 16H3v5`}]],XE=[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`}],[`path`,{d:`M3 3v5h5`}]],ZE=[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`}]],QE=[[`path`,{d:`m21 21-4.34-4.34`}],[`circle`,{cx:`11`,cy:`11`,r:`8`}]],$E=[[`path`,{d:`m10.852 14.772-.383.923`}],[`path`,{d:`M13.148 14.772a3 3 0 1 0-2.296-5.544l-.383-.923`}],[`path`,{d:`m13.148 9.228.383-.923`}],[`path`,{d:`m13.53 15.696-.382-.924a3 3 0 1 1-2.296-5.544`}],[`path`,{d:`m14.772 10.852.923-.383`}],[`path`,{d:`m14.772 13.148.923.383`}],[`path`,{d:`M4.5 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-.5`}],[`path`,{d:`M4.5 14H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-.5`}],[`path`,{d:`M6 18h.01`}],[`path`,{d:`M6 6h.01`}],[`path`,{d:`m9.228 10.852-.923-.383`}],[`path`,{d:`m9.228 13.148-.923.383`}]],eD=[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`}]],tD=[[`path`,{d:`M14 17H5`}],[`path`,{d:`M19 7h-9`}],[`circle`,{cx:`17`,cy:`17`,r:`3`}],[`circle`,{cx:`7`,cy:`7`,r:`3`}]],nD=[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`}],[`circle`,{cx:`12`,cy:`12`,r:`3`}]],rD=[[`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`}],[`path`,{d:`m9 12 2 2 4-4`}]],iD=[[`path`,{d:`m2 2 20 20`}],[`path`,{d:`M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71`}],[`path`,{d:`M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264`}]],aD=[[`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`}]],oD=[[`path`,{d:`m18 14 4 4-4 4`}],[`path`,{d:`m18 2 4 4-4 4`}],[`path`,{d:`M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22`}],[`path`,{d:`M2 6h1.972a4 4 0 0 1 3.6 2.2`}],[`path`,{d:`M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45`}]],sD=[[`circle`,{cx:`12`,cy:`12`,r:`4`}],[`path`,{d:`M12 2v2`}],[`path`,{d:`M12 20v2`}],[`path`,{d:`m4.93 4.93 1.41 1.41`}],[`path`,{d:`m17.66 17.66 1.41 1.41`}],[`path`,{d:`M2 12h2`}],[`path`,{d:`M20 12h2`}],[`path`,{d:`m6.34 17.66-1.41 1.41`}],[`path`,{d:`m19.07 4.93-1.41 1.41`}]],cD=[[`path`,{d:`M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z`}],[`circle`,{cx:`7.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]],lD=[[`line`,{x1:`10`,x2:`14`,y1:`2`,y2:`2`}],[`line`,{x1:`12`,x2:`15`,y1:`14`,y2:`11`}],[`circle`,{cx:`12`,cy:`14`,r:`8`}]],uD=[[`path`,{d:`M10 11v6`}],[`path`,{d:`M14 11v6`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]],dD=[[`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`}],[`path`,{d:`M12 9v4`}],[`path`,{d:`M12 17h.01`}]],fD=[[`circle`,{cx:`12`,cy:`8`,r:`5`}],[`path`,{d:`M20 21a8 8 0 0 0-16 0`}]],pD=[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`}],[`circle`,{cx:`12`,cy:`7`,r:`4`}]],mD=[[`path`,{d:`M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1`}],[`path`,{d:`M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4`}]],hD=[[`path`,{d:`m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72`}],[`path`,{d:`m14 7 3 3`}],[`path`,{d:`M5 6v4`}],[`path`,{d:`M19 14v4`}],[`path`,{d:`M10 2v2`}],[`path`,{d:`M7 8H3`}],[`path`,{d:`M21 16h-4`}],[`path`,{d:`M11 3H9`}]],gD=[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`}]],_D=[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]],vD=z(``),yD=z(`
                `,1);function bD(e,t){D(t,!0);let n=K(t,`compact`,3,!1),r=[{value:`light`,icon:sD,label:lw()},{value:`system`,icon:UE,label:fw()},{value:`dark`,icon:WE,label:hw()}],i=k(()=>r.find(e=>e.value===Da.theme)||r[1]),a=k(()=>vw({theme:L(i).label}));var o=yD(),s=P(o);let c;U(s,21,()=>r,e=>e.value,(e,t)=>{var n=vD();let r;q(N(n),{get icon(){return L(t).icon},class:`theme-icon`}),E(n),I(()=>{r=W(n,1,`theme-btn svelte-1keql7b`,null,r,{active:Da.theme===L(t).value}),G(n,`aria-pressed`,Da.theme===L(t).value),G(n,`title`,L(t).label),G(n,`aria-label`,L(t).label)}),R(`click`,n,()=>Da.set(L(t).value)),B(e,n)}),E(s);var l=F(s,2);let u;q(N(l),{get icon(){return L(i).icon},class:`theme-icon`}),E(l),I(e=>{c=W(s,1,`theme-toggle svelte-1keql7b`,null,c,{"is-compact":n()}),G(s,`aria-label`,e),u=W(l,1,`theme-toggle-mobile svelte-1keql7b`,null,u,{"is-compact":n()}),G(l,`title`,L(a)),G(l,`aria-label`,L(a))},[()=>ow()]),R(`click`,l,()=>Da.toggle()),B(e,o),O()}Vr([`click`]);function xD(){return typeof window>`u`?`/`:window.GOMODEL_BASE_PATH||`/`}function SD(e){let t=xD();return!e||e.charAt(0)!==`/`||e.indexOf(`//`)===0||t===`/`||e===t||e.indexOf(t+`/`)===0?e:t+e}function CD(e){let t=xD();return t===`/`||!e?e:e===t?`/`:e.indexOf(t+`/`)===0?e.slice(t.length)||`/`:e}function wD(){return typeof window>`u`?``:window.GOMODEL_VERSION||``}function TD(){return typeof window>`u`?!1:window.GOMODEL_DEMO_MODE===!0}var ED=[`overview`,`usage`,`budgets`,`rate-limits`,`models`,`workflows`,`audit-logs`,`guardrails`,`mcp-servers`,`providers-config`,`auth-keys`,`settings`];function DD(e){return e.startsWith(`/admin/static/`)?`/`+e.slice(14).replace(/^\/+/,``):e}function OD(e){let t=DD(CD(e)).replace(/\/$/,``).replace(`/admin/dashboard`,``).replace(/^\//,``).split(`/`),n=t[0];n===`audit`&&(n=`audit-logs`);let r=t[1]||null;return n===`settings`&&r===`guardrails`?{page:`guardrails`,sub:null}:(n=ED.includes(n)?n:`overview`,{page:n,sub:r})}var kD=new class{#e=A(`overview`);get page(){return L(this.#e)}set page(e){j(this.#e,e,!0)}#t=A(null);get sub(){return L(this.#t)}set sub(e){j(this.#t,e,!0)}init(){let{page:e,sub:t}=OD(window.location.pathname);this.page=e,this.sub=t,window.addEventListener(`popstate`,()=>{let{page:e,sub:t}=OD(window.location.pathname);this.page=e,this.sub=t})}navigate(e,t=null){let n=t?`/`+t:``;history.pushState(null,``,SD(`/admin/dashboard/`+e+n)),this.page=e,this.sub=t}},AD=`X-GoModel-Auth-Login`,jD=`X-GoModel-Auth-Logout`,MD=`X-GoModel-Auth-User`;function ND(e){let t=String(e||``).trim();return!t.startsWith(`/`)||t.startsWith(`//`)||t.includes(`\\`)?``:t}function PD(e,t=globalThis.location){let n=ND(e),r=ND(t?.pathname);if(!n||!r)return n;let i=String(t?.search||``),a=r+(i.startsWith(`?`)?i:``),o=n.indexOf(`#`),s=o<0?n:n.slice(0,o),c=o<0?``:n.slice(o);return`${s}${s.includes(`?`)?`&`:`?`}return_to=${encodeURIComponent(a)}${c}`}function FD(e){let t=e?.headers;if(!t||typeof t.has!=`function`)return null;let n={};return t.has(AD)&&(n.loginURL=ND(t.get(AD))),t.has(jD)&&(n.logoutURL=ND(t.get(jD))),t.has(MD)&&(n.user=String(t.get(MD)||``).trim().slice(0,256)),n}var ID=`gomodel_api_key`;function LD(e){let t=String(e||``).trim();if(/^Bearer\s*$/i.test(t))return``;let n=t.match(/^Bearer\s+(.+)$/i);return n?n[1].trim():t}var Y=new class{#e=A(``);get apiKey(){return L(this.#e)}set apiKey(e){j(this.#e,e,!0)}#t=A(!1);get needsAuth(){return L(this.#t)}set needsAuth(e){j(this.#t,e,!0)}#n=A(!1);get authError(){return L(this.#n)}set authError(e){j(this.#n,e,!0)}#r=A(``);get authErrorMessage(){return L(this.#r)}set authErrorMessage(e){j(this.#r,e,!0)}#i=A(!1);get dialogOpen(){return L(this.#i)}set dialogOpen(e){j(this.#i,e,!0)}#a=A(``);get externalLoginURL(){return L(this.#a)}set externalLoginURL(e){j(this.#a,e,!0)}#o=A(``);get externalLogoutURL(){return L(this.#o)}set externalLogoutURL(e){j(this.#o,e,!0)}#s=A(``);get externalUser(){return L(this.#s)}set externalUser(e){j(this.#s,e,!0)}#c=A(0);get generation(){return L(this.#c)}set generation(e){j(this.#c,e,!0)}#l=A(0);get refreshTick(){return L(this.#l)}set refreshTick(e){j(this.#l,e,!0)}init(){try{this.apiKey=LD(localStorage.getItem(ID)||``)}catch{this.apiKey=``}}hasApiKey(){return LD(this.apiKey)!==``}save(){this.apiKey=LD(this.apiKey);try{localStorage.setItem(ID,this.apiKey)}catch{}}selectExternalAuthentication(){this.apiKey=``;try{localStorage.removeItem(ID)}catch{}this.generation++,this.authError=!1,this.authErrorMessage=``,this.needsAuth=!0}openDialog(){this.dialogOpen=!0}closeDialog(){this.dialogOpen=!1}submit(){let e=LD(this.apiKey);return e?(this.apiKey=e,this.save(),this.generation++,this.authError=!1,this.authErrorMessage=``,this.needsAuth=!1,this.closeDialog(),this.refresh(),!0):(this.apiKey=``,this.authError=!0,this.authErrorMessage=``,this.needsAuth=!0,this.openDialog(),!1)}refresh(){this.refreshTick++}observeResponse(e){let t=FD(e);t&&(Object.hasOwn(t,`loginURL`)&&(this.externalLoginURL=t.loginURL),Object.hasOwn(t,`logoutURL`)&&(this.externalLogoutURL=t.logoutURL),Object.hasOwn(t,`user`)&&(this.externalUser=t.user))}handleUnauthorized(e,t=``){return typeof e==`number`&&e{r[e.type]=e.value}),r.year+`-`+r.month+`-`+r.day}formatTimestampInTimeZone(e,t){if(e==null)return`-`;let n=new Date(e);if(Number.isNaN(n.getTime()))return`-`;let r=JD(`en-CA`,{timeZone:YD(t)?t:WD,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`}).formatToParts(n),i={};return r.forEach(e=>{i[e.type]=e.value}),i.year+`-`+i.month+`-`+i.day+` `+i.hour+`:`+i.minute+`:`+i.second}formatTimestamp(e){return this.formatTimestampInTimeZone(e,this.effectiveTimezone())}currentDateKey(e){return this.dateKeyInTimeZone(e||new Date,this.effectiveTimezone())}dateKeyToDate(e){return zD(e)}dateToDateKey(e){return BD(e)}addDaysToDateKey(e,t){return VD(e,t)}todayDate(){return this.dateKeyToDate(this.currentDateKey())}startOfMonthDate(e){let t=e instanceof Date?e:this.todayDate();return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),1))}timeZoneOffsetLabel(e,t){let n=YD(e)?e:WD;try{let e=JD(`en-US`,{timeZone:n,hour:`2-digit`,minute:`2-digit`,hourCycle:`h23`,timeZoneName:`longOffset`}).formatToParts(t||new Date).find(e=>e.type===`timeZoneName`);if(!e||!e.value)return`UTC+00:00`;let r=e.value.replace(`GMT`,`UTC`);return r===`UTC`?`UTC+00:00`:r}catch{return`UTC+00:00`}}timeZoneOffsetMinutes(e,t){let n=/^UTC([+-])(\d{2}):(\d{2})$/.exec(this.timeZoneOffsetLabel(e,t));if(!n)return 0;let r=Number(n[2])*60+Number(n[3]);return n[1]===`-`?-r:r}timeZoneOptionLabel(e,t){return e+` (`+this.timeZoneOffsetLabel(e,t)+`)`}detectedTimeZoneLabel(){return this.timeZoneOptionLabel(this.detectedTimezone)}effectiveTimeZoneLabel(){return this.timeZoneOptionLabel(this.effectiveTimezone())}ensureOptions(){if(this.optionsLoaded)return;let e=new Date,t=[];try{typeof Intl.supportedValuesOf==`function`&&(t=Intl.supportedValuesOf(`timeZone`))}catch{t=[]}[WD,this.detectedTimezone,this.override].forEach(e=>{e&&t.indexOf(e)===-1&&YD(e)&&t.push(e)}),t=t.filter(e=>YD(e)),t.sort((t,n)=>{let r=this.timeZoneOffsetMinutes(t,e)-this.timeZoneOffsetMinutes(n,e);return r===0?t.localeCompare(n):r}),this.options=t.map(t=>({value:t,label:this.timeZoneOptionLabel(t,e)})),this.optionsLoaded=!0}saveOverride(){let e=Sa();if(e)if(this.override&&YD(this.override))try{e.setItem(GD,this.override)}catch{}else{try{e.removeItem(GD)}catch{}this.override=``}this.optionsLoaded=!1,this.ensureOptions()}clearOverride(){let e=Sa();if(e)try{e.removeItem(GD)}catch{}this.override=``}calendarTimeZoneText(){let e=this.override?`manual override`:`auto-detected`;return`Activity grouped by `+this.effectiveTimeZoneLabel()+` (`+e+`)`}};function $D(e,t){let n=e&&typeof e==`object`&&e.error&&e.error.message;return(typeof n==`string`?n.trim():``)||t}function eO(e,t){let n=e&&e.data;if(n&&typeof n==`object`){let e=[n.message,n.error,n.error&&typeof n.error==`object`?n.error.message:null];for(let t of e)if(typeof t==`string`&&t.trim())return t.trim()}return t}function tO(){let e={"Content-Type":`application/json`},t=LD(Y.apiKey);return t&&(e.Authorization=`Bearer `+t),e[`X-GoModel-Timezone`]=QD.effectiveTimezone(),e}function nO(e,t={}){return fetch(SD(e),{...t,headers:{...tO(),...t.headers||{}}})}async function rO(e,t,{label:n=e,parse:r=!0}={}){let i=Y.generation,a=await nO(e,t),o=ie.trim()).filter(Boolean);return e.length>0?e:cO}cacheVisible(){if(this.flag(`CACHE_ENABLED`)!==``)return this.booleanFlag(`CACHE_ENABLED`,!1);let e=this.flag(`REDIS_URL`),t=this.flag(`SEMANTIC_CACHE_ENABLED`);return e===``&&t===``||this.booleanFlag(`REDIS_URL`,!1)||this.booleanFlag(`SEMANTIC_CACHE_ENABLED`,!1)}auditVisible(){return this.booleanFlag(`LOGGING_ENABLED`,!0)}usageVisible(){return this.booleanFlag(`USAGE_ENABLED`,!0)}budgetsVisible(){return this.booleanFlag(`BUDGETS_ENABLED`,!0)}rateLimitsVisible(){return this.booleanFlag(`RATE_LIMITS_ENABLED`,!0)}guardrailsVisible(){return this.booleanFlag(`GUARDRAILS_ENABLED`,!0)}mcpVisible(){return this.booleanFlag(`MCP_ENABLED`,!0)}liveLogsVisible(){return this.booleanFlag(`DASHBOARD_LIVE_LOGS_ENABLED`,!0)}fetch(){return this.#n||=this.#r().finally(()=>{this.#n=null}),this.#n}async ensureLoaded(){if(this.#n){await this.#n;return}this.loaded||await this.fetch()}async#r(){let e=typeof AbortController==`function`?new AbortController:null,t=e?setTimeout(()=>e.abort(),1e4):null;try{let t=await iO(`/admin/runtime/config`,{label:`dashboard config`,signal:e?e.signal:void 0});if(t.stale)return;if(!t.ok){this.config={},this.loaded=!1;return}let n=t.data,r={};for(let e of sO)n&&typeof n==`object`&&!Array.isArray(n)&&n[e]!==void 0&&n[e]!==null&&(r[e]=String(n[e]).trim());this.config=r,this.loaded=!0}catch(e){console.error(`Failed to fetch dashboard config:`,e),this.config={},this.loaded=!1}finally{t!==null&&clearTimeout(t)}}},uO=[{page:`overview`,label:go,icon:LE},{page:`providers-config`,label:yo,icon:$E},{page:`models`,label:So,icon:hE},{page:`audit-logs`,label:To,icon:PE},{page:`usage`,label:Oo,icon:bE},{page:`budgets`,label:jo,icon:mD,visible:()=>lO.budgetsVisible()},{page:`rate-limits`,label:Po,icon:NE,visible:()=>lO.rateLimitsVisible()},{page:`auth-keys`,label:Lo,icon:IE},{page:`workflows`,label:Bo,icon:gD},{page:`guardrails`,label:Uo,icon:rD,visible:()=>lO.guardrailsVisible()},{page:`mcp-servers`,label:Ko,icon:KE,visible:()=>lO.mcpVisible()},{page:`settings`,label:Yo,icon:nD}],dO=z(` `),fO=z(`
                `),pO=z(``),mO=z(`
                `),hO=z(` `,1);function gO(e,t){D(t,!0);let n=k(()=>uO.filter(e=>!e.visible||e.visible())),r=A(null),i=0,a=0,o=!1;function s(e){e.button===0&&(e.preventDefault(),j(r,e.pointerId,!0),i=e.clientX,a=Oa.width,o=!1,e.currentTarget.setPointerCapture(e.pointerId),document.body.classList.add(`sidebar-resizing`))}function c(e){e.pointerId===L(r)&&(!o&&Math.abs(e.clientX-i)<=4||(o=!0,Oa.setWidth(Ea(a,i,e.clientX))))}function l(e){L(r)===null||e.pointerId!==void 0&&e.pointerId!==L(r)||(j(r,null),document.body.classList.remove(`sidebar-resizing`),Oa.setWidth(Oa.width,!0))}function u(){if(o){o=!1;return}Oa.toggle()}function d(e){let t;if(e.key===`ArrowLeft`)t=Oa.width-12;else if(e.key===`ArrowRight`)t=Oa.width+12;else if(e.key===`Home`)t=60;else if(e.key===`End`)t=240;else if(e.key===`Enter`||e.key===` `){e.preventDefault(),Oa.toggle();return}else return;e.preventDefault(),Oa.setWidth(t,!0)}var f=hO(),p=P(f);let m;var h=N(p),g=N(h);xa(N(g),{}),E(g);var _=F(g,4),v=N(_,!0);E(_),E(h);var y=F(h,2);U(y,21,()=>L(n),e=>e.page,(e,t)=>{var n=dO();let r;var i=N(n);q(i,{get icon(){return L(t).icon},class:`nav-icon`});var a=F(i,2),o=N(a,!0);E(a),E(n),I((e,i,a)=>{G(n,`href`,e),r=W(n,1,`nav-item svelte-1nwtzae`,null,r,{active:kD.page===L(t).page}),G(n,`title`,i),V(o,a)},[()=>SD(`/admin/dashboard/`+L(t).page),()=>L(t).label(),()=>L(t).label()]),R(`click`,n,e=>{e.preventDefault(),kD.navigate(L(t).page)}),B(e,n)}),E(y);var b=F(y,2),x=N(b);bD(x,{get compact(){return Oa.collapsed}});var S=F(x,2),C=e=>{var t=pO(),n=N(t),r=e=>{var t=fO(),n=N(t);q(n,{get icon(){return fD},class:`api-key-open-icon`});var r=F(n,2),i=N(r,!0);E(r),E(t),I(()=>{G(t,`title`,Y.externalUser),V(i,Y.externalUser)}),B(e,t)};H(n,e=>{Y.externalUser&&e(r)});var i=F(n,2),a=N(i);q(a,{get icon(){return BE},class:`api-key-open-icon`});var o=F(a,2),s=N(o,!0);E(o),E(i),E(t),I((e,t,n)=>{G(i,`href`,e),G(i,`aria-label`,t),V(s,n)},[()=>SD(Y.externalLogoutURL),()=>GC(),()=>GC()]),B(e,t)};H(S,e=>{Y.externalLogoutURL&&e(C)});var w=F(S,2),T=e=>{var t=mO(),n=N(t),r=N(n);q(r,{get icon(){return zE},class:`api-key-open-icon`});var i=F(r,2),a=N(i,!0);E(i),E(n),E(t),I((e,t)=>{G(n,`aria-label`,e),V(a,t)},[()=>Y.needsAuth?JC():ZC(),()=>Y.needsAuth?JC():ZC()]),R(`click`,n,()=>Y.openDialog()),B(e,t)},ee=k(()=>Y.needsAuth||Y.hasApiKey());H(w,e=>{L(ee)&&e(T)}),E(b),E(p);var te=F(p,2);I((e,t,n)=>{m=W(p,1,`sidebar svelte-1nwtzae`,null,m,{"sidebar-collapsed":Oa.collapsed,"sidebar-resizing":L(r)!==null}),V(v,e),G(te,`title`,t),G(te,`aria-label`,n),G(te,`aria-valuemin`,60),G(te,`aria-valuemax`,240),G(te,`aria-valuenow`,Oa.width)},[()=>po(),()=>rw(),()=>ew()]),R(`pointerdown`,te,s),R(`pointermove`,te,c),R(`pointerup`,te,l),Br(`pointercancel`,te,l),Br(`lostpointercapture`,te,l),R(`keydown`,te,d),R(`click`,te,u),B(e,f),O()}Vr([`click`,`pointerdown`,`pointermove`,`pointerup`,`keydown`]);var _O=z(``);function vO(e,t){D(t,!0);let n=K(t,`label`,3,`Close`),r=K(t,`class`,3,``),i=K(t,`iconClass`,3,`table-icon-svg`),a=K(t,`disabled`,3,!1),o=K(t,`el`,15,null);var s=_O();q(N(s),{get icon(){return _D},get class(){return i()}}),E(s),ha(s,e=>o(e),()=>o()),I(()=>{W(s,1,Pi([`dialog-close-btn`,r()]),`svelte-11l1bb5`),G(s,`aria-label`,n()),s.disabled=a()}),R(`click`,s,function(...e){t.onclick?.apply(this,e)}),B(e,s),O()}Vr([`click`]);function yO(e){return t=>{let n=n=>{t.contains(n.target)||e()},r=t=>{t.key===`Escape`&&e()};return document.addEventListener(`click`,n,!0),window.addEventListener(`keydown`,r),()=>{document.removeEventListener(`click`,n,!0),window.removeEventListener(`keydown`,r)}}}function bO(e=`[data-modal-autofocus]`){return t=>{let n=t.querySelector(e);n&&typeof n.focus==`function`&&n.focus()}}var xO=z(`
                `,1);function SO(e,t){D(t,!0);let n=K(t,`open`,3,!1),r=K(t,`variant`,3,`editor`),i=K(t,`closeOnBackdrop`,3,!0),a=k(()=>r()===`auth`?`auth-dialog-backdrop`:`editor-modal-backdrop`),o=k(()=>r()===`auth`?`auth-dialog-shell`:`editor-modal-shell`);kn(()=>{if(!n())return;let e=Tr(()=>ka.opened()),r=n=>{n.key===`Escape`&&ka.isTop(e)&&t.onclose?.()};return window.addEventListener(`keydown`,r),()=>{ka.closed(e),window.removeEventListener(`keydown`,r)}});function s(e){i()&&e.target===e.currentTarget&&t.onclose?.()}var c=Zr(),l=P(c),u=e=>{var n=xO(),r=P(n),i=F(r,2);hi(N(i),()=>t.children??f),E(i),ji(i,bO),I(()=>{W(r,1,Pi(L(a)),`svelte-17e0w4c`),W(i,1,Pi(L(o)),`svelte-17e0w4c`)}),R(`click`,i,s),B(e,n)};H(l,e=>{n()&&e(u)}),B(e,c),O()}Vr([`click`]);var CO=z(`
                `,1),wO=z(``),TO=z(``);function EO(e,t){D(t,!0),SO(e,{get open(){return Y.dialogOpen},variant:`auth`,onclose:()=>Y.closeDialog(),children:(e,t)=>{var n=TO(),r=N(n),i=N(r),a=N(i),o=N(a,!0);E(a),E(i);var s=F(i,2);{let e=k(()=>Nw());vO(s,{get label(){return L(e)},onclick:()=>Y.closeDialog(),class:`auth-dialog-close`,iconClass:``})}E(r);var c=F(r,2),l=N(c),u=e=>{var t=CO(),n=P(t),r=N(n);q(r,{get icon(){return IE}});var i=F(r,2),a=N(i,!0);E(i),E(n);var o=F(n,2),s=N(o),c=N(s,!0);E(s),E(o),I((e,t,r)=>{G(n,`href`,e),V(a,t),V(c,r)},[()=>PD(SD(Y.externalLoginURL)),()=>Iw(),()=>zw()]),R(`click`,n,()=>Y.selectExternalAuthentication()),B(e,t)};H(l,e=>{Y.externalLoginURL&&e(u)});var d=F(l,2),f=N(d);q(f,{get icon(){return zE},class:`auth-dialog-input-icon`});var p=F(f,2);ta(p),E(d);var m=F(d,2),h=e=>{var t=wO(),n=N(t,!0);E(t),I(e=>V(n,e),[()=>Y.authErrorMessage||Jw()]),B(e,t)};H(m,e=>{Y.authError&&e(h)});var g=F(m,2),_=N(g,!0);E(g);var v=F(g,2),y=N(v),b=N(y);q(b,{get icon(){return xE},class:`auth-dialog-submit-icon`});var x=F(b,2),S=N(x,!0);E(x),E(y),E(v),E(c),E(n),I((e,t,n,r,i)=>{V(o,e),G(p,`placeholder`,t),G(p,`aria-label`,n),V(_,r),V(S,i)},[()=>Y.needsAuth?Dw():Aw(),()=>Gw(),()=>Hw(),()=>Zw(),()=>Y.needsAuth?eT():rT()]),Br(`submit`,c,e=>{e.preventDefault(),Y.submit()}),ua(p,()=>Y.apiKey,e=>Y.apiKey=e),B(e,n)},$$slots:{default:!0}}),O()}Vr([`click`]);function DO(){return{open:!1,title:``,titleId:`typedConfirmationDialogTitle`,inputId:`typed-confirmation-input`,message:``,requiredText:``,value:``,confirmLabel:`Confirm`,icon:dD,dialogClass:``,loading:!1,onConfirm:null,onClose:null}}var OO=new class{#e=A(M(DO()));get state(){return L(this.#e)}set state(e){j(this.#e,e,!0)}#t=A(``);get error(){return L(this.#t)}set error(e){j(this.#t,e,!0)}open(e){this.error=``,this.state={...DO(),open:!0,...e||{}}}close(){let e=this.state;typeof e.onClose==`function`&&e.onClose(),this.state=DO(),this.error=``}ready(){return String(this.state.value||``).trim().toLowerCase()===String(this.state.requiredText||``).trim().toLowerCase()}inputLabel(){return`Type `+String(this.state.requiredText||``).trim()+` to confirm`}async submit(){if(!this.ready()){this.error=this.inputLabel()+`.`;return}if(typeof this.state.onConfirm==`function`){this.state.loading=!0;try{await this.state.onConfirm()}finally{this.state.loading=!1}}}},kO=z(`

                `),AO=z(``),jO=z(`

                `);function MO(e,t){D(t,!0);let n=k(()=>OO.state);SO(e,{get open(){return L(n).open},variant:`auth`,onclose:()=>OO.close(),children:(e,t)=>{var r=jO(),i=N(r),a=N(i),o=N(a,!0);E(a);var s=F(a,2);{let e=k(()=>oT());vO(s,{get label(){return L(e)},onclick:()=>OO.close(),class:`auth-dialog-close`,iconClass:``})}E(i);var c=F(i,2),l=N(c),u=e=>{var t=kO(),r=N(t,!0);E(t),I(()=>V(r,L(n).message)),B(e,t)};H(l,e=>{L(n).message&&e(u)});var d=F(l,2),f=N(d),p=N(f,!0);E(f);var m=F(f,2);ta(m),E(d);var h=F(d,2),g=e=>{var t=AO(),n=N(t,!0);E(t),I(()=>V(n,OO.error)),B(e,t)};H(h,e=>{OO.error&&e(g)});var _=F(h,2),v=N(_),y=N(v,!0);E(v);var b=F(v,2),x=N(b);q(x,{get icon(){return L(n).icon},class:`form-action-icon`});var S=F(x,2),C=N(S,!0);E(S),E(b),E(_),E(c),E(r),I((e,t,i)=>{W(r,1,`auth-dialog ${L(n).dialogClass??``}`),G(r,`aria-labelledby`,L(n).titleId),G(a,`id`,L(n).titleId),V(o,L(n).title),G(f,`for`,L(n).inputId),V(p,e),G(m,`id`,L(n).inputId),V(y,t),b.disabled=i,V(C,L(n).confirmLabel)},[()=>OO.inputLabel(),()=>ro(),()=>L(n).loading||!OO.ready()]),Br(`submit`,c,e=>{e.preventDefault(),OO.submit()}),ua(m,()=>OO.state.value,e=>OO.state.value=e),R(`click`,v,()=>OO.close()),B(e,r)},$$slots:{default:!0}}),O()}Vr([`click`]);var NO=e=>e;function PO(e){let t=e-1;return t*t*t+1}function FO(e){let t=typeof e==`string`&&e.match(/^\s*(-?[\d.]+)([^\s]*)\s*$/);return t?[parseFloat(t[1]),t[2]||`px`]:[e,`px`]}function IO(e,{delay:t=0,duration:n=400,easing:r=NO}={}){let i=+getComputedStyle(e).opacity;return{delay:t,duration:n,easing:r,css:e=>`opacity: ${e*i}`}}function LO(e,{delay:t=0,duration:n=400,easing:r=PO,x:i=0,y:a=0,opacity:o=0}={}){let s=getComputedStyle(e),c=+s.opacity,l=s.transform===`none`?``:s.transform,u=c*(1-o),[d,f]=FO(i),[p,m]=FO(a);return{delay:t,duration:n,easing:r,css:(e,t)=>` + transform: ${l} translate(${(1-e)*d}${f}, ${(1-e)*p}${m}); + opacity: ${c-u*t}`}}function RO(e,{delay:t=0,duration:n=400,easing:r=PO,axis:i=`y`}={}){let a=getComputedStyle(e),o=+a.opacity,s=i===`y`?`height`:`width`,c=parseFloat(a[s]),l=i===`y`?[`top`,`bottom`]:[`left`,`right`],u=l.map(e=>`${e[0].toUpperCase()}${e.slice(1)}`),d=parseFloat(a[`padding${u[0]}`]),f=parseFloat(a[`padding${u[1]}`]),p=parseFloat(a[`margin${u[0]}`]),m=parseFloat(a[`margin${u[1]}`]),h=parseFloat(a[`border${u[0]}Width`]),g=parseFloat(a[`border${u[1]}Width`]);return{delay:t,duration:n,easing:r,css:e=>`overflow: hidden;opacity: ${Math.min(e*20,1)*o};${s}: ${e*c}px;padding-${l[0]}: ${e*d}px;padding-${l[1]}: ${e*f}px;margin-${l[0]}: ${e*p}px;margin-${l[1]}: ${e*m}px;border-${l[0]}-width: ${e*h}px;border-${l[1]}-width: ${e*g}px;min-${s}: 0`}}function zO(e){return--e*e*(2.70158*e+1.70158)+1}function BO(e){let t=e-1;return t*t*t+1}var VO=5e3,HO=8e3,UO=new class{#e=A(M([]));get toasts(){return L(this.#e)}set toasts(e){j(this.#e,e,!0)}#t=0;#n=new Map;success(e){this.#r(`success`,e,VO)}error(e){this.#r(`error`,e,HO)}dismiss(e){let t=this.#n.get(e);t&&(clearTimeout(t),this.#n.delete(e)),this.toasts=this.toasts.filter(t=>t.id!==e)}#r(e,t,n){let r=String(t||``).trim();if(!r)return;let i=this.toasts.find(t=>t.kind===e&&t.text===r);i&&this.dismiss(i.id);let a=++this.#t;this.toasts=[...this.toasts,{id:a,kind:e,text:r}],this.#n.set(a,setTimeout(()=>this.dismiss(a),n))}},WO=z(`
                `),GO=z(`
                `);function KO(e,t){D(t,!0);var n=GO();U(n,21,()=>UO.toasts,e=>e.id,(e,t)=>{var n=WO();let r;var i=N(n),a=N(i,!0);E(i);var o=F(i,2);E(n),I(e=>{r=W(n,1,`flash-toast svelte-1i257xg`,null,r,{"flash-toast-success":L(t).kind===`success`,"flash-toast-error":L(t).kind===`error`}),G(n,`role`,L(t).kind===`error`?`alert`:`status`),G(n,`aria-live`,L(t).kind===`error`?`assertive`:`polite`),V(a,L(t).text),G(o,`aria-label`,e)},[()=>lT()]),R(`click`,o,()=>UO.dismiss(L(t).id)),Oi(1,n,()=>LO,()=>({y:-24,duration:360,easing:zO})),Oi(2,n,()=>IO,()=>({duration:150})),B(e,n)}),E(n),B(e,n),O()}Vr([`click`]);var qO=z(``);function JO(e,t){D(t,!0);var n=Zr(),r=P(n),i=e=>{var t=qO(),n=F(N(t),2),r=N(n),i=N(r,!0);E(r);var a=F(r,2),o=N(a,!0);E(a),E(n);var s=F(n,2);E(t),I((e,n,r,a)=>{G(t,`aria-label`,e),V(i,n),V(o,r),G(s,`aria-label`,a)},[()=>fT(),()=>hT(),()=>vT(),()=>xT()]),B(e,t)},a=k(()=>TD());H(r,e=>{L(a)&&e(i)}),B(e,n),O()}function YO(e){return String(e||``).split(`,`).map(e=>e.trim()).filter(e=>e)}function XO(e){if(e==null||e===``)return`Not captured`;if(typeof e==`string`){let t=e.trim();if(t.startsWith(`{`)&&t.endsWith(`}`)||t.startsWith(`[`)&&t.endsWith(`]`))try{return JSON.stringify(JSON.parse(t),null,2)}catch{return e}return e}try{return JSON.stringify(e,null,2)}catch{return String(e)}}function ZO(e){return e==null||e===void 0?`-`:e.toLocaleString()}function QO(e){if(e==null)return`---`;let t=Number(e);return Number.isFinite(t)?t>0&&t<1e-4?`<$0.0001`:`$`+t.toFixed(4).replace(/(\.\d{2}\d*?)0+$/,`$1`):`---`}function $O(e){return e==null||e===void 0?`—`:`$`+e.toFixed(2)}function ek(e){return e==null||e===void 0?`—`:e<.01?`$`+e.toFixed(6):`$`+e.toFixed(4)}function tk(e){if(e==null||e===``)return`-`;let t=Number(e);if(!Number.isFinite(t))return`-`;let n=Math.abs(t),r=[{threshold:1e9,suffix:`B`},{threshold:1e6,suffix:`M`},{threshold:1e3,suffix:`K`}];for(let e=0;e=i.threshold){let n=t/i.threshold;return Math.abs(Number(n.toFixed(1)))>=1e3&&e>0&&(i=r[e-1],n=t/i.threshold),n.toFixed(1).replace(/\.0$/,``)+i.suffix}}return String(t)}function nk(e,t){let n=t==null||t===``?NaN:Number(t),r=Number.isFinite(n)?ZO(n):`-`;return String(e||`Tokens`)+`: `+r}function rk(e){return e?typeof e==`string`?e:e.getUTCFullYear()+`-`+String(e.getUTCMonth()+1).padStart(2,`0`)+`-`+String(e.getUTCDate()).padStart(2,`0`):``}function ik(e){if(!e)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:t.getUTCFullYear()+`-`+String(t.getUTCMonth()+1).padStart(2,`0`)+`-`+String(t.getUTCDate()).padStart(2,`0`)}function ak(e){if(!e)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:t.getUTCFullYear()+`-`+String(t.getUTCMonth()+1).padStart(2,`0`)+`-`+String(t.getUTCDate()).padStart(2,`0`)+` `+String(t.getUTCHours()).padStart(2,`0`)+`:`+String(t.getUTCMinutes()).padStart(2,`0`)+`:`+String(t.getUTCSeconds()).padStart(2,`0`)+` UTC`}function ok(e){return String(e&&e.provider||``).trim()}function sk(e){return String(e&&e.provider_name||``).trim()||ok(e)}function ck(e,t){let n=String(t||``).trim();if(!n)return`-`;let r=sk(e);return!r||n===r||n.startsWith(r+`/`)?n:r+`/`+n}function lk(e){return ck(e,e&&e.model)}function uk(e){return ck(e,e&&e.resolved_model)}function dk(e){let t=String(e&&(e.requested_model||e.model)||``).trim();if(!e)return t;let n=String(e.data&&e.data.failover&&e.data.failover.target_model||``).trim();if(n&&n!==t)return t+` ⮕ `+n;if(e.alias_used&&e.resolved_model){let n=uk(e);if(n&&n!==`-`&&n!==t)return t+` ⮕ `+n}return t}var fk=`gomodel_date_range`,pk=1;function mk(e){return/^[1-9]\d*$/.test(String(e??``))}function hk({selectedPreset:e,startKey:t,endKey:n,followsToday:r}){return e&&mk(e)?{v:pk,mode:`preset`,days:String(e)}:e?null:HD(t)&&HD(n)?{v:pk,mode:`custom`,start:t,end:n,follow:r===!0}:null}function gk(e){let t=e;if(typeof e==`string`)try{t=JSON.parse(e)}catch{return null}return!t||typeof t!=`object`?null:t.mode===`preset`?mk(t.days)?{mode:`preset`,days:String(t.days)}:null:t.mode===`custom`&&HD(t.start)&&HD(t.end)&&t.start<=t.end?{mode:`custom`,start:t.start,end:t.end,follow:t.follow===!0}:null}function _k(e,t,n){let r=UD(e,t);return r<1||!HD(n)?{start:e,end:t}:{start:VD(n,-(r-1)),end:n}}var vk=`gomodel_locale`;eo(`custom-dashboard`,{getLocale:()=>Ca(vk)||void 0,setLocale:e=>wa(vk,e)});function yk(){let e=J();document.documentElement.lang=e,document.documentElement.dir=Ra(e)}function bk(e){return typeof Intl.DisplayNames==`function`&&new Intl.DisplayNames([e],{type:`language`}).of(e)||e}function xk(e,t){return new Intl.NumberFormat(J(),t).format(e)}function Sk(e,t){return new Intl.DateTimeFormat(J(),t).format(e)}function Ck(e){return DT({count:Number(e)})}function wk(e,t){return e===t?NT():Sk(new Date(e+`T00:00:00Z`),{day:`numeric`,month:`short`,year:`numeric`,timeZone:`UTC`})}function Tk({selectedPreset:e,startKey:t,endKey:n,todayKey:r}){if(e)return Ck(e);if(HD(t)&&HD(n)){if(t>n)return Ck(`30`);let e=wk(t,r);return t===n?e:IT({start:e,end:wk(n,r)})}return HD(t)?zT({start:wk(t,r)}):Ck(`30`)}function Ek({selectedPreset:e,startKey:t,endKey:n,followsToday:r,todayKey:i}){if(e)return Ck(e);if(!HD(t)||!HD(n)||t>n)return``;let a=UD(t,n);return r||n===i?a===1?NT():Ck(a):AT({count:a})}function Dk(e){switch(e){case`weekly`:return rE();case`monthly`:return oE();case`yearly`:return lE();default:return eE()}}var Ok=6e4,kk=new class{#e=A(M(`30`));get days(){return L(this.#e)}set days(e){j(this.#e,e,!0)}#t=A(M(`30`));get selectedPreset(){return L(this.#t)}set selectedPreset(e){j(this.#t,e,!0)}#n=A(null);get customStartDate(){return L(this.#n)}set customStartDate(e){j(this.#n,e,!0)}#r=A(null);get customEndDate(){return L(this.#r)}set customEndDate(e){j(this.#r,e,!0)}#i=A(!1);get followsToday(){return L(this.#i)}set followsToday(e){j(this.#i,e,!0)}#a=A(`daily`);get interval(){return L(this.#a)}set interval(e){j(this.#a,e,!0)}#o=A(0);get syncTick(){return L(this.#o)}set syncTick(e){j(this.#o,e,!0)}init(){this.restore(),this.syncToToday(),typeof setInterval==`function`&&setInterval(()=>this.syncToToday(),Ok)}queryStr(){return this.customStartDate&&this.customEndDate?`start_date=`+rk(this.customStartDate)+`&end_date=`+rk(this.customEndDate):`days=`+this.days}selectPreset(e){this.selectedPreset=e,this.customStartDate=null,this.customEndDate=null,this.followsToday=!1,this.days=e,this.persist()}selectStart(e){this.selectedPreset=null,this.customStartDate=e,this.customEndDate&&this.customEndDatet.category===e);return t?t.count:0}get filteredModels(){if(!this.filter)return this.models;let e=this.filter.toLowerCase();return this.models.filter(t=>(t.model?.id??``).toLowerCase().includes(e)||(t.provider_name??``).toLowerCase().includes(e)||(t.provider_type??``).toLowerCase().includes(e)||(t.selector??``).toLowerCase().includes(e)||(t.model?.owned_by??``).toLowerCase().includes(e)||(t.model?.metadata?.modes??[]).join(`,`).toLowerCase().includes(e)||(t.model?.metadata?.categories??[]).join(`,`).toLowerCase().includes(e))}},jk=z(``);function Mk(e,t){D(t,!0);var n=Zr(),r=P(n),i=e=>{var t=jk(),n=N(t),r=N(n,!0);E(n);var i=F(n,2),a=N(i,!0);E(i),E(t),I((e,t)=>{V(r,e),V(a,t)},[()=>ww(),()=>JC()]),R(`click`,i,()=>Y.openDialog()),B(e,t)};H(r,e=>{Y.authError&&e(i)}),B(e,n),O()}Vr([`click`]);function Nk(){return{total_requests:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,total_input_cost:null,total_output_cost:null,total_cost:null}}function Pk(){return{summary:{total_hits:0,exact_hits:0,semantic_hits:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,total_saved_cost:null},daily:[]}}var Fk=new class{#e=A(M(Nk()));get summary(){return L(this.#e)}set summary(e){j(this.#e,e,!0)}#t=A(M([]));get daily(){return L(this.#t)}set daily(e){j(this.#t,e,!0)}#n=A(M(Pk()));get cacheOverview(){return L(this.#n)}set cacheOverview(e){j(this.#n,e,!0)}#r=A(!1);get loading(){return L(this.#r)}set loading(e){j(this.#r,e,!0)}#i=null;#a=null;cacheAnalyticsEnabled(){return lO.cacheVisible()}async fetchUsage(){this.#i&&this.#i.abort();let e=new AbortController;this.#i=e,this.loading=!0;try{let t=kk.queryStr()+`&interval=`+kk.interval,[n,r]=await Promise.all([iO(`/admin/usage/summary?`+t,{label:`usage summary`,signal:e.signal}),iO(`/admin/usage/daily?`+t,{label:`usage daily`,signal:e.signal})]);if(n.stale||r.stale||e.signal.aborted)return;if(!n.ok||!r.ok){this.summary=Nk(),this.daily=[],this.cacheOverview=Pk();return}this.summary=n.data||Nk(),this.daily=Array.isArray(r.data)?r.data:[]}catch(e){if(oO(e))return;console.error(`Failed to fetch usage:`,e),this.summary=Nk(),this.daily=[]}finally{this.#i===e&&(this.#i=null,this.loading=!1)}}async fetchCacheOverview(e=``){if(await lO.ensureLoaded(),!this.cacheAnalyticsEnabled()){this.cacheOverview=Pk();return}this.#a&&this.#a.abort();let t=new AbortController;this.#a=t;try{let n=await iO(`/admin/cache/overview?`+(kk.queryStr()+`&interval=`+kk.interval+e),{label:`cache overview`,signal:t.signal});if(n.stale||t.signal.aborted)return;if(!n.ok){this.cacheOverview=Pk();return}let r=n.data&&typeof n.data==`object`?n.data:Pk();r.summary||=Pk().summary,Array.isArray(r.daily)||(r.daily=[]),this.cacheOverview=r}catch(e){if(oO(e))return;console.error(`Failed to fetch cache overview:`,e),this.cacheOverview=Pk()}finally{this.#a===t&&(this.#a=null)}}};function Ik(e,t,n){let r=e.getUTCFullYear(),i=e.getUTCMonth()+t,a=new Date(Date.UTC(r,i,1)),o=new Date(Date.UTC(r,i+1,0)),s=(a.getUTCDay()+6)%7,c=[],l=new Date(Date.UTC(r,i,0));for(let e=s-1;e>=0;e--){let t=l.getUTCDate()-e,a=new Date(Date.UTC(r,i-1,t));c.push({day:t,date:a,current:!1,key:`p-`+n(a)})}for(let e=1;e<=o.getUTCDate();e++){let t=new Date(Date.UTC(r,i,e));c.push({day:e,date:t,current:!0,key:`c-`+n(t)})}let u=42-c.length;for(let e=1;e<=u;e++){let t=new Date(Date.UTC(r,i+1,e));c.push({day:e,date:t,current:!1,key:`n-`+n(t)})}return c}function Lk(e,t,n){let r=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+t,1));return n&&r.getTime()>n.getTime()?e:r}function Rk(e,t){return e.getUTCFullYear()===t.getUTCFullYear()&&e.getUTCMonth()===t.getUTCMonth()}var zk=z(``),Bk=z(``),Vk=z(` `),Hk=z(``),Uk=z(`
                `);function Wk(e,t){D(t,!0);let n=K(t,`offset`,3,0),r=k(()=>Ik(t.calendarMonth,n(),e=>QD.dateToDateKey(e))),i=k(()=>Rk(t.calendarMonth,QD.todayDate())),a=k(()=>Sk(new Date(Date.UTC(t.calendarMonth.getUTCFullYear(),t.calendarMonth.getUTCMonth()+n(),1)),{month:`long`,year:`numeric`,timeZone:`UTC`})),o=Array.from({length:7},(e,t)=>Sk(new Date(Date.UTC(2024,0,1+t)),{weekday:`short`,timeZone:`UTC`})),s=e=>QD.dateToDateKey(e.date),c=e=>s(e)>QD.currentDateKey(),l=e=>e.current&&s(e)===QD.currentDateKey();function u(e,t){let n=t===`start`?kk.rangeStart():kk.rangeEnd();return e.current&&!!n&&s(e)===QD.dateToDateKey(n)}function d(e){let t=kk.rangeStart(),n=kk.rangeEnd();return!e.current||!t||!n?!1:s(e)>=QD.dateToDateKey(t)&&s(e)<=QD.dateToDateKey(n)}var f=Uk(),p=N(f),m=N(p);let h;var g=F(m,2),_=N(g,!0);E(g);var v=F(g,2),y=e=>{B(e,zk())},b=e=>{var n=Bk();I(e=>{n.disabled=L(i),G(n,`aria-label`,e)},[()=>ZT()]),R(`click`,n,function(...e){t.onnext?.apply(this,e)}),B(e,n)};H(v,e=>{n()===-1?e(y):e(b,-1)}),E(p);var x=F(p,2);U(x,21,()=>o,ai,(e,t)=>{var n=Vk(),r=N(n,!0);E(n),I(()=>V(r,L(t))),B(e,n)}),E(x);var S=F(x,2);U(S,21,()=>L(r),e=>e.key,(e,n)=>{var r=Hk(),i=N(r,!0);E(r),I((e,t)=>{W(r,1,e,`svelte-g7ga4u`),r.disabled=t,V(i,L(n).day)},[()=>Pi([`dp-day`,{"other-month":!L(n).current,today:l(L(n)),"range-start":u(L(n),`start`),"range-end":u(L(n),`end`),"in-range":d(L(n)),disabled:c(L(n))}]),()=>c(L(n))||!L(n).current]),R(`click`,r,()=>t.onselect?.(L(n))),B(e,r)}),E(S),E(f),I(e=>{h=W(m,1,`dp-nav-btn svelte-g7ga4u`,null,h,{"dp-nav-prev-mobile":n()!==-1}),G(m,`aria-label`,e),V(_,L(a))},[()=>JT()]),R(`click`,m,function(...e){t.onprev?.apply(this,e)}),B(e,f),O()}Vr([`click`]);var Gk=z(``),Kk=z(`
                `),qk=Yr(``),Jk=Yr(``),Yk=z(`
                `),Xk=z(`
                `);function Zk(e,t){D(t,!0);let n=[`3`,`7`,`14`,`30`,`90`],r=A(!1),i=A(`start`),a=A(M(new Date)),o=A(M({show:!1,x:0,y:0}));function s(){j(r,!L(r)),L(r)&&(kk.syncToToday(),j(a,QD.startOfMonthDate(kk.customEndDate||QD.todayDate()),!0),j(i,`start`))}function c(){j(r,!1),j(o,{show:!1,x:0,y:0},!0)}let l=kk.syncTick;kn(()=>{let e=kk.syncTick;e!==l&&(l=e,t.onchange?.())});function u(e){kk.selectPreset(e),j(i,`start`),t.onchange?.(),c()}let d=()=>j(a,Lk(L(a),-1),!0),f=()=>j(a,Lk(L(a),1,QD.startOfMonthDate(QD.todayDate())),!0);function p(e){let n=new Date(e.date);if(L(i)===`start`){kk.selectStart(n),j(i,`end`),t.onchange?.();return}kk.selectEnd(n),j(i,`start`),t.onchange?.(),c()}var m=Xk(),h=N(m),g=F(N(h),2),_=N(g,!0);E(g);var v=F(g,2);let y;E(h);var b=F(h,2),x=e=>{var t=Kk(),r=N(t);U(r,20,()=>n,e=>e,(e,t)=>{var n=Gk();let r;var i=N(n,!0);E(n),I(e=>{r=W(n,1,`preset-btn svelte-ax7ma4`,null,r,{active:kk.selectedPreset===t}),V(i,e)},[()=>DT({count:Number(t)})]),R(`click`,n,()=>u(t)),B(e,n)}),E(r);var i=F(r,2);U(i,20,()=>[-1,0],e=>e,(e,t)=>{Wk(e,{get calendarMonth(){return L(a)},get offset(){return t},onprev:d,onnext:f,onselect:p})}),E(i),E(t),R(`mousemove`,i,e=>j(o,{show:!0,x:e.clientX,y:e.clientY},!0)),Br(`mouseleave`,i,()=>j(o,{show:!1,x:0,y:0},!0)),B(e,t)};H(b,e=>{L(r)&&e(x)});var S=F(b,2),C=e=>{var t=Yk(),n=N(t),r=e=>{B(e,qk())},a=e=>{B(e,Jk())};H(n,e=>{L(i)===`start`?e(r):e(a,-1)});var s=F(n,2),c=N(s,!0);E(s),E(t),I(e=>{Vi(t,`left:${L(o).x??``}px;top:${L(o).y??``}px`),V(c,e)},[()=>L(i)===`end`?GT():HT()]),B(e,t)};H(S,e=>{L(o).show&&e(C)}),E(m),ji(m,()=>L(r)?yO(c):void 0),I((e,t)=>{G(h,`title`,e),V(_,t),y=W(v,0,`date-picker-chevron svelte-ax7ma4`,null,y,{open:L(r)})},[()=>kk.dateRangeSpanLabel(),()=>kk.dateRangeLabel()]),R(`click`,h,s),B(e,m),O()}Vr([`click`,`mousemove`]);function Qk(e){return e+.5|0}var $k=(e,t,n)=>Math.max(Math.min(e,n),t);function eA(e){return $k(Qk(e*2.55),0,255)}function tA(e){return $k(Qk(e*255),0,255)}function nA(e){return $k(Qk(e/2.55)/100,0,1)}function rA(e){return $k(Qk(e*100),0,100)}var iA={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},aA=[...`0123456789ABCDEF`],oA=e=>aA[e&15],sA=e=>aA[(e&240)>>4]+aA[e&15],cA=e=>(e&240)>>4==(e&15),lA=e=>cA(e.r)&&cA(e.g)&&cA(e.b)&&cA(e.a);function uA(e){var t=e.length,n;return e[0]===`#`&&(t===4||t===5?n={r:255&iA[e[1]]*17,g:255&iA[e[2]]*17,b:255&iA[e[3]]*17,a:t===5?iA[e[4]]*17:255}:(t===7||t===9)&&(n={r:iA[e[1]]<<4|iA[e[2]],g:iA[e[3]]<<4|iA[e[4]],b:iA[e[5]]<<4|iA[e[6]],a:t===9?iA[e[7]]<<4|iA[e[8]]:255})),n}var dA=(e,t)=>e<255?t(e):``;function fA(e){var t=lA(e)?oA:sA;return e?`#`+t(e.r)+t(e.g)+t(e.b)+dA(e.a,t):void 0}var pA=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function mA(e,t,n){let r=t*Math.min(n,1-n),i=(t,i=(t+e/30)%12)=>n-r*Math.max(Math.min(i-3,9-i,1),-1);return[i(0),i(8),i(4)]}function hA(e,t,n){let r=(r,i=(r+e/60)%6)=>n-n*t*Math.max(Math.min(i,4-i,1),0);return[r(5),r(3),r(1)]}function gA(e,t,n){let r=mA(e,1,.5),i;for(t+n>1&&(i=1/(t+n),t*=i,n*=i),i=0;i<3;i++)r[i]*=1-t-n,r[i]+=t;return r}function _A(e,t,n,r,i){return e===i?(t-n)/r+(t.5?l/(2-i-a):l/(i+a),s=_A(t,n,r,l,i),s=s*60+.5),[s|0,c||0,o]}function yA(e,t,n,r){return(Array.isArray(t)?e(t[0],t[1],t[2]):e(t,n,r)).map(tA)}function bA(e,t,n){return yA(mA,e,t,n)}function xA(e,t,n){return yA(gA,e,t,n)}function SA(e,t,n){return yA(hA,e,t,n)}function CA(e){return(e%360+360)%360}function wA(e){let t=pA.exec(e),n=255,r;if(!t)return;t[5]!==r&&(n=t[6]?eA(+t[5]):tA(+t[5]));let i=CA(+t[2]),a=t[3]/100,o=t[4]/100;return r=t[1]===`hwb`?xA(i,a,o):t[1]===`hsv`?SA(i,a,o):bA(i,a,o),{r:r[0],g:r[1],b:r[2],a:n}}function TA(e,t){var n=vA(e);n[0]=CA(n[0]+t),n=bA(n),e.r=n[0],e.g=n[1],e.b=n[2]}function EA(e){if(!e)return;let t=vA(e),n=t[0],r=rA(t[1]),i=rA(t[2]);return e.a<255?`hsla(${n}, ${r}%, ${i}%, ${nA(e.a)})`:`hsl(${n}, ${r}%, ${i}%)`}var DA={x:`dark`,Z:`light`,Y:`re`,X:`blu`,W:`gr`,V:`medium`,U:`slate`,A:`ee`,T:`ol`,S:`or`,B:`ra`,C:`lateg`,D:`ights`,R:`in`,Q:`turquois`,E:`hi`,P:`ro`,O:`al`,N:`le`,M:`de`,L:`yello`,F:`en`,K:`ch`,G:`arks`,H:`ea`,I:`ightg`,J:`wh`},OA={OiceXe:`f0f8ff`,antiquewEte:`faebd7`,aqua:`ffff`,aquamarRe:`7fffd4`,azuY:`f0ffff`,beige:`f5f5dc`,bisque:`ffe4c4`,black:`0`,blanKedOmond:`ffebcd`,Xe:`ff`,XeviTet:`8a2be2`,bPwn:`a52a2a`,burlywood:`deb887`,caMtXe:`5f9ea0`,KartYuse:`7fff00`,KocTate:`d2691e`,cSO:`ff7f50`,cSnflowerXe:`6495ed`,cSnsilk:`fff8dc`,crimson:`dc143c`,cyan:`ffff`,xXe:`8b`,xcyan:`8b8b`,xgTMnPd:`b8860b`,xWay:`a9a9a9`,xgYF:`6400`,xgYy:`a9a9a9`,xkhaki:`bdb76b`,xmagFta:`8b008b`,xTivegYF:`556b2f`,xSange:`ff8c00`,xScEd:`9932cc`,xYd:`8b0000`,xsOmon:`e9967a`,xsHgYF:`8fbc8f`,xUXe:`483d8b`,xUWay:`2f4f4f`,xUgYy:`2f4f4f`,xQe:`ced1`,xviTet:`9400d3`,dAppRk:`ff1493`,dApskyXe:`bfff`,dimWay:`696969`,dimgYy:`696969`,dodgerXe:`1e90ff`,fiYbrick:`b22222`,flSOwEte:`fffaf0`,foYstWAn:`228b22`,fuKsia:`ff00ff`,gaRsbSo:`dcdcdc`,ghostwEte:`f8f8ff`,gTd:`ffd700`,gTMnPd:`daa520`,Way:`808080`,gYF:`8000`,gYFLw:`adff2f`,gYy:`808080`,honeyMw:`f0fff0`,hotpRk:`ff69b4`,RdianYd:`cd5c5c`,Rdigo:`4b0082`,ivSy:`fffff0`,khaki:`f0e68c`,lavFMr:`e6e6fa`,lavFMrXsh:`fff0f5`,lawngYF:`7cfc00`,NmoncEffon:`fffacd`,ZXe:`add8e6`,ZcSO:`f08080`,Zcyan:`e0ffff`,ZgTMnPdLw:`fafad2`,ZWay:`d3d3d3`,ZgYF:`90ee90`,ZgYy:`d3d3d3`,ZpRk:`ffb6c1`,ZsOmon:`ffa07a`,ZsHgYF:`20b2aa`,ZskyXe:`87cefa`,ZUWay:`778899`,ZUgYy:`778899`,ZstAlXe:`b0c4de`,ZLw:`ffffe0`,lime:`ff00`,limegYF:`32cd32`,lRF:`faf0e6`,magFta:`ff00ff`,maPon:`800000`,VaquamarRe:`66cdaa`,VXe:`cd`,VScEd:`ba55d3`,VpurpN:`9370db`,VsHgYF:`3cb371`,VUXe:`7b68ee`,VsprRggYF:`fa9a`,VQe:`48d1cc`,VviTetYd:`c71585`,midnightXe:`191970`,mRtcYam:`f5fffa`,mistyPse:`ffe4e1`,moccasR:`ffe4b5`,navajowEte:`ffdead`,navy:`80`,Tdlace:`fdf5e6`,Tive:`808000`,TivedBb:`6b8e23`,Sange:`ffa500`,SangeYd:`ff4500`,ScEd:`da70d6`,pOegTMnPd:`eee8aa`,pOegYF:`98fb98`,pOeQe:`afeeee`,pOeviTetYd:`db7093`,papayawEp:`ffefd5`,pHKpuff:`ffdab9`,peru:`cd853f`,pRk:`ffc0cb`,plum:`dda0dd`,powMrXe:`b0e0e6`,purpN:`800080`,YbeccapurpN:`663399`,Yd:`ff0000`,Psybrown:`bc8f8f`,PyOXe:`4169e1`,saddNbPwn:`8b4513`,sOmon:`fa8072`,sandybPwn:`f4a460`,sHgYF:`2e8b57`,sHshell:`fff5ee`,siFna:`a0522d`,silver:`c0c0c0`,skyXe:`87ceeb`,UXe:`6a5acd`,UWay:`708090`,UgYy:`708090`,snow:`fffafa`,sprRggYF:`ff7f`,stAlXe:`4682b4`,tan:`d2b48c`,teO:`8080`,tEstN:`d8bfd8`,tomato:`ff6347`,Qe:`40e0d0`,viTet:`ee82ee`,JHt:`f5deb3`,wEte:`ffffff`,wEtesmoke:`f5f5f5`,Lw:`ffff00`,LwgYF:`9acd32`};function kA(){let e={},t=Object.keys(OA),n=Object.keys(DA),r,i,a,o,s;for(r=0;r>16&255,a>>8&255,a&255]}return e}var AA;function jA(e){AA||(AA=kA(),AA.transparent=[0,0,0,0]);let t=AA[e.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:t.length===4?t[3]:255}}var MA=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function NA(e){let t=MA.exec(e),n=255,r,i,a;if(t){if(t[7]!==r){let e=+t[7];n=t[8]?eA(e):$k(e*255,0,255)}return r=+t[1],i=+t[3],a=+t[5],r=255&(t[2]?eA(r):$k(r,0,255)),i=255&(t[4]?eA(i):$k(i,0,255)),a=255&(t[6]?eA(a):$k(a,0,255)),{r,g:i,b:a,a:n}}}function PA(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${nA(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}var FA=e=>e<=.0031308?e*12.92:e**(1/2.4)*1.055-.055,IA=e=>e<=.04045?e/12.92:((e+.055)/1.055)**2.4;function LA(e,t,n){let r=IA(nA(e.r)),i=IA(nA(e.g)),a=IA(nA(e.b));return{r:tA(FA(r+n*(IA(nA(t.r))-r))),g:tA(FA(i+n*(IA(nA(t.g))-i))),b:tA(FA(a+n*(IA(nA(t.b))-a))),a:e.a+n*(t.a-e.a)}}function RA(e,t,n){if(e){let r=vA(e);r[t]=Math.max(0,Math.min(r[t]+r[t]*n,t===0?360:1)),r=bA(r),e.r=r[0],e.g=r[1],e.b=r[2]}}function zA(e,t){return e&&Object.assign(t||{},e)}function BA(e){var t={r:0,g:0,b:0,a:255};return Array.isArray(e)?e.length>=3&&(t={r:e[0],g:e[1],b:e[2],a:255},e.length>3&&(t.a=tA(e[3]))):(t=zA(e,{r:0,g:0,b:0,a:1}),t.a=tA(t.a)),t}function VA(e){return e.charAt(0)===`r`?NA(e):wA(e)}var HA=class e{constructor(t){if(t instanceof e)return t;let n=typeof t,r;n===`object`?r=BA(t):n===`string`&&(r=uA(t)||jA(t)||VA(t)),this._rgb=r,this._valid=!!r}get valid(){return this._valid}get rgb(){var e=zA(this._rgb);return e&&(e.a=nA(e.a)),e}set rgb(e){this._rgb=BA(e)}rgbString(){return this._valid?PA(this._rgb):void 0}hexString(){return this._valid?fA(this._rgb):void 0}hslString(){return this._valid?EA(this._rgb):void 0}mix(e,t){if(e){let n=this.rgb,r=e.rgb,i,a=t===i?.5:t,o=2*a-1,s=n.a-r.a,c=((o*s===-1?o:(o+s)/(1+o*s))+1)/2;i=1-c,n.r=255&c*n.r+i*r.r+.5,n.g=255&c*n.g+i*r.g+.5,n.b=255&c*n.b+i*r.b+.5,n.a=a*n.a+(1-a)*r.a,this.rgb=n}return this}interpolate(e,t){return e&&(this._rgb=LA(this._rgb,e._rgb,t)),this}clone(){return new e(this.rgb)}alpha(e){return this._rgb.a=tA(e),this}clearer(e){let t=this._rgb;return t.a*=1-e,this}greyscale(){let e=this._rgb;return e.r=e.g=e.b=Qk(e.r*.3+e.g*.59+e.b*.11),this}opaquer(e){let t=this._rgb;return t.a*=1+e,this}negate(){let e=this._rgb;return e.r=255-e.r,e.g=255-e.g,e.b=255-e.b,this}lighten(e){return RA(this._rgb,2,e),this}darken(e){return RA(this._rgb,2,-e),this}saturate(e){return RA(this._rgb,1,e),this}desaturate(e){return RA(this._rgb,1,-e),this}rotate(e){return TA(this._rgb,e),this}};function UA(){}var WA=(()=>{let e=0;return()=>e++})();function GA(e){return e==null}function KA(e){if(Array.isArray&&Array.isArray(e))return!0;let t=Object.prototype.toString.call(e);return t.slice(0,7)===`[object`&&t.slice(-6)===`Array]`}function qA(e){return e!==null&&Object.prototype.toString.call(e)===`[object Object]`}function JA(e){return(typeof e==`number`||e instanceof Number)&&isFinite(+e)}function YA(e,t){return JA(e)?e:t}function XA(e,t){return e===void 0?t:e}var ZA=(e,t)=>typeof e==`string`&&e.endsWith(`%`)?parseFloat(e)/100:+e/t,QA=(e,t)=>typeof e==`string`&&e.endsWith(`%`)?parseFloat(e)/100*t:+e;function $A(e,t,n){if(e&&typeof e.call==`function`)return e.apply(n,t)}function ej(e,t,n,r){let i,a,o;if(KA(e))if(a=e.length,r)for(i=a-1;i>=0;i--)t.call(n,e[i],i);else for(i=0;ie,x:e=>e.x,y:e=>e.y};function lj(e){let t=e.split(`.`),n=[],r=``;for(let e of t)r+=e,r.endsWith(`\\`)?r=r.slice(0,-1)+`.`:(n.push(r),r=``);return n}function uj(e){let t=lj(e);return e=>{for(let n of t){if(n===``)break;e&&=e[n]}return e}}function dj(e,t){return(cj[t]||(cj[t]=uj(t)))(e)}function fj(e){return e.charAt(0).toUpperCase()+e.slice(1)}var pj=e=>e!==void 0,mj=e=>typeof e==`function`,hj=(e,t)=>{if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0};function gj(e){return e.type===`mouseup`||e.type===`click`||e.type===`contextmenu`}var _j=Math.PI,vj=2*_j,yj=vj+_j,bj=1/0,xj=_j/180,Sj=_j/2,Cj=_j/4,wj=_j*2/3,Tj=Math.log10,Ej=Math.sign;function Dj(e,t,n){return Math.abs(e-t)e-t).pop(),t}function Aj(e){return typeof e==`symbol`||typeof e==`object`&&!!e&&!(Symbol.toPrimitive in e||`toString`in e||`valueOf`in e)}function jj(e){return!Aj(e)&&!isNaN(parseFloat(e))&&isFinite(e)}function Mj(e,t){let n=Math.round(e);return n-t<=e&&n+t>=e}function Nj(e,t,n){let r,i,a;for(r=0,i=e.length;rc&&l=Math.min(t,n)-r&&e<=Math.max(t,n)+r}function Gj(e,t,n){n||=(n=>e[n]1;)a=i+r>>1,n(a)?i=a:r=a;return{lo:i,hi:r}}var Kj=(e,t,n,r)=>Gj(e,n,r?r=>{let i=e[r][t];return ie[r][t]Gj(e,n,r=>e[r][t]>=n);function Jj(e,t,n){let r=0,i=e.length;for(;rr&&e[i-1]>n;)i--;return r>0||i{let n=`_onData`+fj(t),r=e[t];Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value(...t){let i=r.apply(this,t);return e._chartjs.listeners.forEach(e=>{typeof e[n]==`function`&&e[n](...t)}),i}})})}function Zj(e,t){let n=e._chartjs;if(!n)return;let r=n.listeners,i=r.indexOf(t);i!==-1&&r.splice(i,1),!(r.length>0)&&(Yj.forEach(t=>{delete e[t]}),delete e._chartjs)}function Qj(e){let t=new Set(e);return t.size===e.length?e:Array.from(t)}var $j=function(){return typeof window>`u`?function(e){return e()}:window.requestAnimationFrame}();function eM(e,t){let n=[],r=!1;return function(...i){n=i,r||(r=!0,$j.call(window,()=>{r=!1,e.apply(t,n)}))}}function tM(e,t){let n;return function(...r){return t?(clearTimeout(n),n=setTimeout(e,t,r)):e.apply(this,r),t}}var nM=e=>e===`start`?`left`:e===`end`?`right`:`center`,rM=(e,t,n)=>e===`start`?t:e===`end`?n:(t+n)/2,iM=(e,t,n,r)=>e===(r?`left`:`right`)?n:e===`center`?(t+n)/2:t;function aM(e,t,n){let r=t.length,i=0,a=r;if(e._sorted){let{iScale:o,vScale:s,_parsed:c}=e,l=e.dataset&&e.dataset.options?e.dataset.options.spanGaps:null,u=o.axis,{min:d,max:f,minDefined:p,maxDefined:m}=o.getUserBounds();if(p){if(i=Math.min(Kj(c,u,d).lo,n?r:Kj(t,u,o.getPixelForValue(d)).lo),l){let e=c.slice(0,i+1).reverse().findIndex(e=>!GA(e[s.axis]));i-=Math.max(0,e)}i=Hj(i,0,r-1)}if(m){let e=Math.max(Kj(c,o.axis,f,!0).hi+1,n?0:Kj(t,u,o.getPixelForValue(f),!0).hi+1);if(l){let t=c.slice(e-1).findIndex(e=>!GA(e[s.axis]));e+=Math.max(0,t)}a=Hj(e,i,r)-i}else a=r-i}return{start:i,count:a}}function oM(e){let{xScale:t,yScale:n,_scaleRanges:r}=e,i={xmin:t.min,xmax:t.max,ymin:n.min,ymax:n.max};if(!r)return e._scaleRanges=i,!0;let a=r.xmin!==t.min||r.xmax!==t.max||r.ymin!==n.min||r.ymax!==n.max;return Object.assign(r,i),a}var sM=e=>e===0||e===1,cM=(e,t,n)=>-(2**(10*--e)*Math.sin((e-t)*vj/n)),lM=(e,t,n)=>2**(-10*e)*Math.sin((e-t)*vj/n)+1,uM={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>-e*(e-2),easeInOutQuad:e=>(e/=.5)<1?.5*e*e:-.5*(--e*(e-2)-1),easeInCubic:e=>e*e*e,easeOutCubic:e=>--e*e*e+1,easeInOutCubic:e=>(e/=.5)<1?.5*e*e*e:.5*((e-=2)*e*e+2),easeInQuart:e=>e*e*e*e,easeOutQuart:e=>-(--e*e*e*e-1),easeInOutQuart:e=>(e/=.5)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2),easeInQuint:e=>e*e*e*e*e,easeOutQuint:e=>--e*e*e*e*e+1,easeInOutQuint:e=>(e/=.5)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2),easeInSine:e=>-Math.cos(e*Sj)+1,easeOutSine:e=>Math.sin(e*Sj),easeInOutSine:e=>-.5*(Math.cos(_j*e)-1),easeInExpo:e=>e===0?0:2**(10*(e-1)),easeOutExpo:e=>e===1?1:-(2**(-10*e))+1,easeInOutExpo:e=>sM(e)?e:e<.5?.5*2**(10*(e*2-1)):.5*(-(2**(-10*(e*2-1)))+2),easeInCirc:e=>e>=1?e:-(Math.sqrt(1-e*e)-1),easeOutCirc:e=>Math.sqrt(1- --e*e),easeInOutCirc:e=>(e/=.5)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1),easeInElastic:e=>sM(e)?e:cM(e,.075,.3),easeOutElastic:e=>sM(e)?e:lM(e,.075,.3),easeInOutElastic(e){let t=.1125,n=.45;return sM(e)?e:e<.5?.5*cM(e*2,t,n):.5+.5*lM(e*2-1,t,n)},easeInBack(e){return e*e*(2.70158*e-1.70158)},easeOutBack(e){return--e*e*(2.70158*e+1.70158)+1},easeInOutBack(e){let t=1.70158;return(e/=.5)<1?.5*(e*e*(((t*=1.525)+1)*e-t)):.5*((e-=2)*e*(((t*=1.525)+1)*e+t)+2)},easeInBounce:e=>1-uM.easeOutBounce(1-e),easeOutBounce(e){let t=7.5625,n=2.75;return e<1/n?t*e*e:e<2/n?t*(e-=1.5/n)*e+.75:e<2.5/n?t*(e-=2.25/n)*e+.9375:t*(e-=2.625/n)*e+.984375},easeInOutBounce:e=>e<.5?uM.easeInBounce(e*2)*.5:uM.easeOutBounce(e*2-1)*.5+.5};function dM(e){if(e&&typeof e==`object`){let t=e.toString();return t===`[object CanvasPattern]`||t===`[object CanvasGradient]`}return!1}function fM(e){return dM(e)?e:new HA(e)}function pM(e){return dM(e)?e:new HA(e).saturate(.5).darken(.1).hexString()}var mM=[`x`,`y`,`borderWidth`,`radius`,`tension`],hM=[`color`,`borderColor`,`backgroundColor`];function gM(e){e.set(`animation`,{delay:void 0,duration:1e3,easing:`easeOutQuart`,fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),e.describe(`animation`,{_fallback:!1,_indexable:!1,_scriptable:e=>e!==`onProgress`&&e!==`onComplete`&&e!==`fn`}),e.set(`animations`,{colors:{type:`color`,properties:hM},numbers:{type:`number`,properties:mM}}),e.describe(`animations`,{_fallback:`animation`}),e.set(`transitions`,{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:`transparent`},visible:{type:`boolean`,duration:0}}},hide:{animations:{colors:{to:`transparent`},visible:{type:`boolean`,easing:`linear`,fn:e=>e|0}}}})}function _M(e){e.set(`layout`,{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}var vM=new Map;function yM(e,t){t||={};let n=e+JSON.stringify(t),r=vM.get(n);return r||(r=new Intl.NumberFormat(e,t),vM.set(n,r)),r}function bM(e,t,n){return yM(t,n).format(e)}var xM={values(e){return KA(e)?e:``+e},numeric(e,t,n){if(e===0)return`0`;let r=this.chart.options.locale,i,a=e;if(n.length>1){let t=Math.max(Math.abs(n[0].value),Math.abs(n[n.length-1].value));(t<1e-4||t>0x38d7ea4c68000)&&(i=`scientific`),a=SM(e,n)}let o=Tj(Math.abs(a)),s=isNaN(o)?1:Math.max(Math.min(-1*Math.floor(o),20),0),c={notation:i,minimumFractionDigits:s,maximumFractionDigits:s};return Object.assign(c,this.options.ticks.format),bM(e,r,c)},logarithmic(e,t,n){if(e===0)return`0`;let r=n[t].significand||e/10**Math.floor(Tj(e));return[1,2,3,5,10,15].includes(r)||t>.8*n.length?xM.numeric.call(this,e,t,n):``}};function SM(e,t){let n=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(n)>=1&&e!==Math.floor(e)&&(n=e-Math.floor(e)),n}var CM={formatters:xM};function wM(e){e.set(`scale`,{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:`ticks`,clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(e,t)=>t.lineWidth,tickColor:(e,t)=>t.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:``,padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:``,padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:CM.formatters.values,minor:{},major:{},align:`center`,crossAlign:`near`,showLabelBackdrop:!1,backdropColor:`rgba(255, 255, 255, 0.75)`,backdropPadding:2}}),e.route(`scale.ticks`,`color`,``,`color`),e.route(`scale.grid`,`color`,``,`borderColor`),e.route(`scale.border`,`color`,``,`borderColor`),e.route(`scale.title`,`color`,``,`color`),e.describe(`scale`,{_fallback:!1,_scriptable:e=>!e.startsWith(`before`)&&!e.startsWith(`after`)&&e!==`callback`&&e!==`parser`,_indexable:e=>e!==`borderDash`&&e!==`tickBorderDash`&&e!==`dash`}),e.describe(`scales`,{_fallback:`scale`}),e.describe(`scale.ticks`,{_scriptable:e=>e!==`backdropPadding`&&e!==`callback`,_indexable:e=>e!==`backdropPadding`})}var TM=Object.create(null),EM=Object.create(null);function DM(e,t){if(!t)return e;let n=t.split(`.`);for(let t=0,r=n.length;te.chart.platform.getDevicePixelRatio(),this.elements={},this.events=[`mousemove`,`mouseout`,`click`,`touchstart`,`touchmove`],this.font={family:`'Helvetica Neue', 'Helvetica', 'Arial', sans-serif`,size:12,style:`normal`,lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(e,t)=>pM(t.backgroundColor),this.hoverBorderColor=(e,t)=>pM(t.borderColor),this.hoverColor=(e,t)=>pM(t.color),this.indexAxis=`x`,this.interaction={mode:`nearest`,intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(e),this.apply(t)}set(e,t){return OM(this,e,t)}get(e){return DM(this,e)}describe(e,t){return OM(EM,e,t)}override(e,t){return OM(TM,e,t)}route(e,t,n,r){let i=DM(this,e),a=DM(this,n),o=`_`+t;Object.defineProperties(i,{[o]:{value:i[t],writable:!0},[t]:{enumerable:!0,get(){let e=this[o],t=a[r];return qA(e)?Object.assign({},t,e):XA(e,t)},set(e){this[o]=e}}})}apply(e){e.forEach(e=>e(this))}}({_scriptable:e=>!e.startsWith(`on`),_indexable:e=>e!==`events`,hover:{_fallback:`interaction`},interaction:{_scriptable:!1,_indexable:!1}},[gM,_M,wM]);function AM(e){return!e||GA(e.size)||GA(e.family)?null:(e.style?e.style+` `:``)+(e.weight?e.weight+` `:``)+e.size+`px `+e.family}function jM(e,t,n,r,i){let a=t[i];return a||(a=t[i]=e.measureText(i).width,n.push(i)),a>r&&(r=a),r}function MM(e,t,n,r){r||={};let i=r.data=r.data||{},a=r.garbageCollect=r.garbageCollect||[];r.font!==t&&(i=r.data={},a=r.garbageCollect=[],r.font=t),e.save(),e.font=t;let o=0,s=n.length,c,l,u,d,f;for(c=0;cn.length){for(c=0;c0&&e.stroke()}}function LM(e,t,n){return n||=.5,!t||e&&e.x>t.left-n&&e.xt.top-n&&e.y0&&a.strokeColor!==``,c,l;for(e.save(),e.font=i.string,HM(e,a),c=0;c+e||0;function ZM(e,t){let n={},r=qA(t),i=r?Object.keys(t):t,a=qA(e)?r?n=>XA(e[n],e[t[n]]):t=>e[t]:()=>e;for(let e of i)n[e]=XM(a(e));return n}function QM(e){return ZM(e,{top:`y`,right:`x`,bottom:`y`,left:`x`})}function $M(e){return ZM(e,[`topLeft`,`topRight`,`bottomLeft`,`bottomRight`])}function eN(e){let t=QM(e);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function tN(e,t){e||={},t||=kM.font;let n=XA(e.size,t.size);typeof n==`string`&&(n=parseInt(n,10));let r=XA(e.style,t.style);r&&!(``+r).match(JM)&&(console.warn(`Invalid font style specified: "`+r+`"`),r=void 0);let i={family:XA(e.family,t.family),lineHeight:YM(XA(e.lineHeight,t.lineHeight),n),size:n,style:r,weight:XA(e.weight,t.weight),string:``};return i.string=AM(i),i}function nN(e,t,n,r){let i=!0,a,o,s;for(a=0,o=e.length;an&&e===0?0:e+t;return{min:o(r,-Math.abs(a)),max:o(i,a)}}function iN(e,t){return Object.assign(Object.create(e),t)}function aN(e,t=[``],n,r,i=()=>e[0]){let a=n||e;return r===void 0&&(r=xN(`_fallback`,e)),new Proxy({[Symbol.toStringTag]:`Object`,_cacheable:!0,_scopes:e,_rootScopes:a,_fallback:r,_getTarget:i,override:n=>aN([n,...e],t,a,r)},{deleteProperty(t,n){return delete t[n],delete t._keys,delete e[0][n],!0},get(n,r){return uN(n,r,()=>bN(r,t,e,n))},getOwnPropertyDescriptor(e,t){return Reflect.getOwnPropertyDescriptor(e._scopes[0],t)},getPrototypeOf(){return Reflect.getPrototypeOf(e[0])},has(e,t){return SN(e).includes(t)},ownKeys(e){return SN(e)},set(e,t,n){let r=e._storage||=i();return e[t]=r[t]=n,delete e._keys,!0}})}function oN(e,t,n,r){let i={_cacheable:!1,_proxy:e,_context:t,_subProxy:n,_stack:new Set,_descriptors:sN(e,r),setContext:t=>oN(e,t,n,r),override:i=>oN(e.override(i),t,n,r)};return new Proxy(i,{deleteProperty(t,n){return delete t[n],delete e[n],!0},get(e,t,n){return uN(e,t,()=>dN(e,t,n))},getOwnPropertyDescriptor(t,n){return t._descriptors.allKeys?Reflect.has(e,n)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(e,n)},getPrototypeOf(){return Reflect.getPrototypeOf(e)},has(t,n){return Reflect.has(e,n)},ownKeys(){return Reflect.ownKeys(e)},set(t,n,r){return e[n]=r,delete t[n],!0}})}function sN(e,t={scriptable:!0,indexable:!0}){let{_scriptable:n=t.scriptable,_indexable:r=t.indexable,_allKeys:i=t.allKeys}=e;return{allKeys:i,scriptable:n,indexable:r,isScriptable:mj(n)?n:()=>n,isIndexable:mj(r)?r:()=>r}}var cN=(e,t)=>e?e+fj(t):t,lN=(e,t)=>qA(t)&&e!==`adapters`&&(Object.getPrototypeOf(t)===null||t.constructor===Object);function uN(e,t,n){if(Object.prototype.hasOwnProperty.call(e,t)||t===`constructor`)return e[t];let r=n();return e[t]=r,r}function dN(e,t,n){let{_proxy:r,_context:i,_subProxy:a,_descriptors:o}=e,s=r[t];return mj(s)&&o.isScriptable(t)&&(s=fN(t,s,e,n)),KA(s)&&s.length&&(s=pN(t,s,e,o.isIndexable)),lN(t,s)&&(s=oN(s,i,a&&a[t],o)),s}function fN(e,t,n,r){let{_proxy:i,_context:a,_subProxy:o,_stack:s}=n;if(s.has(e))throw Error(`Recursion detected: `+Array.from(s).join(`->`)+`->`+e);s.add(e);let c=t(a,o||r);return s.delete(e),lN(e,c)&&(c=_N(i._scopes,i,e,c)),c}function pN(e,t,n,r){let{_proxy:i,_context:a,_subProxy:o,_descriptors:s}=n;if(a.index!==void 0&&r(e))return t[a.index%t.length];if(qA(t[0])){let n=t,r=i._scopes.filter(e=>e!==n);t=[];for(let c of n){let n=_N(r,i,e,c);t.push(oN(n,a,o&&o[e],s))}}return t}function mN(e,t,n){return mj(e)?e(t,n):e}var hN=(e,t)=>e===!0?t:typeof e==`string`?dj(t,e):void 0;function gN(e,t,n,r,i){for(let a of t){let t=hN(n,a);if(t){e.add(t);let a=mN(t._fallback,n,i);if(a!==void 0&&a!==n&&a!==r)return a}else if(t===!1&&r!==void 0&&n!==r)return null}return!1}function _N(e,t,n,r){let i=t._rootScopes,a=mN(t._fallback,n,r),o=[...e,...i],s=new Set;s.add(r);let c=vN(s,o,n,a||n,r);return c===null||a!==void 0&&a!==n&&(c=vN(s,o,a,c,r),c===null)?!1:aN(Array.from(s),[``],i,a,()=>yN(t,n,r))}function vN(e,t,n,r,i){for(;n;)n=gN(e,t,n,r,i);return n}function yN(e,t,n){let r=e._getTarget();t in r||(r[t]={});let i=r[t];return KA(i)&&qA(n)?n:i||{}}function bN(e,t,n,r){let i;for(let a of t)if(i=xN(cN(a,e),n),i!==void 0)return lN(e,i)?_N(n,r,e,i):i}function xN(e,t){for(let n of t){if(!n)continue;let t=n[e];if(t!==void 0)return t}}function SN(e){let t=e._keys;return t||=e._keys=CN(e._scopes),t}function CN(e){let t=new Set;for(let n of e)for(let e of Object.keys(n).filter(e=>!e.startsWith(`_`)))t.add(e);return Array.from(t)}function wN(e,t,n,r){let{iScale:i}=e,{key:a=`r`}=this._parsing,o=Array(r),s,c,l,u;for(s=0,c=r;ste===`x`?`y`:`x`;function ON(e,t,n,r){let i=e.skip?t:e,a=t,o=n.skip?t:n,s=Rj(a,i),c=Rj(o,a),l=s/(s+c),u=c/(s+c);l=isNaN(l)?0:l,u=isNaN(u)?0:u;let d=r*l,f=r*u;return{previous:{x:a.x-d*(o.x-i.x),y:a.y-d*(o.y-i.y)},next:{x:a.x+f*(o.x-i.x),y:a.y+f*(o.y-i.y)}}}function kN(e,t,n){let r=e.length,i,a,o,s,c,l=EN(e,0);for(let u=0;u!e.skip)),t.cubicInterpolationMode===`monotone`)jN(e,i);else{let n=r?e[e.length-1]:e[0];for(a=0,o=e.length;ae.ownerDocument.defaultView.getComputedStyle(e,null);function zN(e,t){return RN(e).getPropertyValue(t)}var BN=[`top`,`right`,`bottom`,`left`];function VN(e,t,n){let r={};n=n?`-`+n:``;for(let i=0;i<4;i++){let a=BN[i];r[a]=parseFloat(e[t+`-`+a+n])||0}return r.width=r.left+r.right,r.height=r.top+r.bottom,r}var HN=(e,t,n)=>(e>0||t>0)&&(!n||!n.shadowRoot);function UN(e,t){let n=e.touches,r=n&&n.length?n[0]:e,{offsetX:i,offsetY:a}=r,o=!1,s,c;if(HN(i,a,e.target))s=i,c=a;else{let e=t.getBoundingClientRect();s=r.clientX-e.left,c=r.clientY-e.top,o=!0}return{x:s,y:c,box:o}}function WN(e,t){if(`native`in e)return e;let{canvas:n,currentDevicePixelRatio:r}=t,i=RN(n),a=i.boxSizing===`border-box`,o=VN(i,`padding`),s=VN(i,`border`,`width`),{x:c,y:l,box:u}=UN(e,n),d=o.left+(u&&s.left),f=o.top+(u&&s.top),{width:p,height:m}=t;return a&&(p-=o.width+s.width,m-=o.height+s.height),{x:Math.round((c-d)/p*n.width/r),y:Math.round((l-f)/m*n.height/r)}}function GN(e,t,n){let r,i;if(t===void 0||n===void 0){let a=e&&IN(e);if(!a)t=e.clientWidth,n=e.clientHeight;else{let e=a.getBoundingClientRect(),o=RN(a),s=VN(o,`border`,`width`),c=VN(o,`padding`);t=e.width-c.width-s.width,n=e.height-c.height-s.height,r=LN(o.maxWidth,a,`clientWidth`),i=LN(o.maxHeight,a,`clientHeight`)}}return{width:t,height:n,maxWidth:r||bj,maxHeight:i||bj}}var KN=e=>Math.round(e*10)/10;function qN(e,t,n,r){let i=RN(e),a=VN(i,`margin`),o=LN(i.maxWidth,e,`clientWidth`)||bj,s=LN(i.maxHeight,e,`clientHeight`)||bj,c=GN(e,t,n),{width:l,height:u}=c;if(i.boxSizing===`content-box`){let e=VN(i,`border`,`width`),t=VN(i,`padding`);l-=t.width+e.width,u-=t.height+e.height}return l=Math.max(0,l-a.width),u=Math.max(0,r?l/r:u-a.height),l=KN(Math.min(l,o,c.maxWidth)),u=KN(Math.min(u,s,c.maxHeight)),l&&!u&&(u=KN(l/2)),(t!==void 0||n!==void 0)&&r&&c.height&&u>c.height&&(u=c.height,l=KN(Math.floor(u*r))),{width:l,height:u}}function JN(e,t,n){let r=t||1,i=KN(e.height*r),a=KN(e.width*r);e.height=KN(e.height),e.width=KN(e.width);let o=e.canvas;return o.style&&(n||!o.style.height&&!o.style.width)&&(o.style.height=`${e.height}px`,o.style.width=`${e.width}px`),e.currentDevicePixelRatio!==r||o.height!==i||o.width!==a?(e.currentDevicePixelRatio=r,o.height=i,o.width=a,e.ctx.setTransform(r,0,0,r,0,0),!0):!1}var YN=function(){let e=!1;try{let t={get passive(){return e=!0,!1}};FN()&&(window.addEventListener(`test`,null,t),window.removeEventListener(`test`,null,t))}catch{}return e}();function XN(e,t){let n=zN(e,t),r=n&&n.match(/^(\d+)(\.\d+)?px$/);return r?+r[1]:void 0}function ZN(e,t,n,r){return{x:e.x+n*(t.x-e.x),y:e.y+n*(t.y-e.y)}}function QN(e,t,n,r){return{x:e.x+n*(t.x-e.x),y:r===`middle`?n<.5?e.y:t.y:r===`after`?n<1?e.y:t.y:n>0?t.y:e.y}}function $N(e,t,n,r){let i={x:e.cp2x,y:e.cp2y},a={x:t.cp1x,y:t.cp1y},o=ZN(e,i,n),s=ZN(i,a,n),c=ZN(a,t,n);return ZN(ZN(o,s,n),ZN(s,c,n),n)}var eP=function(e,t){return{x(n){return e+e+t-n},setWidth(e){t=e},textAlign(e){return e===`center`?e:e===`right`?`left`:`right`},xPlus(e,t){return e-t},leftForLtr(e,t){return e-t}}},tP=function(){return{x(e){return e},setWidth(e){},textAlign(e){return e},xPlus(e,t){return e+t},leftForLtr(e,t){return e}}};function nP(e,t,n){return e?eP(t,n):tP()}function rP(e,t){let n,r;(t===`ltr`||t===`rtl`)&&(n=e.canvas.style,r=[n.getPropertyValue(`direction`),n.getPropertyPriority(`direction`)],n.setProperty(`direction`,t,`important`),e.prevTextDirection=r)}function iP(e,t){t!==void 0&&(delete e.prevTextDirection,e.canvas.style.setProperty(`direction`,t[0],t[1]))}function aP(e){return e===`angle`?{between:Vj,compare:zj,normalize:Bj}:{between:Wj,compare:(e,t)=>e-t,normalize:e=>e}}function oP({start:e,end:t,count:n,loop:r,style:i}){return{start:e%n,end:t%n,loop:r&&(t-e+1)%n===0,style:i}}function sP(e,t,n){let{property:r,start:i,end:a}=n,{between:o,normalize:s}=aP(r),c=t.length,{start:l,end:u,loop:d}=e,f,p;if(d){for(l+=c,u+=c,f=0,p=c;fc(i,y,_)&&s(i,y)!==0,x=()=>s(a,_)===0||c(a,y,_),S=()=>h||b(),C=()=>!h||x();for(let e=u,n=u;e<=d;++e)v=t[e%o],!v.skip&&(_=l(v[r]),_!==y&&(h=c(_,i,a),g===null&&S()&&(g=s(_,i)===0?e:n),g!==null&&C()&&(m.push(oP({start:g,end:e,loop:f,count:o,style:p})),g=null),n=e,y=_));return g!==null&&m.push(oP({start:g,end:d,loop:f,count:o,style:p})),m}function lP(e,t){let n=[],r=e.segments;for(let i=0;ii&&e[a%t].skip;)a--;return a%=t,{start:i,end:a}}function dP(e,t,n,r){let i=e.length,a=[],o=t,s=e[t],c;for(c=t+1;c<=n;++c){let n=e[c%i];n.skip||n.stop?s.skip||(r=!1,a.push({start:t%i,end:(c-1)%i,loop:r}),t=o=n.stop?c:null):(o=c,s.skip&&(t=c)),s=n}return o!==null&&a.push({start:t%i,end:o%i,loop:r}),a}function fP(e,t){let n=e.points,r=e.options.spanGaps,i=n.length;if(!i)return[];let a=!!e._loop,{start:o,end:s}=uP(n,i,a,r);return r===!0?pP(e,[{start:o,end:s,loop:a}],n,t):pP(e,dP(n,o,sr({chart:e,initial:t.initial,numSteps:a,currentStep:Math.min(n-t.start,a)}))}_refresh(){this._request||=(this._running=!0,$j.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(e=Date.now()){let t=0;this._charts.forEach((n,r)=>{if(!n.running||!n.items.length)return;let i=n.items,a=i.length-1,o=!1,s;for(;a>=0;--a)s=i[a],s._active?(s._total>n.duration&&(n.duration=s._total),s.tick(e),o=!0):(i[a]=i[i.length-1],i.pop());o&&(r.draw(),this._notify(r,n,e,`progress`)),i.length||(n.running=!1,this._notify(r,n,e,`complete`),n.initial=!1),t+=i.length}),this._lastDate=e,t===0&&(this._running=!1)}_getAnims(e){let t=this._charts,n=t.get(e);return n||(n={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},t.set(e,n)),n}listen(e,t,n){this._getAnims(e).listeners[t].push(n)}add(e,t){!t||!t.length||this._getAnims(e).items.push(...t)}has(e){return this._getAnims(e).items.length>0}start(e){let t=this._charts.get(e);t&&(t.running=!0,t.start=Date.now(),t.duration=t.items.reduce((e,t)=>Math.max(e,t._duration),0),this._refresh())}running(e){if(!this._running)return!1;let t=this._charts.get(e);return!(!t||!t.running||!t.items.length)}stop(e){let t=this._charts.get(e);if(!t||!t.items.length)return;let n=t.items,r=n.length-1;for(;r>=0;--r)n[r].cancel();t.items=[],this._notify(e,t,Date.now(),`complete`)}remove(e){return this._charts.delete(e)}},xP=`transparent`,SP={boolean(e,t,n){return n>.5?t:e},color(e,t,n){let r=fM(e||xP),i=r.valid&&fM(t||xP);return i&&i.valid?i.mix(r,n).hexString():t},number(e,t,n){return e+(t-e)*n}},CP=class{constructor(e,t,n,r){let i=t[n];r=nN([e.to,r,i,e.from]);let a=nN([e.from,i,r]);this._active=!0,this._fn=e.fn||SP[e.type||typeof a],this._easing=uM[e.easing]||uM.linear,this._start=Math.floor(Date.now()+(e.delay||0)),this._duration=this._total=Math.floor(e.duration),this._loop=!!e.loop,this._target=t,this._prop=n,this._from=a,this._to=r,this._promises=void 0}active(){return this._active}update(e,t,n){if(this._active){this._notify(!1);let r=this._target[this._prop],i=n-this._start,a=this._duration-i;this._start=n,this._duration=Math.floor(Math.max(a,e.duration)),this._total+=i,this._loop=!!e.loop,this._to=nN([e.to,t,r,e.from]),this._from=nN([e.from,r,t])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(e){let t=e-this._start,n=this._duration,r=this._prop,i=this._from,a=this._loop,o=this._to,s;if(this._active=i!==o&&(a||t1?2-s:s,s=this._easing(Math.min(1,Math.max(0,s))),this._target[r]=this._fn(i,o,s)}wait(){let e=this._promises||=[];return new Promise((t,n)=>{e.push({res:t,rej:n})})}_notify(e){let t=e?`res`:`rej`,n=this._promises||[];for(let e=0;e{let i=e[r];if(!qA(i))return;let a={};for(let e of t)a[e]=i[e];(KA(i.properties)&&i.properties||[r]).forEach(e=>{(e===r||!n.has(e))&&n.set(e,a)})})}_animateOptions(e,t){let n=t.options,r=EP(e,n);if(!r)return[];let i=this._createAnimations(r,n);return n.$shared&&TP(e.options.$animations,n).then(()=>{e.options=n},()=>{}),i}_createAnimations(e,t){let n=this._properties,r=[],i=e.$animations||={},a=Object.keys(t),o=Date.now(),s;for(s=a.length-1;s>=0;--s){let c=a[s];if(c.charAt(0)===`$`)continue;if(c===`options`){r.push(...this._animateOptions(e,t));continue}let l=t[c],u=i[c],d=n.get(c);if(u)if(d&&u.active()){u.update(d,l,o);continue}else u.cancel();if(!d||!d.duration){e[c]=l;continue}i[c]=u=new CP(d,e,c,l),r.push(u)}return r}update(e,t){if(this._properties.size===0){Object.assign(e,t);return}let n=this._createAnimations(e,t);if(n.length)return bP.add(this._chart,n),!0}};function TP(e,t){let n=[],r=Object.keys(t);for(let t=0;t0||!n&&t<0)return i.index}return null}function RP(e,t){let{chart:n,_cachedMeta:r}=e,i=n._stacks||={},{iScale:a,vScale:o,index:s}=r,c=a.axis,l=o.axis,u=PP(a,o,r),d=t.length,f;for(let e=0;en[e].axis===t).shift()}function BP(e,t){return iN(e,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:`default`,type:`dataset`})}function VP(e,t,n){return iN(e,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:n,index:t,mode:`default`,type:`data`})}function HP(e,t){let n=e.controller.index,r=e.vScale&&e.vScale.axis;if(r){t||=e._parsed;for(let e of t){let t=e._stacks;if(!t||t[r]===void 0||t[r][n]===void 0)return;delete t[r][n],t[r]._visualValues!==void 0&&t[r]._visualValues[n]!==void 0&&delete t[r]._visualValues[n]}}}var UP=e=>e===`reset`||e===`none`,WP=(e,t)=>t?e:Object.assign({},e),GP=(e,t,n)=>e&&!t.hidden&&t._stacked&&{keys:AP(n,!0),values:null},KP=class{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(e,t){this.chart=e,this._ctx=e.ctx,this.index=t,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){let e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=NP(e.vScale,e),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled(`filler`)&&console.warn(`Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options`)}updateIndex(e){this.index!==e&&HP(this._cachedMeta),this.index=e}linkScales(){let e=this.chart,t=this._cachedMeta,n=this.getDataset(),r=(e,t,n,r)=>e===`x`?t:e===`r`?r:n,i=t.xAxisID=XA(n.xAxisID,zP(e,`x`)),a=t.yAxisID=XA(n.yAxisID,zP(e,`y`)),o=t.rAxisID=XA(n.rAxisID,zP(e,`r`)),s=t.indexAxis,c=t.iAxisID=r(s,i,a,o),l=t.vAxisID=r(s,a,i,o);t.xScale=this.getScaleForId(i),t.yScale=this.getScaleForId(a),t.rScale=this.getScaleForId(o),t.iScale=this.getScaleForId(c),t.vScale=this.getScaleForId(l)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){let t=this._cachedMeta;return e===t.iScale?t.vScale:t.iScale}reset(){this._update(`reset`)}_destroy(){let e=this._cachedMeta;this._data&&Zj(this._data,this),e._stacked&&HP(e)}_dataCheck(){let e=this.getDataset(),t=e.data||=[],n=this._data;if(qA(t)){let e=this._cachedMeta;this._data=MP(t,e)}else if(n!==t){if(n){Zj(n,this);let e=this._cachedMeta;HP(e),e._parsed=[]}t&&Object.isExtensible(t)&&Xj(t,this),this._syncList=[],this._data=t}}addElements(){let e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){let t=this._cachedMeta,n=this.getDataset(),r=!1;this._dataCheck();let i=t._stacked;t._stacked=NP(t.vScale,t),t.stack!==n.stack&&(r=!0,HP(t),t.stack=n.stack),this._resyncElements(e),(r||i!==t._stacked)&&(RP(this,t._parsed),t._stacked=NP(t.vScale,t))}configure(){let e=this.chart.config,t=e.datasetScopeKeys(this._type),n=e.getOptionScopes(this.getDataset(),t,!0);this.options=e.createResolver(n,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,t){let{_cachedMeta:n,_data:r}=this,{iScale:i,_stacked:a}=n,o=i.axis,s=e===0&&t===r.length||n._sorted,c=e>0&&n._parsed[e-1],l,u,d;if(this._parsing===!1)n._parsed=r,n._sorted=!0,d=r;else{d=KA(r[e])?this.parseArrayData(n,r,e,t):qA(r[e])?this.parseObjectData(n,r,e,t):this.parsePrimitiveData(n,r,e,t);let i=()=>u[o]===null||c&&u[o]t||u=0;--d)if(!p()){this.updateRangeFromParsed(c,e,f,s);break}}return c}getAllParsedValues(e){let t=this._cachedMeta._parsed,n=[],r,i,a;for(r=0,i=t.length;r=0&&ethis.getContext(n,r,t),u);return p.$shared&&(p.$shared=s,i[a]=Object.freeze(WP(p,s))),p}_resolveAnimations(e,t,n){let r=this.chart,i=this._cachedDataOpts,a=`animation-${t}`,o=i[a];if(o)return o;let s;if(r.options.animation!==!1){let r=this.chart.config,i=r.datasetAnimationScopeKeys(this._type,t),a=r.getOptionScopes(this.getDataset(),i);s=r.createResolver(a,this.getContext(e,n,t))}let c=new wP(r,s&&s.animations);return s&&s._cacheable&&(i[a]=Object.freeze(c)),c}getSharedOptions(e){if(e.$shared)return this._sharedOptions||=Object.assign({},e)}includeOptions(e,t){return!t||UP(e)||this.chart._animationsDisabled}_getSharedOptions(e,t){let n=this.resolveDataElementOptions(e,t),r=this._sharedOptions,i=this.getSharedOptions(n),a=this.includeOptions(t,i)||i!==r;return this.updateSharedOptions(i,t,n),{sharedOptions:i,includeOptions:a}}updateElement(e,t,n,r){UP(r)?Object.assign(e,n):this._resolveAnimations(t,r).update(e,n)}updateSharedOptions(e,t,n){e&&!UP(t)&&this._resolveAnimations(void 0,t).update(e,n)}_setStyle(e,t,n,r){e.active=r;let i=this.getStyle(t,r);this._resolveAnimations(t,n,r).update(e,{options:!r&&this.getSharedOptions(i)||i})}removeHoverStyle(e,t,n){this._setStyle(e,n,`active`,!1)}setHoverStyle(e,t,n){this._setStyle(e,n,`active`,!0)}_removeDatasetHoverStyle(){let e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,`active`,!1)}_setDatasetHoverStyle(){let e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,`active`,!0)}_resyncElements(e){let t=this._data,n=this._cachedMeta.data;for(let[e,t,n]of this._syncList)this[e](t,n);this._syncList=[];let r=n.length,i=t.length,a=Math.min(i,r);a&&this.parse(0,a),i>r?this._insertElements(r,i-r,e):i{for(e.length+=t,o=e.length-1;o>=a;o--)e[o]=e[o-t]};for(s(i),o=e;oe-t))}return e._cache.$bar}function JP(e){let t=e.iScale,n=qP(t,e.type),r=t._length,i,a,o,s,c=()=>{o===32767||o===-32768||(pj(s)&&(r=Math.min(r,Math.abs(o-s)||r)),s=o)};for(i=0,a=n.length;i0?i[e-1]:null,s=eMath.abs(s)&&(c=s,l=o),t[n.axis]=l,t._custom={barStart:c,barEnd:l,start:i,end:a,min:o,max:s}}function QP(e,t,n,r){return KA(e)?ZP(e,t,n,r):t[n.axis]=n.parse(e,r),t}function $P(e,t,n,r){let i=e.iScale,a=e.vScale,o=i.getLabels(),s=i===a,c=[],l,u,d,f;for(l=n,u=n+r;l=n?1:-1):Ej(e)}function nF(e){let t,n,r,i,a;return e.horizontal?(t=e.base>e.x,n=`left`,r=`right`):(t=e.basee.controller.options.grouped),i=n.options.stacked,a=[],o=this._cachedMeta.controller.getParsed(t),s=o&&o[n.axis],c=e=>{let t=e._parsed.find(e=>e[n.axis]===s),r=t&&t[e.vScale.axis];if(GA(r)||isNaN(r))return!0};for(let n of r)if(!(t!==void 0&&c(n))&&((i===!1||a.indexOf(n.stack)===-1||i===void 0&&n.stack===void 0)&&a.push(n.stack),n.index===e))break;return a.length||a.push(void 0),a}_getStackCount(e){return this._getStacks(void 0,e).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){let e=this.chart.scales,t=this.chart.options.indexAxis;return Object.keys(e).filter(n=>e[n].axis===t).shift()}_getAxis(){let e={},t=this.getFirstScaleIdForIndexAxis();for(let n of this.chart.data.datasets)e[XA(this.chart.options.indexAxis===`x`?n.xAxisID:n.yAxisID,t)]=!0;return Object.keys(e)}_getStackIndex(e,t,n){let r=this._getStacks(e,n),i=t===void 0?-1:r.indexOf(t);return i===-1?r.length-1:i}_getRuler(){let e=this.options,t=this._cachedMeta,n=t.iScale,r=[],i,a;for(i=0,a=t.data.length;i=0;--n)t=Math.max(t,e[n].size(this.resolveDataElementOptions(n))/2);return t>0&&t}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart.data.labels||[],{xScale:r,yScale:i}=t,a=this.getParsed(e),o=r.getLabelForValue(a.x),s=i.getLabelForValue(a.y),c=a._custom;return{label:n[e]||``,value:`(`+o+`, `+s+(c?`, `+c:``)+`)`}}update(e){let t=this._cachedMeta.data;this.updateElements(t,0,t.length,e)}updateElements(e,t,n,r){let i=r===`reset`,{iScale:a,vScale:o}=this._cachedMeta,{sharedOptions:s,includeOptions:c}=this._getSharedOptions(t,r),l=a.axis,u=o.axis;for(let d=t;dVj(e,s,c,!0)?1:Math.max(t,t*n,r,r*n),m=(e,t,r)=>Vj(e,s,c,!0)?-1:Math.min(t,t*n,r,r*n),h=p(0,l,d),g=p(Sj,u,f),_=m(_j,l,d),v=m(_j+Sj,u,f);r=(h-_)/2,i=(g-v)/2,a=-(h+_)/2,o=-(g+v)/2}return{ratioX:r,ratioY:i,offsetX:a,offsetY:o}}var dF=class extends KP{static id=`doughnut`;static defaults={datasetElementType:!1,dataElementType:`arc`,animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:`number`,properties:[`circumference`,`endAngle`,`innerRadius`,`outerRadius`,`startAngle`,`x`,`y`,`offset`,`borderWidth`,`spacing`]}},cutout:`50%`,rotation:0,circumference:360,radius:`100%`,spacing:0,indexAxis:`r`};static descriptors={_scriptable:e=>e!==`spacing`,_indexable:e=>e!==`spacing`&&!e.startsWith(`borderDash`)&&!e.startsWith(`hoverBorderDash`)};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){let t=e.data,{labels:{pointStyle:n,textAlign:r,color:i,useBorderRadius:a,borderRadius:o}}=e.legend.options;return t.labels.length&&t.datasets.length?t.labels.map((t,s)=>{let c=e.getDatasetMeta(0).controller.getStyle(s);return{text:t,fillStyle:c.backgroundColor,fontColor:i,hidden:!e.getDataVisibility(s),lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:c.borderWidth,strokeStyle:c.borderColor,textAlign:r,pointStyle:n,borderRadius:a&&(o||c.borderRadius),index:s}}):[]}},onClick(e,t,n){n.chart.toggleDataVisibility(t.index),n.chart.update()}}}};constructor(e,t){super(e,t),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(e,t){let n=this.getDataset().data,r=this._cachedMeta;if(this._parsing===!1)r._parsed=n;else{let i=e=>+n[e];if(qA(n[e])){let{key:e=`value`}=this._parsing;i=t=>+dj(n[t],e)}let a,o;for(a=e,o=e+t;a0&&!isNaN(e)?Math.abs(e)/t*vj:0}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart,r=n.data.labels||[],i=bM(t._parsed[e],n.options.locale);return{label:r[e]||``,value:i}}getMaxBorderWidth(e){let t=0,n=this.chart,r,i,a,o,s;if(!e){for(r=0,i=n.data.datasets.length;r0&&this.getParsed(t-1);for(let n=0;n=_){v.skip=!0;continue}let b=this.getParsed(n),x=GA(b[f]),S=v[d]=a.getPixelForValue(b[d],n),C=v[f]=i||x?o.getBasePixel():o.getPixelForValue(s?this.applyStack(o,b,s):b[f],n);v.skip=isNaN(S)||isNaN(C)||x,v.stop=n>0&&Math.abs(b[d]-y[d])>h,m&&(v.parsed=b,v.raw=c.data[n]),u&&(v.options=l||this.resolveDataElementOptions(n,p.active?`active`:r)),g||this.updateElement(p,n,v,r),y=b}}getMaxOverflow(){let e=this._cachedMeta,t=e.dataset,n=t.options&&t.options.borderWidth||0,r=e.data||[];if(!r.length)return n;let i=r[0].size(this.resolveDataElementOptions(0)),a=r[r.length-1].size(this.resolveDataElementOptions(r.length-1));return Math.max(n,i,a)/2}draw(){let e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}},pF=class extends KP{static id=`polarArea`;static defaults={dataElementType:`arc`,animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:`number`,properties:[`x`,`y`,`startAngle`,`endAngle`,`innerRadius`,`outerRadius`]}},indexAxis:`r`,startAngle:0};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){let t=e.data;if(t.labels.length&&t.datasets.length){let{labels:{pointStyle:n,color:r}}=e.legend.options;return t.labels.map((t,i)=>{let a=e.getDatasetMeta(0).controller.getStyle(i);return{text:t,fillStyle:a.backgroundColor,strokeStyle:a.borderColor,fontColor:r,lineWidth:a.borderWidth,pointStyle:n,hidden:!e.getDataVisibility(i),index:i}})}return[]}},onClick(e,t,n){n.chart.toggleDataVisibility(t.index),n.chart.update()}}},scales:{r:{type:`radialLinear`,angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(e,t){super(e,t),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart,r=n.data.labels||[],i=bM(t._parsed[e].r,n.options.locale);return{label:r[e]||``,value:i}}parseObjectData(e,t,n,r){return wN.bind(this)(e,t,n,r)}update(e){let t=this._cachedMeta.data;this._updateRadius(),this.updateElements(t,0,t.length,e)}getMinMax(){let e=this._cachedMeta,t={min:1/0,max:-1/0};return e.data.forEach((e,n)=>{let r=this.getParsed(n).r;!isNaN(r)&&this.chart.getDataVisibility(n)&&(rt.max&&(t.max=r))}),t}_updateRadius(){let e=this.chart,t=e.chartArea,n=e.options,r=Math.min(t.right-t.left,t.bottom-t.top),i=Math.max(r/2,0),a=(i-Math.max(n.cutoutPercentage?i/100*n.cutoutPercentage:1,0))/e.getVisibleDatasetCount();this.outerRadius=i-a*this.index,this.innerRadius=this.outerRadius-a}updateElements(e,t,n,r){let i=r===`reset`,a=this.chart,o=a.options.animation,s=this._cachedMeta.rScale,c=s.xCenter,l=s.yCenter,u=s.getIndexAngle(0)-.5*_j,d=u,f,p=360/this.countVisibleElements();for(f=0;f{!isNaN(this.getParsed(n).r)&&this.chart.getDataVisibility(n)&&t++}),t}_computeAngle(e,t,n){return this.chart.getDataVisibility(e)?Pj(this.resolveDataElementOptions(e,t).angle||n):0}},mF=Object.freeze({__proto__:null,BarController:cF,BubbleController:lF,DoughnutController:dF,LineController:fF,PieController:class extends dF{static id=`pie`;static defaults={cutout:0,rotation:0,circumference:360,radius:`100%`}},PolarAreaController:pF,RadarController:class extends KP{static id=`radar`;static defaults={datasetElementType:`line`,dataElementType:`point`,indexAxis:`r`,showLine:!0,elements:{line:{fill:`start`}}};static overrides={aspectRatio:1,scales:{r:{type:`radialLinear`}}};getLabelAndValue(e){let t=this._cachedMeta.vScale,n=this.getParsed(e);return{label:t.getLabels()[e],value:``+t.getLabelForValue(n[t.axis])}}parseObjectData(e,t,n,r){return wN.bind(this)(e,t,n,r)}update(e){let t=this._cachedMeta,n=t.dataset,r=t.data||[],i=t.iScale.getLabels();if(n.points=r,e!==`resize`){let t=this.resolveDatasetElementOptions(e);this.options.showLine||(t.borderWidth=0);let a={_loop:!0,_fullLoop:i.length===r.length,options:t};this.updateElement(n,void 0,a,e)}this.updateElements(r,0,r.length,e)}updateElements(e,t,n,r){let i=this._cachedMeta.rScale,a=r===`reset`;for(let o=t;o0&&this.getParsed(t-1);for(let l=t;l0&&Math.abs(n[f]-v[f])>g,h&&(m.parsed=n,m.raw=c.data[l]),d&&(m.options=u||this.resolveDataElementOptions(l,t.active?`active`:r)),_||this.updateElement(t,l,m,r),v=n}this.updateSharedOptions(u,r,l)}getMaxOverflow(){let e=this._cachedMeta,t=e.data||[];if(!this.options.showLine){let e=0;for(let n=t.length-1;n>=0;--n)e=Math.max(e,t[n].size(this.resolveDataElementOptions(n))/2);return e>0&&e}let n=e.dataset,r=n.options&&n.options.borderWidth||0;if(!t.length)return r;let i=t[0].size(this.resolveDataElementOptions(0)),a=t[t.length-1].size(this.resolveDataElementOptions(t.length-1));return Math.max(r,i,a)/2}}});function hF(){throw Error(`This method is not implemented: Check that a complete date adapter is provided.`)}var gF={_date:class e{static override(t){Object.assign(e.prototype,t)}options;constructor(e){this.options=e||{}}init(){}formats(){return hF()}parse(){return hF()}format(){return hF()}add(){return hF()}diff(){return hF()}startOf(){return hF()}endOf(){return hF()}}};function _F(e,t,n,r){let{controller:i,data:a,_sorted:o}=e,s=i._cachedMeta.iScale,c=e.dataset&&e.dataset.options?e.dataset.options.spanGaps:null;if(s&&t===s.axis&&t!==`r`&&o&&a.length){let o=s._reversePixels?qj:Kj;if(!r){let r=o(a,t,n);if(c){let{vScale:t}=i._cachedMeta,{_parsed:n}=e,a=n.slice(0,r.lo+1).reverse().findIndex(e=>!GA(e[t.axis]));r.lo-=Math.max(0,a);let o=n.slice(r.hi).findIndex(e=>!GA(e[t.axis]));r.hi+=Math.max(0,o)}return r}else if(i._sharedOptions){let e=a[0],r=typeof e.getRange==`function`&&e.getRange(t);if(r){let e=o(a,t,n-r),i=o(a,t,n+r);return{lo:e.lo,hi:i.hi}}}}return{lo:0,hi:a.length-1}}function vF(e,t,n,r,i){let a=e.getSortedVisibleDatasetMetas(),o=n[t];for(let e=0,n=a.length;e{e[o]&&e[o](t[n],i)&&(a.push({element:e,datasetIndex:r,index:c}),s||=e.inRange(t.x,t.y,i))}),r&&!s?[]:a}var TF={evaluateInteractionItems:vF,modes:{index(e,t,n,r){let i=WN(t,e),a=n.axis||`x`,o=n.includeInvisible||!1,s=n.intersect?bF(e,i,a,r,o):CF(e,i,a,!1,r,o),c=[];return s.length?(e.getSortedVisibleDatasetMetas().forEach(e=>{let t=s[0].index,n=e.data[t];n&&!n.skip&&c.push({element:n,datasetIndex:e.index,index:t})}),c):[]},dataset(e,t,n,r){let i=WN(t,e),a=n.axis||`xy`,o=n.includeInvisible||!1,s=n.intersect?bF(e,i,a,r,o):CF(e,i,a,!1,r,o);if(s.length>0){let t=s[0].datasetIndex,n=e.getDatasetMeta(t).data;s=[];for(let e=0;ee.pos===t)}function OF(e,t){return e.filter(e=>EF.indexOf(e.pos)===-1&&e.box.axis===t)}function kF(e,t){return e.sort((e,n)=>{let r=t?n:e,i=t?e:n;return r.weight===i.weight?r.index-i.index:r.weight-i.weight})}function AF(e){let t=[],n,r,i,a,o,s;for(n=0,r=(e||[]).length;ne.box.fullSize),!0),r=kF(DF(t,`left`),!0),i=kF(DF(t,`right`)),a=kF(DF(t,`top`),!0),o=kF(DF(t,`bottom`)),s=OF(t,`x`),c=OF(t,`y`);return{fullSize:n,leftAndTop:r.concat(a),rightAndBottom:i.concat(c).concat(o).concat(s),chartArea:DF(t,`chartArea`),vertical:r.concat(i).concat(c),horizontal:a.concat(o).concat(s)}}function PF(e,t,n,r){return Math.max(e[n],t[n])+Math.max(e[r],t[r])}function FF(e,t){e.top=Math.max(e.top,t.top),e.left=Math.max(e.left,t.left),e.bottom=Math.max(e.bottom,t.bottom),e.right=Math.max(e.right,t.right)}function IF(e,t,n,r){let{pos:i,box:a}=n,o=e.maxPadding;if(!qA(i)){n.size&&(e[i]-=n.size);let t=r[n.stack]||{size:0,count:1};t.size=Math.max(t.size,n.horizontal?a.height:a.width),n.size=t.size/t.count,e[i]+=n.size}a.getPadding&&FF(o,a.getPadding());let s=Math.max(0,t.outerWidth-PF(o,e,`left`,`right`)),c=Math.max(0,t.outerHeight-PF(o,e,`top`,`bottom`)),l=s!==e.w,u=c!==e.h;return e.w=s,e.h=c,n.horizontal?{same:l,other:u}:{same:u,other:l}}function LF(e){let t=e.maxPadding;function n(n){let r=Math.max(t[n]-e[n],0);return e[n]+=r,r}e.y+=n(`top`),e.x+=n(`left`),n(`right`),n(`bottom`)}function RF(e,t){let n=t.maxPadding;function r(e){let r={left:0,top:0,right:0,bottom:0};return e.forEach(e=>{r[e]=Math.max(t[e],n[e])}),r}return r(e?[`left`,`right`]:[`top`,`bottom`])}function zF(e,t,n,r){let i=[],a,o,s,c,l,u;for(a=0,o=e.length,l=0;a{typeof e.beforeLayout==`function`&&e.beforeLayout()});let u=c.reduce((e,t)=>t.box.options&&t.box.options.display===!1?e:e+1,0)||1,d=Object.freeze({outerWidth:t,outerHeight:n,padding:i,availableWidth:a,availableHeight:o,vBoxMaxWidth:a/2/u,hBoxMaxHeight:o/2}),f=Object.assign({},i);FF(f,eN(r));let p=Object.assign({maxPadding:f,w:a,h:o,x:i.left,y:i.top},i),m=MF(c.concat(l),d);zF(s.fullSize,p,d,m),zF(c,p,d,m),zF(l,p,d,m)&&zF(c,p,d,m),LF(p),VF(s.leftAndTop,p,d,m),p.x+=p.w,p.y+=p.h,VF(s.rightAndBottom,p,d,m),e.chartArea={left:p.left,top:p.top,right:p.left+p.w,bottom:p.top+p.h,height:p.h,width:p.w},ej(s.chartArea,t=>{let n=t.box;Object.assign(n,e.chartArea),n.update(p.w,p.h,{left:0,top:0,right:0,bottom:0})})}},UF=class{acquireContext(e,t){}releaseContext(e){return!1}addEventListener(e,t,n){}removeEventListener(e,t,n){}getDevicePixelRatio(){return 1}getMaximumSize(e,t,n,r){return t=Math.max(0,t||e.width),n||=e.height,{width:t,height:Math.max(0,r?Math.floor(t/r):n)}}isAttached(e){return!0}updateConfig(e){}},WF=class extends UF{acquireContext(e){return e&&e.getContext&&e.getContext(`2d`)||null}updateConfig(e){e.options.animation=!1}},GF=`$chartjs`,KF={touchstart:`mousedown`,touchmove:`mousemove`,touchend:`mouseup`,pointerenter:`mouseenter`,pointerdown:`mousedown`,pointermove:`mousemove`,pointerup:`mouseup`,pointerleave:`mouseout`,pointerout:`mouseout`},qF=e=>e===null||e===``;function JF(e,t){let n=e.style,r=e.getAttribute(`height`),i=e.getAttribute(`width`);if(e[GF]={initial:{height:r,width:i,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||`block`,n.boxSizing=n.boxSizing||`border-box`,qF(i)){let t=XN(e,`width`);t!==void 0&&(e.width=t)}if(qF(r))if(e.style.height===``)e.height=e.width/(t||2);else{let t=XN(e,`height`);t!==void 0&&(e.height=t)}return e}var YF=YN?{passive:!0}:!1;function XF(e,t,n){e&&e.addEventListener(t,n,YF)}function ZF(e,t,n){e&&e.canvas&&e.canvas.removeEventListener(t,n,YF)}function QF(e,t){let n=KF[e.type]||e.type,{x:r,y:i}=WN(e,t);return{type:n,chart:t,native:e,x:r===void 0?null:r,y:i===void 0?null:i}}function $F(e,t){for(let n of e)if(n===t||n.contains(t))return!0}function eI(e,t,n){let r=e.canvas,i=new MutationObserver(e=>{let t=!1;for(let n of e)t||=$F(n.addedNodes,r),t&&=!$F(n.removedNodes,r);t&&n()});return i.observe(document,{childList:!0,subtree:!0}),i}function tI(e,t,n){let r=e.canvas,i=new MutationObserver(e=>{let t=!1;for(let n of e)t||=$F(n.removedNodes,r),t&&=!$F(n.addedNodes,r);t&&n()});return i.observe(document,{childList:!0,subtree:!0}),i}var nI=new Map,rI=0;function iI(){let e=window.devicePixelRatio;e!==rI&&(rI=e,nI.forEach((t,n)=>{n.currentDevicePixelRatio!==e&&t()}))}function aI(e,t){nI.size||window.addEventListener(`resize`,iI),nI.set(e,t)}function oI(e){nI.delete(e),nI.size||window.removeEventListener(`resize`,iI)}function sI(e,t,n){let r=e.canvas,i=r&&IN(r);if(!i)return;let a=eM((e,t)=>{let r=i.clientWidth;n(e,t),r{let t=e[0],n=t.contentRect.width,r=t.contentRect.height;n===0&&r===0||a(n,r)});return o.observe(i),aI(e,a),o}function cI(e,t,n){n&&n.disconnect(),t===`resize`&&oI(e)}function lI(e,t,n){let r=e.canvas,i=eM(t=>{e.ctx!==null&&n(QF(t,e))},e);return XF(r,t,i),i}var uI=class extends UF{acquireContext(e,t){let n=e&&e.getContext&&e.getContext(`2d`);return n&&n.canvas===e?(JF(e,t),n):null}releaseContext(e){let t=e.canvas;if(!t[GF])return!1;let n=t[GF].initial;[`height`,`width`].forEach(e=>{let r=n[e];GA(r)?t.removeAttribute(e):t.setAttribute(e,r)});let r=n.style||{};return Object.keys(r).forEach(e=>{t.style[e]=r[e]}),t.width=t.width,delete t[GF],!0}addEventListener(e,t,n){this.removeEventListener(e,t);let r=e.$proxies||={};r[t]=({attach:eI,detach:tI,resize:sI}[t]||lI)(e,t,n)}removeEventListener(e,t){let n=e.$proxies||={},r=n[t];r&&(({attach:cI,detach:cI,resize:cI}[t]||ZF)(e,t,r),n[t]=void 0)}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(e,t,n,r){return qN(e,t,n,r)}isAttached(e){let t=e&&IN(e);return!!(t&&t.isConnected)}};function dI(e){return!FN()||typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas?WF:uI}var fI=class{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(e){let{x:t,y:n}=this.getProps([`x`,`y`],e);return{x:t,y:n}}hasValue(){return jj(this.x)&&jj(this.y)}getProps(e,t){let n=this.$animations;if(!t||!n)return this;let r={};return e.forEach(e=>{r[e]=n[e]&&n[e].active()?n[e]._to:this[e]}),r}};function pI(e,t){let n=e.options.ticks,r=mI(e),i=Math.min(n.maxTicksLimit||r,r),a=n.major.enabled?gI(t):[],o=a.length,s=a[0],c=a[o-1],l=[];if(o>i)return _I(t,l,a,o/i),l;let u=hI(a,t,i);if(o>0){let e,n,r=o>1?Math.round((c-s)/(o-1)):null;for(vI(t,l,u,GA(r)?0:s-r,s),e=0,n=o-1;ei)return t}return Math.max(i,1)}function gI(e){let t=[],n,r;for(n=0,r=e.length;ne===`left`?`right`:e===`right`?`left`:e,xI=(e,t,n)=>t===`top`||t===`left`?e[t]+n:e[t]-n,SI=(e,t)=>Math.min(t||e,e);function CI(e,t){let n=[],r=e.length/t,i=e.length,a=0;for(;ao+s)))return c}function TI(e,t){ej(e,e=>{let n=e.gc,r=n.length/2,i;if(r>t){for(i=0;in?n:t,n=r&&t>n?t:n,{min:YA(t,YA(n,t)),max:YA(n,YA(t,n))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){let e=this.chart.data;return this.options.labels||(this.isHorizontal()?e.xLabels:e.yLabels)||e.labels||[]}getLabelItems(e=this.chart.chartArea){return this._labelItems||=this._computeLabelItems(e)}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){$A(this.options.beforeUpdate,[this])}update(e,t,n){let{beginAtZero:r,grace:i,ticks:a}=this.options,o=a.sampleSize;this.beforeUpdate(),this.maxWidth=e,this.maxHeight=t,this._margins=n=Object.assign({left:0,right:0,top:0,bottom:0},n),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+n.left+n.right:this.height+n.top+n.bottom,this._dataLimitsCached||=(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=rN(this,i,r),!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();let s=o=i||n<=1||!this.isHorizontal()){this.labelRotation=r;return}let l=this._getLabelSizes(),u=l.widest.width,d=l.highest.height,f=Hj(this.chart.width-u,0,this.maxWidth);o=e.offset?this.maxWidth/n:f/(n-1),u+6>o&&(o=f/(n-(e.offset?.5:1)),s=this.maxHeight-EI(e.grid)-t.padding-DI(e.title,this.chart.options.font),c=Math.sqrt(u*u+d*d),a=Fj(Math.min(Math.asin(Hj((l.highest.height+6)/o,-1,1)),Math.asin(Hj(s/c,-1,1))-Math.asin(Hj(d/c,-1,1)))),a=Math.max(r,Math.min(i,a))),this.labelRotation=a}afterCalculateLabelRotation(){$A(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){$A(this.options.beforeFit,[this])}fit(){let e={width:0,height:0},{chart:t,options:{ticks:n,title:r,grid:i}}=this,a=this._isVisible(),o=this.isHorizontal();if(a){let a=DI(r,t.options.font);if(o?(e.width=this.maxWidth,e.height=EI(i)+a):(e.height=this.maxHeight,e.width=EI(i)+a),n.display&&this.ticks.length){let{first:t,last:r,widest:i,highest:a}=this._getLabelSizes(),s=n.padding*2,c=Pj(this.labelRotation),l=Math.cos(c),u=Math.sin(c);if(o){let t=n.mirror?0:u*i.width+l*a.height;e.height=Math.min(this.maxHeight,e.height+t+s)}else{let t=n.mirror?0:l*i.width+u*a.height;e.width=Math.min(this.maxWidth,e.width+t+s)}this._calculatePadding(t,r,u,l)}}this._handleMargins(),o?(this.width=this._length=t.width-this._margins.left-this._margins.right,this.height=e.height):(this.width=e.width,this.height=this._length=t.height-this._margins.top-this._margins.bottom)}_calculatePadding(e,t,n,r){let{ticks:{align:i,padding:a},position:o}=this.options,s=this.labelRotation!==0,c=o!==`top`&&this.axis===`x`;if(this.isHorizontal()){let o=this.getPixelForTick(0)-this.left,l=this.right-this.getPixelForTick(this.ticks.length-1),u=0,d=0;s?c?(u=r*e.width,d=n*t.height):(u=n*e.height,d=r*t.width):i===`start`?d=t.width:i===`end`?u=e.width:i!==`inner`&&(u=e.width/2,d=t.width/2),this.paddingLeft=Math.max((u-o+a)*this.width/(this.width-o),0),this.paddingRight=Math.max((d-l+a)*this.width/(this.width-l),0)}else{let n=t.height/2,r=e.height/2;i===`start`?(n=0,r=e.height):i===`end`&&(n=t.height,r=0),this.paddingTop=n+a,this.paddingBottom=r+a}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){$A(this.options.afterFit,[this])}isHorizontal(){let{axis:e,position:t}=this.options;return t===`top`||t===`bottom`||e===`x`}isFullSize(){return this.options.fullSize}_convertTicksToLabels(e){this.beforeTickToLabelConversion(),this.generateTickLabels(e);let t,n;for(t=0,n=e.length;t({width:a[e]||0,height:o[e]||0});return{first:C(0),last:C(t-1),widest:C(x),highest:C(S),widths:a,heights:o}}getLabelForValue(e){return e}getPixelForValue(e,t){return NaN}getValueForPixel(e){}getPixelForTick(e){let t=this.ticks;return e<0||e>t.length-1?null:this.getPixelForValue(t[e].value)}getPixelForDecimal(e){this._reversePixels&&(e=1-e);let t=this._startPixel+e*this._length;return Uj(this._alignToPixels?NM(this.chart,t,0):t)}getDecimalForPixel(e){let t=(e-this._startPixel)/this._length;return this._reversePixels?1-t:t}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){let{min:e,max:t}=this;return e<0&&t<0?t:e>0&&t>0?e:0}getContext(e){let t=this.ticks||[];if(e>=0&&eo*r?o/n:s/r:s*r0:!!e}_computeGridLineItems(e){let t=this.axis,n=this.chart,r=this.options,{grid:i,position:a,border:o}=r,s=i.offset,c=this.isHorizontal(),l=this.ticks.length+ +!!s,u=EI(i),d=[],f=o.setContext(this.getContext()),p=f.display?f.width:0,m=p/2,h=function(e){return NM(n,e,p)},g,_,v,y,b,x,S,C,w,T,ee,te;if(a===`top`)g=h(this.bottom),x=this.bottom-u,C=g-m,T=h(e.top)+m,te=e.bottom;else if(a===`bottom`)g=h(this.top),T=e.top,te=h(e.bottom)-m,x=g+m,C=this.top+u;else if(a===`left`)g=h(this.right),b=this.right-u,S=g-m,w=h(e.left)+m,ee=e.right;else if(a===`right`)g=h(this.left),w=e.left,ee=h(e.right)-m,b=g+m,S=this.left+u;else if(t===`x`){if(a===`center`)g=h((e.top+e.bottom)/2+.5);else if(qA(a)){let e=Object.keys(a)[0],t=a[e];g=h(this.chart.scales[e].getPixelForValue(t))}T=e.top,te=e.bottom,x=g+m,C=x+u}else if(t===`y`){if(a===`center`)g=h((e.left+e.right)/2);else if(qA(a)){let e=Object.keys(a)[0],t=a[e];g=h(this.chart.scales[e].getPixelForValue(t))}b=g-m,S=b-u,w=e.left,ee=e.right}let ne=XA(r.ticks.maxTicksLimit,l),re=Math.max(1,Math.ceil(l/ne));for(_=0;_0&&(a-=r/2);break}f={left:a,top:i,width:r+t.width,height:n+t.height,color:e.backdropColor}}h.push({label:y,font:w,textOffset:te,options:{rotation:m,color:n,strokeColor:s,strokeWidth:l,textAlign:d,textBaseline:ne,translation:[b,x],backdrop:f}})}return h}_getXAxisLabelAlignment(){let{position:e,ticks:t}=this.options;if(-Pj(this.labelRotation))return e===`top`?`left`:`right`;let n=`center`;return t.align===`start`?n=`left`:t.align===`end`?n=`right`:t.align===`inner`&&(n=`inner`),n}_getYAxisLabelAlignment(e){let{position:t,ticks:{crossAlign:n,mirror:r,padding:i}}=this.options,a=this._getLabelSizes(),o=e+i,s=a.widest.width,c,l;return t===`left`?r?(l=this.right+i,n===`near`?c=`left`:n===`center`?(c=`center`,l+=s/2):(c=`right`,l+=s)):(l=this.right-o,n===`near`?c=`right`:n===`center`?(c=`center`,l-=s/2):(c=`left`,l=this.left)):t===`right`?r?(l=this.left+i,n===`near`?c=`right`:n===`center`?(c=`center`,l-=s/2):(c=`left`,l-=s)):(l=this.left+o,n===`near`?c=`left`:n===`center`?(c=`center`,l+=s/2):(c=`right`,l=this.right)):c=`right`,{textAlign:c,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;let e=this.chart,t=this.options.position;if(t===`left`||t===`right`)return{top:0,left:this.left,bottom:e.height,right:this.right};if(t===`top`||t===`bottom`)return{top:this.top,left:0,bottom:this.bottom,right:e.width}}drawBackground(){let{ctx:e,options:{backgroundColor:t},left:n,top:r,width:i,height:a}=this;t&&(e.save(),e.fillStyle=t,e.fillRect(n,r,i,a),e.restore())}getLineWidthForValue(e){let t=this.options.grid;if(!this._isVisible()||!t.display)return 0;let n=this.ticks.findIndex(t=>t.value===e);return n>=0?t.setContext(this.getContext(n)).lineWidth:0}drawGrid(e){let t=this.options.grid,n=this.ctx,r=this._gridLineItems||=this._computeGridLineItems(e),i,a,o=(e,t,r)=>{!r.width||!r.color||(n.save(),n.lineWidth=r.width,n.strokeStyle=r.color,n.setLineDash(r.borderDash||[]),n.lineDashOffset=r.borderDashOffset,n.beginPath(),n.moveTo(e.x,e.y),n.lineTo(t.x,t.y),n.stroke(),n.restore())};if(t.display)for(i=0,a=r.length;i{this.draw(e)}}]:[{z:r,draw:e=>{this.drawBackground(),this.drawGrid(e),this.drawTitle()}},{z:i,draw:()=>{this.drawBorder()}},{z:n,draw:e=>{this.drawLabels(e)}}]}getMatchingVisibleMetas(e){let t=this.chart.getSortedVisibleDatasetMetas(),n=this.axis+`AxisID`,r=[],i,a;for(i=0,a=t.length;i{let r=n.split(`.`),i=r.pop(),a=[e].concat(r).join(`.`),o=t[n].split(`.`),s=o.pop(),c=o.join(`.`);kM.route(a,i,c,s)})}function II(e){return`id`in e&&`defaults`in e}var LI=new class{constructor(){this.controllers=new NI(KP,`datasets`,!0),this.elements=new NI(fI,`elements`),this.plugins=new NI(Object,`plugins`),this.scales=new NI(MI,`scales`),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...e){this._each(`register`,e)}remove(...e){this._each(`unregister`,e)}addControllers(...e){this._each(`register`,e,this.controllers)}addElements(...e){this._each(`register`,e,this.elements)}addPlugins(...e){this._each(`register`,e,this.plugins)}addScales(...e){this._each(`register`,e,this.scales)}getController(e){return this._get(e,this.controllers,`controller`)}getElement(e){return this._get(e,this.elements,`element`)}getPlugin(e){return this._get(e,this.plugins,`plugin`)}getScale(e){return this._get(e,this.scales,`scale`)}removeControllers(...e){this._each(`unregister`,e,this.controllers)}removeElements(...e){this._each(`unregister`,e,this.elements)}removePlugins(...e){this._each(`unregister`,e,this.plugins)}removeScales(...e){this._each(`unregister`,e,this.scales)}_each(e,t,n){[...t].forEach(t=>{let r=n||this._getRegistryForType(t);n||r.isForType(t)||r===this.plugins&&t.id?this._exec(e,r,t):ej(t,t=>{let r=n||this._getRegistryForType(t);this._exec(e,r,t)})})}_exec(e,t,n){let r=fj(e);$A(n[`before`+r],[],n),t[e](n),$A(n[`after`+r],[],n)}_getRegistryForType(e){for(let t=0;te.filter(e=>!t.some(t=>e.plugin.id===t.plugin.id));this._notify(r(t,n),e,`stop`),this._notify(r(n,t),e,`start`)}};function zI(e){let t={},n=[],r=Object.keys(LI.plugins.items);for(let e=0;e1&&KI(e[0].toLowerCase());if(t)return t}throw Error(`Cannot determine type of '${e}' axis. Please provide 'axis' or 'position' option.`)}function YI(e,t,n){if(n[t+`AxisID`]===e)return{axis:t}}function XI(e,t){if(t.data&&t.data.datasets){let n=t.data.datasets.filter(t=>t.xAxisID===e||t.yAxisID===e);if(n.length)return YI(e,`x`,n[0])||YI(e,`y`,n[0])}return{}}function ZI(e,t){let n=TM[e.type]||{scales:{}},r=t.scales||{},i=UI(e.type,t),a=Object.create(null);return Object.keys(r).forEach(t=>{let o=r[t];if(!qA(o))return console.error(`Invalid scale configuration for scale: ${t}`);if(o._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);let s=JI(t,o,XI(t,e),kM.scales[o.type]),c=GI(s,i),l=n.scales||{};a[t]=oj(Object.create(null),[{axis:s},o,l[s],l[c]])}),e.data.datasets.forEach(n=>{let i=n.type||e.type,o=n.indexAxis||UI(i,t),s=(TM[i]||{}).scales||{};Object.keys(s).forEach(e=>{let t=WI(e,o),i=n[t+`AxisID`]||t;a[i]=a[i]||Object.create(null),oj(a[i],[{axis:t},r[i],s[e]])})}),Object.keys(a).forEach(e=>{let t=a[e];oj(t,[kM.scales[t.type],kM.scale])}),a}function QI(e){let t=e.options||={};t.plugins=XA(t.plugins,{}),t.scales=ZI(e,t)}function $I(e){return e||={},e.datasets=e.datasets||[],e.labels=e.labels||[],e}function eL(e){return e||={},e.data=$I(e.data),QI(e),e}var tL=new Map,nL=new Set;function rL(e,t){let n=tL.get(e);return n||(n=t(),tL.set(e,n),nL.add(n)),n}var iL=(e,t,n)=>{let r=dj(t,n);r!==void 0&&e.add(r)},aL=class{constructor(e){this._config=eL(e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(e){this._config.type=e}get data(){return this._config.data}set data(e){this._config.data=$I(e)}get options(){return this._config.options}set options(e){this._config.options=e}get plugins(){return this._config.plugins}update(){let e=this._config;this.clearCache(),QI(e)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(e){return rL(e,()=>[[`datasets.${e}`,``]])}datasetAnimationScopeKeys(e,t){return rL(`${e}.transition.${t}`,()=>[[`datasets.${e}.transitions.${t}`,`transitions.${t}`],[`datasets.${e}`,``]])}datasetElementScopeKeys(e,t){return rL(`${e}-${t}`,()=>[[`datasets.${e}.elements.${t}`,`datasets.${e}`,`elements.${t}`,``]])}pluginScopeKeys(e){let t=e.id,n=this.type;return rL(`${n}-plugin-${t}`,()=>[[`plugins.${t}`,...e.additionalOptionScopes||[]]])}_cachedScopes(e,t){let n=this._scopeCache,r=n.get(e);return(!r||t)&&(r=new Map,n.set(e,r)),r}getOptionScopes(e,t,n){let{options:r,type:i}=this,a=this._cachedScopes(e,n),o=a.get(t);if(o)return o;let s=new Set;t.forEach(t=>{e&&(s.add(e),t.forEach(t=>iL(s,e,t))),t.forEach(e=>iL(s,r,e)),t.forEach(e=>iL(s,TM[i]||{},e)),t.forEach(e=>iL(s,kM,e)),t.forEach(e=>iL(s,EM,e))});let c=Array.from(s);return c.length===0&&c.push(Object.create(null)),nL.has(t)&&a.set(t,c),c}chartOptionScopes(){let{options:e,type:t}=this;return[e,TM[t]||{},kM.datasets[t]||{},{type:t},kM,EM]}resolveNamedOptions(e,t,n,r=[``]){let i={$shared:!0},{resolver:a,subPrefixes:o}=oL(this._resolverCache,e,r),s=a;if(cL(a,t)){i.$shared=!1,n=mj(n)?n():n;let t=this.createResolver(e,n,o);s=oN(a,n,t)}for(let e of t)i[e]=s[e];return i}createResolver(e,t,n=[``],r){let{resolver:i}=oL(this._resolverCache,e,n);return qA(t)?oN(i,t,void 0,r):i}};function oL(e,t,n){let r=e.get(t);r||(r=new Map,e.set(t,r));let i=n.join(),a=r.get(i);return a||(a={resolver:aN(t,n),subPrefixes:n.filter(e=>!e.toLowerCase().includes(`hover`))},r.set(i,a)),a}var sL=e=>qA(e)&&Object.getOwnPropertyNames(e).some(t=>mj(e[t]));function cL(e,t){let{isScriptable:n,isIndexable:r}=sN(e);for(let i of t){let t=n(i),a=r(i),o=(a||t)&&e[i];if(t&&(mj(o)||sL(o))||a&&KA(o))return!0}return!1}var lL=`4.5.1`,uL=[`top`,`bottom`,`left`,`right`,`chartArea`];function dL(e,t){return e===`top`||e===`bottom`||uL.indexOf(e)===-1&&t===`x`}function fL(e,t){return function(n,r){return n[e]===r[e]?n[t]-r[t]:n[e]-r[e]}}function pL(e){let t=e.chart,n=t.options.animation;t.notifyPlugins(`afterRender`),$A(n&&n.onComplete,[e],t)}function mL(e){let t=e.chart,n=t.options.animation;$A(n&&n.onProgress,[e],t)}function hL(e){return FN()&&typeof e==`string`?e=document.getElementById(e):e&&e.length&&(e=e[0]),e&&e.canvas&&(e=e.canvas),e}var gL={},_L=e=>{let t=hL(e);return Object.values(gL).filter(e=>e.canvas===t).pop()};function vL(e,t,n){let r=Object.keys(e);for(let i of r){let r=+i;if(r>=t){let a=e[i];delete e[i],(n>0||r>t)&&(e[r+n]=a)}}}function yL(e,t,n,r){return!n||e.type===`mouseout`?null:r?t:e}var bL=class{static defaults=kM;static instances=gL;static overrides=TM;static registry=LI;static version=lL;static getChart=_L;static register(...e){LI.add(...e),xL()}static unregister(...e){LI.remove(...e),xL()}constructor(e,t){let n=this.config=new aL(t),r=hL(e),i=_L(r);if(i)throw Error(`Canvas is already in use. Chart with ID '`+i.id+`' must be destroyed before the canvas with ID '`+i.canvas.id+`' can be reused.`);let a=n.createResolver(n.chartOptionScopes(),this.getContext());this.platform=new(n.platform||(dI(r))),this.platform.updateConfig(n);let o=this.platform.acquireContext(r,a.aspectRatio),s=o&&o.canvas,c=s&&s.height,l=s&&s.width;if(this.id=WA(),this.ctx=o,this.canvas=s,this.width=l,this.height=c,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new RI,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=tM(e=>this.update(e),a.resizeDelay||0),this._dataChanges=[],gL[this.id]=this,!o||!s){console.error(`Failed to create chart: can't acquire context from the given item`);return}bP.listen(this,`complete`,pL),bP.listen(this,`progress`,mL),this._initialize(),this.attached&&this.update()}get aspectRatio(){let{options:{aspectRatio:e,maintainAspectRatio:t},width:n,height:r,_aspectRatio:i}=this;return GA(e)?t&&i?i:r?n/r:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return LI}_initialize(){return this.notifyPlugins(`beforeInit`),this.options.responsive?this.resize():JN(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins(`afterInit`),this}clear(){return PM(this.canvas,this.ctx),this}stop(){return bP.stop(this),this}resize(e,t){bP.running(this)?this._resizeBeforeDraw={width:e,height:t}:this._resize(e,t)}_resize(e,t){let n=this.options,r=this.canvas,i=n.maintainAspectRatio&&this.aspectRatio,a=this.platform.getMaximumSize(r,e,t,i),o=n.devicePixelRatio||this.platform.getDevicePixelRatio(),s=this.width?`resize`:`attach`;this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,JN(this,o,!0)&&(this.notifyPlugins(`resize`,{size:a}),$A(n.onResize,[this,a],this),this.attached&&this._doResize(s)&&this.render())}ensureScalesHaveIDs(){ej(this.options.scales||{},(e,t)=>{e.id=t})}buildOrUpdateScales(){let e=this.options,t=e.scales,n=this.scales,r=Object.keys(n).reduce((e,t)=>(e[t]=!1,e),{}),i=[];t&&(i=i.concat(Object.keys(t).map(e=>{let n=t[e],r=JI(e,n),i=r===`r`,a=r===`x`;return{options:n,dposition:i?`chartArea`:a?`bottom`:`left`,dtype:i?`radialLinear`:a?`category`:`linear`}}))),ej(i,t=>{let i=t.options,a=i.id,o=JI(a,i),s=XA(i.type,t.dtype);(i.position===void 0||dL(i.position,o)!==dL(t.dposition))&&(i.position=t.dposition),r[a]=!0;let c=null;a in n&&n[a].type===s?c=n[a]:(c=new(LI.getScale(s))({id:a,type:s,ctx:this.ctx,chart:this}),n[c.id]=c),c.init(i,e)}),ej(r,(e,t)=>{e||delete n[t]}),ej(n,e=>{HF.configure(this,e,e.options),HF.addBox(this,e)})}_updateMetasets(){let e=this._metasets,t=this.data.datasets.length,n=e.length;if(e.sort((e,t)=>e.index-t.index),n>t){for(let e=t;et.length&&delete this._stacks,e.forEach((e,n)=>{t.filter(t=>t===e._dataset).length===0&&this._destroyDatasetMeta(n)})}buildOrUpdateControllers(){let e=[],t=this.data.datasets,n,r;for(this._removeUnreferencedMetasets(),n=0,r=t.length;n{this.getDatasetMeta(t).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins(`reset`)}update(e){let t=this.config;t.update();let n=this._options=t.createResolver(t.chartOptionScopes(),this.getContext()),r=this._animationsDisabled=!n.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins(`beforeUpdate`,{mode:e,cancelable:!0})===!1)return;let i=this.buildOrUpdateControllers();this.notifyPlugins(`beforeElementsUpdate`);let a=0;for(let e=0,t=this.data.datasets.length;e{e.reset()}),this._updateDatasets(e),this.notifyPlugins(`afterUpdate`,{mode:e}),this._layers.sort(fL(`z`,`_idx`));let{_active:o,_lastEvent:s}=this;s?this._eventHandler(s,!0):o.length&&this._updateHoverStyles(o,o,!0),this.render()}_updateScales(){ej(this.scales,e=>{HF.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){let e=this.options;(!hj(new Set(Object.keys(this._listeners)),new Set(e.events))||!!this._responsiveListeners!==e.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){let{_hiddenIndices:e}=this,t=this._getUniformDataChanges()||[];for(let{method:n,start:r,count:i}of t)vL(e,r,n===`_removeElements`?-i:i)}_getUniformDataChanges(){let e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];let t=this.data.datasets.length,n=t=>new Set(e.filter(e=>e[0]===t).map((e,t)=>t+`,`+e.splice(1).join(`,`))),r=n(0);for(let e=1;ee.split(`,`)).map(e=>({method:e[1],start:+e[2],count:+e[3]}))}_updateLayout(e){if(this.notifyPlugins(`beforeLayout`,{cancelable:!0})===!1)return;HF.update(this,this.width,this.height,e);let t=this.chartArea,n=t.width<=0||t.height<=0;this._layers=[],ej(this.boxes,e=>{n&&e.position===`chartArea`||(e.configure&&e.configure(),this._layers.push(...e._layers()))},this),this._layers.forEach((e,t)=>{e._idx=t}),this.notifyPlugins(`afterLayout`)}_updateDatasets(e){if(this.notifyPlugins(`beforeDatasetsUpdate`,{mode:e,cancelable:!0})!==!1){for(let e=0,t=this.data.datasets.length;e=0;--t)this._drawDataset(e[t]);this.notifyPlugins(`afterDatasetsDraw`)}_drawDataset(e){let t=this.ctx,n={meta:e,index:e.index,cancelable:!0},r=yP(this,e);this.notifyPlugins(`beforeDatasetDraw`,n)!==!1&&(r&&RM(t,r),e.controller.draw(),r&&zM(t),n.cancelable=!1,this.notifyPlugins(`afterDatasetDraw`,n))}isPointInArea(e){return LM(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,t,n,r){let i=TF.modes[t];return typeof i==`function`?i(this,e,n,r):[]}getDatasetMeta(e){let t=this.data.datasets[e],n=this._metasets,r=n.filter(e=>e&&e._dataset===t).pop();return r||(r={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:t&&t.order||0,index:e,_dataset:t,_parsed:[],_sorted:!1},n.push(r)),r}getContext(){return this.$context||=iN(null,{chart:this,type:`chart`})}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){let t=this.data.datasets[e];if(!t)return!1;let n=this.getDatasetMeta(e);return typeof n.hidden==`boolean`?!n.hidden:!t.hidden}setDatasetVisibility(e,t){let n=this.getDatasetMeta(e);n.hidden=!t}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,t,n){let r=n?`show`:`hide`,i=this.getDatasetMeta(e),a=i.controller._resolveAnimations(void 0,r);pj(t)?(i.data[t].hidden=!n,this.update()):(this.setDatasetVisibility(e,n),a.update(i,{visible:n}),this.update(t=>t.datasetIndex===e?r:void 0))}hide(e,t){this._updateVisibility(e,t,!1)}show(e,t){this._updateVisibility(e,t,!0)}_destroyDatasetMeta(e){let t=this._metasets[e];t&&t.controller&&t.controller._destroy(),delete this._metasets[e]}_stop(){let e,t;for(this.stop(),bP.remove(this),e=0,t=this.data.datasets.length;e{t.addEventListener(this,n,r),e[n]=r},r=(e,t,n)=>{e.offsetX=t,e.offsetY=n,this._eventHandler(e)};ej(this.options.events,e=>n(e,r))}bindResponsiveEvents(){this._responsiveListeners||={};let e=this._responsiveListeners,t=this.platform,n=(n,r)=>{t.addEventListener(this,n,r),e[n]=r},r=(n,r)=>{e[n]&&(t.removeEventListener(this,n,r),delete e[n])},i=(e,t)=>{this.canvas&&this.resize(e,t)},a,o=()=>{r(`attach`,o),this.attached=!0,this.resize(),n(`resize`,i),n(`detach`,a)};a=()=>{this.attached=!1,r(`resize`,i),this._stop(),this._resize(0,0),n(`attach`,o)},t.isAttached(this.canvas)?o():a()}unbindEvents(){ej(this._listeners,(e,t)=>{this.platform.removeEventListener(this,t,e)}),this._listeners={},ej(this._responsiveListeners,(e,t)=>{this.platform.removeEventListener(this,t,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,t,n){let r=n?`set`:`remove`,i,a,o,s;for(t===`dataset`&&(i=this.getDatasetMeta(e[0].datasetIndex),i.controller[`_`+r+`DatasetHoverStyle`]()),o=0,s=e.length;o{let n=this.getDatasetMeta(e);if(!n)throw Error(`No dataset found at index `+e);return{datasetIndex:e,element:n.data[t],index:t}});tj(n,t)||(this._active=n,this._lastEvent=null,this._updateHoverStyles(n,t))}notifyPlugins(e,t,n){return this._plugins.notify(this,e,t,n)}isPluginEnabled(e){return this._plugins._cache.filter(t=>t.plugin.id===e).length===1}_updateHoverStyles(e,t,n){let r=this.options.hover,i=(e,t)=>e.filter(e=>!t.some(t=>e.datasetIndex===t.datasetIndex&&e.index===t.index)),a=i(t,e),o=n?e:i(e,t);a.length&&this.updateHoverStyle(a,r.mode,!1),o.length&&r.mode&&this.updateHoverStyle(o,r.mode,!0)}_eventHandler(e,t){let n={event:e,replay:t,cancelable:!0,inChartArea:this.isPointInArea(e)},r=t=>(t.options.events||this.options.events).includes(e.native.type);if(this.notifyPlugins(`beforeEvent`,n,r)===!1)return;let i=this._handleEvent(e,t,n.inChartArea);return n.cancelable=!1,this.notifyPlugins(`afterEvent`,n,r),(i||n.changed)&&this.render(),this}_handleEvent(e,t,n){let{_active:r=[],options:i}=this,a=t,o=this._getActiveElements(e,r,n,a),s=gj(e),c=yL(e,this._lastEvent,n,s);n&&(this._lastEvent=null,$A(i.onHover,[e,o,this],this),s&&$A(i.onClick,[e,o,this],this));let l=!tj(o,r);return(l||t)&&(this._active=o,this._updateHoverStyles(o,r,t)),this._lastEvent=c,l}_getActiveElements(e,t,n,r){if(e.type===`mouseout`)return[];if(!n)return t;let i=this.options.hover;return this.getElementsAtEventForMode(e,i.mode,i,r)}};function xL(){return ej(bL.instances,e=>e._plugins.invalidate())}function SL(e,t,n){let{startAngle:r,x:i,y:a,outerRadius:o,innerRadius:s,options:c}=t,{borderWidth:l,borderJoinStyle:u}=c,d=Math.min(l/o,Bj(r-n));if(e.beginPath(),e.arc(i,a,o-l/2,r+d/2,n-d/2),s>0){let t=Math.min(l/s,Bj(r-n));e.arc(i,a,s+l/2,n-t/2,r+t/2,!0)}else{let t=Math.min(l/2,o*Bj(r-n));if(u===`round`)e.arc(i,a,t,n-_j/2,r+_j/2,!0);else if(u===`bevel`){let o=2*t*t,s=-o*Math.cos(n+_j/2)+i,c=-o*Math.sin(n+_j/2)+a,l=o*Math.cos(r+_j/2)+i,u=o*Math.sin(r+_j/2)+a;e.lineTo(s,c),e.lineTo(l,u)}}e.closePath(),e.moveTo(0,0),e.rect(0,0,e.canvas.width,e.canvas.height),e.clip(`evenodd`)}function CL(e,t,n){let{startAngle:r,pixelMargin:i,x:a,y:o,outerRadius:s,innerRadius:c}=t,l=i/s;e.beginPath(),e.arc(a,o,s,r-l,n+l),c>i?(l=i/c,e.arc(a,o,c,n+l,r-l,!0)):e.arc(a,o,i,n+Sj,r-Sj),e.closePath(),e.clip()}function wL(e){return ZM(e,[`outerStart`,`outerEnd`,`innerStart`,`innerEnd`])}function TL(e,t,n,r){let i=wL(e.options.borderRadius),a=(n-t)/2,o=Math.min(a,r*t/2),s=e=>{let t=(n-Math.min(a,e))*r/2;return Hj(e,0,Math.min(a,t))};return{outerStart:s(i.outerStart),outerEnd:s(i.outerEnd),innerStart:Hj(i.innerStart,0,o),innerEnd:Hj(i.innerEnd,0,o)}}function EL(e,t,n,r){return{x:n+e*Math.cos(t),y:r+e*Math.sin(t)}}function DL(e,t,n,r,i,a){let{x:o,y:s,startAngle:c,pixelMargin:l,innerRadius:u}=t,d=Math.max(t.outerRadius+r+n-l,0),f=u>0?u+r+n+l:0,p=0,m=i-c;if(r){let e=((u>0?u-r:0)+(d>0?d-r:0))/2;p=(m-(e===0?m:m*e/(e+r)))/2}let h=(m-Math.max(.001,m*d-n/_j)/d)/2,g=c+h+p,_=i-h-p,{outerStart:v,outerEnd:y,innerStart:b,innerEnd:x}=TL(t,f,d,_-g),S=d-v,C=d-y,w=g+v/S,T=_-y/C,ee=f+b,te=f+x,ne=g+b/ee,re=_-x/te;if(e.beginPath(),a){let t=(w+T)/2;if(e.arc(o,s,d,w,t),e.arc(o,s,d,t,T),y>0){let t=EL(C,T,o,s);e.arc(t.x,t.y,y,T,_+Sj)}let n=EL(te,_,o,s);if(e.lineTo(n.x,n.y),x>0){let t=EL(te,re,o,s);e.arc(t.x,t.y,x,_+Sj,re+Math.PI)}let r=(_-x/f+(g+b/f))/2;if(e.arc(o,s,f,_-x/f,r,!0),e.arc(o,s,f,r,g+b/f,!0),b>0){let t=EL(ee,ne,o,s);e.arc(t.x,t.y,b,ne+Math.PI,g-Sj)}let i=EL(S,g,o,s);if(e.lineTo(i.x,i.y),v>0){let t=EL(S,w,o,s);e.arc(t.x,t.y,v,g-Sj,w)}}else{e.moveTo(o,s);let t=Math.cos(w)*d+o,n=Math.sin(w)*d+s;e.lineTo(t,n);let r=Math.cos(T)*d+o,i=Math.sin(T)*d+s;e.lineTo(r,i)}e.closePath()}function OL(e,t,n,r,i){let{fullCircles:a,startAngle:o,circumference:s}=t,c=t.endAngle;if(a){DL(e,t,n,r,c,i);for(let t=0;t=_j&&p===0&&u!==`miter`&&SL(e,t,h),a||(DL(e,t,n,r,h,i),e.stroke())}var AL=class extends fI{static id=`arc`;static defaults={borderAlign:`center`,borderColor:`#fff`,borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0,selfJoin:!1};static defaultRoutes={backgroundColor:`backgroundColor`};static descriptors={_scriptable:!0,_indexable:e=>e!==`borderDash`};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(e){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,e&&Object.assign(this,e)}inRange(e,t,n){let{angle:r,distance:i}=Lj(this.getProps([`x`,`y`],n),{x:e,y:t}),{startAngle:a,endAngle:o,innerRadius:s,outerRadius:c,circumference:l}=this.getProps([`startAngle`,`endAngle`,`innerRadius`,`outerRadius`,`circumference`],n),u=(this.options.spacing+this.options.borderWidth)/2,d=XA(l,o-a),f=Vj(r,a,o)&&a!==o,p=d>=vj||f,m=Wj(i,s+u,c+u);return p&&m}getCenterPoint(e){let{x:t,y:n,startAngle:r,endAngle:i,innerRadius:a,outerRadius:o}=this.getProps([`x`,`y`,`startAngle`,`endAngle`,`innerRadius`,`outerRadius`],e),{offset:s,spacing:c}=this.options,l=(r+i)/2,u=(a+o+c+s)/2;return{x:t+Math.cos(l)*u,y:n+Math.sin(l)*u}}tooltipPosition(e){return this.getCenterPoint(e)}draw(e){let{options:t,circumference:n}=this,r=(t.offset||0)/4,i=(t.spacing||0)/2,a=t.circular;if(this.pixelMargin=t.borderAlign===`inner`?.33:0,this.fullCircles=n>vj?Math.floor(n/vj):0,n===0||this.innerRadius<0||this.outerRadius<0)return;e.save();let o=(this.startAngle+this.endAngle)/2;e.translate(Math.cos(o)*r,Math.sin(o)*r);let s=r*(1-Math.sin(Math.min(_j,n||0)));e.fillStyle=t.backgroundColor,e.strokeStyle=t.borderColor,OL(e,this,s,i,a),kL(e,this,s,i,a),e.restore()}};function jL(e,t,n=t){e.lineCap=XA(n.borderCapStyle,t.borderCapStyle),e.setLineDash(XA(n.borderDash,t.borderDash)),e.lineDashOffset=XA(n.borderDashOffset,t.borderDashOffset),e.lineJoin=XA(n.borderJoinStyle,t.borderJoinStyle),e.lineWidth=XA(n.borderWidth,t.borderWidth),e.strokeStyle=XA(n.borderColor,t.borderColor)}function ML(e,t,n){e.lineTo(n.x,n.y)}function NL(e){return e.stepped?BM:e.tension||e.cubicInterpolationMode===`monotone`?VM:ML}function PL(e,t,n={}){let r=e.length,{start:i=0,end:a=r-1}=n,{start:o,end:s}=t,c=Math.max(i,o),l=Math.min(a,s),u=is&&a>s;return{count:r,start:c,loop:t.loop,ilen:l(o+(l?s-e:e))%a,y=()=>{h!==g&&(e.lineTo(u,g),e.lineTo(u,h),e.lineTo(u,_))};for(c&&(p=i[v(0)],e.moveTo(p.x,p.y)),f=0;f<=s;++f){if(p=i[v(f)],p.skip)continue;let t=p.x,n=p.y,r=t|0;r===m?(ng&&(g=n),u=(d*u+t)/++d):(y(),e.lineTo(t,n),m=r,d=0,h=g=n),_=n}y()}function LL(e){let t=e.options,n=t.borderDash&&t.borderDash.length;return!e._decimated&&!e._loop&&!t.tension&&t.cubicInterpolationMode!==`monotone`&&!t.stepped&&!n?IL:FL}function RL(e){return e.stepped?QN:e.tension||e.cubicInterpolationMode===`monotone`?$N:ZN}function zL(e,t,n,r){let i=t._path;i||(i=t._path=new Path2D,t.path(i,n,r)&&i.closePath()),jL(e,t.options),e.stroke(i)}function BL(e,t,n,r){let{segments:i,options:a}=t,o=LL(t);for(let s of i)jL(e,a,s.style),e.beginPath(),o(e,t,s,{start:n,end:n+r-1})&&e.closePath(),e.stroke()}var VL=typeof Path2D==`function`;function HL(e,t,n,r){VL&&!t.options.segment?zL(e,t,n,r):BL(e,t,n,r)}var UL=class extends fI{static id=`line`;static defaults={borderCapStyle:`butt`,borderDash:[],borderDashOffset:0,borderJoinStyle:`miter`,borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:`default`,fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:`backgroundColor`,borderColor:`borderColor`};static descriptors={_scriptable:!0,_indexable:e=>e!==`borderDash`&&e!==`fill`};constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,t){let n=this.options;if((n.tension||n.cubicInterpolationMode===`monotone`)&&!n.stepped&&!this._pointsUpdated){let r=n.spanGaps?this._loop:this._fullLoop;PN(this._points,n,e,r,t),this._pointsUpdated=!0}}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||=fP(this,this.options.segment)}first(){let e=this.segments,t=this.points;return e.length&&t[e[0].start]}last(){let e=this.segments,t=this.points,n=e.length;return n&&t[e[n-1].end]}interpolate(e,t){let n=this.options,r=e[t],i=this.points,a=lP(this,{property:t,start:r,end:r});if(!a.length)return;let o=[],s=RL(n),c,l;for(c=0,l=a.length;ce.replace(`rgb(`,`rgba(`).replace(`)`,`, 0.5)`));function iR(e){return nR[e%nR.length]}function aR(e){return rR[e%rR.length]}function oR(e,t){return e.borderColor=iR(t),e.backgroundColor=aR(t),++t}function sR(e,t){return e.backgroundColor=e.data.map(()=>iR(t++)),t}function cR(e,t){return e.backgroundColor=e.data.map(()=>aR(t++)),t}function lR(e){let t=0;return(n,r)=>{let i=e.getDatasetMeta(r).controller;i instanceof dF?t=sR(n,t):i instanceof pF?t=cR(n,t):i&&(t=oR(n,t))}}function uR(e){let t;for(t in e)if(e[t].borderColor||e[t].backgroundColor)return!0;return!1}function dR(e){return e&&(e.borderColor||e.backgroundColor)}function fR(){return kM.borderColor!==`rgba(0,0,0,0.1)`||kM.backgroundColor!==`rgba(0,0,0,0.1)`}var pR={id:`colors`,defaults:{enabled:!0,forceOverride:!1},beforeLayout(e,t,n){if(!n.enabled)return;let{data:{datasets:r},options:i}=e.config,{elements:a}=i,o=uR(r)||dR(i)||a&&uR(a)||fR();if(!n.forceOverride&&o)return;let s=lR(e);r.forEach(s)}};function mR(e,t,n,r,i){let a=i.samples||r;if(a>=n)return e.slice(t,t+n);let o=[],s=(n-2)/(a-2),c=0,l=t+n-1,u=t,d,f,p,m,h;for(o[c++]=e[u],d=0;dp&&(p=m,f=e[a],h=a);o[c++]=f,u=h}return o[c++]=e[l],o}function hR(e,t,n,r){let i=0,a=0,o,s,c,l,u,d,f,p,m,h,g=[],_=t+n-1,v=e[t].x,y=e[_].x-v;for(o=t;oh&&(h=l,f=o),i=(a*i+s.x)/++a;else{let n=o-1;if(!GA(d)&&!GA(f)){let t=Math.min(d,f),r=Math.max(d,f);t!==p&&t!==n&&g.push({...e[t],x:i}),r!==p&&r!==n&&g.push({...e[r],x:i})}o>0&&n!==p&&g.push(e[n]),g.push(s),u=t,a=0,m=h=l,d=f=p=o}}return g}function gR(e){if(e._decimated){let t=e._data;delete e._decimated,delete e._data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,writable:!0,value:t})}}function _R(e){e.data.datasets.forEach(e=>{gR(e)})}function vR(e,t){let n=t.length,r=0,i,{iScale:a}=e,{min:o,max:s,minDefined:c,maxDefined:l}=a.getUserBounds();return c&&(r=Hj(Kj(t,a.axis,o).lo,0,n-1)),i=l?Hj(Kj(t,a.axis,s).hi+1,r,n)-r:n-r,{start:r,count:i}}var yR={id:`decimation`,defaults:{algorithm:`min-max`,enabled:!1},beforeElementsUpdate:(e,t,n)=>{if(!n.enabled){_R(e);return}let r=e.width;e.data.datasets.forEach((t,i)=>{let{_data:a,indexAxis:o}=t,s=e.getDatasetMeta(i),c=a||t.data;if(nN([o,e.options.indexAxis])===`y`||!s.controller.supportsDecimation)return;let l=e.scales[s.xAxisID];if(l.type!==`linear`&&l.type!==`time`||e.options.parsing)return;let{start:u,count:d}=vR(s,c);if(d<=(n.threshold||4*r)){gR(t);return}GA(a)&&(t._data=c,delete t.data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(e){this._data=e}}));let f;switch(n.algorithm){case`lttb`:f=mR(c,u,d,r,n);break;case`min-max`:f=hR(c,u,d,r);break;default:throw Error(`Unsupported decimation algorithm '${n.algorithm}'`)}t._decimated=f})},destroy(e){_R(e)}};function bR(e,t,n){let r=e.segments,i=e.points,a=t.points,o=[];for(let e of r){let{start:r,end:s}=e;s=CR(r,s,i);let c=xR(n,i[r],i[s],e.loop);if(!t.segments){o.push({source:e,target:c,start:i[r],end:i[s]});continue}let l=lP(t,c);for(let t of l){let r=xR(n,a[t.start],a[t.end],t.loop),s=cP(e,i,r);for(let e of s)o.push({source:e,target:t,start:{[n]:wR(c,r,`start`,Math.max)},end:{[n]:wR(c,r,`end`,Math.min)}})}}return o}function xR(e,t,n,r){if(r)return;let i=t[e],a=n[e];return e===`angle`&&(i=Bj(i),a=Bj(a)),{property:e,start:i,end:a}}function SR(e,t){let{x:n=null,y:r=null}=e||{},i=t.points,a=[];return t.segments.forEach(({start:e,end:t})=>{t=CR(e,t,i);let o=i[e],s=i[t];r===null?n!==null&&(a.push({x:n,y:o.y}),a.push({x:n,y:s.y})):(a.push({x:o.x,y:r}),a.push({x:s.x,y:r}))}),a}function CR(e,t,n){for(;t>e;t--){let e=n[t];if(!isNaN(e.x)&&!isNaN(e.y))break}return t}function wR(e,t,n,r){return e&&t?r(e[n],t[n]):e?e[n]:t?t[n]:0}function TR(e,t){let n=[],r=!1;return KA(e)?(r=!0,n=e):n=SR(e,t),n.length?new UL({points:n,options:{tension:0},_loop:r,_fullLoop:r}):null}function ER(e){return e&&e.fill!==!1}function DR(e,t,n){let r=e[t].fill,i=[t],a;if(!n)return r;for(;r!==!1&&i.indexOf(r)===-1;){if(!JA(r))return r;if(a=e[r],!a)return!1;if(a.visible)return r;i.push(r),r=a.fill}return!1}function OR(e,t,n){let r=MR(e);if(qA(r))return!isNaN(r.value)&&r;let i=parseFloat(r);return JA(i)&&Math.floor(i)===i?kR(r[0],t,i,n):[`origin`,`start`,`end`,`stack`,`shape`].indexOf(r)>=0&&r}function kR(e,t,n,r){return(e===`-`||e===`+`)&&(n=t+n),n===t||n<0||n>=r?!1:n}function AR(e,t){let n=null;return e===`start`?n=t.bottom:e===`end`?n=t.top:qA(e)?n=t.getPixelForValue(e.value):t.getBasePixel&&(n=t.getBasePixel()),n}function jR(e,t,n){let r;return r=e===`start`?n:e===`end`?t.options.reverse?t.min:t.max:qA(e)?e.value:t.getBaseValue(),r}function MR(e){let t=e.options,n=t.fill,r=XA(n&&n.target,n);return r===void 0&&(r=!!t.backgroundColor),r===!1||r===null?!1:r===!0?`origin`:r}function NR(e){let{scale:t,index:n,line:r}=e,i=[],a=r.segments,o=r.points,s=PR(t,n);s.push(TR({x:null,y:t.bottom},r));for(let e=0;e=0;--t){let n=i[t].$filler;n&&(n.line.updateControlPoints(a,n.axis),r&&n.fill&&UR(e.ctx,n,a))}},beforeDatasetsDraw(e,t,n){if(n.drawTime!==`beforeDatasetsDraw`)return;let r=e.getSortedVisibleDatasetMetas();for(let t=r.length-1;t>=0;--t){let n=r[t].$filler;ER(n)&&UR(e.ctx,n,e.chartArea)}},beforeDatasetDraw(e,t,n){let r=t.meta.$filler;!ER(r)||n.drawTime!==`beforeDatasetDraw`||UR(e.ctx,r,e.chartArea)},defaults:{propagate:!0,drawTime:`beforeDatasetDraw`}},ZR=(e,t)=>{let{boxHeight:n=t,boxWidth:r=t}=e;return e.usePointStyle&&(n=Math.min(n,t),r=e.pointStyleWidth||Math.min(r,t)),{boxWidth:r,boxHeight:n,itemHeight:Math.max(t,n)}},QR=(e,t)=>e!==null&&t!==null&&e.datasetIndex===t.datasetIndex&&e.index===t.index,$R=class extends fI{constructor(e){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,t,n){this.maxWidth=e,this.maxHeight=t,this._margins=n,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){let e=this.options.labels||{},t=$A(e.generateLabels,[this.chart],this)||[];e.filter&&(t=t.filter(t=>e.filter(t,this.chart.data))),e.sort&&(t=t.sort((t,n)=>e.sort(t,n,this.chart.data))),this.options.reverse&&t.reverse(),this.legendItems=t}fit(){let{options:e,ctx:t}=this;if(!e.display){this.width=this.height=0;return}let n=e.labels,r=tN(n.font),i=r.size,a=this._computeTitleHeight(),{boxWidth:o,itemHeight:s}=ZR(n,i),c,l;t.font=r.string,this.isHorizontal()?(c=this.maxWidth,l=this._fitRows(a,i,o,s)+10):(l=this.maxHeight,c=this._fitCols(a,r,o,s)+10),this.width=Math.min(c,e.maxWidth||this.maxWidth),this.height=Math.min(l,e.maxHeight||this.maxHeight)}_fitRows(e,t,n,r){let{ctx:i,maxWidth:a,options:{labels:{padding:o}}}=this,s=this.legendHitBoxes=[],c=this.lineWidths=[0],l=r+o,u=e;i.textAlign=`left`,i.textBaseline=`middle`;let d=-1,f=-l;return this.legendItems.forEach((e,p)=>{let m=n+t/2+i.measureText(e.text).width;(p===0||c[c.length-1]+m+2*o>a)&&(u+=l,c[c.length-(p>0?0:1)]=0,f+=l,d++),s[p]={left:0,top:f,row:d,width:m,height:r},c[c.length-1]+=m+o}),u}_fitCols(e,t,n,r){let{ctx:i,maxHeight:a,options:{labels:{padding:o}}}=this,s=this.legendHitBoxes=[],c=this.columnSizes=[],l=a-e,u=o,d=0,f=0,p=0,m=0;return this.legendItems.forEach((e,a)=>{let{itemWidth:h,itemHeight:g}=ez(n,t,i,e,r);a>0&&f+g+2*o>l&&(u+=d+o,c.push({width:d,height:f}),p+=d+o,m++,d=f=0),s[a]={left:p,top:f,col:m,width:h,height:g},d=Math.max(d,h),f+=g+o}),u+=d,c.push({width:d,height:f}),u}adjustHitBoxes(){if(!this.options.display)return;let e=this._computeTitleHeight(),{legendHitBoxes:t,options:{align:n,labels:{padding:r},rtl:i}}=this,a=nP(i,this.left,this.width);if(this.isHorizontal()){let i=0,o=rM(n,this.left+r,this.right-this.lineWidths[i]);for(let s of t)i!==s.row&&(i=s.row,o=rM(n,this.left+r,this.right-this.lineWidths[i])),s.top+=this.top+e+r,s.left=a.leftForLtr(a.x(o),s.width),o+=s.width+r}else{let i=0,o=rM(n,this.top+e+r,this.bottom-this.columnSizes[i].height);for(let s of t)s.col!==i&&(i=s.col,o=rM(n,this.top+e+r,this.bottom-this.columnSizes[i].height)),s.top=o,s.left+=this.left+r,s.left=a.leftForLtr(a.x(s.left),s.width),o+=s.height+r}}isHorizontal(){return this.options.position===`top`||this.options.position===`bottom`}draw(){if(this.options.display){let e=this.ctx;RM(e,this),this._draw(),zM(e)}}_draw(){let{options:e,columnSizes:t,lineWidths:n,ctx:r}=this,{align:i,labels:a}=e,o=kM.color,s=nP(e.rtl,this.left,this.width),c=tN(a.font),{padding:l}=a,u=c.size,d=u/2,f;this.drawTitle(),r.textAlign=s.textAlign(`left`),r.textBaseline=`middle`,r.lineWidth=.5,r.font=c.string;let{boxWidth:p,boxHeight:m,itemHeight:h}=ZR(a,u),g=function(e,t,n){if(isNaN(p)||p<=0||isNaN(m)||m<0)return;r.save();let i=XA(n.lineWidth,1);if(r.fillStyle=XA(n.fillStyle,o),r.lineCap=XA(n.lineCap,`butt`),r.lineDashOffset=XA(n.lineDashOffset,0),r.lineJoin=XA(n.lineJoin,`miter`),r.lineWidth=i,r.strokeStyle=XA(n.strokeStyle,o),r.setLineDash(XA(n.lineDash,[])),a.usePointStyle){let o={radius:m*Math.SQRT2/2,pointStyle:n.pointStyle,rotation:n.rotation,borderWidth:i},c=s.xPlus(e,p/2),l=t+d;IM(r,o,c,l,a.pointStyleWidth&&p)}else{let a=t+Math.max((u-m)/2,0),o=s.leftForLtr(e,p),c=$M(n.borderRadius);r.beginPath(),Object.values(c).some(e=>e!==0)?KM(r,{x:o,y:a,w:p,h:m,radius:c}):r.rect(o,a,p,m),r.fill(),i!==0&&r.stroke()}r.restore()},_=function(e,t,n){GM(r,n.text,e,t+h/2,c,{strikethrough:n.hidden,textAlign:s.textAlign(n.textAlign)})},v=this.isHorizontal(),y=this._computeTitleHeight();f=v?{x:rM(i,this.left+l,this.right-n[0]),y:this.top+l+y,line:0}:{x:this.left+l,y:rM(i,this.top+y+l,this.bottom-t[0].height),line:0},rP(this.ctx,e.textDirection);let b=h+l;this.legendItems.forEach((o,u)=>{r.strokeStyle=o.fontColor,r.fillStyle=o.fontColor;let m=r.measureText(o.text).width,h=s.textAlign(o.textAlign||=a.textAlign),x=p+d+m,S=f.x,C=f.y;s.setWidth(this.width),v?u>0&&S+x+l>this.right&&(C=f.y+=b,f.line++,S=f.x=rM(i,this.left+l,this.right-n[f.line])):u>0&&C+b>this.bottom&&(S=f.x=S+t[f.line].width+l,f.line++,C=f.y=rM(i,this.top+y+l,this.bottom-t[f.line].height));let w=s.x(S);if(g(w,C,o),S=iM(h,S+p+d,v?S+x:this.right,e.rtl),_(s.x(S),C,o),v)f.x+=x+l;else if(typeof o.text!=`string`){let e=c.lineHeight;f.y+=rz(o,e)+l}else f.y+=b}),iP(this.ctx,e.textDirection)}drawTitle(){let e=this.options,t=e.title,n=tN(t.font),r=eN(t.padding);if(!t.display)return;let i=nP(e.rtl,this.left,this.width),a=this.ctx,o=t.position,s=n.size/2,c=r.top+s,l,u=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),l=this.top+c,u=rM(e.align,u,this.right-d);else{let t=this.columnSizes.reduce((e,t)=>Math.max(e,t.height),0);l=c+rM(e.align,this.top,this.bottom-t-e.labels.padding-this._computeTitleHeight())}let f=rM(o,u,u+d);a.textAlign=i.textAlign(nM(o)),a.textBaseline=`middle`,a.strokeStyle=t.color,a.fillStyle=t.color,a.font=n.string,GM(a,t.text,f,l,n)}_computeTitleHeight(){let e=this.options.title,t=tN(e.font),n=eN(e.padding);return e.display?t.lineHeight+n.height:0}_getLegendItemAt(e,t){let n,r,i;if(Wj(e,this.left,this.right)&&Wj(t,this.top,this.bottom)){for(i=this.legendHitBoxes,n=0;ne.length>t.length?e:t)),t+n.size/2+r.measureText(i).width}function nz(e,t,n){let r=e;return typeof t.text!=`string`&&(r=rz(t,n)),r}function rz(e,t){return t*(e.text?e.text.length:0)}function iz(e,t){return!!((e===`mousemove`||e===`mouseout`)&&(t.onHover||t.onLeave)||t.onClick&&(e===`click`||e===`mouseup`))}var az={id:`legend`,_element:$R,start(e,t,n){let r=e.legend=new $R({ctx:e.ctx,options:n,chart:e});HF.configure(e,r,n),HF.addBox(e,r)},stop(e){HF.removeBox(e,e.legend),delete e.legend},beforeUpdate(e,t,n){let r=e.legend;HF.configure(e,r,n),r.options=n},afterUpdate(e){let t=e.legend;t.buildLabels(),t.adjustHitBoxes()},afterEvent(e,t){t.replay||e.legend.handleEvent(t.event)},defaults:{display:!0,position:`top`,align:`center`,fullSize:!0,reverse:!1,weight:1e3,onClick(e,t,n){let r=t.datasetIndex,i=n.chart;i.isDatasetVisible(r)?(i.hide(r),t.hidden=!0):(i.show(r),t.hidden=!1)},onHover:null,onLeave:null,labels:{color:e=>e.chart.options.color,boxWidth:40,padding:10,generateLabels(e){let t=e.data.datasets,{labels:{usePointStyle:n,pointStyle:r,textAlign:i,color:a,useBorderRadius:o,borderRadius:s}}=e.legend.options;return e._getSortedDatasetMetas().map(e=>{let c=e.controller.getStyle(n?0:void 0),l=eN(c.borderWidth);return{text:t[e.index].label,fillStyle:c.backgroundColor,fontColor:a,hidden:!e.visible,lineCap:c.borderCapStyle,lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:(l.width+l.height)/4,strokeStyle:c.borderColor,pointStyle:r||c.pointStyle,rotation:c.rotation,textAlign:i||c.textAlign,borderRadius:o&&(s||c.borderRadius),datasetIndex:e.index}},this)}},title:{color:e=>e.chart.options.color,display:!1,position:`center`,text:``}},descriptors:{_scriptable:e=>!e.startsWith(`on`),labels:{_scriptable:e=>![`generateLabels`,`filter`,`sort`].includes(e)}}},oz=class extends fI{constructor(e){super(),this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,t){let n=this.options;if(this.left=0,this.top=0,!n.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=e,this.height=this.bottom=t;let r=KA(n.text)?n.text.length:1;this._padding=eN(n.padding);let i=r*tN(n.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=i:this.width=i}isHorizontal(){let e=this.options.position;return e===`top`||e===`bottom`}_drawArgs(e){let{top:t,left:n,bottom:r,right:i,options:a}=this,o=a.align,s=0,c,l,u;return this.isHorizontal()?(l=rM(o,n,i),u=t+e,c=i-n):(a.position===`left`?(l=n+e,u=rM(o,r,t),s=_j*-.5):(l=i-e,u=rM(o,t,r),s=_j*.5),c=r-t),{titleX:l,titleY:u,maxWidth:c,rotation:s}}draw(){let e=this.ctx,t=this.options;if(!t.display)return;let n=tN(t.font),r=n.lineHeight/2+this._padding.top,{titleX:i,titleY:a,maxWidth:o,rotation:s}=this._drawArgs(r);GM(e,t.text,0,0,n,{color:t.color,maxWidth:o,rotation:s,textAlign:nM(t.align),textBaseline:`middle`,translation:[i,a]})}};function sz(e,t){let n=new oz({ctx:e.ctx,options:t,chart:e});HF.configure(e,n,t),HF.addBox(e,n),e.titleBlock=n}var cz={id:`title`,_element:oz,start(e,t,n){sz(e,n)},stop(e){let t=e.titleBlock;HF.removeBox(e,t),delete e.titleBlock},beforeUpdate(e,t,n){let r=e.titleBlock;HF.configure(e,r,n),r.options=n},defaults:{align:`center`,display:!1,font:{weight:`bold`},fullSize:!0,padding:10,position:`top`,text:``,weight:2e3},defaultRoutes:{color:`color`},descriptors:{_scriptable:!0,_indexable:!1}},lz=new WeakMap,uz={id:`subtitle`,start(e,t,n){let r=new oz({ctx:e.ctx,options:n,chart:e});HF.configure(e,r,n),HF.addBox(e,r),lz.set(e,r)},stop(e){HF.removeBox(e,lz.get(e)),lz.delete(e)},beforeUpdate(e,t,n){let r=lz.get(e);HF.configure(e,r,n),r.options=n},defaults:{align:`center`,display:!1,font:{weight:`normal`},fullSize:!0,padding:0,position:`top`,text:``,weight:1500},defaultRoutes:{color:`color`},descriptors:{_scriptable:!0,_indexable:!1}},dz={average(e){if(!e.length)return!1;let t,n,r=new Set,i=0,a=0;for(t=0,n=e.length;te+t)/r.size,y:i/a}},nearest(e,t){if(!e.length)return!1;let n=t.x,r=t.y,i=1/0,a,o,s;for(a=0,o=e.length;a-1?e.split(` +`):e}function mz(e,t){let{element:n,datasetIndex:r,index:i}=t,a=e.getDatasetMeta(r).controller,{label:o,value:s}=a.getLabelAndValue(i);return{chart:e,label:o,parsed:a.getParsed(i),raw:e.data.datasets[r].data[i],formattedValue:s,dataset:a.getDataset(),dataIndex:i,datasetIndex:r,element:n}}function hz(e,t){let n=e.chart.ctx,{body:r,footer:i,title:a}=e,{boxWidth:o,boxHeight:s}=t,c=tN(t.bodyFont),l=tN(t.titleFont),u=tN(t.footerFont),d=a.length,f=i.length,p=r.length,m=eN(t.padding),h=m.height,g=0,_=r.reduce((e,t)=>e+t.before.length+t.lines.length+t.after.length,0);if(_+=e.beforeBody.length+e.afterBody.length,d&&(h+=d*l.lineHeight+(d-1)*t.titleSpacing+t.titleMarginBottom),_){let e=t.displayColors?Math.max(s,c.lineHeight):c.lineHeight;h+=p*e+(_-p)*c.lineHeight+(_-1)*t.bodySpacing}f&&(h+=t.footerMarginTop+f*u.lineHeight+(f-1)*t.footerSpacing);let v=0,y=function(e){g=Math.max(g,n.measureText(e).width+v)};return n.save(),n.font=l.string,ej(e.title,y),n.font=c.string,ej(e.beforeBody.concat(e.afterBody),y),v=t.displayColors?o+2+t.boxPadding:0,ej(r,e=>{ej(e.before,y),ej(e.lines,y),ej(e.after,y)}),v=0,n.font=u.string,ej(e.footer,y),n.restore(),g+=m.width,{width:g,height:h}}function gz(e,t){let{y:n,height:r}=t;return ne.height-r/2?`bottom`:`center`}function _z(e,t,n,r){let{x:i,width:a}=r,o=n.caretSize+n.caretPadding;if(e===`left`&&i+a+o>t.width||e===`right`&&i-a-o<0)return!0}function vz(e,t,n,r){let{x:i,width:a}=n,{width:o,chartArea:{left:s,right:c}}=e,l=`center`;return r===`center`?l=i<=(s+c)/2?`left`:`right`:i<=a/2?l=`left`:i>=o-a/2&&(l=`right`),_z(l,e,t,n)&&(l=`center`),l}function yz(e,t,n){let r=n.yAlign||t.yAlign||gz(e,n);return{xAlign:n.xAlign||t.xAlign||vz(e,t,n,r),yAlign:r}}function bz(e,t){let{x:n,width:r}=e;return t===`right`?n-=r:t===`center`&&(n-=r/2),n}function xz(e,t,n){let{y:r,height:i}=e;return t===`top`?r+=n:t===`bottom`?r-=i+n:r-=i/2,r}function Sz(e,t,n,r){let{caretSize:i,caretPadding:a,cornerRadius:o}=e,{xAlign:s,yAlign:c}=n,l=i+a,{topLeft:u,topRight:d,bottomLeft:f,bottomRight:p}=$M(o),m=bz(t,s),h=xz(t,c,l);return c===`center`?s===`left`?m+=l:s===`right`&&(m-=l):s===`left`?m-=Math.max(u,f)+i:s===`right`&&(m+=Math.max(d,p)+i),{x:Hj(m,0,r.width-t.width),y:Hj(h,0,r.height-t.height)}}function Cz(e,t,n){let r=eN(n.padding);return t===`center`?e.x+e.width/2:t===`right`?e.x+e.width-r.right:e.x+r.left}function wz(e){return fz([],pz(e))}function Tz(e,t,n){return iN(e,{tooltip:t,tooltipItems:n,type:`tooltip`})}function Ez(e,t){let n=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return n?e.override(n):e}var Dz={beforeTitle:UA,title(e){if(e.length>0){let t=e[0],n=t.chart.data.labels,r=n?n.length:0;if(this&&this.options&&this.options.mode===`dataset`)return t.dataset.label||``;if(t.label)return t.label;if(r>0&&t.dataIndex{let t={before:[],lines:[],after:[]},i=Ez(n,e);fz(t.before,pz(Oz(i,`beforeLabel`,this,e))),fz(t.lines,Oz(i,`label`,this,e)),fz(t.after,pz(Oz(i,`afterLabel`,this,e))),r.push(t)}),r}getAfterBody(e,t){return wz(Oz(t.callbacks,`afterBody`,this,e))}getFooter(e,t){let{callbacks:n}=t,r=Oz(n,`beforeFooter`,this,e),i=Oz(n,`footer`,this,e),a=Oz(n,`afterFooter`,this,e),o=[];return o=fz(o,pz(r)),o=fz(o,pz(i)),o=fz(o,pz(a)),o}_createItems(e){let t=this._active,n=this.chart.data,r=[],i=[],a=[],o=[],s,c;for(s=0,c=t.length;se.filter(t,r,i,n))),e.itemSort&&(o=o.sort((t,r)=>e.itemSort(t,r,n))),ej(o,t=>{let n=Ez(e.callbacks,t);r.push(Oz(n,`labelColor`,this,t)),i.push(Oz(n,`labelPointStyle`,this,t)),a.push(Oz(n,`labelTextColor`,this,t))}),this.labelColors=r,this.labelPointStyles=i,this.labelTextColors=a,this.dataPoints=o,o}update(e,t){let n=this.options.setContext(this.getContext()),r=this._active,i,a=[];if(!r.length)this.opacity!==0&&(i={opacity:0});else{let e=dz[n.position].call(this,r,this._eventPosition);a=this._createItems(n),this.title=this.getTitle(a,n),this.beforeBody=this.getBeforeBody(a,n),this.body=this.getBody(a,n),this.afterBody=this.getAfterBody(a,n),this.footer=this.getFooter(a,n);let t=this._size=hz(this,n),o=Object.assign({},e,t),s=yz(this.chart,n,o),c=Sz(n,o,s,this.chart);this.xAlign=s.xAlign,this.yAlign=s.yAlign,i={opacity:1,x:c.x,y:c.y,width:t.width,height:t.height,caretX:e.x,caretY:e.y}}this._tooltipItems=a,this.$context=void 0,i&&this._resolveAnimations().update(this,i),e&&n.external&&n.external.call(this,{chart:this.chart,tooltip:this,replay:t})}drawCaret(e,t,n,r){let i=this.getCaretPosition(e,n,r);t.lineTo(i.x1,i.y1),t.lineTo(i.x2,i.y2),t.lineTo(i.x3,i.y3)}getCaretPosition(e,t,n){let{xAlign:r,yAlign:i}=this,{caretSize:a,cornerRadius:o}=n,{topLeft:s,topRight:c,bottomLeft:l,bottomRight:u}=$M(o),{x:d,y:f}=e,{width:p,height:m}=t,h,g,_,v,y,b;return i===`center`?(y=f+m/2,r===`left`?(h=d,g=h-a,v=y+a,b=y-a):(h=d+p,g=h+a,v=y-a,b=y+a),_=h):(g=r===`left`?d+Math.max(s,l)+a:r===`right`?d+p-Math.max(c,u)-a:this.caretX,i===`top`?(v=f,y=v-a,h=g-a,_=g+a):(v=f+m,y=v+a,h=g+a,_=g-a),b=v),{x1:h,x2:g,x3:_,y1:v,y2:y,y3:b}}drawTitle(e,t,n){let r=this.title,i=r.length,a,o,s;if(i){let c=nP(n.rtl,this.x,this.width);for(e.x=Cz(this,n.titleAlign,n),t.textAlign=c.textAlign(n.titleAlign),t.textBaseline=`middle`,a=tN(n.titleFont),o=n.titleSpacing,t.fillStyle=n.titleColor,t.font=a.string,s=0;se!==0)?(e.beginPath(),e.fillStyle=i.multiKeyBackground,KM(e,{x:t,y:p,w:c,h:s,radius:o}),e.fill(),e.stroke(),e.fillStyle=a.backgroundColor,e.beginPath(),KM(e,{x:n,y:p+1,w:c-2,h:s-2,radius:o}),e.fill()):(e.fillStyle=i.multiKeyBackground,e.fillRect(t,p,c,s),e.strokeRect(t,p,c,s),e.fillStyle=a.backgroundColor,e.fillRect(n,p+1,c-2,s-2))}e.fillStyle=this.labelTextColors[n]}drawBody(e,t,n){let{body:r}=this,{bodySpacing:i,bodyAlign:a,displayColors:o,boxHeight:s,boxWidth:c,boxPadding:l}=n,u=tN(n.bodyFont),d=u.lineHeight,f=0,p=nP(n.rtl,this.x,this.width),m=function(n){t.fillText(n,p.x(e.x+f),e.y+d/2),e.y+=d+i},h=p.textAlign(a),g,_,v,y,b,x,S;for(t.textAlign=a,t.textBaseline=`middle`,t.font=u.string,e.x=Cz(this,h,n),t.fillStyle=n.bodyColor,ej(this.beforeBody,m),f=o&&h!==`right`?a===`center`?c/2+l:c+2+l:0,y=0,x=r.length;y0&&t.stroke()}_updateAnimationTarget(e){let t=this.chart,n=this.$animations,r=n&&n.x,i=n&&n.y;if(r||i){let n=dz[e.position].call(this,this._active,this._eventPosition);if(!n)return;let a=this._size=hz(this,e),o=Object.assign({},n,this._size),s=yz(t,e,o),c=Sz(e,o,s,t);(r._to!==c.x||i._to!==c.y)&&(this.xAlign=s.xAlign,this.yAlign=s.yAlign,this.width=a.width,this.height=a.height,this.caretX=n.x,this.caretY=n.y,this._resolveAnimations().update(this,c))}}_willRender(){return!!this.opacity}draw(e){let t=this.options.setContext(this.getContext()),n=this.opacity;if(!n)return;this._updateAnimationTarget(t);let r={width:this.width,height:this.height},i={x:this.x,y:this.y};n=Math.abs(n)<.001?0:n;let a=eN(t.padding),o=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;t.enabled&&o&&(e.save(),e.globalAlpha=n,this.drawBackground(i,e,r,t),rP(e,t.textDirection),i.y+=a.top,this.drawTitle(i,e,t),this.drawBody(i,e,t),this.drawFooter(i,e,t),iP(e,t.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,t){let n=this._active,r=e.map(({datasetIndex:e,index:t})=>{let n=this.chart.getDatasetMeta(e);if(!n)throw Error(`Cannot find a dataset at index `+e);return{datasetIndex:e,element:n.data[t],index:t}}),i=!tj(n,r),a=this._positionChanged(r,t);(i||a)&&(this._active=r,this._eventPosition=t,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,t,n=!0){if(t&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;let r=this.options,i=this._active||[],a=this._getActiveElements(e,i,t,n),o=this._positionChanged(a,e),s=t||!tj(a,i)||o;return s&&(this._active=a,(r.enabled||r.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,t))),s}_getActiveElements(e,t,n,r){let i=this.options;if(e.type===`mouseout`)return[];if(!r)return t.filter(e=>this.chart.data.datasets[e.datasetIndex]&&this.chart.getDatasetMeta(e.datasetIndex).controller.getParsed(e.index)!==void 0);let a=this.chart.getElementsAtEventForMode(e,i.mode,i,n);return i.reverse&&a.reverse(),a}_positionChanged(e,t){let{caretX:n,caretY:r,options:i}=this,a=dz[i.position].call(this,e,t);return a!==!1&&(n!==a.x||r!==a.y)}},Az=Object.freeze({__proto__:null,Colors:pR,Decimation:yR,Filler:XR,Legend:az,SubTitle:uz,Title:cz,Tooltip:{id:`tooltip`,_element:kz,positioners:dz,afterInit(e,t,n){n&&(e.tooltip=new kz({chart:e,options:n}))},beforeUpdate(e,t,n){e.tooltip&&e.tooltip.initialize(n)},reset(e,t,n){e.tooltip&&e.tooltip.initialize(n)},afterDraw(e){let t=e.tooltip;if(t&&t._willRender()){let n={tooltip:t};if(e.notifyPlugins(`beforeTooltipDraw`,{...n,cancelable:!0})===!1)return;t.draw(e.ctx),e.notifyPlugins(`afterTooltipDraw`,n)}},afterEvent(e,t){if(e.tooltip){let n=t.replay;e.tooltip.handleEvent(t.event,n,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:`average`,backgroundColor:`rgba(0,0,0,0.8)`,titleColor:`#fff`,titleFont:{weight:`bold`},titleSpacing:2,titleMarginBottom:6,titleAlign:`left`,bodyColor:`#fff`,bodySpacing:2,bodyFont:{},bodyAlign:`left`,footerColor:`#fff`,footerSpacing:2,footerMarginTop:6,footerFont:{weight:`bold`},footerAlign:`left`,padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(e,t)=>t.bodyFont.size,boxWidth:(e,t)=>t.bodyFont.size,multiKeyBackground:`#fff`,displayColors:!0,boxPadding:0,borderColor:`rgba(0,0,0,0)`,borderWidth:0,animation:{duration:400,easing:`easeOutQuart`},animations:{numbers:{type:`number`,properties:[`x`,`y`,`width`,`height`,`caretX`,`caretY`]},opacity:{easing:`linear`,duration:200}},callbacks:Dz},defaultRoutes:{bodyFont:`font`,footerFont:`font`,titleFont:`font`},descriptors:{_scriptable:e=>e!==`filter`&&e!==`itemSort`&&e!==`external`,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:`animation`}},additionalOptionScopes:[`interaction`]}}),jz=(e,t,n,r)=>(typeof t==`string`?(n=e.push(t)-1,r.unshift({index:n,label:t})):isNaN(t)&&(n=null),n);function Mz(e,t,n,r){let i=e.indexOf(t);return i===-1?jz(e,t,n,r):i===e.lastIndexOf(t)?i:n}var Nz=(e,t)=>e===null?null:Hj(Math.round(e),0,t);function Pz(e){let t=this.getLabels();return e>=0&&et.length-1?null:this.getPixelForValue(t[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}};function Iz(e,t){let n=[],{bounds:r,step:i,min:a,max:o,precision:s,count:c,maxTicks:l,maxDigits:u,includeBounds:d}=e,f=i||1,p=l-1,{min:m,max:h}=t,g=!GA(a),_=!GA(o),v=!GA(c),y=(h-m)/(u+1),b=Oj((h-m)/p/f)*f,x,S,C,w;if(b<1e-14&&!g&&!_)return[{value:m},{value:h}];w=Math.ceil(h/b)-Math.floor(m/b),w>p&&(b=Oj(w*b/p/f)*f),GA(s)||(x=10**s,b=Math.ceil(b*x)/x),r===`ticks`?(S=Math.floor(m/b)*b,C=Math.ceil(h/b)*b):(S=m,C=h),g&&_&&i&&Mj((o-a)/i,b/1e3)?(w=Math.round(Math.min((o-a)/b,l)),b=(o-a)/w,S=a,C=o):v?(S=g?a:S,C=_?o:C,w=c-1,b=(C-S)/w):(w=(C-S)/b,w=Dj(w,Math.round(w),b/1e3)?Math.round(w):Math.ceil(w));let T=Math.max(Ij(b),Ij(S));x=10**(GA(s)?T:s),S=Math.round(S*x)/x,C=Math.round(C*x)/x;let ee=0;for(g&&(d&&S!==a?(n.push({value:a}),So)break;n.push({value:e})}return _&&d&&C!==o?n.length&&Dj(n[n.length-1].value,o,Lz(o,y,e))?n[n.length-1].value=o:n.push({value:o}):(!_||C===o)&&n.push({value:C}),n}function Lz(e,t,{horizontal:n,minRotation:r}){let i=Pj(r),a=(n?Math.sin(i):Math.cos(i))||.001,o=.75*t*(``+e).length;return Math.min(t/a,o)}var Rz=class extends MI{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(e,t){return GA(e)||(typeof e==`number`||e instanceof Number)&&!isFinite(+e)?null:+e}handleTickRangeOptions(){let{beginAtZero:e}=this.options,{minDefined:t,maxDefined:n}=this.getUserBounds(),{min:r,max:i}=this,a=e=>r=t?r:e,o=e=>i=n?i:e;if(e){let e=Ej(r),t=Ej(i);e<0&&t<0?o(0):e>0&&t>0&&a(0)}if(r===i){let t=i===0?1:Math.abs(i*.05);o(i+t),e||a(r-t)}this.min=r,this.max=i}getTickLimit(){let{maxTicksLimit:e,stepSize:t}=this.options.ticks,n;return t?(n=Math.ceil(this.max/t)-Math.floor(this.min/t)+1,n>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${t} would result generating up to ${n} ticks. Limiting to 1000.`),n=1e3)):(n=this.computeTickLimit(),e||=11),e&&(n=Math.min(e,n)),n}computeTickLimit(){return 1/0}buildTicks(){let e=this.options,t=e.ticks,n=this.getTickLimit();n=Math.max(2,n);let r=Iz({maxTicks:n,bounds:e.bounds,min:e.min,max:e.max,precision:t.precision,step:t.stepSize,count:t.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:t.minRotation||0,includeBounds:t.includeBounds!==!1},this._range||this);return e.bounds===`ticks`&&Nj(r,this,`value`),e.reverse?(r.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),r}configure(){let e=this.ticks,t=this.min,n=this.max;if(super.configure(),this.options.offset&&e.length){let r=(n-t)/Math.max(e.length-1,1)/2;t-=r,n+=r}this._startValue=t,this._endValue=n,this._valueRange=n-t}getLabelForValue(e){return bM(e,this.chart.options.locale,this.options.ticks.format)}},zz=class extends Rz{static id=`linear`;static defaults={ticks:{callback:CM.formatters.numeric}};determineDataLimits(){let{min:e,max:t}=this.getMinMax(!0);this.min=JA(e)?e:0,this.max=JA(t)?t:1,this.handleTickRangeOptions()}computeTickLimit(){let e=this.isHorizontal(),t=e?this.width:this.height,n=Pj(this.options.ticks.minRotation),r=(e?Math.sin(n):Math.cos(n))||.001,i=this._resolveTickFontOptions(0);return Math.ceil(t/Math.min(40,i.lineHeight/r))}getPixelForValue(e){return e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}},Bz=e=>Math.floor(Tj(e)),Vz=(e,t)=>10**(Bz(e)+t);function Hz(e){return e/10**Bz(e)==1}function Uz(e,t,n){let r=10**n,i=Math.floor(e/r);return Math.ceil(t/r)-i}function Wz(e,t){let n=Bz(t-e);for(;Uz(e,t,n)>10;)n++;for(;Uz(e,t,n)<10;)n--;return Math.min(n,Bz(e))}function Gz(e,{min:t,max:n}){t=YA(e.min,t);let r=[],i=Bz(t),a=Wz(t,n),o=a<0?10**Math.abs(a):1,s=10**a,c=i>a?10**i:0,l=Math.round((t-c)*o)/o,u=Math.floor((t-c)/s/10)*s*10,d=Math.floor((l-u)/10**a),f=YA(e.min,Math.round((c+u+d*10**a)*o)/o);for(;f=10?d=d<15?15:20:d++,d>=20&&(a++,d=2,o=a>=0?1:o),f=Math.round((c+u+d*10**a)*o)/o;let p=YA(e.max,f);return r.push({value:p,major:Hz(p),significand:d}),r}var Kz=class extends MI{static id=`logarithmic`;static defaults={ticks:{callback:CM.formatters.logarithmic,major:{enabled:!0}}};constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(e,t){let n=Rz.prototype.parse.apply(this,[e,t]);if(n===0){this._zero=!0;return}return JA(n)&&n>0?n:null}determineDataLimits(){let{min:e,max:t}=this.getMinMax(!0);this.min=JA(e)?Math.max(0,e):null,this.max=JA(t)?Math.max(0,t):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!JA(this._userMin)&&(this.min=e===Vz(this.min,0)?Vz(this.min,-1):Vz(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){let{minDefined:e,maxDefined:t}=this.getUserBounds(),n=this.min,r=this.max,i=t=>n=e?n:t,a=e=>r=t?r:e;n===r&&(n<=0?(i(1),a(10)):(i(Vz(n,-1)),a(Vz(r,1)))),n<=0&&i(Vz(r,-1)),r<=0&&a(Vz(n,1)),this.min=n,this.max=r}buildTicks(){let e=this.options,t=Gz({min:this._userMin,max:this._userMax},this);return e.bounds===`ticks`&&Nj(t,this,`value`),e.reverse?(t.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),t}getLabelForValue(e){return e===void 0?`0`:bM(e,this.chart.options.locale,this.options.ticks.format)}configure(){let e=this.min;super.configure(),this._startValue=Tj(e),this._valueRange=Tj(this.max)-Tj(e)}getPixelForValue(e){return(e===void 0||e===0)&&(e=this.min),e===null||isNaN(e)?NaN:this.getPixelForDecimal(e===this.min?0:(Tj(e)-this._startValue)/this._valueRange)}getValueForPixel(e){let t=this.getDecimalForPixel(e);return 10**(this._startValue+t*this._valueRange)}};function qz(e){let t=e.ticks;if(t.display&&e.display){let e=eN(t.backdropPadding);return XA(t.font&&t.font.size,kM.font.size)+e.height}return 0}function Jz(e,t,n){return n=KA(n)?n:[n],{w:MM(e,t.string,n),h:n.length*t.lineHeight}}function Yz(e,t,n,r,i){return e===r||e===i?{start:t-n/2,end:t+n/2}:ei?{start:t-n,end:t}:{start:t,end:t+n}}function Xz(e){let t={l:e.left+e._padding.left,r:e.right-e._padding.right,t:e.top+e._padding.top,b:e.bottom-e._padding.bottom},n=Object.assign({},t),r=[],i=[],a=e._pointLabels.length,o=e.options.pointLabels,s=o.centerPointLabels?_j/a:0;for(let c=0;ct.r&&(s=(r.end-t.r)/a,e.r=Math.max(e.r,t.r+s)),i.startt.b&&(c=(i.end-t.b)/o,e.b=Math.max(e.b,t.b+c))}function Qz(e,t,n){let r=e.drawingArea,{extra:i,additionalAngle:a,padding:o,size:s}=n,c=e.getPointPosition(t,r+i+o,a),l=Math.round(Fj(Bj(c.angle+Sj))),u=rB(c.y,s.h,l),d=tB(l),f=nB(c.x,s.w,d);return{visible:!0,x:c.x,y:u,textAlign:d,left:f,top:u,right:f+s.w,bottom:u+s.h}}function $z(e,t){if(!t)return!0;let{left:n,top:r,right:i,bottom:a}=e;return!(LM({x:n,y:r},t)||LM({x:n,y:a},t)||LM({x:i,y:r},t)||LM({x:i,y:a},t))}function eB(e,t,n){let r=[],i=e._pointLabels.length,a=e.options,{centerPointLabels:o,display:s}=a.pointLabels,c={extra:qz(a)/2,additionalAngle:o?_j/i:0},l;for(let a=0;a270||n<90)&&(e-=t),e}function iB(e,t,n){let{left:r,top:i,right:a,bottom:o}=n,{backdropColor:s}=t;if(!GA(s)){let n=$M(t.borderRadius),c=eN(t.backdropPadding);e.fillStyle=s;let l=r-c.left,u=i-c.top,d=a-r+c.width,f=o-i+c.height;Object.values(n).some(e=>e!==0)?(e.beginPath(),KM(e,{x:l,y:u,w:d,h:f,radius:n}),e.fill()):e.fillRect(l,u,d,f)}}function aB(e,t){let{ctx:n,options:{pointLabels:r}}=e;for(let i=t-1;i>=0;i--){let t=e._pointLabelItems[i];if(!t.visible)continue;let a=r.setContext(e.getPointLabelContext(i));iB(n,a,t);let o=tN(a.font),{x:s,y:c,textAlign:l}=t;GM(n,e._pointLabels[i],s,c+o.lineHeight/2,o,{color:a.color,textAlign:l,textBaseline:`middle`})}}function oB(e,t,n,r){let{ctx:i}=e;if(n)i.arc(e.xCenter,e.yCenter,t,0,vj);else{let n=e.getPointPosition(0,t);i.moveTo(n.x,n.y);for(let a=1;a{let n=$A(this.options.pointLabels.callback,[e,t],this);return n||n===0?n:``}).filter((e,t)=>this.chart.getDataVisibility(t))}fit(){let e=this.options;e.display&&e.pointLabels.display?Xz(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(e,t,n,r){this.xCenter+=Math.floor((e-t)/2),this.yCenter+=Math.floor((n-r)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(e,t,n,r))}getIndexAngle(e){let t=vj/(this._pointLabels.length||1),n=this.options.startAngle||0;return Bj(e*t+Pj(n))}getDistanceFromCenterForValue(e){if(GA(e))return NaN;let t=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-e)*t:(e-this.min)*t}getValueForDistanceFromCenter(e){if(GA(e))return NaN;let t=e/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-t:this.min+t}getPointLabelContext(e){let t=this._pointLabels||[];if(e>=0&&e{if(t!==0||t===0&&this.min<0){s=this.getDistanceFromCenterForValue(e.value);let n=this.getContext(t),o=r.setContext(n),c=i.setContext(n);sB(this,o,s,a,c)}}),n.display){for(e.save(),o=a-1;o>=0;o--){let r=n.setContext(this.getPointLabelContext(o)),{color:i,lineWidth:a}=r;!a||!i||(e.lineWidth=a,e.strokeStyle=i,e.setLineDash(r.borderDash),e.lineDashOffset=r.borderDashOffset,s=this.getDistanceFromCenterForValue(t.reverse?this.min:this.max),c=this.getPointPosition(o,s),e.beginPath(),e.moveTo(this.xCenter,this.yCenter),e.lineTo(c.x,c.y),e.stroke())}e.restore()}}drawBorder(){}drawLabels(){let e=this.ctx,t=this.options,n=t.ticks;if(!n.display)return;let r=this.getIndexAngle(0),i,a;e.save(),e.translate(this.xCenter,this.yCenter),e.rotate(r),e.textAlign=`center`,e.textBaseline=`middle`,this.ticks.forEach((r,o)=>{if(o===0&&this.min>=0&&!t.reverse)return;let s=n.setContext(this.getContext(o)),c=tN(s.font);if(i=this.getDistanceFromCenterForValue(this.ticks[o].value),s.showLabelBackdrop){e.font=c.string,a=e.measureText(r.label).width,e.fillStyle=s.backdropColor;let t=eN(s.backdropPadding);e.fillRect(-a/2-t.left,-i-c.size/2-t.top,a+t.width,c.size+t.height)}GM(e,r.label,0,-i,c,{color:s.color,strokeColor:s.textStrokeColor,strokeWidth:s.textStrokeWidth})}),e.restore()}drawTitle(){}},uB={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},dB=Object.keys(uB);function fB(e,t){return e-t}function pB(e,t){if(GA(t))return null;let n=e._adapter,{parser:r,round:i,isoWeekday:a}=e._parseOpts,o=t;return typeof r==`function`&&(o=r(o)),JA(o)||(o=typeof r==`string`?n.parse(o,r):n.parse(o)),o===null?null:(i&&(o=i===`week`&&(jj(a)||a===!0)?n.startOf(o,`isoWeek`,a):n.startOf(o,i)),+o)}function mB(e,t,n,r){let i=dB.length;for(let a=dB.indexOf(e);a=dB.indexOf(n);a--){let n=dB[a];if(uB[n].common&&e._adapter.diff(i,r,n)>=t-1)return n}return dB[n?dB.indexOf(n):0]}function gB(e){for(let t=dB.indexOf(e)+1,n=dB.length;t=t?n[r]:n[i];e[a]=!0}}function vB(e,t,n,r){let i=e._adapter,a=+i.startOf(t[0].value,r),o=t[t.length-1].value,s,c;for(s=a;s<=o;s=+i.add(s,1,r))c=n[s],c>=0&&(t[c].major=!0);return t}function yB(e,t,n){let r=[],i={},a=t.length,o,s;for(o=0;o+e.value))}initOffsets(e=[]){let t=0,n=0,r,i;this.options.offset&&e.length&&(r=this.getDecimalForValue(e[0]),t=e.length===1?1-r:(this.getDecimalForValue(e[1])-r)/2,i=this.getDecimalForValue(e[e.length-1]),n=e.length===1?i:(i-this.getDecimalForValue(e[e.length-2]))/2);let a=e.length<3?.5:.25;t=Hj(t,0,a),n=Hj(n,0,a),this._offsets={start:t,end:n,factor:1/(t+1+n)}}_generate(){let e=this._adapter,t=this.min,n=this.max,r=this.options,i=r.time,a=i.unit||mB(i.minUnit,t,n,this._getLabelCapacity(t)),o=XA(r.ticks.stepSize,1),s=a===`week`&&i.isoWeekday,c=jj(s)||s===!0,l={},u=t,d,f;if(c&&(u=+e.startOf(u,`isoWeek`,s)),u=+e.startOf(u,c?`day`:a),e.diff(n,t,a)>1e5*o)throw Error(t+` and `+n+` are too far apart with stepSize of `+o+` `+a);let p=r.ticks.source===`data`&&this.getDataTimestamps();for(d=u,f=0;d+e)}getLabelForValue(e){let t=this._adapter,n=this.options.time;return n.tooltipFormat?t.format(e,n.tooltipFormat):t.format(e,n.displayFormats.datetime)}format(e,t){let n=this.options.time.displayFormats,r=this._unit,i=t||n[r];return this._adapter.format(e,i)}_tickFormatFunction(e,t,n,r){let i=this.options,a=i.ticks.callback;if(a)return $A(a,[e,t,n],this);let o=i.time.displayFormats,s=this._unit,c=this._majorUnit,l=s&&o[s],u=c&&o[c],d=n[t],f=c&&u&&d&&d.major;return this._adapter.format(e,r||(f?u:l))}generateTickLabels(e){let t,n,r;for(t=0,n=e.length;t0?o:1}getDataTimestamps(){let e=this._cache.data||[],t,n;if(e.length)return e;let r=this.getMatchingVisibleMetas();if(this._normalized&&r.length)return this._cache.data=r[0].controller.getAllParsedValues(this);for(t=0,n=r.length;t=e[r].pos&&t<=e[i].pos&&({lo:r,hi:i}=Kj(e,`pos`,t)),{pos:a,time:s}=e[r],{pos:o,time:c}=e[i]):(t>=e[r].time&&t<=e[i].time&&({lo:r,hi:i}=Kj(e,`time`,t)),{time:a,pos:s}=e[r],{time:o,pos:c}=e[i]);let l=o-a;return l?s+(c-s)*(t-a)/l:s}var SB=class extends bB{static id=`timeseries`;static defaults=bB.defaults;constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){let e=this._getTimestampsForTable(),t=this._table=this.buildLookupTable(e);this._minPos=xB(t,this.min),this._tableRange=xB(t,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){let{min:t,max:n}=this,r=[],i=[],a,o,s,c,l;for(a=0,o=e.length;a=t&&c<=n&&r.push(c);if(r.length<2)return[{time:t,pos:0},{time:n,pos:1}];for(a=0,o=r.length;ae-t)}_getTimestampsForTable(){let e=this._cache.all||[];if(e.length)return e;let t=this.getDataTimestamps(),n=this.getLabelTimestamps();return e=t.length&&n.length?this.normalize(t.concat(n)):t.length?t:n,e=this._cache.all=e,e}getDecimalForValue(e){return(xB(this._table,e)-this._minPos)/this._tableRange}getValueForPixel(e){let t=this._offsets,n=this.getDecimalForPixel(e)/t.factor-t.end;return xB(this._table,n*this._tableRange+this._minPos,!0)}},CB=[mF,tR,Az,Object.freeze({__proto__:null,CategoryScale:Fz,LinearScale:zz,LogarithmicScale:Kz,RadialLinearScale:lB,TimeScale:bB,TimeSeriesScale:SB})];bL.register(...CB);var wB=bL,TB=z(``);function EB(e,t){D(t,!0);let n=K(t,`class`,3,``),r=K(t,`ariaLabel`,3,``);function i(e){if(Da.tick,typeof t.build!=`function`)return;let n=t.build();if(!n)return;let r=new wB(e.getContext(`2d`),n);return()=>r.destroy()}var a=TB();ji(a,()=>i),I(()=>{W(a,1,Pi(n())),G(a,`aria-label`,r())}),B(e,a),O()}var DB=z(``),OB=z(`
                `);function kB(e,t){D(t,!0);let n=K(t,`options`,19,()=>[]),r=K(t,`ariaLabel`,3,``),i=K(t,`class`,3,``);var a=OB();U(a,21,n,e=>e.value,(e,n)=>{var r=DB();let i;var a=N(r,!0);E(r),I(()=>{i=W(r,1,`segmented-btn svelte-92fh5i`,null,i,{active:t.value===L(n).value}),G(r,`aria-pressed`,t.value===L(n).value),V(a,L(n).label)}),R(`click`,r,()=>t.onchange?.(L(n).value)),B(e,r)}),E(a),I(()=>{W(a,1,Pi([`segmented-control`,i()]),`svelte-92fh5i`),G(a,`aria-label`,r())}),B(e,a),O()}Vr([`click`]);function AB(e){return getComputedStyle(document.documentElement).getPropertyValue(e).trim()}function jB(){return{grid:AB(`--chart-grid`),text:AB(`--chart-text`),dayMarker:AB(`--chart-day-marker`),tooltipBg:AB(`--chart-tooltip-bg`),tooltipBorder:AB(`--chart-tooltip-border`),tooltipText:AB(`--chart-tooltip-text`)}}function MB(){return{size:11,family:`'SF Mono', Menlo, Consolas, monospace`}}function NB(e,t){return{backgroundColor:e.tooltipBg,borderColor:e.tooltipBorder,borderWidth:1,titleColor:e.tooltipText,bodyColor:e.tooltipText,callbacks:t}}function PB(e){if(typeof document>`u`||!document.body)return e;let t=document.createElement(`span`);t.style.display=`none`,t.style.color=e,document.body.appendChild(t);let n=getComputedStyle(t).color;return document.body.removeChild(t),n||e}var FB=[`#c2845a`,`#7a9e7e`,`#d4a574`,`#b8a98e`,`#8b9e6b`,`#7d8a97`,`#c47a5a`,`#6b8e6b`,`#a09486`,`#9b7ea4`,`#c49a6c`];function IB(){return[...FB]}function LB(e){let t=5381,n=String(e||``);for(let e=0;etk(e)}}var UB={seconds:{apiName:`second`,windowLabel:fv(),refreshMs:2e3},minutes:{apiName:`minute`,windowLabel:hv(),refreshMs:5e3},hours:{apiName:`hour`,windowLabel:vv(),refreshMs:2e4},days:{apiName:`day`,windowLabel:xv(),refreshMs:6e4}},WB=[{value:`seconds`,label:ev()},{value:`minutes`,label:rv()},{value:`hours`,label:ov()},{value:`days`,label:lv()}];function GB(){return{input:0,output:0,prompt:0,local:0}}function KB(e){return String(e).padStart(2,`0`)}function qB(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:0}function JB(e,t){if(!Number.isFinite(t))return``;let n=new Date(t);switch(e){case`seconds`:return KB(n.getHours())+`:`+KB(n.getMinutes())+`:`+KB(n.getSeconds());case`minutes`:return KB(n.getHours())+`:`+KB(n.getMinutes());case`hours`:return KB(n.getHours())+`:00`;default:return KB(n.getMonth()+1)+`-`+KB(n.getDate())}}function YB(e,t){let n=[],r=[],i={input:[],output:[],prompt:[],local:[]},a=GB();for(let o of e||[]){let e=Date.parse(o&&o.start),s=qB(o&&o.input_tokens),c=qB(o&&o.output_tokens),l=qB(o&&o.prompt_cached_tokens),u=qB(o&&o.locally_cached_tokens);n.push(JB(t,e)),r.push(Number.isFinite(e)?e:null),i.input.push(s),i.output.push(c),i.prompt.push(l),i.local.push(u),a.input+=s,a.output+=c,a.prompt+=l,a.local+=u}return{labels:n,stamps:r,cols:i,totals:a}}function XB(e){let t=e||GB();return t.input+t.output+t.prompt+t.local>0}function ZB(e,t){return tk(Math.max(0,Math.round(e&&e[t]||0)))}function QB(e){return(UB[e]||UB.minutes).windowLabel}function $B(e,t){return ly({window:QB(t).toLowerCase(),input:ZB(e,`input`),output:ZB(e,`output`),prompt:ZB(e,`prompt`),local:ZB(e,`local`)})}function eV(e,t,n,r){let i=e=>tk(Math.max(0,Math.round(e))),a=n.stamps,o=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderWidth:0,borderRadius:0,categoryPercentage:1,barPercentage:1,stack:`tokens`});return{type:`bar`,plugins:[{id:`liveTokensDayMarks`,afterDatasetsDraw:t=>{if(r===`days`)return;let n=t.getDatasetMeta(0),i=t.chartArea;if(!n||!n.data||!i)return;let o=t.ctx;o.save(),o.font=`10px 'SF Mono', Menlo, Consolas, monospace`;let s=null;for(let t=0;t{if(!e.length)return``;let t=a[e[0].dataIndex];if(!t)return e[0].label;let n=new Date(t);return r===`days`?n.toLocaleDateString():n.toLocaleString()},label:e=>e.dataset.label+`: `+i(e.parsed.y),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),Av({total:i(t)})}})}}}}var tV=900,nV=new class{#e=A(`minutes`);get granularity(){return L(this.#e)}set granularity(e){j(this.#e,e,!0)}#t=A(M([]));get buckets(){return L(this.#t)}set buckets(e){j(this.#t,e,!0)}#n=A(!1);get active(){return L(this.#n)}set active(e){j(this.#n,e,!0)}#r=null;#i=null;#a=null;#o=0;#s=null;#c=!1;start(){this.stop(),this.active=!0,this.fetch(),this.#l(),this.#u()}stop(){this.active=!1,this.#r&&=(clearInterval(this.#r),null),this.#i&&=(clearTimeout(this.#i),null),this.#a&&=(clearTimeout(this.#a),null),this.#o=0,this.#s&&=(this.#s.abort(),null),this.buckets=[]}setGranularity(e){!UB[e]||e===this.granularity||(this.granularity=e,this.buckets=[],this.#l(),this.fetch())}#l(){this.#r&&=(clearInterval(this.#r),null);let e=UB[this.granularity]||UB.minutes;this.#r=setInterval(()=>{this.active&&this.fetch()},e.refreshMs)}noteUsageEvent(e){!this.active||e!==`usage.flushed`||(this.#i||=setTimeout(()=>{this.#i=null,this.fetch()},tV))}async fetch(){if(!this.active||this.#c)return;this.#c=!0;let e=this.granularity;try{let t=await iO(`/admin/usage/throughput?granularity=`+(UB[e]||UB.minutes).apiName,{label:`token throughput`});if(t.stale||!t.ok||this.granularity!==e)return;this.buckets=t.data&&Array.isArray(t.data.buckets)?t.data.buckets:[]}catch(e){if(oO(e))return;console.error(`Failed to fetch token throughput:`,e)}finally{this.#c=!1,this.active&&this.granularity!==e&&this.fetch()}}async#u(){await lO.ensureLoaded(),this.active&&lO.liveLogsVisible()&&(typeof ReadableStream>`u`||(this.#s&&this.#s.abort(),this.#s=new AbortController,this.#d(this.#s)))}async#d(e){let t=()=>{e.signal.aborted||this.#s!==e||this.#p()};try{let n=await nO(`/admin/live/logs?types=usage`,{signal:e.signal});if(!n.ok||!n.body||typeof n.body.getReader!=`function`){t();return}this.#o=0,await zB(n.body.getReader(),e=>this.#f(e)),t()}catch(n){if(oO(n)||e.signal.aborted)return;console.error(`Live usage stream failed:`,n),t()}}#f(e){if(!e||typeof e!=`object`)return;let t=String(e.type||``).trim();t.indexOf(`usage.`)===0&&this.noteUsageEvent(t)}#p(){if(!this.active||this.#a)return;let{attempt:e,delay:t}=VB(this.#o);this.#o=e,this.#a=setTimeout(()=>{this.#a=null,this.#u()},t)}},rV=z(`
                `),iV=z(`
                `),aV=z(`

                `);function oV(e,t){D(t,!0);let n=k(()=>YB(nV.buckets,nV.granularity)),r=k(()=>L(n).totals);function i(){return{input:PB(`var(--token-input)`),output:PB(`var(--token-output)`),prompt:PB(`var(--token-prompt)`),local:PB(`var(--token-local)`)}}let a=[{metric:`input`,label:fm,colorVar:`--token-input`},{metric:`output`,label:hm,colorVar:`--token-output`},{metric:`prompt`,label:wv,colorVar:`--token-prompt`},{metric:`local`,label:Dv,colorVar:`--token-local`}];var o=aV(),s=N(o),c=N(s),l=N(c),u=N(l,!0);E(l);var d=F(l,2),f=N(d);let p;var m=F(f,2),h=N(m,!0);E(m),E(d),E(c);var g=F(c,2);{let e=k(()=>J_());kB(g,{get ariaLabel(){return L(e)},get options(){return WB},get value(){return nV.granularity},onchange:e=>nV.setGranularity(e)})}E(s);var _=F(s,2);U(_,21,()=>a,e=>e.metric,(e,t)=>{var n=rV(),i=N(n),a=F(i,2),o=N(a,!0);E(a);var s=F(a,2),c=N(s,!0);E(s),E(n),I((e,n)=>{Vi(i,`background: var(${L(t).colorVar??``})`),V(o,e),V(c,n)},[()=>L(t).label(),()=>ZB(L(r),L(t).metric)]),B(e,n)}),E(_);var v=F(_,2),y=N(v);{let e=k(()=>$B(L(r),nV.granularity));EB(y,{get ariaLabel(){return L(e)},build:()=>eV(jB(),i(),L(n),nV.granularity)})}var b=F(y,2),x=e=>{var t=iV(),n=N(t),r=N(n,!0);E(n),E(t),I(e=>V(r,e),[()=>Z_()]),B(e,t)},S=k(()=>!XB(L(r)));H(b,e=>{L(S)&&e(x)}),E(v),E(o),I((e,t)=>{V(u,e),p=W(f,1,`live-dot`,null,p,{"is-streaming":nV.active}),V(h,t)},[()=>G_(),()=>QB(nV.granularity)]),B(e,o),O()}function sV(e){let t=e||{};if(t.total_tokens!==null&&t.total_tokens!==void 0){let e=Number(t.total_tokens);if(Number.isFinite(e))return e}let n=Number(t.total_input_tokens||0),r=Number(t.total_output_tokens||0);return(Number.isFinite(n)?n:0)+(Number.isFinite(r)?r:0)}function cV(e,t){if(!t)return 0;let n=e&&e.summary?e.summary:{},r=Number(n.total_hits||0);return Number.isFinite(r)&&r>0?r:0}function lV(e,t,n){let r=Number(e&&e.total_requests||0);return(Number.isFinite(r)?r:0)+cV(t,n)}function uV(e,t,n){let r=cV(t,n);return r<=0?``:Nv({provider:ZO(lV(e,t,n)-r),cache:ZO(r)})}function dV(e){let t=e&&e.summary?e.summary:{},n=Number(t.total_input_tokens||0),r=Number(t.total_output_tokens||0);return(Number.isFinite(n)?n:0)+(Number.isFinite(r)?r:0)}function fV(e,t,n){let r=e=>{let t=Number(e||0);return Number.isFinite(t)&&t>0?t:0},i=e||{},a=r(i.uncached_input_tokens),o=r(i.cached_input_tokens),s=r(i.cache_write_input_tokens),c=t&&t.summary?t.summary:{},l=n?r(c.total_input_tokens):0;return[{key:`uncached`,label:Zg(),tokens:a+s,colorVar:`--cache-meter-uncached`,note:s>0?e_({count:ZO(s)}):``},{key:`prompt`,label:r_(),tokens:o,colorVar:`--cache-meter-prompt`,note:o_()},{key:`local`,label:l_(),tokens:l,colorVar:`--cache-meter-local`,note:f_()}]}function pV(e,t,n){return fV(e,t,n).reduce((e,t)=>e+t.tokens,0)}function mV(e,t,n){return pV(e,t,n)>0}function hV(e,t,n){let r=fV(e,t,n),i=r.reduce((e,t)=>e+t.tokens,0);if(i<=0)return r.map(e=>Object.assign({},e,{pct:0}));let a=r.map(e=>{let t=e.tokens/i*100,n=Math.floor(t);return Object.assign({},e,{pct:n,remainder:t-n})}),o=100-a.reduce((e,t)=>e+t.pct,0);return a.map((e,t)=>({index:t,remainder:e.remainder,tokens:e.tokens})).filter(e=>e.tokens>0).sort((e,t)=>t.remainder-e.remainder).forEach(e=>{o>0&&(a[e.index].pct+=1,--o)}),a}function gV(e,t,n){return hV(e,t,n).filter(e=>e.tokens>0)}function _V(e){let t=[Iv({label:e.label,tokens:ZO(e.tokens),percent:e.pct})];return e.note&&t.push(e.note),t.join(` +`)}function vV(e){let t=(e||[]).map(e=>e.label+` `+e.pct+`%`);return h_({details:t.length?t.join(`, `):zv()})}function yV(e){return e.getUTCFullYear()+`-`+String(e.getUTCMonth()+1).padStart(2,`0`)+`-`+String(e.getUTCDate()).padStart(2,`0`)}function bV(e,t,n,r){if(t!==`daily`||!n||!r)return e;let i={};(e||[]).forEach(e=>{i[e.date]=e});let a=[];for(let e=new Date(n);e<=r;e.setUTCDate(e.getUTCDate()+1)){let t=yV(e);a.push(i[t]||{date:t,input_tokens:0,output_tokens:0,total_tokens:0,requests:0,input_cost:null,output_cost:null,total_cost:null})}return a}function xV(e,t){let n=e=>Number(e)||0,r=e.map(e=>e.date),i=e.map(e=>n(e.uncached_input_tokens)+n(e.cache_write_input_tokens)+n(e.cached_input_tokens)>0?n(e.uncached_input_tokens)+n(e.cache_write_input_tokens):n(e.input_tokens)),a=e.map(e=>n(e.output_tokens)),o=e.map(e=>n(e.cached_input_tokens)),s={};return(t||[]).forEach(e=>{s[e.date]=e}),{labels:r,inputPaid:i,output:a,prompt:o,local:r.map(e=>{let t=s[e];return t?n(t.input_tokens)+n(t.output_tokens):0})}}function SV(e){let t=e||{},n=Math.max(0,Number(t.uncached_input_tokens)||0),r=Math.max(0,Number(t.cached_input_tokens)||0),i=Math.max(0,Number(t.cache_write_input_tokens)||0),a=n+r+i;return a>0?r/a*100:0}function CV(e){let t=e||{};return(Number(t.uncached_input_tokens)||0)+(Number(t.cached_input_tokens)||0)+(Number(t.cache_write_input_tokens)||0)>0}function wV(e){return CV(e)?Math.round(SV(e))+`%`:`—`}function TV(e,t,n={}){let r=!!n.cacheEnabled,i=n.resolve||(e=>e),a=(e,t)=>i(`color-mix(in srgb, `+e+` `+t+`%, transparent)`),o=(e,t,n,r)=>Object.assign({label:e,data:t,borderColor:n,backgroundColor:n,fill:!1,tension:.3,borderWidth:2,pointRadius:0,pointHoverRadius:4},r||{}),s=[o(fm(),t.inputPaid,i(`var(--token-input)`),{fill:`origin`}),o(hm(),t.output,i(`var(--token-output)`),{fill:`-1`}),o(wv(),t.prompt,i(`var(--token-prompt)`),{fill:`-1`,borderDash:[6,4]})];return r&&s.push(o(Dv(),t.local,a(`var(--info)`,35),{fill:`-1`,borderDash:[2,3]})),{type:`line`,data:{labels:t.labels,datasets:s},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:NB(e,{label:e=>e.dataset.label+`: `+e.parsed.y.toLocaleString(),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),Av({total:t.toLocaleString()})}})},scales:{x:{stacked:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:MB(),maxRotation:0,autoSkip:!0,maxTicksLimit:10}},y:{stacked:!0,beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:HB(e)}}}}}function EV(e,t,n){let r=Math.max(0,Math.min(100,e));return{type:`doughnut`,data:{datasets:[{data:[r,100-r],backgroundColor:[t,n],borderWidth:0,spacing:0}]},options:{rotation:-90,circumference:180,cutout:`84%`,responsive:!0,maintainAspectRatio:!1,animation:{duration:0},layout:{padding:1},events:[],plugins:{legend:{display:!1},tooltip:{enabled:!1}}}}}var DV=`gomodel_provider_status_details_expanded`,OV=`gomodel_provider_card_expanded_overrides`,kV=3e3,AV=`https://gomodel.enterpilot.io/docs/providers/`,jV={anthropic:`anthropic`,azure:`azure`,bailian:`bailian`,bedrock:`bedrock`,"bedrock-mantle":`bedrock-mantle`,cohere:`cohere`,deepseek:`deepseek`,elevenlabs:`elevenlabs`,gemini:`gemini`,llmd:`llmd`,opencode_go:`opencode-go`,oracle:`oracle`,sglang:`sglang`,vertex:`vertex`,vllm:`vllm`,xiaomi:`xiaomi`};function MV(){return{summary:{total:0,healthy:0,degraded:0,unhealthy:0,overall_status:`degraded`},providers:[]}}function NV(e){let t={detailsExpanded:!1,cardOverrides:{}};try{if(e){let n=e.getItem(DV);n===`true`||n===`false`?t.detailsExpanded=n===`true`:e.setItem(DV,`false`);let r=JSON.parse(e.getItem(OV)||`{}`);r&&typeof r==`object`&&!Array.isArray(r)&&(t.cardOverrides=r)}}catch{}return t}function PV(e,t){if(e)try{e.setItem(DV,t?`true`:`false`)}catch{}}function FV(e,t){if(e)try{e.setItem(OV,JSON.stringify(t))}catch{}}function IV(e,t,n){let r=n&&n.name?String(n.name):``;return r&&Object.prototype.hasOwnProperty.call(e,r)?e[r]===!0:t}function LV(e){return`is-`+(String(e&&e.overall_status||`degraded`).trim()||`degraded`)}function RV(e){return`is-`+(String(e||`degraded`).trim()||`degraded`)}function zV(e){let t=e||{};return String(t.healthy||0)+`/`+String(t.total||0)}function BV(e){let t=e||{},n=Number(t.total||0),r=Number(t.healthy||0);return n>0&&rString(e&&e.status_label||``).trim().toLowerCase()===`starting`)}function UV(e){if(!e||!e.runtime)return``;let t=e.runtime.last_model_fetch_at||``,n=e.runtime.last_availability_check_at||``;return t?n&&Date.parse(n)>Date.parse(t)?n:t:n}function WV(e,t){let n=UV(e);if(!n||typeof t!=`function`)return`-`;let r=t(n);if(!r||r===`-`)return`-`;let i=String(r).split(` `);return i.length>1?i.slice(1).join(` `):r}function GV(e,t){let n=UV(e);return n?typeof t==`function`?t(n):String(n):``}function KV(e){if(!e)return``;let t=String(e.name||``).trim(),n=String(e.type||e.config&&e.config.type||``).trim();return!n||n===t?``:n}function qV(e){let t=String(e&&(e.type||e.config&&e.config.type)||``).trim().toLowerCase(),n=t?jV[t]:``;return n?AV+n+`?utm_source=gomodel_dashboard`:``}function JV(e){let t=e&&e.config&&e.config.resilience?e.config.resilience.retry:null;return t?String(t.max_retries)+` retries, `+t.initial_backoff+` initial, `+t.max_backoff+` max, factor `+t.backoff_factor+`, jitter `+t.jitter_factor:`-`}function YV(e){let t=e&&e.config&&e.config.resilience?e.config.resilience.circuit_breaker:null;return t?String(t.failure_threshold)+` fail, `+String(t.success_threshold)+` success, `+t.timeout+` timeout`:`-`}function XV(e){let t=e&&e.config&&Array.isArray(e.config.models)?e.config.models.filter(Boolean):[];return t.length===0?Ig():t.join(`, `)}function ZV(e){if(!e)return``;let t=[];return e.status_reason&&t.push(String(e.status_reason)),e.last_error&&t.push(zg({error:String(e.last_error)})),t.join(` + +`)}function QV(e){let t=e&&e.request_health;return t&&typeof t==`object`?t:null}function $V(e){let t=QV(e);return t?String(t.circuit_state||``).trim():``}function eH(e){let t=$V(e);return t?t.charAt(0).toUpperCase()+t.slice(1):``}function tH(e){let t=$V(e);return t===`open`?`is-unhealthy`:t===`half-open`?`is-degraded`:`is-healthy`}function nH(e){let t=QV(e);if(!t)return``;let n=Number(t.requests||0),r=Number(t.errors||0),i=Math.round(Number(t.window_seconds||0)/60),a=i>0?`last `+i+` min`:`recent`;return String(n)+` request`+(n===1?``:`s`)+` · `+String(r)+` error`+(r===1?``:`s`)+` (`+a+`)`}function rH(e){let t=QV(e);return t&&Array.isArray(t.models)?t.models:[]}function iH(e){return e?String(Number(e.errors||0))+`/`+String(Number(e.requests||0))+` failed`:``}function aH(e){let t=e&&e.last_error;return!t||!t.message?``:(t.status_code?`HTTP `+String(t.status_code)+`: `:``)+t.message}function oH(){return{name:``,slug:``,url:``,transport:`http`,description:``,enabled:!0,headers:[],allowed_tools:``,disallowed_tools:``,user_paths:``,tool_timeout_seconds:``}}function sH(){return{server:``,status:``,instructions:``,tools:[],prompts:[],resources:[],templates:[]}}function cH(e){return String(e&&(e.slug||e.name)||``).trim()}function lH(e){return String(e&&e.status||``).trim()||`connecting`}function uH(e){switch(lH(e)){case`connected`:return`status-success`;case`degraded`:return String(e&&e.last_error||``).trim()?`status-error`:`status-warning`;case`connecting`:return`status-neutral`;default:return`status-unknown`}}function dH(e,t){let n=lH(e),r=String(e&&e.last_error||``).trim();return r&&n!==`connected`?r:n===`connected`&&e&&e.connected_at?`Connected since `+(typeof t==`function`?t:String)(e.connected_at):``}function fH(e){return String(e&&e.transport||``)===`stdio`?`local command`:String(e&&e.url||``).trim()||`—`}function pH(e){let t=Number(e&&e.prompt_count||0),n=Number(e&&e.resource_count||0);return t+` prompts · `+n+` resources`}function mH(e){let t=String(e||``).normalize(`NFKD`).toLowerCase(),n=t.replace(/[\u0300-\u036f]/g,``).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,64).replace(/-+$/g,``);if(n)return n;let r=2166136261;for(let e of t)r=Math.imul((r^e.codePointAt(0))>>>0,16777619)>>>0;return`mcp-`+r.toString(16).padStart(8,`0`)}function hH(e){return String(e||``).split(` +`).map(e=>e.trim()).filter(e=>e)}function gH(e){return!e||typeof e!=`object`||Array.isArray(e)?[]:Object.keys(e).sort().map(t=>({name:t,value:String(e[t]||``)}))}function _H(e){let t={};return(Array.isArray(e)?e:[]).forEach(e=>{let n=String(e&&e.name||``).trim();n&&(t[n]=String(e&&e.value||``))}),t}function vH(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.slug,e.url,e.transport,e.description,e.status].some(e=>String(e||``).toLowerCase().includes(r)))}function yH(e){return{name:String(e.name||``).trim(),slug:cH(e),url:String(e.url||``).trim(),transport:e.transport===`sse`?`sse`:`http`,description:String(e.description||``).trim(),enabled:e.enabled!==!1,headers:gH(e.headers),allowed_tools:(Array.isArray(e.allowed_tools)?e.allowed_tools:[]).join(`, `),disallowed_tools:(Array.isArray(e.disallowed_tools)?e.disallowed_tools:[]).join(`, `),user_paths:(Array.isArray(e.user_paths)?e.user_paths:[]).join(` +`),tool_timeout_seconds:e.tool_timeout_seconds?String(e.tool_timeout_seconds):``}}function bH(e,t,n){let r=String(e.name||``).trim(),i=String(e.slug||mH(r)).trim().toLowerCase(),a=String(e.url||``).trim(),o=e.transport===`sse`?`sse`:`http`;if(!r)return{error:`Name is required.`};if(!/^[a-z0-9][a-z0-9_-]{0,63}$/.test(i))return{error:`Slug must use 1–64 lowercase ASCII letters, numbers, hyphens, or underscores.`};if(t===`create`&&(n||[]).some(e=>cH(e)===i))return{error:`Slug "`+i+`" is already in use.`};if(!a)return{error:`URL is required.`};let s,c=String(e.tool_timeout_seconds||``).trim();if(c!==``){let e=Number(c);if(!Number.isSafeInteger(e)||e<0)return{error:`Tool timeout must be a non-negative whole number of seconds.`};s=e}return{payload:{name:r,slug:i,url:a,transport:o,headers:_H(e.headers),description:String(e.description||``).trim(),enabled:!!e.enabled,allowed_tools:YO(e.allowed_tools),disallowed_tools:YO(e.disallowed_tools),user_paths:hH(e.user_paths),tool_timeout_seconds:s}}}function xH(e,t){let n=t&&typeof t==`object`&&!Array.isArray(t)?t:{},r=e=>(Array.isArray(e)?e:[]).filter(e=>e&&typeof e==`object`);return{server:String(n.server||e||``).trim(),status:String(n.status||``).trim(),instructions:String(n.instructions||``).trim(),tools:r(n.tools),prompts:r(n.prompts),resources:r(n.resources),templates:r(n.templates)}}function SH(e,t){return String(e&&e.server||``)+`_`+String(t||``)}function CH(e){let t=e||sH(),n=(e,t)=>{let n=String(e||``).trim(),r=String(t||``).trim();return n&&r?n+` — `+r:r||n},r=e=>n=>({key:e+`:`+String(n.name||``),name:String(n.name||``),aggregated:SH(t,n.name),description:String(n.description||``).trim()});return[{key:`tools`,title:`Tools`,items:(t.tools||[]).map(r(`tool`))},{key:`prompts`,title:`Prompts`,items:(t.prompts||[]).map(r(`prompt`))},{key:`resources`,title:`Resources`,items:(t.resources||[]).map(e=>({key:`resource:`+String(e.uri||``),name:String(e.uri||``),aggregated:``,description:n(e.name,e.description)}))},{key:`templates`,title:`Resource templates`,items:(t.templates||[]).map(e=>({key:`template:`+String(e.uri_template||``),name:String(e.uri_template||``),aggregated:``,description:n(e.name,e.description)}))}].filter(e=>e.items.length>0)}function wH(e){return CH(e).length===0}function TH(e){return(e||[]).length}function EH(e){return(e||[]).filter(e=>lH(e)===`connected`).length}function DH(e){return(e||[]).filter(e=>e&&e.enabled!==!1&&lH(e)===`degraded`).length}function OH(e,t){return!!e&&TH(t)>0}function kH(e){return String(EH(e))+`/`+String(TH(e))}function AH(e){return DH(e)>0?`is-degraded`:`is-healthy`}function jH(e){let t=DH(e);if(t>0)return Gv({count:t});let n=TH(e),r=EH(e);return n>0&&r===n?Hg():Jv({connected:r,total:n})}function MH(){return{interval:`day`,buckets:[],summary:{requests:0},provider_latency:[]}}function NH(e){let t=e&&typeof e==`object`?e:{};return{interval:t.interval===`hour`?`hour`:`day`,buckets:Array.isArray(t.buckets)?t.buckets:[],summary:t.summary&&typeof t.summary==`object`?t.summary:{requests:0},provider_latency:Array.isArray(t.provider_latency)?t.provider_latency:[]}}function PH(e){return Number(e&&e.summary&&e.summary.requests||0)>0}function FH(e){return(e&&Array.isArray(e.provider_latency)?e.provider_latency:[]).length>0}function IH(e){let t=e&&e.summary?e.summary.success_rate:null;return t==null?`—`:(Math.round(Number(t)*1e3)/10).toFixed(1)+`%`}function LH(e,t){return Number(e&&e.summary&&e.summary[t]||0)}function RH(e){let t=Number(e);return Number.isFinite(t)?t>=6e4?(t/6e4).toFixed(1)+` min`:t>=1e3?(t/1e3).toFixed(2)+` s`:Math.round(t)+` ms`:`-`}function zH(e){let t=e&&e.summary?e.summary.avg_duration_ms:null;return t==null?`—`:RH(Number(t))}function BH(e,t){try{let n={},r=J();return new Intl.DateTimeFormat(r,{timeZone:t,year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,hourCycle:`h23`}).formatToParts(e).forEach(e=>{n[e.type]=e.value}),{year:n.year,month:n.month,day:n.day,hour:Number(n.hour),shortDate:new Intl.DateTimeFormat(r,{timeZone:t,month:`short`,day:`numeric`}).format(e),fullDate:new Intl.DateTimeFormat(r,{timeZone:t,year:`numeric`,month:`short`,day:`numeric`}).format(e)}}catch{let t=new Intl.DateTimeFormat(J(),{month:`short`}).format(e);return{year:String(e.getFullYear()),month:t,day:String(e.getDate()),hour:e.getHours(),shortDate:t+` `+e.getDate(),fullDate:t+` `+e.getDate()+`, `+e.getFullYear()}}}function VH(e,t,n){let r=new Date(e.start);if(Number.isNaN(r.getTime()))return String(e.start||``);let i=BH(r,n),a=i.shortDate;return t!==`hour`||i.hour===0?a:String(i.hour).padStart(2,`0`)+`:00`}function HH(e,t,n,r){let i=new Date(e.start);return Number.isNaN(i.getTime())?String(e.start||``):t===`hour`?r(e.start):BH(i,n).fullDate}function UH(e){return{ok:e(`var(--success)`),clientError:e(`var(--warning)`),serverError:e(`var(--danger)`),other:e(`color-mix(in srgb, var(--text-muted) 55%, transparent)`)}}function WH(e,t,n={}){let r=n.interval===`hour`?`hour`:`day`,i=n.zone,a=n.resolve||(e=>e),o=n.formatTimestamp||(e=>String(e)),s=t.map(e=>VH(e,r,i)),c=UH(a),l=a(`var(--bg-surface)`),u=e=>Number(e)||0,d=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderColor:l,borderWidth:1,borderSkipped:!1,borderRadius:2,maxBarThickness:28}),f=[d(`2xx`,t.map(e=>u(e.status_2xx)),c.ok),d(`4xx`,t.map(e=>u(e.status_4xx)),c.clientError),d(`5xx`,t.map(e=>u(e.status_5xx)),c.serverError)];return t.some(e=>u(e.status_other)>0)&&f.push(d(fy(),t.map(e=>u(e.status_other)),c.other)),{type:`bar`,data:{labels:s,datasets:f},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:NB(e,{title:e=>e.length?HH(t[e[0].dataIndex],r,i,o):``,label:e=>e.dataset.label+`: `+e.parsed.y.toLocaleString(),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),Av({total:t.toLocaleString()})}})},scales:{x:{stacked:!0,grid:{display:!1},border:{display:!1},ticks:{color:e.text,font:MB(),maxRotation:0,autoSkip:!0,maxTicksLimit:12}},y:{stacked:!0,beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:MB(),precision:0,callback:e=>tk(e)}}}}}}function GH(e=IB()){let t={};return function(n){return n in t||(t[n]=e[Object.keys(t).length%e.length]),t[n]}}function KH(e,t,n,r={}){let i=r.interval===`hour`?`hour`:`day`,a=r.zone,o=r.formatTimestamp||(e=>String(e)),s=r.providerColor||GH();return{type:`line`,data:{labels:t.map(e=>VH(e,i,a)),datasets:n.map(e=>({label:e.provider,data:(e.avg_duration_ms||[]).map(e=>e==null?null:Number(e)),borderColor:s(e.provider),backgroundColor:s(e.provider),fill:!1,tension:.3,borderWidth:2,pointRadius:0,pointHoverRadius:4,spanGaps:i===`hour`&&2}))},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:NB(e,{title:e=>e.length?HH(t[e[0].dataIndex],i,a,o):``,label:e=>{let t=(n[e.datasetIndex]&&n[e.datasetIndex].requests||[])[e.dataIndex],r=Number(t)||0;return e.dataset.label+`: `+RH(e.parsed.y)+(r>0?` (`+r.toLocaleString()+` req)`:``)}})},scales:{x:{grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:MB(),maxRotation:0,autoSkip:!0,maxTicksLimit:12}},y:{beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:MB(),callback:e=>RH(e)}}}}}}var qH=class{#e=A(M(MV()));get status(){return L(this.#e)}set status(e){j(this.#e,e,!0)}#t=A(!1);get loading(){return L(this.#t)}set loading(e){j(this.#t,e,!0)}#n=A(!1);get loadedOnce(){return L(this.#n)}set loadedOnce(e){j(this.#n,e,!0)}#r=A(!1);get detailsExpanded(){return L(this.#r)}set detailsExpanded(e){j(this.#r,e,!0)}#i=A(M({}));get cardOverrides(){return L(this.#i)}set cardOverrides(e){j(this.#i,e,!0)}#a=null;#o=null;#s=!1;initPreferences(){if(this.#s)return;this.#s=!0;let e=NV(Sa());this.detailsExpanded=e.detailsExpanded,this.cardOverrides=e.cardOverrides}cardExpanded(e){return IV(this.cardOverrides,this.detailsExpanded,e)}toggleCard(e){let t=e&&e.name?String(e.name):``;if(!t)return;let n={...this.cardOverrides};n[t]=!this.cardExpanded(e),this.cardOverrides=n,FV(Sa(),this.cardOverrides)}toggleDetails(){this.detailsExpanded=!this.detailsExpanded,this.cardOverrides={},PV(Sa(),this.detailsExpanded),FV(Sa(),this.cardOverrides)}detailsToggleLabel(){return this.detailsExpanded?Ah():Nh()}async fetch(){this.initPreferences(),this.#a&&this.#a.abort();let e=new AbortController;this.#a=e,this.loading=!0;try{let t=await iO(`/admin/providers/status`,{label:`provider status`,signal:e.signal});if(t.stale||e.signal.aborted)return;if(!t.ok){this.status=MV(),this.#l();return}let n=t.data&&typeof t.data==`object`?t.data:MV();n.summary||=MV().summary,Array.isArray(n.providers)||(n.providers=[]),this.status=n,this.#c()}catch(e){if(oO(e))return;console.error(`Failed to fetch provider status:`,e),this.status=MV(),this.#l()}finally{this.#a===e&&(this.#a=null,this.loading=!1,this.loadedOnce=!0)}}#c(){this.#l(),HV(this.status.providers)&&(this.#o=setTimeout(()=>{this.#o=null,this.fetch()},kV))}#l(){this.#o&&=(clearTimeout(this.#o),null)}stopPolling(){this.#l()}},JH=class{#e=A(M(MH()));get stats(){return L(this.#e)}set stats(e){j(this.#e,e,!0)}#t=A(!1);get loading(){return L(this.#t)}set loading(e){j(this.#t,e,!0)}#n=0;async fetch(){let e=++this.#n;this.loading=!0;try{let t=await iO(`/admin/audit/stats?`+kk.queryStr(),{label:`audit stats`});if(t.stale||e!==this.#n)return;if(!t.ok){this.stats=MH();return}this.stats=NH(t.data)}catch(t){if(console.error(`Failed to fetch audit stats:`,t),e!==this.#n)return;this.stats=MH()}finally{e===this.#n&&(this.loading=!1)}}},YH=class{#e=A(M([]));get servers(){return L(this.#e)}set servers(e){j(this.#e,e,!0)}#t=A(!1);get available(){return L(this.#t)}set available(e){j(this.#t,e,!0)}#n=A(!1);get loading(){return L(this.#n)}set loading(e){j(this.#n,e,!0)}async fetch(){if(await lO.ensureLoaded(),!lO.mcpVisible()){this.available=!1,this.servers=[];return}this.loading=!0;try{let e=await iO(`/admin/mcp-servers`,{label:`mcp servers`});if(e.stale)return;if(e.status===503||e.status===404){this.available=!1,this.servers=[];return}if(this.available=!0,!e.ok){this.servers=[];return}this.servers=Array.isArray(e.data)?e.data:[]}catch(e){console.error(`Failed to fetch MCP servers:`,e),this.servers=[]}finally{this.loading=!1}}},XH=class{#e=A(M([]));get data(){return L(this.#e)}set data(e){j(this.#e,e,!0)}#t=A(`tokens`);get mode(){return L(this.#t)}set mode(e){j(this.#t,e,!0)}#n=A(!1);get loading(){return L(this.#n)}set loading(e){j(this.#n,e,!0)}#r=null;async fetch(){this.#r&&this.#r.abort();let e=new AbortController;this.#r=e,this.loading=!0;try{let t=await iO(`/admin/usage/daily?days=365&interval=daily`,{label:`calendar`,signal:e.signal});if(t.stale||e.signal.aborted)return;if(!t.ok){this.data=[];return}this.data=Array.isArray(t.data)?t.data:[]}catch(e){if(oO(e))return;console.error(`Failed to fetch calendar data:`,e),this.data=[]}finally{this.#r===e&&(this.#r=null,this.loading=!1)}}},ZH=new qH,QH=new JH,$H=new YH,eU=new XH,tU=(e,t=f,n=f,r=f,i=f)=>{var a=rU(),o=N(a),s=N(o,!0);E(o);var c=F(o,2),l=N(c),u=N(l),d=N(u,!0);E(u),He(),E(l);var p=F(l,4),m=N(p),h=N(m,!0);E(m),He(),E(p);var g=F(p,4),_=N(g,!0);E(g),E(c),E(a),I((e,n,r,i,a,o)=>{V(s,t()),G(l,`title`,e),V(d,n),G(p,`title`,r),V(h,i),G(g,`title`,a),V(_,o)},[()=>nk(om(),n()),()=>tk(n()),()=>nk(lm(),r()),()=>tk(r()),()=>nk(vm(),i()),()=>tk(i())]),B(e,a)},nU=(e,t=f,n=f,r=f,i=f,a=f,o=f)=>{var s=oU(),c=N(s),l=N(c,!0);E(c);var u=F(c,2),d=N(u,!0);E(u);var p=F(u,2),m=e=>{var t=iU(),n=N(t,!0);E(t),I(()=>{G(t,`aria-label`,o().title),G(t,`title`,o().title),V(n,a())}),R(`click`,t,function(...e){o().onclick?.apply(this,e)}),B(e,t)},h=e=>{var t=aU(),n=N(t,!0);E(t),I(()=>V(n,a())),B(e,t)};H(p,e=>{o()?e(m):e(h,-1)}),E(s),I(()=>{W(s,1,`card provider-status-flag ${t()??``} ${n()??``}`,`svelte-6tr9cf`),V(l,r()),V(d,i())}),B(e,s)},rU=z(`
                i + o =
                `),iU=z(``),aU=z(` `),oU=z(`
                `),sU=z(`
                `),cU=z(`
                `);function lU(e,t){D(t,!0);let n=k(()=>Fk.summary),r=k(()=>Fk.cacheOverview),i=k(()=>Fk.cacheAnalyticsEnabled()),a=k(()=>ZH.status.summary);function o(){let e=document.getElementById(`provider-status-section`);e&&(e.scrollIntoView({behavior:`smooth`,block:`start`}),e.focus({preventScroll:!0}))}var s=cU(),c=N(s);{let e=k(()=>rm()),t=k(()=>sV(L(n)));tU(c,()=>L(e),()=>L(n).total_input_tokens,()=>L(n).total_output_tokens,()=>L(t))}var l=F(c,2),u=N(l),d=N(u,!0);E(u);var f=F(u,2),p=N(f,!0);E(f),E(l);var m=F(l,2),h=e=>{var t=sU(),n=N(t),i=N(n,!0);E(n);var a=F(n,2),o=N(a,!0);E(a),E(t),I((e,t)=>{V(i,e),V(o,t)},[()=>wm(),()=>ZO(L(r).summary.total_hits)]),B(e,t)};H(m,e=>{L(i)&&e(h)});var g=F(m,2),_=N(g),v=N(_,!0);E(_);var y=F(_,2),b=N(y,!0);E(y),E(g);var x=F(g,2),S=e=>{{let t=k(()=>Am()),n=k(()=>dV(L(r)));tU(e,()=>L(t),()=>L(r).summary.total_input_tokens,()=>L(r).summary.total_output_tokens,()=>L(n))}};H(x,e=>{L(i)&&e(S)});var C=F(x,2),w=N(C),T=N(w,!0);E(w);var ee=F(w,2),te=N(ee);EB(te,{build:()=>EV(SV(L(n)),PB(`var(--token-prompt)`),PB(`var(--bg-surface-hover)`))});var ne=F(te,2),re=N(ne,!0);E(ne),E(ee),E(C);var ie=F(C,2),ae=e=>{{let t=k(()=>LV(L(a))),n=k(()=>Hm()),r=k(()=>zV(L(a))),i=k(()=>VV(L(a))),s=k(()=>BV(L(a))?{title:Gm(),onclick:o}:null);nU(e,()=>`provider-status-overview-card`,()=>L(t),()=>L(n),()=>L(r),()=>L(i),()=>L(s))}};H(ie,e=>{L(a).total>0&&e(ae)});var oe=F(ie,2),se=e=>{{let t=k(()=>AH($H.servers)),n=k(()=>Ko()),r=k(()=>kH($H.servers)),i=k(()=>jH($H.servers)),a=k(()=>({title:Jm(),onclick:()=>kD.navigate(`mcp-servers`)}));nU(e,()=>`mcp-servers-flag`,()=>L(t),()=>L(n),()=>L(r),()=>L(i),()=>L(a))}},ce=k(()=>OH($H.available,$H.servers));H(oe,e=>{L(ce)&&e(se)}),E(s),I((e,t,n,r,i,a,o,s,c)=>{V(d,e),G(f,`title`,t),V(p,n),V(v,r),V(b,i),G(C,`title`,a),V(T,o),G(ee,`aria-label`,s),V(re,c)},[()=>xm(),()=>uV(L(n),L(r),L(i)),()=>ZO(lV(L(n),L(r),L(i))),()=>Dm(),()=>QO(L(n).total_cost),()=>Im(),()=>Nm(),()=>zm({rate:wV(L(n))}),()=>wV(L(n))]),B(e,s),O()}Vr([`click`]);var uU=z(` `),dU=z(`
                `),fU=z(` `),pU=z(`
                `),mU=z(`

                `);function hU(e,t){D(t,!0);let n=k(()=>Fk.cacheAnalyticsEnabled()),r=k(()=>hV(Fk.summary,Fk.cacheOverview,L(n))),i=k(()=>gV(Fk.summary,Fk.cacheOverview,L(n))),a=k(()=>mV(Fk.summary,Fk.cacheOverview,L(n)));var o=mU(),s=N(o),c=N(s),l=N(c,!0);E(c);var u=F(c,2),d=N(u,!0);E(u),E(s);var f=F(s,2);let p;var m=N(f);U(m,17,()=>L(i),e=>e.key,(e,t)=>{var n=dU(),r=N(n),i=e=>{var n=uU(),r=N(n);E(n),I(()=>V(r,`${L(t).pct??``}%`)),B(e,n)};H(r,e=>{L(t).pct>=8&&e(i)}),E(n),I(e=>{Vi(n,`width: ${L(t).pct??``}%; background: var(${L(t).colorVar??``})`),G(n,`title`,e)},[()=>_V(L(t))]),B(e,n)});var h=F(m,2),g=e=>{var t=fU(),n=N(t,!0);E(t),I(e=>V(n,e),[()=>Jg()]),B(e,t)};H(h,e=>{L(a)||e(g)}),E(f);var _=F(f,2);U(_,21,()=>L(r),e=>e.key,(e,t)=>{var n=pU(),r=N(n),i=F(r,2),a=N(i,!0);E(i);var o=F(i,2),s=N(o);E(o);var c=F(o,2),l=N(c,!0);E(c),E(n),I((e,i)=>{G(n,`title`,e),Vi(r,`background: var(${L(t).colorVar??``})`),V(a,L(t).label),V(s,`${L(t).pct??``}%`),V(l,i)},[()=>_V(L(t)),()=>ZO(L(t).tokens)]),B(e,n)}),E(_),E(o),I((e,t,n)=>{V(l,e),V(d,t),p=W(f,1,`cache-meter-bar svelte-1yzecxj`,null,p,{"is-empty":!L(a)}),G(f,`aria-label`,n)},[()=>rm(),()=>Gg(),()=>vV(L(i))]),B(e,o),O()}var gU=z(``);function _U(e,t){let n=K(t,`size`,3,16),r=K(t,`label`,3,`Loading`),i=K(t,`class`,3,``);var a=gU();I(()=>{W(a,1,Pi([`spinner`,i()]),`svelte-b54l9o`),Vi(a,`--spinner-size: ${n()??``}px`),G(a,`aria-label`,r())}),B(e,a)}var vU=Yr(` `),yU=Yr(``);function bU(e,t){let n=K(t,`label`,3,`No data`);var r=yU(),i=F(N(r),9),a=e=>{var t=vU(),r=N(t,!0);E(t),I(()=>V(r,n())),B(e,t)};H(i,e=>{n()&&e(a)}),E(r),I(()=>{G(r,`role`,n()?`img`:void 0),G(r,`aria-label`,n()||void 0),G(r,`aria-hidden`,n()?void 0:`true`)}),B(e,r)}var xU=z(`
                `),SU=z(`

                `);function CU(e,t){D(t,!0);let n=[{value:`daily`,label:is},{value:`weekly`,label:ss},{value:`monthly`,label:us},{value:`yearly`,label:ps}];function r(e){kk.interval=e,t.onintervalchange?.()}function i(){let e=Fk.daily;if(e.length===0)return null;let t=kk.rangeStart(),n=kk.rangeEnd(),r=xV(bV(e,kk.interval,t,n),bV(Array.isArray(Fk.cacheOverview.daily)?Fk.cacheOverview.daily:[],kk.interval,t,n));return TV(jB(),r,{cacheEnabled:Fk.cacheAnalyticsEnabled(),resolve:PB})}var a=SU(),o=N(a),s=N(o),c=N(s,!0);E(s);var l=F(s,2);{let e=k(()=>ts()),t=k(()=>n.map(e=>({value:e.value,label:e.label()})));kB(l,{get ariaLabel(){return L(e)},get options(){return L(t)},get value(){return kk.interval},onchange:r})}E(o);var u=F(o,2),d=N(u);EB(d,{build:i});var f=F(d,2),p=e=>{var t=xU(),n=N(t);{let e=k(()=>gs());_U(n,{size:24,get label(){return L(e)}})}E(t),B(e,t)},m=e=>{var t=xU();bU(N(t),{}),E(t),B(e,t)};H(f,e=>{Fk.daily.length===0&&Fk.loading?e(p):Fk.daily.length===0&&!Y.authError&&e(m,1)}),E(u),E(a),I(e=>V(c,e),[()=>kk.chartTitle()]),B(e,a),O()}var wU=10,TU=.7;function EU(e,t){if(e<=0||t<=0)return 0;let n=(e/t)**+TU,r=Math.ceil(n*wU);return r<1?1:r>wU?wU:r}function DU(){let e=[];for(let t=0;t<=wU;t++)e.push(t);return e}function OU(e,t,n){let r={};(e||[]).forEach(e=>{r[e.date]=e});let i=zD(VD(n,-364)),a=i.getUTCDay();i.setUTCDate(i.getUTCDate()-a);let o=[];for(let e=new Date(i);BD(e)<=n;e.setUTCDate(e.getUTCDate()+1)){let n=BD(e),i=r[n],a=0;i&&(a=t===`costs`?i.total_cost==null?0:i.total_cost:i.total_tokens||0),o.push({dateStr:n,value:a,level:0,empty:!1})}let s=0;for(let e=0;es&&(s=o[e].value);for(let e=0;e0){for(;l.length<7;)l.push({dateStr:``,value:0,level:0,empty:!0});c.push(l)}return c}function kU(e){let t=zD(VD(e,-364)),n=t.getUTCDay();t.setUTCDate(t.getUTCDate()-n);let r=new Intl.DateTimeFormat(J(),{month:`short`,timeZone:`UTC`}),i=[],a={},o=0;for(let n=new Date(t);BD(n)<=e;n.setUTCDate(n.getUTCDate()+7),o++){let t=null;if(o===0)t=new Date(n);else for(let r=0;r<7;r++){let i=new Date(n);if(i.setUTCDate(n.getUTCDate()+r),BD(i)>e)break;if(i.getUTCDate()===1){t=i;break}}if(!t)continue;let s=t.getUTCFullYear()+`-`+t.getUTCMonth();a[s]||(i.push({label:r.format(t),col:o,key:s}),a[s]=!0)}for(let e=0;e `),NU=z(`
                `),PU=z(`
                `),FU=z(`
                `),IU=z(`
                `),LU=z(`

                `,1);function RU(e,t){D(t,!0);let n=A(M({show:!1,x:0,y:0,text:``})),r=k(()=>QD.currentDateKey()),i=k(()=>OU(eU.data,eU.mode,L(r))),a=k(()=>kU(L(r)));function o(e,t){t.empty||j(n,{show:!0,x:e.clientX,y:e.clientY,text:jU(t,eU.mode)},!0)}function s(){j(n,{show:!1,x:0,y:0,text:``},!0)}var c=LU(),l=P(c),u=N(l),d=N(u),f=N(d,!0);E(d);var p=F(d,2),m=e=>{{let t=k(()=>x_());_U(e,{size:14,get label(){return L(t)}})}};H(p,e=>{eU.loading&&eU.data.length===0&&e(m)});var h=F(p,2);{let e=k(()=>w_()),t=k(()=>[{value:`tokens`,label:rm()},{value:`costs`,label:D_()}]);kB(h,{get ariaLabel(){return L(e)},get options(){return L(t)},get value(){return eU.mode},onchange:e=>eU.mode=e})}E(u);var g=F(u,2),_=N(g),v=F(N(_),2),y=N(v,!0);E(v);var b=F(v,4),x=N(b,!0);E(b);var S=F(b,4),C=N(S,!0);E(S),He(2),E(_);var w=F(_,2),T=N(w);U(T,21,()=>L(a),e=>e.key,(e,t)=>{var n=MU(),r=N(n,!0);E(n),I(()=>{Vi(n,`grid-column: ${L(t).col+1} / span ${L(t).span??``}`),V(r,L(t).label)}),B(e,n)}),E(T);var ee=F(T,2);U(ee,21,()=>L(i),ai,(e,t,n)=>{var r=PU();U(r,23,()=>L(t),(e,t)=>n+`-`+t,(e,t)=>{var n=NU();I(()=>W(n,1,Pi([`contribution-calendar-cell`,L(t).empty?`empty`:`level-${L(t).level}`]),`svelte-3hfxuq`)),Br(`mouseenter`,n,e=>o(e,L(t))),Br(`mouseleave`,n,s),B(e,n)}),E(r),B(e,r)}),E(ee),E(w),E(g);var te=F(g,2),ne=N(te),re=N(ne),ie=N(re,!0);E(re),E(ne);var ae=F(ne,2),oe=N(ae),se=N(oe,!0);E(oe);var ce=F(oe,2);U(ce,16,DU,e=>e,(e,t)=>{var n=FU();I(()=>W(n,1,`contribution-calendar-cell level-${t??``}`,`svelte-3hfxuq`)),B(e,n)});var le=F(ce,2),ue=N(le,!0);E(le),E(ae),E(te),E(l);var de=F(l,2),fe=e=>{var t=IU(),r=N(t,!0);E(t),I(()=>{Vi(t,`left: ${L(n).x??``}px; top: ${L(n).y-40}px`),V(r,L(n).text)}),B(e,t)};H(de,e=>{L(n).show&&e(fe)}),I((e,t,n,r,i,a,o)=>{V(f,e),V(y,t),V(x,n),V(C,r),V(ie,i),V(se,a),V(ue,o)},[()=>v_(),()=>A_(),()=>N_(),()=>I_(),()=>AU(eU.data,eU.mode),()=>z_(),()=>H_()]),B(e,c),O()}var zU=z(``),BU=z(`

                `),VU=z(`
                `);function HU(e,t){D(t,!0);let n=K(t,`label`,3,`help`),r=K(t,`text`,3,``),i=K(t,`open`,15,!1),a=K(t,`external`,3,!1),o=k(()=>!!r()||!!t.help||a());var s=VU(),c=N(s),l=N(c);hi(l,()=>t.title??f);var u=F(l,2),d=e=>{var r=zU();let a;I(()=>{a=W(r,1,`inline-help-toggle svelte-y40or3`,null,a,{"is-open":i()}),G(r,`aria-label`,(i()?`Hide `:`Show `)+n()),G(r,`aria-expanded`,i()),G(r,`aria-controls`,t.copyId)}),R(`click`,r,()=>i(!i())),B(e,r)};H(u,e=>{L(o)&&e(d)}),hi(F(u,2),()=>t.extra??f),E(c);var p=F(c,2),m=e=>{var n=BU(),i=N(n),a=e=>{var n=Zr();hi(P(n),()=>t.help),B(e,n)},o=e=>{var t=Xr();I(()=>V(t,r())),B(e,t)};H(i,e=>{t.help?e(a):e(o,-1)}),E(n),I(()=>G(n,`id`,t.copyId)),B(e,n)};H(p,e=>{i()&&L(o)&&!a()&&e(m)}),E(s),B(e,s),O()}Vr([`click`]);var UU=z(`

                `),WU=z(`
                `),GU=z(`

                2xx 4xx 5xx
                `,1);function KU(e,t){D(t,!0);let n=GH(),r=k(()=>QH.stats);function i(){return{interval:L(r).interval,zone:QD.effectiveTimezone(),resolve:PB,formatTimestamp:e=>QD.formatTimestamp(e)}}var a=Zr(),o=P(a),s=e=>{var t=GU(),a=P(t),o=N(a),s=N(o),c=N(s,!0);E(s);var l=F(s,2),u=N(l),d=N(u),f=N(d,!0);E(d);var p=F(d,2),m=N(p,!0);E(p),E(u);var h=F(u,2),g=F(N(h),4),_=N(g,!0);E(g),E(h);var v=F(h,2),y=F(N(v),4),b=N(y,!0);E(y),E(v);var x=F(v,2),S=F(N(x),4),C=N(S,!0);E(S),E(x),E(l),E(o);var w=F(o,2);EB(N(w),{build:()=>WH(jB(),L(r).buckets,i())}),E(w),E(a);var T=F(a,2),ee=e=>{var t=WU(),a=N(t),o=N(a);{let e=e=>{var t=UU(),n=N(t,!0);E(t),I(e=>V(n,e),[()=>lh()]),B(e,t)},t=k(()=>fh()),n=k(()=>hh());HU(o,{copyId:`audit-latency-help-copy`,get label(){return L(t)},get text(){return L(n)},title:e,$$slots:{title:!0}})}var s=F(o,2),c=N(s),l=N(c),u=N(l,!0);E(l);var d=F(l,2),f=N(d,!0);E(d),E(c),E(s),E(a);var p=F(a,2);EB(N(p),{build:()=>KH(jB(),L(r).buckets,L(r).provider_latency,{...i(),providerColor:n})}),E(p),E(t),I((e,t,n)=>{G(c,`title`,e),V(u,t),V(f,n)},[()=>vh(),()=>xh(),()=>zH(L(r))]),B(e,t)},te=k(()=>FH(L(r)));H(T,e=>{L(te)&&e(ee)}),I((e,t,n,r,i,a,o,s)=>{V(c,e),G(l,`aria-label`,t),G(u,`title`,n),V(f,r),V(m,i),V(_,a),V(b,o),V(C,s)},[()=>Zm(),()=>eh(),()=>rh(),()=>oh(),()=>IH(L(r)),()=>ZO(LH(L(r),`status_2xx`)),()=>ZO(LH(L(r),`status_4xx`)),()=>ZO(LH(L(r),`status_5xx`))]),B(e,t)},c=k(()=>PH(L(r)));H(o,e=>{L(c)&&e(s)}),B(e,a),O()}var qU=(e,t=f,n=f,r)=>{let i=Dt(()=>h(r?.(),!1));var a=XU(),o=N(a),s=N(o,!0);E(o);var c=F(o,2),l=e=>{var t=JU(),r=N(t,!0);E(t),I(()=>V(r,n())),B(e,t)},u=e=>{var t=YU(),r=N(t,!0);E(t),I(()=>V(r,n())),B(e,t)};H(c,e=>{L(i)?e(l):e(u,-1)}),E(a),I(()=>V(s,t())),B(e,a)},JU=z(` `),YU=z(` `),XU=z(`
                `),ZU=z(`

                `),QU=z(`
                `),$U=z(`
                `),eW=z(`
                `),tW=z(`
                `),nW=z(`

                `);function rW(e,t){D(t,!0);let n=k(()=>tH(t.provider)),r=k(()=>[[rg(),t.provider.config?.base_url],[og(),t.provider.config?.api_version]].filter(([,e])=>!!e));var i=nW();let a;var o=N(i),s=N(o),c=N(s,!0);E(s);var l=F(s,2),u=e=>{var n=ZU(),r=N(n,!0);E(n),I(()=>V(r,t.provider.last_error)),B(e,n)};H(l,e=>{t.provider.last_error&&e(u)});var d=F(l,2),f=e=>{var r=tW(),i=N(r);{let e=k(()=>lg()),n=k(()=>nH(t.provider));qU(i,()=>L(e),()=>L(n))}var a=F(i,2),o=e=>{var r=QU(),i=N(r),a=N(i,!0);E(i);var o=F(i,2),s=N(o),c=N(s,!0);E(s),E(o),E(r),I((e,t)=>{V(a,e),W(s,1,Pi([`provider-status-health-state`,L(n)]),`svelte-6y9wjv`),V(c,t)},[()=>fg(),()=>eH(t.provider)]),B(e,r)},s=k(()=>$V(t.provider));H(a,e=>{L(s)&&e(o)});var c=F(a,2),l=e=>{var n=eW(),r=N(n),i=N(r,!0);E(r);var a=F(r,2);U(a,21,()=>rH(t.provider),e=>e.model,(e,t)=>{var n=$U();let r;var i=N(n),a=N(i,!0);E(i);var o=F(i,2),s=N(o,!0);E(o),E(n),I((e,i)=>{r=W(n,1,`provider-status-health-model svelte-6y9wjv`,null,r,{"is-flagged":L(t).flagged}),G(n,`title`,e),V(a,L(t).model),V(s,i)},[()=>aH(L(t)),()=>iH(L(t))]),B(e,n)}),E(a),E(n),I(e=>V(i,e),[()=>hg()]),B(e,n)},u=k(()=>rH(t.provider).length>0);H(c,e=>{L(u)&&e(l)}),E(r),B(e,r)},p=k(()=>QV(t.provider));H(d,e=>{L(p)&&e(f)});var m=F(d,2),h=N(m);U(h,17,()=>L(r),([e,t])=>e,(e,t)=>{var n=k(()=>g(L(t),2));qU(e,()=>L(n)[0],()=>L(n)[1],()=>!0)});var _=F(h,2);{let e=k(()=>vg()),n=k(()=>XV(t.provider));qU(_,()=>L(e),()=>L(n))}var v=F(_,2);{let e=k(()=>xg()),n=k(()=>JV(t.provider));qU(v,()=>L(e),()=>L(n))}var y=F(v,2);{let e=k(()=>wg()),n=k(()=>YV(t.provider));qU(y,()=>L(e),()=>L(n))}E(m),E(o),E(i),I(()=>{a=W(i,1,`provider-status-details svelte-6y9wjv`,null,a,{"is-expanded":t.expanded,"is-collapsed":!t.expanded}),G(i,`aria-hidden`,!t.expanded),V(c,t.provider.status_reason)}),B(e,i),O()}var iW=z(` `),aW=z(``),oW=z(`

                `);function sW(e,t){D(t,!0);let n=k(()=>ZH.cardExpanded(t.provider)),r=e=>QD.formatTimestamp(e);var i=oW(),a=N(i),o=N(a),s=N(o),c=N(s),l=N(c,!0);E(c);var u=F(c,2),d=e=>{var n=iW(),r=N(n);E(n),I(e=>V(r,`(${e??``})`),[()=>KV(t.provider)]),B(e,n)},f=k(()=>KV(t.provider));H(u,e=>{L(f)&&e(d)});var p=F(u,2),m=e=>{var n=aW();I((e,t,r)=>{G(n,`href`,e),G(n,`aria-label`,t),G(n,`title`,r)},[()=>qV(t.provider),()=>Ih({provider:KV(t.provider)||t.provider.name}),()=>Ih({provider:KV(t.provider)||t.provider.name})]),B(e,n)},h=k(()=>qV(t.provider));H(p,e=>{L(h)&&e(m)}),E(s),E(o);var g=F(o,2),_=N(g,!0);E(g),E(a);var v=F(a,2),y=N(v),b=N(y),x=N(b,!0);E(b);var S=F(b,2),C=N(S,!0);E(S),E(y);var w=F(y,2),T=N(w),ee=N(T,!0);E(T);var te=F(T,2),ne=N(te,!0);E(te),E(w),E(v);var re=F(v,2);rW(re,{get provider(){return t.provider},get expanded(){return L(n)}});var ie=F(re,2);let ae;q(N(ie),{get icon(){return SE},class:`provider-status-card-toggle-icon`}),E(ie),E(i),I((e,r,i,a,o,s,c,u,d)=>{V(l,t.provider.name),W(g,1,`provider-status-pill ${e??``}`,`svelte-nopjmh`),G(g,`title`,r),V(_,t.provider.status_label),V(x,i),V(C,a),V(ee,o),G(te,`title`,s),V(ne,c),ae=W(ie,1,`provider-status-card-toggle svelte-nopjmh`,null,ae,{"is-expanded":L(n)}),G(ie,`aria-expanded`,L(n)),G(ie,`aria-label`,u),G(ie,`title`,d)},[()=>RV(t.provider.status),()=>ZV(t.provider),()=>zh(),()=>ZO(t.provider.runtime?.discovered_model_count),()=>Hh(),()=>GV(t.provider,r),()=>WV(t.provider,r),()=>L(n)?Jh({provider:t.provider.name}):Gh({provider:t.provider.name}),()=>L(n)?eg():Zh()]),R(`click`,ie,()=>ZH.toggleCard(t.provider)),B(e,i),O()}Vr([`click`]);var cW=z(`

                `),lW=z(`
                `);function uW(e,t){D(t,!0);let n=k(()=>ZH.status.providers);var r=Zr(),i=P(r),a=e=>{var t=cW(),r=N(t),i=N(r),a=N(i),o=N(a,!0);E(a),E(i);var s=F(i,2),c=N(s),l=N(c,!0);E(c);var u=F(c,2);let d;E(s),E(r);var f=F(r,2);U(f,21,()=>L(n),e=>e.name,(e,t)=>{sW(e,{get provider(){return L(t)}})}),E(f),E(t),I((e,t,n)=>{V(o,e),G(s,`aria-checked`,ZH.detailsExpanded),G(s,`title`,t),V(l,n),d=W(u,1,`provider-status-toggle-track svelte-1kx3uw4`,null,d,{"is-active":ZH.detailsExpanded})},[()=>wh(),()=>ZH.detailsToggleLabel(),()=>ZH.detailsToggleLabel()]),R(`click`,s,()=>ZH.toggleDetails()),B(e,t)},o=e=>{var t=lW(),n=N(t);{let e=k(()=>Dh());_U(n,{size:18,get label(){return L(e)}})}E(t),B(e,t)};H(i,e=>{L(n).length>0?e(a):ZH.loading&&!ZH.loadedOnce&&e(o,1)}),B(e,r),O()}Vr([`click`]);var dW=z(`
                `);function fW(e,t){D(t,!0);function n(){Fk.fetchUsage(),Fk.fetchCacheOverview(``),QH.fetch(),ZH.fetch(),$H.fetch(),eU.fetch()}function r(){Fk.fetchUsage(),Fk.fetchCacheOverview(``),QH.fetch()}function i(){r(),eU.fetch()}kn(()=>{if(Y.refreshTick,kD.page===`overview`)return Tr(()=>{n(),nV.start()}),()=>{nV.stop(),ZH.stopPolling()}});var a=dW(),o=N(a);oV(o,{});var s=F(o,2),c=N(s),l=N(c,!0);E(c),E(s);var u=F(s,2);Zk(N(u),{onchange:i}),E(u);var d=F(u,2);Mk(d,{});var f=F(d,2);lU(f,{});var p=F(f,2);hU(p,{});var m=F(p,2);CU(m,{onintervalchange:r});var h=F(m,2);RU(h,{});var g=F(h,2);KU(g,{}),uW(F(g,2),{}),E(a),I(e=>V(l,e),[()=>Qo()]),B(e,a),O()}var pW=`/admin/live/logs?types=audit,usage`;function mW(e,t,n){return!!t&&String(e&&e.id||``).trim()===t||!!n&&String(e&&e.request_id||``).trim()===n}function hW(e){switch(e){case`date_range`:return cl();case`filters`:return dl();case`pagination`:return ml();default:return``}}function gW(e){let t=pW,n=Number(e||0);return Number.isFinite(n)&&n>0&&(t+=`&cursor=`+encodeURIComponent(String(n))),t}function _W(){return{async consumeLiveLogsBody(e){await zB(e,e=>this.applyLiveLogEvent(e))},applyLiveLogEvent(e){if(!e||typeof e!=`object`)return;let t=Number(e.seq||0);Number.isFinite(t)&&t>this.liveLogsLastSeq&&(this.liveLogsLastSeq=t);let n=String(e.type||``).trim();if(n!==`heartbeat`){if(n===`reset`){this.reloadLiveLogSources();return}if(n===`audit.removed`){this.removeLiveAuditEntry(e.data);return}if(n.indexOf(`audit.`)===0){this.mergeLiveAuditEntry(e.data||{},n);return}n.indexOf(`usage.`)===0&&(this.mergeLiveUsageEntry(e.data||{},n),typeof this.noteLiveTokenUsage==`function`&&this.noteLiveTokenUsage(n))}},reloadLiveLogSources(){typeof this.fetchUsage==`function`&&this.fetchUsage(),this.page===`audit-logs`&&typeof this.fetchAuditLog==`function`&&this.fetchAuditLog(!0)},auditLivePauseReason(){return!this.auditLog||this.auditLog.offset!==0?`pagination`:this.auditSearch||this.auditMethod||this.auditStatusCode||this.auditStream?`filters`:!this.followsToday&&(this.customStartDate||this.customEndDate)?`date_range`:null},auditLiveInsertAllowed(){return!this.auditLivePauseReason()},usageLiveInsertAllowed(){return this.usageLog&&this.usageLog.offset===0&&!this.usageLogSearch&&!this.usageFilterModel&&!this.usageFilterProvider&&!this.usageFilterLabel&&!this.usageFilterUserPath},mergeLiveAuditEntry(e,t){if(!e||typeof e!=`object`)return;let n=String(e.id||e.request_id||``).trim();if(!n)return;let r=String(e.request_id||``).trim(),i=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],a=i.findIndex(e=>mW(e,n,r)),o=a>=0&&i[a]||{},s=t===`audit.detail`,c=s?{...e,_detail_loaded:!0,_response_partial:!1,bodies_omitted:!1}:this.liveAuditPatch(o,e,t);if(a>=0){let e=this.mergeLiveAuditPatch(o,c);return i.splice(a,1,e),this.auditLog.entries=[...i],this.regroupLiveAuditHead(e),s||this.fetchExpandedAuditDetailIfReady(e),this.cacheMergedAuditRecord(e,t),e}let l=this.mergeLiveAuditChild(e,c);if(l)return s||this.fetchExpandedAuditDetailIfReady(l),this.cacheMergedAuditRecord(l,t),l;if(!this.auditLiveInsertAllowed()){this.cacheMergedAuditRecord(c,t);return}if(!s&&this.auditGroupSessions){let e=this.foldLiveAuditIntoThread(c);if(e)return this.fetchExpandedAuditDetailIfReady(e),this.cacheMergedAuditRecord(e,t),e}this.auditLog.entries=[this.mergeLiveAuditUsagePatch(c),...i].slice(0,this.auditLog.limit||25),this.auditLog.total=Number(this.auditLog.total||0)+1;let u=this.auditLog.entries[0];return s||this.fetchExpandedAuditDetailIfReady(u),this.cacheMergedAuditRecord(u,t),u},liveAuditPatch(e,t,n){let r=this.liveAuditStateAfter(e._live_state,n),i=this.liveAuditEventFlushed(e._live_state)||this.liveAuditEventFlushed(r),a={...t,_live:!0,_live_state:r,_audit_flushed:i,_live_pending:!i};return n===`audit.stream`?a._response_partial=!0:this.liveAuditStateSettled(n)&&(a._response_partial=!1),a},mergeLiveAuditChild(e,t){let n=this.auditThreadChildren;if(!n||typeof n!=`object`)return null;let r=String(e.id||``).trim(),i=String(e.request_id||``).trim(),a=Object.keys(n);for(let e=0;emW(e,r,i));if(c<0)continue;let l=this.mergeLiveAuditPatch(s[c]||{},t),u=[...s];return u.splice(c,1,l),this.auditThreadChildren={...n,[a[e]]:{...o,entries:u}},l}return null},regroupLiveAuditHead(e){if(!this.auditGroupSessions)return null;let t=String(e&&e.session_id||``).trim();if(!t)return null;let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=String(e.id||``).trim(),i=n.findIndex(e=>String(e.id||``).trim()===r);if(i<0)return null;let a=n.findIndex((e,n)=>n!==i&&String(e.session_id||``).trim()===t);if(a<0)return null;let o=n[a],s=Date.parse(o&&o.timestamp),c=Date.parse(e&&e.timestamp),l=Number.isFinite(s)&&Number.isFinite(c)&&s>c,u=l?o:e,d=l?e:o,f={...u,session_count:Math.max(1,Number(o.session_count||1))+Math.max(1,Number(e.session_count||1))},p=n.filter((e,t)=>t!==i&&t!==a);return p.unshift(f),this.auditLog.entries=p,this.auditLog.total=Math.max(0,Number(this.auditLog.total||0)-1),this.prependLiveAuditThreadChild(t,d),f},foldLiveAuditIntoThread(e){let t=String(e&&e.session_id||``).trim();if(!t)return null;let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=n.findIndex(e=>String(e.session_id||``).trim()===t);if(r<0)return null;let i=n[r],a=Number(i.session_count),o=this.mergeLiveAuditUsagePatch({...e,session_count:(Number.isFinite(a)&&a>0?a:1)+1}),s=[...n];return s.splice(r,1),s.unshift(o),this.auditLog.entries=s,this.prependLiveAuditThreadChild(t,i),o},prependLiveAuditThreadChild(e,t){let n=this.auditThreadChildren||{},r=n[e],i={...t};delete i.session_count;let a=r&&Array.isArray(r.entries)?{...r,entries:[i,...r.entries],total:Number(r.total||r.entries.length)+1}:{loading:!1,loaded:!1,entries:[i],total:1};this.auditThreadChildren={...n,[e]:a}},removeLiveAuditThreadChild(e,t){let n=this.auditThreadChildren;!n||typeof n!=`object`||Object.keys(n).forEach(r=>{let i=n[r],a=i&&Array.isArray(i.entries)?i.entries:[],o=a.filter(n=>!mW(n,e,t)),s=a.length-o.length;s!==0&&(this.auditThreadChildren={...this.auditThreadChildren,[r]:{...i,entries:o,total:Math.max(0,Number(i.total||a.length)-s)}},this.decrementLiveAuditThreadCount(r,s))})},decrementLiveAuditThreadCount(e,t){let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=n.findIndex(t=>String(t.session_id||``).trim()===e);if(r<0)return;let i=n[r],a=[...n];a.splice(r,1,{...i,session_count:Math.max(1,Number(i.session_count||1)-t)}),this.auditLog.entries=a},mergeLiveAuditPatch(e,t){let n={...e,...t};return t.data===void 0&&e.data!==void 0?n.data=e.data:e.data&&t.data&&typeof e.data==`object`&&typeof t.data==`object`&&!Array.isArray(e.data)&&!Array.isArray(t.data)&&(n.data={...e.data,...t.data}),this.mergeLiveAuditUsagePatch(n)},mergeLiveAuditUsagePatch(e){let t=this.liveUsageEntryForAudit(e);if(!t)return e;let n=this.auditEntryWithLiveUsage(e,t);return this.removeSkippedLiveUsage(t),n},liveUsageEntryForAudit(e){let t=String(e&&e.request_id||``).trim();return t&&((this.usageLog&&Array.isArray(this.usageLog.entries)?this.usageLog.entries:[]).find(e=>String(e&&e.request_id||``).trim()===t)||this.skippedLiveUsageByRequestId&&this.skippedLiveUsageByRequestId[t])||null},cacheMergedAuditRecord(e,t){return e&&typeof this.cacheAuditRecord==`function`?this.cacheAuditRecord(e,t):e},fetchExpandedAuditDetailIfReady(e){!e||!this.isAuditEntryExpanded||!this.isAuditEntryExpanded(e)||String(e._live_state||``).trim()!==`audit.flushed`&&!e._audit_flushed||typeof this.fetchAuditEntryDetail==`function`&&this.fetchAuditEntryDetail(e)},liveAuditStateRank(e){switch(String(e||``).trim()){case`audit.started`:return 10;case`audit.updated`:case`audit.stream`:return 20;case`audit.completed`:return 30;case`audit.failed`:case`audit.flushed`:case`audit.detail`:return 40;default:return 0}},liveAuditStateAfter(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return this.liveAuditStateRank(n)>this.liveAuditStateRank(r)?n:r},liveAuditStateSettled(e){return this.liveAuditStateRank(e)>=this.liveAuditStateRank(`audit.completed`)},liveAuditEventFlushed(e){let t=String(e||``).trim();return t===`audit.failed`||t===`audit.flushed`||t===`audit.detail`},removeLiveAuditEntry(e){if(!e||!this.auditLog||!Array.isArray(this.auditLog.entries))return;let t=String(e.id||``).trim(),n=String(e.request_id||``).trim();if(!t&&!n)return;let r=this.auditLog.entries,i=[],a=0,o=0,s=!1;r.forEach(e=>{if(!mW(e,t,n)){i.push(e);return}a++;let r=String(e.session_id||``).trim(),c=Math.max(1,Number(e.session_count||1));if(!this.auditGroupSessions||!r||c<=1)return;o++;let l=this.auditThreadChildren&&this.auditThreadChildren[r],u=l&&Array.isArray(l.entries)?l.entries.filter(e=>!mW(e,t,n)):[];if(u.length===0){s=!0;return}let d={...u[0],session_id:r,session_count:c-1};i.push(d),this.auditThreadChildren={...this.auditThreadChildren,[r]:{...l,entries:u.slice(1),total:Math.max(0,Number(l.total||c)-1)}}}),a>0&&(this.auditLog.entries=i,this.auditLog.total=Math.max(0,Number(this.auditLog.total||0)-a+o)),this.removeLiveAuditThreadChild(t,n),s&&typeof this.fetchAuditLog==`function`&&this.fetchAuditLog(!0)},mergeLiveUsageEntry(e,t){if(!e||typeof e!=`object`)return;e={...e,_live_state:t||e._live_state||`usage.completed`};let n=String(e.id||``).trim();if(!n)return;let r=this.usageLog&&Array.isArray(this.usageLog.entries)?this.usageLog.entries:[],i=r.findIndex(e=>String(e.id||``).trim()===n);if(i>=0){let t=r[i]||{},n=this.mergeLiveUsagePatch(t,e);if(this.applyLiveUsageToAudit(n),this.liveUsageShouldSkip(n)){r.splice(i,1),this.usageLog.entries=[...r],this.usageLog.total=Math.max(0,Number(this.usageLog.total||0)-1),this.storeSkippedLiveUsage(n);return}r.splice(i,1,n),this.usageLog.entries=[...r],this.removeSkippedLiveUsage(n);return}let a=this.mergeLiveUsagePatch(this.liveUsageSeedForEntry(e),e);if(this.applyLiveUsageToAudit(a),this.liveUsageShouldSkip(a)){this.storeSkippedLiveUsage(a);return}this.removeSkippedLiveUsage(a),this.usageLog.entries=[a,...r].slice(0,this.usageLog.limit||50),this.usageLog.total=Number(this.usageLog.total||0)+1},mergeLiveUsagePatch(e,t){e=e&&typeof e==`object`?e:{};let n=this.liveUsageStateAfter(e._live_state,t&&t._live_state),r=this.liveUsageEventFlushed(e)||this.liveUsageEventFlushed({...t,_live_state:n});return{...e,...t,_live:!0,_live_state:n||`usage.completed`,_live_pending:!r,_usage_flushed:r}},liveUsageShouldSkip(e){return!!(this.usageLogHideCached&&this.liveUsageEntryCached(e))||!this.usageLiveInsertAllowed()},liveUsageSeedForEntry(e){return this.skippedLiveUsageForEntry(e)||this.auditLiveUsageForEntry(e)},skippedLiveUsageForEntry(e){let t=String(e&&e.request_id||``).trim();return t&&this.skippedLiveUsageByRequestId?this.skippedLiveUsageByRequestId[t]:null},auditLiveUsageForEntry(e){let t=String(e&&e.request_id||``).trim();if(!t||!this.auditLog||!Array.isArray(this.auditLog.entries))return null;let n=this.auditLog.entries.find(e=>String(e&&e.request_id||``).trim()===t),r=n&&n.usage&&typeof n.usage==`object`&&!Array.isArray(n.usage)?n.usage:null;return r?{id:e&&e.id,request_id:t,entries:r.entries,input_tokens:r.input_tokens,uncached_input_tokens:r.uncached_input_tokens,cached_input_tokens:r.cached_input_tokens,cache_write_input_tokens:r.cache_write_input_tokens,output_tokens:r.output_tokens,total_tokens:r.total_tokens,cached_input_ratio:r.cached_input_ratio,estimated_cached_characters:r.estimated_cached_characters,_live_state:n._usage_live_state,_live_pending:n._usage_live_pending,_usage_flushed:n._usage_flushed}:null},storeSkippedLiveUsage(e){let t=String(e&&e.request_id||``).trim();t&&((!this.skippedLiveUsageByRequestId||typeof this.skippedLiveUsageByRequestId!=`object`||Array.isArray(this.skippedLiveUsageByRequestId))&&(this.skippedLiveUsageByRequestId={}),this.skippedLiveUsageByRequestId[t]=e)},removeSkippedLiveUsage(e){let t=String(e&&e.request_id||``).trim();t&&this.skippedLiveUsageByRequestId&&delete this.skippedLiveUsageByRequestId[t]},liveUsageEntryCached(e){let t=String(e&&e.cache_type||``).trim().toLowerCase();return t===`exact`||t===`semantic`||!!(e&&e.cache_hit)},liveUsageEventFlushed(e){let t=String(e&&e._live_state||``).trim();return!!(e&&e._usage_flushed)||t===`usage.failed`||t===`usage.flushed`},liveUsageStateRank(e){switch(String(e||``).trim()){case`usage.completed`:return 10;case`usage.failed`:case`usage.flushed`:return 20;default:return 0}},liveUsageStateAfter(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return this.liveUsageStateRank(n)>this.liveUsageStateRank(r)?n:r},applyLiveUsageToAudit(e){let t=String(e&&e.request_id||``).trim();if(!t||!this.auditLog||!Array.isArray(this.auditLog.entries))return;let n=this.auditLog.entries.findIndex(e=>String(e.request_id||``).trim()===t);if(n>=0){let t=this.auditLog.entries[n];this.auditLog.entries.splice(n,1,this.auditEntryWithLiveUsage(t,e)),this.auditLog.entries=[...this.auditLog.entries]}let r=this.auditThreadChildren;if(!r||typeof r!=`object`)return;let i=r,a=!1;Object.keys(r).forEach(n=>{let r=i[n],o=r&&Array.isArray(r.entries)?r.entries:[],s=o.findIndex(e=>String(e.request_id||``).trim()===t);if(s<0)return;let c=[...o];c.splice(s,1,this.auditEntryWithLiveUsage(o[s],e)),i={...i,[n]:{...r,entries:c}},a=!0}),a&&(this.auditThreadChildren=i)},auditEntryWithLiveUsage(e,t){let n=this.liveUsageStateAfter(e._usage_live_state,t._live_state||`usage.completed`),r=this.liveUsageEventFlushed({_live_state:n,_usage_flushed:e._usage_flushed||t._usage_flushed});return{...e,usage:this.liveUsageSummary(t,e.usage),_usage_live_state:n||`usage.completed`,_usage_live_pending:!r,_usage_flushed:r}},liveUsageSummary(e,t){let n=t&&typeof t==`object`&&!Array.isArray(t)?t:{},r=this.liveNumber(e.input_tokens,this.liveNumber(n.input_tokens,0)),i=this.liveNumber(e.output_tokens,this.liveNumber(n.output_tokens,0)),a=this.liveNumber(e.uncached_input_tokens,this.liveNumber(n.uncached_input_tokens,0)),o=this.liveNumber(e.cached_input_tokens,this.liveNumber(n.cached_input_tokens,0)),s=this.liveNumber(e.cache_write_input_tokens,this.liveNumber(n.cache_write_input_tokens,0));r>0&&a+o+s===0&&(a=r);let c=a+o+s||r,l=c+i||this.liveNumber(e.total_tokens,this.liveNumber(n.total_tokens,0)),u=this.liveNumber(e.cached_input_ratio,this.liveNumber(n.cached_input_ratio,c>0?o/c:0));return{entries:Math.max(1,this.liveNumber(e.entries,this.liveNumber(n.entries,1))),input_tokens:c,uncached_input_tokens:a,cached_input_tokens:o,cache_write_input_tokens:s,output_tokens:i,total_tokens:l,cached_input_ratio:u,estimated_cached_characters:this.liveNumber(e.estimated_cached_characters,this.liveNumber(n.estimated_cached_characters,o*4))}},liveNumber(e,t){let n=Number(e);return Number.isFinite(n)?n:t},auditEntryShouldFetchDetail(e){return!e||e._detail_loading||e._detail_loaded||this.auditEntryLiveDetailPending(e)?!1:this.auditEntryNeedsPersistedLiveDetail(e)||e.bodies_omitted?!0:!this.auditEntryHasDetailData(e)},auditEntryLiveDetailPending(e){if(!e||!e._live)return!1;let t=String(e._live_state||``).trim();return t===`audit.failed`||!e._audit_flushed&&t!==`audit.flushed`&&t!==`audit.detail`},auditEntryNeedsPersistedLiveDetail(e){return!!(e&&e._live&&!e._detail_loaded)},auditEntryHasDetailData(e){let t=e&&e.data;return!t||typeof t!=`object`?!1:t.request_headers!==void 0||t.response_headers!==void 0||t.request_body!==void 0||t.response_body!==void 0||t.request_body_too_big_to_handle!==void 0||t.response_body_too_big_to_handle!==void 0||t.user_agent!==void 0||t.api_key_hash!==void 0||t.temperature!==void 0||t.max_tokens!==void 0||t.error_message!==void 0||t.error_code!==void 0},clearAuditDetailLoading(e){if(!e)return;let t=String(e.id||``).trim(),n=String(e.request_id||``).trim(),r=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],i=r.find(e=>t&&String(e.id||``).trim()===t?!0:!!(n&&String(e.request_id||``).trim()===n)),a=i||e;a._detail_loading=!1,i&&(this.auditLog.entries=[...r])}}}var vW={"audit.started":10,"audit.updated":20,"audit.stream":20,"audit.completed":30,"audit.failed":40,"audit.flushed":40,"audit.detail":40},yW=new Set(Object.keys(vW));function bW(e){return String(e&&(e.id||e.request_id)||``).trim()}function xW(e,t){let n=e&&typeof e==`object`?e:{},r=t&&typeof t==`object`?t:{},i={...n,...r};r.data==null&&n.data!=null?i.data=n.data:wW(n.data)&&wW(r.data)&&(i.data={...n.data,...r.data});let a=String(n._live_state||``).trim(),o=String(r._live_state||``).trim();return(vW[a]||0)>(vW[o]||0)&&(i._live_state=a),n._audit_flushed&&(i._audit_flushed=!0),i._audit_flushed&&(i._live_pending=!1),n._detail_loaded&&!r._detail_loaded&&(i._detail_loaded=!0,i.bodies_omitted=!1),i.bodies_omitted&&wW(i.data)&&(i.data.request_body!==void 0||i.data.response_body!==void 0)&&(i.bodies_omitted=!1),i}function SW(e,t){let n=Number(t||0);return(Array.isArray(e)?e:[]).filter(e=>Number(e&&e.version||0)>n)}function CW(e){return yW.has(String(e&&e.eventType||``).trim())}function wW(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}var TW=200,EW=class{#e=A(M({entries:[],total:0,limit:25,offset:0}));get auditLog(){return L(this.#e)}set auditLog(e){j(this.#e,e,!0)}#t=A(M({entries:[],total:0,limit:50,offset:0}));get usageLog(){return L(this.#t)}set usageLog(e){j(this.#t,e,!0)}#n=A(M({}));get auditRecords(){return L(this.#n)}set auditRecords(e){j(this.#n,e,!0)}#r=A(M([]));get auditRecordChanges(){return L(this.#r)}set auditRecordChanges(e){j(this.#r,e,!0)}auditRecordVersion=0;auditRecordPins=new Set;#i=A(``);get auditSearch(){return L(this.#i)}set auditSearch(e){j(this.#i,e,!0)}#a=A(``);get auditMethod(){return L(this.#a)}set auditMethod(e){j(this.#a,e,!0)}#o=A(``);get auditStatusCode(){return L(this.#o)}set auditStatusCode(e){j(this.#o,e,!0)}#s=A(``);get auditStream(){return L(this.#s)}set auditStream(e){j(this.#s,e,!0)}#c=A(Ca(`gomodel_audit_group_sessions`,`true`)!==`false`);get auditGroupSessions(){return L(this.#c)}set auditGroupSessions(e){j(this.#c,e,!0)}#l=A(M({}));get auditThreadChildren(){return L(this.#l)}set auditThreadChildren(e){j(this.#l,e,!0)}#u=A(``);get usageLogSearch(){return L(this.#u)}set usageLogSearch(e){j(this.#u,e,!0)}#d=A(``);get usageFilterModel(){return L(this.#d)}set usageFilterModel(e){j(this.#d,e,!0)}#f=A(``);get usageFilterProvider(){return L(this.#f)}set usageFilterProvider(e){j(this.#f,e,!0)}#p=A(``);get usageFilterLabel(){return L(this.#p)}set usageFilterLabel(e){j(this.#p,e,!0)}#m=A(``);get usageFilterUserPath(){return L(this.#m)}set usageFilterUserPath(e){j(this.#m,e,!0)}#h=A(!1);get usageLogHideCached(){return L(this.#h)}set usageLogHideCached(e){j(this.#h,e,!0)}#g=A(!1);get liveLogsStreaming(){return L(this.#g)}set liveLogsStreaming(e){j(this.#g,e,!0)}liveLogsLastSeq=0;liveLogsReconnectAttempts=0;liveLogsReconnectTimer=null;liveLogsController=null;skippedLiveUsageByRequestId=null;fetchUsage=null;fetchAuditLog=null;isAuditEntryExpanded=null;noteLiveTokenUsage=null;upsertAuditRecord(e,t=``){let n=bW(e);if(!n)return e;let r=xW(this.auditRecords[n],e);return this.auditRecords={...this.auditRecords,[n]:r},this.pruneAuditRecords(),this.auditRecordVersion++,this.auditRecordChanges=[...this.auditRecordChanges,{version:this.auditRecordVersion,key:n,eventType:t}].slice(-512),r}upsertAuditRecords(e,t=``){return(Array.isArray(e)?e:[]).map(e=>this.upsertAuditRecord(e,t))}auditRecord(e){let t=typeof e==`string`?String(e).trim():bW(e);return t&&this.auditRecords[t]||null}cacheAuditRecord(e,t){return this.upsertAuditRecord(e,t)}pinAuditRecords(e){this.auditRecordPins=new Set((Array.isArray(e)?e:[]).map(String))}pruneAuditRecords(){let e=Object.keys(this.auditRecords);if(e.length<=TW)return;let t={...this.auditRecords},n=e.length-TW;for(let r of e){if(n<=0)break;this.auditRecordPins.has(r)||(delete t[r],n--)}this.auditRecords=t}get page(){return kD.page}get customStartDate(){return kk.customStartDate}get customEndDate(){return kk.customEndDate}get followsToday(){return kk.followsToday}liveLogsEnabled(){return lO.liveLogsVisible()}async startLiveLogs(){typeof fetch!=`function`||typeof ReadableStream>`u`||(await lO.ensureLoaded(),this.liveLogsEnabled()&&(this.stopLiveLogs(),this.liveLogsController=typeof AbortController==`function`?new AbortController:null,this.readLiveLogsStream(this.liveLogsController)))}stopLiveLogs(){this.liveLogsStreaming=!1,this.liveLogsReconnectTimer&&=(clearTimeout(this.liveLogsReconnectTimer),null),this.liveLogsController&&typeof this.liveLogsController.abort==`function`&&this.liveLogsController.abort(),this.liveLogsController=null}ensureLiveLogs(){this.liveLogsController||this.liveLogsReconnectTimer||this.startLiveLogs()}async readLiveLogsStream(e){let t={};e&&(t.signal=e.signal);let n=gW(this.liveLogsLastSeq),r=Y.generation;try{let i=await nO(n,t);if(i.status===401){if(Y.handleUnauthorized(r),r{this.liveLogsReconnectTimer=null,this.startLiveLogs()},t)}async fetchAuditEntryDetail(e){if(!this.auditEntryShouldFetchDetail(e))return;let t=String(e.id||``).trim();if(!t)return;e._detail_loading=!0;let n=e;try{let e=await iO(`/admin/audit/detail?log_id=`+encodeURIComponent(t),{label:`audit detail`});if(e.stale||!e.ok)return;n=this.mergeLiveAuditEntry(e.data,`audit.detail`)||n}catch(e){console.error(`Failed to fetch audit detail:`,e)}finally{this.clearAuditDetailLoading(n)}}};Object.assign(EW.prototype,_W());var DW=new EW;if(typeof window<`u`){let e=!1;window.addEventListener(`pagehide`,()=>{e=!!DW.liveLogsController,DW.stopLiveLogs()}),window.addEventListener(`pageshow`,t=>{t.persisted&&e&&DW.ensureLiveLogs()})}var OW=null;jn(()=>{kn(()=>{let e=Y.refreshTick;if(OW===null){OW=e;return}e!==OW&&(OW=e,Tr(()=>{DW.stopLiveLogs(),DW.startLiveLogs()}))})});function kW(){return{total_requests:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,uncached_input_tokens:0,cached_input_tokens:0,cache_write_input_tokens:0,total_input_cost:null,total_output_cost:null,total_cost:null,rewrite_tokens_saved:0,rewrite_cost_saved:null}}function AW(){return{entries:[],total:0,limit:50,offset:0}}function jW(e,t){let n=[[`model`,e&&e.model],[`provider`,e&&e.provider],[`label`,e&&e.label],[`user_path`,e&&e.user_path]],r=``;for(let[e,i]of n)!i||e===t||(r+=`&`+e+`=`+encodeURIComponent(i));return r}function MW({limit:e,offset:t,hideCached:n,search:r}){let i=`&limit=`+e+`&offset=`+t;return i+=`&cache_mode=`+(n?`uncached`:`all`),r&&(i+=`&search=`+encodeURIComponent(r)),i}function NW(e,t){let n=new Set(e||[]);return t&&n.add(t),[...n].sort()}function PW(e,t){let n=Number(t&&t.total_requests||0)-Number(e&&e.total_requests||0);return Number.isFinite(n)&&n>0?n:0}function FW(e,t,n){let r=n?e:t,i=Number(r&&r.total_requests||0);return Number.isFinite(i)?i:0}function IW(e,t,n){let r=PW(e,t);return r<=0?``:n?ZO(r)+` cached requests hidden`:ZO(Number(e&&e.total_requests||0))+` to providers + `+ZO(r)+` from cache`}function eee(e){let t=e||{};return t.total_input_cost===null||t.total_input_cost===void 0?``:QO(t.total_input_cost)+` input + `+QO(t.total_output_cost)+` output`}function LW(e){let t=Number(e&&e.rewrite_tokens_saved||0);return Number.isFinite(t)&&t>0?t:0}function RW(e){return LW(e)>0}function zW(e){let t=e||{};return t.rewrite_cost_saved===void 0?null:t.rewrite_cost_saved}function BW(){return`Estimated at 4 net characters removed per token`}function VW(e,t){return t===`costs`?QO(zW(e)):tk(LW(e))}function HW(e,t){let n=t===`costs`,r=n?Number(zW(e)):LW(e);if(!Number.isFinite(r)||r<=0)return null;let i=e&&(n?e.total_cost:e.total_input_tokens);if(i==null)return null;let a=Number(i);return!Number.isFinite(a)||a<0?null:r/(a+r)*100}function UW(e,t){let n=HW(e,t);return n===null?``:(n<.1?`<0.1`:n.toFixed(1))+`% less`}function WW(e,t){let n=LW(e);if(n<=0)return``;let r=[ZO(n)+` estimated prompt token-transmissions removed across provider requests`,BW(),`Savings are summed per provider request; resent conversation history is counted again`],i=zW(e);i!=null&&(r.push(QO(i)+` estimated gross input cost avoided`),r.push(`Prompt-cache changes caused by rewriting are not included`));let a=UW(e,t);return a&&r.push(a+` than the same traffic without rewriting (`+(t===`costs`?`cost`:`tokens`)+`)`),r.join(` +`)}function GW(e){return String(e&&e.cost_source||``).trim()}function KW(e){let t=GW(e);return t===`openrouter_credits`||t===`xai_cost_in_usd_ticks`}function qW(e){switch(GW(e)){case`openrouter_credits`:return`Costs from OpenRouter USD-based credits.`;case`xai_cost_in_usd_ticks`:return`Costs from xAI usage.cost_in_usd_ticks.`;default:return``}}function JW(e){return String(e&&e.cache_type||``).trim().toLowerCase()}function YW(e){let t=JW(e);return t===`exact`||t===`semantic`}function XW(e){let t=JW(e);return t===`exact`?`Exact`:t===`semantic`?`Semantic`:`-`}function ZW(e,t){let n=t?String(t):``;return YW(e)?n?`Saved by cache — not charged +`+n:`Saved by cache — not charged`:n}function QW(e){let t=Number(e&&e.cached_input_ratio);return!Number.isFinite(t)||t<=0?0:Math.min(1,t)}function $W(e){return Number(e&&e.cached_input_tokens||0)>0}function eG(e){return $W(e)?(QW(e)*100).toFixed(1)+`%`:``}function tG(e){if(!$W(e))return``;let t=Number(e.cached_input_tokens||0),n=Number(e.uncached_input_tokens||0),r=Number(e.cache_write_input_tokens||0),i=t+n+r,a=[ZO(t)+` cached / `+ZO(i)+` input tokens`];return r>0&&a.push(ZO(r)+` cache write`),a.join(` +`)}function nG(e){let t=[];if(qW(e)&&(t.push(qW(e)),t.push(``)),t.push(`Input: `+QO(e.input_cost)),t.push(`Output: `+QO(e.output_cost)),e.raw_data){t.push(``);for(let[n,r]of Object.entries(e.raw_data)){let e=n.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase()),i=r&&typeof r==`object`?JSON.stringify(r):ZO(r);t.push(e+`: `+i)}}return t.join(` +`)}function rG(e){return Array.isArray(e&&e.labels)?e.labels:[]}function iG(e,t,n){return(e||[]).length>0||t?!0:(n||[]).some(e=>rG(e).length>0)}function aG(e){return e&&typeof e.total_tokens==`number`?e.total_tokens:(e&&e.input_tokens||0)+(e&&e.output_tokens||0)}function oG(e,t){return t?e.total_cost||0:aG(e)}function sG(e,t){return[...e||[]].sort((e,n)=>t?(n.total_cost||0)-(e.total_cost||0):oG(n,t)-oG(e,t))}function cG(e){let t=Array.isArray(e)?e:[];if(t.length===0)return!1;if(t.length!==1)return!0;let n=String(t[0]&&t[0].user_path||``).trim();return n!==``&&n!==`/`}function lG(e){return(e||`chart`)===`chart`||e===`stacked`}function uG(e,t,n){let r=sG(e,n),i=e=>Number(e)||0,a=e=>n?Math.min(i(e.cached_input_cost),i(e.input_cost)):i(e.cached_input_tokens),o=e=>n?i(e.input_cost)-a(e):i(e.uncached_input_tokens)+i(e.cached_input_tokens)+i(e.cache_write_input_tokens)>0?i(e.uncached_input_tokens)+i(e.cache_write_input_tokens):i(e.input_tokens),s=e=>i(n?e.output_cost:e.output_tokens),c=e=>n?0:i(e.local_cached_input_tokens),l=e=>n?0:i(e.local_cached_output_tokens),u=r.slice(0,10),d=r.slice(10),f=u.map(t),p=u.map(o),m=u.map(s),h=u.map(a),g=u.map(c),_=u.map(l);if(d.length>0){f.push(`Other`);let e=e=>d.reduce((t,n)=>t+e(n),0);p.push(e(o)),m.push(e(s)),h.push(e(a)),g.push(e(c)),_.push(e(l))}return{labels:f,inputs:p,outputs:m,prompts:h,localIns:g,localOuts:_}}function dG(e){return Math.max(200,e*32+72)}var fG=new class{#e=A(`tokens`);get usageMode(){return L(this.#e)}set usageMode(e){j(this.#e,e,!0)}get usageFilterModel(){return DW.usageFilterModel}set usageFilterModel(e){DW.usageFilterModel=e}get usageFilterProvider(){return DW.usageFilterProvider}set usageFilterProvider(e){DW.usageFilterProvider=e}get usageFilterLabel(){return DW.usageFilterLabel}set usageFilterLabel(e){DW.usageFilterLabel=e}get usageFilterUserPath(){return DW.usageFilterUserPath}set usageFilterUserPath(e){DW.usageFilterUserPath=e}#t=A(M({models:[],providers:[],labels:[]}));get usageFacetOptions(){return L(this.#t)}set usageFacetOptions(e){j(this.#t,e,!0)}#n=A(M(kW()));get usageSummary(){return L(this.#n)}set usageSummary(e){j(this.#n,e,!0)}#r=A(M(kW()));get usageSummaryAll(){return L(this.#r)}set usageSummaryAll(e){j(this.#r,e,!0)}#i=A(M([]));get modelUsage(){return L(this.#i)}set modelUsage(e){j(this.#i,e,!0)}#a=A(M([]));get userPathUsage(){return L(this.#a)}set userPathUsage(e){j(this.#a,e,!0)}#o=A(M([]));get labelUsage(){return L(this.#o)}set labelUsage(e){j(this.#o,e,!0)}get usageLog(){return DW.usageLog}set usageLog(e){DW.usageLog=e}get usageLogSearch(){return DW.usageLogSearch}set usageLogSearch(e){DW.usageLogSearch=e}get usageLogHideCached(){return DW.usageLogHideCached}set usageLogHideCached(e){DW.usageLogHideCached=e}#s=A(`chart`);get modelUsageView(){return L(this.#s)}set modelUsageView(e){j(this.#s,e,!0)}#c=A(`chart`);get userPathUsageView(){return L(this.#c)}set userPathUsageView(e){j(this.#c,e,!0)}#l=A(`chart`);get labelUsageView(){return L(this.#l)}set labelUsageView(e){j(this.#l,e,!0)}#u=A(!1);get summaryLoading(){return L(this.#u)}set summaryLoading(e){j(this.#u,e,!0)}#d=A(!1);get modelUsageLoading(){return L(this.#d)}set modelUsageLoading(e){j(this.#d,e,!0)}#f=A(!1);get userPathUsageLoading(){return L(this.#f)}set userPathUsageLoading(e){j(this.#f,e,!0)}#p=A(!1);get labelUsageLoading(){return L(this.#p)}set labelUsageLoading(e){j(this.#p,e,!0)}#m=A(!1);get usageLogLoading(){return L(this.#m)}set usageLogLoading(e){j(this.#m,e,!0)}#h={};#g(e){this.#h[e]&&this.#h[e].abort();let t=new AbortController;return this.#h[e]=t,t}#_(e,t){this.#h[e]===t&&(this.#h[e]=null)}filterQueryStr(e){return jW({model:this.usageFilterModel,provider:this.usageFilterProvider,label:this.usageFilterLabel,user_path:this.usageFilterUserPath},e)}onUsageFilterChanged(){this.fetchUsagePage()}toggleUsageLabelFilter(e){this.usageFilterLabel=this.usageFilterLabel===e?``:e,this.onUsageFilterChanged()}usageLabelChipTitle(e){return this.usageFilterLabel===e?`Clear label filter`:`Filter usage by "`+e+`"`}toggleUsageMode(e){this.usageMode=e,kD.navigate(`usage`,e===`costs`?`costs`:null)}toggleUsageChartView(e,t){e===`model`&&(this.modelUsageView=t),e===`userPath`&&(this.userPathUsageView=t),e===`label`&&(this.labelUsageView=t)}usageFilterModelOptions(){return NW(this.usageFacetOptions.models,this.usageFilterModel)}usageFilterProviderOptions(){return NW(this.usageFacetOptions.providers,this.usageFilterProvider)}usageFilterLabelOptions(){return NW(this.usageFacetOptions.labels,this.usageFilterLabel)}async fetchUsagePage(){await lO.ensureLoaded();let e=[this.fetchUsagePageSummary(),this.fetchUsageFacetOptions(),this.fetchModelUsage(),this.fetchUserPathUsage(),this.fetchLabelUsage(),this.fetchUsageLog(!0)];Fk.cacheAnalyticsEnabled()&&e.push(Fk.fetchCacheOverview(this.filterQueryStr())),await Promise.all(e)}async fetchUsagePageSummary(){let e=this.#g(`summary`);this.summaryLoading=!0;try{let t=kk.queryStr()+this.filterQueryStr(),[n,r]=await Promise.all([iO(`/admin/usage/summary?`+t+`&cache_mode=uncached`,{label:`usage page summary`,signal:e.signal}),iO(`/admin/usage/summary?`+t+`&cache_mode=all`,{label:`usage page summary (all)`,signal:e.signal})]);if(n.stale||r.stale||e.signal.aborted)return;if(!n.ok||!r.ok){this.usageSummary=kW(),this.usageSummaryAll=kW();return}this.usageSummary=n.data&&typeof n.data==`object`?n.data:kW(),this.usageSummaryAll=r.data&&typeof r.data==`object`?r.data:kW()}catch(e){if(oO(e))return;console.error(`Failed to fetch usage page summary:`,e),this.usageSummary=kW(),this.usageSummaryAll=kW()}finally{this.#_(`summary`,e),this.#h.summary===null&&(this.summaryLoading=!1)}}async fetchUsageFacetOptions(){let e=this.#g(`facets`);try{let t=async(t,n)=>{let r=await iO(t+`?`+kk.queryStr()+this.filterQueryStr(n),{label:`usage facet options`,signal:e.signal});return r.stale?null:r.ok&&Array.isArray(r.data)?r.data:[]},n=t(`/admin/usage/models`,`model`),r=!this.usageFilterModel&&!this.usageFilterProvider,[i,a,o]=await Promise.all([n,r?n:t(`/admin/usage/models`,`provider`),t(`/admin/usage/labels`,`label`)]);if(e.signal.aborted||i===null||a===null||o===null)return;this.usageFacetOptions={models:i.map(e=>e&&e.model).filter(Boolean),providers:a.map(e=>sk(e)).filter(Boolean),labels:o.map(e=>e&&e.label).filter(Boolean)}}catch(e){if(oO(e))return;console.error(`Failed to fetch usage facet options:`,e),this.usageFacetOptions={models:[],providers:[],labels:[]}}finally{this.#_(`facets`,e)}}async#v(e,t,n,r,i){let a=this.#g(e);i(!0);try{let e=await iO(t+`?`+kk.queryStr()+this.filterQueryStr(),{label:n,signal:a.signal});if(e.stale||a.signal.aborted)return;if(!e.ok){r([]);return}r(Array.isArray(e.data)?e.data:[])}catch(e){if(oO(e))return;console.error(`Failed to fetch `+n+`:`,e),r([])}finally{this.#_(e,a),this.#h[e]===null&&i(!1)}}fetchModelUsage(){return this.#v(`modelUsage`,`/admin/usage/models`,`usage models`,e=>this.modelUsage=e,e=>this.modelUsageLoading=e)}fetchUserPathUsage(){return this.#v(`userPathUsage`,`/admin/usage/user-paths`,`usage user paths`,e=>this.userPathUsage=e,e=>this.userPathUsageLoading=e)}fetchLabelUsage(){return this.#v(`labelUsage`,`/admin/usage/labels`,`usage labels`,e=>this.labelUsage=e,e=>this.labelUsageLoading=e)}async fetchUsageLog(e){let t=this.#g(`usageLog`);this.usageLogLoading=!0;try{e&&(this.usageLog.offset=0);let n=kk.queryStr()+this.filterQueryStr();n+=MW({limit:this.usageLog.limit,offset:this.usageLog.offset,hideCached:this.usageLogHideCached,search:this.usageLogSearch});let r=await iO(`/admin/usage/log?`+n,{label:`usage log`,signal:t.signal});if(r.stale||t.signal.aborted)return;if(!r.ok){this.usageLog=AW();return}let i=r.data&&typeof r.data==`object`?r.data:AW();i.entries||=[],this.usageLog=i}catch(e){if(oO(e))return;console.error(`Failed to fetch usage log:`,e),this.usageLog=AW()}finally{this.#_(`usageLog`,t),this.#h.usageLog===null&&(this.usageLogLoading=!1)}}usageLogNextPage(){this.usageLog.offset+this.usageLog.limit0&&(this.usageLog.offset=Math.max(0,this.usageLog.offset-this.usageLog.limit),this.fetchUsageLog(!1))}};DW.fetchUsage=()=>{kD.page===`usage`&&fG.fetchUsagePage()};var pG=z(`
                `);function mG(e,t){D(t,!0);let n=K(t,`value`,15,``),r=K(t,`placeholder`,3,``),i=K(t,`label`,3,``),a=K(t,`id`,3,void 0),o=K(t,`oninput`,3,void 0),s=K(t,`class`,3,``);var c=pG(),l=N(c);q(l,{get icon(){return QE},class:`filter-input-icon`});var u=F(l,2);ta(u),E(c),I(()=>{W(c,1,Pi([`filter-input-wrap`,s()]),`svelte-30xz1k`),G(u,`id`,a()),G(u,`placeholder`,r()),G(u,`aria-label`,i())}),R(`input`,u,function(...e){o()?.apply(this,e)}),ua(u,n),B(e,c),O()}Vr([`input`]);function hG(e,t=300){let n=null,r=(...r)=>{clearTimeout(n),n=setTimeout(()=>{n=null,e(...r)},t)};return r.cancel=()=>{clearTimeout(n),n=null},r}var gG=z(``),_G=z(``),vG=z(`
                `);function yG(e,t){D(t,!0);let n=hG(()=>fG.onUsageFilterChanged());kn(()=>n.cancel);var r=vG(),i=N(r),a=N(i);a.value=a.__value=``,U(F(a),16,()=>fG.usageFilterModelOptions(),e=>e,(e,t)=>{var n=gG(),r=N(n,!0);E(n);var i={};I(()=>{V(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),B(e,n)}),E(i);var o=F(i,2),s=N(o);s.value=s.__value=``,U(F(s),16,()=>fG.usageFilterProviderOptions(),e=>e,(e,t)=>{var n=gG(),r=N(n,!0);E(n);var i={};I(()=>{V(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),B(e,n)}),E(o);var c=F(o,2),l=e=>{var t=_G(),n=N(t);n.value=n.__value=``,U(F(n),16,()=>fG.usageFilterLabelOptions(),e=>e,(e,t)=>{var n=gG(),r=N(n,!0);E(n);var i={};I(()=>{V(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),B(e,n)}),E(t),R(`change`,t,()=>fG.onUsageFilterChanged()),Wi(t,()=>fG.usageFilterLabel,e=>fG.usageFilterLabel=e),B(e,t)},u=k(()=>fG.usageFilterLabelOptions().length>0);H(c,e=>{L(u)&&e(l)}),mG(F(c,2),{class:`usage-page-filters-user-path`,placeholder:`User path /team/alpha`,label:`Filter by user path`,get oninput(){return n},get value(){return fG.usageFilterUserPath},set value(e){fG.usageFilterUserPath=e}}),E(r),R(`change`,i,()=>fG.onUsageFilterChanged()),Wi(i,()=>fG.usageFilterModel,e=>fG.usageFilterModel=e),R(`change`,o,()=>fG.onUsageFilterChanged()),Wi(o,()=>fG.usageFilterProvider,e=>fG.usageFilterProvider=e),B(e,r),O()}Vr([`change`]);var bG=z(`
                Cache Saved
                Cache Hits
                `,1);function xG(e,t){D(t,!0);var n=Zr(),r=P(n),i=e=>{var t=bG(),n=P(t),r=F(N(n),2),i=N(r,!0);E(r),E(n);var a=F(n,2),o=F(N(a),2),s=N(o,!0);E(o),E(a),I((e,t)=>{V(i,e),V(s,t)},[()=>QO(Fk.cacheOverview.summary.total_saved_cost),()=>ZO(Fk.cacheOverview.summary.total_hits)]),B(e,t)},a=k(()=>Fk.cacheAnalyticsEnabled());H(r,e=>{L(a)&&e(i)}),B(e,n),O()}var SG=z(` `),CG=z(`
                Pro Saved
                `),wG=z(`
                Total Requests
                Estimated Cost
                `);function TG(e,t){D(t,!0);let n=k(()=>RW(fG.usageSummary)),r=k(()=>VW(fG.usageSummary,fG.usageMode)),i=k(()=>UW(fG.usageSummary,fG.usageMode));var a=wG(),o=N(a),s=F(N(o),2),c=N(s),l=e=>{_U(e,{size:18,label:`Loading usage summary`})},u=e=>{var t=Xr();I(e=>V(t,e),[()=>ZO(FW(fG.usageSummary,fG.usageSummaryAll,fG.usageLogHideCached))]),B(e,t)};H(c,e=>{fG.summaryLoading?e(l):e(u,-1)}),E(s),E(o);var d=F(o,2),f=F(N(d),2),p=N(f),m=e=>{_U(e,{size:18,label:`Loading usage summary`})},h=e=>{var t=Xr();I(e=>V(t,e),[()=>QO(fG.usageSummary.total_cost)]),B(e,t)};H(p,e=>{fG.summaryLoading?e(m):e(h,-1)}),E(f),E(d);var g=F(d,2),_=e=>{var t=CG(),n=F(N(t),2),a=N(n),o=N(a,!0);E(a);var s=F(a,2),c=e=>{var t=SG(),n=N(t,!0);E(t),I(()=>V(n,L(i))),B(e,t)};H(s,e=>{L(i)&&e(c)}),E(n),E(t),I(e=>{G(n,`title`,e),V(o,L(r))},[()=>WW(fG.usageSummary,fG.usageMode)]),B(e,t)};H(g,e=>{L(n)&&e(_)}),xG(F(g,2),{}),E(a),I((e,t)=>{G(s,`title`,e),G(f,`title`,t)},[()=>IW(fG.usageSummary,fG.usageSummaryAll,fG.usageLogHideCached),()=>eee(fG.usageSummary)]),B(e,a),O()}function EG(e,t,n,r){let{stacked:i=!1,costs:a=!1,resolve:o=e=>e}=r||{},s=e=>a?`$`+Math.abs(e).toFixed(2):tk(Math.abs(e)),c=e=>a?`$`+Math.abs(e).toFixed(4):Math.abs(e).toLocaleString(),l=e=>e.map(e=>i?Math.abs(e):-Math.abs(e)),u=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderColor:`transparent`,borderWidth:0,borderRadius:4,maxBarThickness:22}),d=e=>(e||[]).some(e=>Math.abs(e)>0),f=[u(a?`Input Cost`:`Input Tokens`,l(n.inputs),o(`var(--token-input)`)),u(a?`Output Cost`:`Output Tokens`,n.outputs,o(`var(--token-output)`))];return d(n.prompts)&&f.push(u(a?`Prompt Cached Cost`:`Prompt Cached`,l(n.prompts),o(`var(--token-prompt)`))),!a&&d(n.localIns)&&f.push(u(`Locally Cached (Input)`,l(n.localIns),o(`var(--token-local)`))),!a&&d(n.localOuts)&&f.push(u(`Locally Cached (Output)`,n.localOuts,o(`var(--token-local)`))),{type:`bar`,data:{labels:t,datasets:f},options:{indexAxis:`y`,responsive:!0,maintainAspectRatio:!1,animation:{duration:0},layout:{padding:{top:8}},scales:{x:{stacked:!0,beginAtZero:!0,grid:i?{color:e.grid}:{color:t=>t.tick&&t.tick.value===0?e.text:e.grid},border:{display:!1},ticks:{color:e.text,font:MB(),callback:e=>s(e)}},y:{stacked:!0,grid:{display:!1},border:{display:!1},ticks:{color:e.text,font:MB(),autoSkip:!1}}},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:NB(e,{label:e=>e.dataset.label+`: `+c(e.parsed.x),footer:e=>{let t=0;return e.forEach(e=>{t+=Math.abs(Number(e.parsed.x))||0}),`Total: `+c(t)}})}}}}var DG=z(`
                `),OG=z(`

                `),kG=z(`

                `,1),AG=z(`
                `),jG=z(`Model Provider`,1),MG=z(`User Path`),NG=z(`Label Requests`,1),PG=z(` `,1),FG=z(` `),IG=z(` `,1),LG=z(` `),RG=z(`
                Input TokensOutput TokensPrompt CachedLocal CachedTotal TokensInput CostOutput CostTotal Cost
                `),zG=z(`
                `),BG=z(`
                `);function VG(e,t){D(t,!0);let n=e=>{var n=DG(),r=N(n);let a;var o=F(r,2);let s;var l=F(o,2);let u;E(n),I(()=>{G(n,`aria-label`,L(i).group),a=W(r,1,`chart-view-btn svelte-1kee4g8`,null,a,{active:L(c)===`chart`}),G(r,`aria-pressed`,L(c)===`chart`),G(r,`aria-label`,`Show ${L(i).noun??``} chart`),s=W(o,1,`chart-view-btn svelte-1kee4g8`,null,s,{active:L(c)===`stacked`}),G(o,`aria-pressed`,L(c)===`stacked`),G(o,`aria-label`,`Show ${L(i).noun??``} stacked chart`),u=W(l,1,`chart-view-btn svelte-1kee4g8`,null,u,{active:L(c)===`table`}),G(l,`aria-pressed`,L(c)===`table`),G(l,`aria-label`,`Show ${L(i).noun??``} table`)}),R(`click`,r,()=>fG.toggleUsageChartView(t.kind,`chart`)),R(`click`,o,()=>fG.toggleUsageChartView(t.kind,`stacked`)),R(`click`,l,()=>fG.toggleUsageChartView(t.kind,`table`)),B(e,n)},r={model:{group:`Model usage view`,noun:`model usage`,tokensTitle:`Token Usage by Model`,costsTitle:`Cost by Model`},userPath:{group:`User path usage view`,noun:`user path usage`,tokensTitle:`Usage by User Path`,costsTitle:`Cost by User Path`},label:{group:`Label usage view`,noun:`label usage`,tokensTitle:`Usage by Label`,costsTitle:`Cost by Label`}},i=k(()=>r[t.kind]),a=k(()=>t.kind===`model`?e=>lk(e):t.kind===`userPath`?e=>e.user_path||`/`:e=>e.label);function o(e){return t.kind===`model`?(e.provider_name||e.provider||`-`)+`/`+e.model:t.kind===`userPath`?e.user_path||`/`:e.label}let s=k(()=>t.kind===`model`?fG.modelUsage:t.kind===`userPath`?fG.userPathUsage:fG.labelUsage),c=k(()=>t.kind===`model`?fG.modelUsageView:t.kind===`userPath`?fG.userPathUsageView:fG.labelUsageView),l=k(()=>t.kind===`model`?fG.modelUsageLoading:t.kind===`userPath`?fG.userPathUsageLoading:fG.labelUsageLoading),u=k(()=>fG.usageMode===`costs`),d=k(()=>t.kind===`userPath`?cG(L(s)):L(s).length>0),f=k(()=>L(u)?L(i).costsTitle:L(i).tokensTitle),p=k(()=>uG(L(s),L(a),L(u))),m=k(()=>sG(L(s),L(u)));function h(){return lG(L(c))?EG(jB(),L(p).labels,L(p),{stacked:L(c)===`stacked`,costs:L(u),resolve:PB}):null}var g=Zr(),_=P(g),v=e=>{var r=zG(),a=N(r),s=N(a),u=e=>{HU(e,{copyId:`label-usage-help-copy`,label:`label usage help`,text:`One request can have multiple labels. Such a request counts once under each of its labels, so label rows can overlap and add up to more than the period totals.`,title:e=>{var t=OG(),n=N(t,!0);E(t),I(()=>V(n,L(f))),B(e,t)},extra:e=>{var t=Zr(),n=P(t),r=e=>{_U(e,{size:14,get label(){return`Loading ${L(i).noun??``}`}})};H(n,e=>{L(l)&&e(r)}),B(e,t)},$$slots:{title:!0,extra:!0}})},d=e=>{var t=kG(),n=P(t),r=N(n,!0);E(n);var a=F(n,2),o=e=>{_U(e,{size:14,get label(){return`Loading ${L(i).noun??``}`}})};H(a,e=>{L(l)&&e(o)}),I(()=>V(r,L(f))),B(e,t)};H(s,e=>{t.kind===`label`?e(u):e(d,-1)});var g=F(s,2);n(g),E(a);var _=F(a,2),v=e=>{var t=AG();let n;EB(N(t),{build:h}),E(t),I(e=>n=Vi(t,``,n,e),[()=>({height:`${dG(L(p).labels.length)??``}px`})]),B(e,t)},y=k(()=>lG(L(c))),b=e=>{var n=RG(),r=N(n),i=N(r),a=N(i),s=N(a),c=e=>{var t=jG();He(2),B(e,t)},l=e=>{B(e,MG())},u=e=>{var t=NG();He(2),B(e,t)};H(s,e=>{t.kind===`model`?e(c):t.kind===`userPath`?e(l,1):e(u,-1)}),He(8),E(a),E(i);var d=F(i);U(d,21,()=>L(m),e=>o(e),(e,n)=>{var r=LG(),i=N(r),a=e=>{var t=PG(),r=P(t),i=N(r,!0);E(r);var a=F(r,2),o=N(a),s=N(o,!0);E(o),E(a),I(e=>{V(i,L(n).model||`-`),V(s,e)},[()=>sk(L(n))||`-`]),B(e,t)},o=e=>{var t=FG(),r=N(t,!0);E(t),I(()=>V(r,L(n).user_path||`/`)),B(e,t)},s=e=>{var t=IG(),r=P(t),i=N(r);let a;var o=N(i,!0);E(i),E(r);var s=F(r,2),c=N(s,!0);E(s),I((e,t,r)=>{a=W(i,1,`usage-label-chip`,null,a,{active:fG.usageFilterLabel===L(n).label}),Vi(i,`--label-color: ${e??``}`),G(i,`title`,t),V(o,L(n).label),V(c,r)},[()=>LB(L(n).label),()=>fG.usageLabelChipTitle(L(n).label),()=>ZO(L(n).requests)]),R(`click`,i,()=>fG.toggleUsageLabelFilter(L(n).label)),B(e,t)};H(i,e=>{t.kind===`model`?e(a):t.kind===`userPath`?e(o,1):e(s,-1)});var c=F(i),l=N(c,!0);E(c);var u=F(c),d=N(u,!0);E(u);var f=F(u),p=N(f,!0);E(f);var m=F(f),h=N(m,!0);E(m);var g=F(m),_=N(g,!0);E(g);var v=F(g),y=N(v,!0);E(v);var b=F(v),x=N(b,!0);E(b);var S=F(b),C=N(S,!0);E(S),E(r),I((e,t,n,r,i,a,o,s,c,u,g)=>{V(l,e),V(d,t),G(f,`title`,n),V(p,r),G(m,`title`,`${i??``} input + ${a??``} output`),V(h,o),V(_,s),V(y,c),V(x,u),V(C,g)},[()=>ZO(L(n).input_tokens),()=>ZO(L(n).output_tokens),()=>L(n).cached_input_cost==null?``:`~`+QO(L(n).cached_input_cost)+` at current cached-input pricing`,()=>ZO(L(n).cached_input_tokens||0),()=>ZO(L(n).local_cached_input_tokens||0),()=>ZO(L(n).local_cached_output_tokens||0),()=>ZO((L(n).local_cached_input_tokens||0)+(L(n).local_cached_output_tokens||0)),()=>ZO(aG(L(n))),()=>QO(L(n).input_cost),()=>QO(L(n).output_cost),()=>QO(L(n).total_cost)]),B(e,r)}),E(d),E(r),E(n),B(e,n)};H(_,e=>{L(y)?e(v):e(b,-1)}),E(r),B(e,r)},y=e=>{var t=BG();_U(N(t),{size:20,get label(){return`Loading ${L(i).noun??``}`}}),E(t),B(e,t)};H(_,e=>{L(d)?e(v):L(l)&&e(y,1)}),B(e,g),O()}Vr([`click`]);var HG=z(``);function UG(e,t){D(t,!0);let n=K(t,`total`,3,0),r=K(t,`offset`,3,0),i=K(t,`limit`,3,25);var a=Zr(),o=P(a),s=e=>{var a=HG(),o=N(a),s=N(o,!0);E(o);var c=F(o,2),l=N(c),u=N(l,!0);E(l);var d=F(l,2),f=N(d,!0);E(d),E(c),E(a),I((e,t,a)=>{V(s,e),l.disabled=r()===0,V(u,t),d.disabled=r()+i()>=n(),V(f,a)},[()=>wT({start:xk(r()+1),end:xk(Math.min(r()+i(),n())),total:xk(n())}),()=>lo(),()=>oo()]),R(`click`,l,()=>t.onprev?.()),R(`click`,d,()=>t.onnext?.()),B(e,a)};H(o,e=>{n()>0&&e(s)}),B(e,a),O()}Vr([`click`]);var WG=(e,t=f)=>{var n=Zr(),r=P(n),i=e=>{var n=KG();U(n,20,()=>rG(t()),e=>e,(e,t)=>{var n=GG();let r;var i=N(n,!0);E(n),I((e,a)=>{r=W(n,1,`usage-label-chip`,null,r,{active:fG.usageFilterLabel===t}),Vi(n,`--label-color: ${e??``}`),G(n,`title`,a),V(i,t)},[()=>LB(t),()=>fG.usageLabelChipTitle(t)]),R(`click`,n,()=>fG.toggleUsageLabelFilter(t)),B(e,n)}),E(n),B(e,n)},a=k(()=>rG(t()).length>0),o=e=>{B(e,qG())};H(r,e=>{L(a)?e(i):e(o,-1)}),B(e,n)},GG=z(``),KG=z(`
                `),qG=z(`-`),JG=z(`Labels`),YG=z(`Cost`),XG=z(``),ZG=z(` `),QG=z(``),$G=z(` `),eK=z(` `),tK=z(`
                TimestampProviderModelUser PathCacheProvider Cache
                `),nK=z(`
                `),rK=z(`
                `),iK=z(`

                Request Log

                `);function aK(e,t){D(t,!0);let n=k(()=>fG.usageMode===`costs`),r=k(()=>iG(fG.labelUsage,fG.usageFilterLabel,fG.usageLog.entries)),i=hG(()=>fG.fetchUsageLog(!0));kn(()=>i.cancel);var a=iK(),o=F(N(a),2),s=N(o);mG(N(s),{placeholder:`Search by request ID, model, provider...`,label:`Search by request ID, model, provider`,get oninput(){return i},get value(){return fG.usageLogSearch},set value(e){fG.usageLogSearch=e}}),E(s);var c=F(s,2),l=N(c),u=N(l);ta(u),He(2),E(l),E(c),E(o);var d=F(o,2),f=e=>{var t=tK(),i=N(t),a=N(i),o=N(a),s=F(N(o),4),c=e=>{B(e,JG())};H(s,e=>{L(r)&&e(c)});var l=F(s,3),u=N(l,!0);E(l);var d=F(l),f=N(d,!0);E(d);var p=F(d),m=N(p,!0);E(p);var h=F(p),g=e=>{B(e,YG())};H(h,e=>{L(n)||e(g)}),E(o),E(a);var _=F(a);U(_,21,()=>fG.usageLog.entries,e=>e.id,(e,t)=>{var i=eK();let a;var o=N(i),s=N(o,!0);E(o);var c=F(o),l=N(c),u=N(l,!0);E(l),E(c);var d=F(c),f=N(d,!0);E(d);var p=F(d),m=N(p,!0);E(p);var h=F(p),g=e=>{var n=XG();WG(N(n),()=>L(t)),E(n),B(e,n)};H(h,e=>{L(r)&&e(g)});var _=F(h),v=N(_,!0);E(_);var y=F(_),b=N(y),x=e=>{var n=ZG(),r=N(n,!0);E(n),I(e=>V(r,e),[()=>eG(L(t))]),B(e,n)},S=k(()=>$W(L(t))),C=e=>{B(e,qG())};H(b,e=>{L(S)?e(x):e(C,-1)}),E(y);var w=F(y),T=N(w,!0);E(w);var ee=F(w),te=N(ee,!0);E(ee);var ne=F(ee),re=N(ne),ie=N(re,!0);E(re);var ae=F(re,2),oe=e=>{{let n=k(()=>qW(L(t)));q(e,{get icon(){return DE},class:`cost-source-icon`,get title(){return L(n)}})}},se=k(()=>L(n)&&KW(L(t)));H(ae,e=>{L(se)&&e(oe)});var ce=F(ae,2),le=e=>{q(e,{get icon(){return AE},class:`cache-savings-icon`})},ue=k(()=>L(n)&&YW(L(t)));H(ce,e=>{L(ue)&&e(le)});var de=F(ce,2),fe=e=>{var n=QG();I(()=>G(n,`title`,L(t).costs_calculation_caveat)),B(e,n)};H(de,e=>{L(n)&&L(t).costs_calculation_caveat&&e(fe)}),E(ne);var pe=F(ne),me=e=>{var n=$G(),r=N(n),i=N(r,!0);E(r);var a=F(r,2),o=e=>{{let n=k(()=>qW(L(t)));q(e,{get icon(){return DE},class:`cost-source-icon`,get title(){return L(n)}})}},s=k(()=>KW(L(t)));H(a,e=>{L(s)&&e(o)});var c=F(a,2),l=e=>{q(e,{get icon(){return AE},class:`cache-savings-icon`})},u=k(()=>YW(L(t)));H(c,e=>{L(u)&&e(l)});var d=F(c,2),f=e=>{var n=QG();I(()=>G(n,`title`,L(t).costs_calculation_caveat)),B(e,n)};H(d,e=>{L(t).costs_calculation_caveat&&e(f)}),E(n),I((e,t)=>{G(n,`title`,e),V(i,t)},[()=>ZW(L(t),nG(L(t))),()=>QO(L(t).total_cost)]),B(e,n)};H(pe,e=>{L(n)||e(me)}),E(i),I((e,n,r,c,l,d,p,h,g,_,b,x,S)=>{a=W(i,1,`svelte-hg4ill`,null,a,e),G(o,`title`,n),V(s,r),V(u,c),V(f,L(t).model),V(m,L(t).user_path||`-`),V(v,l),G(y,`title`,d),G(w,`title`,p),V(T,h),G(ee,`title`,g),V(te,_),G(ne,`title`,b),G(re,`title`,x),V(ie,S)},[()=>({"usage-log-row-cached":YW(L(t))}),()=>ak(L(t).timestamp),()=>QD.formatTimestamp(L(t).timestamp),()=>sk(L(t))||`-`,()=>XW(L(t)),()=>tG(L(t)),()=>L(n)?ZO(L(t).input_tokens)+` tokens`:``,()=>L(n)?QO(L(t).input_cost):ZO(L(t).input_tokens),()=>L(n)?ZO(L(t).output_tokens)+` tokens`:``,()=>L(n)?QO(L(t).output_cost):ZO(L(t).output_tokens),()=>L(n)?ZW(L(t),``):``,()=>L(n)?ZW(L(t),ZO(L(t).total_tokens)+` tokens +`+nG(L(t))):``,()=>L(n)?QO(L(t).total_cost):ZO(L(t).total_tokens)]),B(e,i)}),E(_),E(i),E(t),I(()=>{V(u,L(n)?`Input Cost`:`Input`),V(f,L(n)?`Output Cost`:`Output`),V(m,L(n)?`Total Cost`:`Total`)}),B(e,t)},p=e=>{var t=nK();_U(N(t),{size:20,label:`Loading request log`}),E(t),B(e,t)},m=e=>{var t=rK();bU(N(t),{}),E(t),B(e,t)};H(d,e=>{fG.usageLog.entries.length>0?e(f):fG.usageLogLoading?e(p,1):e(m,-1)}),UG(F(d,2),{get total(){return fG.usageLog.total},get offset(){return fG.usageLog.offset},get limit(){return fG.usageLog.limit},onprev:()=>fG.usageLogPrevPage(),onnext:()=>fG.usageLogNextPage()}),E(a),R(`change`,u,()=>fG.fetchUsageLog(!0)),da(u,()=>fG.usageLogHideCached,e=>fG.usageLogHideCached=e),B(e,a),O()}Vr([`click`,`change`]);var oK=z(`
                `);function sK(e,t){D(t,!0);let n=`usage`;kn(()=>{Y.refreshTick,kD.page===n&&(fG.fetchUsagePage(),DW.ensureLiveLogs())}),kn(()=>{kD.page===n&&(fG.usageMode=kD.sub===`costs`?`costs`:`tokens`)});var r=oK(),i=F(N(r),2),a=N(i);kB(a,{ariaLabel:`Usage mode`,options:[{value:`tokens`,label:`Tokens`},{value:`costs`,label:`Costs`}],get value(){return fG.usageMode},onchange:e=>fG.toggleUsageMode(e)}),Zk(F(a,2),{onchange:()=>fG.fetchUsagePage()}),E(i);var o=F(i,2);yG(o,{});var s=F(o,2);TG(s,{});var c=F(s,2),l=N(c);VG(l,{kind:`model`});var u=F(l,2);VG(u,{kind:`userPath`}),VG(F(u,2),{kind:`label`}),E(c),aK(F(c,2),{}),E(r),B(e,r),O()}var cK=z(`
                `);function lK(e,t){let n=K(t,`label`,3,`Loading...`),r=K(t,`class`,3,``);var i=cK(),a=F(N(i),2),o=N(a,!0);E(a),E(i),I(()=>{W(i,1,Pi([`loading-state`,r()]),`svelte-hzxv1d`),V(o,n())}),B(e,i)}var uK=z(``);function dK(e,t){let n=K(t,`label`,3,``),r=K(t,`class`,3,``),i=K(t,`disabled`,3,!1);var a=uK();hi(N(a),()=>t.children??f),E(a),I(()=>{W(a,1,Pi([`table-action-btn`,r()])),G(a,`aria-label`,n()),G(a,`title`,n()),a.disabled=i()}),R(`click`,a,function(...e){t.onclick?.apply(this,e)}),B(e,a)}Vr([`click`]);async function fK(e,{label:t,errorFallback:n=`Unable to load ${t}.`,unavailableStatuses:r=[503],normalize:i=e=>Array.isArray(e)?e:[],options:a}){let o;try{o=await iO(e,{...a||{},label:t})}catch(e){return oO(e)||console.error(`Failed to fetch ${t}:`,e),{status:`error`,items:[],error:n,result:null}}return o.stale?{status:`stale`,items:[],error:``,result:o}:r.includes(o.status)?{status:`unavailable`,items:[],error:``,result:o}:o.ok?{status:`ok`,items:i(o.data),error:``,result:o}:{status:`error`,items:[],error:o.status===401?``:$D(o.data,n),result:o}}async function pK(e,t,n,{label:r,errorFallback:i=`Unable to ${r}.`,unavailableStatuses:a=[503],unavailableMessage:o=`This feature is unavailable on the gateway.`,options:s}){let c;try{c=await aO(e,t,n,{...s||{},label:r})}catch(e){return oO(e)||console.error(`Failed to ${r}:`,e),{status:`error`,error:i,result:null}}return c.stale?{status:`stale`,error:``,result:c}:a.includes(c.status)?{status:`unavailable`,error:o,result:c}:c.ok?{status:`ok`,error:``,result:c}:{status:`error`,error:c.status===401?`Authentication required.`:$D(c.data,i),result:c}}function mK(){return{scope:`user_path`,subject:`/`,period:`daily`,period_seconds:86400,amount:``,source:`manual`}}function hK(e){let t={user_path:{label:`User path`,chip:`user path`,fieldLabel:`User Path`,placeholder:`/team/alpha`},label:{label:`Label`,chip:`label`,fieldLabel:`Label`,placeholder:`Mobile-App-iOS`}};return t[e]||t.user_path}function gK(){return[`user_path`,`label`].map(e=>({value:e,label:hK(e).label}))}function _K(e){return String(e&&e.scope||``).trim()||`user_path`}function vK(e){return String(e&&e.subject||``).trim()||String(e&&e.user_path||``)}function yK(e){return hK(_K(e)).chip}function bK(e){return _K(e)===`label`?`budget-label`:`budget-user-path`}function xK(e){return hK(String(e&&e.scope||``)).fieldLabel}function SK(e){return hK(String(e&&e.scope||``)).placeholder}function CK(e){e.subject=String(e&&e.scope||``)===`user_path`?`/`:``}function wK(){return[{value:`hourly`,label:`Hourly`},{value:`daily`,label:`Daily`},{value:`weekly`,label:`Weekly`},{value:`monthly`,label:`Monthly`},{value:`custom`,label:`Custom seconds`}]}function TK(e){switch(String(e||``).trim().toLowerCase()){case`hourly`:return 3600;case`daily`:return 86400;case`weekly`:return 604800;case`monthly`:return 2592e3;default:return 0}}function EK(e){switch(Number(e||0)){case 3600:return`hourly`;case 86400:return`daily`;case 604800:return`weekly`;case 2592e3:return`monthly`;default:return`custom`}}function DK(e){return _K(e)+`:`+vK(e)+`:`+String(e&&e.period_seconds||``)}function OK(e,t){if(!t||!Array.isArray(e))return null;let n=DK(t);return e.find(e=>DK(e)===n)||null}function kK(e){let t=String(e||``).trim();if(!t)return`User path is required.`;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`);for(let e of n){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function AK(e){if(kK(e))return``;let t=String(e||``).trim(),n=(t.startsWith(`/`)?t:`/`+t).split(`/`),r=[];for(let e of n){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function jK(e){return`/`+String(e||``).trimStart().replace(/^\/+/,``)}function MK(e){return Array.isArray(e)?e:e&&Array.isArray(e.budgets)?e.budgets:[]}function NK(e){let t=Number(e&&e.period_seconds||0);return[vK(e),yK(e),XK(e),EK(t),t?String(t)+`s`:``,t?String(t)+` seconds`:``].join(` `).toLowerCase()}var PK={user_path:0,label:1};function FK(e,t){let n=Array.isArray(e)?e.slice():[],r=String(t||`subject`);return n.sort((e,t)=>{let n=(PK[_K(e)]||0)-(PK[_K(t)]||0),i=vK(e).localeCompare(vK(t)),a=Number(t&&t.period_seconds||0)-Number(e&&e.period_seconds||0);return r===`period`?a||n||i:n||i||a}),n}function IK(e,t,n){let r=Array.isArray(e)?e:[],i=String(t||``).trim().toLowerCase();return FK(i?r.filter(e=>NK(e).includes(i)):r.slice(),n)}function LK(e){let t=e||{},n=_K(t),r=String(t.subject||``).trim();if(n===`user_path`){let e=kK(r);if(e)return{payload:null,error:e}}else if(!r)return{payload:null,error:`Label is required.`};let i=Number(t.amount);if(!Number.isFinite(i)||i<=0)return{payload:null,error:`Amount must be greater than 0.`};let a=String(t.period||``).trim(),o=TK(a);return a===`custom`&&(o=Number(t.period_seconds)),!Number.isFinite(o)||o<=0?{payload:null,error:`Period seconds must be greater than 0.`}:{payload:{scope:n,subject:n===`user_path`?AK(r):r,period_seconds:Math.trunc(o),amount:i,source:String(t.source||`manual`).trim()||`manual`},error:``}}function RK(e){return{scope:_K(e),subject:vK(e),budget_key:{period_seconds:e.period_seconds},amount:e.amount}}function zK(e){return{scope:_K(e),subject:vK(e),budget_key:{period_seconds:e.period_seconds}}}function BK(e){return{scope:_K(e),subject:vK(e),period_seconds:e.period_seconds}}function VK(e){return QO(e)}function HK(e,t){let n=e||{},r=t||{};return`A budget for "`+((vK(n)||vK(r))+` `+XK({period_seconds:n.period_seconds||r.period_seconds,period_label:r.period_label}))+`" already exists. Saving will override the current `+VK(r.amount)+` limit with `+VK(n.amount)+`.`}function UK(e){let t=Number(e);return!Number.isFinite(t)||t<0?0:t}function WK(e,t){let n=UK(e);return Math.round((t?Math.min(n,1):n)*1e3)/10}function GK(e){return UK(e&&e.usage_ratio)}function KK(e){return WK(GK(e),!0)}function qK(e){return WK(e&&e.period_ratio,!0)}function JK(e){return WK(GK(e),!1).toFixed(1).replace(/\.0$/,``)+`%`}function YK(e){return qK(e).toFixed(1).replace(/\.0$/,``)+`%`}function XK(e){let t=Number(e&&e.period_seconds||0);switch(t){case 3600:return`Hourly`;case 86400:return`Daily`;case 604800:return`Weekly`;case 2592e3:return`Monthly`;default:{let n=String(e&&e.period_label||``).trim();return n?`Custom `+n:`Custom `+String(t||``)+`s`}}}function ZK(e){switch(Number(e&&e.period_seconds||0)){case 3600:return`budget-period-label-hourly`;case 86400:return`budget-period-label-daily`;case 604800:return`budget-period-label-weekly`;case 2592e3:return`budget-period-label-monthly`;default:return`budget-period-label-custom`}}function QK(e){return ZK(e).replace(`budget-period-label-`,`budget-bar-fill-period-`)}function $K(e){return ZK(e).replace(`budget-period-label-`,`budget-bar-track-period-`)}function eq(e){switch(Number(e&&e.period_seconds||0)){case 3600:return OE;case 86400:return sD;case 604800:return _E;case 2592e3:return vE;default:return tD}}function tq(e){let t=Math.max(0,Math.trunc(Number(e||0)));return t+` `+(t===1?`second`:`seconds`)}function nq(e){let t=Number(e&&e.period_seconds||0);switch(t){case 3600:return`1 hour`;case 86400:return`1 day`;case 604800:return`1 week`;case 2592e3:return`1 month`;default:return tq(t)}}function rq(e){return String(e&&e.source||``).trim()||`manual`}function iq(e){let t=rq(e).toLowerCase();return t===`manual`?`Created from the dashboard.`:t===`config`?`Loaded from configuration.`:`Budget source: `+t}function aq(e){let t=Number(e&&e.remaining);return Number.isFinite(t)?t<0?QO(Math.abs(t))+` over`:QO(t)+` remaining`:``}var X=new class{#e=A(M([]));get budgets(){return L(this.#e)}set budgets(e){j(this.#e,e,!0)}#t=A(!0);get budgetsAvailable(){return L(this.#t)}set budgetsAvailable(e){j(this.#t,e,!0)}#n=A(!1);get loading(){return L(this.#n)}set loading(e){j(this.#n,e,!0)}#r=A(``);get filter(){return L(this.#r)}set filter(e){j(this.#r,e,!0)}#i=A(`subject`);get sortBy(){return L(this.#i)}set sortBy(e){j(this.#i,e,!0)}#a=A(``);get error(){return L(this.#a)}set error(e){j(this.#a,e,!0)}#o=A(!1);get formOpen(){return L(this.#o)}set formOpen(e){j(this.#o,e,!0)}#s=A(!1);get formSubmitting(){return L(this.#s)}set formSubmitting(e){j(this.#s,e,!0)}#c=A(``);get formError(){return L(this.#c)}set formError(e){j(this.#c,e,!0)}#l=A(!1);get editing(){return L(this.#l)}set editing(e){j(this.#l,e,!0)}#u=A(M(mK()));get form(){return L(this.#u)}set form(e){j(this.#u,e,!0)}#d=A(!1);get overrideDialogOpen(){return L(this.#d)}set overrideDialogOpen(e){j(this.#d,e,!0)}#f=A(null);get overridePendingPayload(){return L(this.#f)}set overridePendingPayload(e){j(this.#f,e,!0)}#p=A(null);get overrideExistingBudget(){return L(this.#p)}set overrideExistingBudget(e){j(this.#p,e,!0)}#m=A(``);get resettingKey(){return L(this.#m)}set resettingKey(e){j(this.#m,e,!0)}#h=A(``);get deletingKey(){return L(this.#h)}set deletingKey(e){j(this.#h,e,!0)}#g=A(!1);get resetAllLoading(){return L(this.#g)}set resetAllLoading(e){j(this.#g,e,!0)}#_=null;managementEnabled(){return lO.budgetsVisible()}filteredBudgets(){return IK(this.budgets,this.filter,this.sortBy)}async fetchBudgetsPage(){if(await lO.ensureLoaded(),!this.managementEnabled()){this.budgets=[],this.budgetsAvailable=!1,this.error=``;return}return this.#_||=this.fetchBudgets().finally(()=>{this.#_=null}),this.#_}async fetchBudgets(){this.loading=!0,this.error=``;let e=await fK(`/admin/budgets`,{label:`budgets`,errorFallback:`Unable to load budgets.`,normalize:MK});if(this.loading=!1,e.status!==`stale`){if(e.status===`unavailable`){this.budgetsAvailable=!1,this.budgets=[];return}if(!e.result){this.budgets=[],this.error=e.error;return}if(this.budgetsAvailable=!0,e.status===`error`){this.error=e.error;return}this.budgets=e.items}}openForm(e){if(this.editing=!!e,this.formError=``,e){let t=Number(e.period_seconds||0);this.form={scope:_K(e),subject:vK(e),period:EK(t),period_seconds:t,amount:String(e.amount||``),source:String(e.source||`manual`)}}else this.form=mK();this.formOpen=!0}syncPeriodSeconds(){let e=TK(String(this.form.period||``).trim());e>0&&(this.form.period_seconds=e)}setFormSubject(e){this.form.subject=this.form.scope===`label`?String(e??``):jK(e)}syncScope(){CK(this.form)}closeForm(){this.closeOverrideDialog(),this.formOpen=!1,this.formSubmitting=!1,this.formError=``,this.editing=!1,this.form=mK()}async submitForm(){if(this.formSubmitting)return;let{payload:e,error:t}=LK(this.form);if(!e){this.formError=t;return}if(!this.editing){let t=OK(this.budgets,e);if(t){this.openOverrideDialog(t,e);return}}await this.saveBudgetPayload(e)}async saveBudgetPayload(e){if(this.formSubmitting||!e)return;this.formSubmitting=!0,this.formError=``;let t=await pK(`/admin/budgets`,`PUT`,RK(e),{label:`save budget`,errorFallback:`Unable to save budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.formSubmitting=!1,t.status!==`stale`){if(t.status===`unavailable`){this.budgetsAvailable=!1,this.formError=t.error;return}if(t.status===`error`){this.formError=t.error;return}this.closeForm(),UO.success(`Budget saved.`),this.fetchBudgets()}}openOverrideDialog(e,t){this.overrideExistingBudget=e||null,this.overridePendingPayload=t||null,this.overrideDialogOpen=!0}closeOverrideDialog(){this.overrideDialogOpen=!1,this.overridePendingPayload=null,this.overrideExistingBudget=null}async confirmOverride(){if(!this.overridePendingPayload){this.closeOverrideDialog();return}let e=this.overridePendingPayload;this.closeOverrideDialog(),await this.saveBudgetPayload(e)}async resetBudget(e){if(!e)return;let t=DK(e);if(this.resettingKey===t)return;let n=vK(e)+` `+XK(e);if(!confirm(`Reset budget "`+n+`"?`))return;this.resettingKey=t;let r=await pK(`/admin/budgets/reset-one`,`POST`,BK(e),{label:`reset budget`,errorFallback:`Unable to reset budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.resettingKey=``,r.status!==`stale`){if(r.status===`unavailable`){this.budgetsAvailable=!1,UO.error(r.error);return}if(r.status===`error`){UO.error(r.error);return}UO.success(`Budget reset.`),this.fetchBudgets()}}async deleteBudget(e){if(!e)return;let t=DK(e);if(this.deletingKey===t)return;let n=vK(e)+` `+XK(e);if(!confirm(`Delete budget "`+n+`"? This cannot be undone.`))return;this.deletingKey=t;let r=await pK(`/admin/budgets`,`DELETE`,zK(e),{label:`delete budget`,errorFallback:`Unable to delete budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.deletingKey=``,r.status!==`stale`){if(r.status===`unavailable`){this.budgetsAvailable=!1,UO.error(r.error);return}if(r.status===`error`){UO.error(r.error);return}this.budgets=MK(r.result.data),UO.success(`Budget deleted.`)}}openResetDialog(){OO.open({title:`Reset Budgets`,titleId:`budgetResetDialogTitle`,inputId:`budget-reset-confirmation`,requiredText:`reset`,confirmLabel:`Reset All Budgets`,icon:XE,dialogClass:`budget-reset-dialog`,onConfirm:()=>this.resetAllBudgets()})}async resetAllBudgets(){if(this.resetAllLoading)return;this.resetAllLoading=!0;let e=await pK(`/admin/budgets/reset`,`POST`,{confirmation:`reset`},{label:`reset budgets`,errorFallback:`Unable to reset budgets.`,unavailableStatuses:[]});if(this.resetAllLoading=!1,e.status!==`stale`){if(e.status!==`ok`){OO.error=e.error;return}OO.close(),UO.success(`Budgets reset.`),kD.page===`budgets`&&this.fetchBudgets()}}},oq=z(` Edit`,1),sq=z(` `,1),cq=z(`
                Usage
                Period
                `),lq=z(`
                `);function uq(e,t){D(t,!0);let n=K(t,`budgets`,19,()=>[]);function r(e){if(!e)return``;let t=QD.formatTimestamp(e);return!t||t===`-`?``:t+` `+QD.effectiveTimeZoneLabel()}var i=lq();U(i,21,n,e=>DK(e),(e,t)=>{var n=cq(),i=N(n),a=N(i),o=N(a),s=N(o),c=e=>{q(e,{get icon(){return cD},class:`budget-scope-icon`})},l=k(()=>_K(L(t))===`label`);H(s,e=>{L(l)&&e(c)});var u=F(s);E(o);var d=F(o,2),f=N(d),p=N(f);{let e=k(()=>eq(L(t)));q(p,{get icon(){return L(e)},class:`budget-period-icon`})}var m=F(p,2),h=N(m,!0);E(m),E(f),E(d);var g=F(d,2),_=N(g),v=N(_),y=N(v,!0);E(v),E(_);var b=F(_,2),x=N(b);dK(x,{label:`Edit budget`,class:`budget-action-btn`,onclick:()=>X.openForm(L(t)),children:(e,t)=>{var n=oq();q(P(n),{get icon(){return GE},class:`budget-action-icon`}),He(2),B(e,n)},$$slots:{default:!0}});var S=F(x,2);{let e=k(()=>X.resettingKey===DK(L(t))?`Resetting budget`:`Reset budget`),n=k(()=>X.resettingKey===DK(L(t)));dK(S,{get label(){return L(e)},class:`budget-action-btn budget-action-btn-warning`,onclick:()=>X.resetBudget(L(t)),get disabled(){return L(n)},children:(e,n)=>{var r=sq(),i=P(r);q(i,{get icon(){return XE},class:`budget-action-icon`});var a=F(i,2),o=N(a,!0);E(a),I(e=>V(o,e),[()=>X.resettingKey===DK(L(t))?`Resetting`:`Reset`]),B(e,r)},$$slots:{default:!0}})}var C=F(S,2);{let e=k(()=>X.deletingKey===DK(L(t))?`Deleting budget`:`Delete budget`),n=k(()=>X.deletingKey===DK(L(t)));dK(C,{get label(){return L(e)},class:`table-action-btn-danger budget-action-btn`,onclick:()=>X.deleteBudget(L(t)),get disabled(){return L(n)},children:(e,n)=>{var r=sq(),i=P(r);q(i,{get icon(){return uD},class:`budget-action-icon`});var a=F(i,2),o=N(a,!0);E(a),I(e=>V(o,e),[()=>X.deletingKey===DK(L(t))?`Deleting`:`Delete`]),B(e,r)},$$slots:{default:!0}})}E(b),E(g),E(a);var w=F(a,2),T=N(w),ee=N(T),te=F(N(ee),2),ne=N(te,!0);E(te),E(ee);var re=F(ee,2),ie=N(re);let ae;var oe=F(ie,2),se=N(oe),ce=N(se,!0);E(se);var le=F(se,2),ue=N(le,!0);E(le),E(oe);var de=F(oe,2),fe=N(de),pe=N(fe,!0);E(fe);var me=F(fe,2),he=N(me,!0);E(me),E(de),E(re),E(T);var ge=F(T,2),_e=N(ge),ve=F(N(_e),2),ye=N(ve,!0);E(ve),E(_e);var be=F(_e,2),xe=N(be),Se=F(xe,2),Ce=N(Se),we=N(Ce,!0);E(Ce);var Te=F(Ce,2),Ee=N(Te,!0);E(Te);var De=F(Te,2),Oe=N(De,!0);E(De),E(Se);var ke=F(Se,2),Ae=N(ke),je=N(Ae,!0);E(Ae);var Me=F(Ae,2),Ne=N(Me,!0);E(Me);var Pe=F(Me,2),Fe=N(Pe,!0);E(Pe),E(ke),E(be),E(ge),E(w),E(i),E(n),I((e,t,n,r,i,a,s,c,l,d,p,m,g,_,b,x,S,C,w,T,ee,te,oe,se,le,de,fe,me,ge,_e)=>{W(o,1,`budget-scope-value ${e??``}`,`svelte-1jm56wo`),Vi(o,t),G(o,`title`,n),V(u,` ${r??``}`),W(f,1,`budget-period-label ${i??``}`,`svelte-1jm56wo`),V(h,a),G(v,`title`,s),V(y,c),V(ne,l),G(re,`aria-valuenow`,d),G(re,`aria-label`,p),Vi(re,`--budget-progress: ${m??``}%`),ae=W(ie,1,`budget-bar-fill budget-bar-fill-usage`,null,ae,g),V(ce,_),V(ue,b),V(pe,x),V(he,S),V(ye,C),W(be,1,`budget-bar-track ${w??``}`,`svelte-1jm56wo`),G(be,`aria-valuenow`,T),Vi(be,`--budget-progress: ${ee??``}%`),W(xe,1,`budget-bar-fill budget-bar-fill-period ${te??``}`,`svelte-1jm56wo`),G(Ce,`title`,oe),V(we,se),V(Ee,le),G(De,`title`,de),V(Oe,fe),V(je,me),V(Ne,ge),V(Fe,_e)},[()=>bK(L(t)),()=>_K(L(t))===`label`?`--label-color: `+LB(vK(L(t))):void 0,()=>yK(L(t))+`: `+vK(L(t)),()=>vK(L(t)),()=>ZK(L(t)),()=>XK(L(t)),()=>iq(L(t)),()=>rq(L(t)),()=>JK(L(t)),()=>KK(L(t)),()=>`Budget usage: `+QO(L(t).spent)+` of `+QO(L(t).amount)+`, `+aq(L(t)),()=>KK(L(t)),()=>({"budget-bar-fill-danger":GK(L(t))>=1}),()=>QO(L(t).spent)+` of `+QO(L(t).amount),()=>aq(L(t)),()=>QO(L(t).spent)+` of `+QO(L(t).amount),()=>aq(L(t)),()=>YK(L(t)),()=>$K(L(t)),()=>qK(L(t)),()=>qK(L(t)),()=>QK(L(t)),()=>r(L(t).period_start),()=>QD.formatTimestamp(L(t).period_start),()=>nq(L(t)),()=>r(L(t).period_end),()=>QD.formatTimestamp(L(t).period_end),()=>QD.formatTimestamp(L(t).period_start),()=>nq(L(t)),()=>QD.formatTimestamp(L(t).period_end)]),B(e,n)}),E(i),B(e,i),O()}var dq=z(`

                `,1),fq=z(``),pq=z(``),mq=z(`
                `);function hq(e,t){D(t,!0);let n=K(t,`open`,3,!1),r=K(t,`title`,3,``),i=K(t,`ariaLabel`,3,``),a=K(t,`error`,3,``),o=K(t,`submitting`,3,!1),s=K(t,`submitDisabled`,3,!1),c=K(t,`submitLabel`,3,`Save`),l=K(t,`submittingLabel`,3,`Saving...`),u=K(t,`submitIcon`,3,ZE),d=K(t,`cancel`,3,!0),p=K(t,`dialogClass`,3,``),m=K(t,`novalidate`,3,!1),h=K(t,`canClose`,3,()=>!0);function g(){Y.dialogOpen||h()()&&t.onclose?.()}SO(e,{get open(){return n()},variant:`editor`,onclose:g,children:(e,n)=>{var h=mq(),g=N(h),_=N(g),v=N(_),y=N(v),b=e=>{var n=Zr();hi(P(n),()=>t.header),B(e,n)},x=e=>{var n=dq(),i=P(n),a=N(i,!0);E(i);var o=F(i,2),s=e=>{var n=Zr();hi(P(n),()=>t.headerHint),B(e,n)};H(o,e=>{t.headerHint&&e(s)}),I(()=>V(a,r())),B(e,n)};H(y,e=>{t.header?e(b):e(x,-1)}),E(v);var S=F(v,2);{let e=k(()=>`Close `+(i()||r()).toLowerCase());vO(S,{get label(){return L(e)},onclick:()=>t.onclose?.()})}E(_);var C=F(_,2);hi(C,()=>t.children??f);var w=F(C,2),T=e=>{var t=fq(),n=N(t,!0);E(t),I(()=>V(n,a())),B(e,t)};H(w,e=>{a()&&e(T)});var ee=F(w,2),te=N(ee),ne=e=>{var n=pq();R(`click`,n,()=>t.onclose?.()),B(e,n)};H(te,e=>{d()&&e(ne)});var re=F(te,2),ie=e=>{var n=Zr();hi(P(n),()=>t.extraActions),B(e,n)};H(re,e=>{t.extraActions&&e(ie)});var ae=F(re,2),oe=N(ae);q(oe,{get icon(){return u()},class:`form-action-icon`});var se=F(oe,2),ce=N(se,!0);E(se),E(ae),E(ee),E(g),E(h),I(()=>{W(h,1,Pi([`model-editor`,p()])),G(h,`aria-label`,i()||r()),g.noValidate=m(),ae.disabled=o()||s(),V(ce,o()?l():c())}),Br(`submit`,g,e=>{e.preventDefault(),t.onsubmit?.()}),B(e,h)},$$slots:{default:!0}}),O()}Vr([`click`]);var gq=z(`
                `);function _q(e,t){let n=K(t,`label`,3,``);var r=gq(),i=N(r),a=N(i,!0);E(i),hi(F(i,2),()=>t.children??f),E(r),I(()=>{G(i,`for`,t.id),V(a,n())}),B(e,r)}var vq=z(``),yq=z(``),bq=z(``),xq=z(``),Sq=z(``),Cq=z(``),wq=z(`

                Editing a budget updates its limit only. Use Reset to start a new + budget period.

                `),Tq=z(`
                `,1),Eq=z(``),Dq=z(` `,1);function Oq(e,t){D(t,!0);function n(e){X.setFormSubject(e.target.value),e.target.value=X.form.subject}var r=Dq(),i=P(r);{let e=k(()=>X.editing?`Edit Budget`:`Create Budget`);hq(i,{get open(){return X.formOpen},get title(){return L(e)},ariaLabel:`Budget editor`,get error(){return X.formError},get submitting(){return X.formSubmitting},submitLabel:`Save Budget`,dialogClass:`budget-editor`,canClose:()=>!X.overrideDialogOpen,onclose:()=>X.closeForm(),onsubmit:()=>X.submitForm(),children:(e,t)=>{var r=Tq(),i=P(r),a=N(i);_q(a,{id:`budget-scope`,label:`Scope`,children:(e,t)=>{var n=yq();U(n,21,gK,e=>e.value,(e,t)=>{var n=vq(),r=N(n,!0);E(n);var i={};I(()=>{V(r,L(t).label),i!==(i=L(t).value)&&(n.value=(n.__value=L(t).value)??``)}),B(e,n)}),E(n),I(()=>n.disabled=X.editing),R(`change`,n,()=>X.syncScope()),Wi(n,()=>X.form.scope,e=>X.form.scope=e),B(e,n)},$$slots:{default:!0}});var o=F(a,2);{let e=k(()=>xK(X.form));_q(o,{id:`budget-subject`,get label(){return L(e)},children:(e,t)=>{var r=bq();ta(r),I(e=>{G(r,`placeholder`,e),na(r,X.form.subject),r.disabled=X.editing,G(r,`data-modal-autofocus`,!X.editing||void 0)},[()=>SK(X.form)]),R(`input`,r,n),B(e,r)},$$slots:{default:!0}})}var s=F(o,2);_q(s,{id:`budget-period`,label:`Period`,children:(e,t)=>{var n=xq();U(n,21,wK,e=>e.value,(e,t)=>{var n=vq(),r=N(n,!0);E(n);var i={};I(()=>{V(r,L(t).label),i!==(i=L(t).value)&&(n.value=(n.__value=L(t).value)??``)}),B(e,n)}),E(n),I(()=>n.disabled=X.editing),R(`change`,n,()=>X.syncPeriodSeconds()),Wi(n,()=>X.form.period,e=>X.form.period=e),B(e,n)},$$slots:{default:!0}});var c=F(s,2),l=e=>{_q(e,{id:`budget-period-seconds`,label:`Period Seconds`,children:(e,t)=>{var n=Sq();ta(n),I(()=>n.disabled=X.editing),ua(n,()=>X.form.period_seconds,e=>X.form.period_seconds=e),B(e,n)},$$slots:{default:!0}})};H(c,e=>{X.form.period===`custom`&&e(l)}),_q(F(c,2),{id:`budget-amount`,label:`Amount`,children:(e,t)=>{var n=Cq();ta(n),I(()=>G(n,`data-modal-autofocus`,X.editing||void 0)),ua(n,()=>X.form.amount,e=>X.form.amount=e),B(e,n)},$$slots:{default:!0}}),E(i);var u=F(i,2),d=e=>{B(e,wq())};H(u,e=>{X.editing&&e(d)}),B(e,r)},$$slots:{default:!0}})}SO(F(i,2),{get open(){return X.overrideDialogOpen},variant:`auth`,onclose:()=>X.closeOverrideDialog(),children:(e,t)=>{var n=Eq(),r=N(n);vO(F(N(r),2),{label:`Close budget override dialog`,onclick:()=>X.closeOverrideDialog(),class:`auth-dialog-close`,iconClass:``}),E(r);var i=F(r,2),a=N(i),o=N(a,!0);E(a);var s=F(a,2),c=N(s),l=F(c,2),u=N(l);q(u,{get icon(){return ZE},class:`form-action-icon`});var d=F(u,2),f=N(d,!0);E(d),E(l),E(s),E(i),E(n),I(e=>{V(o,e),l.disabled=X.formSubmitting,V(f,X.formSubmitting?`Saving...`:`Override Budget`)},[()=>HK(X.overridePendingPayload,X.overrideExistingBudget)]),Br(`submit`,i,e=>{e.preventDefault(),X.confirmOverride()}),R(`click`,c,()=>X.closeOverrideDialog()),B(e,n)},$$slots:{default:!0}}),B(e,r),O()}Vr([`change`,`input`,`click`]);var kq=z(`

                Budgets

                `),Aq=z(``),jq=z(`
                Budget management is unavailable.
                `),Mq=z(``),Nq=z(`
                `),Pq=z(`

                No budgets configured yet.

                `),Fq=z(`

                No budgets match your filter.

                `),Iq=z(`
                `);function Lq(e,t){D(t,!0),kn(()=>{Y.refreshTick,kD.page===`budgets`&&X.fetchBudgetsPage()});let n=k(()=>X.filteredBudgets());var r=Iq(),i=N(r),a=N(i);HU(N(a),{copyId:`budgets-help-copy`,label:`budgets help`,title:e=>{B(e,kq())},help:e=>{He(),B(e,Xr(`Budgets are evaluated from tracked usage cost records for each user + path subtree. Enforcement runs only when Budget is enabled for the + active workflow.`))},$$slots:{title:!0,help:!0}}),E(a);var o=F(a,2),s=N(o),c=e=>{var t=Aq();q(N(t),{get icon(){return qE},class:`form-action-icon`}),He(2),E(t),I(()=>t.disabled=X.formSubmitting),R(`click`,t,()=>X.openForm()),B(e,t)},l=k(()=>X.managementEnabled()&&X.budgetsAvailable&&!Y.authError);H(s,e=>{L(l)&&e(c)}),E(o),E(i);var u=F(i,2);Mk(u,{});var d=F(u,2),f=e=>{B(e,jq())},p=k(()=>(!X.managementEnabled()||!X.budgetsAvailable)&&!Y.authError);H(d,e=>{L(p)&&e(f)});var m=F(d,2),h=e=>{var t=Mq(),n=N(t,!0);E(t),I(()=>V(n,X.error)),B(e,t)};H(m,e=>{X.error&&!Y.authError&&e(h)});var g=F(m,2),_=e=>{lK(e,{label:`Loading budgets...`})};H(g,e=>{X.loading&&!Y.authError&&e(_)});var v=F(g,2),y=e=>{var t=Nq(),n=N(t);mG(N(n),{id:`budget-filter`,placeholder:`Filter by user path, label, or period...`,label:`Filter budgets by user path or period`,get value(){return X.filter},set value(e){X.filter=e}}),E(n);var r=F(n,2),i=F(N(r),2),a=N(i);a.value=a.__value=`subject`;var o=F(a);o.value=o.__value=`period`,E(i),E(r),E(t),Wi(i,()=>X.sortBy,e=>X.sortBy=e),B(e,t)};H(v,e=>{(X.budgets.length>0||X.filter)&&X.budgetsAvailable&&!Y.authError&&!X.formOpen&&e(y)});var b=F(v,2);Oq(b,{});var x=F(b,2),S=e=>{uq(e,{get budgets(){return L(n)}})};H(x,e=>{L(n).length>0&&X.budgetsAvailable&&!Y.authError&&e(S)});var C=F(x,2),w=e=>{B(e,Pq())},T=k(()=>X.budgets.length===0&&!X.filter&&!X.loading&&!Y.authError&&!X.error&&X.budgetsAvailable&&X.managementEnabled());H(C,e=>{L(T)&&e(w)});var ee=F(C,2),te=e=>{B(e,Fq())},ne=k(()=>X.budgets.length>0&&L(n).length===0&&X.filter&&!X.loading&&!Y.authError&&!X.error&&X.budgetsAvailable&&X.managementEnabled());H(ee,e=>{L(ne)&&e(te)}),E(r),B(e,r),O()}Vr([`click`]);function Rq(){return{scope:`user_path`,subject:`/`,period:`minute`,period_seconds:60,max_requests:``,max_tokens:``,source:`manual`}}function zq(e){let t={user_path:{label:`User path`,chip:`user path`,fieldLabel:`User Path`,placeholder:`/team/alpha`},provider:{label:`Provider`,chip:`provider`,fieldLabel:`Provider Name`,placeholder:`openai`},model:{label:`Model`,chip:`model`,fieldLabel:`Model`,placeholder:`openai/gpt-4o`}};return t[e]||t.user_path}function Bq(){return[`user_path`,`provider`,`model`].map(e=>({value:e,label:zq(e).label}))}function Vq(e){return String(e&&e.scope||``).trim()||`user_path`}function Hq(e){return String(e&&e.subject||``).trim()||String(e&&e.user_path||``)}function Uq(e){return zq(Vq(e)).chip}function Wq(e){return zq(String(e&&e.scope||``)).fieldLabel}function Gq(e){return zq(String(e&&e.scope||``)).placeholder}function Kq(e){e.subject=String(e&&e.scope||``)===`user_path`?`/`:``}function qq(){return[{value:`minute`,label:`Per minute`},{value:`hour`,label:`Per hour`},{value:`day`,label:`Per day`},{value:`concurrent`,label:`Concurrent (in-flight)`},{value:`custom`,label:`Custom seconds`}]}function Jq(e){switch(String(e||``).trim().toLowerCase()){case`minute`:return 60;case`hour`:return 3600;case`day`:return 86400;case`concurrent`:return 0;default:return-1}}function Yq(e){switch(Number(e||0)){case 60:return`minute`;case 3600:return`hour`;case 86400:return`day`;case 0:return`concurrent`;default:return`custom`}}function Xq(e){let t=String(e&&e.period||``).trim(),n=Jq(t);n>=0&&(e.period_seconds=n),t===`concurrent`&&(e.max_tokens=``)}function Zq(e){return Vq(e)+`:`+Hq(e)+`:`+String(e&&e.period_seconds||`0`)}function Qq(e){return Number(e&&e.period_seconds||0)===0}function $q(e){return String(e&&e.period_label||``).trim()||Yq(Number(e&&e.period_seconds||0))}function eJ(e){return String(e&&e.source||``)===`config`?`config`:`manual`}function tJ(e){return String(e&&e.source||``)===`config`}function nJ(e){let t=Number(e);return Number.isFinite(t)?t.toLocaleString():`0`}function rJ(e,t){let n=Number(e),r=Number(t);if(!Number.isFinite(n)||!Number.isFinite(r)||r<=0)return 0;let i=Math.round(n/r*100);return Math.min(Math.max(i,0),100)}function iJ(e,t){let n=String(t||``).trim().toLowerCase(),r=Array.isArray(e)?e.slice():[],i={user_path:0,provider:1,model:2};return r.sort((e,t)=>{let n=(i[Vq(e)]||0)-(i[Vq(t)]||0);if(n!==0)return n;let r=Hq(e).localeCompare(Hq(t));return r===0?Number(e.period_seconds||0)-Number(t.period_seconds||0):r}),n?r.filter(e=>{let t=Hq(e).toLowerCase(),r=Uq(e).toLowerCase(),i=$q(e).toLowerCase();return t.includes(n)||r.includes(n)||i.includes(n)}):r}function aJ(e){return!e||!Array.isArray(e.rate_limits)?[]:e.rate_limits}function oJ(e,t,n){let r=String(t||``).trim();return r=e===`provider`||e===`model`?r.toLowerCase():`/`+r.split(`/`).map(e=>e.trim()).filter(Boolean).join(`/`),e+`:`+r+`:`+Number(n||0)}function sJ(e,t){return e?oJ(t.scope,t.subject,t.limit_key.period_seconds)!==oJ(e.scope,e.subject,e.period_seconds):!1}function cJ(e){let t=e||{},n=String(t.scope||`user_path`),r=String(t.subject||``).trim();if(n!==`user_path`&&!r)return{error:Wq(t)+` is required.`};let i=String(t.period||``)===`concurrent`,a=t.period_seconds;if(a===``||a==null)return{error:`Period seconds is required.`};let o=Number(a);if(!Number.isInteger(o)||o<0||o===0&&!i)return{error:`Period seconds must be a positive integer (0 only for the concurrent period).`};let s=String(t.max_requests===void 0||t.max_requests===null?``:t.max_requests).trim(),c=String(t.max_tokens===void 0||t.max_tokens===null?``:t.max_tokens).trim();if(!s&&!c)return{error:`Set max requests, max tokens, or both.`};if(i&&c)return{error:`Token limits are not valid for the concurrent period.`};let l={scope:n,subject:r||`/`,limit_key:{period_seconds:o}};if(s){let e=Number(s);if(!Number.isInteger(e)||e<=0)return{error:`Max requests must be a positive integer.`};l.max_requests=e}if(c){let e=Number(c);if(!Number.isInteger(e)||e<=0)return{error:`Max tokens must be a positive integer.`};l.max_tokens=e}return{payload:l}}function lJ(e,t,n){if(Vq(e)!==`model`)return!1;let r=String(Hq(e)).toLowerCase(),i=String(n||``).trim().toLowerCase();if(!i)return!1;if(r===i)return!0;let a=String(t||``).trim().toLowerCase();return a?r===a+`/`+i||i.startsWith(a+`/`)&&r===i.slice(a.length+1):!1}function uJ(e,t){return Vq(e)===`provider`&&String(Hq(e)).toLowerCase()===String(t||``).trim().toLowerCase()}function dJ(e){let t=e||{},n=String(t.model||``),r=String(t.provider||``);return!r||n.toLowerCase().startsWith(r+`/`)?n:r+`/`+n}function fJ(e,t){let n=e||{},r=Array.isArray(t)?t:[],i=[];return n.kind===`model`&&i.push({key:`model`,title:`Model limits`,scope:`model`,subject:dJ(n),hint:``,items:r.filter(e=>lJ(e,n.provider,n.model))}),i.push({key:`provider`,title:`Provider limits (`+n.provider+`)`,scope:`provider`,subject:n.provider,hint:n.kind===`model`?`Shared by every model routed to this provider.`:``,items:r.filter(e=>uJ(e,n.provider))}),i.push({key:`global`,title:`Global limits`,scope:`user_path`,subject:`/`,hint:`Root user-path rules throttle all traffic. Narrower user-path rules also apply, per consumer.`,items:r.filter(e=>Vq(e)===`user_path`&&Hq(e)===`/`)}),i}function pJ(e){return Qq(e)?rJ(e.in_flight,e.max_requests):Math.max(rJ(e.requests_used,e.max_requests),rJ(e.tokens_used,e.max_tokens))}function mJ(e){return`--rate-limit-pressure: `+pJ(e)+`%`}function hJ(e){let t=pJ(e);return t>=100?`rate-limit-pressure-row rate-limit-pressure-full`:t>=75?`rate-limit-pressure-row rate-limit-pressure-high`:`rate-limit-pressure-row`}function gJ(e){return(Array.isArray(e)?e:[]).some(e=>Vq(e)===`user_path`&&Hq(e)===`/`)}function _J(e,t,n){let r=Array.isArray(e)?e:[];return r.some(e=>lJ(e,t,n))?`table-action-btn-active`:r.some(e=>uJ(e,t))||gJ(r)?`rate-limit-gauge-inherited`:``}function vJ(e,t){let n=Array.isArray(e)?e:[];return n.some(e=>uJ(e,t))?`table-action-btn-active`:gJ(n)?`rate-limit-gauge-inherited`:``}function yJ(e,t){let n=`Rate limits for `+e;return t===`table-action-btn-active`?n+` (direct limits configured)`:t?n+` (inherited limits apply)`:n}function bJ(e){if(Qq(e))return nJ(e.in_flight)+` of `+nJ(e.max_requests)+` in flight`;let t=[];return e.max_requests!==null&&e.max_requests!==void 0&&t.push(nJ(e.requests_used)+`/`+nJ(e.max_requests)+` req`),e.max_tokens!==null&&e.max_tokens!==void 0&&t.push(nJ(e.tokens_used)+`/`+nJ(e.max_tokens)+` tok`),t.join(` · `)}var Z=new class{#e=A(M([]));get rateLimits(){return L(this.#e)}set rateLimits(e){j(this.#e,e,!0)}#t=A(!0);get rateLimitsAvailable(){return L(this.#t)}set rateLimitsAvailable(e){j(this.#t,e,!0)}#n=A(!1);get rateLimitsLoading(){return L(this.#n)}set rateLimitsLoading(e){j(this.#n,e,!0)}rateLimitFetchPromise=null;#r=A(``);get rateLimitFilter(){return L(this.#r)}set rateLimitFilter(e){j(this.#r,e,!0)}#i=A(``);get rateLimitError(){return L(this.#i)}set rateLimitError(e){j(this.#i,e,!0)}#a=A(!1);get rateLimitFormOpen(){return L(this.#a)}set rateLimitFormOpen(e){j(this.#a,e,!0)}#o=A(!1);get rateLimitFormSubmitting(){return L(this.#o)}set rateLimitFormSubmitting(e){j(this.#o,e,!0)}#s=A(``);get rateLimitFormError(){return L(this.#s)}set rateLimitFormError(e){j(this.#s,e,!0)}#c=A(!1);get rateLimitEditing(){return L(this.#c)}set rateLimitEditing(e){j(this.#c,e,!0)}rateLimitEditingOriginal=null;rateLimitFormReturnToInspector=!1;#l=A(``);get rateLimitResettingKey(){return L(this.#l)}set rateLimitResettingKey(e){j(this.#l,e,!0)}#u=A(``);get rateLimitDeletingKey(){return L(this.#u)}set rateLimitDeletingKey(e){j(this.#u,e,!0)}#d=A(!1);get rateLimitInspectorOpen(){return L(this.#d)}set rateLimitInspectorOpen(e){j(this.#d,e,!0)}#f=A(M({kind:``,provider:``,model:``,title:``}));get rateLimitInspector(){return L(this.#f)}set rateLimitInspector(e){j(this.#f,e,!0)}#p=A(M(Rq()));get rateLimitForm(){return L(this.#p)}set rateLimitForm(e){j(this.#p,e,!0)}rateLimitsEnabled(){return lO.rateLimitsVisible()}defaultRateLimitForm(){return Rq()}rateLimitScopeMeta(e){return zq(e)}rateLimitScopeOptions(){return Bq()}rateLimitScope(e){return Vq(e)}rateLimitSubject(e){return Hq(e)}rateLimitScopeLabel(e){return Uq(e)}rateLimitSubjectFieldLabel(){return Wq(this.rateLimitForm)}rateLimitSubjectPlaceholder(){return Gq(this.rateLimitForm)}syncRateLimitScope(){Kq(this.rateLimitForm)}rateLimitPeriodOptions(){return qq()}rateLimitPeriodSeconds(e){return Jq(e)}rateLimitPeriodFromSeconds(e){return Yq(e)}syncRateLimitPeriodSeconds(){Xq(this.rateLimitForm)}rateLimitKey(e){return Zq(e)}rateLimitIsConcurrent(e){return Qq(e)}rateLimitPeriodLabel(e){return $q(e)}rateLimitSourceLabel(e){return eJ(e)}rateLimitIsReadOnly(e){return tJ(e)}formatRateLimitNumber(e){return nJ(e)}rateLimitUsagePercent(e,t){return rJ(e,t)}filteredRateLimits(){return iJ(this.rateLimits,this.rateLimitFilter)}normalizeRateLimitListPayload(e){return aJ(e)}async fetchRateLimitsPage(){if(await lO.ensureLoaded(),!this.rateLimitsEnabled()){this.rateLimits=[],this.rateLimitsAvailable=!1,this.rateLimitError=``;return}return this.rateLimitFetchPromise||=this.fetchRateLimits().finally(()=>{this.rateLimitFetchPromise=null}),this.rateLimitFetchPromise}async fetchRateLimits(){this.rateLimitsLoading=!0,this.rateLimitError=``;let e=await fK(`/admin/rate-limits`,{label:`rate limits`,errorFallback:`Unable to load rate limits.`,normalize:aJ});if(this.rateLimitsLoading=!1,e.status!==`stale`){if(e.status===`unavailable`){this.rateLimitsAvailable=!1,this.rateLimits=[];return}if(!e.result){this.rateLimits=[],this.rateLimitError=e.error;return}if(this.rateLimitsAvailable=!0,e.status===`error`){this.rateLimitError=e.error;return}this.rateLimits=e.items}}openRateLimitForm(e){if(this.rateLimitEditing=!!e,this.rateLimitFormError=``,e){let t=Number(e.period_seconds||0);this.rateLimitEditingOriginal={scope:Vq(e),subject:Hq(e),period_seconds:t},this.rateLimitForm={scope:Vq(e),subject:Hq(e),period:Yq(t),period_seconds:t,max_requests:e.max_requests===null||e.max_requests===void 0?``:String(e.max_requests),max_tokens:e.max_tokens===null||e.max_tokens===void 0?``:String(e.max_tokens),source:String(e.source||`manual`)}}else this.rateLimitEditingOriginal=null,this.rateLimitForm=Rq();this.rateLimitFormOpen=!0}closeRateLimitForm(){this.rateLimitFormOpen=!1,this.rateLimitFormSubmitting=!1,this.rateLimitFormError=``,this.rateLimitEditing=!1,this.rateLimitEditingOriginal=null,this.rateLimitForm=Rq(),this.rateLimitFormReturnToInspector&&(this.rateLimitFormReturnToInspector=!1,this.rateLimitInspectorOpen=!0)}rateLimitNormalizedIdentity(e,t,n){return oJ(e,t,n)}rateLimitIdentityMoved(e){return sJ(this.rateLimitEditingOriginal,e)}setRateLimitFormSubject(e){this.rateLimitForm.subject=String(e||``)}rateLimitFormPayload(){return cJ(this.rateLimitForm)}async submitRateLimitForm(){if(this.rateLimitFormSubmitting)return;let{payload:e,error:t}=this.rateLimitFormPayload();if(t){this.rateLimitFormError=t;return}let n=this.rateLimitIdentityMoved(e),r=this.rateLimitEditingOriginal;this.rateLimitFormSubmitting=!0,this.rateLimitFormError=``;try{let t=await pK(`/admin/rate-limits`,`PUT`,e,{label:`save rate limit`,errorFallback:`Unable to save rate limit.`,unavailableStatuses:[]});if(t.status===`stale`)return;if(t.status!==`ok`){this.rateLimitFormError=t.error;return}if(this.rateLimits=aJ(t.result.data),n&&!await this.deleteMovedRateLimitOriginal(r))return;this.closeRateLimitForm(),UO.success(n?`Rate limit moved; live counters restarted.`:`Rate limit saved.`)}finally{this.rateLimitFormSubmitting=!1}}async deleteMovedRateLimitOriginal(e){let t=await pK(`/admin/rate-limits`,`DELETE`,{scope:e.scope,subject:e.subject,limit_key:{period_seconds:Number(e.period_seconds||0)}},{label:`remove the moved rate limit`,errorFallback:`The new rule was saved, but the previous one could not be removed. Delete it manually.`,unavailableStatuses:[]});return t.status===`stale`?!1:t.status===`ok`?(this.rateLimits=aJ(t.result.data),!0):(this.rateLimitFormError=t.error,!1)}async deleteRateLimit(e){let t=Zq(e);if(this.rateLimitDeletingKey===t)return;this.rateLimitDeletingKey=t;let n=await pK(`/admin/rate-limits`,`DELETE`,{scope:Vq(e),subject:Hq(e),limit_key:{period_seconds:Number(e.period_seconds||0)}},{label:`delete rate limit`,errorFallback:`Unable to delete rate limit.`,unavailableStatuses:[]});if(this.rateLimitDeletingKey=``,n.status!==`stale`){if(n.status!==`ok`){UO.error(n.error);return}this.rateLimits=aJ(n.result.data),UO.success(`Rate limit deleted.`)}}async resetRateLimit(e){let t=Zq(e);if(this.rateLimitResettingKey===t)return;this.rateLimitResettingKey=t;let n=await pK(`/admin/rate-limits/reset-one`,`POST`,{scope:Vq(e),subject:Hq(e),period_seconds:Number(e.period_seconds||0)},{label:`reset rate limit`,errorFallback:`Unable to reset rate limit.`,unavailableStatuses:[]});if(this.rateLimitResettingKey=``,n.status!==`stale`){if(n.status!==`ok`){UO.error(n.error);return}this.rateLimits=aJ(n.result.data),UO.success(`Rate limit counters reset.`)}}rateLimitInspectorModelID(e){return String(e&&e.model&&e.model.id||``).trim()}openRateLimitInspectorForModel(e){let t=this.rateLimitInspectorModelID(e),n=String(e&&e.provider_name||``).trim().toLowerCase();this.rateLimitInspector={kind:`model`,provider:n,model:t,title:String(e&&e.display_name||t)},this.showRateLimitInspector()}openRateLimitInspectorForProvider(e){let t=String(e&&e.provider_name||``).trim().toLowerCase();this.rateLimitInspector={kind:`provider`,provider:t,model:``,title:String(e&&e.display_name||t)},this.showRateLimitInspector()}showRateLimitInspector(){this.rateLimitInspectorOpen=!0,this.fetchRateLimitsPage()}closeRateLimitInspector(){this.rateLimitInspectorOpen=!1}rateLimitRuleMatchesModel(e,t,n){return lJ(e,t,n)}rateLimitRuleMatchesProvider(e,t){return uJ(e,t)}rateLimitInspectorQualifiedModel(){return dJ(this.rateLimitInspector)}rateLimitInspectorSections(){return fJ(this.rateLimitInspector,this.rateLimits)}rateLimitPressurePercent(e){return pJ(e)}rateLimitPressureStyle(e){return mJ(e)}rateLimitPressureClass(e){return hJ(e)}rateLimitGaugeCache={rules:null,states:{}};rateLimitGaugeMemo(e,t){this.rateLimitGaugeCache.rules!==this.rateLimits&&(this.rateLimitGaugeCache={rules:this.rateLimits,states:{}});let n=this.rateLimitGaugeCache.states;return e in n||(n[e]=t()),n[e]}rateLimitGaugeClassForModel(e){let t=this.rateLimitInspectorModelID(e),n=String(e&&e.provider_name||``).trim().toLowerCase(),r=this.rateLimits;return this.rateLimitGaugeMemo(`model:`+n+`/`+t,()=>_J(r,n,t))}rateLimitGaugeClassForProvider(e){let t=String(e&&e.provider_name||``).trim().toLowerCase(),n=this.rateLimits;return this.rateLimitGaugeMemo(`provider:`+t,()=>vJ(n,t))}hasGlobalRateLimits(){let e=this.rateLimits;return this.rateLimitGaugeMemo(`global`,()=>gJ(e))}rateLimitGaugeTitle(e,t){return yJ(e,t)}rateLimitInspectorSummary(e){return bJ(e)}openRateLimitFormFromInspector(e,t,n){this.rateLimitInspectorOpen=!1,this.rateLimitFormReturnToInspector=!0,this.openRateLimitForm(n||void 0),n||(this.rateLimitForm.scope=e,this.rateLimitForm.subject=t)}},xJ=z(``),SJ=z(``),CJ=z(``),wJ=z(``),TJ=z(``),EJ=z(``),DJ=z(``),OJ=z(`

                Scope, subject, and period identify the rule: changing any of them + moves the rule to a new key and restarts its live counters.

                `),kJ=z(`

                A user path rule limits the whole subtree; provider and model rules cap + all traffic routed there and make load balancing skip the target while + it is saturated. One shared counter per rule. Leave a field empty to + skip that limit. Token limits require usage tracking.

                `,1);function AJ(e,t){D(t,!0);{let t=k(()=>Z.rateLimitEditing?`Edit Rate Limit`:`Create Rate Limit`);hq(e,{get open(){return Z.rateLimitFormOpen},get title(){return L(t)},ariaLabel:`Rate limit editor`,get error(){return Z.rateLimitFormError},get submitting(){return Z.rateLimitFormSubmitting},submitLabel:`Save Rate Limit`,dialogClass:`budget-editor`,novalidate:!0,onclose:()=>Z.closeRateLimitForm(),onsubmit:()=>Z.submitRateLimitForm(),children:(e,t)=>{var n=kJ(),r=P(n),i=N(r);_q(i,{id:`rate-limit-scope`,label:`Scope`,children:(e,t)=>{var n=SJ();U(n,21,()=>Z.rateLimitScopeOptions(),e=>e.value,(e,t)=>{var n=xJ(),r=N(n,!0);E(n);var i={};I(()=>{V(r,L(t).label),i!==(i=L(t).value)&&(n.value=(n.__value=L(t).value)??``)}),B(e,n)}),E(n),R(`change`,n,()=>Z.syncRateLimitScope()),Wi(n,()=>Z.rateLimitForm.scope,e=>Z.rateLimitForm.scope=e),B(e,n)},$$slots:{default:!0}});var a=F(i,2);{let e=k(()=>Z.rateLimitSubjectFieldLabel());_q(a,{id:`rate-limit-subject`,get label(){return L(e)},children:(e,t)=>{var n=CJ();ta(n),I(e=>{G(n,`placeholder`,e),G(n,`data-modal-autofocus`,!Z.rateLimitEditing||void 0),na(n,Z.rateLimitForm.subject)},[()=>Z.rateLimitSubjectPlaceholder()]),R(`input`,n,e=>Z.setRateLimitFormSubject(e.currentTarget.value)),B(e,n)},$$slots:{default:!0}})}var o=F(a,2);_q(o,{id:`rate-limit-period`,label:`Period`,children:(e,t)=>{var n=wJ();U(n,21,()=>Z.rateLimitPeriodOptions(),e=>e.value,(e,t)=>{var n=xJ(),r=N(n,!0);E(n);var i={};I(()=>{V(r,L(t).label),i!==(i=L(t).value)&&(n.value=(n.__value=L(t).value)??``)}),B(e,n)}),E(n),R(`change`,n,()=>Z.syncRateLimitPeriodSeconds()),Wi(n,()=>Z.rateLimitForm.period,e=>Z.rateLimitForm.period=e),B(e,n)},$$slots:{default:!0}});var s=F(o,2),c=e=>{_q(e,{id:`rate-limit-period-seconds`,label:`Period Seconds`,children:(e,t)=>{var n=TJ();ta(n),ua(n,()=>Z.rateLimitForm.period_seconds,e=>Z.rateLimitForm.period_seconds=e),B(e,n)},$$slots:{default:!0}})};H(s,e=>{Z.rateLimitForm.period===`custom`&&e(c)});var l=F(s,2);{let e=k(()=>Z.rateLimitForm.period===`concurrent`?`Max In-Flight Requests`:`Max Requests`);_q(l,{id:`rate-limit-max-requests`,get label(){return L(e)},children:(e,t)=>{var n=EJ();ta(n),I(()=>G(n,`data-modal-autofocus`,Z.rateLimitEditing?!0:void 0)),ua(n,()=>Z.rateLimitForm.max_requests,e=>Z.rateLimitForm.max_requests=e),B(e,n)},$$slots:{default:!0}})}var u=F(l,2),d=e=>{_q(e,{id:`rate-limit-max-tokens`,label:`Max Tokens`,children:(e,t)=>{var n=DJ();ta(n),ua(n,()=>Z.rateLimitForm.max_tokens,e=>Z.rateLimitForm.max_tokens=e),B(e,n)},$$slots:{default:!0}})};H(u,e=>{Z.rateLimitForm.period!==`concurrent`&&e(d)}),E(r);var f=F(r,4),p=e=>{B(e,OJ())};H(f,e=>{Z.rateLimitEditing&&e(p)}),B(e,n)},$$slots:{default:!0}})}O()}Vr([`change`,`input`]);var jJ=z(` `),MJ=z(` Edit`,1),NJ=z(` `,1),PJ=z(`
                In-flight
                `),FJ=z(`
                Requests
                `),IJ=z(`
                Tokens
                `),LJ=z(`
                `),RJ=z(`
                `);function zJ(e,t){D(t,!0);var n=RJ();U(n,21,()=>t.rules,e=>Z.rateLimitKey(e),(e,t)=>{var n=LJ(),r=N(n),i=N(r),a=N(i),o=N(a,!0);E(a);var s=F(a,2),c=N(s),l=e=>{var n=jJ(),r=N(n);{let e=k(()=>Z.rateLimitScope(L(t))===`provider`?eD:hE);q(r,{get icon(){return L(e)},class:`budget-period-icon`})}var i=F(r,2),a=N(i,!0);E(i),E(n),I((e,t)=>{G(n,`title`,e),V(a,t)},[()=>`Rule scope: `+Z.rateLimitScopeLabel(L(t)),()=>Z.rateLimitScopeLabel(L(t))]),B(e,n)},u=k(()=>Z.rateLimitScope(L(t))!==`user_path`);H(c,e=>{L(u)&&e(l)});var d=F(c,2),f=N(d);{let e=k(()=>Z.rateLimitIsConcurrent(L(t))?uE:lD);q(f,{get icon(){return L(e)},class:`budget-period-icon`})}var p=F(f,2),m=N(p,!0);E(p),E(d),E(s);var h=F(s,2),g=N(h),_=N(g),v=N(_,!0);E(_),E(g);var y=F(g,2),b=N(y),x=e=>{dK(e,{label:`Edit rate limit`,class:`budget-action-btn`,onclick:()=>Z.openRateLimitForm(L(t)),children:(e,t)=>{var n=MJ();q(P(n),{get icon(){return GE},class:`budget-action-icon`}),He(2),B(e,n)},$$slots:{default:!0}})},S=k(()=>!Z.rateLimitIsReadOnly(L(t)));H(b,e=>{L(S)&&e(x)});var C=F(b,2);{let e=k(()=>Z.rateLimitResettingKey===Z.rateLimitKey(L(t))?`Resetting counters`:`Reset counters`),n=k(()=>Z.rateLimitResettingKey===Z.rateLimitKey(L(t)));dK(C,{get label(){return L(e)},class:`budget-action-btn budget-action-btn-warning`,onclick:()=>Z.resetRateLimit(L(t)),get disabled(){return L(n)},children:(e,n)=>{var r=NJ(),i=P(r);q(i,{get icon(){return XE},class:`budget-action-icon`});var a=F(i,2),o=N(a,!0);E(a),I(e=>V(o,e),[()=>Z.rateLimitResettingKey===Z.rateLimitKey(L(t))?`Resetting`:`Reset`]),B(e,r)},$$slots:{default:!0}})}var w=F(C,2),T=e=>{{let n=k(()=>Z.rateLimitDeletingKey===Z.rateLimitKey(L(t))?`Deleting rate limit`:`Delete rate limit`),r=k(()=>Z.rateLimitDeletingKey===Z.rateLimitKey(L(t)));dK(e,{get label(){return L(n)},class:`table-action-btn-danger budget-action-btn`,onclick:()=>Z.deleteRateLimit(L(t)),get disabled(){return L(r)},children:(e,n)=>{var r=NJ(),i=P(r);q(i,{get icon(){return uD},class:`budget-action-icon`});var a=F(i,2),o=N(a,!0);E(a),I(e=>V(o,e),[()=>Z.rateLimitDeletingKey===Z.rateLimitKey(L(t))?`Deleting`:`Delete`]),B(e,r)},$$slots:{default:!0}})}},ee=k(()=>!Z.rateLimitIsReadOnly(L(t)));H(w,e=>{L(ee)&&e(T)}),E(y),E(h),E(i);var te=F(i,2),ne=N(te),re=e=>{var n=PJ(),r=N(n),i=F(N(r),2),a=N(i,!0);E(i),E(r);var o=F(r,2),s=N(o);let c;var l=F(s,2),u=N(l),d=N(u,!0);E(u),E(l),E(o),E(n),I((e,t,n,r,i,l)=>{V(a,e),G(o,`aria-valuenow`,t),G(o,`aria-label`,n),Vi(o,r),c=W(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),V(d,l)},[()=>Z.rateLimitUsagePercent(L(t).in_flight,L(t).max_requests)+`%`,()=>Z.rateLimitUsagePercent(L(t).in_flight,L(t).max_requests),()=>`In-flight requests: `+Z.formatRateLimitNumber(L(t).in_flight)+` of `+Z.formatRateLimitNumber(L(t).max_requests),()=>`--budget-progress: `+Z.rateLimitUsagePercent(L(t).in_flight,L(t).max_requests)+`%`,()=>({"budget-bar-fill-danger":Z.rateLimitUsagePercent(L(t).in_flight,L(t).max_requests)>=100}),()=>Z.formatRateLimitNumber(L(t).in_flight)+` of `+Z.formatRateLimitNumber(L(t).max_requests)+` in flight`]),B(e,n)},ie=k(()=>Z.rateLimitIsConcurrent(L(t)));H(ne,e=>{L(ie)&&e(re)});var ae=F(ne,2),oe=e=>{var n=FJ(),r=N(n),i=F(N(r),2),a=N(i,!0);E(i),E(r);var o=F(r,2),s=N(o);let c;var l=F(s,2),u=N(l),d=N(u,!0);E(u);var f=F(u,2),p=N(f,!0);E(f),E(l),E(o),E(n),I((e,t,n,r,i,l,u)=>{V(a,e),G(o,`aria-valuenow`,t),G(o,`aria-label`,n),Vi(o,r),c=W(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),V(d,l),V(p,u)},[()=>Z.rateLimitUsagePercent(L(t).requests_used,L(t).max_requests)+`%`,()=>Z.rateLimitUsagePercent(L(t).requests_used,L(t).max_requests),()=>`Requests used: `+Z.formatRateLimitNumber(L(t).requests_used)+` of `+Z.formatRateLimitNumber(L(t).max_requests),()=>`--budget-progress: `+Z.rateLimitUsagePercent(L(t).requests_used,L(t).max_requests)+`%`,()=>({"budget-bar-fill-danger":Z.rateLimitUsagePercent(L(t).requests_used,L(t).max_requests)>=100}),()=>Z.formatRateLimitNumber(L(t).requests_used)+` of `+Z.formatRateLimitNumber(L(t).max_requests)+` requests`,()=>Z.formatRateLimitNumber(L(t).requests_remaining)+` left`]),B(e,n)},se=k(()=>!Z.rateLimitIsConcurrent(L(t))&&L(t).max_requests);H(ae,e=>{L(se)&&e(oe)});var ce=F(ae,2),le=e=>{var n=IJ(),r=N(n),i=F(N(r),2),a=N(i,!0);E(i),E(r);var o=F(r,2),s=N(o);let c;var l=F(s,2),u=N(l),d=N(u,!0);E(u);var f=F(u,2),p=N(f,!0);E(f),E(l),E(o),E(n),I((e,t,n,r,i,l,u)=>{V(a,e),G(o,`aria-valuenow`,t),G(o,`aria-label`,n),Vi(o,r),c=W(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),V(d,l),V(p,u)},[()=>Z.rateLimitUsagePercent(L(t).tokens_used,L(t).max_tokens)+`%`,()=>Z.rateLimitUsagePercent(L(t).tokens_used,L(t).max_tokens),()=>`Tokens used: `+Z.formatRateLimitNumber(L(t).tokens_used)+` of `+Z.formatRateLimitNumber(L(t).max_tokens),()=>`--budget-progress: `+Z.rateLimitUsagePercent(L(t).tokens_used,L(t).max_tokens)+`%`,()=>({"budget-bar-fill-danger":Z.rateLimitUsagePercent(L(t).tokens_used,L(t).max_tokens)>=100}),()=>Z.formatRateLimitNumber(L(t).tokens_used)+` of `+Z.formatRateLimitNumber(L(t).max_tokens)+` tokens`,()=>Z.formatRateLimitNumber(L(t).tokens_remaining)+` left`]),B(e,n)},ue=k(()=>!Z.rateLimitIsConcurrent(L(t))&&L(t).max_tokens);H(ce,e=>{L(ue)&&e(le)}),E(te),E(r),E(n),I((e,t,n,r,i)=>{G(a,`title`,e),V(o,t),V(m,n),G(_,`title`,r),V(v,i)},[()=>Z.rateLimitScopeLabel(L(t))+`: `+Z.rateLimitSubject(L(t)),()=>Z.rateLimitSubject(L(t)),()=>Z.rateLimitPeriodLabel(L(t)),()=>Z.rateLimitIsReadOnly(L(t))?`Declared in configuration; read-only in the dashboard`:`Managed via dashboard or admin API`,()=>Z.rateLimitSourceLabel(L(t))]),B(e,n)}),E(n),B(e,n),O()}var BJ=z(`

                Rate Limits

                `),VJ=z(``),HJ=z(`
                Rate limit management is unavailable.
                `),UJ=z(``),WJ=z(`
                `),GJ=z(`

                No rate limits configured yet.

                `),KJ=z(`

                No rate limits match your filter.

                `),qJ=z(`
                `);function JJ(e,t){D(t,!0),kn(()=>{Y.refreshTick,kD.page===`rate-limits`&&Z.fetchRateLimitsPage()});let n=k(()=>Z.filteredRateLimits());var r=qJ(),i=N(r),a=N(i);HU(N(a),{copyId:`rate-limits-help-copy`,label:`rate limits help`,text:`Rate limits cap requests, tokens, and in-flight concurrency for a user path subtree, a provider, or a model. Consumer (user path) breaches return 429 with Retry-After and x-ratelimit-* headers; saturated providers and models are skipped by load balancing and failover while capacity exists elsewhere. Counters are per gateway instance and reset on restart; token limits need usage tracking.`,title:e=>{B(e,BJ())},$$slots:{title:!0}}),E(a);var o=F(a,2),s=N(o),c=e=>{var t=VJ();q(N(t),{get icon(){return qE},class:`form-action-icon`}),He(2),E(t),I(()=>t.disabled=Z.rateLimitFormSubmitting),R(`click`,t,()=>Z.openRateLimitForm()),B(e,t)},l=k(()=>Z.rateLimitsEnabled()&&Z.rateLimitsAvailable&&!Y.authError);H(s,e=>{L(l)&&e(c)}),E(o),E(i);var u=F(i,2);Mk(u,{});var d=F(u,2),f=e=>{B(e,HJ())},p=k(()=>(!Z.rateLimitsEnabled()||!Z.rateLimitsAvailable)&&!Y.authError);H(d,e=>{L(p)&&e(f)});var m=F(d,2),h=e=>{var t=UJ(),n=N(t,!0);E(t),I(()=>V(n,Z.rateLimitError)),B(e,t)};H(m,e=>{Z.rateLimitError&&!Y.authError&&e(h)});var g=F(m,2),_=e=>{lK(e,{label:`Loading rate limits...`})};H(g,e=>{Z.rateLimitsLoading&&!Y.authError&&e(_)});var v=F(g,2),y=e=>{var t=WJ(),n=N(t);mG(N(n),{id:`rate-limit-filter`,placeholder:`Filter by subject, scope, or period...`,label:`Filter rate limits by subject, scope, or period`,get value(){return Z.rateLimitFilter},set value(e){Z.rateLimitFilter=e}}),E(n),E(t),B(e,t)};H(v,e=>{(Z.rateLimits.length>0||Z.rateLimitFilter)&&Z.rateLimitsAvailable&&!Y.authError&&!Z.rateLimitFormOpen&&e(y)});var b=F(v,2);AJ(b,{});var x=F(b,2),S=e=>{zJ(e,{get rules(){return L(n)}})};H(x,e=>{L(n).length>0&&Z.rateLimitsAvailable&&!Y.authError&&e(S)});var C=F(x,2),w=e=>{B(e,GJ())},T=k(()=>Z.rateLimits.length===0&&!Z.rateLimitFilter&&!Z.rateLimitsLoading&&!Y.authError&&!Z.rateLimitError&&Z.rateLimitsAvailable&&Z.rateLimitsEnabled());H(C,e=>{L(T)&&e(w)});var ee=F(C,2),te=e=>{B(e,KJ())},ne=k(()=>Z.rateLimits.length>0&&L(n).length===0&&Z.rateLimitFilter&&!Z.rateLimitsLoading&&!Y.authError&&!Z.rateLimitError&&Z.rateLimitsAvailable&&Z.rateLimitsEnabled());H(ee,e=>{L(ne)&&e(te)}),E(r),B(e,r),O()}Vr([`click`]);function YJ(e){return String(e||``).trim().toLowerCase()}function XJ(e){if(!e)return``;let t=String(e.selector||``).trim();if(t)return t;if(!e.model||!e.model.id)return``;let n=String(e.model.id||``).trim(),r=String(e.provider_name||``).trim();if(r)return r+`/`+n;let i=String(e.provider_type||``).trim();return!i||n.includes(`/`)?n:i+`/`+n}function ZJ(e,t,n,r){let i=new Set,a=String(e||``).trim().toLowerCase(),o=String(t||``).trim().toLowerCase(),s=String(n||``).trim().toLowerCase(),c=String(r||``).trim().toLowerCase();if(c&&i.add(c),!a)return i;i.add(a),s&&i.add(s+`/`+a),o&&!a.includes(`/`)&&i.add(o+`/`+a);let l=a.split(`/`);return l.length===2&&l[1]&&i.add(l[1]),i}function QJ(e){return ZJ(e&&e.model?e.model.id:``,e?e.provider_type:``,e?e.provider_name:``,e?e.selector:``)}function $J(e){let t=new Set,n=String(e.resolved_model||``).trim().toLowerCase(),r=String(e.target_model||``).trim().toLowerCase(),i=String(e.target_provider||``).trim().toLowerCase();if(n){t.add(n);let e=n.split(`/`);e.length===2&&e[1]&&t.add(e[1])}if(r){t.add(r);let e=r.split(`/`);e.length===2&&e[1]&&t.add(e[1])}return r&&i&&t.add(i+`/`+r),t}function eY(e){if(!e)return``;let t=String(e.provider||``).trim(),n=String(e.model||``).trim();return!t||!n||n===t||n.startsWith(t+`/`)?n:t+`/`+n}function tY(e){if(e===``||e==null)return null;let t=Number(e);return!Number.isFinite(t)||t<=0?null:t}function nY(e,t){let n={model:e},r=tY(t);return r!==null&&(n.weight=r),n}function rY(e){let t=Array.isArray(e)?e:[],n=[];for(let e of t){let t=String(e&&e.model||``).trim();t&&n.push(nY(t,e&&e.weight))}return n}function iY(e){switch(String(e||``).toLowerCase()){case`cost`:return`lowest cost`;case`round_robin`:case``:return`round robin`;default:return e}}var aY={round_robin:`Round-robin (rotate across targets; honors weights)`,cost:`Lowest cost (cheapest target per request)`,adaptive:`Adaptive (target chosen by the registered routing extension)`};function oY(e,t){let n=Array.isArray(e)?[...e]:[],r=String(t||``).trim().toLowerCase();return r&&!n.includes(r)&&n.push(r),n.map(e=>({value:e,label:aY[e]||e}))}function sY(e){let t=Array.isArray(e.targets)?e.targets:[],n=t.length>0?t[0]:{},r=t.map(e=>{let t={provider:e.provider||``,model:e.model||``};return e.weight&&(t.weight=e.weight),t});return{name:e.source,target_provider:n.provider||``,target_model:n.model||``,targets:r,strategy:e.strategy||``,session_affinity:e.session_affinity!==!1,description:e.description||``,slowdown:e.slowdown==null?null:Number(e.slowdown),enabled:e.enabled!==!1,managed:!!e.managed,valid:!!e.valid,resolved_model:e.resolved_model||``,provider_type:e.provider_type||``,user_paths:Array.isArray(e.user_paths)?e.user_paths:[]}}function cY(e){let t=Array.isArray(e)?e:[],n=[],r=[];for(let e of t)!e||typeof e!=`object`||(e.kind===`redirect`?n.push(sY(e)):e.kind===`policy`&&r.push({selector:e.source,provider_name:e.provider_name||``,model:e.model||``,user_paths:Array.isArray(e.user_paths)?e.user_paths:[],description:e.description||``,slowdown:e.slowdown==null?null:Number(e.slowdown),enabled:e.enabled!==!1,managed:!!e.managed,scope_kind:e.scope_kind||``}));return{aliases:n,policies:r}}function lY(e){if(!e)return`—`;let t=Array.isArray(e.targets)?e.targets:[];return t.length>1?t.length+` targets · `+iY(e.strategy):e.resolved_model?e.resolved_model:e.target_provider?e.target_provider+`/`+e.target_model:e.target_model||`—`}function uY(e){return e?e.enabled===!1?`is-disabled`:e.valid?`is-valid`:`is-invalid`:`is-invalid`}function dY(e){return e?e.enabled===!1?`Disabled`:e.valid?`Active`:`Invalid`:`Invalid`}function fY(e){return Array.isArray(e)&&e.length>0&&e.indexOf(`/`)===-1}function pY(e,t){return!t||!e?``:e.effective_enabled===!1?`is-disabled`:fY(e.user_paths)?`is-restricted`:`is-enabled`}function mY(e){if(!e)return``;let t=[];e.effective_enabled===!1&&t.push(e.default_enabled===!1?`Disabled by default`:`Disabled`);let n=Array.isArray(e.user_paths)?e.user_paths:[];return n.length>0&&t.push(`Allowed for `+n.join(`, `)),t.join(` · `)}function hY({models:e,aliases:t,virtualModelsAvailable:n,activeCategory:r}){let i=Array.isArray(e)?e:[],a=Array.isArray(t)?t:[],o=new Map;if(n)for(let e of a){let t=YJ(e&&e.name);!t||e.enabled===!1||!e.valid||o.set(t,e)}let s=new Map,c=i.map(e=>{let t=XJ(e),n=null;for(let t of QJ(e))s.has(t)||s.set(t,e),!n&&o.has(t)&&(n=o.get(t));let r=e&&e.access?e.access:null;return{key:`model:`+t,display_name:t,secondary_name:``,provider_name:e.provider_name||``,provider_type:e.provider_type||``,model:e.model,selector:e.selector||``,is_alias:!1,alias:null,access:r,masking_alias:n,has_virtual_model:!!(n||r&&r.override),alias_state_class:``,alias_state_text:``}});if(!n)return c;for(let e of a){let t=s.get(YJ(e&&e.name));if(e&&e.enabled!==!1&&e.valid&&t)continue;let n=null;for(let t of $J(e))if(n=s.get(t)||null,n)break;!n&&r&&r!==`all`||c.push({key:`alias:`+e.name,display_name:e.name,secondary_name:lY(e),provider_name:n&&n.provider_name||``,provider_type:n?n.provider_type||e.provider_type||``:e.provider_type||``,model:n?n.model:{id:e.name,object:`model`},selector:``,is_alias:!0,alias:e,access:null,masking_alias:null,source_model_exists:!!t,has_virtual_model:!0,alias_state_class:uY(e),alias_state_text:dY(e)})}return c.sort((e,t)=>e.is_alias===t.is_alias?String(e.display_name||``).localeCompare(String(t.display_name||``)):e.is_alias?-1:1)}function gY(e,t){if(!t)return e;let n=String(t).toLowerCase();return e.filter(e=>[e.display_name,e.secondary_name,e.provider_name,e.provider_type,e.model&&e.model.owned_by,e.alias&&e.alias.description,e.alias&&e.alias_state_text,e.model&&e.model.metadata&&e.model.metadata.modes?e.model.metadata.modes.join(`,`):``,e.model&&e.model.metadata&&e.model.metadata.categories?e.model.metadata.categories.join(`,`):``].some(e=>String(e||``).toLowerCase().includes(n)))}function _Y(e,t){return String(e||``).trim()||String(t||``).trim()||`Unassigned`}function vY(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return!r||r===n?``:r}function yY(e){let t=String(e||``).trim();return t?t+`/`:``}function bY(e){let t=Array.isArray(e)?e:[],n=t.filter(e=>e&&!e.is_alias).length,r=t.filter(e=>e&&e.is_alias).length,i=[];return n>0&&i.push(n+(n===1?` model`:` models`)),r>0&&i.push(r+(r===1?` alias`:` aliases`)),i.join(` · `)}function xY(e,t,n){let r=String(t||``).trim(),i=String(n||``).trim();for(let t of Array.isArray(e)?e:[]){let e=String(t&&t.provider_name||``).trim(),n=String(t&&t.provider_type||``).trim();if(!(r&&e!==r)&&!(!r&&i&&n!==i)&&t&&t.access)return t.access.default_enabled!==!1}return!0}function SY(e){for(let t of Array.isArray(e)?e:[])if(t&&t.access)return t.access.default_enabled!==!1;return!0}function CY(e,t){let n=String(t||``).trim();if(!n)return null;for(let t of Array.isArray(e)?e:[])if(String(t&&t.selector||``).trim()===n)return t;return null}function wY(e,t,n,r){let i=yY(t),a=r&&r.get(`/`)||null,o=i&&r&&r.get(i)||null,s=xY(e,t,n),c=o||a,l=c&&Array.isArray(c.user_paths)?Array.from(new Set(c.user_paths)).sort():[];return{selector:i,default_enabled:s,effective_enabled:c?c.enabled!==!1:s,user_paths:l,override:o}}function TY(e,t,n){if(!Array.isArray(e)||e.length===0)return[];let r=new Map;for(let e of Array.isArray(n)?n:[]){let t=String(e&&e.selector||``).trim();t&&r.set(t,e)}let i=[],a=new Map;for(let t of e){if(t&&t.is_alias){i.push(t);continue}let e=String(t&&t.provider_name||``).trim(),n=String(t&&t.provider_type||``).trim(),r=`provider-group:`+(e||n||`unassigned`);a.has(r)||a.set(r,{key:r,provider_name:e,provider_type:n,display_name:_Y(e,n),type_label:vY(e,n),rows:[]});let o=a.get(r);!o.provider_name&&e&&(o.provider_name=e),!o.provider_type&&n&&(o.provider_type=n),o.display_name=_Y(o.provider_name,o.provider_type),o.type_label=vY(o.provider_name,o.provider_type),o.rows.push(t)}let o=Array.from(a.values()).map(e=>{let n=wY(t,e.provider_name,e.provider_type,r);return{...e,access:n,access_summary:mY(n),item_count_label:bY(e.rows)}}).sort((e,t)=>String(e.display_name||``).localeCompare(String(t.display_name||``)));return i.length>0&&o.unshift({key:`virtual-model-group`,is_virtual_models:!0,provider_name:``,provider_type:``,display_name:`Virtual models`,type_label:``,rows:i,access:{selector:``},access_summary:``,item_count_label:bY(i)}),o}function EY(e,t){let n=CY(t,`/`),r=SY(e),i=n&&Array.isArray(n.user_paths)?n.user_paths:[];return{key:`scope-global`,is_alias:!1,display_name:`all providers and models`,access:{selector:`/`,default_enabled:r,effective_enabled:n?n.enabled!==!1:r,user_paths:i,override:n}}}function DY(e){return e?String(e.access&&e.access.selector||``).trim()||String(e.override_selector||``).trim()||XJ(e):``}function OY(e){if(!e)return[];let t=[];return e.is_alias?t.push(`alias-row`,uY(e.alias)):e.has_virtual_model&&t.push(`alias-row`,`is-valid`),!e.is_alias&&e.masking_alias&&t.push(`masked-model-row`),!e.is_alias&&e.access&&e.access.effective_enabled===!1&&t.push(`model-access-disabled-row`),t}function kY(e){return!!(e&&e.is_alias&&e.alias&&e.alias.name&&!e.alias.managed)}function AY(e){return!!(e&&!e.is_alias&&e.masking_alias&&e.masking_alias.name&&!e.masking_alias.managed)}function jY(e){return e&&e.is_alias&&e.alias&&e.alias.name?`alias-row-`+String(e.alias.name).replace(/[^a-zA-Z0-9_-]+/g,`-`):``}function MY(e){return e?e.is_alias?!!(e.alias&&e.alias.managed):!!(e.access&&e.access.override&&e.access.override.managed||e.masking_alias&&e.masking_alias.managed):!1}function NY(e){return!!(e&&e.override)}function PY(e){return e?`table-action-btn-active`:``}function FY(e,t){let n=`Edit `+String(e||`model access`);return t?n+` (virtual model exists)`:n}function IY(){return{source:``,target_model:``,target_weight:1,targets:[],strategy:`round_robin`,session_affinity:!0,user_paths:``,description:``,slowdown:``,enabled:!0}}function LY(e){return String(e&&e.target_model||``).trim()!==``}function RY(e){return String(e&&e.target_model||``).trim()?!0:rY(e&&e.targets).length>0}function zY(e){if(RY(e))return!0;let t=String(e&&e.source||``).trim();return!!t&&t!==`/`&&!t.endsWith(`/`)}function BY(e){return!!e&&Array.isArray(e.targets)&&e.targets.length>0}function VY(e){return BY(e)&&String(e&&e.strategy||``).toLowerCase()!==`cost`}function HY(e){let t=Array.isArray(e.targets)?e.targets:[];if(t.length>0){let n=t.shift();e.target_model=n.model||``,e.target_weight=n.weight||1;return}e.target_model=``,e.target_weight=1}function UY(e){let t=Array.isArray(e&&e.targets)?e.targets:[];return t.length>0?{primaryModel:eY(t[0]),primaryWeight:t[0].weight||1,extraTargets:t.slice(1).map(e=>({model:eY(e),weight:e.weight||1}))}:{primaryModel:e&&e.target_provider?e.target_provider+`/`+e.target_model:e&&e.target_model||``,primaryWeight:1,extraTargets:[]}}function WY(e){return String(e||``).split(/\r?\n|,/).map(e=>String(e||``).trim()).filter(Boolean)}function GY(e,t,n){let r=String(e&&e.source||``).trim(),i=String(e&&e.target_model||``).trim(),a=rY(e&&e.targets),o=RY(e),s=String(t||``).trim(),c=n===`edit`&&!!s&&r!==s,l={source:r,user_paths:WY(e&&e.user_paths),description:String(e&&e.description||``).trim(),enabled:!!(e&&e.enabled)},u=e&&e.slowdown;if(u!==``&&u!=null){let e=Number(u);Number.isFinite(e)&&(l.slowdown=e)}if(c&&(l.old_source=s),o){let t=[];if(i&&t.push(nY(i,e.target_weight)),t.push(...a),t.length>1){let n=e.strategy||`round_robin`;l.targets=n===`cost`?t.map(e=>({model:e.model})):t,l.strategy=n,e&&e.session_affinity===!1&&(l.session_affinity=!1)}else l.target_model=t[0].model}return{payload:l,source:r,isRedirect:o,isRename:c}}function KY(e){let t={source:e.name,description:String(e.description||``).trim(),user_paths:Array.isArray(e.user_paths)?e.user_paths:[],enabled:e.enabled===!1};if(e.slowdown!=null){let n=Number(e.slowdown);Number.isFinite(n)&&(t.slowdown=n)}let n=Array.isArray(e.targets)?e.targets:[];return n.length>1?(t.strategy=e.strategy||`round_robin`,e.session_affinity===!1&&(t.session_affinity=!1),t.targets=t.strategy===`cost`?n.map(e=>({model:eY(e)})):n.map(e=>nY(eY(e),e.weight))):n.length===1?t.target_model=eY(n[0]):t.target_model=e.target_provider?e.target_provider+`/`+e.target_model:e.target_model,t}function qY(e,t,n){let r=n||{},i=r.effective_enabled===!1,a=t&&Array.isArray(t.user_paths)?t.user_paths:[],o=String(t&&t.description||``).trim(),s=!!(t&&t.slowdown!=null),c=Number(s?t.slowdown:0),l={};o&&(l.description=o),s&&Number.isFinite(c)&&(l.slowdown=c);let u=`PUT`,d;return i===!1?d={source:e,enabled:!1,user_paths:a,...l}:t&&a.length===0&&!o&&!s&&r.default_enabled!==!1?(u=`DELETE`,d={source:e}):d={source:e,enabled:!0,user_paths:a,...l},{method:u,payload:d,desired:i}}function JY(e,t,n){let r=Math.max(1,Number(t||75)),i=Math.min(n,e+r);return{limit:i,rendering:ihY({models:Ak.models,aliases:this.aliases,virtualModelsAvailable:this.virtualModelsAvailable,activeCategory:Ak.activeCategory}));get displayModels(){return L(this.#T)}set displayModels(e){j(this.#T,e)}#E=k(()=>TY(this.displayModels,Ak.models,this.modelOverrideViews));get displayModelGroups(){return L(this.#E)}set displayModelGroups(e){j(this.#E,e)}#D=k(()=>gY(this.displayModels,Ak.filter));get filteredDisplayModels(){return L(this.#D)}set filteredDisplayModels(e){j(this.#D,e)}#O=k(()=>{let e=this.filteredDisplayModels,t=Math.max(0,Math.min(Number(this.modelRenderLimit||0),e.length));return!Ak.filter&&t>=this.displayModels.length?this.displayModelGroups:TY(e.slice(0,t),Ak.models,this.modelOverrideViews)});get filteredDisplayModelGroups(){return L(this.#O)}set filteredDisplayModelGroups(e){j(this.#O,e)}#k=k(()=>EY(Ak.models,this.modelOverrideViews));get globalScopeRow(){return L(this.#k)}set globalScopeRow(e){j(this.#k,e)}modelsBusy(){return!!(Ak.loading||this.modelsRendering)}modelLoadingText(){if(Ak.loading)return this.displayModels.length>0?`Refreshing models...`:`Loading models...`;let e=this.filteredDisplayModels.length;return`Rendering models... `+Math.min(Number(this.modelRenderLimit||0),e)+` / `+e}restartModelRendering(e){let t=++this.#a,n=YY(this.modelRenderBatchSize,e);this.modelRenderLimit=n.limit,this.modelsRendering=n.rendering,n.rendering&&this.#A(t)}stopModelRendering(){this.#a++,this.modelsRendering=!1}#A(e){let t=()=>{if(e!==this.#a)return;let t=JY(this.modelRenderLimit,this.modelRenderBatchSize,this.filteredDisplayModels.length);this.modelRenderLimit=t.limit,this.modelsRendering=t.rendering,t.rendering&&this.#A(e)};typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>setTimeout(t,0)):setTimeout(t,0)}async fetchVirtualModels(){this.aliasLoading=!0,this.aliasError=``;try{let e=await iO(`/admin/virtual-models`,{label:`virtual models`});if(e.status===503){this.virtualModelsAvailable=!1,this.aliases=[],this.modelOverrideViews=[];return}if(e.stale)return;if(this.virtualModelsAvailable=!0,!e.ok){this.aliases=[],this.modelOverrideViews=[];return}let{aliases:t,policies:n}=cY(e.data);this.aliases=t,this.modelOverrideViews=n}catch(e){console.error(`Failed to fetch virtual models:`,e),this.aliases=[],this.modelOverrideViews=[],this.aliasError=`Unable to load virtual models.`}finally{this.aliasLoading=!1}}qualifiedModelName(e){return XJ(e)}findModelOverrideView(e){return CY(this.modelOverrideViews,e)}hasGlobalModelOverride(){return!!this.findModelOverrideView(`/`)}findExistingAliasByName(e){let t=YJ(e);if(!t)return null;for(let e of this.aliases)if(YJ(e&&e.name)===t)return e;return null}findConcreteModelByName(e){let t=YJ(e);if(!t)return null;for(let e of Ak.models)if(QJ(e).has(t))return e;return null}rowToggleEnabled(e){return e?e.is_alias?e.alias&&e.alias.enabled!==!1:!!(e.access&&e.access.effective_enabled!==!1):!1}rowToggleLabel(e){return this.rowTogglingKey&&this.rowTogglingKey===e.key?`Updating...`:this.rowToggleRestricted(e)?`Restricted`:this.rowToggleEnabled(e)?`Enabled`:`Disabled`}rowToggleRestricted(e){return!!e&&!e.is_alias&&pY(e.access,this.virtualModelsAvailable)===`is-restricted`}rowToggleAriaLabel(e){if(!e)return``;let t=this.rowToggleEnabled(e)?`Disable `:`Enable `,n;return n=e.is_alias?`alias `+String(e.alias&&e.alias.name||``):String(e.display_name||e.access&&e.access.selector||`model`),t+n.trim()}async toggleRowEnabled(e){if(this.virtualModelsAvailable&&!(!e||this.rowTogglingKey===e.key)){if(MY(e)){UO.success(`This virtual model is managed by configuration and is read-only.`);return}if(e.is_alias){await this.toggleAliasRow(e);return}await this.toggleModelRow(e)}}async toggleAliasRow(e){let t=e.alias;if(!t||!t.name)return;this.rowTogglingKey=e.key;let n=KY(t);try{let e=await aO(`/admin/virtual-models`,`PUT`,n,{label:`alias state`});if(e.status===503){this.virtualModelsAvailable=!1,UO.error(`Virtual models feature is unavailable.`);return}if(e.stale)return;if(!e.ok){UO.error(e.status===401?`Authentication required.`:eO(e,`Failed to update alias state.`));return}UO.success(n.enabled?`Alias enabled.`:`Alias disabled.`),this.fetchVirtualModels()}catch(e){console.error(`Failed to toggle alias state:`,e),UO.error(`Failed to update alias state.`)}finally{this.rowTogglingKey=``}}async toggleModelRow(e){let t=DY(e);if(!t)return;let{method:n,payload:r,desired:i}=qY(t,this.findModelOverrideView(t),e.access||{});this.rowTogglingKey=e.key;try{let e=await aO(`/admin/virtual-models`,n,r,{label:`model access`});if(e.status===503){this.virtualModelsAvailable=!1,UO.error(`Virtual models feature is unavailable.`);return}if(!(n===`DELETE`&&e.status===404)){if(e.stale)return;if(!e.ok){UO.error(e.status===401?`Authentication required.`:eO(e,`Failed to update model access.`));return}}UO.success(i?`Model enabled.`:`Model disabled.`),Promise.all([Ak.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to toggle model access:`,e),UO.error(`Failed to update model access.`)}finally{this.rowTogglingKey=``}}async removeAliasRow(e){if(!(e&&e.is_alias&&e.alias&&e.alias.name&&!e.alias.managed)||this.rowDeletingKey)return;let t=String(e.alias.name||``).trim();t&&await this.mutateVirtualModelRow({rowKey:e.key,confirmMessage:`Remove the virtual model alias "`+t+`"?`,method:`DELETE`,payload:{source:t},operation:`virtual model`,failureMessage:`Failed to remove virtual model.`,notice:`Virtual model removed.`,ignoreNotFound:!0})}async removeRedirectRow(e){let t=e&&e.masking_alias;if(!(e&&!e.is_alias&&t&&t.name&&!t.managed)||this.rowDeletingKey)return;let n=String(t.name||``).trim();n&&await this.mutateVirtualModelRow({rowKey:e.key,confirmMessage:`Remove the redirect for "`+n+`"? Other virtual model settings will be preserved.`,method:`PUT`,payload:{source:n,user_paths:Array.isArray(t.user_paths)?t.user_paths:[],description:String(t.description||``).trim(),enabled:t.enabled!==!1,...t.slowdown==null?{}:{slowdown:Number(t.slowdown)}},operation:`virtual model redirect`,failureMessage:`Failed to remove redirect.`,notice:`Redirect removed. Other virtual model settings were preserved.`})}async mutateVirtualModelRow(e){if(!this.rowDeletingKey&&window.confirm(e.confirmMessage)){this.rowDeletingKey=e.rowKey;try{let t=await aO(`/admin/virtual-models`,e.method,e.payload,{label:e.operation});if(t.status===503){this.virtualModelsAvailable=!1,UO.error(`Virtual models feature is unavailable.`);return}if(!(e.ignoreNotFound&&t.status===404)){if(t.stale)return;if(!t.ok){UO.error(t.status===401?`Authentication required.`:eO(t,e.failureMessage));return}}this.virtualModelsAvailable=!0,UO.success(e.notice),Promise.all([Ak.fetchModels(),this.fetchVirtualModels()])}catch(t){console.error(e.failureMessage,t),UO.error(e.failureMessage)}finally{this.rowDeletingKey=``}}}addVmTarget(){Array.isArray(this.vmForm.targets)||(this.vmForm.targets=[]),this.vmForm.targets.push({model:``,weight:1})}removeVmTarget(e){Array.isArray(this.vmForm.targets)&&this.vmForm.targets.splice(e,1)}removePrimaryTarget(){HY(this.vmForm)}vmFormHasPrimaryTarget(){return LY(this.vmForm)}vmFormShowStrategy(){return BY(this.vmForm)}vmStrategyOptions(){return oY(lO.virtualModelStrategies(),this.vmForm.strategy)}vmFormShowWeights(){return VY(this.vmForm)}vmFormSupportsSlowdown(){return zY(this.vmForm)}vmFormToggleRestricted(){return!!(this.vmForm&&this.vmForm.enabled)&&fY(WY(this.vmForm.user_paths))}vmFormToggleLabel(){return!this.vmForm||!this.vmForm.enabled?`Disabled`:this.vmFormToggleRestricted()?`Restricted`:`Enabled`}resetVirtualModelForm(){this.vmFormError=``,this.vmFormHelpOpen=!1,this.vmFormUserPathsHelpOpen=!1,this.vmSubmitting=!1,this.vmDeleting=!1,this.vmFormHasExisting=!1,this.vmFormDefaultEnabled=!0,this.vmFormEffectiveEnabled=!0,this.vmFormDisplayName=``,this.vmFormSourceLocked=!1,this.vmFormOriginalSource=``,this.vmFormManaged=!1,this.vmForm=IY()}closeVirtualModelForm(){this.vmFormOpen=!1,this.resetVirtualModelForm()}openVirtualModelCreate(e){this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`create`,this.vmFormSourceLocked=!1,this.vmFormDisplayName=`New virtual model`,e&&e.model&&e.model.id&&(this.vmForm.target_model=XJ(e))}openVirtualModelEditAlias(e){if(!e)return;this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!1,this.vmFormHasExisting=!0,this.vmFormManaged=!!e.managed,this.vmFormOriginalSource=e.name||``,this.vmFormDisplayName=e.name||``,this.vmFormDefaultEnabled=SY(Ak.models),this.vmFormEffectiveEnabled=e.enabled!==!1;let{primaryModel:t,primaryWeight:n,extraTargets:r}=UY(e);this.vmForm={source:e.name||``,target_model:t,target_weight:n,targets:r,strategy:e.strategy||`round_robin`,session_affinity:e.session_affinity!==!1,user_paths:(Array.isArray(e.user_paths)?e.user_paths:[]).join(` +`),description:e.description||``,slowdown:e.slowdown??``,enabled:e.enabled!==!1}}openVirtualModelEditModel(e){if(!e||e.is_alias)return;let t=e.access||{},n=t.override||null,r=n&&Array.isArray(n.user_paths)?n.user_paths:Array.isArray(t.user_paths)?t.user_paths:[],i=DY(e);this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!0,this.vmFormHasExisting=!!n,this.vmFormOriginalSource=i;let a=n?n.enabled!==!1:t.effective_enabled!==!1;this.vmFormDefaultEnabled=t.default_enabled!==!1,this.vmFormEffectiveEnabled=a,this.vmFormManaged=!!(n&&n.managed),this.vmFormDisplayName=e.access_display_name||e.display_name||i||``,this.vmForm={source:i,target_model:``,target_weight:``,targets:[],strategy:`round_robin`,user_paths:r.join(` +`),description:n&&n.description?n.description:``,slowdown:n&&n.slowdown!=null?n.slowdown:``,enabled:a}}openGlobalModelOverrideEdit(){let e=this.findModelOverrideView(`/`),t=e&&Array.isArray(e.user_paths)?e.user_paths:[],n=SY(Ak.models);this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!0,this.vmFormHasExisting=!!e,this.vmFormOriginalSource=`/`,this.vmFormDefaultEnabled=n,this.vmFormEffectiveEnabled=e?e.enabled!==!1:n,this.vmFormManaged=!!(e&&e.managed),this.vmFormDisplayName=`All providers and models`,this.vmForm={source:`/`,target_model:``,target_weight:``,targets:[],strategy:`round_robin`,user_paths:t.join(` +`),description:e&&e.description?e.description:``,slowdown:e&&e.slowdown!=null?e.slowdown:``,enabled:e?e.enabled!==!1:n}}openProviderOverrideEdit(e){!e||!e.access||!e.access.selector||this.openVirtualModelEditModel({display_name:e.display_name,access_display_name:`All models in `+e.display_name,provider_name:e.provider_name,provider_type:e.provider_type,access:e.access,override_selector:e.access.selector,is_alias:!1})}async submitVirtualModelForm(){if(this.vmFormManaged){this.vmFormError=`This virtual model is managed by configuration and cannot be edited here.`;return}let{payload:e,source:t,isRedirect:n,isRename:r}=GY(this.vmForm,this.vmFormOriginalSource,this.vmFormMode);if(!t){this.vmFormError=`Source is required.`;return}if(this.vmFormError=``,this.vmFormMode!==`edit`){let e=this.findExistingAliasByName(t),r=e?null:this.findModelOverrideView(t);if(e||r){let n=e?`A virtual model named "`+e.name+`" already exists. Saving will update that virtual model. Continue?`:`An access policy for "`+t+`" already exists. Saving will update that virtual model. Continue?`;if(!window.confirm(n)){this.vmFormError=`Choose a different source or edit the existing virtual model.`;return}}else if(n){let e=this.findConcreteModelByName(t);if(e){let t=XJ(e)||String(e.model&&e.model.id||``).trim();if(!window.confirm(`A model named "`+t+`" already exists. Creating this alias will mask that model in the list. Continue?`)){this.vmFormError=`Choose a different source to avoid masking an existing model.`;return}}}}else if(r){let e=(this.aliases||[]).find(e=>e&&e.name===t)||null,r=e?null:this.findModelOverrideView(t);if(e||r){this.vmFormError=`A virtual model for "`+t+`" already exists. Choose a different source.`;return}if(n){let e=this.findConcreteModelByName(t);if(e){let t=XJ(e)||String(e.model&&e.model.id||``).trim();if(!window.confirm(`A model named "`+t+`" already exists. Renaming to that name will mask the model in the list. Continue?`)){this.vmFormError=`Choose a different source to avoid masking an existing model.`;return}}}}this.vmSubmitting=!0;try{let t=await aO(`/admin/virtual-models`,`PUT`,e,{label:`virtual model`});if(t.status===503){this.virtualModelsAvailable=!1,this.vmFormError=`Virtual models feature is unavailable.`;return}if(t.stale)return;if(!t.ok){this.vmFormError=t.status===401?`Authentication required.`:eO(t,`Failed to save virtual model.`);return}let r=!n&&t.status===204;this.virtualModelsAvailable=!0,this.closeVirtualModelForm(),UO.success(n?`Alias saved.`:r?`Model access reset to inherited/default.`:`Model access saved.`),Promise.all([Ak.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to save virtual model:`,e),this.vmFormError=`Failed to save virtual model.`}finally{this.vmSubmitting=!1}}async deleteVirtualModel(){if(this.vmFormManaged){this.vmFormError=`This virtual model is managed by configuration and cannot be removed here.`;return}let e=String(this.vmForm.source||this.vmFormOriginalSource||``).trim();if(!(!e||!this.vmFormHasExisting)&&window.confirm(`Remove the virtual model for "`+e+`"? This reverts to inherited/default behavior.`)){this.vmDeleting=!0,this.vmFormError=``;try{let t=await aO(`/admin/virtual-models`,`DELETE`,{source:e},{label:`virtual model`});if(t.status===503){this.virtualModelsAvailable=!1,this.vmFormError=`Virtual models feature is unavailable.`;return}if(t.status!==404){if(t.stale)return;if(!t.ok){this.vmFormError=t.status===401?`Authentication required.`:eO(t,`Failed to remove virtual model.`);return}}this.virtualModelsAvailable=!0,this.closeVirtualModelForm(),UO.success(`Virtual model removed.`),Promise.all([Ak.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to delete virtual model:`,e),this.vmFormError=`Failed to remove virtual model.`}finally{this.vmDeleting=!1}}}},ZY=[{value:`input_per_mtok`,label:`Input $/MTok`,group:`Tokens`},{value:`output_per_mtok`,label:`Output $/MTok`,group:`Tokens`},{value:`cached_input_per_mtok`,label:`Cached input $/MTok`,group:`Tokens`},{value:`cache_write_per_mtok`,label:`Cache write $/MTok`,group:`Tokens`},{value:`reasoning_output_per_mtok`,label:`Reasoning output $/MTok`,group:`Tokens`},{value:`batch_input_per_mtok`,label:`Batch input $/MTok`,group:`Batch`},{value:`batch_output_per_mtok`,label:`Batch output $/MTok`,group:`Batch`},{value:`audio_input_per_mtok`,label:`Audio input $/MTok`,group:`Audio`},{value:`audio_output_per_mtok`,label:`Audio output $/MTok`,group:`Audio`},{value:`per_image`,label:`$/Image`,group:`Image`},{value:`input_per_image`,label:`Input $/Image`,group:`Image`},{value:`per_second_input`,label:`Input $/Second`,group:`Audio/Video`},{value:`per_second_output`,label:`Output $/Second`,group:`Video`},{value:`per_character_input`,label:`$/Character`,group:`Audio`},{value:`per_page`,label:`$/Page`,group:`Utility`},{value:`per_request`,label:`$/Request`,group:`Utility`}];function QY(e){let t=ZY.find(t=>t.value===e);return t?t.label:String(e||``).replace(/_/g,` `)}function $Y(e){return e&&typeof e==`object`?JSON.parse(JSON.stringify(e)):{}}function eX(e,t){let n=$Y(e),r=t&&t.pricing?t.pricing:t;if(!r||typeof r!=`object`)return n;for(let e of ZY)r[e.value]!==null&&r[e.value]!==void 0&&(n[e.value]=Number(r[e.value]));return Array.isArray(r.tiers)&&r.tiers.length>0&&(n.tiers=$Y(r.tiers)),n}function tX(e){switch(String(e||``).trim()){case`config_yaml`:return`config.yaml`;case`model_registry`:return`Model registry`;default:return e?String(e):`Unknown`}}function nX(e){let t=e&&e.pricing?e.pricing:{},n=e&&e.pricing_sources&&typeof e.pricing_sources==`object`?e.pricing_sources:{},r={};for(let e of ZY)t[e.value]!==null&&t[e.value]!==void 0&&(r[e.value]=tX(n[e.value]||`model_registry`));return r}function rX(e){let t=String(e&&e.selector||``).trim();return t?`Dashboard/API override (`+t+`)`:`Dashboard/API override`}function iX(e){let t=String(e||``).trim();return t?t+`/`:``}function aX(e){return String(e&&e.model&&e.model.id||``).trim()}function oX(e){let t=String(e&&e.provider_name||``).trim(),n=aX(e);return t&&n?t+`/`+n:n}function sX(e){return aX(e)}function cX(e){let t=new Map;for(let n of Array.isArray(e)?e:[]){let e=String(n&&n.selector||``).trim();e&&t.set(e,n)}return t}function lX(e,t){let n=String(t||``).trim();return n&&cX(e).get(n)||null}function uX(e,t,n){let r=cX(e),i=oX(t),a=sX(t),o=iX(t&&t.provider_name),s=String(n||``).trim();for(let e of[i,a,o,`/`]){if(!e||e===s)continue;let t=r.get(e);if(t)return t}return null}function dX(e,t,n){let r=e&&e.model&&e.model.metadata?e.model.metadata:null,i=$Y(r&&r.pricing),a=nX(r),o=uX(t,e,n),s=o&&o.pricing?o.pricing:null;if(s){let e=rX(o);for(let t of ZY)s[t.value]!==null&&s[t.value]!==void 0&&(i[t.value]=Number(s[t.value]),a[t.value]=e);Array.isArray(s.tiers)&&s.tiers.length>0&&(i.tiers=$Y(s.tiers),a.tiers=e)}return{pricing:i,sources:a}}function fX(e,t){let n=e&&e.pricing?e.pricing:{},r=[];for(let e of ZY)n[e.value]!==null&&n[e.value]!==void 0&&r.push({id:t(),field:e.value,value:String(n[e.value])});return r}function pX(e,t){let n=new Set;for(let r of Array.isArray(e)?e:[]){if(t&&r.id===t)continue;let e=String(r.field||``).trim();e&&n.add(e)}return n}function mX(e,t){let n=pX(e,t&&t.id);return ZY.filter(e=>e.value===(t&&t.field)||!n.has(e.value))}function hX(e,t){let n={},r=new Set;for(let t of Array.isArray(e)?e:[]){let e=String(t.field||``).trim();if(!e)return{error:`Choose a price type for every row.`};if(r.has(e))return{error:`Each price type can only be used once.`};r.add(e);let i=String(t.value||``).trim();if(i===``)return{error:`Enter a value for `+QY(e)+`.`};let a=Number(i);if(!Number.isFinite(a)||a<0)return{error:`Pricing values must be numbers greater than or equal to 0.`};n[e]=a}let i=Array.isArray(t)?t:[];return i.length>0&&(n.tiers=$Y(i)),Object.keys(n).length===0?{error:`Add at least one pricing field before saving.`}:{pricing:n}}function gX(e,t,n){let r=e||{},i=t||{},a=n||{},o=eX(r,a);return ZY.map(e=>{let t=a[e.value]!==null&&a[e.value]!==void 0,n=r[e.value]!==null&&r[e.value]!==void 0;return{field:e.value,label:e.label,value:o[e.value],source:t?`Form/API value`:n?i[e.value]||`Model registry`:`Unset`}}).filter(e=>e.source!==`Unset`||e.value!==void 0)}var _X=new class{#e=A(!0);get modelPricingOverridesAvailable(){return L(this.#e)}set modelPricingOverridesAvailable(e){j(this.#e,e,!0)}#t=A(M([]));get modelPricingOverrideViews(){return L(this.#t)}set modelPricingOverrideViews(e){j(this.#t,e,!0)}#n=A(``);get modelPricingOverrideError(){return L(this.#n)}set modelPricingOverrideError(e){j(this.#n,e,!0)}#r=A(!1);get modelPricingOverrideFormOpen(){return L(this.#r)}set modelPricingOverrideFormOpen(e){j(this.#r,e,!0)}#i=A(!1);get modelPricingOverrideSubmitting(){return L(this.#i)}set modelPricingOverrideSubmitting(e){j(this.#i,e,!0)}#a=A(!1);get modelPricingOverrideFormHasExistingOverride(){return L(this.#a)}set modelPricingOverrideFormHasExistingOverride(e){j(this.#a,e,!0)}#o=A(``);get modelPricingOverrideFormDisplayName(){return L(this.#o)}set modelPricingOverrideFormDisplayName(e){j(this.#o,e,!0)}#s=A(``);get modelPricingOverrideFormScope(){return L(this.#s)}set modelPricingOverrideFormScope(e){j(this.#s,e,!0)}#c=A(M([]));get modelPricingOverrideFormScopeOptions(){return L(this.#c)}set modelPricingOverrideFormScopeOptions(e){j(this.#c,e,!0)}#l=A(null);get modelPricingOverrideFormRow(){return L(this.#l)}set modelPricingOverrideFormRow(e){j(this.#l,e,!0)}#u=A(null);get modelPricingOverrideFormBasePricing(){return L(this.#u)}set modelPricingOverrideFormBasePricing(e){j(this.#u,e,!0)}#d=A(null);get modelPricingOverrideFormBasePricingSources(){return L(this.#d)}set modelPricingOverrideFormBasePricingSources(e){j(this.#d,e,!0)}#f=A(M([]));get modelPricingOverrideFormPreservedTiers(){return L(this.#f)}set modelPricingOverrideFormPreservedTiers(e){j(this.#f,e,!0)}#p=A(M([]));get modelPricingOverrideRows(){return L(this.#p)}set modelPricingOverrideRows(e){j(this.#p,e,!0)}#m=A(M({selector:``}));get modelPricingOverrideForm(){return L(this.#m)}set modelPricingOverrideForm(e){j(this.#m,e,!0)}_modelPricingOverrideRowID=0;pricingFieldOptions(){return ZY}pricingFieldLabel(e){return QY(e)}async fetchModelPricingOverrides(){this.modelPricingOverrideError=``;try{let e=await iO(`/admin/model-pricing-overrides`,{label:`model pricing overrides`});if(e.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideViews=[];return}if(e.stale)return;if(this.modelPricingOverridesAvailable=!0,!e.ok){this.modelPricingOverrideViews=[];return}this.modelPricingOverrideViews=Array.isArray(e.data)?e.data:[]}catch(e){console.error(`Failed to fetch model pricing overrides:`,e),this.modelPricingOverrideViews=[],this.modelPricingOverrideError=`Unable to load model pricing overrides.`}}findModelPricingOverrideView(e){return lX(this.modelPricingOverrideViews,e)}hasGlobalPricingOverride(){return!!this.findModelPricingOverrideView(`/`)}hasProviderPricingOverride(e){return!!this.findModelPricingOverrideView(iX(e&&e.provider_name))}hasModelPricingOverride(e){return!!this.findModelPricingOverrideView(oX(e))}modelPricingButtonClass(e){return e?`table-action-btn-active`:``}modelPricingButtonLabel(e,t){let n=`Edit `+String(e||`model pricing`);return t?n+` (override exists)`:n}modelRowPricing(e){return dX(e,this.modelPricingOverrideViews).pricing}openGlobalPricingOverrideEdit(){this.openModelPricingOverrideForm({displayName:`All providers and models`,selector:`/`,scope:`global`,scopeOptions:[{value:`global`,label:`All providers and models`,selector:`/`}],row:null})}openProviderPricingOverrideEdit(e){let t=iX(e&&e.provider_name);t&&this.openModelPricingOverrideForm({displayName:`All models in `+(e.display_name||e.provider_name||t),selector:t,scope:`provider`,scopeOptions:[{value:`provider`,label:`Provider`,selector:t}],row:null})}openModelPricingOverrideEdit(e){if(!e||e.is_alias)return;let t=oX(e),n=sX(e),r=[{value:`exact`,label:`This provider and model`,selector:t}];n&&n!==t&&r.push({value:`model`,label:`This model across providers`,selector:n}),this.openModelPricingOverrideForm({displayName:e.display_name||t,selector:t,scope:`exact`,scopeOptions:r,row:e})}openModelPricingOverrideForm(e){let t=e||{};this.modelPricingOverrideFormOpen=!0,this.modelPricingOverrideError=``,this.modelPricingOverrideFormDisplayName=t.displayName||t.selector||`Pricing`,this.modelPricingOverrideFormScope=t.scope||``,this.modelPricingOverrideFormScopeOptions=Array.isArray(t.scopeOptions)?t.scopeOptions:[],this.modelPricingOverrideFormRow=t.row||null,this.modelPricingOverrideForm={selector:t.selector||``},this.loadModelPricingOverrideFormSelector(t.selector||``)}loadModelPricingOverrideFormSelector(e){e=String(e||``).trim();let t=this.findModelPricingOverrideView(e);this.modelPricingOverrideFormHasExistingOverride=!!t,this.modelPricingOverrideRows=fX(t,()=>this.nextModelPricingOverrideRowID()),this.modelPricingOverrideFormPreservedTiers=t&&t.pricing&&Array.isArray(t.pricing.tiers)?$Y(t.pricing.tiers):[],this.modelPricingOverrideRows.length===0&&this.modelPricingOverrideFormPreservedTiers.length===0&&this.addModelPricingOverrideRow();let n=this.modelPricingOverrideFormRow,r=n?dX(n,this.modelPricingOverrideViews,e):{pricing:{},sources:{}};this.modelPricingOverrideFormBasePricing=r.pricing,this.modelPricingOverrideFormBasePricingSources=r.sources}setModelPricingOverrideScope(e){this.modelPricingOverrideFormScope=e;let t=this.modelPricingOverrideFormScopeOptions.find(t=>t.value===e);t&&(this.modelPricingOverrideForm.selector=t.selector,this.loadModelPricingOverrideFormSelector(t.selector))}nextModelPricingOverrideRowID(){return this._modelPricingOverrideRowID=(this._modelPricingOverrideRowID||0)+1,`pricing-row-`+this._modelPricingOverrideRowID}availablePricingFieldOptions(e){return mX(this.modelPricingOverrideRows,e)}addModelPricingOverrideRow(){let e=pX(this.modelPricingOverrideRows),t=ZY.find(t=>!e.has(t.value))||ZY[0];t&&this.modelPricingOverrideRows.push({id:this.nextModelPricingOverrideRowID(),field:t.value,value:``})}removeModelPricingOverrideRow(e){this.modelPricingOverrideRows=this.modelPricingOverrideRows.filter(t=>t.id!==e.id),this.modelPricingOverrideRows.length===0&&this.modelPricingOverrideFormPreservedTiers.length===0&&this.addModelPricingOverrideRow()}modelPricingOverridePayload(){return hX(this.modelPricingOverrideRows,this.modelPricingOverrideFormPreservedTiers)}modelPricingOverrideDraftPricing(){let e=this.modelPricingOverridePayload();return e&&e.pricing?e.pricing:{}}modelPricingEffectivePreviewRows(){return gX(this.modelPricingOverrideFormBasePricing,this.modelPricingOverrideFormBasePricingSources,this.modelPricingOverrideDraftPricing())}closeModelPricingOverrideForm(){this.modelPricingOverrideFormOpen=!1,this.modelPricingOverrideSubmitting=!1,this.modelPricingOverrideError=``,this.modelPricingOverrideFormHasExistingOverride=!1,this.modelPricingOverrideFormDisplayName=``,this.modelPricingOverrideFormScope=``,this.modelPricingOverrideFormScopeOptions=[],this.modelPricingOverrideFormRow=null,this.modelPricingOverrideFormBasePricing=null,this.modelPricingOverrideFormBasePricingSources=null,this.modelPricingOverrideFormPreservedTiers=[],this.modelPricingOverrideRows=[],this.modelPricingOverrideForm={selector:``}}async submitModelPricingOverrideForm(){let e=String(this.modelPricingOverrideForm.selector||``).trim();if(!e){this.modelPricingOverrideError=`Model pricing selector is required.`;return}let t=this.modelPricingOverridePayload();if(t.error){this.modelPricingOverrideError=t.error;return}let n={selector:e,...t};this.modelPricingOverrideSubmitting=!0,this.modelPricingOverrideError=``;try{let e=await aO(`/admin/model-pricing-overrides`,`PUT`,n,{label:`model pricing override`});if(e.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideError=`Model pricing overrides feature is unavailable.`;return}if(e.stale)return;if(!e.ok){this.modelPricingOverrideError=e.status===401?`Authentication required.`:eO(e,`Failed to save model pricing.`);return}this.modelPricingOverridesAvailable=!0,this.closeModelPricingOverrideForm(),UO.success(`Model pricing saved.`),this.fetchModelPricingOverrides()}catch(e){console.error(`Failed to save model pricing override:`,e),this.modelPricingOverrideError=`Failed to save model pricing.`}finally{this.modelPricingOverrideSubmitting=!1}}async deleteModelPricingOverride(){let e=String(this.modelPricingOverrideForm.selector||``).trim();if(!(!e||!this.modelPricingOverrideFormHasExistingOverride)&&window.confirm(`Remove the model pricing override for "`+e+`"?`)){this.modelPricingOverrideSubmitting=!0,this.modelPricingOverrideError=``;try{let t=await aO(`/admin/model-pricing-overrides`,`DELETE`,{selector:e},{label:`model pricing override`});if(t.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideError=`Model pricing overrides feature is unavailable.`;return}if(t.status!==404){if(t.stale)return;if(!t.ok){this.modelPricingOverrideError=t.status===401?`Authentication required.`:eO(t,`Failed to remove model pricing override.`);return}}this.modelPricingOverridesAvailable=!0,this.closeModelPricingOverrideForm(),UO.success(`Model pricing override removed.`),this.fetchModelPricingOverrides()}catch(e){console.error(`Failed to delete model pricing override:`,e),this.modelPricingOverrideError=`Failed to remove model pricing override.`}finally{this.modelPricingOverrideSubmitting=!1}}}},vX=z(``);function yX(e,t){D(t,!0);var n=vX();let r;var i=F(N(n),2),a=N(i,!0);E(i),E(n),I((e,i,o)=>{r=W(n,1,`alias-toggle`,null,r,e),n.disabled=XY.rowTogglingKey===t.row.key||!XY.virtualModelsAvailable,G(n,`aria-label`,i),V(a,o)},[()=>({enabled:XY.rowToggleEnabled(t.row),restricted:XY.rowToggleRestricted(t.row)}),()=>XY.rowToggleAriaLabel(t.row),()=>XY.rowToggleLabel(t.row)]),R(`click`,n,()=>XY.toggleRowEnabled(t.row)),B(e,n),O()}Vr([`click`]);var bX=z(`
                `);function xX(e,t){D(t,!0);var n=bX(),r=N(n),i=e=>{yX(e,{get row(){return XY.globalScopeRow}})};H(r,e=>{XY.virtualModelsAvailable&&e(i)});var a=F(r,2),o=e=>{{let t=k(()=>_X.modelPricingButtonLabel(`global model pricing`,_X.hasGlobalPricingOverride())),n=k(()=>_X.modelPricingButtonClass(_X.hasGlobalPricingOverride()));dK(e,{get label(){return L(t)},get class(){return`table-icon-btn ${L(n)??``}`},onclick:()=>_X.openGlobalPricingOverrideEdit(),children:(e,t)=>{q(e,{get icon(){return DE},class:`table-icon-svg`})},$$slots:{default:!0}})}};H(a,e=>{_X.modelPricingOverridesAvailable&&e(o)});var s=F(a,2),c=e=>{{let t=k(()=>FY(`global model access`,XY.hasGlobalModelOverride())),n=k(()=>PY(XY.hasGlobalModelOverride()));dK(e,{get label(){return L(t)},get class(){return`table-icon-btn ${L(n)??``}`},onclick:()=>XY.openGlobalModelOverrideEdit(),children:(e,t)=>{q(e,{get icon(){return GE},class:`table-icon-svg`})},$$slots:{default:!0}})}};H(s,e=>{XY.virtualModelsAvailable&&e(c)}),E(n),B(e,n),O()}function SX(e){return String(e&&(e.primary_model||e.source)||``).trim()}function CX(e){return Array.isArray(e&&e.fallback_models)?e.fallback_models:Array.isArray(e&&e.targets)?e.targets:[]}function wX(e){return Array.isArray(e)?e.map(e=>({...e,source:SX(e),targets:CX(e)})):[]}function TX(e){let t=CX(e);return t.length===0?`-`:t.join(`, `)}function EX(e){return e&&e.enabled===!1?`Off`:e&&e.managed?`Config`:`On`}function DX(e,t){let n=String(t||``).trim();return n&&(Array.isArray(e)?e:[]).find(e=>SX(e)===n)||null}function OX(e,t){if(!t||t.is_alias)return!1;let n=DX(e,XJ(t));return!!(n&&n.enabled!==!1&&CX(n).length>0)}function kX(e,t){return OX(e,t)?`table-action-btn-failover-active`:``}function AX(e,t){let n=`Edit failover for `+(t&&t.display_name?t.display_name:`model`);return OX(e,t)?n+` (active)`:n}function jX(e){let t=[e&&e.target_model];return(Array.isArray(e&&e.targets)?e.targets:[]).forEach(e=>t.push(e&&e.model)),t.map(e=>String(e||``).trim()).filter(Boolean)}function MX(e){let t=Array.isArray(e)?e.map(e=>String(e||``).trim()).filter(Boolean):[];return{target_model:t[0]||``,targets:t.slice(1).map(e=>({model:e}))}}function NX(e){return{primary_model:String(e&&e.source||``).trim(),fallback_models:jX(e),enabled:!(e&&e.enabled===!1)}}function PX(e){return SX(e)}function FX(e){let t={};return(Array.isArray(e)?e:[]).forEach(e=>{let n=PX(e);n&&(t[n]=!0)}),t}function IX(e,t){let n=PX(t);return!!(n&&e&&e[n])}function LX(e,t){return(Array.isArray(e)?e:[]).filter(e=>IX(t,e))}function RX(e,t){let n=Array.isArray(e)?e:[];return n.length>0&&LX(n,t).length===n.length}function zX(e){return[SX(e),CX(e).join(` `)].join(` `).toLowerCase()}function BX(e,t){let n=Array.isArray(e)?e:[],r=String(t||``).trim().toLowerCase();return r?n.filter(e=>zX(e).includes(r)):n}function VX(e){return{primary_model:SX(e),fallback_models:CX(e).map(e=>String(e||``).trim()).filter(Boolean),enabled:!!(e&&e.enabled!==!1)}}function HX(){return{source:``,target_model:``,targets:[],enabled:!0}}var Q=new class{#e=A(!0);get failoverAvailable(){return L(this.#e)}set failoverAvailable(e){j(this.#e,e,!0)}#t=A(M([]));get failoverRules(){return L(this.#t)}set failoverRules(e){j(this.#t,e,!0)}#n=A(!1);get failoverLoading(){return L(this.#n)}set failoverLoading(e){j(this.#n,e,!0)}#r=A(!1);get failoverSaving(){return L(this.#r)}set failoverSaving(e){j(this.#r,e,!0)}#i=A(!1);get failoverGenerating(){return L(this.#i)}set failoverGenerating(e){j(this.#i,e,!0)}#a=A(``);get failoverError(){return L(this.#a)}set failoverError(e){j(this.#a,e,!0)}#o=A(M([]));get failoverGeneratedRules(){return L(this.#o)}set failoverGeneratedRules(e){j(this.#o,e,!0)}#s=A(!1);get failoverDraftsOpen(){return L(this.#s)}set failoverDraftsOpen(e){j(this.#s,e,!0)}#c=A(M({}));get failoverDraftSelections(){return L(this.#c)}set failoverDraftSelections(e){j(this.#c,e,!0)}#l=A(``);get failoverDraftFilter(){return L(this.#l)}set failoverDraftFilter(e){j(this.#l,e,!0)}#u=A(!1);get failoverDraftSaving(){return L(this.#u)}set failoverDraftSaving(e){j(this.#u,e,!0)}#d=A(!1);get failoverFormOpen(){return L(this.#d)}set failoverFormOpen(e){j(this.#d,e,!0)}#f=A(`create`);get failoverFormMode(){return L(this.#f)}set failoverFormMode(e){j(this.#f,e,!0)}#p=A(!1);get failoverFormManaged(){return L(this.#p)}set failoverFormManaged(e){j(this.#p,e,!0)}#m=A(M(HX()));get failoverForm(){return L(this.#m)}set failoverForm(e){j(this.#m,e,!0)}failoverEnabled(){return lO.booleanFlag(`FAILOVER_ENABLED`,!0)}async fetchFailoverRules(){if(!this.failoverEnabled()){this.failoverAvailable=!1,this.failoverRules=[],this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!1,this.failoverError=``,this.failoverLoading=!1;return}this.failoverLoading=!0,this.failoverError=``;try{let e=await iO(`/admin/failover`,{label:`failover mappings`});if(e.status===503){this.failoverAvailable=!1,this.failoverRules=[];return}if(e.stale)return;if(this.failoverAvailable=!0,!e.ok){this.failoverRules=[];return}this.failoverRules=wX(e.data)}catch(e){console.error(`Failed to fetch failover mappings:`,e),this.failoverRules=[],this.failoverError=`Unable to load failover mappings.`}finally{this.failoverLoading=!1}}resetFailoverForm(){this.failoverFormMode=`create`,this.failoverFormManaged=!1,this.failoverForm=HX()}openFailoverCreate(){this.resetFailoverForm(),this.failoverFormOpen=!0,this.focusFailoverEditor()}openFailoverEdit(e){if(!e)return;this.resetFailoverForm(),this.failoverFormMode=`edit`,this.failoverFormOpen=!0,this.failoverFormManaged=!!e.managed;let t=this.failoverPrimaryModel(e),n=this.failoverTargets(e);this.failoverForm={source:t,target_model:n[0]||``,targets:n.slice(1).map(e=>({model:e})),enabled:e.enabled!==!1},this.focusFailoverEditor()}openFailoverForModel(e){if(!e||e.is_alias)return;let t=this.qualifiedModelName(e),n=this.failoverRules.find(e=>this.failoverPrimaryModel(e)===t);if(n){this.openFailoverEdit(n);return}this.resetFailoverForm(),this.failoverFormMode=`create`,this.failoverFormOpen=!0,this.failoverForm.source=t,this.focusFailoverEditor()}closeFailoverForm(){this.failoverFormOpen=!1}closeFailoverDraftsModal(){this.failoverDraftSaving||(this.failoverDraftsOpen=!1)}failoverFormTargets(){return jX(this.failoverForm)}setFailoverFormTargets(e){let t=MX(e);this.failoverForm.target_model=t.target_model,this.failoverForm.targets=t.targets}addFailoverTarget(){Array.isArray(this.failoverForm.targets)||(this.failoverForm.targets=[]),this.failoverForm.targets.push({model:``}),this.focusFailoverEditor()}removeFailoverTarget(e){if(!Array.isArray(this.failoverForm.targets)){this.failoverForm.targets=[];return}this.failoverForm.targets.splice(e,1)}removePrimaryFailoverTarget(){let e=Array.isArray(this.failoverForm.targets)?this.failoverForm.targets:[];if(e.length>0){let t=e.shift();this.failoverForm.target_model=t&&t.model?t.model:``,this.failoverForm.targets=e;return}this.failoverForm.target_model=``}failoverRulePayload(){return NX(this.failoverForm)}async submitFailoverForm(){if(this.failoverSaving||this.failoverGenerating||this.failoverFormManaged)return;let e=this.failoverRulePayload();if(!e.primary_model){this.failoverError=`Primary model is required.`;return}if(e.enabled&&e.fallback_models.length===0){this.failoverError=`Add at least one failover target.`;return}this.failoverSaving=!0,this.failoverError=``;try{let t=await aO(`/admin/failover`,`PUT`,e,{label:`failover mapping`});if(t.stale)return;if(!t.ok){this.failoverError=`Failed to save failover mapping.`;return}UO.success(`Failover mapping saved.`),this.closeFailoverForm(),this.fetchFailoverRules()}catch(e){console.error(`Failed to save failover mapping:`,e),this.failoverError=`Failed to save failover mapping.`}finally{this.failoverSaving=!1}}async deleteFailoverRule(e){let t=String(e&&this.failoverPrimaryModel(e)||this.failoverForm.source||``).trim();if(!(!t||this.failoverSaving||this.failoverGenerating)&&confirm(`Remove failover mapping for "`+t+`"?`)){this.failoverSaving=!0,this.failoverError=``;try{let e=await aO(`/admin/failover`,`DELETE`,{primary_model:t},{label:`failover mapping`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to remove failover mapping.`;return}UO.success(`Failover mapping removed.`),this.closeFailoverForm(),this.fetchFailoverRules()}catch(e){console.error(`Failed to remove failover mapping:`,e),this.failoverError=`Failed to remove failover mapping.`}finally{this.failoverSaving=!1}}}async generateFailoverForForm(){if(this.failoverGenerating||this.failoverSaving||this.failoverFormManaged)return;let e=String(this.failoverForm.source||``).trim();if(!e){this.failoverError=`Primary model is required.`;return}this.failoverGenerating=!0,this.failoverError=``;try{let t=await aO(`/admin/failover/generate`,`POST`,{primary_model:e},{label:`failover generation`});if(t.stale)return;if(!t.ok){this.failoverError=`Failed to generate failover mapping.`;return}let n=wX(t.data),r=n.find(t=>this.failoverPrimaryModel(t)===e)||n[0]||null,i=this.failoverTargets(r);if(i.length===0){this.failoverError=`No failover suggestions were generated for this model.`;return}this.setFailoverFormTargets(i),UO.success(`Generated `+i.length+` fallback model`+(i.length===1?`.`:`s.`)),this.focusFailoverEditor()}catch(e){console.error(`Failed to generate failover mapping:`,e),this.failoverError=`Failed to generate failover mapping.`}finally{this.failoverGenerating=!1}}openFailoverResetDialog(){OO.open({title:`Remove failover models`,titleId:`failoverResetDialogTitle`,inputId:`failover-reset-confirmation`,message:`Remove every dashboard-managed failover mapping. Configuration-managed mappings remain active.`,requiredText:`remove`,confirmLabel:`Remove Failover`,icon:uD,dialogClass:`budget-reset-dialog`,onConfirm:async()=>{await this.resetFailoverRules(),this.failoverError&&(OO.error=this.failoverError)}})}async resetFailoverRules(){if(!this.failoverSaving){this.failoverSaving=!0,this.failoverError=``;try{let e=await aO(`/admin/failover/reset`,`POST`,void 0,{label:`failover removal`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to remove failover mappings.`;return}this.failoverRules=wX(e.data),this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!1,UO.success(`Dashboard-managed failover mappings removed.`),OO.close()}catch(e){console.error(`Failed to remove failover mappings:`,e),this.failoverError=`Failed to remove failover mappings.`}finally{this.failoverSaving=!1}}}async generateFailoverRules(){if(!(this.failoverGenerating||this.failoverDraftSaving)){this.failoverGenerating=!0,this.failoverError=``,this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!0;try{let e=await aO(`/admin/failover/generate`,`POST`,void 0,{label:`failover generation`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to generate failover mappings.`;return}this.failoverGeneratedRules=wX(e.data),this.selectAllFailoverDrafts(this.failoverGeneratedRules)}catch(e){console.error(`Failed to generate failover mappings:`,e),this.failoverError=`Failed to generate failover mappings.`}finally{this.failoverGenerating=!1}}}failoverDraftKey(e){return PX(e)}selectAllFailoverDrafts(e){this.failoverDraftSelections=FX(e)}failoverDraftSelected(e){return IX(this.failoverDraftSelections,e)}setFailoverDraftSelected(e,t){let n=this.failoverDraftKey(e);n&&(this.failoverDraftSelections={...this.failoverDraftSelections,[n]:!!t})}selectedFailoverDrafts(){return LX(this.failoverGeneratedRules,this.failoverDraftSelections)}selectedFailoverDraftCount(){return this.selectedFailoverDrafts().length}failoverDraftCountLabel(){return this.selectedFailoverDraftCount()+` / `+this.failoverGeneratedRules.length+` selected`}allFailoverDraftsSelected(){return RX(this.failoverGeneratedRules,this.failoverDraftSelections)}toggleAllFailoverDrafts(){if(!(this.failoverDraftSaving||this.failoverGenerating||this.failoverGeneratedRules.length===0)){if(this.allFailoverDraftsSelected()){this.failoverDraftSelections={};return}this.selectAllFailoverDrafts(this.failoverGeneratedRules)}}failoverDraftSearchText(e){return zX(e)}filteredFailoverDrafts(){return BX(this.failoverGeneratedRules,this.failoverDraftFilter)}failoverDraftPayload(e){return VX(e)}async saveSelectedFailoverDrafts(){if(this.failoverDraftSaving||this.failoverGenerating)return;let e=this.selectedFailoverDrafts();if(e.length===0){this.failoverError=`Select at least one failover draft.`;return}this.failoverDraftSaving=!0,this.failoverError=``;try{for(let t of e){let e=this.failoverDraftPayload(t);if(!e.primary_model||e.fallback_models.length===0){this.failoverError=`Generated failover draft is missing model data.`;return}let n=await aO(`/admin/failover`,`PUT`,e,{label:`failover mapping`});if(n.stale)return;if(!n.ok){this.failoverError=`Failed to save failover mapping.`;return}}UO.success(`Saved `+e.length+` failover mapping`+(e.length===1?`.`:`s.`)),this.failoverDraftsOpen=!1,this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.fetchFailoverRules()}catch(e){console.error(`Failed to save generated failover mappings:`,e),this.failoverError=`Failed to save failover mappings.`}finally{this.failoverDraftSaving=!1}}focusFailoverEditor(){setTimeout(()=>{let e=document.querySelector(`[data-failover-editor]`),t=e&&e.querySelector?e.querySelector(`[data-modal-autofocus], input:not([disabled]), textarea:not([disabled]), button:not([disabled])`):null;t&&typeof t.focus==`function`&&t.focus({preventScroll:!0})},0)}failoverTargetLabel(e){return TX(e)}failoverPrimaryModel(e){return SX(e)}failoverTargets(e){return CX(e)}findFailoverMapping(e){return DX(this.failoverRules,e)}hasActiveFailoverMapping(e){return OX(this.failoverRules,e)}failoverButtonClass(e){return kX(this.failoverRules,e)}failoverButtonLabel(e){return AX(this.failoverRules,e)}normalizeFailoverRules(e){return wX(e)}failoverRuleStatus(e){return EX(e)}qualifiedModelName(e){return XJ(e)}},UX=z(``),WX=z(``),GX=z(`Config`),KX=z(`
                Targets
                `),qX=z(``),JX=z(`
                Redirects to
                `),YX=z(`
                Slowdown
                `),XX=z(` `),ZX=z(`
                `),QX=z(`
                `),$X=z(`
                `);function eZ(e,t){D(t,!0);let n=k(()=>_X.modelRowPricing(t.row)),r=k(()=>t.row.is_alias?t.row.alias&&t.row.alias.slowdown:t.row.masking_alias&&t.row.masking_alias.slowdown!=null?t.row.masking_alias.slowdown:t.row.access&&t.row.access.override&&t.row.access.override.slowdown),i=k(()=>Number(L(r)==null?0:L(r)));var a=$X(),o=N(a),s=N(o),c=N(s),l=N(c),u=N(l,!0);E(l);var d=F(l,2),f=e=>{B(e,UX())};H(d,e=>{t.row.is_alias&&e(f)});var p=F(d,2),m=e=>{B(e,WX())};H(p,e=>{!t.row.is_alias&&t.row.masking_alias&&e(m)});var h=F(p,2),g=e=>{B(e,GX())},_=k(()=>MY(t.row));H(h,e=>{L(_)&&e(g)}),E(c);var v=F(c,2),y=e=>{var n=KX(),r=F(N(n)),i=N(r,!0);E(r),E(n),I(()=>V(i,t.row.secondary_name)),B(e,n)};H(v,e=>{t.row.is_alias&&e(y)});var b=F(v,2),x=e=>{var n=JX(),r=F(N(n)),i=N(r,!0);E(r);var a=F(r,2),o=e=>{var n=qX();I(e=>{G(n,`aria-label`,XY.rowDeletingKey===t.row.key?`Removing redirect for `+t.row.display_name:`Remove redirect for `+t.row.display_name),G(n,`title`,XY.rowDeletingKey===t.row.key?`Removing redirect for `+t.row.display_name:`Remove redirect for `+t.row.display_name),n.disabled=e},[()=>!!XY.rowDeletingKey]),R(`click`,n,()=>XY.removeRedirectRow(t.row)),B(e,n)},s=k(()=>XY.virtualModelsAvailable&&AY(t.row));H(a,e=>{L(s)&&e(o)}),E(n),I(e=>V(i,e),[()=>lY(t.row.masking_alias)]),B(e,n)};H(b,e=>{!t.row.is_alias&&t.row.masking_alias&&e(x)});var S=F(b,2),C=e=>{var t=YX(),n=F(N(t)),r=N(n);E(n),E(t),I(()=>V(r,`+${L(i)??``}× inference time`)),B(e,t)};H(S,e=>{L(i)>0&&e(C)}),E(s),E(o);var w=F(o);U(w,17,()=>t.columns,ai,(e,r)=>{var i=XX(),a=N(i,!0);E(i),I(e=>{W(i,1,Pi(L(r).class),`svelte-1iynym`),V(a,e)},[()=>L(r).value(t.row,L(n))]),B(e,i)});var T=F(w),ee=N(T),te=e=>{var n=ZX(),r=N(n);yX(r,{get row(){return t.row}});var i=F(r,2),a=e=>{{let n=k(()=>XY.rowDeletingKey===t.row.key?`Removing alias `+t.row.alias.name:`Remove alias `+t.row.alias.name),r=k(()=>!!XY.rowDeletingKey);dK(e,{get label(){return L(n)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>XY.removeAliasRow(t.row),get disabled(){return L(r)},children:(e,t)=>{q(e,{get icon(){return uD},class:`table-icon-svg`})},$$slots:{default:!0}})}},o=k(()=>XY.virtualModelsAvailable&&kY(t.row));H(i,e=>{L(o)&&e(a)});var s=F(i,2),c=e=>{{let n=k(()=>`Edit alias `+t.row.alias.name);dK(e,{get label(){return L(n)},class:`table-icon-btn table-action-btn-active`,onclick:()=>XY.openVirtualModelEditAlias(t.row.alias),children:(e,t)=>{q(e,{get icon(){return GE},class:`table-icon-svg`})},$$slots:{default:!0}})}};H(s,e=>{XY.virtualModelsAvailable&&e(c)}),E(n),B(e,n)},ne=e=>{var n=QX(),r=N(n);yX(r,{get row(){return t.row}});var i=F(r,2),a=e=>{{let n=k(()=>_X.modelPricingButtonLabel(`model pricing for `+t.row.display_name,_X.hasModelPricingOverride(t.row))),r=k(()=>_X.modelPricingButtonClass(_X.hasModelPricingOverride(t.row)));dK(e,{get label(){return L(n)},get class(){return`table-icon-btn ${L(r)??``}`},onclick:()=>_X.openModelPricingOverrideEdit(t.row),children:(e,t)=>{q(e,{get icon(){return DE},class:`table-icon-svg`})},$$slots:{default:!0}})}};H(i,e=>{_X.modelPricingOverridesAvailable&&e(a)});var o=F(i,2),s=e=>{{let n=k(()=>Q.failoverButtonLabel(t.row)),r=k(()=>Q.failoverButtonClass(t.row));dK(e,{get label(){return L(n)},get class(){return`table-icon-btn ${L(r)??``}`},onclick:()=>Q.openFailoverForModel(t.row),children:(e,t)=>{q(e,{get icon(){return oD},class:`table-icon-svg`})},$$slots:{default:!0}})}},c=k(()=>Q.failoverAvailable&&Q.failoverEnabled());H(o,e=>{L(c)&&e(s)});var l=F(o,2),u=e=>{{let n=k(()=>Z.rateLimitGaugeTitle(t.row.display_name,Z.rateLimitGaugeClassForModel(t.row))),r=k(()=>Z.rateLimitGaugeClassForModel(t.row));dK(e,{get label(){return L(n)},get class(){return`table-icon-btn ${L(r)??``}`},onclick:()=>Z.openRateLimitInspectorForModel(t.row),children:(e,t)=>{q(e,{get icon(){return NE},class:`table-icon-svg`})},$$slots:{default:!0}})}},d=k(()=>Z.rateLimitsEnabled()&&Z.rateLimitInspectorModelID(t.row));H(l,e=>{L(d)&&e(u)});var f=F(l,2),p=e=>{{let n=k(()=>`Edit redirect for `+t.row.display_name);dK(e,{get label(){return L(n)},class:`table-icon-btn table-action-btn-active`,onclick:()=>XY.openVirtualModelEditAlias(t.row.masking_alias),children:(e,t)=>{q(e,{get icon(){return GE},class:`table-icon-svg`})},$$slots:{default:!0}})}};H(f,e=>{XY.virtualModelsAvailable&&t.row.masking_alias&&t.row.masking_alias.name&&e(p)});var m=F(f,2),h=e=>{{let n=k(()=>FY(`model settings for `+t.row.display_name,NY(t.row.access))),r=k(()=>PY(NY(t.row.access)));dK(e,{get label(){return L(n)},get class(){return`table-icon-btn ${L(r)??``}`},onclick:()=>XY.openVirtualModelEditModel(t.row),children:(e,t)=>{q(e,{get icon(){return GE},class:`table-icon-svg`})},$$slots:{default:!0}})}};H(m,e=>{XY.virtualModelsAvailable&&!t.row.masking_alias&&e(h)}),E(n),B(e,n)};H(ee,e=>{t.row.is_alias?e(te):e(ne,-1)}),E(T),E(a),I((e,n)=>{G(a,`id`,e),W(a,1,n,`svelte-1iynym`),V(u,t.row.display_name)},[()=>jY(t.row)||void 0,()=>Pi(OY(t.row))]),B(e,a),O()}Vr([`click`]);var tZ={headerLines:[`Modes`],value:e=>(e.model?.metadata?.modes??[]).join(`, `)||`-`};function nZ(e,t){return{headerLines:e,class:`col-price`,value:t}}var rZ=nZ([`Input / Output ($/MTok)`],(e,t)=>$O(t?.input_per_mtok)+` / `+$O(t?.output_per_mtok)),iZ={all:[rZ],text_generation:[tZ,rZ,nZ([`Cached $/MTok`],(e,t)=>$O(t?.cached_input_per_mtok))],embedding:[nZ([`Input`,`$/MTok`],(e,t)=>$O(t?.input_per_mtok))],image:[nZ([`$/Image`],(e,t)=>ek(t?.per_image))],audio:[nZ([`$/Second`],(e,t)=>ek(t?.per_second_input)),nZ([`$/Character`],(e,t)=>ek(t?.per_character_input))],video:[nZ([`$/Second (In)`],(e,t)=>ek(t?.per_second_input)),nZ([`$/Second (Out)`],(e,t)=>ek(t?.per_second_output))],utility:[nZ([`$/Page`],(e,t)=>ek(t?.per_page)),nZ([`$/Request`],(e,t)=>ek(t?.per_request))]};function aZ(e){return iZ[e]||iZ.all}function oZ(e){return aZ(e).length+2}var sZ=z(`
                `),cZ=z(` `,1),lZ=z(``),uZ=z(` `),dZ=z(` `),fZ=z(`
                `),pZ=z(`
                `),mZ=z(`
                Model
                `);function hZ(e,t){D(t,!0);let n=k(()=>Ak.activeCategory||`all`),r=k(()=>aZ(L(n))),i=k(()=>oZ(L(n)));var a=mZ(),o=N(a),s=N(o),c=N(s),l=F(N(c));U(l,17,()=>L(r),ai,(e,t)=>{var n=lZ();U(n,21,()=>L(t).headerLines,ai,(e,t,n)=>{var r=cZ(),i=P(r),a=e=>{B(e,sZ())};H(i,e=>{n>0&&e(a)});var o=F(i,1,!0);I(()=>V(o,L(t))),B(e,r)}),E(n),I(()=>W(n,1,Pi(L(t).class),`svelte-1911hy6`)),B(e,n)});var u=F(l);xX(N(u),{}),E(u),E(c),E(s),U(F(s),17,()=>XY.filteredDisplayModelGroups,e=>e.key,(e,t)=>{var n=pZ(),a=N(n),o=N(a),s=N(o),c=N(s),l=N(c),u=N(l),d=N(u,!0);E(u);var f=F(u,2),p=e=>{var n=uZ(),r=N(n,!0);E(n),I(()=>V(r,`(`+L(t).type_label+`)`)),B(e,n)};H(f,e=>{L(t).type_label&&e(p)});var m=F(f,2),h=e=>{var n=dZ(),r=N(n,!0);E(n),I(()=>V(r,L(t).item_count_label)),B(e,n)};H(m,e=>{L(t).item_count_label&&e(h)}),E(l);var g=F(l,2),_=e=>{var n=fZ(),r=N(n,!0);E(n),I(()=>V(r,L(t).access_summary)),B(e,n)};H(g,e=>{L(t).access_summary&&e(_)}),E(c);var v=F(c,2),y=N(v),b=e=>{yX(e,{get row(){return L(t)}})};H(y,e=>{L(t).access.selector&&e(b)});var x=F(y,2),S=e=>{{let n=k(()=>_X.modelPricingButtonLabel(`provider pricing for `+L(t).display_name,_X.hasProviderPricingOverride(L(t)))),r=k(()=>_X.modelPricingButtonClass(_X.hasProviderPricingOverride(L(t))));dK(e,{get label(){return L(n)},get class(){return`table-icon-btn ${L(r)??``}`},onclick:()=>_X.openProviderPricingOverrideEdit(L(t)),children:(e,t)=>{q(e,{get icon(){return DE},class:`table-icon-svg`})},$$slots:{default:!0}})}};H(x,e=>{_X.modelPricingOverridesAvailable&&L(t).provider_name&&e(S)});var C=F(x,2),w=e=>{{let n=k(()=>Z.rateLimitGaugeTitle(`provider `+L(t).display_name,Z.rateLimitGaugeClassForProvider(L(t)))),r=k(()=>Z.rateLimitGaugeClassForProvider(L(t)));dK(e,{get label(){return L(n)},get class(){return`table-icon-btn ${L(r)??``}`},onclick:()=>Z.openRateLimitInspectorForProvider(L(t)),children:(e,t)=>{q(e,{get icon(){return NE},class:`table-icon-svg`})},$$slots:{default:!0}})}},T=k(()=>Z.rateLimitsEnabled()&&L(t).provider_name);H(C,e=>{L(T)&&e(w)});var ee=F(C,2),te=e=>{{let n=k(()=>FY(`provider access for `+L(t).display_name,NY(L(t).access))),r=k(()=>PY(NY(L(t).access)));dK(e,{get label(){return L(n)},get class(){return`table-icon-btn ${L(r)??``}`},onclick:()=>XY.openProviderOverrideEdit(L(t)),children:(e,t)=>{q(e,{get icon(){return GE},class:`table-icon-svg`})},$$slots:{default:!0}})}};H(ee,e=>{XY.virtualModelsAvailable&&L(t).access.selector&&e(te)}),E(v),E(s),E(o),E(a),U(F(a),17,()=>L(t).rows,e=>e.key,(e,t)=>{eZ(e,{get row(){return L(t)},get columns(){return L(r)}})}),E(n),I(()=>{G(o,`colspan`,L(i)),V(d,L(t).display_name)}),B(e,n)}),E(o),E(a),B(e,a),O()}var gZ=z(``);function _Z(e,t){let n=K(t,`enabled`,3,!1),r=K(t,`label`,3,``),i=K(t,`disabled`,3,!1),a=K(t,`restricted`,3,!1);var o=gZ();let s;var c=F(N(o),2),l=N(c,!0);E(c),E(o),I(()=>{s=W(o,1,`alias-toggle`,null,s,{enabled:n(),restricted:a()}),o.disabled=i(),G(o,`aria-label`,(n()?`Disable `:`Enable `)+r()),V(l,t.text??(n()?`Enabled`:`Disabled`))}),R(`click`,o,function(...e){t.onclick?.apply(this,e)}),B(e,o)}Vr([`click`]);var vZ=z(``),yZ=z(`
                `);function bZ(e,t){D(t,!0);let n=K(t,`model`,15,``),r=K(t,`weight`,15),i=K(t,`id`,3,void 0),a=K(t,`placeholder`,3,`openai/gpt-4o`),o=K(t,`showRemove`,3,!0);var s=yZ(),c=N(s);ta(c);var l=F(c,2),u=e=>{var t=vZ();ta(t),I(()=>t.disabled=XY.vmFormManaged),ua(t,r),B(e,t)},d=k(()=>XY.vmFormShowWeights());H(l,e=>{L(d)&&e(u)});var f=F(l,2),p=e=>{dK(e,{label:`Remove target`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,get onclick(){return t.onremove},get disabled(){return XY.vmFormManaged},children:(e,t)=>{q(e,{get icon(){return uD},class:`table-icon-svg`})},$$slots:{default:!0}})};H(f,e=>{o()&&e(p)}),E(s),I(()=>{G(c,`id`,i()),G(c,`placeholder`,a()),c.disabled=XY.vmFormManaged}),ua(c,n),B(e,s),O()}var xZ=z(`

                `),SZ=z(`adaptive lets the registered routing extension pick the target per + request.`,1),CZ=z(`Add one target to make this a redirect/alias, or two or more to load + balance across them, then pick a strategy: round_robin rotates across targets + (weight biases the share) and cost always routes to the cheapest available + target. Leave Targets empty to make it only an access policy on the Source selector. The selector uses / for all providers and + models, for one provider, or for one model. user_paths is + matched against the effective request user_path: the managed API key user_path when present, otherwise the configured user path request header.`,1),wZ=z(``),TZ=z(`

                This virtual model is defined in configuration (config.yaml / VIRTUAL_MODELS) and is read-only here. Edit your configuration to change it.

                `),EZ=z(``),DZ=z(``),OZ=z(``),kZ=z(`
                `,1),AZ=z(``),jZ=z(`Use / to allow every user path. Use a team path to restrict to that + subtree, or an unused path to make the selector unavailable.`,1),MZ=z(``),NZ=z(` Adds a fraction of measured inference time: 0.5 adds 50%. Streaming chunks are buffered + and released on the slowed timeline. Use 0 to override inherited slowdown, or leave empty + to inherit it; active values are 0.1–10.`,1),PZ=z(` `),FZ=z(`
                Targets
                `,1);function IZ(e,t){D(t,!0);let n=XY;kn(()=>{n.vmFormOpen&&lO.ensureLoaded()});{let t=e=>{HU(e,{copyId:`virtual-model-help-copy`,label:`virtual model help`,get open(){return n.vmFormHelpOpen},set open(e){n.vmFormHelpOpen=e},title:e=>{var t=xZ(),r=N(t,!0);E(t),I(()=>V(r,n.vmFormDisplayName||n.vmForm.source||`Virtual model`)),B(e,t)},help:e=>{He();var t=CZ(),n=F(P(t),7),r=e=>{var t=SZ();He(),B(e,t)},i=k(()=>lO.virtualModelStrategies().includes(`adaptive`));H(n,e=>{L(i)&&e(r)});var a=F(n,8);a.textContent=`{provider_name}/`;var o=F(a,2);o.textContent=`{provider_name}/{model}`,He(7),B(e,t)},$$slots:{title:!0,help:!0}})},r=e=>{var t=Zr(),r=P(t),i=e=>{var t=wZ();I(()=>t.disabled=n.vmDeleting||n.vmSubmitting),R(`click`,t,()=>n.deleteVirtualModel()),B(e,t)};H(r,e=>{n.vmFormHasExisting&&!n.vmFormManaged&&e(i)}),B(e,t)},i=k(()=>n.vmDeleting||n.vmFormManaged),a=k(()=>n.vmFormMode===`edit`?`Save`:`Create`),o=k(()=>n.vmFormMode===`edit`?ZE:qE);hq(e,{get open(){return n.vmFormOpen},ariaLabel:`Virtual model editor`,get error(){return n.vmFormError},get submitting(){return n.vmSubmitting},get submitDisabled(){return L(i)},get submitLabel(){return L(a)},get submitIcon(){return L(o)},onclose:()=>n.closeVirtualModelForm(),onsubmit:()=>n.submitVirtualModelForm(),header:t,extraActions:r,children:(e,t)=>{var r=FZ(),i=P(r),a=e=>{B(e,TZ())};H(i,e=>{n.vmFormManaged&&e(a)});var o=F(i,2);_q(o,{id:`virtual-model-source`,label:`Source`,children:(e,t)=>{var r=EZ();ta(r),I(()=>r.disabled=n.vmFormSourceLocked||n.vmFormManaged),ua(r,()=>n.vmForm.source,e=>n.vmForm.source=e),B(e,r)},$$slots:{default:!0}});var s=F(o,2);U(s,21,()=>Ak.models,e=>XJ(e),(e,t)=>{var n=DZ(),r=N(n,!0);E(n);var i={};I((e,t)=>{V(r,e),i!==(i=t)&&(n.value=(n.__value=t)??``)},[()=>XJ(L(t)),()=>XJ(L(t))]),B(e,n)}),E(s);var c=F(s,2),l=F(N(c),2);{let e=k(()=>n.vmFormHasPrimaryTarget());bZ(l,{id:`virtual-model-target`,get showRemove(){return L(e)},onremove:()=>n.removePrimaryTarget(),get model(){return n.vmForm.target_model},set model(e){n.vmForm.target_model=e},get weight(){return n.vmForm.target_weight},set weight(e){n.vmForm.target_weight=e}})}var u=F(l,2);U(u,17,()=>n.vmForm.targets,ai,(e,t,r)=>{bZ(e,{placeholder:`groq/llama`,onremove:()=>n.removeVmTarget(r),get model(){return L(t).model},set model(e){L(t).model=e},get weight(){return L(t).weight},set weight(e){L(t).weight=e}})});var d=F(u,2),f=N(d);q(N(f),{get icon(){return qE},class:`form-action-icon`}),He(2),E(f),E(d),E(c);var p=F(c,2),m=e=>{var t=kZ(),r=P(t);_q(r,{id:`virtual-model-strategy`,label:`Load-balancing strategy`,children:(e,t)=>{var r=OZ();U(r,21,()=>n.vmStrategyOptions(),e=>e.value,(e,t)=>{var n=DZ(),r=N(n,!0);E(n);var i={};I(()=>{V(r,L(t).label),i!==(i=L(t).value)&&(n.value=(n.__value=L(t).value)??``)}),B(e,n)}),E(r),I(()=>r.disabled=n.vmFormManaged),Wi(r,()=>n.vmForm.strategy,e=>n.vmForm.strategy=e),B(e,r)},$$slots:{default:!0}});var i=F(r,2),a=N(i),o=N(a);ta(o),He(2),E(a),E(i),I(()=>o.disabled=n.vmFormManaged),da(o,()=>n.vmForm.session_affinity,e=>n.vmForm.session_affinity=e),B(e,t)},h=k(()=>n.vmFormShowStrategy());H(p,e=>{L(h)&&e(m)});var g=F(p,2),_=N(g);HU(_,{copyId:`virtual-model-user-paths-help`,label:`user paths help`,get open(){return n.vmFormUserPathsHelpOpen},set open(e){n.vmFormUserPathsHelpOpen=e},title:e=>{B(e,AZ())},help:e=>{He();var t=jZ();He(2),B(e,t)},$$slots:{title:!0,help:!0}});var v=F(_,2);dt(v),G(v,`placeholder`,`/ +/team/alpha +/non-existing`),E(g);var y=F(g,2);_q(y,{id:`virtual-model-description`,label:`Description`,children:(e,t)=>{var r=MZ();dt(r),I(()=>r.disabled=n.vmFormManaged),ua(r,()=>n.vmForm.description,e=>n.vmForm.description=e),B(e,r)},$$slots:{default:!0}});var b=F(y,2),x=e=>{_q(e,{id:`virtual-model-slowdown`,label:`Slowdown (extra inference time)`,children:(e,t)=>{var r=NZ(),i=P(r);ta(i),He(2),I(()=>i.disabled=n.vmFormManaged),ua(i,()=>n.vmForm.slowdown,e=>n.vmForm.slowdown=e),B(e,r)},$$slots:{default:!0}})},S=k(()=>n.vmFormSupportsSlowdown());H(b,e=>{L(S)&&e(x)});var C=F(b,2),w=N(C),T=e=>{var t=PZ(),r=N(t,!0);E(t),I(()=>V(r,`Default enabled: `+(n.vmFormDefaultEnabled?`yes`:`no`)+` · Effective now: `+(n.vmFormEffectiveEnabled?`yes`:`no`))),B(e,t)};H(w,e=>{n.vmFormMode===`edit`&&e(T)});var ee=F(w,2),te=N(ee);{let e=k(()=>n.vmFormToggleRestricted()),t=k(()=>n.vmFormToggleLabel());_Z(te,{get enabled(){return n.vmForm.enabled},get restricted(){return L(e)},label:`virtual model`,get disabled(){return n.vmFormManaged},get text(){return L(t)},onclick:()=>{n.vmFormManaged||(n.vmForm.enabled=!n.vmForm.enabled)}})}E(ee),E(C),I(()=>{f.disabled=n.vmFormManaged,v.disabled=n.vmFormManaged}),R(`click`,f,()=>n.addVmTarget()),ua(v,()=>n.vmForm.user_paths,e=>n.vmForm.user_paths=e),B(e,r)},$$slots:{header:!0,extraActions:!0,default:!0}})}O()}Vr([`click`]);var LZ=z(`

                Pricing override

                `,1),RZ=z(``),zZ=z(``),BZ=z(``),VZ=z(``),HZ=z(`
                `),UZ=z(`
                Tiered pricing exists for this override and will be preserved. Tier editing can be added + without a database migration.
                `),WZ=z(`
                No pricing fields set.
                `),GZ=z(`
                `),KZ=z(`

                Currency is USD. Saved fields override model registry and config.yaml pricing for this + selector; unset fields continue to inherit.

                Price Type USD Source
                `,1);function qZ(e,t){D(t,!0);let n=_X;hq(e,{get open(){return n.modelPricingOverrideFormOpen},ariaLabel:`Model pricing editor`,dialogClass:`model-pricing-editor`,get error(){return n.modelPricingOverrideError},get submitting(){return n.modelPricingOverrideSubmitting},submitLabel:`Save Pricing`,onclose:()=>n.closeModelPricingOverrideForm(),onsubmit:()=>n.submitModelPricingOverrideForm(),header:e=>{var t=LZ(),r=F(P(t),2),i=N(r,!0);E(r),I(()=>V(i,n.modelPricingOverrideFormDisplayName||n.modelPricingOverrideForm.selector||`Pricing`)),B(e,t)},extraActions:e=>{var t=Zr(),r=P(t),i=e=>{var t=RZ();I(()=>t.disabled=n.modelPricingOverrideSubmitting),R(`click`,t,()=>n.deleteModelPricingOverride()),B(e,t)};H(r,e=>{n.modelPricingOverrideFormHasExistingOverride&&e(i)}),B(e,t)},children:(e,t)=>{var r=KZ(),i=P(r),a=N(i);_q(a,{id:`model-pricing-override-selector`,label:`Selector`,children:(e,t)=>{var r=zZ();ta(r),ua(r,()=>n.modelPricingOverrideForm.selector,e=>n.modelPricingOverrideForm.selector=e),B(e,r)},$$slots:{default:!0}});var o=F(a,2),s=e=>{_q(e,{id:`model-pricing-override-scope`,label:`Scope`,children:(e,t)=>{var r=VZ();U(r,21,()=>n.modelPricingOverrideFormScopeOptions,e=>e.value,(e,t)=>{var n=BZ(),r=N(n,!0);E(n);var i={};I(()=>{V(r,L(t).label),i!==(i=L(t).value)&&(n.value=(n.__value=L(t).value)??``)}),B(e,n)}),E(r),R(`change`,r,()=>n.setModelPricingOverrideScope(n.modelPricingOverrideFormScope)),Wi(r,()=>n.modelPricingOverrideFormScope,e=>n.modelPricingOverrideFormScope=e),B(e,r)},$$slots:{default:!0}})};H(o,e=>{n.modelPricingOverrideFormScopeOptions.length>1&&e(s)}),E(i);var c=F(i,4);U(c,21,()=>n.modelPricingOverrideRows,e=>e.id,(e,t,r)=>{var i=HZ(),a=N(i),o=N(a),s=F(o,2);U(s,21,()=>n.availablePricingFieldOptions(L(t)),e=>e.value,(e,t)=>{var n=BZ(),r=N(n,!0);E(n);var i={};I(()=>{V(r,L(t).group+` - `+L(t).label),i!==(i=L(t).value)&&(n.value=(n.__value=L(t).value)??``)}),B(e,n)}),E(s),E(a);var c=F(a,2),l=N(c),u=F(l,2);ta(u),E(c);var d=F(c,2);{let e=k(()=>`Remove `+n.pricingFieldLabel(L(t).field));dK(d,{get label(){return L(e)},class:`table-action-btn-danger table-icon-btn pricing-override-remove-row`,onclick:()=>n.removeModelPricingOverrideRow(L(t)),children:(e,t)=>{q(e,{get icon(){return _D},class:`table-icon-svg`})},$$slots:{default:!0}})}E(i),I(()=>{G(o,`for`,`pricing-type-`+L(t).id),G(s,`id`,`pricing-type-`+L(t).id),G(l,`for`,`pricing-value-`+L(t).id),G(u,`id`,`pricing-value-`+L(t).id)}),Wi(s,()=>L(t).field,e=>L(t).field=e),ua(u,()=>L(t).value,e=>L(t).value=e),B(e,i)}),E(c);var l=F(c,2),u=N(l);q(N(u),{get icon(){return qE},class:`form-action-icon`}),He(2),E(u),E(l);var d=F(l,2),f=e=>{B(e,UZ())};H(d,e=>{n.modelPricingOverrideFormPreservedTiers.length>0&&e(f)});var p=F(d,2),m=F(N(p),2),h=e=>{B(e,WZ())},g=k(()=>n.modelPricingEffectivePreviewRows().length===0);H(m,e=>{L(g)&&e(h)}),U(F(m,2),17,()=>n.modelPricingEffectivePreviewRows(),e=>e.field,(e,t)=>{var n=GZ(),r=N(n),i=N(r,!0);E(r);var a=F(r,2),o=N(a,!0);E(a);var s=F(a,2),c=N(s,!0);E(s),E(n),I(e=>{V(i,L(t).label),V(o,e),V(c,L(t).source)},[()=>L(t).value===null||L(t).value===void 0?`-`:ek(Number(L(t).value))]),B(e,n)}),E(p),R(`click`,u,()=>n.addModelPricingOverrideRow()),B(e,r)},$$slots:{header:!0,extraActions:!0,default:!0}}),O()}Vr([`click`,`change`]);var JZ=z(`

                Failover mapping

                `,1),YZ=z(``),XZ=z(`

                This failover mapping is defined in configuration and is read-only here.

                `),ZZ=z(``),QZ=z(`
                `),$Z=z(`
                `,1),eQ=z(`
                `);function tQ(e,t){D(t,!0);{let t=e=>{var t=JZ(),n=F(P(t),2),r=N(n,!0);E(n),I(()=>V(r,Q.failoverForm.source||`Failover`)),B(e,t)},n=e=>{var t=Zr(),n=P(t),r=e=>{var t=YZ();I(()=>t.disabled=Q.failoverSaving||Q.failoverGenerating),R(`click`,t,()=>Q.deleteFailoverRule()),B(e,t)};H(n,e=>{Q.failoverFormMode===`edit`&&!Q.failoverFormManaged&&e(r)}),B(e,t)},r=k(()=>Q.failoverGenerating||Q.failoverFormManaged);hq(e,{get open(){return Q.failoverFormOpen},ariaLabel:`Failover editor`,get error(){return Q.failoverError},get submitting(){return Q.failoverSaving},get submitDisabled(){return L(r)},submitLabel:`Save`,onclose:()=>Q.closeFailoverForm(),onsubmit:()=>Q.submitFailoverForm(),header:t,extraActions:n,children:(e,t)=>{var n=eQ(),r=N(n),i=e=>{B(e,XZ())};H(r,e=>{Q.failoverFormManaged&&e(i)});var a=F(r,2);U(a,21,()=>Ak.models,ai,(e,t)=>{var n=ZZ(),r=N(n,!0);E(n);var i={};I((e,t)=>{V(r,e),i!==(i=t)&&(n.value=(n.__value=t)??``)},[()=>XJ(L(t)),()=>XJ(L(t))]),B(e,n)}),E(a);var o=F(a,2);_q(o,{id:`failover-target`,label:`Fallback models`,children:(e,t)=>{var n=$Z(),r=P(n),i=N(r),a=N(i);ta(a);var o=F(a,2),s=e=>{dK(e,{label:`Remove fallback model`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Q.removePrimaryFailoverTarget(),get disabled(){return Q.failoverFormManaged},children:(e,t)=>{q(e,{get icon(){return uD},class:`table-icon-svg`})},$$slots:{default:!0}})};H(o,e=>{Q.failoverForm.target_model&&e(s)}),E(i),U(F(i,2),17,()=>Q.failoverForm.targets,ai,(e,t,n)=>{var r=QZ(),i=N(r);ta(i),dK(F(i,2),{label:`Remove fallback model`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Q.removeFailoverTarget(n),get disabled(){return Q.failoverFormManaged},children:(e,t)=>{q(e,{get icon(){return uD},class:`table-icon-svg`})},$$slots:{default:!0}}),E(r),I(()=>i.disabled=Q.failoverFormManaged),ua(i,()=>L(t).model,e=>L(t).model=e),B(e,r)}),E(r);var c=F(r,2),l=N(c);q(N(l),{get icon(){return qE},class:`form-action-icon`}),He(2),E(l);var u=F(l,2),d=N(u);q(d,{get icon(){return hD},class:`form-action-icon`});var f=F(d,2),p=N(f,!0);E(f),E(u),E(c),I(e=>{a.disabled=Q.failoverFormManaged,l.disabled=Q.failoverFormManaged||Q.failoverGenerating||Q.failoverSaving,u.disabled=e,V(p,Q.failoverGenerating?`Generating...`:`Generate automatically`)},[()=>Q.failoverFormManaged||Q.failoverGenerating||Q.failoverSaving||!Q.failoverEnabled()]),ua(a,()=>Q.failoverForm.target_model,e=>Q.failoverForm.target_model=e),R(`click`,l,()=>Q.addFailoverTarget()),R(`click`,u,()=>Q.generateFailoverForForm()),B(e,n)},$$slots:{default:!0}});var s=F(o,2),c=N(s);_Z(N(c),{get enabled(){return Q.failoverForm.enabled},label:`failover mapping`,get disabled(){return Q.failoverFormManaged},onclick:()=>{Q.failoverFormManaged||(Q.failoverForm.enabled=!Q.failoverForm.enabled)}}),E(c),E(s),E(n),B(e,n)},$$slots:{header:!0,extraActions:!0,default:!0}})}O()}Vr([`click`]);var nQ=z(` `),rQ=z(`
                `),iQ=z(``),aQ=z(`
                `),oQ=z(`

                No failover suggestions were generated.

                `),sQ=z(`

                No failover drafts match the filter.

                `),cQ=z(``),lQ=z(``);function uQ(e,t){D(t,!0),SO(e,{get open(){return Q.failoverDraftsOpen},variant:`editor`,onclose:()=>Q.closeFailoverDraftsModal(),children:(e,t)=>{var n=lQ(),r=N(n),i=F(N(r),2),a=N(i),o=e=>{var t=nQ(),n=N(t,!0);E(t),I(e=>V(n,e),[()=>Q.failoverDraftCountLabel()]),B(e,t)};H(a,e=>{Q.failoverGeneratedRules.length>0&&e(o)}),vO(F(a,2),{label:`Close failover drafts`,onclick:()=>Q.closeFailoverDraftsModal(),get disabled(){return Q.failoverDraftSaving}}),E(i),E(r);var s=F(r,2),c=e=>{lK(e,{label:`Generating failover drafts...`,class:`failover-drafts-loading`})};H(s,e=>{Q.failoverGenerating&&e(c)});var l=F(s,2),u=e=>{var t=rQ(),n=N(t);mG(n,{placeholder:`Filter failover drafts...`,label:`Filter failover drafts`,get value(){return Q.failoverDraftFilter},set value(e){Q.failoverDraftFilter=e}});var r=F(n,2),i=N(r);q(i,{get icon(){return xE},class:`form-action-icon`});var a=F(i,2),o=N(a,!0);E(a),E(r),E(t),I(e=>{r.disabled=Q.failoverDraftSaving,V(o,e)},[()=>Q.allFailoverDraftsSelected()?`Deselect all`:`Select all`]),R(`click`,r,()=>Q.toggleAllFailoverDrafts()),B(e,t)};H(l,e=>{!Q.failoverGenerating&&Q.failoverGeneratedRules.length>0&&e(u)});var d=F(l,2),f=e=>{var t=aQ();U(t,21,()=>Q.filteredFailoverDrafts(),e=>`failover-draft:`+Q.failoverPrimaryModel(e),(e,t)=>{var n=iQ(),r=N(n);ta(r);var i=F(r,2),a=N(i),o=N(a,!0);E(a);var s=F(a,2),c=N(s,!0);E(s),E(i),E(n),I((e,t,n,i)=>{ra(r,e),r.disabled=Q.failoverDraftSaving,G(r,`aria-label`,t),V(o,n),V(c,i)},[()=>Q.failoverDraftSelected(L(t)),()=>`Select failover draft for `+Q.failoverPrimaryModel(L(t)),()=>Q.failoverPrimaryModel(L(t)),()=>Q.failoverTargetLabel(L(t))]),R(`change`,r,e=>Q.setFailoverDraftSelected(L(t),e.currentTarget.checked)),B(e,n)}),E(t),B(e,t)},p=k(()=>!Q.failoverGenerating&&Q.filteredFailoverDrafts().length>0);H(d,e=>{L(p)&&e(f)});var m=F(d,2),h=e=>{B(e,oQ())};H(m,e=>{!Q.failoverGenerating&&Q.failoverGeneratedRules.length===0&&!Q.failoverError&&e(h)});var g=F(m,2),_=e=>{B(e,sQ())},v=k(()=>!Q.failoverGenerating&&Q.failoverGeneratedRules.length>0&&Q.filteredFailoverDrafts().length===0);H(g,e=>{L(v)&&e(_)});var y=F(g,2),b=e=>{var t=cQ(),n=N(t,!0);E(t),I(()=>V(n,Q.failoverError)),B(e,t)};H(y,e=>{Q.failoverError&&e(b)});var x=F(y,2),S=N(x),C=F(S,2),w=N(C);q(w,{get icon(){return ZE},class:`form-action-icon`});var T=F(w,2),ee=N(T,!0);E(T),E(C),E(x),E(n),I(e=>{S.disabled=Q.failoverDraftSaving,C.disabled=e,V(ee,Q.failoverDraftSaving?`Saving...`:`Save selected`)},[()=>Q.failoverGenerating||Q.failoverDraftSaving||Q.selectedFailoverDraftCount()===0]),R(`click`,S,()=>Q.closeFailoverDraftsModal()),R(`click`,C,()=>Q.saveSelectedFailoverDrafts()),B(e,n)},$$slots:{default:!0}}),O()}Vr([`click`,`change`]);var dQ=z(`
                Rate limit management is unavailable.
                `),fQ=z(` Add`,1),pQ=z(`

                `),mQ=z(`

                No rules.

                `),hQ=z(` Edit`,1),gQ=z(`
                `),_Q=z(`
                `),vQ=z(`

                `),yQ=z(``),bQ=z(``);function xQ(e,t){D(t,!0);function n(){Y.dialogOpen||Z.closeRateLimitInspector()}SO(e,{get open(){return Z.rateLimitInspectorOpen},variant:`editor`,onclose:n,children:(e,t)=>{var n=bQ(),r=N(n),i=N(r),a=F(N(i),2),o=N(a),s=N(o,!0);E(o),E(a),E(i),vO(F(i,2),{label:`Close rate limits inspector`,onclick:()=>Z.closeRateLimitInspector()}),E(r);var c=F(r,2),l=e=>{lK(e,{label:`Loading rate limits...`})},u=e=>{B(e,dQ())},d=e=>{var t=Zr();U(P(t),17,()=>Z.rateLimitInspectorSections(),e=>e.key,(e,t)=>{var n=vQ(),r=N(n),i=N(r),a=N(i,!0);E(i);var o=F(i,2);{let e=k(()=>`Add `+L(t).title.toLowerCase());dK(o,{get label(){return L(e)},class:`budget-action-btn`,onclick:()=>Z.openRateLimitFormFromInspector(L(t).scope,L(t).subject),children:(e,t)=>{var n=fQ();q(P(n),{get icon(){return qE},class:`table-icon-svg`}),He(2),B(e,n)},$$slots:{default:!0}})}E(r);var s=F(r,2),c=e=>{var n=pQ(),r=N(n,!0);E(n),I(()=>V(r,L(t).hint)),B(e,n)};H(s,e=>{L(t).hint&&e(c)});var l=F(s,2),u=e=>{B(e,mQ())},d=e=>{var n=_Q();U(n,21,()=>L(t).items,e=>Z.rateLimitKey(e),(e,t)=>{var n=gQ(),r=N(n),i=N(r),a=N(i),o=N(a,!0);E(a);var s=F(a,2),c=N(s),l=N(c);{let e=k(()=>Z.rateLimitIsConcurrent(L(t))?uE:lD);q(l,{get icon(){return L(e)},class:`budget-period-icon`})}var u=F(l,2),d=N(u,!0);E(u),E(c),E(s);var f=F(s,2),p=N(f),m=N(p),h=N(m,!0);E(m);var g=F(m,2),_=N(g,!0);E(g),E(p);var v=F(p,2),y=N(v),b=e=>{dK(e,{label:`Edit rate limit`,class:`budget-action-btn`,onclick:()=>Z.openRateLimitFormFromInspector(null,null,L(t)),children:(e,t)=>{var n=hQ();q(P(n),{get icon(){return GE},class:`budget-action-icon`}),He(2),B(e,n)},$$slots:{default:!0}})},x=k(()=>!Z.rateLimitIsReadOnly(L(t)));H(y,e=>{L(x)&&e(b)}),E(v),E(f),E(i),E(r),E(n),I((e,t,r,i,a,s,c,l)=>{W(n,1,`budget-row ${e??``}`),Vi(n,t),G(n,`title`,r),V(o,i),V(d,a),V(h,s),G(g,`title`,c),V(_,l)},[()=>Z.rateLimitPressureClass(L(t)),()=>Z.rateLimitPressureStyle(L(t)),()=>Z.rateLimitPressurePercent(L(t))+`% of the most constrained cap used`,()=>Z.rateLimitSubject(L(t)),()=>Z.rateLimitPeriodLabel(L(t)),()=>Z.rateLimitInspectorSummary(L(t)),()=>Z.rateLimitIsReadOnly(L(t))?`Declared in configuration; read-only in the dashboard`:`Managed via dashboard or admin API`,()=>Z.rateLimitSourceLabel(L(t))]),B(e,n)}),E(n),B(e,n)};H(l,e=>{L(t).items.length===0?e(u):e(d,-1)}),E(n),I(()=>V(a,L(t).title)),B(e,n)}),B(e,t)};H(c,e=>{Z.rateLimitsLoading?e(l):Z.rateLimitsAvailable?e(d,-1):e(u,1)});var f=F(c,2),p=N(f),m=F(p,2),h=e=>{var t=yQ();R(`click`,t,()=>{Z.closeRateLimitInspector(),kD.navigate(`rate-limits`)}),B(e,t)},g=k(()=>Z.rateLimitsEnabled());H(m,e=>{L(g)&&e(h)}),E(f),E(n),I(()=>V(s,Z.rateLimitInspector.title)),R(`click`,p,()=>Z.closeRateLimitInspector()),B(e,n)},$$slots:{default:!0}}),O()}Vr([`click`]);var SQ=z(`
                models
                `),CQ=z(`
                Virtual models feature is unavailable.
                `),wQ=z(`
                `),TQ=z(``),EQ=z(`
                `),DQ=z(``),OQ=z(`
                `),kQ=z(`

                No models registered.

                `),AQ=z(`

                No models in this category.

                `),jQ=z(`

                No models match your filter.

                `),MQ=z(`
                `);function NQ(e,t){D(t,!0),kn(()=>{Y.refreshTick,kD.page===`models`&&(XY.fetchVirtualModels(),_X.fetchModelPricingOverrides(),Q.fetchFailoverRules(),Z.fetchRateLimitsPage())}),kn(()=>{let e=XY.filteredDisplayModels.length;return Tr(()=>XY.restartModelRendering(e)),()=>XY.stopModelRendering()});let n=k(()=>Y.needsAuth);var r=MQ(),i=N(r),a=F(N(i),2),o=e=>{var t=SQ(),n=N(t),r=N(n,!0);E(n),He(),E(t),I(()=>V(r,Ak.filter?XY.filteredDisplayModels.length+` / `+XY.displayModels.length:XY.displayModels.length)),B(e,t)};H(a,e=>{XY.displayModels.length>0&&e(o)}),E(i);var s=F(i,2);Mk(s,{});var c=F(s,2),l=e=>{B(e,CQ())};H(c,e=>{!XY.virtualModelsAvailable&&!L(n)&&e(l)});var u=F(c,2),d=e=>{var t=wQ(),n=N(t,!0);E(t),I(()=>V(n,XY.aliasError)),B(e,t)};H(u,e=>{XY.aliasError&&!L(n)&&e(d)});var f=F(u,2),p=e=>{var t=wQ(),n=N(t,!0);E(t),I(()=>V(n,_X.modelPricingOverrideError)),B(e,t)};H(f,e=>{_X.modelPricingOverrideError&&!L(n)&&!_X.modelPricingOverrideFormOpen&&e(p)});var m=F(f,2),h=e=>{var t=EQ();U(t,21,()=>Ak.categories,e=>e.category,(e,t)=>{var n=TQ();let r;var i=N(n),a=N(i,!0);E(i);var o=F(i,2),s=N(o,!0);E(o),E(n),I(()=>{r=W(n,1,`category-tab svelte-scpjps`,null,r,{active:Ak.activeCategory===L(t).category}),V(a,L(t).display_name),V(s,L(t).count)}),R(`click`,n,()=>Ak.selectCategory(L(t).category)),B(e,n)}),E(t),B(e,t)};H(m,e=>{Ak.categories.length>0&&e(h)});var g=F(m,2),_=e=>{var t=OQ(),n=N(t);mG(N(n),{placeholder:`Filter by provider, provider/model, alias, or owner...`,label:`Filter models by provider, provider/model, alias, or owner`,get value(){return Ak.filter},set value(e){Ak.filter=e}}),E(n);var r=F(n,2),i=N(r),a=e=>{var t=DQ();q(N(t),{get icon(){return qE},class:`alias-create-icon`}),He(2),E(t),R(`click`,t,()=>XY.openVirtualModelCreate()),B(e,t)};H(i,e=>{XY.virtualModelsAvailable&&e(a)}),E(r),E(t),B(e,t)};H(g,e=>{(XY.displayModels.length>0||Ak.filter||XY.virtualModelsAvailable)&&e(_)});var v=F(g,2),y=e=>{{let t=k(()=>XY.modelLoadingText());lK(e,{get label(){return L(t)},class:`models-loading-state`})}},b=k(()=>XY.modelsBusy()&&!L(n));H(v,e=>{L(b)&&e(y)});var x=F(v,2);IZ(x,{});var S=F(x,2);qZ(S,{});var C=F(S,2),w=e=>{hZ(e,{})};H(C,e=>{(XY.displayModels.length>0||Ak.filter)&&e(w)});var T=F(C,2),ee=e=>{B(e,kQ())};H(T,e=>{XY.displayModels.length===0&&!Ak.loading&&!L(n)&&!Ak.filter&&(Ak.activeCategory===`all`||!Ak.activeCategory)&&e(ee)});var te=F(T,2),ne=e=>{B(e,AQ())};H(te,e=>{XY.displayModels.length===0&&!Ak.loading&&!L(n)&&!Ak.filter&&Ak.activeCategory&&Ak.activeCategory!==`all`&&e(ne)});var re=F(te,2),ie=e=>{B(e,jQ())};H(re,e=>{XY.displayModels.length>0&&XY.filteredDisplayModels.length===0&&Ak.filter&&e(ie)});var ae=F(re,2);xQ(ae,{});var oe=F(ae,2);AJ(oe,{});var se=F(oe,2);tQ(se,{}),uQ(F(se,2),{}),E(r),B(e,r),O()}Vr([`click`]);var PQ=`draft-workflow-preview`;function FQ(){return{scope_provider:``,scope_model:``,scope_user_path:``,name:``,description:``,features:{cache:!0,audit:!0,usage:!0,budget:!0,guardrails:!1,failover:!0},guardrails:[]}}function IQ(){return{scope_provider:``,scope_model:``,scope_user_path:``}}function LQ(e){return{ref:``,step:Number.isFinite(e)?e:10}}function RQ(e){let t=e==null?``:String(e).trim();if(t===``)return NaN;let n=Number(t);return Number.isFinite(n)?n:NaN}function zQ(e,t,n){if(!e||typeof e!=`object`||Array.isArray(e))return n;let r=t.charAt(0).toUpperCase()+t.slice(1);for(let n of[t,r])if(Object.prototype.hasOwnProperty.call(e,n)&&e[n]!==null&&e[n]!==void 0)return e[n];return n}function BQ(e,t){return!e||typeof e!=`object`||Array.isArray(e)?!1:[t,t.charAt(0).toUpperCase()+t.slice(1)].some(t=>Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==null&&e[t]!==void 0)}function VQ(e){return{cache:!!zQ(e,`cache`,!1),audit:!!zQ(e,`audit`,!1),usage:!!zQ(e,`usage`,!1),budget:zQ(e,`budget`,!0)!==!1,guardrails:!!zQ(e,`guardrails`,!1),failover:zQ(e,`failover`,!0)!==!1}}function HQ(e,t){let n=VQ(e),r=t||{},i=n.usage&&!!r.usage;return{cache:n.cache&&!!r.cache,audit:n.audit&&!!r.audit,usage:i,budget:i&&n.budget&&!!r.budget,guardrails:n.guardrails&&!!r.guardrails,failover:n.failover&&!!r.failover}}function UQ(e,t){let n=e&&e.workflow_payload&&e.workflow_payload.features?e.workflow_payload.features:e&&e.features?e.features:{};return{...HQ((e&&e.effective_features&&typeof e.effective_features==`object`&&!Array.isArray(e.effective_features)?e.effective_features:null)||n,t),failover:VQ(n).failover}}function WQ(e,t){return UQ(e,t).failover?`On`:`Off`}function GQ(e){return(Array.isArray(e&&e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:Array.isArray(e&&e.guardrails)?e.guardrails:[]).map(e=>({ref:String(e&&e.ref||``).trim(),step:RQ(e&&e.step)})).filter(e=>Number.isInteger(e.step)&&e.step>=0)}function KQ(e,t){return UQ(e,t).guardrails&&Array.isArray(e&&e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:[]}function qQ(e){return String(e&&(e.scope_provider_name||e.scope_provider)||``).trim()}function JQ(e){return String(e&&(e.provider_name||e.provider_type)||``).trim()}function YQ(e,t){let n=new Set,r=String(t&&t.scope_provider||``).trim();return r&&n.add(r),(Array.isArray(e)?e:[]).forEach(e=>{let t=JQ(e);t&&n.add(t)}),[...n].sort()}function XQ(e,t,n){let r=String(t||``).trim(),i=new Set,a=String(n&&n.scope_provider||``).trim(),o=String(n&&n.scope_model||``).trim();return r&&r===a&&o&&i.add(o),(Array.isArray(e)?e:[]).forEach(e=>{if(r&&JQ(e)!==r)return;let t=String(e&&e.model&&e.model.id||``).trim();t&&i.add(t)}),[...i].sort()}function ZQ(e){let t=String(e&&e.scope_type||``).trim();return t===`provider_model`?`Provider Name + Model`:t===`provider_model_path`?`Provider Name + Model + Path`:t===`provider_path`?`Provider Name + Path`:t===`path`?`Path`:t===`provider`?`Provider Name`:`Global`}function QQ(e){return String(e&&e.scope_display||`global`).trim()||`global`}function $Q(e){let t=String(e&&e.name||``).trim();if(t)return t;let n=QQ(e);return n===`global`?`All models`:n}function e$(e){let t=String(e||``).trim();if(!t)return``;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`);for(let e of n){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function t$(e){if(e$(e))return``;let t=String(e||``).trim();if(!t)return``;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`),r=[];for(let e of n){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function n$(e){let t=e||FQ(),n=String(t.scope_provider||``).trim(),r=t$(t.scope_user_path);return{scope_provider:n,scope_model:n?String(t.scope_model||``).trim():``,scope_user_path:r}}function r$(e){let t=String(e&&e.scope_provider||``).trim(),n=t?String(e&&e.scope_model||``).trim():``,r=t$(e&&e.scope_user_path);return!t&&!r?`global`:!t&&r?`path`:!n&&!r?`provider`:!n&&r?`provider_path`:r?`provider_model_path`:`provider_model`}function i$(e){let t=String(e&&e.scope_provider||``).trim(),n=t?String(e&&e.scope_model||``).trim():``,r=t$(e&&e.scope_user_path),i=r$({scope_provider:t,scope_model:n,scope_user_path:r});return i===`global`?`global`:i===`path`?r:i===`provider`?t:i===`provider_path`?t+` @ `+r:i===`provider_model_path`?t+`/`+n+` @ `+r:t+`/`+n}function a$(e,t){let n=t||IQ(),r=qQ(e&&e.scope),i=r?String(e&&e.scope&&e.scope.scope_model||``).trim():``,a=t$(e&&e.scope&&e.scope.scope_user_path);return r===String(n.scope_provider||``).trim()&&i===String(n.scope_model||``).trim()&&a===t$(n.scope_user_path)}function o$(e,t,n){let r=n$(t);return!(r.scope_provider!==``||r.scope_model!==``||r.scope_user_path!==``)&&!n?null:(Array.isArray(e)?e:[]).find(e=>a$(e,r))||null}function s$(e){return String(e&&e.scope_type||``).trim()!==`global`}function c$(e){let t=String(e||``).trim();return t?t.length<=14?t:t.slice(0,12)+`…`:`—`}function l$(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.description,e.scope_display,e.scope_type,qQ(e&&e.scope),e.scope&&e.scope.scope_model,e.scope&&e.scope.scope_user_path,e.workflow_hash,...Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails.map(e=>e.ref):[]].some(e=>String(e||``).toLowerCase().includes(r)))}function u$(e,t){let n=e||FQ(),r=n$(n),i=VQ(n.features||{}),a=HQ(i,t);a.failover=i.failover;let o=!!a.guardrails,s=o?GQ(n):[];return{id:PQ,scope_type:r$(r),scope_display:i$(r),scope:{scope_provider_name:r.scope_provider,scope_model:r.scope_model,...r.scope_user_path?{scope_user_path:r.scope_user_path}:{}},name:String(n.name||``).trim(),description:String(n.description||``).trim(),workflow_payload:{schema_version:1,features:{cache:!!a.cache,audit:!!a.audit,usage:!!a.usage,budget:!!a.budget,guardrails:o,failover:!!a.failover},guardrails:s}}}function d$({form:e,caps:t,workflows:n=[],formHydrated:r=!1,hydratedScope:i=null}){let a=e||FQ(),o=String(a.scope_provider||``).trim(),s=o?String(a.scope_model||``).trim():``,c=t$(a.scope_user_path),l=VQ(a.features||{}),u=HQ(l,t),d=o$(n,a,r),f=d&&d.workflow_payload&&d.workflow_payload.features,p=BQ(f,`failover`),m=p?zQ(f,`failover`,!0)!==!1:null,h=i||IQ(),g=String(h.scope_provider||``).trim()===o&&String(h.scope_model||``).trim()===s&&t$(h.scope_user_path)===t$(c),_=!!(t&&t.failover),v=_||!!r&&g&&Object.prototype.hasOwnProperty.call(l,`failover`)||!r&&!!d&&p,y=u.guardrails?(Array.isArray(a.guardrails)?a.guardrails:[]).map(e=>({ref:String(e&&e.ref||``).trim(),step:RQ(e&&e.step)})):[],b={scope_provider_name:o,scope_model:s,...c?{scope_user_path:c}:{},name:String(a.name||``).trim(),description:String(a.description||``).trim(),workflow_payload:{schema_version:1,features:{cache:!!u.cache,audit:!!u.audit,usage:!!u.usage,budget:!!u.budget,guardrails:!!u.guardrails},guardrails:y}};return v&&(b.workflow_payload.features.failover=!_&&!r&&d&&p?m:!!l.failover),b}function f$(e,{models:t=[],hydratedScope:n=null}={}){let r=n||IQ(),i=String(r.scope_provider||``).trim(),a=String(r.scope_model||``).trim(),o=String(e&&(e.scope_provider_name||e.scope_provider)||``).trim(),s=String(e&&e.scope_model||``).trim();if(o&&!YQ(t,r).includes(o)&&o!==i)return`Choose a registered provider name.`;if(s&&!o)return`Model selection requires a provider name.`;if(s){let e=XQ(t,o,r),n=o===i&&s===a;if(!e.includes(s)&&!n)return`Choose a registered model for the selected provider name.`}let c=e$(e.scope_user_path);if(c)return c;let l=e.workflow_payload&&e.workflow_payload.features?e.workflow_payload.features:{},u=Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:[];if(!l.guardrails)return``;let d=new Set;for(let e of u){if(!e.ref)return`Each guardrail step needs a guardrail ref.`;if(!Number.isInteger(e.step)||e.step<0)return`Each guardrail step must use a non-negative integer step number.`;if(d.has(e.ref))return`Each guardrail ref may appear only once in a workflow.`;d.add(e.ref)}return``}var p$=new class{#e=A(M([]));get workflows(){return L(this.#e)}set workflows(e){j(this.#e,e,!0)}#t=A(!0);get available(){return L(this.#t)}set available(e){j(this.#t,e,!0)}#n=A(!1);get loading(){return L(this.#n)}set loading(e){j(this.#n,e,!0)}#r=A(``);get error(){return L(this.#r)}set error(e){j(this.#r,e,!0)}#i=A(``);get filter(){return L(this.#i)}set filter(e){j(this.#i,e,!0)}#a=A(!1);get formOpen(){return L(this.#a)}set formOpen(e){j(this.#a,e,!0)}#o=A(!1);get submitting(){return L(this.#o)}set submitting(e){j(this.#o,e,!0)}#s=A(``);get deactivatingID(){return L(this.#s)}set deactivatingID(e){j(this.#s,e,!0)}#c=A(``);get formError(){return L(this.#c)}set formError(e){j(this.#c,e,!0)}#l=A(!1);get formHydrated(){return L(this.#l)}set formHydrated(e){j(this.#l,e,!0)}#u=A(M(IQ()));get hydratedScope(){return L(this.#u)}set hydratedScope(e){j(this.#u,e,!0)}#d=A(M([]));get guardrailRefs(){return L(this.#d)}set guardrailRefs(e){j(this.#d,e,!0)}#f=A(M(FQ()));get form(){return L(this.#f)}set form(e){j(this.#f,e,!0)}#p=null;failoverVisible(){return lO.booleanFlag(`FAILOVER_ENABLED`,!0)}featureCaps(){return{cache:lO.cacheVisible(),audit:lO.auditVisible(),usage:lO.usageVisible(),budget:lO.budgetsVisible(),guardrails:lO.guardrailsVisible(),failover:this.failoverVisible()}}get filteredWorkflows(){return l$(this.workflows,this.filter)}providerOptions(){return YQ(Ak.models,this.hydratedScope)}modelOptions(e){return XQ(Ak.models,e,this.hydratedScope)}activeScopeMatch(){return o$(this.workflows,this.form,this.formHydrated)}submitMode(){return this.activeScopeMatch()?`save`:`create`}submitLabel(){return this.submitMode()===`save`?`Save`:`Create`}submittingLabel(){return this.submitMode()===`save`?`Saving...`:`Creating...`}preview(){return u$(this.form,this.featureCaps())}openCreate(e){if(this.formOpen=!0,this.submitting=!1,this.formError=``,!e){this.formHydrated=!1,this.hydratedScope=IQ(),this.form=FQ();return}this.formHydrated=!0,this.hydratedScope={scope_provider:qQ(e.scope),scope_model:String(e.scope&&e.scope.scope_model||``).trim(),scope_user_path:String(e.scope&&e.scope.scope_user_path||``).trim()};let t=e.workflow_payload&&e.workflow_payload.features?VQ(e.workflow_payload.features):UQ(e,this.featureCaps()),n=Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails.map(e=>({ref:String(e&&e.ref||``).trim(),step:RQ(e&&e.step)})).filter(e=>Number.isInteger(e.step)&&e.step>=0):GQ(e);this.form={scope_provider:qQ(e.scope),scope_model:String(e.scope&&e.scope.scope_model||``),scope_user_path:String(e.scope&&e.scope.scope_user_path||``),name:String(e.name||``),description:String(e.description||``),features:{cache:!!t.cache,audit:!!t.audit,usage:!!t.usage,budget:!!t.budget,guardrails:!!t.guardrails,failover:!!t.failover},guardrails:n.map(e=>({ref:String(e&&e.ref||``),step:Number.isFinite(e&&e.step)?e.step:10}))}}closeForm(){this.formOpen=!1,this.submitting=!1,this.formError=``,this.formHydrated=!1,this.hydratedScope=IQ(),this.form=FQ()}setProvider(e){if(this.form.scope_provider=String(e||``).trim(),!this.form.scope_provider){this.form.scope_model=``;return}this.modelOptions(this.form.scope_provider).includes(String(this.form.scope_model||``).trim())||(this.form.scope_model=``)}addGuardrailStep(){let e=(Array.isArray(this.form.guardrails)?this.form.guardrails:[]).reduce((e,t)=>{let n=Number(t&&t.step);return Number.isFinite(n)?Math.max(e,n):e},0)+10;this.form.guardrails.push(LQ(e))}removeGuardrailStep(e){Array.isArray(this.form.guardrails)&&this.form.guardrails.splice(e,1)}buildRequest(){return d$({form:this.form,caps:this.featureCaps(),workflows:this.workflows,formHydrated:this.formHydrated,hydratedScope:this.hydratedScope})}async fetchWorkflows(){this.#p&&this.#p.abort();let e=new AbortController;this.#p=e,this.loading=!0,this.error=``;let t=setTimeout(()=>e.abort(),1e4),n=await fK(`/admin/workflows`,{label:`workflows`,options:{signal:e.signal}});if(clearTimeout(t),this.#p===e&&(this.#p=null,this.loading=!1,n.status!==`stale`)){if(n.status===`unavailable`){this.available=!1,this.workflows=[];return}if(n.result&&(this.available=!0),n.status===`error`){this.workflows=[],this.error=e.signal.aborted?`Loading workflows timed out.`:n.error;return}this.workflows=n.items}}async fetchGuardrailRefs(){let e=await fK(`/admin/workflows/guardrails`,{label:`workflow guardrails`});e.status!==`stale`&&(this.guardrailRefs=e.items)}async fetchPage(){await Promise.all([lO.ensureLoaded(),this.fetchWorkflows(),this.fetchGuardrailRefs()])}async submitForm(){if(this.submitting)return;this.formError=``;let e=this.buildRequest(),t=f$(e,{models:Ak.models,hydratedScope:this.hydratedScope});if(t){this.formError=t;return}this.submitting=!0;try{let t=await pK(`/admin/workflows`,`POST`,e,{label:`create workflow`,unavailableStatuses:[]});if(t.status===`stale`||t.result&&t.result.status===401)return;if(t.status===`error`){this.formError=t.error;return}UO.success(`Workflow created and activated.`),this.closeForm(),this.fetchPage()}finally{this.submitting=!1}}async deactivate(e){let t=String(e&&e.id||``).trim();if(!t||this.deactivatingID||!s$(e))return;let n=$Q(e);if(confirm(`Deactivate workflow "`+n+`"? Requests will fall back to the next active workflow for this scope.`)){this.deactivatingID=t;try{let e=await pK(`/admin/workflows/`+encodeURIComponent(t)+`/deactivate`,`POST`,void 0,{label:`deactivate workflow`,unavailableStatuses:[]});if(e.status===`stale`||e.result&&e.result.status===401)return;if(e.status===`error`){UO.error(e.error);return}UO.success(`Workflow deactivated.`),this.fetchPage()}finally{this.deactivatingID=``}}}};function m$(e){let t=String(e??``),n=typeof navigator<`u`?navigator.clipboard:null;if(n&&typeof n.writeText==`function`)return n.writeText(t);let r=typeof document<`u`?document:null;if(!r||!r.body||typeof r.execCommand!=`function`)return Promise.reject(Error(`Clipboard API unavailable`));let i=r.createElement(`textarea`);i.value=t,i.setAttribute(`readonly`,``),i.style.position=`fixed`,i.style.top=`0`,i.style.left=`0`,i.style.opacity=`0`;try{if(r.body.appendChild(i),i.focus(),i.select(),i.setSelectionRange(0,i.value.length),!r.execCommand(`copy`))throw Error(`execCommand copy returned false`)}finally{i.parentNode&&i.parentNode.removeChild(i)}return Promise.resolve()}function h$({resetDelayMs:e=2e3,logPrefix:t}={}){let n=M({copied:!1,error:!1}),r=null;function i(){r!==null&&clearTimeout(r),r=null}function a(){i(),r=setTimeout(()=>{n.copied=!1,n.error=!1,r=null},e)}return{get copied(){return n.copied},get error(){return n.error},reset(){i(),n.copied=!1,n.error=!1},async copy(e,r){if(!(e==null||e===``)){i(),n.copied=!1,n.error=!1;try{await m$(typeof r==`function`?r(e):String(e)),n.copied=!0,n.error=!1}catch(e){console.error(t||`Failed to copy text:`,e),n.copied=!1,n.error=!0}a()}}}}var g$=z(``);function _$(e,t){D(t,!0);let n=K(t,`workflowID`,3,``),r=h$({logPrefix:`Failed to copy workflow ID:`});kn(()=>{n(),r.reset()});let i=k(()=>r.error?`Unable to copy workflow ID`:r.copied?`Workflow ID copied`:`Copy workflow ID`),a=k(()=>n()?L(i)+` `+n():L(i));async function o(e){e.preventDefault(),n()&&await r.copy(n())}var s=g$();let c;var l=F(N(s),4),u=N(l,!0);E(l);var d=F(l,2);q(N(d),{get icon(){return kE}}),E(d),E(s),I(()=>{c=W(s,1,`workflow-pipeline-meta mono svelte-1viff7o`,null,c,{"workflow-pipeline-meta-copied":r.copied,"workflow-pipeline-meta-error":r.error}),G(s,`title`,L(i)),G(s,`aria-label`,L(a)),V(u,n())}),R(`click`,s,o),B(e,s),O()}Vr([`click`]);var v$=(e,t)=>{let n=()=>(t?.()).icon,r=()=>(t?.()).label,i=Dt(()=>h((t?.()).variant,`workflow-node-feature`)),a=()=>(t?.()).state,o=()=>(t?.()).sub,s=()=>(t?.()).badge;var c=S$(),l=N(c),u=e=>{var t=y$();let r;q(N(t),{get icon(){return n()}}),E(t),I(()=>r=W(t,1,`workflow-node-icon svelte-nbptrg`,null,r,{"workflow-node-icon-endpoint":L(i)===`workflow-node-endpoint`})),B(e,t)};H(l,e=>{n()&&e(u)});var d=F(l,2),f=N(d,!0);E(d);var p=F(d,2),m=e=>{var t=b$(),n=N(t,!0);E(t),I(()=>V(n,s())),B(e,t)};H(p,e=>{s()&&e(m)});var g=F(p,2),_=e=>{var t=x$(),n=N(t,!0);E(t),I(()=>V(n,o())),B(e,t)};H(g,e=>{o()&&e(_)}),E(c),I(()=>{W(c,1,Pi([`workflow-node`,L(i),a()]),`svelte-nbptrg`),V(f,r())}),B(e,c)},y$=z(`
                `),b$=z(` `),x$=z(` `),S$=z(`
                `),C$=z(`
                `,1),w$=z(`
                `,1),T$=z(`
                `),E$=z(`
                Async
                `),D$=z(`
                `);function O$(e,t){D(t,!0);let n=K(t,`chart`,19,()=>({}));var r=D$();let i;var a=N(r),o=e=>{_$(e,{get workflowID(){return n().workflowID}})};H(a,e=>{n().workflowID&&e(o)});var s=F(a,2),c=N(s);v$(c,()=>({icon:pD,label:`Client`,variant:`workflow-node-endpoint`}));var l=F(c,4);v$(l,()=>({icon:jE,label:`Auth`,state:n().authNodeClass,sub:n().authNodeSublabel}));var u=F(l,2),d=e=>{var t=C$(),r=P(t);v$(F(r,2),()=>({icon:jE,label:`Cache`,state:n().cacheNodeClass,badge:n().cacheStatusLabel})),I(()=>W(r,1,Pi([`workflow-conn`,n().cacheConnClass]),`svelte-nbptrg`)),B(e,t)};H(u,e=>{n().showCache&&e(d)});var f=F(u,2),p=e=>{var t=w$();v$(F(P(t),2),()=>({icon:mD,label:`Budget`,state:n().budgetNodeClass,badge:n().budgetStatusLabel})),B(e,t)};H(f,e=>{n().showBudget&&e(p)});var m=F(f,2),h=e=>{var t=w$();v$(F(P(t),2),()=>({icon:aD,label:`Guardrails`,sub:n().guardrailLabel})),B(e,t)};H(m,e=>{n().showGuardrails&&e(h)});var g=F(m,2),_=F(g,2);v$(_,()=>({label:n().aiLabel,variant:`workflow-node-ai`,state:n().aiNodeClass,sub:n().aiSublabel}));var v=F(_,2),y=e=>{var t=C$(),r=P(t);v$(F(r,2),()=>({icon:VE,label:`Failover`,state:n().failoverNodeClass,badge:n().failoverStatusLabel,sub:n().failoverTargetLabel})),I(()=>W(r,1,Pi([`workflow-conn`,n().failoverConnClass]),`svelte-nbptrg`)),B(e,t)};H(v,e=>{n().showFailover&&e(y)});var b=F(v,2);v$(F(b,2),()=>({icon:TE,label:`Response`,variant:`workflow-node-endpoint`,state:n().responseNodeClass,sub:n().responseNodeSublabel})),E(s);var x=F(s,2),S=e=>{var t=E$(),r=N(t),i=N(r),a=e=>{v$(e,()=>({icon:yE,label:`Usage`,variant:`workflow-node-feature workflow-node-async`,state:n().usageNodeClass}))};H(i,e=>{n().showUsage&&e(a)});var o=F(i,2),s=e=>{B(e,T$())};H(o,e=>{n().showUsage&&n().showAudit&&e(s)});var c=F(o,2),l=e=>{v$(e,()=>({icon:ME,label:`Audit Log`,variant:`workflow-node-feature workflow-node-async`,state:n().auditNodeClass}))};H(c,e=>{n().showAudit&&e(l)}),E(r),He(4),E(t),B(e,t)};H(x,e=>{n().showAsync&&e(S)}),E(r),I(()=>{i=W(r,1,`workflow-pipeline svelte-nbptrg`,null,i,{"workflow-pipeline-has-meta":n().workflowID}),W(g,1,Pi([`workflow-conn`,n().aiConnClass]),`svelte-nbptrg`),W(b,1,Pi([`workflow-conn`,n().responseConnClass]),`svelte-nbptrg`)}),B(e,r),O()}function k$(e){let t=GQ(e).length;return t===0?``:t===1?`1 step`:t+` steps`}function A$(e,t){return t&&t.provider?t.provider:qQ(e&&e.scope)||`AI`}function j$(e,t){return t&&t.model?t.model:e&&e.scope&&e.scope.scope_model||null}function M$(e,t){let n=String(e&&e.id||``).trim();if(n&&n!==`draft-workflow-preview`)return n;let r=String(t&&t.workflow_version_id||``).trim();return r&&r!==`draft-workflow-preview`?r:null}function N$(e){let t=e&&e.data&&e.data.workflow_features;return!t||typeof t!=`object`||Array.isArray(t)?null:VQ(t)}function P$(e){let t=e&&e.data&&e.data.failover;if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=String(t.target_model||t.targetModel||``).trim()||null;return n?{targetModel:n}:null}function F$(e,t=0){if(t>4||e==null)return``;if(typeof e==`string`){let n=e.trim();if(!n||n[0]!==`{`&&n[0]!==`[`)return``;try{return F$(JSON.parse(n),t+1)}catch{return``}}if(Array.isArray(e)){for(let n of e){let e=F$(n,t+1);if(e)return e}return``}return typeof e==`object`?String(e.code||``).trim()||(e.error===void 0?``:F$(e.error,t+1)):``}function I$(e){let t=e&&e.data&&typeof e.data==`object`&&!Array.isArray(e.data)?e.data:{};return String(t.error_code||t.errorCode||``).trim()||F$(t.response_body)}function L$(e){let t=String(e||``).trim();if(!t)return null;let n=t.indexOf(`/`);return n<=0||n>=t.length-1?null:{provider:t.slice(0,n),model:t.slice(n+1)}}function R$(e,t){let n=String(e&&(e.requested_model||e.model)||``).trim(),r=P$(e);if(!(r&&r.targetModel))return{provider:String(e&&e.provider||``).trim()||null,model:n||null};let i=L$(n);if(i)return i;let a=qQ(t&&t.scope),o=a?String(t&&t.scope&&t.scope.scope_model||``).trim():``;return a||o?{provider:a||null,model:o||n||null}:{provider:null,model:n||null}}function z$(e,t){if(!e)return null;let n=(()=>{let t=String(e.cache_type||``).trim().toLowerCase();return t===`exact`||t===`semantic`?t:null})(),r=(()=>{if(e.status_code===void 0||e.status_code===null)return null;let t=String(e.status_code).trim();if(!t)return null;let n=Number(t);return Number.isFinite(n)?n:null})(),i=n?!0:e.cache_hit!==void 0&&e.cache_hit!==null&&!!e.cache_hit,a=P$(e),o=R$(e,t),s=Number.isFinite(r)&&r>=200&&r<300,c=String(e.error_type||``).trim().toLowerCase()===`authentication_error`,l=String(e.auth_method||``).trim().toLowerCase()||null,u=I$(e).toLowerCase()===`budget_exceeded`;return{cacheHit:i,cacheType:n||null,failoverTarget:a&&a.targetModel?a.targetModel:null,provider:o.provider,model:o.model,statusCode:r,responseSuccess:s,aiSuccess:s&&!i,authError:c,authMethod:l,budgetExceeded:u}}function B$(e){return!!(e&&e.cacheHit)}function V$(e){return!!(e&&e.failoverTarget)}function H$(e){return!!(e&&e.budgetExceeded)}function U$(e,t){return t?`workflow-node-current`:e&&e.cacheHit?`workflow-node-success`:``}function W$(e){return e&&e.cacheHit?`workflow-conn-hit`:``}function G$(e){return!e||!e.cacheHit?null:e.cacheType===`semantic`?`Hit (Semantic)`:`Hit (Exact)`}function K$(e,t,n,r){return e?H$(t)?`workflow-node-error`:r?`workflow-node-current`:n?`workflow-node-success`:``:``}function q$(e){return H$(e)?`Exceeded`:null}function J$(e){return e&&e.cacheHit?`workflow-node-skipped`:e&&e.failoverTarget?`workflow-node-success`:``}function Y$(e){return e&&e.cacheHit?`workflow-conn-dim`:e&&e.failoverTarget?`workflow-conn-hit`:``}function X$(e){return e&&e.failoverTarget?`Redirected`:null}function Z$(e){return e&&e.failoverTarget?e.failoverTarget:null}function Q$(e){return e&&e.cacheHit?`workflow-conn-dim`:``}function $$(e,t){return e?e.cacheHit?`workflow-node-skipped`:t?`workflow-node-current`:e.aiSuccess?`workflow-node-success`:``:``}function e1(e,t){if(!e)return``;let n=e.statusCode;return!Number.isFinite(n)&&t?`workflow-node-current`:Number.isFinite(n)?n>=500?`workflow-node-error`:n>=400?`workflow-node-warning`:n>=300?`workflow-node-neutral`:n>=200?`workflow-node-success`:``:``}function t1(e){return!e||!Number.isFinite(e.statusCode)?null:String(e.statusCode)}function n1(e,t){return e?e.authError?`workflow-node-error`:t?`workflow-node-current`:e.authMethod===`api_key`||e.authMethod===`master_key`?`workflow-node-success`:``:``}function r1(e){return!e||!e.authMethod?null:e.authMethod}function i1(e,t,n){return e?n?`workflow-node-current`:t?`workflow-node-success`:``:``}function a1(e,t){if(!e||!e._live)return!!t;let n=String(e._live_state||``).trim();return!!e._audit_flushed||n===`audit.flushed`||n===`audit.detail`}function o1(e,t){if(!e)return!!t;let n=e.usage||{},r=Number(n.entries||0)>0;if(!e._live)return r;let i=String(e._usage_live_state||``).trim();return e._usage_flushed||i===`usage.flushed`?!0:!e._usage_live_pending&&r&&!e._live_pending}function s1(e){return!!(e&&e._live&&e._usage_live_pending&&!e._usage_flushed)}function c1(e,t){return!e||!e._live||a1(e,!1)?!1:String(e._live_state||``).trim()===`audit.completed`||!!(t&&Number.isFinite(t.statusCode))}function l1(e,t,n){return!e||!e._live?``:s1(e)?`usage`:c1(e,t)?`audit`:a1(e,!1)&&!e._live_pending?``:t&&t.cacheHit?`cache`:t&&(t.provider||t.model)?`ai`:n&&n.budget&&(e.workflow_version_id||e.requested_model)?`budget`:t&&t.authMethod?``:`auth`}function u1(e,t,n,r){let i=n||{},a=i.features&&typeof i.features==`object`&&!Array.isArray(i.features)?VQ(i.features):UQ(e,r),o=!!i.forceAudit,s=!!i.highlightAsyncPresent,c=!!a.budget||H$(t),l=!!a.guardrails,u=!!a.usage,d=o||!!a.audit,f=!!i.forceAsync||!!(u||d),p=!!a.failover||V$(t),m=M$(e,i.entry),h=l1(i.entry,t,a),g=s1(i.entry),_=c1(i.entry,t),v=a1(i.entry,s),y=o1(i.entry,s);return{showBudget:c,budgetNodeClass:K$(c,t,s,h===`budget`),budgetStatusLabel:q$(t),showGuardrails:l,guardrailLabel:l?k$(e):``,showCache:!!i.forceCache||!!a.cache||B$(t),cacheNodeClass:U$(t,h===`cache`),cacheConnClass:W$(t),cacheStatusLabel:G$(t),showFailover:p,failoverNodeClass:p?J$(t):``,failoverConnClass:p?Y$(t):``,failoverStatusLabel:p?X$(t):null,failoverTargetLabel:p?Z$(t):null,aiLabel:A$(e,t),aiSublabel:j$(e,t),aiConnClass:Q$(t),aiNodeClass:$$(t,h===`ai`),responseConnClass:Q$(t),responseNodeClass:e1(t,h===`response`),responseNodeSublabel:t1(t),authNodeClass:n1(t,h===`auth`),authNodeSublabel:r1(t),usageNodeClass:i1(u,y,g),auditNodeClass:i1(d,v,_),showAsync:f,showUsage:u,showAudit:d,workflowID:m}}function d1(e,t){return u1(e,null,{forceCache:!1},t)}function f1(e,t,n){return u1(t,z$(e,t),{entry:e,features:N$(e)||(t?UQ(t,n):{cache:!1,audit:!1,usage:!1,budget:!1,guardrails:!1,failover:!1}),forceAudit:!0,forceAsync:!0,highlightAsyncPresent:!0},n)}var p1=z(`

                `),m1=z(`

                `),h1=z(`
                `),g1=z(`
                `),_1=z(`

                No guardrails configured for this workflow.

                `),v1=z(`

                Guardrails

                `),y1=z(``),b1=z(`

                `);function x1(e,t){D(t,!0);let n=K(t,`preview`,3,!1),r=k(()=>p$.featureCaps()),i=k(()=>$Q(t.workflow)),a=k(()=>KQ(t.workflow,L(r))),o=k(()=>d1(t.workflow,L(r))),s=k(()=>n()?`draft-workflow-preview-guardrail-`:t.workflow.id+`-guardrail-`);var c=b1();let l;var u=N(c),d=N(u),f=N(d),p=N(f,!0);E(f);var m=F(f,2),h=N(m,!0);E(m),E(d);var g=F(d,2),_=N(g),v=N(_,!0);E(_),E(g),E(u);var y=F(u,2),b=e=>{var n=p1(),r=N(n,!0);E(n),I(()=>V(r,t.workflow.description)),B(e,n)};H(y,e=>{t.workflow.description&&e(b)});var x=F(y,2),S=e=>{var n=m1(),i=N(n);E(n),I(e=>V(i,`Failover: ${e??``}`),[()=>WQ(t.workflow,L(r))]),B(e,n)},C=k(()=>p$.failoverVisible());H(x,e=>{L(C)&&e(S)});var w=F(x,2);O$(w,{get chart(){return L(o)}});var T=F(w,2),ee=e=>{var t=v1(),n=N(t),r=F(N(n),2),i=N(r,!0);E(r),E(n);var o=F(n,2),c=e=>{var t=g1();U(t,23,()=>L(a),(e,t)=>L(s)+t,(e,t)=>{var n=h1(),r=N(n),i=N(r,!0);E(r);var a=F(r,2),o=N(a);E(a),E(n),I(()=>{V(i,L(t).ref),V(o,`step ${L(t).step??``}`)}),B(e,n)}),E(t),B(e,t)},l=e=>{B(e,_1())};H(o,e=>{L(a).length>0?e(c):e(l,-1)}),E(t),I(()=>V(i,L(a).length?L(a).length+` steps`:`None`)),B(e,t)},te=k(()=>lO.guardrailsVisible());H(T,e=>{L(te)&&e(ee)});var ne=F(T,2),re=e=>{var n=y1(),r=N(n),a=N(r),o=N(a,!0);E(a);var s=F(a,2);{let e=k(()=>`Edit workflow `+L(i));dK(s,{get label(){return L(e)},class:`table-icon-btn`,onclick:()=>p$.openCreate(t.workflow),children:(e,t)=>{q(e,{get icon(){return GE},class:`table-icon-svg`})},$$slots:{default:!0}})}E(r);var c=F(r,2),l=N(c),u=N(l);E(l);var d=F(l,2),f=N(d);E(d);var p=F(d,2),m=N(p);E(p),E(c),E(n),I((e,n,r,s)=>{a.disabled=e,G(a,`aria-label`,`Deactivate workflow `+L(i)),G(a,`title`,n),V(o,p$.deactivatingID===t.workflow.id?`Deactivating...`:`Deactivate`),V(u,`version: v${t.workflow.version??``}`),V(f,`created: ${r??``}`),V(m,`hash: ${s??``}`)},[()=>p$.deactivatingID===t.workflow.id||!s$(t.workflow),()=>s$(t.workflow)?`Deactivate active workflow`:`The global workflow cannot be deactivated.`,()=>QD.formatTimestamp(t.workflow.created_at),()=>c$(t.workflow.workflow_hash)]),R(`click`,a,()=>p$.deactivate(t.workflow)),B(e,n)};H(ne,e=>{n()||e(re)}),E(c),I((e,t)=>{l=W(c,1,`workflow-card svelte-1fo9fvq`,null,l,{"workflow-preview-card":n()}),V(p,e),V(h,L(i)),V(v,t)},[()=>ZQ(t.workflow),()=>QQ(t.workflow)]),B(e,c),O()}Vr([`click`]);var S1=z(`

                `),C1=z(``),w1=z(``),T1=z(``),E1=z(``),D1=z(``),O1=z(``),k1=z(``),A1=z(``),j1=z(``),M1=z(``),N1=z(``),P1=z(``),F1=z(`
                No named guardrails are currently registered on this deployment. You can still draft a workflow, but guardrail-backed creation may be rejected.
                `),I1=z(`
                `),L1=z(`
                `),R1=z(`

                No guardrail steps configured yet.

                `),z1=z(`

                Guardrail Steps

                Guardrails in the same numeric step run together. Later steps wait for earlier ones to finish.

                `),B1=z(`

                Leave provider name empty to target all providers and models. Select a provider name without a model to target all models for that configured provider.

                Add a path to scope the workflow to that subtree. Leading slashes are optional and will be normalized; you can enter "team/alpha" or "/team/alpha". Matching checks the deepest user path first, then falls back toward the root.

                If you leave the name empty, the workflow will display as the matched provider/model scope or “All models”.

                Preview

                Live
                `,1);function V1(e,t){D(t,!0);{let t=e=>{HU(e,{copyId:`workflow-help-copy`,label:`workflow help`,text:`Create immutable version. Submitting activates it for the selected scope.`,title:e=>{var t=S1(),n=N(t,!0);E(t),I(e=>V(n,e),[()=>p$.submitMode()===`save`?`Edit Workflow`:`Create Workflow`]),B(e,t)},$$slots:{title:!0}})},n=k(()=>p$.submitLabel()),r=k(()=>p$.submittingLabel()),i=k(()=>p$.submitMode()===`create`?qE:ZE);hq(e,{get open(){return p$.formOpen},ariaLabel:`Workflow editor`,get error(){return p$.formError},get submitting(){return p$.submitting},get submitLabel(){return L(n)},get submittingLabel(){return L(r)},get submitIcon(){return L(i)},dialogClass:`workflow-editor`,onclose:()=>p$.closeForm(),onsubmit:()=>p$.submitForm(),header:t,children:(e,t)=>{var n=B1(),r=P(n),i=N(r);_q(i,{id:`workflow-scope-provider`,label:`Provider Name`,children:(e,t)=>{var n=w1(),r=N(n);r.value=r.__value=``,U(F(r),16,()=>p$.providerOptions(),e=>e,(e,t)=>{var n=C1(),r=N(n,!0);E(n);var i={};I(()=>{V(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),B(e,n)}),E(n),R(`change`,n,e=>p$.setProvider(e.currentTarget.value)),Wi(n,()=>p$.form.scope_provider,e=>p$.form.scope_provider=e),B(e,n)},$$slots:{default:!0}});var a=F(i,2),o=e=>{_q(e,{id:`workflow-scope-model`,label:`Model`,children:(e,t)=>{var n=T1(),r=N(n);r.value=r.__value=``,U(F(r),17,()=>p$.modelOptions(p$.form.scope_provider),e=>p$.form.scope_provider+`-`+e,(e,t)=>{var n=C1(),r=N(n,!0);E(n);var i={};I(()=>{V(r,L(t)),i!==(i=L(t))&&(n.value=(n.__value=L(t))??``)}),B(e,n)}),E(n),Wi(n,()=>p$.form.scope_model,e=>p$.form.scope_model=e),B(e,n)},$$slots:{default:!0}})};H(a,e=>{p$.form.scope_provider&&e(o)});var s=F(a,2);_q(s,{id:`workflow-name`,label:`Name`,children:(e,t)=>{var n=E1();ta(n),ua(n,()=>p$.form.name,e=>p$.form.name=e),B(e,n)},$$slots:{default:!0}}),_q(F(s,2),{id:`workflow-user-path`,label:`User Path`,children:(e,t)=>{var n=D1();ta(n),ua(n,()=>p$.form.scope_user_path,e=>p$.form.scope_user_path=e),B(e,n)},$$slots:{default:!0}}),E(r);var c=F(r,8);_q(c,{id:`workflow-description`,label:`Description`,children:(e,t)=>{var n=O1();dt(n),ua(n,()=>p$.form.description,e=>p$.form.description=e),B(e,n)},$$slots:{default:!0}});var l=F(c,2),u=N(l),d=e=>{var t=k1(),n=N(t);ta(n),He(2),E(t),da(n,()=>p$.form.features.cache,e=>p$.form.features.cache=e),B(e,t)},f=k(()=>lO.cacheVisible());H(u,e=>{L(f)&&e(d)});var p=F(u,2),m=e=>{var t=A1(),n=N(t);ta(n),He(2),E(t),da(n,()=>p$.form.features.audit,e=>p$.form.features.audit=e),B(e,t)},h=k(()=>lO.auditVisible());H(p,e=>{L(h)&&e(m)});var g=F(p,2),_=e=>{var t=j1(),n=N(t);ta(n),He(2),E(t),da(n,()=>p$.form.features.usage,e=>p$.form.features.usage=e),B(e,t)},v=k(()=>lO.usageVisible());H(g,e=>{L(v)&&e(_)});var y=F(g,2),b=e=>{var t=M1(),n=N(t);ta(n),He(2),E(t),da(n,()=>p$.form.features.budget,e=>p$.form.features.budget=e),B(e,t)},x=k(()=>lO.budgetsVisible());H(y,e=>{L(x)&&e(b)});var S=F(y,2),C=e=>{var t=N1(),n=N(t);ta(n),He(2),E(t),da(n,()=>p$.form.features.guardrails,e=>p$.form.features.guardrails=e),B(e,t)},w=k(()=>lO.guardrailsVisible());H(S,e=>{L(w)&&e(C)});var T=F(S,2),ee=e=>{var t=P1(),n=N(t);ta(n),He(2),E(t),da(n,()=>p$.form.features.failover,e=>p$.form.features.failover=e),B(e,t)},te=k(()=>p$.failoverVisible());H(T,e=>{L(te)&&e(ee)}),E(l);var ne=F(l,2),re=F(N(ne),2);{let e=k(()=>p$.preview());x1(re,{get workflow(){return L(e)},preview:!0})}E(ne);var ie=F(ne,2),ae=e=>{var t=z1(),n=N(t),r=F(N(n),2);E(n);var i=F(n,2),a=e=>{var t=F1(),n=F(N(t),2);E(t),R(`click`,n,()=>kD.navigate(`guardrails`)),B(e,t)};H(i,e=>{p$.guardrailRefs.length===0&&e(a)});var o=F(i,2),s=e=>{var t=L1();U(t,21,()=>p$.form.guardrails,ai,(e,t,n)=>{var r=I1(),i=N(r),a=N(i);G(a,`for`,`workflow-guardrail-ref-`+n);var o=F(a,2);ta(o),G(o,`id`,`workflow-guardrail-ref-`+n),G(o,`aria-label`,`Guardrail reference `+(n+1)),E(i);var s=F(i,2),c=N(s);G(c,`for`,`workflow-guardrail-step-`+n);var l=F(c,2);ta(l),G(l,`id`,`workflow-guardrail-step-`+n),G(l,`aria-label`,`Guardrail step `+(n+1)),E(s);var u=F(s,2);E(r),ua(o,()=>L(t).ref,e=>L(t).ref=e),ua(l,()=>L(t).step,e=>L(t).step=e),R(`click`,u,()=>p$.removeGuardrailStep(n)),B(e,r)}),E(t),B(e,t)},c=e=>{B(e,R1())};H(o,e=>{p$.form.guardrails.length>0?e(s):e(c,-1)}),E(t),R(`click`,r,()=>p$.addGuardrailStep()),B(e,t)},oe=k(()=>p$.form.features.guardrails&&lO.guardrailsVisible());H(ie,e=>{L(oe)&&e(ae)}),B(e,n)},$$slots:{header:!0,default:!0}})}O()}Vr([`change`,`click`]);var H1=z(`

                Loading workflows...

                `),U1=z(`
                `),W1=z(`

                No active workflows found.

                `),G1=z(`

                No workflows match your filter.

                `),K1=z(`
                `);function q1(e,t){D(t,!0);var n=K1(),r=N(n),i=e=>{var t=H1();_U(N(t),{size:16,label:`Loading workflows`}),He(),E(t),B(e,t)};H(r,e=>{p$.loading&&!Y.authError&&e(i)});var a=F(r,2),o=e=>{var t=U1();U(t,21,()=>p$.filteredWorkflows,e=>e.id,(e,t)=>{x1(e,{get workflow(){return L(t)}})}),E(t),B(e,t)};H(a,e=>{p$.filteredWorkflows.length>0&&e(o)});var s=F(a,2),c=e=>{B(e,W1())};H(s,e=>{p$.workflows.length===0&&!p$.loading&&!Y.authError&&p$.available&&e(c)});var l=F(s,2),u=e=>{B(e,G1())};H(l,e=>{p$.workflows.length>0&&p$.filteredWorkflows.length===0&&!p$.loading&&e(u)}),E(n),B(e,n),O()}var J1=z(``),Y1=z(`
                Workflows feature is unavailable.
                `),X1=z(`
                `),Z1=z(`
                `),Q1=z(``),$1=z(`
                `);function e0(e,t){D(t,!0),kn(()=>{Y.refreshTick,p$.fetchPage()});var n=$1(),r=N(n),i=F(N(r),2),a=N(i),o=e=>{var t=J1();q(N(t),{get icon(){return qE},class:`form-action-icon`,"aria-hidden":`true`}),He(2),E(t),R(`click`,t,()=>p$.openCreate()),B(e,t)};H(a,e=>{p$.available&&e(o)}),E(i),E(r);var s=F(r,2),c=e=>{B(e,Y1())};H(s,e=>{!p$.available&&!Y.authError&&e(c)});var l=F(s,2),u=e=>{var t=X1(),n=N(t,!0);E(t),I(()=>V(n,p$.error)),B(e,t)};H(l,e=>{p$.error&&!Y.authError&&e(u)});var d=F(l,2),f=e=>{var t=Z1(),n=N(t);mG(N(n),{placeholder:`Filter by scope, name, hash, or guardrail...`,label:`Filter workflows by scope, name, hash, or guardrail`,get value(){return p$.filter},set value(e){p$.filter=e}}),E(n);var r=F(n,2),i=N(r),a=N(i,!0);E(i),E(r),E(t),I(()=>V(a,p$.filteredWorkflows.length+` active scopes`)),B(e,t)};H(d,e=>{p$.available&&e(f)});var p=F(d,2);V1(p,{});var m=F(p,2);q1(m,{});var h=F(m,2);U(h,20,()=>p$.guardrailRefs,e=>e,(e,t)=>{var n=Q1(),r={};I(()=>{r!==(r=t)&&(n.value=(n.__value=t)??``)}),B(e,n)}),E(h),E(n),B(e,n),O()}Vr([`click`]);function t0(e,{from:t,to:n},r={}){var{delay:i=0,duration:a=e=>Math.sqrt(e)*120,easing:o=BO}=r,s=getComputedStyle(e),c=s.transform===`none`?``:s.transform,[l,u]=s.transformOrigin.split(` `).map(parseFloat);l/=e.clientWidth,u/=e.clientHeight;var d=n0(e),f=e.clientWidth/n.width/d,p=e.clientHeight/n.height/d,m=t.left+t.width*l,h=t.top+t.height*u,g=n.left+n.width*l,_=n.top+n.height*u,v=(m-g)*f,y=(h-_)*p,b=t.width/n.width,x=t.height/n.height;return{delay:i,duration:typeof a==`function`?a(Math.sqrt(v*v+y*y)):a,easing:o,css:(e,t)=>`transform: ${c} translate(${t*v}px, ${t*y}px) scale(${e+t*b}, ${e+t*x});`}}function n0(e){if(`currentCSSZoom`in e)return e.currentCSSZoom;for(var t=e,n=1;t!==null;)n*=+getComputedStyle(t).zoom,t=t.parentElement;return n}var r0=null;function i0(){return r0===null&&(r0=typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`)),!!(r0&&r0.matches)}function a0(e){return i0()?0:e}function o0(e,t){return!t||!t.live?{duration:0}:RO(e,{duration:a0(150)})}var s0=new class{#e=A(M({}));get workflowVersionsByID(){return L(this.#e)}set workflowVersionsByID(e){j(this.#e,e,!0)}workflowVersionRequests={};workflowFeatureCaps(){return{cache:lO.cacheVisible(),audit:lO.auditVisible(),usage:lO.usageVisible(),budget:lO.budgetsVisible(),guardrails:lO.guardrailsVisible(),failover:lO.booleanFlag(`FAILOVER_ENABLED`,!0)}}cacheWorkflowVersion(e){let t=String(e&&e.id||``).trim();return t?(this.workflowVersionsByID={...this.workflowVersionsByID||{},[t]:e},e):null}cacheMissingWorkflowVersion(e){let t=String(e||``).trim();t&&(this.workflowVersionsByID={...this.workflowVersionsByID||{},[t]:null})}workflowVersionCacheHas(e){return Object.prototype.hasOwnProperty.call(this.workflowVersionsByID||{},String(e||``).trim())}workflowVersionByID(e){let t=String(e||``).trim();return t&&this.workflowVersionCacheHas(t)?this.workflowVersionsByID[t]:null}async fetchWorkflowVersion(e){let t=String(e||``).trim();if(!t)return null;if(this.workflowVersionCacheHas(t))return this.workflowVersionsByID[t];if(this.workflowVersionRequests[t])return this.workflowVersionRequests[t];let n=(async()=>{let e=typeof AbortController==`function`?new AbortController:null,n=e?setTimeout(()=>e.abort(),1e4):null;try{let n=await iO(`/admin/workflows/`+encodeURIComponent(t),{label:`workflow`,signal:e?e.signal:void 0});if(n.stale)return null;if(n.status===404)return this.cacheMissingWorkflowVersion(t),null;if(!n.ok)return null;let r=n.data;return!r||typeof r!=`object`||Array.isArray(r)?(this.cacheMissingWorkflowVersion(t),null):this.cacheWorkflowVersion(r)}catch(e){return e&&e.name===`AbortError`||console.error(`Failed to fetch workflow version:`,e),null}finally{n!==null&&clearTimeout(n),delete this.workflowVersionRequests[t]}})();return this.workflowVersionRequests[t]=n,n}async prefetchAuditWorkflows(e){let t=[...new Set((Array.isArray(e)?e:[]).map(e=>String(e&&e.workflow_version_id||``).trim()).filter(Boolean))];t.length!==0&&await Promise.all(t.map(e=>this.fetchWorkflowVersion(e)))}auditEntryWorkflow(e){let t=String(e&&e.workflow_version_id||``).trim();return t?this.workflowVersionByID(t):null}},c0=6;function l0(e){if(typeof e!=`string`)return null;try{return JSON.parse(e)}catch{return null}}function u0(e,t=0,n=null){let r=String(e||``).trim();if(!r)return``;if(t>c0)return r;let i=l0(r);return i==null?r:d0(i,t+1,n)||n&&n(i)||r}function d0(e,t=0,n=null,r=null){if(e==null||t>c0)return``;if(typeof e==`string`){let i=l0(e.trim());return i==null?``:d0(i,t+1,n,r)}if(typeof e!=`object`)return``;let i=r||new Set;if(i.has(e))return``;if(i.add(e),Array.isArray(e)){for(let r=0;r=400||m0(t&&t.response_body)}function g0(e){let t=e&&e.data?e.data:null;return t?f0(t.error_message)||(h0(e,t)?d0(t.response_body,0):``):``}function _0(e){if(e==null||String(e).trim()===``)return null;let t=Number(e);return!Number.isInteger(t)||t<0?null:t}function v0(e){return _0(e)===null?``:y0(e)+b0(e)+`.`}function y0(e){let t=_0(e);return t===null?``:t===0?Ys():Qs()}function b0(e){let t=_0(e);return t===null?``:t===0?tc():ac({count:t})}function x0({dateQuery:e,limit:t,offset:n,search:r,method:i,statusCode:a,stream:o}){let s=e;return s+=`&limit=`+t+`&offset=`+n,r&&(s+=`&search=`+encodeURIComponent(r)),i&&(s+=`&method=`+encodeURIComponent(i)),a&&(s+=`&status_code=`+encodeURIComponent(a)),o&&(s+=`&stream=`+encodeURIComponent(o)),s}function S0({sessionId:e,limit:t}){return`session_id=`+encodeURIComponent(e)+`&limit=`+(t||100)+`&offset=0`}function C0(e){return String(e&&e.session_id||``).trim()}function w0(e){let t=Number(e&&e.session_count);return Number.isFinite(t)&&t>1?t:1}function T0(e){return!!C0(e)&&w0(e)>1}function E0(e){return{entries:(Array.isArray(e&&e.sessions)?e.sessions:[]).filter(e=>e&&e.latest).map(e=>({...e.latest,session_count:Math.max(1,Number(e.request_count)||1)})),total:Number(e&&e.total||0),limit:Number(e&&e.limit||25),offset:Number(e&&e.offset||0)}}function D0(e,t,n){let r=new Set((Array.isArray(n)?n:[]).flatMap(e=>j0(e))),i=(Array.isArray(t)?t:[]).filter(e=>!j0(e).some(e=>r.has(e))),a=new Set([...r,...i.flatMap(e=>j0(e))]),o=(e&&Array.isArray(e.entries)?e.entries:[]).filter(e=>e&&e._live&&!j0(e).some(e=>a.has(e)));return{entries:[...o,...i],preservedCount:o.length}}function O0(e,t){let n=e||{};if(!t)return n;if(n[t]){let e={...n};return delete e[t],e}return{...n,[t]:!0}}function k0(e,t){let n=e||{},r=new Set((Array.isArray(t)?t:[]).map(e=>C0(e)).filter(Boolean)),i={},a=!1;return Object.keys(n).forEach(e=>{if(r.has(e)){i[e]=n[e];return}a=!0}),a?i:n}function A0(e){return String(e&&e.id||``).trim()}function j0(e){if(!e)return[];let t=[],n=String(e.id||``).trim(),r=String(e.request_id||``).trim();return n&&t.push(`id:`+n),r&&t.push(`request:`+r),t}function M0(e){return!!(e&&e._live&&e._live_pending&&!e._audit_flushed)}function N0(e){let t=e&&e.customStartDate,n=e&&e.customEndDate;if(!t&&!n)return!0;let r=new Date;if(t){let e=new Date(t);if(e.setHours(0,0,0,0),Number.isFinite(e.getTime())&&re)return!1}return!0}function P0(e,t){return e&&Number(e.offset||0)===0&&!(t&&t.search)&&!(t&&t.method)&&!(t&&t.statusCode)&&!(t&&t.stream)&&N0(t)}function F0(e,t,n){let r=e&&typeof e==`object`?{...e}:{entries:[],total:0,limit:25,offset:0},i=Array.isArray(r.entries)?r.entries:[];if(r.entries=i,!P0(r,n))return r;let a=(Array.isArray(t)?t:[]).filter(e=>M0(e));if(a.length===0)return r;let o=new Set(i.flatMap(e=>j0(e))),s=[];return a.forEach(e=>{let t=j0(e);t.length!==0&&(t.some(e=>o.has(e))||(t.forEach(e=>o.add(e)),s.push(e)))}),s.length===0?r:(r.entries=[...s,...i].slice(0,r.limit||25),r.total=Number(r.total||0)+s.length,r)}function I0(e,t,n){let r=e&&typeof e==`object`?{...e}:{entries:[],total:0,limit:25,offset:0},i=Array.isArray(r.entries)?r.entries:[];if(r.entries=i,!P0(r,n))return r;let a=(Array.isArray(t)?t:[]).filter(e=>M0(e));if(a.length===0)return r;let o=new Set(i.flatMap(e=>j0(e))),s=new Map;i.forEach((e,t)=>{let n=C0(e);n&&!s.has(n)&&s.set(n,t)});let c=[],l=i;return a.forEach(e=>{let t=j0(e);if(t.length===0||t.some(e=>o.has(e)))return;let n=C0(e);if(n&&s.has(n)){let r=s.get(n);l===i&&(l=[...i]);let a=w0(l[r]),c=Number(e&&e.session_count),u=Number.isFinite(c)&&c>1?c:null;l[r]={...e,session_count:u===null?a+1:Math.max(a,u)},t.forEach(e=>o.add(e));return}t.forEach(e=>o.add(e)),c.push(e)}),r.entries=[...c,...l].slice(0,r.limit||25),r.total=Number(r.total||0)+c.length,r}function L0(e,t){let n=A0(t),r=e||{};return n?r[n]?{}:{[n]:!0}:r}function R0(e,t){let n=e||{},r=new Set((Array.isArray(t)?t:[]).map(e=>A0(e)).filter(Boolean)),i={},a=!1;return Object.keys(n).forEach(e=>{if(r.has(e)){i[e]=!0;return}a=!0}),a?i:n}function z0(e){if(e==null)return`-`;let t=Number(e);return Number.isFinite(t)?t<=0?`pending`:t<1e6?Math.round(t/1e3)+` µs`:t<1e9?(t/1e6).toFixed(2)+` ms`:(t/1e9).toFixed(2)+` s`:`-`}function B0(e){if(e==null||e===``)return`status-unknown`;let t=Number(e);return Number.isFinite(t)?t>=500?`status-error`:t>=400?`status-warning`:t>=300?`status-neutral`:`status-success`:`status-unknown`}function V0(e){if(!e||!e._live||!e._live_pending)return!1;let t=String(e._live_state||``).trim();if(t===`audit.completed`||t===`audit.flushed`||t===`audit.detail`)return!1;if(e._response_partial)return!0;if(e.status_code!==null&&e.status_code!==void 0&&e.status_code!==``||Number(e.duration_ns||0)>0||e.error_type||e.error_message)return!1;let n=e.data||{};return!(n.response_headers||n.response_body||n.error_message)}function H0(e){let t=e&&e.data&&e.data.failover;return!t||typeof t!=`object`||Array.isArray(t)?null:String(t.target_model||t.targetModel||``).trim()||null}function U0(e){return(e&&e.data&&Array.isArray(e.data.attempts)?e.data.attempts:[]).map((e,t)=>({...e,seq:Number(e&&e.seq||t+1)})).sort((e,t)=>e.seq-t.seq)}function W0(e){let t=U0(e);return t.length>1||t.some(e=>!(e&&e.success))}function G0(e){if(!e)return`-`;let t=e.status_code||e.status;return t?String(t):e.success?`ok`:`error`}function K0(e){return String(e&&e.kind||``).trim()||`attempt`}function q0(e){if(!e)return`-`;let t=String(e.provider_name||``).trim(),n=String(e.provider_type||e.provider||``).trim();return t&&n&&t!==n?t+` (`+n+`)`:t||n||`-`}function J0(e){return String(e&&e.model||``).trim()||`-`}function Y0(e){let t=U0(e);return t.length>1||t.some(e=>!(e&&e.success))?t:[]}function X0(e){return U0(e).length+`×`}function Z0(e){let t=U0(e),n=t.filter(e=>!(e&&e.success)).length;return n>0?Eu({count:t.length,failed:n}):Cu({count:t.length})}function Q0(e){if(!e)return``;let t=[`#`+Number(e.seq||0)],n=K0(e);n&&n!==`attempt`&&t.push(n),t.push(G0(e));let r=q0(e);r&&r!==`-`&&t.push(r);let i=J0(e);return i&&i!==`-`&&t.push(i),t.push(e.success?ku():Mu()),t.join(` · `)}function $0(e,t){if(!t)return null;if(t.success){let t=e&&e.data?e.data:null;return t&&t.response_body!=null?t.response_body:null}return t.response_body!=null&&t.response_body!==``?t.response_body:null}function e2(e){if(!e||e.success)return``;let t=String(e.error_message||``).trim(),n=String(e.error_code||``).trim(),r=String(e.error_type||``).trim();return t&&n?n+`: `+t:t||n||r||bu()}function t2(e,t){if(!t)return null;if(t.success){let t=e&&e.data?e.data:null;return t?t.response_headers:null}return t.response_headers||null}function n2(e){let t=Number(e&&e.status_code);return Number.isFinite(t)&&t>0?t:null}function r2(e,t){let n=!!(t&&t.success),r=e&&e.data?e.data:null,i=$0(e,t),a=t2(e,t),o=e2(t),s=i!=null&&i!==``,c=K0(t),l=U0(e).length<=1;return{title:du(),direction:`response`,seq:l?0:Number(t&&t.seq||0),kind:l||c===`attempt`?``:c,statusCode:l?null:n2(t),layout:`split`,entry:e,copyHeaders:a,copyBody:i,showErrorMessage:!!o,errorMessage:o,showHeaders:!!a,headers:a,showBody:s,body:i,showEmpty:!o&&!s&&!a,emptyMessage:Fu(),showTooLarge:!!(n&&r&&r.response_body_too_big_to_handle),tooLargeMessage:$u()}}function i2(e){return e&&e.data&&Array.isArray(e.data.request_revisions)?e.data.request_revisions:[]}function a2(e){return i2(e).filter(e=>!(e&&e.no_change))}function o2(e){return i2(e).filter(e=>e&&e.no_change).map(e=>{let t=String(e.rewriter||`rewriter`);return{id:`step-`+Number(e.seq||0),rewriter:t,label:ad({rewriter:t}),title:cd({rewriter:t})}})}function s2(e){let t=Number(e&&e.bytes_before),n=Number(e&&e.bytes_after);if(!Number.isFinite(t)||!Number.isFinite(n)||t<=0||n>=t)return``;let r=(1-n/t)*100;return`-`+(r>=10?String(Math.round(r)):r.toFixed(1))+`%`}function c2(e,t){let n=t&&t.body,r=n!=null&&n!==``,i=a2(e).length<=1,a={rewriter:t&&t.rewriter||``,bytes:Number(t&&t.bytes_before||0)+` → `+Number(t&&t.bytes_after||0)};return t&&t.detail!=null&&(a.detail=t.detail),{title:mu(),direction:`request`,seq:i?0:Number(t&&t.seq||0),kind:t&&t.rewriter?String(t.rewriter):``,savingsLabel:s2(t),layout:`split`,entry:e,copyHeaders:a,copyBody:n,showErrorMessage:!1,errorMessage:null,showHeaders:!0,headers:a,headersTitle:_u(),showBody:r,body:n,showEmpty:!1,emptyMessage:``,showTooLarge:!r,tooLargeMessage:nd()}}function l2(e){let t=e&&e.usage;return!t||typeof t!=`object`?null:t}function u2(e){let t=l2(e);return Number(t&&t.cached_input_tokens||0)>0}function d2(e){let t=l2(e),n=Number(t&&t.input_tokens||0),r=Number(t&&t.cached_input_tokens||0);return!Number.isFinite(n)||n<=0||!Number.isFinite(r)||r<=0?0:Math.max(0,Math.min(100,r/n*100))}function f2(e){let t=l2(e);if(!t)return``;let n=Number(t.input_tokens||0),r=Number(t.cached_input_tokens||0);return n<=0?dd({count:ZO(r)}):md({percent:d2(e).toFixed(1)})}function p2(e){return u2(e)?f2(e):``}function m2(e,t){let n=l2(e);if(!n||!e||!e.data||!e.data.request_body)return null;let r=Number(n.estimated_cached_characters||0);if(!Number.isFinite(r)||r<=0||typeof t!=`function`)return null;let i=t(e.data.request_body);return!Array.isArray(i)||i.length===0?null:{characters:r,segments:i}}function h2(e,t){let n=e&&e.data?e.data:null,r=!n||!n.request_headers&&!n.request_body,i=r&&V0(e);return{title:cu(),direction:`request`,layout:`split`,entry:e,copyHeaders:n&&n.request_headers,copyBody:n&&n.request_body,showErrorMessage:!1,errorMessage:null,showHeaders:!!(n&&n.request_headers),headers:n&&n.request_headers,showBody:!!(n&&n.request_body),body:n&&n.request_body,bodyCacheRatioLabel:p2(e),promptCacheHighlight:m2(e,t),noChangeSteps:o2(e),showEmpty:r&&!i,emptyMessage:Ru(),showPending:i,pendingMessage:Vu(),showTooLarge:!!(n&&n.request_body_too_big_to_handle),tooLargeMessage:Wu()}}function g2(e){let t=e&&e.data?e.data:null,n=g0(e),r=!t||!n&&!t.response_headers&&!t.response_body,i=r&&V0(e);return{title:du(),direction:`response`,layout:`split`,entry:e,copyHeaders:t&&t.response_headers,copyBody:t&&t.response_body,showErrorMessage:!!n,errorMessage:n,showHeaders:!!(t&&t.response_headers),headers:t&&t.response_headers,showBody:!!(t&&t.response_body),body:t&&t.response_body,streaming:!!(e&&e._response_partial&&t&&t.response_body)&&V0(e),showEmpty:r&&!i,emptyMessage:qu(),showPending:i,pendingMessage:Xu(),showTooLarge:!!(t&&t.response_body_too_big_to_handle),tooLargeMessage:$u()}}function _2(e,t){let n=[{id:`request`,pane:h2(e,t)}];return a2(e).forEach(t=>{n.push({id:`revision-`+Number(t&&t.seq||0),pane:c2(e,t)})}),W0(e)?U0(e).forEach(t=>{n.push({id:`response-`+Number(t&&t.seq||0),pane:r2(e,t)})}):n.push({id:`response`,pane:g2(e)}),n}function v2(e){if(!W0(e))return`response`;let t=U0(e),n=null;return t.forEach(e=>{e&&e.success&&(n=e)}),n||=t[t.length-1],n?`response-`+Number(n.seq||0):`request`}function y2(e,t,n){return e&&(Array.isArray(n)?n:_2(t)).some(t=>t.id===e)?e:v2(t)}function b2(e,t,n){if(!t||!t.length)return null;let r=t.indexOf(n);r<0&&(r=0);let i;switch(e){case`ArrowRight`:case`ArrowDown`:i=(r+1)%t.length;break;case`ArrowLeft`:case`ArrowUp`:i=(r-1+t.length)%t.length;break;case`Home`:i=0;break;case`End`:i=t.length-1;break;default:return null}return t[i]}var x2=100;function S2(){return{entries:[],total:0,limit:25,offset:0}}var C2=new class{#e=A(M({}));get auditExpandedEntries(){return L(this.#e)}set auditExpandedEntries(e){j(this.#e,e,!0)}#t=A(M({}));get auditExpandedThreads(){return L(this.#t)}set auditExpandedThreads(e){j(this.#t,e,!0)}#n=A(!1);get loading(){return L(this.#n)}set loading(e){j(this.#n,e,!0)}auditFetchToken=0;get auditLog(){return DW.auditLog}set auditLog(e){DW.auditLog=e}get auditSearch(){return DW.auditSearch}set auditSearch(e){DW.auditSearch=e}get auditMethod(){return DW.auditMethod}set auditMethod(e){DW.auditMethod=e}get auditStatusCode(){return DW.auditStatusCode}set auditStatusCode(e){DW.auditStatusCode=e}get auditStream(){return DW.auditStream}set auditStream(e){DW.auditStream=e}get auditGroupSessions(){return DW.auditGroupSessions}liveFilters(){return{search:this.auditSearch,method:this.auditMethod,statusCode:this.auditStatusCode,stream:this.auditStream,customStartDate:kk.customStartDate,customEndDate:kk.customEndDate}}toggleAuditGroupSessions(){DW.auditGroupSessions=!DW.auditGroupSessions,wa(`gomodel_audit_group_sessions`,DW.auditGroupSessions),this.auditExpandedThreads={},DW.auditThreadChildren={},this.fetchAuditLog(!0)}async fetchAuditLog(e){let t=++this.auditFetchToken;this.loading=!0;try{e&&(this.auditLog.offset=0);let n=this.auditGroupSessions,r=x0({dateQuery:kk.queryStr(),limit:this.auditLog.limit,offset:this.auditLog.offset,search:this.auditSearch,method:this.auditMethod,statusCode:this.auditStatusCode,stream:this.auditStream}),i=await iO((n?`/admin/audit/sessions?`:`/admin/audit/log?`)+r,{label:`audit log`});if(i.stale||t!==this.auditFetchToken)return;if(!i.ok){this.auditLog=S2();return}let a=n?E0(i.data):i.data,o=(n?I0:F0)(a,this.auditLog&&this.auditLog.entries,this.liveFilters());Array.isArray(o.entries)||(o.entries=[]),o.entries=DW.upsertAuditRecords(o.entries,`audit.list`),this.auditLog=o,this.auditExpandedThreads=k0(this.auditExpandedThreads,o.entries),DW.auditThreadChildren=k0(DW.auditThreadChildren,o.entries);let s=[...o.entries,...this.loadedThreadChildren()];this.auditExpandedEntries=R0(this.auditExpandedEntries,s);try{await s0.prefetchAuditWorkflows(s)}catch(e){console.error(`Failed to prefetch audit workflows:`,e)}}catch(e){if(console.error(`Failed to fetch audit log:`,e),t!==this.auditFetchToken)return;this.auditLog=S2()}finally{t===this.auditFetchToken&&(this.loading=!1)}}loadedThreadChildren(){let e=DW.auditThreadChildren||{};return Object.keys(e).flatMap(t=>Array.isArray(e[t]&&e[t].entries)?e[t].entries:[])}isThreadExpanded(e){return!!(e&&this.auditExpandedThreads[e])}threadChildren(e){return e&&DW.auditThreadChildren[e]||null}async toggleThread(e){let t=C0(e);if(!t)return;let n=!this.isThreadExpanded(t);this.auditExpandedThreads=O0(this.auditExpandedThreads,t);let r=DW.auditThreadChildren[t];n&&!(r&&(r.loaded||r.loading))&&await this.fetchThreadEntries(e)}async fetchThreadEntries(e){let t=C0(e);if(!t)return;let n=DW.auditThreadChildren[t];DW.auditThreadChildren={...DW.auditThreadChildren,[t]:{loading:!0,loaded:!1,entries:n&&Array.isArray(n.entries)?n.entries:[],total:Number(n&&n.total||0)}};let r=()=>{let e={...DW.auditThreadChildren},n=e[t],r=n&&Array.isArray(n.entries)?n.entries:[];r.length>0?e[t]={loading:!1,loaded:!1,entries:r,total:r.length}:(delete e[t],this.auditExpandedThreads[t]&&(this.auditExpandedThreads=O0(this.auditExpandedThreads,t))),DW.auditThreadChildren=e};try{let n=await iO(`/admin/audit/log?`+S0({sessionId:t,limit:x2}),{label:`audit session`});if(n.stale){r();return}if(!n.ok)throw Error(`audit session fetch failed`);let i=DW.auditThreadChildren[t],a=this.auditLog.entries.find(e=>C0(e)===t),o=D0(i,n.data.entries,a?[a]:[e]);o.entries=DW.upsertAuditRecords(o.entries,`audit.thread`),DW.auditThreadChildren={...DW.auditThreadChildren,[t]:{loading:!1,loaded:!0,entries:o.entries,total:Number(n.data.total||0)+o.preservedCount}}}catch(e){console.error(`Failed to fetch audit session entries:`,e),r()}}clearAuditFilters(){this.auditSearch=``,this.auditMethod=``,this.auditStatusCode=``,this.auditStream=``,this.fetchAuditLog(!0)}auditLogNextPage(){this.auditLog.offset+this.auditLog.limit0&&(this.auditLog.offset=Math.max(0,this.auditLog.offset-this.auditLog.limit),this.fetchAuditLog(!1))}isAuditEntryExpanded(e){let t=A0(e);return t?!!(this.auditExpandedEntries&&this.auditExpandedEntries[t]):!1}toggleAuditEntryExpanded(e){this.auditExpandedEntries=L0(this.auditExpandedEntries,e);let t=this.isAuditEntryExpanded(e);return t&&typeof DW.fetchAuditEntryDetail==`function`&&DW.fetchAuditEntryDetail(e),t}expandAuditEntry(e){this.isAuditEntryExpanded(e)||this.toggleAuditEntryExpanded(e)}};DW.fetchAuditLog=e=>C2.fetchAuditLog(e),DW.isAuditEntryExpanded=e=>C2.isAuditEntryExpanded(e);var w2=z(`
                `);function T2(e,t){D(t,!0);let n=hG(()=>C2.fetchAuditLog(!0));kn(()=>n.cancel);var r=w2(),i=N(r),a=N(i);{let e=k(()=>Ec()),t=k(()=>kc());mG(a,{id:`audit-filter-search`,get placeholder(){return L(e)},get label(){return L(t)},get oninput(){return n},get value(){return C2.auditSearch},set value(e){C2.auditSearch=e}})}E(i);var o=F(i,2),s=N(o),c=N(s),l=N(c,!0);E(c),c.value=c.__value=``;var u=F(c);u.value=u.__value=`GET`;var d=F(u);d.value=d.__value=`POST`;var f=F(d);f.value=f.__value=`PUT`;var p=F(f);p.value=p.__value=`PATCH`;var m=F(p);m.value=m.__value=`DELETE`,E(s);var h=F(s,2),g=N(h),_=N(g,!0);E(g),g.value=g.__value=``;var v=F(g);v.value=v.__value=`200`;var y=F(v);y.value=y.__value=`201`;var b=F(y);b.value=b.__value=`400`;var x=F(b);x.value=x.__value=`401`;var S=F(x);S.value=S.__value=`403`;var C=F(S);C.value=C.__value=`404`;var w=F(C);w.value=w.__value=`429`;var T=F(w);T.value=T.__value=`500`;var ee=F(T);ee.value=ee.__value=`502`;var te=F(ee);te.value=te.__value=`503`;var ne=F(te);ne.value=ne.__value=`504`,E(h);var re=F(h,2),ie=N(re),ae=N(ie,!0);E(ie),ie.value=ie.__value=``;var oe=F(ie),se=N(oe,!0);E(oe),oe.value=oe.__value=`true`;var ce=F(oe),le=N(ce,!0);E(ce),ce.value=ce.__value=`false`,E(re);var ue=F(re,2),de=N(ue);q(de,{get icon(){return _D},class:`table-icon-svg`});var fe=F(de,2),pe=N(fe,!0);E(fe),E(ue),E(o),E(r),I((e,t,n,r,i,a,o,c,u)=>{G(s,`aria-label`,e),V(l,t),G(h,`aria-label`,n),V(_,r),G(re,`aria-label`,i),V(ae,a),V(se,o),V(le,c),V(pe,u)},[()=>Mc(),()=>Fc(),()=>Rc(),()=>Vc(),()=>Wc(),()=>qc(),()=>Xc(),()=>$c(),()=>Ss()]),R(`change`,s,()=>C2.fetchAuditLog(!0)),Wi(s,()=>C2.auditMethod,e=>C2.auditMethod=e),R(`change`,h,()=>C2.fetchAuditLog(!0)),Wi(h,()=>C2.auditStatusCode,e=>C2.auditStatusCode=e),R(`change`,re,()=>C2.fetchAuditLog(!0)),Wi(re,()=>C2.auditStream,e=>C2.auditStream=e),R(`click`,ue,()=>C2.clearAuditFilters()),B(e,r),O()}Vr([`change`,`click`]);var E2=z(` `),D2=z(` `),O2=z(` `);function k2(e,t){D(t,!0);let n=k(()=>DW.auditLivePauseReason()),r=k(()=>DW.liveLogsStreaming&&!L(n));var i=Zr(),a=P(i),o=e=>{var t=O2(),i=N(t);let a;var o=F(i,2),s=e=>{var t=E2(),n=N(t,!0);E(t),I(e=>V(n,e),[()=>nl()]),B(e,t)},c=e=>{var t=E2(),r=N(t,!0);E(t),I(e=>V(r,e),[()=>hW(L(n))]),B(e,t)},l=e=>{var t=D2(),n=N(t,!0);E(t),I(e=>V(n,e),[()=>al()]),B(e,t)};H(o,e=>{DW.liveLogsStreaming?L(n)?e(c,1):e(l,-1):e(s)}),E(t),I(()=>a=W(i,1,`live-dot svelte-tve6yv`,null,a,{"is-streaming":L(r)})),B(e,t)},s=k(()=>lO.liveLogsVisible());H(a,e=>{L(s)&&e(o)}),B(e,i),O()}var A2=z(` `),j2=z(``);function M2(e,t){D(t,!0);let n=k(()=>[{key:`provider`,text:sk(t.entry)||`-`},{key:`model`,text:t.entry.requested_model||t.entry.model||`-`,mono:!0},{key:`user_path`,text:t.entry.user_path,mono:!0},{key:`request_id`,text:`request_id: `+(t.entry.request_id||`-`),mono:!0},{key:`ip`,text:t.entry.client_ip&&`ip: `+t.entry.client_ip,mono:!0},{key:`auth_key_id`,text:t.entry.auth_key_id&&`auth_key_id: `+t.entry.auth_key_id,mono:!0},{key:`alias`,text:t.entry.alias_used&&`alias`,class:`audit-alias-badge`},{key:`resolved`,text:t.entry.alias_used&&t.entry.resolved_model&&`resolved: `+uk(t.entry),mono:!0},{key:`failover`,text:H0(t.entry)&&`failover: `+H0(t.entry),mono:!0},{key:`stream`,text:t.entry.stream&&`stream`},{key:`error_type`,text:t.entry.error_type}].filter(e=>!!e.text));var r=j2(),i=N(r),a=N(i,!0);E(i);var o=F(i,2);U(o,21,()=>L(n),e=>e.key,(e,t)=>{var n=A2(),r=N(n,!0);E(n),I(()=>{W(n,1,Pi([`provider-badge`,L(t).class,{mono:L(t).mono}]),`svelte-hyopt0`),V(r,L(t).text)}),B(e,n)}),E(o),E(r),I(e=>V(a,e),[()=>Fl()]),B(e,r),O()}var N2=z(``),P2=z(` `);function F2(e,t){D(t,!0);let n=k(()=>Y0(t.entry)),r=k(()=>L(n).length>0?Z0(t.entry):``),i=k(()=>L(n).length>0?X0(t.entry):``);var a=Zr(),o=P(a),s=e=>{var a=P2(),o=N(a);U(o,21,()=>L(n),e=>t.entry.id+`-pip-`+e.seq,(e,t)=>{var n=N2();let r;I(e=>{r=W(n,1,`audit-attempt-pip svelte-1eu22xn`,null,r,{"audit-attempt-success":!!(L(t)&&L(t).success),"audit-attempt-error":!(L(t)&&L(t).success)}),G(n,`title`,e)},[()=>Q0(L(t))]),B(e,n)}),E(o);var s=F(o,2),c=N(s,!0);E(s),E(a),I(()=>{G(a,`title`,L(r)),G(a,`aria-label`,L(r)),V(c,L(i))}),B(e,a)};H(o,e=>{L(n).length>0&&e(s)}),B(e,a),O()}var I2=new Set([`instructions`,`messages`,`input`,`previous_response_id`,`choices`,`output`]);function L2(e){if(!e||typeof e!=`object`)return``;let t=String(e.type||``).toLowerCase();if(t===`image`||t===`image_url`||t===`input_image`||t===`output_image`)return wp();if(t===`audio`||t===`input_audio`||t===`output_audio`)return Dp();if(t===`file`||t===`input_file`||t===`output_file`){let t=String(e.filename||e.name||``).trim();return t?Np({name:t}):Ap()}return typeof e.refusal==`string`?e.refusal:``}function R2(e){if(e==null)return``;if(typeof e==`string`)return e.trim();if(Array.isArray(e))return e.map(e=>typeof e==`string`?e:!e||typeof e!=`object`?``:typeof e.text==`string`?e.text:typeof e.output_text==`string`?e.output_text:L2(e)).filter(Boolean).join(` +`).trim();if(typeof e==`object`){if(typeof e.text==`string`)return e.text.trim();try{return JSON.stringify(e,null,2)}catch{return``}}return String(e).trim()}function z2(e){return!e||typeof e!=`object`?``:R2(e.content)||(typeof e.refusal==`string`?e.refusal.trim():``)}function B2(e){if(e==null)return[];if(typeof e==`string`)return e?[e]:[];if(Array.isArray(e))return e.flatMap(e=>typeof e==`string`?e?[e]:[]:!e||typeof e!=`object`?[]:typeof e.text==`string`?e.text?[e.text]:[]:typeof e.output_text==`string`&&e.output_text?[e.output_text]:[]);if(typeof e==`object`)return typeof e.text==`string`&&e.text?[e.text]:[];let t=String(e);return t?[t]:[]}function V2(e){if(e==null)return[];if(Array.isArray(e))return e.flatMap(V2);if(typeof e==`object`)return Object.entries(e).flatMap(([e,t])=>[e,...V2(t)]);let t=String(e);return t?[t]:[]}function H2(e){return R4(e).flatMap(e=>[...e.name?[String(e.name)]:[],...V2(e.arguments)])}function U2(e){return Array.isArray(e)?e.flatMap(e=>e&&typeof e==`object`&&e.type===`tool_use`?H2([e]):B2(e)):B2(e)}function W2(e){let t=e&&e.usage?e.usage.estimated_cached_characters:null;if(t==null)return null;let n=Number(t);return Number.isFinite(n)&&n>0?Math.floor(n):0}function G2(e,t){if(!e)return null;let n=(Array.isArray(t)?t:[]).reduce((e,t)=>e+String(t||``).length,0),r=Math.min(String(e).length,n);return r>0?{total:r}:null}function K2(e){let t=e&&e.arguments!==void 0?e.arguments:``,n=``;if(typeof t==`string`)n=t;else try{n=JSON.stringify(t)}catch{n=String(t)}return(String(e&&e.name||``)+`(`+n+`)`).length}function q2(e){return{characters:(Array.isArray(e)?e:[]).map(K2)}}function J2(e,t){let n=Math.max(0,Number(t||0));return e.map(e=>{if(!e||e.role===`error`)return e;let t=Math.max(0,Number(e._promptTextCharacters||0)),r=Math.min(n,t);n-=r;let i=0;(Array.isArray(e._toolPromptCharacters)?e._toolPromptCharacters:[]).forEach(e=>{let t=Math.max(0,Number(e||0)),r=Math.min(n,t);n-=r,i+=r});let a=t+(e._toolPromptCharacters||[]).reduce((e,t)=>e+Math.max(0,Number(t||0)),0);return{...e,promptCacheRatio:a>0?(r+i)/a:0}})}function Y2(e){if(e==null)return[];if(typeof e==`string`){let t=e.trim();return t?[{role:`user`,text:t}]:[]}if(!Array.isArray(e)){let t=R2(e);return t?[{role:`user`,text:t}]:[]}return e.map(e=>{if(!e||typeof e!=`object`)return null;let t=String(e.role||`user`).toLowerCase(),n=R2(e.content);return n?{role:t,text:n}:null}).filter(Boolean)}function X2(e){return z2(e)}function Z2(e){if(!e||typeof e!=`object`)return[];let t=[];return t.push(...B2(e.instructions)),Array.isArray(e.messages)&&e.messages.forEach(e=>{!e||typeof e!=`object`||(t.push(...U2(e.content)),t.push(...H2(e.tool_calls)))}),typeof e.input==`string`?t.push(e.input):Array.isArray(e.input)?e.input.forEach(e=>{if(!(!e||typeof e!=`object`)){if(e.type===`function_call`||e.type===`tool_use`){t.push(...H2([e]));return}t.push(...U2(e.content)),typeof e.text==`string`&&t.push(e.text)}}):e.input&&typeof e.input==`object`&&(t.push(...B2(e.input.content)),typeof e.input.text==`string`&&t.push(e.input.text)),t.map(e=>String(e||``)).filter(e=>e.length>0)}var Q2=e=>R2(e);function $2(e){if(!e||!e.data)return``;let t=d0(e.data.response_body,0,Q2);if(t)return t;let n=e.data.error_message;if(n==null)return``;if(typeof n==`string`){let e=n.trim();return e?d0(l0(e),0,Q2)||e:``}return d0(n,0,Q2)||R2(n)}function e4(e){return Array.isArray(e)?e.some(e=>!e||typeof e!=`object`?!1:e.type===`message`||e.role===`assistant`||e.role===`user`||e.role===`system`?!0:Array.isArray(e.content)?e.content.some(e=>!e||typeof e!=`object`?!1:typeof e.text==`string`||e.type===`output_text`||e.type===`input_text`):!1):!1}function t4(e){if(!e)return!1;let t=String(e).toLowerCase();return t===`/v1/embeddings`||t===`/v1/embeddings/`||t.startsWith(`/v1/embeddings?`)||t.startsWith(`/v1/embeddings/`)}function n4(e){return e?!!i4(e):!1}function r4(e){let t=String(e||``).trim().split(`?`)[0].replace(/\/+$/,``).toLowerCase();return t.startsWith(`/v1/`)?t.slice(3):t}function i4(e){switch(r4(e)){case`/chat/completions`:return`chat`;case`/responses`:return`responses`;case`/messages`:return`messages`;default:return``}}function a4(e){if(!e||typeof e!=`object`)return null;try{return JSON.parse(JSON.stringify(e))}catch{return null}}function o4(e,t){if(!t||typeof t!=`object`)return;let n=e[e.length-1];try{if(n&&JSON.stringify(n)===JSON.stringify(t))return}catch{}e.push(t)}function s4(e){let t=i4(e&&e.path),n=e&&e.data&&e.data.request_body;return!t||!n||typeof n!=`object`?!1:t!==`responses`||(e.data&&e.data.response_body&&typeof e.data.response_body.id==`string`?e.data.response_body.id.trim():``)!==``||G4(n)!==``}function c4(e,t){let n=String(t||``).trim(),r=i4(e&&e.path),i=a4(e&&e.data&&e.data.request_body);if(!n||!r||!i)return null;let a=e&&e.data?e.data.response_body:null;if(r===`responses`){let e=a&&typeof a.id==`string`?a.id.trim():``,t=G4(i);return!e&&!t?null:(i.input=n,e&&!t?i.previous_response_id=e:delete i.previous_response_id,i)}let o=Array.isArray(i.messages)?i.messages:[];if(r===`chat`){let e=a&&Array.isArray(a.choices)?a.choices[0]:null;e&&e.message&&o4(o,a4(e.message)),o.push({role:`user`,content:n})}else a&&a.content!==void 0&&o4(o,{role:String(a.role||`assistant`),content:a4(a.content)||a.content}),o.push({role:`user`,content:n});return i.messages=o,i}var l4=new Set(`authorization.proxy-authorization.cookie.content-type.content-length.host.accept.connection.accept-encoding.content-encoding.transfer-encoding.user-agent.date.expect.upgrade.via.te.trailer.keep-alive.origin.referer.forwarded.x-real-ip.traceparent.tracestate.x-request-id.idempotency-key.x-idempotency-key.x-gomodel-timezone.x-gomodel-interaction-parent`.split(`.`));function u4(e,t,n=``){let r=e&&e.data&&e.data.request_headers,i={};return r&&typeof r==`object`&&Object.keys(r).forEach(e=>{let t=String(e).toLowerCase(),n=String(r[e]==null?``:r[e]);!e||!n||n===`[REDACTED]`||l4.has(t)||t.startsWith(`sec-`)||t.startsWith(`cf-`)||t.startsWith(`x-forwarded-`)||(i[e]=n)}),i[`X-GoModel-Interaction-Parent`]=String(t||e&&e.id||``).trim(),String(n||``).trim()&&(i[`X-Request-ID`]=String(n).trim()),i}function d4(e,t){let n=String(t||``).trim();return!n||!Array.isArray(e)?null:e.find(e=>String(e&&e.request_id||``).trim()===n)||null}function f4(e,t,n,r,i){let a=Array.isArray(e)?e:[],o=String(i&&i.id||``).trim(),s=String(i&&i.request_id||``).trim(),c=String(i&&i.session_id||``).trim(),l=String(r||``).trim(),u=p4(i),d=a.some(e=>o&&String(e&&e.id||``).trim()===o||s&&String(e&&e.request_id||``).trim()===s),f=!!l&&s===l,p=!!n&&c===String(n).trim(),m=!!u&&(u===String(t||``).trim()||a.some(e=>String(e&&e.id||``).trim()===u)),h=d||f||!l&&(p||m);return{accepted:h,submittedChild:f,followUpRequestID:h&&f&&o?``:l}}function p4(e){let t=e&&e.data&&e.data.request_headers;if(!t||typeof t!=`object`)return``;let n=Object.keys(t).find(e=>e.toLowerCase()===`x-gomodel-interaction-parent`);return n?String(t[n]||``).trim():``}function m4(e,t){return!Array.isArray(e)||!t?null:e.find(e=>String(e&&e.id||``)===String(t))||null}function h4(e){return!Array.isArray(e)||e.length===0?null:e.reduce((e,t)=>e?K4(t,e)>=0?t:e:t,null)}function g4(e,t){let n=new Set(Array.isArray(t)?t.map(String):[]);return h4((Array.isArray(e)?e:[]).filter(e=>{let t=String(e&&e.id||``);return n.has(t)&&e&&e.data&&e.data.request_body!=null}))}function _4(e,t){let n=h4(e);return!!n&&String(n.id||``)===String(t||``)}function v4(e,t,n){return String(e||``).trim()===`audit.flushed`&&String(t||``).trim()!==``&&String(t||``).trim()===String(n||``).trim()}function y4(e,t){let n=Array.isArray(e)?e.filter(Boolean).map(String):[];return(Array.isArray(t)?t:[]).forEach(e=>{let t=String(e&&(e.id||e.request_id)||``).trim();t&&!n.includes(t)&&n.push(t)}),n}function b4(e){if(e&&e.conversation_payload)return!0;let t=e&&e.data?e.data.request_body:null,n=e&&e.data?e.data.response_body:null,r=t&&(Array.isArray(t.messages)||t.input!==void 0||typeof t.instructions==`string`||typeof t.previous_response_id==`string`),i=n&&(Array.isArray(n.choices)||e4(n.output));return!!(r||i)}function x4(e){return!e||t4(e.path)?!1:n4(e.path)||b4(e)}function S4(e){let t=0,n=!1,r=!1,i=String(e||``);for(let e=0;e0&&a+1`,`>`).replaceAll(`"`,`"`).replaceAll(`'`,`'`)}function E4(e){return!!(e&&typeof e==`object`&&e.__audio__===!0)}function D4(e){let t=Number(e||0);if(!Number.isFinite(t)||t<=0)return`0 B`;let n=[`B`,`KB`,`MB`,`GB`],r=0,i=t;for(;i>=1024&&r`
                `+T4(t)+``+T4(k4(e[t]))+`
                `);return t.length?``:``}function j4(e){let t=O4(e.content_type),n=T4(t+` · `+D4(e.bytes)),r=A4(e.meta);if(e.stored&&e.encoding===`base64`&&e.data){let i=String(e.data).replace(/[^A-Za-z0-9+/=]/g,``);return`
                `+n+`
                `+r+`
                `}let i=e.too_large?_d():bd();return`
                `+n+`
                `+T4(i)+`
                `+r+`
                `}function M4(e){try{return JSON.stringify(String(e)).slice(1,-1)}catch{return``}}function N4(e){if(!e||typeof e!=`object`)return null;let t=Number(e.characters||0);if(!Number.isFinite(t)||t<=0)return null;let n=Array.isArray(e.segments)?e.segments.map(e=>String(e||``)).filter(Boolean):[];return n.length===0?null:{remaining:Math.floor(t),segments:n,segmentIndex:0}}function P4(e,t){if(!t||t.remaining<=0||t.segmentIndex>=t.segments.length)return T4(e);let n=``,r=0,i=0;for(;t.remaining>0&&t.segmentIndex`+T4(l)+``,r=s+l.length,i=s+o.length,t.remaining-=c,c>=a.length){t.segmentIndex++;continue}break}return n?n+T4(e.slice(r)):T4(e)}function F4(e,t,n){let r=n&&typeof n.formatJSON==`function`?n.formatJSON:e=>String(e),i=n&&typeof n.canShowConversation==`function`?n.canShowConversation:()=>!1,a=N4(n&&n.promptCacheHighlight),o=r(t);if(!o||o===`Not captured`)return T4(o);if(!i(e))return o.split(` +`).map(e=>P4(e,a)).join(` +`);let s=o.split(` +`),c=[],l=0;for(;lP4(e,a)).join(` +`);c.push(``+o+``),l=r+1;continue}c.push(P4(e,a)),l++}return c.join(` +`)}function I4(e){let t=String(e||``).toLowerCase();return t===`system`||t===`developer`?{role:`system`,label:op(),className:`role-system`}:t===`assistant`?{role:`assistant`,label:lp(),className:`role-assistant`}:t===`error`?{role:`error`,label:fp(),className:`role-error`}:t===`function_call`?{role:`function_call`,label:hp(),className:`role-function-call`}:t===`function_result`?{role:`function_result`,label:vp(),className:`role-function-result`}:{role:`user`,label:xp(),className:`role-user`}}function L4(e,t,{timestamp:n,entryID:r,isAnchor:i,isAfterAnchor:a,index:o,toolCalls:s,functionName:c,functionCallID:l,promptCache:u,toolPromptCache:d}){let f=I4(e),p=u&&Number.isFinite(Number(u.total))?Math.max(0,Number(u.total)):u===null?0:String(t||``).length,m=d&&Array.isArray(d.characters)?d.characters:q2(s).characters;return{uid:r+`-`+o,entryID:r,timestamp:n,text:t,role:f.role,roleLabel:f.label,roleClass:f.className,isAnchor:i,isAfterAnchor:a,toolCalls:Array.isArray(s)&&s.length>0?s:null,functionName:c||``,functionCallID:l||``,promptCacheRatio:0,_promptTextCharacters:p,_toolPromptCharacters:m}}function R4(e){return Array.isArray(e)?e.map(e=>{if(!e)return null;let t=e.function||e,n=``;return t.arguments===void 0?e.arguments===void 0?t.input===void 0?e.input!==void 0&&(n=e.input):n=t.input:n=e.arguments:n=t.arguments,{name:t.name||e.name||``,arguments:n,id:e.call_id||e.id||``}}).filter(Boolean):[]}function z4(e){return Array.isArray(e)?R4(e.filter(e=>e&&typeof e==`object`&&e.type===`tool_use`)):[]}function B4(e){return Array.isArray(e)?e.filter(e=>e&&typeof e==`object`&&e.type===`tool_result`).map(e=>({id:e.tool_use_id||e.call_id||``,text:R2(e.content)})):[]}function V4(e,t,n){!t||!n||[t.call_id,t.id].forEach(t=>{t&&(e[t]=n)})}function H4(e,t,n){if(t&&Array.isArray(t.messages)&&t.messages.forEach(t=>{t&&[...Array.isArray(t.tool_calls)?t.tool_calls:[],...Array.isArray(t.content)?t.content.filter(e=>e&&e.type===`tool_use`):[]].forEach(t=>{t&&V4(e,t,(t.function||t).name||t.name||``)})}),t&&Array.isArray(t.input)&&t.input.forEach(t=>{!t||typeof t!=`object`||t.type!==`function_call`&&t.type!==`tool_use`||V4(e,t,t.name||``)}),n&&Array.isArray(n.choices)){let t=n.choices[0];t&&t.message&&Array.isArray(t.message.tool_calls)&&t.message.tool_calls.forEach(t=>{t&&V4(e,t,(t.function||t).name||t.name||``)})}n&&Array.isArray(n.output)&&n.output.forEach(t=>{!t||t.type!==`function_call`&&t.type!==`tool_use`||V4(e,t,t.name||``)}),n&&Array.isArray(n.content)&&n.content.forEach(t=>{!t||t.type!==`tool_use`||V4(e,t,t.name||``)})}function U4(e){return Array.isArray(e)?`[`+e.map(U4).join(`,`)+`]`:e&&typeof e==`object`?`{`+Object.keys(e).sort().map(t=>JSON.stringify(t)+`:`+U4(e[t])).join(`,`)+`}`:JSON.stringify(e)}function W4(e){if(!e||typeof e!=`object`)return null;let t=[];if(e.system!==void 0&&t.push({system:e.system}),e.instructions!==void 0&&t.push({instructions:e.instructions}),Array.isArray(e.messages))t.push(...e.messages);else if(Array.isArray(e.input)&&e.previous_response_id==null&&e.conversation==null)t.push(...e.input);else return null;return t.map(U4)}function G4(e){let t=e&&e.conversation;return typeof t==`string`?t.trim():t&&typeof t.id==`string`?t.id.trim():``}function K4(e,t){let n=new Date(e&&e.timestamp).getTime(),r=new Date(t&&t.timestamp).getTime();if(Number.isFinite(n)&&Number.isFinite(r)&&n!==r)return n-r;let i=String(e&&e.timestamp||``).localeCompare(String(t&&t.timestamp||``));if(i!==0)return i;let a=String(e&&e.id||``),o=String(t&&t.id||``);return ao)}function q4(e,t){if(!Array.isArray(e)||e.length===0)return{messages:[],entryIDs:[]};let n=[...e].sort(K4),r={};n.forEach(e=>{let t=e.data&&e.data.request_body?e.data.request_body:null,n=e.data&&e.data.response_body?e.data.response_body:null;H4(r,t,n)});let i=[],a=new Set,o=new Set,s=new Set,c=[],l=null,u=0,d=n.findIndex(e=>e.id===t),f=e=>JSON.stringify({role:e.role,text:e.text,toolCalls:e.toolCalls,functionName:e.functionName,functionCallID:e.functionCallID});return n.forEach((e,n)=>{let p=e.id===t,m=d>=0&&n>d,h=e.timestamp,g=e.data&&e.data.request_body?e.data.request_body:null,_=e.data&&e.data.response_body?e.data.response_body:null,v=i.length,y=(e,t)=>G2(e,t),b=e=>q2(e),x=(t,n,{toolCalls:r,functionName:i,functionCallID:a,promptCache:o,toolPromptCache:s}={})=>L4(t,n,{timestamp:h,entryID:e.id,isAnchor:p,isAfterAnchor:m,index:++u,toolCalls:r,functionName:i,functionCallID:a,promptCache:o,toolPromptCache:s});if(g&&g.system!==void 0){let e=R2(g.system);e&&i.push(x(`system`,e,{promptCache:y(e,B2(g.system))}))}if(g&&g.instructions!==void 0){let e=R2(g.instructions);e&&i.push(x(`system`,e,{promptCache:y(e,B2(g.instructions))}))}g&&Array.isArray(g.messages)&&g.messages.forEach(e=>{if(!e)return;let t=(e.role||`user`).toLowerCase();if(t===`tool`){let t=R2(e.content),n=e.name||r[e.tool_call_id]||``;t&&i.push(x(`function_result`,t,{functionName:n,functionCallID:e.tool_call_id||``,promptCache:y(t,B2(e.content))}));return}if(t===`assistant`){let n=z2(e),r=[...R4(e.tool_calls),...z4(e.content)];if(n||r.length>0){let a=y(n,B2(e.content));i.push(x(t,n,{toolCalls:r,promptCache:a,toolPromptCache:b(r)}))}return}B4(e.content).forEach(e=>{e.text&&i.push(x(`function_result`,e.text,{functionName:r[e.id]||``,functionCallID:e.id,promptCache:y(e.text,[e.text])}))});let n=z2(e);n&&i.push(x(t,n,{promptCache:y(n,B2(e.content))}))}),g&&g.input!==void 0&&(Array.isArray(g.input)?g.input.forEach(e=>{if(!(!e||typeof e!=`object`)){if(e.type===`function_call_output`||e.type===`tool_result`){let t=e.type===`tool_result`,n=t?e.content:e.output,a=t?e.tool_use_id||e.call_id||``:e.call_id||``,o=typeof n==`string`?n:R2(n);o&&i.push(x(`function_result`,o,{functionName:r[a]||e.name||``,functionCallID:a,promptCache:y(o,t?B2(e.content):[o])}))}else if(e.type===`function_call`||e.type===`tool_use`){let t=R4([e]);i.push(x(`function_call`,``,{toolCalls:t,toolPromptCache:b(t)}))}else if(e.role){let t=String(e.role).toLowerCase(),n=R2(e.content);n&&i.push(x(t,n,{promptCache:y(n,B2(e.content))}))}}}):Y2(g.input).forEach(e=>{if(!e.text)return;let t=[];typeof g.input==`string`?t=[g.input]:g.input&&typeof g.input==`object`&&(t=B2(g.input.content),typeof g.input.text==`string`&&t.push(g.input.text)),i.push(x(e.role,e.text,{promptCache:y(e.text,t)}))}));let S=i.splice(v),C=S.map(f),w=W4(g),T=w!==null,ee=p4(e),te=!!ee&&a.has(ee),ne=String(g&&g.previous_response_id||``).trim(),re=G4(g),ie=te||!!ne&&o.has(ne)||!!re&&s.has(re);if(m){let e=T&&l&&l.length>0&&l.every((e,t)=>w[t]===e);if(T&&!e&&!te||!T&&!ie)return}p&&T&&(l=[...w]);let ae=String(e.id||``).trim();p&&(a.clear(),o.clear(),s.clear()),ae&&(p||m)&&a.add(ae),re&&s.add(re);let oe=0;for(;oe0;){let t=c.slice(-e),n=C.slice(0,e);if(t.every((e,t)=>e===n[t]))break;e--}i.push(...S.slice(e)),c.push(...C.slice(e))}let se=W2(e);if(g&&se!==null&&i.splice(0,i.length,...J2(i,se)),_&&Array.isArray(_.choices)){let e=_.choices[0];if(e&&e.message){let t=(e.message.role||`assistant`).toLowerCase(),n=z2(e.message),r=R4(e.message.tool_calls);if(n||r.length>0){let e=x(t,n,{toolCalls:r});i.push(e),c.push(f(e))}}}if(_&&Array.isArray(_.output)&&_.output.forEach(e=>{if(!e)return;if(e.type===`function_call`||e.type===`tool_use`){let t=x(`function_call`,``,{toolCalls:R4([e])});i.push(t),c.push(f(t));return}let t=(e.role||`assistant`).toLowerCase(),n=X2(e);if(n){let e=x(t,n);i.push(e),c.push(f(e))}}),_&&_.content!==void 0&&!Array.isArray(_.choices)&&!Array.isArray(_.output)){let e=String(_.role||`assistant`).toLowerCase(),t=R2(_.content),n=z4(_.content);if(t||n.length>0){let r=x(e,t,{toolCalls:n});i.push(r),c.push(f(r))}}let ce=$2(e);ce&&i.push(x(`error`,ce));let le=String(_&&_.id||``).trim();le&&o.add(le)}),{messages:i,entryIDs:[...a]}}function J4(e){return e.role===`function_call`?(e.toolCalls||[]).map(function(e){return e.name+`(`+X4(e)+`)`}).join(` + +`):e.text||``}function Y4(e){return e?[String(e.text||``),Array.isArray(e.toolCalls)&&e.toolCalls.length>0?J4({role:`function_call`,toolCalls:e.toolCalls}):``].filter(Boolean).join(` + +`):``}function X4(e){let t=e&&e.arguments!==void 0?e.arguments:``;if(typeof t!=`string`)try{return JSON.stringify(t,null,2)}catch{return String(t)}try{return JSON.stringify(JSON.parse(t),null,2)}catch{return t}}var Z4=600*1e3,Q4=15*1e3,$4=250,e3=class{#e=A(!1);get conversationOpen(){return L(this.#e)}set conversationOpen(e){j(this.#e,e,!0)}#t=A(!1);get conversationLoading(){return L(this.#t)}set conversationLoading(e){j(this.#t,e,!0)}#n=A(``);get conversationError(){return L(this.#n)}set conversationError(e){j(this.#n,e,!0)}#r=A(``);get conversationAnchorID(){return L(this.#r)}set conversationAnchorID(e){j(this.#r,e,!0)}#i=A(M([]));get conversationEntryIDs(){return L(this.#i)}set conversationEntryIDs(e){j(this.#i,e,!0)}#a=A(``);get conversationSessionID(){return L(this.#a)}set conversationSessionID(e){j(this.#a,e,!0)}#o=A(!1);get conversationTruncated(){return L(this.#o)}set conversationTruncated(e){j(this.#o,e,!0)}#s=A(!1);get conversationFollowLatest(){return L(this.#s)}set conversationFollowLatest(e){j(this.#s,e,!0)}#c=A(``);get conversationOpenedFromID(){return L(this.#c)}set conversationOpenedFromID(e){j(this.#c,e,!0)}#l=A(``);get followUpText(){return L(this.#l)}set followUpText(e){j(this.#l,e,!0)}#u=A(!1);get followUpSending(){return L(this.#u)}set followUpSending(e){j(this.#u,e,!0)}#d=A(``);get followUpError(){return L(this.#d)}set followUpError(e){j(this.#d,e,!0)}followUpRequestID=``;followUpAbort=null;conversationRequestToken=0;conversationReturnFocusEl=null;bodyPointerStart=null;#f=A(null);get conversationDialogEl(){return L(this.#f)}set conversationDialogEl(e){j(this.#f,e,!0)}#p=A(null);get conversationCloseBtnEl(){return L(this.#p)}set conversationCloseBtnEl(e){j(this.#p,e,!0)}#m=A(null);get conversationThreadEl(){return L(this.#m)}set conversationThreadEl(e){j(this.#m,e,!0)}get conversationEntries(){return(this.conversationEntryIDs||[]).map(e=>DW.auditRecord(e)).filter(Boolean)}#h=k(()=>q4(this.conversationEntries,this.conversationAnchorID));get conversationView(){return L(this.#h)}set conversationView(e){j(this.#h,e)}get conversationMessages(){return this.conversationView.messages}get conversationBranchEntryIDs(){return this.conversationView.entryIDs}_setConversationEntryIDs(e){this.conversationEntryIDs=[...new Set((Array.isArray(e)?e:[]).filter(Boolean))],DW.pinAuditRecords(this.conversationEntryIDs)}canShowConversation(e){return x4(e)}startBodyInteraction(e){this.bodyPointerStart={x:e.clientX,y:e.clientY}}_isBodyDrag(e){if(!this.bodyPointerStart)return!1;let t=Math.abs(e.clientX-this.bodyPointerStart.x),n=Math.abs(e.clientY-this.bodyPointerStart.y);return t>4||n>4}_hasActiveSelection(){let e=window.getSelection?window.getSelection():null;return!e||e.isCollapsed?!1:String(e.toString()||``).trim().length>0}handleBodyConversationClick(e,t){let n=this._isBodyDrag(e);if(this.bodyPointerStart=null,n||this._hasActiveSelection()||!this.canShowConversation(t))return;let r=e.target&&e.target.closest?e.target.closest(`[data-conversation-trigger="1"]`):null;r&&(e.preventDefault(),e.stopPropagation(),this.openConversation(t,r))}handleErrorConversationClick(e,t){let n=this._isBodyDrag(e);this.bodyPointerStart=null,!n&&(this._hasActiveSelection()||this.canShowConversation(t)&&(e.preventDefault(),e.stopPropagation(),this.openConversation(t,e.currentTarget)))}formatJSON(e){return XO(e)}renderBodyWithConversationHighlights(e,t,n){return F4(e,t,{formatJSON:e=>this.formatJSON(e),canShowConversation:e=>this.canShowConversation(e),promptCacheHighlight:n&&n.promptCacheHighlight})}async openConversation(e,t){if(!e||!e.id||!this.canShowConversation(e))return;let n=document.activeElement instanceof HTMLElement?document.activeElement:null;t instanceof HTMLElement?this.conversationReturnFocusEl=t:n&&n!==document.body&&(this.conversationReturnFocusEl=n);let r=++this.conversationRequestToken;if(this.conversationOpen=!0,this.conversationError=``,this.conversationAnchorID=e.id,this.conversationOpenedFromID=e.id,this.conversationSessionID=String(e.session_id||``).trim(),this._setConversationEntryIDs([]),this.conversationTruncated=!1,this.conversationFollowLatest=!1,this.followUpText=``,this.followUpError=``,this.followUpRequestID=``,requestAnimationFrame(()=>this._focusConversationDrawer()),this._conversationEntryLivePending(e)){this.conversationFollowLatest=!0,this.conversationLoading=!1,this._addConversationRecord(DW.upsertAuditRecord(e,`conversation.live`));return}this.conversationLoading=!0,await this.fetchConversation(e.id,r,!0,!0)}_conversationEntryLivePending(e){return typeof DW.auditEntryLiveDetailPending==`function`&&DW.auditEntryLiveDetailPending(e)}_applyConversationView(){let e=this.conversationEntries,t=q4(e,this.conversationAnchorID);if(this.conversationFollowLatest){let n=g4(e,t.entryIDs);n&&n.id&&String(n.id)!==this.conversationAnchorID&&(this.conversationAnchorID=String(n.id))}}handleAuditRecordChange(e,t){if(!this.conversationOpen||!e)return;let n=String(e.id||``).trim(),r=f4(this.conversationEntries,this.conversationAnchorID,this.conversationSessionID,this.followUpRequestID,e);if(r.accepted&&(this.followUpRequestID=r.followUpRequestID,n&&r.submittedChild&&(this.conversationAnchorID=n,this.conversationFollowLatest=!0),this._addConversationRecord(e),v4(String(t||e._live_state||``).trim(),n,this.conversationAnchorID))){this.conversationMessages.length===0&&(this.conversationLoading=!0);let e=++this.conversationRequestToken;this.fetchConversation(n,e,!1)}}_addConversationRecord(e){let t=bW(e);t&&!this.conversationEntryIDs.includes(t)&&this._setConversationEntryIDs([...this.conversationEntryIDs,t]),!this.conversationSessionID&&e.session_id&&(this.conversationSessionID=String(e.session_id).trim()),this._applyConversationView(),this.conversationFollowLatest&&this._scheduleLatestScroll()}conversationLiveWaiting(){if(!this.conversationOpen)return!1;let e=new Set(this.conversationBranchEntryIDs||[]);return(this.conversationEntries||[]).some(t=>e.has(String(t&&t.id||``))&&t._live&&(typeof DW.liveAuditStateSettled!=`function`||!DW.liveAuditStateSettled(t._live_state)))}conversationLiveStatusText(){return(this.conversationMessages||[]).length>0?zf():Vu()}closeConversation(){this.followUpAbort&&this.followUpAbort.abort(),this.conversationOpen=!1,this.conversationRequestToken++,this.conversationSessionID=``,this._setConversationEntryIDs([]),this.conversationFollowLatest=!1,this.conversationOpenedFromID=``,this.followUpRequestID=``,this.followUpSending=!1;let e=this.conversationReturnFocusEl;this.conversationReturnFocusEl=null,e&&typeof e.focus==`function`&&document.contains(e)&&requestAnimationFrame(()=>e.focus())}_focusConversationDrawer(){if(!this.conversationOpen)return;let e=this.conversationCloseBtnEl;if(e&&typeof e.focus==`function`){e.focus();return}let t=this.conversationDialogEl;t&&typeof t.focus==`function`&&t.focus()}async fetchConversation(e,t,n=!0,r=!1){try{let i=await iO(`/admin/audit/conversation?`+(`log_id=`+encodeURIComponent(e)+`&limit=120`),{label:`audit conversation`});if(t!==this.conversationRequestToken||i.stale)return;if(!i.ok){this.conversationError=Hf();return}let a=i.data||{},o=a.anchor_id||e,s=Array.isArray(a.entries)?a.entries:[],c=DW.upsertAuditRecords(s,`conversation.hydrated`),l=y4(this.conversationEntryIDs,c);l.length>this.conversationEntryIDs.length&&this._setConversationEntryIDs(l),r&&(this.conversationFollowLatest=_4(c,o)),this.conversationAnchorID=o;let u=this.conversationEntries.find(e=>e.id===this.conversationAnchorID);u&&u.session_id&&(this.conversationSessionID=String(u.session_id).trim()),this.conversationTruncated=!!a.truncated,this._applyConversationView(),this.conversationFollowLatest?this._scheduleLatestScroll():n&&this._scheduleAnchorScroll()}catch(e){if(t!==this.conversationRequestToken)return;console.error(`Failed to fetch audit conversation:`,e),this.conversationError=Gf()}finally{t===this.conversationRequestToken&&(this.conversationLoading=!1)}}selectedConversationEntry(){return m4(this.conversationEntries,this.conversationAnchorID)}followUpKind(){let e=this.selectedConversationEntry();return s4(e)?i4(e.path):``}canSendFollowUp(){return!!this.followUpKind()&&!!String(this.followUpText||``).trim()&&!this.followUpSending&&!this.conversationLiveWaiting()}async sendFollowUp(){if(!this.canSendFollowUp())return;let e=this.selectedConversationEntry(),t=c4(e,this.followUpText);if(!e||!t)return;let n=this.conversationAnchorID,r=n3(),i=new AbortController,a=!1,o=setTimeout(()=>{a=!0,i.abort()},Z4);this.followUpSending=!0,this.followUpError=``,this.followUpRequestID=r,this.followUpAbort=i;try{let a=u4(e,n,r),o=await nO(e.path,{method:`POST`,headers:a,body:JSON.stringify(t),signal:i.signal}),s=String(o.headers.get(`X-Request-ID`)||``).trim();if(s&&this.followUpRequestID&&(this.followUpRequestID=s),!o.ok){let e=Jf();try{let t=await o.json();e=t&&t.error&&t.error.message||e}catch{}this.followUpError=e,(this.followUpRequestID===r||this.followUpRequestID===s)&&(this.followUpRequestID=``);return}if(this.followUpText=``,await t3(o),!DW.liveLogsStreaming&&this.conversationOpen){let e=++this.conversationRequestToken;await this._selectPersistedFollowUp(n,this.followUpRequestID,e,i.signal)}}catch(e){oO(e)||i.signal.aborted?a&&this.conversationOpen&&(this.followUpError=Zf()):(console.error(`Failed to send interaction follow-up:`,e),this.followUpError=ep())}finally{clearTimeout(o),this.followUpAbort===i&&(this.followUpAbort=null,this.followUpSending=!1)}}async _selectPersistedFollowUp(e,t,n,r){let i=Date.now()+Q4;for(;this.conversationOpen&&n===this.conversationRequestToken&&Date.now(){let e=this.conversationThreadEl;if(!e)return;let t=e.querySelectorAll(`[data-conversation-anchor="true"]`),n=t[t.length-1];n&&typeof n.scrollIntoView==`function`&&n.scrollIntoView({block:`center`})})}_scheduleLatestScroll(){requestAnimationFrame(()=>{let e=this.conversationThreadEl;if(!e)return;let t=e.lastElementChild;t&&typeof t.scrollIntoView==`function`&&t.scrollIntoView({block:`end`})})}};async function t3(e){let t=e&&e.body&&typeof e.body.getReader==`function`?e.body.getReader():null;if(!t){await e.text();return}for(;!(await t.read()).done;);}function n3(){return globalThis.crypto&&typeof globalThis.crypto.randomUUID==`function`?globalThis.crypto.randomUUID():`dashboard-`+Date.now().toString(36)+`-`+Math.random().toString(36).slice(2)}function r3(e,t){return new Promise((n,r)=>{let i,a=()=>{clearTimeout(i),r(new DOMException(`Aborted`,`AbortError`))};if(i=setTimeout(()=>{t&&t.removeEventListener(`abort`,a),n()},e),t){if(t.aborted){a();return}t.addEventListener(`abort`,a,{once:!0})}})}var i3=new e3,a3=0;jn(()=>{kn(()=>{let e=SW(DW.auditRecordChanges,a3);e.length!==0&&(a3=Number(e[e.length-1].version||0),Tr(()=>{e.forEach(e=>{if(!CW(e))return;let t=DW.auditRecord(e.key);i3.handleAuditRecordChange(t,e.eventType)})}))})});var o3=z(``),s3=z(` `),c3=z(` `),l3=z(``),u3=z(`
                `);function d3(e,t){D(t,!0);let n=K(t,`thread`,3,null),r=K(t,`expanded`,3,!1),i=K(t,`onactivate`,3,null),a=K(t,`hidePath`,3,!1),o=k(()=>QD.formatTimestamp(t.entry.timestamp)),s=k(()=>L(o)===`-`?L(o):L(o).slice(L(o).lastIndexOf(` `)+1)),c=k(()=>i3.conversationOpen&&String(i3.conversationAnchorID||``)===String(t.entry.id||``));function l(e){e.preventDefault(),i()&&i()()}function u(e){e.stopPropagation(),e.preventDefault(),n().ontoggle()}function d(){return _l({count:Number(n().count||1)})}function f(e){if(e.stopPropagation(),e.preventDefault(),L(c)){i3.closeConversation();return}i3.openConversation(t.entry,e.currentTarget)}var p=u3();let m;var h=N(p),g=N(h),_=e=>{var t=o3(),r=N(t);{let e=k(()=>n().expanded?SE:wE);q(r,{get icon(){return L(e)},class:`audit-thread-expander-svg`})}var i=F(r,2),a=N(i,!0);E(i),E(t),I((e,r)=>{G(t,`aria-expanded`,n().expanded),G(t,`title`,e),G(t,`aria-label`,r),V(a,n().count)},[()=>d(),()=>d()+`, `+(n().expanded?Os():Ts())]),R(`click`,t,u),B(e,t)};H(g,e=>{n()&&e(_)});var v=F(g,2),y=N(v),b=N(y,!0);E(y);var x=F(y,2),S=N(x,!0);E(x),E(v);var C=F(v,2),w=e=>{var n=s3(),r=N(n,!0);E(n),I(e=>V(r,e),[()=>dk(t.entry)]),B(e,n)};H(C,e=>{(t.entry.requested_model||t.entry.model)&&e(w)});var T=F(C,2),ee=e=>{var n=c3(),r=N(n,!0);E(n),I(()=>V(r,t.entry.path||`-`)),B(e,n)};H(T,e=>{a()||e(ee)}),E(h);var te=F(h,2),ne=N(te);F2(ne,{get entry(){return t.entry}});var re=F(ne,2),ie=N(re),ae=N(ie,!0);E(ie);var oe=F(ie,2),se=N(oe,!0);E(oe),E(re);var ce=F(re,2),le=N(ce,!0);E(ce);var ue=F(ce,2),de=e=>{var t=l3();let n;var r=N(t);{let e=k(()=>L(c)?CE:wE);q(r,{get icon(){return L(e)},class:`audit-conversation-trigger-svg`})}E(t),I((e,r)=>{n=W(t,1,`audit-conversation-trigger svelte-17mysgz`,null,n,{"audit-conversation-trigger-active":L(c)}),G(t,`title`,e),G(t,`aria-label`,r),G(t,`aria-pressed`,L(c))},[()=>L(c)?El():Cl(),()=>L(c)?El():Cl()]),R(`click`,t,f),B(e,t)},fe=k(()=>i3.canShowConversation(t.entry));H(ue,e=>{L(fe)&&e(de)}),E(te),E(p),I((e,n,i,a,c)=>{m=W(p,1,`audit-entry-summary svelte-17mysgz`,null,m,e),G(p,`aria-expanded`,r()),W(v,1,`audit-status-badge audit-request-badge ${n??``}`,`svelte-17mysgz`),G(v,`title`,i),G(v,`aria-label`,(t.entry.status_code||`-`)+` `+(t.entry.method||`-`)),V(b,t.entry.status_code||`-`),V(S,t.entry.method||`-`),G(re,`title`,a),G(re,`aria-label`,L(o)),V(ae,L(o)),V(se,L(s)),V(le,c)},[()=>({"audit-entry-summary-live-in-progress":V0(t.entry),"audit-entry-summary-has-interactions":i3.canShowConversation(t.entry)}),()=>B0(t.entry.status_code),()=>bl({status:t.entry.status_code||`-`,method:t.entry.method||`-`}),()=>ak(t.entry.timestamp),()=>z0(t.entry.duration_ns)]),R(`click`,p,l),B(e,p),O()}Vr([`click`]);var f3=z(``);function p3(e,t){D(t,!0);let n=K(t,`label`,3,`Copy`),r=K(t,`copiedLabel`,3,`Copied`),i=K(t,`errorLabel`,3,``),a=K(t,`class`,3,`btn`),o=k(()=>t.state.error&&i()?i():t.state.copied?r():n());var s=f3();let c;var l=N(s),u=e=>{q(e,{get icon(){return EE},width:`14`,height:`14`,"stroke-width":`2.5`})},d=e=>{q(e,{get icon(){return kE},width:`14`,height:`14`})};H(l,e=>{t.state.copied?e(u):e(d,-1)});var f=F(l,2),p=N(f,!0);E(f),E(s),I(()=>{c=W(s,1,Pi([`copy-feedback-btn`,a()]),null,c,{"copy-feedback-btn-copied":t.state.copied}),V(p,L(o))}),R(`click`,s,e=>{e.preventDefault(),t.onclick?.(e)}),B(e,s),O()}Vr([`click`]);var m3=z(`
                 
                `),h3=z(`
                 
                `),g3=z(` `),_3=z(` `),v3=z(`
                `),y3=z(`

                `),b3=z(`

                `),x3=z(`

                `),S3=z(`
                `);function C3(e,t){D(t,!0);let n=h$({logPrefix:`Failed to copy audit payload:`}),r=h$({logPrefix:`Failed to copy audit payload:`}),i=k(()=>t.pane&&t.pane.showHeaders?XO(t.pane.headers):``),a=k(()=>!t.pane||!t.pane.showBody?``:E4(t.pane.body)?j4(t.pane.body):i3.renderBodyWithConversationHighlights(t.pane.entry,t.pane.body,{promptCacheHighlight:t.pane.promptCacheHighlight})),o=k(()=>!!(t.pane&&i3.canShowConversation(t.pane.entry)));function s(e){e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),i3.handleErrorConversationClick(e,t.pane.entry))}var c=S3();let l;var u=N(c),d=e=>{var n=m3(),r=N(n),i=N(r,!0);E(r);var a=F(r,2);let c;var l=N(a,!0);E(a),E(n),I(e=>{V(i,e),c=W(a,1,`audit-json audit-pane-error-message svelte-1h5puht`,null,c,{"audit-pane-clickable-preview":L(o)}),G(a,`role`,L(o)?`button`:null),G(a,`tabindex`,L(o)?0:null),V(l,t.pane.errorMessage)},[()=>Rl()]),R(`mousedown`,a,e=>i3.startBodyInteraction(e)),R(`keydown`,a,s),R(`click`,a,e=>i3.handleErrorConversationClick(e,t.pane.entry)),B(e,n)};H(u,e=>{t.pane.showErrorMessage&&e(d)});var f=F(u,2),p=e=>{var n=h3(),a=N(n),o=N(a),s=N(o,!0);E(o);var c=F(o,2);{let e=k(()=>Wl()),n=k(()=>Ls());p3(c,{get state(){return r},get label(){return L(e)},get errorLabel(){return L(n)},class:`audit-copy-btn`,onclick:()=>r.copy(t.pane.copyHeaders,XO)})}E(a);var l=F(a,2),u=N(l,!0);E(l),E(n),I(e=>{V(s,e),V(u,L(i))},[()=>t.pane.headersTitle||Vl()]),B(e,n)};H(f,e=>{t.pane.showHeaders&&e(p)});var m=F(f,2),h=e=>{var r=v3(),i=N(r),o=N(i),s=N(o),c=N(s,!0);E(s);var l=F(s,2),u=e=>{var n=g3(),r=N(n,!0);E(n),I(()=>V(r,t.pane.bodyCacheRatioLabel)),B(e,n)};H(l,e=>{t.pane.bodyCacheRatioLabel&&e(u)});var d=F(l,2),f=e=>{var t=_3(),n=F(N(t),2),r=N(n,!0);E(n),E(t),I(e=>V(r,e),[()=>Xl()]),B(e,t)};H(d,e=>{t.pane.streaming&&e(f)}),E(o);var p=F(o,2);{let e=k(()=>$l()),r=k(()=>Ls());p3(p,{get state(){return n},get label(){return L(e)},get errorLabel(){return L(r)},class:`audit-copy-btn`,onclick:()=>n.copy(t.pane.copyBody,XO)})}E(i);var m=F(i,2);mi(m,()=>L(a),!0),E(m),E(r),I(e=>V(c,e),[()=>ql()]),R(`mousedown`,m,e=>i3.startBodyInteraction(e)),R(`click`,m,e=>i3.handleBodyConversationClick(e,t.pane.entry)),B(e,r)};H(m,e=>{t.pane.showBody&&e(h)});var g=F(m,2),_=e=>{var n=y3(),r=N(n,!0);E(n),I(()=>V(r,t.pane.emptyMessage)),B(e,n)};H(g,e=>{t.pane.showEmpty&&e(_)});var v=F(g,2),y=e=>{var n=b3(),r=F(N(n),2),i=N(r,!0);E(r),E(n),I(()=>V(i,t.pane.pendingMessage)),B(e,n)};H(v,e=>{t.pane.showPending&&e(y)});var b=F(v,2),x=e=>{var n=x3(),r=N(n,!0);E(n),I(()=>V(r,t.pane.tooLargeMessage)),B(e,n)};H(b,e=>{t.pane.showTooLarge&&e(x)}),E(c),I(()=>l=W(c,1,`audit-pane svelte-1h5puht`,null,l,{"audit-pane-split":t.pane&&t.pane.layout===`split`,"audit-pane-split-single":t.pane&&t.pane.layout===`split`&&!(t.pane.showHeaders&&t.pane.showBody)})),B(e,c),O()}Vr([`mousedown`,`keydown`,`click`]);var w3=z(` `),T3=z(` `),E3=z(` `),D3=z(` `),O3=z(``),k3=z(`
                `),A3=z(`
                `);function j3(e,t){D(t,!0);let n=K(t,`panes`,19,()=>[]),r=A(null),i=k(()=>y2(L(r),t.entry,n())),a=e=>`audit-tab-`+t.entry.id+`-`+e,o=e=>`audit-tabpanel-`+t.entry.id+`-`+e;function s(e,t){let i=n().map(e=>e.id),a=b2(e.key,i,t);a!=null&&(e.preventDefault(),((e.currentTarget?.closest?.(`.audit-pane-tablist`))?.querySelectorAll(`.audit-pane-tab`)[i.indexOf(a)])?.focus?.(),j(r,a,!0))}var c=A3(),l=N(c);U(l,21,n,e=>e.id,(e,t)=>{var n=O3();let c;var l=N(n),u=N(l),d=e=>{q(e,{get icon(){return pE}})},f=e=>{q(e,{get icon(){return fE}})};H(u,e=>{L(t).pane.direction===`request`?e(d):L(t).pane.direction===`response`&&e(f,1)}),E(l);var p=F(l,2),m=N(p,!0);E(p);var h=F(p,2),g=e=>{var n=w3(),r=N(n);E(n),I(()=>V(r,`#${L(t).pane.seq??``}`)),B(e,n)};H(h,e=>{L(t).pane.seq&&e(g)});var _=F(h,2),v=e=>{var n=T3(),r=N(n,!0);E(n),I(()=>{W(n,1,`provider-badge audit-pane-kind audit-pane-kind-${L(t).pane.kind??``}`,`svelte-1bc5vi5`),V(r,L(t).pane.kind)}),B(e,n)};H(_,e=>{L(t).pane.kind&&e(v)});var y=F(_,2);U(y,17,()=>L(t).pane.noChangeSteps||[],e=>e.id,(e,t)=>{var n=E3(),r=N(n,!0);E(n),I(()=>{G(n,`title`,L(t).title),V(r,L(t).label)}),B(e,n)});var b=F(y,2),x=e=>{var n=D3(),r=N(n,!0);E(n),I(e=>{G(n,`title`,e),V(r,L(t).pane.savingsLabel)},[()=>au()]),B(e,n)};H(b,e=>{L(t).pane.savingsLabel&&e(x)});var S=F(b,2),C=e=>{var n=T3(),r=N(n,!0);E(n),I(e=>{W(n,1,`audit-status-badge ${e??``}`,`svelte-1bc5vi5`),V(r,L(t).pane.statusCode)},[()=>B0(L(t).pane.statusCode)]),B(e,n)};H(S,e=>{L(t).pane.statusCode&&e(C)}),E(n),I((e,r)=>{c=W(n,1,`audit-pane-tab svelte-1bc5vi5`,null,c,{"audit-pane-tab-active":L(i)===L(t).id}),G(n,`aria-selected`,L(i)===L(t).id),G(n,`id`,e),G(n,`aria-controls`,r),G(n,`tabindex`,L(i)===L(t).id?0:-1),W(l,1,Pi([`audit-pane-icon`,L(t).pane.direction&&`audit-pane-icon-${L(t).pane.direction}`]),`svelte-1bc5vi5`),V(m,L(t).pane.title)},[()=>a(L(t).id),()=>o(L(t).id)]),R(`keydown`,n,e=>s(e,L(t).id)),R(`click`,n,()=>j(r,L(t).id,!0)),B(e,n)}),E(l),U(F(l,2),17,n,e=>e.id,(e,t)=>{var n=k3();let r;C3(N(n),{get pane(){return L(t).pane}}),E(n),I((e,a)=>{G(n,`id`,e),G(n,`aria-labelledby`,a),r=Vi(n,``,r,{display:L(i)===L(t).id?null:`none`})},[()=>o(L(t).id),()=>a(L(t).id)]),B(e,n)}),E(c),I(e=>G(l,`aria-label`,e),[()=>nu()]),B(e,c),O()}Vr([`keydown`,`click`]);var M3=z(`
                `),N3=z(`
                `);function P3(e,t){D(t,!0);let n=K(t,`thread`,3,null),r=K(t,`hidePath`,3,!1),i=k(()=>C2.isAuditEntryExpanded(t.entry)),a=k(()=>i3.conversationOpen&&String(i3.conversationAnchorID||``)===String(t.entry.id||``)),o=k(()=>L(i)?_2(t.entry,Z2):[]),s=k(()=>L(i)?f1(t.entry,s0.auditEntryWorkflow(t.entry),s0.workflowFeatureCaps()):null);function c(){C2.toggleAuditEntryExpanded(t.entry)}var l=N3();let u;var d=N(l);d3(d,{get entry(){return t.entry},get thread(){return n()},get expanded(){return L(i)},get hidePath(){return r()},onactivate:c});var f=F(d,2),p=e=>{var n=M3(),r=N(n),i=e=>{O$(e,{get chart(){return L(s)}})};H(r,e=>{L(s)&&e(i)});var a=F(r,2);j3(a,{get entry(){return t.entry},get panes(){return L(o)}}),M2(F(a,2),{get entry(){return t.entry}}),E(n),Oi(3,n,()=>LO,()=>({y:-6,duration:a0(150)})),B(e,n)};H(f,e=>{L(i)&&e(p)}),E(l),I(()=>u=W(l,1,`audit-entry svelte-cmjgwr`,null,u,{"audit-entry-interactions-open":L(a)})),B(e,l),O()}var F3=z(`
                `),I3=z(`
                `),L3=z(`

                `),R3=z(`
                `),z3=z(`
                `);function B3(e,t){D(t,!0);let n=k(()=>C0(t.entry)),r=k(()=>C2.isThreadExpanded(L(n))),i=k(()=>C2.threadChildren(L(n))),a=k(()=>L(i)&&!L(i).loading&&Number(L(i).total||0)>L(i).entries.length+1);var o=Zr(),s=P(o),c=e=>{P3(e,{get entry(){return t.entry}})},l=k(()=>!T0(t.entry)),u=e=>{var n=z3(),o=N(n);{let e=k(()=>({count:w0(t.entry),expanded:L(r),ontoggle:()=>C2.toggleThread(t.entry)}));P3(o,{get entry(){return t.entry},get thread(){return L(e)}})}var s=F(o,2),c=e=>{var n=R3(),r=N(n),o=e=>{var t=F3(),n=N(t);{let e=k(()=>kl());_U(n,{size:14,get label(){return L(e)}})}E(t),B(e,t)};H(r,e=>{L(i)&&L(i).loading&&e(o)});var s=F(r,2);U(s,17,()=>L(i)&&L(i).entries||[],e=>e.id,(e,n)=>{var r=I3(),i=N(r);{let e=k(()=>L(n).path===t.entry.path);P3(i,{get entry(){return L(n)},get hidePath(){return L(e)}})}E(r),B(e,r)});var c=F(s,2),l=e=>{var t=L3(),n=N(t,!0);E(t),I(e=>V(n,e),[()=>Ml({shown:L(i).entries.length+1,total:L(i).total})]),B(e,t)};H(c,e=>{L(a)&&e(l)}),E(n),Oi(3,n,()=>RO,()=>({duration:a0(150)})),B(e,n)};H(s,e=>{L(r)&&e(c)}),E(n),B(e,n)};H(s,e=>{L(l)?e(c):e(u,-1)}),B(e,o),O()}var V3=z(`

                .

                `),H3=z(`
                LOGGING_ENABLED=true
                `),U3=z(`

                `),W3=z(`
                `),G3=z(`
                `),K3=z(`
                `),q3=z(`
                `),J3=z(`
                `);function Y3(e,t){D(t,!0);let n=k(()=>lO.config&&lO.config.LOGGING_RETENTION_DAYS);kn(()=>{if(Y.refreshTick,kD.page===`audit-logs`)return Tr(()=>r())});function r(){let e=!1;return(async()=>{try{await lO.ensureLoaded()}finally{await C2.fetchAuditLog(!0),!e&&lO.liveLogsVisible()&&DW.ensureLiveLogs()}})(),()=>{e=!0,DW.stopLiveLogs()}}var i=J3(),a=N(i),o=N(a),s=N(o),c=N(s,!0);E(s);var l=F(s,2),u=e=>{{let t=e=>{var t=V3(),r=N(t,!0),i=F(r),a=N(i,!0);E(i),He(),E(t),I((e,t)=>{V(r,e),V(a,t)},[()=>y0(L(n)),()=>b0(L(n))]),B(e,t)},r=k(()=>Us()),i=k(()=>Ks());HU(e,{copyId:`audit-retention-help-copy`,get label(){return L(r)},get text(){return L(i)},title:t,$$slots:{title:!0}})}},d=k(()=>v0(L(n)));H(l,e=>{L(d)&&e(u)}),E(o),E(a);var f=F(a,2);Zk(N(f),{onchange:()=>C2.fetchAuditLog(!0)}),E(f);var p=F(f,2);Mk(p,{});var m=F(p,2),h=e=>{var t=H3(),n=N(t,!0),r=F(n,2,!0);E(t),I((e,t)=>{V(n,e),V(r,t)},[()=>cc(),()=>dc()]),B(e,t)},g=k(()=>lO.loaded&&!lO.auditVisible()&&!Y.needsAuth);H(m,e=>{L(g)&&e(h)});var _=F(m,2),v=N(_);T2(v,{});var y=F(v,2),b=N(y),x=N(b),S=e=>{var t=U3(),n=N(t,!0);E(t),I(e=>V(n,e),[()=>C2.auditGroupSessions?mc({start:C2.auditLog.offset+1,end:Math.min(C2.auditLog.offset+C2.auditLog.limit,C2.auditLog.total),total:C2.auditLog.total}):_c({start:C2.auditLog.offset+1,end:Math.min(C2.auditLog.offset+C2.auditLog.limit,C2.auditLog.total),total:C2.auditLog.total})]),B(e,t)};H(x,e=>{C2.auditLog.total>0&&e(S)});var C=F(x,2),w=N(C);ta(w);var T=F(w,2),ee=N(T,!0);E(T),E(C),E(b),k2(F(b,2),{}),E(y);var te=F(y,2),ne=e=>{var t=W3(),n=N(t);{let e=k(()=>Cc());_U(n,{size:18,get label(){return L(e)}})}E(t),B(e,t)},re=e=>{var t=K3();U(t,29,()=>C2.auditLog.entries,e=>e.id,(e,t)=>{var n=G3(),r=N(n),i=e=>{B3(e,{get entry(){return L(t)}})},a=e=>{P3(e,{get entry(){return L(t)}})};H(r,e=>{C2.auditGroupSessions?e(i):e(a,-1)}),E(n),Di(n,()=>t0,()=>({duration:a0(150)})),Oi(1,n,()=>o0,()=>({live:L(t)._live})),B(e,n)}),E(t),B(e,t)};H(te,e=>{C2.loading&&C2.auditLog.entries.length===0?e(ne):C2.auditLog.entries.length>0&&e(re,1)});var ie=F(te,2),ae=e=>{var t=q3();bU(N(t),{}),E(t),B(e,t)};H(ie,e=>{C2.auditLog.entries.length===0&&!C2.loading&&!Y.needsAuth&&e(ae)}),UG(F(ie,2),{get total(){return C2.auditLog.total},get offset(){return C2.auditLog.offset},get limit(){return C2.auditLog.limit},onprev:()=>C2.auditLogPrevPage(),onnext:()=>C2.auditLogNextPage()}),E(_),E(i),I((e,t)=>{V(c,e),ra(w,C2.auditGroupSessions),V(ee,t)},[()=>Bs(),()=>bc()]),R(`change`,w,()=>C2.toggleAuditGroupSessions()),B(e,i),O()}Vr([`change`]);function X3(e){try{let t=JSON.parse(JSON.stringify(e||{}));return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}function Z3(e){return Array.isArray(e)?e.map(e=>String(e||``).trim()).filter(e=>e):e==null?[]:String(e).split(`,`).map(e=>e.trim()).filter(e=>e)}function Q3(e,t){let n=String(t||``).trim();return(e||[]).find(e=>String(e&&e.type||``).trim()===n)||null}function $3(e){return Array.isArray(e)&&e.length>0&&String(e[0].type||``).trim()||`system_prompt`}function e6(e,t){let n=String(t||``).trim();return n&&Q3(e,n)?n:$3(e)}function t6(e,t){let n=Q3(e,t);return!n||!n.defaults?{}:X3(n.defaults)}function n6(e,t,n){return{...t6(e,n),...X3(t)}}function r6(e,t){let n=e6(e,t);return{name:``,type:n,description:``,user_path:``,config:t6(e,n)}}function i6(e,t){if(!t)return e||[];let n=String(t).toLowerCase();return(e||[]).filter(e=>[e.name,e.type,e.user_path,e.description,e.summary].some(e=>String(e||``).toLowerCase().includes(n)))}function a6(e,t){let n=Q3(e,t);return n&&n.label?n.label:t||`Unknown`}function o6(e,t){let n=Q3(e,t);return Array.isArray(n&&n.fields)?n.fields:[]}function s6(e,t){if(!t||!e)return t&&t.input===`checkboxes`?[]:``;let n=e[t.key];return n==null?t.input===`checkboxes`?[]:``:t.input===`checkboxes`?Z3(n):n}function c6(e,t,n){if(!t)return e;let r=X3(e);if(t.input===`number`){let e=String(n||``).trim();if(e===``)delete r[t.key];else{let n=Number(e);r[t.key]=Number.isFinite(n)?n:e}}else t.input===`checkboxes`?r[t.key]=Z3(n):r[t.key]=n;return r}function l6(e,t,n){return s6(e,t).includes(String(n||``).trim())}function u6(e,t,n,r){let i=Z3(s6(e,t)),a=String(n||``).trim();return a?c6(e,t,r?Array.from(new Set([...i,a])):i.filter(e=>e!==a)):e}function d6(e){return{name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),description:String(e&&e.description||``).trim()||void 0,user_path:String(e&&e.user_path||``).trim()||void 0,config:X3(e&&e.config)}}var f6=new class{#e=A(M([]));get guardrails(){return L(this.#e)}set guardrails(e){j(this.#e,e,!0)}#t=A(M([]));get types(){return L(this.#t)}set types(e){j(this.#t,e,!0)}#n=A(!0);get available(){return L(this.#n)}set available(e){j(this.#n,e,!0)}#r=A(!1);get loading(){return L(this.#r)}set loading(e){j(this.#r,e,!0)}#i=A(!1);get typesLoading(){return L(this.#i)}set typesLoading(e){j(this.#i,e,!0)}#a=A(``);get error(){return L(this.#a)}set error(e){j(this.#a,e,!0)}#o=A(``);get filter(){return L(this.#o)}set filter(e){j(this.#o,e,!0)}#s=A(!1);get formOpen(){return L(this.#s)}set formOpen(e){j(this.#s,e,!0)}#c=A(!1);get formSubmitting(){return L(this.#c)}set formSubmitting(e){j(this.#c,e,!0)}#l=A(``);get deletingName(){return L(this.#l)}set deletingName(e){j(this.#l,e,!0)}#u=A(`create`);get formMode(){return L(this.#u)}set formMode(e){j(this.#u,e,!0)}#d=A(``);get formOriginalName(){return L(this.#d)}set formOriginalName(e){j(this.#d,e,!0)}#f=A(M({name:``,type:``,description:``,user_path:``,config:{}}));get form(){return L(this.#f)}set form(e){j(this.#f,e,!0)}get filtered(){return i6(this.guardrails,this.filter)}typeLabel(e){return a6(this.types,e)}typeFields(e){return o6(this.types,e)}fieldValue(e){return s6(this.form&&this.form.config,e)}setFieldValue(e,t){this.form={...this.form,config:c6(this.form.config,e,t)}}arrayFieldSelected(e,t){return l6(this.form&&this.form.config,e,t)}toggleArrayFieldValue(e,t,n){this.form={...this.form,config:u6(this.form.config,e,t,n)}}openCreate(){this.formMode=`create`,this.formOriginalName=``,this.error=``,this.form=r6(this.types,$3(this.types)),this.formOpen=!0}openEdit(e){let t=e6(this.types,e&&e.type);this.formMode=`edit`,this.formOriginalName=String(e&&e.name||``).trim(),this.error=``,this.form={name:this.formOriginalName,type:t,description:String(e&&e.description||``).trim(),user_path:String(e&&e.user_path||``).trim(),config:n6(this.types,e&&e.config,t)},this.formOpen=!0}closeForm(){this.formOpen=!1,this.formMode=`create`,this.formOriginalName=``,this.error=``,this.form=r6(this.types,$3(this.types))}changeType(e){let t=e6(this.types,e);this.form={...this.form,type:t,config:t6(this.types,t)}}async fetchTypes(){this.typesLoading=!0;try{let e=await fK(`/admin/guardrails/types`,{label:`guardrail types`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.types=[];return}if(e.result&&(this.available=!0),this.types=e.items,e.status===`error`){this.error=e.error;return}let t=e6(this.types,this.form.type);this.form={...this.form,type:t,config:n6(this.types,this.form.config,t)}}finally{this.typesLoading=!1}}async fetchGuardrails(){this.loading=!0,this.error=``;try{let e=await fK(`/admin/guardrails`,{label:`guardrails`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.guardrails=[];return}e.result&&(this.available=!0),this.guardrails=e.items,this.error=e.error}finally{this.loading=!1}}async fetchPage(){await Promise.all([this.fetchTypes(),this.fetchGuardrails()])}async submitForm(){let e=String(this.form.name||``).trim(),t=String(this.form.type||``).trim();if(!e){this.error=`Name is required.`;return}if(!t){this.error=`Type is required.`;return}this.error=``,this.formSubmitting=!0;let n=d6(this.form);try{let t=await pK(`/admin/guardrails`,`PUT`,n,{label:`save guardrail`,errorFallback:`Failed to save guardrail.`,unavailableMessage:`Guardrails feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error;return}UO.success(`Guardrail "`+e+`" saved.`),this.closeForm(),this.fetchGuardrails()}finally{this.formSubmitting=!1}}async deleteGuardrail(e){let t=String(e&&e.name||``).trim();if(!(!t||this.deletingName)&&window.confirm(`Delete guardrail "`+t+`"? Workflows that still reference it must be updated first.`)){this.deletingName=t;try{let e=await pK(`/admin/guardrails`,`DELETE`,{name:t},{label:`delete guardrail`,errorFallback:`Failed to delete guardrail.`,unavailableMessage:`Guardrails feature is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,UO.error(e.error);return}if(e.status===`error`){UO.error(e.error);return}UO.success(`Guardrail "`+t+`" deleted.`),this.formOpen&&this.formOriginalName===t&&this.closeForm(),this.fetchGuardrails()}finally{this.deletingName=``}}}},p6=z(`
                `),m6=z(`

                Loading guardrails...

                `),h6=z(`
                `),g6=z(`
                `),_6=z(`
                NameTypeUser PathSummaryActions
                `),v6=z(`

                No guardrails defined yet.

                `),y6=z(`

                Instances

                Each instance has a reusable name, a type, an optional user path for + future UI visibility scoping, and a JSON-backed config payload for + that type.

                `);function b6(e,t){D(t,!0);var n=y6(),r=N(n),i=F(N(r),2);q(N(i),{get icon(){return qE},class:`form-action-icon`}),He(2),E(i),E(r);var a=F(r,2),o=e=>{var t=p6(),n=N(t);mG(N(n),{id:`guardrail-filter`,placeholder:`Filter by name, type, user path, summary...`,label:`Guardrail filter`,get value(){return f6.filter},set value(e){f6.filter=e}}),E(n),E(t),B(e,t)};H(a,e=>{f6.available&&e(o)});var s=F(a,2),c=e=>{var t=m6();_U(N(t),{size:16,label:`Loading guardrails`}),He(),E(t),B(e,t)};H(s,e=>{f6.loading&&f6.filtered.length===0&&e(c)});var l=F(s,2),u=e=>{var t=_6(),n=N(t),r=F(N(n));U(r,21,()=>f6.filtered,e=>e.name,(e,t)=>{var n=g6(),r=N(n),i=N(r,!0);E(r);var a=F(r),o=N(a),s=N(o,!0);E(o),E(a);var c=F(a),l=N(c,!0);E(c);var u=F(c),d=N(u),f=N(d,!0);E(d);var p=F(d,2),m=e=>{var n=h6(),r=N(n,!0);E(n),I(()=>V(r,L(t).description)),B(e,n)};H(p,e=>{L(t).description&&e(m)}),E(u);var h=F(u),g=N(h),_=N(g);{let e=k(()=>`Edit guardrail `+L(t).name);dK(_,{get label(){return L(e)},class:`table-icon-btn`,onclick:()=>f6.openEdit(L(t)),children:(e,t)=>{q(e,{get icon(){return GE},class:`table-icon-svg`})},$$slots:{default:!0}})}var v=F(_,2);{let e=k(()=>(f6.deletingName===L(t).name?`Deleting guardrail `:`Delete guardrail `)+L(t).name),n=k(()=>f6.deletingName===L(t).name);dK(v,{get label(){return L(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>f6.deleteGuardrail(L(t)),get disabled(){return L(n)},children:(e,t)=>{q(e,{get icon(){return _D},class:`table-icon-svg`})},$$slots:{default:!0}})}E(g),E(h),E(n),I(e=>{V(i,L(t).name),V(s,e),V(l,L(t).user_path||`—`),V(f,L(t).summary||L(t).description||`No summary yet.`)},[()=>f6.typeLabel(L(t).type)]),B(e,n)}),E(r),E(n),E(t),B(e,t)};H(l,e=>{f6.filtered.length>0&&e(u)});var d=F(l,2),f=e=>{B(e,v6())};H(d,e=>{f6.filtered.length===0&&!f6.loading&&f6.available&&!f6.error&&!Y.authError&&e(f)}),E(n),I(()=>i.disabled=f6.typesLoading||f6.formSubmitting||!f6.available),R(`click`,i,()=>f6.openCreate()),B(e,n),O()}Vr([`click`]);var x6=z(`

                Workflows reference these names directly, so renames are + intentionally avoided after creation.

                `),S6=z(``),C6=z(``),w6=z(``),T6=z(``),E6=z(``),D6=z(``),O6=z(``),k6=z(``),A6=z(``),j6=z(`
                `),M6=z(``),N6=z(` `),P6=z(`
                `),F6=z(`
                `);function I6(e,t){D(t,!0);let n=k(()=>f6.formMode===`edit`);{let t=e=>{B(e,x6())},r=k(()=>L(n)?`Edit Guardrail`:`Create Guardrail`);hq(e,{get open(){return f6.formOpen},get title(){return L(r)},ariaLabel:`Guardrail editor`,get error(){return f6.error},get submitting(){return f6.formSubmitting},submitLabel:`Save Guardrail`,dialogClass:`settings-guardrails-editor guardrails-editor-wide`,onclose:()=>f6.closeForm(),onsubmit:()=>f6.submitForm(),headerHint:t,children:(e,t)=>{var r=F6(),i=N(r);_q(i,{id:`guardrail-name`,label:`Name`,children:(e,t)=>{var r=S6();ta(r),I(()=>{r.disabled=L(n),G(r,`data-modal-autofocus`,!L(n)||void 0)}),ua(r,()=>f6.form.name,e=>f6.form.name=e),B(e,r)},$$slots:{default:!0}});var a=F(i,2);_q(a,{id:`guardrail-type`,label:`Type`,children:(e,t)=>{var r=w6();U(r,21,()=>f6.types,e=>e.type,(e,t)=>{var n=C6(),r=N(n,!0);E(n);var i={};I(()=>{V(r,L(t).label),i!==(i=L(t).type)&&(n.value=(n.__value=L(t).type)??``)}),B(e,n)}),E(r);var i;Ui(r),I(()=>{r.disabled=L(n),i!==(i=f6.form.type)&&(r.value=(r.__value=f6.form.type)??``,Hi(r,f6.form.type))}),R(`change`,r,e=>f6.changeType(e.currentTarget.value)),B(e,r)},$$slots:{default:!0}});var o=F(a,2);_q(o,{id:`guardrail-description`,label:`Description`,children:(e,t)=>{var r=T6();ta(r),I(()=>G(r,`data-modal-autofocus`,L(n)?!0:void 0)),ua(r,()=>f6.form.description,e=>f6.form.description=e),B(e,r)},$$slots:{default:!0}});var s=F(o,2),c=N(s);HU(c,{copyId:`guardrail-user-path-help-copy`,label:`guardrail user path help`,text:`Only used for auxiliary rewrite (llm_based_altering) guardrails; ignored for other guardrail types.`,title:e=>{B(e,E6())},$$slots:{title:!0}});var l=F(c,2);ta(l),E(s),U(F(s,2),17,()=>f6.typeFields(f6.form.type),e=>e.key,(e,t)=>{var n=Zr(),r=P(n),i=e=>{var n=j6(),r=N(n);{let e=e=>{var n=D6(),r=N(n,!0);E(n),I(()=>{G(n,`for`,`guardrail-field-`+L(t).key),V(r,L(t).label)}),B(e,n)},n=k(()=>`guardrail-field-help-`+L(t).key),i=k(()=>L(t).label+` help`),a=k(()=>L(t).help||``);HU(r,{get copyId(){return L(n)},get label(){return L(i)},get text(){return L(a)},title:e,$$slots:{title:!0}})}var i=F(r,2),a=e=>{var n=O6();U(n,21,()=>L(t).options||[],e=>e.value,(e,t)=>{var n=C6(),r=N(n,!0);E(n);var i={};I(()=>{V(r,L(t).label),i!==(i=L(t).value)&&(n.value=(n.__value=L(t).value)??``)}),B(e,n)}),E(n);var r;Ui(n),I(e=>{G(n,`id`,`guardrail-field-`+L(t).key),G(n,`aria-describedby`,L(t).help?`guardrail-field-help-`+L(t).key:void 0),r!==(r=e)&&(n.value=(n.__value=e)??``,Hi(n,e))},[()=>f6.fieldValue(L(t))]),R(`change`,n,e=>f6.setFieldValue(L(t),e.currentTarget.value)),B(e,n)},o=e=>{var n=k6();dt(n),I(e=>{G(n,`id`,`guardrail-field-`+L(t).key),G(n,`placeholder`,L(t).placeholder||``),na(n,e),G(n,`aria-describedby`,L(t).help?`guardrail-field-help-`+L(t).key:void 0)},[()=>f6.fieldValue(L(t))]),R(`input`,n,e=>f6.setFieldValue(L(t),e.currentTarget.value)),B(e,n)},s=e=>{var n=A6();ta(n),I(e=>{G(n,`id`,`guardrail-field-`+L(t).key),G(n,`type`,L(t).input||`text`),G(n,`placeholder`,L(t).placeholder||``),na(n,e),G(n,`aria-describedby`,L(t).help?`guardrail-field-help-`+L(t).key:void 0)},[()=>f6.fieldValue(L(t))]),R(`input`,n,e=>f6.setFieldValue(L(t),e.currentTarget.value)),B(e,n)};H(i,e=>{L(t).input===`select`?e(a):L(t).input===`textarea`?e(o,1):e(s,-1)}),E(n),B(e,n)},a=e=>{var n=P6(),r=N(n),i=N(r,!0);E(r);var a=F(r,2);U(a,21,()=>L(t).options||[],e=>L(t).key+`-`+e.value,(e,n)=>{var r=M6(),i=N(r);ta(i);var a=F(i,2),o=N(a,!0);E(a),E(r),I(e=>{ra(i,e),V(o,L(n).label)},[()=>f6.arrayFieldSelected(L(t),L(n).value)]),R(`change`,i,e=>f6.toggleArrayFieldValue(L(t),L(n).value,e.currentTarget.checked)),B(e,r)}),E(a);var o=F(a,2),s=e=>{var n=N6(),r=N(n,!0);E(n),I(()=>{G(n,`id`,`guardrail-field-help-`+L(t).key),V(r,L(t).help)}),B(e,n)};H(o,e=>{L(t).help&&e(s)}),E(n),I(()=>{G(n,`aria-describedby`,L(t).help?`guardrail-field-help-`+L(t).key:void 0),V(i,L(t).label)}),B(e,n)};H(r,e=>{L(t).input===`checkboxes`?e(a,-1):e(i)}),B(e,n)}),E(r),ua(l,()=>f6.form.user_path,e=>f6.form.user_path=e),B(e,r)},$$slots:{headerHint:!0,default:!0}})}O()}Vr([`change`,`input`]);var L6=z(`

                Guardrails

                `),R6=z(`
                Runtime guardrail execution is currently off because GUARDRAILS_ENABLED is disabled. You can still manage + definitions here.
                `),z6=z(`
                Guardrails feature is unavailable.
                `),B6=z(`
                `),V6=z(`

                Reusable Policy Objects

                Guardrail Library

                Store guardrails in the database, keep them hot in memory, and attach + them to workflows by reference.

                Instances
                Types
                `);function H6(e,t){D(t,!0),kn(()=>{Y.refreshTick,kD.page===`guardrails`&&(lO.ensureLoaded(),f6.fetchPage())});var n=V6(),r=N(n),i=N(r);HU(N(i),{copyId:`guardrails-help-copy`,label:`guardrails help`,text:`Reusable policy objects stored in the database and kept hot in memory for workflow execution.`,title:e=>{B(e,L6())},$$slots:{title:!0}}),E(i),E(r);var a=F(r,2),o=F(N(a),2),s=N(o),c=F(N(s),2),l=N(c,!0);E(c),E(s);var u=F(s,2),d=F(N(u),2),f=N(d,!0);E(d),E(u),E(o),E(a);var p=F(a,2);Mk(p,{});var m=F(p,2),h=e=>{B(e,R6())},g=k(()=>!lO.guardrailsVisible());H(m,e=>{L(g)&&e(h)});var _=F(m,2),v=e=>{B(e,z6())};H(_,e=>{!Y.authError&&!f6.available&&e(v)});var y=F(_,2),b=e=>{var t=B6(),n=N(t,!0);E(t),I(()=>V(n,f6.error)),B(e,t)};H(y,e=>{!Y.authError&&f6.error&&!f6.formOpen&&e(b)});var x=F(y,2);I6(x,{}),b6(F(x,2),{}),E(n),I((e,t)=>{V(l,e),V(f,t)},[()=>ZO(f6.guardrails.length),()=>ZO(f6.types.length)]),B(e,n),O()}var $=new class{#e=A(M([]));get servers(){return L(this.#e)}set servers(e){j(this.#e,e,!0)}#t=A(!0);get available(){return L(this.#t)}set available(e){j(this.#t,e,!0)}#n=A(!1);get loading(){return L(this.#n)}set loading(e){j(this.#n,e,!0)}#r=A(``);get error(){return L(this.#r)}set error(e){j(this.#r,e,!0)}#i=A(``);get filter(){return L(this.#i)}set filter(e){j(this.#i,e,!0)}#a=A(!1);get formOpen(){return L(this.#a)}set formOpen(e){j(this.#a,e,!0)}#o=A(!1);get formSubmitting(){return L(this.#o)}set formSubmitting(e){j(this.#o,e,!0)}#s=A(`create`);get formMode(){return L(this.#s)}set formMode(e){j(this.#s,e,!0)}#c=A(!1);get slugEdited(){return L(this.#c)}set slugEdited(e){j(this.#c,e,!0)}#l=A(!1);get advancedOpen(){return L(this.#l)}set advancedOpen(e){j(this.#l,e,!0)}#u=A(M(oH()));get form(){return L(this.#u)}set form(e){j(this.#u,e,!0)}#d=A(``);get deletingName(){return L(this.#d)}set deletingName(e){j(this.#d,e,!0)}#f=A(``);get reconnectingName(){return L(this.#f)}set reconnectingName(e){j(this.#f,e,!0)}#p=A(!1);get catalogOpen(){return L(this.#p)}set catalogOpen(e){j(this.#p,e,!0)}#m=A(!1);get catalogLoading(){return L(this.#m)}set catalogLoading(e){j(this.#m,e,!0)}#h=A(``);get catalogError(){return L(this.#h)}set catalogError(e){j(this.#h,e,!0)}#g=A(M(sH()));get catalog(){return L(this.#g)}set catalog(e){j(this.#g,e,!0)}#_=k(()=>vH(this.servers,this.filter));get filtered(){return L(this.#_)}set filtered(e){j(this.#_,e)}async fetchServers(){if(await lO.ensureLoaded(),!lO.mcpVisible()){this.available=!1,this.servers=[],this.error=``,this.loading=!1;return}this.loading=!0,this.error=``;try{let e=await fK(`/admin/mcp-servers`,{label:`mcp servers`,errorFallback:`Failed to load MCP servers.`,unavailableStatuses:[503,404]});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.servers=[];return}if(e.status===`error`){e.result&&(this.available=!0),this.servers=[],this.error=e.error;return}this.available=!0,this.servers=e.items}finally{this.loading=!1}}openCreate(){this.formMode=`create`,this.slugEdited=!1,this.advancedOpen=!1,this.error=``,this.form=oH(),this.formOpen=!0}openEdit(e){!e||e.managed||(this.formMode=`edit`,this.slugEdited=!0,this.advancedOpen=!1,this.error=``,this.form=yH(e),this.formOpen=!0)}closeForm(){this.formOpen=!1,this.formMode=`create`,this.slugEdited=!1,this.advancedOpen=!1,this.error=``,this.form=oH()}syncSlugFromName(){this.formMode===`create`&&!this.slugEdited&&(this.form.slug=mH(this.form.name))}markSlugEdited(){this.formMode===`create`&&(this.slugEdited=!0)}addHeader(){this.form.headers.push({name:``,value:``})}removeHeader(e){this.form.headers.splice(e,1)}async submitForm(){let e=bH(this.form,this.formMode,this.servers);if(e.error){this.error=e.error;return}this.error=``,this.formSubmitting=!0;try{let t=await pK(`/admin/mcp-servers`,`PUT`,e.payload,{label:`save mcp server`,errorFallback:`Failed to save MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error;return}UO.success(`MCP server "`+e.payload.name+`" saved.`),this.closeForm(),this.fetchServers()}finally{this.formSubmitting=!1}}async deleteServer(e){let t=String(e&&e.name||``).trim(),n=cH(e);if(!(!n||this.deletingName||e&&e.managed)&&confirm(`Delete MCP server "`+t+`"? Clients lose access to its tools immediately.`)){this.deletingName=n;try{let e=await pK(`/admin/mcp-servers/`+encodeURIComponent(n),`DELETE`,void 0,{label:`delete mcp server`,errorFallback:`Failed to delete MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,UO.error(e.error);return}if(e.status===`error`){UO.error(e.error);return}UO.success(`MCP server "`+t+`" deleted.`),this.formOpen&&this.form.slug===n&&this.closeForm(),this.fetchServers()}finally{this.deletingName=``}}}async reconnectServer(e){let t=String(e&&e.name||``).trim(),n=cH(e);if(!(!n||this.reconnectingName)){this.reconnectingName=n;try{let e=await pK(`/admin/mcp-servers/`+encodeURIComponent(n)+`/reconnect`,`POST`,void 0,{label:`reconnect mcp server`,errorFallback:`Failed to reconnect MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,UO.error(e.error);return}if(e.status===`error`){UO.error(e.error);return}let r=e.result.data,i=lH(r);i===`connected`?UO.success(`MCP server "`+t+`" reconnected.`):i===`disabled`?UO.success(`MCP server "`+t+`" is disabled; no connection was attempted.`):UO.error(`Reconnect attempted, but MCP server "`+t+`" is still `+i+`.`),r&&r.name?this.servers=(this.servers||[]).map(e=>cH(e)===cH(r)?r:e):this.fetchServers()}finally{this.reconnectingName=``}}}async openCatalog(e){let t=String(e&&e.name||``).trim(),n=cH(e);if(n){this.catalogOpen=!0,this.catalogLoading=!0,this.catalogError=``,this.catalog={...sH(),server:n,status:lH(e)};try{let e=await iO(`/admin/mcp-servers/`+encodeURIComponent(n)+`/catalog`,{label:`mcp server catalog`});if(e.stale)return;if(e.status===503){this.available=!1,this.catalogError=`MCP server management is unavailable.`;return}if(e.status===404){this.catalogError=`MCP server "`+t+`" was not found.`;return}if(!e.ok){this.catalogError=e.status===401?`Authentication required.`:$D(e.data,`Failed to load MCP server catalog.`);return}this.catalog=xH(n,e.data)}catch(e){console.error(`Failed to load MCP server catalog:`,e),this.catalogError=`Failed to load MCP server catalog.`}finally{this.catalogLoading=!1}}}closeCatalog(){this.catalogOpen=!1,this.catalogLoading=!1,this.catalogError=``,this.catalog=sH()}},U6=z(``),W6=z(`

                `),G6=z(`
                `),K6=z(`

                `),q6=z(`
              • `),J6=z(`

                  `),Y6=z(`

                  No tools listed — the server may still be connecting or degraded.

                  `),X6=z(` `,1),Z6=z(``);function Q6(e,t){D(t,!0);let n=k(()=>CH($.catalog));SO(e,{get open(){return $.catalogOpen},variant:`editor`,onclose:()=>$.closeCatalog(),children:(e,t)=>{var r=Z6(),i=N(r),a=N(i),o=F(N(a),2),s=N(o),c=N(s,!0);E(s);var l=F(s,2),u=N(l,!0);E(l),E(o),E(a),vO(F(a,2),{label:`Close MCP server catalog`,onclick:()=>$.closeCatalog()}),E(i);var d=F(i,2),f=e=>{lK(e,{label:`Loading catalog...`})},p=e=>{var t=U6(),n=N(t,!0);E(t),I(()=>V(n,$.catalogError)),B(e,t)},m=e=>{var t=X6(),r=P(t),i=e=>{var t=W6(),n=N(t,!0);E(t),I(()=>V(n,$.catalog.instructions)),B(e,t)};H(r,e=>{$.catalog.instructions&&e(i)});var a=F(r,2);U(a,17,()=>L(n),e=>e.key,(e,t)=>{var n=J6(),r=N(n),i=N(r,!0);E(r);var a=F(r,2);U(a,21,()=>L(t).items,e=>e.key,(e,t)=>{var n=q6(),r=N(n),i=N(r,!0);E(r);var a=F(r,2),o=e=>{var n=G6(),r=N(n,!0);E(n),I(()=>{G(n,`title`,`Exposed on the aggregated /mcp endpoint as `+L(t).aggregated),V(r,L(t).aggregated)}),B(e,n)};H(a,e=>{L(t).aggregated&&e(o)});var s=F(a,2),c=e=>{var n=K6(),r=N(n,!0);E(n),I(()=>V(r,L(t).description)),B(e,n)};H(s,e=>{L(t).description&&e(c)}),E(n),I(()=>{G(r,`title`,L(t).aggregated||L(t).name),V(i,L(t).name)}),B(e,n)}),E(a),E(n),I(()=>V(i,L(t).title)),B(e,n)});var o=F(a,2),s=e=>{B(e,Y6())},c=k(()=>wH($.catalog));H(o,e=>{L(c)&&e(s)}),B(e,t)};H(d,e=>{$.catalogLoading?e(f):$.catalogError?e(p,1):e(m,-1)});var h=F(d,2),g=N(h);E(h),E(r),I((e,t)=>{V(c,$.catalog.server),W(l,1,`audit-status-badge ${e??``}`,`svelte-1xqrzco`),V(u,t)},[()=>uH($.catalog),()=>lH($.catalog)]),R(`click`,g,()=>$.closeCatalog()),B(e,r)},$$slots:{default:!0}}),O()}Vr([`click`]);var $6=z(`

                  The display name can change. The slug is the stable client-facing identity.

                  `),e8=z(` Human-readable and Unicode-friendly. You can change it later.`,1),t8=z(`Derived from the name. You may edit it before saving.`),n8=z(`Immutable because it is used in URLs, scope headers, and aggregated tool names.`),r8=z(` `,1),i8=z(` stdio servers are config-only: declare them in config.yaml under mcp.servers.`,1),a8=z(``),o8=z(`
                  `),s8=z(`
                  Headers
                  Sent only to the configured server origin. Saved values are shown as ***; leave *** unchanged to keep the stored value.
                  Advanced settings Description, access rules, and timeout
                  `,1);function c8(e,t){D(t,!0);{let t=e=>{B(e,$6())},n=k(()=>$.formMode===`edit`?`Edit MCP Server`:`Add MCP Server`);hq(e,{get open(){return $.formOpen},get title(){return L(n)},ariaLabel:`MCP server editor`,get error(){return $.error},get submitting(){return $.formSubmitting},onclose:()=>$.closeForm(),onsubmit:()=>$.submitForm(),headerHint:t,children:(e,t)=>{var n=s8(),r=P(n);_q(r,{id:`mcp-server-name`,label:`Name`,children:(e,t)=>{var n=e8(),r=P(n);ta(r),He(2),R(`input`,r,()=>$.syncSlugFromName()),ua(r,()=>$.form.name,e=>$.form.name=e),B(e,n)},$$slots:{default:!0}});var i=F(r,2);_q(i,{id:`mcp-server-slug`,label:`Slug`,children:(e,t)=>{var n=r8(),r=P(n);ta(r);var i=F(r,2),a=e=>{B(e,t8())},o=e=>{B(e,n8())};H(i,e=>{$.formMode===`create`?e(a):e(o,-1)}),I(()=>r.disabled=$.formMode===`edit`),R(`input`,r,()=>$.markSlugEdited()),ua(r,()=>$.form.slug,e=>$.form.slug=e),B(e,n)},$$slots:{default:!0}});var a=F(i,2);_q(a,{id:`mcp-server-transport`,label:`Transport`,children:(e,t)=>{var n=i8(),r=P(n),i=N(r);i.value=i.__value=`http`;var a=F(i);a.value=a.__value=`sse`,E(r),He(2),Wi(r,()=>$.form.transport,e=>$.form.transport=e),B(e,n)},$$slots:{default:!0}});var o=F(a,2);_q(o,{id:`mcp-server-url`,label:`URL`,children:(e,t)=>{var n=a8();ta(n),ua(n,()=>$.form.url,e=>$.form.url=e),B(e,n)},$$slots:{default:!0}});var s=F(o,2),c=F(N(s),2);U(c,21,()=>$.form.headers,ai,(e,t,n)=>{var r=o8(),i=N(r);ta(i);var a=F(i,2);ta(a),dK(F(a,2),{label:`Remove header`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>$.removeHeader(n),children:(e,t)=>{q(e,{get icon(){return uD},class:`table-icon-svg`})},$$slots:{default:!0}}),E(r),ua(i,()=>L(t).name,e=>L(t).name=e),ua(a,()=>L(t).value,e=>L(t).value=e),B(e,r)}),E(c);var l=F(c,2),u=N(l);q(N(u),{get icon(){return qE},class:`form-action-icon`}),He(2),E(u),E(l),He(2),E(s);var d=F(s,2),f=N(d);_Z(N(f),{get enabled(){return $.form.enabled},label:`MCP server`,onclick:()=>$.form.enabled=!$.form.enabled}),E(f),E(d);var p=F(d,2),m=F(N(p),2),h=N(m),g=F(N(h),2);ta(g),E(h);var _=F(h,2),v=F(N(_),2);ta(v),E(_);var y=F(_,2),b=F(N(y),2);ta(b),E(y);var x=F(y,2),S=F(N(x),2);dt(S),G(S,`placeholder`,`/ +/team/alpha`),E(x);var C=F(x,2),w=F(N(C),2);ta(w),E(C),E(m),E(p),I(()=>p.open=$.advancedOpen),R(`click`,u,()=>$.addHeader()),Br(`toggle`,p,e=>$.advancedOpen=e.currentTarget.open),ua(g,()=>$.form.description,e=>$.form.description=e),ua(v,()=>$.form.allowed_tools,e=>$.form.allowed_tools=e),ua(b,()=>$.form.disallowed_tools,e=>$.form.disallowed_tools=e),ua(S,()=>$.form.user_paths,e=>$.form.user_paths=e),ua(w,()=>$.form.tool_timeout_seconds,e=>$.form.tool_timeout_seconds=e),B(e,n)},$$slots:{headerHint:!0,default:!0}})}O()}Vr([`input`,`click`]);var l8=z(`Config`),u8=z(`
                  `),d8=z(`
                  `),f8=z(`
                  NameTransportEndpointStatusToolsEnabledActions
                  `);function p8(e,t){D(t,!0);function n(e){return dH(e,e=>QD.formatTimestamp(e))}var r=f8(),i=N(r),a=F(N(i));U(a,21,()=>$.filtered,e=>cH(e),(e,t)=>{var r=d8(),i=N(r),a=N(i),o=N(a,!0);E(a);var s=F(a,2),c=e=>{B(e,l8())};H(s,e=>{L(t).managed&&e(c)});var l=F(s,2),u=N(l,!0);E(l),E(i);var d=F(i),f=N(d),p=N(f,!0);E(f),E(d);var m=F(d),h=N(m,!0);E(m);var g=F(m),_=N(g),v=N(_,!0);E(_);var y=F(_,2),b=e=>{var n=u8(),r=N(n,!0);E(n),I(()=>V(r,L(t).last_error)),B(e,n)},x=k(()=>lH(L(t))===`degraded`&&L(t).last_error);H(y,e=>{L(x)&&e(b)}),E(g);var S=F(g),C=N(S),w=N(C,!0);E(C);var T=F(C,2),ee=N(T,!0);E(T),E(S);var te=F(S),ne=N(te),re=N(ne,!0);E(ne),E(te);var ie=F(te),ae=N(ie),oe=N(ae),se=e=>{{let n=k(()=>`Edit MCP server `+L(t).name);dK(e,{get label(){return L(n)},class:`table-icon-btn`,onclick:()=>$.openEdit(L(t)),children:(e,t)=>{q(e,{get icon(){return GE},class:`table-icon-svg`})},$$slots:{default:!0}})}};H(oe,e=>{L(t).managed||e(se)});var ce=F(oe,2);{let e=k(()=>`Inspect catalog of MCP server `+L(t).name);dK(ce,{get label(){return L(e)},class:`table-icon-btn`,onclick:()=>$.openCatalog(L(t)),children:(e,t)=>{q(e,{get icon(){return RE},class:`form-action-icon`})},$$slots:{default:!0}})}var le=F(ce,2);{let e=k(()=>($.reconnectingName===cH(L(t))?`Reconnecting MCP server `:`Reconnect MCP server `)+L(t).name),n=k(()=>$.reconnectingName===cH(L(t)));dK(le,{get label(){return L(e)},class:`table-icon-btn`,onclick:()=>$.reconnectServer(L(t)),get disabled(){return L(n)},children:(e,t)=>{q(e,{get icon(){return YE},class:`form-action-icon`})},$$slots:{default:!0}})}var ue=F(le,2),de=e=>{{let n=k(()=>($.deletingName===cH(L(t))?`Deleting MCP server `:`Delete MCP server `)+L(t).name),r=k(()=>$.deletingName===cH(L(t)));dK(e,{get label(){return L(n)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>$.deleteServer(L(t)),get disabled(){return L(r)},children:(e,t)=>{q(e,{get icon(){return _D},class:`table-icon-svg`})},$$slots:{default:!0}})}};H(ue,e=>{L(t).managed||e(de)}),E(ae),E(ie),E(r),I((e,n,r,i,a,s,c,l)=>{V(o,L(t).name),V(u,e),V(p,L(t).transport||`http`),G(m,`title`,n),V(h,r),W(_,1,`audit-status-badge ${i??``}`,`svelte-ah8nrt`),G(_,`title`,a),V(v,s),V(w,c),V(ee,l),W(ne,1,Pi([`auth-key-status-badge`,L(t).enabled?`auth-key-status-active`:`auth-key-status-inactive`])),V(re,L(t).enabled?`Enabled`:`Disabled`)},[()=>cH(L(t)),()=>fH(L(t)),()=>fH(L(t)),()=>uH(L(t)),()=>n(L(t)),()=>lH(L(t)),()=>ZO(L(t).tool_count||0),()=>pH(L(t))]),B(e,r)}),E(a),E(i),E(r),B(e,r),O()}var m8=z(`

                  MCP Servers

                  `),h8=z(``),g8=z(`
                  MCP server management is unavailable.
                  `),_8=z(``),v8=z(`
                  `),y8=z(`

                  No MCP servers yet. Add one here, or declare servers in config.yaml under mcp.servers.

                  `),b8=z(`

                  No MCP servers match your filter.

                  `),x8=z(`
                  `);function S8(e,t){D(t,!0),kn(()=>{Y.refreshTick,kD.page===`mcp-servers`&&$.fetchServers()});var n=x8(),r=N(n),i=N(r);HU(N(i),{copyId:`mcp-servers-help-copy`,label:`MCP servers help`,text:`Upstream Model Context Protocol servers whose tools, prompts, and resources the gateway exposes to clients. Servers added here connect over HTTP or SSE; stdio servers and rows marked Config are declared in config.yaml under mcp.servers and are read-only in the dashboard. Saved header values are masked in API and dashboard responses.`,title:e=>{B(e,m8())},$$slots:{title:!0}}),E(i);var a=F(i,2),o=N(a),s=e=>{var t=h8();q(N(t),{get icon(){return qE},class:`form-action-icon`}),He(2),E(t),I(()=>t.disabled=$.formSubmitting),R(`click`,t,()=>$.openCreate()),B(e,t)};H(o,e=>{$.available&&!Y.authError&&e(s)}),E(a),E(r);var c=F(r,2),l=e=>{B(e,g8())};H(c,e=>{!$.available&&!Y.authError&&e(l)});var u=F(c,2),d=e=>{var t=_8(),n=N(t,!0);E(t),I(()=>V(n,$.error)),B(e,t)};H(u,e=>{$.error&&!Y.authError&&!$.formOpen&&e(d)});var f=F(u,2),p=e=>{lK(e,{label:`Loading MCP servers...`})};H(f,e=>{$.loading&&!Y.authError&&e(p)});var m=F(f,2),h=e=>{var t=v8(),n=N(t);mG(N(n),{id:`mcp-server-filter`,placeholder:`Filter by name, slug, URL, transport, or status...`,label:`Filter MCP servers by name, slug, URL, transport, or status`,get value(){return $.filter},set value(e){$.filter=e}}),E(n),E(t),B(e,t)};H(m,e=>{($.servers.length>0||$.filter)&&$.available&&!Y.authError&&e(h)});var g=F(m,2);c8(g,{});var _=F(g,2);Q6(_,{});var v=F(_,2),y=e=>{p8(e,{})};H(v,e=>{$.filtered.length>0&&$.available&&!Y.authError&&e(y)});var b=F(v,2),x=e=>{B(e,y8())};H(b,e=>{$.servers.length===0&&!$.filter&&!$.loading&&!Y.authError&&!$.error&&$.available&&e(x)});var S=F(b,2),C=e=>{B(e,b8())};H(S,e=>{$.servers.length>0&&$.filtered.length===0&&$.filter&&!$.loading&&!Y.authError&&$.available&&e(C)}),E(n),B(e,n),O()}Vr([`click`]);var C8=`api_keys`,w8=`session_sticky_keys`,T8=`base_url`,E8=`service_account_json`,D8=`models`,O8={[C8]:{label:`API Keys`,control:`keys`,hint:`Identified sessions stay on one key by default, improving provider prompt-cache hits. Saved values are shown as ***********; leave the asterisks unchanged to keep the stored key.`},[w8]:{label:`Session-sticky API keys`,control:`checkbox`,hint:`Keep each identified conversation on one API key to preserve provider prompt-cache affinity. Turn off to rotate keys round-robin on every request.`},[T8]:{label:`Base URL`,control:`text`},api_version:{label:`API Version`,control:`text`,placeholder:`e.g. 2024-10-01-preview`,hint:`Leave empty for the provider default. Realtime endpoints may need a newer version.`},backend:{label:`Backend`,control:`select`,hint:`Which Google surface to call. Vertex authenticates with Google credentials instead of an API key.`},auth_type:{label:`Auth Type`,control:`select`,hint:`How to obtain Google credentials. Leave on the default to use Application Default Credentials.`},api_mode:{label:`API Mode`,control:`select`,hint:`Which request shape to send upstream.`},vertex_project:{label:`Vertex Project`,control:`text`,placeholder:`my-gcp-project`},vertex_location:{label:`Vertex Location`,control:`text`,placeholder:`us-central1`},service_account_file:{label:`Service Account File`,control:`text`,placeholder:`/path/to/service-account.json`,hint:`Path readable by the gateway process.`},[E8]:{label:`Service Account JSON`,control:`textarea`,placeholder:`Paste service account JSON`,hint:`Saved values are shown as ***********; leave the asterisks unchanged to keep the stored value, or clear it to remove.`},service_account_json_base64:{label:`Service Account JSON (base64)`,control:`text`,hint:`Saved values are shown as ***********; leave the asterisks unchanged to keep the stored value.`},gcp_scope:{label:`GCP Scope`,control:`text`,placeholder:`https://www.googleapis.com/auth/cloud-platform`},[D8]:{label:`Models (comma-separated)`,control:`text`,placeholder:`gpt-4o, gpt-4o-mini`,hint:`Leave empty to auto-discover models from the provider's /models endpoint where supported.`}};function k8(e){return O8[e]||{label:String(e||``).split(`_`).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),control:`text`}}function A8(){return{name:``,type:``,api_keys:[],session_sticky_keys:!0,base_url:``,api_version:``,backend:``,auth_type:``,api_mode:``,vertex_project:``,vertex_location:``,service_account_file:``,service_account_json:``,service_account_json_base64:``,gcp_scope:``,models:``,enabled:!0}}function j8(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.type,e.base_url].some(e=>String(e||``).toLowerCase().includes(r)))}function M8(e,t){let n=(Array.isArray(e)?e:[]).map(e=>String(e&&e.type||``).trim()).filter(Boolean),r=String(t||``).trim();return r&&!n.includes(r)&&n.push(r),n}function N8(e,t){let n=String(t||``).trim();return n&&(Array.isArray(e)?e:[]).find(e=>String(e&&e.type||``).trim()===n)||null}function P8(e,t){let n=e&&Array.isArray(e.fields)&&e.fields.length>0?e.fields:Object.keys(O8).map(e=>({name:e,advanced:e!==C8})),r=t||e&&e.default_base_url||``,i=[],a=[];for(let e of n){let t=String(e&&e.name||``).trim();if(!t)continue;let n={...k8(t),name:t,required:!!(e&&e.required),options:Array.isArray(e&&e.options)?e.options:[]};t===`base_url`&&r&&(n.placeholder=r,n.hint=`Defaults to `+r),n.options.length>0&&(n.control=`select`),(e&&e.advanced?a:i).push(n)}return{primary:i,advanced:a}}var F8=new Set([`name`,`type`,`enabled`]);function I8(e,t){let n=new Set([...t.primary||[],...t.advanced||[]].map(e=>e.name)),r=A8(),i={...e};for(let e of Object.keys(r))!F8.has(e)&&!n.has(e)&&(i[e]=r[e]);return i}function L8(e){let t=Array.isArray(e&&e.api_keys)?e.api_keys.length:0;return t>0?t+` key`+(t===1?``:`s`):String(e&&e.service_account_json||``).trim()||String(e&&e.service_account_json_base64||``).trim()||String(e&&e.service_account_file||``).trim()?`service account`:String(e&&e.vertex_project||``).trim()?`ADC`:`keyless`}function R8(e){let t=Array.isArray(e&&e.models)?e.models:[];return t.length===0?`auto-discovered`:t.length+` model`+(t.length===1?``:`s`)}function z8(e){return(Array.isArray(e)?e:[]).map(e=>({value:String(e||``)}))}function B8(e){return(Array.isArray(e)?e:[]).map(e=>String(e&&e.value||``))}function V8(e,t){let n=String(t||``).trim();if(!n)return``;let r=new Set((Array.isArray(e)?e:[]).map(e=>String(e&&e.name||``).trim()));if(!r.has(n))return n;let i=1;for(;r.has(n+`-`+i);)i+=1;return n+`-`+i}function H8(e){return{name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),api_keys:z8(e&&e.api_keys),session_sticky_keys:!e||e.session_sticky_keys!==!1,base_url:String(e&&e.base_url||``),api_version:String(e&&e.api_version||``),backend:String(e&&e.backend||``),auth_type:String(e&&e.auth_type||``),api_mode:String(e&&e.api_mode||``),vertex_project:String(e&&e.vertex_project||``),vertex_location:String(e&&e.vertex_location||``),service_account_file:String(e&&e.service_account_file||``),service_account_json:String(e&&e.service_account_json||``),service_account_json_base64:String(e&&e.service_account_json_base64||``),gcp_scope:String(e&&e.gcp_scope||``),models:(Array.isArray(e&&e.models)?e.models:[]).join(`, `),enabled:!e||e.enabled!==!1}}function U8(e){let t=String(e||``).trim();return t.length>=3&&/^\*+$/.test(t)}function W8(e,t,n,r){let i={},a=String(e&&e.name||``).trim();String(e&&e.type||``).trim()||(i.type=`Select a provider type.`),a?a.includes(`/`)?i.name=`Name cannot contain '/' — it separates the provider from the model.`:t===`create`&&(Array.isArray(n)?n:[]).some(e=>String(e&&e.name||``).trim()===a)&&(i.name=`Provider "`+a+`" already exists.`):i.name=`Name is required.`;let{primary:o,advanced:s}=P8(r);for(let t of[...o,...s]){let n=G8(e,t);n&&(i[t.name]=n)}return i}function G8(e,t){if(t.name===`api_keys`){let n=B8(e&&e.api_keys);return t.required&&!n.some(e=>e.trim())?`At least one API key is required for this provider type.`:n.some(e=>!e.trim())?`Remove the empty row instead of leaving a key blank.`:``}let n=String(e&&e[t.name]||``).trim();if(t.required&&!n)return t.label+` is required for this provider type.`;if(!n)return``;if(t.name===`base_url`&&!n.includes(`://`)&&/[./]/.test(n))return`Include the scheme, e.g. https://`+n;if(t.name===`service_account_json`&&!U8(n))try{JSON.parse(n)}catch{return`Paste the service account JSON file's contents — this is not valid JSON.`}return``}function K8(e,t){let n={name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),enabled:!!(e&&e.enabled)},{primary:r,advanced:i}=P8(t),a=!!(t&&Array.isArray(t.fields)&&t.fields.length>0),o=new Set;for(let t of[...r,...i])!a&&t.name===`session_sticky_keys`||(o.add(t.name),n[t.name]=q8(e,t.name));for(let t of Object.keys(O8)){if(o.has(t)||t===`session_sticky_keys`)continue;let r=q8(e,t);(Array.isArray(r)?r.length>0:String(r).trim()!==``)&&(n[t]=r)}return n}function q8(e,t){switch(t){case C8:return B8(e&&e.api_keys);case D8:return YO(e&&e.models);case w8:return!!(e&&e.session_sticky_keys);case E8:return e&&e.service_account_json||``;default:return String(e&&e[t]||``).trim()}}var J8=new class{#e=A(M([]));get rows(){return L(this.#e)}set rows(e){j(this.#e,e,!0)}#t=A(!0);get available(){return L(this.#t)}set available(e){j(this.#t,e,!0)}#n=A(!1);get loading(){return L(this.#n)}set loading(e){j(this.#n,e,!0)}#r=A(``);get error(){return L(this.#r)}set error(e){j(this.#r,e,!0)}#i=A(``);get filter(){return L(this.#i)}set filter(e){j(this.#i,e,!0)}#a=A(!1);get formOpen(){return L(this.#a)}set formOpen(e){j(this.#a,e,!0)}#o=A(!1);get formSubmitting(){return L(this.#o)}set formSubmitting(e){j(this.#o,e,!0)}#s=A(`create`);get formMode(){return L(this.#s)}set formMode(e){j(this.#s,e,!0)}#c=A(!1);get advancedOpen(){return L(this.#c)}set advancedOpen(e){j(this.#c,e,!0)}#l=A(M(A8()));get form(){return L(this.#l)}set form(e){j(this.#l,e,!0)}#u=A(M({}));get fieldErrors(){return L(this.#u)}set fieldErrors(e){j(this.#u,e,!0)}#d=A(``);get focusField(){return L(this.#d)}set focusField(e){j(this.#d,e,!0)}#f=A(``);get deletingName(){return L(this.#f)}set deletingName(e){j(this.#f,e,!0)}#p=A(!1);get deleteSubmitting(){return L(this.#p)}set deleteSubmitting(e){j(this.#p,e,!0)}#m=A(M([]));get types(){return L(this.#m)}set types(e){j(this.#m,e,!0)}#h=A(!1);get typesLoaded(){return L(this.#h)}set typesLoaded(e){j(this.#h,e,!0)}#g=null;get filteredRows(){return j8(this.rows,this.filter)}get schema(){return N8(this.types,this.form.type)}get formFields(){if(!String(this.form.type||``).trim())return{primary:[],advanced:[]};let e=this.schema;return P8(e,e&&e.default_base_url)}async fetchTypes(){let e=await fK(`/admin/provider-credentials/types`,{label:`provider credential types`});e.status===`ok`&&(this.types=e.items,this.typesLoaded=!0)}async fetchPage(){this.#g&&this.#g.abort();let e=new AbortController;this.#g=e,this.loading=!0,this.error=``;try{let t=await fK(`/admin/provider-credentials`,{label:`provider credentials`,errorFallback:`Failed to load provider credentials.`,unavailableStatuses:[503,404],options:{signal:e.signal}});if(t.status===`stale`||e.signal.aborted)return;if(t.status===`unavailable`){this.available=!1,this.rows=[];return}if(t.status===`error`){t.result&&(this.available=!0),this.rows=[],this.error=t.error;return}this.available=!0,this.rows=t.items,this.typesLoaded||await this.fetchTypes()}finally{this.#g===e&&(this.#g=null,this.loading=!1)}}#_(e,t){this.formMode=e,this.form=t,this.advancedOpen=!1,this.error=``,this.fieldErrors={},this.focusField=``}openCreate(){this.#_(`create`,A8()),this.formOpen=!0,this.typesLoaded||this.fetchTypes()}openEdit(e){!e||e.managed||(this.#_(`edit`,H8(e)),this.formOpen=!0,this.typesLoaded||this.fetchTypes())}closeForm(){this.formOpen=!1,this.#_(`create`,A8())}selectType(){this.fieldErrors={};let e=this.formFields;this.formMode===`create`&&(this.form=I8(this.form,e));let t=e.primary.find(e=>e.name===`api_keys`);t&&t.required&&this.form.api_keys.length===0&&(this.form.api_keys=[{value:``}])}clearFieldError(e){if(this.fieldErrors[e]===void 0)return;let{[e]:t,...n}=this.fieldErrors;this.fieldErrors=n}addApiKeyRow(){this.form.api_keys.push({value:``}),this.clearFieldError(`api_keys`)}removeApiKeyRow(e){this.form.api_keys.splice(e,1),this.clearFieldError(`api_keys`)}#v(e){let t=$D(e,`Failed to save provider credential.`),n=String(e&&e.error&&typeof e.error==`object`&&e.error.param||``).trim();if(n&&this.#y(n)){this.fieldErrors={...this.fieldErrors,[n]:t},this.error=``,this.#b();return}this.error=t}#y(e){if(e===`name`||e===`type`)return!0;let{primary:t,advanced:n}=this.formFields;return[...t,...n].some(t=>t.name===e)}#b(){let e=Object.keys(this.fieldErrors);if(e.length===0)return;let{primary:t,advanced:n}=this.formFields;n.some(t=>e.includes(t.name))&&(this.advancedOpen=!0);let r=[`type`,`name`,...t.map(e=>e.name),...n.map(e=>e.name)];this.focusField=r.find(t=>e.includes(t))||e[0]}#x(){Ak.fetchModels(),Ak.fetchCategories()}async submitForm(){let e=this.schema,t=W8(this.form,this.formMode,this.rows,e);if(Object.keys(t).length>0){this.fieldErrors=t,this.error=``,this.#b();return}let n=K8(this.form,e);this.error=``,this.fieldErrors={},this.formSubmitting=!0;try{let e=await pK(`/admin/provider-credentials`,`PUT`,n,{label:`save provider credential`,errorFallback:`Failed to save provider credential.`,unavailableMessage:`Provider credential management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.error=e.error;return}if(e.status===`error`){e.result&&e.result.status!==401?this.#v(e.result.data):this.error=e.error;return}UO.success(`Provider "`+n.name+`" saved.`),this.closeForm(),this.#x(),this.fetchPage()}finally{this.formSubmitting=!1}}async performDelete(e){this.deleteSubmitting=!0,this.deletingName=e;try{let t=await pK(`/admin/provider-credentials/`+encodeURIComponent(e),`DELETE`,void 0,{label:`delete provider credential`,errorFallback:`Failed to delete provider credential.`,unavailableMessage:`Provider credential management is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,OO.error=t.error;return}if(t.status===`error`){OO.error=t.error;return}UO.success(`Provider "`+e+`" deleted.`),OO.close(),this.formOpen&&this.form.name===e&&this.closeForm(),this.#x(),this.fetchPage()}finally{this.deleteSubmitting=!1,this.deletingName=``}}requestDelete(e){let t=String(e||``).trim();if(!t||this.deleteSubmitting)return;let n=(this.rows||[]).find(e=>String(e&&e.name||``).trim()===t);n&&n.managed||OO.open({title:`Delete Provider`,titleId:`providerCredentialDeleteDialogTitle`,inputId:`provider-credential-delete-confirmation`,message:`Type "`+t+`" to permanently delete this provider credential. Requests routed to it will fail until it is reconfigured.`,requiredText:t,confirmLabel:`Delete Provider`,icon:uD,dialogClass:`budget-reset-dialog`,onConfirm:()=>this.performDelete(t)})}},Y8=z(`Config`),X8=z(` `,1),Z8=z(`
                  `),Q8=z(`
                  NameTypeBase URLAuthModelsEnabledUpdatedActions
                  `);function $8(e,t){D(t,!0);var n=Q8(),r=N(n),i=F(N(r));U(i,21,()=>J8.filteredRows,e=>e.name,(e,t)=>{var n=Z8(),r=N(n),i=N(r),a=N(i,!0);E(i);var o=F(i,2),s=e=>{B(e,Y8())};H(o,e=>{L(t).managed&&e(s)}),E(r);var c=F(r),l=N(c),u=N(l,!0);E(l),E(c);var d=F(c),f=N(d,!0);E(d);var p=F(d),m=N(p,!0);E(p);var h=F(p),g=N(h,!0);E(h);var _=F(h),v=N(_);let y;var b=N(v,!0);E(v),E(_);var x=F(_),S=N(x,!0);E(x);var C=F(x),w=N(C),T=N(w),ee=e=>{var n=X8(),r=P(n);{let e=k(()=>`Edit provider `+L(t).name);dK(r,{get label(){return L(e)},class:`table-icon-btn`,onclick:()=>J8.openEdit(L(t)),children:(e,t)=>{q(e,{get icon(){return GE},class:`table-icon-svg`})},$$slots:{default:!0}})}var i=F(r,2);{let e=k(()=>(J8.deletingName===L(t).name?`Deleting provider `:`Delete provider `)+L(t).name),n=k(()=>J8.deletingName===L(t).name);dK(i,{get label(){return L(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>J8.requestDelete(L(t).name),get disabled(){return L(n)},children:(e,t)=>{q(e,{get icon(){return _D},class:`table-icon-svg`})},$$slots:{default:!0}})}B(e,n)};H(T,e=>{L(t).managed||e(ee)}),E(w),E(C),E(n),I((e,n,r)=>{V(a,L(t).name),V(u,L(t).type),G(d,`title`,L(t).base_url||``),V(f,L(t).base_url||`—`),V(m,e),V(g,n),y=W(v,1,`auth-key-status-badge`,null,y,{"auth-key-status-active":L(t).enabled,"auth-key-status-inactive":!L(t).enabled}),V(b,L(t).enabled?`Enabled`:`Disabled`),V(S,r)},[()=>L8(L(t)),()=>R8(L(t)),()=>QD.formatTimestamp(L(t).updated_at)]),B(e,n)}),E(i),E(r),E(n),B(e,n),O()}var e5=z(``),t5=z(`
                  `),n5=z(`
                  `,1),r5=z(``),i5=z(``),a5=z(``),o5=z(``),s5=z(``),c5=z(` `),l5=z(` `),u5=z(`
                  `);function d5(e,t){D(t,!0);let n=k(()=>`provider-credential-`+t.field.name),r=k(()=>J8.fieldErrors[t.field.name]||``),i=k(()=>L(r)?L(n)+`-error`:t.field.hint?L(n)+`-hint`:void 0),a=k(()=>{let e=String(J8.form[t.field.name]||``).trim();return!e||t.field.options.includes(e)?t.field.options:[...t.field.options,e]});function o(){J8.clearFieldError(t.field.name)}var s=u5(),c=N(s),l=N(c),u=F(l),d=e=>{B(e,e5())};H(u,e=>{t.field.required&&e(d)}),E(c);var f=F(c,2),p=e=>{var t=n5(),a=P(t);U(a,21,()=>J8.form.api_keys,ai,(e,t,a)=>{var s=t5(),c=N(s);ta(c),G(c,`aria-label`,`API key `+(a+1)),dK(F(c,2),{label:`Remove API key `+(a+1),class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>J8.removeApiKeyRow(a),children:(e,t)=>{q(e,{get icon(){return uD},class:`table-icon-svg`})},$$slots:{default:!0}}),E(s),I(()=>{G(c,`id`,a===0?L(n):L(n)+`-`+a),G(c,`aria-invalid`,L(r)?`true`:void 0),G(c,`aria-describedby`,a===0?L(i):void 0)}),R(`input`,c,o),ua(c,()=>L(t).value,e=>L(t).value=e),B(e,s)}),E(a);var s=F(a,2),c=N(s);q(N(c),{get icon(){return qE},class:`form-action-icon`}),He(2),E(c),E(s),I(()=>G(c,`id`,J8.form.api_keys.length===0?L(n):void 0)),R(`click`,c,()=>J8.addApiKeyRow()),B(e,t)},m=e=>{var s=i5(),c=N(s);c.value=c.__value=``,U(F(c),16,()=>L(a),e=>e,(e,t)=>{var n=r5(),r=N(n,!0);E(n);var i={};I(()=>{V(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),B(e,n)}),E(s),I(()=>{G(s,`id`,L(n)),G(s,`aria-invalid`,L(r)?`true`:void 0),G(s,`aria-describedby`,L(i))}),R(`change`,s,o),Wi(s,()=>J8.form[t.field.name],e=>J8.form[t.field.name]=e),B(e,s)},h=e=>{var a=a5();ta(a),I(()=>{G(a,`id`,L(n)),G(a,`aria-invalid`,L(r)?`true`:void 0),G(a,`aria-describedby`,L(i))}),R(`change`,a,o),da(a,()=>J8.form[t.field.name],e=>J8.form[t.field.name]=e),B(e,a)},g=e=>{var a=o5();dt(a),I(()=>{G(a,`id`,L(n)),G(a,`placeholder`,t.field.placeholder||``),G(a,`aria-invalid`,L(r)?`true`:void 0),G(a,`aria-describedby`,L(i))}),R(`input`,a,o),ua(a,()=>J8.form[t.field.name],e=>J8.form[t.field.name]=e),B(e,a)},_=e=>{var a=s5();ta(a),I(()=>{G(a,`id`,L(n)),G(a,`placeholder`,t.field.placeholder||``),G(a,`aria-invalid`,L(r)?`true`:void 0),G(a,`aria-describedby`,L(i))}),R(`input`,a,o),ua(a,()=>J8.form[t.field.name],e=>J8.form[t.field.name]=e),B(e,a)};H(f,e=>{t.field.control===`keys`?e(p):t.field.control===`select`?e(m,1):t.field.control===`checkbox`?e(h,2):t.field.control===`textarea`?e(g,3):e(_,-1)});var v=F(f,2),y=e=>{var t=c5(),i=N(t,!0);E(t),I(()=>{G(t,`id`,L(n)+`-error`),V(i,L(r))}),B(e,t)},b=e=>{var r=l5(),i=N(r,!0);E(r),I(()=>{G(r,`id`,L(n)+`-hint`),V(i,t.field.hint)}),B(e,r)};H(v,e=>{L(r)?e(y):t.field.hint&&e(b,1)}),E(s),I(()=>{G(c,`for`,L(n)),V(l,`${t.field.label??``} `)}),B(e,s),O()}Vr([`input`,`click`,`change`]);var f5=z(`

                  The name is the stable identity used for routing and cannot change once created.

                  `),p5=z(``),m5=z(` `),h5=z(`Determines which fields the gateway uses to build requests.`),g5=z(` `),_5=z(`Suggested from the selected type; used to route requests to this provider instance and editable before saving.`),v5=z(`Immutable once created.`),y5=z(`

                  Pick a type to configure its credentials — each provider type asks for different settings.

                  `),b5=z(`
                  Advanced settings
                  `),x5=z(`
                  `,1);function S5(e,t){D(t,!0);let n=k(()=>M8(J8.types,J8.form.type)),r=k(()=>J8.formFields),i=k(()=>J8.fieldErrors.name||``),a=k(()=>J8.fieldErrors.type||``);function o(){J8.selectType(),J8.formMode===`create`&&(J8.form.name=V8(J8.rows,J8.form.type))}kn(()=>{let e=J8.focusField;if(!e)return;J8.focusField=``;let t=document.getElementById(`provider-credential-`+e);t&&(t.scrollIntoView({block:`center`}),t.focus({preventScroll:!0}))});{let t=e=>{B(e,f5())},s=k(()=>J8.formMode===`edit`?`Edit Provider`:`Add Provider`);hq(e,{get open(){return J8.formOpen},get title(){return L(s)},ariaLabel:`Provider credential editor`,get error(){return J8.error},get submitting(){return J8.formSubmitting},novalidate:!0,onclose:()=>J8.closeForm(),onsubmit:()=>J8.submitForm(),headerHint:t,children:(e,t)=>{var s=x5(),c=P(s),l=F(N(c),2),u=N(l);u.value=u.__value=``,U(F(u),16,()=>L(n),e=>e,(e,t)=>{var n=p5(),r=N(n,!0);E(n);var i={};I(()=>{V(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),B(e,n)}),E(l);var d=F(l,2),f=e=>{var t=m5(),n=N(t,!0);E(t),I(()=>V(n,L(a))),B(e,t)},p=e=>{B(e,h5())};H(d,e=>{L(a)?e(f):e(p,-1)}),E(c);var m=F(c,2),h=F(N(m),2);ta(h);var g=F(h,2),_=e=>{var t=g5(),n=N(t,!0);E(t),I(()=>V(n,L(i))),B(e,t)},v=e=>{B(e,_5())},y=e=>{B(e,v5())};H(g,e=>{L(i)?e(_):J8.formMode===`create`?e(v,1):e(y,-1)}),E(m);var b=F(m,2),x=e=>{B(e,y5())};H(b,e=>{J8.form.type||e(x)});var S=F(b,2);U(S,17,()=>L(r).primary,e=>e.name,(e,t)=>{d5(e,{get field(){return L(t)}})});var C=F(S,2),w=N(C);_Z(N(w),{get enabled(){return J8.form.enabled},label:`provider`,onclick:()=>J8.form.enabled=!J8.form.enabled}),E(w),E(C);var T=F(C,2),ee=e=>{var t=b5(),n=N(t),i=N(n),a=F(N(i),2),o=N(a,!0);E(a),E(i),E(n);var s=F(n,2);U(s,21,()=>L(r).advanced,e=>e.name,(e,t)=>{d5(e,{get field(){return L(t)}})}),E(s),E(t),I(e=>{t.open=J8.advancedOpen,V(o,e)},[()=>L(r).advanced.map(e=>e.label).join(`, `)]),Br(`toggle`,t,e=>J8.advancedOpen=e.currentTarget.open),B(e,t)};H(T,e=>{L(r).advanced.length>0&&e(ee)}),I(()=>{l.disabled=J8.formMode===`edit`,G(l,`aria-invalid`,L(a)?`true`:void 0),G(l,`aria-describedby`,L(a)?`provider-credential-type-error`:`provider-credential-type-hint`),h.disabled=J8.formMode===`edit`,G(h,`aria-invalid`,L(i)?`true`:void 0),G(h,`aria-describedby`,L(i)?`provider-credential-name-error`:`provider-credential-name-hint`)}),R(`change`,l,o),Wi(l,()=>J8.form.type,e=>J8.form.type=e),R(`input`,h,()=>J8.clearFieldError(`name`)),ua(h,()=>J8.form.name,e=>J8.form.name=e),B(e,s)},$$slots:{headerHint:!0,default:!0}})}O()}Vr([`change`,`input`]);var C5=z(`

                  Providers

                  `),w5=z(``),T5=z(`
                  Provider credential management is unavailable.
                  `),E5=z(``),D5=z(`
                  `),O5=z(`

                  No dashboard-managed providers yet. Add one here, or declare providers in config.yaml / environment variables.

                  `),k5=z(`

                  No providers match your filter.

                  `),A5=z(`
                  `);function j5(e,t){D(t,!0),kn(()=>{Y.refreshTick,kD.page===`providers-config`&&J8.fetchPage()});var n=A5(),r=N(n),i=N(r);HU(N(i),{copyId:`providers-config-help-copy`,label:`model providers help`,title:e=>{B(e,C5())},help:e=>{He(),B(e,Xr(`Configure LLM provider credentials here instead of setting API keys as + environment variables. Providers declared in config.yaml or env vars + are read-only (Config badge) and cannot be edited or deleted from the + dashboard. Keys are masked after saving.`))},$$slots:{title:!0,help:!0}}),E(i);var a=F(i,2),o=N(a),s=e=>{var t=w5();q(N(t),{get icon(){return qE},class:`form-action-icon`}),He(2),E(t),I(()=>t.disabled=J8.formSubmitting),R(`click`,t,()=>J8.openCreate()),B(e,t)};H(o,e=>{J8.available&&!Y.needsAuth&&e(s)}),E(a),E(r);var c=F(r,2),l=e=>{B(e,T5())};H(c,e=>{!J8.available&&!Y.needsAuth&&e(l)});var u=F(c,2),d=e=>{var t=E5(),n=N(t,!0);E(t),I(()=>V(n,J8.error)),B(e,t)};H(u,e=>{J8.error&&!Y.needsAuth&&!J8.formOpen&&e(d)});var f=F(u,2),p=e=>{lK(e,{label:`Loading providers...`})};H(f,e=>{J8.loading&&!Y.needsAuth&&e(p)});var m=F(f,2),h=e=>{var t=D5(),n=N(t);mG(N(n),{id:`provider-credential-filter`,placeholder:`Filter by name, type, or base URL...`,label:`Filter providers by name, type, or base URL`,get value(){return J8.filter},set value(e){J8.filter=e}}),E(n),E(t),B(e,t)};H(m,e=>{(J8.rows.length>0||J8.filter)&&J8.available&&!Y.needsAuth&&e(h)});var g=F(m,2);S5(g,{});var _=F(g,2),v=e=>{$8(e,{})};H(_,e=>{J8.filteredRows.length>0&&J8.available&&!Y.needsAuth&&e(v)});var y=F(_,2),b=e=>{B(e,O5())};H(y,e=>{J8.rows.length===0&&!J8.filter&&!J8.loading&&!Y.needsAuth&&!J8.error&&J8.available&&e(b)});var x=F(y,2),S=e=>{B(e,k5())};H(x,e=>{J8.rows.length>0&&J8.filteredRows.length===0&&J8.filter&&!J8.loading&&!Y.needsAuth&&J8.available&&e(S)}),E(n),B(e,n),O()}Vr([`click`]);function M5(){return{name:``,description:``,user_path:``,labels:``,dashboard_access:!1,expires_at:``}}function N5(e){let t=[];for(let n of String(e||``).split(`,`)){let e=n.trim();e&&!t.includes(e)&&t.push(e)}return t}function P5(e){let t=String(e||``).trim();if(!t)return``;let n=t.startsWith(`/`)?t:`/`+t;for(let e of n.split(`/`)){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function F5(e){if(P5(e))return``;let t=String(e||``).trim();if(!t)return``;let n=t.startsWith(`/`)?t:`/`+t,r=[];for(let e of n.split(`/`)){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function I5(e){let t=e||{},n=String(t.name||``).trim();if(!n)return{error:`Name is required.`};let r=P5(t.user_path);if(r)return{error:r};let i=F5(t.user_path),a=N5(t.labels),o={name:n,description:String(t.description||``).trim()||void 0,user_path:i||void 0,labels:a.length?a:void 0,dashboard_access:t.dashboard_access?!0:void 0};return t.expires_at&&(o.expires_at=t.expires_at+`T23:59:59Z`),{payload:o}}function L5(e,t=Date.now()){let n=e&&e.expires_at;if(!n)return!1;let r=Date.parse(n);return Number.isFinite(r)&&r<=t}function R5(e){return e?!!e.deactivated_at||e.enabled===!1:!1}function z5(e,t=Date.now()){return!e||e.active===!1||R5(e)?!1:!L5(e,t)}function B5(e){return[e.name,e.description,e.user_path,e.redacted_value,...e.labels||[]].filter(Boolean).join(` `).toLowerCase()}function V5(e,t={}){let{query:n=``,showInactive:r=!1,now:i=Date.now()}=t,a=String(n||``).trim().toLowerCase();return(Array.isArray(e)?e:[]).filter(e=>!r&&!z5(e,i)?!1:!a||B5(e).includes(a))}function H5(e,t){return R5(e)?2:+!z5(e,t)}function U5(e){let t=e&&e.expires_at;if(!t)return 1/0;let n=Date.parse(t);return Number.isFinite(n)?n:1/0}function W5(e){let t=Date.parse(e&&e.deactivated_at||``);return Number.isFinite(t)?t:-1/0}function G5(e,t=Date.now()){return(Array.isArray(e)?e.slice():[]).sort((e,n)=>{let r=H5(e,t),i=H5(n,t);if(r!==i)return r-i;let[a,o]=r===2?[W5(e),W5(n)]:[U5(e),U5(n)];return a===o?String(e.name||``).localeCompare(String(n.name||``)):a>o?-1:1})}function K5(e,t=Date.now()){return(Array.isArray(e)?e:[]).reduce((e,n)=>e+ +!z5(n,t),0)}function q5(){return{open:!1,id:``,name:``,value:``,submitting:!1,error:``}}var J5=new class{#e=A(M([]));get keys(){return L(this.#e)}set keys(e){j(this.#e,e,!0)}#t=A(!0);get available(){return L(this.#t)}set available(e){j(this.#t,e,!0)}#n=A(!1);get loading(){return L(this.#n)}set loading(e){j(this.#n,e,!0)}#r=A(``);get error(){return L(this.#r)}set error(e){j(this.#r,e,!0)}#i=A(``);get filter(){return L(this.#i)}set filter(e){j(this.#i,e,!0)}#a=A(!1);get showInactive(){return L(this.#a)}set showInactive(e){j(this.#a,e,!0)}#o=k(()=>G5(V5(this.keys,{query:this.filter,showInactive:this.showInactive})));get visibleKeys(){return L(this.#o)}set visibleKeys(e){j(this.#o,e)}#s=k(()=>K5(this.keys));get inactiveCount(){return L(this.#s)}set inactiveCount(e){j(this.#s,e)}#c=A(!1);get formOpen(){return L(this.#c)}set formOpen(e){j(this.#c,e,!0)}#l=A(!1);get formSubmitting(){return L(this.#l)}set formSubmitting(e){j(this.#l,e,!0)}#u=A(``);get issuedValue(){return L(this.#u)}set issuedValue(e){j(this.#u,e,!0)}#d=A(``);get deactivatingID(){return L(this.#d)}set deactivatingID(e){j(this.#d,e,!0)}#f=A(``);get dashboardAccessID(){return L(this.#f)}set dashboardAccessID(e){j(this.#f,e,!0)}#p=A(M(M5()));get form(){return L(this.#p)}set form(e){j(this.#p,e,!0)}#m=A(M(q5()));get labelsEditor(){return L(this.#m)}set labelsEditor(e){j(this.#m,e,!0)}copyState=h$({logPrefix:`Failed to copy auth key:`});async fetchKeys(){this.loading=!0,this.error=``;try{let e=await fK(`/admin/auth-keys`,{label:`auth keys`,errorFallback:`Unable to load API keys.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.keys=[];return}if(e.status===`error`){e.result&&(this.available=!0),this.error=e.error;return}this.available=!0,this.keys=e.items}finally{this.loading=!1}}openForm(){this.formSubmitting||this.formOpen||(this.formOpen=!0,this.error=``,this.issuedValue||(this.copyState.reset(),this.form=M5()))}closeForm(){this.formOpen&&(this.formOpen=!1,this.error=``,this.copyState.reset(),!this.formSubmitting&&!this.issuedValue&&(this.form=M5()))}copyIssuedValue(){return this.copyState.copy(this.issuedValue)}dismissIssuedKey(){this.issuedValue=``,this.copyState.reset(),this.form=M5()}async submitForm(){let e=I5(this.form);if(e.error){this.error=e.error;return}this.error=``,this.formSubmitting=!0;try{let t=await pK(`/admin/auth-keys`,`POST`,e.payload,{label:`create API key`,errorFallback:`Failed to create API key.`,unavailableMessage:`Auth keys feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error,t.result&&t.result.status!==401&&console.error(`Failed to create API key:`,t.result.status,this.error);return}let n=t.result.data||{};this.issuedValue=n.value||``,this.formOpen=!0,this.copyState.reset(),this.form=M5(),this.fetchKeys()}finally{this.formSubmitting=!1}}openLabelsEditor(e){!e||this.labelsEditor.submitting||(this.labelsEditor={open:!0,id:e.id,name:e.name||``,value:(e.labels||[]).join(`, `),submitting:!1,error:``})}closeLabelsEditor(){!this.labelsEditor.open||this.labelsEditor.submitting||(this.labelsEditor=q5())}async submitLabelsEditor(){let e=this.labelsEditor;if(!e.open||e.submitting||!e.id)return;e.submitting=!0,e.error=``;let t={labels:N5(e.value)};try{let n=await pK(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/labels`,`PUT`,t,{label:`update API key labels`,errorFallback:`Failed to update labels.`,unavailableMessage:`Auth keys feature is unavailable.`});if(n.status===`stale`)return;if(n.status===`unavailable`){this.available=!1,e.error=n.error;return}if(n.status===`error`){e.error=n.error,n.result&&n.result.status!==401&&console.error(`Failed to update auth key labels:`,n.result.status,e.error);return}UO.success(`Labels updated for key "`+e.name+`".`),e.submitting=!1,this.closeLabelsEditor(),this.fetchKeys()}finally{e.submitting=!1}}async toggleDashboardAccess(e){if(!e||!e.active||this.dashboardAccessID)return;let t=!e.dashboard_access;this.dashboardAccessID=e.id;try{let n=await pK(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/dashboard-access`,`PUT`,{dashboard_access:t},{label:`update API key dashboard access`,errorFallback:`Failed to update dashboard access.`,unavailableMessage:`Auth keys feature is unavailable.`});if(n.status===`stale`)return;if(n.status===`unavailable`){this.available=!1,UO.error(n.error);return}if(n.status===`error`){n.result&&n.result.status!==401&&console.error(`Failed to update auth key dashboard access:`,n.result.status,n.error),UO.error(n.error);return}UO.success(`Dashboard access `+(t?`granted to`:`revoked for`)+` key "`+e.name+`".`),this.fetchKeys()}finally{this.dashboardAccessID=``}}async deactivateKey(e){if(!(!e||!e.active)&&window.confirm(`Deactivate key "`+e.name+`"? This cannot be undone.`)){this.deactivatingID=e.id;try{let t=await pK(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/deactivate`,`POST`,void 0,{label:`deactivate API key`,errorFallback:`Failed to deactivate key.`,unavailableMessage:`Auth keys feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,UO.error(t.error);return}if(t.status===`error`){t.result&&t.result.status!==401&&console.error(`Failed to deactivate auth key:`,t.result.status,t.error),UO.error(t.error);return}UO.success(`Key "`+e.name+`" deactivated.`),this.fetchKeys()}finally{this.deactivatingID=``}}}},Y5=z(``),X5=z(`

                  Store this key securely — it won’t be shown again.

                  `),Z5=z(``),Q5=z(``),$5=z(``),e7=z(``),t7=z(`
                  `);function n7(e,t){D(t,!0);{let t=k(()=>J5.issuedValue?``:J5.error),n=k(()=>J5.issuedValue?`Done, I’ve stored it`:`Create API Key`),r=k(()=>J5.issuedValue?xE:qE);hq(e,{get open(){return J5.formOpen},title:`Create API Key`,ariaLabel:`API key editor`,get error(){return L(t)},get submitting(){return J5.formSubmitting},get submitLabel(){return L(n)},submittingLabel:`Creating...`,get submitIcon(){return L(r)},cancel:!1,dialogClass:`auth-key-editor`,onclose:()=>J5.closeForm(),onsubmit:()=>J5.issuedValue?J5.dismissIssuedKey():J5.submitForm(),children:(e,t)=>{var n=Zr(),r=P(n),i=e=>{var t=X5(),n=F(N(t),2),r=N(n),i=N(r,!0);E(r),p3(F(r,2),{get state(){return J5.copyState},onclick:()=>J5.copyIssuedValue()}),E(n);var a=F(n,2),o=e=>{B(e,Y5())};H(a,e=>{J5.copyState.error&&e(o)}),E(t),I(()=>V(i,J5.issuedValue)),B(e,t)},a=e=>{var t=t7(),n=N(t),r=N(n),i=F(N(r),2);ta(i),E(r);var a=F(r,2),o=F(N(a),2);ta(o),E(a),E(n);var s=F(n,2),c=N(s);HU(c,{copyId:`auth-key-user-path-help-copy`,label:`API key user path help`,title:e=>{B(e,Z5())},help:e=>{He(),B(e,Xr(`When set, this key overrides the configured user path request + header for audit logging and downstream request context.`))},$$slots:{title:!0,help:!0}});var l=F(c,2);ta(l),E(s);var u=F(s,2),d=N(u);HU(d,{copyId:`auth-key-labels-help-copy`,label:`API key labels help`,title:e=>{B(e,Q5())},help:e=>{He(),B(e,Xr(`Every request authenticated with this key gets these labels, in + addition to any labels from tagging headers. Labels show up in + usage analytics, the request log, and audit logs.`))},$$slots:{title:!0,help:!0}});var f=F(d,2);ta(f),E(u);var p=F(u,2),m=N(p);HU(m,{copyId:`auth-key-dashboard-access-help-copy`,label:`API key dashboard access help`,title:e=>{B(e,$5())},help:e=>{He(),B(e,Xr(`When off, this key is denied the dashboard and every /admin API + endpoint. Model endpoints and GET /v1/usage stay available to + the key. The master key always has dashboard access.`))},$$slots:{title:!0,help:!0}});var h=F(m,2),g=N(h);ta(g),He(2),E(h),E(p),_q(F(p,2),{id:`auth-key-description`,label:`Description (optional)`,children:(e,t)=>{var n=e7();dt(n),ua(n,()=>J5.form.description,e=>J5.form.description=e),B(e,n)},$$slots:{default:!0}}),E(t),ua(i,()=>J5.form.name,e=>J5.form.name=e),ua(o,()=>J5.form.expires_at,e=>J5.form.expires_at=e),ua(l,()=>J5.form.user_path,e=>J5.form.user_path=e),ua(f,()=>J5.form.labels,e=>J5.form.labels=e),da(g,()=>J5.form.dashboard_access,e=>J5.form.dashboard_access=e),B(e,t)};H(r,e=>{J5.issuedValue?e(i):e(a,-1)}),B(e,n)},$$slots:{default:!0}})}O()}var r7=z(`

                  `),i7=z(`

                  Applies to new requests made with this key. Leave empty to remove all labels.

                  `,1);function a7(e,t){D(t,!0),hq(e,{get open(){return J5.labelsEditor.open},title:`Edit Labels`,ariaLabel:`API key labels editor`,get error(){return J5.labelsEditor.error},get submitting(){return J5.labelsEditor.submitting},submitLabel:`Save Labels`,cancel:!1,dialogClass:`auth-key-editor`,onclose:()=>J5.closeLabelsEditor(),onsubmit:()=>J5.submitLabelsEditor(),headerHint:e=>{var t=r7(),n=N(t,!0);E(t),I(()=>V(n,J5.labelsEditor.name)),B(e,t)},children:(e,t)=>{_q(e,{id:`auth-key-labels-edit`,label:`Labels (comma-separated)`,children:(e,t)=>{var n=i7(),r=P(n);ta(r),He(2),ua(r,()=>J5.labelsEditor.value,e=>J5.labelsEditor.value=e),B(e,n)},$$slots:{default:!0}})},$$slots:{headerHint:!0,default:!0}}),O()}var o7=z(` `),s7=z(`
                  `),c7=z(``),l7=z(`Expired`),u7=z(` `),d7=z(` `,1),f7=z(`Deactivated`),p7=z(`
                  `),m7=z(`
                  NameDescriptionUser PathLabelsTokenDashboard Access ExpiresCreated
                  `);function h7(e,t){D(t,!0);var n=m7(),r=N(n),i=N(r),a=N(i),o=F(N(a),5),s=N(o);q(F(N(s)),{get icon(){return FE},width:`13`,height:`13`}),E(s),E(o),He(3),E(a),E(i);var c=F(i);U(c,21,()=>J5.visibleKeys,e=>e.id,(e,t)=>{var n=p7();let r;var i=N(n),a=N(i,!0);E(i);var o=F(i),s=N(o,!0);E(o);var c=F(o),l=N(c,!0);E(c);var u=F(c),d=N(u),f=e=>{var n=s7();U(n,20,()=>L(t).labels||[],e=>e,(e,t)=>{var n=o7(),r=N(n,!0);E(n),I(e=>{Vi(n,e),V(r,t)},[()=>RB(t)]),B(e,n)}),E(n),B(e,n)},p=e=>{B(e,c7())};H(d,e=>{(L(t).labels||[]).length>0?e(f):e(p,-1)}),E(u);var m=F(u),h=N(m),g=N(h,!0);E(h),E(m);var _=F(m),v=N(_);let y;var b=N(v,!0);E(v),E(_);var x=F(_),S=N(x),C=e=>{var n=u7(),r=N(n),i=N(r,!0);E(r);var a=F(r,2),o=e=>{B(e,l7())},s=k(()=>L5(L(t)));H(a,e=>{L(s)&&e(o)}),E(n),I(e=>V(i,e),[()=>ik(L(t).expires_at)]),B(e,n)},w=e=>{B(e,Xr(`—`))};H(S,e=>{L(t).expires_at?e(C):e(w,-1)}),E(x);var T=F(x),ee=N(T,!0);E(T);var te=F(T),ne=N(te),re=N(ne),ie=e=>{var n=d7(),r=P(n);{let e=k(()=>(L(t).dashboard_access?`Revoke dashboard access for API key `:`Grant dashboard access to API key `)+L(t).name),n=k(()=>!!J5.dashboardAccessID);dK(r,{get label(){return L(e)},class:`table-icon-btn`,onclick:()=>J5.toggleDashboardAccess(L(t)),get disabled(){return L(n)},children:(e,n)=>{{let n=k(()=>L(t).dashboard_access?iD:rD);q(e,{get icon(){return L(n)},class:`table-icon-svg`})}},$$slots:{default:!0}})}var i=F(r,2);{let e=k(()=>`Edit labels for API key `+L(t).name);dK(i,{get label(){return L(e)},class:`table-icon-btn`,onclick:()=>J5.openLabelsEditor(L(t)),children:(e,t)=>{q(e,{get icon(){return GE},class:`table-icon-svg`})},$$slots:{default:!0}})}var a=F(i,2);{let e=k(()=>(J5.deactivatingID===L(t).id?`Deactivating API key `:`Deactivate API key `)+L(t).name),n=k(()=>J5.deactivatingID===L(t).id);dK(a,{get label(){return L(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>J5.deactivateKey(L(t)),get disabled(){return L(n)},children:(e,t)=>{q(e,{get icon(){return JE},class:`table-icon-svg`})},$$slots:{default:!0}})}B(e,n)},ae=e=>{var n=f7();I(e=>G(n,`title`,e),[()=>L(t).deactivated_at?`Deactivated on `+ak(L(t).deactivated_at):`Deactivated`]),B(e,n)},oe=k(()=>R5(L(t)));H(re,e=>{L(t).active?e(ie):L(oe)&&e(ae,1)}),E(ne),E(te),E(n),I((e,i,o)=>{r=W(n,1,`svelte-nf0ldb`,null,r,e),V(a,L(t).name),V(s,L(t).description||`—`),V(l,L(t).user_path||`—`),V(g,L(t).redacted_value),y=W(v,1,`auth-key-status-badge`,null,y,{"auth-key-status-active":L(t).dashboard_access,"auth-key-status-inactive":!L(t).dashboard_access}),V(b,L(t).dashboard_access?`Allowed`:`Denied`),G(x,`title`,i),V(ee,o)},[()=>({"auth-key-row-deactivated":R5(L(t))}),()=>L(t).expires_at?ak(L(t).expires_at):``,()=>QD.formatTimestamp(L(t).created_at)]),B(e,n)}),E(c),E(r),E(n),B(e,n),O()}var g7=z(``),_7=z(`
                  API key management is unavailable.
                  `),v7=z(``),y7=z(`

                  Managed API keys authenticate requests to the gateway. Deactivation is + permanent — create a new key if access needs to be restored.

                  `),b7=z(`
                  `),x7=z(`
                  `),S7=z(`

                  `),C7=z(`

                  No API keys yet. Issue a key to get started.

                  `),w7=z(`
                  `);function T7(e,t){D(t,!0),kn(()=>{Y.refreshTick,kD.page===`auth-keys`&&J5.fetchKeys()});var n=w7(),r=N(n),i=F(N(r),2),a=N(i),o=e=>{var t=g7();q(N(t),{get icon(){return qE},class:`table-icon-svg`}),He(2),E(t),I(()=>t.disabled=J5.formSubmitting),R(`click`,t,()=>{J5.formSubmitting||J5.openForm()}),B(e,t)};H(a,e=>{J5.available&&!Y.authError&&e(o)}),E(i),E(r);var s=F(r,2),c=e=>{B(e,_7())};H(s,e=>{!J5.available&&!Y.authError&&e(c)});var l=F(s,2),u=e=>{var t=v7(),n=N(t,!0);E(t),I(()=>V(n,J5.error)),B(e,t)};H(l,e=>{J5.error&&!Y.authError&&!J5.formOpen&&e(u)});var d=F(l,2),f=e=>{B(e,y7())};H(d,e=>{J5.available&&!Y.authError&&e(f)});var p=F(d,2);n7(p,{});var m=F(p,2);a7(m,{});var h=F(m,2),g=e=>{var t=b7();_U(N(t),{size:18,label:`Loading API keys`}),E(t),B(e,t)};H(h,e=>{J5.loading&&J5.keys.length===0&&e(g)});var _=F(h,2),v=e=>{var t=x7(),n=N(t);mG(N(n),{placeholder:`Filter by name, description, user path, label, or token...`,label:`Filter API keys by name, description, user path, label, or token`,get value(){return J5.filter},set value(e){J5.filter=e}}),E(n);var r=F(n,2),i=N(r),a=N(i);ta(a);var o=F(a,2),s=F(N(o)),c=e=>{var t=Xr();I(()=>V(t,`(${J5.inactiveCount??``})`)),B(e,t)};H(s,e=>{J5.inactiveCount>0&&e(c)}),E(o),E(i),E(r),E(t),da(a,()=>J5.showInactive,e=>J5.showInactive=e),B(e,t)};H(_,e=>{J5.keys.length>0&&J5.available&&e(v)});var y=F(_,2),b=e=>{h7(e,{})};H(y,e=>{J5.visibleKeys.length>0&&J5.available&&e(b)});var x=F(y,2),S=e=>{var t=S7(),n=N(t);E(t),I(()=>V(n,`No API keys match the current filter.${J5.inactiveCount>0&&!J5.showInactive?` `+J5.inactiveCount+` inactive `+(J5.inactiveCount===1?`key is`:`keys are`)+` hidden.`:``}`)),B(e,t)};H(x,e=>{J5.keys.length>0&&J5.visibleKeys.length===0&&J5.available&&e(S)});var C=F(x,2),w=e=>{B(e,C7())};H(C,e=>{J5.keys.length===0&&!J5.loading&&!Y.authError&&!J5.error&&J5.available&&e(w)}),E(n),B(e,n),O()}Vr([`click`]);var E7=z(``),D7=z(`
                  `);function O7(e,t){D(t,!0);let n=ja.map(e=>({value:e,label:bk(e)}));var r=Zr(),i=P(r),a=e=>{var t=D7(),r=N(t),i=N(r,!0);E(r);var a=F(r,2);U(a,21,()=>n,e=>e.value,(e,t)=>{var n=E7(),r=N(n,!0);E(n);var i={};I(()=>{V(r,L(t).label),i!==(i=L(t).value)&&(n.value=(n.__value=L(t).value)??``)}),B(e,n)}),E(a);var o;Ui(a),E(t),I((e,t,n)=>{V(i,e),G(a,`aria-label`,t),o!==(o=n)&&(a.value=(a.__value=n)??``,Hi(a,n))},[()=>xw(),()=>xw(),()=>J()]),R(`change`,a,e=>Ba(e.currentTarget.value)),B(e,t)};H(i,e=>{n.length>1&&e(a)}),B(e,r),O()}Vr([`change`]);var k7=z(`

                  `),A7=z(``),j7=z(``),M7=z(`
                  `,1);function N7(e,t){D(t,!0);function n(){QD.saveOverride(),Y.refresh()}function r(){QD.clearOverride(),Y.refresh()}var i=M7(),a=P(i),o=N(a);{let e=e=>{var t=k7(),n=N(t,!0);E(t),I(e=>V(n,e),[()=>hy()]),B(e,t)},t=k(()=>vy()),n=k(()=>xy());HU(o,{copyId:`timezone-help-copy`,get label(){return L(t)},get text(){return L(n)},title:e,$$slots:{title:!0}})}E(a);var s=F(a,2),c=N(s),l=N(c),u=N(l,!0);E(l);var d=F(l,2),f=N(d),p=N(f,!0);E(f),f.value=f.__value=``,U(F(f),17,()=>QD.options,e=>e.value,(e,t)=>{var n=A7(),r=N(n,!0);E(n);var i={};I(()=>{V(r,L(t).label),i!==(i=L(t).value)&&(n.value=(n.__value=L(t).value)??``)}),B(e,n)}),E(d),E(c),E(s);var m=F(s,2),h=N(m),g=e=>{var t=j7(),n=N(t,!0);E(t),I(e=>V(n,e),[()=>Ay()]),R(`click`,t,r),B(e,t)};H(h,e=>{QD.override&&e(g)}),E(m),I((e,t)=>{V(u,e),V(p,t)},[()=>wy(),()=>Dy({timezone:QD.detectedTimeZoneLabel()})]),Br(`focus`,d,()=>QD.ensureOptions()),R(`change`,d,n),Wi(d,()=>QD.override,e=>QD.override=e),B(e,i),O()}Vr([`change`,`click`]);var P7=z(``),F7=z(`

                  `,1);function I7(e,t){D(t,!0);let n=k(()=>Q.failoverSaving||Q.failoverGenerating||Q.failoverDraftSaving||!Q.failoverAvailable||!Q.failoverEnabled());var r=F7(),i=P(r),a=N(i),o=N(a),s=N(o,!0);E(o),E(a);var c=F(a,2),l=N(c),u=N(l);q(u,{get icon(){return hD},class:`form-action-icon`});var d=F(u,2),f=N(d,!0);E(d),E(l);var p=F(l,2),m=N(p);q(m,{get icon(){return uD},class:`form-action-icon`});var h=F(m,2),g=N(h,!0);E(h),E(p),E(c),E(i);var _=F(i,2),v=N(_),y=e=>{var t=P7(),n=N(t,!0);E(t),I(()=>V(n,Q.failoverError)),B(e,t)};H(v,e=>{Q.failoverError&&e(y)}),E(_),uQ(F(_,2),{}),I((e,t,r)=>{V(s,e),l.disabled=L(n),V(f,t),p.disabled=L(n),V(g,r)},[()=>Ny(),()=>Q.failoverGenerating?Iy():zy(),()=>Hy()]),R(`click`,l,()=>Q.generateFailoverRules()),R(`click`,p,()=>Q.openFailoverResetDialog()),B(e,r),O()}Vr([`click`]);function L7(){return{daily_reset_hour:0,daily_reset_minute:0,weekly_reset_weekday:1,weekly_reset_hour:0,weekly_reset_minute:0,monthly_reset_day:1,monthly_reset_hour:0,monthly_reset_minute:0}}function R7(e,t){let n=t||{},r=(e,t)=>{if(e===``)return t;let n=Number(e);return Number.isFinite(n)&&Number.isInteger(n)?Math.trunc(n):t},i=(e,t)=>r(n[e],t),a=(t,n)=>e?r(e[t],n):n;return{daily_reset_hour:a(`daily_reset_hour`,i(`daily_reset_hour`,0)),daily_reset_minute:a(`daily_reset_minute`,i(`daily_reset_minute`,0)),weekly_reset_weekday:a(`weekly_reset_weekday`,i(`weekly_reset_weekday`,1)),weekly_reset_hour:a(`weekly_reset_hour`,i(`weekly_reset_hour`,0)),weekly_reset_minute:a(`weekly_reset_minute`,i(`weekly_reset_minute`,0)),monthly_reset_day:a(`monthly_reset_day`,i(`monthly_reset_day`,1)),monthly_reset_hour:a(`monthly_reset_hour`,i(`monthly_reset_hour`,0)),monthly_reset_minute:a(`monthly_reset_minute`,i(`monthly_reset_minute`,0))}}function z7(){return[{value:0,label:Zb()},{value:1,label:ex()},{value:2,label:rx()},{value:3,label:ox()},{value:4,label:lx()},{value:5,label:fx()},{value:6,label:hx()}]}var B7=z(`

                  `),V7=z(``),H7=z(`

                  `),U7=z(``),W7=z(``),G7=z(`
                  `,1);function K7(e,t){D(t,!0);let n=A(M(L7())),r=A(!1),i=A(!1),a=A(``),o=A(!1),s=k(()=>lO.budgetsVisible());async function c(){if(await lO.ensureLoaded(),!lO.budgetsVisible()){j(a,``);return}j(r,!0),j(a,``);try{let e=await iO(`/admin/budgets/settings`,{label:`budget settings`});if(e.stale)return;if(!e.ok){j(a,Hb(),!0);return}j(n,R7(e.data,L(n)),!0)}catch(e){console.error(`Failed to fetch budget settings:`,e),j(a,Hb(),!0)}finally{j(r,!1)}}async function l(){if(!L(i)){j(i,!0);try{let e=await aO(`/admin/budgets/settings`,`PUT`,R7(L(n),L(n)),{label:`budget settings`});if(e.stale)return;if(!e.ok){UO.error(Gb());return}j(n,R7(e.data,L(n)),!0),j(a,``),UO.success(Jb())}catch(e){console.error(`Failed to save budget settings:`,e),UO.error(Gb())}finally{j(i,!1)}}}kn(()=>{Y.refreshTick,c()});var u=Zr(),d=P(u),f=e=>{var t=G7(),s=P(t),c=N(s);{let e=e=>{var t=B7(),n=N(t,!0);E(t),I(e=>V(n,e),[()=>ob()]),B(e,t)},t=k(()=>eb()),n=k(()=>rb());HU(c,{copyId:`budget-settings-help-copy`,get label(){return L(t)},get text(){return L(n)},title:e,$$slots:{title:!0}})}var u=F(c,2),d=N(u),f=N(d),p=N(f,!0);E(f);var m=F(f,2),h=N(m);{let e=e=>{var t=V7(),n=N(t,!0);E(t),I(e=>V(n,e),[()=>xb()]),B(e,t)},t=k(()=>vb());HU(h,{copyId:`budget-monthly-day-help-copy`,get label(){return L(t)},external:!0,get open(){return L(o)},set open(e){j(o,e,!0)},title:e,$$slots:{title:!0}})}var g=F(h,2);ta(g),E(m);var _=F(m,2),v=N(_),y=N(v,!0);E(v);var b=F(v,2);ta(b),E(_);var x=F(_,2),S=N(x),C=N(S,!0);E(S);var w=F(S,2);ta(w),E(x);var T=F(x,2),ee=N(T),te=e=>{var t=H7(),n=N(t,!0);E(t),I(e=>V(n,e),[()=>wb()]),B(e,t)};H(ee,e=>{L(o)&&e(te)}),E(T),E(d);var ne=F(d,2),re=N(ne),ie=N(re,!0);E(re);var ae=F(re,2),oe=N(ae),se=N(oe,!0);E(oe);var ce=F(oe,2);U(ce,21,z7,e=>e.value,(e,t)=>{var n=U7(),r=N(n,!0);E(n);var i={};I(()=>{V(r,L(t).label),i!==(i=L(t).value)&&(n.value=(n.__value=L(t).value)??``)}),B(e,n)}),E(ce),E(ae);var le=F(ae,2),ue=N(le),de=N(ue,!0);E(ue);var fe=F(ue,2);ta(fe),E(le);var pe=F(le,2),me=N(pe),he=N(me,!0);E(me);var ge=F(me,2);ta(ge),E(pe),He(2),E(ne);var _e=F(ne,2),ve=N(_e),ye=N(ve,!0);E(ve);var be=F(ve,4),xe=N(be),Se=N(xe,!0);E(xe);var Ce=F(xe,2);ta(Ce),E(be);var we=F(be,2),Te=N(we),Ee=N(Te,!0);E(Te);var De=F(Te,2);ta(De),E(we),He(2),E(_e),E(u);var Oe=F(u,2),ke=N(Oe),Ae=N(ke);q(Ae,{get icon(){return ZE},class:`form-action-icon`});var je=F(Ae,2),Me=N(je,!0);E(je),E(ke);var Ne=F(ke,2),Pe=e=>{{let t=k(()=>zb());_U(e,{size:16,get label(){return L(t)}})}};H(Ne,e=>{L(r)&&e(Pe)}),E(Oe),E(s);var Fe=F(s,2),Ie=N(Fe),Le=e=>{var t=W7(),n=N(t,!0);E(t),I(()=>V(n,L(a))),B(e,t)};H(Ie,e=>{L(a)&&e(Le)}),E(Fe),I((e,t,n,a,o,s,c,l,u,d,f)=>{V(p,e),V(y,t),V(C,n),V(ie,a),V(se,o),V(de,s),V(he,c),V(ye,l),V(Se,u),V(Ee,d),ke.disabled=L(i)||L(r),G(ke,`aria-busy`,L(i)?`true`:`false`),V(Me,f)},[()=>lb(),()=>Ab(),()=>Nb(),()=>fb(),()=>Db(),()=>Ab(),()=>Nb(),()=>hb(),()=>Ab(),()=>Nb(),()=>Ib()]),ua(g,()=>L(n).monthly_reset_day,e=>L(n).monthly_reset_day=e),ua(b,()=>L(n).monthly_reset_hour,e=>L(n).monthly_reset_hour=e),ua(w,()=>L(n).monthly_reset_minute,e=>L(n).monthly_reset_minute=e),Wi(ce,()=>L(n).weekly_reset_weekday,e=>L(n).weekly_reset_weekday=e),ua(fe,()=>L(n).weekly_reset_hour,e=>L(n).weekly_reset_hour=e),ua(ge,()=>L(n).weekly_reset_minute,e=>L(n).weekly_reset_minute=e),ua(Ce,()=>L(n).daily_reset_hour,e=>L(n).daily_reset_hour=e),ua(De,()=>L(n).daily_reset_minute,e=>L(n).daily_reset_minute=e),R(`click`,ke,l),B(e,t)};H(d,e=>{L(s)&&e(f)}),B(e,u),O()}Vr([`click`]);var q7=z(`

                  `);function J7(e,t){D(t,!0);var n=Zr(),r=P(n),i=e=>{var t=q7(),n=N(t),r=N(n),i=N(r,!0);E(r);var a=F(r,2),o=N(a,!0);E(a),E(n);var s=F(n,2),c=N(s),l=N(c);q(l,{get icon(){return XE},class:`form-action-icon`});var u=F(l,2),d=N(u,!0);E(u),E(c),E(s),E(t),I((e,t,n)=>{V(i,e),V(o,t),c.disabled=X.resetAllLoading,V(d,n)},[()=>Gy(),()=>Jy(),()=>Zy()]),R(`click`,c,()=>X.openResetDialog()),B(e,t)},a=k(()=>lO.budgetsVisible());H(r,e=>{L(a)&&e(i)}),B(e,n),O()}Vr([`click`]);function Y7(){return{header:``,prefix:``,do_not_pass:!1,delimiter:``,managed:!1}}function X7(e){return(e&&Array.isArray(e.headers)?e.headers:[]).map(e=>({header:typeof e.header==`string`?e.header:``,prefix:typeof e.prefix==`string`?e.prefix:``,do_not_pass:e.do_not_pass===!0,delimiter:typeof e.delimiter==`string`&&e.delimiter!==`,`?e.delimiter:``,managed:e.managed===!0}))}function Z7(e){return{headers:(Array.isArray(e)?e:[]).filter(e=>!e.managed&&e.header.trim()!==``).map(e=>({header:e.header.trim(),prefix:e.prefix,do_not_pass:e.do_not_pass,delimiter:e.delimiter}))}}function Q7(e){return e&&e.error&&e.error.message?e.error.message:``}var $7=z(`

                  `),e9=z(`config`),t9=z(``),n9=z(`
                  `),r9=z(`

                  `),i9=z(``),a9=z(`
                  `,1);function o9(e,t){D(t,!0);let n=A(M([])),r=A(!0),i=A(!1),a=A(!1),o=A(``);function s(){L(n).push(Y7())}function c(e){let t=L(n)[e];!t||t.managed||L(n).splice(e,1)}async function l(){j(i,!0),j(o,``);try{let e=await iO(`/admin/tagging/settings`,{label:`tagging settings`});if(e.stale)return;if(!e.ok){j(o,oS(),!0);return}j(n,X7(e.data),!0),j(r,e.data&&e.data.editable!==!1,!0)}catch(e){console.error(`Failed to fetch tagging settings:`,e),j(o,oS(),!0)}finally{j(i,!1)}}async function u(){if(!(L(a)||!L(r))){j(a,!0);try{let e=await aO(`/admin/tagging/settings`,`PUT`,Z7(L(n)),{label:`tagging settings`});if(e.stale)return;if(!e.ok){UO.error(e.status!==401&&Q7(e.data)||lS());return}j(n,X7(e.data),!0),j(r,e.data&&e.data.editable!==!1,!0),j(o,``),UO.success(fS())}catch(e){console.error(`Failed to save tagging settings:`,e),UO.error(lS())}finally{j(a,!1)}}}kn(()=>{Y.refreshTick,l()});var d=a9(),f=P(d),p=N(f);{let e=e=>{var t=$7(),n=N(t,!0);E(t),I(e=>V(n,e),[()=>vx()]),B(e,t)},t=k(()=>xx()),n=k(()=>wx());HU(p,{copyId:`tagging-settings-help-copy`,get label(){return L(t)},get text(){return L(n)},title:e,$$slots:{title:!0}})}var m=F(p,2),h=N(m);U(h,17,()=>L(n),ai,(e,t,n)=>{var i=n9(),a=N(i),o=N(a);G(o,`for`,`tagging-header-`+n);var s=N(o,!0);E(o);var l=F(o,2);ta(l),G(l,`id`,`tagging-header-`+n),E(a);var u=F(a,2),d=N(u);G(d,`for`,`tagging-prefix-`+n);var f=N(d,!0);E(d);var p=F(d,2);ta(p),G(p,`id`,`tagging-prefix-`+n),E(u);var m=F(u,2),h=N(m);G(h,`for`,`tagging-delimiter-`+n);var g=N(h,!0);E(h);var _=F(h,2);ta(_),G(_,`id`,`tagging-delimiter-`+n),E(m);var v=F(m,2),y=N(v);ta(y);var b=F(y,2),x=N(b,!0);E(b),E(v);var S=F(v,2),C=N(S),w=e=>{var t=e9();I(e=>G(t,`title`,e),[()=>zx()]),B(e,t)},T=e=>{var i=t9(),a=N(i,!0);E(i),I((e,t)=>{i.disabled=!L(r),G(i,`aria-label`,e),V(a,t)},[()=>Gx({header:L(t).header||n+1}),()=>Hx()]),R(`click`,i,()=>c(n)),B(e,i)};H(C,e=>{L(t).managed?e(w):e(T,-1)}),E(S),E(i),I((e,n,i,a)=>{V(s,e),l.disabled=L(t).managed||!L(r),V(f,n),p.disabled=L(t).managed||!L(r),V(g,i),_.disabled=L(t).managed||!L(r),y.disabled=L(t).managed||!L(r),V(x,a)},[()=>Dx(),()=>Ax(),()=>Nx(),()=>Ix()]),ua(l,()=>L(t).header,e=>L(t).header=e),ua(p,()=>L(t).prefix,e=>L(t).prefix=e),ua(_,()=>L(t).delimiter,e=>L(t).delimiter=e),da(y,()=>L(t).do_not_pass,e=>L(t).do_not_pass=e),B(e,i)});var g=F(h,2),_=e=>{{let t=k(()=>Jx());_U(e,{size:16,get label(){return L(t)}})}};H(g,e=>{L(i)&&e(_)});var v=F(g,2),y=e=>{var t=r9(),n=N(t,!0);E(t),I(e=>V(n,e),[()=>Zx()]),B(e,t)};H(v,e=>{!L(i)&&L(n).length===0&&e(y)}),E(m);var b=F(m,2),x=N(b),S=N(x);q(S,{get icon(){return qE},class:`form-action-icon`});var C=F(S,2),w=N(C,!0);E(C),E(x);var T=F(x,2),ee=N(T);q(ee,{get icon(){return ZE},class:`form-action-icon`});var te=F(ee,2),ne=N(te,!0);E(te),E(T),E(b),E(f);var re=F(f,2),ie=N(re),ae=e=>{var t=i9(),n=N(t,!0);E(t),I(()=>V(n,L(o))),B(e,t)};H(ie,e=>{L(o)&&e(ae)}),E(re),I((e,t)=>{x.disabled=!L(r)||L(a)||L(i),V(w,e),T.disabled=!L(r)||L(a)||L(i),G(T,`aria-busy`,L(a)?`true`:`false`),V(ne,t)},[()=>eS(),()=>rS()]),R(`click`,x,s),R(`click`,T,u),B(e,d),O()}Vr([`click`]);function s9(e){let t=e||{};if(t.selectedPreset)return{days:parseInt(t.selectedPreset,10)||30};let n=t.customStartDate?rk(t.customStartDate):``,r=t.customEndDate||t.today||null;return{start_date:n,end_date:r?rk(r):``}}function c9(e,t,n,r){return{...s9(e),user_path:String(t||``).trim(),selector:String(n||``).trim(),confirmation:r}}function l9(e){let t=Number(e&&e.matched||0),n=Number(e&&e.recalculated||0),r=Number(e&&e.without_pricing||0),i=zC({matched:t,recalculated:n});return r>0&&(i+=` `+HC({count:r})),i}var u9=z(`

                  `),d9=z(`
                  `);function f9(e,t){D(t,!0);let n=A(``),r=A(``),i=A(!1),a=k(()=>lO.booleanFlag(`USAGE_PRICING_RECALCULATION_ENABLED`,!1));function o(){if(!L(a)){UO.error(DC());return}L(i)||OO.open({title:wC(),titleId:`pricingRecalculateDialogTitle`,inputId:`pricing-recalculate-confirmation`,requiredText:AC(),confirmLabel:wC(),icon:gE,dialogClass:`pricing-recalculate-dialog`,message:NC(),onConfirm:()=>s()})}async function s(){if(!L(a)){UO.error(DC());return}if(!L(i)){j(i,!0);try{let e=await aO(`/admin/usage/recalculate-pricing`,`POST`,c9({selectedPreset:kk.selectedPreset,customStartDate:kk.customStartDate,customEndDate:kk.customEndDate,today:QD.todayDate()},L(n),L(r),AC()),{label:`pricing recalculation`});if(e.stale)return;if(!e.ok){OO.error=IC();return}OO.close(),UO.success(l9(e.data)),Fk.fetchUsage()}catch(e){console.error(`Failed to recalculate pricing:`,e),OO.error=IC()}finally{j(i,!1)}}}var c=Zr(),l=P(c),u=e=>{var t=d9(),s=N(t);{let e=e=>{var t=u9(),n=N(t,!0);E(t),I(e=>V(n,e),[()=>rC()]),B(e,t)},t=k(()=>oC()),n=k(()=>lC());HU(s,{copyId:`pricing-recalculate-help-copy`,get label(){return L(t)},get text(){return L(n)},title:e,$$slots:{title:!0}})}var c=F(s,2),l=N(c),u=N(l),d=N(u,!0);E(u);var f=F(u,2);Zk(N(f),{}),E(f),E(l);var p=F(l,2),m=N(p),h=N(m,!0);E(m);var g=F(m,2);ta(g),E(p);var _=F(p,2),v=N(_),y=N(v,!0);E(v);var b=F(v,2);ta(b),E(_),E(c);var x=F(c,2),S=N(x),C=N(S);q(C,{get icon(){return gE},class:`form-action-icon`});var w=F(C,2),T=N(w,!0);E(w),E(S),E(x),E(t),I((e,t,n,r,o)=>{V(d,e),V(h,t),V(y,n),G(b,`placeholder`,r),S.disabled=L(i)||!L(a),G(S,`aria-busy`,L(i)?`true`:`false`),V(T,o)},[()=>fC(),()=>hC(),()=>vC(),()=>xC(),()=>wC()]),ua(g,()=>L(n),e=>j(n,e)),ua(b,()=>L(r),e=>j(r,e)),R(`click`,S,o),B(e,t)};H(l,e=>{L(a)&&e(u)}),B(e,c),O()}Vr([`click`]);function p9(e){return String(e&&e.status||`ok`).toLowerCase()}function m9(e){if(!e||typeof e!=`object`)return DS();let t=Number(e.model_count||0),n=Number(e.provider_count||0),r=p9(e);return(r===`ok`?AS():r===`partial`?NS():IS())+` `+t+` model`+(t===1?``:`s`)+` across `+n+` provider`+(n===1?``:`s`)+`.`}function h9(e){return!!e&&p9(e)===`ok`}function g9(e){let t=e&&e.steps;return Array.isArray(t)?t:[]}function _9(e){let t=String(e&&e.name||``).replace(/_/g,` `),n=String(e&&e.status||``).trim(),r=String(e&&(e.error||e.message)||``).trim();return t?r?t+`: `+n+` - `+r:t+`: `+n:r||n||``}var v9=z(`

                  `),y9=z(`
                • `),b9=z(`
                    `),x9=z(`
                    `,1);function S9(e,t){D(t,!0);let n=A(!1),r=A(null);async function i(){if(!L(n)){j(n,!0),j(r,null);try{let e=await aO(`/admin/runtime/refresh`,`POST`,void 0,{label:`runtime refresh`});if(e.stale)return;if(!e.ok){UO.error(IS());return}j(r,e.data&&typeof e.data==`object`?e.data:null,!0),h9(L(r))?UO.success(m9(L(r))):UO.error(m9(L(r))),Y.refresh()}catch(e){console.error(`Failed to refresh runtime:`,e),UO.error(IS())}finally{j(n,!1)}}}var a=x9(),o=P(a),s=N(o);{let e=e=>{var t=v9(),n=N(t,!0);E(t),I(e=>V(n,e),[()=>hS()]),B(e,t)},t=k(()=>vS()),n=k(()=>xS());HU(s,{copyId:`runtime-refresh-help-copy`,get label(){return L(t)},get text(){return L(n)},title:e,$$slots:{title:!0}})}var c=F(s,2),l=N(c);let u;var d=N(l);q(d,{get icon(){return YE},class:`settings-refresh-icon`});var f=F(d,2),p=N(f,!0);E(f),E(l),E(c),E(o);var m=F(o,2),h=N(m),g=e=>{var t=b9();U(t,21,()=>g9(L(r)),e=>e.name,(e,t)=>{var n=y9(),r=N(n,!0);E(n),I(e=>{W(n,1,`runtime-refresh-step is-${L(t).status??``}`,`svelte-yeq2mp`),V(r,e)},[()=>_9(L(t))]),B(e,n)}),E(t),B(e,t)},_=k(()=>g9(L(r)).length>0);H(h,e=>{L(_)&&e(g)}),E(m),I(e=>{u=W(l,1,`btn btn-primary btn-with-icon settings-refresh-btn`,null,u,{"is-refreshing":L(n)}),l.disabled=L(n),G(l,`aria-busy`,L(n)?`true`:`false`),V(p,e)},[()=>wS()]),R(`click`,l,i),B(e,a),O()}Vr([`click`]);var C9=z(``),w9=z(`

                    `),T9=z(`

                    `),E9=z(``),D9=z(`
                    `),O9=z(`

                    `);function k9(e,t){D(t,!0);let n=A(M([])),r=A(!1),i=A(``),a=A(``);async function o(){j(r,!0),j(a,``);try{let e=await iO(`/admin/runtime/settings`,{label:`runtime settings`});if(e.stale)return;if(!e.ok){j(a,HS(),!0);return}j(n,Array.isArray(e.data?.settings)?e.data.settings:[],!0)}catch(e){console.error(`Failed to load runtime settings:`,e),j(a,HS(),!0)}finally{j(r,!1)}}async function s(e,t,r){if(!(e.locked||L(i))){j(i,e.key,!0);try{let i=await aO(`/admin/runtime/settings/${encodeURIComponent(e.key)}`,`PUT`,{value:t},{label:`save ${e.label}`});if(i.stale){r.value=e.value;return}if(!i.ok){r.value=e.value,UO.error(GS({setting:e.label}));return}j(n,L(n).map(t=>t.key===e.key?i.data:t),!0),UO.success(JS({setting:e.label}))}catch(t){r.value=e.value,console.error(`Failed to save runtime setting:`,t),UO.error(GS({setting:e.label}))}finally{j(i,``)}}}kn(()=>{Y.refreshTick,o()});var c=Zr(),l=P(c),u=e=>{var t=O9(),o=N(t),c=N(o),l=N(c,!0);E(c);var u=F(c,2),d=e=>{var t=C9(),n=N(t,!0);E(t),I(()=>V(n,L(a))),B(e,t)};H(u,e=>{L(a)&&e(d)}),E(o);var f=F(o,2);U(f,21,()=>L(n),e=>e.key,(e,t)=>{var n=D9(),r=N(n),a=N(r),o=N(a,!0);E(a);var c=F(a,2),l=e=>{var n=w9(),r=N(n,!0);E(n),I(()=>V(r,L(t).description)),B(e,n)};H(c,e=>{L(t).description&&e(l)});var u=F(c,2),d=e=>{var n=T9(),r=N(n,!0);E(n),I(e=>V(r,e),[()=>ZS({source:L(t).managed_by||eC()})]),B(e,n)};H(u,e=>{L(t).locked&&e(d)}),E(r);var f=F(r,2);U(f,21,()=>L(t).options||[],e=>e.value,(e,t)=>{var n=E9(),r=N(n,!0);E(n);var i={};I(()=>{G(n,`title`,L(t).description||``),V(r,L(t).label),i!==(i=L(t).value)&&(n.value=(n.__value=L(t).value)??``)}),B(e,n)}),E(f);var p;Ui(f),E(n),I(()=>{G(a,`for`,`runtime-setting-${L(t).key}`),V(o,L(t).label),G(f,`id`,`runtime-setting-${L(t).key}`),f.disabled=L(t).locked||L(i)!==``,p!==(p=L(t).value)&&(f.value=(f.__value=L(t).value)??``,Hi(f,L(t).value))}),R(`change`,f,e=>s(L(t),e.currentTarget.value,e.currentTarget)),B(e,n)}),E(f),E(t),I(e=>{V(l,e),G(f,`aria-busy`,L(r)?`true`:`false`)},[()=>zS()]),B(e,t)};H(l,e=>{(L(n).length>0||L(a))&&e(u)}),B(e,c),O()}Vr([`change`]);var A9=z(`
                    `);function j9(e,t){D(t,!0),kn(()=>{Y.refreshTick,kD.page===`settings`&&(QD.ensureOptions(),lO.ensureLoaded())});var n=A9(),r=N(n),i=N(r),a=N(i),o=N(a,!0);E(a),E(i),E(r);var s=F(r,2),c=N(s);N7(c,{});var l=F(c,2);O7(l,{});var u=F(l,2);I7(u,{});var d=F(u,2);K7(d,{});var f=F(d,2);J7(f,{});var p=F(f,2);o9(p,{});var m=F(p,2);k9(m,{});var h=F(m,2);f9(h,{}),S9(F(h,2),{}),E(s);var g=F(s,2),_=N(g,!0);E(g),E(n),I((e,t)=>{V(o,e),V(_,t)},[()=>ys(),()=>wD()]),B(e,n),O()}var M9=z(`
                    `),N9=z(`
                     
                    `),P9=z(`
                     
                    `),F9=z(`
                     
                    `),I9=z(`
                    `),L9=z(`
                    `,1),R9=z(`
                    `);function z9(e,t){D(t,!0);let n=K(t,`showPromptCache`,3,!0),r=h$({logPrefix:`Failed to copy interaction message:`}),i=k(()=>t.msg.role===`function_call`||t.msg.role===`function_result`);function a(e){return(Math.max(0,Math.min(1,Number(e||0)))*100).toFixed(1)+`%`}function o(e){let t=Math.max(0,Math.min(1,Number(e||0)));return t>0?Hp({percent:Math.round(t*100)}):void 0}function s(e){return e.role===`function_call`?(e.toolCalls||[]).map(e=>e.name+`()`).join(`, `):(e.functionName?e.functionName+`: `:``)+e.text}var c=R9();let l;var u=N(c),d=e=>{var r=N9(),i=N(r),a=N(i),c=N(a,!0);E(a);var l=F(a,2),u=N(l,!0);E(l);var d=F(l,2),f=N(d,!0);E(d),E(i);var p=F(i,2),m=e=>{var n=M9(),r=N(n);E(n),I(e=>V(r,`${e??``}: ${t.msg.functionCallID??``}`),[()=>Gp()]),B(e,n)};H(p,e=>{t.msg.functionCallID&&e(m)});var h=F(p,2),g=e=>{var n=Zr();U(P(n),17,()=>t.msg.toolCalls,ai,(e,n)=>{var r=Zr(),i=P(r),a=e=>{var r=M9(),i=N(r);E(r),I(e=>V(i,`${e??``}: ${L(n).id??``}`),[()=>t.msg.toolCalls.length>1?Jp({name:L(n).name}):Gp()]),B(e,r)};H(i,e=>{L(n).id&&e(a)}),B(e,r)}),B(e,n)};H(h,e=>{t.msg.role===`function_call`&&t.msg.toolCalls&&e(g)});var _=F(h,2),v=N(_,!0);E(_),E(r),I((e,n,i,a)=>{G(r,`title`,e),V(c,t.msg.roleLabel),V(u,n),V(f,i),V(v,a)},[()=>n()?o(t.msg.promptCacheRatio):void 0,()=>s(t.msg),()=>QD.formatTimestamp(t.msg.timestamp),()=>J4(t.msg)]),B(e,r)},f=e=>{var r=L9(),i=P(r),a=N(i),s=N(a,!0);E(a);var c=F(a,2),l=N(c,!0);E(c),E(i);var u=F(i,2),d=e=>{var r=P9(),i=N(r,!0);E(r),I(e=>{G(r,`title`,e),V(i,t.msg.text)},[()=>n()?o(t.msg.promptCacheRatio):void 0]),B(e,r)};H(u,e=>{t.msg.text&&e(d)});var f=F(u,2),p=e=>{var n=I9();U(n,23,()=>t.msg.toolCalls,(e,t)=>e.name+`-`+t,(e,t)=>{var n=F9(),r=N(n),i=N(r),a=N(i,!0);E(i);var o=F(i,2),s=N(o,!0);E(o),E(r);var c=F(r,2),l=e=>{var n=M9(),r=N(n);E(n),I(e=>V(r,`${e??``}: ${L(t).id??``}`),[()=>Gp()]),B(e,n)};H(c,e=>{L(t).id&&e(l)});var u=F(c,2),d=N(u,!0);E(u),E(n),I((e,n)=>{V(a,L(t).name+`()`),V(s,e),V(d,n)},[()=>X4(L(t))||Zp(),()=>X4(L(t))||Zp()]),B(e,n)}),E(n),B(e,n)};H(f,e=>{t.msg.toolCalls&&e(p)}),I((e,n)=>{G(i,`title`,e),V(s,t.msg.roleLabel),V(l,n)},[()=>n()?o(t.msg.promptCacheRatio):void 0,()=>QD.formatTimestamp(t.msg.timestamp)]),B(e,r)};H(u,e=>{L(i)?e(d):e(f,-1)});var p=F(u,2);let m;var h=N(p);{let e=k(()=>r.copied?EE:kE);q(h,{get icon(){return L(e)},width:`14`,height:`14`})}E(p),E(c),I((e,n,a)=>{W(c,1,Pi([L(i)?`chat-function-note`:`chat-message`,t.msg.roleClass,{"is-anchor":t.msg.isAnchor,"is-after-anchor":t.msg.isAfterAnchor}]),`svelte-12s99s5`),G(c,`data-conversation-anchor`,t.msg.isAnchor?`true`:void 0),G(c,`data-entry-id`,t.msg.entryID),l=Vi(c,``,l,e),m=W(p,1,`chat-message-copy svelte-12s99s5`,null,m,{"is-copied":r.copied}),G(p,`aria-label`,n),G(p,`title`,a)},[()=>({"--prompt-cache-fill":a(t.msg.promptCacheRatio),"--prompt-cache-visibility":n()&&t.msg.promptCacheRatio>0?`1`:`0`}),()=>r.copied?Ip():zp(),()=>r.copied?em():zp()]),R(`click`,p,e=>{e.stopPropagation(),r.copy(Y4(t.msg))}),B(e,c),O()}Vr([`click`]);function B9(e,t=0){let n=Math.max(0,W9(e)-Math.max(0,W9(t))),r=Math.min(320,Math.max(180,Math.floor(n*.58))),i=Math.min(360,Math.max(128,Math.floor(n*.35)));return{min:r,max:Math.max(r,n-i)}}function V9(e,t,n=0){let r=B9(t,n),i=W9(e)||520;return Math.min(r.max,Math.max(r.min,Math.round(i)))}function H9(e,t,n=0){return V9(W9(t)-W9(e),t,n)}function U9(e,t,n,r){if(!Array.isArray(e)||e.length===0)return{index:-1,align:`start`};let i=W9(t),a=0;e.forEach((e,t)=>{W9(e)<=i+1&&(a=t)});let o=Number(r)<0?-1:1,s=Math.min(e.length-1,Math.max(0,a+o)),c=e.length-1,l=W9(e[c])0&&s===c&&l?`end`:`start`}}function W9(e){let t=Number(e);return Number.isFinite(t)?t:0}var G9=z(`
                    `),K9=z(`
                    `),q9=z(`

                    `),J9=z(``),Y9=z(`
                    `,1),X9=z(`

                    `),Z9=z(`
                    `),Q9=z(``),$9=z(``),tee=z(``);function nee(e,t){D(t,!0);let n=i3,r=Number(Ca(`gomodel_interactions_panel_width`)),i=`gomodel_interactions_prompt_cache_fill`,a=Number.isFinite(r)&&r>0?r:520,o=A(M(a)),s=A(320),c=A(760),l=A(!1),u=A(!1),d=A(Ca(i,`true`)!==`false`),f=null;function p(e,{fullscreen:t,revealWithoutSlide:n=!1}){let r=a0(180);return t?LO(e,{x:L(o),duration:r,easing:BO}):n?{duration:0}:RO(e,{axis:`x`,duration:r,easing:BO})}async function m(e){if(e===L(l))return;let t=L(l)&&!e;j(u,t,!0),j(l,e,!0),t&&(await Sr(),j(u,!1))}function h(){j(d,!L(d)),wa(i,L(d))}function g(){return(document.querySelector(`.sidebar`)?.getBoundingClientRect().width||0)+(document.querySelector(`.sidebar-toggle`)?.getBoundingClientRect().width||0)}function _(){let e=g(),t=B9(window.innerWidth,e);j(s,t.min,!0),j(c,t.max,!0),j(o,V9(a,window.innerWidth,e),!0)}function v(e){j(o,H9(e,window.innerWidth,g()),!0),a=L(o)}function y(e){e.button===0&&(e.preventDefault(),f=e.pointerId,e.currentTarget.setPointerCapture(e.pointerId),document.body.classList.add(`conversation-panel-resizing`),v(e.clientX))}function b(e){e.pointerId===f&&v(e.clientX)}function x(e){f===null||e.pointerId!==void 0&&e.pointerId!==f||(f=null,document.body.classList.remove(`conversation-panel-resizing`),wa(`gomodel_interactions_panel_width`,a))}function S(e){e.key!==`ArrowLeft`&&e.key!==`ArrowRight`||(e.preventDefault(),a=L(o)+(e.key===`ArrowLeft`?24:-24),_(),a=L(o),wa(`gomodel_interactions_panel_width`,a))}function C(e){let t=document.getElementById(`interactions-drawer-content`),r=n.conversationThreadEl;if(!t||!r)return;let i=[...r.querySelectorAll(`[data-conversation-message="true"]`)],a=t.getBoundingClientRect(),o=a.top+14,s=U9(i.map(e=>e.getBoundingClientRect().top),o,a.bottom,e),c=i[s.index];if(!c)return;let l=s.align===`end`?t.scrollHeight:t.scrollTop+c.getBoundingClientRect().top-a.top-14;t.scrollTo({top:l,behavior:a0(1)>0?`smooth`:`auto`})}function w(){return[document.querySelector(`.sidebar`),document.querySelector(`.sidebar-toggle`),document.getElementById(`dashboard-content`)].filter(Boolean)}kn(()=>{if(!n.conversationOpen)return;_();let e=document.querySelector(`.sidebar`),t=new ResizeObserver(_);e&&t.observe(e);let r=e=>{e.key===`Escape`&&!ka.anyOpen&&(L(l)?m(!1):n.closeConversation())};return window.addEventListener(`keydown`,r),window.addEventListener(`resize`,_),()=>{x({}),t.disconnect(),window.removeEventListener(`keydown`,r),window.removeEventListener(`resize`,_)}}),kn(()=>{n.conversationOpen||j(l,!1)}),kn(()=>{if(!L(l))return;let e=w().map(e=>({element:e,inert:e.inert,ariaHidden:e.getAttribute(`aria-hidden`)}));return e.forEach(({element:e})=>{e.inert=!0,e.setAttribute(`aria-hidden`,`true`)}),()=>{e.forEach(({element:e,inert:t,ariaHidden:n})=>{e.inert=t,n===null?e.removeAttribute(`aria-hidden`):e.setAttribute(`aria-hidden`,n)})}}),kn(()=>{kD.page!==`audit-logs`&&n.conversationOpen&&n.closeConversation()});var T=Zr(),ee=P(T),te=e=>{var t=Zr();U(P(t),16,()=>[L(l)],e=>e,(e,t)=>{var r=tee();let i,a;var l=N(r),f=F(l,2),g=N(f),_=N(g),v=N(_,!0);E(_);var w=F(_,2),T=N(w);let ee;E(w),E(g);var te=F(g,2),ne=N(te),re=N(ne);{let e=k(()=>t?HE:VE);q(re,{get icon(){return L(e)},class:`table-icon-svg`})}E(ne);var ie=F(ne,2);{let e=k(()=>$d());vO(ie,{get label(){return L(e)},onclick:()=>n.closeConversation(),get el(){return n.conversationCloseBtnEl},set el(e){n.conversationCloseBtnEl=e}})}E(te),E(f);var ae=F(f,2),oe=N(ae),se=e=>{var t=G9(),n=N(t);q(N(n),{get icon(){return mE},width:`14`,height:`14`}),E(n);var r=F(n,2);q(N(r),{get icon(){return dE},width:`14`,height:`14`}),E(r),E(t),I((e,i,a,o,s)=>{G(t,`aria-label`,e),G(n,`aria-label`,i),G(n,`title`,a),G(r,`aria-label`,o),G(r,`title`,s)},[()=>nf(),()=>of(),()=>of(),()=>lf(),()=>lf()]),R(`click`,n,()=>C(-1)),R(`click`,r,()=>C(1)),B(e,t)};H(oe,e=>{n.conversationMessages.length>1&&e(se)});var ce=F(oe,2),le=e=>{var t=K9(),r=N(t,!0);E(t),I(()=>V(r,n.conversationError)),B(e,t)};H(ce,e=>{n.conversationError&&e(le)});var ue=F(ce,2),de=e=>{var t=q9(),n=N(t,!0);E(t),I(e=>V(n,e),[()=>ff()]),B(e,t)};H(ue,e=>{n.conversationLoading&&e(de)});var fe=F(ue,2),pe=e=>{var t=q9(),n=N(t,!0);E(t),I(e=>V(n,e),[()=>hf()]),B(e,t)},me=k(()=>!n.conversationLoading&&!n.followUpSending&&!n.conversationError&&n.conversationMessages.length===0&&!n.conversationLiveWaiting());H(fe,e=>{L(me)&&e(pe)});var he=F(fe,2),ge=e=>{var t=Y9(),r=P(t),i=e=>{var t=J9(),n=N(t);let r;var i=F(n,2),a=N(i),o=F(a),s=N(o,!0);E(o),E(i),E(t),I((e,i,o)=>{G(t,`aria-checked`,L(d)),G(t,`title`,e),r=W(n,1,`conversation-cache-switch svelte-ssrzja`,null,r,{"is-active":L(d)}),V(a,`${i??``} `),V(s,o)},[()=>L(d)?vf():xf(),()=>wf(),()=>Df()]),R(`click`,t,h),B(e,t)},a=k(()=>n.conversationMessages.some(e=>Number(e.promptCacheRatio||0)>0));H(r,e=>{L(a)&&e(i)});var o=F(r,2);U(o,21,()=>n.conversationMessages,e=>e.uid,(e,t)=>{z9(e,{get msg(){return L(t)},get showPromptCache(){return L(d)}})}),E(o),ha(o,e=>n.conversationThreadEl=e,()=>n?.conversationThreadEl),B(e,t)};H(he,e=>{n.conversationMessages.length>0&&e(ge)});var _e=F(he,2),ve=e=>{var t=X9(),n=N(t,!0);E(t),I(e=>V(n,e),[()=>Af()]),B(e,t)};H(_e,e=>{n.conversationTruncated&&e(ve)});var ye=F(_e,2),be=e=>{var t=Z9(),r=F(N(t),2),i=N(r,!0);E(r),E(t),I(e=>V(i,e),[()=>n.conversationLiveStatusText()]),B(e,t)},xe=k(()=>n.conversationLiveWaiting());H(ye,e=>{L(xe)&&e(be)}),E(ae);var Se=F(ae,2),Ce=e=>{var t=$9(),r=N(t),i=N(r);dt(i);var a=F(i,2),o=e=>{var t=Q9(),r=N(t,!0);E(t),I(()=>V(r,n.followUpError)),B(e,t)};H(a,e=>{n.followUpError&&e(o)});var s=F(a,2),c=N(s),l=N(c,!0);E(c);var u=F(c,2),d=N(u,!0);E(u),E(s),E(r),E(t),I((e,t,n,r,a,o)=>{G(i,`aria-label`,e),G(i,`placeholder`,t),i.disabled=n,V(l,r),u.disabled=a,V(d,o)},[()=>Nf(),()=>If(),()=>n.followUpSending||n.conversationLiveWaiting(),()=>n.selectedConversationEntry()?.path||``,()=>!n.canSendFollowUp(),()=>n.followUpSending?Ps():js()]),Br(`submit`,r,e=>{e.preventDefault(),n.sendFollowUp()}),ua(i,()=>n.followUpText,e=>n.followUpText=e),B(e,t)},we=k(()=>n.conversationAnchorID&&n.followUpKind());H(Se,e=>{L(we)&&e(Ce)}),E(r),ha(r,e=>n.conversationDialogEl=e,()=>n?.conversationDialogEl),I((e,u,d,f,p,m)=>{i=W(r,1,`conversation-drawer svelte-ssrzja`,null,i,{"conversation-drawer-fullscreen":t}),G(r,`role`,t?`dialog`:void 0),G(r,`aria-modal`,t?`true`:void 0),a=Vi(r,``,a,{"--conversation-panel-width":L(o)+`px`}),G(l,`aria-label`,e),G(l,`aria-valuemin`,L(s)),G(l,`aria-valuemax`,L(c)),G(l,`aria-valuenow`,L(o)),V(v,u),G(w,`aria-label`,d),G(w,`title`,f),ee=W(T,1,`live-dot`,null,ee,{"is-streaming":n.conversationFollowLatest}),G(ne,`aria-label`,p),G(ne,`title`,m),G(ne,`aria-pressed`,t)},[()=>Cd(),()=>Ed(),()=>n.conversationFollowLatest?kd():Md(),()=>n.conversationFollowLatest?Fd():Rd(),()=>t?Vd():Wd(),()=>t?qd():Xd()]),R(`pointerdown`,l,y),R(`pointermove`,l,b),R(`pointerup`,l,x),Br(`pointercancel`,l,x),Br(`lostpointercapture`,l,x),R(`keydown`,l,S),R(`click`,ne,()=>m(!t)),Oi(7,r,()=>p,()=>({fullscreen:t,revealWithoutSlide:!t&&L(u)})),B(e,r)}),B(e,t)};H(ee,e=>{n.conversationOpen&&e(te)}),B(e,T),O()}Vr([`pointerdown`,`pointermove`,`pointerup`,`keydown`,`click`]);var ree=z(`
                    `,1);function iee(e,t){D(t,!0);let n={overview:fW,usage:sK,budgets:Lq,"rate-limits":JJ,models:NQ,workflows:e0,"audit-logs":Y3,guardrails:H6,"mcp-servers":S8,"providers-config":j5,"auth-keys":T7,settings:j9};yk(),QD.init(),kk.init(),Y.init(),Da.init(),Oa.init(),kD.init(),kn(()=>{Y.refreshTick,lO.fetch(),Ak.fetchModels(),Ak.fetchCategories()}),kn(()=>{document.body.classList.toggle(`dashboard-modal-open`,ka.anyOpen)});let r=k(()=>n[kD.page]||fW);var i=ree(),a=P(i);gO(a,{});var o=F(a,2);let s;var c=N(o);JO(c,{}),gi(F(c,2),()=>L(r),(e,t)=>{t(e,{})}),E(o);var l=F(o,2);nee(l,{});var u=F(l,2);EO(u,{});var d=F(u,2);MO(d,{}),KO(F(d,2),{}),I(()=>s=W(o,1,`content`,null,s,{"interactions-open":i3.conversationOpen})),B(e,i),O()}ei(iee,{target:document.getElementById(`app`)}); \ No newline at end of file diff --git a/internal/admin/dashboard/static/dist/assets/index-o5upCDH8.css b/internal/admin/dashboard/static/dist/assets/index-o5upCDH8.css new file mode 100644 index 000000000..caf1c4dda --- /dev/null +++ b/internal/admin/dashboard/static/dist/assets/index-o5upCDH8.css @@ -0,0 +1 @@ +:root{--bg:#111110;--bg-surface:#1e1d1c;--bg-surface-hover:#2a2420;--border:#2a2826;--text:#e8e0d6;--text-muted:#9a918a;--accent:#b8956e;--accent-hover:#d4b896;--success:#34d399;--info:#3b82f6;--warning:#f59e0b;--danger:#ef4444;--prompt-cache-color:color-mix(in srgb, var(--info) 72%, #fff);--prompt-cache-color-bg:color-mix(in srgb, var(--token-prompt) 24%, var(--bg-surface));--cache-meter-uncached:var(--token-input);--cache-meter-local:var(--token-local);--cache-meter-prompt:var(--token-prompt);--token-input:#c0824a;--token-output:#ddb27a;--token-prompt:color-mix(in srgb, var(--info) 60%, transparent);--token-local:color-mix(in srgb, var(--info) 20%, transparent);--sidebar-width:240px;--radius:8px;--chart-grid:#2a2826;--chart-text:#9a918a;--chart-day-marker:var(--text);--chart-tooltip-bg:#1e1d1c;--chart-tooltip-border:#2a2826;--chart-tooltip-text:#e8e0d6;--cal-level-0:#161b22;--cal-level-1:color-mix(in srgb, var(--info) 15%, var(--bg-surface));--cal-level-2:color-mix(in srgb, var(--info) 25%, var(--bg-surface));--cal-level-3:color-mix(in srgb, var(--info) 36%, var(--bg-surface));--cal-level-4:color-mix(in srgb, var(--info) 48%, var(--bg-surface));--cal-level-5:color-mix(in srgb, var(--info) 60%, var(--bg-surface));--cal-level-6:color-mix(in srgb, var(--info) 73%, var(--bg-surface));--cal-level-7:color-mix(in srgb, var(--info) 87%, var(--bg-surface));--cal-level-8:var(--info);--cal-level-9:color-mix(in srgb, var(--info) 80%, #fff);--cal-level-10:color-mix(in srgb, var(--info) 62%, #fff);--alias-row-valid-bg:color-mix(in srgb, var(--bg-surface-hover) 86%, #fff 14%);--alias-row-valid-bg-hover:color-mix(in srgb, var(--bg-surface-hover) 72%, #fff 28%);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=light]{--bg:#f5f0ea;--bg-surface:#fff;--bg-surface-hover:#ece5dc;--border:#e8e0d6;--text:#2d2519;--text-muted:#7a7068;--accent:#755c3d;--accent-hover:#9a7d5a;--success:#34d399;--info:#2563eb;--warning:#d97706;--danger:#dc2626;--prompt-cache-color:color-mix(in srgb, var(--info) 84%, #0f172a);--prompt-cache-color-bg:color-mix(in srgb, var(--token-prompt) 18%, var(--bg-surface));--chart-grid:#e8e0d6;--chart-text:#7a7068;--chart-day-marker:var(--text);--chart-tooltip-bg:#fff;--chart-tooltip-border:#e8e0d6;--chart-tooltip-text:#2d2519;--cal-level-0:#ebedf0;--cal-level-1:color-mix(in srgb, var(--info) 12%, #fff);--cal-level-2:color-mix(in srgb, var(--info) 24%, #fff);--cal-level-3:color-mix(in srgb, var(--info) 37%, #fff);--cal-level-4:color-mix(in srgb, var(--info) 50%, #fff);--cal-level-5:color-mix(in srgb, var(--info) 64%, #fff);--cal-level-6:color-mix(in srgb, var(--info) 80%, #fff);--cal-level-7:var(--info);--cal-level-8:color-mix(in srgb, var(--info) 85%, #000);--cal-level-9:color-mix(in srgb, var(--info) 72%, #000);--cal-level-10:color-mix(in srgb, var(--info) 60%, #000);--alias-row-valid-bg:color-mix(in srgb, var(--bg-surface) 96%, var(--accent) 4%);--alias-row-valid-bg-hover:color-mix(in srgb, var(--bg-surface) 90%, var(--accent) 10%);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--bg:#f5f0ea;--bg-surface:#fff;--bg-surface-hover:#ece5dc;--border:#e8e0d6;--text:#2d2519;--text-muted:#7a7068;--accent:#755c3d;--accent-hover:#9a7d5a;--success:#34d399;--info:#2563eb;--warning:#d97706;--danger:#dc2626;--prompt-cache-color:color-mix(in srgb, var(--info) 84%, #0f172a);--prompt-cache-color-bg:color-mix(in srgb, var(--token-prompt) 18%, var(--bg-surface));--chart-grid:#e8e0d6;--chart-text:#7a7068;--chart-day-marker:var(--text);--chart-tooltip-bg:#fff;--chart-tooltip-border:#e8e0d6;--chart-tooltip-text:#2d2519;--cal-level-0:#ebedf0;--cal-level-1:color-mix(in srgb, var(--info) 12%, #fff);--cal-level-2:color-mix(in srgb, var(--info) 24%, #fff);--cal-level-3:color-mix(in srgb, var(--info) 37%, #fff);--cal-level-4:color-mix(in srgb, var(--info) 50%, #fff);--cal-level-5:color-mix(in srgb, var(--info) 64%, #fff);--cal-level-6:color-mix(in srgb, var(--info) 80%, #fff);--cal-level-7:var(--info);--cal-level-8:color-mix(in srgb, var(--info) 85%, #000);--cal-level-9:color-mix(in srgb, var(--info) 72%, #000);--cal-level-10:color-mix(in srgb, var(--info) 60%, #000);--alias-row-valid-bg:color-mix(in srgb, var(--bg-surface) 96%, var(--accent) 4%);--alias-row-valid-bg-hover:color-mix(in srgb, var(--bg-surface) 90%, var(--accent) 10%);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5}body.dashboard-modal-open{overflow:hidden}.app{height:100vh;min-height:0;display:flex;overflow:hidden}.badge{background:var(--accent);color:#fff;text-transform:uppercase;letter-spacing:.5px;border-radius:10px;padding:2px 8px;font-size:10px;font-weight:600}.auth-dialog{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);width:min(440px,100%);padding:22px;box-shadow:0 24px 70px #00000061}.auth-dialog-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:12px;display:flex}.auth-dialog h2{margin-top:2px;font-size:22px;line-height:1.2}.auth-dialog-close{background:var(--bg);border:1px solid var(--border);width:32px;min-width:32px;height:32px;color:var(--text-muted);cursor:pointer;font:inherit;border-radius:6px;flex:0 0 32px;justify-content:center;align-items:center;padding:0;line-height:1;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.auth-dialog-close:hover{color:var(--text);background:var(--bg-surface-hover)}.auth-dialog-close:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 36%, transparent);outline-offset:2px}.auth-dialog-hint{color:var(--text-muted);font-size:13px}.auth-dialog-error{color:var(--danger);font-size:13px;font-weight:600}.auth-dialog-form{gap:10px;margin-top:18px;display:grid}.auth-dialog-actions{justify-content:flex-end;gap:8px;margin-top:8px;display:flex}.content{-webkit-overflow-scrolling:touch;flex:1 1 0;width:100%;min-width:0;min-height:0;padding:32px;transition:width .2s;overflow-y:auto;container:dashboard-content/inline-size}.content>*{width:100%;max-width:1336px;margin-inline:auto}body.dashboard-modal-open .content{overflow-y:hidden}.content.interactions-open>*{max-width:none}.page-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.page-header h2{letter-spacing:-.3px;font-size:22px;font-weight:700}.page-header-controls{align-items:center;gap:12px;display:flex}.page-with-sticky-date{grid-template-columns:minmax(0,1fr) auto;align-items:start;column-gap:12px;display:grid}.page-with-sticky-date>*{grid-column:1/-1}.page-with-sticky-date>.date-range-page-header{grid-column:1}.page-with-sticky-date>.sticky-date-range{z-index:8;grid-column:2;justify-self:end;position:sticky;top:16px}.model-count{color:var(--text-muted);font-size:14px}.provider-status-section{margin-top:28px;scroll-margin-top:24px}.cards{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:28px;display:grid}.card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.card-label{text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);margin-bottom:8px;font-size:12px;font-weight:600}.card-value{letter-spacing:-.5px;font-size:28px;font-weight:700}.cache-meter{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:28px;padding:24px}.chart-container{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px}.chart-container h3{margin-bottom:16px;font-size:16px;font-weight:600}.chart-container-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.chart-container-header h3{margin-bottom:0}.chart-wrapper{height:210px;position:relative}.live-dot{background:var(--text-muted);border-radius:50%;flex-shrink:0;width:8px;height:8px}.live-dot.is-streaming{background:var(--success);position:relative}.live-dot.is-streaming:after{content:"";z-index:-1;background:color-mix(in srgb, var(--success) 55%, transparent);border-radius:50%;animation:1.8s ease-out infinite live-dot-pulse;position:absolute;inset:0}@media (prefers-reduced-motion:reduce){.live-dot.is-streaming:after{opacity:0;animation:none}}@keyframes live-dot-pulse{0%{opacity:1;transform:scale(1)}70%{opacity:0;transform:scale(2.5)}to{opacity:0;transform:scale(2.5)}}.alert{border-radius:var(--radius);margin-bottom:20px;padding:12px 16px;font-size:14px}.alert-warning{color:var(--warning);background:#f59e0b1a;border:1px solid #f59e0b4d}.table-toolbar{align-items:center;gap:12px;margin-bottom:16px;display:flex}.table-toolbar-main{flex:1;min-width:0}.table-toolbar-actions{justify-content:flex-end;margin-left:auto;display:flex}input:is([type=text],[type=date],[type=number]){background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text);outline:none;padding:8px 12px;font-family:inherit;font-size:13px}input:is([type=text],[type=date],[type=number]):focus{border-color:var(--accent)}input:is([type=text],[type=date],[type=number]):disabled,textarea:disabled,.form-input:disabled{opacity:.6;cursor:not-allowed}.table-wrapper{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.data-table{border-collapse:collapse;width:100%;font-size:14px}.data-table th{text-align:left;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);background:var(--bg);border-bottom:1px solid var(--border);padding:12px 16px;font-size:12px;font-weight:600}.data-table th.model-actions-header{text-align:right;white-space:nowrap;width:1%;min-width:156px}.data-table td{border-bottom:1px solid var(--border);padding:10px 16px}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:var(--bg-surface-hover)}.mono{font-family:SF Mono,Menlo,Consolas,monospace}.font-size-md{font-size:13px}.col-price,.data-table th.col-price{text-align:right}td.col-price{color:var(--text-muted);white-space:nowrap;font-family:SF Mono,Menlo,Consolas,monospace;font-size:13px}.provider-badge{background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:2px 10px;font-size:12px;font-weight:500;display:inline-block}.empty-state{text-align:center;color:var(--text-muted);padding:48px 0;font-size:14px}.empty-state-icon{width:auto;height:auto;max-height:160px;color:var(--text-muted);margin:0 auto;display:block}.empty-state-icon text{fill:var(--text-muted);font-family:inherit;font-weight:600}.chart-empty-overlay{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.chart-empty-overlay .empty-state-icon{width:auto;max-width:90%;height:auto;max-height:195px}.loading-spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:16px;height:16px;animation:.8s linear infinite loading-spin}@keyframes loading-spin{to{transform:rotate(360deg)}}.table-action-btn{background:var(--bg);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;gap:6px;padding:6px 12px;font-family:inherit;font-size:12px;font-weight:500;transition:all .15s;display:inline-flex}.table-action-btn:hover:not(:disabled){background:var(--bg-surface-hover)}.table-action-btn:disabled{opacity:.45;cursor:default}.table-action-btn-danger{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 50%, var(--border))}.table-action-btn-active{color:var(--accent-strong,var(--accent));background:color-mix(in srgb, var(--accent) 12%, var(--bg));border-color:color-mix(in srgb, var(--accent) 38%, var(--border))}.table-action-btn-active:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 18%, var(--bg-surface-hover))}.table-action-btn-failover-active{color:var(--info);background:color-mix(in srgb, var(--cache-meter-prompt) 35%, var(--bg));border-color:color-mix(in srgb, var(--info) 45%, var(--border));position:relative}.table-action-btn-failover-active:hover:not(:disabled){background:color-mix(in srgb, var(--cache-meter-prompt) 45%, var(--bg-surface-hover))}.table-icon-btn{border-radius:6px;gap:0;width:32px;min-width:32px;height:32px;padding:0}.table-icon-btn.table-action-btn-active{position:relative}.table-icon-btn.table-action-btn-active:after{content:"";background:var(--accent);width:6px;height:6px;box-shadow:0 0 0 2px var(--bg-surface);border-radius:999px;position:absolute;top:4px;right:4px}.table-icon-btn.table-action-btn-failover-active:after{content:"";background:var(--info);width:6px;height:6px;box-shadow:0 0 0 2px var(--bg-surface);border-radius:999px;position:absolute;top:4px;right:4px}.table-icon-svg{flex-shrink:0;width:14px;height:14px}.model-editor{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;padding:24px}.alias-kind-badge{border:1px solid var(--border);background:var(--bg);min-height:24px;color:var(--accent);letter-spacing:.2px;text-transform:uppercase;border-color:color-mix(in srgb, var(--accent) 55%, var(--border));border-radius:999px;justify-content:center;align-items:center;gap:4px;padding:0 10px;font-size:11px;font-weight:600;display:inline-flex}.form h3{font-size:20px;font-weight:700}.form-kicker,.form-hint{color:var(--text-muted);font-size:13px}.alias-actions-cell{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.model-list-actions{white-space:nowrap;flex-wrap:nowrap}.model-list-actions .table-icon-btn{flex:0 0 32px}.model-list-actions .alias-toggle{flex:none}.alias-toggle{border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:6px 10px;font-family:inherit;font-size:12px;transition:all .15s;display:inline-flex}.alias-toggle:hover:not(:disabled){background:var(--bg-surface-hover)}.alias-toggle:disabled{opacity:.45;cursor:default}.alias-toggle-track{background:color-mix(in srgb, var(--border) 80%, var(--bg));border-radius:6px;width:34px;height:18px;transition:background .15s;position:relative}.alias-toggle-thumb{background:var(--text-muted);border-radius:6px;width:16px;height:16px;transition:transform .15s,background .15s;position:absolute;top:1px;left:2px}.alias-toggle.enabled{border-color:color-mix(in srgb, var(--success) 50%, var(--border))}.alias-toggle.enabled .alias-toggle-track{background:color-mix(in srgb, var(--success) 55%, var(--bg))}.alias-toggle.enabled .alias-toggle-thumb{background:#fff;transform:translate(14px)}.alias-toggle.restricted{border-color:color-mix(in srgb, var(--accent) 50%, var(--border));color:color-mix(in srgb, var(--accent) 70%, var(--text))}.alias-toggle.restricted .alias-toggle-track{background:color-mix(in srgb, var(--accent) 55%, var(--bg))}.editor-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:20px;display:flex}.form{flex-direction:column;gap:16px;display:flex}.auth-key-editor{background:color-mix(in srgb, var(--bg-surface) 82%, var(--bg) 18%)}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.form-field{flex-direction:column;gap:8px;display:flex}.form-field-label{text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);font-size:12px;font-weight:600;display:inline-block}.vm-target-row{align-items:center;gap:8px;display:flex}.vm-target-row .vm-target-model{flex:auto;min-width:0}.vm-target-row .vm-target-weight{flex:0 0 88px;width:88px}.vm-status-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.vm-status-row .vm-status-toggle{margin-left:auto}.form-error{border:1px solid color-mix(in srgb, var(--danger) 42%, var(--border));border-radius:var(--radius);background:color-mix(in srgb, var(--danger) 10%, var(--bg-surface));color:var(--danger);overflow-wrap:anywhere;margin:0;padding:10px 12px;font-size:13px;font-weight:600;line-height:1.4}.form-error:empty{display:none}.form-field-error{color:var(--danger);overflow-wrap:anywhere;font-size:13px;font-weight:500;line-height:1.4}.form-field-required{color:var(--danger);margin-left:3px}:is(input,textarea,select)[aria-invalid=true]{border-color:color-mix(in srgb, var(--danger) 60%, var(--border))}:is(input,textarea,select)[aria-invalid=true]:focus{border-color:var(--danger)}textarea{resize:vertical;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;min-height:60px;color:var(--text);outline:none;padding:10px 12px;font-family:inherit;font-size:13px}textarea:focus{border-color:var(--accent)}.form-input{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;min-height:38px;color:var(--text);outline:none;padding:8px 10px;font-family:inherit;font-size:13px}.form-input:focus{border-color:var(--accent)}.form-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.failover-target-actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.data-table tr.alias-row.is-valid td{background:var(--alias-row-valid-bg)}.data-table tr.alias-row.is-valid:hover td{background:var(--alias-row-valid-bg-hover)}.data-table tr.alias-row:not(.is-valid) td{background:color-mix(in srgb, var(--accent) 10%, var(--bg-surface))}.data-table tr.alias-row:not(.is-valid):hover td{background:color-mix(in srgb, var(--accent) 16%, var(--bg-surface-hover))}.data-table tr.alias-row.is-disabled td{background:var(--bg-surface);opacity:.58}.data-table tr.alias-row.is-disabled:hover td{background:var(--bg-surface-hover);opacity:.72}.data-table tr.model-access-disabled-row td{background:color-mix(in srgb, var(--danger) 6%, var(--bg-surface))}.data-table tr.model-access-disabled-row:hover td{background:color-mix(in srgb, var(--danger) 10%, var(--bg-surface-hover))}.workflow-section-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.workflow-section-head h4{font-size:14px;font-weight:700}.workflow-preview{flex-direction:column;gap:12px;display:flex}.workflow-feature-toggles{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.workflow-feature-toggle{border:1px solid var(--border);background:var(--bg);border-radius:10px;align-items:center;gap:10px;padding:10px 12px;font-size:14px;font-weight:500;display:flex}.workflow-feature-toggle input{width:16px;height:16px}.model-chart-section{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:24px;padding:24px}.model-chart-section h3{margin:0;font-size:16px;font-weight:600}.model-chart-header{justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;display:flex}.bar-chart-wrap{width:100%;height:180px;position:relative}.form-select,.usage-log-select{appearance:none;background-color:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);cursor:pointer;background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - 17px),calc(100% - 12px);background-repeat:no-repeat;background-size:5px 5px;outline:none;min-width:140px;padding:8px 34px 8px 12px;font-family:inherit;font-size:13px}.form-select:disabled,.usage-log-select:disabled{cursor:not-allowed;opacity:.6}.form-select:focus,.usage-log-select:focus{border-color:var(--accent)}.form-select{width:100%;min-width:0}.usage-label-chips{flex-wrap:wrap;gap:4px;max-width:280px;display:inline-flex}.usage-label-chip{border:1px solid color-mix(in srgb, var(--label-color,var(--accent)) 45%, var(--border));background:color-mix(in srgb, var(--label-color,var(--accent)) 14%, var(--bg));min-height:20px;color:var(--text);white-space:nowrap;cursor:pointer;border-radius:999px;align-items:center;padding:1px 9px;font-family:inherit;font-size:11px;font-style:normal;font-weight:600;line-height:1.4;transition:background .15s,border-color .15s;display:inline-flex}.usage-label-chip:hover{background:color-mix(in srgb, var(--label-color,var(--accent)) 26%, var(--bg))}.usage-label-chip.active{background:color-mix(in srgb, var(--label-color,var(--accent)) 32%, var(--bg));border-color:var(--label-color,var(--accent));box-shadow:0 0 0 1px color-mix(in srgb, var(--label-color,var(--accent)) 55%, transparent)}@keyframes audit-live-summary-stripe-blink{0%,to{opacity:.9}50%{opacity:.28}}.audit-status-badge{border:1px solid var(--border);letter-spacing:.2px;background:var(--bg-surface);border-radius:999px;justify-content:center;align-items:center;min-width:46px;height:24px;padding:0 10px;font-size:12px;font-weight:600;display:inline-flex}.audit-status-badge.status-success{color:var(--success);border-color:color-mix(in srgb, var(--success) 50%, var(--border))}.audit-status-badge.status-warning{color:var(--warning);border-color:color-mix(in srgb, var(--warning) 50%, var(--border))}.audit-status-badge.status-error{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 50%, var(--border))}.audit-status-badge.status-neutral{color:var(--text-muted)}.audit-status-badge.status-unknown{color:var(--text-muted);border-color:color-mix(in srgb, var(--border) 75%, transparent)}.audit-pane{border:1px solid var(--border);background:var(--bg);border-top:0;border-radius:0 0 8px 8px;min-width:0;padding:12px}.audit-pane h5{text-transform:uppercase;letter-spacing:.4px;color:var(--text-muted);font-size:11px;font-weight:600}.audit-prompt-cache-pill{border:1px solid color-mix(in srgb, var(--prompt-cache-color) 45%, var(--border));background:var(--prompt-cache-color-bg);min-height:20px;color:var(--prompt-cache-color);letter-spacing:.02em;text-transform:none;border-radius:999px;align-items:center;padding:2px 8px;font-size:11px;font-weight:700;display:inline-flex}.audit-prompt-cache-highlight{color:var(--prompt-cache-color);font-weight:700}.audit-audio{white-space:normal;flex-direction:column;gap:8px;display:flex}.audit-audio-player{width:100%;max-width:420px;height:36px}.audit-audio-meta{color:var(--text-muted);font-size:12px}.audit-audio-empty{align-items:flex-start;padding:4px 0}.audit-audio-icon{font-size:20px;line-height:1}.audit-audio-note{color:var(--text-muted);font-size:12px}.audit-audio-metadata{flex-direction:column;gap:2px;margin-top:4px;font-size:12px;display:flex}.audit-audio-meta-row{gap:8px;display:flex}.audit-audio-meta-key{color:var(--text-muted);min-width:120px}.conversation-body-highlight{border-left:2px solid color-mix(in srgb, var(--accent) 70%, var(--border));background:color-mix(in srgb, var(--accent) 10%, transparent);cursor:pointer;line-height:inherit;border-radius:2px;margin:0 0 0 -2px;padding:0 0 0 2px;display:inline}.conversation-body-highlight:hover{background:color-mix(in srgb, var(--accent) 18%, transparent)}.conversation-body-highlight.conversation-system{border-left-color:color-mix(in srgb, var(--warning) 70%, var(--border));background:color-mix(in srgb, var(--warning) 10%, transparent)}.conversation-body-highlight.conversation-user{border-left-color:color-mix(in srgb, var(--accent) 75%, var(--border));background:color-mix(in srgb, var(--accent) 12%, transparent)}.conversation-body-highlight.conversation-assistant{border-left-color:color-mix(in srgb, var(--success) 65%, var(--border));background:color-mix(in srgb, var(--success) 10%, transparent)}#interactions-drawer-content{flex:1;min-height:0;overflow-y:auto}.pagination{justify-content:space-between;align-items:center;padding:12px 0 0;display:flex}.btn{background:var(--bg);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:6px;padding:6px 16px;font-family:inherit;font-size:13px;transition:all .15s}.btn:hover:not(:disabled){background:var(--bg-surface-hover)}.btn-primary{background:var(--accent);border-color:color-mix(in srgb, var(--accent) 70%, #000 10%);color:#fff;font-weight:600;box-shadow:0 10px 22px #3b82f62e}.btn-primary:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 90%, #fff 10%);border-color:color-mix(in srgb, var(--accent) 78%, #000 12%)}.btn-danger-outline{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 55%, var(--border));background:0 0;font-weight:600}.btn-danger-outline:hover:not(:disabled){background:color-mix(in srgb, var(--danger) 10%, var(--bg));border-color:color-mix(in srgb, var(--danger) 75%, var(--border))}.btn-danger{color:#fff;border-color:color-mix(in srgb, var(--danger) 76%, #000 12%);background:var(--danger);box-shadow:0 10px 22px color-mix(in srgb, var(--danger) 20%, transparent);font-weight:600}.btn-danger:hover:not(:disabled){background:color-mix(in srgb, var(--danger) 90%, #fff 10%);border-color:color-mix(in srgb, var(--danger) 82%, #000 14%)}.btn-with-icon{justify-content:center;align-items:center;gap:8px;display:inline-flex}.btn-with-icon .table-icon-svg{width:16px;height:16px}.btn:disabled{opacity:.4;cursor:default}.settings-panel{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px}.inline-help-section{flex-direction:column;gap:2px;display:flex}.inline-help-title-row{align-items:center;gap:10px;display:inline-flex}.inline-help-title-row h2,.inline-help-title-row h3{margin-bottom:0}.inline-help-title-row h2:empty,.inline-help-title-row h3:empty{display:none}.inline-help-toggle{border:1px solid color-mix(in srgb, var(--accent) 28%, var(--border));width:16px;height:16px;color:var(--accent);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:4px;justify-content:center;align-items:center;padding:0;transition:color .18s,border-color .18s;display:inline-flex;position:relative}.inline-help-toggle:before{content:"";pointer-events:auto;background:0 0;width:32px;height:32px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.inline-help-toggle:hover{border-color:color-mix(in srgb, var(--accent) 48%, var(--border));color:var(--text);background:0 0}.inline-help-toggle:active{background:0 0}.inline-help-toggle:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 28%, transparent);outline-offset:2px}.inline-help-toggle-icon{justify-content:center;align-items:center;width:100%;height:100%;padding-bottom:1px;font-size:13px;font-weight:700;line-height:1;transition:transform .52s cubic-bezier(.22,.72,.12,1);display:inline-flex;transform:rotate(0)}.inline-help-copy{max-width:780px;color:var(--text-muted);margin-top:2px;font-size:14px}.settings-select{width:100%}.settings-refresh-section{border-top:1px solid var(--border);justify-items:start;gap:12px;margin-top:24px;padding-top:22px;display:grid}.settings-refresh-section h3{font-size:18px}.settings-refresh-section p{max-width:720px;color:var(--text-muted);font-size:14px;line-height:1.55}.budget-list{gap:10px;padding:10px 0;display:grid}.budget-row{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);grid-template-columns:minmax(0,1fr);align-items:center;gap:16px;padding:12px 14px;display:grid}.budget-row-main{min-width:0}.budget-row-head{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:10px;min-width:0;display:grid}.budget-scope-value{width:fit-content;max-width:100%;min-height:24px;color:var(--text);text-overflow:ellipsis;white-space:nowrap;border-radius:6px;justify-self:start;align-items:center;gap:5px;padding:2px 8px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:12px;display:inline-flex;overflow:hidden}.budget-user-path{border:1px solid color-mix(in srgb, var(--accent) 32%, var(--border));background:color-mix(in srgb, var(--accent) 9%, var(--bg))}.budget-label{border:1px solid color-mix(in srgb, var(--label-color,var(--accent)) 45%, var(--border));background:color-mix(in srgb, var(--label-color,var(--accent)) 14%, var(--bg))}.budget-scope-icon{stroke-width:2.2px;opacity:.85;flex:0 0 12px;width:12px;height:12px}.budget-row-meta{min-width:0;color:var(--text-muted);align-items:center;gap:8px;font-size:12px;display:inline-flex}.budget-source{border:1px solid var(--border);background:var(--bg);color:var(--text-muted);border-radius:999px;padding:2px 7px;font-size:11px}.budget-row-period{justify-content:center;min-width:0;display:flex}.budget-row-controls{justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex}.budget-bars{gap:6px;margin-top:10px;display:grid}.budget-bar-line{grid-template-columns:118px minmax(0,1fr);align-items:center;gap:10px;display:grid}.budget-bar-label{color:var(--text-muted);justify-content:space-between;align-items:center;gap:6px;font-size:11px;line-height:1;display:flex}.budget-bar-percent{font-weight:700}.budget-bar-track{background:color-mix(in srgb, var(--border) 75%, var(--bg));border-radius:999px;height:16px;position:relative;overflow:hidden}.budget-bar-fill{border-radius:inherit;min-width:0;height:100%;transition:width .2s}.budget-bar-fill-usage{background:color-mix(in srgb, var(--success) 82%, var(--accent))}.budget-bar-fill-danger{background:var(--danger)}.budget-bar-text-row{z-index:1;pointer-events:none;color:var(--text);position:absolute;inset:0}.budget-bar-text{text-overflow:ellipsis;white-space:nowrap;max-width:min(44%,190px);font-size:11px;font-weight:700;line-height:12px;position:absolute;top:50%;overflow:hidden}.budget-bar-text-center{max-width:min(46%,240px);left:50%;transform:translate(-50%,-50%)}.budget-bar-text-end{text-align:right;max-width:min(34%,180px);right:8px;transform:translateY(-50%)}.budget-period-label{border:1px solid var(--border);color:var(--text);white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;gap:5px;padding:2px 7px;font-size:11px;font-weight:600;display:inline-flex}.budget-period-icon{stroke-width:2.2px;flex:0 0 12px;width:12px;height:12px}.budget-period-label-monthly{border-color:color-mix(in srgb, #30302c 62%, var(--border));background:color-mix(in srgb, #30302c 12%, var(--bg));color:color-mix(in srgb, #30302c 34%, var(--text) 66%)}.budget-period-label-weekly{border-color:color-mix(in srgb, #68765c 62%, var(--border));background:color-mix(in srgb, #68765c 12%, var(--bg));color:color-mix(in srgb, #68765c 34%, var(--text) 66%)}.budget-period-label-daily{border-color:color-mix(in srgb, #b5652d 62%, var(--border));background:color-mix(in srgb, #b5652d 12%, var(--bg));color:color-mix(in srgb, #b5652d 34%, var(--text) 66%)}.budget-period-label-hourly{border-color:color-mix(in srgb, #783f22 62%, var(--border));background:color-mix(in srgb, #783f22 12%, var(--bg));color:color-mix(in srgb, #783f22 34%, var(--text) 66%)}.budget-period-label-custom{border-style:dashed;border-color:color-mix(in srgb, #bfa584 68%, var(--border));background:color-mix(in srgb, #bfa584 16%, var(--bg));color:color-mix(in srgb, #8b6f4f 34%, var(--text) 66%)}[data-theme=light] .budget-period-label-monthly{color:#30302c}[data-theme=light] .budget-period-label-weekly{color:#68765c}[data-theme=light] .budget-period-label-daily{color:#b5652d}[data-theme=light] .budget-period-label-hourly{color:#783f22}[data-theme=light] .budget-period-label-custom{color:#8b6f4f}@media (prefers-color-scheme:light){:root:not([data-theme=dark]) .budget-period-label-monthly{color:#30302c}:root:not([data-theme=dark]) .budget-period-label-weekly{color:#68765c}:root:not([data-theme=dark]) .budget-period-label-daily{color:#b5652d}:root:not([data-theme=dark]) .budget-period-label-hourly{color:#783f22}:root:not([data-theme=dark]) .budget-period-label-custom{color:#8b6f4f}}.budget-row-actions{flex-flow:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.budget-action-btn{white-space:nowrap;justify-content:center;gap:0;width:28px;min-width:0;height:28px;padding:0;transition:width .18s,border-color .15s,background .15s,color .15s;overflow:hidden}.budget-action-btn:hover,.budget-action-btn:focus-visible{gap:6px;width:82px;padding:0 9px}.budget-action-label{opacity:0;max-width:0;transition:max-width .18s,opacity .12s;overflow:hidden}.budget-action-btn:hover .budget-action-label,.budget-action-btn:focus-visible .budget-action-label{opacity:1;max-width:58px}.budget-action-btn-warning{color:var(--warning);border-color:color-mix(in srgb, var(--warning) 50%, var(--border))}.budget-action-icon{flex:0 0 14px;width:14px;height:14px}.budget-editor{background:color-mix(in srgb, var(--bg-surface) 86%, var(--bg) 14%)}.budget-settings-actions{flex-wrap:wrap;gap:10px;display:flex}.budget-reset-dialog{max-width:460px}.form-action-icon{flex:0 0 16px;width:16px;height:16px}.settings-refresh-alert{margin-top:16px;margin-bottom:0}@media (width<=768px){.badge{display:none}.content{width:100%;margin:0 auto;padding:20px}.auth-dialog{padding:18px}.auth-dialog-actions{flex-direction:column-reverse}.auth-dialog-actions .btn{width:100%}.cards{grid-template-columns:repeat(2,1fr)}.page-header{flex-wrap:wrap;gap:12px}.page-header h2{width:100%}.page-header-controls{flex-wrap:wrap;justify-content:space-between;width:100%}.page-with-sticky-date{grid-template-columns:minmax(0,1fr)}.page-with-sticky-date>.date-range-page-header,.page-with-sticky-date>.sticky-date-range{grid-column:1}.page-with-sticky-date>.date-range-page-header{margin-bottom:12px}.page-with-sticky-date>.sticky-date-range{width:100%;margin-bottom:24px;top:10px}.sticky-date-range .date-picker-trigger{justify-content:space-between;width:100%}.usage-log-select{min-width:0}.budget-row{grid-template-columns:1fr}.budget-row-controls{flex-wrap:wrap}.budget-bar-line{grid-template-columns:1fr;gap:5px}.form-grid,.workflow-feature-toggles{grid-template-columns:1fr}.workflow-section-head{flex-direction:column;align-items:flex-start}.table-toolbar{flex-direction:column;align-items:stretch}.table-toolbar-actions{justify-content:stretch;margin-left:0}.table-toolbar-actions .btn{width:100%}.model-editor{padding:16px}.alias-actions-cell,.editor-header{flex-direction:column;align-items:flex-start}.alias-actions-cell .table-action-btn,.editor-header .table-action-btn{width:100%}.alias-actions-cell .table-icon-btn,.editor-header .table-icon-btn{width:36px}.model-list-actions{flex-flow:row;align-items:center}.model-list-actions .table-action-btn{width:auto}.model-list-actions .table-icon-btn{flex-basis:32px;width:32px}.model-editor .editor-header{flex-direction:row;align-items:flex-start}.model-editor .editor-header>:first-child{flex:1;min-width:0}.model-editor .editor-header .dialog-close-btn{flex:0 0 32px;align-self:flex-start;width:32px;min-width:32px}.settings-panel{padding:18px}.budget-settings-actions,.budget-settings-actions .btn{width:100%}}.workflow-conn{background:color-mix(in srgb, var(--accent) 44%, var(--border));flex:1 1 0;width:auto;min-width:13px;height:2px;position:relative}.workflow-conn:after{content:"";background:color-mix(in srgb, var(--accent) 44%, var(--border));clip-path:polygon(0 0,100% 50%,0 100%);width:7px;height:9px;position:absolute;top:50%;right:-1px;transform:translateY(-50%)}.workflow-node{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-surface);text-align:center;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;gap:4px;min-width:72px;padding:8px 12px;display:flex}.auth-key-description{color:var(--text-muted);max-width:220px;font-size:13px}.auth-key-status-badge{border-radius:999px;padding:2px 10px;font-size:12px;font-weight:600;display:inline-block}.auth-key-status-active{background:color-mix(in srgb, var(--success) 12%, var(--bg));border:1px solid color-mix(in srgb, var(--success) 30%, var(--border));color:var(--success)}.auth-key-status-inactive{background:color-mix(in srgb, var(--danger) 10%, var(--bg));border:1px solid color-mix(in srgb, var(--danger) 30%, var(--border));color:var(--danger)}.mcp-server-advanced{border:1px solid var(--border);border-radius:var(--radius);background:color-mix(in srgb, var(--bg-surface) 72%, var(--bg) 28%);overflow:hidden}.mcp-server-advanced>summary{color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;list-style:none;display:flex}.mcp-server-advanced>summary::-webkit-details-marker{display:none}.mcp-server-advanced>summary:after{border-right:2px solid var(--text-muted);border-bottom:2px solid var(--text-muted);content:"";flex:none;width:7px;height:7px;transition:transform .15s;transform:rotate(45deg)}.mcp-server-advanced[open]>summary:after{transform:rotate(225deg)}.mcp-server-advanced-summary-copy{flex-direction:column;gap:2px;min-width:0;display:flex}.mcp-server-advanced-title{font-size:13px;font-weight:600}.mcp-server-advanced-fields{border-top:1px solid var(--border);flex-direction:column;gap:16px;padding:14px;display:flex}.copy-feedback-btn{align-items:center;gap:6px;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}.copy-feedback-btn-copied{background:color-mix(in srgb, var(--success) 12%, var(--bg));border-color:color-mix(in srgb, var(--success) 40%, var(--border));color:var(--success)}.rate-limit-pressure-row{background-image:linear-gradient(to right, color-mix(in srgb, var(--success) 16%, transparent) var(--rate-limit-pressure,0%), transparent var(--rate-limit-pressure,0%))}.rate-limit-pressure-row.rate-limit-pressure-high{background-image:linear-gradient(to right, color-mix(in srgb, var(--warning) 20%, transparent) var(--rate-limit-pressure,0%), transparent var(--rate-limit-pressure,0%))}.rate-limit-pressure-row.rate-limit-pressure-full{background-image:linear-gradient(to right, color-mix(in srgb, var(--danger) 22%, transparent) var(--rate-limit-pressure,0%), transparent var(--rate-limit-pressure,0%))}.table-icon-btn.rate-limit-gauge-inherited{color:var(--accent-strong,var(--accent));background:linear-gradient(to right, color-mix(in srgb, var(--accent) 22%, var(--bg)) 50%, var(--bg) 50%);border-color:color-mix(in srgb, var(--accent) 30%, var(--border))}.auth-dialog-input-icon{width:16px;height:16px;color:var(--text-muted);pointer-events:none;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.auth-dialog-input-shell:focus-within .auth-dialog-input-icon{color:var(--accent)}.auth-dialog-submit-icon{flex:0 0 16px;width:16px;height:16px}.nav-icon{flex:0 0 18px;width:18px;height:18px}.api-key-open-icon{flex:0 0 15px;width:15px;height:15px}.theme-icon{flex:0 0 14px;width:14px;height:14px}.theme-toggle-mobile .theme-icon{flex-basis:16px;width:16px;height:16px}@media (width<=768px){.sidebar-footer .api-key-open-icon{flex-basis:16px;width:16px;height:16px}}.failover-drafts-loading{min-height:96px}.models-loading-state{top:16px;left:var(--sidebar-width);z-index:110;pointer-events:none;--loading-state-min-height:0;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-surface);width:fit-content;box-shadow:0 8px 24px color-mix(in srgb, var(--bg) 70%, transparent);margin:0 auto;padding:10px 14px;position:fixed;right:0}@media (width<=768px){.models-loading-state{left:60px}}.sidebar.sidebar-collapsed~.content .models-loading-state{left:60px}.alias-create-icon{flex:0 0 16px;width:16px;height:16px}.pricing-override-remove-row{margin-bottom:1px}@media (width<=768px){.pricing-override-remove-row{margin-bottom:0}}.pricing-recalculate-dialog{max-width:480px}.settings-refresh-btn.is-refreshing .settings-refresh-icon{transform-origin:50%;animation:.8s linear infinite loading-spin}.cost-source-icon{width:14px;height:14px;color:var(--success);cursor:help;vertical-align:-2px;stroke-width:2px;margin-left:4px}.cache-savings-icon{width:14px;height:14px;color:var(--accent);cursor:help;vertical-align:-2px;stroke-width:2px;margin-left:4px}.theme-toggle.svelte-1keql7b{background:var(--bg);border:1px solid var(--border);border-radius:6px;align-items:center;margin-bottom:10px;padding:2px;display:inline-flex}.theme-btn.svelte-1keql7b{width:28px;height:24px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;transition:all .15s;display:flex}.theme-btn.svelte-1keql7b:hover{color:var(--text)}.theme-btn.active.svelte-1keql7b{background:var(--accent);color:#fff}.theme-btn.svelte-1keql7b:focus-visible,.theme-toggle-mobile.svelte-1keql7b:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 36%, transparent);outline-offset:2px}.theme-toggle-mobile.svelte-1keql7b{background:var(--bg);border:1px solid var(--border);width:36px;height:36px;color:var(--text-muted);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;transition:all .15s;display:none}.theme-toggle-mobile.svelte-1keql7b:hover{color:var(--text)}.theme-toggle.is-compact.svelte-1keql7b{display:none}.theme-toggle-mobile.is-compact.svelte-1keql7b{margin:0 auto;display:flex}@media (width<=768px){.theme-toggle.svelte-1keql7b{display:none}.theme-toggle-mobile.svelte-1keql7b{margin:0 auto;display:flex}}.sidebar.svelte-1nwtzae{flex:0 0 var(--sidebar-width);width:var(--sidebar-width);background:var(--bg-surface);border-right:1px solid var(--border);-webkit-overflow-scrolling:touch;z-index:10;flex-direction:column;max-height:100vh;transition:flex-basis .2s,width .2s;display:flex;position:sticky;top:0;overflow:hidden auto}.sidebar.sidebar-resizing.svelte-1nwtzae{transition:none}.sidebar-header.svelte-1nwtzae{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:20px;display:flex}.sidebar-logo.svelte-1nwtzae{width:28px;height:28px;color:var(--accent);flex-shrink:0}.sidebar-logo.svelte-1nwtzae svg{width:100%;height:100%}.sidebar-header.svelte-1nwtzae h1{letter-spacing:-.3px;font-size:18px;font-weight:700}.sidebar-nav.svelte-1nwtzae{flex-direction:column;flex:1;gap:4px;padding:12px;display:flex}.nav-item.svelte-1nwtzae{border-radius:var(--radius);color:var(--text-muted);align-items:center;gap:10px;padding:8px 12px;font-size:14px;font-weight:500;text-decoration:none;transition:all .15s;display:flex}.nav-item.svelte-1nwtzae:hover{background:var(--bg-surface-hover);color:var(--text)}.nav-item.active.svelte-1nwtzae{background:var(--accent);color:#fff}.nav-label.svelte-1nwtzae{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.sidebar-footer.svelte-1nwtzae{border-top:1px solid var(--border);padding:16px}.api-key-section.svelte-1nwtzae{gap:8px;display:grid}.external-auth-section.svelte-1nwtzae{gap:8px;margin-top:8px;display:grid}.external-auth-user.svelte-1nwtzae{min-width:0;color:var(--text-muted);align-items:center;gap:8px;font-size:12px;display:flex}.external-auth-user.svelte-1nwtzae span:where(.svelte-1nwtzae){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.api-key-open-btn.svelte-1nwtzae{border:1px solid var(--accent);border-radius:var(--radius);width:100%;color:var(--accent);cursor:pointer;background:0 0;justify-content:center;align-items:center;gap:8px;padding:8px 10px;font-family:inherit;font-size:13px;font-weight:600;transition:background-color .15s,border-color .15s;display:inline-flex}.api-key-open-btn.svelte-1nwtzae:hover{background:color-mix(in srgb, var(--accent) 10%, transparent);border-color:color-mix(in srgb, var(--accent) 78%, var(--text));color:color-mix(in srgb, var(--accent) 78%, var(--text))}.api-key-open-btn.svelte-1nwtzae:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 36%, transparent);outline-offset:2px}.sidebar-toggle.svelte-1nwtzae{cursor:ew-resize;z-index:11;background:0 0;border:none;flex:0 0 6px;width:6px;height:100vh;padding:0;transition:background .15s;position:sticky;top:0}.sidebar-toggle.svelte-1nwtzae:hover{background:color-mix(in srgb, var(--accent) 15%, transparent)}.sidebar-toggle.svelte-1nwtzae:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 36%, transparent);outline-offset:2px}body.sidebar-resizing{cursor:ew-resize;-webkit-user-select:none;user-select:none}.sidebar.sidebar-collapsed.svelte-1nwtzae .sidebar-header:where(.svelte-1nwtzae){justify-content:center;padding:16px}.sidebar.sidebar-collapsed.svelte-1nwtzae .sidebar-header:where(.svelte-1nwtzae) h1,.sidebar.sidebar-collapsed.svelte-1nwtzae .badge{display:none}.sidebar.sidebar-collapsed.svelte-1nwtzae .sidebar-nav:where(.svelte-1nwtzae) .nav-item:where(.svelte-1nwtzae){justify-content:center;padding:10px}.sidebar.sidebar-collapsed.svelte-1nwtzae .sidebar-nav:where(.svelte-1nwtzae) .nav-label:where(.svelte-1nwtzae){display:none}.sidebar.sidebar-collapsed.svelte-1nwtzae .sidebar-footer:where(.svelte-1nwtzae){padding:8px}.sidebar.sidebar-collapsed.svelte-1nwtzae .sidebar-footer:where(.svelte-1nwtzae) .api-key-section:where(.svelte-1nwtzae),.sidebar.sidebar-collapsed.svelte-1nwtzae .sidebar-footer:where(.svelte-1nwtzae) .external-auth-section:where(.svelte-1nwtzae){display:none}@media (width<=768px){.sidebar.svelte-1nwtzae{flex-basis:60px;width:60px}.sidebar-header.svelte-1nwtzae{justify-content:center;padding:16px}.sidebar-header.svelte-1nwtzae h1{display:none}.sidebar-nav.svelte-1nwtzae .nav-item:where(.svelte-1nwtzae){justify-content:center;padding:10px}.sidebar-nav.svelte-1nwtzae .nav-item:where(.svelte-1nwtzae) .nav-label:where(.svelte-1nwtzae){display:none}.sidebar-footer.svelte-1nwtzae{gap:8px;padding:8px;display:grid}.sidebar-footer.svelte-1nwtzae .api-key-section:where(.svelte-1nwtzae),.sidebar-footer.svelte-1nwtzae .external-auth-section:where(.svelte-1nwtzae),.sidebar.sidebar-collapsed.svelte-1nwtzae .sidebar-footer:where(.svelte-1nwtzae) .external-auth-section:where(.svelte-1nwtzae){display:grid}.sidebar-footer.svelte-1nwtzae .external-auth-user:where(.svelte-1nwtzae){display:none}.sidebar.sidebar-collapsed.svelte-1nwtzae .sidebar-footer:where(.svelte-1nwtzae) .api-key-section:where(.svelte-1nwtzae){display:grid}.sidebar-footer.svelte-1nwtzae .api-key-open-btn:where(.svelte-1nwtzae){justify-self:center;width:36px;height:36px;min-height:36px;padding:0}.sidebar-footer.svelte-1nwtzae .api-key-open-btn:where(.svelte-1nwtzae) span,.sidebar-toggle.svelte-1nwtzae{display:none}}.dialog-close-btn.svelte-11l1bb5{background:var(--bg);border:1px solid var(--border);width:32px;min-width:32px;height:32px;color:var(--text-muted);cursor:pointer;font:inherit;border-radius:6px;flex:0 0 32px;justify-content:center;align-items:center;padding:0;line-height:1;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.dialog-close-btn.svelte-11l1bb5:hover{color:var(--text);background:var(--bg-surface-hover)}.dialog-close-btn.svelte-11l1bb5:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 36%, transparent);outline-offset:2px}.auth-dialog-backdrop.svelte-17e0w4c,.editor-modal-backdrop.svelte-17e0w4c{z-index:80;background:#0000007a;position:fixed;inset:0}.auth-dialog-shell.svelte-17e0w4c{z-index:90;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.editor-modal-shell.svelte-17e0w4c{z-index:90;place-items:center;padding:20px;display:grid;position:fixed;inset:0;overflow-y:auto}.editor-modal-shell.svelte-17e0w4c>*{overscroll-behavior:contain;width:min(760px,100%);max-height:min(100vh - 40px,960px);margin:0;overflow:auto;box-shadow:0 24px 70px #00000061}@media (width<=768px){.auth-dialog-shell.svelte-17e0w4c,.editor-modal-shell.svelte-17e0w4c{align-items:end;padding:12px}.editor-modal-shell.svelte-17e0w4c>*{max-height:calc(100vh - 24px)}}.external-login-btn.svelte-1dsu6u0{justify-content:center;width:100%;text-decoration:none}.auth-dialog-separator.svelte-1dsu6u0{color:var(--text-muted);align-items:center;gap:10px;font-size:12px;display:flex}.auth-dialog-separator.svelte-1dsu6u0:before,.auth-dialog-separator.svelte-1dsu6u0:after{content:"";border-top:1px solid var(--border);flex:1}.auth-dialog-input-shell.svelte-1dsu6u0{position:relative}.auth-dialog-input.svelte-1dsu6u0{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text);outline:none;padding:11px 12px 11px 38px;font-family:inherit;font-size:14px}.auth-dialog-input.svelte-1dsu6u0:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent)}.flash-region.svelte-1i257xg{top:16px;left:var(--sidebar-width);z-index:120;pointer-events:none;flex-direction:column;align-items:center;gap:10px;display:flex;position:fixed;right:0}.sidebar.sidebar-collapsed~.flash-region.svelte-1i257xg{left:60px}@media (width<=768px){.flash-region.svelte-1i257xg{left:60px}}.flash-toast.svelte-1i257xg{border-radius:var(--radius);pointer-events:auto;align-items:flex-start;gap:10px;width:max-content;max-width:min(480px,100% - 32px);padding:12px 12px 12px 16px;font-size:14px;animation:.9s ease-out svelte-1i257xg-flash-toast-glow;display:flex;box-shadow:0 10px 30px #00000059}@keyframes svelte-1i257xg-flash-toast-glow{0%{box-shadow:0 0 0 4px color-mix(in srgb, currentColor 45%, transparent), 0 10px 30px #00000059}to{box-shadow:0 0 0 4px #0000,0 10px 30px #00000059}}@media (prefers-reduced-motion:reduce){.flash-toast.svelte-1i257xg{animation:none}}.flash-toast-success.svelte-1i257xg{background:color-mix(in srgb, var(--success) 14%, var(--bg-surface));color:var(--success);border:1px solid #34d39959}.flash-toast-error.svelte-1i257xg{background:color-mix(in srgb, var(--warning) 14%, var(--bg-surface));color:var(--warning);border:1px solid #f59e0b66}.flash-toast-text.svelte-1i257xg{overflow-wrap:anywhere;flex:1;min-width:0}.flash-toast-dismiss.svelte-1i257xg{color:inherit;cursor:pointer;opacity:.7;background:0 0;border:0;flex-shrink:0;padding:0 2px;font-size:18px;line-height:1}.flash-toast-dismiss.svelte-1i257xg:hover{opacity:1}.demo-mode-banner.svelte-1s3mcn8{border:1px solid color-mix(in srgb, var(--warning) 55%, var(--border));border-radius:var(--radius);background:color-mix(in srgb, var(--warning) 14%, var(--bg-surface));color:var(--text);box-shadow:0 8px 24px color-mix(in srgb, var(--bg) 70%, transparent);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;margin-bottom:24px;padding:12px 16px;display:grid}.demo-mode-banner-icon.svelte-1s3mcn8{width:20px;height:20px;color:var(--warning);flex:0 0 20px}.demo-mode-banner-copy.svelte-1s3mcn8{align-items:baseline;gap:8px;min-width:0;font-size:13px;display:flex}.demo-mode-banner.svelte-1s3mcn8 strong{color:var(--warning);letter-spacing:.06em;text-transform:uppercase;flex-shrink:0;font-size:12px}.demo-mode-banner-links.svelte-1s3mcn8{justify-content:flex-end;align-items:center;gap:6px;display:flex}.demo-mode-banner-links.svelte-1s3mcn8 a{border:1px solid color-mix(in srgb, var(--warning) 42%, var(--border));border-radius:var(--radius);min-height:28px;color:var(--text);white-space:nowrap;align-items:center;padding:4px 8px;font-size:12px;font-weight:600;line-height:1;text-decoration:none;display:inline-flex}.demo-mode-banner-links.svelte-1s3mcn8 a:hover{border-color:var(--warning);background:color-mix(in srgb, var(--warning) 16%, transparent);color:var(--text)}.demo-mode-banner-links.svelte-1s3mcn8 a:focus-visible{outline:2px solid color-mix(in srgb, var(--warning) 42%, transparent);outline-offset:2px}@media (width<=768px){.demo-mode-banner.svelte-1s3mcn8{grid-template-columns:auto minmax(0,1fr);align-items:flex-start}.demo-mode-banner-copy.svelte-1s3mcn8{gap:2px;display:grid}.demo-mode-banner-links.svelte-1s3mcn8{flex-wrap:wrap;grid-column:2;justify-content:flex-start}}.auth-banner.svelte-1c5yh36{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.dp-calendar.svelte-g7ga4u{flex-shrink:0;width:224px}.dp-cal-header.svelte-g7ga4u{justify-content:space-between;align-items:center;margin-bottom:8px;padding:0 4px;display:flex}.dp-cal-title.svelte-g7ga4u{font-size:13px;font-weight:600}.dp-nav-btn.svelte-g7ga4u{width:28px;height:28px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;transition:all .15s;display:flex}.dp-nav-btn.svelte-g7ga4u:hover{background:var(--bg-surface-hover);color:var(--text)}.dp-nav-btn.svelte-g7ga4u:disabled{opacity:.3;cursor:default;pointer-events:none}.dp-nav-prev-mobile.svelte-g7ga4u{display:none}.dp-weekdays.svelte-g7ga4u{text-align:center;grid-template-columns:repeat(7,1fr);margin-bottom:4px;display:grid}.dp-weekdays.svelte-g7ga4u span:where(.svelte-g7ga4u){color:var(--text-muted);padding:4px 0;font-size:11px;font-weight:600}.dp-days.svelte-g7ga4u{grid-template-columns:repeat(7,1fr);gap:1px;display:grid}.dp-day.svelte-g7ga4u{width:32px;height:32px;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;font-family:inherit;font-size:12px;transition:all .1s;display:flex}.dp-day.svelte-g7ga4u:hover:not(.disabled):not(.other-month){background:var(--bg-surface-hover)}.dp-day.other-month.svelte-g7ga4u{color:var(--text-muted);opacity:.3;cursor:default}.dp-day.today.svelte-g7ga4u{color:var(--accent);box-shadow:inset 0 0 0 1.5px var(--accent);font-weight:700}.dp-day.in-range.svelte-g7ga4u{background:color-mix(in srgb, var(--accent) 15%, transparent);border-radius:0}.dp-day.range-start.svelte-g7ga4u{background:var(--accent);color:#fff;border-radius:6px 0 0 6px;font-weight:600}.dp-day.range-end.svelte-g7ga4u{background:var(--accent);color:#fff;border-radius:0 6px 6px 0;font-weight:600}.dp-day.range-start.range-end.svelte-g7ga4u{border-radius:6px}.dp-day.range-start.today.svelte-g7ga4u,.dp-day.range-end.today.svelte-g7ga4u{box-shadow:none}.dp-day.disabled.svelte-g7ga4u{color:var(--text-muted);opacity:.3;cursor:default;pointer-events:none}@media (width<=768px){.dp-nav-prev-mobile.svelte-g7ga4u{display:flex}}.date-picker.svelte-ax7ma4{position:relative}.date-picker-trigger.svelte-ax7ma4{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);cursor:pointer;white-space:nowrap;align-items:center;gap:8px;padding:8px 12px;font-family:inherit;font-size:13px;transition:all .15s;display:inline-flex}.date-picker-trigger.svelte-ax7ma4:hover{background:var(--bg-surface-hover)}.date-picker-trigger.svelte-ax7ma4 svg:where(.svelte-ax7ma4){color:var(--text-muted);flex-shrink:0}.date-picker-chevron.svelte-ax7ma4{transition:transform .15s}.date-picker-chevron.open.svelte-ax7ma4{transform:rotate(180deg)}.date-picker-dropdown.svelte-ax7ma4{z-index:100;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);display:flex;position:absolute;top:calc(100% + 6px);right:0;overflow:hidden;box-shadow:0 8px 24px #00000040}.date-picker-presets.svelte-ax7ma4{border-right:1px solid var(--border);flex-direction:column;gap:2px;min-width:140px;padding:8px;display:flex}.preset-btn.svelte-ax7ma4{color:var(--text);text-align:left;cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;padding:8px 12px;font-family:inherit;font-size:13px;transition:all .15s}.preset-btn.svelte-ax7ma4:hover{background:var(--bg-surface-hover)}.preset-btn.active.svelte-ax7ma4{background:var(--accent);color:#fff}.date-picker-calendars.svelte-ax7ma4{flex-wrap:nowrap;gap:16px;padding:12px;display:flex}.dp-cursor-hint.svelte-ax7ma4{pointer-events:none;z-index:101;background:var(--bg-surface);color:var(--text);border:1px solid var(--accent);white-space:nowrap;border-radius:4px;align-items:center;gap:5px;padding:3px 8px;font-size:11px;font-weight:500;display:flex;position:fixed;transform:translate(12px,-50%)}.dp-cursor-hint.svelte-ax7ma4 svg:where(.svelte-ax7ma4){width:12px;height:12px;color:var(--accent);flex-shrink:0}@media (width<=768px){.date-picker-dropdown.svelte-ax7ma4{border-radius:var(--radius) var(--radius) 0 0;flex-direction:column;max-height:80vh;position:fixed;inset:auto 0 0;overflow-y:auto}.date-picker-presets.svelte-ax7ma4{-webkit-overflow-scrolling:touch;border-right:none;border-bottom:1px solid var(--border);flex-flow:row;min-width:0;overflow-x:auto}.date-picker-calendars.svelte-ax7ma4{justify-content:center}.date-picker-calendars.svelte-ax7ma4>.dp-calendar:first-child{display:none}}.segmented-control.svelte-92fh5i{background:var(--bg);border:1px solid var(--border);border-radius:6px;align-items:center;padding:2px;display:inline-flex}.segmented-btn.svelte-92fh5i{color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:5px 12px;font-family:inherit;font-size:12px;font-weight:500;transition:all .15s;display:flex}.segmented-btn.svelte-92fh5i:hover{color:var(--text)}.segmented-btn.active.svelte-92fh5i{background:var(--accent);color:#fff}@media (width<=768px){.segmented-btn.svelte-92fh5i{padding:4px 8px;font-size:11px}}.live-tokens.svelte-17qr2ta{margin-bottom:28px}.live-tokens-heading.svelte-17qr2ta{flex-direction:column;gap:2px;display:flex}.live-tokens-subtitle.svelte-17qr2ta{color:var(--text-muted);align-items:center;gap:6px;font-size:12px;display:inline-flex}.live-tokens-legend.svelte-17qr2ta{flex-wrap:wrap;gap:8px 18px;margin-bottom:16px;display:flex}.live-tokens-legend-item.svelte-17qr2ta{color:var(--text-muted);align-items:center;gap:7px;font-size:12px;display:inline-flex}.live-tokens-swatch.svelte-17qr2ta{border-radius:2px;flex-shrink:0;width:10px;height:10px}.live-tokens-legend-value.svelte-17qr2ta{color:var(--text);font-weight:600}.live-tokens-empty.svelte-17qr2ta .live-tokens-empty-text:where(.svelte-17qr2ta){color:var(--text-muted);font-size:13px}.provider-status-flag.svelte-6tr9cf{grid-column:span 2}.provider-status-overview-card.svelte-6tr9cf{grid-column:span 1}.provider-status-flag.is-healthy.svelte-6tr9cf{border-color:color-mix(in srgb, var(--success) 45%, var(--border));background:color-mix(in srgb, var(--success) 10%, var(--bg-surface))}.provider-status-flag.is-degraded.svelte-6tr9cf{border-color:color-mix(in srgb, var(--warning) 48%, var(--border));background:color-mix(in srgb, var(--warning) 26%, var(--bg-surface))}.provider-status-flag.is-unhealthy.svelte-6tr9cf{border-color:color-mix(in srgb, var(--danger) 45%, var(--border));background:color-mix(in srgb, var(--danger) 10%, var(--bg-surface))}.provider-status-value.svelte-6tr9cf{margin-bottom:8px}.provider-status-card-link.svelte-6tr9cf{color:var(--accent-strong,var(--accent));font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;margin:0;padding:0;font-size:13px;font-weight:600}.provider-status-card-link.svelte-6tr9cf:hover{color:var(--text);text-decoration:underline}.provider-status-card-link.svelte-6tr9cf:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 32%, transparent);outline-offset:3px;border-radius:4px}.provider-status-card-note.svelte-6tr9cf{color:var(--text-muted);font-size:13px;display:block}@media (width>=720px){.card-wide.svelte-6tr9cf{grid-column:span 2}}.cache-token-value.svelte-6tr9cf{flex-wrap:wrap;align-items:center;gap:6px;line-height:1;display:flex}.cache-token-part.svelte-6tr9cf{align-items:center;display:inline-flex}.cache-token-operator.svelte-6tr9cf{color:var(--text-muted);letter-spacing:0;font-size:24px;font-weight:600;line-height:1}.cache-token-marker.svelte-6tr9cf{color:var(--text-muted);letter-spacing:0;text-transform:uppercase;margin-left:2px;font-size:14px;font-weight:700}.prompt-cache-gauge.svelte-6tr9cf{width:120px;height:60px;margin:8px auto 0;position:relative;overflow:hidden}.prompt-cache-gauge.svelte-6tr9cf canvas{display:block}.prompt-cache-gauge-value.svelte-6tr9cf{text-align:center;color:var(--text);font-size:18px;font-weight:700;line-height:1;position:absolute;bottom:4px;left:0;right:0}@media (width<=768px){.provider-status-flag.svelte-6tr9cf{grid-column:span 1}}.mcp-servers-flag.svelte-6tr9cf{grid-column:span 1}.cache-meter-header.svelte-1yzecxj{flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin-bottom:16px;display:flex}.cache-meter-header.svelte-1yzecxj h3{font-size:16px;font-weight:600}.cache-meter-subtitle.svelte-1yzecxj{color:var(--text-muted);font-size:13px}.cache-meter-bar.svelte-1yzecxj{background:var(--bg-surface-hover);border-radius:6px;width:100%;height:28px;display:flex;overflow:hidden}.cache-meter-segment.svelte-1yzecxj{justify-content:center;align-items:center;min-width:3px;height:100%;transition:width .3s;display:flex;overflow:hidden}.cache-meter-segment-label.svelte-1yzecxj{color:#fff;white-space:nowrap;text-shadow:0 1px 2px #00000073;font-size:12px;font-weight:600;line-height:1}.cache-meter-segment.svelte-1yzecxj+.cache-meter-segment:where(.svelte-1yzecxj){box-shadow:-1px 0 0 var(--bg-surface)}.cache-meter-bar.is-empty.svelte-1yzecxj{background:var(--bg-surface-hover);justify-content:center;align-items:center;height:auto;min-height:28px;padding:6px 12px}.cache-meter-legend.svelte-1yzecxj{flex-wrap:wrap;gap:10px 24px;margin-top:16px;display:flex}.cache-meter-legend-item.svelte-1yzecxj{align-items:center;gap:8px;font-size:13px;display:flex}.cache-meter-swatch.svelte-1yzecxj{border-radius:3px;flex-shrink:0;width:12px;height:12px}.cache-meter-legend-label.svelte-1yzecxj{color:var(--text)}.cache-meter-legend-pct.svelte-1yzecxj{color:var(--text);font-weight:600}.cache-meter-legend-tokens.svelte-1yzecxj{color:var(--text-muted)}.cache-meter-empty.svelte-1yzecxj{color:var(--text-muted);text-align:center;font-size:13px}.spinner.svelte-b54l9o{width:var(--spinner-size);height:var(--spinner-size);border:2px solid var(--border,#80808059);border-top-color:var(--accent,currentColor);border-radius:50%;flex:none;animation:.7s linear infinite svelte-b54l9o-spinner-rotate;display:inline-block}@keyframes svelte-b54l9o-spinner-rotate{to{transform:rotate(360deg)}}.contribution-calendar-section.svelte-3hfxuq{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);margin-top:24px;padding:24px}.contribution-calendar-header.svelte-3hfxuq{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.contribution-calendar-header.svelte-3hfxuq h3{font-size:16px;font-weight:600}.contribution-calendar-grid-wrapper.svelte-3hfxuq{gap:8px;display:flex}.contribution-calendar-day-labels.svelte-3hfxuq{flex-direction:column;gap:2px;padding-top:22px;display:flex}.contribution-calendar-day-labels.svelte-3hfxuq span{height:13px;color:var(--text-muted);text-align:right;min-width:28px;font-size:10px;line-height:13px}.contribution-calendar-scroll.svelte-3hfxuq{--contribution-week-size:13px;--contribution-week-gap:2px;flex:1;min-width:0;overflow-x:auto}.contribution-calendar-months.svelte-3hfxuq{grid-auto-columns:var(--contribution-week-size);gap:var(--contribution-week-gap);grid-auto-flow:column;height:16px;margin-bottom:6px;display:grid}.contribution-calendar-month-label.svelte-3hfxuq{color:var(--text-muted);white-space:nowrap;font-size:10px}.contribution-calendar-grid.svelte-3hfxuq{gap:var(--contribution-week-gap);display:flex}.contribution-calendar-week.svelte-3hfxuq{flex-direction:column;gap:2px;display:flex}.contribution-calendar-cell.svelte-3hfxuq{width:var(--contribution-week-size);height:var(--contribution-week-size);background:var(--cal-level-0);border-radius:2px}.contribution-calendar-cell.level-1.svelte-3hfxuq{background:var(--cal-level-1)}.contribution-calendar-cell.level-2.svelte-3hfxuq{background:var(--cal-level-2)}.contribution-calendar-cell.level-3.svelte-3hfxuq{background:var(--cal-level-3)}.contribution-calendar-cell.level-4.svelte-3hfxuq{background:var(--cal-level-4)}.contribution-calendar-cell.level-5.svelte-3hfxuq{background:var(--cal-level-5)}.contribution-calendar-cell.level-6.svelte-3hfxuq{background:var(--cal-level-6)}.contribution-calendar-cell.level-7.svelte-3hfxuq{background:var(--cal-level-7)}.contribution-calendar-cell.level-8.svelte-3hfxuq{background:var(--cal-level-8)}.contribution-calendar-cell.level-9.svelte-3hfxuq{background:var(--cal-level-9)}.contribution-calendar-cell.level-10.svelte-3hfxuq{background:var(--cal-level-10)}.contribution-calendar-cell.empty.svelte-3hfxuq{background:0 0}.contribution-calendar-footer.svelte-3hfxuq{justify-content:space-between;align-items:center;gap:12px;margin-top:12px;display:flex}.contribution-calendar-meta.svelte-3hfxuq{flex-direction:column;gap:4px;display:flex}.contribution-calendar-summary.svelte-3hfxuq{color:var(--text-muted);font-size:12px}.contribution-calendar-legend.svelte-3hfxuq{color:var(--text-muted);align-items:center;gap:4px;font-size:11px;display:flex}.contribution-calendar-legend.svelte-3hfxuq .contribution-calendar-cell:where(.svelte-3hfxuq){cursor:default;width:11px;height:11px}.contribution-calendar-tooltip.svelte-3hfxuq{z-index:200;background:var(--bg-surface);color:var(--text);border:1px solid var(--border);white-space:nowrap;pointer-events:none;border-radius:4px;padding:4px 8px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:12px;position:fixed;transform:translate(-50%);box-shadow:0 4px 12px #0003}@media (width<=768px){.contribution-calendar-day-labels.svelte-3hfxuq{display:none}.contribution-calendar-section.svelte-3hfxuq{padding:16px}.contribution-calendar-footer.svelte-3hfxuq{flex-direction:column;align-items:flex-start}}.inline-help-toggle.is-open.svelte-y40or3{color:var(--text);background:0 0}.inline-help-toggle.is-open.svelte-y40or3 .inline-help-toggle-icon{transform:rotate(540deg)}.audit-stats-section.svelte-14e9yan{margin-top:24px}.audit-stats-header.svelte-14e9yan{align-items:flex-start}.audit-stats-kpis.svelte-14e9yan{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.audit-stats-kpi.svelte-14e9yan{color:var(--text-muted);white-space:nowrap;align-items:center;gap:6px;font-size:12px;display:inline-flex}.audit-stats-kpi-value.svelte-14e9yan{color:var(--text);font-size:13px}.audit-stats-kpi-dot.svelte-14e9yan{border-radius:2px;flex-shrink:0;width:8px;height:8px}.audit-stats-dot-2xx.svelte-14e9yan{background:var(--success)}.audit-stats-dot-4xx.svelte-14e9yan{background:var(--warning)}.audit-stats-dot-5xx.svelte-14e9yan{background:var(--danger)}.provider-status-details.svelte-6y9wjv{opacity:0;grid-template-rows:0fr;transition:grid-template-rows .28s,opacity .22s;display:grid}.provider-status-details.is-expanded.svelte-6y9wjv{opacity:1;grid-template-rows:1fr}.provider-status-details.is-collapsed.svelte-6y9wjv{pointer-events:none}.provider-status-details-inner.svelte-6y9wjv{flex-direction:column;gap:14px;min-height:0;display:flex;overflow:hidden}.provider-status-reason.svelte-6y9wjv{color:var(--text-muted);font-size:13px}.provider-status-error.svelte-6y9wjv{color:var(--danger);overflow-wrap:break-word;font-size:12px}.provider-status-config-label.svelte-6y9wjv{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:700}.provider-status-config.svelte-6y9wjv{border-top:1px solid var(--border);flex-direction:column;gap:10px;padding-top:12px;display:flex}.provider-status-config-row.svelte-6y9wjv{flex-direction:column;gap:4px;display:flex}.provider-status-config-value.svelte-6y9wjv{color:var(--text);overflow-wrap:break-word;font-size:13px;display:block}.provider-status-health.svelte-6y9wjv{border-top:1px solid var(--border);flex-direction:column;gap:10px;margin-bottom:12px;padding-top:12px;display:flex}.provider-status-health-state.svelte-6y9wjv{border:1px solid var(--border);border-radius:999px;align-items:center;padding:1px 8px;font-size:12px;font-weight:600;display:inline-flex}.provider-status-health-state.is-healthy.svelte-6y9wjv{color:var(--success);border-color:color-mix(in srgb, var(--success) 45%, var(--border));background:color-mix(in srgb, var(--success) 10%, transparent)}.provider-status-health-state.is-degraded.svelte-6y9wjv{color:var(--warning);border-color:color-mix(in srgb, var(--warning) 48%, var(--border));background:color-mix(in srgb, var(--warning) 26%, var(--bg-surface))}.provider-status-health-state.is-unhealthy.svelte-6y9wjv{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 45%, var(--border));background:color-mix(in srgb, var(--danger) 10%, transparent)}.provider-status-health-models.svelte-6y9wjv{flex-direction:column;gap:4px;display:flex}.provider-status-health-model.svelte-6y9wjv{color:var(--text);justify-content:space-between;gap:8px;font-size:13px;display:flex}.provider-status-health-model.is-flagged.svelte-6y9wjv{color:var(--danger)}.provider-status-health-model-name.svelte-6y9wjv{overflow-wrap:anywhere}.provider-status-health-model-stats.svelte-6y9wjv{white-space:nowrap;color:var(--text-muted)}.provider-status-health-model.is-flagged.svelte-6y9wjv .provider-status-health-model-stats:where(.svelte-6y9wjv){color:var(--danger);font-weight:700}.provider-status-card.svelte-nopjmh{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:14px;padding:18px;display:flex}.provider-status-card-toggle.svelte-nopjmh{border:0;border-top:1px solid var(--border);border-radius:0 0 var(--radius) var(--radius);color:var(--text-muted);cursor:pointer;background:0 0;justify-content:center;align-items:center;margin:auto -18px -18px;padding:7px 0;transition:background .15s,color .15s;display:flex}.provider-status-card-toggle.svelte-nopjmh:hover{background:color-mix(in srgb, var(--accent) 10%, transparent);color:var(--text)}.provider-status-card-toggle.svelte-nopjmh:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 32%, transparent);outline-offset:-2px}.provider-status-card-toggle.svelte-nopjmh .provider-status-card-toggle-icon{width:16px;height:16px;transition:transform .28s;display:block}.provider-status-card-toggle.is-expanded.svelte-nopjmh .provider-status-card-toggle-icon{transform:rotate(180deg)}.provider-status-card-head.svelte-nopjmh{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.provider-status-name.svelte-nopjmh{letter-spacing:-.02em;flex-wrap:wrap;align-items:baseline;gap:6px;font-size:16px;font-weight:700;display:flex}.provider-doc-help.svelte-nopjmh{align-self:center;text-decoration:none}.provider-status-name-type.svelte-nopjmh{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:700}.provider-status-pill.svelte-nopjmh{border:1px solid var(--border);white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;min-height:28px;padding:0 10px;font-size:12px;font-weight:700;display:inline-flex}.provider-status-pill.is-healthy.svelte-nopjmh{color:var(--success);border-color:color-mix(in srgb, var(--success) 45%, var(--border));background:color-mix(in srgb, var(--success) 10%, transparent)}.provider-status-pill.is-degraded.svelte-nopjmh{color:var(--warning);border-color:color-mix(in srgb, var(--warning) 48%, var(--border));background:color-mix(in srgb, var(--warning) 26%, var(--bg-surface))}.provider-status-pill.is-unhealthy.svelte-nopjmh{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 45%, var(--border));background:color-mix(in srgb, var(--danger) 10%, transparent)}.provider-status-meta.svelte-nopjmh{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.provider-status-meta-item.svelte-nopjmh{background:var(--bg);border:1px solid var(--border);border-radius:6px;flex-direction:column;gap:4px;padding:10px 12px;display:flex}.provider-status-meta-label.svelte-nopjmh{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:700}.provider-status-meta-value.svelte-nopjmh{color:var(--text);font-size:14px}@media (width<=768px){.provider-status-meta.svelte-nopjmh{grid-template-columns:1fr}}.provider-status-section-loading.svelte-1kx3uw4{justify-content:center;padding:24px 0;display:flex}.provider-status-section-header.svelte-1kx3uw4{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.provider-status-toggle.svelte-1kx3uw4{background:var(--bg-surface);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:6px;align-items:center;gap:10px;padding:8px 12px;font-family:inherit;font-size:12px;font-weight:600;transition:background-color .18s,border-color .18s,color .18s;display:inline-flex}.provider-status-toggle.svelte-1kx3uw4:hover{background:var(--bg-surface-hover)}.provider-status-toggle.svelte-1kx3uw4:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 28%, transparent);outline-offset:2px}.provider-status-toggle-copy.svelte-1kx3uw4{white-space:nowrap}.provider-status-toggle-track.svelte-1kx3uw4{background:color-mix(in srgb, var(--text-muted) 35%, var(--border));border-radius:999px;flex-shrink:0;width:34px;height:20px;transition:background-color .2s;position:relative}.provider-status-toggle-track.is-active.svelte-1kx3uw4{background:color-mix(in srgb, var(--accent) 82%, var(--bg-surface))}.provider-status-toggle-thumb.svelte-1kx3uw4{background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .2s;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #0000003d}.provider-status-toggle-track.is-active.svelte-1kx3uw4 .provider-status-toggle-thumb:where(.svelte-1kx3uw4){transform:translate(14px)}.provider-status-grid.svelte-1kx3uw4{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));align-items:start;gap:16px;display:grid}@media (width<=768px){.provider-status-section-header.svelte-1kx3uw4{flex-direction:column;align-items:flex-start}.provider-status-toggle.svelte-1kx3uw4{justify-content:space-between;width:100%}}.filter-input-wrap.svelte-30xz1k{flex:1;width:100%;min-width:min(400px,100%);display:flex;position:relative}.filter-input.svelte-30xz1k{flex:1;width:100%;min-width:0;padding-left:34px}.filter-input-wrap.svelte-30xz1k .filter-input-icon{width:14px;height:14px;color:var(--text-muted);pointer-events:none;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.usage-page-filters.svelte-1oi6ywk{flex-wrap:wrap;gap:10px;margin-bottom:20px;display:flex}.usage-page-filters.svelte-1oi6ywk .usage-log-select{flex:0 auto}.usage-page-filters.svelte-1oi6ywk .usage-page-filters-user-path{flex:220px;min-width:180px;max-width:360px}@media (width<=768px){.usage-page-filters.svelte-1oi6ywk .usage-log-select,.usage-page-filters.svelte-1oi6ywk .usage-page-filters-user-path{flex:100%;max-width:none}}.pro-saved-value.svelte-1qiwzdu{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.pro-saved-delta.svelte-1qiwzdu{color:var(--success);letter-spacing:0;font-size:13px;font-weight:600}.usage-breakdown-loading.svelte-1kee4g8{justify-content:center;align-items:center;min-height:120px;display:flex}.chart-view-toggle.svelte-1kee4g8{background:var(--bg);border:1px solid var(--border);border-radius:6px;align-items:center;padding:2px;display:inline-flex}.chart-view-btn.svelte-1kee4g8{width:30px;height:28px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;transition:all .15s;display:inline-flex}.chart-view-btn.svelte-1kee4g8:hover{color:var(--text)}.chart-view-btn.active.svelte-1kee4g8{background:var(--accent);color:#fff}.chart-view-btn.svelte-1kee4g8 svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:16px;height:16px}.usage-chart-table-wrapper.svelte-1kee4g8{-webkit-overflow-scrolling:touch;margin-top:0;overflow-x:auto}.usage-chart-data-table.svelte-1kee4g8{min-width:max-content}.usage-chart-data-table.svelte-1kee4g8 th,.usage-chart-data-table.svelte-1kee4g8 td{white-space:nowrap}.pagination-info.svelte-1imew3q{color:var(--text-muted);font-size:13px}.pagination-buttons.svelte-1imew3q{gap:8px;display:flex}.usage-log-loading.svelte-hg4ill{justify-content:center;align-items:center;min-height:120px;display:flex}.usage-log-section.svelte-hg4ill{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px}.usage-log-section.svelte-hg4ill h3{margin-bottom:16px;font-size:16px;font-weight:600}.usage-log-section.svelte-hg4ill .table-wrapper{overflow-x:auto}.usage-log-toolbar.svelte-hg4ill{gap:12px;margin-bottom:16px;display:grid}.usage-filter-row.svelte-hg4ill{grid-template-columns:repeat(12,minmax(0,1fr));align-items:center;gap:12px;display:grid}.usage-filter-row-search.svelte-hg4ill .filter-input-wrap{grid-column:1/-1}.usage-filter-row-options.svelte-hg4ill{grid-template-columns:1fr}.usage-log-checkbox.svelte-hg4ill{color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:13px;display:inline-flex}.usage-log-checkbox.svelte-hg4ill input{cursor:pointer;width:16px;height:16px}.usage-ts.svelte-hg4ill{white-space:nowrap;font-size:12px}.usage-log-row-cached.svelte-hg4ill td{opacity:.75;font-style:italic}.usage-log-row-cached.svelte-hg4ill .usage-log-cache-cell:where(.svelte-hg4ill){font-weight:700}.caveat-icon.svelte-hg4ill{color:var(--warning);cursor:help;margin-left:4px;font-size:14px}@media (width<=768px){.usage-log-toolbar.svelte-hg4ill{gap:10px}.usage-filter-row.svelte-hg4ill{grid-template-columns:1fr}.usage-filter-row-search.svelte-hg4ill .filter-input-wrap{grid-column:1}.usage-log-table.svelte-hg4ill{display:block;overflow-x:auto}}.usage-sticky-controls.svelte-spwie6{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;display:flex}.usage-charts-grid.svelte-spwie6{flex-wrap:wrap;gap:24px;margin-bottom:24px;display:flex}.usage-charts-grid.svelte-spwie6 .model-chart-section{flex:calc(50% - 24px);min-width:420px;margin-bottom:0}@media (width<=520px){.usage-charts-grid.svelte-spwie6 .model-chart-section{min-width:0}}.loading-state.svelte-hzxv1d{min-height:var(--loading-state-min-height,64px);color:var(--text-muted);justify-content:center;align-items:center;gap:10px;font-size:14px;display:flex}.budget-bar-text-row-on-fill.svelte-1jm56wo{color:#fff;clip-path:inset(0 calc(100% - var(--budget-progress,0%)) 0 0)}.budget-bar-text-start.svelte-1jm56wo{left:8px;transform:translateY(-50%)}.budget-bar-track-period-custom.svelte-1jm56wo .budget-bar-text-row-on-fill:where(.svelte-1jm56wo){color:#3f332a}.budget-override-dialog.svelte-13ryo7h{max-width:460px}.budget-sort-control.svelte-1752fqe{align-items:center;gap:8px}.budget-sort-control.svelte-1752fqe label{color:var(--text-muted);white-space:nowrap;font-size:12px;font-weight:600}.budget-sort-select.svelte-1752fqe{background-color:var(--bg-surface);min-width:132px}.budget-sort-select.svelte-1752fqe:hover{background-color:var(--bg-surface-hover)}.model-name-cell.svelte-1iynym{flex-direction:column;gap:8px;display:flex}.model-name-primary.svelte-1iynym{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.model-name-secondary.svelte-1iynym{color:var(--text-muted);font-size:12px}.model-redirect-remove-btn.svelte-1iynym{appearance:none;color:var(--danger);cursor:pointer;background:0 0;border:0;margin-left:4px;padding:0;font-size:11px}.model-redirect-remove-btn.svelte-1iynym:hover:not(:disabled){text-decoration:underline}.model-redirect-remove-btn.svelte-1iynym:disabled{opacity:.45;cursor:default}.model-kind-icon.svelte-1iynym{border:1px solid color-mix(in srgb, var(--accent) 55%, var(--border));background:var(--bg);width:24px;height:24px;color:var(--accent);border-radius:999px;flex:0 0 24px;justify-content:center;align-items:center;display:inline-flex}.model-kind-icon-svg.svelte-1iynym{width:14px;height:14px}.model-row-actions.svelte-1iynym{text-align:right;width:170px}@media (width<=768px){.model-name-primary.svelte-1iynym{flex-direction:column;align-items:flex-start}}.provider-group-row.svelte-1911hy6 td{background:color-mix(in srgb, var(--accent) 6%, var(--bg));padding-top:12px;padding-bottom:12px}.provider-group-row.svelte-1911hy6:hover td{background:color-mix(in srgb, var(--accent) 8%, var(--bg))}.provider-group-header.svelte-1911hy6{justify-content:space-between;align-items:center;gap:16px;display:flex}.provider-group-meta.svelte-1911hy6{flex-direction:column;gap:4px;min-width:0;display:flex}.provider-group-title.svelte-1911hy6{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.provider-group-type.svelte-1911hy6,.provider-group-count.svelte-1911hy6,.provider-group-summary.svelte-1911hy6{color:var(--text-muted);font-size:12px}@media (width<=768px){.provider-group-header.svelte-1911hy6{flex-direction:column;align-items:flex-start}}.vm-session-affinity-checkbox.svelte-d1j6xw{color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:13px;display:inline-flex}.vm-session-affinity-checkbox.svelte-d1j6xw input:where(.svelte-d1j6xw){accent-color:var(--accent);cursor:pointer}.pricing-override-rows.svelte-u8snes{gap:12px;display:grid}.pricing-override-row.svelte-u8snes{grid-template-columns:minmax(220px,1fr) minmax(130px,180px) 32px;align-items:end;gap:12px;display:grid}.pricing-override-row-actions.svelte-u8snes{justify-content:flex-start;display:flex}.pricing-override-tier-note.svelte-u8snes{border:1px solid var(--border);background:var(--bg);color:var(--text-muted);border-radius:6px;padding:10px 12px;font-size:13px}.pricing-preview.svelte-u8snes{border:1px solid var(--border);border-radius:6px;overflow:hidden}.pricing-preview-header.svelte-u8snes,.pricing-preview-row.svelte-u8snes{grid-template-columns:minmax(150px,1fr) minmax(90px,auto) minmax(130px,.8fr);align-items:center;gap:12px;padding:10px 12px;display:grid}.pricing-preview-header.svelte-u8snes{background:var(--bg);color:var(--text-muted);text-transform:uppercase;font-size:12px;font-weight:600}.pricing-preview-row.svelte-u8snes{border-top:1px solid var(--border);font-size:13px}.pricing-preview-row-empty.svelte-u8snes{color:var(--text-muted);grid-template-columns:1fr}@media (width<=768px){.pricing-override-row.svelte-u8snes,.pricing-preview-header.svelte-u8snes,.pricing-preview-row.svelte-u8snes{grid-template-columns:1fr}}.failover-drafts-editor.svelte-1n87bip{flex-direction:column;gap:16px;display:flex}.failover-draft-header-actions.svelte-1n87bip{flex:none;align-items:center;gap:10px;display:flex}.failover-draft-counter.svelte-1n87bip{color:var(--text-muted);white-space:nowrap;font-size:12px;font-weight:600}.failover-draft-toolbar.svelte-1n87bip{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.failover-draft-toolbar.svelte-1n87bip .filter-input-wrap,.failover-draft-toolbar.svelte-1n87bip .filter-input{min-width:0}.failover-draft-toggle-all.svelte-1n87bip{flex:none}.failover-draft-list.svelte-1n87bip{flex-direction:column;gap:8px;max-height:min(52vh,430px);padding-right:4px;display:flex;overflow-y:auto}.failover-draft-row.svelte-1n87bip{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);cursor:pointer;grid-template-columns:18px minmax(0,1fr);align-items:start;gap:10px;padding:10px;display:grid}.failover-draft-row.svelte-1n87bip:hover{border-color:color-mix(in srgb, var(--accent) 42%, var(--border));background:var(--bg-surface-hover)}.failover-draft-row.svelte-1n87bip input{width:16px;height:16px;margin-top:2px}.failover-draft-copy.svelte-1n87bip{gap:4px;min-width:0;display:grid}.failover-draft-source.svelte-1n87bip,.failover-draft-targets.svelte-1n87bip{overflow-wrap:anywhere}.failover-draft-targets.svelte-1n87bip{color:var(--text-muted);font-size:12px}.failover-drafts-empty.svelte-1n87bip{align-items:center;min-height:96px;display:flex}.failover-draft-actions.svelte-1n87bip{margin-top:0}.category-tabs.svelte-scpjps{-webkit-overflow-scrolling:touch;align-items:center;gap:4px;margin-bottom:16px;padding-bottom:2px;display:flex;overflow-x:auto}.category-tab.svelte-scpjps{background:var(--bg-surface);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;white-space:nowrap;border-radius:6px;flex-shrink:0;align-items:center;gap:6px;padding:6px 14px;font-family:inherit;font-size:13px;font-weight:500;transition:all .15s;display:inline-flex}.category-tab.svelte-scpjps:hover{color:var(--text);background:var(--bg-surface-hover)}.category-tab.active.svelte-scpjps{background:var(--accent);color:#fff;border-color:var(--accent)}.category-tab.svelte-scpjps .tab-count:where(.svelte-scpjps){background:#ffffff26;border-radius:9px;justify-content:center;align-items:center;min-width:20px;height:18px;padding:0 5px;font-size:11px;font-weight:600;line-height:1;display:inline-flex}.category-tab.svelte-scpjps:not(.active) .tab-count:where(.svelte-scpjps){background:var(--bg)}@media (width<=768px){.category-tabs.svelte-scpjps{gap:4px}.category-tab.svelte-scpjps{padding:5px 10px;font-size:12px}}.workflow-pipeline-meta.svelte-1viff7o{border:1px solid var(--border);background:color-mix(in srgb, var(--bg-surface) 86%, transparent);min-width:0;max-width:calc(100% - 28px);color:var(--text-muted);white-space:nowrap;appearance:none;cursor:pointer;text-align:left;border-radius:12px;align-items:center;gap:0;padding:2px 10px;font-size:12px;font-weight:500;line-height:1.2;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s;display:inline-flex;position:absolute;top:12px;right:14px;overflow:hidden}.workflow-pipeline-meta.svelte-1viff7o:hover,.workflow-pipeline-meta.svelte-1viff7o:focus-visible{border-color:color-mix(in srgb, var(--accent) 40%, var(--border));background:color-mix(in srgb, var(--accent) 8%, var(--bg-surface));color:color-mix(in srgb, var(--accent) 74%, var(--text))}.workflow-pipeline-meta.svelte-1viff7o:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 18%, transparent);outline:none}.workflow-pipeline-meta-label.svelte-1viff7o{flex:none;font-weight:700}.workflow-pipeline-meta-placeholder.svelte-1viff7o{opacity:1;flex:none;max-width:3ch;margin-left:4px;transition:max-width .18s,margin-left .18s,opacity .15s;overflow:hidden}.workflow-pipeline-meta-value.svelte-1viff7o{opacity:0;text-overflow:clip;flex:0 auto;max-width:0;margin-left:0;transition:max-width .22s,margin-left .18s,opacity .15s;overflow:hidden}.workflow-pipeline-meta.svelte-1viff7o:hover .workflow-pipeline-meta-placeholder:where(.svelte-1viff7o),.workflow-pipeline-meta.svelte-1viff7o:focus-visible .workflow-pipeline-meta-placeholder:where(.svelte-1viff7o),.workflow-pipeline-meta-copied.svelte-1viff7o .workflow-pipeline-meta-placeholder:where(.svelte-1viff7o),.workflow-pipeline-meta-error.svelte-1viff7o .workflow-pipeline-meta-placeholder:where(.svelte-1viff7o){opacity:0;max-width:0;margin-left:0}.workflow-pipeline-meta.svelte-1viff7o:hover .workflow-pipeline-meta-value:where(.svelte-1viff7o),.workflow-pipeline-meta.svelte-1viff7o:focus-visible .workflow-pipeline-meta-value:where(.svelte-1viff7o),.workflow-pipeline-meta-copied.svelte-1viff7o .workflow-pipeline-meta-value:where(.svelte-1viff7o),.workflow-pipeline-meta-error.svelte-1viff7o .workflow-pipeline-meta-value:where(.svelte-1viff7o){opacity:1;max-width:42ch;margin-left:4px}.workflow-pipeline-meta-icon.svelte-1viff7o{opacity:0;flex:none;justify-content:center;align-items:center;width:0;height:14px;margin-left:0;line-height:0;transition:width .18s,margin-left .18s,opacity .15s,transform .18s;display:inline-flex;overflow:hidden;transform:translate(4px)translateY(1px)scale(.84)}.workflow-pipeline-meta-icon.svelte-1viff7o svg{width:14px;height:14px}.workflow-pipeline-meta-copied.svelte-1viff7o,.workflow-pipeline-meta-copied.svelte-1viff7o:hover,.workflow-pipeline-meta-copied.svelte-1viff7o:focus-visible{background:color-mix(in srgb, var(--success) 12%, var(--bg));border-color:color-mix(in srgb, var(--success) 40%, var(--border));color:var(--success)}.workflow-pipeline-meta-copied.svelte-1viff7o .workflow-pipeline-meta-icon:where(.svelte-1viff7o){opacity:1;width:14px;margin-left:6px;transform:translateY(1px)}.workflow-pipeline-meta-error.svelte-1viff7o,.workflow-pipeline-meta-error.svelte-1viff7o:hover,.workflow-pipeline-meta-error.svelte-1viff7o:focus-visible{background:color-mix(in srgb, var(--danger) 10%, var(--bg));border-color:color-mix(in srgb, var(--danger) 34%, var(--border));color:var(--danger)}.workflow-pipeline.svelte-nbptrg{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg);flex-direction:column;gap:0;margin-bottom:12px;padding:18px 20px 20px;display:flex;position:relative}.workflow-pipeline-has-meta.svelte-nbptrg{padding-top:42px}.workflow-pipeline-row.svelte-nbptrg{align-items:center;width:100%;min-width:0;display:flex;overflow-x:auto}.workflow-node-icon.svelte-nbptrg{border-radius:var(--radius);background:var(--bg);width:28px;height:28px;color:var(--text-muted);justify-content:center;align-items:center;display:flex}.workflow-node-icon.svelte-nbptrg svg{stroke:currentColor;fill:none;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:15px;height:15px}.workflow-node-label.svelte-nbptrg{letter-spacing:.03em;color:var(--text);white-space:nowrap;font-size:11px;font-weight:700;line-height:1.2}.workflow-node-sub.svelte-nbptrg{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;max-width:120px;font-size:10px;font-weight:500;line-height:1.2;font-family:var(--font-mono,ui-monospace, monospace);overflow:hidden}.workflow-node-badge.svelte-nbptrg{border-radius:var(--radius);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;border:1px solid var(--border);background:var(--bg);color:var(--text-muted);align-items:center;padding:2px 7px;font-size:9px;font-weight:800;line-height:1.5;display:inline-flex}.workflow-node-endpoint.svelte-nbptrg{border-radius:var(--radius);border-color:var(--border);background:var(--bg-surface);flex-direction:row;gap:7px;min-width:auto;padding:10px 14px}.workflow-node-icon-endpoint.svelte-nbptrg{border-radius:var(--radius);width:auto;height:auto;color:var(--text-muted);background:0 0;justify-content:flex-start;padding:0}.workflow-node-icon-endpoint.svelte-nbptrg svg{width:14px;height:14px}.workflow-node-endpoint.svelte-nbptrg .workflow-node-label:where(.svelte-nbptrg){color:var(--text-muted);font-size:11px;font-weight:600}.workflow-node-feature.svelte-nbptrg{border-color:color-mix(in srgb, var(--accent) 46%, var(--border));background:color-mix(in srgb, var(--accent) 8%, var(--bg-surface))}.workflow-node-feature.svelte-nbptrg .workflow-node-icon:where(.svelte-nbptrg){background:color-mix(in srgb, var(--accent) 16%, var(--bg));color:var(--accent)}.workflow-node-feature.svelte-nbptrg .workflow-node-label:where(.svelte-nbptrg){color:var(--accent)}.workflow-node-feature.svelte-nbptrg .workflow-node-sub:where(.svelte-nbptrg){color:color-mix(in srgb, var(--accent) 70%, var(--text-muted))}.workflow-node-ai.svelte-nbptrg{border-radius:var(--radius);gap:6px;min-width:96px;padding:12px 16px}.workflow-async-section.svelte-nbptrg{justify-content:flex-end;align-items:center;gap:0;width:100%;min-width:0;margin-top:10px;display:flex}.workflow-async-turn.svelte-nbptrg{background:repeating-linear-gradient(to left, color-mix(in srgb, var(--text-muted) 45%, var(--border)) 0, color-mix(in srgb, var(--text-muted) 45%, var(--border)) 5px, transparent 5px, transparent 9px);flex:0 0 60px;height:2px;position:relative}.workflow-async-turn.svelte-nbptrg:before{content:"";background:color-mix(in srgb, var(--text-muted) 40%, var(--border));clip-path:polygon(100% 0,0 50%,100% 100%);width:7px;height:9px;position:absolute;top:50%;left:-7px;transform:translateY(-50%)}.workflow-async-turn.svelte-nbptrg:after{content:"";border-right:2px dashed color-mix(in srgb, var(--text-muted) 40%, var(--border));height:16px;position:absolute;bottom:1px;right:0}.workflow-async-row.svelte-nbptrg{align-items:center;min-width:0;margin-right:7px;display:flex}.workflow-conn-async.svelte-nbptrg{background:repeating-linear-gradient(to left, color-mix(in srgb, var(--text-muted) 45%, var(--border)) 0, color-mix(in srgb, var(--text-muted) 45%, var(--border)) 5px, transparent 5px, transparent 9px);flex:0 0 24px;width:24px}.workflow-conn-async.svelte-nbptrg:after{background:color-mix(in srgb, var(--text-muted) 45%, var(--border));clip-path:polygon(100% 0,0 50%,100% 100%);left:-1px;right:auto}.workflow-node-async.svelte-nbptrg{border-radius:var(--radius);border-style:dashed;flex-direction:row;gap:7px;min-width:auto;padding:7px 12px}.workflow-node-async.svelte-nbptrg .workflow-node-icon:where(.svelte-nbptrg){border-radius:var(--radius);width:12px;height:12px}.workflow-node-async.svelte-nbptrg .workflow-node-icon:where(.svelte-nbptrg) svg{width:12px;height:12px}.workflow-node-async.svelte-nbptrg .workflow-node-label:where(.svelte-nbptrg){font-size:10px;font-weight:700}.workflow-async-label.svelte-nbptrg{letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);opacity:.55;white-space:nowrap;flex-shrink:0;align-items:center;margin-left:8px;font-size:9px;font-weight:800;display:inline-flex}.workflow-node-success.svelte-nbptrg .workflow-node-icon:where(.svelte-nbptrg){background:color-mix(in srgb, var(--success) 18%, var(--bg));color:var(--success)}.workflow-node-success.svelte-nbptrg .workflow-node-icon-endpoint:where(.svelte-nbptrg){color:var(--success)}.workflow-node-success.svelte-nbptrg .workflow-node-label:where(.svelte-nbptrg){color:color-mix(in srgb, var(--success) 85%, var(--text))}.workflow-node-success.svelte-nbptrg .workflow-node-sub:where(.svelte-nbptrg){color:color-mix(in srgb, var(--success) 74%, var(--text-muted))}.workflow-node-success.svelte-nbptrg .workflow-node-badge:where(.svelte-nbptrg){background:color-mix(in srgb, var(--success) 14%, var(--bg));border-color:color-mix(in srgb, var(--success) 38%, var(--border));color:var(--success)}.workflow-node-current.svelte-nbptrg .workflow-node-icon:where(.svelte-nbptrg){background:color-mix(in srgb, var(--info) 16%, var(--bg));color:var(--info)}.workflow-node-current.svelte-nbptrg .workflow-node-icon-endpoint:where(.svelte-nbptrg){color:var(--info)}.workflow-node-current.svelte-nbptrg .workflow-node-label:where(.svelte-nbptrg){color:color-mix(in srgb, var(--info) 85%, var(--text))}.workflow-node-current.svelte-nbptrg .workflow-node-sub:where(.svelte-nbptrg){color:color-mix(in srgb, var(--info) 72%, var(--text-muted))}.workflow-node-current.svelte-nbptrg .workflow-node-badge:where(.svelte-nbptrg){background:color-mix(in srgb, var(--info) 13%, var(--bg));border-color:color-mix(in srgb, var(--info) 36%, var(--border));color:var(--info)}.workflow-node-warning.svelte-nbptrg .workflow-node-icon:where(.svelte-nbptrg){background:color-mix(in srgb, var(--warning) 14%, var(--bg));color:var(--warning)}.workflow-node-warning.svelte-nbptrg .workflow-node-icon-endpoint:where(.svelte-nbptrg){color:var(--warning)}.workflow-node-warning.svelte-nbptrg .workflow-node-label:where(.svelte-nbptrg){color:color-mix(in srgb, var(--warning) 85%, var(--text))}.workflow-node-warning.svelte-nbptrg .workflow-node-sub:where(.svelte-nbptrg){color:color-mix(in srgb, var(--warning) 72%, var(--text-muted))}.workflow-node-warning.svelte-nbptrg .workflow-node-badge:where(.svelte-nbptrg){background:color-mix(in srgb, var(--warning) 14%, var(--bg));border-color:color-mix(in srgb, var(--warning) 38%, var(--border));color:var(--warning)}.workflow-node-error.svelte-nbptrg .workflow-node-icon:where(.svelte-nbptrg){background:color-mix(in srgb, var(--danger) 14%, var(--bg));color:var(--danger)}.workflow-node-error.svelte-nbptrg .workflow-node-icon-endpoint:where(.svelte-nbptrg){color:var(--danger)}.workflow-node-error.svelte-nbptrg .workflow-node-label:where(.svelte-nbptrg){color:color-mix(in srgb, var(--danger) 85%, var(--text))}.workflow-node-error.svelte-nbptrg .workflow-node-sub:where(.svelte-nbptrg){color:color-mix(in srgb, var(--danger) 72%, var(--text-muted))}.workflow-node-neutral.svelte-nbptrg .workflow-node-icon:where(.svelte-nbptrg){background:color-mix(in srgb, var(--text-muted) 12%, var(--bg));color:var(--text-muted)}.workflow-node-neutral.svelte-nbptrg .workflow-node-icon-endpoint:where(.svelte-nbptrg),.workflow-node-neutral.svelte-nbptrg .workflow-node-label:where(.svelte-nbptrg){color:var(--text-muted)}.workflow-node-neutral.svelte-nbptrg .workflow-node-sub:where(.svelte-nbptrg){color:color-mix(in srgb, var(--text-muted) 84%, var(--border))}.workflow-node-neutral.svelte-nbptrg .workflow-node-badge:where(.svelte-nbptrg){background:color-mix(in srgb, var(--text-muted) 10%, var(--bg));border-color:color-mix(in srgb, var(--text-muted) 28%, var(--border));color:var(--text-muted)}.workflow-conn-hit.svelte-nbptrg,.workflow-conn-hit.svelte-nbptrg:after{background:color-mix(in srgb, var(--success) 58%, var(--border))}.workflow-conn-dim.svelte-nbptrg,.workflow-conn-dim.svelte-nbptrg:after{background:color-mix(in srgb, var(--border) 75%, transparent)}.workflow-node-success.svelte-nbptrg{border-color:color-mix(in srgb, var(--success) 52%, var(--border));background:color-mix(in srgb, var(--success) 9%, var(--bg-surface))}.workflow-node-current.svelte-nbptrg{border-color:color-mix(in srgb, var(--info) 56%, var(--border));background:color-mix(in srgb, var(--info) 10%, var(--bg-surface))}.workflow-node-warning.svelte-nbptrg{border-color:color-mix(in srgb, var(--warning) 52%, var(--border));background:color-mix(in srgb, var(--warning) 9%, var(--bg-surface))}.workflow-node-error.svelte-nbptrg{border-color:color-mix(in srgb, var(--danger) 52%, var(--border));background:color-mix(in srgb, var(--danger) 9%, var(--bg-surface))}.workflow-node-neutral.svelte-nbptrg{border-color:color-mix(in srgb, var(--text-muted) 40%, var(--border));background:color-mix(in srgb, var(--text-muted) 8%, var(--bg-surface))}.workflow-node-skipped.svelte-nbptrg{opacity:.28;position:relative}.workflow-card.svelte-1fo9fvq{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:16px;padding:20px;display:flex}.workflow-card-head.svelte-1fo9fvq{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.workflow-card-footer.svelte-1fo9fvq{flex-direction:column;align-items:stretch;gap:10px;display:flex}.workflow-card-head.svelte-1fo9fvq h3{font-size:18px;font-weight:700}.workflow-card-badges.svelte-1fo9fvq,.workflow-card-meta.svelte-1fo9fvq{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.workflow-card-meta-footer.svelte-1fo9fvq{justify-content:flex-start}.workflow-card-footer.svelte-1fo9fvq .alias-actions-cell{align-self:flex-end}.workflow-card-description.svelte-1fo9fvq{color:var(--text-muted);font-size:14px}.workflow-guardrails.svelte-1fo9fvq{flex-direction:column;gap:12px;display:flex}.workflow-guardrail-list.svelte-1fo9fvq{flex-direction:column;gap:10px;display:flex}.workflow-guardrail-item.svelte-1fo9fvq{border:1px solid var(--border);background:var(--bg);border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}@media (width<=768px){.workflow-card-head.svelte-1fo9fvq,.workflow-card-footer.svelte-1fo9fvq,.workflow-card-badges.svelte-1fo9fvq,.workflow-card-meta.svelte-1fo9fvq,.workflow-guardrail-item.svelte-1fo9fvq{flex-direction:column;align-items:flex-start}}.model-editor.workflow-editor{width:min(1080px,100%);margin-bottom:0}.alert-inline-actions.svelte-1bcpzh1{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.workflow-guardrail-editor.svelte-1bcpzh1{flex-direction:column;gap:12px;display:flex}.workflow-guardrail-list-editor.svelte-1bcpzh1{flex-direction:column;gap:10px;display:flex}.workflow-guardrail-row.svelte-1bcpzh1{border:1px solid var(--border);background:var(--bg);border-radius:10px;justify-content:stretch;align-items:center;gap:12px;padding:10px 12px;display:flex}.workflow-guardrail-field.svelte-1bcpzh1{flex:auto;min-width:0}.workflow-guardrail-step-field.svelte-1bcpzh1{flex:0 0 120px}.workflow-input.svelte-1bcpzh1{width:100%;max-width:none}.workflow-step-input.svelte-1bcpzh1{max-width:120px}@media (width<=768px){.workflow-guardrail-row.svelte-1bcpzh1{flex-direction:column;align-items:flex-start}.workflow-step-input.svelte-1bcpzh1{width:100%;max-width:none}.workflow-guardrail-field.svelte-1bcpzh1,.workflow-guardrail-step-field.svelte-1bcpzh1{flex-basis:auto;width:100%}}.workflow-list-loading.svelte-ie2kfk{justify-content:center;align-items:center;gap:8px;display:flex}.workflows-list.svelte-ie2kfk{min-width:0}.workflow-card-grid.svelte-ie2kfk{grid-template-columns:1fr;gap:16px;display:grid}.workflow-page-note.svelte-l8kr26{color:var(--text-muted);margin-top:6px;font-size:14px}.audit-log-toolbar.svelte-1pwbpcm{flex-direction:column;gap:10px;margin-bottom:14px;display:flex}.audit-filter-row.svelte-1pwbpcm{grid-template-columns:repeat(12,minmax(0,1fr));gap:10px;display:grid}.audit-filter-select.svelte-1pwbpcm{grid-column:span 2;min-width:0}.audit-filter-row-search.svelte-1pwbpcm .filter-input-wrap{grid-column:1/-1;max-width:none}.audit-filter-row-controls.svelte-1pwbpcm .audit-filter-select:where(.svelte-1pwbpcm){grid-column:span 2}.audit-filter-row-controls.svelte-1pwbpcm .btn{grid-column:11/-1;justify-self:end;min-width:108px}.audit-clear-btn.svelte-1pwbpcm{justify-content:center;align-items:center;gap:8px;font-weight:600;display:inline-flex}.audit-clear-btn.svelte-1pwbpcm .table-icon-svg{width:12px;height:12px}@media (width<=768px){.audit-log-toolbar.svelte-1pwbpcm{gap:8px}.audit-filter-row.svelte-1pwbpcm{grid-template-columns:1fr}.audit-filter-row.svelte-1pwbpcm .filter-input-wrap,.audit-filter-row.svelte-1pwbpcm .filter-input,.audit-filter-select.svelte-1pwbpcm,.audit-filter-row.svelte-1pwbpcm .btn{grid-column:auto}}.audit-live-status.svelte-tve6yv{color:var(--text-muted);align-items:center;gap:10px;margin-left:16px;padding-left:6px;font-size:12px;display:inline-flex}.audit-live-status.svelte-tve6yv .live-dot.is-streaming:where(.svelte-tve6yv){animation:1.8s ease-out infinite svelte-tve6yv-audit-live-dot-throb}@keyframes svelte-tve6yv-audit-live-dot-throb{0%{transform:scale(1)}35%{transform:scale(1.35)}70%{transform:scale(1)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.audit-live-status.svelte-tve6yv .live-dot.is-streaming:where(.svelte-tve6yv){animation:none}}.audit-live-status-text.is-live.svelte-tve6yv{color:var(--success);font-weight:600}.audit-entry-metadata.svelte-hyopt0{border-top:1px solid var(--border);align-items:center;gap:10px;margin-top:12px;padding-top:12px;display:flex}.audit-entry-metadata-label.svelte-hyopt0{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;flex:none;font-size:12px;font-weight:700}.audit-entry-context.svelte-hyopt0{flex-wrap:wrap;flex:auto;gap:8px;display:flex}.audit-alias-badge.svelte-hyopt0{background:color-mix(in srgb, var(--accent) 14%, var(--bg));border-color:color-mix(in srgb, var(--accent) 28%, var(--border));color:var(--accent-strong,var(--accent))}@media (width<=768px){.audit-entry-metadata.svelte-hyopt0{flex-direction:column;align-items:flex-start;gap:8px}}.audit-attempt-track.svelte-1eu22xn{cursor:pointer;align-items:center;gap:6px;display:inline-flex}.audit-attempt-track-pips.svelte-1eu22xn{align-items:center;gap:3px;display:inline-flex}.audit-attempt-pip.svelte-1eu22xn{background:var(--text-muted);border-radius:2px;width:8px;height:8px}.audit-attempt-pip.audit-attempt-success.svelte-1eu22xn{background:var(--success)}.audit-attempt-pip.audit-attempt-error.svelte-1eu22xn{background:var(--danger)}.audit-attempt-track-count.svelte-1eu22xn{color:var(--text-muted);font-size:11px}.audit-entry-summary.svelte-17mysgz{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:5px 14px;list-style:none;display:flex;position:relative}.audit-entry-summary.svelte-17mysgz::-webkit-details-marker{display:none}.audit-entry-summary-live-in-progress.svelte-17mysgz{background:color-mix(in srgb, var(--info) 7%, var(--bg))}.audit-entry-summary-has-interactions.svelte-17mysgz{padding-right:44px}.audit-entry-summary-live-in-progress.svelte-17mysgz:before{content:"";background:var(--info);pointer-events:none;width:3px;animation:1.2s ease-in-out infinite audit-live-summary-stripe-blink;position:absolute;inset:0 auto 0 0}@media (prefers-reduced-motion:reduce){.audit-entry-summary-live-in-progress.svelte-17mysgz:before{opacity:.78;animation:none}}.audit-entry-left.svelte-17mysgz{align-items:center;gap:8px;min-width:0;display:flex}.audit-entry-right.svelte-17mysgz{color:var(--text-muted);flex-shrink:0;align-items:center;gap:10px;min-height:28px;display:inline-flex}.audit-thread-expander.svelte-17mysgz{border:1px solid var(--border);background:var(--bg-surface);min-width:28px;height:28px;color:var(--text-muted);cursor:pointer;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;gap:3px;padding:0 7px 0 4px;transition:background .1s ease-out,color .1s ease-out;display:inline-flex}.audit-thread-expander.svelte-17mysgz:hover{background:color-mix(in srgb, var(--accent) 12%, var(--bg));color:var(--accent)}.audit-thread-expander.svelte-17mysgz .audit-thread-expander-svg{width:14px;height:14px}.audit-thread-count.svelte-17mysgz{font-size:11px;font-weight:600}.audit-conversation-trigger.svelte-17mysgz{border:0;border-left:1px solid var(--border);background:color-mix(in srgb, var(--accent) 12%, var(--bg));width:32px;height:100%;color:var(--accent);cursor:pointer;border-radius:0;justify-content:center;align-items:center;margin:0;transition:background .1s ease-out,color .1s ease-out;display:inline-flex;position:absolute;inset:0 0 0 auto}.audit-conversation-trigger.svelte-17mysgz:hover{background:color-mix(in srgb, var(--accent) 20%, var(--bg))}.audit-conversation-trigger-active.svelte-17mysgz{color:var(--accent-strong,var(--accent));background:color-mix(in srgb, var(--accent) 28%, var(--bg));border-left:0}.audit-conversation-trigger-active.svelte-17mysgz:hover{background:color-mix(in srgb, var(--accent) 34%, var(--bg))}.audit-conversation-trigger.svelte-17mysgz .audit-conversation-trigger-svg{stroke-linecap:butt;stroke-linejoin:miter;width:18px;height:18px}.audit-path.svelte-17mysgz{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.audit-request-badge.svelte-17mysgz{white-space:nowrap;gap:6px;min-width:0}.audit-timestamp-time.svelte-17mysgz{display:none}.audit-provider-model.svelte-17mysgz{border:1px solid var(--border);background:var(--bg-surface);height:24px;color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;border-radius:999px;align-items:center;max-width:420px;padding:0 10px;font-size:12px;display:inline-flex;overflow:hidden}@container dashboard-content (width<=699px){.audit-entry-summary.svelte-17mysgz{flex-direction:column;align-items:flex-start}.audit-entry-right.svelte-17mysgz{justify-content:space-between;width:100%}.audit-request-status.svelte-17mysgz,.audit-timestamp-full.svelte-17mysgz{display:none}.audit-timestamp-time.svelte-17mysgz{display:inline}}.audit-pane-split.svelte-1h5puht{grid-template-columns:1fr 2fr;align-items:start;gap:10px 14px;display:grid}.audit-pane-split-single.svelte-1h5puht{grid-template-columns:minmax(0,1fr)}@container dashboard-content (width<=699px){.audit-pane-split.svelte-1h5puht{grid-template-columns:minmax(0,1fr)}}.audit-pane-split.svelte-1h5puht .audit-pane-block-error:where(.svelte-1h5puht),.audit-pane-split.svelte-1h5puht .audit-pane-empty:where(.svelte-1h5puht),.audit-pane-split.svelte-1h5puht .audit-size-warning:where(.svelte-1h5puht){grid-column:1/-1}.audit-pane-block.svelte-1h5puht{min-width:0}.audit-pane-block.svelte-1h5puht>h5{margin-bottom:6px}.audit-pane-block-head.svelte-1h5puht{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.audit-pane-block-title.svelte-1h5puht{align-items:center;gap:8px;min-width:0;display:inline-flex}.audit-pane-block-head.svelte-1h5puht .audit-copy-btn{background-color:var(--bg-surface);border:1px solid color-mix(in srgb, var(--border) 70%, var(--text) 30%);color:var(--text);cursor:pointer;border-radius:6px;flex:none;align-items:center;gap:6px;padding:4px 8px;font-family:inherit;font-size:12px;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}.audit-pane-block-head.svelte-1h5puht .audit-copy-btn:hover:not(:disabled){background:color-mix(in srgb, var(--bg-surface) 80%, var(--text) 20%);border-color:color-mix(in srgb, var(--border) 45%, var(--text) 55%)}.audit-pane-block-head.svelte-1h5puht .audit-copy-btn.copy-feedback-btn-copied{background:color-mix(in srgb, var(--success) 18%, var(--bg-surface))}.audit-json.svelte-1h5puht{background:var(--bg-surface);border:1px solid var(--border);box-sizing:border-box;white-space:pre;max-width:100%;max-height:220px;color:var(--text);border-radius:6px;padding:10px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:12px;line-height:1.45;overflow:auto}.audit-pane-error-message.svelte-1h5puht{color:var(--danger)}.audit-pane-clickable-preview.svelte-1h5puht{cursor:pointer}.audit-pane-clickable-preview.svelte-1h5puht:hover{background:color-mix(in srgb, var(--danger) 8%, transparent)}.audit-json-body.svelte-1h5puht{white-space:pre;overflow-wrap:normal}.audit-pane-empty.svelte-1h5puht{text-align:left;padding:8px 0 0}.audit-pane-pending.svelte-1h5puht{align-items:center;gap:8px;display:flex}.audit-pane-streaming.svelte-1h5puht{letter-spacing:.02em;color:var(--text-muted);align-items:center;gap:7px;padding-left:4px;font-size:11px;font-weight:600;display:inline-flex}.audit-size-warning.svelte-1h5puht{color:var(--warning);margin-top:8px;font-size:12px}.audit-request-response.svelte-1bc5vi5{margin-top:4px}.audit-pane-tablist.svelte-1bc5vi5{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:2px;display:flex}.audit-pane-tab.svelte-1bc5vi5{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-bottom-color:#0000;border-radius:6px 6px 0 0;align-items:center;gap:8px;margin-bottom:-1px;margin-right:12px;padding:8px 12px;font-family:inherit;font-size:13px;transition:color .15s,border-color .15s,background-color .15s;display:inline-flex}.audit-pane-tab.svelte-1bc5vi5:not(.audit-pane-tab-active):hover{color:var(--text);background:color-mix(in srgb, var(--text) 5%, transparent)}.audit-pane-tab-active.svelte-1bc5vi5{color:var(--text);border-color:var(--border);border-bottom-color:var(--bg);background:var(--bg)}.audit-pane-tab-label.svelte-1bc5vi5{font-weight:600}.audit-pane-tabpanel.svelte-1bc5vi5{min-width:0}.audit-pane-icon.svelte-1bc5vi5{color:var(--text-muted);flex:none;align-items:center;display:inline-flex}.audit-pane-icon.svelte-1bc5vi5.audit-pane-icon-request{color:var(--accent)}.audit-pane-icon.svelte-1bc5vi5.audit-pane-icon-response{color:var(--info)}.audit-pane-icon.svelte-1bc5vi5 svg{width:16px;height:16px}.audit-pane-seq.svelte-1bc5vi5{color:var(--text-muted);font-size:12px}.audit-pane-kind.svelte-1bc5vi5{text-transform:uppercase;letter-spacing:.04em;font-size:10px;font-weight:600}.audit-pane-kind.svelte-1bc5vi5.audit-pane-kind-primary{color:var(--text-muted)}.audit-pane-kind.svelte-1bc5vi5.audit-pane-kind-failover{color:var(--accent);background:color-mix(in srgb, var(--accent) 14%, var(--bg));border-color:color-mix(in srgb, var(--accent) 30%, var(--border))}.audit-pane-kind.svelte-1bc5vi5.audit-pane-kind-retry{color:var(--warning);background:color-mix(in srgb, var(--warning) 14%, var(--bg));border-color:color-mix(in srgb, var(--warning) 30%, var(--border))}.audit-savings-pill.svelte-1bc5vi5{border:1px solid color-mix(in srgb, var(--prompt-cache-color) 45%, var(--border));background:var(--prompt-cache-color-bg);color:var(--prompt-cache-color);letter-spacing:.02em;border-radius:999px;align-items:center;padding:1px 7px;font-size:11px;font-weight:700;display:inline-flex}.audit-step-pill.svelte-1bc5vi5{border:1px dashed var(--border);color:var(--text-muted);letter-spacing:.02em;border-radius:999px;align-items:center;padding:1px 7px;font-size:11px;display:inline-flex}.audit-entry.svelte-cmjgwr{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);transition:background .12s ease-out,border-color .12s ease-out;overflow:hidden}.audit-entry-interactions-open.svelte-cmjgwr{border-width:2px;border-color:color-mix(in srgb, var(--prompt-cache-color) 38%, var(--border))}.audit-entry-details.svelte-cmjgwr{border-top:1px solid var(--border);background:var(--bg-surface);padding:12px;overflow:hidden}.audit-thread.svelte-pneivi{flex-direction:column;gap:10px;display:flex}.audit-thread-children.svelte-pneivi{flex-direction:column;gap:10px;margin-left:26px;display:flex}.audit-thread-child.svelte-pneivi,.audit-thread-loading.svelte-pneivi{position:relative}.audit-thread-child.svelte-pneivi:before,.audit-thread-loading.svelte-pneivi:before{content:"";border-left:1px solid var(--border);border-bottom:1px solid var(--border);pointer-events:none;border-bottom-left-radius:6px;width:12px;height:calc(50% + 10px);position:absolute;top:-10px;left:-14px}.audit-thread-child.svelte-pneivi:not(:last-child):after{content:"";border-left:1px solid var(--border);pointer-events:none;position:absolute;top:50%;bottom:-10px;left:-14px}.audit-thread-loading.svelte-pneivi{padding:6px 0 6px 4px;display:flex}.audit-thread-more.svelte-pneivi{color:var(--text-muted);padding-left:4px;font-size:12px}.audit-log-loading.svelte-1nhcbov{justify-content:center;padding:2rem 0;display:flex}.audit-list-toolbar.svelte-1nhcbov{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.audit-list-toolbar-left.svelte-1nhcbov{flex-wrap:wrap;align-items:center;gap:16px;display:inline-flex}.audit-group-checkbox.svelte-1nhcbov{color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:7px;font-size:13px;display:inline-flex}.audit-group-checkbox.svelte-1nhcbov input:where(.svelte-1nhcbov){accent-color:var(--accent);cursor:pointer}.audit-retention-note.svelte-1nhcbov{color:var(--text-muted);font-size:13px}.audit-retention-highlight.svelte-1nhcbov{color:var(--text);font-weight:600}.audit-log-section.svelte-1nhcbov{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px}.audit-log-summary.svelte-1nhcbov{color:var(--text-muted);font-size:13px}.audit-log-list.svelte-1nhcbov{flex-direction:column;gap:10px;display:flex}.settings-guardrails-list.svelte-1bvx512{min-width:0}.settings-guardrail-type-pill.svelte-1bvx512{border:1px solid color-mix(in srgb, var(--accent) 18%, var(--border));background:color-mix(in srgb, var(--accent) 12%, transparent);color:var(--text);white-space:nowrap;border-radius:999px;align-items:center;padding:6px 10px;font-size:12px;font-weight:600;display:inline-flex}.settings-guardrail-summary.svelte-1bvx512{color:var(--text);font-size:14px;line-height:1.45}.settings-guardrail-description.svelte-1bvx512{color:var(--text-muted);margin-top:6px;font-size:12px}.model-editor.guardrails-editor-wide{width:min(1080px,100%)}.form-field-fieldset.svelte-s964s3{border:0;min-inline-size:0;margin:0;padding:0}.form-field-legend.svelte-s964s3{color:var(--text-muted);letter-spacing:.5px;text-transform:uppercase;padding:0;font-size:12px;font-weight:600}.model-editor.settings-guardrails-editor{min-width:0}.settings-guardrails-hero.svelte-5x874c{border:1px solid color-mix(in srgb, var(--accent) 14%, var(--border));border-radius:var(--radius);background:radial-gradient(circle at top right, color-mix(in srgb, var(--accent-hover) 18%, transparent), transparent 42%), radial-gradient(circle at bottom left, color-mix(in srgb, var(--accent) 16%, transparent), transparent 40%), var(--bg-surface);justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:20px;padding:24px;display:flex}.settings-kicker.svelte-5x874c{color:var(--accent);letter-spacing:.08em;text-transform:uppercase;margin:0 0 10px;font-size:11px;font-weight:700}.settings-guardrails-hero.svelte-5x874c h3{margin-bottom:8px}.settings-guardrails-hero.svelte-5x874c p:last-child{color:var(--text-muted);margin-bottom:0}.settings-guardrails-meta.svelte-5x874c{gap:12px;display:flex}.settings-guardrails-stat.svelte-5x874c{border:1px solid color-mix(in srgb, var(--accent) 14%, var(--border));background:color-mix(in srgb, var(--bg-surface-hover) 76%, transparent);border-radius:16px;min-width:110px;padding:14px 16px}.settings-guardrails-stat-label.svelte-5x874c{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;margin-bottom:8px;font-size:11px;font-weight:700;display:block}.settings-guardrails-stat.svelte-5x874c strong{font-size:24px;font-weight:700}@media (width<=768px){.settings-guardrails-hero.svelte-5x874c{flex-direction:column}.settings-guardrails-meta.svelte-5x874c{width:100%}.settings-guardrails-stat.svelte-5x874c{flex:1 1 0}}.mcp-catalog-section.svelte-1xqrzco{margin-top:18px}.mcp-catalog-section.svelte-1xqrzco .form-field-label{margin-bottom:8px}.mcp-catalog-subtitle.svelte-1xqrzco{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.mcp-catalog-list.svelte-1xqrzco{flex-direction:column;gap:12px;margin:0 0 8px;padding:0;list-style:none;display:flex}.mcp-catalog-item-name.svelte-1xqrzco{overflow-wrap:anywhere;font-size:13px}.mcp-catalog-item-aggregated.svelte-1xqrzco{color:var(--text-muted);overflow-wrap:anywhere;margin-top:2px;font-size:11px}.mcp-catalog-item-description.svelte-1xqrzco{color:var(--text-muted);margin:2px 0 0;font-size:13px;font-weight:400}.mcp-server-sub-counts.svelte-ah8nrt{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;max-width:280px;margin-top:4px;font-size:11px;overflow:hidden}.mcp-server-table-wrapper.svelte-ah8nrt{overflow-x:auto}.mcp-server-table-wrapper.svelte-ah8nrt .data-table{min-width:860px}.auth-key-form-fields.svelte-1gswxes>.form-field{margin-bottom:4px}.auth-key-dashboard-toggle.svelte-1gswxes{cursor:pointer;align-items:center;gap:8px;font-size:13px;display:inline-flex}.auth-key-issued-banner.svelte-1gswxes{background:color-mix(in srgb, var(--success) 8%, var(--bg-surface));border:1px solid color-mix(in srgb, var(--success) 30%, var(--border));border-radius:var(--radius);margin-bottom:20px;padding:16px}.auth-key-issued-warning.svelte-1gswxes{color:color-mix(in srgb, var(--success) 80%, var(--text));margin-bottom:12px;font-size:13px;font-weight:600}.auth-key-issued-value-row.svelte-1gswxes{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;display:flex}.auth-key-issued-token.svelte-1gswxes{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);word-break:break-all;flex:1;min-width:0;padding:8px 12px;font-size:13px;overflow-x:auto}.usage-label-chip-static.svelte-nf0ldb,.usage-label-chip-static.svelte-nf0ldb:hover{cursor:default;background:color-mix(in srgb, var(--label-color,var(--accent)) 14%, var(--bg))}.auth-key-redacted.svelte-nf0ldb{color:var(--text-muted);font-size:13px}.auth-key-actions-cell.svelte-nf0ldb{white-space:nowrap}.auth-key-row-deactivated.svelte-nf0ldb td:where(.svelte-nf0ldb):not(.auth-key-actions-cell){opacity:.55}.auth-key-expiry.svelte-nf0ldb{white-space:nowrap;align-items:center;gap:8px;display:inline-flex}.auth-key-th-help.svelte-nf0ldb{cursor:help;align-items:center;gap:4px;display:inline-flex}.auth-key-row-actions.svelte-nf0ldb{align-items:center;gap:6px;display:inline-flex}.auth-keys-loading.svelte-1xpdcqx{justify-content:center;align-items:center;padding:32px 0;display:flex}.auth-keys-help-notice.svelte-1xpdcqx{margin-bottom:20px}.auth-keys-inactive-toggle.svelte-1xpdcqx{color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;align-items:center;gap:8px;font-size:13px;display:inline-flex}.auth-keys-inactive-toggle.svelte-1xpdcqx input:where(.svelte-1xpdcqx){width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.locale-settings.svelte-hr6ahz{grid-template-columns:minmax(280px,420px)}.locale-selector-label.svelte-hr6ahz{color:var(--text);font-size:18px;font-weight:600}.settings-panel-header.svelte-15kyv2y{justify-content:space-between;gap:16px;margin-bottom:20px;display:flex}.settings-panel-header.svelte-15kyv2y h3{font-size:18px}.settings-form-grid.svelte-15kyv2y{grid-template-columns:minmax(280px,420px);gap:16px;display:grid}@media (width<=768px){.settings-form-grid.svelte-15kyv2y{grid-template-columns:1fr}}.budget-settings-section.svelte-a747ys{width:100%}.budget-settings-grid.svelte-a747ys{gap:12px;display:grid}.budget-settings-row.svelte-a747ys{grid-template-columns:96px minmax(170px,1fr) minmax(110px,140px) minmax(110px,140px) minmax(220px,280px);align-items:start;gap:12px;display:grid}.budget-settings-period.svelte-a747ys{color:var(--text);letter-spacing:0;text-transform:uppercase;align-self:end;min-height:35px;padding-bottom:9px;font-size:12px;font-weight:700}.budget-settings-spacer.svelte-a747ys{min-height:1px}.budget-settings-help-cell.svelte-a747ys{align-self:start;min-width:0;min-height:35px}.budget-settings-help-cell.svelte-a747ys .inline-help-copy{max-width:280px;margin:22px 0 0;font-size:12px;line-height:1.35}@media (width<=768px){.budget-settings-grid.svelte-a747ys,.budget-settings-row.svelte-a747ys{grid-template-columns:1fr}.budget-settings-spacer.svelte-a747ys{display:none}}.tagging-settings-grid.svelte-18e8yem{gap:12px;display:grid}.tagging-settings-row.svelte-18e8yem{grid-template-columns:minmax(170px,1fr) minmax(150px,1fr) minmax(80px,110px) auto minmax(90px,auto);align-items:end;gap:12px;display:grid}.tagging-do-not-pass.svelte-18e8yem{color:var(--text);white-space:nowrap;align-items:center;gap:6px;min-height:35px;font-size:13px;display:flex}.tagging-row-trailer.svelte-18e8yem{align-items:center;gap:8px;min-height:35px;display:flex}.tagging-settings-empty.svelte-18e8yem{color:var(--text-muted);margin:0}.tagging-settings-actions.svelte-18e8yem{flex-wrap:wrap;gap:10px;display:flex}@media (width<=768px){.tagging-settings-row.svelte-18e8yem{grid-template-columns:1fr;align-items:stretch}.tagging-settings-actions.svelte-18e8yem,.tagging-settings-actions.svelte-18e8yem .btn{width:100%}}.pricing-recalculate-section.svelte-1cdxzyk{width:100%}.pricing-recalculate-grid.svelte-1cdxzyk{grid-template-columns:minmax(220px,320px) minmax(260px,360px);justify-content:start;align-items:end;gap:12px;width:100%;display:grid}.pricing-recalculate-date-field.svelte-1cdxzyk{grid-column:1/-1;width:100%;max-width:320px}.pricing-recalculate-filter-field.svelte-1cdxzyk{width:100%;max-width:360px}.pricing-recalculate-date-field.svelte-1cdxzyk .date-picker{width:100%}.pricing-recalculate-date-field.svelte-1cdxzyk .date-picker-trigger{justify-content:space-between;width:100%}.pricing-recalculate-actions.svelte-1cdxzyk{flex-wrap:wrap;gap:10px;display:flex}@media (width<=768px){.pricing-recalculate-grid.svelte-1cdxzyk{grid-template-columns:1fr}.pricing-recalculate-actions.svelte-1cdxzyk,.pricing-recalculate-actions.svelte-1cdxzyk .btn{width:100%}}.pricing-recalculate-date-field.svelte-1cdxzyk .date-picker-dropdown{inset:auto auto calc(100% + 6px) 0}.settings-refresh-icon.svelte-yeq2mp{flex:0 0 16px;width:16px;height:16px}.runtime-refresh-steps.svelte-yeq2mp{color:var(--text-muted);gap:8px;margin-top:14px;padding-left:18px;font-size:13px;display:grid}.runtime-refresh-step.is-ok.svelte-yeq2mp{color:var(--success)}.runtime-refresh-step.is-partial.svelte-yeq2mp{color:var(--warning)}.runtime-refresh-step.is-failed.svelte-yeq2mp{color:var(--danger)}.runtime-settings-copy.svelte-tldbe5{min-width:180px}.runtime-settings-fields.svelte-tldbe5{gap:16px;width:min(560px,100%);display:grid}.runtime-setting-row.svelte-tldbe5{grid-template-columns:minmax(220px,1fr) 180px;align-items:center;gap:20px;display:grid}.runtime-setting-description.svelte-tldbe5,.runtime-setting-managed.svelte-tldbe5{color:var(--text-muted);margin:4px 0 0;font-size:12px}.runtime-setting-managed.svelte-tldbe5{color:var(--warning)}@media (width<=720px){.runtime-setting-row.svelte-tldbe5{grid-template-columns:1fr;gap:8px}}.settings-version-footer.svelte-3naq7u{color:var(--text-muted);text-align:right;margin-top:24px;font-size:12px}.chat-message.svelte-12s99s5{border:1px solid var(--border);background:var(--bg);border-radius:10px;max-width:94%;padding:10px 42px 10px 12px;position:relative;overflow:hidden}.chat-message.is-anchor.svelte-12s99s5{border-color:color-mix(in srgb, var(--accent) 55%, var(--border));box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 25%, transparent)}.chat-message.is-after-anchor.svelte-12s99s5,.chat-function-note.is-after-anchor.svelte-12s99s5{opacity:.46}.chat-message.role-user.svelte-12s99s5{align-self:flex-start}.chat-message.role-assistant.svelte-12s99s5{background:color-mix(in srgb, var(--accent) 18%, var(--bg));align-self:flex-end}.chat-message.role-system.svelte-12s99s5{background:color-mix(in srgb, var(--warning) 10%, var(--bg));align-self:center;width:100%;max-width:100%}.chat-message.role-error.svelte-12s99s5{border-color:color-mix(in srgb, var(--danger) 55%, var(--border));background:color-mix(in srgb, var(--danger) 10%, var(--bg));align-self:flex-end}.chat-message.role-error.svelte-12s99s5 .chat-role:where(.svelte-12s99s5){color:color-mix(in srgb, var(--danger) 75%, var(--text-muted))}.chat-message-meta.svelte-12s99s5{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:6px;display:flex}.chat-role.svelte-12s99s5{text-transform:uppercase;letter-spacing:.4px;color:var(--text-muted);font-size:12px;font-weight:700}.chat-time.svelte-12s99s5{color:var(--text-muted);white-space:nowrap;font-size:11px}.chat-content.svelte-12s99s5{white-space:pre-wrap;overflow-wrap:break-word;color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:13px;line-height:1.5}.chat-message.svelte-12s99s5:before,.chat-function-note.svelte-12s99s5:before{content:"";z-index:0;pointer-events:none;opacity:var(--prompt-cache-visibility);background:linear-gradient(90deg, color-mix(in srgb, var(--prompt-cache-color) 18%, transparent) 0, color-mix(in srgb, var(--prompt-cache-color) 18%, transparent) var(--prompt-cache-fill), transparent var(--prompt-cache-fill), transparent 100%);transition:opacity .15s;position:absolute;inset:0}.chat-message.svelte-12s99s5>:where(.svelte-12s99s5),.chat-function-note.svelte-12s99s5>:where(.svelte-12s99s5){z-index:1;position:relative}.chat-message-copy.svelte-12s99s5{z-index:2;border:1px solid var(--border);background:color-mix(in srgb, var(--bg-surface) 92%, transparent);width:26px;height:26px;color:var(--text-muted);opacity:0;pointer-events:none;border-radius:6px;justify-content:center;align-items:center;padding:0;transition:opacity .12s,transform .12s,color .12s,background-color .12s,border-color .12s;display:inline-flex;position:absolute;bottom:6px;right:6px;transform:translateY(3px)}.chat-message.svelte-12s99s5:hover .chat-message-copy:where(.svelte-12s99s5),.chat-function-note.svelte-12s99s5:hover .chat-message-copy:where(.svelte-12s99s5),.chat-message.svelte-12s99s5:focus-within .chat-message-copy:where(.svelte-12s99s5),.chat-function-note.svelte-12s99s5:focus-within .chat-message-copy:where(.svelte-12s99s5),.chat-message-copy.is-copied.svelte-12s99s5{opacity:1;pointer-events:auto;transform:translateY(0)}.chat-message-copy.svelte-12s99s5:hover{color:var(--text);background:var(--bg-surface-hover)}.chat-message-copy.svelte-12s99s5:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 45%, transparent);outline-offset:1px}.chat-message-copy.is-copied.svelte-12s99s5{color:var(--success);border-color:color-mix(in srgb, var(--success) 45%, var(--border))}.chat-tool-calls.svelte-12s99s5{border-top:1px solid var(--border);flex-direction:column;gap:3px;margin-top:8px;padding-top:6px;display:flex}.chat-tool-call.svelte-12s99s5{color:var(--text-muted);border-radius:5px;min-width:0;padding:3px 5px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:11px;position:relative;overflow:hidden}.chat-tool-call-summary.svelte-12s99s5{cursor:pointer;align-items:baseline;gap:6px;min-width:0;display:flex}.chat-tool-call-preview.svelte-12s99s5{white-space:nowrap;text-overflow:ellipsis;opacity:.8;flex:1;min-width:0;overflow:hidden}.chat-tool-call-arguments.svelte-12s99s5{background:color-mix(in srgb, var(--border) 45%, transparent);color:var(--text);font:inherit;white-space:pre-wrap;overflow-wrap:anywhere;border-radius:6px;max-height:200px;margin-top:5px;padding:6px 8px;line-height:1.45;overflow:auto}.chat-tool-call-name.svelte-12s99s5:before{content:"⚡"}.chat-function-note.svelte-12s99s5{max-width:94%;color:var(--text-muted);background:color-mix(in srgb, var(--border) 40%, transparent);border:1px dashed var(--border);border-radius:12px;align-self:center;padding:4px 42px 4px 12px;font-size:12px;position:relative;overflow:hidden}.chat-function-note.is-anchor.svelte-12s99s5{border-color:color-mix(in srgb, var(--accent) 55%, var(--border))}.chat-function-note-inner.svelte-12s99s5{align-items:baseline;gap:6px;min-height:26px;display:flex;overflow:hidden}.chat-function-note-inner.svelte-12s99s5 .chat-time:where(.svelte-12s99s5){flex-shrink:0;margin-left:auto}.chat-function-call-id.svelte-12s99s5{color:var(--text-muted);overflow-wrap:anywhere;margin-top:6px;font-size:10px}.chat-function-label.svelte-12s99s5{text-transform:uppercase;letter-spacing:.3px;white-space:nowrap;flex-shrink:0;font-size:11px;font-weight:600}.chat-function-label.svelte-12s99s5:before{content:"▸";margin-right:4px;transition:transform .12s;display:inline-block}.chat-function-note-details[open].svelte-12s99s5 .chat-function-label:where(.svelte-12s99s5):before{transform:rotate(90deg)}.chat-function-detail.svelte-12s99s5{white-space:nowrap;text-overflow:ellipsis;font-family:SF Mono,Menlo,Consolas,monospace;font-size:11px;overflow:hidden}.chat-function-note.role-function-call.svelte-12s99s5{background:color-mix(in srgb, var(--accent) 8%, transparent);border-color:color-mix(in srgb, var(--accent) 30%, var(--border));align-self:flex-end}.chat-function-note.role-function-result.svelte-12s99s5{background:color-mix(in srgb, var(--success) 8%, transparent);border-color:color-mix(in srgb, var(--success) 30%, var(--border));align-self:flex-start}.chat-function-note.is-anchor.role-function-call.svelte-12s99s5,.chat-function-note.is-anchor.role-function-result.svelte-12s99s5{border-color:color-mix(in srgb, var(--accent) 55%, var(--border))}.chat-function-note-details.svelte-12s99s5{width:100%}.chat-function-note-details.svelte-12s99s5>summary{cursor:pointer;list-style:none}.chat-function-note-details.svelte-12s99s5>summary::-webkit-details-marker{display:none}.chat-function-expanded.svelte-12s99s5{border-top:1px solid var(--border);white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text);max-height:200px;margin-top:6px;padding-top:6px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:11px;line-height:1.45;overflow:auto}@media (width<=768px){.chat-message.svelte-12s99s5{max-width:100%}}@media (hover:none){.chat-message-copy.svelte-12s99s5{opacity:1;pointer-events:auto;transform:none}}@media (prefers-reduced-motion:reduce){.chat-message-copy.svelte-12s99s5{transition:none}}.conversation-drawer.svelte-ssrzja{width:var(--conversation-panel-width);background:var(--bg-surface);border-left:1px solid var(--border);z-index:12;flex-direction:column;flex:none;min-width:0;height:100vh;display:flex;position:sticky;top:0}.conversation-drawer-fullscreen.svelte-ssrzja{z-index:70;border-left:0;flex-basis:auto;width:100vw;height:100dvh;position:fixed;inset:0}.conversation-drawer-fullscreen.svelte-ssrzja .conversation-resize-handle:where(.svelte-ssrzja){display:none}.conversation-resize-handle.svelte-ssrzja{z-index:2;cursor:col-resize;touch-action:none;background:0 0;border:0;border-radius:0;outline:none;width:10px;padding:0;position:absolute;top:0;bottom:0;left:-5px}.conversation-resize-handle.svelte-ssrzja:after{content:"";background:0 0;width:2px;transition:background .15s;position:absolute;top:0;bottom:0;left:4px}.conversation-resize-handle.svelte-ssrzja:hover:after,.conversation-resize-handle.svelte-ssrzja:focus-visible:after{background:color-mix(in srgb, var(--accent) 70%, var(--border))}body.conversation-panel-resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}.conversation-drawer-header.svelte-ssrzja{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:10px;padding:14px 16px;display:flex}.conversation-drawer-header-actions.svelte-ssrzja{align-items:center;gap:6px;display:flex}.conversation-drawer-title.svelte-ssrzja{align-items:center;gap:9px;min-width:0;display:flex}.conversation-follow-status.svelte-ssrzja{justify-content:center;align-items:center;margin:-4px;padding:4px;display:inline-flex}.conversation-drawer-header.svelte-ssrzja h3{font-size:16px;font-weight:700}#interactions-drawer-content.svelte-ssrzja{position:relative}.conversation-message-navigation.svelte-ssrzja{z-index:4;opacity:0;pointer-events:none;flex-direction:column;gap:4px;width:max-content;height:0;margin-left:auto;margin-right:12px;transition:opacity .12s,transform .12s;display:flex;position:sticky;top:12px;transform:translateY(-3px)}#interactions-drawer-content.svelte-ssrzja:hover .conversation-message-navigation:where(.svelte-ssrzja),.conversation-message-navigation.svelte-ssrzja:focus-within{opacity:1;pointer-events:auto;transform:translateY(0)}.conversation-message-navigation.svelte-ssrzja button:where(.svelte-ssrzja){border:1px solid var(--border);background:color-mix(in srgb, var(--bg-surface) 94%, transparent);width:30px;height:30px;min-height:30px;color:var(--text-muted);border-radius:6px;justify-content:center;align-items:center;padding:0;display:inline-flex;box-shadow:0 1px 3px #00000029}.conversation-message-navigation.svelte-ssrzja button:where(.svelte-ssrzja):hover{color:var(--text);background:var(--bg-surface-hover)}.conversation-message-navigation.svelte-ssrzja button:where(.svelte-ssrzja):focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 45%, transparent);outline-offset:1px}.conversation-drawer-footer.svelte-ssrzja{border-top:1px solid var(--border);background:var(--bg-surface);flex-direction:column;flex-shrink:0;gap:9px;padding:10px 16px;display:flex}.conversation-composer.svelte-ssrzja{flex-direction:column;gap:7px;display:flex}.conversation-composer.svelte-ssrzja textarea:where(.svelte-ssrzja){resize:vertical;border:1px solid var(--border);background:var(--bg);width:100%;min-height:50px;color:var(--text);font:inherit;border-radius:7px;padding:9px 10px;line-height:1.45}.conversation-composer.svelte-ssrzja textarea:where(.svelte-ssrzja):focus{outline:2px solid color-mix(in srgb, var(--accent) 38%, transparent);outline-offset:1px}.conversation-composer.svelte-ssrzja textarea:where(.svelte-ssrzja):disabled{opacity:.65}.conversation-composer-actions.svelte-ssrzja{justify-content:space-between;align-items:center;gap:10px;display:flex}.conversation-endpoint.svelte-ssrzja{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-muted);font-size:11px;overflow:hidden}.conversation-send-error.svelte-ssrzja{color:var(--danger);font-size:12px}.conversation-truncated.svelte-ssrzja{color:var(--text-muted);padding:0 16px 14px;font-size:12px}.conversation-cache-legend.svelte-ssrzja{color:var(--text-muted);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:7px;margin:12px 16px 0;padding:0;font-family:inherit;font-size:11px;display:flex}.conversation-cache-legend.svelte-ssrzja:hover{color:var(--text)}.conversation-cache-legend.svelte-ssrzja:focus-visible{outline:2px solid color-mix(in srgb, var(--prompt-cache-color) 35%, transparent);outline-offset:3px;border-radius:3px}.conversation-cache-switch.svelte-ssrzja{background:color-mix(in srgb, var(--text-muted) 30%, var(--border));border-radius:999px;flex:none;width:28px;height:16px;transition:background-color .15s;position:relative}.conversation-cache-switch.is-active.svelte-ssrzja{background:color-mix(in srgb, var(--prompt-cache-color) 80%, var(--bg))}.conversation-cache-switch-thumb.svelte-ssrzja{background:#fff;border-radius:50%;width:12px;height:12px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #0000003d}.conversation-cache-switch.is-active.svelte-ssrzja .conversation-cache-switch-thumb:where(.svelte-ssrzja){transform:translate(12px)}.conversation-cache-estimate.svelte-ssrzja{opacity:.75}.conversation-thread.svelte-ssrzja{flex-direction:column;gap:10px;padding:14px 16px 20px;display:flex}.conversation-live-status.svelte-ssrzja{color:var(--text-muted);align-items:center;gap:10px;padding:4px 16px 20px;font-size:13px;display:flex}@media (hover:none){.conversation-message-navigation.svelte-ssrzja{opacity:1;pointer-events:auto;transform:none}}@media (prefers-reduced-motion:reduce){.conversation-message-navigation.svelte-ssrzja{transition:none}} diff --git a/internal/admin/dashboard/static/dist/index.html b/internal/admin/dashboard/static/dist/index.html index 08787b542..5ad05ddc1 100644 --- a/internal/admin/dashboard/static/dist/index.html +++ b/internal/admin/dashboard/static/dist/index.html @@ -7,8 +7,8 @@ GoModel Dashboard - - + +
                    diff --git a/web/dashboard/messages/en.json b/web/dashboard/messages/en.json index a59696b0a..908e0cdd7 100644 --- a/web/dashboard/messages/en.json +++ b/web/dashboard/messages/en.json @@ -16,6 +16,363 @@ "navigation_guardrails_experimental": "Guardrails (experimental)", "navigation_mcp_servers": "MCP Servers", "navigation_settings": "Settings", + "overview_usage_title": "Usage Overview", + "usage_interval_label": "Usage chart interval", + "usage_interval_daily": "Daily", + "usage_interval_weekly": "Weekly", + "usage_interval_monthly": "Monthly", + "usage_interval_yearly": "Yearly", + "usage_loading": "Loading usage", + "settings_title": "Settings", + "common_action_clear": "Clear", + "common_action_expand": "expand", + "common_action_collapse": "collapse", + "common_action_send": "Send", + "common_action_sending": "Sending…", + "common_copy_failed": "Copy failed", + "audit_title": "Audit Logs", + "audit_retention_help_label": "Retention help", + "audit_retention_help": "To change the retention period, set LOGGING_RETENTION_DAYS (environment variable) or logging.retention_days (config.yaml) and restart the gateway. The default is 30 days; 0 keeps audit logs forever.", + "audit_retention_prefix_indefinite": "Audit logs are retained ", + "audit_retention_prefix_days": "Audit logs are retained for ", + "audit_retention_indefinitely": "indefinitely", + "audit_retention_days": [ + { + "declarations": ["input count", "local count_plural = count: plural"], + "selectors": ["count_plural"], + "match": { + "count_plural=one": "{count} day", + "count_plural=*": "{count} days" + } + } + ], + "audit_logging_disabled_before_config": "Audit logging is off. Live entries are temporary and disappear after refresh. Set ", + "audit_logging_disabled_after_config": " to persist them.", + "audit_summary_sessions": "Showing {start}–{end} of {total} sessions", + "audit_summary_logs": "Showing {start}–{end} of {total} logs", + "audit_group_by_session": "Group by session", + "audit_loading": "Loading audit logs", + "audit_search_placeholder": "Search by request ID, model, provider, path, user path, or error…", + "audit_search_label": "Search by request ID, model, provider, path, user path, or error", + "audit_filter_method_label": "HTTP method filter", + "audit_filter_all_methods": "All Methods", + "audit_filter_status_label": "Status code filter", + "audit_filter_all_statuses": "All Statuses", + "audit_filter_stream_label": "Streaming mode filter", + "audit_filter_all_modes": "All Modes", + "audit_filter_streaming": "Streaming", + "audit_filter_non_streaming": "Non-streaming", + "audit_live_connecting": "Live stream connecting…", + "audit_live": "Live", + "audit_live_pause_date_range": "Live paused — the selected date range does not include today. Set it to today to resume.", + "audit_live_pause_filters": "Live paused while filters are active. Clear them to resume.", + "audit_live_pause_pagination": "Live paused on later pages. Go to the first page to resume.", + "audit_session_description": [ + { + "declarations": ["input count", "local count_plural = count: plural"], + "selectors": ["count_plural"], + "match": { + "count_plural=one": "Session with {count} request", + "count_plural=*": "Session with {count} requests" + } + } + ], + "audit_status": "Status {status} · {method}", + "audit_open_interactions": "Open interactions", + "audit_close_interactions": "Close interactions", + "audit_loading_session_requests": "Loading session requests", + "audit_thread_summary": "Showing the latest {shown} of {total} requests in this session.", + "audit_metadata_label": "Metadata:", + "audit_error_message_title": "Error Message", + "audit_headers_title": "Headers", + "audit_copy_headers": "Copy Headers", + "audit_body_title": "Body", + "audit_streaming": "streaming", + "audit_copy_body": "Copy Body", + "audit_request_response_label": "Request and response", + "audit_rewrite_savings_help": "Share of the request body removed by this rewrite", + "audit_request_title": "Request", + "audit_response_title": "Response", + "audit_rewritten_title": "Rewritten", + "audit_what_changed_title": "What changed", + "audit_attempt_failed": "Provider attempt failed", + "audit_provider_attempts": [ + { + "declarations": ["input count", "local count_plural = count: plural"], + "selectors": ["count_plural"], + "match": { + "count_plural=one": "{count} provider attempt", + "count_plural=*": "{count} provider attempts" + } + } + ], + "audit_provider_attempts_failed": "{count} provider attempts · {failed} failed", + "audit_attempt_succeeded": "succeeded", + "audit_attempt_failed_status": "failed", + "audit_attempt_not_captured": "No response was captured for this attempt.", + "audit_request_not_captured": "Request details were not captured.", + "audit_waiting_request_data": "Waiting for request data…", + "audit_request_body_too_large": "Request body was too large to capture.", + "audit_response_not_captured": "Response details were not captured.", + "audit_response_in_progress": "Response in progress…", + "audit_response_body_too_large": "Response body was too large to capture.", + "audit_rewritten_body_not_captured": "Rewritten body not captured (body logging disabled or body too large).", + "audit_rewriter_no_change": "{rewriter}: no change", + "audit_rewriter_unchanged_help": "{rewriter} ran and forwarded the request unchanged", + "audit_cached_count": "{count} cached", + "audit_cached_percent": "{percent}% cached", + "audit_audio_too_large": "Audio too large to store.", + "audit_audio_not_logged": "Audio not logged. Set LOGGING_LOG_AUDIO_BODIES=true to capture playable audio.", + "interaction_resize_label": "Resize interactions panel", + "interaction_title": "Interactions", + "interaction_following_latest": "Following the latest interaction", + "interaction_viewing_history": "Viewing a historical interaction", + "interaction_following_latest_help": "Following the latest interaction as new events arrive", + "interaction_viewing_history_help": "Viewing a historical interaction; live updates are not followed", + "interaction_exit_fullscreen": "Exit fullscreen interactions", + "interaction_show_fullscreen": "Show interactions fullscreen", + "interaction_exit_fullscreen_short": "Exit fullscreen", + "interaction_fullscreen": "Fullscreen", + "interaction_close": "Close interactions", + "interaction_navigation": "Navigate interaction messages", + "interaction_previous_message": "Previous message", + "interaction_next_message": "Next message", + "interaction_loading": "Loading interactions…", + "interaction_empty": "No interaction data available for this entry.", + "interaction_hide_cache_fill": "Hide estimated provider prompt-cache fill", + "interaction_show_cache_fill": "Show estimated provider prompt-cache fill", + "interaction_cache_legend": "Blue fill shows cached prompt share", + "interaction_estimated": "(estimated)", + "interaction_truncated": "Showing the newest part of this session and the selected log.", + "interaction_send_label": "Send a message", + "interaction_placeholder": "Continue this interaction…", + "interaction_model_responding": "Model is responding…", + "interaction_load_unavailable": "Unable to load interactions.", + "interaction_load_failed": "Failed to load interactions.", + "interaction_send_unavailable": "Unable to send message.", + "interaction_request_timed_out": "The request timed out.", + "interaction_send_failed": "Failed to send message.", + "interaction_saved_unavailable": "Message sent, but its saved interaction is not available yet.", + "interaction_role_system": "System Prompt", + "interaction_role_agent": "Agent", + "interaction_role_error": "Error", + "interaction_role_function_call": "Function Call", + "interaction_role_function_result": "Function Result", + "interaction_role_user": "User", + "interaction_attachment_image": "[Image]", + "interaction_attachment_audio": "[Audio]", + "interaction_attachment_file": "[File]", + "interaction_attachment_named_file": "[File: {name}]", + "interaction_message_copied": "Message copied", + "interaction_copy_message": "Copy message", + "interaction_prompt_cache_estimate": "{percent}% of this visible prompt item is estimated provider-cached", + "interaction_call_id": "Call ID", + "interaction_call_id_named": "Call ID ({name})", + "interaction_no_arguments": "No arguments", + "common_copied": "Copied", + "overview_tokens": "Tokens", + "overview_input_tokens": "Input tokens", + "overview_output_tokens": "Output tokens", + "overview_input_tokens_series": "Input Tokens", + "overview_output_tokens_series": "Output Tokens", + "overview_total_tokens": "Total tokens", + "overview_total_requests": "Total Requests", + "overview_cache_hits": "Cache Hits", + "overview_estimated_cost": "Estimated Cost", + "overview_local_cache": "Local Cache", + "overview_prompt_cache_rate": "Prompt Cache Rate", + "overview_prompt_cache_rate_help": "Share of input tokens served from the provider prompt cache over the selected period", + "overview_prompt_cache_rate_label": "Prompt cache rate {rate}", + "overview_provider_status": "Provider Status", + "overview_view_providers": "View providers overview", + "overview_view_mcp_servers": "View MCP servers", + "overview_requests_by_status": "Requests by Status", + "overview_request_status_summary": "Request status summary", + "overview_success_rate_help": "Share of requests answered with a 2xx status", + "overview_success": "Success", + "overview_provider_latency": "Provider Latency", + "overview_provider_latency_help_label": "Provider latency help", + "overview_provider_latency_help": "Average duration of successful requests measured at the gateway for each provider. Local cache hits and failed requests are excluded; streamed responses count until the stream completes.", + "overview_provider_latency_average_help": "Average duration of successful, uncached requests across all providers", + "overview_average_short": "Avg", + "overview_providers_title": "Providers Overview", + "overview_loading_provider_status": "Loading provider status", + "overview_show_details": "Show Details", + "overview_hide_details": "Hide Details", + "overview_view_provider_docs": "View {provider} provider docs", + "overview_models_available": "Models Available", + "overview_last_checked": "Last Checked", + "overview_expand_provider_details": "Expand {provider} details", + "overview_collapse_provider_details": "Collapse {provider} details", + "overview_expand_details": "Expand details", + "overview_collapse_details": "Collapse details", + "overview_base_url": "Base URL", + "overview_api_version": "API Version", + "overview_recent_requests": "Recent Requests", + "overview_breaker_state": "Breaker State", + "overview_models_recent_traffic": "Models (Recent Traffic)", + "overview_configured_models": "Configured Models", + "overview_retry": "Retry", + "overview_circuit_breaker": "Circuit Breaker", + "overview_none_configured": "None configured", + "overview_all_healthy": "All healthy", + "overview_none_healthy": "None healthy", + "overview_automatic": "Automatic", + "overview_last_error": "Last error: {error}", + "overview_all_mcp_connected": "All MCP servers connected", + "overview_cache_share": "Share of input tokens over the selected period", + "overview_no_usage": "No usage in the selected period yet", + "overview_cache_regular": "Regular", + "overview_cache_regular_note": "Includes {count} cache-write tokens", + "overview_cache_prompt": "Prompt cached", + "overview_cache_prompt_note": "Provider prompt-cache reads", + "overview_cache_local": "Locally cached", + "overview_cache_local_note": "Served from GoModel response cache", + "overview_cache_breakdown_label": "Cache breakdown of input tokens — {details}", + "overview_activity": "Activity", + "overview_loading_activity": "Loading activity", + "overview_activity_mode": "Activity calendar mode", + "overview_costs": "Costs", + "overview_weekday_mon": "Mon", + "overview_weekday_wed": "Wed", + "overview_weekday_fri": "Fri", + "overview_less": "Less", + "overview_more": "More", + "overview_live_token_throughput": "Live Token Throughput", + "overview_live_granularity": "Live token throughput granularity", + "overview_waiting_live_requests": "Waiting for live requests…", + "overview_seconds": "Seconds", + "overview_minutes": "Minutes", + "overview_hours": "Hours", + "overview_days": "Days", + "overview_last_60_seconds": "Last 60 seconds", + "overview_last_60_minutes": "Last 60 minutes", + "overview_last_24_hours": "Last 24 hours", + "overview_last_30_days": "Last 30 days", + "overview_prompt_input_cached": "Prompt (Input) Cached", + "overview_locally_cached": "Locally Cached", + "overview_total_label": "Total: {total}", + "overview_total_requests_help": "{provider} to providers + {cache} from cache", + "overview_cache_segment_title": "{label}: {tokens} input tokens ({percent}%)", + "overview_no_data": "no data", + "overview_provider_attention": [ + { + "declarations": ["input count", "local count_plural = count: plural"], + "selectors": ["count_plural"], + "match": { + "count_plural=one": "{count} needs attention", + "count_plural=*": "{count} need attention" + } + } + ], + "overview_mcp_attention": "{count} servers need attention", + "overview_mcp_connected": "{connected} of {total} servers connected", + "overview_calendar_cost_year": "${total} in the last year", + "overview_calendar_tokens_year": "{total} tokens in the last year", + "overview_calendar_cost_on_date": "${total} on {date}", + "overview_calendar_tokens_on_date": "{total} tokens on {date}", + "overview_live_chart_label": "Live token throughput, {window}. Input {input}, output {output}, prompt cached {prompt}, locally cached {local} tokens.", + "overview_other": "Other", + "settings_timezone_title": "Timezone", + "settings_timezone_help_label": "Timezone help", + "settings_timezone_help": "Day-based analytics, charts, and date filters use your effective timezone. Usage and audit logs keep UTC in the hover title while rendering row timestamps in your effective timezone.", + "settings_timezone_override": "Timezone Override", + "settings_timezone_automatic": "Automatic ({timezone})", + "settings_timezone_use_browser": "Use Browser Timezone", + "settings_failover_title": "Failover", + "settings_failover_generating": "Generating…", + "settings_failover_generate": "Generate failover models automatically", + "settings_failover_remove_all": "Remove all failover models", + "settings_budget_reset_all_title": "Reset All Budgets", + "settings_budget_reset_all_help": "Start new budget periods for every configured budget without changing the limits.", + "settings_budget_reset_all_action": "Reset Budgets", + "settings_budget_help_label": "Budget help", + "settings_budget_help": "Budget reset anchors are stored in the database and evaluated in UTC. Hourly budgets reset at the top of each hour.", + "settings_budget_resets_title": "Budget Resets", + "settings_budget_monthly": "Monthly", + "settings_budget_weekly": "Weekly", + "settings_budget_daily": "Daily", + "settings_budget_day_of_month_help_label": "Day of month help", + "settings_budget_day_of_month": "Day of Month", + "settings_budget_day_of_month_help": "If the selected day does not exist in a month, the reset runs on the last day of that month.", + "settings_budget_day_of_week": "Day of Week", + "settings_budget_hour": "Hour", + "settings_budget_minute": "Minute", + "settings_budget_save": "Save Budget Settings", + "settings_budget_loading": "Loading budget settings", + "settings_budget_load_failed": "Unable to load budget settings.", + "settings_budget_save_failed": "Unable to save budget settings.", + "settings_budget_saved": "Budget settings saved.", + "settings_weekday_sunday": "Sunday", + "settings_weekday_monday": "Monday", + "settings_weekday_tuesday": "Tuesday", + "settings_weekday_wednesday": "Wednesday", + "settings_weekday_thursday": "Thursday", + "settings_weekday_friday": "Friday", + "settings_weekday_saturday": "Saturday", + "settings_tagging_title": "Tagging based on headers", + "settings_tagging_help_label": "Tagging help", + "settings_tagging_help": "Each request is labelled from the listed headers; labels appear in usage tracking and audit logs. A header value can contain multiple labels separated by the delimiter (comma by default). The prefix is trimmed only from each label—the header itself is forwarded unchanged unless Do not pass is selected. Rows marked CONFIG come from config.yaml or TAGGING_HEADER_* environment variables and are read-only here.", + "settings_tagging_header": "Header", + "settings_tagging_prefix": "Prefix to trim (optional)", + "settings_tagging_delimiter": "Delimiter", + "settings_tagging_do_not_pass": "Do not pass upstream", + "settings_tagging_config_help": "Declared in config.yaml or TAGGING_HEADER_* environment variables; read-only here.", + "settings_tagging_remove": "Remove", + "settings_tagging_remove_label": "Remove tagging header {header}", + "settings_tagging_loading": "Loading tagging settings", + "settings_tagging_empty": "No tagging headers configured. Requests are not labelled.", + "settings_tagging_add": "Add Header", + "settings_tagging_save": "Save Tagging Settings", + "settings_tagging_load_failed": "Unable to load tagging settings.", + "settings_tagging_save_failed": "Unable to save tagging settings.", + "settings_tagging_saved": "Tagging settings saved.", + "settings_runtime_refresh_title": "Runtime Refresh", + "settings_runtime_refresh_help_label": "Runtime refresh help", + "settings_runtime_refresh_help": "Pull the latest model metadata, provider inventory, API keys, aliases, model access rules, Guardrails, and Workflows.", + "settings_runtime_refresh_action": "Refresh", + "settings_runtime_refresh_completed": "Runtime refresh completed.", + "settings_runtime_refreshed": "Runtime refreshed.", + "settings_runtime_refresh_warnings": "Runtime refresh completed with warnings.", + "settings_runtime_refresh_failed": "Runtime refresh failed.", + "settings_runtime_processing_title": "AI Processing", + "settings_runtime_load_failed": "Unable to load runtime settings.", + "settings_runtime_save_failed": "Unable to save {setting}.", + "settings_runtime_saved": "{setting} saved.", + "settings_runtime_managed_by": "Managed by {source}", + "settings_runtime_environment": "environment", + "settings_pricing_title": "Usage Pricing Recalculation", + "settings_pricing_help_label": "Pricing recalculation help", + "settings_pricing_help": "Recalculate stored input, output, total, and Pro Saved costs from the current model pricing metadata. This overwrites matching historical cost fields. Filters apply to the selected date range, user path subtree, and provider/model selector or alias.", + "settings_pricing_date_range": "Date Range", + "settings_pricing_user_path": "User Path (optional)", + "settings_pricing_selector": "Provider/Model or Alias (optional)", + "settings_pricing_selector_placeholder": "openai/gpt-4o or smart", + "settings_pricing_action": "Recalculate Pricing", + "settings_pricing_unavailable": "Usage pricing recalculation is unavailable.", + "settings_pricing_confirmation": "recalculate", + "settings_pricing_confirmation_message": "Stored usage cost fields matching the selected filters will be overwritten.", + "settings_pricing_failed": "Unable to recalculate pricing.", + "settings_pricing_summary": [ + { + "declarations": ["input matched", "input recalculated", "local matched_plural = matched: plural"], + "selectors": ["matched_plural"], + "match": { + "matched_plural=one": "Pricing recalculated for {recalculated} of {matched} usage record.", + "matched_plural=*": "Pricing recalculated for {recalculated} of {matched} usage records." + } + } + ], + "settings_pricing_missing": [ + { + "declarations": ["input count", "local count_plural = count: plural"], + "selectors": ["count_plural"], + "match": { + "count_plural=one": "{count} usage record still lacks pricing metadata.", + "count_plural=*": "{count} usage records still lack pricing metadata." + } + } + ], "sidebar_action_sign_out": "Sign out", "sidebar_action_enter_api_key": "Enter API key", "sidebar_action_change_api_key": "Change API key", diff --git a/web/dashboard/messages/pl.json b/web/dashboard/messages/pl.json index bdbe99cc8..e4b70e43d 100644 --- a/web/dashboard/messages/pl.json +++ b/web/dashboard/messages/pl.json @@ -16,6 +16,342 @@ "navigation_guardrails_experimental": "Guardrails (eksperymentalne)", "navigation_mcp_servers": "Serwery MCP", "navigation_settings": "Ustawienia", + "overview_usage_title": "Przegląd zużycia", + "usage_interval_label": "Interwał wykresu zużycia", + "usage_interval_daily": "Dziennie", + "usage_interval_weekly": "Tygodniowo", + "usage_interval_monthly": "Miesięcznie", + "usage_interval_yearly": "Rocznie", + "usage_loading": "Wczytywanie danych o zużyciu", + "settings_title": "Ustawienia", + "common_action_clear": "Wyczyść", + "common_action_expand": "rozwiń", + "common_action_collapse": "zwiń", + "common_action_send": "Wyślij", + "common_action_sending": "Wysyłanie…", + "common_copy_failed": "Kopiowanie nie powiodło się", + "audit_title": "Logi audytowe", + "audit_retention_help_label": "Pomoc dotycząca retencji", + "audit_retention_help": "Aby zmienić okres retencji, ustaw LOGGING_RETENTION_DAYS (zmienna środowiskowa) lub logging.retention_days (config.yaml), a następnie uruchom gateway ponownie. Domyślna wartość to 30 dni; 0 przechowuje logi audytowe bezterminowo.", + "audit_retention_prefix_indefinite": "Logi audytowe są przechowywane ", + "audit_retention_prefix_days": "Logi audytowe są przechowywane przez ", + "audit_retention_indefinitely": "czas nieokreślony", + "audit_retention_days": [ + { + "declarations": ["input count", "local count_plural = count: plural"], + "selectors": ["count_plural"], + "match": { + "count_plural=one": "{count} dzień", + "count_plural=few": "{count} dni", + "count_plural=many": "{count} dni", + "count_plural=*": "{count} dnia" + } + } + ], + "audit_logging_disabled_before_config": "Rejestrowanie audytu jest wyłączone. Wpisy Live są tymczasowe i znikają po odświeżeniu. Ustaw ", + "audit_logging_disabled_after_config": ", aby je zachować.", + "audit_summary_sessions": "Wyświetlanie {start}–{end} z {total} sesji", + "audit_summary_logs": "Wyświetlanie {start}–{end} z {total} logów", + "audit_group_by_session": "Grupuj według sesji", + "audit_loading": "Wczytywanie logów audytowych", + "audit_search_placeholder": "Szukaj według ID żądania, modelu, dostawcy, ścieżki, ścieżki użytkownika lub błędu…", + "audit_search_label": "Szukaj według ID żądania, modelu, dostawcy, ścieżki, ścieżki użytkownika lub błędu", + "audit_filter_method_label": "Filtr metody HTTP", + "audit_filter_all_methods": "Wszystkie metody", + "audit_filter_status_label": "Filtr kodu statusu", + "audit_filter_all_statuses": "Wszystkie statusy", + "audit_filter_stream_label": "Filtr trybu streamingu", + "audit_filter_all_modes": "Wszystkie tryby", + "audit_filter_streaming": "Streaming", + "audit_filter_non_streaming": "Bez streamingu", + "audit_live_connecting": "Łączenie ze strumieniem Live…", + "audit_live": "Live", + "audit_live_pause_date_range": "Live wstrzymany — wybrany zakres dat nie obejmuje dzisiaj. Ustaw datę dzisiejszą, aby wznowić.", + "audit_live_pause_filters": "Live wstrzymany, gdy filtry są aktywne. Wyczyść je, aby wznowić.", + "audit_live_pause_pagination": "Live wstrzymany na dalszych stronach. Przejdź do pierwszej strony, aby wznowić.", + "audit_session_description": [ + { + "declarations": ["input count", "local count_plural = count: plural"], + "selectors": ["count_plural"], + "match": { + "count_plural=one": "Sesja z {count} żądaniem", + "count_plural=few": "Sesja z {count} żądaniami", + "count_plural=many": "Sesja z {count} żądaniami", + "count_plural=*": "Sesja z {count} żądania" + } + } + ], + "audit_status": "Status {status} · {method}", + "audit_open_interactions": "Otwórz interakcje", + "audit_close_interactions": "Zamknij interakcje", + "audit_loading_session_requests": "Wczytywanie żądań sesji", + "audit_thread_summary": "Wyświetlanie najnowszych {shown} z {total} żądań w tej sesji.", + "audit_metadata_label": "Metadane:", + "audit_error_message_title": "Komunikat błędu", + "audit_headers_title": "Nagłówki", + "audit_copy_headers": "Kopiuj nagłówki", + "audit_body_title": "Treść", + "audit_streaming": "streaming", + "audit_copy_body": "Kopiuj treść", + "audit_request_response_label": "Żądanie i odpowiedź", + "audit_rewrite_savings_help": "Część treści żądania usunięta podczas tego przetwarzania", + "audit_request_title": "Żądanie", + "audit_response_title": "Odpowiedź", + "audit_rewritten_title": "Po przetworzeniu", + "audit_what_changed_title": "Co się zmieniło", + "audit_attempt_failed": "Próba dostawcy nie powiodła się", + "audit_provider_attempts": "Próby dostawców: {count}", + "audit_provider_attempts_failed": "Próby dostawców: {count} · nieudane: {failed}", + "audit_attempt_succeeded": "powodzenie", + "audit_attempt_failed_status": "niepowodzenie", + "audit_attempt_not_captured": "Nie zapisano odpowiedzi dla tej próby.", + "audit_request_not_captured": "Nie zapisano szczegółów żądania.", + "audit_waiting_request_data": "Oczekiwanie na dane żądania…", + "audit_request_body_too_large": "Treść żądania była zbyt duża, aby ją zapisać.", + "audit_response_not_captured": "Nie zapisano szczegółów odpowiedzi.", + "audit_response_in_progress": "Odpowiedź w toku…", + "audit_response_body_too_large": "Treść odpowiedzi była zbyt duża, aby ją zapisać.", + "audit_rewritten_body_not_captured": "Nie zapisano przetworzonej treści (rejestrowanie treści jest wyłączone lub treść jest zbyt duża).", + "audit_rewriter_no_change": "{rewriter}: bez zmian", + "audit_rewriter_unchanged_help": "{rewriter} uruchomił się i przekazał żądanie bez zmian", + "audit_cached_count": "{count} z cache", + "audit_cached_percent": "{percent}% z cache", + "audit_audio_too_large": "Audio jest zbyt duże, aby je zapisać.", + "audit_audio_not_logged": "Audio nie zostało zapisane. Ustaw LOGGING_LOG_AUDIO_BODIES=true, aby zapisywać audio możliwe do odtworzenia.", + "interaction_resize_label": "Zmień szerokość panelu interakcji", + "interaction_title": "Interakcje", + "interaction_following_latest": "Śledzenie najnowszej interakcji", + "interaction_viewing_history": "Wyświetlanie historycznej interakcji", + "interaction_following_latest_help": "Śledzenie najnowszej interakcji w miarę pojawiania się nowych zdarzeń", + "interaction_viewing_history_help": "Wyświetlanie historycznej interakcji; aktualizacje Live nie są śledzone", + "interaction_exit_fullscreen": "Wyłącz pełny ekran interakcji", + "interaction_show_fullscreen": "Wyświetl interakcje na pełnym ekranie", + "interaction_exit_fullscreen_short": "Wyłącz pełny ekran", + "interaction_fullscreen": "Pełny ekran", + "interaction_close": "Zamknij interakcje", + "interaction_navigation": "Nawigacja między wiadomościami interakcji", + "interaction_previous_message": "Poprzednia wiadomość", + "interaction_next_message": "Następna wiadomość", + "interaction_loading": "Wczytywanie interakcji…", + "interaction_empty": "Brak danych interakcji dla tego wpisu.", + "interaction_hide_cache_fill": "Ukryj szacowane wykorzystanie prompt cache dostawcy", + "interaction_show_cache_fill": "Pokaż szacowane wykorzystanie prompt cache dostawcy", + "interaction_cache_legend": "Niebieskie wypełnienie pokazuje część promptu z cache", + "interaction_estimated": "(szacunkowo)", + "interaction_truncated": "Wyświetlanie najnowszej części tej sesji i wybranego logu.", + "interaction_send_label": "Wyślij wiadomość", + "interaction_placeholder": "Kontynuuj tę interakcję…", + "interaction_model_responding": "Model odpowiada…", + "interaction_load_unavailable": "Nie można wczytać interakcji.", + "interaction_load_failed": "Wczytywanie interakcji nie powiodło się.", + "interaction_send_unavailable": "Nie można wysłać wiadomości.", + "interaction_request_timed_out": "Upłynął limit czasu żądania.", + "interaction_send_failed": "Wysyłanie wiadomości nie powiodło się.", + "interaction_saved_unavailable": "Wiadomość została wysłana, ale jej zapisana interakcja nie jest jeszcze dostępna.", + "interaction_role_system": "Prompt systemowy", + "interaction_role_agent": "Agent", + "interaction_role_error": "Błąd", + "interaction_role_function_call": "Wywołanie funkcji", + "interaction_role_function_result": "Wynik funkcji", + "interaction_role_user": "Użytkownik", + "interaction_attachment_image": "[Obraz]", + "interaction_attachment_audio": "[Audio]", + "interaction_attachment_file": "[Plik]", + "interaction_attachment_named_file": "[Plik: {name}]", + "interaction_message_copied": "Wiadomość skopiowana", + "interaction_copy_message": "Kopiuj wiadomość", + "interaction_prompt_cache_estimate": "Szacuje się, że {percent}% tego widocznego elementu promptu pochodzi z cache dostawcy", + "interaction_call_id": "ID wywołania", + "interaction_call_id_named": "ID wywołania ({name})", + "interaction_no_arguments": "Brak argumentów", + "common_copied": "Skopiowano", + "overview_tokens": "Tokeny", + "overview_input_tokens": "Tokeny wejściowe", + "overview_output_tokens": "Tokeny wyjściowe", + "overview_input_tokens_series": "Tokeny wejściowe", + "overview_output_tokens_series": "Tokeny wyjściowe", + "overview_total_tokens": "Wszystkie tokeny", + "overview_total_requests": "Łączna liczba żądań", + "overview_cache_hits": "Trafienia cache", + "overview_estimated_cost": "Szacowany koszt", + "overview_local_cache": "Lokalny cache", + "overview_prompt_cache_rate": "Wskaźnik prompt cache", + "overview_prompt_cache_rate_help": "Część tokenów wejściowych obsłużona przez prompt cache dostawcy w wybranym okresie", + "overview_prompt_cache_rate_label": "Wskaźnik prompt cache: {rate}", + "overview_provider_status": "Status dostawców", + "overview_view_providers": "Zobacz przegląd dostawców", + "overview_view_mcp_servers": "Zobacz serwery MCP", + "overview_requests_by_status": "Żądania według statusu", + "overview_request_status_summary": "Podsumowanie statusów żądań", + "overview_success_rate_help": "Część żądań zakończonych statusem 2xx", + "overview_success": "Powodzenie", + "overview_provider_latency": "Opóźnienie dostawców", + "overview_provider_latency_help_label": "Pomoc dotycząca opóźnienia dostawców", + "overview_provider_latency_help": "Średni czas trwania udanych żądań mierzony przez gateway dla każdego dostawcy. Trafienia lokalnego cache i nieudane żądania są pomijane; w przypadku streamingu czas jest liczony do zakończenia strumienia.", + "overview_provider_latency_average_help": "Średni czas trwania udanych żądań bez cache dla wszystkich dostawców", + "overview_average_short": "Śr.", + "overview_providers_title": "Przegląd dostawców", + "overview_loading_provider_status": "Wczytywanie statusu dostawców", + "overview_show_details": "Pokaż szczegóły", + "overview_hide_details": "Ukryj szczegóły", + "overview_view_provider_docs": "Zobacz dokumentację dostawcy {provider}", + "overview_models_available": "Dostępne modele", + "overview_last_checked": "Ostatnio sprawdzono", + "overview_expand_provider_details": "Rozwiń szczegóły dostawcy {provider}", + "overview_collapse_provider_details": "Zwiń szczegóły dostawcy {provider}", + "overview_expand_details": "Rozwiń szczegóły", + "overview_collapse_details": "Zwiń szczegóły", + "overview_base_url": "Bazowy URL", + "overview_api_version": "Wersja API", + "overview_recent_requests": "Ostatnie żądania", + "overview_breaker_state": "Stan circuit breakera", + "overview_models_recent_traffic": "Modele (ostatni ruch)", + "overview_configured_models": "Skonfigurowane modele", + "overview_retry": "Retry", + "overview_circuit_breaker": "Circuit Breaker", + "overview_none_configured": "Brak konfiguracji", + "overview_all_healthy": "Wszystkie działają prawidłowo", + "overview_none_healthy": "Żaden nie działa prawidłowo", + "overview_automatic": "Automatycznie", + "overview_last_error": "Ostatni błąd: {error}", + "overview_all_mcp_connected": "Wszystkie serwery MCP są połączone", + "overview_cache_share": "Udział tokenów wejściowych w wybranym okresie", + "overview_no_usage": "Brak danych o zużyciu w wybranym okresie", + "overview_cache_regular": "Standardowe", + "overview_cache_regular_note": "Obejmuje {count} tokenów zapisu do cache", + "overview_cache_prompt": "Prompt cache", + "overview_cache_prompt_note": "Odczyty z prompt cache dostawcy", + "overview_cache_local": "Lokalny cache", + "overview_cache_local_note": "Obsłużone przez response cache GoModel", + "overview_cache_breakdown_label": "Podział tokenów wejściowych według cache — {details}", + "overview_activity": "Aktywność", + "overview_loading_activity": "Wczytywanie aktywności", + "overview_activity_mode": "Tryb kalendarza aktywności", + "overview_costs": "Koszty", + "overview_weekday_mon": "Pon", + "overview_weekday_wed": "Śr", + "overview_weekday_fri": "Pt", + "overview_less": "Mniej", + "overview_more": "Więcej", + "overview_live_token_throughput": "Przepustowość tokenów Live", + "overview_live_granularity": "Ziarnistość przepustowości tokenów Live", + "overview_waiting_live_requests": "Oczekiwanie na żądania Live…", + "overview_seconds": "Sekundy", + "overview_minutes": "Minuty", + "overview_hours": "Godziny", + "overview_days": "Dni", + "overview_last_60_seconds": "Ostatnie 60 sekund", + "overview_last_60_minutes": "Ostatnie 60 minut", + "overview_last_24_hours": "Ostatnie 24 godziny", + "overview_last_30_days": "Ostatnie 30 dni", + "overview_prompt_input_cached": "Prompt (wejście) z cache", + "overview_locally_cached": "Lokalny cache", + "overview_total_label": "Łącznie: {total}", + "overview_total_requests_help": "{provider} do dostawców + {cache} z cache", + "overview_cache_segment_title": "{label}: {tokens} tokenów wejściowych ({percent}%)", + "overview_no_data": "brak danych", + "overview_provider_attention": [ + { + "declarations": ["input count", "local count_plural = count: plural"], + "selectors": ["count_plural"], + "match": { + "count_plural=one": "{count} wymaga uwagi", + "count_plural=few": "{count} wymagają uwagi", + "count_plural=many": "{count} wymaga uwagi", + "count_plural=*": "{count} wymaga uwagi" + } + } + ], + "overview_mcp_attention": "Serwery wymagające uwagi: {count}", + "overview_mcp_connected": "Połączone serwery: {connected} z {total}", + "overview_calendar_cost_year": "${total} w ostatnim roku", + "overview_calendar_tokens_year": "{total} tokenów w ostatnim roku", + "overview_calendar_cost_on_date": "${total} dnia {date}", + "overview_calendar_tokens_on_date": "{total} tokenów dnia {date}", + "overview_live_chart_label": "Przepustowość tokenów Live, {window}. Wejście {input}, wyjście {output}, prompt cache {prompt}, lokalny cache {local} tokenów.", + "overview_other": "Inne", + "settings_timezone_title": "Strefa czasowa", + "settings_timezone_help_label": "Pomoc dotycząca strefy czasowej", + "settings_timezone_help": "Analityka dzienna, wykresy i filtry dat korzystają z obowiązującej strefy czasowej. Logi zużycia i audytu zachowują UTC w podpowiedzi, a znaczniki czasu w wierszach wyświetlają w obowiązującej strefie czasowej.", + "settings_timezone_override": "Nadpisanie strefy czasowej", + "settings_timezone_automatic": "Automatycznie ({timezone})", + "settings_timezone_use_browser": "Użyj strefy czasowej przeglądarki", + "settings_failover_title": "Failover", + "settings_failover_generating": "Generowanie…", + "settings_failover_generate": "Wygeneruj modele failover automatycznie", + "settings_failover_remove_all": "Usuń wszystkie modele failover", + "settings_budget_reset_all_title": "Zresetuj wszystkie budżety", + "settings_budget_reset_all_help": "Rozpocznij nowe okresy dla wszystkich skonfigurowanych budżetów bez zmiany limitów.", + "settings_budget_reset_all_action": "Resetuj budżety", + "settings_budget_help_label": "Pomoc dotycząca budżetów", + "settings_budget_help": "Punkty resetowania budżetów są przechowywane w bazie danych i obliczane w UTC. Budżety godzinowe resetują się na początku każdej godziny.", + "settings_budget_resets_title": "Resetowanie budżetów", + "settings_budget_monthly": "Miesięcznie", + "settings_budget_weekly": "Tygodniowo", + "settings_budget_daily": "Dziennie", + "settings_budget_day_of_month_help_label": "Pomoc dotycząca dnia miesiąca", + "settings_budget_day_of_month": "Dzień miesiąca", + "settings_budget_day_of_month_help": "Jeśli wybrany dzień nie występuje w danym miesiącu, reset nastąpi w ostatnim dniu tego miesiąca.", + "settings_budget_day_of_week": "Dzień tygodnia", + "settings_budget_hour": "Godzina", + "settings_budget_minute": "Minuta", + "settings_budget_save": "Zapisz ustawienia budżetów", + "settings_budget_loading": "Wczytywanie ustawień budżetów", + "settings_budget_load_failed": "Nie można wczytać ustawień budżetów.", + "settings_budget_save_failed": "Nie można zapisać ustawień budżetów.", + "settings_budget_saved": "Ustawienia budżetów zapisane.", + "settings_weekday_sunday": "Niedziela", + "settings_weekday_monday": "Poniedziałek", + "settings_weekday_tuesday": "Wtorek", + "settings_weekday_wednesday": "Środa", + "settings_weekday_thursday": "Czwartek", + "settings_weekday_friday": "Piątek", + "settings_weekday_saturday": "Sobota", + "settings_tagging_title": "Tagowanie na podstawie nagłówków", + "settings_tagging_help_label": "Pomoc dotycząca tagowania", + "settings_tagging_help": "Każde żądanie otrzymuje etykiety z podanych nagłówków; etykiety trafiają do śledzenia zużycia i logów audytowych. Wartość nagłówka może zawierać kilka etykiet rozdzielonych separatorem (domyślnie przecinkiem). Prefiks jest usuwany tylko z każdej etykiety—sam nagłówek jest przekazywany bez zmian, chyba że zaznaczono Nie przekazuj. Wiersze oznaczone CONFIG pochodzą z config.yaml lub zmiennych środowiskowych TAGGING_HEADER_* i są tutaj tylko do odczytu.", + "settings_tagging_header": "Nagłówek", + "settings_tagging_prefix": "Prefiks do usunięcia (opcjonalnie)", + "settings_tagging_delimiter": "Separator", + "settings_tagging_do_not_pass": "Nie przekazuj dalej", + "settings_tagging_config_help": "Zdefiniowane w config.yaml lub zmiennych środowiskowych TAGGING_HEADER_*; tutaj tylko do odczytu.", + "settings_tagging_remove": "Usuń", + "settings_tagging_remove_label": "Usuń nagłówek tagowania {header}", + "settings_tagging_loading": "Wczytywanie ustawień tagowania", + "settings_tagging_empty": "Nie skonfigurowano nagłówków tagowania. Żądania nie otrzymują etykiet.", + "settings_tagging_add": "Dodaj nagłówek", + "settings_tagging_save": "Zapisz ustawienia tagowania", + "settings_tagging_load_failed": "Nie można wczytać ustawień tagowania.", + "settings_tagging_save_failed": "Nie można zapisać ustawień tagowania.", + "settings_tagging_saved": "Ustawienia tagowania zapisane.", + "settings_runtime_refresh_title": "Odświeżenie runtime", + "settings_runtime_refresh_help_label": "Pomoc dotycząca odświeżenia runtime", + "settings_runtime_refresh_help": "Pobierz najnowsze metadane modeli, listę dostawców, klucze API, aliasy, reguły dostępu do modeli, Guardrails i Workflows.", + "settings_runtime_refresh_action": "Odśwież", + "settings_runtime_refresh_completed": "Odświeżenie runtime zakończone.", + "settings_runtime_refreshed": "Runtime odświeżony.", + "settings_runtime_refresh_warnings": "Odświeżenie runtime zakończone z ostrzeżeniami.", + "settings_runtime_refresh_failed": "Odświeżenie runtime nie powiodło się.", + "settings_runtime_processing_title": "Przetwarzanie AI", + "settings_runtime_load_failed": "Nie można wczytać ustawień runtime.", + "settings_runtime_save_failed": "Nie można zapisać ustawienia {setting}.", + "settings_runtime_saved": "Zapisano ustawienie {setting}.", + "settings_runtime_managed_by": "Zarządzane przez: {source}", + "settings_runtime_environment": "środowisko", + "settings_pricing_title": "Ponowne przeliczenie cen zużycia", + "settings_pricing_help_label": "Pomoc dotycząca przeliczania cen", + "settings_pricing_help": "Przelicz zapisane koszty wejścia, wyjścia, łączne oraz Pro Saved na podstawie bieżących metadanych cen modeli. Operacja nadpisuje pasujące historyczne pola kosztów. Filtry dotyczą wybranego zakresu dat, poddrzewa ścieżki użytkownika oraz selektora lub aliasu dostawcy/modelu.", + "settings_pricing_date_range": "Zakres dat", + "settings_pricing_user_path": "Ścieżka użytkownika (opcjonalnie)", + "settings_pricing_selector": "Dostawca/model lub alias (opcjonalnie)", + "settings_pricing_selector_placeholder": "openai/gpt-4o lub smart", + "settings_pricing_action": "Przelicz ceny", + "settings_pricing_unavailable": "Ponowne przeliczanie cen zużycia jest niedostępne.", + "settings_pricing_confirmation": "recalculate", + "settings_pricing_confirmation_message": "Zapisane pola kosztów zużycia pasujące do wybranych filtrów zostaną nadpisane.", + "settings_pricing_failed": "Nie można przeliczyć cen.", + "settings_pricing_summary": "Przeliczono ceny dla {recalculated} z {matched} rekordów zużycia.", + "settings_pricing_missing": "Rekordy bez metadanych cen: {count}.", "sidebar_action_sign_out": "Wyloguj się", "sidebar_action_enter_api_key": "Wprowadź klucz API", "sidebar_action_change_api_key": "Zmień klucz API", diff --git a/web/dashboard/src/lib/components/molecules/LocaleSelector.svelte b/web/dashboard/src/lib/components/molecules/LocaleSelector.svelte index 45c75ee5c..2e6fb123b 100644 --- a/web/dashboard/src/lib/components/molecules/LocaleSelector.svelte +++ b/web/dashboard/src/lib/components/molecules/LocaleSelector.svelte @@ -1,12 +1,10 @@ {#if availableLocales.length > 1} -