tokmon 0.19.3 → 0.19.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import{R as m,g as Qe,r as ue,j as u,P as fe,E as pe,a as Ye,s as J,b as G,c as z,d as Je,T as re}from"./index-Bn2Drvgm.js";import{c as N,a as A,y as et,z as xt,B as tt,F as At,i as C,H as Oe,I as S,L as _,J as rt,K as Pe,M as nt,D as kt,C as Ot,e as W,j as F,S as Pt,A as jt,N as _t,b as De,d as wt,l as M,g as je,u as Tt,G as St,O as ie,f as Et,P as _e,Q as Rt,U as ne,V as Be,o as it,W as we,X as Te,Y as Se,p as Nt,Z as It,q as Ee,_ as at,r as Re,R as Ne,s as ot,t as st,v as oe,T as ct,x as Ie}from"./chart-4esa6Moa.js";var Lt=["points","className","baseLinePoints","connectNulls"];function V(){return V=Object.assign?Object.assign.bind():function(r){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(r[t]=n[t])}return r},V.apply(this,arguments)}function $t(r,e){if(r==null)return{};var n=Ct(r,e),t,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(r);for(i=0;i<a.length;i++)t=a[i],!(e.indexOf(t)>=0)&&Object.prototype.propertyIsEnumerable.call(r,t)&&(n[t]=r[t])}return n}function Ct(r,e){if(r==null)return{};var n={};for(var t in r)if(Object.prototype.hasOwnProperty.call(r,t)){if(e.indexOf(t)>=0)continue;n[t]=r[t]}return n}function Ke(r){return Ft(r)||Kt(r)||Bt(r)||Dt()}function Dt(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
1
+ import{R as m,g as Qe,r as ue,j as u,P as fe,E as pe,a as Ye,s as J,b as G,c as z,d as Je,T as re}from"./index-CYYYW9md.js";import{c as N,a as A,y as et,z as xt,B as tt,F as At,i as C,H as Oe,I as S,L as _,J as rt,K as Pe,M as nt,D as kt,C as Ot,e as W,j as F,S as Pt,A as jt,N as _t,b as De,d as wt,l as M,g as je,u as Tt,G as St,O as ie,f as Et,P as _e,Q as Rt,U as ne,V as Be,o as it,W as we,X as Te,Y as Se,p as Nt,Z as It,q as Ee,_ as at,r as Re,R as Ne,s as ot,t as st,v as oe,T as ct,x as Ie}from"./chart-BcpjNTdg.js";var Lt=["points","className","baseLinePoints","connectNulls"];function V(){return V=Object.assign?Object.assign.bind():function(r){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(r[t]=n[t])}return r},V.apply(this,arguments)}function $t(r,e){if(r==null)return{};var n=Ct(r,e),t,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(r);for(i=0;i<a.length;i++)t=a[i],!(e.indexOf(t)>=0)&&Object.prototype.propertyIsEnumerable.call(r,t)&&(n[t]=r[t])}return n}function Ct(r,e){if(r==null)return{};var n={};for(var t in r)if(Object.prototype.hasOwnProperty.call(r,t)){if(e.indexOf(t)>=0)continue;n[t]=r[t]}return n}function Ke(r){return Ft(r)||Kt(r)||Bt(r)||Dt()}function Dt(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
2
2
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Bt(r,e){if(r){if(typeof r=="string")return be(r,e);var n=Object.prototype.toString.call(r).slice(8,-1);if(n==="Object"&&r.constructor&&(n=r.constructor.name),n==="Map"||n==="Set")return Array.from(r);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return be(r,e)}}function Kt(r){if(typeof Symbol<"u"&&r[Symbol.iterator]!=null||r["@@iterator"]!=null)return Array.from(r)}function Ft(r){if(Array.isArray(r))return be(r)}function be(r,e){(e==null||e>r.length)&&(e=r.length);for(var n=0,t=new Array(e);n<e;n++)t[n]=r[n];return t}var Fe=function(e){return e&&e.x===+e.x&&e.y===+e.y},Mt=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],n=[[]];return e.forEach(function(t){Fe(t)?n[n.length-1].push(t):n[n.length-1].length>0&&n.push([])}),Fe(e[0])&&n[n.length-1].push(e[0]),n[n.length-1].length<=0&&(n=n.slice(0,-1)),n},Q=function(e,n){var t=Mt(e);n&&(t=[t.reduce(function(a,o){return[].concat(Ke(a),Ke(o))},[])]);var i=t.map(function(a){return a.reduce(function(o,l,c){return"".concat(o).concat(c===0?"M":"L").concat(l.x,",").concat(l.y)},"")}).join("");return t.length===1?"".concat(i,"Z"):i},Vt=function(e,n,t){var i=Q(e,t);return"".concat(i.slice(-1)==="Z"?i.slice(0,-1):i,"L").concat(Q(n.reverse(),t).slice(1))},qt=function(e){var n=e.points,t=e.className,i=e.baseLinePoints,a=e.connectNulls,o=$t(e,Lt);if(!n||!n.length)return null;var l=N("recharts-polygon",t);if(i&&i.length){var c=o.stroke&&o.stroke!=="none",s=Vt(n,i,a);return m.createElement("g",{className:l},m.createElement("path",V({},A(o,!0),{fill:s.slice(-1)==="Z"?o.fill:"none",stroke:"none",d:s})),c?m.createElement("path",V({},A(o,!0),{fill:"none",d:Q(n,a)})):null,c?m.createElement("path",V({},A(o,!0),{fill:"none",d:Q(i,a)})):null)}var f=Q(n,a);return m.createElement("path",V({},A(o,!0),{fill:f.slice(-1)==="Z"?o.fill:"none",className:l,d:f}))},ye,Me;function zt(){if(Me)return ye;Me=1;var r=et(),e=xt(),n=tt();function t(i,a){return i&&i.length?r(i,n(a,2),e):void 0}return ye=t,ye}var Wt=zt();const Gt=Qe(Wt);var ge,Ve;function Ht(){if(Ve)return ge;Ve=1;var r=et(),e=tt(),n=At();function t(i,a){return i&&i.length?r(i,e(a,2),n):void 0}return ge=t,ge}var Zt=Ht();const Ut=Qe(Zt);var Xt=["cx","cy","angle","ticks","axisLine"],Qt=["ticks","tick","angle","tickFormatter","stroke"];function H(r){"@babel/helpers - typeof";return H=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},H(r)}function Y(){return Y=Object.assign?Object.assign.bind():function(r){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(r[t]=n[t])}return r},Y.apply(this,arguments)}function qe(r,e){var n=Object.keys(r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(r);e&&(t=t.filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable})),n.push.apply(n,t)}return n}function L(r){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?qe(Object(n),!0).forEach(function(t){de(r,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):qe(Object(n)).forEach(function(t){Object.defineProperty(r,t,Object.getOwnPropertyDescriptor(n,t))})}return r}function ze(r,e){if(r==null)return{};var n=Yt(r,e),t,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(r);for(i=0;i<a.length;i++)t=a[i],!(e.indexOf(t)>=0)&&Object.prototype.propertyIsEnumerable.call(r,t)&&(n[t]=r[t])}return n}function Yt(r,e){if(r==null)return{};var n={};for(var t in r)if(Object.prototype.hasOwnProperty.call(r,t)){if(e.indexOf(t)>=0)continue;n[t]=r[t]}return n}function Jt(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}function We(r,e){for(var n=0;n<e.length;n++){var t=e[n];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(r,ut(t.key),t)}}function er(r,e,n){return e&&We(r.prototype,e),n&&We(r,n),Object.defineProperty(r,"prototype",{writable:!1}),r}function tr(r,e,n){return e=se(e),rr(r,lt()?Reflect.construct(e,n||[],se(r).constructor):e.apply(r,n))}function rr(r,e){if(e&&(H(e)==="object"||typeof e=="function"))return e;if(e!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return nr(r)}function nr(r){if(r===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return r}function lt(){try{var r=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(lt=function(){return!!r})()}function se(r){return se=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},se(r)}function ir(r,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function");r.prototype=Object.create(e&&e.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),Object.defineProperty(r,"prototype",{writable:!1}),e&&xe(r,e)}function xe(r,e){return xe=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,i){return t.__proto__=i,t},xe(r,e)}function de(r,e,n){return e=ut(e),e in r?Object.defineProperty(r,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):r[e]=n,r}function ut(r){var e=ar(r,"string");return H(e)=="symbol"?e:e+""}function ar(r,e){if(H(r)!="object"||!r)return r;var n=r[Symbol.toPrimitive];if(n!==void 0){var t=n.call(r,e);if(H(t)!="object")return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(r)}var me=(function(r){function e(){return Jt(this,e),tr(this,e,arguments)}return ir(e,r),er(e,[{key:"getTickValueCoord",value:function(t){var i=t.coordinate,a=this.props,o=a.angle,l=a.cx,c=a.cy;return S(l,c,i,o)}},{key:"getTickTextAnchor",value:function(){var t=this.props.orientation,i;switch(t){case"left":i="end";break;case"right":i="start";break;default:i="middle";break}return i}},{key:"getViewBox",value:function(){var t=this.props,i=t.cx,a=t.cy,o=t.angle,l=t.ticks,c=Gt(l,function(f){return f.coordinate||0}),s=Ut(l,function(f){return f.coordinate||0});return{cx:i,cy:a,startAngle:o,endAngle:o,innerRadius:s.coordinate||0,outerRadius:c.coordinate||0}}},{key:"renderAxisLine",value:function(){var t=this.props,i=t.cx,a=t.cy,o=t.angle,l=t.ticks,c=t.axisLine,s=ze(t,Xt),f=l.reduce(function(v,p){return[Math.min(v[0],p.coordinate),Math.max(v[1],p.coordinate)]},[1/0,-1/0]),d=S(i,a,f[0],o),y=S(i,a,f[1],o),k=L(L(L({},A(s,!1)),{},{fill:"none"},A(c,!1)),{},{x1:d.x,y1:d.y,x2:y.x,y2:y.y});return m.createElement("line",Y({className:"recharts-polar-radius-axis-line"},k))}},{key:"renderTicks",value:function(){var t=this,i=this.props,a=i.ticks,o=i.tick,l=i.angle,c=i.tickFormatter,s=i.stroke,f=ze(i,Qt),d=this.getTickTextAnchor(),y=A(f,!1),k=A(o,!1),v=a.map(function(p,g){var b=t.getTickValueCoord(p),x=L(L(L(L({textAnchor:d,transform:"rotate(".concat(90-l,", ").concat(b.x,", ").concat(b.y,")")},y),{},{stroke:"none",fill:s},k),{},{index:g},b),{},{payload:p});return m.createElement(_,Y({className:N("recharts-polar-radius-axis-tick",rt(o)),key:"tick-".concat(p.coordinate)},Pe(t.props,p,g)),e.renderTickItem(o,x,c?c(p.value,g):p.value))});return m.createElement(_,{className:"recharts-polar-radius-axis-ticks"},v)}},{key:"render",value:function(){var t=this.props,i=t.ticks,a=t.axisLine,o=t.tick;return!i||!i.length?null:m.createElement(_,{className:N("recharts-polar-radius-axis",this.props.className)},a&&this.renderAxisLine(),o&&this.renderTicks(),nt.renderCallByParent(this.props,this.getViewBox()))}}],[{key:"renderTickItem",value:function(t,i,a){var o;return m.isValidElement(t)?o=m.cloneElement(t,i):C(t)?o=t(i):o=m.createElement(Oe,Y({},i,{className:"recharts-polar-radius-axis-tick-value"}),a),o}}])})(ue.PureComponent);de(me,"displayName","PolarRadiusAxis");de(me,"axisType","radiusAxis");de(me,"defaultProps",{type:"number",radiusAxisId:0,cx:0,cy:0,angle:0,orientation:"right",stroke:"#ccc",axisLine:!0,tick:!0,tickCount:5,allowDataOverflow:!1,scale:"auto",allowDuplicatedCategory:!0});function Z(r){"@babel/helpers - typeof";return Z=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Z(r)}function D(){return D=Object.assign?Object.assign.bind():function(r){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(r[t]=n[t])}return r},D.apply(this,arguments)}function Ge(r,e){var n=Object.keys(r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(r);e&&(t=t.filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable})),n.push.apply(n,t)}return n}function $(r){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Ge(Object(n),!0).forEach(function(t){ve(r,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):Ge(Object(n)).forEach(function(t){Object.defineProperty(r,t,Object.getOwnPropertyDescriptor(n,t))})}return r}function or(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}function He(r,e){for(var n=0;n<e.length;n++){var t=e[n];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(r,pt(t.key),t)}}function sr(r,e,n){return e&&He(r.prototype,e),n&&He(r,n),Object.defineProperty(r,"prototype",{writable:!1}),r}function cr(r,e,n){return e=ce(e),lr(r,ft()?Reflect.construct(e,n||[],ce(r).constructor):e.apply(r,n))}function lr(r,e){if(e&&(Z(e)==="object"||typeof e=="function"))return e;if(e!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return ur(r)}function ur(r){if(r===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return r}function ft(){try{var r=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(ft=function(){return!!r})()}function ce(r){return ce=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},ce(r)}function fr(r,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function");r.prototype=Object.create(e&&e.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),Object.defineProperty(r,"prototype",{writable:!1}),e&&Ae(r,e)}function Ae(r,e){return Ae=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,i){return t.__proto__=i,t},Ae(r,e)}function ve(r,e,n){return e=pt(e),e in r?Object.defineProperty(r,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):r[e]=n,r}function pt(r){var e=pr(r,"string");return Z(e)=="symbol"?e:e+""}function pr(r,e){if(Z(r)!="object"||!r)return r;var n=r[Symbol.toPrimitive];if(n!==void 0){var t=n.call(r,e);if(Z(t)!="object")return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(r)}var dr=Math.PI/180,Ze=1e-5,he=(function(r){function e(){return or(this,e),cr(this,e,arguments)}return fr(e,r),sr(e,[{key:"getTickLineCoord",value:function(t){var i=this.props,a=i.cx,o=i.cy,l=i.radius,c=i.orientation,s=i.tickSize,f=s||8,d=S(a,o,l,t.coordinate),y=S(a,o,l+(c==="inner"?-1:1)*f,t.coordinate);return{x1:d.x,y1:d.y,x2:y.x,y2:y.y}}},{key:"getTickTextAnchor",value:function(t){var i=this.props.orientation,a=Math.cos(-t.coordinate*dr),o;return a>Ze?o=i==="outer"?"start":"end":a<-Ze?o=i==="outer"?"end":"start":o="middle",o}},{key:"renderAxisLine",value:function(){var t=this.props,i=t.cx,a=t.cy,o=t.radius,l=t.axisLine,c=t.axisLineType,s=$($({},A(this.props,!1)),{},{fill:"none"},A(l,!1));if(c==="circle")return m.createElement(kt,D({className:"recharts-polar-angle-axis-line"},s,{cx:i,cy:a,r:o}));var f=this.props.ticks,d=f.map(function(y){return S(i,a,o,y.coordinate)});return m.createElement(qt,D({className:"recharts-polar-angle-axis-line"},s,{points:d}))}},{key:"renderTicks",value:function(){var t=this,i=this.props,a=i.ticks,o=i.tick,l=i.tickLine,c=i.tickFormatter,s=i.stroke,f=A(this.props,!1),d=A(o,!1),y=$($({},f),{},{fill:"none"},A(l,!1)),k=a.map(function(v,p){var g=t.getTickLineCoord(v),b=t.getTickTextAnchor(v),x=$($($({textAnchor:b},f),{},{stroke:"none",fill:s},d),{},{index:p,payload:v,x:g.x2,y:g.y2});return m.createElement(_,D({className:N("recharts-polar-angle-axis-tick",rt(o)),key:"tick-".concat(v.coordinate)},Pe(t.props,v,p)),l&&m.createElement("line",D({className:"recharts-polar-angle-axis-tick-line"},y,g)),o&&e.renderTickItem(o,x,c?c(v.value,p):v.value))});return m.createElement(_,{className:"recharts-polar-angle-axis-ticks"},k)}},{key:"render",value:function(){var t=this.props,i=t.ticks,a=t.radius,o=t.axisLine;return a<=0||!i||!i.length?null:m.createElement(_,{className:N("recharts-polar-angle-axis",this.props.className)},o&&this.renderAxisLine(),this.renderTicks())}}],[{key:"renderTickItem",value:function(t,i,a){var o;return m.isValidElement(t)?o=m.cloneElement(t,i):C(t)?o=t(i):o=m.createElement(Oe,D({},i,{className:"recharts-polar-angle-axis-tick-value"}),a),o}}])})(ue.PureComponent);ve(he,"displayName","PolarAngleAxis");ve(he,"axisType","angleAxis");ve(he,"defaultProps",{type:"category",angleAxisId:0,scale:"auto",cx:0,cy:0,orientation:"outer",axisLine:!0,tickLine:!0,tickSize:8,tick:!0,hide:!1,allowDuplicatedCategory:!0});var ae;function U(r){"@babel/helpers - typeof";return U=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},U(r)}function q(){return q=Object.assign?Object.assign.bind():function(r){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(r[t]=n[t])}return r},q.apply(this,arguments)}function Ue(r,e){var n=Object.keys(r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(r);e&&(t=t.filter(function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable})),n.push.apply(n,t)}return n}function h(r){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Ue(Object(n),!0).forEach(function(t){P(r,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):Ue(Object(n)).forEach(function(t){Object.defineProperty(r,t,Object.getOwnPropertyDescriptor(n,t))})}return r}function mr(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}function Xe(r,e){for(var n=0;n<e.length;n++){var t=e[n];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(r,mt(t.key),t)}}function vr(r,e,n){return e&&Xe(r.prototype,e),n&&Xe(r,n),Object.defineProperty(r,"prototype",{writable:!1}),r}function hr(r,e,n){return e=le(e),yr(r,dt()?Reflect.construct(e,n||[],le(r).constructor):e.apply(r,n))}function yr(r,e){if(e&&(U(e)==="object"||typeof e=="function"))return e;if(e!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return gr(r)}function gr(r){if(r===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return r}function dt(){try{var r=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(dt=function(){return!!r})()}function le(r){return le=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},le(r)}function br(r,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function");r.prototype=Object.create(e&&e.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),Object.defineProperty(r,"prototype",{writable:!1}),e&&ke(r,e)}function ke(r,e){return ke=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,i){return t.__proto__=i,t},ke(r,e)}function P(r,e,n){return e=mt(e),e in r?Object.defineProperty(r,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):r[e]=n,r}function mt(r){var e=xr(r,"string");return U(e)=="symbol"?e:e+""}function xr(r,e){if(U(r)!="object"||!r)return r;var n=r[Symbol.toPrimitive];if(n!==void 0){var t=n.call(r,e);if(U(t)!="object")return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(r)}var E=(function(r){function e(n){var t;return mr(this,e),t=hr(this,e,[n]),P(t,"pieRef",null),P(t,"sectorRefs",[]),P(t,"id",Tt("recharts-pie-")),P(t,"handleAnimationEnd",function(){var i=t.props.onAnimationEnd;t.setState({isAnimationFinished:!0}),C(i)&&i()}),P(t,"handleAnimationStart",function(){var i=t.props.onAnimationStart;t.setState({isAnimationFinished:!1}),C(i)&&i()}),t.state={isAnimationFinished:!n.isAnimationActive,prevIsAnimationActive:n.isAnimationActive,prevAnimationId:n.animationId,sectorToFocus:0},t}return br(e,r),vr(e,[{key:"isActiveIndex",value:function(t){var i=this.props.activeIndex;return Array.isArray(i)?i.indexOf(t)!==-1:t===i}},{key:"hasActiveIndex",value:function(){var t=this.props.activeIndex;return Array.isArray(t)?t.length!==0:t||t===0}},{key:"renderLabels",value:function(t){var i=this.props.isAnimationActive;if(i&&!this.state.isAnimationFinished)return null;var a=this.props,o=a.label,l=a.labelLine,c=a.dataKey,s=a.valueKey,f=A(this.props,!1),d=A(o,!1),y=A(l,!1),k=o&&o.offsetRadius||20,v=t.map(function(p,g){var b=(p.startAngle+p.endAngle)/2,x=S(p.cx,p.cy,p.outerRadius+k,b),j=h(h(h(h({},f),p),{},{stroke:"none"},d),{},{index:g,textAnchor:e.getTextAnchor(x.x,p.cx)},x),B=h(h(h(h({},f),p),{},{fill:"none",stroke:p.fill},y),{},{index:g,points:[S(p.cx,p.cy,p.outerRadius,b),x]}),w=c;return W(c)&&W(s)?w="value":W(c)&&(w=s),m.createElement(_,{key:"label-".concat(p.startAngle,"-").concat(p.endAngle,"-").concat(p.midAngle,"-").concat(g)},l&&e.renderLabelLineItem(l,B,"line"),e.renderLabelItem(o,j,F(p,w)))});return m.createElement(_,{className:"recharts-pie-labels"},v)}},{key:"renderSectorsStatically",value:function(t){var i=this,a=this.props,o=a.activeShape,l=a.blendStroke,c=a.inactiveShape;return t.map(function(s,f){if((s==null?void 0:s.startAngle)===0&&(s==null?void 0:s.endAngle)===0&&t.length!==1)return null;var d=i.isActiveIndex(f),y=c&&i.hasActiveIndex()?c:null,k=d?o:y,v=h(h({},s),{},{stroke:l?s.fill:s.stroke,tabIndex:-1});return m.createElement(_,q({ref:function(g){g&&!i.sectorRefs.includes(g)&&i.sectorRefs.push(g)},tabIndex:-1,className:"recharts-pie-sector"},Pe(i.props,s,f),{key:"sector-".concat(s==null?void 0:s.startAngle,"-").concat(s==null?void 0:s.endAngle,"-").concat(s.midAngle,"-").concat(f)}),m.createElement(Pt,q({option:k,isActive:d,shapeType:"sector"},v)))})}},{key:"renderSectorsWithAnimation",value:function(){var t=this,i=this.props,a=i.sectors,o=i.isAnimationActive,l=i.animationBegin,c=i.animationDuration,s=i.animationEasing,f=i.animationId,d=this.state,y=d.prevSectors,k=d.prevIsAnimationActive;return m.createElement(jt,{begin:l,duration:c,isActive:o,easing:s,from:{t:0},to:{t:1},key:"pie-".concat(f,"-").concat(k),onAnimationStart:this.handleAnimationStart,onAnimationEnd:this.handleAnimationEnd},function(v){var p=v.t,g=[],b=a&&a[0],x=b.startAngle;return a.forEach(function(j,B){var w=y&&y[B],I=B>0?_t(j,"paddingAngle",0):0;if(w){var X=De(w.endAngle-w.startAngle,j.endAngle-j.startAngle),O=h(h({},j),{},{startAngle:x+I,endAngle:x+X(p)+I});g.push(O),x=O.endAngle}else{var K=j.endAngle,T=j.startAngle,ee=De(0,K-T),te=ee(p),R=h(h({},j),{},{startAngle:x+I,endAngle:x+te+I});g.push(R),x=R.endAngle}}),m.createElement(_,null,t.renderSectorsStatically(g))})}},{key:"attachKeyboardHandlers",value:function(t){var i=this;t.onkeydown=function(a){if(!a.altKey)switch(a.key){case"ArrowLeft":{var o=++i.state.sectorToFocus%i.sectorRefs.length;i.sectorRefs[o].focus(),i.setState({sectorToFocus:o});break}case"ArrowRight":{var l=--i.state.sectorToFocus<0?i.sectorRefs.length-1:i.state.sectorToFocus%i.sectorRefs.length;i.sectorRefs[l].focus(),i.setState({sectorToFocus:l});break}case"Escape":{i.sectorRefs[i.state.sectorToFocus].blur(),i.setState({sectorToFocus:0});break}}}}},{key:"renderSectors",value:function(){var t=this.props,i=t.sectors,a=t.isAnimationActive,o=this.state.prevSectors;return a&&i&&i.length&&(!o||!wt(o,i))?this.renderSectorsWithAnimation():this.renderSectorsStatically(i)}},{key:"componentDidMount",value:function(){this.pieRef&&this.attachKeyboardHandlers(this.pieRef)}},{key:"render",value:function(){var t=this,i=this.props,a=i.hide,o=i.sectors,l=i.className,c=i.label,s=i.cx,f=i.cy,d=i.innerRadius,y=i.outerRadius,k=i.isAnimationActive,v=this.state.isAnimationFinished;if(a||!o||!o.length||!M(s)||!M(f)||!M(d)||!M(y))return null;var p=N("recharts-pie",l);return m.createElement(_,{tabIndex:this.props.rootTabIndex,className:p,ref:function(b){t.pieRef=b}},this.renderSectors(),c&&this.renderLabels(o),nt.renderCallByParent(this.props,null,!1),(!k||v)&&je.renderCallByParent(this.props,o,!1))}}],[{key:"getDerivedStateFromProps",value:function(t,i){return i.prevIsAnimationActive!==t.isAnimationActive?{prevIsAnimationActive:t.isAnimationActive,prevAnimationId:t.animationId,curSectors:t.sectors,prevSectors:[],isAnimationFinished:!0}:t.isAnimationActive&&t.animationId!==i.prevAnimationId?{prevAnimationId:t.animationId,curSectors:t.sectors,prevSectors:i.curSectors,isAnimationFinished:!0}:t.sectors!==i.curSectors?{curSectors:t.sectors,isAnimationFinished:!0}:null}},{key:"getTextAnchor",value:function(t,i){return t>i?"start":t<i?"end":"middle"}},{key:"renderLabelLineItem",value:function(t,i,a){if(m.isValidElement(t))return m.cloneElement(t,i);if(C(t))return t(i);var o=N("recharts-pie-label-line",typeof t!="boolean"?t.className:"");return m.createElement(Ot,q({},i,{key:a,type:"linear",className:o}))}},{key:"renderLabelItem",value:function(t,i,a){if(m.isValidElement(t))return m.cloneElement(t,i);var o=a;if(C(t)&&(o=t(i),m.isValidElement(o)))return o;var l=N("recharts-pie-label-text",typeof t!="boolean"&&!C(t)?t.className:"");return m.createElement(Oe,q({},i,{alignmentBaseline:"middle",className:l}),o)}}])})(ue.PureComponent);ae=E;P(E,"displayName","Pie");P(E,"defaultProps",{stroke:"#fff",fill:"#808080",legendType:"rect",cx:"50%",cy:"50%",startAngle:0,endAngle:360,innerRadius:0,outerRadius:"80%",paddingAngle:0,labelLine:!0,hide:!1,minAngle:0,isAnimationActive:!St.isSsr,animationBegin:400,animationDuration:1500,animationEasing:"ease",nameKey:"name",blendStroke:!1,rootTabIndex:0});P(E,"parseDeltaAngle",function(r,e){var n=ie(e-r),t=Math.min(Math.abs(e-r),360);return n*t});P(E,"getRealPieData",function(r){var e=r.data,n=r.children,t=A(r,!1),i=Et(n,_e);return e&&e.length?e.map(function(a,o){return h(h(h({payload:a},t),a),i&&i[o]&&i[o].props)}):i&&i.length?i.map(function(a){return h(h({},t),a.props)}):[]});P(E,"parseCoordinateOfPie",function(r,e){var n=e.top,t=e.left,i=e.width,a=e.height,o=Rt(i,a),l=t+ne(r.cx,i,i/2),c=n+ne(r.cy,a,a/2),s=ne(r.innerRadius,o,0),f=ne(r.outerRadius,o,o*.8),d=r.maxRadius||Math.sqrt(i*i+a*a)/2;return{cx:l,cy:c,innerRadius:s,outerRadius:f,maxRadius:d}});P(E,"getComposedData",function(r){var e=r.item,n=r.offset,t=e.type.defaultProps!==void 0?h(h({},e.type.defaultProps),e.props):e.props,i=ae.getRealPieData(t);if(!i||!i.length)return null;var a=t.cornerRadius,o=t.startAngle,l=t.endAngle,c=t.paddingAngle,s=t.dataKey,f=t.nameKey,d=t.valueKey,y=t.tooltipType,k=Math.abs(t.minAngle),v=ae.parseCoordinateOfPie(t,n),p=ae.parseDeltaAngle(o,l),g=Math.abs(p),b=s;W(s)&&W(d)?(Be(!1,`Use "dataKey" to specify the value of pie,
3
3
  the props "valueKey" will be deprecated in 1.1.0`),b="value"):W(s)&&(Be(!1,`Use "dataKey" to specify the value of pie,
4
4
  the props "valueKey" will be deprecated in 1.1.0`),b=d);var x=i.filter(function(O){return F(O,b,0)!==0}).length,j=(g>=360?x:x-1)*c,B=g-x*k-j,w=i.reduce(function(O,K){var T=F(K,b,0);return O+(M(T)?T:0)},0),I;if(w>0){var X;I=i.map(function(O,K){var T=F(O,b,0),ee=F(O,f,K),te=(M(T)?T:0)/w,R;K?R=X.endAngle+ie(p)*c*(T!==0?1:0):R=o;var Le=R+ie(p)*((T!==0?k:0)+te*B),$e=(R+Le)/2,Ce=(v.innerRadius+v.outerRadius)/2,gt=[{name:ee,value:T,payload:O,dataKey:b,type:y}],bt=S(v.cx,v.cy,Ce,$e);return X=h(h(h({percent:te,cornerRadius:a,name:ee,tooltipPayload:gt,midAngle:$e,middleRadius:Ce,tooltipPosition:bt},O),v),{},{value:F(O,b),startAngle:R,endAngle:Le,payload:O,paddingAngle:ie(p)*c}),X})}return h(h({},v),{},{sectors:I,data:i})});var vt=it({chartName:"BarChart",GraphicalChild:we,defaultTooltipEventType:"axis",validateTooltipEventTypes:["axis","item"],axisComponents:[{axisType:"xAxis",AxisComp:Te},{axisType:"yAxis",AxisComp:Se}],formatAxisMap:Nt}),Ar=it({chartName:"PieChart",GraphicalChild:E,validateTooltipEventTypes:["item"],defaultTooltipEventType:"item",legendContent:"children",axisComponents:[{axisType:"angleAxis",AxisComp:he},{axisType:"radiusAxis",AxisComp:me}],formatAxisMap:It,defaultProps:{layout:"centric",startAngle:0,endAngle:360,cx:"50%",cy:"50%",innerRadius:0,outerRadius:"80%"}});const ht={fill:"var(--color-bg-2)"},yt={fill:"var(--color-fg-dim)",fontSize:10,fontFamily:"var(--font-mono)"},kr=Ie(r=>{var e,n;return[{label:"cost",value:G(((e=r[0])==null?void 0:e.value)??0),color:(n=r[0])==null?void 0:n.color}]},{title:r=>J(r)}),Or=Ie(r=>{var e,n;return[{label:"tokens",value:z(((e=r[0])==null?void 0:e.value)??0),color:(n=r[0])==null?void 0:n.color}]},{title:r=>J(r)}),Pr=Ie(r=>{var e,n;return[{label:"saved",value:G(((e=r[0])==null?void 0:e.value)??0),color:(n=r[0])==null?void 0:n.color}]},{title:r=>J(r)});function wr({derived:r,height:e=280,limit:n=10,metric:t="cost",periodLabel:i}){const a=Ee(),o=at("(min-width: 768px)"),l=o?124:92,c=o?60:44,s=t==="tokens",f=[...r.byModel].sort((d,y)=>s?y.tokens-d.tokens:y.cost-d.cost).slice(0,n);return u.jsx(fe,{title:s?"tokens by model":"cost by model",titleTag:i,captureName:s?"tokens-by-model":"cost-by-model",children:f.length===0?u.jsx(pe,{children:"no models in period"}):u.jsx(Re,{height:e,children:u.jsx(Ne,{children:u.jsxs(vt,{data:f,layout:"vertical",margin:{top:4,right:c,left:4,bottom:0},children:[u.jsx(ot,{...st,horizontal:!1,vertical:!0}),u.jsx(Te,{type:"number",...oe,tickFormatter:s?z:Ye}),u.jsx(Se,{type:"category",dataKey:"model",...oe,width:l,tickFormatter:J}),u.jsx(ct,{content:s?Or:kr,cursor:ht}),u.jsxs(we,{dataKey:s?"tokens":"cost",radius:[0,3,3,0],isAnimationActive:a,animationDuration:350,children:[f.map(d=>u.jsx(_e,{fill:d.color},d.model)),u.jsx(je,{dataKey:s?"tokens":"cost",position:"right",offset:6,...yt,formatter:d=>s?z(d):G(d)})]})]})})})})}function Tr({derived:r,height:e=240,limit:n=12,periodLabel:t}){const i=Ee(),a=at("(min-width: 768px)"),o=a?124:92,l=a?60:44,c=[...r.byModel].filter(s=>s.cacheSavings>0).sort((s,f)=>f.cacheSavings-s.cacheSavings).slice(0,n);return u.jsx(fe,{title:"cache savings by model",titleTag:t,captureName:"cache-savings-by-model",children:c.length===0?u.jsx(pe,{children:"no cache savings in period"}):u.jsx(Re,{height:e,children:u.jsx(Ne,{children:u.jsxs(vt,{data:c,layout:"vertical",margin:{top:4,right:l,left:4,bottom:0},children:[u.jsx(ot,{...st,horizontal:!1,vertical:!0}),u.jsx(Te,{type:"number",...oe,tickFormatter:Ye}),u.jsx(Se,{type:"category",dataKey:"model",...oe,width:o,tickFormatter:J}),u.jsx(ct,{content:Pr,cursor:ht}),u.jsx(we,{dataKey:"cacheSavings",radius:[0,3,3,0],fill:"var(--color-positive)",isAnimationActive:i,animationDuration:350,children:u.jsx(je,{dataKey:"cacheSavings",position:"right",offset:6,...yt,formatter:s=>G(s)})})]})})})})}function Sr({derived:r,height:e=280,periodLabel:n}){const t=Ee(),i=r.byProvider,a=r.totals.cost,[o,l]=ue.useState(null),c=o!=null?i[o]:null,s=c&&a>0?c.cost/a:0;return u.jsx(fe,{title:"provider split",titleTag:n,captureName:"provider-split",children:i.length===0?u.jsx(pe,{children:"no spend in period"}):u.jsxs("div",{className:"relative",onMouseLeave:()=>l(null),children:[u.jsx(Re,{height:e,children:u.jsx(Ne,{children:u.jsx(Ar,{children:u.jsx(E,{data:i,dataKey:"cost",nameKey:"name",innerRadius:"60%",outerRadius:"88%",paddingAngle:i.length>1?2:0,stroke:"var(--color-bg-1)",strokeWidth:2,isAnimationActive:t,animationDuration:350,onMouseEnter:(f,d)=>l(d),children:i.map((f,d)=>u.jsx(_e,{fill:f.color,"aria-label":`${f.name}: ${G(f.cost)}`,fillOpacity:o==null||o===d?1:.32,style:{transition:"fill-opacity 150ms ease"}},f.id))})})})}),u.jsxs("div",{className:"pointer-events-none absolute inset-0 flex flex-col items-center justify-center",children:[u.jsx("div",{className:"tnum text-xl",style:{color:c?c.color:"var(--color-fg-bright)"},children:G(c?c.cost:a)}),u.jsx("div",{className:"font-display text-[10px] uppercase tracking-wide text-fg-faint",children:c?`${c.name} · ${Je(s,s>0&&s<.01?1:0)}`:"total"})]})]})})}function Er({derived:r,periodLabel:e}){const n=r.tokenComposition,t=n.input+n.output+n.cacheCreate+n.cacheRead,i=[{key:"cacheRead",label:"cache read",value:n.cacheRead,color:re.cacheRead},{key:"input",label:"input",value:n.input,color:re.input},{key:"output",label:"output",value:n.output,color:re.output},{key:"cacheCreate",label:"cache write",value:n.cacheCreate,color:re.cacheCreate}];return u.jsx(fe,{title:"token composition",titleTag:e,captureName:"token-composition",right:u.jsx("span",{className:"tnum text-xs text-fg-dim",children:z(t)}),children:t===0?u.jsx(pe,{children:"no tokens in period"}):u.jsxs("div",{className:"flex flex-col gap-4 pt-1",children:[u.jsx("div",{className:"flex h-3 w-full overflow-hidden rounded-full bg-bg-3",children:i.map(a=>a.value>0&&u.jsx("div",{style:{width:`${a.value/t*100}%`,minWidth:"2px",background:a.color},title:`${a.label}: ${z(a.value)}`},a.key))}),u.jsx("div",{className:"grid grid-cols-2 gap-x-6 gap-y-2.5",children:i.map(a=>{const o=t>0?a.value/t:0;return u.jsxs("div",{className:"flex items-center justify-between gap-2 text-xs",children:[u.jsxs("span",{className:"flex items-center gap-1.5 text-fg-dim",children:[u.jsx("span",{className:"inline-block size-2 rounded-[2px]",style:{background:a.color}}),a.label]}),u.jsxs("span",{className:"text-fg",children:[u.jsx("span",{className:"tnum text-fg-bright",children:z(a.value)}),u.jsx("span",{className:"ml-1.5 text-fg-faint",children:Je(o,o>0&&o<.01?1:0)})]})]},a.key)})})]})})}export{Tr as CacheByModel,wr as CostByModel,Sr as ProviderDonut,Er as TokenComposition};
@@ -1,4 +1,4 @@
1
- import{e as Kn,g as ue,r as N,R as T,j as ot,f as Zx}from"./index-Bn2Drvgm.js";function Lm(e){var t,r,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(r=Lm(e[t]))&&(n&&(n+=" "),n+=r)}else for(r in e)e[r]&&(n&&(n+=" "),n+=r);return n}function te(){for(var e,t,r=0,n="",i=arguments.length;r<i;r++)(e=arguments[r])&&(t=Lm(e))&&(n&&(n+=" "),n+=t);return n}var Na,oh;function Re(){if(oh)return Na;oh=1;var e=Array.isArray;return Na=e,Na}var qa,uh;function Fm(){if(uh)return qa;uh=1;var e=typeof Kn=="object"&&Kn&&Kn.Object===Object&&Kn;return qa=e,qa}var Ba,ch;function it(){if(ch)return Ba;ch=1;var e=Fm(),t=typeof self=="object"&&self&&self.Object===Object&&self,r=e||t||Function("return this")();return Ba=r,Ba}var La,sh;function Nn(){if(sh)return La;sh=1;var e=it(),t=e.Symbol;return La=t,La}var Fa,lh;function Jx(){if(lh)return Fa;lh=1;var e=Nn(),t=Object.prototype,r=t.hasOwnProperty,n=t.toString,i=e?e.toStringTag:void 0;function a(o){var u=r.call(o,i),c=o[i];try{o[i]=void 0;var s=!0}catch{}var f=n.call(o);return s&&(u?o[i]=c:delete o[i]),f}return Fa=a,Fa}var Ua,fh;function Qx(){if(fh)return Ua;fh=1;var e=Object.prototype,t=e.toString;function r(n){return t.call(n)}return Ua=r,Ua}var za,hh;function mt(){if(hh)return za;hh=1;var e=Nn(),t=Jx(),r=Qx(),n="[object Null]",i="[object Undefined]",a=e?e.toStringTag:void 0;function o(u){return u==null?u===void 0?i:n:a&&a in Object(u)?t(u):r(u)}return za=o,za}var Wa,ph;function bt(){if(ph)return Wa;ph=1;function e(t){return t!=null&&typeof t=="object"}return Wa=e,Wa}var Ha,dh;function $r(){if(dh)return Ha;dh=1;var e=mt(),t=bt(),r="[object Symbol]";function n(i){return typeof i=="symbol"||t(i)&&e(i)==r}return Ha=n,Ha}var Ga,vh;function Ql(){if(vh)return Ga;vh=1;var e=Re(),t=$r(),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n=/^\w*$/;function i(a,o){if(e(a))return!1;var u=typeof a;return u=="number"||u=="symbol"||u=="boolean"||a==null||t(a)?!0:n.test(a)||!r.test(a)||o!=null&&a in Object(o)}return Ga=i,Ga}var Ka,yh;function Tt(){if(yh)return Ka;yh=1;function e(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}return Ka=e,Ka}var Xa,gh;function ef(){if(gh)return Xa;gh=1;var e=mt(),t=Tt(),r="[object AsyncFunction]",n="[object Function]",i="[object GeneratorFunction]",a="[object Proxy]";function o(u){if(!t(u))return!1;var c=e(u);return c==n||c==i||c==r||c==a}return Xa=o,Xa}var Va,mh;function ew(){if(mh)return Va;mh=1;var e=it(),t=e["__core-js_shared__"];return Va=t,Va}var Ya,bh;function tw(){if(bh)return Ya;bh=1;var e=ew(),t=(function(){var n=/[^.]+$/.exec(e&&e.keys&&e.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""})();function r(n){return!!t&&t in n}return Ya=r,Ya}var Za,xh;function Um(){if(xh)return Za;xh=1;var e=Function.prototype,t=e.toString;function r(n){if(n!=null){try{return t.call(n)}catch{}try{return n+""}catch{}}return""}return Za=r,Za}var Ja,wh;function rw(){if(wh)return Ja;wh=1;var e=ef(),t=tw(),r=Tt(),n=Um(),i=/[\\^$.*+?()[\]{}|]/g,a=/^\[object .+?Constructor\]$/,o=Function.prototype,u=Object.prototype,c=o.toString,s=u.hasOwnProperty,f=RegExp("^"+c.call(s).replace(i,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function l(h){if(!r(h)||t(h))return!1;var d=e(h)?f:a;return d.test(n(h))}return Ja=l,Ja}var Qa,Oh;function nw(){if(Oh)return Qa;Oh=1;function e(t,r){return t==null?void 0:t[r]}return Qa=e,Qa}var eo,_h;function Vt(){if(_h)return eo;_h=1;var e=rw(),t=nw();function r(n,i){var a=t(n,i);return e(a)?a:void 0}return eo=r,eo}var to,Sh;function ia(){if(Sh)return to;Sh=1;var e=Vt(),t=e(Object,"create");return to=t,to}var ro,Ah;function iw(){if(Ah)return ro;Ah=1;var e=ia();function t(){this.__data__=e?e(null):{},this.size=0}return ro=t,ro}var no,Ph;function aw(){if(Ph)return no;Ph=1;function e(t){var r=this.has(t)&&delete this.__data__[t];return this.size-=r?1:0,r}return no=e,no}var io,Th;function ow(){if(Th)return io;Th=1;var e=ia(),t="__lodash_hash_undefined__",r=Object.prototype,n=r.hasOwnProperty;function i(a){var o=this.__data__;if(e){var u=o[a];return u===t?void 0:u}return n.call(o,a)?o[a]:void 0}return io=i,io}var ao,Eh;function uw(){if(Eh)return ao;Eh=1;var e=ia(),t=Object.prototype,r=t.hasOwnProperty;function n(i){var a=this.__data__;return e?a[i]!==void 0:r.call(a,i)}return ao=n,ao}var oo,jh;function cw(){if(jh)return oo;jh=1;var e=ia(),t="__lodash_hash_undefined__";function r(n,i){var a=this.__data__;return this.size+=this.has(n)?0:1,a[n]=e&&i===void 0?t:i,this}return oo=r,oo}var uo,Mh;function sw(){if(Mh)return uo;Mh=1;var e=iw(),t=aw(),r=ow(),n=uw(),i=cw();function a(o){var u=-1,c=o==null?0:o.length;for(this.clear();++u<c;){var s=o[u];this.set(s[0],s[1])}}return a.prototype.clear=e,a.prototype.delete=t,a.prototype.get=r,a.prototype.has=n,a.prototype.set=i,uo=a,uo}var co,Ch;function lw(){if(Ch)return co;Ch=1;function e(){this.__data__=[],this.size=0}return co=e,co}var so,$h;function tf(){if($h)return so;$h=1;function e(t,r){return t===r||t!==t&&r!==r}return so=e,so}var lo,Ih;function aa(){if(Ih)return lo;Ih=1;var e=tf();function t(r,n){for(var i=r.length;i--;)if(e(r[i][0],n))return i;return-1}return lo=t,lo}var fo,Rh;function fw(){if(Rh)return fo;Rh=1;var e=aa(),t=Array.prototype,r=t.splice;function n(i){var a=this.__data__,o=e(a,i);if(o<0)return!1;var u=a.length-1;return o==u?a.pop():r.call(a,o,1),--this.size,!0}return fo=n,fo}var ho,kh;function hw(){if(kh)return ho;kh=1;var e=aa();function t(r){var n=this.__data__,i=e(n,r);return i<0?void 0:n[i][1]}return ho=t,ho}var po,Dh;function pw(){if(Dh)return po;Dh=1;var e=aa();function t(r){return e(this.__data__,r)>-1}return po=t,po}var vo,Nh;function dw(){if(Nh)return vo;Nh=1;var e=aa();function t(r,n){var i=this.__data__,a=e(i,r);return a<0?(++this.size,i.push([r,n])):i[a][1]=n,this}return vo=t,vo}var yo,qh;function oa(){if(qh)return yo;qh=1;var e=lw(),t=fw(),r=hw(),n=pw(),i=dw();function a(o){var u=-1,c=o==null?0:o.length;for(this.clear();++u<c;){var s=o[u];this.set(s[0],s[1])}}return a.prototype.clear=e,a.prototype.delete=t,a.prototype.get=r,a.prototype.has=n,a.prototype.set=i,yo=a,yo}var go,Bh;function rf(){if(Bh)return go;Bh=1;var e=Vt(),t=it(),r=e(t,"Map");return go=r,go}var mo,Lh;function vw(){if(Lh)return mo;Lh=1;var e=sw(),t=oa(),r=rf();function n(){this.size=0,this.__data__={hash:new e,map:new(r||t),string:new e}}return mo=n,mo}var bo,Fh;function yw(){if(Fh)return bo;Fh=1;function e(t){var r=typeof t;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?t!=="__proto__":t===null}return bo=e,bo}var xo,Uh;function ua(){if(Uh)return xo;Uh=1;var e=yw();function t(r,n){var i=r.__data__;return e(n)?i[typeof n=="string"?"string":"hash"]:i.map}return xo=t,xo}var wo,zh;function gw(){if(zh)return wo;zh=1;var e=ua();function t(r){var n=e(this,r).delete(r);return this.size-=n?1:0,n}return wo=t,wo}var Oo,Wh;function mw(){if(Wh)return Oo;Wh=1;var e=ua();function t(r){return e(this,r).get(r)}return Oo=t,Oo}var _o,Hh;function bw(){if(Hh)return _o;Hh=1;var e=ua();function t(r){return e(this,r).has(r)}return _o=t,_o}var So,Gh;function xw(){if(Gh)return So;Gh=1;var e=ua();function t(r,n){var i=e(this,r),a=i.size;return i.set(r,n),this.size+=i.size==a?0:1,this}return So=t,So}var Ao,Kh;function nf(){if(Kh)return Ao;Kh=1;var e=vw(),t=gw(),r=mw(),n=bw(),i=xw();function a(o){var u=-1,c=o==null?0:o.length;for(this.clear();++u<c;){var s=o[u];this.set(s[0],s[1])}}return a.prototype.clear=e,a.prototype.delete=t,a.prototype.get=r,a.prototype.has=n,a.prototype.set=i,Ao=a,Ao}var Po,Xh;function zm(){if(Xh)return Po;Xh=1;var e=nf(),t="Expected a function";function r(n,i){if(typeof n!="function"||i!=null&&typeof i!="function")throw new TypeError(t);var a=function(){var o=arguments,u=i?i.apply(this,o):o[0],c=a.cache;if(c.has(u))return c.get(u);var s=n.apply(this,o);return a.cache=c.set(u,s)||c,s};return a.cache=new(r.Cache||e),a}return r.Cache=e,Po=r,Po}var To,Vh;function ww(){if(Vh)return To;Vh=1;var e=zm(),t=500;function r(n){var i=e(n,function(o){return a.size===t&&a.clear(),o}),a=i.cache;return i}return To=r,To}var Eo,Yh;function Ow(){if(Yh)return Eo;Yh=1;var e=ww(),t=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,r=/\\(\\)?/g,n=e(function(i){var a=[];return i.charCodeAt(0)===46&&a.push(""),i.replace(t,function(o,u,c,s){a.push(c?s.replace(r,"$1"):u||o)}),a});return Eo=n,Eo}var jo,Zh;function af(){if(Zh)return jo;Zh=1;function e(t,r){for(var n=-1,i=t==null?0:t.length,a=Array(i);++n<i;)a[n]=r(t[n],n,t);return a}return jo=e,jo}var Mo,Jh;function _w(){if(Jh)return Mo;Jh=1;var e=Nn(),t=af(),r=Re(),n=$r(),i=e?e.prototype:void 0,a=i?i.toString:void 0;function o(u){if(typeof u=="string")return u;if(r(u))return t(u,o)+"";if(n(u))return a?a.call(u):"";var c=u+"";return c=="0"&&1/u==-1/0?"-0":c}return Mo=o,Mo}var Co,Qh;function Wm(){if(Qh)return Co;Qh=1;var e=_w();function t(r){return r==null?"":e(r)}return Co=t,Co}var $o,ep;function Hm(){if(ep)return $o;ep=1;var e=Re(),t=Ql(),r=Ow(),n=Wm();function i(a,o){return e(a)?a:t(a,o)?[a]:r(n(a))}return $o=i,$o}var Io,tp;function ca(){if(tp)return Io;tp=1;var e=$r();function t(r){if(typeof r=="string"||e(r))return r;var n=r+"";return n=="0"&&1/r==-1/0?"-0":n}return Io=t,Io}var Ro,rp;function of(){if(rp)return Ro;rp=1;var e=Hm(),t=ca();function r(n,i){i=e(i,n);for(var a=0,o=i.length;n!=null&&a<o;)n=n[t(i[a++])];return a&&a==o?n:void 0}return Ro=r,Ro}var ko,np;function Gm(){if(np)return ko;np=1;var e=of();function t(r,n,i){var a=r==null?void 0:e(r,n);return a===void 0?i:a}return ko=t,ko}var Sw=Gm();const ze=ue(Sw);var Do,ip;function Aw(){if(ip)return Do;ip=1;function e(t){return t==null}return Do=e,Do}var Pw=Aw();const Z=ue(Pw);var No,ap;function Tw(){if(ap)return No;ap=1;var e=mt(),t=Re(),r=bt(),n="[object String]";function i(a){return typeof a=="string"||!t(a)&&r(a)&&e(a)==n}return No=i,No}var Ew=Tw();const Ht=ue(Ew);var jw=ef();const Y=ue(jw);var Mw=Tt();const Ir=ue(Mw);var qo={exports:{}},re={};/**
1
+ import{e as Kn,g as ue,r as N,R as T,j as ot,f as Zx}from"./index-CYYYW9md.js";function Lm(e){var t,r,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(r=Lm(e[t]))&&(n&&(n+=" "),n+=r)}else for(r in e)e[r]&&(n&&(n+=" "),n+=r);return n}function te(){for(var e,t,r=0,n="",i=arguments.length;r<i;r++)(e=arguments[r])&&(t=Lm(e))&&(n&&(n+=" "),n+=t);return n}var Na,oh;function Re(){if(oh)return Na;oh=1;var e=Array.isArray;return Na=e,Na}var qa,uh;function Fm(){if(uh)return qa;uh=1;var e=typeof Kn=="object"&&Kn&&Kn.Object===Object&&Kn;return qa=e,qa}var Ba,ch;function it(){if(ch)return Ba;ch=1;var e=Fm(),t=typeof self=="object"&&self&&self.Object===Object&&self,r=e||t||Function("return this")();return Ba=r,Ba}var La,sh;function Nn(){if(sh)return La;sh=1;var e=it(),t=e.Symbol;return La=t,La}var Fa,lh;function Jx(){if(lh)return Fa;lh=1;var e=Nn(),t=Object.prototype,r=t.hasOwnProperty,n=t.toString,i=e?e.toStringTag:void 0;function a(o){var u=r.call(o,i),c=o[i];try{o[i]=void 0;var s=!0}catch{}var f=n.call(o);return s&&(u?o[i]=c:delete o[i]),f}return Fa=a,Fa}var Ua,fh;function Qx(){if(fh)return Ua;fh=1;var e=Object.prototype,t=e.toString;function r(n){return t.call(n)}return Ua=r,Ua}var za,hh;function mt(){if(hh)return za;hh=1;var e=Nn(),t=Jx(),r=Qx(),n="[object Null]",i="[object Undefined]",a=e?e.toStringTag:void 0;function o(u){return u==null?u===void 0?i:n:a&&a in Object(u)?t(u):r(u)}return za=o,za}var Wa,ph;function bt(){if(ph)return Wa;ph=1;function e(t){return t!=null&&typeof t=="object"}return Wa=e,Wa}var Ha,dh;function $r(){if(dh)return Ha;dh=1;var e=mt(),t=bt(),r="[object Symbol]";function n(i){return typeof i=="symbol"||t(i)&&e(i)==r}return Ha=n,Ha}var Ga,vh;function Ql(){if(vh)return Ga;vh=1;var e=Re(),t=$r(),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n=/^\w*$/;function i(a,o){if(e(a))return!1;var u=typeof a;return u=="number"||u=="symbol"||u=="boolean"||a==null||t(a)?!0:n.test(a)||!r.test(a)||o!=null&&a in Object(o)}return Ga=i,Ga}var Ka,yh;function Tt(){if(yh)return Ka;yh=1;function e(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}return Ka=e,Ka}var Xa,gh;function ef(){if(gh)return Xa;gh=1;var e=mt(),t=Tt(),r="[object AsyncFunction]",n="[object Function]",i="[object GeneratorFunction]",a="[object Proxy]";function o(u){if(!t(u))return!1;var c=e(u);return c==n||c==i||c==r||c==a}return Xa=o,Xa}var Va,mh;function ew(){if(mh)return Va;mh=1;var e=it(),t=e["__core-js_shared__"];return Va=t,Va}var Ya,bh;function tw(){if(bh)return Ya;bh=1;var e=ew(),t=(function(){var n=/[^.]+$/.exec(e&&e.keys&&e.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""})();function r(n){return!!t&&t in n}return Ya=r,Ya}var Za,xh;function Um(){if(xh)return Za;xh=1;var e=Function.prototype,t=e.toString;function r(n){if(n!=null){try{return t.call(n)}catch{}try{return n+""}catch{}}return""}return Za=r,Za}var Ja,wh;function rw(){if(wh)return Ja;wh=1;var e=ef(),t=tw(),r=Tt(),n=Um(),i=/[\\^$.*+?()[\]{}|]/g,a=/^\[object .+?Constructor\]$/,o=Function.prototype,u=Object.prototype,c=o.toString,s=u.hasOwnProperty,f=RegExp("^"+c.call(s).replace(i,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function l(h){if(!r(h)||t(h))return!1;var d=e(h)?f:a;return d.test(n(h))}return Ja=l,Ja}var Qa,Oh;function nw(){if(Oh)return Qa;Oh=1;function e(t,r){return t==null?void 0:t[r]}return Qa=e,Qa}var eo,_h;function Vt(){if(_h)return eo;_h=1;var e=rw(),t=nw();function r(n,i){var a=t(n,i);return e(a)?a:void 0}return eo=r,eo}var to,Sh;function ia(){if(Sh)return to;Sh=1;var e=Vt(),t=e(Object,"create");return to=t,to}var ro,Ah;function iw(){if(Ah)return ro;Ah=1;var e=ia();function t(){this.__data__=e?e(null):{},this.size=0}return ro=t,ro}var no,Ph;function aw(){if(Ph)return no;Ph=1;function e(t){var r=this.has(t)&&delete this.__data__[t];return this.size-=r?1:0,r}return no=e,no}var io,Th;function ow(){if(Th)return io;Th=1;var e=ia(),t="__lodash_hash_undefined__",r=Object.prototype,n=r.hasOwnProperty;function i(a){var o=this.__data__;if(e){var u=o[a];return u===t?void 0:u}return n.call(o,a)?o[a]:void 0}return io=i,io}var ao,Eh;function uw(){if(Eh)return ao;Eh=1;var e=ia(),t=Object.prototype,r=t.hasOwnProperty;function n(i){var a=this.__data__;return e?a[i]!==void 0:r.call(a,i)}return ao=n,ao}var oo,jh;function cw(){if(jh)return oo;jh=1;var e=ia(),t="__lodash_hash_undefined__";function r(n,i){var a=this.__data__;return this.size+=this.has(n)?0:1,a[n]=e&&i===void 0?t:i,this}return oo=r,oo}var uo,Mh;function sw(){if(Mh)return uo;Mh=1;var e=iw(),t=aw(),r=ow(),n=uw(),i=cw();function a(o){var u=-1,c=o==null?0:o.length;for(this.clear();++u<c;){var s=o[u];this.set(s[0],s[1])}}return a.prototype.clear=e,a.prototype.delete=t,a.prototype.get=r,a.prototype.has=n,a.prototype.set=i,uo=a,uo}var co,Ch;function lw(){if(Ch)return co;Ch=1;function e(){this.__data__=[],this.size=0}return co=e,co}var so,$h;function tf(){if($h)return so;$h=1;function e(t,r){return t===r||t!==t&&r!==r}return so=e,so}var lo,Ih;function aa(){if(Ih)return lo;Ih=1;var e=tf();function t(r,n){for(var i=r.length;i--;)if(e(r[i][0],n))return i;return-1}return lo=t,lo}var fo,Rh;function fw(){if(Rh)return fo;Rh=1;var e=aa(),t=Array.prototype,r=t.splice;function n(i){var a=this.__data__,o=e(a,i);if(o<0)return!1;var u=a.length-1;return o==u?a.pop():r.call(a,o,1),--this.size,!0}return fo=n,fo}var ho,kh;function hw(){if(kh)return ho;kh=1;var e=aa();function t(r){var n=this.__data__,i=e(n,r);return i<0?void 0:n[i][1]}return ho=t,ho}var po,Dh;function pw(){if(Dh)return po;Dh=1;var e=aa();function t(r){return e(this.__data__,r)>-1}return po=t,po}var vo,Nh;function dw(){if(Nh)return vo;Nh=1;var e=aa();function t(r,n){var i=this.__data__,a=e(i,r);return a<0?(++this.size,i.push([r,n])):i[a][1]=n,this}return vo=t,vo}var yo,qh;function oa(){if(qh)return yo;qh=1;var e=lw(),t=fw(),r=hw(),n=pw(),i=dw();function a(o){var u=-1,c=o==null?0:o.length;for(this.clear();++u<c;){var s=o[u];this.set(s[0],s[1])}}return a.prototype.clear=e,a.prototype.delete=t,a.prototype.get=r,a.prototype.has=n,a.prototype.set=i,yo=a,yo}var go,Bh;function rf(){if(Bh)return go;Bh=1;var e=Vt(),t=it(),r=e(t,"Map");return go=r,go}var mo,Lh;function vw(){if(Lh)return mo;Lh=1;var e=sw(),t=oa(),r=rf();function n(){this.size=0,this.__data__={hash:new e,map:new(r||t),string:new e}}return mo=n,mo}var bo,Fh;function yw(){if(Fh)return bo;Fh=1;function e(t){var r=typeof t;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?t!=="__proto__":t===null}return bo=e,bo}var xo,Uh;function ua(){if(Uh)return xo;Uh=1;var e=yw();function t(r,n){var i=r.__data__;return e(n)?i[typeof n=="string"?"string":"hash"]:i.map}return xo=t,xo}var wo,zh;function gw(){if(zh)return wo;zh=1;var e=ua();function t(r){var n=e(this,r).delete(r);return this.size-=n?1:0,n}return wo=t,wo}var Oo,Wh;function mw(){if(Wh)return Oo;Wh=1;var e=ua();function t(r){return e(this,r).get(r)}return Oo=t,Oo}var _o,Hh;function bw(){if(Hh)return _o;Hh=1;var e=ua();function t(r){return e(this,r).has(r)}return _o=t,_o}var So,Gh;function xw(){if(Gh)return So;Gh=1;var e=ua();function t(r,n){var i=e(this,r),a=i.size;return i.set(r,n),this.size+=i.size==a?0:1,this}return So=t,So}var Ao,Kh;function nf(){if(Kh)return Ao;Kh=1;var e=vw(),t=gw(),r=mw(),n=bw(),i=xw();function a(o){var u=-1,c=o==null?0:o.length;for(this.clear();++u<c;){var s=o[u];this.set(s[0],s[1])}}return a.prototype.clear=e,a.prototype.delete=t,a.prototype.get=r,a.prototype.has=n,a.prototype.set=i,Ao=a,Ao}var Po,Xh;function zm(){if(Xh)return Po;Xh=1;var e=nf(),t="Expected a function";function r(n,i){if(typeof n!="function"||i!=null&&typeof i!="function")throw new TypeError(t);var a=function(){var o=arguments,u=i?i.apply(this,o):o[0],c=a.cache;if(c.has(u))return c.get(u);var s=n.apply(this,o);return a.cache=c.set(u,s)||c,s};return a.cache=new(r.Cache||e),a}return r.Cache=e,Po=r,Po}var To,Vh;function ww(){if(Vh)return To;Vh=1;var e=zm(),t=500;function r(n){var i=e(n,function(o){return a.size===t&&a.clear(),o}),a=i.cache;return i}return To=r,To}var Eo,Yh;function Ow(){if(Yh)return Eo;Yh=1;var e=ww(),t=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,r=/\\(\\)?/g,n=e(function(i){var a=[];return i.charCodeAt(0)===46&&a.push(""),i.replace(t,function(o,u,c,s){a.push(c?s.replace(r,"$1"):u||o)}),a});return Eo=n,Eo}var jo,Zh;function af(){if(Zh)return jo;Zh=1;function e(t,r){for(var n=-1,i=t==null?0:t.length,a=Array(i);++n<i;)a[n]=r(t[n],n,t);return a}return jo=e,jo}var Mo,Jh;function _w(){if(Jh)return Mo;Jh=1;var e=Nn(),t=af(),r=Re(),n=$r(),i=e?e.prototype:void 0,a=i?i.toString:void 0;function o(u){if(typeof u=="string")return u;if(r(u))return t(u,o)+"";if(n(u))return a?a.call(u):"";var c=u+"";return c=="0"&&1/u==-1/0?"-0":c}return Mo=o,Mo}var Co,Qh;function Wm(){if(Qh)return Co;Qh=1;var e=_w();function t(r){return r==null?"":e(r)}return Co=t,Co}var $o,ep;function Hm(){if(ep)return $o;ep=1;var e=Re(),t=Ql(),r=Ow(),n=Wm();function i(a,o){return e(a)?a:t(a,o)?[a]:r(n(a))}return $o=i,$o}var Io,tp;function ca(){if(tp)return Io;tp=1;var e=$r();function t(r){if(typeof r=="string"||e(r))return r;var n=r+"";return n=="0"&&1/r==-1/0?"-0":n}return Io=t,Io}var Ro,rp;function of(){if(rp)return Ro;rp=1;var e=Hm(),t=ca();function r(n,i){i=e(i,n);for(var a=0,o=i.length;n!=null&&a<o;)n=n[t(i[a++])];return a&&a==o?n:void 0}return Ro=r,Ro}var ko,np;function Gm(){if(np)return ko;np=1;var e=of();function t(r,n,i){var a=r==null?void 0:e(r,n);return a===void 0?i:a}return ko=t,ko}var Sw=Gm();const ze=ue(Sw);var Do,ip;function Aw(){if(ip)return Do;ip=1;function e(t){return t==null}return Do=e,Do}var Pw=Aw();const Z=ue(Pw);var No,ap;function Tw(){if(ap)return No;ap=1;var e=mt(),t=Re(),r=bt(),n="[object String]";function i(a){return typeof a=="string"||!t(a)&&r(a)&&e(a)==n}return No=i,No}var Ew=Tw();const Ht=ue(Ew);var jw=ef();const Y=ue(jw);var Mw=Tt();const Ir=ue(Mw);var qo={exports:{}},re={};/**
2
2
  * @license React
3
3
  * react-is.production.min.js
4
4
  *
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./timeline-3xfYyagR.js","./chart-4esa6Moa.js","./breakdown-D0J7VFIG.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./timeline-fWBF8gai.js","./chart-BcpjNTdg.js","./breakdown-Dwgq3tc4.js"])))=>i.map(i=>d[i]);
2
2
  var dv=Object.defineProperty;var fv=(e,o,r)=>o in e?dv(e,o,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[o]=r;var Je=(e,o,r)=>fv(e,typeof o!="symbol"?o+"":o,r);(function(){const o=document.createElement("link").relList;if(o&&o.supports&&o.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))i(l);new MutationObserver(l=>{for(const u of l)if(u.type==="childList")for(const d of u.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&i(d)}).observe(document,{childList:!0,subtree:!0});function r(l){const u={};return l.integrity&&(u.integrity=l.integrity),l.referrerPolicy&&(u.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?u.credentials="include":l.crossOrigin==="anonymous"?u.credentials="omit":u.credentials="same-origin",u}function i(l){if(l.ep)return;l.ep=!0;const u=r(l);fetch(l.href,u)}})();var i1=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function hv(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Da={exports:{}},Fo={},ba={exports:{}},we={};/**
3
3
  * @license React
4
4
  * react.production.min.js
@@ -56,7 +56,7 @@ Error generating stack: `+f.message+`
56
56
  * This source code is licensed under the MIT license found in the
57
57
  * LICENSE file in the root directory of this source tree.
58
58
  */var Rh;function sx(){if(Rh)return Xa;Rh=1;var e=es(),o=ox();function r(m,x){return m===x&&(m!==0||1/m===1/x)||m!==m&&x!==x}var i=typeof Object.is=="function"?Object.is:r,l=o.useSyncExternalStore,u=e.useRef,d=e.useEffect,h=e.useMemo,p=e.useDebugValue;return Xa.useSyncExternalStoreWithSelector=function(m,x,v,w,y){var C=u(null);if(C.current===null){var R={hasValue:!1,value:null};C.current=R}else R=C.current;C=h(function(){function P(U){if(!L){if(L=!0,A=U,U=w(U),y!==void 0&&R.hasValue){var I=R.value;if(y(I,U))return M=I}return M=U}if(I=M,i(A,U))return I;var $=w(U);return y!==void 0&&y(I,$)?(A=U,I):(A=U,M=$)}var L=!1,A,M,z=v===void 0?null:v;return[function(){return P(x())},z===null?void 0:function(){return P(z())}]},[x,v,w,y]);var k=l(m,C[0],C[1]);return d(function(){R.hasValue=!0,R.value=k},[k]),p(k),k},Xa}var kh;function ix(){return kh||(kh=1,Ka.exports=sx()),Ka.exports}var lx=ix();function ax(e,o){return e===o}function rt(e,o,r=ax){const i=b.useCallback(d=>{if(!e)return()=>{};const{unsubscribe:h}=e.subscribe(d);return h},[e]),l=b.useCallback(()=>e==null?void 0:e.get(),[e]);return lx.useSyncExternalStoreWithSelector(i,l,l,o,r)}var Za={get(){},subscribe(){return{unsubscribe(){}}}};function Cp(e,o){const r=b.useRef();return i=>{const l=e!=null&&e.select?e.select(i):i;return(e==null?void 0:e.structuralSharing)??o.options.defaultStructuralSharing?r.current=nr(r.current,l):l}}function ar(e){const o=wt(),r=b.useContext(e.from?Yy:Vi),i=e.from?o.stores.getRouteMatchStore(e.from):o.stores.matchStores.get(r),l=Cp(e,o),u=rt(i??Za,d=>d?l(d):Za);if(u!==Za)return u;(e.shouldThrow??!0)&&rn()}function Rp(e){return ar({from:e.from,strict:e.strict,structuralSharing:e.structuralSharing,select:o=>e.select?e.select(o.loaderData):o.loaderData})}function kp(e){const{select:o,...r}=e;return ar({...r,select:i=>o?o(i.loaderDeps):i.loaderDeps})}function _p(e){return ar({from:e.from,shouldThrow:e.shouldThrow,structuralSharing:e.structuralSharing,strict:e.strict,select:o=>{const r=e.strict===!1?o.params:o._strictParams;return e.select?e.select(r):r}})}function Pp(e){return ar({from:e.from,strict:e.strict,shouldThrow:e.shouldThrow,structuralSharing:e.structuralSharing,select:o=>e.select?e.select(o.search):o.search})}function Ep(e){const o=wt();return b.useCallback(r=>o.navigate({...r,from:r.from??(e==null?void 0:e.from)}),[e==null?void 0:e.from,o])}function jp(e){return ar({...e,select:o=>e.select?e.select(o.context):o.context})}var ux=Xh();function cx(e,o){const r=wt(),i=Wv(o),{activeProps:l,inactiveProps:u,activeOptions:d,to:h,preload:p,preloadDelay:m,preloadIntentProximity:x,hashScrollIntoView:v,replace:w,startTransition:y,resetScroll:C,viewTransition:R,children:k,target:P,disabled:L,style:A,className:M,onClick:z,onBlur:U,onFocus:I,onMouseEnter:$,onMouseLeave:O,onTouchStart:B,ignoreBlocker:V,params:J,search:X,hash:Q,state:ge,mask:pe,reloadDocument:Z,unsafeRelative:Y,from:le,_fromLocation:ee,...N}=e,H=vp(),ue=b.useMemo(()=>e,[r,e.from,e._fromLocation,e.hash,e.to,e.search,e.params,e.state,e.mask,e.unsafeRelative]),ae=rt(r.stores.location,ke=>ke,(ke,qe)=>ke.href===qe.href),re=b.useMemo(()=>{const ke={_fromLocation:ae,...ue};return r.buildLocation(ke)},[r,ae,ue]),ye=re.maskedLocation?re.maskedLocation.publicHref:re.publicHref,Ce=re.maskedLocation?re.maskedLocation.external:re.external,ve=b.useMemo(()=>mx(ye,Ce,r.history,L),[L,Ce,ye,r.history]),xe=b.useMemo(()=>{if(ve!=null&&ve.external)return Ni(ve.href,r.protocolAllowlist)?void 0:ve.href;if(!vx(h)&&!(typeof h!="string"||h.indexOf(":")===-1))try{return new URL(h),Ni(h,r.protocolAllowlist)?void 0:h}catch{}},[h,ve,r.protocolAllowlist]),De=b.useMemo(()=>{if(xe)return!1;if(d!=null&&d.exact){if(!cy(ae.pathname,re.pathname,r.basepath))return!1}else{const ke=Ii(ae.pathname,r.basepath),qe=Ii(re.pathname,r.basepath);if(!(ke.startsWith(qe)&&(ke.length===qe.length||ke[qe.length]==="/")))return!1}return((d==null?void 0:d.includeSearch)??!0)&&!or(ae.search,re.search,{partial:!(d!=null&&d.exact),ignoreUndefined:!(d!=null&&d.explicitUndefined)})?!1:d!=null&&d.includeHash?H&&ae.hash===re.hash:!0},[d==null?void 0:d.exact,d==null?void 0:d.explicitUndefined,d==null?void 0:d.includeHash,d==null?void 0:d.includeSearch,ae,xe,H,re.hash,re.pathname,re.search,r.basepath]),Ht=De?tr(l,{})??dx:eu,zn=De?eu:tr(u,{})??eu,An=[M,Ht.className,zn.className].filter(Boolean).join(" "),ur=(A||Ht.style||zn.style)&&{...A,...Ht.style,...zn.style},[rs,Gr]=b.useState(!1),cr=b.useRef(!1),qt=e.reloadDocument||xe?!1:p??r.options.defaultPreload,On=m??r.options.defaultPreloadDelay??0,ft=b.useCallback(()=>{r.preloadRoute({...ue,_builtLocation:re}).catch(ke=>{console.warn(ke),console.warn(Gy)})},[r,ue,re]);Gv(i,b.useCallback(ke=>{ke!=null&&ke.isIntersecting&&ft()},[ft]),gx,{disabled:!!L||qt!=="viewport"}),b.useEffect(()=>{cr.current||!L&&qt==="render"&&(ft(),cr.current=!0)},[L,ft,qt]);const sn=ke=>{const qe=ke.currentTarget.getAttribute("target"),Et=P!==void 0?P:qe;if(!L&&!yx(ke)&&!ke.defaultPrevented&&(!Et||Et==="_self")&&ke.button===0){ke.preventDefault(),ux.flushSync(()=>{Gr(!0)});const fr=r.subscribe("onResolved",()=>{fr(),Gr(!1)});r.navigate({...ue,replace:w,resetScroll:C,hashScrollIntoView:v,startTransition:y,viewTransition:R,ignoreBlocker:V})}};if(xe)return{...N,ref:i,href:xe,...k&&{children:k},...P&&{target:P},...L&&{disabled:L},...A&&{style:A},...M&&{className:M},...z&&{onClick:z},...U&&{onBlur:U},...I&&{onFocus:I},...$&&{onMouseEnter:$},...O&&{onMouseLeave:O},...B&&{onTouchStart:B}};const dr=ke=>{if(L||qt!=="intent")return;if(!On){ft();return}const qe=ke.currentTarget;if(Do.has(qe))return;const Et=setTimeout(()=>{Do.delete(qe),ft()},On);Do.set(qe,Et)},os=ke=>{L||qt!=="intent"||ft()},Wr=ke=>{if(L||!qt||!On)return;const qe=ke.currentTarget,Et=Do.get(qe);Et&&(clearTimeout(Et),Do.delete(qe))};return{...N,...Ht,...zn,href:ve==null?void 0:ve.href,ref:i,onClick:br([z,sn]),onBlur:br([U,Wr]),onFocus:br([I,dr]),onMouseEnter:br([$,dr]),onMouseLeave:br([O,Wr]),onTouchStart:br([B,os]),disabled:!!L,target:P,...ur&&{style:ur},...An&&{className:An},...L&&fx,...De&&hx,...H&&rs&&px}}var eu={},dx={className:"active"},fx={role:"link","aria-disabled":!0},hx={"data-status":"active","aria-current":"page"},px={"data-transitioning":"transitioning"},Do=new WeakMap,gx={rootMargin:"100px"},br=e=>o=>{for(const r of e)if(r){if(o.defaultPrevented)return;r(o)}};function mx(e,o,r,i){if(!i)return o?{href:e,external:!0}:{href:r.createHref(e)||"/",external:!1}}function vx(e){if(typeof e!="string")return!1;const o=e.charCodeAt(0);return o===47?e.charCodeAt(1)!==47:o===46}var qu=b.forwardRef((e,o)=>{const{_asChild:r,...i}=e,{type:l,...u}=cx(i,o),d=typeof i.children=="function"?i.children({isActive:u["data-status"]==="active"}):i.children;if(!r){const{disabled:h,...p}=u;return b.createElement("a",p,d)}return b.createElement(r,u,d)});function yx(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}var xx=class extends mp{constructor(e){super(e),this.useMatch=o=>ar({select:o==null?void 0:o.select,from:this.id,structuralSharing:o==null?void 0:o.structuralSharing}),this.useRouteContext=o=>jp({...o,from:this.id}),this.useSearch=o=>Pp({select:o==null?void 0:o.select,structuralSharing:o==null?void 0:o.structuralSharing,from:this.id}),this.useParams=o=>_p({select:o==null?void 0:o.select,structuralSharing:o==null?void 0:o.structuralSharing,from:this.id}),this.useLoaderDeps=o=>kp({...o,from:this.id}),this.useLoaderData=o=>Rp({...o,from:this.id}),this.useNavigate=()=>Ep({from:this.fullPath}),this.Link=Go.forwardRef((o,r)=>g.jsx(qu,{ref:r,from:this.fullPath,...o}))}};function Mp(e){return new xx(e)}var wx=class extends Wy{constructor(e){super(e),this.useMatch=o=>ar({select:o==null?void 0:o.select,from:this.id,structuralSharing:o==null?void 0:o.structuralSharing}),this.useRouteContext=o=>jp({...o,from:this.id}),this.useSearch=o=>Pp({select:o==null?void 0:o.select,structuralSharing:o==null?void 0:o.structuralSharing,from:this.id}),this.useParams=o=>_p({select:o==null?void 0:o.select,structuralSharing:o==null?void 0:o.structuralSharing,from:this.id}),this.useLoaderDeps=o=>kp({...o,from:this.id}),this.useLoaderData=o=>Rp({...o,from:this.id}),this.useNavigate=()=>Ep({from:this.fullPath}),this.Link=Go.forwardRef((o,r)=>g.jsx(qu,{ref:r,from:this.fullPath,...o}))}};function Sx(e){return new wx(e)}function Cx(e){const o=wt(),r=`not-found-${rt(o.stores.location,i=>i.pathname)}-${rt(o.stores.status,i=>i)}`;return g.jsx(Uu,{getResetKey:()=>r,onCatch:(i,l)=>{var u;if(et(i))(u=e.onCatch)==null||u.call(e,i,l);else throw i},errorComponent:({error:i})=>{var l;if(et(i))return(l=e.fallback)==null?void 0:l.call(e,i);throw i},children:e.children})}function Rx(){return g.jsx("p",{children:"Not Found"})}function Br(e){return g.jsx(g.Fragment,{children:e.children})}function Lp(e,o,r){return o.options.notFoundComponent?g.jsx(o.options.notFoundComponent,{...r}):e.options.defaultNotFoundComponent?g.jsx(e.options.defaultNotFoundComponent,{...r}):g.jsx(Rx,{})}function kx(e){return null}function _x(){return kx(wt()),null}var Px=(e,o)=>e.routeId===o.routeId&&e._displayPending===o._displayPending,Ex=(e,o)=>e[0]===o[0]&&e[1]===o[1],Np=b.memo(function({matchId:o}){const r=wt(),i=r.stores.matchStores.get(o);i||rn();const l=rt(r.stores.loadedAt,d=>d),u=rt(i,d=>d,Px);return g.jsx(jx,{router:r,matchId:o,resetKey:l,matchState:b.useMemo(()=>{var p;const d=u.routeId,h=(p=r.routesById[d].parentRoute)==null?void 0:p.id;return{routeId:d,ssr:u.ssr,_displayPending:u._displayPending,parentRouteId:h}},[u._displayPending,u.routeId,u.ssr,r.routesById])})});function jx({router:e,matchId:o,resetKey:r,matchState:i}){var C,R;const l=e.routesById[i.routeId],u=l.options.pendingComponent??e.options.defaultPendingComponent,d=u?g.jsx(u,{}):null,h=l.options.errorComponent??e.options.defaultErrorComponent,p=l.options.onCatch??e.options.defaultOnCatch,m=l.isRoot?l.options.notFoundComponent??((C=e.options.notFoundRoute)==null?void 0:C.options.component):l.options.notFoundComponent,x=i.ssr===!1||i.ssr==="data-only",v=(!l.isRoot||l.options.wrapInSuspense||x)&&(l.options.wrapInSuspense??u??(((R=l.options.errorComponent)==null?void 0:R.preload)||x))?b.Suspense:Br,w=h?Uu:Br,y=m?Cx:Br;return g.jsxs(l.isRoot?l.options.shellComponent??Br:Br,{children:[g.jsx(Vi.Provider,{value:o,children:g.jsx(v,{fallback:d,children:g.jsx(w,{getResetKey:()=>r,errorComponent:h||Hu,onCatch:(k,P)=>{if(et(k))throw k.routeId??(k.routeId=i.routeId),k;p==null||p(k,P)},children:g.jsx(y,{fallback:k=>{if(k.routeId??(k.routeId=i.routeId),!m||k.routeId&&k.routeId!==i.routeId||!k.routeId&&!l.isRoot)throw k;return b.createElement(m,k)},children:x||i._displayPending?g.jsx(Ky,{fallback:d,children:g.jsx(_h,{matchId:o})}):g.jsx(_h,{matchId:o})})})})}),i.parentRouteId===sr?g.jsxs(g.Fragment,{children:[g.jsx(Mx,{}),e.options.scrollRestoration&&tp?g.jsx(_x,{}):null]}):null]})}function Mx(){const e=wt(),o=b.useRef();return Vo(()=>{const r=e.stores.resolvedLocation.get(),i=o.current;r&&(!i||i.href!==r.href)&&e.emit({type:"onRendered",...Ur(e.stores.location.get(),i??r)}),o.current=r},[rt(e.stores.resolvedLocation,r=>r==null?void 0:r.state.__TSR_key),e]),null}var _h=b.memo(function({matchId:o}){const r=wt(),i=(x,v)=>{var w;return((w=r.getMatch(x.id))==null?void 0:w._nonReactive[v])??x._nonReactive[v]},l=r.stores.matchStores.get(o);l||rn();const u=rt(l,x=>x),d=u.routeId,h=r.routesById[d],p=b.useMemo(()=>{var v;const x=(v=r.routesById[d].options.remountDeps??r.options.defaultRemountDeps)==null?void 0:v({routeId:d,loaderDeps:u.loaderDeps,params:u._strictParams,search:u._strictSearch});return x?JSON.stringify(x):void 0},[d,u.loaderDeps,u._strictParams,u._strictSearch,r.options.defaultRemountDeps,r.routesById]),m=b.useMemo(()=>{const x=h.options.component??r.options.defaultComponent;return x?g.jsx(x,{},p):g.jsx(Ip,{})},[p,h.options.component,r.options.defaultComponent]);if(u._displayPending)throw i(u,"displayPendingPromise");if(u._forcePending)throw i(u,"minPendingPromise");if(u.status==="pending"){const x=h.options.pendingMinMs??r.options.defaultPendingMinMs;if(x){const v=r.getMatch(u.id);if(v&&!v._nonReactive.minPendingPromise){const w=qr();v._nonReactive.minPendingPromise=w,setTimeout(()=>{w.resolve(),v._nonReactive.minPendingPromise=void 0},x)}}throw i(u,"loadPromise")}if(u.status==="notFound")return et(u.error)||rn(),Lp(r,h,u.error);if(u.status==="redirected")throw ct(u.error)||rn(),i(u,"loadPromise");if(u.status==="error")throw u.error;return m}),Ip=b.memo(function(){const o=wt(),r=b.useContext(Vi);let i,l=!1,u;{const m=r?o.stores.matchStores.get(r):void 0;[i,l]=rt(m,x=>[x==null?void 0:x.routeId,(x==null?void 0:x.globalNotFound)??!1],Ex),u=rt(o.stores.matchesId,x=>x[x.findIndex(v=>v===r)+1])}const d=i?o.routesById[i]:void 0,h=o.options.defaultPendingComponent?g.jsx(o.options.defaultPendingComponent,{}):null;if(l)return d||rn(),Lp(o,d,void 0);if(!u)return null;const p=g.jsx(Np,{matchId:u});return i===sr?g.jsx(b.Suspense,{fallback:h,children:p}):p});function Lx(){const e=wt(),o=b.useRef({router:e,mounted:!1}),[r,i]=b.useState(!1),l=rt(e.stores.isLoading,v=>v),u=rt(e.stores.hasPending,v=>v),d=Ba(l),h=l||r||u,p=Ba(h),m=l||u,x=Ba(m);return e.startTransition=v=>{i(!0),b.startTransition(()=>{v(),i(!1)})},b.useEffect(()=>{const v=e.history.subscribe(e.load),w=e.buildLocation({to:e.latestLocation.pathname,search:!0,params:!0,hash:!0,state:!0,_includeValidateSearch:!0});return nn(e.latestLocation.publicHref)!==nn(w.publicHref)&&e.commitLocation({...w,replace:!0}),()=>{v()}},[e,e.history]),Vo(()=>{if(typeof window<"u"&&e.ssr||o.current.router===e&&o.current.mounted)return;o.current={router:e,mounted:!0},(async()=>{try{await e.load()}catch(w){console.error(w)}})()},[e]),Vo(()=>{d&&!l&&e.emit({type:"onLoad",...Ur(e.stores.location.get(),e.stores.resolvedLocation.get())})},[d,e,l]),Vo(()=>{x&&!m&&e.emit({type:"onBeforeRouteMount",...Ur(e.stores.location.get(),e.stores.resolvedLocation.get())})},[m,x,e]),Vo(()=>{if(p&&!h){const v=Ur(e.stores.location.get(),e.stores.resolvedLocation.get());e.emit({type:"onResolved",...v}),wp(()=>{e.stores.status.set("idle"),e.stores.resolvedLocation.set(e.stores.location.get())})}},[h,p,e]),null}function Nx(){const e=wt(),o=e.routesById[sr].options.pendingComponent??e.options.defaultPendingComponent,r=o?g.jsx(o,{}):null,i=g.jsxs(typeof document<"u"&&e.ssr?Br:b.Suspense,{fallback:r,children:[g.jsx(Lx,{}),g.jsx(Ix,{})]});return e.options.InnerWrap?g.jsx(e.options.InnerWrap,{children:i}):i}function Ix(){const e=wt(),o=rt(e.stores.firstId,l=>l),r=rt(e.stores.loadedAt,l=>l),i=o?g.jsx(Np,{matchId:o}):null;return g.jsx(Vi.Provider,{value:o,children:e.options.disableGlobalCatchBoundary?i:g.jsx(Uu,{getResetKey:()=>r,errorComponent:Hu,onCatch:void 0,children:i})})}var Fx=e=>({createMutableStore:wh,createReadonlyStore:wh,batch:wp}),Tx=e=>new $x(e),$x=class extends Iy{constructor(e){super(e,Fx)}};function Dx({router:e,children:o,...r}){rp(r)&&e.update({...e.options,...r,context:{...e.options.context,...r.context}});const i=g.jsx(yp.Provider,{value:e,children:o});return e.options.Wrap?g.jsx(e.options.Wrap,{children:i}):i}function bx({router:e,...o}){return g.jsx(Dx,{router:e,...o,children:g.jsx(Nx,{})})}function zx(e){const o=wt({warn:(e==null?void 0:e.router)===void 0}),r=(e==null?void 0:e.router)||o;return rt(r.stores.__store,Cp(e,r))}const Ax={claude:"#6caa71",codex:"#7ccbcd",cursor:"#bd7bcd",copilot:"#dee5eb",pi:"#6d96b4",opencode:"#c4ac62",antigravity:"#b45648",gemini:"#79be7e"};function Ox(e){return Ax[e]??"#8b979c"}const Ph=["#00d7ff","#00d787","#e6b450","#d75f87","#5f87ff","#af87ff","#5fd7a7","#ff8787","#d7af5f","#87d7ff","#d787d7","#9ee493","#ffb454","#7aa2f7","#bb9af7"],Eh=new Map;function Gu(e){const o=Eh.get(e);if(o)return o;let r=0;for(let l=0;l<e.length;l++)r=r*31+e.charCodeAt(l)>>>0;const i=Ph[r%Ph.length];return Eh.set(e,i),i}const l1={input:"#6d96b4",output:"#6caa71",cacheCreate:"#c4ac62",cacheRead:"#7ccbcd"};function on(e){return e.replace(/^claude-/,"").replace(/^gpt-/,"gpt-").replace(/-\d{8}$/,"").replace(/-latest$/,"")}const jn=864e5,ju=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tn=e=>{const[o,r,i]=e.split("-").map(Number);return Date.UTC(o,(r||1)-1,i||1)},Jo=e=>new Date(e).toISOString().slice(0,10),Ho=e=>(new Date(e).getUTCDay()+6)%7,Vx=e=>{const o=tn(e);return Jo(o-Ho(o)*jn)},Bx={period:"all"},Fp=[{key:"7d",label:"7 days"},{key:"30d",label:"30 days"},{key:"90d",label:"90 days"},{key:"mtd",label:"month"},{key:"all",label:"all time"}],Bo=()=>({cost:0,tokens:0,cacheSavings:0,calls:0});function Tp(e,o){if(!o.providers.length)return null;const r=new Set(e.accounts.filter(l=>l.hasUsage).map(l=>l.providerId)),i=o.providers.filter(l=>r.has(l));return i.length?new Set(i):null}function $p(e,o){const r=Tp(e,o);return e.accounts.filter(i=>!(!i.hasUsage||o.account!=="all"&&i.id!==o.account||r&&!r.has(i.providerId)))}function Mu(e){var o,r,i,l,u,d,h,p,m;return!!(e.hasBilling&&((r=(o=e.billing)==null?void 0:o.metrics)!=null&&r.length||(i=e.billing)!=null&&i.plan||(l=e.billing)!=null&&l.error||(h=(d=(u=e.billing)==null?void 0:u.activity)==null?void 0:d.series)!=null&&h.length||(m=(p=e.billing)==null?void 0:p.modelSpend)!=null&&m.length))}function Ux(e,o){const r=Tp(e,o);return e.accounts.filter(i=>!(!i.hasUsage&&!Mu(i)||o.account!=="all"&&i.id!==o.account||r&&!r.has(i.providerId)))}function Dp(e){var r;let o=null;for(const i of e)for(const l of((r=i.table)==null?void 0:r.daily)??[])(!o||l.label>o)&&(o=l.label);return o}function bp(e,o){if(!o||e==="all")return null;if(e==="mtd")return new Date().toISOString().slice(0,7)+"-01";const r=e==="7d"?7:e==="90d"?90:30;return Jo(tn(o)-(r-1)*jn)}function Hx(e,o,r){if(!r||e==="all")return null;const i=bp(e,r);if(o==="daily")return i;const l=o==="monthly"?365:84,u=Jo(tn(r)-(l-1)*jn);return i&&i<u?i:u}function tu(e,o){var i;const r=(i=e.dashboard)==null?void 0:i[o];return r?{cost:r.cost,tokens:r.tokens,cacheSavings:r.cacheSavings,calls:0}:Bo()}const Mi=(e,o,r,i,l)=>{e.cost+=o,e.tokens+=r,e.cacheSavings+=i,e.calls+=l};function qx(){return{totals:Bo(),today:Bo(),week:Bo(),month:Bo(),burnRate:0,timelineMap:new Map,cacheByDay:new Map,provAgg:new Map,modelAgg:new Map,modelTrend:new Map,modelOptionSet:new Set,tokenComposition:{input:0,output:0,cacheCreate:0,cacheRead:0}}}function Gx(e,o){var i;const r=l=>[l.cost,l.tokens,l.cacheSavings,l.calls];Mi(e.today,...r(tu(o,"today"))),Mi(e.week,...r(tu(o,"week"))),Mi(e.month,...r(tu(o,"month"))),e.burnRate+=((i=o.dashboard)==null?void 0:i.burnRate)??0}function Wx(e,o,r,i,l){let u=0,d=0,h=0,p=0;for(const v of o.breakdown){if(e.modelOptionSet.add(v.name),l&&!l.has(v.name))continue;const w=v.input+v.output+v.cacheCreate+v.cacheRead;u+=v.cost,d+=w,h+=v.cacheSavings,p+=v.count,e.tokenComposition.input+=v.input,e.tokenComposition.output+=v.output,e.tokenComposition.cacheCreate+=v.cacheCreate,e.tokenComposition.cacheRead+=v.cacheRead;const y=e.modelAgg.get(v.name)??{cost:0,tokens:0,cacheSavings:0,calls:0};y.cost+=v.cost,y.tokens+=w,y.cacheSavings+=v.cacheSavings,y.calls+=v.count,e.modelAgg.set(v.name,y);let C=e.modelTrend.get(v.name);C||(C=new Map,e.modelTrend.set(v.name,C)),C.set(o.label,(C.get(o.label)??0)+v.cost)}if(l&&p===0&&u===0)return;Mi(e.totals,u,d,h,p);const m=e.timelineMap.get(o.label)??{date:o.label,total:0,tokens:0,byProvider:{}};m.total+=u,m.tokens+=d,m.byProvider[r]=(m.byProvider[r]??0)+u,e.timelineMap.set(o.label,m),e.cacheByDay.set(o.label,(e.cacheByDay.get(o.label)??0)+h);const x=e.provAgg.get(r)??{id:r,name:r,color:i,cost:0,tokens:0,calls:0};x.cost+=u,x.tokens+=d,x.calls+=p,e.provAgg.set(r,x)}function Qx(e){return[...e.timelineMap.values()].sort((o,r)=>o.date.localeCompare(r.date))}function Kx(e,o,r){const i=o.map(l=>l.date);return[...e.modelAgg.entries()].map(([l,u])=>{const d=e.modelTrend.get(l);return{model:l,color:Gu(l),cost:u.cost,tokens:u.tokens,cacheSavings:u.cacheSavings,calls:u.calls,share:r>0?u.cost/r:0,tokenShare:e.totals.tokens>0?u.tokens/e.totals.tokens:0,callShare:e.totals.calls>0?u.calls/e.totals.calls:0,trend:i.map(h=>(d==null?void 0:d.get(h))??0)}}).sort((l,u)=>u.cost-l.cost)}function Xx(e,o){var L,A;const r=e?$p(e,o):[],i=Dp(r),l=bp(o.period,i),u=o.models.length?new Set(o.models):null,d=new Map,h=new Map;for(const M of(e==null?void 0:e.providers)??[])d.set(M.id,M.color),h.set(M.id,M.name);const p=qx(),m=M=>!l||M>=l;for(const M of r){Gx(p,M);const z=M.providerId,U=d.get(z)??M.color;for(const I of((L=M.table)==null?void 0:L.daily)??[])m(I.label)&&Wx(p,I,z,U,u)}for(const M of p.provAgg.values()){const z=h.get(M.id);z&&(M.name=z)}const x=Qx(p);let v=0;const w=x.map(M=>(v+=M.total,{date:M.date,total:v})),y=x.map(M=>({date:M.date,value:p.cacheByDay.get(M.date)??0})),C=new Map;for(const M of r)for(const z of((A=M.table)==null?void 0:A.daily)??[]){if(!m(z.label))continue;const U=u?z.breakdown.filter($=>u.has($.name)):z.breakdown;if(u&&U.length===0)continue;let I=C.get(z.label);I||(I={tokens:0,calls:0,cacheSavings:0,models:new Map},C.set(z.label,I));for(const $ of U)I.tokens+=$.input+$.output+$.cacheCreate+$.cacheRead,I.calls+=$.count,I.cacheSavings+=$.cacheSavings,I.models.set($.name,(I.models.get($.name)??0)+$.cost)}const R=x.map(M=>{const z=C.get(M.date);return{date:M.date,cost:M.total,tokens:(z==null?void 0:z.tokens)??0,calls:(z==null?void 0:z.calls)??0,cacheSavings:(z==null?void 0:z.cacheSavings)??0,models:z?[...z.models.entries()].map(([U,I])=>({name:U,cost:I})).sort((U,I)=>I.cost-U.cost):[]}}),k=[...p.provAgg.values()].sort((M,z)=>z.cost-M.cost),P=Kx(p,x,p.totals.cost);return{filteredAccounts:r,totals:p.totals,today:p.today,week:p.week,month:p.month,burnRate:p.burnRate,timeline:x,cumulative:w,cacheSavingsSeries:y,calendar:R,cardAccounts:e?Ux(e,o):[],byProvider:k,byModel:P,tokenComposition:p.tokenComposition,modelOptions:[...p.modelOptionSet].sort(),latestDay:i,rangeStart:l}}function Yx(e){return e.reduce((o,r)=>(o.input+=r.input,o.output+=r.output,o.cacheCreate+=r.cacheCreate,o.cacheRead+=r.cacheRead,o.cacheSavings+=r.cacheSavings,o.cost+=r.cost,o.count+=r.count,o),{input:0,output:0,cacheCreate:0,cacheRead:0,cacheSavings:0,cost:0,count:0})}function Jx(e,o,r){var m;if(!e)return[];const i=$p(e,o),l=Dp(i),u=Hx(o.period,r,l),d=u?r==="monthly"?u.slice(0,7):r==="weekly"?Vx(u):u:null,h=o.models.length?new Set(o.models):null,p=new Map;for(const x of i)for(const v of((m=x.table)==null?void 0:m[r])??[]){if(d&&v.label<d)continue;const w=h?v.breakdown.filter(R=>h.has(R.name)):v.breakdown;if(h&&w.length===0)continue;const y=p.get(v.label),C=Yx(w);if(!y)p.set(v.label,{label:v.label,models:w.map(R=>R.name).sort(),...C,total:C.input+C.output+C.cacheCreate+C.cacheRead,breakdown:w.map(R=>({...R}))});else{y.input+=C.input,y.output+=C.output,y.cacheCreate+=C.cacheCreate,y.cacheRead+=C.cacheRead,y.cacheSavings+=C.cacheSavings,y.total+=C.input+C.output+C.cacheCreate+C.cacheRead,y.cost+=C.cost,y.count+=C.count;const R=new Map(y.breakdown.map(k=>[k.name,k]));for(const k of w){const P=R.get(k.name);P?(P.input+=k.input,P.output+=k.output,P.cacheCreate+=k.cacheCreate,P.cacheRead+=k.cacheRead,P.cacheSavings+=k.cacheSavings,P.cost+=k.cost,P.count+=k.count):R.set(k.name,{...k})}y.breakdown=[...R.values()].sort((k,P)=>P.cost-k.cost),y.models=y.breakdown.map(k=>k.name)}}return[...p.values()]}function Ut({children:e,className:o="size-4",...r}){return g.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.75,strokeLinecap:"round",strokeLinejoin:"round",className:o,"aria-hidden":!0,...r,children:e})}const Zx=e=>g.jsxs(Ut,{...e,children:[g.jsx("path",{d:"M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"}),g.jsx("circle",{cx:"12",cy:"13",r:"4"})]}),jh=e=>g.jsx(Ut,{...e,children:g.jsx("path",{d:"M20 6 9 17l-5-5"})}),e0=e=>g.jsxs(Ut,{...e,children:[g.jsx("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2"}),g.jsx("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),t0=e=>g.jsxs(Ut,{...e,children:[g.jsx("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),g.jsx("path",{d:"m7 10 5 5 5-5"}),g.jsx("path",{d:"M12 15V3"})]}),n0=e=>g.jsxs(Ut,{...e,children:[g.jsx("path",{d:"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8"}),g.jsx("path",{d:"m16 6-4-4-4 4"}),g.jsx("path",{d:"M12 2v13"})]}),r0=e=>g.jsx(Ut,{...e,children:g.jsx("path",{d:"m6 9 6 6 6-6"})}),o0=e=>g.jsxs(Ut,{...e,children:[g.jsx("circle",{cx:"11",cy:"11",r:"8"}),g.jsx("path",{d:"m21 21-4.3-4.3"})]}),$i=e=>g.jsxs(Ut,{...e,children:[g.jsx("path",{d:"M18 6 6 18"}),g.jsx("path",{d:"m6 6 12 12"})]}),s0=e=>g.jsxs(Ut,{...e,children:[g.jsx("circle",{cx:"12",cy:"12",r:"4"}),g.jsx("path",{d:"M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"})]}),i0=e=>g.jsx(Ut,{...e,children:g.jsx("path",{d:"M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z"})});function l0(e,o){if(e.match(/^[a-z]+:\/\//i))return e;if(e.match(/^\/\//))return window.location.protocol+e;if(e.match(/^[a-z]+:/i))return e;const r=document.implementation.createHTMLDocument(),i=r.createElement("base"),l=r.createElement("a");return r.head.appendChild(i),r.body.appendChild(l),o&&(i.href=o),l.href=e,l.href}const a0=(()=>{let e=0;const o=()=>`0000${(Math.random()*36**4<<0).toString(36)}`.slice(-4);return()=>(e+=1,`u${o()}${e}`)})();function $n(e){const o=[];for(let r=0,i=e.length;r<i;r++)o.push(e[r]);return o}let zr=null;function zp(e={}){return zr||(e.includeStyleProperties?(zr=e.includeStyleProperties,zr):(zr=$n(window.getComputedStyle(document.documentElement)),zr))}function Di(e,o){const i=(e.ownerDocument.defaultView||window).getComputedStyle(e).getPropertyValue(o);return i?parseFloat(i.replace("px","")):0}function u0(e){const o=Di(e,"border-left-width"),r=Di(e,"border-right-width");return e.clientWidth+o+r}function c0(e){const o=Di(e,"border-top-width"),r=Di(e,"border-bottom-width");return e.clientHeight+o+r}function Ap(e,o={}){const r=o.width||u0(e),i=o.height||c0(e);return{width:r,height:i}}function d0(){let e,o;try{o=process}catch{}const r=o&&o.env?o.env.devicePixelRatio:null;return r&&(e=parseInt(r,10),Number.isNaN(e)&&(e=1)),e||window.devicePixelRatio||1}const vt=16384;function f0(e){(e.width>vt||e.height>vt)&&(e.width>vt&&e.height>vt?e.width>e.height?(e.height*=vt/e.width,e.width=vt):(e.width*=vt/e.height,e.height=vt):e.width>vt?(e.height*=vt/e.width,e.width=vt):(e.width*=vt/e.height,e.height=vt))}function h0(e,o={}){return e.toBlob?new Promise(r=>{e.toBlob(r,o.type?o.type:"image/png",o.quality?o.quality:1)}):new Promise(r=>{const i=window.atob(e.toDataURL(o.type?o.type:void 0,o.quality?o.quality:void 0).split(",")[1]),l=i.length,u=new Uint8Array(l);for(let d=0;d<l;d+=1)u[d]=i.charCodeAt(d);r(new Blob([u],{type:o.type?o.type:"image/png"}))})}function bi(e){return new Promise((o,r)=>{const i=new Image;i.onload=()=>{i.decode().then(()=>{requestAnimationFrame(()=>o(i))})},i.onerror=r,i.crossOrigin="anonymous",i.decoding="async",i.src=e})}async function p0(e){return Promise.resolve().then(()=>new XMLSerializer().serializeToString(e)).then(encodeURIComponent).then(o=>`data:image/svg+xml;charset=utf-8,${o}`)}async function g0(e,o,r){const i="http://www.w3.org/2000/svg",l=document.createElementNS(i,"svg"),u=document.createElementNS(i,"foreignObject");return l.setAttribute("width",`${o}`),l.setAttribute("height",`${r}`),l.setAttribute("viewBox",`0 0 ${o} ${r}`),u.setAttribute("width","100%"),u.setAttribute("height","100%"),u.setAttribute("x","0"),u.setAttribute("y","0"),u.setAttribute("externalResourcesRequired","true"),l.appendChild(u),u.appendChild(e),p0(l)}const dt=(e,o)=>{if(e instanceof o)return!0;const r=Object.getPrototypeOf(e);return r===null?!1:r.constructor.name===o.name||dt(r,o)};function m0(e){const o=e.getPropertyValue("content");return`${e.cssText} content: '${o.replace(/'|"/g,"")}';`}function v0(e,o){return zp(o).map(r=>{const i=e.getPropertyValue(r),l=e.getPropertyPriority(r);return`${r}: ${i}${l?" !important":""};`}).join(" ")}function y0(e,o,r,i){const l=`.${e}:${o}`,u=r.cssText?m0(r):v0(r,i);return document.createTextNode(`${l}{${u}}`)}function Mh(e,o,r,i){const l=window.getComputedStyle(e,r),u=l.getPropertyValue("content");if(u===""||u==="none")return;const d=a0();try{o.className=`${o.className} ${d}`}catch{return}const h=document.createElement("style");h.appendChild(y0(d,r,l,i)),o.appendChild(h)}function x0(e,o,r){Mh(e,o,":before",r),Mh(e,o,":after",r)}const Lh="application/font-woff",Nh="image/jpeg",w0={woff:Lh,woff2:Lh,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:Nh,jpeg:Nh,gif:"image/gif",tiff:"image/tiff",svg:"image/svg+xml",webp:"image/webp"};function S0(e){const o=/\.([^./]*?)$/g.exec(e);return o?o[1]:""}function Wu(e){const o=S0(e).toLowerCase();return w0[o]||""}function C0(e){return e.split(/,/)[1]}function Lu(e){return e.search(/^(data:)/)!==-1}function R0(e,o){return`data:${o};base64,${e}`}async function Op(e,o,r){const i=await fetch(e,o);if(i.status===404)throw new Error(`Resource "${i.url}" not found`);const l=await i.blob();return new Promise((u,d)=>{const h=new FileReader;h.onerror=d,h.onloadend=()=>{try{u(r({res:i,result:h.result}))}catch(p){d(p)}},h.readAsDataURL(l)})}const nu={};function k0(e,o,r){let i=e.replace(/\?.*/,"");return r&&(i=e),/ttf|otf|eot|woff2?/i.test(i)&&(i=i.replace(/.*\//,"")),o?`[${o}]${i}`:i}async function Qu(e,o,r){const i=k0(e,o,r.includeQueryParams);if(nu[i]!=null)return nu[i];r.cacheBust&&(e+=(/\?/.test(e)?"&":"?")+new Date().getTime());let l;try{const u=await Op(e,r.fetchRequestInit,({res:d,result:h})=>(o||(o=d.headers.get("Content-Type")||""),C0(h)));l=R0(u,o)}catch(u){l=r.imagePlaceholder||"";let d=`Failed to fetch resource: ${e}`;u&&(d=typeof u=="string"?u:u.message),d&&console.warn(d)}return nu[i]=l,l}async function _0(e){const o=e.toDataURL();return o==="data:,"?e.cloneNode(!1):bi(o)}async function P0(e,o){if(e.currentSrc){const u=document.createElement("canvas"),d=u.getContext("2d");u.width=e.clientWidth,u.height=e.clientHeight,d==null||d.drawImage(e,0,0,u.width,u.height);const h=u.toDataURL();return bi(h)}const r=e.poster,i=Wu(r),l=await Qu(r,i,o);return bi(l)}async function E0(e,o){var r;try{if(!((r=e==null?void 0:e.contentDocument)===null||r===void 0)&&r.body)return await Bi(e.contentDocument.body,o,!0)}catch{}return e.cloneNode(!1)}async function j0(e,o){return dt(e,HTMLCanvasElement)?_0(e):dt(e,HTMLVideoElement)?P0(e,o):dt(e,HTMLIFrameElement)?E0(e,o):e.cloneNode(Vp(e))}const M0=e=>e.tagName!=null&&e.tagName.toUpperCase()==="SLOT",Vp=e=>e.tagName!=null&&e.tagName.toUpperCase()==="SVG";async function L0(e,o,r){var i,l;if(Vp(o))return o;let u=[];return M0(e)&&e.assignedNodes?u=$n(e.assignedNodes()):dt(e,HTMLIFrameElement)&&(!((i=e.contentDocument)===null||i===void 0)&&i.body)?u=$n(e.contentDocument.body.childNodes):u=$n(((l=e.shadowRoot)!==null&&l!==void 0?l:e).childNodes),u.length===0||dt(e,HTMLVideoElement)||await u.reduce((d,h)=>d.then(()=>Bi(h,r)).then(p=>{p&&o.appendChild(p)}),Promise.resolve()),o}function N0(e,o,r){const i=o.style;if(!i)return;const l=window.getComputedStyle(e);l.cssText?(i.cssText=l.cssText,i.transformOrigin=l.transformOrigin):zp(r).forEach(u=>{let d=l.getPropertyValue(u);u==="font-size"&&d.endsWith("px")&&(d=`${Math.floor(parseFloat(d.substring(0,d.length-2)))-.1}px`),dt(e,HTMLIFrameElement)&&u==="display"&&d==="inline"&&(d="block"),u==="d"&&o.getAttribute("d")&&(d=`path(${o.getAttribute("d")})`),i.setProperty(u,d,l.getPropertyPriority(u))})}function I0(e,o){dt(e,HTMLTextAreaElement)&&(o.innerHTML=e.value),dt(e,HTMLInputElement)&&o.setAttribute("value",e.value)}function F0(e,o){if(dt(e,HTMLSelectElement)){const i=Array.from(o.children).find(l=>e.value===l.getAttribute("value"));i&&i.setAttribute("selected","")}}function T0(e,o,r){return dt(o,Element)&&(N0(e,o,r),x0(e,o,r),I0(e,o),F0(e,o)),o}async function $0(e,o){const r=e.querySelectorAll?e.querySelectorAll("use"):[];if(r.length===0)return e;const i={};for(let u=0;u<r.length;u++){const h=r[u].getAttribute("xlink:href");if(h){const p=e.querySelector(h),m=document.querySelector(h);!p&&m&&!i[h]&&(i[h]=await Bi(m,o,!0))}}const l=Object.values(i);if(l.length){const u="http://www.w3.org/1999/xhtml",d=document.createElementNS(u,"svg");d.setAttribute("xmlns",u),d.style.position="absolute",d.style.width="0",d.style.height="0",d.style.overflow="hidden",d.style.display="none";const h=document.createElementNS(u,"defs");d.appendChild(h);for(let p=0;p<l.length;p++)h.appendChild(l[p]);e.appendChild(d)}return e}async function Bi(e,o,r){return!r&&o.filter&&!o.filter(e)?null:Promise.resolve(e).then(i=>j0(i,o)).then(i=>L0(e,i,o)).then(i=>T0(e,i,o)).then(i=>$0(i,o))}const Bp=/url\((['"]?)([^'"]+?)\1\)/g,D0=/url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g,b0=/src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;function z0(e){const o=e.replace(/([.*+?^${}()|\[\]\/\\])/g,"\\$1");return new RegExp(`(url\\(['"]?)(${o})(['"]?\\))`,"g")}function A0(e){const o=[];return e.replace(Bp,(r,i,l)=>(o.push(l),r)),o.filter(r=>!Lu(r))}async function O0(e,o,r,i,l){try{const u=r?l0(o,r):o,d=Wu(o);let h;return l||(h=await Qu(u,d,i)),e.replace(z0(o),`$1${h}$3`)}catch{}return e}function V0(e,{preferredFontFormat:o}){return o?e.replace(b0,r=>{for(;;){const[i,,l]=D0.exec(r)||[];if(!l)return"";if(l===o)return`src: ${i};`}}):e}function Up(e){return e.search(Bp)!==-1}async function Hp(e,o,r){if(!Up(e))return e;const i=V0(e,r);return A0(i).reduce((u,d)=>u.then(h=>O0(h,d,o,r)),Promise.resolve(i))}async function Ar(e,o,r){var i;const l=(i=o.style)===null||i===void 0?void 0:i.getPropertyValue(e);if(l){const u=await Hp(l,null,r);return o.style.setProperty(e,u,o.style.getPropertyPriority(e)),!0}return!1}async function B0(e,o){await Ar("background",e,o)||await Ar("background-image",e,o),await Ar("mask",e,o)||await Ar("-webkit-mask",e,o)||await Ar("mask-image",e,o)||await Ar("-webkit-mask-image",e,o)}async function U0(e,o){const r=dt(e,HTMLImageElement);if(!(r&&!Lu(e.src))&&!(dt(e,SVGImageElement)&&!Lu(e.href.baseVal)))return;const i=r?e.src:e.href.baseVal,l=await Qu(i,Wu(i),o);await new Promise((u,d)=>{e.onload=u,e.onerror=o.onImageErrorHandler?(...p)=>{try{u(o.onImageErrorHandler(...p))}catch(m){d(m)}}:d;const h=e;h.decode&&(h.decode=u),h.loading==="lazy"&&(h.loading="eager"),r?(e.srcset="",e.src=l):e.href.baseVal=l})}async function H0(e,o){const i=$n(e.childNodes).map(l=>qp(l,o));await Promise.all(i).then(()=>e)}async function qp(e,o){dt(e,Element)&&(await B0(e,o),await U0(e,o),await H0(e,o))}function q0(e,o){const{style:r}=e;o.backgroundColor&&(r.backgroundColor=o.backgroundColor),o.width&&(r.width=`${o.width}px`),o.height&&(r.height=`${o.height}px`);const i=o.style;return i!=null&&Object.keys(i).forEach(l=>{r[l]=i[l]}),e}const Ih={};async function Fh(e){let o=Ih[e];if(o!=null)return o;const i=await(await fetch(e)).text();return o={url:e,cssText:i},Ih[e]=o,o}async function Th(e,o){let r=e.cssText;const i=/url\(["']?([^"')]+)["']?\)/g,u=(r.match(/url\([^)]+\)/g)||[]).map(async d=>{let h=d.replace(i,"$1");return h.startsWith("https://")||(h=new URL(h,e.url).href),Op(h,o.fetchRequestInit,({result:p})=>(r=r.replace(d,`url(${p})`),[d,p]))});return Promise.all(u).then(()=>r)}function $h(e){if(e==null)return[];const o=[],r=/(\/\*[\s\S]*?\*\/)/gi;let i=e.replace(r,"");const l=new RegExp("((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})","gi");for(;;){const p=l.exec(i);if(p===null)break;o.push(p[0])}i=i.replace(l,"");const u=/@import[\s\S]*?url\([^)]*\)[\s\S]*?;/gi,d="((\\s*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})",h=new RegExp(d,"gi");for(;;){let p=u.exec(i);if(p===null){if(p=h.exec(i),p===null)break;u.lastIndex=h.lastIndex}else h.lastIndex=u.lastIndex;o.push(p[0])}return o}async function G0(e,o){const r=[],i=[];return e.forEach(l=>{if("cssRules"in l)try{$n(l.cssRules||[]).forEach((u,d)=>{if(u.type===CSSRule.IMPORT_RULE){let h=d+1;const p=u.href,m=Fh(p).then(x=>Th(x,o)).then(x=>$h(x).forEach(v=>{try{l.insertRule(v,v.startsWith("@import")?h+=1:l.cssRules.length)}catch(w){console.error("Error inserting rule from remote css",{rule:v,error:w})}})).catch(x=>{console.error("Error loading remote css",x.toString())});i.push(m)}})}catch(u){const d=e.find(h=>h.href==null)||document.styleSheets[0];l.href!=null&&i.push(Fh(l.href).then(h=>Th(h,o)).then(h=>$h(h).forEach(p=>{d.insertRule(p,d.cssRules.length)})).catch(h=>{console.error("Error loading remote stylesheet",h)})),console.error("Error inlining remote css file",u)}}),Promise.all(i).then(()=>(e.forEach(l=>{if("cssRules"in l)try{$n(l.cssRules||[]).forEach(u=>{r.push(u)})}catch(u){console.error(`Error while reading CSS rules from ${l.href}`,u)}}),r))}function W0(e){return e.filter(o=>o.type===CSSRule.FONT_FACE_RULE).filter(o=>Up(o.style.getPropertyValue("src")))}async function Q0(e,o){if(e.ownerDocument==null)throw new Error("Provided element is not within a Document");const r=$n(e.ownerDocument.styleSheets),i=await G0(r,o);return W0(i)}function Gp(e){return e.trim().replace(/["']/g,"")}function K0(e){const o=new Set;function r(i){(i.style.fontFamily||getComputedStyle(i).fontFamily).split(",").forEach(u=>{o.add(Gp(u))}),Array.from(i.children).forEach(u=>{u instanceof HTMLElement&&r(u)})}return r(e),o}async function X0(e,o){const r=await Q0(e,o),i=K0(e);return(await Promise.all(r.filter(u=>i.has(Gp(u.style.fontFamily))).map(u=>{const d=u.parentStyleSheet?u.parentStyleSheet.href:null;return Hp(u.cssText,d,o)}))).join(`
59
- `)}async function Y0(e,o){const r=o.fontEmbedCSS!=null?o.fontEmbedCSS:o.skipFonts?null:await X0(e,o);if(r){const i=document.createElement("style"),l=document.createTextNode(r);i.appendChild(l),e.firstChild?e.insertBefore(i,e.firstChild):e.appendChild(i)}}async function J0(e,o={}){const{width:r,height:i}=Ap(e,o),l=await Bi(e,o,!0);return await Y0(l,o),await qp(l,o),q0(l,o),await g0(l,r,i)}async function Wp(e,o={}){const{width:r,height:i}=Ap(e,o),l=await J0(e,o),u=await bi(l),d=document.createElement("canvas"),h=d.getContext("2d"),p=o.pixelRatio||d0(),m=o.canvasWidth||r,x=o.canvasHeight||i;return d.width=m*p,d.height=x*p,o.skipAutoScale||f0(d),d.style.width=`${m}`,d.style.height=`${x}`,o.backgroundColor&&(h.fillStyle=o.backgroundColor,h.fillRect(0,0,d.width,d.height)),h.drawImage(u,0,0,d.width,d.height),d}async function Z0(e,o={}){return(await Wp(e,o)).toDataURL()}async function ew(e,o={}){const r=await Wp(e,o);return await h0(r)}const Qp="#0a0a0a";async function Kp(){try{await document.fonts.ready}catch{}await new Promise(e=>requestAnimationFrame(()=>e(null)))}async function tw(e,o={}){return await Kp(),Z0(e,{pixelRatio:o.pixelRatio??2,backgroundColor:o.backgroundColor??Qp,cacheBust:!0,skipFonts:!1})}function nw(e,o){const r=document.createElement("a");r.href=e,r.download=o,document.body.appendChild(r),r.click(),r.remove()}async function rw(e,o,r){nw(await tw(e,r),o)}async function ow(e,o){try{await Kp();const r=await ew(e,{pixelRatio:(o==null?void 0:o.pixelRatio)??2,backgroundColor:(o==null?void 0:o.backgroundColor)??Qp,cacheBust:!0});return!r||!navigator.clipboard||typeof ClipboardItem>"u"?!1:(await navigator.clipboard.write([new ClipboardItem({"image/png":r})]),!0)}catch{return!1}}function sw(e){const o=new Date,r=i=>String(i).padStart(2,"0");return`tokmon-${e}-${o.getFullYear()}${r(o.getMonth()+1)}${r(o.getDate())}-${r(o.getHours())}${r(o.getMinutes())}.png`}function Pe(e,o={}){if(!Number.isFinite(e))return"$0.00";const r=o.sign&&e>0?"+":"",i=Math.abs(e);return i>=1e5?`${r}$${(e/1e3).toFixed(0)}k`:i>=1e4?`${r}$${(e/1e3).toFixed(1)}k`:i>=1?`${r}$${e.toFixed(2)}`:i>=.01?`${r}$${e.toFixed(3)}`:i===0?"$0.00":`${r}$${e.toFixed(4)}`}function a1(e){if(!Number.isFinite(e))return"$0";const o=Math.abs(e);return o>=1e6?`$${(e/1e6).toFixed(1).replace(/\.0$/,"")}M`:o>=1e3?`$${(e/1e3).toFixed(1).replace(/\.0$/,"")}k`:o>=1?`$${Math.round(e)}`:o===0?"$0":`$${e.toFixed(2)}`}function yt(e){if(!Number.isFinite(e)||e===0)return"0";const o=Math.abs(e);return o>=1e9?`${(e/1e9).toFixed(2)}B`:o>=1e6?`${(e/1e6).toFixed(2)}M`:o>=1e3?`${(e/1e3).toFixed(1)}k`:String(Math.round(e))}function bn(e){return Number.isFinite(e)?Math.round(e).toLocaleString("en-US"):"0"}function Xp(e){if(!Number.isFinite(e))return"0";const o=Math.abs(e);return o>=1e6?`${(e/1e6).toFixed(1)}M`:o>=1e4?`${Math.round(e/1e3)}k`:Math.round(e).toLocaleString("en-US")}function Yp(e,o=0){return Number.isFinite(e)?`${(e*100).toFixed(o)}%`:"0%"}function iw(e,o){const r=Math.max(0,Math.round((o-e)/1e3));if(r<2)return"just now";if(r<60)return`${r}s ago`;const i=Math.round(r/60);if(i<60)return`${i}m ago`;const l=Math.round(i/60);return l<24?`${l}h ago`:`${Math.round(l/24)}d ago`}function Ui(e){const o=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);if(o)return`${ju[Number(o[2])-1]} ${Number(o[3])}`;const r=/^(\d{4})-(\d{2})$/.exec(e);return r?`${ju[Number(r[2])-1]} ${r[1]}`:e}function zi({variant:e="footer",version:o}){return e==="corner"?g.jsxs("div",{className:"pointer-events-none absolute bottom-3 right-3 z-10 flex items-center gap-1.5 rounded bg-bg-0/60 px-2 py-1 font-display text-[11px] tracking-wide text-fg-faint backdrop-blur-sm",children:[g.jsx("span",{className:"text-accent",children:"●"})," tokmon"]}):g.jsxs("div",{className:"flex items-center gap-2 font-display text-sm tracking-wide",children:[g.jsx("span",{className:"text-accent",children:"●"}),g.jsx("span",{className:"text-fg-bright",children:"tokmon"}),g.jsxs("span",{className:"text-xs tracking-normal text-fg-faint",children:["github.com/DavidIlie/tokmon",o?` · v${o}`:""]})]})}const Dh=e=>e==="all time"?"all time":`last ${e}`,lw=b.forwardRef(function({derived:o,periodLabel:r,tz:i,version:l,opts:u},d){const h=o.byModel.slice(0,5),p=o.totals.cost>0,m=x=>p?x.share:x.tokenShare;return g.jsxs("div",{ref:d,className:"relative flex flex-col",style:{width:1040,height:540,background:"var(--color-bg-0)",backgroundImage:u.glow?"radial-gradient(circle at 50% -10%, color-mix(in oklab, var(--color-accent) 16%, transparent), transparent 55%), radial-gradient(var(--color-line-faint) 1px, transparent 1px)":"radial-gradient(var(--color-line-faint) 1px, transparent 1px)",backgroundSize:u.glow?"100% 100%, 24px 24px":"24px 24px",fontFamily:"var(--font-mono)",color:"var(--color-fg)"},children:[g.jsxs("div",{className:"flex items-baseline gap-2 border-b border-line px-6 py-3.5",children:[g.jsx("span",{className:"font-display text-sm tracking-wide text-accent",children:"tokmon"}),g.jsxs("span",{className:"text-sm text-fg-dim",children:["usage · ",Dh(r)]}),g.jsx("span",{className:"ml-auto text-xs text-fg-faint",children:i})]}),g.jsxs("div",{className:"flex flex-1 gap-9 px-9 py-7",children:[g.jsxs("div",{className:"flex w-[300px] shrink-0 flex-col",children:[g.jsx("div",{className:"font-display text-xs uppercase tracking-widest text-fg-faint",children:p?"total spend":"total tokens"}),g.jsx("div",{className:"tnum mt-1 text-cost",style:{fontSize:64,lineHeight:1},children:p?Pe(o.totals.cost):yt(o.totals.tokens)}),g.jsxs("div",{className:"mt-auto flex flex-col gap-3",children:[p?g.jsx(vi,{label:"tokens",value:yt(o.totals.tokens)}):g.jsx(vi,{label:"spend",value:Pe(o.totals.cost)}),g.jsx(vi,{label:"cache saved",value:Pe(o.totals.cacheSavings),className:"text-positive"}),g.jsx(vi,{label:"calls",value:bn(o.totals.calls)})]})]}),g.jsxs("div",{className:"flex flex-1 flex-col gap-2 border-l border-line pl-9",children:[g.jsxs("div",{className:"font-display text-xs uppercase tracking-widest text-fg-faint",children:["top models · ",Dh(r)]}),h.length===0?g.jsx("div",{className:"flex flex-1 items-center text-sm text-fg-faint",children:"no model usage in range"}):h.map(x=>g.jsxs("div",{className:"flex items-center gap-3",children:[g.jsx("span",{className:"size-2 shrink-0 rounded-[2px]",style:{background:x.color}}),g.jsx("span",{className:"w-28 shrink-0 truncate text-sm text-fg",children:on(x.model)}),g.jsx("span",{className:"h-1.5 flex-1 overflow-hidden rounded-full bg-bg-3",children:g.jsx("span",{className:"block h-full rounded-full",style:{width:`${Math.min(100,m(x)*100)}%`,minWidth:2,background:x.color}})}),g.jsx("span",{className:"tnum w-10 shrink-0 text-right text-xs text-fg-faint",children:Yp(m(x))}),g.jsx("span",{className:"tnum w-20 shrink-0 text-right text-sm text-cost",children:p?Pe(x.cost):yt(x.tokens)})]},x.model))]})]}),g.jsx("div",{className:"border-t border-line px-9 pt-3",children:g.jsx(Zo,{data:o.timeline.map(x=>x.total),color:"var(--color-accent)",className:"text-2xl tracking-tight"})}),g.jsxs("div",{className:"flex items-center justify-between border-t border-line px-9 py-3.5",children:[u.wmPos==="footer"?g.jsx(zi,{variant:"footer",version:l}):g.jsx("span",{className:"text-xs text-fg-faint",children:"tokmon"}),g.jsx("span",{className:"text-xs text-fg-faint",children:r})]}),u.wmPos==="corner"&&g.jsx(zi,{variant:"corner"})]})});function vi({label:e,value:o,className:r="text-fg-bright"}){return g.jsxs("div",{children:[g.jsx("div",{className:"text-[11px] uppercase tracking-wide text-fg-faint",children:e}),g.jsx("div",{className:`tnum mt-1 truncate text-xl ${r}`,children:o})]})}const aw=b.forwardRef(function({node:o,title:r,framed:i,wmPos:l},u){const d=b.useRef(null);return b.useEffect(()=>{const h=d.current;if(!h)return;h.innerHTML="";const p=o.cloneNode(!0);return p.querySelectorAll("[data-chrome]").forEach(m=>m.remove()),p.style.width=`${Math.round(o.getBoundingClientRect().width)}px`,p.classList.remove("hover:border-line-2"),h.appendChild(p),()=>{h.innerHTML=""}},[o]),g.jsxs("div",{ref:u,className:"relative",style:{background:"var(--color-bg-0)",backgroundImage:"radial-gradient(var(--color-line-faint) 1px, transparent 1px)",backgroundSize:"24px 24px",padding:i?28:16,fontFamily:"var(--font-mono)"},children:[i&&g.jsxs("div",{className:"mb-3 flex items-baseline gap-2",children:[g.jsx("span",{className:"font-display text-xs tracking-wide text-accent",children:"tokmon"}),g.jsxs("span",{className:"font-display text-xs uppercase tracking-wider text-fg-dim",children:["/ ",r]})]}),g.jsx("div",{ref:d}),l==="footer"?g.jsx("div",{className:"mt-3 flex justify-end",children:g.jsx(zi,{variant:"footer"})}):g.jsx(zi,{variant:"corner"})]})}),uw=600,bh=360,cw=e=>e==="light"?"#f4f5f5":"#0a0a0a";function dw({source:e,onClose:o}){const r=e.kind==="summary",i=b.useRef(null),l=b.useRef(null),u=b.useRef(null),d=b.useRef(),[h,p]=b.useState(()=>document.documentElement.classList.contains("light")?"light":"dark"),[m,x]=b.useState(r?"footer":"corner"),[v,w]=b.useState("2"),[y,C]=b.useState(!0),[R,k]=b.useState(!0),[P,L]=b.useState({w:r?1040:700,h:r?540:360}),[A,M]=b.useState(null);b.useEffect(()=>{var X;const V=document.activeElement;(X=l.current)==null||X.focus();const J=Q=>{if(Q.key==="Escape"){o();return}if(Q.key!=="Tab"||!u.current)return;const ge=u.current.querySelectorAll('button,[href],input,select,textarea,[tabindex]:not([tabindex="-1"])');if(ge.length===0)return;const pe=ge[0],Z=ge[ge.length-1];Q.shiftKey&&document.activeElement===pe?(Q.preventDefault(),Z.focus()):!Q.shiftKey&&document.activeElement===Z&&(Q.preventDefault(),pe.focus())};return document.addEventListener("keydown",J),()=>{var Q;document.removeEventListener("keydown",J),(Q=V==null?void 0:V.focus)==null||Q.call(V)}},[o]),b.useEffect(()=>()=>{d.current&&clearTimeout(d.current)},[]);const z=V=>{M(V),d.current&&clearTimeout(d.current),d.current=setTimeout(()=>M(null),1600)};b.useEffect(()=>{const V=i.current;if(!V)return;const J=()=>L({w:V.offsetWidth||P.w,h:V.offsetHeight||P.h});J();const X=new ResizeObserver(J);X.observe(V);const Q=setTimeout(J,80);return()=>{X.disconnect(),clearTimeout(Q)}},[e,R,m,h,y]);const U=Math.min(uw/P.w,bh/P.h,1),I={pixelRatio:Number(v),backgroundColor:cw(h)},$=sw(r?"summary":e.captureName),O=async()=>{i.current&&(await rw(i.current,$,I),z("dl"))},B=async()=>{i.current&&z(await ow(i.current,I)?"copy":"fail")};return g.jsx("div",{className:"dialog-fade fixed inset-0 z-[60] flex items-center justify-center bg-bg-0/70 p-4 backdrop-blur-sm",onMouseDown:V=>{V.target===V.currentTarget&&o()},role:"dialog","aria-modal":"true","aria-label":"Share",children:g.jsxs("div",{ref:u,className:"dialog-pop relative flex max-h-[88vh] w-full max-w-[720px] flex-col overflow-hidden rounded-md border border-line-2 bg-bg-1",children:[g.jsx("div",{className:"pointer-events-none absolute left-3 top-2 font-display text-[11px] uppercase tracking-wider text-fg-dim",children:"share"}),g.jsx("button",{type:"button",onClick:o,"aria-label":"Close",className:"absolute right-2 top-2 z-10 rounded p-1 text-fg-faint transition hover:text-fg focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent",children:g.jsx($i,{className:"size-4"})}),g.jsx("div",{className:"flex items-center justify-center bg-bg-0 px-6 pb-5 pt-9",style:{minHeight:bh+24},children:g.jsx("div",{className:"overflow-hidden rounded",style:{width:P.w*U,height:P.h*U},children:g.jsx("div",{style:{width:P.w,height:P.h,transform:`scale(${U})`,transformOrigin:"top left"},children:g.jsx("div",{className:h==="light"?"light":"dark",children:r?g.jsx(lw,{ref:i,derived:e.derived,periodLabel:e.periodLabel,tz:e.tz,version:e.version,opts:{glow:y,wmPos:m}}):g.jsx(aw,{ref:i,node:e.node,title:e.captureName,framed:R,wmPos:m})})})})}),g.jsxs("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-2 border-t border-line px-4 py-3 text-[11px]",children:[g.jsx(zo,{label:"theme",children:g.jsx(Mn,{size:"xs",containerClassName:bo,ariaLabel:"export theme",options:[{value:"dark",label:"dark"},{value:"light",label:"light"}],value:h,onChange:p})}),g.jsx(zo,{label:"mark",children:g.jsx(Mn,{size:"xs",containerClassName:bo,ariaLabel:"watermark position",options:[{value:"footer",label:"footer"},{value:"corner",label:"corner"}],value:m,onChange:x})}),r?g.jsx(zo,{label:"glow",children:g.jsx(Mn,{size:"xs",containerClassName:bo,ariaLabel:"accent glow",options:[{value:"on",label:"on"},{value:"off",label:"off"}],value:y?"on":"off",onChange:V=>C(V==="on")})}):g.jsx(zo,{label:"frame",children:g.jsx(Mn,{size:"xs",containerClassName:bo,ariaLabel:"frame",options:[{value:"framed",label:"framed"},{value:"bare",label:"bare"}],value:R?"framed":"bare",onChange:V=>k(V==="framed")})}),g.jsx(zo,{label:"scale",children:g.jsx(Mn,{size:"xs",containerClassName:bo,ariaLabel:"export scale",options:[{value:"1",label:"1x"},{value:"2",label:"2x"},{value:"3",label:"3x"}],value:v,onChange:w})}),g.jsxs("span",{className:"ml-auto tnum text-fg-faint",children:[P.w," × ",P.h," · ",v,"x"]})]}),g.jsxs("div",{className:"flex items-center justify-end gap-2 border-t border-line px-4 py-3",children:[g.jsxs("button",{type:"button",onClick:B,className:"flex items-center gap-1.5 rounded border border-line bg-bg-1 px-3 py-1.5 text-xs text-fg-dim transition hover:border-line-2 hover:text-fg active:scale-[0.97] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent",children:[A==="copy"?g.jsx(jh,{className:"size-3.5 text-positive"}):A==="fail"?g.jsx($i,{className:"size-3.5 text-warning"}):g.jsx(e0,{className:"size-3.5"})," ",A==="copy"?"copied":A==="fail"?"copy failed":"copy"]}),g.jsxs("button",{type:"button",ref:l,onClick:O,className:"flex items-center gap-1.5 rounded border border-accent/60 bg-bg-1 px-3 py-1.5 text-xs text-accent transition hover:bg-bg-2 active:scale-[0.97] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent",children:[A==="dl"?g.jsx(jh,{className:"size-3.5 text-positive"}):g.jsx(t0,{className:"size-3.5"})," download PNG"]})]})]})})}const bo="flex items-center overflow-hidden rounded border border-line text-[10px]";function zo({label:e,children:o}){return g.jsxs("span",{className:"flex items-center gap-1.5",children:[g.jsx("span",{className:"text-fg-faint",children:e}),o]})}const Jp=b.createContext(()=>{}),Zp=()=>b.useContext(Jp);function fw({children:e}){const[o,r]=b.useState(null);return g.jsxs(Jp.Provider,{value:r,children:[e,o&&g.jsx(dw,{source:o,onClose:()=>r(null)})]})}function Hi({title:e,titleTag:o,right:r,captureName:i,children:l,className:u="",bodyClassName:d=""}){const h=b.useRef(null);return g.jsxs("section",{ref:h,className:`group relative rounded-md border border-line bg-bg-1/80 transition-colors hover:border-line-2 ${u}`,children:[e&&g.jsxs("div",{className:"pointer-events-none absolute -top-[7px] left-3 flex items-center gap-2 bg-bg-1 px-1.5",children:[g.jsx("span",{className:"font-display text-[11px] uppercase tracking-wider text-fg-dim",children:e}),o!=null&&g.jsx("span",{className:"text-[10px] normal-case tracking-normal text-fg-faint",children:o})]}),r&&g.jsx("div",{"data-chrome":!0,className:"absolute right-2 top-2 z-20 flex items-center gap-1.5 rounded bg-bg-1 px-0.5",children:r}),i&&g.jsx("div",{"data-chrome":!0,className:"absolute -top-[11px] right-3 z-20",children:g.jsx(hw,{getNode:()=>h.current,name:i})}),g.jsx("div",{className:`p-4 ${d}`,children:l})]})}function hw({getNode:e,name:o}){const r=Zp();return g.jsx("button",{type:"button",title:"Share this panel","aria-label":"Share this panel as an image",onClick:()=>{const i=e();i&&r({kind:"panel",node:i,captureName:o})},className:"rounded border border-transparent bg-bg-1 p-1 text-fg-faint opacity-0 transition hover:border-line hover:text-accent group-hover:opacity-100 focus-visible:opacity-100",children:g.jsx(Zx,{className:"size-3.5"})})}const ru=["▁","▂","▃","▄","▅","▆","▇","█"];function Zo({data:e,color:o="var(--color-accent)",className:r=""}){const i=ru.length-1,l=Math.max(...e,0),u=Math.min(...e,0),d=l>0&&u===l;return g.jsx("span",{className:`font-mono leading-none ${r}`,style:{color:o},"aria-hidden":!0,children:e.length===0?"·":d?ru[Math.floor(i/2)].repeat(e.length):e.map(h=>ru[l<=0?0:Math.max(0,Math.min(i,Math.floor(h/l*(i+.999))))]).join("")})}function yi({label:e,value:o,sub:r,valueClass:i="text-fg-bright"}){return g.jsxs("div",{children:[g.jsx("div",{className:"font-display text-[10px] uppercase tracking-wide text-fg-faint",children:e}),g.jsx("div",{className:`tnum mt-1 text-xl ${i}`,children:o}),r!=null&&g.jsx("div",{className:"mt-0.5 text-xs text-fg-dim",children:r})]})}function pw({children:e}){return g.jsx("div",{className:"flex h-full min-h-24 items-center justify-center text-center text-xs text-fg-faint",children:e})}const Ku="focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent";function Mn({options:e,value:o,onChange:r,size:i="sm",btnClassName:l,containerClassName:u,ariaLabel:d}){const h="flex items-center overflow-hidden rounded border border-line",p=i==="xs"?"px-1.5 py-0.5 text-[10px] transition max-sm:py-1.5":"px-2 py-1 text-xs transition max-sm:py-2",m=i==="xs"?"bg-bg-3 text-accent":"bg-bg-2 text-accent",x=i==="xs"?"text-fg-faint hover:text-fg":"text-fg-dim hover:text-fg";return g.jsx("div",{className:u??h,role:"group","aria-label":d,children:e.map(v=>g.jsx("button",{type:"button","aria-pressed":o===v.value,onClick:()=>r(v.value),className:`${l??p} ${Ku} ${o===v.value?m:x}`,children:v.label},String(v.value)))})}function zh({label:e,value:o,children:r}){const[i,l]=b.useState(!1),u=b.useRef(null);return b.useEffect(()=>{if(!i)return;const d=p=>{u.current&&!u.current.contains(p.target)&&l(!1)},h=p=>{p.key==="Escape"&&l(!1)};return document.addEventListener("mousedown",d),document.addEventListener("keydown",h),()=>{document.removeEventListener("mousedown",d),document.removeEventListener("keydown",h)}},[i]),g.jsxs("div",{ref:u,className:"relative",children:[g.jsxs("button",{type:"button","aria-haspopup":"menu","aria-expanded":i,onClick:()=>l(d=>!d),className:`flex items-center gap-1.5 rounded border border-line bg-bg-1 px-2 py-1 text-xs text-fg-dim transition hover:border-line-2 hover:text-fg max-sm:py-2 ${Ku}`,children:[g.jsxs("span",{className:"text-fg-faint",children:[e,":"]}),g.jsx("span",{className:"text-fg",children:o}),g.jsx(r0,{className:`size-3 transition ${i?"rotate-180":""}`})]}),i&&g.jsx("div",{role:"menu",className:"absolute right-0 z-50 mt-1 min-w-44 max-w-[calc(100vw-2.5rem)] rounded-md border border-line-2 bg-bg-2 p-1 shadow-xl",children:r(()=>l(!1))})]})}function Ah({children:e}){return g.jsx("div",{className:"flex flex-col",children:e})}function xi({active:e,onClick:o,children:r}){return g.jsx("button",{type:"button",role:"menuitem",onClick:o,className:`flex min-w-0 items-center gap-2 rounded px-2 py-1 text-left text-xs transition ${Ku} ${e?"bg-bg-3 text-fg-bright":"text-fg-dim hover:bg-bg-3 hover:text-fg"}`,children:r})}function gw({snapshot:e,derived:o,filters:r,setFilters:i}){const l=(e==null?void 0:e.providers)??[],d=((e==null?void 0:e.accounts)??[]).filter(P=>P.hasUsage),h=new Set(d.map(P=>P.providerId)),p=l.filter(P=>h.has(P.id)),m=new Set(o.cardAccounts.map(P=>P.providerId)),x=l.filter(P=>!h.has(P.id)&&m.has(P.id)),v=r.providers.length?d.filter(P=>r.providers.includes(P.providerId)):d,w=P=>{var L;return((L=l.find(A=>A.id===P))==null?void 0:L.name)??P},y=P=>P.name&&P.name!==w(P.providerId)?`${w(P.providerId)} · ${P.name}`:w(P.providerId),C=d.find(P=>P.id===r.account),R=P=>i(L=>{const A=L.providers.includes(P);return{...L,providers:A?L.providers.filter(M=>M!==P):[...L.providers,P]}}),k=r.providers.length>0||r.models.length>0||r.account!=="all";return g.jsx("div",{className:"border-t border-line bg-bg-0/70",children:g.jsxs("div",{className:"mx-auto flex max-w-[1600px] flex-wrap items-center gap-x-4 gap-y-2 px-5 py-2.5 2xl:max-w-[1920px]",children:[g.jsx("span",{className:"hidden text-xs text-fg-faint sm:inline",children:"filter:"}),g.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[p.map(P=>{const L=r.providers.includes(P.id),A=r.providers.length>0&&!L;return g.jsxs("button",{type:"button","aria-pressed":L,onClick:()=>R(P.id),className:"flex items-center gap-1.5 rounded border px-2 py-0.5 text-xs transition focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent max-sm:py-1.5",style:{borderColor:L?P.color:"var(--color-line)",color:A?"var(--color-fg-faint)":L?P.color:"var(--color-fg-dim)",background:L?"var(--color-bg-2)":"transparent"},title:L?`hide ${P.name}`:r.providers.length?`add ${P.name}`:`show only ${P.name}`,children:[g.jsx("span",{style:{color:P.color,opacity:A?.4:1},"aria-hidden":!0,children:L?"●":"○"}),P.name]},P.id)}),x.length>0&&g.jsxs("span",{className:"flex items-center gap-1.5 text-xs text-fg-faint",title:"Billing-only providers — shown as cards with plan & quota; no usage timeline to filter",children:[p.length>0&&g.jsx("span",{className:"text-line-2",children:"|"}),g.jsx("span",{children:"billing-only:"}),x.map(P=>g.jsxs("span",{className:"flex items-center gap-1 text-fg-dim",children:[g.jsx("span",{style:{color:P.color,opacity:.55},"aria-hidden":!0,children:"·"}),P.name]},P.id))]})]}),g.jsxs("div",{className:"flex w-full flex-wrap items-center gap-2 md:ml-auto md:w-auto",children:[v.length>1?g.jsx(zh,{label:"account",value:r.account==="all"?"all":C?y(C):"all",children:P=>g.jsxs(Ah,{children:[g.jsx(xi,{active:r.account==="all",onClick:()=>{i(L=>({...L,account:"all"})),P()},children:"All accounts"}),g.jsx("div",{className:"my-1 h-px bg-line"}),g.jsx("div",{className:"max-h-64 overflow-y-auto",children:v.map(L=>g.jsxs(xi,{active:r.account===L.id,onClick:()=>{i(A=>({...A,account:L.id})),P()},children:[g.jsx("span",{style:{color:L.color},"aria-hidden":!0,children:"●"})," ",g.jsx("span",{className:"truncate",children:y(L)})]},L.id))})]})}):v.length===1?g.jsxs("span",{className:"rounded border border-line bg-bg-1 px-2 py-1 text-xs text-fg-dim",children:["account: ",g.jsx("span",{className:"text-fg",children:y(v[0])})]}):null,g.jsx(zh,{label:"model",value:r.models.length===0?"all":r.models.length===1?on(r.models[0]):`${r.models.length} models`,children:()=>g.jsxs(Ah,{children:[g.jsx(xi,{active:r.models.length===0,onClick:()=>i(P=>({...P,models:[]})),children:"All models"}),g.jsx("div",{className:"my-1 h-px bg-line"}),g.jsxs("div",{className:"max-h-64 overflow-y-auto",children:[o.modelOptions.length===0&&g.jsx("div",{className:"px-2 py-1 text-xs text-fg-faint",children:"no models in range"}),o.modelOptions.map(P=>{const L=r.models.includes(P);return g.jsxs(xi,{active:L,onClick:()=>i(A=>({...A,models:L?A.models.filter(M=>M!==P):[...A.models,P]})),children:[g.jsx("span",{className:L?"text-accent":"text-fg-faint","aria-hidden":!0,children:L?"◉":"○"})," ",on(P)]},P)})]})]})}),g.jsxs("div",{className:"flex shrink-0 items-center gap-1.5",children:[g.jsx("span",{className:"text-xs text-fg-faint",children:"range:"}),g.jsx(Mn,{options:Fp.map(P=>({value:P.key,label:P.key==="mtd"?"MTD":P.key==="all"?"ALL":P.key})),value:r.period,onChange:P=>i(L=>({...L,period:P})),size:"sm",ariaLabel:"time range"})]}),k&&g.jsxs("button",{type:"button",onClick:()=>i(P=>({...P,providers:[],models:[],account:"all"})),className:"flex items-center gap-1 rounded border border-line bg-bg-1 px-2 py-1 text-xs text-fg-faint transition hover:border-warning/60 hover:text-warning focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent",title:"Clear provider, model & account filters","aria-label":"Clear provider, model and account filters",children:[g.jsx($i,{className:"size-3","aria-hidden":!0})," clear"]})]})]})})}function mw({derived:e,periodLabel:o,tz:r,version:i}){const l=Zp();return g.jsxs("button",{type:"button",onClick:()=>l({kind:"summary",derived:e,periodLabel:o,tz:r,version:i}),className:"flex items-center gap-1.5 rounded border border-line bg-bg-1 px-2.5 py-1 text-xs text-fg-dim transition hover:border-accent/60 hover:text-accent active:scale-[0.97] max-sm:py-2",title:"Create a shareable image",children:[g.jsx(n0,{className:"size-3.5"}),g.jsx("span",{children:"share"})]})}const vw="modulepreload",yw=function(e,o){return new URL(e,o).href},Oh={},eg=function(o,r,i){let l=Promise.resolve();if(r&&r.length>0){let d=function(x){return Promise.all(x.map(v=>Promise.resolve(v).then(w=>({status:"fulfilled",value:w}),w=>({status:"rejected",reason:w}))))};const h=document.getElementsByTagName("link"),p=document.querySelector("meta[property=csp-nonce]"),m=(p==null?void 0:p.nonce)||(p==null?void 0:p.getAttribute("nonce"));l=d(r.map(x=>{if(x=yw(x,i),x in Oh)return;Oh[x]=!0;const v=x.endsWith(".css"),w=v?'[rel="stylesheet"]':"";if(!!i)for(let R=h.length-1;R>=0;R--){const k=h[R];if(k.href===x&&(!v||k.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${x}"]${w}`))return;const C=document.createElement("link");if(C.rel=v?"stylesheet":vw,v||(C.as="script"),C.crossOrigin="",C.href=x,m&&C.setAttribute("nonce",m),document.head.appendChild(C),v)return new Promise((R,k)=>{C.addEventListener("load",R),C.addEventListener("error",()=>k(new Error(`Unable to preload CSS for ${x}`)))})}))}function u(d){const h=new Event("vite:preloadError",{cancelable:!0});if(h.payload=d,window.dispatchEvent(h),!h.defaultPrevented)throw d}return l.then(d=>{for(const h of d||[])h.status==="rejected"&&u(h.reason);return o().catch(u)})};function xw({derived:e,periodLabel:o}){const r=e.totals,i=e.timeline.map(d=>d.total).slice(-30),l=e.timeline.map(d=>d.tokens).slice(-30),u=e.cacheSavingsSeries.map(d=>d.value).slice(-30);return g.jsxs("div",{className:"grid grid-cols-[repeat(auto-fit,minmax(150px,1fr))] gap-3",children:[g.jsx(Ao,{label:`spend · ${o}`,value:Pe(r.cost),accent:"text-cost",spark:i,sparkColor:"var(--color-cost)"}),g.jsx(Ao,{label:"tokens",value:yt(r.tokens),spark:l,sparkColor:"var(--color-fg-dim)"}),g.jsx(Ao,{label:"cache saved",value:Pe(r.cacheSavings),accent:"text-positive",spark:u,sparkColor:"var(--color-positive)"}),g.jsx(Ao,{label:"calls",value:bn(r.calls)}),g.jsx(Ao,{label:"burn · today",value:`${Pe(e.burnRate)}/hr`,accent:"text-warning"})]})}function Ao({label:e,value:o,accent:r="text-fg-bright",spark:i,sparkColor:l}){return g.jsxs("div",{className:"rise flex min-w-0 flex-col rounded-md border border-line bg-bg-1/80 p-3.5 transition-colors hover:border-line-2",children:[g.jsx("div",{className:"font-display text-[10px] uppercase tracking-wide text-fg-faint",children:e}),g.jsx("div",{className:`tnum mt-1.5 text-xl sm:text-2xl ${r}`,children:o}),i&&i.length>1&&g.jsx("div",{className:"mt-auto overflow-hidden pt-2 text-right",children:g.jsx(Zo,{data:i,color:l??"currentColor",className:"text-sm opacity-70"})})]})}function ww({accounts:e,nameOf:o}){return e.length===0?g.jsx(Hi,{title:"accounts",children:g.jsx("div",{className:"py-6 text-center text-xs text-fg-faint",children:"no accounts match the current filter"})}):g.jsx("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-[repeat(auto-fit,minmax(min(340px,100%),1fr))]",children:e.map((r,i)=>g.jsx(Sw,{account:r,index:i,providerName:o(r.providerId)},r.id))})}function Sw({account:e,index:o,providerName:r}){var m,x,v,w,y,C;const i=e.dashboard,l=((m=e.billing)==null?void 0:m.metrics)??[],u=((x=e.billing)==null?void 0:x.modelSpend)??[],d=(v=e.billing)==null?void 0:v.activity,h=Ox(e.providerId),p=e.name&&e.name!==r;return g.jsxs("div",{className:"rise group relative overflow-hidden rounded-md border bg-bg-1/50 p-4 transition-colors",style:{animationDelay:`${o*40}ms`,borderColor:`color-mix(in oklab, ${h} 50%, var(--color-line))`},children:[g.jsxs("div",{className:"flex items-center justify-between gap-2",children:[g.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[g.jsx("span",{style:{color:h},children:"●"}),g.jsx("span",{className:"font-display text-sm tracking-wide text-fg-bright",children:r}),p&&g.jsxs("span",{className:"truncate text-xs text-fg-faint",children:["· ",e.name]})]}),((w=e.billing)==null?void 0:w.plan)&&g.jsx("span",{className:"shrink-0 rounded border border-line px-1.5 py-0.5 text-[10px] text-fg-dim",children:e.billing.plan})]}),i&&g.jsxs(g.Fragment,{children:[g.jsxs("div",{className:"mt-4 grid grid-cols-3 gap-2",children:[g.jsx(ou,{label:"today",cost:i.today.cost,tokens:i.today.tokens}),g.jsx(ou,{label:"week",cost:i.week.cost,tokens:i.week.tokens}),g.jsx(ou,{label:"month",cost:i.month.cost,tokens:i.month.tokens})]}),g.jsxs("div",{className:"mt-3 flex items-center justify-between border-t border-line-faint pt-3 text-xs",children:[g.jsxs("span",{className:"text-fg-dim",children:["burn ",g.jsxs("span",{className:"tnum text-warning",children:[Pe(i.burnRate),"/hr"]})]}),g.jsxs("span",{className:"text-fg-dim",children:["saved ",g.jsx("span",{className:"tnum text-positive",children:Pe(i.month.cacheSavings)})]})]})]}),l.length>0&&g.jsx("div",{className:`flex flex-col gap-2 ${i?"mt-3 border-t border-line-faint pt-3":"mt-4"}`,children:l.slice(0,8).map(R=>g.jsx(Rw,{metric:R},R.label))}),u.length>0&&g.jsxs("div",{className:"mt-3 flex flex-col gap-1 border-t border-line-faint pt-3",children:[g.jsx("div",{className:"text-[10px] uppercase tracking-wide text-fg-faint",children:"spend by model"}),u.slice(0,4).map(R=>g.jsxs("div",{className:"flex items-center justify-between gap-2 text-[11px]",children:[g.jsx("span",{className:"min-w-0 truncate text-fg-dim",children:on(R.name)}),g.jsxs("span",{className:"tnum shrink-0 text-cost",children:[Pe(R.usd),g.jsxs("span",{className:"ml-1.5 text-fg-faint",children:[bn(R.requests)," req"]})]})]},R.name))]}),i&&i.series.length>0&&g.jsxs("div",{className:"mt-3 flex items-center gap-2 border-t border-line-faint pt-3",children:[g.jsx(Zo,{data:i.series,color:h,className:"text-sm"}),g.jsxs("span",{className:"ml-auto text-[10px] text-fg-faint",children:[i.series.length,"d"]})]}),!i&&d&&d.series.length>0&&g.jsxs("div",{className:"mt-3 flex items-center gap-2 border-t border-line-faint pt-3",children:[g.jsx(Zo,{data:d.series,color:h,className:"text-sm"}),g.jsx("span",{className:"ml-auto text-[10px] text-fg-faint",children:d.summary})]}),l.length===0&&((y=e.billing)==null?void 0:y.error)&&g.jsxs("div",{className:`flex items-start gap-1.5 text-xs text-warning ${i?"mt-3 border-t border-line-faint pt-3":"mt-4"}`,children:[g.jsx("span",{"aria-hidden":!0,children:"⚠"}),g.jsx("span",{children:e.billing.error})]}),!i&&l.length===0&&!((C=e.billing)!=null&&C.error)&&u.length===0&&!(d&&d.series.length)&&g.jsx("div",{className:"py-6 text-center text-xs text-fg-faint",children:e.hasUsage?"no usage data":"billing-only · no live metrics"})]})}function ou({label:e,cost:o,tokens:r}){const i=o>0||r===0;return g.jsxs("div",{children:[g.jsx("div",{className:"text-[10px] uppercase text-fg-faint",children:e}),g.jsx("div",{className:`tnum text-sm ${i?"text-cost":"text-fg-bright"}`,children:i?Pe(o):yt(r)}),g.jsx("div",{className:"tnum text-[10px] text-fg-faint",children:i?yt(r):Pe(o)})]})}function Cw(e){return e.format.kind==="dollars"?Pe(e.used):e.format.kind==="count"?`${bn(e.used)}${e.format.suffix?" "+e.format.suffix:""}`:`${Math.round(e.used)}%`}function Rw({metric:e}){const o=e.format.kind==="percent"?Math.min(1,Math.max(0,e.used/100)):e.limit!=null&&e.limit>0?Math.min(1,Math.max(0,e.used/e.limit)):null,r=o==null?"var(--color-accent)":o>=.9?"var(--color-warning)":o>=.7?"var(--color-cost)":"var(--color-positive)";return g.jsxs("div",{children:[g.jsxs("div",{className:"flex items-center justify-between text-[11px]",children:[g.jsx("span",{className:"truncate text-fg-dim",children:e.label}),g.jsxs("span",{className:"tnum text-fg",children:[Cw(e),e.format.kind!=="percent"&&e.limit!=null&&g.jsxs("span",{className:"text-fg-faint",children:[" / ",e.format.kind==="dollars"?Pe(e.limit):bn(e.limit)]}),e.resetsAt&&g.jsxs("span",{className:"ml-1.5 text-fg-faint",children:["· ",e.resetsAt]})]})]}),o!=null&&g.jsx("div",{className:"mt-1 h-1.5 w-full overflow-hidden rounded-full bg-bg-3",role:"progressbar","aria-label":e.label,"aria-valuenow":Math.round(o*100),"aria-valuemin":0,"aria-valuemax":100,children:g.jsx("div",{className:"h-full rounded-full transition-all",style:{width:`${o*100}%`,background:r}})})]})}const kw=[0,.32,.55,.78,1],Vh=e=>e===0?"var(--color-bg-2)":`color-mix(in oklab, var(--color-cost) ${kw[e]*100}%, var(--color-bg-2))`,tg=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];function _w({derived:e,maxWeeks:o=26,periodLabel:r}){const[i,l]=b.useState(null),u=b.useMemo(()=>new Map(e.calendar.map(w=>[w.date,w])),[e.calendar]),d=b.useMemo(()=>e.calendar.some(w=>w.cost>0),[e.calendar]),h=w=>d?w.cost:w.tokens,p=b.useMemo(()=>{const w=e.calendar,y=w.filter(M=>h(M)>0);if(y.length===0)return null;const C=w.reduce((M,z)=>M+h(z),0),R=y.reduce((M,z)=>h(z)>h(M)?z:M),k=new Array(7).fill(0);for(const M of w)k[Ho(tn(M.date))]+=h(M);const P=k.indexOf(Math.max(...k)),L=new Set(y.map(M=>M.date));let A=0;for(let M=tn(y[y.length-1].date);L.has(Jo(M));M-=jn)A++;return{active:y.length,total:C,top:R,avg:C/y.length,busiest:P,streak:A,costed:d}},[e,d]),m=b.useMemo(()=>{const w=new Map(e.calendar.map($=>[$.date,h($)]));if(e.calendar.length===0)return null;const y=e.calendar[e.calendar.length-1].date,C=e.calendar[0].date;let R=tn(y),k=tn(C);(R-k)/(jn*7)>o&&(k=R-o*7*jn),k-=Ho(k)*jn;const P=Math.max(...e.calendar.map(h),0),L=$=>{if($<=0||P<=0)return 0;const O=$/P;return O>.66?4:O>.4?3:O>.15?2:1},A=[];let M=new Array(7).fill(null);const z=[];let U=-1,I=0;for(let $=k;$<=R;$+=jn){const O=Jo($),B=Ho($);B===0&&M.some(Boolean)&&(A.push(M),M=new Array(7).fill(null),I++);const V=new Date($).getUTCMonth();V!==U&&B===0&&(z.push({col:I,text:ju[V]}),U=V);const J=$>=tn(C);M[B]=J?{date:O,cost:w.get(O)??0,level:L(w.get(O)??0)}:null}return M.some(Boolean)&&A.push(M),{weeks:A,monthLabels:z}},[e,o]),x=m?`repeat(${m.weeks.length}, minmax(0,1fr))`:void 0,v=m?m.weeks.length*25:void 0;return g.jsx(g.Fragment,{children:g.jsx(Hi,{title:"daily spend",titleTag:r,captureName:"calendar",children:!m||!p?g.jsx("div",{className:"py-6 text-center text-xs text-fg-faint",children:"no usage yet"}):g.jsxs("div",{className:"grid gap-x-8 gap-y-5 pt-1 md:grid-cols-[minmax(0,1fr)_210px] md:items-start",children:[g.jsxs("div",{className:"flex min-w-0 flex-col gap-1.5",children:[g.jsx("div",{className:"pl-6",children:g.jsx("div",{className:"grid gap-[3px] text-[9px] text-fg-faint",style:{gridTemplateColumns:x,maxWidth:v},children:m.weeks.map((w,y)=>{const C=m.monthLabels.find(R=>R.col===y);return g.jsx("div",{className:"truncate",children:(C==null?void 0:C.text)??""},y)})})}),g.jsxs("div",{className:"flex gap-[3px]",children:[g.jsx("div",{className:"flex w-5 shrink-0 flex-col gap-[3px] text-[9px] text-fg-faint",children:["M","","W","","F","",""].map((w,y)=>g.jsx("div",{className:"flex flex-1 items-center",children:w},y))}),g.jsx("div",{className:"grid min-w-0 flex-1 gap-[3px]",style:{gridTemplateColumns:x,maxWidth:v},children:m.weeks.map((w,y)=>g.jsx("div",{className:"flex flex-col gap-[3px]",children:w.map((C,R)=>C===null?g.jsx("div",{className:"aspect-square"},R):g.jsx("div",{className:"aspect-square cursor-default rounded-[3px] transition duration-150 hover:scale-[1.18] hover:ring-1 hover:ring-accent",style:{background:Vh(C.level)},onMouseEnter:()=>l(u.get(C.date)??null),onMouseLeave:()=>l(null)},R))},y))})]}),g.jsxs("div",{className:"flex items-center gap-1.5 pl-6 pt-1 text-[9px] text-fg-faint",children:["less",[0,1,2,3,4].map(w=>g.jsx("span",{className:"size-[11px] rounded-[2px]",style:{background:Vh(w)}},w)),"more"]})]}),g.jsxs("div",{className:"relative border-line-faint md:border-l md:pl-6",children:[g.jsxs("div",{className:`grid grid-cols-2 gap-x-6 gap-y-4 md:grid-cols-1 ${i?"invisible":""}`,children:[g.jsx(yi,{label:"busiest day",value:p.costed?Pe(p.top.cost):yt(p.top.tokens),sub:Ui(p.top.date),valueClass:"text-cost"}),g.jsx(yi,{label:"daily average",value:p.costed?Pe(p.avg):yt(p.avg),sub:`across ${p.active} active days`}),g.jsx(yi,{label:"top weekday",value:tg[p.busiest],valueClass:"text-fg-bright"}),g.jsx(yi,{label:"current streak",value:`${p.streak}d`,sub:p.streak>0?"in a row":"idle today",valueClass:"text-positive"})]}),i&&g.jsx("div",{className:"absolute inset-0 md:pl-6",children:g.jsx(Pw,{day:i})})]})]})})})}function Pw({day:e}){return g.jsxs("div",{className:"font-mono text-[11px]",children:[g.jsxs("div",{className:"flex items-baseline justify-between gap-3 border-b border-line-faint pb-2",children:[g.jsxs("span",{className:"text-fg-dim",children:[tg[Ho(tn(e.date))]," · ",Ui(e.date)]}),g.jsx("span",{className:"tnum text-cost",children:e.cost>0?Pe(e.cost):"—"})]}),e.cost>0?g.jsxs(g.Fragment,{children:[g.jsxs("div",{className:"grid grid-cols-3 gap-2 py-2 text-[10px]",children:[g.jsxs("div",{children:[g.jsx("div",{className:"text-fg-faint",children:"calls"}),g.jsx("div",{className:"tnum text-fg",children:bn(e.calls)})]}),g.jsxs("div",{children:[g.jsx("div",{className:"text-fg-faint",children:"tokens"}),g.jsx("div",{className:"tnum text-fg",children:yt(e.tokens)})]}),g.jsxs("div",{children:[g.jsx("div",{className:"text-fg-faint",children:"saved"}),g.jsx("div",{className:"tnum text-positive",children:Pe(e.cacheSavings)})]})]}),g.jsxs("div",{className:"flex flex-col gap-1 border-t border-line-faint pt-2",children:[e.models.slice(0,5).map(o=>g.jsxs("div",{className:"flex items-center gap-2",children:[g.jsx("span",{className:"size-1.5 shrink-0 rounded-full",style:{background:Gu(o.name)}}),g.jsx("span",{className:"min-w-0 flex-1 truncate text-fg-dim",children:on(o.name)}),g.jsx("span",{className:"tnum w-16 shrink-0 text-right text-fg",children:Pe(o.cost)})]},o.name)),e.models.length>5&&g.jsxs("div",{className:"pt-0.5 text-fg-faint",children:["+",e.models.length-5," more"]})]})]}):g.jsx("div",{className:"pt-2 text-fg-faint",children:"no spend this day"})]})}const Ew=[{value:"cost",label:"cost"},{value:"tokens",label:"tokens"},{value:"calls",label:"calls"}],Bh="1.75rem minmax(6rem,12rem) minmax(3.5rem,1fr) 3rem 5.5rem 5rem auto auto auto";function jw({derived:e,limit:o,periodLabel:r}){const[i,l]=b.useState(e.totals.cost>0?"cost":"tokens"),u=[...e.byModel].sort((x,v)=>v[i]-x[i]),d=o?u.slice(0,o):u,h=i==="tokens"?"tokenShare":i==="calls"?"callShare":"share",p=i==="tokens"?"block":"hidden md:block",m=i==="calls"?"block":"hidden lg:block";return g.jsx(Hi,{title:"model leaderboard",titleTag:r,captureName:"models",right:g.jsx(Mn,{options:Ew,value:i,onChange:l,size:"xs",ariaLabel:"sort models by",containerClassName:"flex items-center gap-0.5",btnClassName:"rounded px-1.5 py-0.5 text-[11px] transition"}),children:d.length===0?g.jsx(pw,{children:"no models in period"}):g.jsxs("div",{className:"mt-6 flex flex-col overflow-x-auto",children:[g.jsxs("div",{className:"grid items-center gap-x-3 border-b border-line px-2 pb-1.5 font-display text-[10px] uppercase tracking-wide text-fg-faint",style:{gridTemplateColumns:Bh},children:[g.jsx("span",{}),g.jsx("span",{}),g.jsx("span",{children:"share"}),g.jsx("span",{className:"text-right",children:"%"}),g.jsx("span",{className:"text-right text-cost/70",children:"cost"}),g.jsx("span",{className:"text-right",children:"trend"}),g.jsx("span",{className:"hidden text-right lg:block",children:"$/call"}),g.jsx("span",{className:`text-right ${p}`,children:"tokens"}),g.jsx("span",{className:`text-right ${m}`,children:"calls"})]}),d.map((x,v)=>g.jsxs("div",{className:"grid items-center gap-x-3 rounded border-b border-line-faint px-2 py-2 transition-colors last:border-0 hover:bg-bg-2/40",style:{gridTemplateColumns:Bh},children:[g.jsxs("span",{className:`tnum text-xs ${v===0?"font-medium text-accent":v<3?"text-fg-dim":"text-fg-faint"}`,children:["#",v+1]}),g.jsxs("span",{className:"flex min-w-0 items-center gap-2",children:[g.jsx("span",{className:"size-2 shrink-0 rounded-[2px]",style:{background:x.color}}),g.jsx("span",{className:"truncate text-fg",title:x.model,children:on(x.model)})]}),g.jsx("div",{className:"h-1.5 overflow-hidden rounded-full bg-bg-3",children:g.jsx("div",{className:"h-full rounded-full",style:{width:`${Math.min(100,x[h]*100)}%`,minWidth:x[h]>0?"2px":0,background:x.color}})}),g.jsx("span",{className:"tnum text-right text-[11px] text-fg-dim",children:Yp(x[h],x[h]>0&&x[h]<.01?1:0)}),g.jsx("span",{className:"tnum text-right text-xs text-cost",children:Pe(x.cost)}),g.jsx("span",{className:"overflow-hidden text-right",children:g.jsx(Zo,{data:x.trend.slice(-30),color:x.color,className:"text-sm"})}),g.jsx("span",{className:"tnum hidden text-right text-xs text-fg-dim lg:block",children:Pe(x.calls?x.cost/x.calls:0)}),g.jsx("span",{className:`tnum text-right text-xs text-fg-dim ${p}`,children:x.tokens>0?yt(x.tokens):g.jsx("span",{className:"text-fg-faint",children:"—"})}),g.jsx("span",{className:`tnum text-right text-xs text-fg-faint ${m}`,children:bn(x.calls)})]},x.model))]})})}/**
59
+ `)}async function Y0(e,o){const r=o.fontEmbedCSS!=null?o.fontEmbedCSS:o.skipFonts?null:await X0(e,o);if(r){const i=document.createElement("style"),l=document.createTextNode(r);i.appendChild(l),e.firstChild?e.insertBefore(i,e.firstChild):e.appendChild(i)}}async function J0(e,o={}){const{width:r,height:i}=Ap(e,o),l=await Bi(e,o,!0);return await Y0(l,o),await qp(l,o),q0(l,o),await g0(l,r,i)}async function Wp(e,o={}){const{width:r,height:i}=Ap(e,o),l=await J0(e,o),u=await bi(l),d=document.createElement("canvas"),h=d.getContext("2d"),p=o.pixelRatio||d0(),m=o.canvasWidth||r,x=o.canvasHeight||i;return d.width=m*p,d.height=x*p,o.skipAutoScale||f0(d),d.style.width=`${m}`,d.style.height=`${x}`,o.backgroundColor&&(h.fillStyle=o.backgroundColor,h.fillRect(0,0,d.width,d.height)),h.drawImage(u,0,0,d.width,d.height),d}async function Z0(e,o={}){return(await Wp(e,o)).toDataURL()}async function ew(e,o={}){const r=await Wp(e,o);return await h0(r)}const Qp="#0a0a0a";async function Kp(){try{await document.fonts.ready}catch{}await new Promise(e=>requestAnimationFrame(()=>e(null)))}async function tw(e,o={}){return await Kp(),Z0(e,{pixelRatio:o.pixelRatio??2,backgroundColor:o.backgroundColor??Qp,cacheBust:!0,skipFonts:!1})}function nw(e,o){const r=document.createElement("a");r.href=e,r.download=o,document.body.appendChild(r),r.click(),r.remove()}async function rw(e,o,r){nw(await tw(e,r),o)}async function ow(e,o){try{await Kp();const r=await ew(e,{pixelRatio:(o==null?void 0:o.pixelRatio)??2,backgroundColor:(o==null?void 0:o.backgroundColor)??Qp,cacheBust:!0});return!r||!navigator.clipboard||typeof ClipboardItem>"u"?!1:(await navigator.clipboard.write([new ClipboardItem({"image/png":r})]),!0)}catch{return!1}}function sw(e){const o=new Date,r=i=>String(i).padStart(2,"0");return`tokmon-${e}-${o.getFullYear()}${r(o.getMonth()+1)}${r(o.getDate())}-${r(o.getHours())}${r(o.getMinutes())}.png`}function Pe(e,o={}){if(!Number.isFinite(e))return"$0.00";const r=o.sign&&e>0?"+":"",i=Math.abs(e);return i>=1e5?`${r}$${(e/1e3).toFixed(0)}k`:i>=1e4?`${r}$${(e/1e3).toFixed(1)}k`:i>=1?`${r}$${e.toFixed(2)}`:i>=.01?`${r}$${e.toFixed(3)}`:i===0?"$0.00":`${r}$${e.toFixed(4)}`}function a1(e){if(!Number.isFinite(e))return"$0";const o=Math.abs(e);return o>=1e6?`$${(e/1e6).toFixed(1).replace(/\.0$/,"")}M`:o>=1e3?`$${(e/1e3).toFixed(1).replace(/\.0$/,"")}k`:o>=1?`$${Math.round(e)}`:o===0?"$0":`$${e.toFixed(2)}`}function yt(e){if(!Number.isFinite(e)||e===0)return"0";const o=Math.abs(e);return o>=1e9?`${(e/1e9).toFixed(2)}B`:o>=1e6?`${(e/1e6).toFixed(2)}M`:o>=1e3?`${(e/1e3).toFixed(1)}k`:String(Math.round(e))}function bn(e){return Number.isFinite(e)?Math.round(e).toLocaleString("en-US"):"0"}function Xp(e){if(!Number.isFinite(e))return"0";const o=Math.abs(e);return o>=1e6?`${(e/1e6).toFixed(1)}M`:o>=1e4?`${Math.round(e/1e3)}k`:Math.round(e).toLocaleString("en-US")}function Yp(e,o=0){return Number.isFinite(e)?`${(e*100).toFixed(o)}%`:"0%"}function iw(e,o){const r=Math.max(0,Math.round((o-e)/1e3));if(r<2)return"just now";if(r<60)return`${r}s ago`;const i=Math.round(r/60);if(i<60)return`${i}m ago`;const l=Math.round(i/60);return l<24?`${l}h ago`:`${Math.round(l/24)}d ago`}function Ui(e){const o=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);if(o)return`${ju[Number(o[2])-1]} ${Number(o[3])}`;const r=/^(\d{4})-(\d{2})$/.exec(e);return r?`${ju[Number(r[2])-1]} ${r[1]}`:e}function zi({variant:e="footer",version:o}){return e==="corner"?g.jsxs("div",{className:"pointer-events-none absolute bottom-3 right-3 z-10 flex items-center gap-1.5 rounded bg-bg-0/60 px-2 py-1 font-display text-[11px] tracking-wide text-fg-faint backdrop-blur-sm",children:[g.jsx("span",{className:"text-accent",children:"●"})," tokmon"]}):g.jsxs("div",{className:"flex items-center gap-2 font-display text-sm tracking-wide",children:[g.jsx("span",{className:"text-accent",children:"●"}),g.jsx("span",{className:"text-fg-bright",children:"tokmon"}),g.jsxs("span",{className:"text-xs tracking-normal text-fg-faint",children:["github.com/DavidIlie/tokmon",o?` · v${o}`:""]})]})}const Dh=e=>e==="all time"?"all time":`last ${e}`,lw=b.forwardRef(function({derived:o,periodLabel:r,tz:i,version:l,opts:u},d){const h=o.byModel.slice(0,5),p=o.totals.cost>0,m=x=>p?x.share:x.tokenShare;return g.jsxs("div",{ref:d,className:"relative flex flex-col",style:{width:1040,height:540,background:"var(--color-bg-0)",backgroundImage:u.glow?"radial-gradient(circle at 50% -10%, color-mix(in oklab, var(--color-accent) 16%, transparent), transparent 55%), radial-gradient(var(--color-line-faint) 1px, transparent 1px)":"radial-gradient(var(--color-line-faint) 1px, transparent 1px)",backgroundSize:u.glow?"100% 100%, 24px 24px":"24px 24px",fontFamily:"var(--font-mono)",color:"var(--color-fg)"},children:[g.jsxs("div",{className:"flex items-baseline gap-2 border-b border-line px-6 py-3.5",children:[g.jsx("span",{className:"font-display text-sm tracking-wide text-accent",children:"tokmon"}),g.jsxs("span",{className:"text-sm text-fg-dim",children:["usage · ",Dh(r)]}),g.jsx("span",{className:"ml-auto text-xs text-fg-faint",children:i})]}),g.jsxs("div",{className:"flex flex-1 gap-9 px-9 py-7",children:[g.jsxs("div",{className:"flex w-[300px] shrink-0 flex-col",children:[g.jsx("div",{className:"font-display text-xs uppercase tracking-widest text-fg-faint",children:p?"total spend":"total tokens"}),g.jsx("div",{className:"tnum mt-1 text-cost",style:{fontSize:64,lineHeight:1},children:p?Pe(o.totals.cost):yt(o.totals.tokens)}),g.jsxs("div",{className:"mt-auto flex flex-col gap-3",children:[p?g.jsx(vi,{label:"tokens",value:yt(o.totals.tokens)}):g.jsx(vi,{label:"spend",value:Pe(o.totals.cost)}),g.jsx(vi,{label:"cache saved",value:Pe(o.totals.cacheSavings),className:"text-positive"}),g.jsx(vi,{label:"calls",value:bn(o.totals.calls)})]})]}),g.jsxs("div",{className:"flex flex-1 flex-col gap-2 border-l border-line pl-9",children:[g.jsxs("div",{className:"font-display text-xs uppercase tracking-widest text-fg-faint",children:["top models · ",Dh(r)]}),h.length===0?g.jsx("div",{className:"flex flex-1 items-center text-sm text-fg-faint",children:"no model usage in range"}):h.map(x=>g.jsxs("div",{className:"flex items-center gap-3",children:[g.jsx("span",{className:"size-2 shrink-0 rounded-[2px]",style:{background:x.color}}),g.jsx("span",{className:"w-28 shrink-0 truncate text-sm text-fg",children:on(x.model)}),g.jsx("span",{className:"h-1.5 flex-1 overflow-hidden rounded-full bg-bg-3",children:g.jsx("span",{className:"block h-full rounded-full",style:{width:`${Math.min(100,m(x)*100)}%`,minWidth:2,background:x.color}})}),g.jsx("span",{className:"tnum w-10 shrink-0 text-right text-xs text-fg-faint",children:Yp(m(x))}),g.jsx("span",{className:"tnum w-20 shrink-0 text-right text-sm text-cost",children:p?Pe(x.cost):yt(x.tokens)})]},x.model))]})]}),g.jsx("div",{className:"border-t border-line px-9 pt-3",children:g.jsx(Zo,{data:o.timeline.map(x=>x.total),color:"var(--color-accent)",className:"text-2xl tracking-tight"})}),g.jsxs("div",{className:"flex items-center justify-between border-t border-line px-9 py-3.5",children:[u.wmPos==="footer"?g.jsx(zi,{variant:"footer",version:l}):g.jsx("span",{className:"text-xs text-fg-faint",children:"tokmon"}),g.jsx("span",{className:"text-xs text-fg-faint",children:r})]}),u.wmPos==="corner"&&g.jsx(zi,{variant:"corner"})]})});function vi({label:e,value:o,className:r="text-fg-bright"}){return g.jsxs("div",{children:[g.jsx("div",{className:"text-[11px] uppercase tracking-wide text-fg-faint",children:e}),g.jsx("div",{className:`tnum mt-1 truncate text-xl ${r}`,children:o})]})}const aw=b.forwardRef(function({node:o,title:r,framed:i,wmPos:l},u){const d=b.useRef(null);return b.useEffect(()=>{const h=d.current;if(!h)return;h.innerHTML="";const p=o.cloneNode(!0);return p.querySelectorAll("[data-chrome]").forEach(m=>m.remove()),p.style.width=`${Math.round(o.getBoundingClientRect().width)}px`,p.classList.remove("hover:border-line-2"),h.appendChild(p),()=>{h.innerHTML=""}},[o]),g.jsxs("div",{ref:u,className:"relative",style:{background:"var(--color-bg-0)",backgroundImage:"radial-gradient(var(--color-line-faint) 1px, transparent 1px)",backgroundSize:"24px 24px",padding:i?28:16,fontFamily:"var(--font-mono)"},children:[i&&g.jsxs("div",{className:"mb-3 flex items-baseline gap-2",children:[g.jsx("span",{className:"font-display text-xs tracking-wide text-accent",children:"tokmon"}),g.jsxs("span",{className:"font-display text-xs uppercase tracking-wider text-fg-dim",children:["/ ",r]})]}),g.jsx("div",{ref:d}),l==="footer"?g.jsx("div",{className:"mt-3 flex justify-end",children:g.jsx(zi,{variant:"footer"})}):g.jsx(zi,{variant:"corner"})]})}),uw=600,bh=360,cw=e=>e==="light"?"#f4f5f5":"#0a0a0a";function dw({source:e,onClose:o}){const r=e.kind==="summary",i=b.useRef(null),l=b.useRef(null),u=b.useRef(null),d=b.useRef(),[h,p]=b.useState(()=>document.documentElement.classList.contains("light")?"light":"dark"),[m,x]=b.useState(r?"footer":"corner"),[v,w]=b.useState("2"),[y,C]=b.useState(!0),[R,k]=b.useState(!0),[P,L]=b.useState({w:r?1040:700,h:r?540:360}),[A,M]=b.useState(null);b.useEffect(()=>{var X;const V=document.activeElement;(X=l.current)==null||X.focus();const J=Q=>{if(Q.key==="Escape"){o();return}if(Q.key!=="Tab"||!u.current)return;const ge=u.current.querySelectorAll('button,[href],input,select,textarea,[tabindex]:not([tabindex="-1"])');if(ge.length===0)return;const pe=ge[0],Z=ge[ge.length-1];Q.shiftKey&&document.activeElement===pe?(Q.preventDefault(),Z.focus()):!Q.shiftKey&&document.activeElement===Z&&(Q.preventDefault(),pe.focus())};return document.addEventListener("keydown",J),()=>{var Q;document.removeEventListener("keydown",J),(Q=V==null?void 0:V.focus)==null||Q.call(V)}},[o]),b.useEffect(()=>()=>{d.current&&clearTimeout(d.current)},[]);const z=V=>{M(V),d.current&&clearTimeout(d.current),d.current=setTimeout(()=>M(null),1600)};b.useEffect(()=>{const V=i.current;if(!V)return;const J=()=>L({w:V.offsetWidth||P.w,h:V.offsetHeight||P.h});J();const X=new ResizeObserver(J);X.observe(V);const Q=setTimeout(J,80);return()=>{X.disconnect(),clearTimeout(Q)}},[e,R,m,h,y]);const U=Math.min(uw/P.w,bh/P.h,1),I={pixelRatio:Number(v),backgroundColor:cw(h)},$=sw(r?"summary":e.captureName),O=async()=>{i.current&&(await rw(i.current,$,I),z("dl"))},B=async()=>{i.current&&z(await ow(i.current,I)?"copy":"fail")};return g.jsx("div",{className:"dialog-fade fixed inset-0 z-[60] flex items-center justify-center bg-bg-0/70 p-4 backdrop-blur-sm",onMouseDown:V=>{V.target===V.currentTarget&&o()},role:"dialog","aria-modal":"true","aria-label":"Share",children:g.jsxs("div",{ref:u,className:"dialog-pop relative flex max-h-[88vh] w-full max-w-[720px] flex-col overflow-hidden rounded-md border border-line-2 bg-bg-1",children:[g.jsx("div",{className:"pointer-events-none absolute left-3 top-2 font-display text-[11px] uppercase tracking-wider text-fg-dim",children:"share"}),g.jsx("button",{type:"button",onClick:o,"aria-label":"Close",className:"absolute right-2 top-2 z-10 rounded p-1 text-fg-faint transition hover:text-fg focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent",children:g.jsx($i,{className:"size-4"})}),g.jsx("div",{className:"flex items-center justify-center bg-bg-0 px-6 pb-5 pt-9",style:{minHeight:bh+24},children:g.jsx("div",{className:"overflow-hidden rounded",style:{width:P.w*U,height:P.h*U},children:g.jsx("div",{style:{width:P.w,height:P.h,transform:`scale(${U})`,transformOrigin:"top left"},children:g.jsx("div",{className:h==="light"?"light":"dark",children:r?g.jsx(lw,{ref:i,derived:e.derived,periodLabel:e.periodLabel,tz:e.tz,version:e.version,opts:{glow:y,wmPos:m}}):g.jsx(aw,{ref:i,node:e.node,title:e.captureName,framed:R,wmPos:m})})})})}),g.jsxs("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-2 border-t border-line px-4 py-3 text-[11px]",children:[g.jsx(zo,{label:"theme",children:g.jsx(Mn,{size:"xs",containerClassName:bo,ariaLabel:"export theme",options:[{value:"dark",label:"dark"},{value:"light",label:"light"}],value:h,onChange:p})}),g.jsx(zo,{label:"mark",children:g.jsx(Mn,{size:"xs",containerClassName:bo,ariaLabel:"watermark position",options:[{value:"footer",label:"footer"},{value:"corner",label:"corner"}],value:m,onChange:x})}),r?g.jsx(zo,{label:"glow",children:g.jsx(Mn,{size:"xs",containerClassName:bo,ariaLabel:"accent glow",options:[{value:"on",label:"on"},{value:"off",label:"off"}],value:y?"on":"off",onChange:V=>C(V==="on")})}):g.jsx(zo,{label:"frame",children:g.jsx(Mn,{size:"xs",containerClassName:bo,ariaLabel:"frame",options:[{value:"framed",label:"framed"},{value:"bare",label:"bare"}],value:R?"framed":"bare",onChange:V=>k(V==="framed")})}),g.jsx(zo,{label:"scale",children:g.jsx(Mn,{size:"xs",containerClassName:bo,ariaLabel:"export scale",options:[{value:"1",label:"1x"},{value:"2",label:"2x"},{value:"3",label:"3x"}],value:v,onChange:w})}),g.jsxs("span",{className:"ml-auto tnum text-fg-faint",children:[P.w," × ",P.h," · ",v,"x"]})]}),g.jsxs("div",{className:"flex items-center justify-end gap-2 border-t border-line px-4 py-3",children:[g.jsxs("button",{type:"button",onClick:B,className:"flex items-center gap-1.5 rounded border border-line bg-bg-1 px-3 py-1.5 text-xs text-fg-dim transition hover:border-line-2 hover:text-fg active:scale-[0.97] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent",children:[A==="copy"?g.jsx(jh,{className:"size-3.5 text-positive"}):A==="fail"?g.jsx($i,{className:"size-3.5 text-warning"}):g.jsx(e0,{className:"size-3.5"})," ",A==="copy"?"copied":A==="fail"?"copy failed":"copy"]}),g.jsxs("button",{type:"button",ref:l,onClick:O,className:"flex items-center gap-1.5 rounded border border-accent/60 bg-bg-1 px-3 py-1.5 text-xs text-accent transition hover:bg-bg-2 active:scale-[0.97] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent",children:[A==="dl"?g.jsx(jh,{className:"size-3.5 text-positive"}):g.jsx(t0,{className:"size-3.5"})," download PNG"]})]})]})})}const bo="flex items-center overflow-hidden rounded border border-line text-[10px]";function zo({label:e,children:o}){return g.jsxs("span",{className:"flex items-center gap-1.5",children:[g.jsx("span",{className:"text-fg-faint",children:e}),o]})}const Jp=b.createContext(()=>{}),Zp=()=>b.useContext(Jp);function fw({children:e}){const[o,r]=b.useState(null);return g.jsxs(Jp.Provider,{value:r,children:[e,o&&g.jsx(dw,{source:o,onClose:()=>r(null)})]})}function Hi({title:e,titleTag:o,right:r,captureName:i,children:l,className:u="",bodyClassName:d=""}){const h=b.useRef(null);return g.jsxs("section",{ref:h,className:`group relative rounded-md border border-line bg-bg-1/80 transition-colors hover:border-line-2 ${u}`,children:[e&&g.jsxs("div",{className:"pointer-events-none absolute -top-[7px] left-3 flex items-center gap-2 bg-bg-1 px-1.5",children:[g.jsx("span",{className:"font-display text-[11px] uppercase tracking-wider text-fg-dim",children:e}),o!=null&&g.jsx("span",{className:"text-[10px] normal-case tracking-normal text-fg-faint",children:o})]}),r&&g.jsx("div",{"data-chrome":!0,className:"absolute right-2 top-2 z-20 flex items-center gap-1.5 rounded bg-bg-1 px-0.5",children:r}),i&&g.jsx("div",{"data-chrome":!0,className:"absolute -top-[11px] right-3 z-20",children:g.jsx(hw,{getNode:()=>h.current,name:i})}),g.jsx("div",{className:`p-4 ${d}`,children:l})]})}function hw({getNode:e,name:o}){const r=Zp();return g.jsx("button",{type:"button",title:"Share this panel","aria-label":"Share this panel as an image",onClick:()=>{const i=e();i&&r({kind:"panel",node:i,captureName:o})},className:"rounded border border-transparent bg-bg-1 p-1 text-fg-faint opacity-0 transition hover:border-line hover:text-accent group-hover:opacity-100 focus-visible:opacity-100",children:g.jsx(Zx,{className:"size-3.5"})})}const ru=["▁","▂","▃","▄","▅","▆","▇","█"];function Zo({data:e,color:o="var(--color-accent)",className:r=""}){const i=ru.length-1,l=Math.max(...e,0),u=Math.min(...e,0),d=l>0&&u===l;return g.jsx("span",{className:`font-mono leading-none ${r}`,style:{color:o},"aria-hidden":!0,children:e.length===0?"·":d?ru[Math.floor(i/2)].repeat(e.length):e.map(h=>ru[l<=0?0:Math.max(0,Math.min(i,Math.floor(h/l*(i+.999))))]).join("")})}function yi({label:e,value:o,sub:r,valueClass:i="text-fg-bright"}){return g.jsxs("div",{children:[g.jsx("div",{className:"font-display text-[10px] uppercase tracking-wide text-fg-faint",children:e}),g.jsx("div",{className:`tnum mt-1 text-xl ${i}`,children:o}),r!=null&&g.jsx("div",{className:"mt-0.5 text-xs text-fg-dim",children:r})]})}function pw({children:e}){return g.jsx("div",{className:"flex h-full min-h-24 items-center justify-center text-center text-xs text-fg-faint",children:e})}const Ku="focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent";function Mn({options:e,value:o,onChange:r,size:i="sm",btnClassName:l,containerClassName:u,ariaLabel:d}){const h="flex items-center overflow-hidden rounded border border-line",p=i==="xs"?"px-1.5 py-0.5 text-[10px] transition max-sm:py-1.5":"px-2 py-1 text-xs transition max-sm:py-2",m=i==="xs"?"bg-bg-3 text-accent":"bg-bg-2 text-accent",x=i==="xs"?"text-fg-faint hover:text-fg":"text-fg-dim hover:text-fg";return g.jsx("div",{className:u??h,role:"group","aria-label":d,children:e.map(v=>g.jsx("button",{type:"button","aria-pressed":o===v.value,onClick:()=>r(v.value),className:`${l??p} ${Ku} ${o===v.value?m:x}`,children:v.label},String(v.value)))})}function zh({label:e,value:o,children:r}){const[i,l]=b.useState(!1),u=b.useRef(null);return b.useEffect(()=>{if(!i)return;const d=p=>{u.current&&!u.current.contains(p.target)&&l(!1)},h=p=>{p.key==="Escape"&&l(!1)};return document.addEventListener("mousedown",d),document.addEventListener("keydown",h),()=>{document.removeEventListener("mousedown",d),document.removeEventListener("keydown",h)}},[i]),g.jsxs("div",{ref:u,className:"relative",children:[g.jsxs("button",{type:"button","aria-haspopup":"menu","aria-expanded":i,onClick:()=>l(d=>!d),className:`flex items-center gap-1.5 rounded border border-line bg-bg-1 px-2 py-1 text-xs text-fg-dim transition hover:border-line-2 hover:text-fg max-sm:py-2 ${Ku}`,children:[g.jsxs("span",{className:"text-fg-faint",children:[e,":"]}),g.jsx("span",{className:"text-fg",children:o}),g.jsx(r0,{className:`size-3 transition ${i?"rotate-180":""}`})]}),i&&g.jsx("div",{role:"menu",className:"absolute right-0 z-50 mt-1 min-w-44 max-w-[calc(100vw-2.5rem)] rounded-md border border-line-2 bg-bg-2 p-1 shadow-xl",children:r(()=>l(!1))})]})}function Ah({children:e}){return g.jsx("div",{className:"flex flex-col",children:e})}function xi({active:e,onClick:o,children:r}){return g.jsx("button",{type:"button",role:"menuitem",onClick:o,className:`flex min-w-0 items-center gap-2 rounded px-2 py-1 text-left text-xs transition ${Ku} ${e?"bg-bg-3 text-fg-bright":"text-fg-dim hover:bg-bg-3 hover:text-fg"}`,children:r})}function gw({snapshot:e,derived:o,filters:r,setFilters:i}){const l=(e==null?void 0:e.providers)??[],d=((e==null?void 0:e.accounts)??[]).filter(P=>P.hasUsage),h=new Set(d.map(P=>P.providerId)),p=l.filter(P=>h.has(P.id)),m=new Set(o.cardAccounts.map(P=>P.providerId)),x=l.filter(P=>!h.has(P.id)&&m.has(P.id)),v=r.providers.length?d.filter(P=>r.providers.includes(P.providerId)):d,w=P=>{var L;return((L=l.find(A=>A.id===P))==null?void 0:L.name)??P},y=P=>P.name&&P.name!==w(P.providerId)?`${w(P.providerId)} · ${P.name}`:w(P.providerId),C=d.find(P=>P.id===r.account),R=P=>i(L=>{const A=L.providers.includes(P);return{...L,providers:A?L.providers.filter(M=>M!==P):[...L.providers,P]}}),k=r.providers.length>0||r.models.length>0||r.account!=="all";return g.jsx("div",{className:"border-t border-line bg-bg-0/70",children:g.jsxs("div",{className:"mx-auto flex max-w-[1600px] flex-wrap items-center gap-x-4 gap-y-2 px-5 py-2.5 2xl:max-w-[1920px]",children:[g.jsx("span",{className:"hidden text-xs text-fg-faint sm:inline",children:"filter:"}),g.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[p.map(P=>{const L=r.providers.includes(P.id),A=r.providers.length>0&&!L;return g.jsxs("button",{type:"button","aria-pressed":L,onClick:()=>R(P.id),className:"flex items-center gap-1.5 rounded border px-2 py-0.5 text-xs transition focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent max-sm:py-1.5",style:{borderColor:L?P.color:"var(--color-line)",color:A?"var(--color-fg-faint)":L?P.color:"var(--color-fg-dim)",background:L?"var(--color-bg-2)":"transparent"},title:L?`hide ${P.name}`:r.providers.length?`add ${P.name}`:`show only ${P.name}`,children:[g.jsx("span",{style:{color:P.color,opacity:A?.4:1},"aria-hidden":!0,children:L?"●":"○"}),P.name]},P.id)}),x.length>0&&g.jsxs("span",{className:"flex items-center gap-1.5 text-xs text-fg-faint",title:"Billing-only providers — shown as cards with plan & quota; no usage timeline to filter",children:[p.length>0&&g.jsx("span",{className:"text-line-2",children:"|"}),g.jsx("span",{children:"billing-only:"}),x.map(P=>g.jsxs("span",{className:"flex items-center gap-1 text-fg-dim",children:[g.jsx("span",{style:{color:P.color,opacity:.55},"aria-hidden":!0,children:"·"}),P.name]},P.id))]})]}),g.jsxs("div",{className:"flex w-full flex-wrap items-center gap-2 md:ml-auto md:w-auto",children:[v.length>1?g.jsx(zh,{label:"account",value:r.account==="all"?"all":C?y(C):"all",children:P=>g.jsxs(Ah,{children:[g.jsx(xi,{active:r.account==="all",onClick:()=>{i(L=>({...L,account:"all"})),P()},children:"All accounts"}),g.jsx("div",{className:"my-1 h-px bg-line"}),g.jsx("div",{className:"max-h-64 overflow-y-auto",children:v.map(L=>g.jsxs(xi,{active:r.account===L.id,onClick:()=>{i(A=>({...A,account:L.id})),P()},children:[g.jsx("span",{style:{color:L.color},"aria-hidden":!0,children:"●"})," ",g.jsx("span",{className:"truncate",children:y(L)})]},L.id))})]})}):v.length===1?g.jsxs("span",{className:"rounded border border-line bg-bg-1 px-2 py-1 text-xs text-fg-dim",children:["account: ",g.jsx("span",{className:"text-fg",children:y(v[0])})]}):null,g.jsx(zh,{label:"model",value:r.models.length===0?"all":r.models.length===1?on(r.models[0]):`${r.models.length} models`,children:()=>g.jsxs(Ah,{children:[g.jsx(xi,{active:r.models.length===0,onClick:()=>i(P=>({...P,models:[]})),children:"All models"}),g.jsx("div",{className:"my-1 h-px bg-line"}),g.jsxs("div",{className:"max-h-64 overflow-y-auto",children:[o.modelOptions.length===0&&g.jsx("div",{className:"px-2 py-1 text-xs text-fg-faint",children:"no models in range"}),o.modelOptions.map(P=>{const L=r.models.includes(P);return g.jsxs(xi,{active:L,onClick:()=>i(A=>({...A,models:L?A.models.filter(M=>M!==P):[...A.models,P]})),children:[g.jsx("span",{className:L?"text-accent":"text-fg-faint","aria-hidden":!0,children:L?"◉":"○"})," ",on(P)]},P)})]})]})}),g.jsxs("div",{className:"flex shrink-0 items-center gap-1.5",children:[g.jsx("span",{className:"text-xs text-fg-faint",children:"range:"}),g.jsx(Mn,{options:Fp.map(P=>({value:P.key,label:P.key==="mtd"?"MTD":P.key==="all"?"ALL":P.key})),value:r.period,onChange:P=>i(L=>({...L,period:P})),size:"sm",ariaLabel:"time range"})]}),k&&g.jsxs("button",{type:"button",onClick:()=>i(P=>({...P,providers:[],models:[],account:"all"})),className:"flex items-center gap-1 rounded border border-line bg-bg-1 px-2 py-1 text-xs text-fg-faint transition hover:border-warning/60 hover:text-warning focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent",title:"Clear provider, model & account filters","aria-label":"Clear provider, model and account filters",children:[g.jsx($i,{className:"size-3","aria-hidden":!0})," clear"]})]})]})})}function mw({derived:e,periodLabel:o,tz:r,version:i}){const l=Zp();return g.jsxs("button",{type:"button",onClick:()=>l({kind:"summary",derived:e,periodLabel:o,tz:r,version:i}),className:"flex items-center gap-1.5 rounded border border-line bg-bg-1 px-2.5 py-1 text-xs text-fg-dim transition hover:border-accent/60 hover:text-accent active:scale-[0.97] max-sm:py-2",title:"Create a shareable image",children:[g.jsx(n0,{className:"size-3.5"}),g.jsx("span",{children:"share"})]})}const vw="modulepreload",yw=function(e,o){return new URL(e,o).href},Oh={},eg=function(o,r,i){let l=Promise.resolve();if(r&&r.length>0){let d=function(x){return Promise.all(x.map(v=>Promise.resolve(v).then(w=>({status:"fulfilled",value:w}),w=>({status:"rejected",reason:w}))))};const h=document.getElementsByTagName("link"),p=document.querySelector("meta[property=csp-nonce]"),m=(p==null?void 0:p.nonce)||(p==null?void 0:p.getAttribute("nonce"));l=d(r.map(x=>{if(x=yw(x,i),x in Oh)return;Oh[x]=!0;const v=x.endsWith(".css"),w=v?'[rel="stylesheet"]':"";if(!!i)for(let R=h.length-1;R>=0;R--){const k=h[R];if(k.href===x&&(!v||k.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${x}"]${w}`))return;const C=document.createElement("link");if(C.rel=v?"stylesheet":vw,v||(C.as="script"),C.crossOrigin="",C.href=x,m&&C.setAttribute("nonce",m),document.head.appendChild(C),v)return new Promise((R,k)=>{C.addEventListener("load",R),C.addEventListener("error",()=>k(new Error(`Unable to preload CSS for ${x}`)))})}))}function u(d){const h=new Event("vite:preloadError",{cancelable:!0});if(h.payload=d,window.dispatchEvent(h),!h.defaultPrevented)throw d}return l.then(d=>{for(const h of d||[])h.status==="rejected"&&u(h.reason);return o().catch(u)})};function xw({derived:e,periodLabel:o}){const r=e.totals,i=e.timeline.map(d=>d.total).slice(-30),l=e.timeline.map(d=>d.tokens).slice(-30),u=e.cacheSavingsSeries.map(d=>d.value).slice(-30);return g.jsxs("div",{className:"grid grid-cols-[repeat(auto-fit,minmax(150px,1fr))] gap-3",children:[g.jsx(Ao,{label:`spend · ${o}`,value:Pe(r.cost),accent:"text-cost",spark:i,sparkColor:"var(--color-cost)"}),g.jsx(Ao,{label:"tokens",value:yt(r.tokens),spark:l,sparkColor:"var(--color-fg-dim)"}),g.jsx(Ao,{label:"cache saved",value:Pe(r.cacheSavings),accent:"text-positive",spark:u,sparkColor:"var(--color-positive)"}),g.jsx(Ao,{label:"calls",value:bn(r.calls)}),g.jsx(Ao,{label:"burn · today",value:`${Pe(e.burnRate)}/hr`,accent:"text-warning"})]})}function Ao({label:e,value:o,accent:r="text-fg-bright",spark:i,sparkColor:l}){return g.jsxs("div",{className:"rise flex min-w-0 flex-col rounded-md border border-line bg-bg-1/80 p-3.5 transition-colors hover:border-line-2",children:[g.jsx("div",{className:"font-display text-[10px] uppercase tracking-wide text-fg-faint",children:e}),g.jsx("div",{className:`tnum mt-1.5 text-xl sm:text-2xl ${r}`,children:o}),i&&i.length>1&&g.jsx("div",{className:"mt-auto overflow-hidden pt-2 text-right",children:g.jsx(Zo,{data:i,color:l??"currentColor",className:"text-sm opacity-70"})})]})}function ww({accounts:e,nameOf:o}){return e.length===0?g.jsx(Hi,{title:"accounts",children:g.jsx("div",{className:"py-6 text-center text-xs text-fg-faint",children:"no accounts match the current filter"})}):g.jsx("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-[repeat(auto-fit,minmax(min(340px,100%),1fr))]",children:e.map((r,i)=>g.jsx(Sw,{account:r,index:i,providerName:o(r.providerId)},r.id))})}function Sw({account:e,index:o,providerName:r}){var m,x,v,w,y,C;const i=e.dashboard,l=((m=e.billing)==null?void 0:m.metrics)??[],u=((x=e.billing)==null?void 0:x.modelSpend)??[],d=(v=e.billing)==null?void 0:v.activity,h=Ox(e.providerId),p=e.name&&e.name!==r;return g.jsxs("div",{className:"rise group relative overflow-hidden rounded-md border bg-bg-1/50 p-4 transition-colors",style:{animationDelay:`${o*40}ms`,borderColor:`color-mix(in oklab, ${h} 50%, var(--color-line))`},children:[g.jsxs("div",{className:"flex items-center justify-between gap-2",children:[g.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[g.jsx("span",{style:{color:h},children:"●"}),g.jsx("span",{className:"font-display text-sm tracking-wide text-fg-bright",children:r}),p&&g.jsxs("span",{className:"truncate text-xs text-fg-faint",children:["· ",e.name]})]}),((w=e.billing)==null?void 0:w.plan)&&g.jsx("span",{className:"shrink-0 rounded border border-line px-1.5 py-0.5 text-[10px] text-fg-dim",children:e.billing.plan})]}),i&&g.jsxs(g.Fragment,{children:[g.jsxs("div",{className:"mt-4 grid grid-cols-3 gap-2",children:[g.jsx(ou,{label:"today",cost:i.today.cost,tokens:i.today.tokens}),g.jsx(ou,{label:"week",cost:i.week.cost,tokens:i.week.tokens}),g.jsx(ou,{label:"month",cost:i.month.cost,tokens:i.month.tokens})]}),g.jsxs("div",{className:"mt-3 flex items-center justify-between border-t border-line-faint pt-3 text-xs",children:[g.jsxs("span",{className:"text-fg-dim",children:["burn ",g.jsxs("span",{className:"tnum text-warning",children:[Pe(i.burnRate),"/hr"]})]}),g.jsxs("span",{className:"text-fg-dim",children:["saved ",g.jsx("span",{className:"tnum text-positive",children:Pe(i.month.cacheSavings)})]})]})]}),l.length>0&&g.jsx("div",{className:`flex flex-col gap-2 ${i?"mt-3 border-t border-line-faint pt-3":"mt-4"}`,children:l.slice(0,8).map(R=>g.jsx(Rw,{metric:R},R.label))}),u.length>0&&g.jsxs("div",{className:"mt-3 flex flex-col gap-1 border-t border-line-faint pt-3",children:[g.jsx("div",{className:"text-[10px] uppercase tracking-wide text-fg-faint",children:"spend by model"}),u.slice(0,4).map(R=>g.jsxs("div",{className:"flex items-center justify-between gap-2 text-[11px]",children:[g.jsx("span",{className:"min-w-0 truncate text-fg-dim",children:on(R.name)}),g.jsxs("span",{className:"tnum shrink-0 text-cost",children:[Pe(R.usd),g.jsxs("span",{className:"ml-1.5 text-fg-faint",children:[bn(R.requests)," req"]})]})]},R.name))]}),i&&i.series.length>0&&g.jsxs("div",{className:"mt-3 flex items-center gap-2 border-t border-line-faint pt-3",children:[g.jsx(Zo,{data:i.series,color:h,className:"text-sm"}),g.jsxs("span",{className:"ml-auto text-[10px] text-fg-faint",children:[i.series.length,"d"]})]}),!i&&d&&d.series.length>0&&g.jsxs("div",{className:"mt-3 flex items-center gap-2 border-t border-line-faint pt-3",children:[g.jsx(Zo,{data:d.series,color:h,className:"text-sm"}),g.jsx("span",{className:"ml-auto text-[10px] text-fg-faint",children:d.summary})]}),l.length===0&&((y=e.billing)==null?void 0:y.error)&&g.jsxs("div",{className:`flex items-start gap-1.5 text-xs text-warning ${i?"mt-3 border-t border-line-faint pt-3":"mt-4"}`,children:[g.jsx("span",{"aria-hidden":!0,children:"⚠"}),g.jsx("span",{children:e.billing.error})]}),!i&&l.length===0&&!((C=e.billing)!=null&&C.error)&&u.length===0&&!(d&&d.series.length)&&g.jsx("div",{className:"py-6 text-center text-xs text-fg-faint",children:e.hasUsage?"no usage data":"billing-only · no live metrics"})]})}function ou({label:e,cost:o,tokens:r}){const i=o>0||r===0;return g.jsxs("div",{children:[g.jsx("div",{className:"text-[10px] uppercase text-fg-faint",children:e}),g.jsx("div",{className:`tnum text-sm ${i?"text-cost":"text-fg-bright"}`,children:i?Pe(o):yt(r)}),g.jsx("div",{className:"tnum text-[10px] text-fg-faint",children:i?yt(r):Pe(o)})]})}function Cw(e){return e.format.kind==="dollars"?Pe(e.used):e.format.kind==="count"?`${bn(e.used)}${e.format.suffix?" "+e.format.suffix:""}`:`${Math.round(e.used)}%`}function Rw({metric:e}){const o=e.format.kind==="percent"?Math.min(1,Math.max(0,e.used/100)):e.limit!=null&&e.limit>0?Math.min(1,Math.max(0,e.used/e.limit)):null,r=o==null?"var(--color-accent)":o>=.9?"var(--color-warning)":o>=.7?"var(--color-cost)":"var(--color-positive)";return g.jsxs("div",{children:[g.jsxs("div",{className:"flex items-center justify-between text-[11px]",children:[g.jsx("span",{className:"truncate text-fg-dim",children:e.label}),g.jsxs("span",{className:"tnum text-fg",children:[Cw(e),e.format.kind!=="percent"&&e.limit!=null&&g.jsxs("span",{className:"text-fg-faint",children:[" / ",e.format.kind==="dollars"?Pe(e.limit):bn(e.limit)]}),e.resetsAt&&g.jsxs("span",{className:"ml-1.5 text-fg-faint",children:["· ",e.resetsAt]})]})]}),o!=null&&g.jsx("div",{className:"mt-1 h-1.5 w-full overflow-hidden rounded-full bg-bg-3",role:"progressbar","aria-label":e.label,"aria-valuenow":Math.round(o*100),"aria-valuemin":0,"aria-valuemax":100,children:g.jsx("div",{className:"h-full rounded-full transition-all",style:{width:`${o*100}%`,background:r}})})]})}const kw=[0,.32,.55,.78,1],Vh=e=>e===0?"var(--color-bg-2)":`color-mix(in oklab, var(--color-cost) ${kw[e]*100}%, var(--color-bg-2))`,tg=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];function _w({derived:e,maxWeeks:o=26,periodLabel:r}){const[i,l]=b.useState(null),u=b.useMemo(()=>new Map(e.calendar.map(w=>[w.date,w])),[e.calendar]),d=b.useMemo(()=>e.calendar.some(w=>w.cost>0),[e.calendar]),h=w=>d?w.cost:w.tokens,p=b.useMemo(()=>{const w=e.calendar,y=w.filter(M=>h(M)>0);if(y.length===0)return null;const C=w.reduce((M,z)=>M+h(z),0),R=y.reduce((M,z)=>h(z)>h(M)?z:M),k=new Array(7).fill(0);for(const M of w)k[Ho(tn(M.date))]+=h(M);const P=k.indexOf(Math.max(...k)),L=new Set(y.map(M=>M.date));let A=0;for(let M=tn(y[y.length-1].date);L.has(Jo(M));M-=jn)A++;return{active:y.length,total:C,top:R,avg:C/y.length,busiest:P,streak:A,costed:d}},[e,d]),m=b.useMemo(()=>{const w=new Map(e.calendar.map($=>[$.date,h($)]));if(e.calendar.length===0)return null;const y=e.calendar[e.calendar.length-1].date,C=e.calendar[0].date;let R=tn(y),k=tn(C);(R-k)/(jn*7)>o&&(k=R-o*7*jn),k-=Ho(k)*jn;const P=Math.max(...e.calendar.map(h),0),L=$=>{if($<=0||P<=0)return 0;const O=$/P;return O>.66?4:O>.4?3:O>.15?2:1},A=[];let M=new Array(7).fill(null);const z=[];let U=-1,I=0;for(let $=k;$<=R;$+=jn){const O=Jo($),B=Ho($);B===0&&M.some(Boolean)&&(A.push(M),M=new Array(7).fill(null),I++);const V=new Date($).getUTCMonth();V!==U&&B===0&&(z.push({col:I,text:ju[V]}),U=V);const J=$>=tn(C);M[B]=J?{date:O,cost:w.get(O)??0,level:L(w.get(O)??0)}:null}return M.some(Boolean)&&A.push(M),{weeks:A,monthLabels:z}},[e,o]),x=m?`repeat(${m.weeks.length}, minmax(0,1fr))`:void 0,v=m?m.weeks.length*25:void 0;return g.jsx(g.Fragment,{children:g.jsx(Hi,{title:"daily spend",titleTag:r,captureName:"calendar",children:!m||!p?g.jsx("div",{className:"py-6 text-center text-xs text-fg-faint",children:"no usage yet"}):g.jsxs("div",{className:"grid gap-x-8 gap-y-5 pt-1 md:grid-cols-[minmax(0,1fr)_210px] md:items-start",children:[g.jsxs("div",{className:"flex min-w-0 flex-col gap-1.5",children:[g.jsx("div",{className:"pl-6",children:g.jsx("div",{className:"grid gap-[3px] text-[9px] text-fg-faint",style:{gridTemplateColumns:x,maxWidth:v},children:m.weeks.map((w,y)=>{const C=m.monthLabels.find(R=>R.col===y);return g.jsx("div",{className:"truncate",children:(C==null?void 0:C.text)??""},y)})})}),g.jsxs("div",{className:"flex gap-[3px]",children:[g.jsx("div",{className:"flex w-5 shrink-0 flex-col gap-[3px] text-[9px] text-fg-faint",children:["M","","W","","F","",""].map((w,y)=>g.jsx("div",{className:"flex flex-1 items-center",children:w},y))}),g.jsx("div",{className:"grid min-w-0 flex-1 gap-[3px]",style:{gridTemplateColumns:x,maxWidth:v},onMouseLeave:()=>l(null),children:m.weeks.map((w,y)=>g.jsx("div",{className:"flex flex-col gap-[3px]",children:w.map((C,R)=>C===null?g.jsx("div",{className:"aspect-square"},R):g.jsx("div",{className:"aspect-square cursor-default rounded-[3px] transition duration-150 hover:scale-[1.18] hover:ring-1 hover:ring-accent",style:{background:Vh(C.level)},onMouseEnter:()=>l(u.get(C.date)??null)},R))},y))})]}),g.jsxs("div",{className:"flex items-center gap-1.5 pl-6 pt-1 text-[9px] text-fg-faint",children:["less",[0,1,2,3,4].map(w=>g.jsx("span",{className:"size-[11px] rounded-[2px]",style:{background:Vh(w)}},w)),"more"]})]}),g.jsxs("div",{className:"relative border-line-faint md:border-l md:pl-6",children:[g.jsxs("div",{className:`grid grid-cols-2 gap-x-6 gap-y-4 transition-opacity duration-200 md:grid-cols-1 ${i?"opacity-0":"opacity-100"}`,children:[g.jsx(yi,{label:"busiest day",value:p.costed?Pe(p.top.cost):yt(p.top.tokens),sub:Ui(p.top.date),valueClass:"text-cost"}),g.jsx(yi,{label:"daily average",value:p.costed?Pe(p.avg):yt(p.avg),sub:`across ${p.active} active days`}),g.jsx(yi,{label:"top weekday",value:tg[p.busiest],valueClass:"text-fg-bright"}),g.jsx(yi,{label:"current streak",value:`${p.streak}d`,sub:p.streak>0?"in a row":"idle today",valueClass:"text-positive"})]}),i&&g.jsx("div",{className:"dialog-fade absolute inset-0 md:pl-6",children:g.jsx(Pw,{day:i})})]})]})})})}function Pw({day:e}){return g.jsxs("div",{className:"font-mono text-[11px]",children:[g.jsxs("div",{className:"flex items-baseline justify-between gap-3 border-b border-line-faint pb-2",children:[g.jsxs("span",{className:"text-fg-dim",children:[tg[Ho(tn(e.date))]," · ",Ui(e.date)]}),g.jsx("span",{className:"tnum text-cost",children:e.cost>0?Pe(e.cost):"—"})]}),e.cost>0?g.jsxs(g.Fragment,{children:[g.jsxs("div",{className:"grid grid-cols-3 gap-2 py-2 text-[10px]",children:[g.jsxs("div",{children:[g.jsx("div",{className:"text-fg-faint",children:"calls"}),g.jsx("div",{className:"tnum text-fg",children:bn(e.calls)})]}),g.jsxs("div",{children:[g.jsx("div",{className:"text-fg-faint",children:"tokens"}),g.jsx("div",{className:"tnum text-fg",children:yt(e.tokens)})]}),g.jsxs("div",{children:[g.jsx("div",{className:"text-fg-faint",children:"saved"}),g.jsx("div",{className:"tnum text-positive",children:Pe(e.cacheSavings)})]})]}),g.jsxs("div",{className:"flex flex-col gap-1 border-t border-line-faint pt-2",children:[e.models.slice(0,5).map(o=>g.jsxs("div",{className:"flex items-center gap-2",children:[g.jsx("span",{className:"size-1.5 shrink-0 rounded-full",style:{background:Gu(o.name)}}),g.jsx("span",{className:"min-w-0 flex-1 truncate text-fg-dim",children:on(o.name)}),g.jsx("span",{className:"tnum w-16 shrink-0 text-right text-fg",children:Pe(o.cost)})]},o.name)),e.models.length>5&&g.jsxs("div",{className:"pt-0.5 text-fg-faint",children:["+",e.models.length-5," more"]})]})]}):g.jsx("div",{className:"pt-2 text-fg-faint",children:"no spend this day"})]})}const Ew=[{value:"cost",label:"cost"},{value:"tokens",label:"tokens"},{value:"calls",label:"calls"}],Bh="1.75rem minmax(6rem,12rem) minmax(3.5rem,1fr) 3rem 5.5rem 5rem auto auto auto";function jw({derived:e,limit:o,periodLabel:r}){const[i,l]=b.useState(e.totals.cost>0?"cost":"tokens"),u=[...e.byModel].sort((x,v)=>v[i]-x[i]),d=o?u.slice(0,o):u,h=i==="tokens"?"tokenShare":i==="calls"?"callShare":"share",p=i==="tokens"?"block":"hidden md:block",m=i==="calls"?"block":"hidden lg:block";return g.jsx(Hi,{title:"model leaderboard",titleTag:r,captureName:"models",right:g.jsx(Mn,{options:Ew,value:i,onChange:l,size:"xs",ariaLabel:"sort models by",containerClassName:"flex items-center gap-0.5",btnClassName:"rounded px-1.5 py-0.5 text-[11px] transition"}),children:d.length===0?g.jsx(pw,{children:"no models in period"}):g.jsxs("div",{className:"mt-6 flex flex-col overflow-x-auto",children:[g.jsxs("div",{className:"grid items-center gap-x-3 border-b border-line px-2 pb-1.5 font-display text-[10px] uppercase tracking-wide text-fg-faint",style:{gridTemplateColumns:Bh},children:[g.jsx("span",{}),g.jsx("span",{}),g.jsx("span",{children:"share"}),g.jsx("span",{className:"text-right",children:"%"}),g.jsx("span",{className:"text-right text-cost/70",children:"cost"}),g.jsx("span",{className:"text-right",children:"trend"}),g.jsx("span",{className:"hidden text-right lg:block",children:"$/call"}),g.jsx("span",{className:`text-right ${p}`,children:"tokens"}),g.jsx("span",{className:`text-right ${m}`,children:"calls"})]}),d.map((x,v)=>g.jsxs("div",{className:"grid items-center gap-x-3 rounded border-b border-line-faint px-2 py-2 transition-colors last:border-0 hover:bg-bg-2/40",style:{gridTemplateColumns:Bh},children:[g.jsxs("span",{className:`tnum text-xs ${v===0?"font-medium text-accent":v<3?"text-fg-dim":"text-fg-faint"}`,children:["#",v+1]}),g.jsxs("span",{className:"flex min-w-0 items-center gap-2",children:[g.jsx("span",{className:"size-2 shrink-0 rounded-[2px]",style:{background:x.color}}),g.jsx("span",{className:"truncate text-fg",title:x.model,children:on(x.model)})]}),g.jsx("div",{className:"h-1.5 overflow-hidden rounded-full bg-bg-3",children:g.jsx("div",{className:"h-full rounded-full",style:{width:`${Math.min(100,x[h]*100)}%`,minWidth:x[h]>0?"2px":0,background:x.color}})}),g.jsx("span",{className:"tnum text-right text-[11px] text-fg-dim",children:Yp(x[h],x[h]>0&&x[h]<.01?1:0)}),g.jsx("span",{className:"tnum text-right text-xs text-cost",children:Pe(x.cost)}),g.jsx("span",{className:"overflow-hidden text-right",children:g.jsx(Zo,{data:x.trend.slice(-30),color:x.color,className:"text-sm"})}),g.jsx("span",{className:"tnum hidden text-right text-xs text-fg-dim lg:block",children:Pe(x.calls?x.cost/x.calls:0)}),g.jsx("span",{className:`tnum text-right text-xs text-fg-dim ${p}`,children:x.tokens>0?yt(x.tokens):g.jsx("span",{className:"text-fg-faint",children:"—"})}),g.jsx("span",{className:`tnum text-right text-xs text-fg-faint ${m}`,children:bn(x.calls)})]},x.model))]})})}/**
60
60
  * table-core
61
61
  *
62
62
  * Copyright (c) TanStack
@@ -77,4 +77,4 @@ Error generating stack: `+f.message+`
77
77
  * LICENSE.md file in the root directory of this source tree.
78
78
  *
79
79
  * @license MIT
80
- */function fu(e,o){return e?RS(e)?b.createElement(e,o):e:null}function RS(e){return kS(e)||typeof e=="function"||_S(e)}function kS(e){return typeof e=="function"&&(()=>{const o=Object.getPrototypeOf(e);return o.prototype&&o.prototype.isReactComponent})()}function _S(e){return typeof e=="object"&&typeof e.$$typeof=="symbol"&&["react.memo","react.forward_ref"].includes(e.$$typeof.description)}function PS(e){const o={state:{},onStateChange:()=>{},renderFallbackValue:null,...e},[r]=b.useState(()=>({current:pS(o)})),[i,l]=b.useState(()=>r.current.initialState);return r.current.setOptions(u=>({...u,...e,state:{...i,...e.state},onStateChange:d=>{l(d),e.onStateChange==null||e.onStateChange(d)}})),r.current}const Or=Mw(),dg=g.jsx("span",{className:"text-fg-faint",children:"—"}),ES=e=>`${Ui(e.label)} ${e.label} ${e.models.map(on).join(" ")} ${e.models.join(" ")}`.toLowerCase();function jS(e){return b.useMemo(()=>[Or.accessor("label",{header:e,cell:o=>g.jsxs("button",{type:"button","aria-expanded":o.row.getIsExpanded(),onClick:r=>{r.stopPropagation(),o.row.toggleExpanded()},className:"flex items-center gap-1 rounded text-left focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent",children:[g.jsx("span",{"aria-hidden":!0,className:o.row.getIsExpanded()?"text-accent":"text-fg-faint",children:o.row.getIsExpanded()?"▾":"▸"}),g.jsx("span",{className:"text-fg",children:Ui(o.getValue())})]})}),Or.display({id:"models",header:"models",cell:o=>g.jsx("span",{className:"line-clamp-1 text-fg-dim",children:o.row.original.models.map(on).join(", ")})}),Or.accessor("total",{header:"tokens",meta:{align:"right"},cell:o=>o.getValue()>0?g.jsx("span",{className:"text-fg",children:yt(o.getValue())}):dg}),Or.accessor("cacheSavings",{header:"saved",meta:{align:"right",hiddenSm:!0},cell:o=>g.jsx("span",{className:"text-positive",children:Pe(o.getValue())})}),Or.accessor("count",{header:"calls",meta:{align:"right",hiddenSm:!0},cell:o=>g.jsx("span",{className:"text-fg-dim",children:Xp(o.getValue())})}),Or.accessor("cost",{header:"cost",meta:{align:"right"},cell:o=>g.jsx("span",{className:"text-cost",children:Pe(o.getValue())})})],[e])}const MS=e=>`py-2 pr-3${(e==null?void 0:e.align)==="right"?" text-right":""}${e!=null&&e.hiddenSm?" hidden sm:table-cell":""}`;function LS({rows:e,granLabel:o,q:r}){const[i,l]=b.useState([{id:"label",desc:!0}]),[u,d]=b.useState({}),p=jS(o==="monthly"?"month":o==="weekly"?"week":"date"),m=PS({data:e,columns:p,state:{sorting:i,expanded:u,globalFilter:r},onSortingChange:l,onExpandedChange:d,getRowCanExpand:()=>!0,globalFilterFn:(w,y,C)=>!String(C).trim()||ES(w.original).includes(String(C).trim().toLowerCase()),getCoreRowModel:gS(),getSortedRowModel:CS(),getFilteredRowModel:SS(),getExpandedRowModel:mS()}),x=m.getRowModel().rows,v=b.useMemo(()=>x.reduce((w,y)=>({total:w.total+y.original.total,cost:w.cost+y.original.cost,cacheSavings:w.cacheSavings+y.original.cacheSavings,count:w.count+y.original.count}),{total:0,cost:0,cacheSavings:0,count:0}),[x]);return g.jsx(Hi,{title:`explore · ${o}`,captureName:"explore",children:g.jsx("div",{className:"max-h-[calc(100vh-240px)] overflow-auto",children:g.jsxs("table",{className:"w-full border-collapse text-xs",children:[g.jsxs("colgroup",{children:[g.jsx("col",{}),g.jsx("col",{style:{width:"34%"}}),g.jsx("col",{style:{width:"13%"}}),g.jsx("col",{style:{width:"12%"}}),g.jsx("col",{style:{width:"11%"}}),g.jsx("col",{style:{width:"13%"}})]}),g.jsx("thead",{children:g.jsx("tr",{className:"sticky top-0 z-10 bg-bg-1 text-[11px] shadow-[inset_0_-1px_0_var(--color-line)]",children:m.getHeaderGroups()[0].headers.map(w=>{const y=w.column.columnDef.meta,C=w.column.getIsSorted();return g.jsx("th",{className:`py-2 pr-3 font-normal ${(y==null?void 0:y.align)==="right"?"text-right":"text-left"}${y!=null&&y.hiddenSm?" hidden sm:table-cell":""}`,children:w.column.getCanSort()?g.jsxs("button",{type:"button",onClick:w.column.getToggleSortingHandler(),className:`flex w-full items-center gap-1 text-fg-faint transition hover:text-fg ${(y==null?void 0:y.align)==="right"?"justify-end":""}`,children:[fu(w.column.columnDef.header,w.getContext()),C&&g.jsx("span",{className:"text-accent",children:C==="asc"?"▲":"▼"})]}):g.jsx("span",{className:"text-fg-faint",children:fu(w.column.columnDef.header,w.getContext())})},w.id)})})}),g.jsxs("tbody",{children:[x.length===0&&g.jsx("tr",{children:g.jsx("td",{colSpan:6,className:"py-8 text-center text-fg-faint",children:r.trim()?`no rows match “${r.trim()}”`:"no usage in this range"})}),x.map(w=>g.jsxs(b.Fragment,{children:[g.jsx("tr",{className:"cursor-pointer border-b border-line-faint transition hover:bg-bg-2/60",onClick:()=>w.toggleExpanded(),children:w.getVisibleCells().map(y=>g.jsx("td",{className:`${MS(y.column.columnDef.meta)}${y.column.id==="label"?" whitespace-nowrap":""} tnum`,children:fu(y.column.columnDef.cell,y.getContext())},y.id))}),w.getIsExpanded()&&w.original.breakdown.map(y=>{const C=y.input+y.output+y.cacheCreate+y.cacheRead;return g.jsxs("tr",{className:"border-b border-line-faint bg-bg-0/40 text-[11px]",children:[g.jsxs("td",{className:"py-1.5 pr-3 pl-5 text-fg-dim",colSpan:2,children:[g.jsx("span",{className:"mr-1.5 inline-block size-1.5 rounded-full align-middle",style:{background:Gu(y.name)}}),on(y.name)]}),g.jsx("td",{className:"tnum py-1.5 pr-3 text-right text-fg-dim",children:C>0?yt(C):dg}),g.jsx("td",{className:"tnum hidden py-1.5 pr-3 text-right text-positive/80 sm:table-cell",children:Pe(y.cacheSavings)}),g.jsx("td",{className:"tnum hidden py-1.5 pr-3 text-right text-fg-faint sm:table-cell",children:bn(y.count)}),g.jsx("td",{className:"tnum py-1.5 text-right text-cost/90",children:Pe(y.cost)})]},y.name)})]},w.id))]}),x.length>0&&g.jsx("tfoot",{children:g.jsxs("tr",{className:"sticky bottom-0 z-10 bg-bg-1 text-fg shadow-[inset_0_1px_0_var(--color-line)]",children:[g.jsxs("td",{className:"py-2 pr-3 font-display text-[11px] uppercase text-fg-dim",colSpan:2,children:["total · ",x.length]}),g.jsx("td",{className:"tnum py-2 pr-3 text-right",children:yt(v.total)}),g.jsx("td",{className:"tnum hidden py-2 pr-3 text-right text-positive sm:table-cell",children:Pe(v.cacheSavings)}),g.jsx("td",{className:"tnum hidden py-2 pr-3 text-right sm:table-cell",children:Xp(v.count)}),g.jsx("td",{className:"tnum py-2 text-right text-cost",children:Pe(v.cost)})]})})]})})})}const Gi=()=>eg(()=>import("./timeline-3xfYyagR.js"),__vite__mapDeps([0,1]),import.meta.url),ns=()=>eg(()=>import("./breakdown-D0J7VFIG.js"),__vite__mapDeps([2,1]),import.meta.url);Gi();ns();const NS=b.lazy(()=>Gi().then(e=>({default:e.CostTimeline}))),IS=b.lazy(()=>Gi().then(e=>({default:e.CumulativeSpend}))),FS=b.lazy(()=>Gi().then(e=>({default:e.CacheSavings}))),fg=b.lazy(()=>ns().then(e=>({default:e.CostByModel}))),hg=b.lazy(()=>ns().then(e=>({default:e.ProviderDonut}))),qh=b.lazy(()=>ns().then(e=>({default:e.TokenComposition}))),TS=b.lazy(()=>ns().then(e=>({default:e.CacheByModel}))),$S=({className:e})=>g.jsx("div",{className:e,"aria-hidden":!0}),Ln=({children:e})=>g.jsx(b.Suspense,{fallback:null,children:e}),Gh=[{key:"overview",label:"overview"},{key:"analytics",label:"analytics"},{key:"models",label:"models"},{key:"explore",label:"explore"}],DS=[{value:"daily",label:"daily"},{value:"weekly",label:"weekly"},{value:"monthly",label:"monthly"}];function bS({derived:e,periodLabel:o,scopeLabel:r,providers:i}){const l=u=>{var d;return((d=i.find(h=>h.id===u))==null?void 0:d.name)??u};return g.jsxs("div",{className:"flex flex-col gap-4",children:[g.jsx(xw,{derived:e,periodLabel:o}),g.jsx(b.Suspense,{fallback:g.jsx($S,{className:"h-[clamp(320px,42vh,560px)]"}),children:g.jsx(NS,{derived:e,periodLabel:r,heightClass:"h-[clamp(320px,42vh,560px)]"})}),g.jsx(ww,{accounts:e.cardAccounts,nameOf:l})]})}function zS({derived:e,scopeLabel:o}){const r=e.byProvider.length>1;return g.jsxs("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2",children:[g.jsx("div",{className:"md:col-span-2",children:g.jsx(_w,{derived:e,periodLabel:o})}),g.jsx(Ln,{children:g.jsx(fg,{derived:e,periodLabel:o})}),g.jsx(Ln,{children:r?g.jsx(hg,{derived:e,periodLabel:o}):g.jsx(qh,{derived:e,periodLabel:o})}),r&&g.jsx(Ln,{children:g.jsx(qh,{derived:e,periodLabel:o})}),g.jsx("div",{className:r?void 0:"md:col-span-2",children:g.jsx(Ln,{children:g.jsx(FS,{derived:e,periodLabel:o})})}),g.jsx("div",{className:"md:col-span-2",children:g.jsx(Ln,{children:g.jsx(IS,{derived:e,height:300,periodLabel:o})})})]})}function AS({derived:e,scopeLabel:o}){const r=e.byProvider.length>1;return g.jsxs("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2",children:[g.jsx("div",{className:"md:col-span-2",children:g.jsx(jw,{derived:e,periodLabel:o})}),g.jsx("div",{className:r?void 0:"md:col-span-2",children:g.jsx(Ln,{children:g.jsx(fg,{derived:e,metric:"tokens",limit:12,periodLabel:o})})}),r&&g.jsx(Ln,{children:g.jsx(hg,{derived:e,periodLabel:o})}),g.jsx("div",{className:"md:col-span-2",children:g.jsx(Ln,{children:g.jsx(TS,{derived:e,periodLabel:o})})})]})}function OS({snapshot:e,filters:o,periodLabel:r}){const[i,l]=b.useState(""),[u,d]=b.useState("daily"),h=b.useMemo(()=>Jx(e,o,u),[e,o,u]),p=u!=="daily"?`showing up to ${u==="monthly"?"12 months":"12 weeks"}`:o.period!=="all"?`scoped to ${r}`:null;return g.jsxs("div",{className:"flex flex-col gap-3",children:[g.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[g.jsxs("div",{className:"flex items-center gap-2",children:[g.jsx("span",{className:"text-xs text-fg-faint",children:"granularity:"}),g.jsx(Mn,{options:DS,value:u,onChange:d,size:"sm",ariaLabel:"row granularity",btnClassName:"px-3 py-1 text-xs capitalize transition"})]}),p&&g.jsx("span",{className:"text-xs text-fg-faint",children:p}),g.jsxs("div",{className:"ml-auto flex items-center gap-1.5 rounded border border-line bg-bg-1 px-2 py-1 text-xs focus-within:border-line-2",children:[g.jsx(o0,{className:"size-3 text-fg-faint"}),g.jsx("input",{type:"search",value:i,onChange:m=>l(m.target.value),onKeyDown:m=>{m.key==="Escape"&&l("")},placeholder:"filter rows…","aria-label":"Filter rows by date or model",autoComplete:"off",spellCheck:!1,className:"w-32 bg-transparent text-fg outline-none placeholder:text-fg-faint [&::-webkit-search-cancel-button]:appearance-none"}),i&&g.jsx("button",{type:"button",onClick:()=>l(""),"aria-label":"Clear filter",children:g.jsx($i,{className:"size-3 text-fg-faint hover:text-fg","aria-hidden":!0})})]})]}),g.jsx(LS,{rows:h,granLabel:u,q:i})]})}function ec(e,o,r){try{return e(o)}catch(i){return Rv("[nuqs] Error while parsing value `%s`: %O"+(r?" (for key `%s`)":""),o,i,r),null}}function Dt(e){function o(r){if(typeof r>"u")return null;let i="";if(Array.isArray(r)){if(r[0]===void 0)return null;i=r[0]}return typeof r=="string"&&(i=r),ec(e.parse,i)}return{type:"single",eq:(r,i)=>r===i,...e,parseServerSide:o,withDefault(r){return{...this,defaultValue:r,parseServerSide(i){return o(i)??r}}},withOptions(r){return{...this,...r}}}}const hu=Dt({parse:e=>e,serialize:String});Dt({parse:e=>{const o=parseInt(e);return o==o?o:null},serialize:e=>""+Math.round(e)});Dt({parse:e=>{const o=parseInt(e);return o==o?o-1:null},serialize:e=>""+Math.round(e+1)});Dt({parse:e=>{const o=parseInt(e,16);return o==o?o:null},serialize:e=>{const o=Math.round(e).toString(16);return(o.length&1?"0":"")+o}});Dt({parse:e=>{const o=parseFloat(e);return o==o?o:null},serialize:String});Dt({parse:e=>e.toLowerCase()==="true",serialize:String});function tc(e,o){return e.valueOf()===o.valueOf()}Dt({parse:e=>{const o=parseInt(e);return o==o?new Date(o):null},serialize:e=>""+e.valueOf(),eq:tc});Dt({parse:e=>{const o=new Date(e);return o.valueOf()==o.valueOf()?o:null},serialize:e=>e.toISOString(),eq:tc});Dt({parse:e=>{const o=new Date(e.slice(0,10));return o.valueOf()==o.valueOf()?o:null},serialize:e=>e.toISOString().slice(0,10),eq:tc});function VS(e){return BS(e)}function BS(e){return Dt({parse:o=>{const r=o;return e.includes(r)?r:null},serialize:String})}function Wh(e,o=","){const r=e.eq??((l,u)=>l===u),i=encodeURIComponent(o);return Dt({parse:l=>l===""?[]:l.split(o).map((u,d)=>ec(e.parse,u.replaceAll(i,o),`[${d}]`)).filter(u=>u!=null),serialize:l=>l.map(u=>(e.serialize?e.serialize(u):String(u)).replaceAll(o,i)).join(o),eq(l,u){return l===u?!0:l.length!==u.length?!1:l.every((d,h)=>r(d,u[h]))}})}const pu=Au(),US={};function HS(e,o={}){const r=b.useId(),i=Nv(),l=Iv(),{history:u="replace",scroll:d=(i==null?void 0:i.scroll)??!1,shallow:h=(i==null?void 0:i.shallow)??!0,throttleMs:p=Uo.timeMs,limitUrlUpdates:m=i==null?void 0:i.limitUrlUpdates,clearOnDefault:x=(i==null?void 0:i.clearOnDefault)??!0,startTransition:v,urlKeys:w=US}=o,y=Object.keys(e).join(","),C=b.useMemo(()=>Object.fromEntries(Object.keys(e).map($=>[$,w[$]??$])),[y,JSON.stringify(w)]),R=Lv(Object.values(C)),k=R.searchParams,P=b.useRef({}),L=b.useMemo(()=>Object.fromEntries(Object.keys(e).map($=>[$,e[$].defaultValue??null])),[Object.values(e).map(({defaultValue:$})=>$).join(",")]),A=Va.useQueuedQueries(Object.values(C)),[M,z]=b.useState(()=>gu(e,w,k??new URLSearchParams,A).state),U=b.useRef(M);if(Ie("[nuq+ %s `%s`] render - state: %O, iSP: %s",r,y,M,k),Object.keys(P.current).join("&")!==Object.values(C).join("&")){const{state:$,hasChanged:O}=gu(e,w,k,A,P.current,U.current);O&&(Ie("[nuq+ %s `%s`] State changed: %O",r,y,{state:$,initialSearchParams:k,queuedQueries:A,queryRef:P.current,stateRef:U.current}),U.current=$,z($)),P.current=Object.fromEntries(Object.entries(C).map(([B,V])=>{var J;return[V,((J=e[B])==null?void 0:J.type)==="multi"?k==null?void 0:k.getAll(V):(k==null?void 0:k.get(V))??null]}))}b.useEffect(()=>{const{state:$,hasChanged:O}=gu(e,w,k,A,P.current,U.current);O&&(Ie("[nuq+ %s `%s`] State changed: %O",r,y,{state:$,initialSearchParams:k,queuedQueries:A,queryRef:P.current,stateRef:U.current}),U.current=$,z($))},[Object.values(C).map($=>`${$}=${k==null?void 0:k.getAll($)}`).join("&"),JSON.stringify(A)]),b.useEffect(()=>{const $=Object.keys(e).reduce((O,B)=>(O[B]=({state:V,query:J})=>{z(X=>{const{defaultValue:Q}=e[B],ge=C[B],pe=V??Q??null,Z=X[B]??Q??null;return Object.is(Z,pe)?(Ie("[nuq+ %s `%s`] Cross-hook key sync %s: %O (default: %O). no change, skipping, resolved: %O",r,y,ge,V,Q,U.current),X):(U.current={...U.current,[B]:pe},P.current[ge]=J,Ie("[nuq+ %s `%s`] Cross-hook key sync %s: %O (default: %O). updateInternalState, resolved: %O",r,y,ge,V,Q,U.current),U.current)})},O),{});for(const O of Object.keys(e)){const B=C[O];Ie("[nuq+ %s `%s`] Subscribing to sync for `%s`",r,B,y),pu.on(B,$[O])}return()=>{for(const O of Object.keys(e)){const B=C[O];Ie("[nuq+ %s `%s`] Unsubscribing to sync for `%s`",r,B,y),pu.off(B,$[O])}}},[y,C]);const I=b.useCallback(($,O={})=>{var Z,Y,le,ee,N,H;const B=Object.fromEntries(Object.keys(e).map(ue=>[ue,null])),V=typeof $=="function"?$(Qh(U.current,L))??B:$??B;Ie("[nuq+ %s `%s`] setState: %O",r,y,V);let J,X=0,Q=!1;const ge=[];for(let[ue,ae]of Object.entries(V)){const re=e[ue],ye=C[ue];if(!re||ae===void 0)continue;(O.clearOnDefault??re.clearOnDefault??x)&&ae!==null&&re.defaultValue!==void 0&&(re.eq??((xe,De)=>xe===De))(ae,re.defaultValue)&&(ae=null);const Ce=ae===null?null:(re.serialize??String)(ae);pu.emit(ye,{state:ae,query:Ce});const ve={key:ye,query:Ce,options:{history:O.history??re.history??u,shallow:O.shallow??re.shallow??h,scroll:O.scroll??re.scroll??d,startTransition:O.startTransition??re.startTransition??v}};if(((Z=O==null?void 0:O.limitUrlUpdates)==null?void 0:Z.method)==="debounce"||(m==null?void 0:m.method)==="debounce"||((Y=re.limitUrlUpdates)==null?void 0:Y.method)==="debounce"){ve.options.shallow===!0&&console.warn(ts(422));const xe=((le=O==null?void 0:O.limitUrlUpdates)==null?void 0:le.timeMs)??(m==null?void 0:m.timeMs)??((ee=re.limitUrlUpdates)==null?void 0:ee.timeMs)??Uo.timeMs,De=Va.push(ve,xe,R,l);X<xe&&(J=De,X=xe)}else{const xe=((N=O==null?void 0:O.limitUrlUpdates)==null?void 0:N.timeMs)??((H=re==null?void 0:re.limitUrlUpdates)==null?void 0:H.timeMs)??(m==null?void 0:m.timeMs)??O.throttleMs??re.throttleMs??p;ge.push(Va.abort(ye)),ki.push(ve,xe),Q=!0}}const pe=ge.reduce((ue,ae)=>ae(ue),Q?ki.flush(R,l):ki.getPendingPromise(R));return J??pe},[y,u,h,d,p,m==null?void 0:m.method,m==null?void 0:m.timeMs,v,C,R.updateUrl,R.getSearchParamsSnapshot,R.rateLimitFactor,l,L]);return[b.useMemo(()=>Qh(M,L),[M,L]),I]}function gu(e,o,r,i,l,u){let d=!1;const h=Object.entries(e).reduce((p,[m,x])=>{const v=(o==null?void 0:o[m])??m,w=i[v],y=x.type==="multi"?[]:null,C=w===void 0?(x.type==="multi"?r==null?void 0:r.getAll(v):r==null?void 0:r.get(v))??y:w;return l&&u&&Jh(l[v]??y,C)?(p[m]=u[m]??null,p):(d=!0,p[m]=($v(C)?null:ec(x.parse,C,v))??null,l&&(l[v]=C),p)},{});if(!d){const p=Object.keys(e),m=Object.keys(u??{});d=p.length!==m.length||p.some(x=>!m.includes(x))}return{state:h,hasChanged:d}}function Qh(e,o){return Object.fromEntries(Object.keys(e).map(r=>[r,e[r]??o[r]??null]))}const qS=["7d","30d","90d","mtd","all"];function GS(){const[e,o]=HS({p:Wh(hu).withDefault([]),m:Wh(hu).withDefault([]),a:hu.withDefault("all"),period:VS(qS).withDefault(Bx.period)},{history:"replace"}),r=b.useMemo(()=>({providers:e.p,models:e.m,account:e.a,period:e.period}),[e.p,e.m,e.a,e.period]),i=b.useCallback(l=>{o(u=>{const d={providers:u.p,models:u.m,account:u.a,period:u.period},h=typeof l=="function"?l(d):l;return{p:h.providers,m:h.models,a:h.account,period:h.period}})},[o]);return[r,i]}function WS(){const[e,o]=b.useState(null),[r,i]=b.useState("connecting"),l=b.useRef(null);return b.useEffect(()=>{let u=!1,d;fetch("/api/data").then(p=>p.json()).then(p=>{u||!p||"pending"in p||o(p)}).catch(()=>{});const h=()=>{const p=new EventSource("/api/stream");l.current=p,p.onopen=()=>{u||i("live")},p.addEventListener("snapshot",m=>{if(!u)try{o(JSON.parse(m.data)),i("live")}catch{}}),p.onerror=()=>{u||(p.readyState===EventSource.CLOSED?(i("error"),p.close(),d=setTimeout(()=>{u||(i("reconnecting"),h())},3e3)):i("reconnecting"))}};return h(),()=>{var p;u=!0,clearTimeout(d),(p=l.current)==null||p.close(),l.current=null}},[]),{snapshot:e,conn:r}}const Du=e=>`/${e}`,pg=b.createContext(null),Wi=()=>{const e=b.useContext(pg);if(!e)throw new Error("useDashboard outside provider");return e};function QS(e=1e3){const[o,r]=b.useState(()=>Date.now());return b.useEffect(()=>{const i=setInterval(()=>r(Date.now()),e);return()=>clearInterval(i)},[e]),o}function KS(){const[e,o]=b.useState(()=>document.documentElement.classList.contains("light")?"light":"dark");return b.useEffect(()=>{document.documentElement.classList.toggle("light",e==="light")},[e]),[e,()=>{const i=e==="dark"?"light":"dark";try{localStorage.setItem("tokmon-theme",i)}catch{}o(i)}]}function XS({theme:e,onToggle:o}){return g.jsx("button",{type:"button",onClick:o,title:e==="dark"?"Switch to light":"Switch to dark","aria-label":"Toggle theme",className:"rounded border border-line bg-bg-1 p-1.5 text-fg-dim transition hover:border-line-2 hover:text-fg max-sm:p-2.5",children:e==="dark"?g.jsx(s0,{className:"size-3.5"}):g.jsx(i0,{className:"size-3.5"})})}function YS({conn:e,freshAt:o}){const r=QS(),i=e==="live"?"var(--color-positive)":e==="error"?"var(--color-warning)":"var(--color-cost)",l=o?iw(o,r):null,u=e==="live"?l??"live":e==="connecting"?"connecting…":e==="reconnecting"?l?`reconnecting · ${l}`:"reconnecting…":l?`offline · ${l}`:"offline";return g.jsxs("span",{className:"flex items-center gap-1.5 text-xs",role:"status","aria-label":e==="live"?"live":e,children:[g.jsxs("span",{className:"relative flex size-2",children:[e==="live"&&g.jsx("span",{className:"absolute inline-flex size-full animate-ping rounded-full opacity-60",style:{background:i}}),g.jsx("span",{className:"relative inline-flex size-2 rounded-full",style:{background:i}})]}),g.jsx("span",{className:"inline-block truncate text-fg-dim max-sm:max-w-[7rem]","aria-hidden":!0,children:u})]})}function mu({label:e}){return g.jsxs("div",{className:"flex min-h-[50vh] flex-col items-center justify-center gap-2 text-sm text-fg-dim",children:[g.jsxs("span",{className:"font-display text-lg text-fg-dim",children:["tokmon",g.jsx("span",{className:"cursor-blink text-accent",children:"▋"})]}),g.jsx("span",{className:"text-fg-faint",children:e})]})}function JS(){var z,U;const{snapshot:e,conn:o}=WS(),[r,i]=GS(),[l,u]=KS(),d=b.useMemo(()=>Xx(e,r),[e,r]),h=((z=Fp.find(I=>I.key===r.period))==null?void 0:z.label)??r.period,p=r.period==="all"?void 0:h,m=zx({select:I=>I.location.pathname}),x=((U=Gh.find(I=>Du(I.key)===m))==null?void 0:U.key)??"overview";b.useEffect(()=>{var X;if(!e)return;const I=new Set(e.providers.map(Q=>Q.id)),$=new Set(e.accounts.map(Q=>Q.id)),O=r.providers.filter(Q=>I.has(Q)),B=r.account==="all"||$.has(r.account)?r.account:"all",V=new Set;for(const Q of e.accounts)for(const ge of((X=Q.table)==null?void 0:X.monthly)??[])for(const pe of ge.breakdown)V.add(pe.name);const J=V.size>0?r.models.filter(Q=>V.has(Q)):r.models;(O.length!==r.providers.length||B!==r.account||J.length!==r.models.length)&&i(Q=>({...Q,providers:O,account:B,models:J}))},[e,r,i]);const v=(e==null?void 0:e.accounts.filter(I=>I.hasUsage))??[],w=v.length>0,y=((e==null?void 0:e.accounts)??[]).some(Mu),C=((e==null?void 0:e.accounts)??[]).some(I=>I.hasBilling&&!Mu(I)),R=w&&v.every(I=>I.table!=null),k=b.useRef(!1);b.useEffect(()=>{R&&(k.current=!0)},[R]);const[P,L]=b.useState(!1);b.useEffect(()=>{const I=setTimeout(()=>L(!0),12e3);return()=>clearTimeout(I)},[]);const A=!w||R||k.current||P,M=b.useMemo(()=>e?{snapshot:e,filters:r,derived:d,periodLabel:h,scopeLabel:p}:null,[e,r,d,h,p]);return g.jsxs("div",{className:"min-h-screen",children:[g.jsxs("header",{className:"relative z-30 border-b border-line bg-bg-0/80 backdrop-blur",children:[g.jsxs("div",{className:"mx-auto max-w-[1600px] px-5 2xl:max-w-[1920px]",children:[g.jsxs("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-2 py-3.5",children:[g.jsx("span",{className:"font-display text-2xl text-fg-bright",children:"TOKMON"}),g.jsxs("span",{className:"hidden text-sm text-fg-faint sm:inline",children:["~/usage ",g.jsx("span",{className:"text-prompt",children:"$"})," ",g.jsx("span",{className:"text-fg-dim",children:x}),g.jsx("span",{className:"cursor-blink text-accent",children:"▋"})]}),g.jsxs("div",{className:"ml-auto flex min-w-0 items-center gap-3",children:[g.jsx(YS,{conn:o,freshAt:(e==null?void 0:e.generatedAt)??null}),g.jsx(XS,{theme:l,onToggle:u}),A&&(w||y)&&g.jsx(mw,{derived:d,periodLabel:h,tz:(e==null?void 0:e.tz)??"",version:(e==null?void 0:e.version)??""})]})]}),g.jsx("nav",{className:"-mb-px flex items-center gap-1 overflow-x-auto",children:Gh.map(I=>g.jsx(qu,{to:Du(I.key),className:`relative shrink-0 border-b-2 px-3 py-2 font-display text-xs uppercase tracking-wider transition ${x===I.key?"border-accent text-fg-bright":"border-transparent text-fg-faint hover:text-fg-dim"}`,children:I.label},I.key))})]}),g.jsx(gw,{snapshot:e,derived:d,filters:r,setFilters:i})]}),g.jsx("main",{className:"mx-auto max-w-[1600px] px-5 2xl:max-w-[1920px] py-5",children:e?!w&&!y?C&&!P&&o!=="error"?g.jsx(mu,{label:"reading billing…"}):g.jsx("div",{className:"rounded-md border border-line bg-bg-1 p-8 text-center text-sm text-fg-dim",children:"No providers detected. Open tokmon, enable a provider, then refresh."}):!A||!M?g.jsx(mu,{label:o==="error"?"connection lost — retrying…":"reading usage history…"}):g.jsx(pg.Provider,{value:M,children:g.jsx(Ip,{})}):g.jsx(mu,{label:o==="error"?"connection lost — retrying…":"reading usage…"})}),g.jsxs("footer",{className:"mx-auto max-w-[1600px] px-5 2xl:max-w-[1920px] py-6 text-center text-[11px] text-fg-faint",children:["tokmon",e!=null&&e.version?` v${e.version}`:""," · by David Ilie · live LLM usage dashboard"]})]})}function Kh(){const{derived:e,periodLabel:o,scopeLabel:r,snapshot:i}=Wi();return g.jsx("div",{children:g.jsx(bS,{derived:e,periodLabel:o,scopeLabel:r,providers:i.providers})})}function ZS(){const{derived:e,scopeLabel:o}=Wi();return g.jsx("div",{children:g.jsx(zS,{derived:e,scopeLabel:o})})}function e1(){const{derived:e,scopeLabel:o}=Wi();return g.jsx("div",{children:g.jsx(AS,{derived:e,scopeLabel:o})})}function t1(){const{snapshot:e,filters:o,periodLabel:r}=Wi();return g.jsx("div",{children:g.jsx(OS,{snapshot:e,filters:o,periodLabel:r})})}const bu=Sx({component:JS}),Ri=(e,o)=>Mp({getParentRoute:()=>bu,path:Du(e),component:o}),n1=bu.addChildren([Mp({getParentRoute:()=>bu,path:"/",component:Kh}),Ri("overview",Kh),Ri("analytics",ZS),Ri("models",e1),Ri("explore",t1)]),r1=Tx({routeTree:n1,history:Ly(),defaultViewTransition:!0});function o1(){return g.jsx(bx,{router:r1})}Sv.createRoot(document.getElementById("root")).render(g.jsx(b.StrictMode,{children:g.jsx(qv,{children:g.jsx(fw,{children:g.jsx(o1,{})})})}));export{pw as E,Hi as P,Go as R,Mn as S,l1 as T,a1 as a,Pe as b,yt as c,Yp as d,i1 as e,Ui as f,hv as g,g as j,b as r,on as s};
80
+ */function fu(e,o){return e?RS(e)?b.createElement(e,o):e:null}function RS(e){return kS(e)||typeof e=="function"||_S(e)}function kS(e){return typeof e=="function"&&(()=>{const o=Object.getPrototypeOf(e);return o.prototype&&o.prototype.isReactComponent})()}function _S(e){return typeof e=="object"&&typeof e.$$typeof=="symbol"&&["react.memo","react.forward_ref"].includes(e.$$typeof.description)}function PS(e){const o={state:{},onStateChange:()=>{},renderFallbackValue:null,...e},[r]=b.useState(()=>({current:pS(o)})),[i,l]=b.useState(()=>r.current.initialState);return r.current.setOptions(u=>({...u,...e,state:{...i,...e.state},onStateChange:d=>{l(d),e.onStateChange==null||e.onStateChange(d)}})),r.current}const Or=Mw(),dg=g.jsx("span",{className:"text-fg-faint",children:"—"}),ES=e=>`${Ui(e.label)} ${e.label} ${e.models.map(on).join(" ")} ${e.models.join(" ")}`.toLowerCase();function jS(e){return b.useMemo(()=>[Or.accessor("label",{header:e,cell:o=>g.jsxs("button",{type:"button","aria-expanded":o.row.getIsExpanded(),onClick:r=>{r.stopPropagation(),o.row.toggleExpanded()},className:"flex items-center gap-1 rounded text-left focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent",children:[g.jsx("span",{"aria-hidden":!0,className:o.row.getIsExpanded()?"text-accent":"text-fg-faint",children:o.row.getIsExpanded()?"▾":"▸"}),g.jsx("span",{className:"text-fg",children:Ui(o.getValue())})]})}),Or.display({id:"models",header:"models",cell:o=>g.jsx("span",{className:"line-clamp-1 text-fg-dim",children:o.row.original.models.map(on).join(", ")})}),Or.accessor("total",{header:"tokens",meta:{align:"right"},cell:o=>o.getValue()>0?g.jsx("span",{className:"text-fg",children:yt(o.getValue())}):dg}),Or.accessor("cacheSavings",{header:"saved",meta:{align:"right",hiddenSm:!0},cell:o=>g.jsx("span",{className:"text-positive",children:Pe(o.getValue())})}),Or.accessor("count",{header:"calls",meta:{align:"right",hiddenSm:!0},cell:o=>g.jsx("span",{className:"text-fg-dim",children:Xp(o.getValue())})}),Or.accessor("cost",{header:"cost",meta:{align:"right"},cell:o=>g.jsx("span",{className:"text-cost",children:Pe(o.getValue())})})],[e])}const MS=e=>`py-2 pr-3${(e==null?void 0:e.align)==="right"?" text-right":""}${e!=null&&e.hiddenSm?" hidden sm:table-cell":""}`;function LS({rows:e,granLabel:o,q:r}){const[i,l]=b.useState([{id:"label",desc:!0}]),[u,d]=b.useState({}),p=jS(o==="monthly"?"month":o==="weekly"?"week":"date"),m=PS({data:e,columns:p,state:{sorting:i,expanded:u,globalFilter:r},onSortingChange:l,onExpandedChange:d,getRowCanExpand:()=>!0,globalFilterFn:(w,y,C)=>!String(C).trim()||ES(w.original).includes(String(C).trim().toLowerCase()),getCoreRowModel:gS(),getSortedRowModel:CS(),getFilteredRowModel:SS(),getExpandedRowModel:mS()}),x=m.getRowModel().rows,v=b.useMemo(()=>x.reduce((w,y)=>({total:w.total+y.original.total,cost:w.cost+y.original.cost,cacheSavings:w.cacheSavings+y.original.cacheSavings,count:w.count+y.original.count}),{total:0,cost:0,cacheSavings:0,count:0}),[x]);return g.jsx(Hi,{title:`explore · ${o}`,captureName:"explore",children:g.jsx("div",{className:"max-h-[calc(100vh-240px)] overflow-auto",children:g.jsxs("table",{className:"w-full border-collapse text-xs",children:[g.jsxs("colgroup",{children:[g.jsx("col",{}),g.jsx("col",{style:{width:"34%"}}),g.jsx("col",{style:{width:"13%"}}),g.jsx("col",{style:{width:"12%"}}),g.jsx("col",{style:{width:"11%"}}),g.jsx("col",{style:{width:"13%"}})]}),g.jsx("thead",{children:g.jsx("tr",{className:"sticky top-0 z-10 bg-bg-1 text-[11px] shadow-[inset_0_-1px_0_var(--color-line)]",children:m.getHeaderGroups()[0].headers.map(w=>{const y=w.column.columnDef.meta,C=w.column.getIsSorted();return g.jsx("th",{className:`py-2 pr-3 font-normal ${(y==null?void 0:y.align)==="right"?"text-right":"text-left"}${y!=null&&y.hiddenSm?" hidden sm:table-cell":""}`,children:w.column.getCanSort()?g.jsxs("button",{type:"button",onClick:w.column.getToggleSortingHandler(),className:`flex w-full items-center gap-1 text-fg-faint transition hover:text-fg ${(y==null?void 0:y.align)==="right"?"justify-end":""}`,children:[fu(w.column.columnDef.header,w.getContext()),C&&g.jsx("span",{className:"text-accent",children:C==="asc"?"▲":"▼"})]}):g.jsx("span",{className:"text-fg-faint",children:fu(w.column.columnDef.header,w.getContext())})},w.id)})})}),g.jsxs("tbody",{children:[x.length===0&&g.jsx("tr",{children:g.jsx("td",{colSpan:6,className:"py-8 text-center text-fg-faint",children:r.trim()?`no rows match “${r.trim()}”`:"no usage in this range"})}),x.map(w=>g.jsxs(b.Fragment,{children:[g.jsx("tr",{className:"cursor-pointer border-b border-line-faint transition hover:bg-bg-2/60",onClick:()=>w.toggleExpanded(),children:w.getVisibleCells().map(y=>g.jsx("td",{className:`${MS(y.column.columnDef.meta)}${y.column.id==="label"?" whitespace-nowrap":""} tnum`,children:fu(y.column.columnDef.cell,y.getContext())},y.id))}),w.getIsExpanded()&&w.original.breakdown.map(y=>{const C=y.input+y.output+y.cacheCreate+y.cacheRead;return g.jsxs("tr",{className:"border-b border-line-faint bg-bg-0/40 text-[11px]",children:[g.jsxs("td",{className:"py-1.5 pr-3 pl-5 text-fg-dim",colSpan:2,children:[g.jsx("span",{className:"mr-1.5 inline-block size-1.5 rounded-full align-middle",style:{background:Gu(y.name)}}),on(y.name)]}),g.jsx("td",{className:"tnum py-1.5 pr-3 text-right text-fg-dim",children:C>0?yt(C):dg}),g.jsx("td",{className:"tnum hidden py-1.5 pr-3 text-right text-positive/80 sm:table-cell",children:Pe(y.cacheSavings)}),g.jsx("td",{className:"tnum hidden py-1.5 pr-3 text-right text-fg-faint sm:table-cell",children:bn(y.count)}),g.jsx("td",{className:"tnum py-1.5 text-right text-cost/90",children:Pe(y.cost)})]},y.name)})]},w.id))]}),x.length>0&&g.jsx("tfoot",{children:g.jsxs("tr",{className:"sticky bottom-0 z-10 bg-bg-1 text-fg shadow-[inset_0_1px_0_var(--color-line)]",children:[g.jsxs("td",{className:"py-2 pr-3 font-display text-[11px] uppercase text-fg-dim",colSpan:2,children:["total · ",x.length]}),g.jsx("td",{className:"tnum py-2 pr-3 text-right",children:yt(v.total)}),g.jsx("td",{className:"tnum hidden py-2 pr-3 text-right text-positive sm:table-cell",children:Pe(v.cacheSavings)}),g.jsx("td",{className:"tnum hidden py-2 pr-3 text-right sm:table-cell",children:Xp(v.count)}),g.jsx("td",{className:"tnum py-2 text-right text-cost",children:Pe(v.cost)})]})})]})})})}const Gi=()=>eg(()=>import("./timeline-fWBF8gai.js"),__vite__mapDeps([0,1]),import.meta.url),ns=()=>eg(()=>import("./breakdown-Dwgq3tc4.js"),__vite__mapDeps([2,1]),import.meta.url);Gi();ns();const NS=b.lazy(()=>Gi().then(e=>({default:e.CostTimeline}))),IS=b.lazy(()=>Gi().then(e=>({default:e.CumulativeSpend}))),FS=b.lazy(()=>Gi().then(e=>({default:e.CacheSavings}))),fg=b.lazy(()=>ns().then(e=>({default:e.CostByModel}))),hg=b.lazy(()=>ns().then(e=>({default:e.ProviderDonut}))),qh=b.lazy(()=>ns().then(e=>({default:e.TokenComposition}))),TS=b.lazy(()=>ns().then(e=>({default:e.CacheByModel}))),$S=({className:e})=>g.jsx("div",{className:e,"aria-hidden":!0}),Ln=({children:e})=>g.jsx(b.Suspense,{fallback:null,children:e}),Gh=[{key:"overview",label:"overview"},{key:"analytics",label:"analytics"},{key:"models",label:"models"},{key:"explore",label:"explore"}],DS=[{value:"daily",label:"daily"},{value:"weekly",label:"weekly"},{value:"monthly",label:"monthly"}];function bS({derived:e,periodLabel:o,scopeLabel:r,providers:i}){const l=u=>{var d;return((d=i.find(h=>h.id===u))==null?void 0:d.name)??u};return g.jsxs("div",{className:"flex flex-col gap-4",children:[g.jsx(xw,{derived:e,periodLabel:o}),g.jsx(b.Suspense,{fallback:g.jsx($S,{className:"h-[clamp(320px,42vh,560px)]"}),children:g.jsx(NS,{derived:e,periodLabel:r,heightClass:"h-[clamp(320px,42vh,560px)]"})}),g.jsx(ww,{accounts:e.cardAccounts,nameOf:l})]})}function zS({derived:e,scopeLabel:o}){const r=e.byProvider.length>1;return g.jsxs("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2",children:[g.jsx("div",{className:"md:col-span-2",children:g.jsx(_w,{derived:e,periodLabel:o})}),g.jsx(Ln,{children:g.jsx(fg,{derived:e,periodLabel:o})}),g.jsx(Ln,{children:r?g.jsx(hg,{derived:e,periodLabel:o}):g.jsx(qh,{derived:e,periodLabel:o})}),r&&g.jsx(Ln,{children:g.jsx(qh,{derived:e,periodLabel:o})}),g.jsx("div",{className:r?void 0:"md:col-span-2",children:g.jsx(Ln,{children:g.jsx(FS,{derived:e,periodLabel:o})})}),g.jsx("div",{className:"md:col-span-2",children:g.jsx(Ln,{children:g.jsx(IS,{derived:e,height:300,periodLabel:o})})})]})}function AS({derived:e,scopeLabel:o}){const r=e.byProvider.length>1;return g.jsxs("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2",children:[g.jsx("div",{className:"md:col-span-2",children:g.jsx(jw,{derived:e,periodLabel:o})}),g.jsx("div",{className:r?void 0:"md:col-span-2",children:g.jsx(Ln,{children:g.jsx(fg,{derived:e,metric:"tokens",limit:12,periodLabel:o})})}),r&&g.jsx(Ln,{children:g.jsx(hg,{derived:e,periodLabel:o})}),g.jsx("div",{className:"md:col-span-2",children:g.jsx(Ln,{children:g.jsx(TS,{derived:e,periodLabel:o})})})]})}function OS({snapshot:e,filters:o,periodLabel:r}){const[i,l]=b.useState(""),[u,d]=b.useState("daily"),h=b.useMemo(()=>Jx(e,o,u),[e,o,u]),p=u!=="daily"?`showing up to ${u==="monthly"?"12 months":"12 weeks"}`:o.period!=="all"?`scoped to ${r}`:null;return g.jsxs("div",{className:"flex flex-col gap-3",children:[g.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[g.jsxs("div",{className:"flex items-center gap-2",children:[g.jsx("span",{className:"text-xs text-fg-faint",children:"granularity:"}),g.jsx(Mn,{options:DS,value:u,onChange:d,size:"sm",ariaLabel:"row granularity",btnClassName:"px-3 py-1 text-xs capitalize transition"})]}),p&&g.jsx("span",{className:"text-xs text-fg-faint",children:p}),g.jsxs("div",{className:"ml-auto flex items-center gap-1.5 rounded border border-line bg-bg-1 px-2 py-1 text-xs focus-within:border-line-2",children:[g.jsx(o0,{className:"size-3 text-fg-faint"}),g.jsx("input",{type:"search",value:i,onChange:m=>l(m.target.value),onKeyDown:m=>{m.key==="Escape"&&l("")},placeholder:"filter rows…","aria-label":"Filter rows by date or model",autoComplete:"off",spellCheck:!1,className:"w-32 bg-transparent text-fg outline-none placeholder:text-fg-faint [&::-webkit-search-cancel-button]:appearance-none"}),i&&g.jsx("button",{type:"button",onClick:()=>l(""),"aria-label":"Clear filter",children:g.jsx($i,{className:"size-3 text-fg-faint hover:text-fg","aria-hidden":!0})})]})]}),g.jsx(LS,{rows:h,granLabel:u,q:i})]})}function ec(e,o,r){try{return e(o)}catch(i){return Rv("[nuqs] Error while parsing value `%s`: %O"+(r?" (for key `%s`)":""),o,i,r),null}}function Dt(e){function o(r){if(typeof r>"u")return null;let i="";if(Array.isArray(r)){if(r[0]===void 0)return null;i=r[0]}return typeof r=="string"&&(i=r),ec(e.parse,i)}return{type:"single",eq:(r,i)=>r===i,...e,parseServerSide:o,withDefault(r){return{...this,defaultValue:r,parseServerSide(i){return o(i)??r}}},withOptions(r){return{...this,...r}}}}const hu=Dt({parse:e=>e,serialize:String});Dt({parse:e=>{const o=parseInt(e);return o==o?o:null},serialize:e=>""+Math.round(e)});Dt({parse:e=>{const o=parseInt(e);return o==o?o-1:null},serialize:e=>""+Math.round(e+1)});Dt({parse:e=>{const o=parseInt(e,16);return o==o?o:null},serialize:e=>{const o=Math.round(e).toString(16);return(o.length&1?"0":"")+o}});Dt({parse:e=>{const o=parseFloat(e);return o==o?o:null},serialize:String});Dt({parse:e=>e.toLowerCase()==="true",serialize:String});function tc(e,o){return e.valueOf()===o.valueOf()}Dt({parse:e=>{const o=parseInt(e);return o==o?new Date(o):null},serialize:e=>""+e.valueOf(),eq:tc});Dt({parse:e=>{const o=new Date(e);return o.valueOf()==o.valueOf()?o:null},serialize:e=>e.toISOString(),eq:tc});Dt({parse:e=>{const o=new Date(e.slice(0,10));return o.valueOf()==o.valueOf()?o:null},serialize:e=>e.toISOString().slice(0,10),eq:tc});function VS(e){return BS(e)}function BS(e){return Dt({parse:o=>{const r=o;return e.includes(r)?r:null},serialize:String})}function Wh(e,o=","){const r=e.eq??((l,u)=>l===u),i=encodeURIComponent(o);return Dt({parse:l=>l===""?[]:l.split(o).map((u,d)=>ec(e.parse,u.replaceAll(i,o),`[${d}]`)).filter(u=>u!=null),serialize:l=>l.map(u=>(e.serialize?e.serialize(u):String(u)).replaceAll(o,i)).join(o),eq(l,u){return l===u?!0:l.length!==u.length?!1:l.every((d,h)=>r(d,u[h]))}})}const pu=Au(),US={};function HS(e,o={}){const r=b.useId(),i=Nv(),l=Iv(),{history:u="replace",scroll:d=(i==null?void 0:i.scroll)??!1,shallow:h=(i==null?void 0:i.shallow)??!0,throttleMs:p=Uo.timeMs,limitUrlUpdates:m=i==null?void 0:i.limitUrlUpdates,clearOnDefault:x=(i==null?void 0:i.clearOnDefault)??!0,startTransition:v,urlKeys:w=US}=o,y=Object.keys(e).join(","),C=b.useMemo(()=>Object.fromEntries(Object.keys(e).map($=>[$,w[$]??$])),[y,JSON.stringify(w)]),R=Lv(Object.values(C)),k=R.searchParams,P=b.useRef({}),L=b.useMemo(()=>Object.fromEntries(Object.keys(e).map($=>[$,e[$].defaultValue??null])),[Object.values(e).map(({defaultValue:$})=>$).join(",")]),A=Va.useQueuedQueries(Object.values(C)),[M,z]=b.useState(()=>gu(e,w,k??new URLSearchParams,A).state),U=b.useRef(M);if(Ie("[nuq+ %s `%s`] render - state: %O, iSP: %s",r,y,M,k),Object.keys(P.current).join("&")!==Object.values(C).join("&")){const{state:$,hasChanged:O}=gu(e,w,k,A,P.current,U.current);O&&(Ie("[nuq+ %s `%s`] State changed: %O",r,y,{state:$,initialSearchParams:k,queuedQueries:A,queryRef:P.current,stateRef:U.current}),U.current=$,z($)),P.current=Object.fromEntries(Object.entries(C).map(([B,V])=>{var J;return[V,((J=e[B])==null?void 0:J.type)==="multi"?k==null?void 0:k.getAll(V):(k==null?void 0:k.get(V))??null]}))}b.useEffect(()=>{const{state:$,hasChanged:O}=gu(e,w,k,A,P.current,U.current);O&&(Ie("[nuq+ %s `%s`] State changed: %O",r,y,{state:$,initialSearchParams:k,queuedQueries:A,queryRef:P.current,stateRef:U.current}),U.current=$,z($))},[Object.values(C).map($=>`${$}=${k==null?void 0:k.getAll($)}`).join("&"),JSON.stringify(A)]),b.useEffect(()=>{const $=Object.keys(e).reduce((O,B)=>(O[B]=({state:V,query:J})=>{z(X=>{const{defaultValue:Q}=e[B],ge=C[B],pe=V??Q??null,Z=X[B]??Q??null;return Object.is(Z,pe)?(Ie("[nuq+ %s `%s`] Cross-hook key sync %s: %O (default: %O). no change, skipping, resolved: %O",r,y,ge,V,Q,U.current),X):(U.current={...U.current,[B]:pe},P.current[ge]=J,Ie("[nuq+ %s `%s`] Cross-hook key sync %s: %O (default: %O). updateInternalState, resolved: %O",r,y,ge,V,Q,U.current),U.current)})},O),{});for(const O of Object.keys(e)){const B=C[O];Ie("[nuq+ %s `%s`] Subscribing to sync for `%s`",r,B,y),pu.on(B,$[O])}return()=>{for(const O of Object.keys(e)){const B=C[O];Ie("[nuq+ %s `%s`] Unsubscribing to sync for `%s`",r,B,y),pu.off(B,$[O])}}},[y,C]);const I=b.useCallback(($,O={})=>{var Z,Y,le,ee,N,H;const B=Object.fromEntries(Object.keys(e).map(ue=>[ue,null])),V=typeof $=="function"?$(Qh(U.current,L))??B:$??B;Ie("[nuq+ %s `%s`] setState: %O",r,y,V);let J,X=0,Q=!1;const ge=[];for(let[ue,ae]of Object.entries(V)){const re=e[ue],ye=C[ue];if(!re||ae===void 0)continue;(O.clearOnDefault??re.clearOnDefault??x)&&ae!==null&&re.defaultValue!==void 0&&(re.eq??((xe,De)=>xe===De))(ae,re.defaultValue)&&(ae=null);const Ce=ae===null?null:(re.serialize??String)(ae);pu.emit(ye,{state:ae,query:Ce});const ve={key:ye,query:Ce,options:{history:O.history??re.history??u,shallow:O.shallow??re.shallow??h,scroll:O.scroll??re.scroll??d,startTransition:O.startTransition??re.startTransition??v}};if(((Z=O==null?void 0:O.limitUrlUpdates)==null?void 0:Z.method)==="debounce"||(m==null?void 0:m.method)==="debounce"||((Y=re.limitUrlUpdates)==null?void 0:Y.method)==="debounce"){ve.options.shallow===!0&&console.warn(ts(422));const xe=((le=O==null?void 0:O.limitUrlUpdates)==null?void 0:le.timeMs)??(m==null?void 0:m.timeMs)??((ee=re.limitUrlUpdates)==null?void 0:ee.timeMs)??Uo.timeMs,De=Va.push(ve,xe,R,l);X<xe&&(J=De,X=xe)}else{const xe=((N=O==null?void 0:O.limitUrlUpdates)==null?void 0:N.timeMs)??((H=re==null?void 0:re.limitUrlUpdates)==null?void 0:H.timeMs)??(m==null?void 0:m.timeMs)??O.throttleMs??re.throttleMs??p;ge.push(Va.abort(ye)),ki.push(ve,xe),Q=!0}}const pe=ge.reduce((ue,ae)=>ae(ue),Q?ki.flush(R,l):ki.getPendingPromise(R));return J??pe},[y,u,h,d,p,m==null?void 0:m.method,m==null?void 0:m.timeMs,v,C,R.updateUrl,R.getSearchParamsSnapshot,R.rateLimitFactor,l,L]);return[b.useMemo(()=>Qh(M,L),[M,L]),I]}function gu(e,o,r,i,l,u){let d=!1;const h=Object.entries(e).reduce((p,[m,x])=>{const v=(o==null?void 0:o[m])??m,w=i[v],y=x.type==="multi"?[]:null,C=w===void 0?(x.type==="multi"?r==null?void 0:r.getAll(v):r==null?void 0:r.get(v))??y:w;return l&&u&&Jh(l[v]??y,C)?(p[m]=u[m]??null,p):(d=!0,p[m]=($v(C)?null:ec(x.parse,C,v))??null,l&&(l[v]=C),p)},{});if(!d){const p=Object.keys(e),m=Object.keys(u??{});d=p.length!==m.length||p.some(x=>!m.includes(x))}return{state:h,hasChanged:d}}function Qh(e,o){return Object.fromEntries(Object.keys(e).map(r=>[r,e[r]??o[r]??null]))}const qS=["7d","30d","90d","mtd","all"];function GS(){const[e,o]=HS({p:Wh(hu).withDefault([]),m:Wh(hu).withDefault([]),a:hu.withDefault("all"),period:VS(qS).withDefault(Bx.period)},{history:"replace"}),r=b.useMemo(()=>({providers:e.p,models:e.m,account:e.a,period:e.period}),[e.p,e.m,e.a,e.period]),i=b.useCallback(l=>{o(u=>{const d={providers:u.p,models:u.m,account:u.a,period:u.period},h=typeof l=="function"?l(d):l;return{p:h.providers,m:h.models,a:h.account,period:h.period}})},[o]);return[r,i]}function WS(){const[e,o]=b.useState(null),[r,i]=b.useState("connecting"),l=b.useRef(null);return b.useEffect(()=>{let u=!1,d;fetch("/api/data").then(p=>p.json()).then(p=>{u||!p||"pending"in p||o(p)}).catch(()=>{});const h=()=>{const p=new EventSource("/api/stream");l.current=p,p.onopen=()=>{u||i("live")},p.addEventListener("snapshot",m=>{if(!u)try{o(JSON.parse(m.data)),i("live")}catch{}}),p.onerror=()=>{u||(p.readyState===EventSource.CLOSED?(i("error"),p.close(),d=setTimeout(()=>{u||(i("reconnecting"),h())},3e3)):i("reconnecting"))}};return h(),()=>{var p;u=!0,clearTimeout(d),(p=l.current)==null||p.close(),l.current=null}},[]),{snapshot:e,conn:r}}const Du=e=>`/${e}`,pg=b.createContext(null),Wi=()=>{const e=b.useContext(pg);if(!e)throw new Error("useDashboard outside provider");return e};function QS(e=1e3){const[o,r]=b.useState(()=>Date.now());return b.useEffect(()=>{const i=setInterval(()=>r(Date.now()),e);return()=>clearInterval(i)},[e]),o}function KS(){const[e,o]=b.useState(()=>document.documentElement.classList.contains("light")?"light":"dark");return b.useEffect(()=>{document.documentElement.classList.toggle("light",e==="light")},[e]),[e,()=>{const i=e==="dark"?"light":"dark";try{localStorage.setItem("tokmon-theme",i)}catch{}o(i)}]}function XS({theme:e,onToggle:o}){return g.jsx("button",{type:"button",onClick:o,title:e==="dark"?"Switch to light":"Switch to dark","aria-label":"Toggle theme",className:"rounded border border-line bg-bg-1 p-1.5 text-fg-dim transition hover:border-line-2 hover:text-fg max-sm:p-2.5",children:e==="dark"?g.jsx(s0,{className:"size-3.5"}):g.jsx(i0,{className:"size-3.5"})})}function YS({conn:e,freshAt:o}){const r=QS(),i=e==="live"?"var(--color-positive)":e==="error"?"var(--color-warning)":"var(--color-cost)",l=o?iw(o,r):null,u=e==="live"?l??"live":e==="connecting"?"connecting…":e==="reconnecting"?l?`reconnecting · ${l}`:"reconnecting…":l?`offline · ${l}`:"offline";return g.jsxs("span",{className:"flex items-center gap-1.5 text-xs",role:"status","aria-label":e==="live"?"live":e,children:[g.jsxs("span",{className:"relative flex size-2",children:[e==="live"&&g.jsx("span",{className:"absolute inline-flex size-full animate-ping rounded-full opacity-60",style:{background:i}}),g.jsx("span",{className:"relative inline-flex size-2 rounded-full",style:{background:i}})]}),g.jsx("span",{className:"inline-block truncate text-fg-dim max-sm:max-w-[7rem]","aria-hidden":!0,children:u})]})}function mu({label:e}){return g.jsxs("div",{className:"flex min-h-[50vh] flex-col items-center justify-center gap-2 text-sm text-fg-dim",children:[g.jsxs("span",{className:"font-display text-lg text-fg-dim",children:["tokmon",g.jsx("span",{className:"cursor-blink text-accent",children:"▋"})]}),g.jsx("span",{className:"text-fg-faint",children:e})]})}function JS(){var z,U;const{snapshot:e,conn:o}=WS(),[r,i]=GS(),[l,u]=KS(),d=b.useMemo(()=>Xx(e,r),[e,r]),h=((z=Fp.find(I=>I.key===r.period))==null?void 0:z.label)??r.period,p=r.period==="all"?void 0:h,m=zx({select:I=>I.location.pathname}),x=((U=Gh.find(I=>Du(I.key)===m))==null?void 0:U.key)??"overview";b.useEffect(()=>{var X;if(!e)return;const I=new Set(e.providers.map(Q=>Q.id)),$=new Set(e.accounts.map(Q=>Q.id)),O=r.providers.filter(Q=>I.has(Q)),B=r.account==="all"||$.has(r.account)?r.account:"all",V=new Set;for(const Q of e.accounts)for(const ge of((X=Q.table)==null?void 0:X.monthly)??[])for(const pe of ge.breakdown)V.add(pe.name);const J=V.size>0?r.models.filter(Q=>V.has(Q)):r.models;(O.length!==r.providers.length||B!==r.account||J.length!==r.models.length)&&i(Q=>({...Q,providers:O,account:B,models:J}))},[e,r,i]);const v=(e==null?void 0:e.accounts.filter(I=>I.hasUsage))??[],w=v.length>0,y=((e==null?void 0:e.accounts)??[]).some(Mu),C=((e==null?void 0:e.accounts)??[]).some(I=>I.hasBilling&&!Mu(I)),R=w&&v.every(I=>I.table!=null),k=b.useRef(!1);b.useEffect(()=>{R&&(k.current=!0)},[R]);const[P,L]=b.useState(!1);b.useEffect(()=>{const I=setTimeout(()=>L(!0),12e3);return()=>clearTimeout(I)},[]);const A=!w||R||k.current||P,M=b.useMemo(()=>e?{snapshot:e,filters:r,derived:d,periodLabel:h,scopeLabel:p}:null,[e,r,d,h,p]);return g.jsxs("div",{className:"min-h-screen",children:[g.jsxs("header",{className:"relative z-30 border-b border-line bg-bg-0/80 backdrop-blur",children:[g.jsxs("div",{className:"mx-auto max-w-[1600px] px-5 2xl:max-w-[1920px]",children:[g.jsxs("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-2 py-3.5",children:[g.jsx("span",{className:"font-display text-2xl text-fg-bright",children:"TOKMON"}),g.jsxs("span",{className:"hidden text-sm text-fg-faint sm:inline",children:["~/usage ",g.jsx("span",{className:"text-prompt",children:"$"})," ",g.jsx("span",{className:"text-fg-dim",children:x}),g.jsx("span",{className:"cursor-blink text-accent",children:"▋"})]}),g.jsxs("div",{className:"ml-auto flex min-w-0 items-center gap-3",children:[g.jsx(YS,{conn:o,freshAt:(e==null?void 0:e.generatedAt)??null}),g.jsx(XS,{theme:l,onToggle:u}),A&&(w||y)&&g.jsx(mw,{derived:d,periodLabel:h,tz:(e==null?void 0:e.tz)??"",version:(e==null?void 0:e.version)??""})]})]}),g.jsx("nav",{className:"-mb-px flex items-center gap-1 overflow-x-auto",children:Gh.map(I=>g.jsx(qu,{to:Du(I.key),className:`relative shrink-0 border-b-2 px-3 py-2 font-display text-xs uppercase tracking-wider transition ${x===I.key?"border-accent text-fg-bright":"border-transparent text-fg-faint hover:text-fg-dim"}`,children:I.label},I.key))})]}),g.jsx(gw,{snapshot:e,derived:d,filters:r,setFilters:i})]}),g.jsx("main",{className:"mx-auto max-w-[1600px] px-5 2xl:max-w-[1920px] py-5",children:e?!w&&!y?C&&!P&&o!=="error"?g.jsx(mu,{label:"reading billing…"}):g.jsx("div",{className:"rounded-md border border-line bg-bg-1 p-8 text-center text-sm text-fg-dim",children:"No providers detected. Open tokmon, enable a provider, then refresh."}):!A||!M?g.jsx(mu,{label:o==="error"?"connection lost — retrying…":"reading usage history…"}):g.jsx(pg.Provider,{value:M,children:g.jsx(Ip,{})}):g.jsx(mu,{label:o==="error"?"connection lost — retrying…":"reading usage…"})}),g.jsxs("footer",{className:"mx-auto max-w-[1600px] px-5 2xl:max-w-[1920px] py-6 text-center text-[11px] text-fg-faint",children:["tokmon",e!=null&&e.version?` v${e.version}`:""," · by David Ilie · live LLM usage dashboard"]})]})}function Kh(){const{derived:e,periodLabel:o,scopeLabel:r,snapshot:i}=Wi();return g.jsx("div",{children:g.jsx(bS,{derived:e,periodLabel:o,scopeLabel:r,providers:i.providers})})}function ZS(){const{derived:e,scopeLabel:o}=Wi();return g.jsx("div",{children:g.jsx(zS,{derived:e,scopeLabel:o})})}function e1(){const{derived:e,scopeLabel:o}=Wi();return g.jsx("div",{children:g.jsx(AS,{derived:e,scopeLabel:o})})}function t1(){const{snapshot:e,filters:o,periodLabel:r}=Wi();return g.jsx("div",{children:g.jsx(OS,{snapshot:e,filters:o,periodLabel:r})})}const bu=Sx({component:JS}),Ri=(e,o)=>Mp({getParentRoute:()=>bu,path:Du(e),component:o}),n1=bu.addChildren([Mp({getParentRoute:()=>bu,path:"/",component:Kh}),Ri("overview",Kh),Ri("analytics",ZS),Ri("models",e1),Ri("explore",t1)]),r1=Tx({routeTree:n1,history:Ly(),defaultViewTransition:!0});function o1(){return g.jsx(bx,{router:r1})}Sv.createRoot(document.getElementById("root")).render(g.jsx(b.StrictMode,{children:g.jsx(qv,{children:g.jsx(fw,{children:g.jsx(o1,{})})})}));export{pw as E,Hi as P,Go as R,Mn as S,l1 as T,a1 as a,Pe as b,yt as c,Yp as d,i1 as e,Ui as f,hv as g,g as j,b as r,on as s};
@@ -1 +1 @@
1
- @font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAASIABAAAAAACQQAAAQuAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVF4AdBEICoRkhAALIAABNgIkAzoEIAWFAAeBFAwHG2oHKJ6DceNW4lJEFHn9tEOE37LNsvkjHr7f739rn3u+OSrSxLQytE91Dw2PYtNVq3Qaw/vJ7fUBMdOj/u2ImB98cT5WUx9F13ZKt06mU7tG1sAYcM26yCRX4f/0904bmwq8hwkUUMTRX61pa9C3xlpAGYw1vOu8C2SBZZFlld7DAW82RJWmwYMI1AJCKBNCIASqdZGFmtPSNQRhMpR0EKjWTwm6z6sJ+4jqhxjovTinVdRpZaQjaQzAYjI8NgAKDJCokgunCn9oUQE8VZd/F//+v6P4F1U9gLr58yNI/dJX9BAshEoJbTDogz7ocKoUsPvES8UK/aQIUQgpGgECBVLkOEV6iASTYgNAPKdNXayhDPL7IJuAZnEYSZ0eOLc9i5Rv5/+lEi3sW/kfnCf/+fTe0sxS7CKLx5erRJkKOixEqQaoqrvx5HN4iz4VhX0gS6DjFIWUzn/fIXJRVFY1NFRVNVeFt+SYmrK6vCU6eJsnKnJj5HTESMTQZOTI3Y/tzr3rUcOsiRy/ciP50s3Mycgxmhz9GMXhjzVH30ut796NHP0UUa31/Zoa6vCH6iPvdIM0IRANaT60FablmZlZd+UKNFy9NrvnFGxb5NC2CRxR0/rIyF/WNn+35sv9r+tHVhkseuWGKkCPPh96+GXt8Lc/Sh24ujfjf+tNw1lZWreiPuHb/PSpyjdv2rf/++ZE5TSKjFdZxYsBvr1sEHl5STuHZqYR7jGYGvGBBdjcaB5bODY1GAxMjsd0wDMIzXAXODRd74DxNMtO4YuYHclgLQRzp9KlUmxptCwv9bYgvWGD2xBW7r9413fdJu+mxzvzAUYeeONQvZP4kgfqZle4jhH/MWh+UbxgtJdrLdXLymNL53PRU0D3Q6FcXTfGqGcul6vrqhgLGAVSv+IVIfZOHpu+mlLqSlnj903j8mazXDsba/wbxhS/4Oubh1c5/uXDgt4j5KtnGEy5BIJHo0ur+jD+r2qCkuP1aRVM8EpUoRYSJyqNRA38uwDvHBNo0AejO2Z+ZYLLal1QiFyFh1EDQOgSCSCpjwwKU8yDbIjroEwne0G5Qca49cYp4AlqtQNZfWTQoFb1tRpFYAmRD+HXTkV4uQhG2bg4OKmyoypAsUGtWgQXyFxYrkpODeUxvGqIZA61erXo0sFG1UBGuPgpuon8RNUG2DhovAjZCBuZwtXrU3mQGki9+pm0eVZAXoWxLWTQoYHBPrJR4WunNxIFbCHfkTyPK+sqxjxDmGArZvf79JGJ3GwEqjwc7a7NIrl/7bJ7Nzu4+n1Ow6shEPnUrtVo7cnd5Wi5qCUbBIQbNKCP95FMCSZylEV5VCiiMqqiOmrKZ/I/C0gI1fyuulVcM2E1r4MhtcV/fbCD+HwEvVzH1dGNAzFE0FTbKzyQz3gootrNbN2a4PuG0j0JOgE=) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2) format("woff2"),url(./jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./jetbrains-mono-greek-400-normal-C190GLew.woff2) format("woff2"),url(./jetbrains-mono-greek-400-normal-B9oWc5Lo.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA9UABAAAAAALMAAAA7zAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGnAbhWocghYGYD9TVEFUXgCDBBEICrBAp3ILgjgAATYCJAOEKAQgBYUAB4xODAcbIiYzo8LGAQCKfn4o/usELQ4rdj22ABHwitFYjZPqB3XSqAbV3C5dFkHYtTehxpeGbU+3+QexdERCkxARw9oNxAyetvXzdhdjl/7aiBiHgcqBjZywaGPSh4mNFccpF3DHlfyO8Jc/OiSe/kb7/iQYRAE23iScpHngiRRBFETNiZzQwc2HOllJ0fqXIjTY8RTYbDsklKc81hGPQcOJojhD/w80ll1aG/qiQErbzqOXjmvOVKd14tuv+Hxrlbarq/5xH7CiMPjaZXlrfNSp7uqaroZXvYAzc8A0kH2zs3MvHQBUORcJ2GG2cdFRgArh+Sgb7yOsjImpmgM0kq1FwhQCQzQ1Mt+j7at5GSAAIQAAKFLk6uMul4pIl4HIpEEUK0dUMiCMmhFWNoSDC+Exghgzi5i3hNhtN9qaINo+EbQj1tEIgJVLj5oebQ6I1/fyLMQYALYgALKS0yEOQCJG89uIiEPKyeRDVCmC0HgZ203jIg7kk6cHxfEKeBSDXtxd6n5yJzqpfSgXs9xMri1fPezlKMAVcCGEIhmwHiDRtJOyKfXkGsAVqI7ohIZs0rsDM/IU4fuQgkppCk2n+VRHy6mFttJ26t16mBjQPyIeYhvZnyXaiDSeaAYYXLiKPIm4uKh1zIq6gSRVU7WNPIV5v1PwBOy07RrrT6skwoEAtYyZeYgpBUABaDEmtPWRGP/UGABFgUUjchFXAghAgAYQpyPkCIBBoRwQgU/g3kQcyqTY9KSDItmjjmmkP+qJHG3C66hjXhtlhzwglI+1+4Be+T77hYQxxeNkCIDaKU+ANXhkMqePOVAQr7uwCjoBlCdtHQE8TNRd17//A/evkhSpkOMDA9VTmwAVAbLNlwMkoAG5qG2bWCYA/h3uEYgEhFqSmJJPpCIFbJHg1Aw5GaAujjqMzIHc8NrIHBEJJjGZP3cuFQZD9PvzLvZIaCIjBcTvEnIzTWiGjqdzlD+VAO2TUERK8smEi8lNNOguiAM9P6Gfo6bX8bD0v7V/cPwA/fDBi0BaGgUllWy5AATy6X9gAZqRVIsMLuVmqQ3QmrBbiFgTiWbxLDj1hBqINGLVYewQwySWWRyeQK1kXVJ0S2UjZ5WgXaIOSTodp42CUzqHXH226ZfJI4tXth45eqnslGdQgSGFhmmMyOdTbEyJcdv56U0pNa3MDJ1JVRZUmldtkcESglQkAOA8AMgAoBeYLQi+wDxAtwAAGlXJUdVLPLmo/TLRystE3SsqO29LUY0hsrtvBoXUw1Fy+XjIhqbj4rEZISsUysW1L68PlGRwyWImjWXjS9LFyUzjC7v7Z5hYsYKRhIH49EyxTJxutwOy2PRxp1R63SVViB+eNFYRywlEzJBIMDIl5Aa4PtbFOno416WTTkfVQwSPgIve66BCbLAuLmpCh59ln5uFECODSuUIJ2CJCCzDwbf+DV2/3yTtan5J1gEVuilcVASHULO9Bt+nWkIEHMMit5gOxaO4JpWjvdzOcySeFek9q4dy3jxi2BxHwsuuo2CzbQ+KJWxyqPUJljVCU3WT8JwlhZyLkKODRhZkQByHu8ERJIcGBexSmdwGPfMPbjnC0SwRUTyCAIwY4Mdr9zxJTKE5yp0mcEe9s3Umm/TZp2s4X/27cQUmhrd4Ow4ibPOTOxxT6w+S8ENc9AGE7meFOlNbuzjngJtzjFKcrMsxtf4G4UIPcNGXbvwNaeDea6+1L7kaYG+M13a455pruOh5Ww0HlhllPy/PsqS9Zr7ZV9cSLODAoItzBt2cI5i1brCxQRIcH6yr9wV5+XjhtlxuziH7LiqGTXVnkfCZntd1doJ5liyIno6X3GqH56fcnGNwE2IXvYhw5a/MJGsMns/TOawd+2HX5kOXxQZFsYkwmMetzGtqKDKSe+h9h7jX77z2Snb98vyL7rjmil1N3B/cCBfsC5rymA/ExpPlni/DL9i7eflmn66oxrSlMRRB/8Dbq/e/3aN95L3BG+dFd1d+uCVzKhQy5/+I77CmWJ/o2Hygaay8yleXU1c1NH2IpqHOYUtriyWHf3iZwxjZvNxm/Ti/O5+22uC3nVFxhu1wvQc08ZZ+nb5/9oBF38ehJXaKPt7K6/v34Ltqai21rbXDXI3BRDa+9XDSGp8gzZZarV2ag9v3RBzSNfFjU/M+uVduNDTsMNY0GCOHDU3O4dazeb3zFXjg0rlPuiV75+m+kzV3v5qc/PHdJ2j6pI+wDP+U7mFPW/uw23ltZemTVTo+3+KNa1yyuwdmfI41j1/yvbG3oaLR3G3Sd1xdrNOUfAou3jYw0z860D9jr+9sqU1IIHve9W56/fIEU2fztvaqHQ213trhKauqjXVmr/kFxP1m7bdCE88Plpb1m840l/VNQz72QvvMPlc5z9fvKPt1xBtXv9yVZ9nGmxscXiDfwGcI4LQ9duBaG7Nxjw2aWMuArp7In2qxObTwKfr40/iy/j34zhqeN59qHuZqDBaysQWiL/PZsk4cyV13mvbwWw7phfEDC/O+fm9/ram+sspcXxs5hm9pHjufSujGRbKXaTPmBAPPfMm45bau15+jR/bbBx80mR7sCth94rfB6Q6sngJcuO1v4a7Lu157ad9GKIlypuEea9GDnXs0IytDmZ2Rka2cVv4jrIHmaFZ3O9OWlWX7gLuRH1mMjsxE8VrEH/XNRrErsh61R6PD3e2d7dDsb3Z38k15W/kFkrwmHk+PhWNKx3nLMhHkSl5ZLMvHWPGPfwRB9AKr2QoSUb4qSlB18X715zkqwRI0G3lvUOptugtcID+tsKQForrC+pqxS4X1dcof21bf4OQcbZ2Le6y53kKao3rxNWE9f1a+S3t2tiIu5yej2d/W12RozBwrLh7LbDT0NkUDi+HBQPj0xIlAoKHFFxAMPB8Vce+KKo28Rq0SHV3LUk6MNLv35DMrCzVNmbxBeCGCKzMtu20y8f+SVD4h31Sosky03Upl9YJxzh+L0ZFANLR4LOpYj452tne145E/wok2e6JX/xBX/vH8WaFQojdWlrhzuOXjs1Zn3cCkT4qWSmZeqX/B4tciE4HBmUBZwGxtMDaqnCpdllPVaIzdNw9ZqfDU30ppYDgw2B+A5JP5L8bj4tgWoy/t6WRRcO2P8uFDakiP2fMWaviyaOYFr94gE0nEsXysWligOuHRC2TiH0XSJ/4WqQcjE4GxmUAocKlG+jECgZHFwGX8vabVzf8f4KQSi8Gp6laIdgV0q8OzbmjyaWdnW1MQXZoJDb7ZaEdzVzMoNQiAGESUwszDAIzTDIqSxGFoxoRZ/vTKM8CfyZ9V/ZAPfzZ/Ds4tMHm0dSxCkOPaNpKlK8/KwGQVCdzqbPDn1HKuiT8WHUnStEQYZB2TC6WJ6spymNIjBV7JK5lSs1C5qDoRSYBUSlgH31LlM7X5O4o8eBxrX3MDwtOG1iZdZ/NjXsu0gBJohRVmlQNfwVfQmsReAdZEAahljqkMaxLHg/gT+BONkwxcgT0CH/5k/pQrcCpMUYiGtPqbDGvVgALfitYyTHyI7iP25WqsSqAlstCbcmZ3k0PcRZlgbs0KCrwb7lImBTqQCCawVEpMWHur0DRm3+9sVAOK6UQiqESr8NaEtY8Vu86AIjK3KRZhXNwqD34Oc38umLZM7/33+38/uOj7///Z9yMAAHqAUtN3Bsa/l9rSiKVxlONqqbKozYWfYMRMRkicEE2FhIs4TuWQJL0RDNwCPy0hP1CbGAVY9Mb6W+DZ2p14CIQoIBjqGKpe6lOONhDJTUFBXMgZYOPct8C7Ffmf2jR2ksQ72U7f6SBu5gywoW8x2Qhy1APl1CZGAQ4ksGGD8loGsjY0UQKXmhdvpBboCNglmiU2XUCieL2dF1bDaTacoykaTjgFAhquyoFkiSk0LZyooeM7gQDVIlmNOwCPlICNKQpatkhBhUQJpdLCVwFqWj3FQ8sWeajTWbJiLeRJQlRmsyh1YLRZtAzVNr0dAoCqYN6wXLhzQGL8LY6mvwSAd1698ly88s2Xfwa7FbVA/wsgBhQAgABfG3dQHs2o/066DhB0wWo68NIlpR8Rtqkj9flbwtMc3oZyWoIn3n+L86o5vA1V8ng6L4C9+Ax3YgMBHN8Er4rV97ZRXgdo2vF244hH35wAzlOM0Y1BABGNnNCZ4UFNPID7U9KeSCgiP5EiDnMizejpExlFzj9RIM2BE2MU8pwgViH7TAQQSqpgnDuJJAk2kHIaYDNnhs+sFsvBuaf5DXMbXT9uwvLIbk49b4mBNm3JsEV+85YtKUHWb5rT5ywap9WpUZtWo6q5Fot8W89a0m4OaXOK2Ywat2KaD3NdRi1S/+eloldCT0fn1K5q61Mpa6eaNrKMB6WMQqn83IfXmTNv1eIRiaKj7aOsikMmoxej+EfqsmjOpFHDLnneylGLQxT66vnHnh/n12VXDN1Hw6/bcNpctWo3vrwApZvfrdEDiP8IzgPkeiYUoQlzDvYWB0cnZ6uLq5t7+aRk5I6TIFGS5IqkSJWWXjqFDEqZVLJky5FrG7W8quQrUEijSLESWtsz0tErVVa9chUqValmUMNoh1omZjxSM4s69Ro0atKspTe1smrLpl2HTl262dg5OLm4eezMw6tHrz79BgzyGarXsBGjxqJtJvhNmjJtxqw58xYsWrJsxS4Bu61aE7THXvvsFxJ2wEERhxx2xFHHrIs6fuE/r+1vm6/8jhhtDCwnASDGR1h4SGhYwEGU1Y/Xffk5G4u9XgIAYtxyGpZ5y9sDdNbyP142W5DgAhoE7i3q0c5x2vm9v24aZuNohdcxqSEAz8up00My03HSwmqPa8bMecG3Tjzb+f9EelEtg2vpzPeiIEEBwSA8IEDBwAE9F5Z6vQIQjAnLGTgWLO+uZTL/qwGEAYOAQpg3TefgwBCQgBDzqukKDBAOoU3KVtqIbBXK9XpEAAujuudkZN724kIGmrtVaS38ZZLrS9/4fsKMQhN3yXK5gvSBvJ2Y9/Nydbcvb0bm58+e3FhmGfGLJ9u7axl1F1LQTbaCeyrbu7wFCsorFgV4qnh+GUrWtaczqkSBB96AEeKRB94k2SyLuyw3qwrxeg3P5FNR1Av1Gsq2/ds6dPPkBAAA) format("woff2"),url(./jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2) format("woff2"),url(./jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./jetbrains-mono-latin-400-normal-V6pRDFza.woff2) format("woff2"),url(./jetbrains-mono-latin-400-normal-6-qcROiO.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(data:font/woff2;base64,d09GMgABAAAAAASUABAAAAAACRAAAAQ3AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVEwAdBEICoRkg3oLIAABNgIkAzoEIAWFHgeBFAwHG3AHKB4HzukrRjyF5Gb4kQ/B873d17mv8TWkoqUUGaHodJCtoqntw7m8tiPWyGkfWDU/IMpzVk4zAs9Czv3c7Os5NvKFG1Ht9vBVXySRZpJc4tTrbM3sTRFcLa3zVboKWRIoAksKSKgqUQWEwlSoqjp44V5J9/kjd0+Fi5xaFjwJArgBAIJgIAgCCAI4CdNMqGuYXYUKdADLAkAAJwl6iX0+bZqEm1AH0Hu9rvrJHwxQG1Q/gFYwWYbgTRWgwEESVzbmtjQAt3DXO7Tu/+9Q/KNKWhTCgZ8fQSWoL0CUUgTBjgL8iEAcce7YHBeA8ZvogieCnxI0BCVeACCAAhBD/oDcAdUPABSgAX4kBPBTwjCAjwYSCneiqF65LUo/qXdYFrRwTujtMrKm07plTbSqLQFAiHBN7E4DG5wkiGXhCYBNETh3K/AciHN69iFfQjFOr9EXQQAAQXRNszs8PR0OH4fDV/dwGe76CHdj1MQa11DXYGcfZ6+B1X0OfwjY+i7KpQ1w9d+1z3/HydCB1f3U8A0fRFv+0bXxPWrZu3d9Nn4UcbLs/QCXLH/j3PCKblKOiZxLOR78W9brPo7eGTLz/F27ZPmePQdCB1YP4nJU91o4gU9cy64L3c3SPu8GfDn6ZXD2cGmllVqSxtD5vCXHm5xaeHlnpffx7DcPvXog5NnjA//cPz2btsz3yf+0MI8ri33tuv7upNbYmW5STbosW8bYItV/SPzxvXC0KnpWnFdC91oojit5Lyo6WcJQ1YzwBYbi52ohJVpcxfcHBqsv0nFz8U74rzS6M7r0RVlXZ3jJC4G92O//7Lm78VOtnUx+aQxAzsqPnrRr1t9zDrezKePvZ027x+fGte4s4NXu7/jEp3G9cM1bICYgACbuETUUD5wmenGXA/IBpAKVrl0AEJ5cqr6Q89tGq+SpqkDfX2DtG+pZ9teuae0AX98c301CX179InyErnSG8WCiABB4HFbVrw/lpTdBIOk82nXbpHKoQGyBpUovAAD4XQA8ZTUCeBJHIpI0v0FRrgcnckV3ANckrwYJKXEihQfdSKPER6XeExmEeEMmSe6QBwWmkZdmSOSthhibgIkBlUYreBKd/0NeVAE9WAyEaQpH6KikDWlUVg43Jy2FOmaYlsZhDEGZXO3mWEyWHI6zuaJkMlcSQ9k4F+KidIiFyZItGDc7r1pUj6wP6zrWB0/fbeeFeHl4YOvETMNiM8Ny+7OO6Qh2wur20YVxFts5dlORdl5Kwd5utR7SRcxqX8RA5Ehacha76hg7c6yzNm/Xf6vOLNrv544lIEkWg7xWo/ItBAeIJEmt0XgBwgM8gTifoiiLJroYYooNTeziEKe4zOoR/wvIKp89hSr+6jFAqw/LaonjmZHSscMNg4iPlWpFrO1RN3zkMU+/xUP+JQ99TbvTl1Vg0gtirT6lbwYAAAA=) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2) format("woff2"),url(./jetbrains-mono-cyrillic-500-normal-DJqRU3vO.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./jetbrains-mono-greek-500-normal-JpySY46c.woff2) format("woff2"),url(./jetbrains-mono-greek-500-normal-D7SFKleX.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(data:font/woff2;base64,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) format("woff2"),url(./jetbrains-mono-vietnamese-500-normal-DNRqzVM1.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./jetbrains-mono-latin-ext-500-normal-Cut-4mMH.woff2) format("woff2"),url(./jetbrains-mono-latin-ext-500-normal-ckzbgY84.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./jetbrains-mono-latin-500-normal-BWZEU5yA.woff2) format("woff2"),url(./jetbrains-mono-latin-500-normal-CJOVTJB7.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(data:font/woff2;base64,d09GMgABAAAAAASAABAAAAAACNgAAAQlAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVEwAdBEICoRkg3gLIAABNgIkAzoEIAWEaAeBFAwHGzgHSJ4DbjN9OmtkIy0becnT/RjJ4uGfw99974/GXrhoTCqLok66NY3jTloEUdrmwCevn/Ls30xSpFlZ6UJMrW+fTNwAEdSuvSzCRANvEgnjUmw8swT+87+w7I/7qb8XlIB7NpGBjXiUjRX0b7ZpJ8+orRLzvGhWYCMdAU3BbRdPuqOeKAXuRKAWEEJJCIEQqNbLD9osq2kBviL8A4Fq4yLgAa+6DNaiAwcYOrqYHfgQcMgL3AFgG4fHHqREEUBSxUtmBfzNWxXADfviy8Kff7dA4QfFBQG6fnoX5Dh+gEEcIVRKtMIYhc/kCgsCDiarQY4QWpEKQoYTAAIJUcaHAHIXIN9BooBWhEAr0j7QzAkh1RnEWOY4wuRW8uX/f5o5W8gXcjriOUb9z/wjACRuWaWrpKIyLMQ/DUDN/TT+ErgHRpPBIRQrKCcZCvxBBCBEkSD4lKMjRblQlCvpQHPsSZE9R6K2o/vpXkGboKWbbltxx2feLT+a6KJb5293n7vTt53uwOzUO4gYc5eedhvS+a1bbdNuIiSA89cuGo25IZh6DXrJJIIUUibFUG0zt+ijO+cvnj8fjVm4cKlvN90DwzrdMmy8H9GjDyv90Xz2W10PVj3oTY7LLfwfmxMHoef+8n33R0duOxF3LPCYFXtymWNdcLBD3VF4S91+GWf8c9k7sZC6fPpnbENnCmayerBNki0ZbFUXiHV/wkxWklGmydCkaR5o0oZnlj3oSVdnZKjTITaXStOyWGYakzUgTSt1gvSs/otJL1FkzE/3e+aXvj7n+TOv9HkZ6evS4e3OXafCx8iqJfNGpQLM7rkt0ppRJ8N3gd1IjHLaROM0cLkhdf2NQjZ4bmjo2mBWKJ4CPA4IZXX9hFlPBnhxWhXzgBGQ88QeRD3j1/AD5a/JxMnL5gK5deaC2H7HvK98gngBbzfWLKD0g2ufeA7nMsQepBwDgpdhy90BzC+8DSCers8O6KKloYn0RCtKo9EM9LsAd7AgNBhFGEAsvl4K1LpCiCIF3IZHFUKvX5AqfUPBgkO+ovHpUNJtOJSN6hDWWxAigkCt9hbEXdaOHLvI6lM5gQA79LRYOpUsWBpKYu2klOQULGlGCwOzHIkSmYmZKBlQrlmCQ0mDv5SeiVyiemVqVJGyEDJhKemY1dLT0YsnpKch0UbKxExJTydIigQpkiUvYA3SVFDqFH2uNggh343VmPs2ycX0DIYwPYTigMak5AjS0ohI8zmoo4EJwypS4iVcDOuDuvRMgytHPa5LTjnoc1YiCcT0tBI3qjXxqqFomJf2PylAOHMDRp1HGBaDQCTiIC7iQSH4iEICRHMZkUlqk/KsOmVSGlOK7NIseRNZFp3NkbNaLateTmKScHGTAyu2WqQf6lD8rMNg1+lKTcpwkfvQ/7eRMwAA) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(./jetbrains-mono-cyrillic-700-normal-BWTpRfYl.woff2) format("woff2"),url(./jetbrains-mono-cyrillic-700-normal-CEoEElIJ.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(./jetbrains-mono-greek-700-normal-C6CZE3T8.woff2) format("woff2"),url(./jetbrains-mono-greek-700-normal-DEigVDxa.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(data:font/woff2;base64,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) format("woff2"),url(./jetbrains-mono-vietnamese-700-normal-BDLVIk2r.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(./jetbrains-mono-latin-ext-700-normal-CZipNAKV.woff2) format("woff2"),url(./jetbrains-mono-latin-ext-700-normal-CxPITLHs.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(./jetbrains-mono-latin-700-normal-BYuf6tUa.woff2) format("woff2"),url(./jetbrains-mono-latin-700-normal-D3wTyLJW.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-normal:400;--font-weight-medium:500;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--radius-md:.375rem;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--font-display:"Departure Mono", "JetBrains Mono", ui-monospace, monospace;--color-bg-0:#0a0a0a;--color-bg-1:#101011;--color-bg-2:#161617;--color-bg-3:#1d1d1e;--color-line:#262627;--color-line-2:#343435;--color-line-faint:#1a1a1b;--color-fg:#d4d6d6;--color-fg-dim:#8d9090;--color-fg-faint:#585b5b;--color-fg-bright:#f3f5f5;--color-cost:#d9c074;--color-positive:#6caa71;--color-warning:#b45648;--color-prompt:#79be7e;--color-accent:#79be7e}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root{color-scheme:dark}html,body,#root{height:100%}body{background-color:var(--color-bg-0);background-image:radial-gradient(var(--color-line-faint) .5px,transparent .5px);color:var(--color-fg);font-family:var(--font-mono);-webkit-font-smoothing:antialiased;font-variant-ligatures:none;background-size:24px 24px;background-attachment:fixed;margin:0;font-size:13px;line-height:1.5;overflow-x:hidden}.tnum{font-variant-numeric:tabular-nums}::selection{background:#79be7e59}@supports (color:color-mix(in lab,red,red)){::selection{background:color-mix(in oklab,var(--color-accent) 35%,transparent)}}::selection{color:var(--color-fg-bright)}*{scrollbar-width:thin;scrollbar-color:var(--color-line-2) transparent}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--color-line-2);border-radius:6px}::-webkit-scrollbar-track{background:0 0}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.-top-\[7px\]{top:-7px}.-top-\[11px\]{top:-11px}.top-0{top:0}.top-2{top:calc(var(--spacing) * 2)}.right-0{right:0}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.bottom-0{bottom:0}.bottom-3{bottom:calc(var(--spacing) * 3)}.left-3{left:calc(var(--spacing) * 3)}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.z-\[60\]{z-index:60}.mx-auto{margin-inline:auto}.my-1{margin-block:var(--spacing)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-auto{margin-top:auto}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:var(--spacing)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.aspect-square{aspect-ratio:1}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-\[11px\]{width:11px;height:11px}.size-full{width:100%;height:100%}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-3{height:calc(var(--spacing) * 3)}.h-\[clamp\(320px\,42vh\,560px\)\]{height:clamp(320px,42vh,560px)}.h-full{height:100%}.h-px{height:1px}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-\[88vh\]{max-height:88vh}.max-h-\[calc\(100vh-240px\)\]{max-height:calc(100vh - 240px)}.min-h-24{min-height:calc(var(--spacing) * 24)}.min-h-\[50vh\]{min-height:50vh}.min-h-screen{min-height:100vh}.w-5{width:calc(var(--spacing) * 5)}.w-10{width:calc(var(--spacing) * 10)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-\[300px\]{width:300px}.w-full{width:100%}.max-w-\[720px\]{max-width:720px}.max-w-\[1600px\]{max-width:1600px}.max-w-\[calc\(100vw-2\.5rem\)\]{max-width:calc(100vw - 2.5rem)}.min-w-0{min-width:0}.min-w-44{min-width:calc(var(--spacing) * 44)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-ping{animation:var(--animate-ping)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[repeat\(auto-fit\,minmax\(150px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-9{gap:calc(var(--spacing) * 9)}.gap-\[3px\]{gap:3px}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-x-8{column-gap:calc(var(--spacing) * 8)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-2\.5{row-gap:calc(var(--spacing) * 2.5)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}.gap-y-5{row-gap:calc(var(--spacing) * 5)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[3px\]{border-radius:3px}.rounded-full{border-radius:3.40282e38px}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-accent{border-color:var(--color-accent)}.border-accent\/60{border-color:#79be7e99}@supports (color:color-mix(in lab,red,red)){.border-accent\/60{border-color:color-mix(in oklab,var(--color-accent) 60%,transparent)}}.border-line{border-color:var(--color-line)}.border-line-2{border-color:var(--color-line-2)}.border-line-faint{border-color:var(--color-line-faint)}.border-transparent{border-color:#0000}.bg-bg-0{background-color:var(--color-bg-0)}.bg-bg-0\/40{background-color:#0a0a0a66}@supports (color:color-mix(in lab,red,red)){.bg-bg-0\/40{background-color:color-mix(in oklab,var(--color-bg-0) 40%,transparent)}}.bg-bg-0\/60{background-color:#0a0a0a99}@supports (color:color-mix(in lab,red,red)){.bg-bg-0\/60{background-color:color-mix(in oklab,var(--color-bg-0) 60%,transparent)}}.bg-bg-0\/70{background-color:#0a0a0ab3}@supports (color:color-mix(in lab,red,red)){.bg-bg-0\/70{background-color:color-mix(in oklab,var(--color-bg-0) 70%,transparent)}}.bg-bg-0\/80{background-color:#0a0a0acc}@supports (color:color-mix(in lab,red,red)){.bg-bg-0\/80{background-color:color-mix(in oklab,var(--color-bg-0) 80%,transparent)}}.bg-bg-1{background-color:var(--color-bg-1)}.bg-bg-1\/50{background-color:#10101180}@supports (color:color-mix(in lab,red,red)){.bg-bg-1\/50{background-color:color-mix(in oklab,var(--color-bg-1) 50%,transparent)}}.bg-bg-1\/80{background-color:#101011cc}@supports (color:color-mix(in lab,red,red)){.bg-bg-1\/80{background-color:color-mix(in oklab,var(--color-bg-1) 80%,transparent)}}.bg-bg-2{background-color:var(--color-bg-2)}.bg-bg-2\/95{background-color:#161617f2}@supports (color:color-mix(in lab,red,red)){.bg-bg-2\/95{background-color:color-mix(in oklab,var(--color-bg-2) 95%,transparent)}}.bg-bg-3{background-color:var(--color-bg-3)}.bg-line{background-color:var(--color-line)}.bg-transparent{background-color:#0000}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-8{padding:calc(var(--spacing) * 8)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-9{padding-inline:calc(var(--spacing) * 9)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-7{padding-block:calc(var(--spacing) * 7)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-9{padding-top:calc(var(--spacing) * 9)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-display{font-family:var(--font-display)}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.whitespace-nowrap{white-space:nowrap}.text-accent{color:var(--color-accent)}.text-cost{color:var(--color-cost)}.text-cost\/70{color:#d9c074b3}@supports (color:color-mix(in lab,red,red)){.text-cost\/70{color:color-mix(in oklab,var(--color-cost) 70%,transparent)}}.text-cost\/90{color:#d9c074e6}@supports (color:color-mix(in lab,red,red)){.text-cost\/90{color:color-mix(in oklab,var(--color-cost) 90%,transparent)}}.text-fg{color:var(--color-fg)}.text-fg-bright{color:var(--color-fg-bright)}.text-fg-dim{color:var(--color-fg-dim)}.text-fg-faint{color:var(--color-fg-faint)}.text-line-2{color:var(--color-line-2)}.text-positive{color:var(--color-positive)}.text-positive\/80{color:#6caa71cc}@supports (color:color-mix(in lab,red,red)){.text-positive\/80{color:color-mix(in oklab,var(--color-positive) 80%,transparent)}}.text-prompt{color:var(--color-prompt)}.text-warning{color:var(--color-warning)}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.opacity-0{opacity:0}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow-\[inset_0_-1px_0_var\(--color-line\)\]{--tw-shadow:inset 0 -1px 0 var(--tw-shadow-color,var(--color-line));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[inset_0_1px_0_var\(--color-line\)\]{--tw-shadow:inset 0 1px 0 var(--tw-shadow-color,var(--color-line));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.outline-none{--tw-outline-style:none;outline-style:none}@media(hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\:text-fg-faint::placeholder{color:var(--color-fg-faint)}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.focus-within\:border-line-2:focus-within{border-color:var(--color-line-2)}@media(hover:hover){.hover\:scale-\[1\.18\]:hover{scale:1.18}.hover\:border-accent\/60:hover{border-color:#79be7e99}@supports (color:color-mix(in lab,red,red)){.hover\:border-accent\/60:hover{border-color:color-mix(in oklab,var(--color-accent) 60%,transparent)}}.hover\:border-line:hover{border-color:var(--color-line)}.hover\:border-line-2:hover{border-color:var(--color-line-2)}.hover\:border-warning\/60:hover{border-color:#b4564899}@supports (color:color-mix(in lab,red,red)){.hover\:border-warning\/60:hover{border-color:color-mix(in oklab,var(--color-warning) 60%,transparent)}}.hover\:bg-bg-2:hover{background-color:var(--color-bg-2)}.hover\:bg-bg-2\/40:hover{background-color:#16161766}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bg-2\/40:hover{background-color:color-mix(in oklab,var(--color-bg-2) 40%,transparent)}}.hover\:bg-bg-2\/60:hover{background-color:#16161799}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bg-2\/60:hover{background-color:color-mix(in oklab,var(--color-bg-2) 60%,transparent)}}.hover\:bg-bg-3:hover{background-color:var(--color-bg-3)}.hover\:text-accent:hover{color:var(--color-accent)}.hover\:text-fg:hover{color:var(--color-fg)}.hover\:text-fg-dim:hover{color:var(--color-fg-dim)}.hover\:text-warning:hover{color:var(--color-warning)}.hover\:ring-1:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:ring-accent:hover{--tw-ring-color:var(--color-accent)}}.focus-visible\:opacity-100:focus-visible{opacity:1}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-accent:focus-visible{--tw-ring-color:var(--color-accent)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:scale-\[0\.97\]:active{scale:.97}@media not all and (min-width:40rem){.max-sm\:max-w-\[7rem\]{max-width:7rem}.max-sm\:p-2\.5{padding:calc(var(--spacing) * 2.5)}.max-sm\:py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.max-sm\:py-2{padding-block:calc(var(--spacing) * 2)}}@media(min-width:40rem){.sm\:inline{display:inline}.sm\:table-cell{display:table-cell}.sm\:grid-cols-\[repeat\(auto-fit\,minmax\(min\(340px\,100\%\)\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr))}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}}@media(min-width:48rem){.md\:col-span-2{grid-column:span 2/span 2}.md\:ml-auto{margin-left:auto}.md\:block{display:block}.md\:w-auto{width:auto}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-\[minmax\(0\,1fr\)_210px\]{grid-template-columns:minmax(0,1fr) 210px}.md\:items-start{align-items:flex-start}.md\:border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.md\:pl-6{padding-left:calc(var(--spacing) * 6)}}@media(min-width:64rem){.lg\:block{display:block}}@media(min-width:96rem){.\32xl\:max-w-\[1920px\]{max-width:1920px}}.\[\&\:\:-webkit-search-cancel-button\]\:appearance-none::-webkit-search-cancel-button{-webkit-appearance:none;-moz-appearance:none;appearance:none}.font-display{font-family:var(--font-display);letter-spacing:.04em}@keyframes tok-blink{0%,49%{opacity:1}50%,to{opacity:0}}.cursor-blink{animation:1.1s step-end infinite tok-blink}@keyframes tok-rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.rise{animation:.34s cubic-bezier(.2,.7,.2,1) both tok-rise}@keyframes tok-flash{0%{background-color:color-mix(in oklab,var(--color-accent) 26%,transparent)}to{background-color:#0000}}.flash{border-radius:3px;animation:.6s ease-out tok-flash}}@font-face{font-family:Departure Mono;src:url(./DepartureMono-Regular-2BZob_Zz.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}html.light,.light{color-scheme:light;--color-bg-0:#f4f5f5;--color-bg-1:#fff;--color-bg-2:#eceeee;--color-bg-3:#e1e4e4;--color-line:#d4d9d9;--color-line-2:#bcc2c2;--color-line-faint:#e7eaea;--color-fg:#2b2e2e;--color-fg-dim:#5a6060;--color-fg-faint:#979d9d;--color-fg-bright:#0d1010;--color-cost:#9a7b1c;--color-positive:#2f8f57;--color-warning:#b0403a;--color-prompt:#2f8f57;--color-accent:#2f8f57}.dark{color-scheme:dark;--color-bg-0:#0a0a0a;--color-bg-1:#101011;--color-bg-2:#161617;--color-bg-3:#1d1d1e;--color-line:#262627;--color-line-2:#343435;--color-line-faint:#1a1a1b;--color-fg:#d4d6d6;--color-fg-dim:#8d9090;--color-fg-faint:#585b5b;--color-fg-bright:#f3f5f5;--color-cost:#d9c074;--color-positive:#6caa71;--color-warning:#b45648;--color-prompt:#79be7e;--color-accent:#79be7e}@media(prefers-reduced-motion:reduce){.rise,.flash,.cursor-blink,.animate-ping,.dialog-pop{animation:none!important}}@keyframes tok-pop{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.dialog-pop{animation:.18s cubic-bezier(.2,.7,.2,1) both tok-pop}@keyframes tok-fade{0%{opacity:0}to{opacity:1}}.dialog-fade{animation:.18s ease-out both tok-fade}::view-transition-old(root){animation:.16s ease-out both tok-vt-out}::view-transition-new(root){animation:.22s cubic-bezier(.2,.7,.2,1) both tok-vt-in}@keyframes tok-vt-out{to{opacity:0}}@keyframes tok-vt-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){::view-transition-old(root){animation:none!important}::view-transition-new(root){animation:none!important}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}
1
+ @font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAASIABAAAAAACQQAAAQuAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVF4AdBEICoRkhAALIAABNgIkAzoEIAWFAAeBFAwHG2oHKJ6DceNW4lJEFHn9tEOE37LNsvkjHr7f739rn3u+OSrSxLQytE91Dw2PYtNVq3Qaw/vJ7fUBMdOj/u2ImB98cT5WUx9F13ZKt06mU7tG1sAYcM26yCRX4f/0904bmwq8hwkUUMTRX61pa9C3xlpAGYw1vOu8C2SBZZFlld7DAW82RJWmwYMI1AJCKBNCIASqdZGFmtPSNQRhMpR0EKjWTwm6z6sJ+4jqhxjovTinVdRpZaQjaQzAYjI8NgAKDJCokgunCn9oUQE8VZd/F//+v6P4F1U9gLr58yNI/dJX9BAshEoJbTDogz7ocKoUsPvES8UK/aQIUQgpGgECBVLkOEV6iASTYgNAPKdNXayhDPL7IJuAZnEYSZ0eOLc9i5Rv5/+lEi3sW/kfnCf/+fTe0sxS7CKLx5erRJkKOixEqQaoqrvx5HN4iz4VhX0gS6DjFIWUzn/fIXJRVFY1NFRVNVeFt+SYmrK6vCU6eJsnKnJj5HTESMTQZOTI3Y/tzr3rUcOsiRy/ciP50s3Mycgxmhz9GMXhjzVH30ut796NHP0UUa31/Zoa6vCH6iPvdIM0IRANaT60FablmZlZd+UKNFy9NrvnFGxb5NC2CRxR0/rIyF/WNn+35sv9r+tHVhkseuWGKkCPPh96+GXt8Lc/Sh24ujfjf+tNw1lZWreiPuHb/PSpyjdv2rf/++ZE5TSKjFdZxYsBvr1sEHl5STuHZqYR7jGYGvGBBdjcaB5bODY1GAxMjsd0wDMIzXAXODRd74DxNMtO4YuYHclgLQRzp9KlUmxptCwv9bYgvWGD2xBW7r9413fdJu+mxzvzAUYeeONQvZP4kgfqZle4jhH/MWh+UbxgtJdrLdXLymNL53PRU0D3Q6FcXTfGqGcul6vrqhgLGAVSv+IVIfZOHpu+mlLqSlnj903j8mazXDsba/wbxhS/4Oubh1c5/uXDgt4j5KtnGEy5BIJHo0ur+jD+r2qCkuP1aRVM8EpUoRYSJyqNRA38uwDvHBNo0AejO2Z+ZYLLal1QiFyFh1EDQOgSCSCpjwwKU8yDbIjroEwne0G5Qca49cYp4AlqtQNZfWTQoFb1tRpFYAmRD+HXTkV4uQhG2bg4OKmyoypAsUGtWgQXyFxYrkpODeUxvGqIZA61erXo0sFG1UBGuPgpuon8RNUG2DhovAjZCBuZwtXrU3mQGki9+pm0eVZAXoWxLWTQoYHBPrJR4WunNxIFbCHfkTyPK+sqxjxDmGArZvf79JGJ3GwEqjwc7a7NIrl/7bJ7Nzu4+n1Ow6shEPnUrtVo7cnd5Wi5qCUbBIQbNKCP95FMCSZylEV5VCiiMqqiOmrKZ/I/C0gI1fyuulVcM2E1r4MhtcV/fbCD+HwEvVzH1dGNAzFE0FTbKzyQz3gootrNbN2a4PuG0j0JOgE=) format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAAbUAA8AAAAACOgAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABWAAAABgAAAAcABQABEdQT1MAAAFwAAAAHgAAAB5EdEx1R1NVQgAAAZAAAAAnAAAAKLj8uOpPUy8yAAABuAAAAFEAAABgFwRca1NUQVQAAAIMAAAARgAAAF7mY9MfY21hcAAAAlQAAABRAAAAdAyHCodnYXNwAAACqAAAAAgAAAAIAAAAEGdseWYAAAKwAAAB6QAAAl7g5OpvaGVhZAAABJwAAAA2AAAANhSQ8UNoaGVhAAAE1AAAAB8AAAAkAcoBImhtdHgAAAT0AAAAHgAAADofBAM2bG9jYQAABRQAAAAgAAAAIATcBZ9tYXhwAAAFNAAAABwAAAAgAIcCb25hbWUAAAVQAAABEgAAAoA4pV3kcG9zdAAABmQAAABwAAAAlNdzMTB42mNgZGBg4GGAAEYgZAWTjCAeAAG0ABkAAQAAAAoAHAAcAAFERkxUAAgABAAAAAD//wAAAAAAAHjaY2BkYGDgYlADQiYXN58QBqGcxJI8Bj4GEGABEf//g0gAWkkFVQB42mNgYYpinMDAysDA1MUUwcDA4A2hGeMYjBgdgKIMDJwMUMDEzoAEvJyAxAEGXpaXzH/+XWFgYP7DqKPAwDj//nWgSjWmW0BZBQZWABNDDdYAAAB42kXIIQIBARQFwHl/QQIkWXInUAANXMOBJCcTd+KIGCjMNViq9/H0CM6P/S0j0bOwUqh08iEb8kPTXn3RiMoYhD90Nwc3AAB42lXIRwHCQBAF0JceehWAlTjhjikUgAVQA4mJLbdk5neUqHBVKWSv3XF2VCnt3AyevkVZv+sxBBbbq/6HfFP4hEcYQgEK82v1aHQ5RTs3FRQAAAAAAQAB//8AD3jabZA1tNRAFEDfTGDdfXHI2QQnZJJvK5ngDs13Welwt/78CtcS7xvcrcHKbXCtceh+wgtu437nXRCgC4BY9AGOXOAFYNHR0dzoKCGju8gJ6xiZaF3DWqcPBiSV5i2geaCgAlAJ77ghgjfiLC7KojvOZEmSXS63emXr5W7lsTLtXFMkRmks4ly+cYOEnvO2YLDNANv+9oJwhkpAAJAcHPG/1RC2BERc1ZGGMxYVWDyVSjc0NMaZELUf9e4JhCgNB3b2PiJRctuqZ0WPR8zilxutN/ji97vUBYMAnGjtzxjtK3wrDaMABo+R9KjWwNRUMppwuWS1QdfFZCIlMF2TxDGuJJlYW7OmVlvD+sx86b1hvC/l8yXf2hqZ66xbZ80yWzyD9/fzGaRzA58+nSOzYC+gw9AP+vyNqUAUhoD4lSnputbgUFPJ5O9Y+ReWlxkrc96naX08b3zk/KORb+E+VjYPmH1M6+UHeVlDtCzzGZ9FY8YMA8gPMsQA0jqaGkHT6cYSdVwl7Zs9Wzx+DyWUugPujd03T52ikrUvM26kF9PIcRmycuDBKcd3XRhPDgtnQACINzJ3fVl1tTB++3bc2S7kyD3cCQIQNMcSKaY2YOciE+d0zFbGjps6u0PILTFlRZHNJfAFnfeHtgAAAAABAAAAAjYEro52gl8PPPUAAwPoAAAAANvSppoAAAAA29rQ8vk5/tQEkgP8AAAABgACAAAAAAAAeNpjYGRgYP7z7woDA8uGn5Z/+1kmAUVQAR8Ar8AG6gB42mOKYIgCYiMkrAzCUHEbJJoBikHgCkMPAPDwCFUAAAAAABoAOwBGAFEAbwB3AKkAsQDmAQkBCQEJAQkBFgEveNpjYGRgYOBn3MGQx7CFgQ3MQwBmBiYALRoB+HjajJADbgVQEEXPZ20bQW3bthvXbr8Vp4to1KV0AV1Wb9JvZzJvzhvcB6CQL0wYzHnAj6E/yAYaDeVBNlJsMAfZxCy/QTbTy3eQLdTzGWQr3VwGuZhx2v/ZAIVUB9kc0TSUKJ8f5FIRHGPjnWs+2MKt+MYzt1xwr/jIk3JymR0X0wzIXKo7VbXjFvfLn3lTtCn7qPoB6+yyzb3qy8pdq/6hrj11fMj7OFbtEY+mrlU/516rVFCdVobplw/JEjVaCaqIYlUiUzOaW9aa/Q1idmlPXZHbCagW/B10XwaRi06VuVdMf+9DnIov6rlF8yzhUXxC/4c66Uz48UepqEN9N/Tzt2RwjOljsUUfj581AbaEXsIAAHjaY2BiAIP/qQxGQIqRAR3wA7EKw0lGJgYbRmZGFkZWRjZGdgZmRg5GTkYuRm42x6Si1LJU9tK8TAMTR1cI7WoB5btB+Zas6Ym5uYlgnoGjAZNzEF9icmlJanJ+bpJecmJxKg9IxtjADMwBAKDtHJg=) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2) format("woff2"),url(./jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./jetbrains-mono-greek-400-normal-C190GLew.woff2) format("woff2"),url(./jetbrains-mono-greek-400-normal-B9oWc5Lo.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(./jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2) format("woff2"),url(./jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./jetbrains-mono-latin-400-normal-V6pRDFza.woff2) format("woff2"),url(./jetbrains-mono-latin-400-normal-6-qcROiO.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(data:font/woff2;base64,d09GMgABAAAAAASUABAAAAAACRAAAAQ3AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVEwAdBEICoRkg3oLIAABNgIkAzoEIAWFHgeBFAwHG3AHKB4HzukrRjyF5Gb4kQ/B873d17mv8TWkoqUUGaHodJCtoqntw7m8tiPWyGkfWDU/IMpzVk4zAs9Czv3c7Os5NvKFG1Ht9vBVXySRZpJc4tTrbM3sTRFcLa3zVboKWRIoAksKSKgqUQWEwlSoqjp44V5J9/kjd0+Fi5xaFjwJArgBAIJgIAgCCAI4CdNMqGuYXYUKdADLAkAAJwl6iX0+bZqEm1AH0Hu9rvrJHwxQG1Q/gFYwWYbgTRWgwEESVzbmtjQAt3DXO7Tu/+9Q/KNKWhTCgZ8fQSWoL0CUUgTBjgL8iEAcce7YHBeA8ZvogieCnxI0BCVeACCAAhBD/oDcAdUPABSgAX4kBPBTwjCAjwYSCneiqF65LUo/qXdYFrRwTujtMrKm07plTbSqLQFAiHBN7E4DG5wkiGXhCYBNETh3K/AciHN69iFfQjFOr9EXQQAAQXRNszs8PR0OH4fDV/dwGe76CHdj1MQa11DXYGcfZ6+B1X0OfwjY+i7KpQ1w9d+1z3/HydCB1f3U8A0fRFv+0bXxPWrZu3d9Nn4UcbLs/QCXLH/j3PCKblKOiZxLOR78W9brPo7eGTLz/F27ZPmePQdCB1YP4nJU91o4gU9cy64L3c3SPu8GfDn6ZXD2cGmllVqSxtD5vCXHm5xaeHlnpffx7DcPvXog5NnjA//cPz2btsz3yf+0MI8ri33tuv7upNbYmW5STbosW8bYItV/SPzxvXC0KnpWnFdC91oojit5Lyo6WcJQ1YzwBYbi52ohJVpcxfcHBqsv0nFz8U74rzS6M7r0RVlXZ3jJC4G92O//7Lm78VOtnUx+aQxAzsqPnrRr1t9zDrezKePvZ027x+fGte4s4NXu7/jEp3G9cM1bICYgACbuETUUD5wmenGXA/IBpAKVrl0AEJ5cqr6Q89tGq+SpqkDfX2DtG+pZ9teuae0AX98c301CX179InyErnSG8WCiABB4HFbVrw/lpTdBIOk82nXbpHKoQGyBpUovAAD4XQA8ZTUCeBJHIpI0v0FRrgcnckV3ANckrwYJKXEihQfdSKPER6XeExmEeEMmSe6QBwWmkZdmSOSthhibgIkBlUYreBKd/0NeVAE9WAyEaQpH6KikDWlUVg43Jy2FOmaYlsZhDEGZXO3mWEyWHI6zuaJkMlcSQ9k4F+KidIiFyZItGDc7r1pUj6wP6zrWB0/fbeeFeHl4YOvETMNiM8Ny+7OO6Qh2wur20YVxFts5dlORdl5Kwd5utR7SRcxqX8RA5Ehacha76hg7c6yzNm/Xf6vOLNrv544lIEkWg7xWo/ItBAeIJEmt0XgBwgM8gTifoiiLJroYYooNTeziEKe4zOoR/wvIKp89hSr+6jFAqw/LaonjmZHSscMNg4iPlWpFrO1RN3zkMU+/xUP+JQ99TbvTl1Vg0gtirT6lbwYAAAA=) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2) format("woff2"),url(./jetbrains-mono-cyrillic-500-normal-DJqRU3vO.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./jetbrains-mono-greek-500-normal-JpySY46c.woff2) format("woff2"),url(./jetbrains-mono-greek-500-normal-D7SFKleX.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(data:font/woff2;base64,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) format("woff2"),url(./jetbrains-mono-vietnamese-500-normal-DNRqzVM1.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./jetbrains-mono-latin-ext-500-normal-Cut-4mMH.woff2) format("woff2"),url(./jetbrains-mono-latin-ext-500-normal-ckzbgY84.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./jetbrains-mono-latin-500-normal-BWZEU5yA.woff2) format("woff2"),url(./jetbrains-mono-latin-500-normal-CJOVTJB7.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(data:font/woff2;base64,d09GMgABAAAAAASAABAAAAAACNgAAAQlAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVEwAdBEICoRkg3gLIAABNgIkAzoEIAWEaAeBFAwHGzgHSJ4DbjN9OmtkIy0becnT/RjJ4uGfw99974/GXrhoTCqLok66NY3jTloEUdrmwCevn/Ls30xSpFlZ6UJMrW+fTNwAEdSuvSzCRANvEgnjUmw8swT+87+w7I/7qb8XlIB7NpGBjXiUjRX0b7ZpJ8+orRLzvGhWYCMdAU3BbRdPuqOeKAXuRKAWEEJJCIEQqNbLD9osq2kBviL8A4Fq4yLgAa+6DNaiAwcYOrqYHfgQcMgL3AFgG4fHHqREEUBSxUtmBfzNWxXADfviy8Kff7dA4QfFBQG6fnoX5Dh+gEEcIVRKtMIYhc/kCgsCDiarQY4QWpEKQoYTAAIJUcaHAHIXIN9BooBWhEAr0j7QzAkh1RnEWOY4wuRW8uX/f5o5W8gXcjriOUb9z/wjACRuWaWrpKIyLMQ/DUDN/TT+ErgHRpPBIRQrKCcZCvxBBCBEkSD4lKMjRblQlCvpQHPsSZE9R6K2o/vpXkGboKWbbltxx2feLT+a6KJb5293n7vTt53uwOzUO4gYc5eedhvS+a1bbdNuIiSA89cuGo25IZh6DXrJJIIUUibFUG0zt+ijO+cvnj8fjVm4cKlvN90DwzrdMmy8H9GjDyv90Xz2W10PVj3oTY7LLfwfmxMHoef+8n33R0duOxF3LPCYFXtymWNdcLBD3VF4S91+GWf8c9k7sZC6fPpnbENnCmayerBNki0ZbFUXiHV/wkxWklGmydCkaR5o0oZnlj3oSVdnZKjTITaXStOyWGYakzUgTSt1gvSs/otJL1FkzE/3e+aXvj7n+TOv9HkZ6evS4e3OXafCx8iqJfNGpQLM7rkt0ppRJ8N3gd1IjHLaROM0cLkhdf2NQjZ4bmjo2mBWKJ4CPA4IZXX9hFlPBnhxWhXzgBGQ88QeRD3j1/AD5a/JxMnL5gK5deaC2H7HvK98gngBbzfWLKD0g2ufeA7nMsQepBwDgpdhy90BzC+8DSCers8O6KKloYn0RCtKo9EM9LsAd7AgNBhFGEAsvl4K1LpCiCIF3IZHFUKvX5AqfUPBgkO+ovHpUNJtOJSN6hDWWxAigkCt9hbEXdaOHLvI6lM5gQA79LRYOpUsWBpKYu2klOQULGlGCwOzHIkSmYmZKBlQrlmCQ0mDv5SeiVyiemVqVJGyEDJhKemY1dLT0YsnpKch0UbKxExJTydIigQpkiUvYA3SVFDqFH2uNggh343VmPs2ycX0DIYwPYTigMak5AjS0ohI8zmoo4EJwypS4iVcDOuDuvRMgytHPa5LTjnoc1YiCcT0tBI3qjXxqqFomJf2PylAOHMDRp1HGBaDQCTiIC7iQSH4iEICRHMZkUlqk/KsOmVSGlOK7NIseRNZFp3NkbNaLateTmKScHGTAyu2WqQf6lD8rMNg1+lKTcpwkfvQ/7eRMwAA) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(./jetbrains-mono-cyrillic-700-normal-BWTpRfYl.woff2) format("woff2"),url(./jetbrains-mono-cyrillic-700-normal-CEoEElIJ.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(./jetbrains-mono-greek-700-normal-C6CZE3T8.woff2) format("woff2"),url(./jetbrains-mono-greek-700-normal-DEigVDxa.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(data:font/woff2;base64,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) format("woff2"),url(./jetbrains-mono-vietnamese-700-normal-BDLVIk2r.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(./jetbrains-mono-latin-ext-700-normal-CZipNAKV.woff2) format("woff2"),url(./jetbrains-mono-latin-ext-700-normal-CxPITLHs.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(./jetbrains-mono-latin-700-normal-BYuf6tUa.woff2) format("woff2"),url(./jetbrains-mono-latin-700-normal-D3wTyLJW.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-normal:400;--font-weight-medium:500;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--radius-md:.375rem;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--font-display:"Departure Mono", "JetBrains Mono", ui-monospace, monospace;--color-bg-0:#0a0a0a;--color-bg-1:#101011;--color-bg-2:#161617;--color-bg-3:#1d1d1e;--color-line:#262627;--color-line-2:#343435;--color-line-faint:#1a1a1b;--color-fg:#d4d6d6;--color-fg-dim:#8d9090;--color-fg-faint:#585b5b;--color-fg-bright:#f3f5f5;--color-cost:#d9c074;--color-positive:#6caa71;--color-warning:#b45648;--color-prompt:#79be7e;--color-accent:#79be7e}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root{color-scheme:dark}html,body,#root{height:100%}body{background-color:var(--color-bg-0);background-image:radial-gradient(var(--color-line-faint) .5px,transparent .5px);color:var(--color-fg);font-family:var(--font-mono);-webkit-font-smoothing:antialiased;font-variant-ligatures:none;background-size:24px 24px;background-attachment:fixed;margin:0;font-size:13px;line-height:1.5;overflow-x:hidden}.tnum{font-variant-numeric:tabular-nums}::selection{background:#79be7e59}@supports (color:color-mix(in lab,red,red)){::selection{background:color-mix(in oklab,var(--color-accent) 35%,transparent)}}::selection{color:var(--color-fg-bright)}*{scrollbar-width:thin;scrollbar-color:var(--color-line-2) transparent}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--color-line-2);border-radius:6px}::-webkit-scrollbar-track{background:0 0}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.-top-\[7px\]{top:-7px}.-top-\[11px\]{top:-11px}.top-0{top:0}.top-2{top:calc(var(--spacing) * 2)}.right-0{right:0}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.bottom-0{bottom:0}.bottom-3{bottom:calc(var(--spacing) * 3)}.left-3{left:calc(var(--spacing) * 3)}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.z-\[60\]{z-index:60}.mx-auto{margin-inline:auto}.my-1{margin-block:var(--spacing)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-auto{margin-top:auto}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:var(--spacing)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.aspect-square{aspect-ratio:1}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-\[11px\]{width:11px;height:11px}.size-full{width:100%;height:100%}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-3{height:calc(var(--spacing) * 3)}.h-\[clamp\(320px\,42vh\,560px\)\]{height:clamp(320px,42vh,560px)}.h-full{height:100%}.h-px{height:1px}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-\[88vh\]{max-height:88vh}.max-h-\[calc\(100vh-240px\)\]{max-height:calc(100vh - 240px)}.min-h-24{min-height:calc(var(--spacing) * 24)}.min-h-\[50vh\]{min-height:50vh}.min-h-screen{min-height:100vh}.w-5{width:calc(var(--spacing) * 5)}.w-10{width:calc(var(--spacing) * 10)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-\[300px\]{width:300px}.w-full{width:100%}.max-w-\[720px\]{max-width:720px}.max-w-\[1600px\]{max-width:1600px}.max-w-\[calc\(100vw-2\.5rem\)\]{max-width:calc(100vw - 2.5rem)}.min-w-0{min-width:0}.min-w-44{min-width:calc(var(--spacing) * 44)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-ping{animation:var(--animate-ping)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[repeat\(auto-fit\,minmax\(150px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-9{gap:calc(var(--spacing) * 9)}.gap-\[3px\]{gap:3px}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-x-8{column-gap:calc(var(--spacing) * 8)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-2\.5{row-gap:calc(var(--spacing) * 2.5)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}.gap-y-5{row-gap:calc(var(--spacing) * 5)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[3px\]{border-radius:3px}.rounded-full{border-radius:3.40282e38px}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-accent{border-color:var(--color-accent)}.border-accent\/60{border-color:#79be7e99}@supports (color:color-mix(in lab,red,red)){.border-accent\/60{border-color:color-mix(in oklab,var(--color-accent) 60%,transparent)}}.border-line{border-color:var(--color-line)}.border-line-2{border-color:var(--color-line-2)}.border-line-faint{border-color:var(--color-line-faint)}.border-transparent{border-color:#0000}.bg-bg-0{background-color:var(--color-bg-0)}.bg-bg-0\/40{background-color:#0a0a0a66}@supports (color:color-mix(in lab,red,red)){.bg-bg-0\/40{background-color:color-mix(in oklab,var(--color-bg-0) 40%,transparent)}}.bg-bg-0\/60{background-color:#0a0a0a99}@supports (color:color-mix(in lab,red,red)){.bg-bg-0\/60{background-color:color-mix(in oklab,var(--color-bg-0) 60%,transparent)}}.bg-bg-0\/70{background-color:#0a0a0ab3}@supports (color:color-mix(in lab,red,red)){.bg-bg-0\/70{background-color:color-mix(in oklab,var(--color-bg-0) 70%,transparent)}}.bg-bg-0\/80{background-color:#0a0a0acc}@supports (color:color-mix(in lab,red,red)){.bg-bg-0\/80{background-color:color-mix(in oklab,var(--color-bg-0) 80%,transparent)}}.bg-bg-1{background-color:var(--color-bg-1)}.bg-bg-1\/50{background-color:#10101180}@supports (color:color-mix(in lab,red,red)){.bg-bg-1\/50{background-color:color-mix(in oklab,var(--color-bg-1) 50%,transparent)}}.bg-bg-1\/80{background-color:#101011cc}@supports (color:color-mix(in lab,red,red)){.bg-bg-1\/80{background-color:color-mix(in oklab,var(--color-bg-1) 80%,transparent)}}.bg-bg-2{background-color:var(--color-bg-2)}.bg-bg-2\/95{background-color:#161617f2}@supports (color:color-mix(in lab,red,red)){.bg-bg-2\/95{background-color:color-mix(in oklab,var(--color-bg-2) 95%,transparent)}}.bg-bg-3{background-color:var(--color-bg-3)}.bg-line{background-color:var(--color-line)}.bg-transparent{background-color:#0000}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-8{padding:calc(var(--spacing) * 8)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-9{padding-inline:calc(var(--spacing) * 9)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-7{padding-block:calc(var(--spacing) * 7)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-9{padding-top:calc(var(--spacing) * 9)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-display{font-family:var(--font-display)}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.whitespace-nowrap{white-space:nowrap}.text-accent{color:var(--color-accent)}.text-cost{color:var(--color-cost)}.text-cost\/70{color:#d9c074b3}@supports (color:color-mix(in lab,red,red)){.text-cost\/70{color:color-mix(in oklab,var(--color-cost) 70%,transparent)}}.text-cost\/90{color:#d9c074e6}@supports (color:color-mix(in lab,red,red)){.text-cost\/90{color:color-mix(in oklab,var(--color-cost) 90%,transparent)}}.text-fg{color:var(--color-fg)}.text-fg-bright{color:var(--color-fg-bright)}.text-fg-dim{color:var(--color-fg-dim)}.text-fg-faint{color:var(--color-fg-faint)}.text-line-2{color:var(--color-line-2)}.text-positive{color:var(--color-positive)}.text-positive\/80{color:#6caa71cc}@supports (color:color-mix(in lab,red,red)){.text-positive\/80{color:color-mix(in oklab,var(--color-positive) 80%,transparent)}}.text-prompt{color:var(--color-prompt)}.text-warning{color:var(--color-warning)}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.opacity-0{opacity:0}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-100{opacity:1}.shadow-\[inset_0_-1px_0_var\(--color-line\)\]{--tw-shadow:inset 0 -1px 0 var(--tw-shadow-color,var(--color-line));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[inset_0_1px_0_var\(--color-line\)\]{--tw-shadow:inset 0 1px 0 var(--tw-shadow-color,var(--color-line));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.outline-none{--tw-outline-style:none;outline-style:none}@media(hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\:text-fg-faint::placeholder{color:var(--color-fg-faint)}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.focus-within\:border-line-2:focus-within{border-color:var(--color-line-2)}@media(hover:hover){.hover\:scale-\[1\.18\]:hover{scale:1.18}.hover\:border-accent\/60:hover{border-color:#79be7e99}@supports (color:color-mix(in lab,red,red)){.hover\:border-accent\/60:hover{border-color:color-mix(in oklab,var(--color-accent) 60%,transparent)}}.hover\:border-line:hover{border-color:var(--color-line)}.hover\:border-line-2:hover{border-color:var(--color-line-2)}.hover\:border-warning\/60:hover{border-color:#b4564899}@supports (color:color-mix(in lab,red,red)){.hover\:border-warning\/60:hover{border-color:color-mix(in oklab,var(--color-warning) 60%,transparent)}}.hover\:bg-bg-2:hover{background-color:var(--color-bg-2)}.hover\:bg-bg-2\/40:hover{background-color:#16161766}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bg-2\/40:hover{background-color:color-mix(in oklab,var(--color-bg-2) 40%,transparent)}}.hover\:bg-bg-2\/60:hover{background-color:#16161799}@supports (color:color-mix(in lab,red,red)){.hover\:bg-bg-2\/60:hover{background-color:color-mix(in oklab,var(--color-bg-2) 60%,transparent)}}.hover\:bg-bg-3:hover{background-color:var(--color-bg-3)}.hover\:text-accent:hover{color:var(--color-accent)}.hover\:text-fg:hover{color:var(--color-fg)}.hover\:text-fg-dim:hover{color:var(--color-fg-dim)}.hover\:text-warning:hover{color:var(--color-warning)}.hover\:ring-1:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:ring-accent:hover{--tw-ring-color:var(--color-accent)}}.focus-visible\:opacity-100:focus-visible{opacity:1}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-accent:focus-visible{--tw-ring-color:var(--color-accent)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:scale-\[0\.97\]:active{scale:.97}@media not all and (min-width:40rem){.max-sm\:max-w-\[7rem\]{max-width:7rem}.max-sm\:p-2\.5{padding:calc(var(--spacing) * 2.5)}.max-sm\:py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.max-sm\:py-2{padding-block:calc(var(--spacing) * 2)}}@media(min-width:40rem){.sm\:inline{display:inline}.sm\:table-cell{display:table-cell}.sm\:grid-cols-\[repeat\(auto-fit\,minmax\(min\(340px\,100\%\)\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr))}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}}@media(min-width:48rem){.md\:col-span-2{grid-column:span 2/span 2}.md\:ml-auto{margin-left:auto}.md\:block{display:block}.md\:w-auto{width:auto}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-\[minmax\(0\,1fr\)_210px\]{grid-template-columns:minmax(0,1fr) 210px}.md\:items-start{align-items:flex-start}.md\:border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.md\:pl-6{padding-left:calc(var(--spacing) * 6)}}@media(min-width:64rem){.lg\:block{display:block}}@media(min-width:96rem){.\32xl\:max-w-\[1920px\]{max-width:1920px}}.\[\&\:\:-webkit-search-cancel-button\]\:appearance-none::-webkit-search-cancel-button{-webkit-appearance:none;-moz-appearance:none;appearance:none}.font-display{font-family:var(--font-display);letter-spacing:.04em}@keyframes tok-blink{0%,49%{opacity:1}50%,to{opacity:0}}.cursor-blink{animation:1.1s step-end infinite tok-blink}@keyframes tok-rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.rise{animation:.34s cubic-bezier(.2,.7,.2,1) both tok-rise}@keyframes tok-flash{0%{background-color:color-mix(in oklab,var(--color-accent) 26%,transparent)}to{background-color:#0000}}.flash{border-radius:3px;animation:.6s ease-out tok-flash}}@font-face{font-family:Departure Mono;src:url(./DepartureMono-Regular-2BZob_Zz.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}html.light,.light{color-scheme:light;--color-bg-0:#f4f5f5;--color-bg-1:#fff;--color-bg-2:#eceeee;--color-bg-3:#e1e4e4;--color-line:#d4d9d9;--color-line-2:#bcc2c2;--color-line-faint:#e7eaea;--color-fg:#2b2e2e;--color-fg-dim:#5a6060;--color-fg-faint:#979d9d;--color-fg-bright:#0d1010;--color-cost:#9a7b1c;--color-positive:#2f8f57;--color-warning:#b0403a;--color-prompt:#2f8f57;--color-accent:#2f8f57}.dark{color-scheme:dark;--color-bg-0:#0a0a0a;--color-bg-1:#101011;--color-bg-2:#161617;--color-bg-3:#1d1d1e;--color-line:#262627;--color-line-2:#343435;--color-line-faint:#1a1a1b;--color-fg:#d4d6d6;--color-fg-dim:#8d9090;--color-fg-faint:#585b5b;--color-fg-bright:#f3f5f5;--color-cost:#d9c074;--color-positive:#6caa71;--color-warning:#b45648;--color-prompt:#79be7e;--color-accent:#79be7e}@media(prefers-reduced-motion:reduce){.rise,.flash,.cursor-blink,.animate-ping,.dialog-pop{animation:none!important}}@keyframes tok-pop{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.dialog-pop{animation:.18s cubic-bezier(.2,.7,.2,1) both tok-pop}@keyframes tok-fade{0%{opacity:0}to{opacity:1}}.dialog-fade{animation:.18s ease-out both tok-fade}::view-transition-old(root){animation:.16s ease-out both tok-vt-out}::view-transition-new(root){animation:.22s cubic-bezier(.2,.7,.2,1) both tok-vt-in}@keyframes tok-vt-out{to{opacity:0}}@keyframes tok-vt-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){::view-transition-old(root){animation:none!important}::view-transition-new(root){animation:none!important}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}
@@ -1,2 +1,2 @@
1
- import{R as m,r as nt,j as d,P as xt,E as At,f as at,a as Pt,b as Y,S as wt}from"./index-Bn2Drvgm.js";import{i as it,c as ot,D as Nt,f as Qt,E as Zt,L as K,a as $,C as rt,A as Tt,b as T,d as mt,e as Z,h as $t,g as It,j as st,u as Rt,G as Bt,k as lt,m as et,l as X,n as te,o as Ft,X as H,Y as tt,p as Wt,q as Ot,r as jt,R as St,s as ct,t as ut,v as V,T as pt,w as ft,x as vt}from"./chart-4esa6Moa.js";var ee=["type","layout","connectNulls","ref"],re=["key"];function U(t){"@babel/helpers - typeof";return U=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(r){return typeof r}:function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},U(t)}function kt(t,r){if(t==null)return{};var n=ne(t,r),e,a;if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(a=0;a<o.length;a++)e=o[a],!(r.indexOf(e)>=0)&&Object.prototype.propertyIsEnumerable.call(t,e)&&(n[e]=t[e])}return n}function ne(t,r){if(t==null)return{};var n={};for(var e in t)if(Object.prototype.hasOwnProperty.call(t,e)){if(r.indexOf(e)>=0)continue;n[e]=t[e]}return n}function Q(){return Q=Object.assign?Object.assign.bind():function(t){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var e in n)Object.prototype.hasOwnProperty.call(n,e)&&(t[e]=n[e])}return t},Q.apply(this,arguments)}function Et(t,r){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(t);r&&(e=e.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),n.push.apply(n,e)}return n}function _(t){for(var r=1;r<arguments.length;r++){var n=arguments[r]!=null?arguments[r]:{};r%2?Et(Object(n),!0).forEach(function(e){N(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Et(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}function G(t){return se(t)||oe(t)||ie(t)||ae()}function ae(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
1
+ import{R as m,r as nt,j as d,P as xt,E as At,f as at,a as Pt,b as Y,S as wt}from"./index-CYYYW9md.js";import{i as it,c as ot,D as Nt,f as Qt,E as Zt,L as K,a as $,C as rt,A as Tt,b as T,d as mt,e as Z,h as $t,g as It,j as st,u as Rt,G as Bt,k as lt,m as et,l as X,n as te,o as Ft,X as H,Y as tt,p as Wt,q as Ot,r as jt,R as St,s as ct,t as ut,v as V,T as pt,w as ft,x as vt}from"./chart-BcpjNTdg.js";var ee=["type","layout","connectNulls","ref"],re=["key"];function U(t){"@babel/helpers - typeof";return U=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(r){return typeof r}:function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},U(t)}function kt(t,r){if(t==null)return{};var n=ne(t,r),e,a;if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(a=0;a<o.length;a++)e=o[a],!(r.indexOf(e)>=0)&&Object.prototype.propertyIsEnumerable.call(t,e)&&(n[e]=t[e])}return n}function ne(t,r){if(t==null)return{};var n={};for(var e in t)if(Object.prototype.hasOwnProperty.call(t,e)){if(r.indexOf(e)>=0)continue;n[e]=t[e]}return n}function Q(){return Q=Object.assign?Object.assign.bind():function(t){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var e in n)Object.prototype.hasOwnProperty.call(n,e)&&(t[e]=n[e])}return t},Q.apply(this,arguments)}function Et(t,r){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(t);r&&(e=e.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),n.push.apply(n,e)}return n}function _(t){for(var r=1;r<arguments.length;r++){var n=arguments[r]!=null?arguments[r]:{};r%2?Et(Object(n),!0).forEach(function(e){N(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Et(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}function G(t){return se(t)||oe(t)||ie(t)||ae()}function ae(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
2
2
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ie(t,r){if(t){if(typeof t=="string")return yt(t,r);var n=Object.prototype.toString.call(t).slice(8,-1);if(n==="Object"&&t.constructor&&(n=t.constructor.name),n==="Map"||n==="Set")return Array.from(t);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return yt(t,r)}}function oe(t){if(typeof Symbol<"u"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}function se(t){if(Array.isArray(t))return yt(t)}function yt(t,r){(r==null||r>t.length)&&(r=t.length);for(var n=0,e=new Array(r);n<r;n++)e[n]=t[n];return e}function le(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}function Dt(t,r){for(var n=0;n<r.length;n++){var e=r[n];e.enumerable=e.enumerable||!1,e.configurable=!0,"value"in e&&(e.writable=!0),Object.defineProperty(t,Kt(e.key),e)}}function ce(t,r,n){return r&&Dt(t.prototype,r),n&&Dt(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function ue(t,r,n){return r=dt(r),pe(t,Mt()?Reflect.construct(r,n||[],dt(t).constructor):r.apply(t,n))}function pe(t,r){if(r&&(U(r)==="object"||typeof r=="function"))return r;if(r!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return fe(t)}function fe(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function Mt(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(Mt=function(){return!!t})()}function dt(t){return dt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},dt(t)}function de(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),r&&bt(t,r)}function bt(t,r){return bt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,a){return e.__proto__=a,e},bt(t,r)}function N(t,r,n){return r=Kt(r),r in t?Object.defineProperty(t,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[r]=n,t}function Kt(t){var r=he(t,"string");return U(r)=="symbol"?r:r+""}function he(t,r){if(U(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var e=n.call(t,r);if(U(e)!="object")return e;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}var J=(function(t){function r(){var n;le(this,r);for(var e=arguments.length,a=new Array(e),o=0;o<e;o++)a[o]=arguments[o];return n=ue(this,r,[].concat(a)),N(n,"state",{isAnimationFinished:!0,totalLength:0}),N(n,"generateSimpleStrokeDasharray",function(i,s){return"".concat(s,"px ").concat(i-s,"px")}),N(n,"getStrokeDasharray",function(i,s,l){var c=l.reduce(function(P,A){return P+A});if(!c)return n.generateSimpleStrokeDasharray(s,i);for(var f=Math.floor(i/c),u=i%c,h=s-i,y=[],p=0,v=0;p<l.length;v+=l[p],++p)if(v+l[p]>u){y=[].concat(G(l.slice(0,p)),[u-v]);break}var b=y.length%2===0?[0,h]:[h];return[].concat(G(r.repeat(l,f)),G(y),b).map(function(P){return"".concat(P,"px")}).join(", ")}),N(n,"id",Rt("recharts-line-")),N(n,"pathRef",function(i){n.mainCurve=i}),N(n,"handleAnimationEnd",function(){n.setState({isAnimationFinished:!0}),n.props.onAnimationEnd&&n.props.onAnimationEnd()}),N(n,"handleAnimationStart",function(){n.setState({isAnimationFinished:!1}),n.props.onAnimationStart&&n.props.onAnimationStart()}),n}return de(r,t),ce(r,[{key:"componentDidMount",value:function(){if(this.props.isAnimationActive){var e=this.getTotalLength();this.setState({totalLength:e})}}},{key:"componentDidUpdate",value:function(){if(this.props.isAnimationActive){var e=this.getTotalLength();e!==this.state.totalLength&&this.setState({totalLength:e})}}},{key:"getTotalLength",value:function(){var e=this.mainCurve;try{return e&&e.getTotalLength&&e.getTotalLength()||0}catch{return 0}}},{key:"renderErrorBar",value:function(e,a){if(this.props.isAnimationActive&&!this.state.isAnimationFinished)return null;var o=this.props,i=o.points,s=o.xAxis,l=o.yAxis,c=o.layout,f=o.children,u=Qt(f,Zt);if(!u)return null;var h=function(v,b){return{x:v.x,y:v.y,value:v.value,errorVal:st(v.payload,b)}},y={clipPath:e?"url(#clipPath-".concat(a,")"):null};return m.createElement(K,y,u.map(function(p){return m.cloneElement(p,{key:"bar-".concat(p.props.dataKey),data:i,xAxis:s,yAxis:l,layout:c,dataPointFormatter:h})}))}},{key:"renderDots",value:function(e,a,o){var i=this.props.isAnimationActive;if(i&&!this.state.isAnimationFinished)return null;var s=this.props,l=s.dot,c=s.points,f=s.dataKey,u=$(this.props,!1),h=$(l,!0),y=c.map(function(v,b){var P=_(_(_({key:"dot-".concat(b),r:3},u),h),{},{index:b,cx:v.x,cy:v.y,value:v.value,dataKey:f,payload:v.payload,points:c});return r.renderDotItem(l,P)}),p={clipPath:e?"url(#clipPath-".concat(a?"":"dots-").concat(o,")"):null};return m.createElement(K,Q({className:"recharts-line-dots",key:"dots"},p),y)}},{key:"renderCurveStatically",value:function(e,a,o,i){var s=this.props,l=s.type,c=s.layout,f=s.connectNulls;s.ref;var u=kt(s,ee),h=_(_(_({},$(u,!0)),{},{fill:"none",className:"recharts-line-curve",clipPath:a?"url(#clipPath-".concat(o,")"):null,points:e},i),{},{type:l,layout:c,connectNulls:f});return m.createElement(rt,Q({},h,{pathRef:this.pathRef}))}},{key:"renderCurveWithAnimation",value:function(e,a){var o=this,i=this.props,s=i.points,l=i.strokeDasharray,c=i.isAnimationActive,f=i.animationBegin,u=i.animationDuration,h=i.animationEasing,y=i.animationId,p=i.animateNewValues,v=i.width,b=i.height,P=this.state,A=P.prevPoints,k=P.totalLength;return m.createElement(Tt,{begin:f,duration:u,isActive:c,easing:h,from:{t:0},to:{t:1},key:"line-".concat(y),onAnimationEnd:this.handleAnimationEnd,onAnimationStart:this.handleAnimationStart},function(x){var g=x.t;if(A){var O=A.length/s.length,S=s.map(function(j,R){var F=Math.floor(R*O);if(A[F]){var W=A[F],L=T(W.x,j.x),Ut=T(W.y,j.y);return _(_({},j),{},{x:L(g),y:Ut(g)})}if(p){var qt=T(v*2,j.x),Jt=T(b/2,j.y);return _(_({},j),{},{x:qt(g),y:Jt(g)})}return _(_({},j),{},{x:j.x,y:j.y})});return o.renderCurveStatically(S,e,a)}var w=T(0,k),C=w(g),E;if(l){var D="".concat(l).split(/[,\s]+/gim).map(function(j){return parseFloat(j)});E=o.getStrokeDasharray(C,k,D)}else E=o.generateSimpleStrokeDasharray(k,C);return o.renderCurveStatically(s,e,a,{strokeDasharray:E})})}},{key:"renderCurve",value:function(e,a){var o=this.props,i=o.points,s=o.isAnimationActive,l=this.state,c=l.prevPoints,f=l.totalLength;return s&&i&&i.length&&(!c&&f>0||!mt(c,i))?this.renderCurveWithAnimation(e,a):this.renderCurveStatically(i,e,a)}},{key:"render",value:function(){var e,a=this.props,o=a.hide,i=a.dot,s=a.points,l=a.className,c=a.xAxis,f=a.yAxis,u=a.top,h=a.left,y=a.width,p=a.height,v=a.isAnimationActive,b=a.id;if(o||!s||!s.length)return null;var P=this.state.isAnimationFinished,A=s.length===1,k=ot("recharts-line",l),x=c&&c.allowDataOverflow,g=f&&f.allowDataOverflow,O=x||g,S=Z(b)?this.id:b,w=(e=$(i,!1))!==null&&e!==void 0?e:{r:3,strokeWidth:2},C=w.r,E=C===void 0?3:C,D=w.strokeWidth,j=D===void 0?2:D,R=$t(i)?i:{},F=R.clipDot,W=F===void 0?!0:F,L=E*2+j;return m.createElement(K,{className:k},x||g?m.createElement("defs",null,m.createElement("clipPath",{id:"clipPath-".concat(S)},m.createElement("rect",{x:x?h:h-y/2,y:g?u:u-p/2,width:x?y:y*2,height:g?p:p*2})),!W&&m.createElement("clipPath",{id:"clipPath-dots-".concat(S)},m.createElement("rect",{x:h-L/2,y:u-L/2,width:y+L,height:p+L}))):null,!A&&this.renderCurve(O,S),this.renderErrorBar(O,S),(A||i)&&this.renderDots(O,W,S),(!v||P)&&It.renderCallByParent(this.props,s))}}],[{key:"getDerivedStateFromProps",value:function(e,a){return e.animationId!==a.prevAnimationId?{prevAnimationId:e.animationId,curPoints:e.points,prevPoints:a.curPoints}:e.points!==a.curPoints?{curPoints:e.points}:null}},{key:"repeat",value:function(e,a){for(var o=e.length%2!==0?[].concat(G(e),[0]):e,i=[],s=0;s<a;++s)i=[].concat(G(i),G(o));return i}},{key:"renderDotItem",value:function(e,a){var o;if(m.isValidElement(e))o=m.cloneElement(e,a);else if(it(e))o=e(a);else{var i=a.key,s=kt(a,re),l=ot("recharts-line-dot",typeof e!="boolean"?e.className:"");o=m.createElement(Nt,Q({key:i},s,{className:l}))}return o}}])})(nt.PureComponent);N(J,"displayName","Line");N(J,"defaultProps",{xAxisId:0,yAxisId:0,connectNulls:!1,activeDot:!0,dot:!0,legendType:"line",stroke:"#3182bd",strokeWidth:1,fill:"#fff",points:[],isAnimationActive:!Bt.isSsr,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",hide:!1,label:!1});N(J,"getComposedData",function(t){var r=t.props,n=t.xAxis,e=t.yAxis,a=t.xAxisTicks,o=t.yAxisTicks,i=t.dataKey,s=t.bandSize,l=t.displayedData,c=t.offset,f=r.layout,u=l.map(function(h,y){var p=st(h,i);return f==="horizontal"?{x:lt({axis:n,ticks:a,bandSize:s,entry:h,index:y}),y:Z(p)?null:e.scale(p),value:p,payload:h}:{x:Z(p)?null:n.scale(p),y:lt({axis:e,ticks:o,bandSize:s,entry:h,index:y}),value:p,payload:h}});return _({points:u,layout:f},c)});var ve=["layout","type","stroke","connectNulls","isRange","ref"],me=["key"],zt;function q(t){"@babel/helpers - typeof";return q=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(r){return typeof r}:function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},q(t)}function Vt(t,r){if(t==null)return{};var n=ye(t,r),e,a;if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(a=0;a<o.length;a++)e=o[a],!(r.indexOf(e)>=0)&&Object.prototype.propertyIsEnumerable.call(t,e)&&(n[e]=t[e])}return n}function ye(t,r){if(t==null)return{};var n={};for(var e in t)if(Object.prototype.hasOwnProperty.call(t,e)){if(r.indexOf(e)>=0)continue;n[e]=t[e]}return n}function z(){return z=Object.assign?Object.assign.bind():function(t){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var e in n)Object.prototype.hasOwnProperty.call(n,e)&&(t[e]=n[e])}return t},z.apply(this,arguments)}function _t(t,r){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(t);r&&(e=e.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),n.push.apply(n,e)}return n}function M(t){for(var r=1;r<arguments.length;r++){var n=arguments[r]!=null?arguments[r]:{};r%2?_t(Object(n),!0).forEach(function(e){I(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):_t(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}function be(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}function Ct(t,r){for(var n=0;n<r.length;n++){var e=r[n];e.enumerable=e.enumerable||!1,e.configurable=!0,"value"in e&&(e.writable=!0),Object.defineProperty(t,Xt(e.key),e)}}function ge(t,r,n){return r&&Ct(t.prototype,r),n&&Ct(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function xe(t,r,n){return r=ht(r),Ae(t,Gt()?Reflect.construct(r,n||[],ht(t).constructor):r.apply(t,n))}function Ae(t,r){if(r&&(q(r)==="object"||typeof r=="function"))return r;if(r!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Pe(t)}function Pe(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function Gt(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(Gt=function(){return!!t})()}function ht(t){return ht=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},ht(t)}function Oe(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),r&&gt(t,r)}function gt(t,r){return gt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,a){return e.__proto__=a,e},gt(t,r)}function I(t,r,n){return r=Xt(r),r in t?Object.defineProperty(t,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[r]=n,t}function Xt(t){var r=je(t,"string");return q(r)=="symbol"?r:r+""}function je(t,r){if(q(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var e=n.call(t,r);if(q(e)!="object")return e;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}var B=(function(t){function r(){var n;be(this,r);for(var e=arguments.length,a=new Array(e),o=0;o<e;o++)a[o]=arguments[o];return n=xe(this,r,[].concat(a)),I(n,"state",{isAnimationFinished:!0}),I(n,"id",Rt("recharts-area-")),I(n,"handleAnimationEnd",function(){var i=n.props.onAnimationEnd;n.setState({isAnimationFinished:!0}),it(i)&&i()}),I(n,"handleAnimationStart",function(){var i=n.props.onAnimationStart;n.setState({isAnimationFinished:!1}),it(i)&&i()}),n}return Oe(r,t),ge(r,[{key:"renderDots",value:function(e,a,o){var i=this.props.isAnimationActive,s=this.state.isAnimationFinished;if(i&&!s)return null;var l=this.props,c=l.dot,f=l.points,u=l.dataKey,h=$(this.props,!1),y=$(c,!0),p=f.map(function(b,P){var A=M(M(M({key:"dot-".concat(P),r:3},h),y),{},{index:P,cx:b.x,cy:b.y,dataKey:u,value:b.value,payload:b.payload,points:f});return r.renderDotItem(c,A)}),v={clipPath:e?"url(#clipPath-".concat(a?"":"dots-").concat(o,")"):null};return m.createElement(K,z({className:"recharts-area-dots"},v),p)}},{key:"renderHorizontalRect",value:function(e){var a=this.props,o=a.baseLine,i=a.points,s=a.strokeWidth,l=i[0].x,c=i[i.length-1].x,f=e*Math.abs(l-c),u=et(i.map(function(h){return h.y||0}));return X(o)&&typeof o=="number"?u=Math.max(o,u):o&&Array.isArray(o)&&o.length&&(u=Math.max(et(o.map(function(h){return h.y||0})),u)),X(u)?m.createElement("rect",{x:l<c?l:l-f,y:0,width:f,height:Math.floor(u+(s?parseInt("".concat(s),10):1))}):null}},{key:"renderVerticalRect",value:function(e){var a=this.props,o=a.baseLine,i=a.points,s=a.strokeWidth,l=i[0].y,c=i[i.length-1].y,f=e*Math.abs(l-c),u=et(i.map(function(h){return h.x||0}));return X(o)&&typeof o=="number"?u=Math.max(o,u):o&&Array.isArray(o)&&o.length&&(u=Math.max(et(o.map(function(h){return h.x||0})),u)),X(u)?m.createElement("rect",{x:0,y:l<c?l:l-f,width:u+(s?parseInt("".concat(s),10):1),height:Math.floor(f)}):null}},{key:"renderClipRect",value:function(e){var a=this.props.layout;return a==="vertical"?this.renderVerticalRect(e):this.renderHorizontalRect(e)}},{key:"renderAreaStatically",value:function(e,a,o,i){var s=this.props,l=s.layout,c=s.type,f=s.stroke,u=s.connectNulls,h=s.isRange;s.ref;var y=Vt(s,ve);return m.createElement(K,{clipPath:o?"url(#clipPath-".concat(i,")"):null},m.createElement(rt,z({},$(y,!0),{points:e,connectNulls:u,type:c,baseLine:a,layout:l,stroke:"none",className:"recharts-area-area"})),f!=="none"&&m.createElement(rt,z({},$(this.props,!1),{className:"recharts-area-curve",layout:l,type:c,connectNulls:u,fill:"none",points:e})),f!=="none"&&h&&m.createElement(rt,z({},$(this.props,!1),{className:"recharts-area-curve",layout:l,type:c,connectNulls:u,fill:"none",points:a})))}},{key:"renderAreaWithAnimation",value:function(e,a){var o=this,i=this.props,s=i.points,l=i.baseLine,c=i.isAnimationActive,f=i.animationBegin,u=i.animationDuration,h=i.animationEasing,y=i.animationId,p=this.state,v=p.prevPoints,b=p.prevBaseLine;return m.createElement(Tt,{begin:f,duration:u,isActive:c,easing:h,from:{t:0},to:{t:1},key:"area-".concat(y),onAnimationEnd:this.handleAnimationEnd,onAnimationStart:this.handleAnimationStart},function(P){var A=P.t;if(v){var k=v.length/s.length,x=s.map(function(w,C){var E=Math.floor(C*k);if(v[E]){var D=v[E],j=T(D.x,w.x),R=T(D.y,w.y);return M(M({},w),{},{x:j(A),y:R(A)})}return w}),g;if(X(l)&&typeof l=="number"){var O=T(b,l);g=O(A)}else if(Z(l)||te(l)){var S=T(b,0);g=S(A)}else g=l.map(function(w,C){var E=Math.floor(C*k);if(b[E]){var D=b[E],j=T(D.x,w.x),R=T(D.y,w.y);return M(M({},w),{},{x:j(A),y:R(A)})}return w});return o.renderAreaStatically(x,g,e,a)}return m.createElement(K,null,m.createElement("defs",null,m.createElement("clipPath",{id:"animationClipPath-".concat(a)},o.renderClipRect(A))),m.createElement(K,{clipPath:"url(#animationClipPath-".concat(a,")")},o.renderAreaStatically(s,l,e,a)))})}},{key:"renderArea",value:function(e,a){var o=this.props,i=o.points,s=o.baseLine,l=o.isAnimationActive,c=this.state,f=c.prevPoints,u=c.prevBaseLine,h=c.totalLength;return l&&i&&i.length&&(!f&&h>0||!mt(f,i)||!mt(u,s))?this.renderAreaWithAnimation(e,a):this.renderAreaStatically(i,s,e,a)}},{key:"render",value:function(){var e,a=this.props,o=a.hide,i=a.dot,s=a.points,l=a.className,c=a.top,f=a.left,u=a.xAxis,h=a.yAxis,y=a.width,p=a.height,v=a.isAnimationActive,b=a.id;if(o||!s||!s.length)return null;var P=this.state.isAnimationFinished,A=s.length===1,k=ot("recharts-area",l),x=u&&u.allowDataOverflow,g=h&&h.allowDataOverflow,O=x||g,S=Z(b)?this.id:b,w=(e=$(i,!1))!==null&&e!==void 0?e:{r:3,strokeWidth:2},C=w.r,E=C===void 0?3:C,D=w.strokeWidth,j=D===void 0?2:D,R=$t(i)?i:{},F=R.clipDot,W=F===void 0?!0:F,L=E*2+j;return m.createElement(K,{className:k},x||g?m.createElement("defs",null,m.createElement("clipPath",{id:"clipPath-".concat(S)},m.createElement("rect",{x:x?f:f-y/2,y:g?c:c-p/2,width:x?y:y*2,height:g?p:p*2})),!W&&m.createElement("clipPath",{id:"clipPath-dots-".concat(S)},m.createElement("rect",{x:f-L/2,y:c-L/2,width:y+L,height:p+L}))):null,A?null:this.renderArea(O,S),(i||A)&&this.renderDots(O,W,S),(!v||P)&&It.renderCallByParent(this.props,s))}}],[{key:"getDerivedStateFromProps",value:function(e,a){return e.animationId!==a.prevAnimationId?{prevAnimationId:e.animationId,curPoints:e.points,curBaseLine:e.baseLine,prevPoints:a.curPoints,prevBaseLine:a.curBaseLine}:e.points!==a.curPoints||e.baseLine!==a.curBaseLine?{curPoints:e.points,curBaseLine:e.baseLine}:null}}])})(nt.PureComponent);zt=B;I(B,"displayName","Area");I(B,"defaultProps",{stroke:"#3182bd",fill:"#3182bd",fillOpacity:.6,xAxisId:0,yAxisId:0,legendType:"line",connectNulls:!1,points:[],dot:!1,activeDot:!0,hide:!1,isAnimationActive:!Bt.isSsr,animationBegin:0,animationDuration:1500,animationEasing:"ease"});I(B,"getBaseValue",function(t,r,n,e){var a=t.layout,o=t.baseValue,i=r.props.baseValue,s=i??o;if(X(s)&&typeof s=="number")return s;var l=a==="horizontal"?e:n,c=l.scale.domain();if(l.type==="number"){var f=Math.max(c[0],c[1]),u=Math.min(c[0],c[1]);return s==="dataMin"?u:s==="dataMax"||f<0?f:Math.max(Math.min(c[0],c[1]),0)}return s==="dataMin"?c[0]:s==="dataMax"?c[1]:c[0]});I(B,"getComposedData",function(t){var r=t.props,n=t.item,e=t.xAxis,a=t.yAxis,o=t.xAxisTicks,i=t.yAxisTicks,s=t.bandSize,l=t.dataKey,c=t.stackedData,f=t.dataStartIndex,u=t.displayedData,h=t.offset,y=r.layout,p=c&&c.length,v=zt.getBaseValue(r,n,e,a),b=y==="horizontal",P=!1,A=u.map(function(x,g){var O;p?O=c[f+g]:(O=st(x,l),Array.isArray(O)?P=!0:O=[v,O]);var S=O[1]==null||p&&st(x,l)==null;return b?{x:lt({axis:e,ticks:o,bandSize:s,entry:x,index:g}),y:S?null:a.scale(O[1]),value:O,payload:x}:{x:S?null:e.scale(O[1]),y:lt({axis:a,ticks:i,bandSize:s,entry:x,index:g}),value:O,payload:x}}),k;return p||P?k=A.map(function(x){var g=Array.isArray(x.value)?x.value[0]:null;return b?{x:x.x,y:g!=null&&x.y!=null?a.scale(g):null}:{x:g!=null?e.scale(g):null,y:x.y}}):k=b?a.scale(v):e.scale(v),M({points:A,baseLine:k,layout:y,isRange:P},h)});I(B,"renderDotItem",function(t,r){var n;if(m.isValidElement(t))n=m.cloneElement(t,r);else if(it(t))n=t(r);else{var e=ot("recharts-area-dot",typeof t!="boolean"?t.className:""),a=r.key,o=Vt(r,me);n=m.createElement(Nt,z({},o,{key:a,className:e}))}return n});var Yt=Ft({chartName:"LineChart",GraphicalChild:J,axisComponents:[{axisType:"xAxis",AxisComp:H},{axisType:"yAxis",AxisComp:tt}],formatAxisMap:Wt}),Ht=Ft({chartName:"AreaChart",GraphicalChild:B,axisComponents:[{axisType:"xAxis",AxisComp:H},{axisType:"yAxis",AxisComp:tt}],formatAxisMap:Wt});const Se=[{value:"linear",label:"lin"},{value:"log",label:"log"}],we=[{value:"combined",label:"merged"},{value:"byProvider",label:"split"}],Lt="flex items-center overflow-hidden rounded border border-line text-[10px]",ke=vt(t=>{const r=t.filter(e=>e.dataKey!=="total"&&(e.value??0)>0).map(e=>({label:String(e.name??e.dataKey),value:Y(e.value??0),color:e.color})),n=t.reduce((e,a)=>e+(a.dataKey==="total"?0:a.value??0),0);return r.length>1&&r.push({label:"total",value:Y(n),color:"var(--color-fg-bright)"}),r}),Ee=vt(t=>{var r;return[{label:"total",value:Y(((r=t[0])==null?void 0:r.value)??0),color:"var(--color-cost)"}]});function Ne({derived:t,title:r="cost over time",height:n=260,periodLabel:e,heightClass:a}){const o=Ot(),i=t.byProvider,s=i.length>1,[l,c]=nt.useState("linear"),[f,u]=nt.useState(s?"byProvider":"combined"),h=t.timeline.map(p=>{const v={date:p.date,total:p.total,...p.byProvider};if(l==="log")for(const b of Object.keys(v))b!=="date"&&v[b]===0&&(v[b]=null);return v}),y=d.jsx(tt,{...V,width:52,tickFormatter:Pt,scale:l,allowDataOverflow:l==="log",domain:l==="log"?[.1,"auto"]:[0,"auto"]});return d.jsx(xt,{title:r,titleTag:e,captureName:"cost-over-time",right:d.jsxs("div",{className:"flex items-center gap-1.5",children:[s&&d.jsx(wt,{options:we,value:f,onChange:u,size:"xs",containerClassName:Lt,ariaLabel:"combine providers"}),d.jsx(wt,{options:Se,value:l,onChange:c,size:"xs",containerClassName:Lt,ariaLabel:"value scale"})]}),children:h.length===0?d.jsx(At,{children:"no spend in period"}):d.jsx(jt,{height:n,heightClass:a,children:d.jsx(St,{children:f==="combined"?d.jsxs(Ht,{data:h,margin:{top:8,right:8,left:0,bottom:0},children:[d.jsx("defs",{children:d.jsxs("linearGradient",{id:"g-cost",x1:"0",y1:"0",x2:"0",y2:"1",children:[d.jsx("stop",{offset:"0%",stopColor:"var(--color-cost)",stopOpacity:.16}),d.jsx("stop",{offset:"100%",stopColor:"var(--color-cost)",stopOpacity:.02})]})}),d.jsx(ct,{...ut}),d.jsx(H,{dataKey:"date",...V,tickFormatter:at,minTickGap:28}),y,d.jsx(pt,{content:Ee,cursor:ft}),d.jsx(B,{type:"monotone",dataKey:"total",stroke:"var(--color-cost)",strokeWidth:1.8,fill:"url(#g-cost)",connectNulls:!0,isAnimationActive:o,animationDuration:350})]}):d.jsxs(Yt,{data:h,margin:{top:8,right:8,left:0,bottom:0},children:[d.jsx(ct,{...ut}),d.jsx(H,{dataKey:"date",...V,tickFormatter:at,minTickGap:28}),y,d.jsx(pt,{content:ke,cursor:ft}),i.map(p=>d.jsx(J,{type:"monotone",dataKey:p.id,name:p.name,stroke:p.color,strokeWidth:1.6,dot:!1,connectNulls:!0,isAnimationActive:o,animationDuration:350},p.id))]})})})})}const De=vt(t=>{var r;return[{label:"cumulative",value:Y(((r=t[0])==null?void 0:r.value)??0),color:"var(--color-cost)"}]});function Te({derived:t,height:r=220,periodLabel:n}){const e=Ot(),a=t.cumulative;return d.jsx(xt,{title:"cumulative spend",titleTag:n,captureName:"cumulative",children:a.length===0?d.jsx(At,{children:"no spend in period"}):d.jsx(jt,{height:r,children:d.jsx(St,{children:d.jsxs(Yt,{data:a,margin:{top:8,right:8,left:0,bottom:0},children:[d.jsx(ct,{...ut}),d.jsx(H,{dataKey:"date",...V,tickFormatter:at,minTickGap:28}),d.jsx(tt,{...V,width:52,tickFormatter:Pt}),d.jsx(pt,{content:De,cursor:ft}),d.jsx(J,{type:"monotone",dataKey:"total",stroke:"var(--color-cost)",strokeWidth:1.8,dot:!1,isAnimationActive:e,animationDuration:350})]})})})})}const _e=vt(t=>{var r;return[{label:"cache saved",value:Y(((r=t[0])==null?void 0:r.value)??0),color:"var(--color-positive)"}]});function $e({derived:t,height:r=220,periodLabel:n}){const e=Ot(),a=t.cacheSavingsSeries,o=t.totals.cacheSavings;return d.jsx(xt,{title:"cache savings",titleTag:n,captureName:"cache-savings",right:d.jsx("span",{className:"tnum text-xs text-positive",children:Y(o)}),children:a.length===0?d.jsx(At,{children:"no cache reads in period"}):d.jsx(jt,{height:r,children:d.jsx(St,{children:d.jsxs(Ht,{data:a,margin:{top:8,right:8,left:0,bottom:0},children:[d.jsx("defs",{children:d.jsxs("linearGradient",{id:"g-save",x1:"0",y1:"0",x2:"0",y2:"1",children:[d.jsx("stop",{offset:"0%",stopColor:"var(--color-positive)",stopOpacity:.18}),d.jsx("stop",{offset:"100%",stopColor:"var(--color-positive)",stopOpacity:.02})]})}),d.jsx(ct,{...ut}),d.jsx(H,{dataKey:"date",...V,tickFormatter:at,minTickGap:28}),d.jsx(tt,{...V,width:52,tickFormatter:Pt}),d.jsx(pt,{content:_e,cursor:ft}),d.jsx(B,{type:"monotone",dataKey:"value",stroke:"var(--color-positive)",strokeWidth:1.6,fill:"url(#g-save)",isAnimationActive:e,animationDuration:350})]})})})})}export{$e as CacheSavings,Ne as CostTimeline,Te as CumulativeSpend};
@@ -11,8 +11,8 @@
11
11
  // Apply saved theme before first paint to avoid a flash. Default: dark.
12
12
  try { if (localStorage.getItem('tokmon-theme') === 'light') document.documentElement.classList.add('light') } catch (e) {}
13
13
  </script>
14
- <script type="module" crossorigin src="./assets/index-Bn2Drvgm.js"></script>
15
- <link rel="stylesheet" crossorigin href="./assets/index-DFbzQylu.css">
14
+ <script type="module" crossorigin src="./assets/index-CYYYW9md.js"></script>
15
+ <link rel="stylesheet" crossorigin href="./assets/index-DSET6l6i.css">
16
16
  </head>
17
17
  <body>
18
18
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tokmon",
3
- "version": "0.19.3",
3
+ "version": "0.19.4",
4
4
  "description": "Terminal + web dashboard for Claude Code, Codex, Cursor, opencode, pi, Copilot, Gemini & more — usage, limits, and costs",
5
5
  "type": "module",
6
6
  "bin": {