@gajae-code/stats 0.18.7 → 0.18.8
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.
package/dist/client/index.js
CHANGED
|
@@ -254,4 +254,4 @@ React keys must be passed directly to JSX without using spread:
|
|
|
254
254
|
* Released under the MIT License
|
|
255
255
|
*/class WM{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(a,n,s,l){let r=n.listeners[l],c=n.duration;r.forEach((f)=>f({chart:a,initial:n.initial,numSteps:c,currentStep:Math.min(s-n.start,c)}))}_refresh(){if(this._request)return;this._running=!0,this._request=tx.call(window,()=>{if(this._update(),this._request=null,this._running)this._refresh()})}_update(a=Date.now()){let n=0;if(this._charts.forEach((s,l)=>{if(!s.running||!s.items.length)return;let r=s.items,c=r.length-1,f=!1,h;for(;c>=0;--c)if(h=r[c],h._active){if(h._total>s.duration)s.duration=h._total;h.tick(a),f=!0}else r[c]=r[r.length-1],r.pop();if(f)l.draw(),this._notify(l,s,a,"progress");if(!r.length)s.running=!1,this._notify(l,s,a,"complete"),s.initial=!1;n+=r.length}),this._lastDate=a,n===0)this._running=!1}_getAnims(a){let n=this._charts,s=n.get(a);if(!s)s={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},n.set(a,s);return s}listen(a,n,s){this._getAnims(a).listeners[n].push(s)}add(a,n){if(!n||!n.length)return;this._getAnims(a).items.push(...n)}has(a){return this._getAnims(a).items.length>0}start(a){let n=this._charts.get(a);if(!n)return;n.running=!0,n.start=Date.now(),n.duration=n.items.reduce((s,l)=>Math.max(s,l._duration),0),this._refresh()}running(a){if(!this._running)return!1;let n=this._charts.get(a);if(!n||!n.running||!n.items.length)return!1;return!0}stop(a){let n=this._charts.get(a);if(!n||!n.items.length)return;let s=n.items,l=s.length-1;for(;l>=0;--l)s[l].cancel();n.items=[],this._notify(a,n,Date.now(),"complete")}remove(a){return this._charts.delete(a)}}var is=new WM,Jw="transparent",$2={boolean(a,n,s){return s>0.5?n:a},color(a,n,s){let l=nx(a||Jw),r=l.valid&&nx(n||Jw);return r&&r.valid?r.mix(l,s).hexString():n},number(a,n,s){return a+(n-a)*s}};class $M{constructor(a,n,s,l){let r=n[s];l=Yc([a.to,l,r,a.from]);let c=Yc([a.from,r,l]);this._active=!0,this._fn=a.fn||$2[a.type||typeof c],this._easing=Hr[a.easing]||Hr.linear,this._start=Math.floor(Date.now()+(a.delay||0)),this._duration=this._total=Math.floor(a.duration),this._loop=!!a.loop,this._target=n,this._prop=s,this._from=c,this._to=l,this._promises=void 0}active(){return this._active}update(a,n,s){if(this._active){this._notify(!1);let l=this._target[this._prop],r=s-this._start,c=this._duration-r;this._start=s,this._duration=Math.floor(Math.max(c,a.duration)),this._total+=r,this._loop=!!a.loop,this._to=Yc([a.to,n,l,a.from]),this._from=Yc([a.from,l,n])}}cancel(){if(this._active)this.tick(Date.now()),this._active=!1,this._notify(!1)}tick(a){let n=a-this._start,s=this._duration,l=this._prop,r=this._from,c=this._loop,f=this._to,h;if(this._active=r!==f&&(c||n<s),!this._active){this._target[l]=f,this._notify(!0);return}if(n<0){this._target[l]=r;return}h=n/s%2,h=c&&h>1?2-h:h,h=this._easing(Math.min(1,Math.max(0,h))),this._target[l]=this._fn(r,f,h)}wait(){let a=this._promises||(this._promises=[]);return new Promise((n,s)=>{a.push({res:n,rej:s})})}_notify(a){let n=a?"res":"rej",s=this._promises||[];for(let l=0;l<s.length;l++)s[l][n]()}}class Hx{constructor(a,n){this._chart=a,this._properties=new Map,this.configure(n)}configure(a){if(!$e(a))return;let n=Object.keys(_t.animation),s=this._properties;Object.getOwnPropertyNames(a).forEach((l)=>{let r=a[l];if(!$e(r))return;let c={};for(let f of n)c[f]=r[f];(St(r.properties)&&r.properties||[l]).forEach((f)=>{if(f===l||!s.has(f))s.set(f,c)})})}_animateOptions(a,n){let s=n.options,l=Z2(a,s);if(!l)return[];let r=this._createAnimations(l,s);if(s.$shared)Q2(a.options.$animations,s).then(()=>{a.options=s},()=>{});return r}_createAnimations(a,n){let s=this._properties,l=[],r=a.$animations||(a.$animations={}),c=Object.keys(n),f=Date.now(),h;for(h=c.length-1;h>=0;--h){let p=c[h];if(p.charAt(0)==="$")continue;if(p==="options"){l.push(...this._animateOptions(a,n));continue}let y=n[p],b=r[p],x=s.get(p);if(b)if(x&&b.active()){b.update(x,y,f);continue}else b.cancel();if(!x||!x.duration){a[p]=y;continue}r[p]=b=new $M(x,a,p,y),l.push(b)}return l}update(a,n){if(this._properties.size===0){Object.assign(a,n);return}let s=this._createAnimations(a,n);if(s.length)return is.add(this._chart,s),!0}}function Q2(a,n){let s=[],l=Object.keys(n);for(let r=0;r<l.length;r++){let c=a[l[r]];if(c&&c.active())s.push(c.wait())}return Promise.all(s)}function Z2(a,n){if(!n)return;let s=a.options;if(!s){a.options=n;return}if(s.$shared)a.options=s=Object.assign({},s,{$shared:!1,$animations:{}});return s}function Kw(a,n){let s=a&&a.options||{},l=s.reverse,r=s.min===void 0?n:0,c=s.max===void 0?n:0;return{start:l?c:r,end:l?r:c}}function J2(a,n,s){if(s===!1)return!1;let l=Kw(a,s),r=Kw(n,s);return{top:r.end,right:l.end,bottom:r.start,left:l.start}}function K2(a){let n,s,l,r;if($e(a))n=a.top,s=a.right,l=a.bottom,r=a.left;else n=s=l=r=a;return{top:n,right:s,bottom:l,left:r,disabled:a===!1}}function QM(a,n){let s=[],l=a._getSortedDatasetMetas(n),r,c;for(r=0,c=l.length;r<c;++r)s.push(l[r].index);return s}function eM(a,n,s,l={}){let r=a.keys,c=l.mode==="single",f,h,p,y;if(n===null)return;let b=!1;for(f=0,h=r.length;f<h;++f){if(p=+r[f],p===s){if(b=!0,l.all)continue;break}if(y=a.values[p],At(y)&&(c||n===0||Ho(n)===Ho(y)))n+=y}if(!b&&!l.all)return 0;return n}function eO(a,n){let{iScale:s,vScale:l}=n,r=s.axis==="x"?"x":"y",c=l.axis==="x"?"x":"y",f=Object.keys(a),h=Array(f.length),p,y,b;for(p=0,y=f.length;p<y;++p)b=f[p],h[p]={[r]:b,[c]:a[b]};return h}function xx(a,n){let s=a&&a.options.stacked;return s||s===void 0&&n.stack!==void 0}function tO(a,n,s){return`${a.id}.${n.id}.${s.stack||s.type}`}function aO(a){let{min:n,max:s,minDefined:l,maxDefined:r}=a.getUserBounds();return{min:l?n:Number.NEGATIVE_INFINITY,max:r?s:Number.POSITIVE_INFINITY}}function oO(a,n,s){let l=a[n]||(a[n]={});return l[s]||(l[s]={})}function tM(a,n,s,l){for(let r of n.getMatchingVisibleMetas(l).reverse()){let c=a[r.index];if(s&&c>0||!s&&c<0)return r.index}return null}function aM(a,n){let{chart:s,_cachedMeta:l}=a,r=s._stacks||(s._stacks={}),{iScale:c,vScale:f,index:h}=l,p=c.axis,y=f.axis,b=tO(c,f,l),x=n.length,v;for(let I=0;I<x;++I){let M=n[I],{[p]:D,[y]:w}=M,z=M._stacks||(M._stacks={});v=z[y]=oO(r,b,D),v[h]=w,v._top=tM(v,f,!0,l.type),v._bottom=tM(v,f,!1,l.type);let N=v._visualValues||(v._visualValues={});N[h]=w}}function Sx(a,n){let s=a.scales;return Object.keys(s).filter((l)=>s[l].axis===n).shift()}function nO(a,n){return ss(a,{active:!1,dataset:void 0,datasetIndex:n,index:n,mode:"default",type:"dataset"})}function sO(a,n,s){return ss(a,{active:!1,dataIndex:n,parsed:void 0,raw:void 0,element:s,index:n,mode:"default",type:"data"})}function Xc(a,n){let s=a.controller.index,l=a.vScale&&a.vScale.axis;if(!l)return;n=n||a._parsed;for(let r of n){let c=r._stacks;if(!c||c[l]===void 0||c[l][s]===void 0)return;if(delete c[l][s],c[l]._visualValues!==void 0&&c[l]._visualValues[s]!==void 0)delete c[l]._visualValues[s]}}var vx=(a)=>a==="reset"||a==="none",oM=(a,n)=>n?a:Object.assign({},a),iO=(a,n,s)=>a&&!n.hidden&&n._stacked&&{keys:QM(s,!0),values:null};class xp{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(a,n){this.chart=a,this._ctx=a.ctx,this.index=n,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){let a=this._cachedMeta;if(this.configure(),this.linkScales(),a._stacked=xx(a.vScale,a),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler"))console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(a){if(this.index!==a)Xc(this._cachedMeta);this.index=a}linkScales(){let a=this.chart,n=this._cachedMeta,s=this.getDataset(),l=(b,x,v,I)=>b==="x"?x:b==="r"?I:v,r=n.xAxisID=Ue(s.xAxisID,Sx(a,"x")),c=n.yAxisID=Ue(s.yAxisID,Sx(a,"y")),f=n.rAxisID=Ue(s.rAxisID,Sx(a,"r")),h=n.indexAxis,p=n.iAxisID=l(h,r,c,f),y=n.vAxisID=l(h,c,r,f);n.xScale=this.getScaleForId(r),n.yScale=this.getScaleForId(c),n.rScale=this.getScaleForId(f),n.iScale=this.getScaleForId(p),n.vScale=this.getScaleForId(y)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(a){return this.chart.scales[a]}_getOtherScale(a){let n=this._cachedMeta;return a===n.iScale?n.vScale:n.iScale}reset(){this._update("reset")}_destroy(){let a=this._cachedMeta;if(this._data)Kb(this._data,this);if(a._stacked)Xc(a)}_dataCheck(){let a=this.getDataset(),n=a.data||(a.data=[]),s=this._data;if($e(n)){let l=this._cachedMeta;this._data=eO(n,l)}else if(s!==n){if(s){Kb(s,this);let l=this._cachedMeta;Xc(l),l._parsed=[]}if(n&&Object.isExtensible(n))Dw(n,this);this._syncList=[],this._data=n}}addElements(){let a=this._cachedMeta;if(this._dataCheck(),this.datasetElementType)a.dataset=new this.datasetElementType}buildOrUpdateElements(a){let n=this._cachedMeta,s=this.getDataset(),l=!1;this._dataCheck();let r=n._stacked;if(n._stacked=xx(n.vScale,n),n.stack!==s.stack)l=!0,Xc(n),n.stack=s.stack;if(this._resyncElements(a),l||r!==n._stacked)aM(this,n._parsed),n._stacked=xx(n.vScale,n)}configure(){let a=this.chart.config,n=a.datasetScopeKeys(this._type),s=a.getOptionScopes(this.getDataset(),n,!0);this.options=a.createResolver(s,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(a,n){let{_cachedMeta:s,_data:l}=this,{iScale:r,_stacked:c}=s,f=r.axis,h=a===0&&n===l.length?!0:s._sorted,p=a>0&&s._parsed[a-1],y,b,x;if(this._parsing===!1)s._parsed=l,s._sorted=!0,x=l;else{if(St(l[a]))x=this.parseArrayData(s,l,a,n);else if($e(l[a]))x=this.parseObjectData(s,l,a,n);else x=this.parsePrimitiveData(s,l,a,n);let v=()=>b[f]===null||p&&b[f]<p[f];for(y=0;y<n;++y)if(s._parsed[y+a]=b=x[y],h){if(v())h=!1;p=b}s._sorted=h}if(c)aM(this,x)}parsePrimitiveData(a,n,s,l){let{iScale:r,vScale:c}=a,f=r.axis,h=c.axis,p=r.getLabels(),y=r===c,b=Array(l),x,v,I;for(x=0,v=l;x<v;++x)I=x+s,b[x]={[f]:y||r.parse(p[I],I),[h]:c.parse(n[I],I)};return b}parseArrayData(a,n,s,l){let{xScale:r,yScale:c}=a,f=Array(l),h,p,y,b;for(h=0,p=l;h<p;++h)y=h+s,b=n[y],f[h]={x:r.parse(b[0],y),y:c.parse(b[1],y)};return f}parseObjectData(a,n,s,l){let{xScale:r,yScale:c}=a,{xAxisKey:f="x",yAxisKey:h="y"}=this._parsing,p=Array(l),y,b,x,v;for(y=0,b=l;y<b;++y)x=y+s,v=n[x],p[y]={x:r.parse(yl(v,f),x),y:c.parse(yl(v,h),x)};return p}getParsed(a){return this._cachedMeta._parsed[a]}getDataElement(a){return this._cachedMeta.data[a]}applyStack(a,n,s){let l=this.chart,r=this._cachedMeta,c=n[a.axis],f={keys:QM(l,!0),values:n._stacks[a.axis]._visualValues};return eM(f,c,r.index,{mode:s})}updateRangeFromParsed(a,n,s,l){let r=s[n.axis],c=r===null?NaN:r,f=l&&s._stacks[n.axis];if(l&&f)l.values=f,c=eM(l,r,this._cachedMeta.index);a.min=Math.min(a.min,c),a.max=Math.max(a.max,c)}getMinMax(a,n){let s=this._cachedMeta,l=s._parsed,r=s._sorted&&a===s.iScale,c=l.length,f=this._getOtherScale(a),h=iO(n,s,this.chart),p={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:y,max:b}=aO(f),x,v;function I(){v=l[x];let M=v[f.axis];return!At(v[a.axis])||y>M||b<M}for(x=0;x<c;++x){if(I())continue;if(this.updateRangeFromParsed(p,a,v,h),r)break}if(r)for(x=c-1;x>=0;--x){if(I())continue;this.updateRangeFromParsed(p,a,v,h);break}return p}getAllParsedValues(a){let n=this._cachedMeta._parsed,s=[],l,r,c;for(l=0,r=n.length;l<r;++l)if(c=n[l][a.axis],At(c))s.push(c);return s}getMaxOverflow(){return!1}getLabelAndValue(a){let n=this._cachedMeta,s=n.iScale,l=n.vScale,r=this.getParsed(a);return{label:s?""+s.getLabelForValue(r[s.axis]):"",value:l?""+l.getLabelForValue(r[l.axis]):""}}_update(a){let n=this._cachedMeta;this.update(a||"default"),n._clip=K2(Ue(this.options.clip,J2(n.xScale,n.yScale,this.getMaxOverflow())))}update(a){}draw(){let a=this._ctx,n=this.chart,s=this._cachedMeta,l=s.data||[],r=n.chartArea,c=[],f=this._drawStart||0,h=this._drawCount||l.length-f,p=this.options.drawActiveElementsOnTop,y;if(s.dataset)s.dataset.draw(a,r,f,h);for(y=f;y<f+h;++y){let b=l[y];if(b.hidden)continue;if(b.active&&p)c.push(b);else b.draw(a,r)}for(y=0;y<c.length;++y)c[y].draw(a,r)}getStyle(a,n){let s=n?"active":"default";return a===void 0&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(s):this.resolveDataElementOptions(a||0,s)}getContext(a,n,s){let l=this.getDataset(),r;if(a>=0&&a<this._cachedMeta.data.length){let c=this._cachedMeta.data[a];r=c.$context||(c.$context=sO(this.getContext(),a,c)),r.parsed=this.getParsed(a),r.raw=l.data[a],r.index=r.dataIndex=a}else r=this.$context||(this.$context=nO(this.chart.getContext(),this.index)),r.dataset=l,r.index=r.datasetIndex=this.index;return r.active=!!n,r.mode=s,r}resolveDatasetElementOptions(a){return this._resolveElementOptions(this.datasetElementType.id,a)}resolveDataElementOptions(a,n){return this._resolveElementOptions(this.dataElementType.id,n,a)}_resolveElementOptions(a,n="default",s){let l=n==="active",r=this._cachedDataOpts,c=a+"-"+n,f=r[c],h=this.enableOptionSharing&&qr(s);if(f)return oM(f,h);let p=this.chart.config,y=p.datasetElementScopeKeys(this._type,a),b=l?[`${a}Hover`,"hover",a,""]:[a,""],x=p.getOptionScopes(this.getDataset(),y),v=Object.keys(_t.elements[a]),I=()=>this.getContext(s,l,n),M=p.resolveNamedOptions(x,v,I,b);if(M.$shared)M.$shared=h,r[c]=Object.freeze(oM(M,h));return M}_resolveAnimations(a,n,s){let l=this.chart,r=this._cachedDataOpts,c=`animation-${n}`,f=r[c];if(f)return f;let h;if(l.options.animation!==!1){let y=this.chart.config,b=y.datasetAnimationScopeKeys(this._type,n),x=y.getOptionScopes(this.getDataset(),b);h=y.createResolver(x,this.getContext(a,s,n))}let p=new Hx(l,h&&h.animations);if(h&&h._cacheable)r[c]=Object.freeze(p);return p}getSharedOptions(a){if(!a.$shared)return;return this._sharedOptions||(this._sharedOptions=Object.assign({},a))}includeOptions(a,n){return!n||vx(a)||this.chart._animationsDisabled}_getSharedOptions(a,n){let s=this.resolveDataElementOptions(a,n),l=this._sharedOptions,r=this.getSharedOptions(s),c=this.includeOptions(n,r)||r!==l;return this.updateSharedOptions(r,n,s),{sharedOptions:r,includeOptions:c}}updateElement(a,n,s,l){if(vx(l))Object.assign(a,s);else this._resolveAnimations(n,l).update(a,s)}updateSharedOptions(a,n,s){if(a&&!vx(n))this._resolveAnimations(void 0,n).update(a,s)}_setStyle(a,n,s,l){a.active=l;let r=this.getStyle(n,l);this._resolveAnimations(n,s,l).update(a,{options:!l&&this.getSharedOptions(r)||r})}removeHoverStyle(a,n,s){this._setStyle(a,s,"active",!1)}setHoverStyle(a,n,s){this._setStyle(a,s,"active",!0)}_removeDatasetHoverStyle(){let a=this._cachedMeta.dataset;if(a)this._setStyle(a,void 0,"active",!1)}_setDatasetHoverStyle(){let a=this._cachedMeta.dataset;if(a)this._setStyle(a,void 0,"active",!0)}_resyncElements(a){let n=this._data,s=this._cachedMeta.data;for(let[f,h,p]of this._syncList)this[f](h,p);this._syncList=[];let l=s.length,r=n.length,c=Math.min(r,l);if(c)this.parse(0,c);if(r>l)this._insertElements(l,r-l,a);else if(r<l)this._removeElements(r,l-r)}_insertElements(a,n,s=!0){let l=this._cachedMeta,r=l.data,c=a+n,f,h=(p)=>{p.length+=n;for(f=p.length-1;f>=c;f--)p[f]=p[f-n]};h(r);for(f=a;f<c;++f)r[f]=new this.dataElementType;if(this._parsing)h(l._parsed);if(this.parse(a,n),s)this.updateElements(r,a,n,"reset")}updateElements(a,n,s,l){}_removeElements(a,n){let s=this._cachedMeta;if(this._parsing){let l=s._parsed.splice(a,n);if(s._stacked)Xc(s,l)}s.data.splice(a,n)}_sync(a){if(this._parsing)this._syncList.push(a);else{let[n,s,l]=a;this[n](s,l)}this.chart._dataChanges.push([this.index,...a])}_onDataPush(){let a=arguments.length;this._sync(["_insertElements",this.getDataset().data.length-a,a])}_onDataPop(){this._sync(["_removeElements",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync(["_removeElements",0,1])}_onDataSplice(a,n){if(n)this._sync(["_removeElements",a,n]);let s=arguments.length-2;if(s)this._sync(["_insertElements",a,s])}_onDataUnshift(){this._sync(["_insertElements",0,arguments.length])}}function lO(a,n){if(!a._cache.$bar){let s=a.getMatchingVisibleMetas(n),l=[];for(let r=0,c=s.length;r<c;r++)l=l.concat(s[r].controller.getAllParsedValues(a));a._cache.$bar=ex(l.sort((r,c)=>r-c))}return a._cache.$bar}function rO(a){let n=a.iScale,s=lO(n,a.type),l=n._length,r,c,f,h,p=()=>{if(f===32767||f===-32768)return;if(qr(h))l=Math.min(l,Math.abs(f-h)||l);h=f};for(r=0,c=s.length;r<c;++r)f=n.getPixelForValue(s[r]),p();h=void 0;for(r=0,c=n.ticks.length;r<c;++r)f=n.getPixelForTick(r),p();return l}function uO(a,n,s,l){let r=s.barThickness,c,f;if(Ke(r))c=n.min*s.categoryPercentage,f=s.barPercentage;else c=r*l,f=1;return{chunk:c/l,ratio:f,start:n.pixels[a]-c/2}}function cO(a,n,s,l){let r=n.pixels,c=r[a],f=a>0?r[a-1]:null,h=a<r.length-1?r[a+1]:null,p=s.categoryPercentage;if(f===null)f=c-(h===null?n.end-n.start:h-c);if(h===null)h=c+c-f;let y=c-(c-Math.min(f,h))/2*p;return{chunk:Math.abs(h-f)/2*p/l,ratio:s.barPercentage,start:y}}function dO(a,n,s,l){let r=s.parse(a[0],l),c=s.parse(a[1],l),f=Math.min(r,c),h=Math.max(r,c),p=f,y=h;if(Math.abs(f)>Math.abs(h))p=h,y=f;n[s.axis]=y,n._custom={barStart:p,barEnd:y,start:r,end:c,min:f,max:h}}function ZM(a,n,s,l){if(St(a))dO(a,n,s,l);else n[s.axis]=s.parse(a,l);return n}function nM(a,n,s,l){let{iScale:r,vScale:c}=a,f=r.getLabels(),h=r===c,p=[],y,b,x,v;for(y=s,b=s+l;y<b;++y)v=n[y],x={},x[r.axis]=h||r.parse(f[y],y),p.push(ZM(v,x,c,y));return p}function Lx(a){return a&&a.barStart!==void 0&&a.barEnd!==void 0}function fO(a,n,s){if(a!==0)return Ho(a);return(n.isHorizontal()?1:-1)*(n.min>=s?1:-1)}function hO(a){let n,s,l,r,c;if(a.horizontal)n=a.base>a.x,s="left",l="right";else n=a.base<a.y,s="bottom",l="top";if(n)r="end",c="start";else r="start",c="end";return{start:s,end:l,reverse:n,top:r,bottom:c}}function pO(a,n,s,l){let r=n.borderSkipped,c={};if(!r){a.borderSkipped=c;return}if(r===!0){a.borderSkipped={top:!0,right:!0,bottom:!0,left:!0};return}let{start:f,end:h,reverse:p,top:y,bottom:b}=hO(a);if(r==="middle"&&s)if(a.enableBorderRadius=!0,(s._top||0)===l)r=y;else if((s._bottom||0)===l)r=b;else c[sM(b,f,h,p)]=!0,r=y;c[sM(r,f,h,p)]=!0,a.borderSkipped=c}function sM(a,n,s,l){if(l)a=mO(a,n,s),a=iM(a,s,n);else a=iM(a,n,s);return a}function mO(a,n,s){return a===n?s:a===s?n:a}function iM(a,n,s){return a==="start"?n:a==="end"?s:a}function gO(a,{inflateAmount:n},s){a.inflateAmount=n==="auto"?s===1?0.33:0:n}class Ux extends xp{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:0.8,barPercentage:0.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(a,n,s,l){return nM(a,n,s,l)}parseArrayData(a,n,s,l){return nM(a,n,s,l)}parseObjectData(a,n,s,l){let{iScale:r,vScale:c}=a,{xAxisKey:f="x",yAxisKey:h="y"}=this._parsing,p=r.axis==="x"?f:h,y=c.axis==="x"?f:h,b=[],x,v,I,M;for(x=s,v=s+l;x<v;++x)M=n[x],I={},I[r.axis]=r.parse(yl(M,p),x),b.push(ZM(yl(M,y),I,c,x));return b}updateRangeFromParsed(a,n,s,l){super.updateRangeFromParsed(a,n,s,l);let r=s._custom;if(r&&n===this._cachedMeta.vScale)a.min=Math.min(a.min,r.min),a.max=Math.max(a.max,r.max)}getMaxOverflow(){return 0}getLabelAndValue(a){let n=this._cachedMeta,{iScale:s,vScale:l}=n,r=this.getParsed(a),c=r._custom,f=Lx(c)?"["+c.start+", "+c.end+"]":""+l.getLabelForValue(r[l.axis]);return{label:""+s.getLabelForValue(r[s.axis]),value:f}}initialize(){this.enableOptionSharing=!0,super.initialize();let a=this._cachedMeta;a.stack=this.getDataset().stack}update(a){let n=this._cachedMeta;this.updateElements(n.data,0,n.data.length,a)}updateElements(a,n,s,l){let r=l==="reset",{index:c,_cachedMeta:{vScale:f}}=this,h=f.getBasePixel(),p=f.isHorizontal(),y=this._getRuler(),{sharedOptions:b,includeOptions:x}=this._getSharedOptions(n,l);for(let v=n;v<n+s;v++){let I=this.getParsed(v),M=r||Ke(I[f.axis])?{base:h,head:h}:this._calculateBarValuePixels(v),D=this._calculateBarIndexPixels(v,y),w=(I._stacks||{})[f.axis],z={horizontal:p,base:M.base,enableBorderRadius:!w||Lx(I._custom)||c===w._top||c===w._bottom,x:p?M.head:D.center,y:p?D.center:M.head,height:p?D.size:Math.abs(M.size),width:p?Math.abs(M.size):D.size};if(x)z.options=b||this.resolveDataElementOptions(v,a[v].active?"active":l);let N=z.options||a[v].options;pO(z,N,w,c),gO(z,N,y.ratio),this.updateElement(a[v],v,z,l)}}_getStacks(a,n){let{iScale:s}=this._cachedMeta,l=s.getMatchingVisibleMetas(this._type).filter((y)=>y.controller.options.grouped),r=s.options.stacked,c=[],f=this._cachedMeta.controller.getParsed(n),h=f&&f[s.axis],p=(y)=>{let b=y._parsed.find((v)=>v[s.axis]===h),x=b&&b[y.vScale.axis];if(Ke(x)||isNaN(x))return!0};for(let y of l){if(n!==void 0&&p(y))continue;if(r===!1||c.indexOf(y.stack)===-1||r===void 0&&y.stack===void 0)c.push(y.stack);if(y.index===a)break}if(!c.length)c.push(void 0);return c}_getStackCount(a){return this._getStacks(void 0,a).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){let a=this.chart.scales,n=this.chart.options.indexAxis;return Object.keys(a).filter((s)=>a[s].axis===n).shift()}_getAxis(){let a={},n=this.getFirstScaleIdForIndexAxis();for(let s of this.chart.data.datasets)a[Ue(this.chart.options.indexAxis==="x"?s.xAxisID:s.yAxisID,n)]=!0;return Object.keys(a)}_getStackIndex(a,n,s){let l=this._getStacks(a,s),r=n!==void 0?l.indexOf(n):-1;return r===-1?l.length-1:r}_getRuler(){let a=this.options,n=this._cachedMeta,s=n.iScale,l=[],r,c;for(r=0,c=n.data.length;r<c;++r)l.push(s.getPixelForValue(this.getParsed(r)[s.axis],r));let f=a.barThickness;return{min:f||rO(n),pixels:l,start:s._startPixel,end:s._endPixel,stackCount:this._getStackCount(),scale:s,grouped:a.grouped,ratio:f?1:a.categoryPercentage*a.barPercentage}}_calculateBarValuePixels(a){let{_cachedMeta:{vScale:n,_stacked:s,index:l},options:{base:r,minBarLength:c}}=this,f=r||0,h=this.getParsed(a),p=h._custom,y=Lx(p),b=h[n.axis],x=0,v=s?this.applyStack(n,h,s):b,I,M;if(v!==b)x=v-b,v=b;if(y){if(b=p.barStart,v=p.barEnd-p.barStart,b!==0&&Ho(b)!==Ho(p.barEnd))x=0;x+=b}let D=!Ke(r)&&!y?r:x,w=n.getPixelForValue(D);if(this.chart.getDataVisibility(a))I=n.getPixelForValue(x+v);else I=w;if(M=I-w,Math.abs(M)<c){if(M=fO(M,n,f)*c,b===f)w-=M/2;let z=n.getPixelForDecimal(0),N=n.getPixelForDecimal(1),Q=Math.min(z,N),Z=Math.max(z,N);if(w=Math.max(Math.min(w,Z),Q),I=w+M,s&&!y)h._stacks[n.axis]._visualValues[l]=n.getValueForPixel(I)-n.getValueForPixel(w)}if(w===n.getPixelForValue(f)){let z=Ho(M)*n.getLineWidthForValue(f)/2;w+=z,M-=z}return{size:M,base:w,head:I,center:I+M/2}}_calculateBarIndexPixels(a,n){let s=n.scale,l=this.options,r=l.skipNull,c=Ue(l.maxBarThickness,1/0),f,h,p=this._getAxisCount();if(n.grouped){let y=r?this._getStackCount(a):n.stackCount,b=l.barThickness==="flex"?cO(a,n,l,y*p):uO(a,n,l,y*p),x=this.chart.options.indexAxis==="x"?this.getDataset().xAxisID:this.getDataset().yAxisID,v=this._getAxis().indexOf(Ue(x,this.getFirstScaleIdForIndexAxis())),I=this._getStackIndex(this.index,this._cachedMeta.stack,r?a:void 0)+v;f=b.start+b.chunk*I+b.chunk/2,h=Math.min(c,b.chunk*b.ratio)}else f=s.getPixelForValue(this.getParsed(a)[s.axis],a),h=Math.min(c,n.min*n.ratio);return{base:f-h/2,head:f+h/2,center:f,size:h}}draw(){let a=this._cachedMeta,n=a.vScale,s=a.data,l=s.length,r=0;for(;r<l;++r)if(this.getParsed(r)[n.axis]!==null&&!s[r].hidden)s[r].draw(this._ctx)}}class Fx extends xp{static id="line";static defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1};static overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(a){let n=this._cachedMeta,{dataset:s,data:l=[],_dataset:r}=n,c=this.chart._animationsDisabled,{start:f,count:h}=Ow(n,l,c);if(this._drawStart=f,this._drawCount=h,Ew(n))f=0,h=l.length;s._chart=this.chart,s._datasetIndex=this.index,s._decimated=!!r._decimated,s.points=l;let p=this.resolveDatasetElementOptions(a);if(!this.options.showLine)p.borderWidth=0;p.segment=this.options.segment,this.updateElement(s,void 0,{animated:!c,options:p},a),this.updateElements(l,f,h,a)}updateElements(a,n,s,l){let r=l==="reset",{iScale:c,vScale:f,_stacked:h,_dataset:p}=this._cachedMeta,{sharedOptions:y,includeOptions:b}=this._getSharedOptions(n,l),x=c.axis,v=f.axis,{spanGaps:I,segment:M}=this.options,D=jr(I)?I:Number.POSITIVE_INFINITY,w=this.chart._animationsDisabled||r||l==="none",z=n+s,N=a.length,Q=n>0&&this.getParsed(n-1);for(let Z=0;Z<N;++Z){let X=a[Z],oe=w?X:{};if(Z<n||Z>=z){oe.skip=!0;continue}let V=this.getParsed(Z),J=Ke(V[v]),re=oe[x]=c.getPixelForValue(V[x],Z),q=oe[v]=r||J?f.getBasePixel():f.getPixelForValue(h?this.applyStack(f,V,h):V[v],Z);if(oe.skip=isNaN(re)||isNaN(q)||J,oe.stop=Z>0&&Math.abs(V[x]-Q[x])>D,M)oe.parsed=V,oe.raw=p.data[Z];if(b)oe.options=y||this.resolveDataElementOptions(Z,X.active?"active":l);if(!w)this.updateElement(X,Z,oe,l);Q=V}}getMaxOverflow(){let a=this._cachedMeta,n=a.dataset,s=n.options&&n.options.borderWidth||0,l=a.data||[];if(!l.length)return s;let r=l[0].size(this.resolveDataElementOptions(0)),c=l[l.length-1].size(this.resolveDataElementOptions(l.length-1));return Math.max(s,r,c)/2}draw(){let a=this._cachedMeta;a.dataset.updateControlPoints(this.chart.chartArea,a.iScale.axis),super.draw()}}function xl(){throw Error("This method is not implemented: Check that a complete date adapter is provided.")}class Nx{static override(a){Object.assign(Nx.prototype,a)}options;constructor(a){this.options=a||{}}init(){}formats(){return xl()}parse(){return xl()}format(){return xl()}add(){return xl()}diff(){return xl()}startOf(){return xl()}endOf(){return xl()}}var yO={_date:Nx};function bO(a,n,s,l){let{controller:r,data:c,_sorted:f}=a,h=r._cachedMeta.iScale,p=a.dataset?a.dataset.options?a.dataset.options.spanGaps:null:null;if(h&&n===h.axis&&n!=="r"&&f&&c.length){let y=h._reversePixels?Tw:ri;if(!l){let b=y(c,n,s);if(p){let{vScale:x}=r._cachedMeta,{_parsed:v}=a,I=v.slice(0,b.lo+1).reverse().findIndex((D)=>!Ke(D[x.axis]));b.lo-=Math.max(0,I);let M=v.slice(b.hi).findIndex((D)=>!Ke(D[x.axis]));b.hi+=Math.max(0,M)}return b}else if(r._sharedOptions){let b=c[0],x=typeof b.getRange==="function"&&b.getRange(n);if(x){let v=y(c,n,s-x),I=y(c,n,s+x);return{lo:v.lo,hi:I.hi}}}}return{lo:0,hi:c.length-1}}function nd(a,n,s,l,r){let c=a.getSortedVisibleDatasetMetas(),f=s[n];for(let h=0,p=c.length;h<p;++h){let{index:y,data:b}=c[h],{lo:x,hi:v}=bO(c[h],n,f,r);for(let I=x;I<=v;++I){let M=b[I];if(!M.skip)l(M,y,I)}}}function xO(a){let n=a.indexOf("x")!==-1,s=a.indexOf("y")!==-1;return function(l,r){let c=n?Math.abs(l.x-r.x):0,f=s?Math.abs(l.y-r.y):0;return Math.sqrt(Math.pow(c,2)+Math.pow(f,2))}}function Cx(a,n,s,l,r){let c=[];if(!r&&!a.isPointInArea(n))return c;return nd(a,s,n,function(h,p,y){if(!r&&!xn(h,a.chartArea,0))return;if(h.inRange(n.x,n.y,l))c.push({element:h,datasetIndex:p,index:y})},!0),c}function SO(a,n,s,l){let r=[];function c(f,h,p){let{startAngle:y,endAngle:b}=f.getProps(["startAngle","endAngle"],l),{angle:x}=ww(f,{x:n.x,y:n.y});if(Jb(x,y,b))r.push({element:f,datasetIndex:h,index:p})}return nd(a,s,n,c),r}function vO(a,n,s,l,r,c){let f=[],h=xO(s),p=Number.POSITIVE_INFINITY;function y(b,x,v){let I=b.inRange(n.x,n.y,r);if(l&&!I)return;let M=b.getCenterPoint(r);if(!(!!c||a.isPointInArea(M))&&!I)return;let w=h(n,M);if(w<p)f=[{element:b,datasetIndex:x,index:v}],p=w;else if(w===p)f.push({element:b,datasetIndex:x,index:v})}return nd(a,s,n,y),f}function Ix(a,n,s,l,r,c){if(!c&&!a.isPointInArea(n))return[];return s==="r"&&!l?SO(a,n,s,r):vO(a,n,s,l,r,c)}function lM(a,n,s,l,r){let c=[],f=s==="x"?"inXRange":"inYRange",h=!1;if(nd(a,s,n,(p,y,b)=>{if(p[f]&&p[f](n[s],r))c.push({element:p,datasetIndex:y,index:b}),h=h||p.inRange(n.x,n.y,r)}),l&&!h)return[];return c}var LO={evaluateInteractionItems:nd,modes:{index(a,n,s,l){let r=pi(n,a),c=s.axis||"x",f=s.includeInvisible||!1,h=s.intersect?Cx(a,r,c,l,f):Ix(a,r,c,!1,l,f),p=[];if(!h.length)return[];return a.getSortedVisibleDatasetMetas().forEach((y)=>{let b=h[0].index,x=y.data[b];if(x&&!x.skip)p.push({element:x,datasetIndex:y.index,index:b})}),p},dataset(a,n,s,l){let r=pi(n,a),c=s.axis||"xy",f=s.includeInvisible||!1,h=s.intersect?Cx(a,r,c,l,f):Ix(a,r,c,!1,l,f);if(h.length>0){let p=h[0].datasetIndex,y=a.getDatasetMeta(p).data;h=[];for(let b=0;b<y.length;++b)h.push({element:y[b],datasetIndex:p,index:b})}return h},point(a,n,s,l){let r=pi(n,a),c=s.axis||"xy",f=s.includeInvisible||!1;return Cx(a,r,c,l,f)},nearest(a,n,s,l){let r=pi(n,a),c=s.axis||"xy",f=s.includeInvisible||!1;return Ix(a,r,c,s.intersect,l,f)},x(a,n,s,l){let r=pi(n,a);return lM(a,r,"x",s.intersect,l)},y(a,n,s,l){let r=pi(n,a);return lM(a,r,"y",s.intersect,l)}}},JM=["left","top","right","bottom"];function Wc(a,n){return a.filter((s)=>s.pos===n)}function rM(a,n){return a.filter((s)=>JM.indexOf(s.pos)===-1&&s.box.axis===n)}function $c(a,n){return a.sort((s,l)=>{let r=n?l:s,c=n?s:l;return r.weight===c.weight?r.index-c.index:r.weight-c.weight})}function CO(a){let n=[],s,l,r,c,f,h;for(s=0,l=(a||[]).length;s<l;++s)r=a[s],{position:c,options:{stack:f,stackWeight:h=1}}=r,n.push({index:s,box:r,pos:c,horizontal:r.isHorizontal(),weight:r.weight,stack:f&&c+f,stackWeight:h});return n}function IO(a){let n={};for(let s of a){let{stack:l,pos:r,stackWeight:c}=s;if(!l||!JM.includes(r))continue;let f=n[l]||(n[l]={count:0,placed:0,weight:0,size:0});f.count++,f.weight+=c}return n}function wO(a,n){let s=IO(a),{vBoxMaxWidth:l,hBoxMaxHeight:r}=n,c,f,h;for(c=0,f=a.length;c<f;++c){h=a[c];let{fullSize:p}=h.box,y=s[h.stack],b=y&&h.stackWeight/y.weight;if(h.horizontal)h.width=b?b*l:p&&n.availableWidth,h.height=r;else h.width=l,h.height=b?b*r:p&&n.availableHeight}return s}function MO(a){let n=CO(a),s=$c(n.filter((y)=>y.box.fullSize),!0),l=$c(Wc(n,"left"),!0),r=$c(Wc(n,"right")),c=$c(Wc(n,"top"),!0),f=$c(Wc(n,"bottom")),h=rM(n,"x"),p=rM(n,"y");return{fullSize:s,leftAndTop:l.concat(c),rightAndBottom:r.concat(p).concat(f).concat(h),chartArea:Wc(n,"chartArea"),vertical:l.concat(r).concat(p),horizontal:c.concat(f).concat(h)}}function uM(a,n,s,l){return Math.max(a[s],n[s])+Math.max(a[l],n[l])}function KM(a,n){a.top=Math.max(a.top,n.top),a.left=Math.max(a.left,n.left),a.bottom=Math.max(a.bottom,n.bottom),a.right=Math.max(a.right,n.right)}function TO(a,n,s,l){let{pos:r,box:c}=s,f=a.maxPadding;if(!$e(r)){if(s.size)a[r]-=s.size;let x=l[s.stack]||{size:0,count:1};x.size=Math.max(x.size,s.horizontal?c.height:c.width),s.size=x.size/x.count,a[r]+=s.size}if(c.getPadding)KM(f,c.getPadding());let h=Math.max(0,n.outerWidth-uM(f,a,"left","right")),p=Math.max(0,n.outerHeight-uM(f,a,"top","bottom")),y=h!==a.w,b=p!==a.h;return a.w=h,a.h=p,s.horizontal?{same:y,other:b}:{same:b,other:y}}function AO(a){let n=a.maxPadding;function s(l){let r=Math.max(n[l]-a[l],0);return a[l]+=r,r}a.y+=s("top"),a.x+=s("left"),s("right"),s("bottom")}function _O(a,n){let s=n.maxPadding;function l(r){let c={left:0,top:0,right:0,bottom:0};return r.forEach((f)=>{c[f]=Math.max(n[f],s[f])}),c}return a?l(["left","right"]):l(["top","bottom"])}function Jc(a,n,s,l){let r=[],c,f,h,p,y,b;for(c=0,f=a.length,y=0;c<f;++c){h=a[c],p=h.box,p.update(h.width||n.w,h.height||n.h,_O(h.horizontal,n));let{same:x,other:v}=TO(n,s,h,l);if(y|=x&&r.length,b=b||v,!p.fullSize)r.push(h)}return y&&Jc(r,n,s,l)||b}function dp(a,n,s,l,r){a.top=s,a.left=n,a.right=n+l,a.bottom=s+r,a.width=l,a.height=r}function cM(a,n,s,l){let r=s.padding,{x:c,y:f}=n;for(let h of a){let p=h.box,y=l[h.stack]||{count:1,placed:0,weight:1},b=h.stackWeight/y.weight||1;if(h.horizontal){let x=n.w*b,v=y.size||p.height;if(qr(y.start))f=y.start;if(p.fullSize)dp(p,r.left,f,s.outerWidth-r.right-r.left,v);else dp(p,n.left+y.placed,f,x,v);y.start=f,y.placed+=x,f=p.bottom}else{let x=n.h*b,v=y.size||p.width;if(qr(y.start))c=y.start;if(p.fullSize)dp(p,c,r.top,v,s.outerHeight-r.bottom-r.top);else dp(p,c,n.top+y.placed,v,x);y.start=c,y.placed+=x,c=p.right}}n.x=c,n.y=f}var Io={addBox(a,n){if(!a.boxes)a.boxes=[];n.fullSize=n.fullSize||!1,n.position=n.position||"top",n.weight=n.weight||0,n._layers=n._layers||function(){return[{z:0,draw(s){n.draw(s)}}]},a.boxes.push(n)},removeBox(a,n){let s=a.boxes?a.boxes.indexOf(n):-1;if(s!==-1)a.boxes.splice(s,1)},configure(a,n,s){n.fullSize=s.fullSize,n.position=s.position,n.weight=s.weight},update(a,n,s,l){if(!a)return;let r=la(a.options.layout.padding),c=Math.max(n-r.width,0),f=Math.max(s-r.height,0),h=MO(a.boxes),p=h.vertical,y=h.horizontal;lt(a.boxes,(D)=>{if(typeof D.beforeLayout==="function")D.beforeLayout()});let b=p.reduce((D,w)=>w.box.options&&w.box.options.display===!1?D:D+1,0)||1,x=Object.freeze({outerWidth:n,outerHeight:s,padding:r,availableWidth:c,availableHeight:f,vBoxMaxWidth:c/2/b,hBoxMaxHeight:f/2}),v=Object.assign({},r);KM(v,la(l));let I=Object.assign({maxPadding:v,w:c,h:f,x:r.left,y:r.top},r),M=wO(p.concat(y),x);if(Jc(h.fullSize,I,x,M),Jc(p,I,x,M),Jc(y,I,x,M))Jc(p,I,x,M);AO(I),cM(h.leftAndTop,I,x,M),I.x+=I.w,I.y+=I.h,cM(h.rightAndBottom,I,x,M),a.chartArea={left:I.left,top:I.top,right:I.left+I.w,bottom:I.top+I.h,height:I.h,width:I.w},lt(h.chartArea,(D)=>{let w=D.box;Object.assign(w,a.chartArea),w.update(I.w,I.h,{left:0,top:0,right:0,bottom:0})})}};class qx{acquireContext(a,n){}releaseContext(a){return!1}addEventListener(a,n,s){}removeEventListener(a,n,s){}getDevicePixelRatio(){return 1}getMaximumSize(a,n,s,l){return n=Math.max(0,n||a.width),s=s||a.height,{width:n,height:Math.max(0,l?Math.floor(n/l):s)}}isAttached(a){return!0}updateConfig(a){}}class eT extends qx{acquireContext(a){return a&&a.getContext&&a.getContext("2d")||null}updateConfig(a){a.options.animation=!1}}var gp="$chartjs",DO={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},dM=(a)=>a===null||a==="";function RO(a,n){let s=a.style,l=a.getAttribute("height"),r=a.getAttribute("width");if(a[gp]={initial:{height:l,width:r,style:{display:s.display,height:s.height,width:s.width}}},s.display=s.display||"block",s.boxSizing=s.boxSizing||"border-box",dM(r)){let c=hx(a,"width");if(c!==void 0)a.width=c}if(dM(l))if(a.style.height==="")a.height=a.width/(n||2);else{let c=hx(a,"height");if(c!==void 0)a.height=c}return a}var tT=Xw?{passive:!0}:!1;function kO(a,n,s){if(a)a.addEventListener(n,s,tT)}function OO(a,n,s){if(a&&a.canvas)a.canvas.removeEventListener(n,s,tT)}function EO(a,n){let s=DO[a.type]||a.type,{x:l,y:r}=pi(a,n);return{type:s,chart:n,native:a,x:l!==void 0?l:null,y:r!==void 0?r:null}}function bp(a,n){for(let s of a)if(s===n||s.contains(n))return!0}function BO(a,n,s){let l=a.canvas,r=new MutationObserver((c)=>{let f=!1;for(let h of c)f=f||bp(h.addedNodes,l),f=f&&!bp(h.removedNodes,l);if(f)s()});return r.observe(document,{childList:!0,subtree:!0}),r}function PO(a,n,s){let l=a.canvas,r=new MutationObserver((c)=>{let f=!1;for(let h of c)f=f||bp(h.removedNodes,l),f=f&&!bp(h.addedNodes,l);if(f)s()});return r.observe(document,{childList:!0,subtree:!0}),r}var td=new Map,fM=0;function aT(){let a=window.devicePixelRatio;if(a===fM)return;fM=a,td.forEach((n,s)=>{if(s.currentDevicePixelRatio!==a)n()})}function zO(a,n){if(!td.size)window.addEventListener("resize",aT);td.set(a,n)}function HO(a){if(td.delete(a),!td.size)window.removeEventListener("resize",aT)}function UO(a,n,s){let l=a.canvas,r=l&&up(l);if(!r)return;let c=ax((h,p)=>{let y=r.clientWidth;if(s(h,p),y<r.clientWidth)s()},window),f=new ResizeObserver((h)=>{let p=h[0],y=p.contentRect.width,b=p.contentRect.height;if(y===0&&b===0)return;c(y,b)});return f.observe(r),zO(a,c),f}function wx(a,n,s){if(s)s.disconnect();if(n==="resize")HO(a)}function FO(a,n,s){let l=a.canvas,r=ax((c)=>{if(a.ctx!==null)s(EO(c,a))},a);return kO(l,n,r),r}class oT extends qx{acquireContext(a,n){let s=a&&a.getContext&&a.getContext("2d");if(s&&s.canvas===a)return RO(a,n),s;return null}releaseContext(a){let n=a.canvas;if(!n[gp])return!1;let s=n[gp].initial;["height","width"].forEach((r)=>{let c=s[r];if(Ke(c))n.removeAttribute(r);else n.setAttribute(r,c)});let l=s.style||{};return Object.keys(l).forEach((r)=>{n.style[r]=l[r]}),n.width=n.width,delete n[gp],!0}addEventListener(a,n,s){this.removeEventListener(a,n);let l=a.$proxies||(a.$proxies={}),c={attach:BO,detach:PO,resize:UO}[n]||FO;l[n]=c(a,n,s)}removeEventListener(a,n){let s=a.$proxies||(a.$proxies={}),l=s[n];if(!l)return;({attach:wx,detach:wx,resize:wx}[n]||OO)(a,n,l),s[n]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(a,n,s,l){return Yw(a,n,s,l)}isAttached(a){let n=a&&up(a);return!!(n&&n.isConnected)}}function NO(a){if(!rp()||typeof OffscreenCanvas<"u"&&a instanceof OffscreenCanvas)return eT;return oT}class rs{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(a){let{x:n,y:s}=this.getProps(["x","y"],a);return{x:n,y:s}}hasValue(){return jr(this.x)&&jr(this.y)}getProps(a,n){let s=this.$animations;if(!n||!s)return this;let l={};return a.forEach((r)=>{l[r]=s[r]&&s[r].active()?s[r]._to:this[r]}),l}}function qO(a,n){let s=a.options.ticks,l=VO(a),r=Math.min(s.maxTicksLimit||l,l),c=s.major.enabled?GO(n):[],f=c.length,h=c[0],p=c[f-1],y=[];if(f>r)return YO(n,y,c,f/r),y;let b=jO(c,n,r);if(f>0){let x,v,I=f>1?Math.round((p-h)/(f-1)):null;fp(n,y,b,Ke(I)?0:h-I,h);for(x=0,v=f-1;x<v;x++)fp(n,y,b,c[x],c[x+1]);return fp(n,y,b,p,Ke(I)?n.length:p+I),y}return fp(n,y,b),y}function VO(a){let n=a.options.offset,s=a._tickSize(),l=a._length/s+(n?0:1),r=a._maxLength/s;return Math.floor(Math.min(l,r))}function jO(a,n,s){let l=XO(a),r=n.length/s;if(!l)return Math.max(r,1);let c=Cw(l);for(let f=0,h=c.length-1;f<h;f++){let p=c[f];if(p>r)return p}return Math.max(r,1)}function GO(a){let n=[],s,l;for(s=0,l=a.length;s<l;s++)if(a[s].major)n.push(s);return n}function YO(a,n,s,l){let r=0,c=s[0],f;l=Math.ceil(l);for(f=0;f<a.length;f++)if(f===c)n.push(a[f]),r++,c=s[r*l]}function fp(a,n,s,l,r){let c=Ue(l,0),f=Math.min(Ue(r,a.length),a.length),h=0,p,y,b;if(s=Math.ceil(s),r)p=r-l,s=p/Math.floor(p/s);b=c;while(b<0)h++,b=Math.round(c+h*s);for(y=Math.max(c,0);y<f;y++)if(y===b)n.push(a[y]),h++,b=Math.round(c+h*s)}function XO(a){let n=a.length,s,l;if(n<2)return!1;for(l=a[0],s=1;s<n;++s)if(a[s]-a[s-1]!==l)return!1;return l}var WO=(a)=>a==="left"?"right":a==="right"?"left":a,hM=(a,n,s)=>n==="top"||n==="left"?a[n]+s:a[n]-s,pM=(a,n)=>Math.min(n||a,a);function mM(a,n){let s=[],l=a.length/n,r=a.length,c=0;for(;c<r;c+=l)s.push(a[Math.floor(c)]);return s}function $O(a,n,s){let l=a.ticks.length,r=Math.min(n,l-1),c=a._startPixel,f=a._endPixel,h=0.000001,p=a.getPixelForTick(r),y;if(s){if(l===1)y=Math.max(p-c,f-p);else if(n===0)y=(a.getPixelForTick(1)-p)/2;else y=(p-a.getPixelForTick(r-1))/2;if(p+=r<n?y:-y,p<c-0.000001||p>f+0.000001)return}return p}function QO(a,n){lt(a,(s)=>{let l=s.gc,r=l.length/2,c;if(r>n){for(c=0;c<r;++c)delete s.data[l[c]];l.splice(0,r)}})}function Qc(a){return a.drawTicks?a.tickLength:0}function gM(a,n){if(!a.display)return 0;let s=jt(a.font,n),l=la(a.padding);return(St(a.text)?a.text.length:1)*s.lineHeight+l.height}function ZO(a,n){return ss(a,{scale:n,type:"scale"})}function JO(a,n,s){return ss(a,{tick:s,index:n,type:"tick"})}function KO(a,n,s){let l=op(a);if(s&&n!=="right"||!s&&n==="right")l=WO(l);return l}function eE(a,n,s,l){let{top:r,left:c,bottom:f,right:h,chart:p}=a,{chartArea:y,scales:b}=p,x=0,v,I,M,D=f-r,w=h-c;if(a.isHorizontal()){if(I=ia(l,c,h),$e(s)){let z=Object.keys(s)[0],N=s[z];M=b[z].getPixelForValue(N)+D-n}else if(s==="center")M=(y.bottom+y.top)/2+D-n;else M=hM(a,s,n);v=h-c}else{if($e(s)){let z=Object.keys(s)[0],N=s[z];I=b[z].getPixelForValue(N)-w+n}else if(s==="center")I=(y.left+y.right)/2-w+n;else I=hM(a,s,n);M=ia(l,f,r),x=s==="left"?-Ba:Ba}return{titleX:I,titleY:M,maxWidth:v,rotation:x}}class vl extends rs{constructor(a){super();this.id=a.id,this.type=a.type,this.options=void 0,this.ctx=a.ctx,this.chart=a.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(a){this.options=a.setContext(this.getContext()),this.axis=a.axis,this._userMin=this.parse(a.min),this._userMax=this.parse(a.max),this._suggestedMin=this.parse(a.suggestedMin),this._suggestedMax=this.parse(a.suggestedMax)}parse(a,n){return a}getUserBounds(){let{_userMin:a,_userMax:n,_suggestedMin:s,_suggestedMax:l}=this;return a=Ha(a,Number.POSITIVE_INFINITY),n=Ha(n,Number.NEGATIVE_INFINITY),s=Ha(s,Number.POSITIVE_INFINITY),l=Ha(l,Number.NEGATIVE_INFINITY),{min:Ha(a,s),max:Ha(n,l),minDefined:At(a),maxDefined:At(n)}}getMinMax(a){let{min:n,max:s,minDefined:l,maxDefined:r}=this.getUserBounds(),c;if(l&&r)return{min:n,max:s};let f=this.getMatchingVisibleMetas();for(let h=0,p=f.length;h<p;++h){if(c=f[h].controller.getMinMax(this,a),!l)n=Math.min(n,c.min);if(!r)s=Math.max(s,c.max)}return n=r&&n>s?s:n,s=l&&n>s?n:s,{min:Ha(n,Ha(s,n)),max:Ha(s,Ha(n,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){let a=this.chart.data;return this.options.labels||(this.isHorizontal()?a.xLabels:a.yLabels)||a.labels||[]}getLabelItems(a=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(a))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){gt(this.options.beforeUpdate,[this])}update(a,n,s){let{beginAtZero:l,grace:r,ticks:c}=this.options,f=c.sampleSize;if(this.beforeUpdate(),this.maxWidth=a,this.maxHeight=n,this._margins=s=Object.assign({left:0,right:0,top:0,bottom:0},s),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+s.left+s.right:this.height+s.top+s.bottom,!this._dataLimitsCached)this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Fw(this,r,l),this._dataLimitsCached=!0;this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();let h=f<this.ticks.length;if(this._convertTicksToLabels(h?mM(this.ticks,f):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),c.display&&(c.autoSkip||c.source==="auto"))this.ticks=qO(this,this.ticks),this._labelSizes=null,this.afterAutoSkip();if(h)this._convertTicksToLabels(this.ticks);this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let a=this.options.reverse,n,s;if(this.isHorizontal())n=this.left,s=this.right;else n=this.top,s=this.bottom,a=!a;this._startPixel=n,this._endPixel=s,this._reversePixels=a,this._length=s-n,this._alignToPixels=this.options.alignToPixels}afterUpdate(){gt(this.options.afterUpdate,[this])}beforeSetDimensions(){gt(this.options.beforeSetDimensions,[this])}setDimensions(){if(this.isHorizontal())this.width=this.maxWidth,this.left=0,this.right=this.width;else this.height=this.maxHeight,this.top=0,this.bottom=this.height;this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){gt(this.options.afterSetDimensions,[this])}_callHooks(a){this.chart.notifyPlugins(a,this.getContext()),gt(this.options[a],[this])}beforeDataLimits(){this._callHooks("beforeDataLimits")}determineDataLimits(){}afterDataLimits(){this._callHooks("afterDataLimits")}beforeBuildTicks(){this._callHooks("beforeBuildTicks")}buildTicks(){return[]}afterBuildTicks(){this._callHooks("afterBuildTicks")}beforeTickToLabelConversion(){gt(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(a){let n=this.options.ticks,s,l,r;for(s=0,l=a.length;s<l;s++)r=a[s],r.label=gt(n.callback,[r.value,s,a],this)}afterTickToLabelConversion(){gt(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){gt(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){let a=this.options,n=a.ticks,s=pM(this.ticks.length,a.ticks.maxTicksLimit),l=n.minRotation||0,r=n.maxRotation,c=l,f,h,p;if(!this._isVisible()||!n.display||l>=r||s<=1||!this.isHorizontal()){this.labelRotation=l;return}let y=this._getLabelSizes(),b=y.widest.width,x=y.highest.height,v=za(this.chart.width-b,0,this.maxWidth);if(f=a.offset?this.maxWidth/s:v/(s-1),b+6>f)f=v/(s-(a.offset?0.5:1)),h=this.maxHeight-Qc(a.grid)-n.padding-gM(a.title,this.chart.options.font),p=Math.sqrt(b*b+x*x),c=tp(Math.min(Math.asin(za((y.highest.height+6)/f,-1,1)),Math.asin(za(h/p,-1,1))-Math.asin(za(x/p,-1,1)))),c=Math.max(l,Math.min(r,c));this.labelRotation=c}afterCalculateLabelRotation(){gt(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){gt(this.options.beforeFit,[this])}fit(){let a={width:0,height:0},{chart:n,options:{ticks:s,title:l,grid:r}}=this,c=this._isVisible(),f=this.isHorizontal();if(c){let h=gM(l,n.options.font);if(f)a.width=this.maxWidth,a.height=Qc(r)+h;else a.height=this.maxHeight,a.width=Qc(r)+h;if(s.display&&this.ticks.length){let{first:p,last:y,widest:b,highest:x}=this._getLabelSizes(),v=s.padding*2,I=os(this.labelRotation),M=Math.cos(I),D=Math.sin(I);if(f){let w=s.mirror?0:D*b.width+M*x.height;a.height=Math.min(this.maxHeight,a.height+w+v)}else{let w=s.mirror?0:M*b.width+D*x.height;a.width=Math.min(this.maxWidth,a.width+w+v)}this._calculatePadding(p,y,D,M)}}if(this._handleMargins(),f)this.width=this._length=n.width-this._margins.left-this._margins.right,this.height=a.height;else this.width=a.width,this.height=this._length=n.height-this._margins.top-this._margins.bottom}_calculatePadding(a,n,s,l){let{ticks:{align:r,padding:c},position:f}=this.options,h=this.labelRotation!==0,p=f!=="top"&&this.axis==="x";if(this.isHorizontal()){let y=this.getPixelForTick(0)-this.left,b=this.right-this.getPixelForTick(this.ticks.length-1),x=0,v=0;if(h)if(p)x=l*a.width,v=s*n.height;else x=s*a.height,v=l*n.width;else if(r==="start")v=n.width;else if(r==="end")x=a.width;else if(r!=="inner")x=a.width/2,v=n.width/2;this.paddingLeft=Math.max((x-y+c)*this.width/(this.width-y),0),this.paddingRight=Math.max((v-b+c)*this.width/(this.width-b),0)}else{let y=n.height/2,b=a.height/2;if(r==="start")y=0,b=a.height;else if(r==="end")y=n.height,b=0;this.paddingTop=y+c,this.paddingBottom=b+c}}_handleMargins(){if(this._margins)this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom)}afterFit(){gt(this.options.afterFit,[this])}isHorizontal(){let{axis:a,position:n}=this.options;return n==="top"||n==="bottom"||a==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(a){this.beforeTickToLabelConversion(),this.generateTickLabels(a);let n,s;for(n=0,s=a.length;n<s;n++)if(Ke(a[n].label))a.splice(n,1),s--,n--;this.afterTickToLabelConversion()}_getLabelSizes(){let a=this._labelSizes;if(!a){let n=this.options.ticks.sampleSize,s=this.ticks;if(n<s.length)s=mM(s,n);this._labelSizes=a=this._computeLabelSizes(s,s.length,this.options.ticks.maxTicksLimit)}return a}_computeLabelSizes(a,n,s){let{ctx:l,_longestTextCache:r}=this,c=[],f=[],h=Math.floor(n/pM(n,s)),p=0,y=0,b,x,v,I,M,D,w,z,N,Q,Z;for(b=0;b<n;b+=h){if(I=a[b].label,M=this._resolveTickFontOptions(b),l.font=D=M.string,w=r[D]=r[D]||{data:{},gc:[]},z=M.lineHeight,N=Q=0,!Ke(I)&&!St(I))N=Nc(l,w.data,w.gc,N,I),Q=z;else if(St(I)){for(x=0,v=I.length;x<v;++x)if(Z=I[x],!Ke(Z)&&!St(Z))N=Nc(l,w.data,w.gc,N,Z),Q+=z}c.push(N),f.push(Q),p=Math.max(N,p),y=Math.max(Q,y)}QO(r,n);let X=c.indexOf(p),oe=f.indexOf(y),V=(J)=>({width:c[J]||0,height:f[J]||0});return{first:V(0),last:V(n-1),widest:V(X),highest:V(oe),widths:c,heights:f}}getLabelForValue(a){return a}getPixelForValue(a,n){return NaN}getValueForPixel(a){}getPixelForTick(a){let n=this.ticks;if(a<0||a>n.length-1)return null;return this.getPixelForValue(n[a].value)}getPixelForDecimal(a){if(this._reversePixels)a=1-a;let n=this._startPixel+a*this._length;return Mw(this._alignToPixels?di(this.chart,n,0):n)}getDecimalForPixel(a){let n=(a-this._startPixel)/this._length;return this._reversePixels?1-n:n}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){let{min:a,max:n}=this;return a<0&&n<0?n:a>0&&n>0?a:0}getContext(a){let n=this.ticks||[];if(a>=0&&a<n.length){let s=n[a];return s.$context||(s.$context=JO(this.getContext(),a,s))}return this.$context||(this.$context=ZO(this.chart.getContext(),this))}_tickSize(){let a=this.options.ticks,n=os(this.labelRotation),s=Math.abs(Math.cos(n)),l=Math.abs(Math.sin(n)),r=this._getLabelSizes(),c=a.autoSkipPadding||0,f=r?r.widest.width+c:0,h=r?r.highest.height+c:0;return this.isHorizontal()?h*s>f*l?f/s:h/l:h*l<f*s?h/s:f/l}_isVisible(){let a=this.options.display;if(a!=="auto")return!!a;return this.getMatchingVisibleMetas().length>0}_computeGridLineItems(a){let n=this.axis,s=this.chart,l=this.options,{grid:r,position:c,border:f}=l,h=r.offset,p=this.isHorizontal(),b=this.ticks.length+(h?1:0),x=Qc(r),v=[],I=f.setContext(this.getContext()),M=I.display?I.width:0,D=M/2,w=function(G){return di(s,G,M)},z,N,Q,Z,X,oe,V,J,re,q,ce,ye;if(c==="top")z=w(this.bottom),oe=this.bottom-x,J=z-D,q=w(a.top)+D,ye=a.bottom;else if(c==="bottom")z=w(this.top),q=a.top,ye=w(a.bottom)-D,oe=z+D,J=this.top+x;else if(c==="left")z=w(this.right),X=this.right-x,V=z-D,re=w(a.left)+D,ce=a.right;else if(c==="right")z=w(this.left),re=a.left,ce=w(a.right)-D,X=z+D,V=this.left+x;else if(n==="x"){if(c==="center")z=w((a.top+a.bottom)/2+0.5);else if($e(c)){let G=Object.keys(c)[0],se=c[G];z=w(this.chart.scales[G].getPixelForValue(se))}q=a.top,ye=a.bottom,oe=z+D,J=oe+x}else if(n==="y"){if(c==="center")z=w((a.left+a.right)/2);else if($e(c)){let G=Object.keys(c)[0],se=c[G];z=w(this.chart.scales[G].getPixelForValue(se))}X=z-D,V=X-x,re=a.left,ce=a.right}let Se=Ue(l.ticks.maxTicksLimit,b),Me=Math.max(1,Math.ceil(b/Se));for(N=0;N<b;N+=Me){let G=this.getContext(N),se=r.setContext(G),de=f.setContext(G),Ve=se.lineWidth,Ee=se.color,R=de.dash||[],W=de.dashOffset,fe=se.tickWidth,he=se.tickColor,Be=se.tickBorderDash||[],Dt=se.tickBorderDashOffset;if(Q=$O(this,N,h),Q===void 0)continue;if(Z=di(s,Q,Ve),p)X=V=re=ce=Z;else oe=J=q=ye=Z;v.push({tx1:X,ty1:oe,tx2:V,ty2:J,x1:re,y1:q,x2:ce,y2:ye,width:Ve,color:Ee,borderDash:R,borderDashOffset:W,tickWidth:fe,tickColor:he,tickBorderDash:Be,tickBorderDashOffset:Dt})}return this._ticksLength=b,this._borderValue=z,v}_computeLabelItems(a){let n=this.axis,s=this.options,{position:l,ticks:r}=s,c=this.isHorizontal(),f=this.ticks,{align:h,crossAlign:p,padding:y,mirror:b}=r,x=Qc(s.grid),v=x+y,I=b?-y:v,M=-os(this.labelRotation),D=[],w,z,N,Q,Z,X,oe,V,J,re,q,ce,ye="middle";if(l==="top")X=this.bottom-I,oe=this._getXAxisLabelAlignment();else if(l==="bottom")X=this.top+I,oe=this._getXAxisLabelAlignment();else if(l==="left"){let Me=this._getYAxisLabelAlignment(x);oe=Me.textAlign,Z=Me.x}else if(l==="right"){let Me=this._getYAxisLabelAlignment(x);oe=Me.textAlign,Z=Me.x}else if(n==="x"){if(l==="center")X=(a.top+a.bottom)/2+v;else if($e(l)){let Me=Object.keys(l)[0],G=l[Me];X=this.chart.scales[Me].getPixelForValue(G)+v}oe=this._getXAxisLabelAlignment()}else if(n==="y"){if(l==="center")Z=(a.left+a.right)/2-v;else if($e(l)){let Me=Object.keys(l)[0],G=l[Me];Z=this.chart.scales[Me].getPixelForValue(G)}oe=this._getYAxisLabelAlignment(x).textAlign}if(n==="y"){if(h==="start")ye="top";else if(h==="end")ye="bottom"}let Se=this._getLabelSizes();for(w=0,z=f.length;w<z;++w){N=f[w],Q=N.label;let Me=r.setContext(this.getContext(w));V=this.getPixelForTick(w)+r.labelOffset,J=this._resolveTickFontOptions(w),re=J.lineHeight,q=St(Q)?Q.length:1;let G=q/2,se=Me.color,de=Me.textStrokeColor,Ve=Me.textStrokeWidth,Ee=oe;if(c){if(Z=V,oe==="inner")if(w===z-1)Ee=!this.options.reverse?"right":"left";else if(w===0)Ee=!this.options.reverse?"left":"right";else Ee="center";if(l==="top")if(p==="near"||M!==0)ce=-q*re+re/2;else if(p==="center")ce=-Se.highest.height/2-G*re+re;else ce=-Se.highest.height+re/2;else if(p==="near"||M!==0)ce=re/2;else if(p==="center")ce=Se.highest.height/2-G*re;else ce=Se.highest.height-q*re;if(b)ce*=-1;if(M!==0&&!Me.showLabelBackdrop)Z+=re/2*Math.sin(M)}else X=V,ce=(1-q)*re/2;let R;if(Me.showLabelBackdrop){let W=la(Me.backdropPadding),fe=Se.heights[w],he=Se.widths[w],Be=ce-W.top,Dt=0-W.left;switch(ye){case"middle":Be-=fe/2;break;case"bottom":Be-=fe;break}switch(oe){case"center":Dt-=he/2;break;case"right":Dt-=he;break;case"inner":if(w===z-1)Dt-=he;else if(w>0)Dt-=he/2;break}R={left:Dt,top:Be,width:he+W.width,height:fe+W.height,color:Me.backdropColor}}D.push({label:Q,font:J,textOffset:ce,options:{rotation:M,color:se,strokeColor:de,strokeWidth:Ve,textAlign:Ee,textBaseline:ye,translation:[Z,X],backdrop:R}})}return D}_getXAxisLabelAlignment(){let{position:a,ticks:n}=this.options;if(-os(this.labelRotation))return a==="top"?"left":"right";let l="center";if(n.align==="start")l="left";else if(n.align==="end")l="right";else if(n.align==="inner")l="inner";return l}_getYAxisLabelAlignment(a){let{position:n,ticks:{crossAlign:s,mirror:l,padding:r}}=this.options,c=this._getLabelSizes(),f=a+r,h=c.widest.width,p,y;if(n==="left")if(l)if(y=this.right+r,s==="near")p="left";else if(s==="center")p="center",y+=h/2;else p="right",y+=h;else if(y=this.right-f,s==="near")p="right";else if(s==="center")p="center",y-=h/2;else p="left",y=this.left;else if(n==="right")if(l)if(y=this.left+r,s==="near")p="right";else if(s==="center")p="center",y-=h/2;else p="left",y-=h;else if(y=this.left+f,s==="near")p="left";else if(s==="center")p="center",y+=h/2;else p="right",y=this.right;else p="right";return{textAlign:p,x:y}}_computeLabelArea(){if(this.options.ticks.mirror)return;let a=this.chart,n=this.options.position;if(n==="left"||n==="right")return{top:0,left:this.left,bottom:a.height,right:this.right};if(n==="top"||n==="bottom")return{top:this.top,left:0,bottom:this.bottom,right:a.width}}drawBackground(){let{ctx:a,options:{backgroundColor:n},left:s,top:l,width:r,height:c}=this;if(n)a.save(),a.fillStyle=n,a.fillRect(s,l,r,c),a.restore()}getLineWidthForValue(a){let n=this.options.grid;if(!this._isVisible()||!n.display)return 0;let l=this.ticks.findIndex((r)=>r.value===a);if(l>=0)return n.setContext(this.getContext(l)).lineWidth;return 0}drawGrid(a){let n=this.options.grid,s=this.ctx,l=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(a)),r,c,f=(h,p,y)=>{if(!y.width||!y.color)return;s.save(),s.lineWidth=y.width,s.strokeStyle=y.color,s.setLineDash(y.borderDash||[]),s.lineDashOffset=y.borderDashOffset,s.beginPath(),s.moveTo(h.x,h.y),s.lineTo(p.x,p.y),s.stroke(),s.restore()};if(n.display)for(r=0,c=l.length;r<c;++r){let h=l[r];if(n.drawOnChartArea)f({x:h.x1,y:h.y1},{x:h.x2,y:h.y2},h);if(n.drawTicks)f({x:h.tx1,y:h.ty1},{x:h.tx2,y:h.ty2},{color:h.tickColor,width:h.tickWidth,borderDash:h.tickBorderDash,borderDashOffset:h.tickBorderDashOffset})}}drawBorder(){let{chart:a,ctx:n,options:{border:s,grid:l}}=this,r=s.setContext(this.getContext()),c=s.display?r.width:0;if(!c)return;let f=l.setContext(this.getContext(0)).lineWidth,h=this._borderValue,p,y,b,x;if(this.isHorizontal())p=di(a,this.left,c)-c/2,y=di(a,this.right,f)+f/2,b=x=h;else b=di(a,this.top,c)-c/2,x=di(a,this.bottom,f)+f/2,p=y=h;n.save(),n.lineWidth=r.width,n.strokeStyle=r.color,n.beginPath(),n.moveTo(p,b),n.lineTo(y,x),n.stroke(),n.restore()}drawLabels(a){if(!this.options.ticks.display)return;let s=this.ctx,l=this._computeLabelArea();if(l)jc(s,l);let r=this.getLabelItems(a);for(let c of r){let{options:f,font:h,label:p,textOffset:y}=c;fi(s,p,0,y,h,f)}if(l)Gc(s)}drawTitle(){let{ctx:a,options:{position:n,title:s,reverse:l}}=this;if(!s.display)return;let r=jt(s.font),c=la(s.padding),f=s.align,h=r.lineHeight/2;if(n==="bottom"||n==="center"||$e(n)){if(h+=c.bottom,St(s.text))h+=r.lineHeight*(s.text.length-1)}else h+=c.top;let{titleX:p,titleY:y,maxWidth:b,rotation:x}=eE(this,h,n,f);fi(a,s.text,0,0,r,{color:s.color,maxWidth:b,rotation:x,textAlign:KO(f,n,l),textBaseline:"middle",translation:[p,y]})}draw(a){if(!this._isVisible())return;this.drawBackground(),this.drawGrid(a),this.drawBorder(),this.drawTitle(),this.drawLabels(a)}_layers(){let a=this.options,n=a.ticks&&a.ticks.z||0,s=Ue(a.grid&&a.grid.z,-1),l=Ue(a.border&&a.border.z,0);if(!this._isVisible()||this.draw!==vl.prototype.draw)return[{z:n,draw:(r)=>{this.draw(r)}}];return[{z:s,draw:(r)=>{this.drawBackground(),this.drawGrid(r),this.drawTitle()}},{z:l,draw:()=>{this.drawBorder()}},{z:n,draw:(r)=>{this.drawLabels(r)}}]}getMatchingVisibleMetas(a){let n=this.chart.getSortedVisibleDatasetMetas(),s=this.axis+"AxisID",l=[],r,c;for(r=0,c=n.length;r<c;++r){let f=n[r];if(f[s]===this.id&&(!a||f.type===a))l.push(f)}return l}_resolveTickFontOptions(a){let n=this.options.ticks.setContext(this.getContext(a));return jt(n.font)}_maxDigits(){let a=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)/a}}class Kc{constructor(a,n,s){this.type=a,this.scope=n,this.override=s,this.items=Object.create(null)}isForType(a){return Object.prototype.isPrototypeOf.call(this.type.prototype,a.prototype)}register(a){let n=Object.getPrototypeOf(a),s;if(oE(n))s=this.register(n);let l=this.items,r=a.id,c=this.scope+"."+r;if(!r)throw Error("class does not have id: "+a);if(r in l)return c;if(l[r]=a,tE(a,c,s),this.override)_t.override(a.id,a.overrides);return c}get(a){return this.items[a]}unregister(a){let n=this.items,s=a.id,l=this.scope;if(s in n)delete n[s];if(l&&s in _t[l]){if(delete _t[l][s],this.override)delete ci[s]}}}function tE(a,n,s){let l=Ur(Object.create(null),[s?_t.get(s):{},_t.get(n),a.defaults]);if(_t.set(n,l),a.defaultRoutes)aE(n,a.defaultRoutes);if(a.descriptors)_t.describe(n,a.descriptors)}function aE(a,n){Object.keys(n).forEach((s)=>{let l=s.split("."),r=l.pop(),c=[a].concat(l).join("."),f=n[s].split("."),h=f.pop(),p=f.join(".");_t.route(c,r,p,h)})}function oE(a){return"id"in a&&"defaults"in a}class nT{constructor(){this.controllers=new Kc(xp,"datasets",!0),this.elements=new Kc(rs,"elements"),this.plugins=new Kc(Object,"plugins"),this.scales=new Kc(vl,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...a){this._each("register",a)}remove(...a){this._each("unregister",a)}addControllers(...a){this._each("register",a,this.controllers)}addElements(...a){this._each("register",a,this.elements)}addPlugins(...a){this._each("register",a,this.plugins)}addScales(...a){this._each("register",a,this.scales)}getController(a){return this._get(a,this.controllers,"controller")}getElement(a){return this._get(a,this.elements,"element")}getPlugin(a){return this._get(a,this.plugins,"plugin")}getScale(a){return this._get(a,this.scales,"scale")}removeControllers(...a){this._each("unregister",a,this.controllers)}removeElements(...a){this._each("unregister",a,this.elements)}removePlugins(...a){this._each("unregister",a,this.plugins)}removeScales(...a){this._each("unregister",a,this.scales)}_each(a,n,s){[...n].forEach((l)=>{let r=s||this._getRegistryForType(l);if(s||r.isForType(l)||r===this.plugins&&l.id)this._exec(a,r,l);else lt(l,(c)=>{let f=s||this._getRegistryForType(c);this._exec(a,f,c)})})}_exec(a,n,s){let l=ep(a);gt(s["before"+l],[],s),n[a](s),gt(s["after"+l],[],s)}_getRegistryForType(a){for(let n=0;n<this._typedRegistries.length;n++){let s=this._typedRegistries[n];if(s.isForType(a))return s}return this.plugins}_get(a,n,s){let l=n.get(a);if(l===void 0)throw Error('"'+a+'" is not a registered '+s+".");return l}}var Ln=new nT;class sT{constructor(){this._init=void 0}notify(a,n,s,l){if(n==="beforeInit")this._init=this._createDescriptors(a,!0),this._notify(this._init,a,"install");if(this._init===void 0)return;let r=l?this._descriptors(a).filter(l):this._descriptors(a),c=this._notify(r,a,n,s);if(n==="afterDestroy")this._notify(r,a,"stop"),this._notify(this._init,a,"uninstall"),this._init=void 0;return c}_notify(a,n,s,l){l=l||{};for(let r of a){let c=r.plugin,f=c[s],h=[n,l,r.options];if(gt(f,h,c)===!1&&l.cancelable)return!1}return!0}invalidate(){if(!Ke(this._cache))this._oldCache=this._cache,this._cache=void 0}_descriptors(a){if(this._cache)return this._cache;let n=this._cache=this._createDescriptors(a);return this._notifyStateChanges(a),n}_createDescriptors(a,n){let s=a&&a.config,l=Ue(s.options&&s.options.plugins,{}),r=nE(s);return l===!1&&!n?[]:iE(a,r,l,n)}_notifyStateChanges(a){let n=this._oldCache||[],s=this._cache,l=(r,c)=>r.filter((f)=>!c.some((h)=>f.plugin.id===h.plugin.id));this._notify(l(n,s),a,"stop"),this._notify(l(s,n),a,"start")}}function nE(a){let n={},s=[],l=Object.keys(Ln.plugins.items);for(let c=0;c<l.length;c++)s.push(Ln.getPlugin(l[c]));let r=a.plugins||[];for(let c=0;c<r.length;c++){let f=r[c];if(s.indexOf(f)===-1)s.push(f),n[f.id]=!0}return{plugins:s,localIds:n}}function sE(a,n){if(!n&&a===!1)return null;if(a===!0)return{};return a}function iE(a,{plugins:n,localIds:s},l,r){let c=[],f=a.getContext();for(let h of n){let p=h.id,y=sE(l[p],r);if(y===null)continue;c.push({plugin:h,options:lE(a.config,{plugin:h,local:s[p]},y,f)})}return c}function lE(a,{plugin:n,local:s},l,r){let c=a.pluginScopeKeys(n),f=a.getOptionScopes(l,c);if(s&&n.defaults)f.push(n.defaults);return a.createResolver(f,r,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function Dx(a,n){let s=_t.datasets[a]||{};return((n.datasets||{})[a]||{}).indexAxis||n.indexAxis||s.indexAxis||"x"}function rE(a,n){let s=a;if(a==="_index_")s=n;else if(a==="_value_")s=n==="x"?"y":"x";return s}function uE(a,n){return a===n?"_index_":"_value_"}function yM(a){if(a==="x"||a==="y"||a==="r")return a}function cE(a){if(a==="top"||a==="bottom")return"x";if(a==="left"||a==="right")return"y"}function Rx(a,...n){if(yM(a))return a;for(let s of n){let l=s.axis||cE(s.position)||a.length>1&&yM(a[0].toLowerCase());if(l)return l}throw Error(`Cannot determine type of '${a}' axis. Please provide 'axis' or 'position' option.`)}function bM(a,n,s){if(s[n+"AxisID"]===a)return{axis:n}}function dE(a,n){if(n.data&&n.data.datasets){let s=n.data.datasets.filter((l)=>l.xAxisID===a||l.yAxisID===a);if(s.length)return bM(a,"x",s[0])||bM(a,"y",s[0])}return{}}function fE(a,n){let s=ci[a.type]||{scales:{}},l=n.scales||{},r=Dx(a.type,n),c=Object.create(null);return Object.keys(l).forEach((f)=>{let h=l[f];if(!$e(h))return console.error(`Invalid scale configuration for scale: ${f}`);if(h._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${f}`);let p=Rx(f,h,dE(f,a),_t.scales[h.type]),y=uE(p,r),b=s.scales||{};c[f]=Nr(Object.create(null),[{axis:p},h,b[p],b[y]])}),a.data.datasets.forEach((f)=>{let h=f.type||a.type,p=f.indexAxis||Dx(h,n),b=(ci[h]||{}).scales||{};Object.keys(b).forEach((x)=>{let v=rE(x,p),I=f[v+"AxisID"]||v;c[I]=c[I]||Object.create(null),Nr(c[I],[{axis:v},l[I],b[x]])})}),Object.keys(c).forEach((f)=>{let h=c[f];Nr(h,[_t.scales[h.type],_t.scale])}),c}function iT(a){let n=a.options||(a.options={});n.plugins=Ue(n.plugins,{}),n.scales=fE(a,n)}function lT(a){return a=a||{},a.datasets=a.datasets||[],a.labels=a.labels||[],a}function hE(a){return a=a||{},a.data=lT(a.data),iT(a),a}var xM=new Map,rT=new Set;function hp(a,n){let s=xM.get(a);if(!s)s=n(),xM.set(a,s),rT.add(s);return s}var Zc=(a,n,s)=>{let l=yl(n,s);if(l!==void 0)a.add(l)};class uT{constructor(a){this._config=hE(a),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(a){this._config.type=a}get data(){return this._config.data}set data(a){this._config.data=lT(a)}get options(){return this._config.options}set options(a){this._config.options=a}get plugins(){return this._config.plugins}update(){let a=this._config;this.clearCache(),iT(a)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(a){return hp(a,()=>[[`datasets.${a}`,""]])}datasetAnimationScopeKeys(a,n){return hp(`${a}.transition.${n}`,()=>[[`datasets.${a}.transitions.${n}`,`transitions.${n}`],[`datasets.${a}`,""]])}datasetElementScopeKeys(a,n){return hp(`${a}-${n}`,()=>[[`datasets.${a}.elements.${n}`,`datasets.${a}`,`elements.${n}`,""]])}pluginScopeKeys(a){let n=a.id,s=this.type;return hp(`${s}-plugin-${n}`,()=>[[`plugins.${n}`,...a.additionalOptionScopes||[]]])}_cachedScopes(a,n){let s=this._scopeCache,l=s.get(a);if(!l||n)l=new Map,s.set(a,l);return l}getOptionScopes(a,n,s){let{options:l,type:r}=this,c=this._cachedScopes(a,s),f=c.get(n);if(f)return f;let h=new Set;n.forEach((y)=>{if(a)h.add(a),y.forEach((b)=>Zc(h,a,b));y.forEach((b)=>Zc(h,l,b)),y.forEach((b)=>Zc(h,ci[r]||{},b)),y.forEach((b)=>Zc(h,_t,b)),y.forEach((b)=>Zc(h,sp,b))});let p=Array.from(h);if(p.length===0)p.push(Object.create(null));if(rT.has(n))c.set(n,p);return p}chartOptionScopes(){let{options:a,type:n}=this;return[a,ci[n]||{},_t.datasets[n]||{},{type:n},_t,sp]}resolveNamedOptions(a,n,s,l=[""]){let r={$shared:!0},{resolver:c,subPrefixes:f}=SM(this._resolverCache,a,l),h=c;if(mE(c,n)){r.$shared=!1,s=ts(s)?s():s;let p=this.createResolver(a,s,f);h=gl(c,s,p)}for(let p of n)r[p]=h[p];return r}createResolver(a,n,s=[""],l){let{resolver:r}=SM(this._resolverCache,a,s);return $e(n)?gl(r,n,void 0,l):r}}function SM(a,n,s){let l=a.get(n);if(!l)l=new Map,a.set(n,l);let r=s.join(),c=l.get(r);if(!c)c={resolver:lp(n,s),subPrefixes:s.filter((h)=>!h.toLowerCase().includes("hover"))},l.set(r,c);return c}var pE=(a)=>$e(a)&&Object.getOwnPropertyNames(a).some((n)=>ts(a[n]));function mE(a,n){let{isScriptable:s,isIndexable:l}=ux(a);for(let r of n){let c=s(r),f=l(r),h=(f||c)&&a[r];if(c&&(ts(h)||pE(h))||f&&St(h))return!0}return!1}var gE="4.5.1",yE=["top","bottom","left","right","chartArea"];function vM(a,n){return a==="top"||a==="bottom"||yE.indexOf(a)===-1&&n==="x"}function LM(a,n){return function(s,l){return s[a]===l[a]?s[n]-l[n]:s[a]-l[a]}}function CM(a){let n=a.chart,s=n.options.animation;n.notifyPlugins("afterRender"),gt(s&&s.onComplete,[a],n)}function bE(a){let n=a.chart,s=n.options.animation;gt(s&&s.onProgress,[a],n)}function cT(a){if(rp()&&typeof a==="string")a=document.getElementById(a);else if(a&&a.length)a=a[0];if(a&&a.canvas)a=a.canvas;return a}var yp={},IM=(a)=>{let n=cT(a);return Object.values(yp).filter((s)=>s.canvas===n).pop()};function xE(a,n,s){let l=Object.keys(a);for(let r of l){let c=+r;if(c>=n){let f=a[r];if(delete a[r],s>0||c>n)a[c+s]=f}}}function SE(a,n,s,l){if(!s||a.type==="mouseout")return null;if(l)return n;return a}class wa{static defaults=_t;static instances=yp;static overrides=ci;static registry=Ln;static version=gE;static getChart=IM;static register(...a){Ln.add(...a),wM()}static unregister(...a){Ln.remove(...a),wM()}constructor(a,n){let s=this.config=new uT(n),l=cT(a),r=IM(l);if(r)throw Error("Canvas is already in use. Chart with ID '"+r.id+"' must be destroyed before the canvas with ID '"+r.canvas.id+"' can be reused.");let c=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||NO(l)),this.platform.updateConfig(s);let f=this.platform.acquireContext(l,c.aspectRatio),h=f&&f.canvas,p=h&&h.height,y=h&&h.width;if(this.id=xw(),this.ctx=f,this.canvas=h,this.width=y,this.height=p,this._options=c,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new sT,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=Rw((b)=>this.update(b),c.resizeDelay||0),this._dataChanges=[],yp[this.id]=this,!f||!h){console.error("Failed to create chart: can't acquire context from the given item");return}if(is.listen(this,"complete",CM),is.listen(this,"progress",bE),this._initialize(),this.attached)this.update()}get aspectRatio(){let{options:{aspectRatio:a,maintainAspectRatio:n},width:s,height:l,_aspectRatio:r}=this;if(!Ke(a))return a;if(n&&r)return r;return l?s/l:null}get data(){return this.config.data}set data(a){this.config.data=a}get options(){return this._options}set options(a){this.config.options=a}get registry(){return Ln}_initialize(){if(this.notifyPlugins("beforeInit"),this.options.responsive)this.resize();else fx(this,this.options.devicePixelRatio);return this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return sx(this.canvas,this.ctx),this}stop(){return is.stop(this),this}resize(a,n){if(!is.running(this))this._resize(a,n);else this._resizeBeforeDraw={width:a,height:n}}_resize(a,n){let s=this.options,l=this.canvas,r=s.maintainAspectRatio&&this.aspectRatio,c=this.platform.getMaximumSize(l,a,n,r),f=s.devicePixelRatio||this.platform.getDevicePixelRatio(),h=this.width?"resize":"attach";if(this.width=c.width,this.height=c.height,this._aspectRatio=this.aspectRatio,!fx(this,f,!0))return;if(this.notifyPlugins("resize",{size:c}),gt(s.onResize,[this,c],this),this.attached){if(this._doResize(h))this.render()}}ensureScalesHaveIDs(){let n=this.options.scales||{};lt(n,(s,l)=>{s.id=l})}buildOrUpdateScales(){let a=this.options,n=a.scales,s=this.scales,l=Object.keys(s).reduce((c,f)=>(c[f]=!1,c),{}),r=[];if(n)r=r.concat(Object.keys(n).map((c)=>{let f=n[c],h=Rx(c,f),p=h==="r",y=h==="x";return{options:f,dposition:p?"chartArea":y?"bottom":"left",dtype:p?"radialLinear":y?"category":"linear"}}));lt(r,(c)=>{let f=c.options,h=f.id,p=Rx(h,f),y=Ue(f.type,c.dtype);if(f.position===void 0||vM(f.position,p)!==vM(c.dposition))f.position=c.dposition;l[h]=!0;let b=null;if(h in s&&s[h].type===y)b=s[h];else b=new(Ln.getScale(y))({id:h,type:y,ctx:this.ctx,chart:this}),s[b.id]=b;b.init(f,a)}),lt(l,(c,f)=>{if(!c)delete s[f]}),lt(s,(c)=>{Io.configure(this,c,c.options),Io.addBox(this,c)})}_updateMetasets(){let a=this._metasets,n=this.data.datasets.length,s=a.length;if(a.sort((l,r)=>l.index-r.index),s>n){for(let l=n;l<s;++l)this._destroyDatasetMeta(l);a.splice(n,s-n)}this._sortedMetasets=a.slice(0).sort(LM("order","index"))}_removeUnreferencedMetasets(){let{_metasets:a,data:{datasets:n}}=this;if(a.length>n.length)delete this._stacks;a.forEach((s,l)=>{if(n.filter((r)=>r===s._dataset).length===0)this._destroyDatasetMeta(l)})}buildOrUpdateControllers(){let a=[],n=this.data.datasets,s,l;this._removeUnreferencedMetasets();for(s=0,l=n.length;s<l;s++){let r=n[s],c=this.getDatasetMeta(s),f=r.type||this.config.type;if(c.type&&c.type!==f)this._destroyDatasetMeta(s),c=this.getDatasetMeta(s);if(c.type=f,c.indexAxis=r.indexAxis||Dx(f,this.options),c.order=r.order||0,c.index=s,c.label=""+r.label,c.visible=this.isDatasetVisible(s),c.controller)c.controller.updateIndex(s),c.controller.linkScales();else{let h=Ln.getController(f),{datasetElementType:p,dataElementType:y}=_t.datasets[f];Object.assign(h,{dataElementType:Ln.getElement(y),datasetElementType:p&&Ln.getElement(p)}),c.controller=new h(this,s),a.push(c.controller)}}return this._updateMetasets(),a}_resetElements(){lt(this.data.datasets,(a,n)=>{this.getDatasetMeta(n).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(a){let n=this.config;n.update();let s=this._options=n.createResolver(n.chartOptionScopes(),this.getContext()),l=this._animationsDisabled=!s.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:a,cancelable:!0})===!1)return;let r=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let c=0;for(let p=0,y=this.data.datasets.length;p<y;p++){let{controller:b}=this.getDatasetMeta(p),x=!l&&r.indexOf(b)===-1;b.buildOrUpdateElements(x),c=Math.max(+b.getMaxOverflow(),c)}if(c=this._minPadding=s.layout.autoPadding?c:0,this._updateLayout(c),!l)lt(r,(p)=>{p.reset()});this._updateDatasets(a),this.notifyPlugins("afterUpdate",{mode:a}),this._layers.sort(LM("z","_idx"));let{_active:f,_lastEvent:h}=this;if(h)this._eventHandler(h,!0);else if(f.length)this._updateHoverStyles(f,f,!0);this.render()}_updateScales(){lt(this.scales,(a)=>{Io.removeBox(this,a)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){let a=this.options,n=new Set(Object.keys(this._listeners)),s=new Set(a.events);if(!Wb(n,s)||!!this._responsiveListeners!==a.responsive)this.unbindEvents(),this.bindEvents()}_updateHiddenIndices(){let{_hiddenIndices:a}=this,n=this._getUniformDataChanges()||[];for(let{method:s,start:l,count:r}of n){let c=s==="_removeElements"?-r:r;xE(a,l,c)}}_getUniformDataChanges(){let a=this._dataChanges;if(!a||!a.length)return;this._dataChanges=[];let n=this.data.datasets.length,s=(r)=>new Set(a.filter((c)=>c[0]===r).map((c,f)=>f+","+c.splice(1).join(","))),l=s(0);for(let r=1;r<n;r++)if(!Wb(l,s(r)))return;return Array.from(l).map((r)=>r.split(",")).map((r)=>({method:r[1],start:+r[2],count:+r[3]}))}_updateLayout(a){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;Io.update(this,this.width,this.height,a);let n=this.chartArea,s=n.width<=0||n.height<=0;this._layers=[],lt(this.boxes,(l)=>{if(s&&l.position==="chartArea")return;if(l.configure)l.configure();this._layers.push(...l._layers())},this),this._layers.forEach((l,r)=>{l._idx=r}),this.notifyPlugins("afterLayout")}_updateDatasets(a){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:a,cancelable:!0})===!1)return;for(let n=0,s=this.data.datasets.length;n<s;++n)this.getDatasetMeta(n).controller.configure();for(let n=0,s=this.data.datasets.length;n<s;++n)this._updateDataset(n,ts(a)?a({datasetIndex:n}):a);this.notifyPlugins("afterDatasetsUpdate",{mode:a})}_updateDataset(a,n){let s=this.getDatasetMeta(a),l={meta:s,index:a,mode:n,cancelable:!0};if(this.notifyPlugins("beforeDatasetUpdate",l)===!1)return;s.controller._update(n),l.cancelable=!1,this.notifyPlugins("afterDatasetUpdate",l)}render(){if(this.notifyPlugins("beforeRender",{cancelable:!0})===!1)return;if(is.has(this)){if(this.attached&&!is.running(this))is.start(this)}else this.draw(),CM({chart:this})}draw(){let a;if(this._resizeBeforeDraw){let{width:s,height:l}=this._resizeBeforeDraw;this._resizeBeforeDraw=null,this._resize(s,l)}if(this.clear(),this.width<=0||this.height<=0)return;if(this.notifyPlugins("beforeDraw",{cancelable:!0})===!1)return;let n=this._layers;for(a=0;a<n.length&&n[a].z<=0;++a)n[a].draw(this.chartArea);this._drawDatasets();for(;a<n.length;++a)n[a].draw(this.chartArea);this.notifyPlugins("afterDraw")}_getSortedDatasetMetas(a){let n=this._sortedMetasets,s=[],l,r;for(l=0,r=n.length;l<r;++l){let c=n[l];if(!a||c.visible)s.push(c)}return s}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(this.notifyPlugins("beforeDatasetsDraw",{cancelable:!0})===!1)return;let a=this.getSortedVisibleDatasetMetas();for(let n=a.length-1;n>=0;--n)this._drawDataset(a[n]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(a){let n=this.ctx,s={meta:a,index:a.index,cancelable:!0},l=bx(this,a);if(this.notifyPlugins("beforeDatasetDraw",s)===!1)return;if(l)jc(n,l);if(a.controller.draw(),l)Gc(n);s.cancelable=!1,this.notifyPlugins("afterDatasetDraw",s)}isPointInArea(a){return xn(a,this.chartArea,this._minPadding)}getElementsAtEventForMode(a,n,s,l){let r=LO.modes[n];if(typeof r==="function")return r(this,a,s,l);return[]}getDatasetMeta(a){let n=this.data.datasets[a],s=this._metasets,l=s.filter((r)=>r&&r._dataset===n).pop();if(!l)l={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:n&&n.order||0,index:a,_dataset:n,_parsed:[],_sorted:!1},s.push(l);return l}getContext(){return this.$context||(this.$context=ss(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(a){let n=this.data.datasets[a];if(!n)return!1;let s=this.getDatasetMeta(a);return typeof s.hidden==="boolean"?!s.hidden:!n.hidden}setDatasetVisibility(a,n){let s=this.getDatasetMeta(a);s.hidden=!n}toggleDataVisibility(a){this._hiddenIndices[a]=!this._hiddenIndices[a]}getDataVisibility(a){return!this._hiddenIndices[a]}_updateVisibility(a,n,s){let l=s?"show":"hide",r=this.getDatasetMeta(a),c=r.controller._resolveAnimations(void 0,l);if(qr(n))r.data[n].hidden=!s,this.update();else this.setDatasetVisibility(a,s),c.update(r,{visible:s}),this.update((f)=>f.datasetIndex===a?l:void 0)}hide(a,n){this._updateVisibility(a,n,!1)}show(a,n){this._updateVisibility(a,n,!0)}_destroyDatasetMeta(a){let n=this._metasets[a];if(n&&n.controller)n.controller._destroy();delete this._metasets[a]}_stop(){let a,n;this.stop(),is.remove(this);for(a=0,n=this.data.datasets.length;a<n;++a)this._destroyDatasetMeta(a)}destroy(){this.notifyPlugins("beforeDestroy");let{canvas:a,ctx:n}=this;if(this._stop(),this.config.clearCache(),a)this.unbindEvents(),sx(a,n),this.platform.releaseContext(n),this.canvas=null,this.ctx=null;delete yp[this.id],this.notifyPlugins("afterDestroy")}toBase64Image(...a){return this.canvas.toDataURL(...a)}bindEvents(){if(this.bindUserEvents(),this.options.responsive)this.bindResponsiveEvents();else this.attached=!0}bindUserEvents(){let a=this._listeners,n=this.platform,s=(r,c)=>{n.addEventListener(this,r,c),a[r]=c},l=(r,c,f)=>{r.offsetX=c,r.offsetY=f,this._eventHandler(r)};lt(this.options.events,(r)=>s(r,l))}bindResponsiveEvents(){if(!this._responsiveListeners)this._responsiveListeners={};let a=this._responsiveListeners,n=this.platform,s=(h,p)=>{n.addEventListener(this,h,p),a[h]=p},l=(h,p)=>{if(a[h])n.removeEventListener(this,h,p),delete a[h]},r=(h,p)=>{if(this.canvas)this.resize(h,p)},c,f=()=>{l("attach",f),this.attached=!0,this.resize(),s("resize",r),s("detach",c)};if(c=()=>{this.attached=!1,l("resize",r),this._stop(),this._resize(0,0),s("attach",f)},n.isAttached(this.canvas))f();else c()}unbindEvents(){lt(this._listeners,(a,n)=>{this.platform.removeEventListener(this,n,a)}),this._listeners={},lt(this._responsiveListeners,(a,n)=>{this.platform.removeEventListener(this,n,a)}),this._responsiveListeners=void 0}updateHoverStyle(a,n,s){let l=s?"set":"remove",r,c,f,h;if(n==="dataset")r=this.getDatasetMeta(a[0].datasetIndex),r.controller["_"+l+"DatasetHoverStyle"]();for(f=0,h=a.length;f<h;++f){c=a[f];let p=c&&this.getDatasetMeta(c.datasetIndex).controller;if(p)p[l+"HoverStyle"](c.element,c.datasetIndex,c.index)}}getActiveElements(){return this._active||[]}setActiveElements(a){let n=this._active||[],s=a.map(({datasetIndex:r,index:c})=>{let f=this.getDatasetMeta(r);if(!f)throw Error("No dataset found at index "+r);return{datasetIndex:r,element:f.data[c],index:c}});if(!qc(s,n))this._active=s,this._lastEvent=null,this._updateHoverStyles(s,n)}notifyPlugins(a,n,s){return this._plugins.notify(this,a,n,s)}isPluginEnabled(a){return this._plugins._cache.filter((n)=>n.plugin.id===a).length===1}_updateHoverStyles(a,n,s){let l=this.options.hover,r=(h,p)=>h.filter((y)=>!p.some((b)=>y.datasetIndex===b.datasetIndex&&y.index===b.index)),c=r(n,a),f=s?a:r(a,n);if(c.length)this.updateHoverStyle(c,l.mode,!1);if(f.length&&l.mode)this.updateHoverStyle(f,l.mode,!0)}_eventHandler(a,n){let s={event:a,replay:n,cancelable:!0,inChartArea:this.isPointInArea(a)},l=(c)=>(c.options.events||this.options.events).includes(a.native.type);if(this.notifyPlugins("beforeEvent",s,l)===!1)return;let r=this._handleEvent(a,n,s.inChartArea);if(s.cancelable=!1,this.notifyPlugins("afterEvent",s,l),r||s.changed)this.render();return this}_handleEvent(a,n,s){let{_active:l=[],options:r}=this,c=n,f=this._getActiveElements(a,l,s,c),h=Lw(a),p=SE(a,this._lastEvent,s,h);if(s){if(this._lastEvent=null,gt(r.onHover,[a,f,this],this),h)gt(r.onClick,[a,f,this],this)}let y=!qc(f,l);if(y||n)this._active=f,this._updateHoverStyles(f,l,n);return this._lastEvent=p,y}_getActiveElements(a,n,s,l){if(a.type==="mouseout")return[];if(!s)return n;let r=this.options.hover;return this.getElementsAtEventForMode(a,r.mode,r,l)}}function wM(){return lt(wa.instances,(a)=>a._plugins.invalidate())}function dT(a,n,s=n){a.lineCap=Ue(s.borderCapStyle,n.borderCapStyle),a.setLineDash(Ue(s.borderDash,n.borderDash)),a.lineDashOffset=Ue(s.borderDashOffset,n.borderDashOffset),a.lineJoin=Ue(s.borderJoinStyle,n.borderJoinStyle),a.lineWidth=Ue(s.borderWidth,n.borderWidth),a.strokeStyle=Ue(s.borderColor,n.borderColor)}function vE(a,n,s){a.lineTo(s.x,s.y)}function LE(a){if(a.stepped)return Hw;if(a.tension||a.cubicInterpolationMode==="monotone")return Uw;return vE}function fT(a,n,s={}){let l=a.length,{start:r=0,end:c=l-1}=s,{start:f,end:h}=n,p=Math.max(r,f),y=Math.min(c,h),b=r<f&&c<f||r>h&&c>h;return{count:l,start:p,loop:n.loop,ilen:y<p&&!b?l+y-p:y-p}}function CE(a,n,s,l){let{points:r,options:c}=n,{count:f,start:h,loop:p,ilen:y}=fT(r,s,l),b=LE(c),{move:x=!0,reverse:v}=l||{},I,M,D;for(I=0;I<=y;++I){if(M=r[(h+(v?y-I:I))%f],M.skip)continue;else if(x)a.moveTo(M.x,M.y),x=!1;else b(a,D,M,v,c.stepped);D=M}if(p)M=r[(h+(v?y:0))%f],b(a,D,M,v,c.stepped);return!!p}function IE(a,n,s,l){let r=n.points,{count:c,start:f,ilen:h}=fT(r,s,l),{move:p=!0,reverse:y}=l||{},b=0,x=0,v,I,M,D,w,z,N=(Z)=>(f+(y?h-Z:Z))%c,Q=()=>{if(D!==w)a.lineTo(b,w),a.lineTo(b,D),a.lineTo(b,z)};if(p)I=r[N(0)],a.moveTo(I.x,I.y);for(v=0;v<=h;++v){if(I=r[N(v)],I.skip)continue;let{x:Z,y:X}=I,oe=Z|0;if(oe===M){if(X<D)D=X;else if(X>w)w=X;b=(x*b+Z)/++x}else Q(),a.lineTo(Z,X),M=oe,x=0,D=w=X;z=X}Q()}function kx(a){let n=a.options,s=n.borderDash&&n.borderDash.length;return!a._decimated&&!a._loop&&!n.tension&&n.cubicInterpolationMode!=="monotone"&&!n.stepped&&!s?IE:CE}function wE(a){if(a.stepped)return Ww;if(a.tension||a.cubicInterpolationMode==="monotone")return $w;return li}function ME(a,n,s,l){let r=n._path;if(!r){if(r=n._path=new Path2D,n.path(r,s,l))r.closePath()}dT(a,n.options),a.stroke(r)}function TE(a,n,s,l){let{segments:r,options:c}=n,f=kx(n);for(let h of r){if(dT(a,c,h.style),a.beginPath(),f(a,n,h,{start:s,end:s+l-1}))a.closePath();a.stroke()}}var AE=typeof Path2D==="function";function _E(a,n,s,l){if(AE&&!n.options.segment)ME(a,n,s,l);else TE(a,n,s,l)}class Na extends rs{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:(a)=>a!=="borderDash"&&a!=="fill"};constructor(a){super();if(this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,a)Object.assign(this,a)}updateControlPoints(a,n){let s=this.options;if((s.tension||s.cubicInterpolationMode==="monotone")&&!s.stepped&&!this._pointsUpdated){let l=s.spanGaps?this._loop:this._fullLoop;Gw(this._points,s,a,l,n),this._pointsUpdated=!0}}set points(a){this._points=a,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=Zw(this,this.options.segment))}first(){let a=this.segments,n=this.points;return a.length&&n[a[0].start]}last(){let a=this.segments,n=this.points,s=a.length;return s&&n[a[s-1].end]}interpolate(a,n){let s=this.options,l=a[n],r=this.points,c=yx(this,{property:n,start:l,end:l});if(!c.length)return;let f=[],h=wE(s),p,y;for(p=0,y=c.length;p<y;++p){let{start:b,end:x}=c[p],v=r[b],I=r[x];if(v===I){f.push(v);continue}let M=Math.abs((l-v[n])/(I[n]-v[n])),D=h(v,I,M,s.stepped);D[n]=a[n],f.push(D)}return f.length===1?f[0]:f}pathSegment(a,n,s){return kx(this)(a,this,n,s)}path(a,n,s){let l=this.segments,r=kx(this),c=this._loop;n=n||0,s=s||this.points.length-n;for(let f of l)c&=r(a,this,f,{start:n,end:n+s-1});return!!c}draw(a,n,s,l){let r=this.options||{};if((this.points||[]).length&&r.borderWidth)a.save(),_E(a,this,s,l),a.restore();if(this.animated)this._pointsUpdated=!1,this._path=void 0}}function MM(a,n,s,l){let r=a.options,{[s]:c}=a.getProps([s],l);return Math.abs(n-c)<r.radius+r.hitRadius}class Uo extends rs{static id="point";parsed;skip;stop;static defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(a){super();if(this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,a)Object.assign(this,a)}inRange(a,n,s){let l=this.options,{x:r,y:c}=this.getProps(["x","y"],s);return Math.pow(a-r,2)+Math.pow(n-c,2)<Math.pow(l.hitRadius+l.radius,2)}inXRange(a,n){return MM(this,a,"x",n)}inYRange(a,n){return MM(this,a,"y",n)}getCenterPoint(a){let{x:n,y:s}=this.getProps(["x","y"],a);return{x:n,y:s}}size(a){a=a||this.options||{};let n=a.radius||0;n=Math.max(n,n&&a.hoverRadius||0);let s=n&&a.borderWidth||0;return(n+s)*2}draw(a,n){let s=this.options;if(this.skip||s.radius<0.1||!xn(this,n,this.size(s)/2))return;a.strokeStyle=s.borderColor,a.lineWidth=s.borderWidth,a.fillStyle=s.backgroundColor,ip(a,s,this.x,this.y)}getRange(){let a=this.options||{};return a.radius+a.hitRadius}}function hT(a,n){let{x:s,y:l,base:r,width:c,height:f}=a.getProps(["x","y","base","width","height"],n),h,p,y,b,x;if(a.horizontal)x=f/2,h=Math.min(s,r),p=Math.max(s,r),y=l-x,b=l+x;else x=c/2,h=s-x,p=s+x,y=Math.min(l,r),b=Math.max(l,r);return{left:h,top:y,right:p,bottom:b}}function mi(a,n,s,l){return a?0:za(n,s,l)}function DE(a,n,s){let l=a.options.borderWidth,r=a.borderSkipped,c=rx(l);return{t:mi(r.top,c.top,0,s),r:mi(r.right,c.right,0,n),b:mi(r.bottom,c.bottom,0,s),l:mi(r.left,c.left,0,n)}}function RE(a,n,s){let{enableBorderRadius:l}=a.getProps(["enableBorderRadius"]),r=a.options.borderRadius,c=hi(r),f=Math.min(n,s),h=a.borderSkipped,p=l||$e(r);return{topLeft:mi(!p||h.top||h.left,c.topLeft,0,f),topRight:mi(!p||h.top||h.right,c.topRight,0,f),bottomLeft:mi(!p||h.bottom||h.left,c.bottomLeft,0,f),bottomRight:mi(!p||h.bottom||h.right,c.bottomRight,0,f)}}function kE(a){let n=hT(a),s=n.right-n.left,l=n.bottom-n.top,r=DE(a,s/2,l/2),c=RE(a,s/2,l/2);return{outer:{x:n.left,y:n.top,w:s,h:l,radius:c},inner:{x:n.left+r.l,y:n.top+r.t,w:s-r.l-r.r,h:l-r.t-r.b,radius:{topLeft:Math.max(0,c.topLeft-Math.max(r.t,r.l)),topRight:Math.max(0,c.topRight-Math.max(r.t,r.r)),bottomLeft:Math.max(0,c.bottomLeft-Math.max(r.b,r.l)),bottomRight:Math.max(0,c.bottomRight-Math.max(r.b,r.r))}}}}function Mx(a,n,s,l){let r=n===null,c=s===null,h=a&&!(r&&c)&&hT(a,l);return h&&(r||ns(n,h.left,h.right))&&(c||ns(s,h.top,h.bottom))}function OE(a){return a.topLeft||a.topRight||a.bottomLeft||a.bottomRight}function EE(a,n){a.rect(n.x,n.y,n.w,n.h)}function Tx(a,n,s={}){let l=a.x!==s.x?-n:0,r=a.y!==s.y?-n:0,c=(a.x+a.w!==s.x+s.w?n:0)-l,f=(a.y+a.h!==s.y+s.h?n:0)-r;return{x:a.x+l,y:a.y+r,w:a.w+c,h:a.h+f,radius:a.radius}}class sd extends rs{static id="bar";static defaults={borderSkipped:"start",borderWidth:0,borderRadius:0,inflateAmount:"auto",pointStyle:void 0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(a){super();if(this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,this.inflateAmount=void 0,a)Object.assign(this,a)}draw(a){let{inflateAmount:n,options:{borderColor:s,backgroundColor:l}}=this,{inner:r,outer:c}=kE(this),f=OE(c.radius)?Gr:EE;if(a.save(),c.w!==r.w||c.h!==r.h)a.beginPath(),f(a,Tx(c,n,r)),a.clip(),f(a,Tx(r,-n,c)),a.fillStyle=s,a.fill("evenodd");a.beginPath(),f(a,Tx(r,n)),a.fillStyle=l,a.fill(),a.restore()}inRange(a,n,s){return Mx(this,a,n,s)}inXRange(a,n){return Mx(this,a,null,n)}inYRange(a,n){return Mx(this,null,a,n)}getCenterPoint(a){let{x:n,y:s,base:l,horizontal:r}=this.getProps(["x","y","base","horizontal"],a);return{x:r?(n+l)/2:n,y:r?s:(s+l)/2}}getRange(a){return a==="x"?this.width/2:this.height/2}}function BE(a,n,s){let{segments:l,points:r}=a,c=n.points,f=[];for(let h of l){let{start:p,end:y}=h;y=Sp(p,y,r);let b=Ox(s,r[p],r[y],h.loop);if(!n.segments){f.push({source:h,target:b,start:r[p],end:r[y]});continue}let x=yx(n,b);for(let v of x){let I=Ox(s,c[v.start],c[v.end],v.loop),M=gx(h,r,I);for(let D of M)f.push({source:D,target:v,start:{[s]:TM(b,I,"start",Math.max)},end:{[s]:TM(b,I,"end",Math.min)}})}}return f}function Ox(a,n,s,l){if(l)return;let r=n[a],c=s[a];if(a==="angle")r=Ea(r),c=Ea(c);return{property:a,start:r,end:c}}function PE(a,n){let{x:s=null,y:l=null}=a||{},r=n.points,c=[];return n.segments.forEach(({start:f,end:h})=>{h=Sp(f,h,r);let p=r[f],y=r[h];if(l!==null)c.push({x:p.x,y:l}),c.push({x:y.x,y:l});else if(s!==null)c.push({x:s,y:p.y}),c.push({x:s,y:y.y})}),c}function Sp(a,n,s){for(;n>a;n--){let l=s[n];if(!isNaN(l.x)&&!isNaN(l.y))break}return n}function TM(a,n,s,l){if(a&&n)return l(a[s],n[s]);return a?a[s]:n?n[s]:0}function pT(a,n){let s=[],l=!1;if(St(a))l=!0,s=a;else s=PE(a,n);return s.length?new Na({points:s,options:{tension:0},_loop:l,_fullLoop:l}):null}function AM(a){return a&&a.fill!==!1}function zE(a,n,s){let r=a[n].fill,c=[n],f;if(!s)return r;while(r!==!1&&c.indexOf(r)===-1){if(!At(r))return r;if(f=a[r],!f)return!1;if(f.visible)return r;c.push(r),r=f.fill}return!1}function HE(a,n,s){let l=qE(a);if($e(l))return isNaN(l.value)?!1:l;let r=parseFloat(l);if(At(r)&&Math.floor(r)===r)return UE(l[0],n,r,s);return["origin","start","end","stack","shape"].indexOf(l)>=0&&l}function UE(a,n,s,l){if(a==="-"||a==="+")s=n+s;if(s===n||s<0||s>=l)return!1;return s}function FE(a,n){let s=null;if(a==="start")s=n.bottom;else if(a==="end")s=n.top;else if($e(a))s=n.getPixelForValue(a.value);else if(n.getBasePixel)s=n.getBasePixel();return s}function NE(a,n,s){let l;if(a==="start")l=s;else if(a==="end")l=n.options.reverse?n.min:n.max;else if($e(a))l=a.value;else l=n.getBaseValue();return l}function qE(a){let n=a.options,s=n.fill,l=Ue(s&&s.target,s);if(l===void 0)l=!!n.backgroundColor;if(l===!1||l===null)return!1;if(l===!0)return"origin";return l}function VE(a){let{scale:n,index:s,line:l}=a,r=[],c=l.segments,f=l.points,h=jE(n,s);h.push(pT({x:null,y:n.bottom},l));for(let p=0;p<c.length;p++){let y=c[p];for(let b=y.start;b<=y.end;b++)GE(r,f[b],h)}return new Na({points:r,options:{}})}function jE(a,n){let s=[],l=a.getMatchingVisibleMetas("line");for(let r=0;r<l.length;r++){let c=l[r];if(c.index===n)break;if(!c.hidden)s.unshift(c.dataset)}return s}function GE(a,n,s){let l=[];for(let r=0;r<s.length;r++){let c=s[r],{first:f,last:h,point:p}=YE(c,n,"x");if(!p||f&&h)continue;if(f)l.unshift(p);else if(a.push(p),!h)break}a.push(...l)}function YE(a,n,s){let l=a.interpolate(n,s);if(!l)return{};let r=l[s],c=a.segments,f=a.points,h=!1,p=!1;for(let y=0;y<c.length;y++){let b=c[y],x=f[b.start][s],v=f[b.end][s];if(ns(r,x,v)){h=r===x,p=r===v;break}}return{first:h,last:p,point:l}}class Vx{constructor(a){this.x=a.x,this.y=a.y,this.radius=a.radius}pathSegment(a,n,s){let{x:l,y:r,radius:c}=this;return n=n||{start:0,end:Pa},a.arc(l,r,c,n.end,n.start,!0),!s.bounds}interpolate(a){let{x:n,y:s,radius:l}=this,r=a.angle;return{x:n+Math.cos(r)*l,y:s+Math.sin(r)*l,angle:r}}}function XE(a){let{chart:n,fill:s,line:l}=a;if(At(s))return WE(n,s);if(s==="stack")return VE(a);if(s==="shape")return!0;let r=$E(a);if(r instanceof Vx)return r;return pT(r,l)}function WE(a,n){let s=a.getDatasetMeta(n);return s&&a.isDatasetVisible(n)?s.dataset:null}function $E(a){if((a.scale||{}).getPointPositionForValue)return ZE(a);return QE(a)}function QE(a){let{scale:n={},fill:s}=a,l=FE(s,n);if(At(l)){let r=n.isHorizontal();return{x:r?l:null,y:r?null:l}}return null}function ZE(a){let{scale:n,fill:s}=a,l=n.options,r=n.getLabels().length,c=l.reverse?n.max:n.min,f=NE(s,n,c),h=[];if(l.grid.circular){let p=n.getPointPositionForValue(0,c);return new Vx({x:p.x,y:p.y,radius:n.getDistanceFromCenterForValue(f)})}for(let p=0;p<r;++p)h.push(n.getPointPositionForValue(p,f));return h}function Ax(a,n,s){let l=XE(n),{chart:r,index:c,line:f,scale:h,axis:p}=n,y=f.options,b=y.fill,x=y.backgroundColor,{above:v=x,below:I=x}=b||{},M=r.getDatasetMeta(c),D=bx(r,M);if(l&&f.points.length)jc(a,s),JE(a,{line:f,target:l,above:v,below:I,area:s,scale:h,axis:p,clip:D}),Gc(a)}function JE(a,n){let{line:s,target:l,above:r,below:c,area:f,scale:h,clip:p}=n,y=s._loop?"angle":n.axis;a.save();let b=c;if(c!==r){if(y==="x")_M(a,l,f.top),_x(a,{line:s,target:l,color:r,scale:h,property:y,clip:p}),a.restore(),a.save(),_M(a,l,f.bottom);else if(y==="y")DM(a,l,f.left),_x(a,{line:s,target:l,color:c,scale:h,property:y,clip:p}),a.restore(),a.save(),DM(a,l,f.right),b=r}_x(a,{line:s,target:l,color:b,scale:h,property:y,clip:p}),a.restore()}function _M(a,n,s){let{segments:l,points:r}=n,c=!0,f=!1;a.beginPath();for(let h of l){let{start:p,end:y}=h,b=r[p],x=r[Sp(p,y,r)];if(c)a.moveTo(b.x,b.y),c=!1;else a.lineTo(b.x,s),a.lineTo(b.x,b.y);if(f=!!n.pathSegment(a,h,{move:f}),f)a.closePath();else a.lineTo(x.x,s)}a.lineTo(n.first().x,s),a.closePath(),a.clip()}function DM(a,n,s){let{segments:l,points:r}=n,c=!0,f=!1;a.beginPath();for(let h of l){let{start:p,end:y}=h,b=r[p],x=r[Sp(p,y,r)];if(c)a.moveTo(b.x,b.y),c=!1;else a.lineTo(s,b.y),a.lineTo(b.x,b.y);if(f=!!n.pathSegment(a,h,{move:f}),f)a.closePath();else a.lineTo(s,x.y)}a.lineTo(s,n.first().y),a.closePath(),a.clip()}function _x(a,n){let{line:s,target:l,property:r,color:c,scale:f,clip:h}=n,p=BE(s,l,r);for(let{source:y,target:b,start:x,end:v}of p){let{style:{backgroundColor:I=c}={}}=y,M=l!==!0;a.save(),a.fillStyle=I,KE(a,f,h,M&&Ox(r,x,v)),a.beginPath();let D=!!s.pathSegment(a,y),w;if(M){if(D)a.closePath();else RM(a,l,v,r);let z=!!l.pathSegment(a,b,{move:D,reverse:!0});if(w=D&&z,!w)RM(a,l,x,r)}a.closePath(),a.fill(w?"evenodd":"nonzero"),a.restore()}}function KE(a,n,s,l){let r=n.chart.chartArea,{property:c,start:f,end:h}=l||{};if(c==="x"||c==="y"){let p,y,b,x;if(c==="x")p=f,y=r.top,b=h,x=r.bottom;else p=r.left,y=f,b=r.right,x=h;if(a.beginPath(),s)p=Math.max(p,s.left),b=Math.min(b,s.right),y=Math.max(y,s.top),x=Math.min(x,s.bottom);a.rect(p,y,b-p,x-y),a.clip()}}function RM(a,n,s,l){let r=n.interpolate(s,l);if(r)a.lineTo(r.x,r.y)}var Yr={id:"filler",afterDatasetsUpdate(a,n,s){let l=(a.data.datasets||[]).length,r=[],c,f,h,p;for(f=0;f<l;++f){if(c=a.getDatasetMeta(f),h=c.dataset,p=null,h&&h.options&&h instanceof Na)p={visible:a.isDatasetVisible(f),index:f,fill:HE(h,f,l),chart:a,axis:c.controller.options.indexAxis,scale:c.vScale,line:h};c.$filler=p,r.push(p)}for(f=0;f<l;++f){if(p=r[f],!p||p.fill===!1)continue;p.fill=zE(r,f,s.propagate)}},beforeDraw(a,n,s){let l=s.drawTime==="beforeDraw",r=a.getSortedVisibleDatasetMetas(),c=a.chartArea;for(let f=r.length-1;f>=0;--f){let h=r[f].$filler;if(!h)continue;if(h.line.updateControlPoints(c,h.axis),l&&h.fill)Ax(a.ctx,h,c)}},beforeDatasetsDraw(a,n,s){if(s.drawTime!=="beforeDatasetsDraw")return;let l=a.getSortedVisibleDatasetMetas();for(let r=l.length-1;r>=0;--r){let c=l[r].$filler;if(AM(c))Ax(a.ctx,c,a.chartArea)}},beforeDatasetDraw(a,n,s){let l=n.meta.$filler;if(!AM(l)||s.drawTime!=="beforeDatasetDraw")return;Ax(a.ctx,l,a.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}},kM=(a,n)=>{let{boxHeight:s=n,boxWidth:l=n}=a;if(a.usePointStyle)s=Math.min(s,n),l=a.pointStyleWidth||Math.min(l,n);return{boxWidth:l,boxHeight:s,itemHeight:Math.max(n,s)}},eB=(a,n)=>a!==null&&n!==null&&a.datasetIndex===n.datasetIndex&&a.index===n.index;class Ex extends rs{constructor(a){super();this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=a.chart,this.options=a.options,this.ctx=a.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(a,n,s){this.maxWidth=a,this.maxHeight=n,this._margins=s,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){if(this.isHorizontal())this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width;else this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height}buildLabels(){let a=this.options.labels||{},n=gt(a.generateLabels,[this.chart],this)||[];if(a.filter)n=n.filter((s)=>a.filter(s,this.chart.data));if(a.sort)n=n.sort((s,l)=>a.sort(s,l,this.chart.data));if(this.options.reverse)n.reverse();this.legendItems=n}fit(){let{options:a,ctx:n}=this;if(!a.display){this.width=this.height=0;return}let s=a.labels,l=jt(s.font),r=l.size,c=this._computeTitleHeight(),{boxWidth:f,itemHeight:h}=kM(s,r),p,y;if(n.font=l.string,this.isHorizontal())p=this.maxWidth,y=this._fitRows(c,r,f,h)+10;else y=this.maxHeight,p=this._fitCols(c,l,f,h)+10;this.width=Math.min(p,a.maxWidth||this.maxWidth),this.height=Math.min(y,a.maxHeight||this.maxHeight)}_fitRows(a,n,s,l){let{ctx:r,maxWidth:c,options:{labels:{padding:f}}}=this,h=this.legendHitBoxes=[],p=this.lineWidths=[0],y=l+f,b=a;r.textAlign="left",r.textBaseline="middle";let x=-1,v=-y;return this.legendItems.forEach((I,M)=>{let D=s+n/2+r.measureText(I.text).width;if(M===0||p[p.length-1]+D+2*f>c)b+=y,p[p.length-(M>0?0:1)]=0,v+=y,x++;h[M]={left:0,top:v,row:x,width:D,height:l},p[p.length-1]+=D+f}),b}_fitCols(a,n,s,l){let{ctx:r,maxHeight:c,options:{labels:{padding:f}}}=this,h=this.legendHitBoxes=[],p=this.columnSizes=[],y=c-a,b=f,x=0,v=0,I=0,M=0;return this.legendItems.forEach((D,w)=>{let{itemWidth:z,itemHeight:N}=tB(s,n,r,D,l);if(w>0&&v+N+2*f>y)b+=x+f,p.push({width:x,height:v}),I+=x+f,M++,x=v=0;h[w]={left:I,top:v,col:M,width:z,height:N},x=Math.max(x,z),v+=N+f}),b+=x,p.push({width:x,height:v}),b}adjustHitBoxes(){if(!this.options.display)return;let a=this._computeTitleHeight(),{legendHitBoxes:n,options:{align:s,labels:{padding:l},rtl:r}}=this,c=bl(r,this.left,this.width);if(this.isHorizontal()){let f=0,h=ia(s,this.left+l,this.right-this.lineWidths[f]);for(let p of n){if(f!==p.row)f=p.row,h=ia(s,this.left+l,this.right-this.lineWidths[f]);p.top+=this.top+a+l,p.left=c.leftForLtr(c.x(h),p.width),h+=p.width+l}}else{let f=0,h=ia(s,this.top+a+l,this.bottom-this.columnSizes[f].height);for(let p of n){if(p.col!==f)f=p.col,h=ia(s,this.top+a+l,this.bottom-this.columnSizes[f].height);p.top=h,p.left+=this.left+l,p.left=c.leftForLtr(c.x(p.left),p.width),h+=p.height+l}}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){let a=this.ctx;jc(a,this),this._draw(),Gc(a)}}_draw(){let{options:a,columnSizes:n,lineWidths:s,ctx:l}=this,{align:r,labels:c}=a,f=_t.color,h=bl(a.rtl,this.left,this.width),p=jt(c.font),{padding:y}=c,b=p.size,x=b/2,v;this.drawTitle(),l.textAlign=h.textAlign("left"),l.textBaseline="middle",l.lineWidth=0.5,l.font=p.string;let{boxWidth:I,boxHeight:M,itemHeight:D}=kM(c,b),w=function(X,oe,V){if(isNaN(I)||I<=0||isNaN(M)||M<0)return;l.save();let J=Ue(V.lineWidth,1);if(l.fillStyle=Ue(V.fillStyle,f),l.lineCap=Ue(V.lineCap,"butt"),l.lineDashOffset=Ue(V.lineDashOffset,0),l.lineJoin=Ue(V.lineJoin,"miter"),l.lineWidth=J,l.strokeStyle=Ue(V.strokeStyle,f),l.setLineDash(Ue(V.lineDash,[])),c.usePointStyle){let re={radius:M*Math.SQRT2/2,pointStyle:V.pointStyle,rotation:V.rotation,borderWidth:J},q=h.xPlus(X,I/2),ce=oe+x;ix(l,re,q,ce,c.pointStyleWidth&&I)}else{let re=oe+Math.max((b-M)/2,0),q=h.leftForLtr(X,I),ce=hi(V.borderRadius);if(l.beginPath(),Object.values(ce).some((ye)=>ye!==0))Gr(l,{x:q,y:re,w:I,h:M,radius:ce});else l.rect(q,re,I,M);if(l.fill(),J!==0)l.stroke()}l.restore()},z=function(X,oe,V){fi(l,V.text,X,oe+D/2,p,{strikethrough:V.hidden,textAlign:h.textAlign(V.textAlign)})},N=this.isHorizontal(),Q=this._computeTitleHeight();if(N)v={x:ia(r,this.left+y,this.right-s[0]),y:this.top+y+Q,line:0};else v={x:this.left+y,y:ia(r,this.top+Q+y,this.bottom-n[0].height),line:0};px(this.ctx,a.textDirection);let Z=D+y;this.legendItems.forEach((X,oe)=>{l.strokeStyle=X.fontColor,l.fillStyle=X.fontColor;let V=l.measureText(X.text).width,J=h.textAlign(X.textAlign||(X.textAlign=c.textAlign)),re=I+x+V,q=v.x,ce=v.y;if(h.setWidth(this.width),N){if(oe>0&&q+re+y>this.right)ce=v.y+=Z,v.line++,q=v.x=ia(r,this.left+y,this.right-s[v.line])}else if(oe>0&&ce+Z>this.bottom)q=v.x=q+n[v.line].width+y,v.line++,ce=v.y=ia(r,this.top+Q+y,this.bottom-n[v.line].height);let ye=h.x(q);if(w(ye,ce,X),q=kw(J,q+I+x,N?q+re:this.right,a.rtl),z(h.x(q),ce,X),N)v.x+=re+y;else if(typeof X.text!=="string"){let Se=p.lineHeight;v.y+=mT(X,Se)+y}else v.y+=Z}),mx(this.ctx,a.textDirection)}drawTitle(){let a=this.options,n=a.title,s=jt(n.font),l=la(n.padding);if(!n.display)return;let r=bl(a.rtl,this.left,this.width),c=this.ctx,f=n.position,h=s.size/2,p=l.top+h,y,b=this.left,x=this.width;if(this.isHorizontal())x=Math.max(...this.lineWidths),y=this.top+p,b=ia(a.align,b,this.right-x);else{let I=this.columnSizes.reduce((M,D)=>Math.max(M,D.height),0);y=p+ia(a.align,this.top,this.bottom-I-a.labels.padding-this._computeTitleHeight())}let v=ia(f,b,b+x);c.textAlign=r.textAlign(op(f)),c.textBaseline="middle",c.strokeStyle=n.color,c.fillStyle=n.color,c.font=s.string,fi(c,n.text,v,y,s)}_computeTitleHeight(){let a=this.options.title,n=jt(a.font),s=la(a.padding);return a.display?n.lineHeight+s.height:0}_getLegendItemAt(a,n){let s,l,r;if(ns(a,this.left,this.right)&&ns(n,this.top,this.bottom)){r=this.legendHitBoxes;for(s=0;s<r.length;++s)if(l=r[s],ns(a,l.left,l.left+l.width)&&ns(n,l.top,l.top+l.height))return this.legendItems[s]}return null}handleEvent(a){let n=this.options;if(!nB(a.type,n))return;let s=this._getLegendItemAt(a.x,a.y);if(a.type==="mousemove"||a.type==="mouseout"){let l=this._hoveredItem,r=eB(l,s);if(l&&!r)gt(n.onLeave,[a,l,this],this);if(this._hoveredItem=s,s&&!r)gt(n.onHover,[a,s,this],this)}else if(s)gt(n.onClick,[a,s,this],this)}}function tB(a,n,s,l,r){let c=aB(l,a,n,s),f=oB(r,l,n.lineHeight);return{itemWidth:c,itemHeight:f}}function aB(a,n,s,l){let r=a.text;if(r&&typeof r!=="string")r=r.reduce((c,f)=>c.length>f.length?c:f);return n+s.size/2+l.measureText(r).width}function oB(a,n,s){let l=a;if(typeof n.text!=="string")l=mT(n,s);return l}function mT(a,n){let s=a.text?a.text.length:0;return n*s}function nB(a,n){if((a==="mousemove"||a==="mouseout")&&(n.onHover||n.onLeave))return!0;if(n.onClick&&(a==="click"||a==="mouseup"))return!0;return!1}var Cn={id:"legend",_element:Ex,start(a,n,s){let l=a.legend=new Ex({ctx:a.ctx,options:s,chart:a});Io.configure(a,l,s),Io.addBox(a,l)},stop(a){Io.removeBox(a,a.legend),delete a.legend},beforeUpdate(a,n,s){let l=a.legend;Io.configure(a,l,s),l.options=s},afterUpdate(a){let n=a.legend;n.buildLabels(),n.adjustHitBoxes()},afterEvent(a,n){if(!n.replay)a.legend.handleEvent(n.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1000,onClick(a,n,s){let l=n.datasetIndex,r=s.chart;if(r.isDatasetVisible(l))r.hide(l),n.hidden=!0;else r.show(l),n.hidden=!1},onHover:null,onLeave:null,labels:{color:(a)=>a.chart.options.color,boxWidth:40,padding:10,generateLabels(a){let n=a.data.datasets,{labels:{usePointStyle:s,pointStyle:l,textAlign:r,color:c,useBorderRadius:f,borderRadius:h}}=a.legend.options;return a._getSortedDatasetMetas().map((p)=>{let y=p.controller.getStyle(s?0:void 0),b=la(y.borderWidth);return{text:n[p.index].label,fillStyle:y.backgroundColor,fontColor:c,hidden:!p.visible,lineCap:y.borderCapStyle,lineDash:y.borderDash,lineDashOffset:y.borderDashOffset,lineJoin:y.borderJoinStyle,lineWidth:(b.width+b.height)/4,strokeStyle:y.borderColor,pointStyle:l||y.pointStyle,rotation:y.rotation,textAlign:r||y.textAlign,borderRadius:f&&(h||y.borderRadius),datasetIndex:p.index}},this)}},title:{color:(a)=>a.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:(a)=>!a.startsWith("on"),labels:{_scriptable:(a)=>!["generateLabels","filter","sort"].includes(a)}}};class jx extends rs{constructor(a){super();this.chart=a.chart,this.options=a.options,this.ctx=a.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(a,n){let s=this.options;if(this.left=0,this.top=0,!s.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=a,this.height=this.bottom=n;let l=St(s.text)?s.text.length:1;this._padding=la(s.padding);let r=l*jt(s.font).lineHeight+this._padding.height;if(this.isHorizontal())this.height=r;else this.width=r}isHorizontal(){let a=this.options.position;return a==="top"||a==="bottom"}_drawArgs(a){let{top:n,left:s,bottom:l,right:r,options:c}=this,f=c.align,h=0,p,y,b;if(this.isHorizontal())y=ia(f,s,r),b=n+a,p=r-s;else{if(c.position==="left")y=s+a,b=ia(f,l,n),h=Bt*-0.5;else y=r-a,b=ia(f,n,l),h=Bt*0.5;p=l-n}return{titleX:y,titleY:b,maxWidth:p,rotation:h}}draw(){let a=this.ctx,n=this.options;if(!n.display)return;let s=jt(n.font),r=s.lineHeight/2+this._padding.top,{titleX:c,titleY:f,maxWidth:h,rotation:p}=this._drawArgs(r);fi(a,n.text,0,0,s,{color:n.color,maxWidth:h,rotation:p,textAlign:op(n.align),textBaseline:"middle",translation:[c,f]})}}function sB(a,n){let s=new jx({ctx:a.ctx,options:n,chart:a});Io.configure(a,s,n),Io.addBox(a,s),a.titleBlock=s}var In={id:"title",_element:jx,start(a,n,s){sB(a,s)},stop(a){let n=a.titleBlock;Io.removeBox(a,n),delete a.titleBlock},beforeUpdate(a,n,s){let l=a.titleBlock;Io.configure(a,l,s),l.options=s},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2000},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};var ed={average(a){if(!a.length)return!1;let n,s,l=new Set,r=0,c=0;for(n=0,s=a.length;n<s;++n){let h=a[n].element;if(h&&h.hasValue()){let p=h.tooltipPosition();l.add(p.x),r+=p.y,++c}}if(c===0||l.size===0)return!1;return{x:[...l].reduce((h,p)=>h+p)/l.size,y:r/c}},nearest(a,n){if(!a.length)return!1;let{x:s,y:l}=n,r=Number.POSITIVE_INFINITY,c,f,h;for(c=0,f=a.length;c<f;++c){let p=a[c].element;if(p&&p.hasValue()){let y=p.getCenterPoint(),b=Jh(n,y);if(b<r)r=b,h=p}}if(h){let p=h.tooltipPosition();s=p.x,l=p.y}return{x:s,y:l}}};function vn(a,n){if(n)if(St(n))Array.prototype.push.apply(a,n);else a.push(n);return a}function ls(a){if((typeof a==="string"||a instanceof String)&&a.indexOf(`
|
|
256
256
|
`)>-1)return a.split(`
|
|
257
|
-
`);return a}function iB(a,n){let{element:s,datasetIndex:l,index:r}=n,c=a.getDatasetMeta(l).controller,{label:f,value:h}=c.getLabelAndValue(r);return{chart:a,label:f,parsed:c.getParsed(r),raw:a.data.datasets[l].data[r],formattedValue:h,dataset:c.getDataset(),dataIndex:r,datasetIndex:l,element:s}}function OM(a,n){let s=a.chart.ctx,{body:l,footer:r,title:c}=a,{boxWidth:f,boxHeight:h}=n,p=jt(n.bodyFont),y=jt(n.titleFont),b=jt(n.footerFont),x=c.length,v=r.length,I=l.length,M=la(n.padding),D=M.height,w=0,z=l.reduce((Z,X)=>Z+X.before.length+X.lines.length+X.after.length,0);if(z+=a.beforeBody.length+a.afterBody.length,x)D+=x*y.lineHeight+(x-1)*n.titleSpacing+n.titleMarginBottom;if(z){let Z=n.displayColors?Math.max(h,p.lineHeight):p.lineHeight;D+=I*Z+(z-I)*p.lineHeight+(z-1)*n.bodySpacing}if(v)D+=n.footerMarginTop+v*b.lineHeight+(v-1)*n.footerSpacing;let N=0,Q=function(Z){w=Math.max(w,s.measureText(Z).width+N)};return s.save(),s.font=y.string,lt(a.title,Q),s.font=p.string,lt(a.beforeBody.concat(a.afterBody),Q),N=n.displayColors?f+2+n.boxPadding:0,lt(l,(Z)=>{lt(Z.before,Q),lt(Z.lines,Q),lt(Z.after,Q)}),N=0,s.font=b.string,lt(a.footer,Q),s.restore(),w+=M.width,{width:w,height:D}}function lB(a,n){let{y:s,height:l}=n;if(s<l/2)return"top";else if(s>a.height-l/2)return"bottom";return"center"}function rB(a,n,s,l){let{x:r,width:c}=l,f=s.caretSize+s.caretPadding;if(a==="left"&&r+c+f>n.width)return!0;if(a==="right"&&r-c-f<0)return!0}function uB(a,n,s,l){let{x:r,width:c}=s,{width:f,chartArea:{left:h,right:p}}=a,y="center";if(l==="center")y=r<=(h+p)/2?"left":"right";else if(r<=c/2)y="left";else if(r>=f-c/2)y="right";if(rB(y,a,n,s))y="center";return y}function EM(a,n,s){let l=s.yAlign||n.yAlign||lB(a,s);return{xAlign:s.xAlign||n.xAlign||uB(a,n,s,l),yAlign:l}}function cB(a,n){let{x:s,width:l}=a;if(n==="right")s-=l;else if(n==="center")s-=l/2;return s}function dB(a,n,s){let{y:l,height:r}=a;if(n==="top")l+=s;else if(n==="bottom")l-=r+s;else l-=r/2;return l}function BM(a,n,s,l){let{caretSize:r,caretPadding:c,cornerRadius:f}=a,{xAlign:h,yAlign:p}=s,y=r+c,{topLeft:b,topRight:x,bottomLeft:v,bottomRight:I}=hi(f),M=cB(n,h),D=dB(n,p,y);if(p==="center"){if(h==="left")M+=y;else if(h==="right")M-=y}else if(h==="left")M-=Math.max(b,v)+r;else if(h==="right")M+=Math.max(x,I)+r;return{x:za(M,0,l.width-n.width),y:za(D,0,l.height-n.height)}}function pp(a,n,s){let l=la(s.padding);return n==="center"?a.x+a.width/2:n==="right"?a.x+a.width-l.right:a.x+l.left}function PM(a){return vn([],ls(a))}function fB(a,n,s){return ss(a,{tooltip:n,tooltipItems:s,type:"tooltip"})}function zM(a,n){let s=n&&n.dataset&&n.dataset.tooltip&&n.dataset.tooltip.callbacks;return s?a.override(s):a}var gT={beforeTitle:Sn,title(a){if(a.length>0){let n=a[0],s=n.chart.data.labels,l=s?s.length:0;if(this&&this.options&&this.options.mode==="dataset")return n.dataset.label||"";else if(n.label)return n.label;else if(l>0&&n.dataIndex<l)return s[n.dataIndex]}return""},afterTitle:Sn,beforeBody:Sn,beforeLabel:Sn,label(a){if(this&&this.options&&this.options.mode==="dataset")return a.label+": "+a.formattedValue||a.formattedValue;let n=a.dataset.label||"";if(n)n+=": ";let s=a.formattedValue;if(!Ke(s))n+=s;return n},labelColor(a){let s=a.chart.getDatasetMeta(a.datasetIndex).controller.getStyle(a.dataIndex);return{borderColor:s.borderColor,backgroundColor:s.backgroundColor,borderWidth:s.borderWidth,borderDash:s.borderDash,borderDashOffset:s.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(a){let s=a.chart.getDatasetMeta(a.datasetIndex).controller.getStyle(a.dataIndex);return{pointStyle:s.pointStyle,rotation:s.rotation}},afterLabel:Sn,afterBody:Sn,beforeFooter:Sn,footer:Sn,afterFooter:Sn};function Ua(a,n,s,l){let r=a[n].call(s,l);if(typeof r>"u")return gT[n].call(s,l);return r}class Bx extends rs{static positioners=ed;constructor(a){super();this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=a.chart,this.options=a.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(a){this.options=a,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){let a=this._cachedAnimations;if(a)return a;let n=this.chart,s=this.options.setContext(this.getContext()),l=s.enabled&&n.options.animation&&s.animations,r=new Hx(this.chart,l);if(l._cacheable)this._cachedAnimations=Object.freeze(r);return r}getContext(){return this.$context||(this.$context=fB(this.chart.getContext(),this,this._tooltipItems))}getTitle(a,n){let{callbacks:s}=n,l=Ua(s,"beforeTitle",this,a),r=Ua(s,"title",this,a),c=Ua(s,"afterTitle",this,a),f=[];return f=vn(f,ls(l)),f=vn(f,ls(r)),f=vn(f,ls(c)),f}getBeforeBody(a,n){return PM(Ua(n.callbacks,"beforeBody",this,a))}getBody(a,n){let{callbacks:s}=n,l=[];return lt(a,(r)=>{let c={before:[],lines:[],after:[]},f=zM(s,r);vn(c.before,ls(Ua(f,"beforeLabel",this,r))),vn(c.lines,Ua(f,"label",this,r)),vn(c.after,ls(Ua(f,"afterLabel",this,r))),l.push(c)}),l}getAfterBody(a,n){return PM(Ua(n.callbacks,"afterBody",this,a))}getFooter(a,n){let{callbacks:s}=n,l=Ua(s,"beforeFooter",this,a),r=Ua(s,"footer",this,a),c=Ua(s,"afterFooter",this,a),f=[];return f=vn(f,ls(l)),f=vn(f,ls(r)),f=vn(f,ls(c)),f}_createItems(a){let n=this._active,s=this.chart.data,l=[],r=[],c=[],f=[],h,p;for(h=0,p=n.length;h<p;++h)f.push(iB(this.chart,n[h]));if(a.filter)f=f.filter((y,b,x)=>a.filter(y,b,x,s));if(a.itemSort)f=f.sort((y,b)=>a.itemSort(y,b,s));return lt(f,(y)=>{let b=zM(a.callbacks,y);l.push(Ua(b,"labelColor",this,y)),r.push(Ua(b,"labelPointStyle",this,y)),c.push(Ua(b,"labelTextColor",this,y))}),this.labelColors=l,this.labelPointStyles=r,this.labelTextColors=c,this.dataPoints=f,f}update(a,n){let s=this.options.setContext(this.getContext()),l=this._active,r,c=[];if(!l.length){if(this.opacity!==0)r={opacity:0}}else{let f=ed[s.position].call(this,l,this._eventPosition);c=this._createItems(s),this.title=this.getTitle(c,s),this.beforeBody=this.getBeforeBody(c,s),this.body=this.getBody(c,s),this.afterBody=this.getAfterBody(c,s),this.footer=this.getFooter(c,s);let h=this._size=OM(this,s),p=Object.assign({},f,h),y=EM(this.chart,s,p),b=BM(s,p,y,this.chart);this.xAlign=y.xAlign,this.yAlign=y.yAlign,r={opacity:1,x:b.x,y:b.y,width:h.width,height:h.height,caretX:f.x,caretY:f.y}}if(this._tooltipItems=c,this.$context=void 0,r)this._resolveAnimations().update(this,r);if(a&&s.external)s.external.call(this,{chart:this.chart,tooltip:this,replay:n})}drawCaret(a,n,s,l){let r=this.getCaretPosition(a,s,l);n.lineTo(r.x1,r.y1),n.lineTo(r.x2,r.y2),n.lineTo(r.x3,r.y3)}getCaretPosition(a,n,s){let{xAlign:l,yAlign:r}=this,{caretSize:c,cornerRadius:f}=s,{topLeft:h,topRight:p,bottomLeft:y,bottomRight:b}=hi(f),{x,y:v}=a,{width:I,height:M}=n,D,w,z,N,Q,Z;if(r==="center"){if(Q=v+M/2,l==="left")D=x,w=D-c,N=Q+c,Z=Q-c;else D=x+I,w=D+c,N=Q-c,Z=Q+c;z=D}else{if(l==="left")w=x+Math.max(h,y)+c;else if(l==="right")w=x+I-Math.max(p,b)-c;else w=this.caretX;if(r==="top")N=v,Q=N-c,D=w-c,z=w+c;else N=v+M,Q=N+c,D=w+c,z=w-c;Z=N}return{x1:D,x2:w,x3:z,y1:N,y2:Q,y3:Z}}drawTitle(a,n,s){let l=this.title,r=l.length,c,f,h;if(r){let p=bl(s.rtl,this.x,this.width);a.x=pp(this,s.titleAlign,s),n.textAlign=p.textAlign(s.titleAlign),n.textBaseline="middle",c=jt(s.titleFont),f=s.titleSpacing,n.fillStyle=s.titleColor,n.font=c.string;for(h=0;h<r;++h)if(n.fillText(l[h],p.x(a.x),a.y+c.lineHeight/2),a.y+=c.lineHeight+f,h+1===r)a.y+=s.titleMarginBottom-f}}_drawColorBox(a,n,s,l,r){let c=this.labelColors[s],f=this.labelPointStyles[s],{boxHeight:h,boxWidth:p}=r,y=jt(r.bodyFont),b=pp(this,"left",r),x=l.x(b),v=h<y.lineHeight?(y.lineHeight-h)/2:0,I=n.y+v;if(r.usePointStyle){let M={radius:Math.min(p,h)/2,pointStyle:f.pointStyle,rotation:f.rotation,borderWidth:1},D=l.leftForLtr(x,p)+p/2,w=I+h/2;a.strokeStyle=r.multiKeyBackground,a.fillStyle=r.multiKeyBackground,ip(a,M,D,w),a.strokeStyle=c.borderColor,a.fillStyle=c.backgroundColor,ip(a,M,D,w)}else{a.lineWidth=$e(c.borderWidth)?Math.max(...Object.values(c.borderWidth)):c.borderWidth||1,a.strokeStyle=c.borderColor,a.setLineDash(c.borderDash||[]),a.lineDashOffset=c.borderDashOffset||0;let M=l.leftForLtr(x,p),D=l.leftForLtr(l.xPlus(x,1),p-2),w=hi(c.borderRadius);if(Object.values(w).some((z)=>z!==0))a.beginPath(),a.fillStyle=r.multiKeyBackground,Gr(a,{x:M,y:I,w:p,h,radius:w}),a.fill(),a.stroke(),a.fillStyle=c.backgroundColor,a.beginPath(),Gr(a,{x:D,y:I+1,w:p-2,h:h-2,radius:w}),a.fill();else a.fillStyle=r.multiKeyBackground,a.fillRect(M,I,p,h),a.strokeRect(M,I,p,h),a.fillStyle=c.backgroundColor,a.fillRect(D,I+1,p-2,h-2)}a.fillStyle=this.labelTextColors[s]}drawBody(a,n,s){let{body:l}=this,{bodySpacing:r,bodyAlign:c,displayColors:f,boxHeight:h,boxWidth:p,boxPadding:y}=s,b=jt(s.bodyFont),x=b.lineHeight,v=0,I=bl(s.rtl,this.x,this.width),M=function(V){n.fillText(V,I.x(a.x+v),a.y+x/2),a.y+=x+r},D=I.textAlign(c),w,z,N,Q,Z,X,oe;n.textAlign=c,n.textBaseline="middle",n.font=b.string,a.x=pp(this,D,s),n.fillStyle=s.bodyColor,lt(this.beforeBody,M),v=f&&D!=="right"?c==="center"?p/2+y:p+2+y:0;for(Q=0,X=l.length;Q<X;++Q){if(w=l[Q],z=this.labelTextColors[Q],n.fillStyle=z,lt(w.before,M),N=w.lines,f&&N.length)this._drawColorBox(n,a,Q,I,s),x=Math.max(b.lineHeight,h);for(Z=0,oe=N.length;Z<oe;++Z)M(N[Z]),x=b.lineHeight;lt(w.after,M)}v=0,x=b.lineHeight,lt(this.afterBody,M),a.y-=r}drawFooter(a,n,s){let l=this.footer,r=l.length,c,f;if(r){let h=bl(s.rtl,this.x,this.width);a.x=pp(this,s.footerAlign,s),a.y+=s.footerMarginTop,n.textAlign=h.textAlign(s.footerAlign),n.textBaseline="middle",c=jt(s.footerFont),n.fillStyle=s.footerColor,n.font=c.string;for(f=0;f<r;++f)n.fillText(l[f],h.x(a.x),a.y+c.lineHeight/2),a.y+=c.lineHeight+s.footerSpacing}}drawBackground(a,n,s,l){let{xAlign:r,yAlign:c}=this,{x:f,y:h}=a,{width:p,height:y}=s,{topLeft:b,topRight:x,bottomLeft:v,bottomRight:I}=hi(l.cornerRadius);if(n.fillStyle=l.backgroundColor,n.strokeStyle=l.borderColor,n.lineWidth=l.borderWidth,n.beginPath(),n.moveTo(f+b,h),c==="top")this.drawCaret(a,n,s,l);if(n.lineTo(f+p-x,h),n.quadraticCurveTo(f+p,h,f+p,h+x),c==="center"&&r==="right")this.drawCaret(a,n,s,l);if(n.lineTo(f+p,h+y-I),n.quadraticCurveTo(f+p,h+y,f+p-I,h+y),c==="bottom")this.drawCaret(a,n,s,l);if(n.lineTo(f+v,h+y),n.quadraticCurveTo(f,h+y,f,h+y-v),c==="center"&&r==="left")this.drawCaret(a,n,s,l);if(n.lineTo(f,h+b),n.quadraticCurveTo(f,h,f+b,h),n.closePath(),n.fill(),l.borderWidth>0)n.stroke()}_updateAnimationTarget(a){let n=this.chart,s=this.$animations,l=s&&s.x,r=s&&s.y;if(l||r){let c=ed[a.position].call(this,this._active,this._eventPosition);if(!c)return;let f=this._size=OM(this,a),h=Object.assign({},c,this._size),p=EM(n,a,h),y=BM(a,h,p,n);if(l._to!==y.x||r._to!==y.y)this.xAlign=p.xAlign,this.yAlign=p.yAlign,this.width=f.width,this.height=f.height,this.caretX=c.x,this.caretY=c.y,this._resolveAnimations().update(this,y)}}_willRender(){return!!this.opacity}draw(a){let n=this.options.setContext(this.getContext()),s=this.opacity;if(!s)return;this._updateAnimationTarget(n);let l={width:this.width,height:this.height},r={x:this.x,y:this.y};s=Math.abs(s)<0.001?0:s;let c=la(n.padding),f=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;if(n.enabled&&f)a.save(),a.globalAlpha=s,this.drawBackground(r,a,l,n),px(a,n.textDirection),r.y+=c.top,this.drawTitle(r,a,n),this.drawBody(r,a,n),this.drawFooter(r,a,n),mx(a,n.textDirection),a.restore()}getActiveElements(){return this._active||[]}setActiveElements(a,n){let s=this._active,l=a.map(({datasetIndex:f,index:h})=>{let p=this.chart.getDatasetMeta(f);if(!p)throw Error("Cannot find a dataset at index "+f);return{datasetIndex:f,element:p.data[h],index:h}}),r=!qc(s,l),c=this._positionChanged(l,n);if(r||c)this._active=l,this._eventPosition=n,this._ignoreReplayEvents=!0,this.update(!0)}handleEvent(a,n,s=!0){if(n&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;let l=this.options,r=this._active||[],c=this._getActiveElements(a,r,n,s),f=this._positionChanged(c,a),h=n||!qc(c,r)||f;if(h){if(this._active=c,l.enabled||l.external)this._eventPosition={x:a.x,y:a.y},this.update(!0,n)}return h}_getActiveElements(a,n,s,l){let r=this.options;if(a.type==="mouseout")return[];if(!l)return n.filter((f)=>this.chart.data.datasets[f.datasetIndex]&&this.chart.getDatasetMeta(f.datasetIndex).controller.getParsed(f.index)!==void 0);let c=this.chart.getElementsAtEventForMode(a,r.mode,r,s);if(r.reverse)c.reverse();return c}_positionChanged(a,n){let{caretX:s,caretY:l,options:r}=this,c=ed[r.position].call(this,a,n);return c!==!1&&(s!==c.x||l!==c.y)}}var wn={id:"tooltip",_element:Bx,positioners:ed,afterInit(a,n,s){if(s)a.tooltip=new Bx({chart:a,options:s})},beforeUpdate(a,n,s){if(a.tooltip)a.tooltip.initialize(s)},reset(a,n,s){if(a.tooltip)a.tooltip.initialize(s)},afterDraw(a){let n=a.tooltip;if(n&&n._willRender()){let s={tooltip:n};if(a.notifyPlugins("beforeTooltipDraw",{...s,cancelable:!0})===!1)return;n.draw(a.ctx),a.notifyPlugins("afterTooltipDraw",s)}},afterEvent(a,n){if(a.tooltip){let s=n.replay;if(a.tooltip.handleEvent(n.event,s,n.inChartArea))n.changed=!0}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(a,n)=>n.bodyFont.size,boxWidth:(a,n)=>n.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:gT},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:(a)=>a!=="filter"&&a!=="itemSort"&&a!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};var hB=(a,n,s,l)=>{if(typeof n==="string")s=a.push(n)-1,l.unshift({index:s,label:n});else if(isNaN(n))s=null;return s};function pB(a,n,s,l){let r=a.indexOf(n);if(r===-1)return hB(a,n,s,l);let c=a.lastIndexOf(n);return r!==c?s:r}var mB=(a,n)=>a===null?null:za(Math.round(a),0,n);function HM(a){let n=this.getLabels();if(a>=0&&a<n.length)return n[a];return a}class Fo extends vl{static id="category";static defaults={ticks:{callback:HM}};constructor(a){super(a);this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(a){let n=this._addedLabels;if(n.length){let s=this.getLabels();for(let{index:l,label:r}of n)if(s[l]===r)s.splice(l,1);this._addedLabels=[]}super.init(a)}parse(a,n){if(Ke(a))return null;let s=this.getLabels();return n=isFinite(n)&&s[n]===a?n:pB(s,a,Ue(n,a),this._addedLabels),mB(n,s.length-1)}determineDataLimits(){let{minDefined:a,maxDefined:n}=this.getUserBounds(),{min:s,max:l}=this.getMinMax(!0);if(this.options.bounds==="ticks"){if(!a)s=0;if(!n)l=this.getLabels().length-1}this.min=s,this.max=l}buildTicks(){let a=this.min,n=this.max,s=this.options.offset,l=[],r=this.getLabels();r=a===0&&n===r.length-1?r:r.slice(a,n+1),this._valueRange=Math.max(r.length-(s?0:1),1),this._startValue=this.min-(s?0.5:0);for(let c=a;c<=n;c++)l.push({value:c});return l}getLabelForValue(a){return HM.call(this,a)}configure(){if(super.configure(),!this.isHorizontal())this._reversePixels=!this._reversePixels}getPixelForValue(a){if(typeof a!=="number")a=this.parse(a);return a===null?NaN:this.getPixelForDecimal((a-this._startValue)/this._valueRange)}getPixelForTick(a){let n=this.ticks;if(a<0||a>n.length-1)return null;return this.getPixelForValue(n[a].value)}getValueForPixel(a){return Math.round(this._startValue+this.getDecimalForPixel(a)*this._valueRange)}getBasePixel(){return this.bottom}}function gB(a,n){let s=[],l=0.00000000000001,{bounds:r,step:c,min:f,max:h,precision:p,count:y,maxTicks:b,maxDigits:x,includeBounds:v}=a,I=c||1,M=b-1,{min:D,max:w}=n,z=!Ke(f),N=!Ke(h),Q=!Ke(y),Z=(w-D)/(x+1),X=$b((w-D)/M/I)*I,oe,V,J,re;if(X<0.00000000000001&&!z&&!N)return[{value:D},{value:w}];if(re=Math.ceil(w/X)-Math.floor(D/X),re>M)X=$b(re*X/M/I)*I;if(!Ke(p))oe=Math.pow(10,p),X=Math.ceil(X*oe)/oe;if(r==="ticks")V=Math.floor(D/X)*X,J=Math.ceil(w/X)*X;else V=D,J=w;if(z&&N&&c&&Iw((h-f)/c,X/1000))re=Math.round(Math.min((h-f)/X,b)),X=(h-f)/re,V=f,J=h;else if(Q)V=z?f:V,J=N?h:J,re=y-1,X=(J-V)/re;else if(re=(J-V)/X,Vr(re,Math.round(re),X/1000))re=Math.round(re);else re=Math.ceil(re);let q=Math.max(Zb(X),Zb(V));oe=Math.pow(10,Ke(p)?q:p),V=Math.round(V*oe)/oe,J=Math.round(J*oe)/oe;let ce=0;if(z){if(v&&V!==f){if(s.push({value:f}),V<f)ce++;if(Vr(Math.round((V+ce*X)*oe)/oe,f,UM(f,Z,a)))ce++}else if(V<f)ce++}for(;ce<re;++ce){let ye=Math.round((V+ce*X)*oe)/oe;if(N&&ye>h)break;s.push({value:ye})}if(N&&v&&J!==h)if(s.length&&Vr(s[s.length-1].value,h,UM(h,Z,a)))s[s.length-1].value=h;else s.push({value:h});else if(!N||J===h)s.push({value:J});return s}function UM(a,n,{horizontal:s,minRotation:l}){let r=os(l),c=(s?Math.sin(r):Math.cos(r))||0.001,f=0.75*n*(""+a).length;return Math.min(n/c,f)}class ad extends vl{constructor(a){super(a);this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(a,n){if(Ke(a))return null;if((typeof a==="number"||a instanceof Number)&&!isFinite(+a))return null;return+a}handleTickRangeOptions(){let{beginAtZero:a}=this.options,{minDefined:n,maxDefined:s}=this.getUserBounds(),{min:l,max:r}=this,c=(h)=>l=n?l:h,f=(h)=>r=s?r:h;if(a){let h=Ho(l),p=Ho(r);if(h<0&&p<0)f(0);else if(h>0&&p>0)c(0)}if(l===r){let h=r===0?1:Math.abs(r*0.05);if(f(r+h),!a)c(l-h)}this.min=l,this.max=r}getTickLimit(){let a=this.options.ticks,{maxTicksLimit:n,stepSize:s}=a,l;if(s){if(l=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,l>1000)console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${l} ticks. Limiting to 1000.`),l=1000}else l=this.computeTickLimit(),n=n||11;if(n)l=Math.min(n,l);return l}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){let a=this.options,n=a.ticks,s=this.getTickLimit();s=Math.max(2,s);let l={maxTicks:s,bounds:a.bounds,min:a.min,max:a.max,precision:n.precision,step:n.stepSize,count:n.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:n.minRotation||0,includeBounds:n.includeBounds!==!1},r=this._range||this,c=gB(l,r);if(a.bounds==="ticks")Qb(c,this,"value");if(a.reverse)c.reverse(),this.start=this.max,this.end=this.min;else this.start=this.min,this.end=this.max;return c}configure(){let a=this.ticks,n=this.min,s=this.max;if(super.configure(),this.options.offset&&a.length){let l=(s-n)/Math.max(a.length-1,1)/2;n-=l,s+=l}this._startValue=n,this._endValue=s,this._valueRange=s-n}getLabelForValue(a){return np(a,this.chart.options.locale,this.options.ticks.format)}}class No extends ad{static id="linear";static defaults={ticks:{callback:Vc.formatters.numeric}};determineDataLimits(){let{min:a,max:n}=this.getMinMax(!0);this.min=At(a)?a:0,this.max=At(n)?n:1,this.handleTickRangeOptions()}computeTickLimit(){let a=this.isHorizontal(),n=a?this.width:this.height,s=os(this.options.ticks.minRotation),l=(a?Math.sin(s):Math.cos(s))||0.001,r=this._resolveTickFontOptions(0);return Math.ceil(n/Math.min(40,r.lineHeight/l))}getPixelForValue(a){return a===null?NaN:this.getPixelForDecimal((a-this._startValue)/this._valueRange)}getValueForPixel(a){return this._startValue+this.getDecimalForPixel(a)*this._valueRange}}var od=(a)=>Math.floor(as(a)),Sl=(a,n)=>Math.pow(10,od(a)+n);function FM(a){return a/Math.pow(10,od(a))===1}function NM(a,n,s){let l=Math.pow(10,s),r=Math.floor(a/l);return Math.ceil(n/l)-r}function yB(a,n){let s=n-a,l=od(s);while(NM(a,n,l)>10)l++;while(NM(a,n,l)<10)l--;return Math.min(l,od(a))}function bB(a,{min:n,max:s}){n=Ha(a.min,n);let l=[],r=od(n),c=yB(n,s),f=c<0?Math.pow(10,Math.abs(c)):1,h=Math.pow(10,c),p=r>c?Math.pow(10,r):0,y=Math.round((n-p)*f)/f,b=Math.floor((n-p)/h/10)*h*10,x=Math.floor((y-b)/Math.pow(10,c)),v=Ha(a.min,Math.round((p+b+x*Math.pow(10,c))*f)/f);while(v<s){if(l.push({value:v,major:FM(v),significand:x}),x>=10)x=x<15?15:20;else x++;if(x>=20)c++,x=2,f=c>=0?1:f;v=Math.round((p+b+x*Math.pow(10,c))*f)/f}let I=Ha(a.max,v);return l.push({value:I,major:FM(I),significand:x}),l}class xB extends vl{static id="logarithmic";static defaults={ticks:{callback:Vc.formatters.logarithmic,major:{enabled:!0}}};constructor(a){super(a);this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(a,n){let s=ad.prototype.parse.apply(this,[a,n]);if(s===0){this._zero=!0;return}return At(s)&&s>0?s:null}determineDataLimits(){let{min:a,max:n}=this.getMinMax(!0);if(this.min=At(a)?Math.max(0,a):null,this.max=At(n)?Math.max(0,n):null,this.options.beginAtZero)this._zero=!0;if(this._zero&&this.min!==this._suggestedMin&&!At(this._userMin))this.min=a===Sl(this.min,0)?Sl(this.min,-1):Sl(this.min,0);this.handleTickRangeOptions()}handleTickRangeOptions(){let{minDefined:a,maxDefined:n}=this.getUserBounds(),s=this.min,l=this.max,r=(f)=>s=a?s:f,c=(f)=>l=n?l:f;if(s===l)if(s<=0)r(1),c(10);else r(Sl(s,-1)),c(Sl(l,1));if(s<=0)r(Sl(l,-1));if(l<=0)c(Sl(s,1));this.min=s,this.max=l}buildTicks(){let a=this.options,n={min:this._userMin,max:this._userMax},s=bB(n,this);if(a.bounds==="ticks")Qb(s,this,"value");if(a.reverse)s.reverse(),this.start=this.max,this.end=this.min;else this.start=this.min,this.end=this.max;return s}getLabelForValue(a){return a===void 0?"0":np(a,this.chart.options.locale,this.options.ticks.format)}configure(){let a=this.min;super.configure(),this._startValue=as(a),this._valueRange=as(this.max)-as(a)}getPixelForValue(a){if(a===void 0||a===0)a=this.min;if(a===null||isNaN(a))return NaN;return this.getPixelForDecimal(a===this.min?0:(as(a)-this._startValue)/this._valueRange)}getValueForPixel(a){let n=this.getDecimalForPixel(a);return Math.pow(10,this._startValue+n*this._valueRange)}}function Px(a){let n=a.ticks;if(n.display&&a.display){let s=la(n.backdropPadding);return Ue(n.font&&n.font.size,_t.font.size)+s.height}return 0}function SB(a,n,s){return s=St(s)?s:[s],{w:zw(a,n.string,s),h:s.length*n.lineHeight}}function qM(a,n,s,l,r){if(a===l||a===r)return{start:n-s/2,end:n+s/2};else if(a<l||a>r)return{start:n-s,end:n};return{start:n,end:n+s}}function vB(a){let n={l:a.left+a._padding.left,r:a.right-a._padding.right,t:a.top+a._padding.top,b:a.bottom-a._padding.bottom},s=Object.assign({},n),l=[],r=[],c=a._pointLabels.length,f=a.options.pointLabels,h=f.centerPointLabels?Bt/c:0;for(let p=0;p<c;p++){let y=f.setContext(a.getPointLabelContext(p));r[p]=y.padding;let b=a.getPointPosition(p,a.drawingArea+r[p],h),x=jt(y.font),v=SB(a.ctx,x,a._pointLabels[p]);l[p]=v;let I=Ea(a.getIndexAngle(p)+h),M=Math.round(tp(I)),D=qM(M,b.x,v.w,0,180),w=qM(M,b.y,v.h,90,270);LB(s,n,I,D,w)}a.setCenterPoint(n.l-s.l,s.r-n.r,n.t-s.t,s.b-n.b),a._pointLabelItems=wB(a,l,r)}function LB(a,n,s,l,r){let c=Math.abs(Math.sin(s)),f=Math.abs(Math.cos(s)),h=0,p=0;if(l.start<n.l)h=(n.l-l.start)/c,a.l=Math.min(a.l,n.l-h);else if(l.end>n.r)h=(l.end-n.r)/c,a.r=Math.max(a.r,n.r+h);if(r.start<n.t)p=(n.t-r.start)/f,a.t=Math.min(a.t,n.t-p);else if(r.end>n.b)p=(r.end-n.b)/f,a.b=Math.max(a.b,n.b+p)}function CB(a,n,s){let l=a.drawingArea,{extra:r,additionalAngle:c,padding:f,size:h}=s,p=a.getPointPosition(n,l+r+f,c),y=Math.round(tp(Ea(p.angle+Ba))),b=AB(p.y,h.h,y),x=MB(y),v=TB(p.x,h.w,x);return{visible:!0,x:p.x,y:b,textAlign:x,left:v,top:b,right:v+h.w,bottom:b+h.h}}function IB(a,n){if(!n)return!0;let{left:s,top:l,right:r,bottom:c}=a;return!(xn({x:s,y:l},n)||xn({x:s,y:c},n)||xn({x:r,y:l},n)||xn({x:r,y:c},n))}function wB(a,n,s){let l=[],r=a._pointLabels.length,c=a.options,{centerPointLabels:f,display:h}=c.pointLabels,p={extra:Px(c)/2,additionalAngle:f?Bt/r:0},y;for(let b=0;b<r;b++){p.padding=s[b],p.size=n[b];let x=CB(a,b,p);if(l.push(x),h==="auto"){if(x.visible=IB(x,y),x.visible)y=x}}return l}function MB(a){if(a===0||a===180)return"center";else if(a<180)return"left";return"right"}function TB(a,n,s){if(s==="right")a-=n;else if(s==="center")a-=n/2;return a}function AB(a,n,s){if(s===90||s===270)a-=n/2;else if(s>270||s<90)a-=n;return a}function _B(a,n,s){let{left:l,top:r,right:c,bottom:f}=s,{backdropColor:h}=n;if(!Ke(h)){let p=hi(n.borderRadius),y=la(n.backdropPadding);a.fillStyle=h;let b=l-y.left,x=r-y.top,v=c-l+y.width,I=f-r+y.height;if(Object.values(p).some((M)=>M!==0))a.beginPath(),Gr(a,{x:b,y:x,w:v,h:I,radius:p}),a.fill();else a.fillRect(b,x,v,I)}}function DB(a,n){let{ctx:s,options:{pointLabels:l}}=a;for(let r=n-1;r>=0;r--){let c=a._pointLabelItems[r];if(!c.visible)continue;let f=l.setContext(a.getPointLabelContext(r));_B(s,f,c);let h=jt(f.font),{x:p,y,textAlign:b}=c;fi(s,a._pointLabels[r],p,y+h.lineHeight/2,h,{color:f.color,textAlign:b,textBaseline:"middle"})}}function yT(a,n,s,l){let{ctx:r}=a;if(s)r.arc(a.xCenter,a.yCenter,n,0,Pa);else{let c=a.getPointPosition(0,n);r.moveTo(c.x,c.y);for(let f=1;f<l;f++)c=a.getPointPosition(f,n),r.lineTo(c.x,c.y)}}function RB(a,n,s,l,r){let c=a.ctx,f=n.circular,{color:h,lineWidth:p}=n;if(!f&&!l||!h||!p||s<0)return;c.save(),c.strokeStyle=h,c.lineWidth=p,c.setLineDash(r.dash||[]),c.lineDashOffset=r.dashOffset,c.beginPath(),yT(a,s,f,l),c.closePath(),c.stroke(),c.restore()}function kB(a,n,s){return ss(a,{label:s,index:n,type:"pointLabel"})}class OB extends ad{static id="radialLinear";static defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:Vc.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(a){return a},padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(a){super(a);this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){let a=this._padding=la(Px(this.options)/2),n=this.width=this.maxWidth-a.width,s=this.height=this.maxHeight-a.height;this.xCenter=Math.floor(this.left+n/2+a.left),this.yCenter=Math.floor(this.top+s/2+a.top),this.drawingArea=Math.floor(Math.min(n,s)/2)}determineDataLimits(){let{min:a,max:n}=this.getMinMax(!1);this.min=At(a)&&!isNaN(a)?a:0,this.max=At(n)&&!isNaN(n)?n:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/Px(this.options))}generateTickLabels(a){ad.prototype.generateTickLabels.call(this,a),this._pointLabels=this.getLabels().map((n,s)=>{let l=gt(this.options.pointLabels.callback,[n,s],this);return l||l===0?l:""}).filter((n,s)=>this.chart.getDataVisibility(s))}fit(){let a=this.options;if(a.display&&a.pointLabels.display)vB(this);else this.setCenterPoint(0,0,0,0)}setCenterPoint(a,n,s,l){this.xCenter+=Math.floor((a-n)/2),this.yCenter+=Math.floor((s-l)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(a,n,s,l))}getIndexAngle(a){let n=Pa/(this._pointLabels.length||1),s=this.options.startAngle||0;return Ea(a*n+os(s))}getDistanceFromCenterForValue(a){if(Ke(a))return NaN;let n=this.drawingArea/(this.max-this.min);if(this.options.reverse)return(this.max-a)*n;return(a-this.min)*n}getValueForDistanceFromCenter(a){if(Ke(a))return NaN;let n=a/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-n:this.min+n}getPointLabelContext(a){let n=this._pointLabels||[];if(a>=0&&a<n.length){let s=n[a];return kB(this.getContext(),a,s)}}getPointPosition(a,n,s=0){let l=this.getIndexAngle(a)-Ba+s;return{x:Math.cos(l)*n+this.xCenter,y:Math.sin(l)*n+this.yCenter,angle:l}}getPointPositionForValue(a,n){return this.getPointPosition(a,this.getDistanceFromCenterForValue(n))}getBasePosition(a){return this.getPointPositionForValue(a||0,this.getBaseValue())}getPointLabelPosition(a){let{left:n,top:s,right:l,bottom:r}=this._pointLabelItems[a];return{left:n,top:s,right:l,bottom:r}}drawBackground(){let{backgroundColor:a,grid:{circular:n}}=this.options;if(a){let s=this.ctx;s.save(),s.beginPath(),yT(this,this.getDistanceFromCenterForValue(this._endValue),n,this._pointLabels.length),s.closePath(),s.fillStyle=a,s.fill(),s.restore()}}drawGrid(){let a=this.ctx,n=this.options,{angleLines:s,grid:l,border:r}=n,c=this._pointLabels.length,f,h,p;if(n.pointLabels.display)DB(this,c);if(l.display)this.ticks.forEach((y,b)=>{if(b!==0||b===0&&this.min<0){h=this.getDistanceFromCenterForValue(y.value);let x=this.getContext(b),v=l.setContext(x),I=r.setContext(x);RB(this,v,h,c,I)}});if(s.display){a.save();for(f=c-1;f>=0;f--){let y=s.setContext(this.getPointLabelContext(f)),{color:b,lineWidth:x}=y;if(!x||!b)continue;a.lineWidth=x,a.strokeStyle=b,a.setLineDash(y.borderDash),a.lineDashOffset=y.borderDashOffset,h=this.getDistanceFromCenterForValue(n.reverse?this.min:this.max),p=this.getPointPosition(f,h),a.beginPath(),a.moveTo(this.xCenter,this.yCenter),a.lineTo(p.x,p.y),a.stroke()}a.restore()}}drawBorder(){}drawLabels(){let a=this.ctx,n=this.options,s=n.ticks;if(!s.display)return;let l=this.getIndexAngle(0),r,c;a.save(),a.translate(this.xCenter,this.yCenter),a.rotate(l),a.textAlign="center",a.textBaseline="middle",this.ticks.forEach((f,h)=>{if(h===0&&this.min>=0&&!n.reverse)return;let p=s.setContext(this.getContext(h)),y=jt(p.font);if(r=this.getDistanceFromCenterForValue(this.ticks[h].value),p.showLabelBackdrop){a.font=y.string,c=a.measureText(f.label).width,a.fillStyle=p.backdropColor;let b=la(p.backdropPadding);a.fillRect(-c/2-b.left,-r-y.size/2-b.top,c+b.width,y.size+b.height)}fi(a,f.label,0,-r,y,{color:p.color,strokeColor:p.textStrokeColor,strokeWidth:p.textStrokeWidth})}),a.restore()}drawTitle(){}}var vp={millisecond:{common:!0,size:1,steps:1000},second:{common:!0,size:1000,steps:60},minute:{common:!0,size:60000,steps:60},hour:{common:!0,size:3600000,steps:24},day:{common:!0,size:86400000,steps:30},week:{common:!1,size:604800000,steps:4},month:{common:!0,size:2628000000,steps:12},quarter:{common:!1,size:7884000000,steps:4},year:{common:!0,size:31540000000}},Fa=Object.keys(vp);function VM(a,n){return a-n}function jM(a,n){if(Ke(n))return null;let s=a._adapter,{parser:l,round:r,isoWeekday:c}=a._parseOpts,f=n;if(typeof l==="function")f=l(f);if(!At(f))f=typeof l==="string"?s.parse(f,l):s.parse(f);if(f===null)return null;if(r)f=r==="week"&&(jr(c)||c===!0)?s.startOf(f,"isoWeek",c):s.startOf(f,r);return+f}function GM(a,n,s,l){let r=Fa.length;for(let c=Fa.indexOf(a);c<r-1;++c){let f=vp[Fa[c]],h=f.steps?f.steps:Number.MAX_SAFE_INTEGER;if(f.common&&Math.ceil((s-n)/(h*f.size))<=l)return Fa[c]}return Fa[r-1]}function EB(a,n,s,l,r){for(let c=Fa.length-1;c>=Fa.indexOf(s);c--){let f=Fa[c];if(vp[f].common&&a._adapter.diff(r,l,f)>=n-1)return f}return Fa[s?Fa.indexOf(s):0]}function BB(a){for(let n=Fa.indexOf(a)+1,s=Fa.length;n<s;++n)if(vp[Fa[n]].common)return Fa[n]}function YM(a,n,s){if(!s)a[n]=!0;else if(s.length){let{lo:l,hi:r}=ap(s,n),c=s[l]>=n?s[l]:s[r];a[c]=!0}}function PB(a,n,s,l){let r=a._adapter,c=+r.startOf(n[0].value,l),f=n[n.length-1].value,h,p;for(h=c;h<=f;h=+r.add(h,1,l))if(p=s[h],p>=0)n[p].major=!0;return n}function XM(a,n,s){let l=[],r={},c=n.length,f,h;for(f=0;f<c;++f)h=n[f],r[h]=f,l.push({value:h,major:!1});return c===0||!s?l:PB(a,l,r,s)}class zx extends vl{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(a){super(a);this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(a,n={}){let s=a.time||(a.time={}),l=this._adapter=new yO._date(a.adapters.date);l.init(n),Nr(s.displayFormats,l.formats()),this._parseOpts={parser:s.parser,round:s.round,isoWeekday:s.isoWeekday},super.init(a),this._normalized=n.normalized}parse(a,n){if(a===void 0)return null;return jM(this,a)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){let a=this.options,n=this._adapter,s=a.time.unit||"day",{min:l,max:r,minDefined:c,maxDefined:f}=this.getUserBounds();function h(p){if(!c&&!isNaN(p.min))l=Math.min(l,p.min);if(!f&&!isNaN(p.max))r=Math.max(r,p.max)}if(!c||!f){if(h(this._getLabelBounds()),a.bounds!=="ticks"||a.ticks.source!=="labels")h(this.getMinMax(!1))}l=At(l)&&!isNaN(l)?l:+n.startOf(Date.now(),s),r=At(r)&&!isNaN(r)?r:+n.endOf(Date.now(),s)+1,this.min=Math.min(l,r-1),this.max=Math.max(l+1,r)}_getLabelBounds(){let a=this.getLabelTimestamps(),n=Number.POSITIVE_INFINITY,s=Number.NEGATIVE_INFINITY;if(a.length)n=a[0],s=a[a.length-1];return{min:n,max:s}}buildTicks(){let a=this.options,n=a.time,s=a.ticks,l=s.source==="labels"?this.getLabelTimestamps():this._generate();if(a.bounds==="ticks"&&l.length)this.min=this._userMin||l[0],this.max=this._userMax||l[l.length-1];let r=this.min,c=this.max,f=Aw(l,r,c);if(this._unit=n.unit||(s.autoSkip?GM(n.minUnit,this.min,this.max,this._getLabelCapacity(r)):EB(this,f.length,n.minUnit,this.min,this.max)),this._majorUnit=!s.major.enabled||this._unit==="year"?void 0:BB(this._unit),this.initOffsets(l),a.reverse)f.reverse();return XM(this,f,this._majorUnit)}afterAutoSkip(){if(this.options.offsetAfterAutoskip)this.initOffsets(this.ticks.map((a)=>+a.value))}initOffsets(a=[]){let n=0,s=0,l,r;if(this.options.offset&&a.length){if(l=this.getDecimalForValue(a[0]),a.length===1)n=1-l;else n=(this.getDecimalForValue(a[1])-l)/2;if(r=this.getDecimalForValue(a[a.length-1]),a.length===1)s=r;else s=(r-this.getDecimalForValue(a[a.length-2]))/2}let c=a.length<3?0.5:0.25;n=za(n,0,c),s=za(s,0,c),this._offsets={start:n,end:s,factor:1/(n+1+s)}}_generate(){let a=this._adapter,n=this.min,s=this.max,l=this.options,r=l.time,c=r.unit||GM(r.minUnit,n,s,this._getLabelCapacity(n)),f=Ue(l.ticks.stepSize,1),h=c==="week"?r.isoWeekday:!1,p=jr(h)||h===!0,y={},b=n,x,v;if(p)b=+a.startOf(b,"isoWeek",h);if(b=+a.startOf(b,p?"day":c),a.diff(s,n,c)>1e5*f)throw Error(n+" and "+s+" are too far apart with stepSize of "+f+" "+c);let I=l.ticks.source==="data"&&this.getDataTimestamps();for(x=b,v=0;x<s;x=+a.add(x,f,c),v++)YM(y,x,I);if(x===s||l.bounds==="ticks"||v===1)YM(y,x,I);return Object.keys(y).sort(VM).map((M)=>+M)}getLabelForValue(a){let n=this._adapter,s=this.options.time;if(s.tooltipFormat)return n.format(a,s.tooltipFormat);return n.format(a,s.displayFormats.datetime)}format(a,n){let l=this.options.time.displayFormats,r=this._unit,c=n||l[r];return this._adapter.format(a,c)}_tickFormatFunction(a,n,s,l){let r=this.options,c=r.ticks.callback;if(c)return gt(c,[a,n,s],this);let f=r.time.displayFormats,h=this._unit,p=this._majorUnit,y=h&&f[h],b=p&&f[p],x=s[n],v=p&&b&&x&&x.major;return this._adapter.format(a,l||(v?b:y))}generateTickLabels(a){let n,s,l;for(n=0,s=a.length;n<s;++n)l=a[n],l.label=this._tickFormatFunction(l.value,n,a)}getDecimalForValue(a){return a===null?NaN:(a-this.min)/(this.max-this.min)}getPixelForValue(a){let n=this._offsets,s=this.getDecimalForValue(a);return this.getPixelForDecimal((n.start+s)*n.factor)}getValueForPixel(a){let n=this._offsets,s=this.getDecimalForPixel(a)/n.factor-n.end;return this.min+s*(this.max-this.min)}_getLabelSize(a){let n=this.options.ticks,s=this.ctx.measureText(a).width,l=os(this.isHorizontal()?n.maxRotation:n.minRotation),r=Math.cos(l),c=Math.sin(l),f=this._resolveTickFontOptions(0).size;return{w:s*r+f*c,h:s*c+f*r}}_getLabelCapacity(a){let n=this.options.time,s=n.displayFormats,l=s[n.unit]||s.millisecond,r=this._tickFormatFunction(a,0,XM(this,[a],this._majorUnit),l),c=this._getLabelSize(r),f=Math.floor(this.isHorizontal()?this.width/c.w:this.height/c.h)-1;return f>0?f:1}getDataTimestamps(){let a=this._cache.data||[],n,s;if(a.length)return a;let l=this.getMatchingVisibleMetas();if(this._normalized&&l.length)return this._cache.data=l[0].controller.getAllParsedValues(this);for(n=0,s=l.length;n<s;++n)a=a.concat(l[n].controller.getAllParsedValues(this));return this._cache.data=this.normalize(a)}getLabelTimestamps(){let a=this._cache.labels||[],n,s;if(a.length)return a;let l=this.getLabels();for(n=0,s=l.length;n<s;++n)a.push(jM(this,l[n]));return this._cache.labels=this._normalized?a:this.normalize(a)}normalize(a){return ex(a.sort(VM))}}function mp(a,n,s){let l=0,r=a.length-1,c,f,h,p;if(s){if(n>=a[l].pos&&n<=a[r].pos)({lo:l,hi:r}=ri(a,"pos",n));({pos:c,time:h}=a[l]),{pos:f,time:p}=a[r]}else{if(n>=a[l].time&&n<=a[r].time)({lo:l,hi:r}=ri(a,"time",n));({time:c,pos:h}=a[l]),{time:f,pos:p}=a[r]}let y=f-c;return y?h+(p-h)*(n-c)/y:h}class zB extends zx{static id="timeseries";static defaults=zx.defaults;constructor(a){super(a);this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){let a=this._getTimestampsForTable(),n=this._table=this.buildLookupTable(a);this._minPos=mp(n,this.min),this._tableRange=mp(n,this.max)-this._minPos,super.initOffsets(a)}buildLookupTable(a){let{min:n,max:s}=this,l=[],r=[],c,f,h,p,y;for(c=0,f=a.length;c<f;++c)if(p=a[c],p>=n&&p<=s)l.push(p);if(l.length<2)return[{time:n,pos:0},{time:s,pos:1}];for(c=0,f=l.length;c<f;++c)if(y=l[c+1],h=l[c-1],p=l[c],Math.round((y+h)/2)!==p)r.push({time:p,pos:c/(f-1)});return r}_generate(){let a=this.min,n=this.max,s=super.getDataTimestamps();if(!s.includes(a)||!s.length)s.splice(0,0,a);if(!s.includes(n)||s.length===1)s.push(n);return s.sort((l,r)=>l-r)}_getTimestampsForTable(){let a=this._cache.all||[];if(a.length)return a;let n=this.getDataTimestamps(),s=this.getLabelTimestamps();if(n.length&&s.length)a=this.normalize(n.concat(s));else a=n.length?n:s;return a=this._cache.all=a,a}getDecimalForValue(a){return(mp(this._table,a)-this._minPos)/this._tableRange}getValueForPixel(a){let n=this._offsets,s=this.getDecimalForPixel(a)/n.factor-n.end;return mp(this._table,s*this._tableRange+this._minPos,!0)}}var rd=be(ea(),1);var Gx=be(bT(),1),io=be(ea(),1);var ST="label";function xT(a,n){if(typeof a==="function")a(n);else if(a)a.current=n}function UB(a,n){let s=a.options;if(s&&n)Object.assign(s,n)}function vT(a,n){a.labels=n}function LT(a,n,s=ST){let l=[];a.datasets=n.map((r)=>{let c=a.datasets.find((f)=>f[s]===r[s]);if(!c||!r.data||l.includes(c))return{...r};return l.push(c),Object.assign(c,r),c})}function FB(a,n=ST){let s={labels:[],datasets:[]};return vT(s,a.labels),LT(s,a.datasets,n),s}function NB(a,n){let{height:s=150,width:l=300,redraw:r=!1,datasetIdKey:c,type:f,data:h,options:p,plugins:y=[],fallbackContent:b,updateMode:x,...v}=a,I=io.useRef(null),M=io.useRef(null),D=()=>{if(!I.current)return;M.current=new wa(I.current,{type:f,data:FB(h,c),options:p&&{...p},plugins:y}),xT(n,M.current)},w=()=>{if(xT(n,null),M.current)M.current.destroy(),M.current=null};return io.useEffect(()=>{if(!r&&M.current&&p)UB(M.current,p)},[r,p]),io.useEffect(()=>{if(!r&&M.current)vT(M.current.config.data,h.labels)},[r,h.labels]),io.useEffect(()=>{if(!r&&M.current&&h.datasets)LT(M.current.config.data,h.datasets,c)},[r,h.datasets]),io.useEffect(()=>{if(!M.current)return;if(r)w(),setTimeout(D);else M.current.update(x)},[r,p,h.labels,h.datasets,x]),io.useEffect(()=>{if(!M.current)return;w(),setTimeout(D)},[f]),io.useEffect(()=>(D(),()=>w()),[]),Gx.jsx("canvas",{ref:I,role:"img",height:s,width:l,...v,children:b})}var qB=io.forwardRef(NB);function CT(a,n){return wa.register(n),io.forwardRef((s,l)=>Gx.jsx(qB,{...s,ref:l,type:a}))}var wo=CT("line",Fx),Lp=CT("bar",Ux);var Cp=be(ea(),1),IT="(prefers-color-scheme: dark)";function VB(){if(typeof window>"u")return"light";return window.matchMedia(IT).matches?"dark":"light"}function Mn(){let[a,n]=Cp.useState(()=>VB());return Cp.useEffect(()=>{let s=window.matchMedia(IT),l=()=>{n(s.matches?"dark":"light")};return l(),s.addEventListener("change",l),()=>s.removeEventListener("change",l)},[]),a}var jB=Math.pow(10,8)*24*60*60*1000,bU=-jB,Ip=604800000,wT=86400000;var id=43200,Yx=1440;var Xx=Symbol.for("constructDateFrom");function ma(a,n){if(typeof a==="function")return a(n);if(a&&typeof a==="object"&&Xx in a)return a[Xx](n);if(a instanceof Date)return new a.constructor(n);return new Date(n)}function et(a,n){return ma(n||a,a)}var GB={};function Tn(){return GB}function us(a,n){let s=Tn(),l=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??s.weekStartsOn??s.locale?.options?.weekStartsOn??0,r=et(a,n?.in),c=r.getDay(),f=(c<l?7:0)+c-l;return r.setDate(r.getDate()-f),r.setHours(0,0,0,0),r}function Cl(a,n){return us(a,{...n,weekStartsOn:1})}function wp(a,n){let s=et(a,n?.in),l=s.getFullYear(),r=ma(s,0);r.setFullYear(l+1,0,4),r.setHours(0,0,0,0);let c=Cl(r),f=ma(s,0);f.setFullYear(l,0,4),f.setHours(0,0,0,0);let h=Cl(f);if(s.getTime()>=c.getTime())return l+1;else if(s.getTime()>=h.getTime())return l;else return l-1}function Xr(a){let n=et(a),s=new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()));return s.setUTCFullYear(n.getFullYear()),+a-+s}function gi(a,...n){let s=ma.bind(null,a||n.find((l)=>typeof l==="object"));return n.map(s)}function Wx(a,n){let s=et(a,n?.in);return s.setHours(0,0,0,0),s}function MT(a,n,s){let[l,r]=gi(s?.in,a,n),c=Wx(l),f=Wx(r),h=+c-Xr(c),p=+f-Xr(f);return Math.round((h-p)/wT)}function TT(a,n){let s=wp(a,n),l=ma(n?.in||a,0);return l.setFullYear(s,0,4),l.setHours(0,0,0,0),Cl(l)}function Wr(a,n){let s=+et(a)-+et(n);if(s<0)return-1;else if(s>0)return 1;return s}function AT(a){return ma(a,Date.now())}function _T(a){return a instanceof Date||typeof a==="object"&&Object.prototype.toString.call(a)==="[object Date]"}function DT(a){return!(!_T(a)&&typeof a!=="number"||isNaN(+et(a)))}function RT(a,n,s){let[l,r]=gi(s?.in,a,n),c=l.getFullYear()-r.getFullYear(),f=l.getMonth()-r.getMonth();return c*12+f}function kT(a){return(n)=>{let l=(a?Math[a]:Math.trunc)(n);return l===0?0:l}}function OT(a,n){return+et(a)-+et(n)}function ET(a,n){let s=et(a,n?.in);return s.setHours(23,59,59,999),s}function BT(a,n){let s=et(a,n?.in),l=s.getMonth();return s.setFullYear(s.getFullYear(),l+1,0),s.setHours(23,59,59,999),s}function PT(a,n){let s=et(a,n?.in);return+ET(s,n)===+BT(s,n)}function zT(a,n,s){let[l,r,c]=gi(s?.in,a,a,n),f=Wr(r,c),h=Math.abs(RT(r,c));if(h<1)return 0;if(r.getMonth()===1&&r.getDate()>27)r.setDate(30);r.setMonth(r.getMonth()-f*h);let p=Wr(r,c)===-f;if(PT(l)&&h===1&&Wr(l,c)===1)p=!1;let y=f*(h-+p);return y===0?0:y}function HT(a,n,s){let l=OT(a,n)/1000;return kT(s?.roundingMethod)(l)}function UT(a,n){let s=et(a,n?.in);return s.setFullYear(s.getFullYear(),0,1),s.setHours(0,0,0,0),s}var YB={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},FT=(a,n,s)=>{let l,r=YB[a];if(typeof r==="string")l=r;else if(n===1)l=r.one;else l=r.other.replace("{{count}}",n.toString());if(s?.addSuffix)if(s.comparison&&s.comparison>0)return"in "+l;else return l+" ago";return l};function Mp(a){return(n={})=>{let s=n.width?String(n.width):a.defaultWidth;return a.formats[s]||a.formats[a.defaultWidth]}}var XB={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},WB={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},$B={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},NT={date:Mp({formats:XB,defaultWidth:"full"}),time:Mp({formats:WB,defaultWidth:"full"}),dateTime:Mp({formats:$B,defaultWidth:"full"})};var QB={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},qT=(a,n,s,l)=>QB[a];function $r(a){return(n,s)=>{let l=s?.context?String(s.context):"standalone",r;if(l==="formatting"&&a.formattingValues){let f=a.defaultFormattingWidth||a.defaultWidth,h=s?.width?String(s.width):f;r=a.formattingValues[h]||a.formattingValues[f]}else{let f=a.defaultWidth,h=s?.width?String(s.width):a.defaultWidth;r=a.values[h]||a.values[f]}let c=a.argumentCallback?a.argumentCallback(n):n;return r[c]}}var ZB={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},JB={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},KB={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},eP={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},tP={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},aP={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},oP=(a,n)=>{let s=Number(a),l=s%100;if(l>20||l<10)switch(l%10){case 1:return s+"st";case 2:return s+"nd";case 3:return s+"rd"}return s+"th"},VT={ordinalNumber:oP,era:$r({values:ZB,defaultWidth:"wide"}),quarter:$r({values:JB,defaultWidth:"wide",argumentCallback:(a)=>a-1}),month:$r({values:KB,defaultWidth:"wide"}),day:$r({values:eP,defaultWidth:"wide"}),dayPeriod:$r({values:tP,defaultWidth:"wide",formattingValues:aP,defaultFormattingWidth:"wide"})};function Qr(a){return(n,s={})=>{let l=s.width,r=l&&a.matchPatterns[l]||a.matchPatterns[a.defaultMatchWidth],c=n.match(r);if(!c)return null;let f=c[0],h=l&&a.parsePatterns[l]||a.parsePatterns[a.defaultParseWidth],p=Array.isArray(h)?sP(h,(x)=>x.test(f)):nP(h,(x)=>x.test(f)),y;y=a.valueCallback?a.valueCallback(p):p,y=s.valueCallback?s.valueCallback(y):y;let b=n.slice(f.length);return{value:y,rest:b}}}function nP(a,n){for(let s in a)if(Object.prototype.hasOwnProperty.call(a,s)&&n(a[s]))return s;return}function sP(a,n){for(let s=0;s<a.length;s++)if(n(a[s]))return s;return}function jT(a){return(n,s={})=>{let l=n.match(a.matchPattern);if(!l)return null;let r=l[0],c=n.match(a.parsePattern);if(!c)return null;let f=a.valueCallback?a.valueCallback(c[0]):c[0];f=s.valueCallback?s.valueCallback(f):f;let h=n.slice(r.length);return{value:f,rest:h}}}var iP=/^(\d+)(th|st|nd|rd)?/i,lP=/\d+/i,rP={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},uP={any:[/^b/i,/^(a|c)/i]},cP={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},dP={any:[/1/i,/2/i,/3/i,/4/i]},fP={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},hP={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},pP={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},mP={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},gP={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},yP={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},GT={ordinalNumber:jT({matchPattern:iP,parsePattern:lP,valueCallback:(a)=>parseInt(a,10)}),era:Qr({matchPatterns:rP,defaultMatchWidth:"wide",parsePatterns:uP,defaultParseWidth:"any"}),quarter:Qr({matchPatterns:cP,defaultMatchWidth:"wide",parsePatterns:dP,defaultParseWidth:"any",valueCallback:(a)=>a+1}),month:Qr({matchPatterns:fP,defaultMatchWidth:"wide",parsePatterns:hP,defaultParseWidth:"any"}),day:Qr({matchPatterns:pP,defaultMatchWidth:"wide",parsePatterns:mP,defaultParseWidth:"any"}),dayPeriod:Qr({matchPatterns:gP,defaultMatchWidth:"any",parsePatterns:yP,defaultParseWidth:"any"})};var ld={code:"en-US",formatDistance:FT,formatLong:NT,formatRelative:qT,localize:VT,match:GT,options:{weekStartsOn:0,firstWeekContainsDate:1}};function YT(a,n){let s=et(a,n?.in);return MT(s,UT(s))+1}function XT(a,n){let s=et(a,n?.in),l=+Cl(s)-+TT(s);return Math.round(l/Ip)+1}function Tp(a,n){let s=et(a,n?.in),l=s.getFullYear(),r=Tn(),c=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,f=ma(n?.in||a,0);f.setFullYear(l+1,0,c),f.setHours(0,0,0,0);let h=us(f,n),p=ma(n?.in||a,0);p.setFullYear(l,0,c),p.setHours(0,0,0,0);let y=us(p,n);if(+s>=+h)return l+1;else if(+s>=+y)return l;else return l-1}function WT(a,n){let s=Tn(),l=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??s.firstWeekContainsDate??s.locale?.options?.firstWeekContainsDate??1,r=Tp(a,n),c=ma(n?.in||a,0);return c.setFullYear(r,0,l),c.setHours(0,0,0,0),us(c,n)}function $T(a,n){let s=et(a,n?.in),l=+us(s,n)-+WT(s,n);return Math.round(l/Ip)+1}function ot(a,n){let s=a<0?"-":"",l=Math.abs(a).toString().padStart(n,"0");return s+l}var cs={y(a,n){let s=a.getFullYear(),l=s>0?s:1-s;return ot(n==="yy"?l%100:l,n.length)},M(a,n){let s=a.getMonth();return n==="M"?String(s+1):ot(s+1,2)},d(a,n){return ot(a.getDate(),n.length)},a(a,n){let s=a.getHours()/12>=1?"pm":"am";switch(n){case"a":case"aa":return s.toUpperCase();case"aaa":return s;case"aaaaa":return s[0];case"aaaa":default:return s==="am"?"a.m.":"p.m."}},h(a,n){return ot(a.getHours()%12||12,n.length)},H(a,n){return ot(a.getHours(),n.length)},m(a,n){return ot(a.getMinutes(),n.length)},s(a,n){return ot(a.getSeconds(),n.length)},S(a,n){let s=n.length,l=a.getMilliseconds(),r=Math.trunc(l*Math.pow(10,s-3));return ot(r,n.length)}};var Zr={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},$x={G:function(a,n,s){let l=a.getFullYear()>0?1:0;switch(n){case"G":case"GG":case"GGG":return s.era(l,{width:"abbreviated"});case"GGGGG":return s.era(l,{width:"narrow"});case"GGGG":default:return s.era(l,{width:"wide"})}},y:function(a,n,s){if(n==="yo"){let l=a.getFullYear(),r=l>0?l:1-l;return s.ordinalNumber(r,{unit:"year"})}return cs.y(a,n)},Y:function(a,n,s,l){let r=Tp(a,l),c=r>0?r:1-r;if(n==="YY"){let f=c%100;return ot(f,2)}if(n==="Yo")return s.ordinalNumber(c,{unit:"year"});return ot(c,n.length)},R:function(a,n){let s=wp(a);return ot(s,n.length)},u:function(a,n){let s=a.getFullYear();return ot(s,n.length)},Q:function(a,n,s){let l=Math.ceil((a.getMonth()+1)/3);switch(n){case"Q":return String(l);case"QQ":return ot(l,2);case"Qo":return s.ordinalNumber(l,{unit:"quarter"});case"QQQ":return s.quarter(l,{width:"abbreviated",context:"formatting"});case"QQQQQ":return s.quarter(l,{width:"narrow",context:"formatting"});case"QQQQ":default:return s.quarter(l,{width:"wide",context:"formatting"})}},q:function(a,n,s){let l=Math.ceil((a.getMonth()+1)/3);switch(n){case"q":return String(l);case"qq":return ot(l,2);case"qo":return s.ordinalNumber(l,{unit:"quarter"});case"qqq":return s.quarter(l,{width:"abbreviated",context:"standalone"});case"qqqqq":return s.quarter(l,{width:"narrow",context:"standalone"});case"qqqq":default:return s.quarter(l,{width:"wide",context:"standalone"})}},M:function(a,n,s){let l=a.getMonth();switch(n){case"M":case"MM":return cs.M(a,n);case"Mo":return s.ordinalNumber(l+1,{unit:"month"});case"MMM":return s.month(l,{width:"abbreviated",context:"formatting"});case"MMMMM":return s.month(l,{width:"narrow",context:"formatting"});case"MMMM":default:return s.month(l,{width:"wide",context:"formatting"})}},L:function(a,n,s){let l=a.getMonth();switch(n){case"L":return String(l+1);case"LL":return ot(l+1,2);case"Lo":return s.ordinalNumber(l+1,{unit:"month"});case"LLL":return s.month(l,{width:"abbreviated",context:"standalone"});case"LLLLL":return s.month(l,{width:"narrow",context:"standalone"});case"LLLL":default:return s.month(l,{width:"wide",context:"standalone"})}},w:function(a,n,s,l){let r=$T(a,l);if(n==="wo")return s.ordinalNumber(r,{unit:"week"});return ot(r,n.length)},I:function(a,n,s){let l=XT(a);if(n==="Io")return s.ordinalNumber(l,{unit:"week"});return ot(l,n.length)},d:function(a,n,s){if(n==="do")return s.ordinalNumber(a.getDate(),{unit:"date"});return cs.d(a,n)},D:function(a,n,s){let l=YT(a);if(n==="Do")return s.ordinalNumber(l,{unit:"dayOfYear"});return ot(l,n.length)},E:function(a,n,s){let l=a.getDay();switch(n){case"E":case"EE":case"EEE":return s.day(l,{width:"abbreviated",context:"formatting"});case"EEEEE":return s.day(l,{width:"narrow",context:"formatting"});case"EEEEEE":return s.day(l,{width:"short",context:"formatting"});case"EEEE":default:return s.day(l,{width:"wide",context:"formatting"})}},e:function(a,n,s,l){let r=a.getDay(),c=(r-l.weekStartsOn+8)%7||7;switch(n){case"e":return String(c);case"ee":return ot(c,2);case"eo":return s.ordinalNumber(c,{unit:"day"});case"eee":return s.day(r,{width:"abbreviated",context:"formatting"});case"eeeee":return s.day(r,{width:"narrow",context:"formatting"});case"eeeeee":return s.day(r,{width:"short",context:"formatting"});case"eeee":default:return s.day(r,{width:"wide",context:"formatting"})}},c:function(a,n,s,l){let r=a.getDay(),c=(r-l.weekStartsOn+8)%7||7;switch(n){case"c":return String(c);case"cc":return ot(c,n.length);case"co":return s.ordinalNumber(c,{unit:"day"});case"ccc":return s.day(r,{width:"abbreviated",context:"standalone"});case"ccccc":return s.day(r,{width:"narrow",context:"standalone"});case"cccccc":return s.day(r,{width:"short",context:"standalone"});case"cccc":default:return s.day(r,{width:"wide",context:"standalone"})}},i:function(a,n,s){let l=a.getDay(),r=l===0?7:l;switch(n){case"i":return String(r);case"ii":return ot(r,n.length);case"io":return s.ordinalNumber(r,{unit:"day"});case"iii":return s.day(l,{width:"abbreviated",context:"formatting"});case"iiiii":return s.day(l,{width:"narrow",context:"formatting"});case"iiiiii":return s.day(l,{width:"short",context:"formatting"});case"iiii":default:return s.day(l,{width:"wide",context:"formatting"})}},a:function(a,n,s){let r=a.getHours()/12>=1?"pm":"am";switch(n){case"a":case"aa":return s.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"aaa":return s.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return s.dayPeriod(r,{width:"narrow",context:"formatting"});case"aaaa":default:return s.dayPeriod(r,{width:"wide",context:"formatting"})}},b:function(a,n,s){let l=a.getHours(),r;if(l===12)r=Zr.noon;else if(l===0)r=Zr.midnight;else r=l/12>=1?"pm":"am";switch(n){case"b":case"bb":return s.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbb":return s.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return s.dayPeriod(r,{width:"narrow",context:"formatting"});case"bbbb":default:return s.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(a,n,s){let l=a.getHours(),r;if(l>=17)r=Zr.evening;else if(l>=12)r=Zr.afternoon;else if(l>=4)r=Zr.morning;else r=Zr.night;switch(n){case"B":case"BB":case"BBB":return s.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return s.dayPeriod(r,{width:"narrow",context:"formatting"});case"BBBB":default:return s.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(a,n,s){if(n==="ho"){let l=a.getHours()%12;if(l===0)l=12;return s.ordinalNumber(l,{unit:"hour"})}return cs.h(a,n)},H:function(a,n,s){if(n==="Ho")return s.ordinalNumber(a.getHours(),{unit:"hour"});return cs.H(a,n)},K:function(a,n,s){let l=a.getHours()%12;if(n==="Ko")return s.ordinalNumber(l,{unit:"hour"});return ot(l,n.length)},k:function(a,n,s){let l=a.getHours();if(l===0)l=24;if(n==="ko")return s.ordinalNumber(l,{unit:"hour"});return ot(l,n.length)},m:function(a,n,s){if(n==="mo")return s.ordinalNumber(a.getMinutes(),{unit:"minute"});return cs.m(a,n)},s:function(a,n,s){if(n==="so")return s.ordinalNumber(a.getSeconds(),{unit:"second"});return cs.s(a,n)},S:function(a,n){return cs.S(a,n)},X:function(a,n,s){let l=a.getTimezoneOffset();if(l===0)return"Z";switch(n){case"X":return ZT(l);case"XXXX":case"XX":return Il(l);case"XXXXX":case"XXX":default:return Il(l,":")}},x:function(a,n,s){let l=a.getTimezoneOffset();switch(n){case"x":return ZT(l);case"xxxx":case"xx":return Il(l);case"xxxxx":case"xxx":default:return Il(l,":")}},O:function(a,n,s){let l=a.getTimezoneOffset();switch(n){case"O":case"OO":case"OOO":return"GMT"+QT(l,":");case"OOOO":default:return"GMT"+Il(l,":")}},z:function(a,n,s){let l=a.getTimezoneOffset();switch(n){case"z":case"zz":case"zzz":return"GMT"+QT(l,":");case"zzzz":default:return"GMT"+Il(l,":")}},t:function(a,n,s){let l=Math.trunc(+a/1000);return ot(l,n.length)},T:function(a,n,s){return ot(+a,n.length)}};function QT(a,n=""){let s=a>0?"-":"+",l=Math.abs(a),r=Math.trunc(l/60),c=l%60;if(c===0)return s+String(r);return s+String(r)+n+ot(c,2)}function ZT(a,n){if(a%60===0)return(a>0?"-":"+")+ot(Math.abs(a)/60,2);return Il(a,n)}function Il(a,n=""){let s=a>0?"-":"+",l=Math.abs(a),r=ot(Math.trunc(l/60),2),c=ot(l%60,2);return s+r+n+c}var JT=(a,n)=>{switch(a){case"P":return n.date({width:"short"});case"PP":return n.date({width:"medium"});case"PPP":return n.date({width:"long"});case"PPPP":default:return n.date({width:"full"})}},KT=(a,n)=>{switch(a){case"p":return n.time({width:"short"});case"pp":return n.time({width:"medium"});case"ppp":return n.time({width:"long"});case"pppp":default:return n.time({width:"full"})}},bP=(a,n)=>{let s=a.match(/(P+)(p+)?/)||[],l=s[1],r=s[2];if(!r)return JT(a,n);let c;switch(l){case"P":c=n.dateTime({width:"short"});break;case"PP":c=n.dateTime({width:"medium"});break;case"PPP":c=n.dateTime({width:"long"});break;case"PPPP":default:c=n.dateTime({width:"full"});break}return c.replace("{{date}}",JT(l,n)).replace("{{time}}",KT(r,n))},eA={p:KT,P:bP};var xP=/^D+$/,SP=/^Y+$/,vP=["D","DD","YY","YYYY"];function tA(a){return xP.test(a)}function aA(a){return SP.test(a)}function oA(a,n,s){let l=LP(a,n,s);if(console.warn(l),vP.includes(a))throw RangeError(l)}function LP(a,n,s){let l=a[0]==="Y"?"years":"days of the month";return`Use \`${a.toLowerCase()}\` instead of \`${a}\` (in \`${n}\`) for formatting ${l} to the input \`${s}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var CP=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,IP=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,wP=/^'([^]*?)'?$/,MP=/''/g,TP=/[a-zA-Z]/;function qo(a,n,s){let l=Tn(),r=s?.locale??l.locale??ld,c=s?.firstWeekContainsDate??s?.locale?.options?.firstWeekContainsDate??l.firstWeekContainsDate??l.locale?.options?.firstWeekContainsDate??1,f=s?.weekStartsOn??s?.locale?.options?.weekStartsOn??l.weekStartsOn??l.locale?.options?.weekStartsOn??0,h=et(a,s?.in);if(!DT(h))throw RangeError("Invalid time value");let p=n.match(IP).map((b)=>{let x=b[0];if(x==="p"||x==="P"){let v=eA[x];return v(b,r.formatLong)}return b}).join("").match(CP).map((b)=>{if(b==="''")return{isToken:!1,value:"'"};let x=b[0];if(x==="'")return{isToken:!1,value:AP(b)};if($x[x])return{isToken:!0,value:b};if(x.match(TP))throw RangeError("Format string contains an unescaped latin alphabet character `"+x+"`");return{isToken:!1,value:b}});if(r.localize.preprocessor)p=r.localize.preprocessor(h,p);let y={firstWeekContainsDate:c,weekStartsOn:f,locale:r};return p.map((b)=>{if(!b.isToken)return b.value;let x=b.value;if(!s?.useAdditionalWeekYearTokens&&aA(x)||!s?.useAdditionalDayOfYearTokens&&tA(x))oA(x,n,String(a));let v=$x[x[0]];return v(h,x,r.localize,y)}).join("")}function AP(a){let n=a.match(wP);if(!n)return a;return n[1].replace(MP,"'")}function nA(a,n,s){let l=Tn(),r=s?.locale??l.locale??ld,c=2520,f=Wr(a,n);if(isNaN(f))throw RangeError("Invalid time value");let h=Object.assign({},s,{addSuffix:s?.addSuffix,comparison:f}),[p,y]=gi(s?.in,...f>0?[n,a]:[a,n]),b=HT(y,p),x=(Xr(y)-Xr(p))/1000,v=Math.round((b-x)/60),I;if(v<2)if(s?.includeSeconds)if(b<5)return r.formatDistance("lessThanXSeconds",5,h);else if(b<10)return r.formatDistance("lessThanXSeconds",10,h);else if(b<20)return r.formatDistance("lessThanXSeconds",20,h);else if(b<40)return r.formatDistance("halfAMinute",0,h);else if(b<60)return r.formatDistance("lessThanXMinutes",1,h);else return r.formatDistance("xMinutes",1,h);else if(v===0)return r.formatDistance("lessThanXMinutes",1,h);else return r.formatDistance("xMinutes",v,h);else if(v<45)return r.formatDistance("xMinutes",v,h);else if(v<90)return r.formatDistance("aboutXHours",1,h);else if(v<Yx){let M=Math.round(v/60);return r.formatDistance("aboutXHours",M,h)}else if(v<2520)return r.formatDistance("xDays",1,h);else if(v<id){let M=Math.round(v/Yx);return r.formatDistance("xDays",M,h)}else if(v<id*2)return I=Math.round(v/id),r.formatDistance("aboutXMonths",I,h);if(I=zT(y,p),I<12){let M=Math.round(v/id);return r.formatDistance("xMonths",M,h)}else{let M=I%12,D=Math.trunc(I/12);if(M<3)return r.formatDistance("aboutXYears",D,h);else if(M<9)return r.formatDistance("overXYears",D,h);else return r.formatDistance("almostXYears",D+1,h)}}function sA(a,n){return nA(a,AT(a),n)}var qa=be(nt(),1),ra=["#a78bfa","#22d3ee","#ec4899","#4ade80","#fbbf24","#f87171","#60a5fa"],Ap={dark:{legendLabel:"#94a3b8",tooltipBackground:"#16161e",tooltipTitle:"#f8fafc",tooltipBody:"#94a3b8",tooltipBorder:"rgba(255, 255, 255, 0.1)",grid:"rgba(255, 255, 255, 0.06)",tick:"#64748b"},light:{legendLabel:"#475569",tooltipBackground:"#ffffff",tooltipTitle:"#0f172a",tooltipBody:"#334155",tooltipBorder:"rgba(15, 23, 42, 0.18)",grid:"rgba(15, 23, 42, 0.08)",tick:"#64748b"}};function _p(a){let{chartTheme:n,showLegend:s,defaultLabel:l,formatValue:r,footer:c}=a;return{legend:{display:s,position:"top",align:"start",labels:{color:n.legendLabel,usePointStyle:!0,padding:16,font:{size:12},boxWidth:8}},tooltip:{backgroundColor:n.tooltipBackground,titleColor:n.tooltipTitle,bodyColor:n.tooltipBody,borderColor:n.tooltipBorder,borderWidth:1,padding:12,cornerRadius:8,callbacks:{label:(f)=>{let h=f.dataset.label??l,p=f.parsed.y??0;return`${h}: ${r(p)}`},...c?{footer:c}:{}}}}}function Dp(a){let{chartTheme:n,formatY:s}=a,l={grid:{color:n.grid,drawBorder:!1},ticks:{color:n.tick,font:{size:11}}},r={...l,ticks:{...l.ticks,callback:(c)=>s(Number(c))},min:0};return{sharedScaleBase:l,yScale:r}}function Rp(a){return{borderColor:a,backgroundColor:`${a}20`,fill:!0,tension:0,pointRadius:3,pointHoverRadius:4,borderWidth:2}}function kp(a){return{backgroundColor:a,borderColor:a,borderWidth:0,borderRadius:3}}function Jr(a,n){return a.datasets.map((s,l)=>({label:s.label,data:s.data,...n(l)}))}function Op(a,n,s){if(a.length===0)return{labels:[],datasets:[]};let{initBucket:l,accumulate:r,bucketToValue:c}=s,f=new Map;for(let p of a){let y=f.get(p.timestamp)??l();r(y,p),f.set(p.timestamp,y)}let h=[...f.entries()].sort((p,y)=>p[0]-y[0]);return{labels:h.map(([p])=>qo(new Date(p),"MMM d")),datasets:[{label:n,data:h.map(([,p])=>c(p))}]}}function Ep(a,n){if(a.length===0)return{labels:[],datasets:[]};let{topN:s=5,rankWeight:l,initBucket:r,accumulate:c,bucketToValue:f}=n,h=new Map;for(let z of a){let N=`${z.model}::${z.provider}`,Q=h.get(N);if(Q)Q.weight+=l(z);else h.set(N,{model:z.model,provider:z.provider,weight:l(z)})}let y=[...h.entries()].sort((z,N)=>N[1].weight-z[1].weight).slice(0,s),b=new Set(y.map(([z])=>z)),x=new Map;for(let[,{model:z}]of y)x.set(z,(x.get(z)??0)+1);let v=new Map;for(let[z,{model:N,provider:Q}]of y)v.set(z,(x.get(N)??0)>1?`${N} (${Q})`:N);let I=[...new Set(a.map((z)=>z.timestamp))].sort((z,N)=>z-N),M=y.map(([z])=>v.get(z)??z);if(a.some((z)=>!b.has(`${z.model}::${z.provider}`)))M.push("Other");let w=new Map;for(let z of I)w.set(z,{});for(let z of a){let N=`${z.model}::${z.provider}`,Q=b.has(N)?v.get(N)??z.model:"Other",Z=w.get(z.timestamp);if(!Z)continue;let X=Z[Q]??r();c(X,z),Z[Q]=X}return{labels:I.map((z)=>qo(new Date(z),"MMM d")),datasets:M.map((z)=>({label:z,data:I.map((N)=>{let Q=w.get(N)?.[z];return Q?f(Q):0})}))}}function DP({byModel:a,onChange:n}){return qa.jsxDEV("div",{className:"flex bg-[var(--bg-surface)] rounded-[var(--radius-sm)] p-0.5 border border-[var(--border-subtle)]",children:[qa.jsxDEV("button",{type:"button",onClick:()=>n(!1),className:`tab-btn text-xs ${!a?"active":""}`,children:"All Models"},void 0,!1,void 0,this),qa.jsxDEV("button",{type:"button",onClick:()=>n(!0),className:`tab-btn text-xs ${a?"active":""}`,children:"By Model"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Bp({title:a,subtitle:n,empty:s,emptyMessage:l,controls:r,byModel:c,onByModelChange:f,children:h}){return qa.jsxDEV("div",{className:"surface overflow-hidden",children:[qa.jsxDEV("div",{className:"px-5 py-4 border-b border-[var(--border-subtle)] flex items-center justify-between gap-4 flex-wrap",children:[qa.jsxDEV("div",{children:[qa.jsxDEV("h3",{className:"text-sm font-semibold text-[var(--text-primary)]",children:a},void 0,!1,void 0,this),qa.jsxDEV("p",{className:"text-xs text-[var(--text-muted)] mt-1",children:n},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qa.jsxDEV("div",{className:"flex items-center gap-2 flex-wrap",children:[r,qa.jsxDEV(DP,{byModel:c,onChange:f},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),qa.jsxDEV("div",{className:"p-5 min-h-[320px]",children:s?qa.jsxDEV("div",{className:"h-full flex items-center justify-center text-[var(--text-muted)] text-sm",children:l},void 0,!1,void 0,this):qa.jsxDEV("div",{className:"h-[280px]",children:h},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Kr=be(nt(),1);wa.register(Fo,No,sd,Na,Uo,In,wn,Cn,Yr);var Qx=[{value:"yelling",label:"Yelling"},{value:"profanity",label:"Profanity"},{value:"anguish",label:"Anguish (!!!, nooo, dude, ..)"},{value:"negation",label:"Negation (no/nope/wrong)"},{value:"repetition",label:"Repetition (i meant, still doesnt)"},{value:"blame",label:"Blame (you didnt, stop X-ing)"},{value:"frustration",label:"Frustration (neg + rep + blame)"},{value:"total",label:"All signals combined"}];function iA(a){if(!Number.isFinite(a))return"-";if(a===0)return"0%";if(Math.abs(a)<1)return`${a.toFixed(1)}%`;return`${a.toFixed(0)}%`}function lA(a,n){if(n==="frustration")return a.negation+a.repetition+a.blame;if(n==="total")return a.yelling+a.profanity+a.anguish+a.negation+a.repetition+a.blame;return a[n]}function rA(a,n){if(n<=0)return 0;return a/n*100}function RP(a,n){let s=Qx.find((l)=>l.value===n)?.label??"Hits";return Op(a,s,{initBucket:()=>({hits:0,messages:0}),accumulate:(l,r)=>{l.hits+=lA(r,n),l.messages+=r.messages},bucketToValue:(l)=>rA(l.hits,l.messages)})}function kP(a,n){return Ep(a,{rankWeight:(s)=>s.messages,initBucket:()=>({hits:0,messages:0}),accumulate:(s,l)=>{s.hits+=lA(l,n),s.messages+=l.messages},bucketToValue:(s)=>rA(s.hits,s.messages)})}function uA({behaviorSeries:a}){let[n,s]=rd.useState(!1),[l,r]=rd.useState("total"),c=Mn(),f=Ap[c],h=rd.useMemo(()=>n?kP(a,l):RP(a,l),[a,n,l]),p=_p({chartTheme:f,showLegend:n,defaultLabel:"Hits",formatValue:iA}),{sharedScaleBase:y,yScale:b}=Dp({chartTheme:f,formatY:iA}),x=Qx.find((M)=>M.value===l)?.label??"",v=Kr.jsxDEV("div",{className:"flex bg-[var(--bg-surface)] rounded-[var(--radius-sm)] p-0.5 border border-[var(--border-subtle)]",children:Qx.map((M)=>Kr.jsxDEV("button",{type:"button",onClick:()=>r(M.value),className:`tab-btn text-xs ${l===M.value?"active":""}`,children:M.label},M.value,!1,void 0,this))},void 0,!1,void 0,this),I;if(n){let M={labels:h.labels,datasets:Jr(h,(w)=>Rp(ra[w%ra.length]))};I=Kr.jsxDEV(wo,{data:M,options:{responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:p,scales:{x:y,y:b}}},void 0,!1,void 0,this)}else{let M={labels:h.labels,datasets:Jr(h,(w)=>kp(ra[w%ra.length]))},D={responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:p,scales:{x:{...y,stacked:!0},y:{...b,stacked:!0}},layout:{padding:{top:8}}};I=Kr.jsxDEV(Lp,{data:M,options:D},void 0,!1,void 0,this)}return Kr.jsxDEV(Bp,{title:"User Tantrums",subtitle:`${x} as % of user messages per day`,empty:h.labels.length===0,emptyMessage:"No behavioral data yet. Sync to scan your sessions.",controls:v,byModel:n,onByModelChange:s,children:I},void 0,!1,void 0,this)}var Qp=be(ea(),1);var Hp=be(ea(),1);var Pp=(...a)=>a.filter((n,s,l)=>Boolean(n)&&n.trim()!==""&&l.indexOf(n)===s).join(" ").trim();var cA=(a)=>a.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();var dA=(a)=>a.replace(/^([A-Z])|[\s-_]+(\w)/g,(n,s,l)=>l?l.toUpperCase():s.toLowerCase());var Zx=(a)=>{let n=dA(a);return n.charAt(0).toUpperCase()+n.slice(1)};var ud=be(ea(),1);var zp={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var fA=(a)=>{for(let n in a)if(n.startsWith("aria-")||n==="role"||n==="title")return!0;return!1};var eu=be(ea(),1),OP=eu.createContext({});var hA=()=>eu.useContext(OP);var pA=ud.forwardRef(({color:a,size:n,strokeWidth:s,absoluteStrokeWidth:l,className:r="",children:c,iconNode:f,...h},p)=>{let{size:y=24,strokeWidth:b=2,absoluteStrokeWidth:x=!1,color:v="currentColor",className:I=""}=hA()??{},M=l??x?Number(s??b)*24/Number(n??y):s??b;return ud.createElement("svg",{ref:p,...zp,width:n??y??zp.width,height:n??y??zp.height,stroke:a??v,strokeWidth:M,className:Pp("lucide",I,r),...!c&&!fA(h)&&{"aria-hidden":"true"},...h},[...f.map(([D,w])=>ud.createElement(D,w)),...Array.isArray(c)?c:[c]])});var Fe=(a,n)=>{let s=Hp.forwardRef(({className:l,...r},c)=>Hp.createElement(pA,{ref:c,iconNode:n,className:Pp(`lucide-${cA(Zx(a))}`,`lucide-${a}`,l),...r}));return s.displayName=Zx(a),s};var EP=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],yi=Fe("chart-column",EP);var BP=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],bi=Fe("circle-alert",BP);var PP=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],xi=Fe("circle-check",PP);var zP=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],Si=Fe("circle-x",zP);var HP=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1",key:"1oajmo"}],["path",{d:"M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1",key:"mpwhp6"}]],vi=Fe("file-braces",HP);var UP=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],Ml=Fe("activity",UP);var FP=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],cd=Fe("chevron-down",FP);var NP=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],dd=Fe("chevron-up",NP);var qP=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]],fd=Fe("clock",qP);var VP=[["path",{d:"M13.744 17.736a6 6 0 1 1-7.48-7.48",key:"bq4yh3"}],["path",{d:"M15 6h1v4",key:"11y1tn"}],["path",{d:"m6.134 14.768.866-.5 2 3.464",key:"17snzx"}],["circle",{cx:"16",cy:"8",r:"6",key:"14bfc9"}]],hd=Fe("coins",VP);var jP=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],pd=Fe("database",jP);var GP=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],md=Fe("download",GP);var YP=[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]],gd=Fe("gauge",YP);var XP=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],yd=Fe("hash",XP);var WP=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],bd=Fe("refresh-cw",WP);var $P=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],xd=Fe("server",$P);var QP=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],Tl=Fe("star",QP);var ZP=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],Sd=Fe("upload",ZP);var JP=[["path",{d:"M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z",key:"1v7up4"}]],Al=Fe("zap",JP);var KP=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],vd=Fe("x",KP);var wt=be(nt(),1),Up={dark:{legendLabel:"#cbd5e1",tooltipBackground:"#16161e",tooltipTitle:"#f8fafc",tooltipBody:"#94a3b8",tooltipBorder:"rgba(255, 255, 255, 0.1)",grid:"rgba(255, 255, 255, 0.06)",tick:"#94a3b8"},light:{legendLabel:"#334155",tooltipBackground:"#ffffff",tooltipTitle:"#0f172a",tooltipBody:"#334155",tooltipBorder:"rgba(15, 23, 42, 0.18)",grid:"rgba(15, 23, 42, 0.08)",tick:"#475569"}};function ds(a){return{borderColor:a,backgroundColor:"transparent",tension:0.4,pointRadius:0,borderWidth:2}}function Fp({timestamps:a,values:n,color:s}){let l={labels:a.map((c)=>qo(new Date(c),"MMM d")),datasets:[{data:n,...ds(s)}]};return wt.jsxDEV(wo,{data:l,options:{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{display:!1},tooltip:{enabled:!1}},scales:{x:{display:!1},y:{display:!1,min:0}}}},void 0,!1,void 0,this)}function Np(a){return{legend:{display:!0,position:"top",labels:{color:a.legendLabel,usePointStyle:!0,padding:16,font:{size:12}}},tooltip:{backgroundColor:a.tooltipBackground,titleColor:a.tooltipTitle,bodyColor:a.tooltipBody,borderColor:a.tooltipBorder,borderWidth:1,cornerRadius:8}}}function mA(a){return{x:{grid:{color:a.grid},ticks:{color:a.tick,font:{size:11}}},y:{grid:{color:a.grid},ticks:{color:a.tick,font:{size:11}},min:0}}}function gA(a){return{x:{grid:{color:a.grid},ticks:{color:a.tick,font:{size:11}}},y:{type:"linear",display:!0,position:"left",grid:{color:a.grid},ticks:{color:a.tick,font:{size:11}}},y1:{type:"linear",display:!0,position:"right",grid:{drawOnChartArea:!1},ticks:{color:a.tick,font:{size:11}}}}}function qp({title:a,subtitle:n,children:s}){return wt.jsxDEV("div",{className:"surface overflow-hidden",children:[wt.jsxDEV("div",{className:"px-5 py-4 border-b border-[var(--border-subtle)]",children:[wt.jsxDEV("h3",{className:"text-sm font-semibold text-[var(--text-primary)]",children:a},void 0,!1,void 0,this),n?wt.jsxDEV("p",{className:"text-xs text-[var(--text-muted)] mt-1",children:n},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),wt.jsxDEV("div",{className:"overflow-x-auto",children:s},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ez(a){if(a==="right")return"text-right";if(a==="center")return"text-center";return""}function Vp({columns:a,gridTemplate:n}){return wt.jsxDEV("div",{className:"grid gap-3 px-5 py-3 text-[var(--text-muted)] text-xs uppercase tracking-wider font-semibold",style:{gridTemplateColumns:n},children:[a.map((s)=>wt.jsxDEV("div",{className:ez(s.align),children:s.label},s.label,!1,void 0,this)),wt.jsxDEV("div",{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function jp({children:a}){return wt.jsxDEV("div",{className:"max-h-[calc(100vh-300px)] overflow-y-auto",children:a},void 0,!1,void 0,this)}function Gp({model:a,provider:n}){return wt.jsxDEV("div",{children:[wt.jsxDEV("div",{className:"font-medium text-[var(--text-primary)]",children:a},void 0,!1,void 0,this),wt.jsxDEV("div",{className:"text-xs text-[var(--text-muted)]",children:n},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Yp({gridTemplate:a,cells:n,trendCell:s,isExpanded:l,onToggle:r,expandedContent:c}){return wt.jsxDEV("div",{className:"border-t border-[var(--border-subtle)]",children:[wt.jsxDEV("button",{type:"button",onClick:r,className:"w-full bg-transparent border-none text-left px-5 py-3 cursor-pointer hover:bg-[var(--bg-hover)] transition-colors",children:wt.jsxDEV("div",{className:"grid gap-3 items-center",style:{gridTemplateColumns:a},children:[n,wt.jsxDEV("div",{className:"h-10",children:s},void 0,!1,void 0,this),wt.jsxDEV("div",{className:"flex justify-center text-[var(--text-muted)]",children:l?wt.jsxDEV(dd,{size:16},void 0,!1,void 0,this):wt.jsxDEV(cd,{size:16},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),l?wt.jsxDEV("div",{className:"px-5 py-4 bg-[var(--bg-elevated)] border-t border-[var(--border-subtle)]",children:c},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function Xp(){return wt.jsxDEV("div",{className:"text-[var(--text-muted)] text-center text-sm",children:"-"},void 0,!1,void 0,this)}function Wp({message:a="No data available"}){return wt.jsxDEV("div",{className:"h-full flex items-center justify-center text-[var(--text-muted)] text-sm",children:a},void 0,!1,void 0,this)}var Xe=be(nt(),1);wa.register(Fo,No,Uo,Na,In,wn,Cn);var $p={yelling:"#fbbf24",profanity:"#f87171",anguish:"#a78bfa",frustration:"#22d3ee"},yA="2fr 0.9fr 0.8fr 0.8fr 0.8fr 0.9fr 0.8fr 140px 40px";function xA(a){return a.toLocaleString()}function bA(a){if(a.totalMessages===0)return 0;return(a.totalYelling+a.totalProfanity+a.totalAnguish+a.totalNegation+a.totalRepetition+a.totalBlame)/a.totalMessages}function tu(a,n){if(n===0)return"-";let s=a/n*100;if(s===0)return"0%";if(s<1)return`${s.toFixed(1)}%`;return`${s.toFixed(0)}%`}function SA({models:a,behaviorSeries:n}){let[s,l]=Qp.useState(null),r=Mn(),c=Up[r],f=Qp.useMemo(()=>az(n),[n]),h=[...a].sort((p,y)=>{if(y.totalMessages!==p.totalMessages)return y.totalMessages-p.totalMessages;return bA(y)-bA(p)});return Xe.jsxDEV(qp,{title:"Behavior by Model",subtitle:"How often each model elicited a tantrum — rates are per user message",children:[Xe.jsxDEV(Vp,{gridTemplate:yA,columns:[{label:"Model"},{label:"Messages",align:"right"},{label:"CAPS %",align:"right"},{label:"Profanity %",align:"right"},{label:"Anguish %",align:"right"},{label:"Frustration %",align:"right"},{label:"Hits %",align:"right"},{label:"Trend",align:"center"}]},void 0,!1,void 0,this),Xe.jsxDEV(jp,{children:[h.map((p,y)=>{let b=`${p.model}::${p.provider}`,x=f.get(b)?.data??[],v=ra[y%ra.length],I=s===b,M=p.totalNegation+p.totalRepetition+p.totalBlame,D=p.totalYelling+p.totalProfanity+p.totalAnguish+M;return Xe.jsxDEV(Yp,{gridTemplate:yA,isExpanded:I,onToggle:()=>l(I?null:b),cells:[Xe.jsxDEV(Gp,{model:p.model,provider:p.provider},"name",!1,void 0,this),Xe.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:xA(p.totalMessages)},"messages",!1,void 0,this),Xe.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:tu(p.totalYelling,p.totalMessages)},"caps",!1,void 0,this),Xe.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:tu(p.totalProfanity,p.totalMessages)},"profanity",!1,void 0,this),Xe.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:tu(p.totalAnguish,p.totalMessages)},"anguish",!1,void 0,this),Xe.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:tu(M,p.totalMessages)},"frustration",!1,void 0,this),Xe.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:tu(D,p.totalMessages)},"hits",!1,void 0,this)],trendCell:x.length===0?Xe.jsxDEV(Xp,{},void 0,!1,void 0,this):Xe.jsxDEV(Fp,{timestamps:x.map((w)=>w.timestamp),values:x.map((w)=>w.total),color:v},void 0,!1,void 0,this),expandedContent:Xe.jsxDEV("div",{className:"grid gap-4",style:{gridTemplateColumns:"220px 1fr"},children:[Xe.jsxDEV("div",{className:"space-y-4 text-sm",children:[Xe.jsxDEV(_l,{label:"Yelling (CAPS)",total:p.totalYelling,messages:p.totalMessages,valueClass:"text-[var(--accent-amber,#fbbf24)]"},void 0,!1,void 0,this),Xe.jsxDEV(_l,{label:"Profanity",total:p.totalProfanity,messages:p.totalMessages,valueClass:"text-[var(--accent-red,#f87171)]"},void 0,!1,void 0,this),Xe.jsxDEV(_l,{label:"Anguish (!!!, nooo, dude, ..)",total:p.totalAnguish,messages:p.totalMessages,valueClass:"text-[var(--accent-violet,#a78bfa)]"},void 0,!1,void 0,this),Xe.jsxDEV(_l,{label:"Negation (no/nope/wrong)",total:p.totalNegation,messages:p.totalMessages,valueClass:"text-[var(--accent-cyan,#22d3ee)]"},void 0,!1,void 0,this),Xe.jsxDEV(_l,{label:"Repetition (i meant, still doesnt)",total:p.totalRepetition,messages:p.totalMessages,valueClass:"text-[var(--accent-cyan,#22d3ee)]"},void 0,!1,void 0,this),Xe.jsxDEV(_l,{label:"Blame (you didnt, stop X-ing)",total:p.totalBlame,messages:p.totalMessages,valueClass:"text-[var(--accent-cyan,#22d3ee)]"},void 0,!1,void 0,this),Xe.jsxDEV(_l,{label:"Avg chars / msg",total:p.totalChars,messages:p.totalMessages,valueClass:"text-[var(--text-secondary)]",mode:"average"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Xe.jsxDEV("div",{className:"h-[200px]",children:x.length===0?Xe.jsxDEV(Wp,{},void 0,!1,void 0,this):Xe.jsxDEV(tz,{data:x,chartTheme:c},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},b,!1,void 0,this)}),h.length===0?Xe.jsxDEV("div",{className:"border-t border-[var(--border-subtle)] px-5 py-8 text-center text-[var(--text-muted)] text-sm",children:"No user behavior recorded for this range yet."},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function _l({label:a,total:n,messages:s,valueClass:l,mode:r="rate"}){let c=r==="rate"?"% of msgs":"Per msg",f=s>0?r==="rate"?tu(n,s):(n/s).toFixed(0):"-";return Xe.jsxDEV("div",{children:[Xe.jsxDEV("div",{className:"text-[var(--text-primary)] font-medium mb-2",children:a},void 0,!1,void 0,this),Xe.jsxDEV("div",{className:"space-y-1 text-[var(--text-secondary)]",children:[Xe.jsxDEV("div",{className:"flex items-center justify-between",children:[Xe.jsxDEV("span",{children:"Total"},void 0,!1,void 0,this),Xe.jsxDEV("span",{className:`font-mono ${l}`,children:xA(n)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Xe.jsxDEV("div",{className:"flex items-center justify-between",children:[Xe.jsxDEV("span",{children:c},void 0,!1,void 0,this),Xe.jsxDEV("span",{className:"font-mono",children:f},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function tz({data:a,chartTheme:n}){let s={labels:a.map((r)=>qo(new Date(r.timestamp),"MMM d")),datasets:[{label:"CAPS",data:a.map((r)=>r.yelling),...ds($p.yelling)},{label:"Profanity",data:a.map((r)=>r.profanity),...ds($p.profanity)},{label:"Anguish",data:a.map((r)=>r.anguish),...ds($p.anguish)},{label:"Frustration",data:a.map((r)=>r.frustration),...ds($p.frustration)}]},l={responsive:!0,maintainAspectRatio:!1,plugins:Np(n),scales:mA(n)};return Xe.jsxDEV(wo,{data:s,options:l},void 0,!1,void 0,this)}function az(a){if(a.length===0)return new Map;let n=[...new Set(a.map((r)=>r.timestamp))].sort((r,c)=>r-c),s=new Map;for(let r of a){let c=`${r.model}::${r.provider}`,f=s.get(c);if(!f)f=new Map,s.set(c,f);let h=f.get(r.timestamp)??{timestamp:r.timestamp,yelling:0,profanity:0,anguish:0,frustration:0,total:0};h.yelling+=r.yelling,h.profanity+=r.profanity,h.anguish+=r.anguish,h.frustration+=r.negation+r.repetition+r.blame,h.total=h.yelling+h.profanity+h.anguish+h.frustration,f.set(r.timestamp,h)}let l=new Map;for(let[r,c]of s){let f=n.map((h)=>c.get(h)??{timestamp:h,yelling:0,profanity:0,anguish:0,frustration:0,total:0});l.set(r,{data:f})}return l}var vA=be(ea(),1),ou=be(nt(),1);function au(a){return a.toLocaleString()}function Zp(a,n){if(n<=0)return;return`${(a/n).toFixed(2)} / msg`}function LA({overall:a,behaviorSeries:n}){let s=vA.useMemo(()=>{let f=new Map;for(let p of n){let y=`${p.model}::${p.provider}`,b=f.get(y),x=p.yelling+p.profanity+p.anguish+p.negation+p.repetition+p.blame;if(b)b.score+=x;else f.set(y,{model:p.model,provider:p.provider,score:x})}let h=null;for(let p of f.values())if(!h||p.score>h.score)h=p;return h},[n]),l=a.totalNegation+a.totalRepetition+a.totalBlame,r=a.totalMessages,c=[{label:"Messages",value:au(a.totalMessages),sub:r>0?"in selected range":void 0},{label:"Yelling",value:au(a.totalYelling),sub:Zp(a.totalYelling,r)},{label:"Profanity hits",value:au(a.totalProfanity),sub:Zp(a.totalProfanity,r)},{label:"Anguish",value:au(a.totalAnguish),sub:Zp(a.totalAnguish,r)},{label:"Frustration",value:au(l),sub:Zp(l,r)},{label:"Most yelled-at",value:s?.model??"—",sub:s?`${au(s.score)} hits`:void 0}];return ou.jsxDEV("div",{className:"grid grid-cols-2 sm:grid-cols-6 gap-4",children:c.map((f)=>ou.jsxDEV("div",{className:"surface px-4 py-3",children:[ou.jsxDEV("p",{className:"text-xs text-[var(--text-muted)] mb-1",children:f.label},void 0,!1,void 0,this),ou.jsxDEV("p",{className:"text-lg font-semibold text-[var(--text-primary)] truncate",title:f.value,children:f.value},void 0,!1,void 0,this),f.sub&&ou.jsxDEV("p",{className:"text-xs text-[var(--text-muted)] mt-0.5",children:f.sub},void 0,!1,void 0,this)]},f.label,!0,void 0,this))},void 0,!1,void 0,this)}var wA=be(ea(),1);var Jx=3600000,Jp=24*Jx,CA={"1h":{windowLabel:"the last hour",trendLabel:"1h Trend",bucketMs:Jx,bucketCount:1,tickFormat:"HH:mm"},"24h":{windowLabel:"the last 24 hours",trendLabel:"24h Trend",bucketMs:Jx,bucketCount:24,tickFormat:"HH:mm"},"7d":{windowLabel:"the last 7 days",trendLabel:"7d Trend",bucketMs:Jp,bucketCount:7,tickFormat:"MMM d"},"30d":{windowLabel:"the last 30 days",trendLabel:"30d Trend",bucketMs:Jp,bucketCount:30,tickFormat:"MMM d"},"90d":{windowLabel:"the last 90 days",trendLabel:"90d Trend",bucketMs:Jp,bucketCount:90,tickFormat:"MMM d"},all:{windowLabel:"all time",trendLabel:"Trend",bucketMs:Jp,bucketCount:0,tickFormat:"MMM d"}};function Kp(a){return CA[a]}function IA(a,n){return qo(new Date(a),CA[n].tickFormat)}var fs=be(nt(),1);wa.register(Fo,No,Uo,Na,In,wn,Cn,Yr);var em=["#a78bfa","#22d3ee","#ec4899","#4ade80","#fbbf24","#f87171","#60a5fa"],oz={dark:{legendLabel:"#94a3b8",tooltipBackground:"#16161e",tooltipTitle:"#f8fafc",tooltipBody:"#94a3b8",tooltipBorder:"rgba(255, 255, 255, 0.1)",grid:"rgba(255, 255, 255, 0.06)",tick:"#64748b"},light:{legendLabel:"#475569",tooltipBackground:"#ffffff",tooltipTitle:"#0f172a",tooltipBody:"#334155",tooltipBorder:"rgba(15, 23, 42, 0.18)",grid:"rgba(15, 23, 42, 0.08)",tick:"#64748b"}};function MA({modelSeries:a,timeRange:n}){let s=wA.useMemo(()=>nz(a),[a]),l=Mn(),r=oz[l],c=Kp(n),f={labels:s.data.map((p)=>IA(p.timestamp,n)),datasets:s.series.map((p,y)=>({label:p,data:s.data.map((b)=>b[p]??0),borderColor:em[y%em.length],backgroundColor:`${em[y%em.length]}20`,fill:!0,tension:0.4,pointRadius:0,pointHoverRadius:4,borderWidth:2}))},h={responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{legend:{position:"top",align:"start",labels:{color:r.legendLabel,usePointStyle:!0,padding:16,font:{size:12},boxWidth:8}},tooltip:{backgroundColor:r.tooltipBackground,titleColor:r.tooltipTitle,bodyColor:r.tooltipBody,borderColor:r.tooltipBorder,borderWidth:1,padding:12,cornerRadius:8,callbacks:{label:(p)=>{let y=p.dataset.label??"",b=p.parsed.y;return`${y}: ${(b??0).toFixed(1)}%`}}}},scales:{x:{grid:{color:r.grid,drawBorder:!1},ticks:{color:r.tick,font:{size:11}}},y:{grid:{color:r.grid,drawBorder:!1},ticks:{color:r.tick,font:{size:11},callback:(p)=>`${p}%`},min:0,max:100}}};return fs.jsxDEV("div",{className:"surface overflow-hidden",children:[fs.jsxDEV("div",{className:"px-5 py-4 border-b border-[var(--border-subtle)]",children:[fs.jsxDEV("h3",{className:"text-sm font-semibold text-[var(--text-primary)]",children:"Model Preference"},void 0,!1,void 0,this),fs.jsxDEV("p",{className:"text-xs text-[var(--text-muted)] mt-1",children:["Share of requests over ",c.windowLabel]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),fs.jsxDEV("div",{className:"p-5 min-h-[320px]",children:s.data.length===0?fs.jsxDEV("div",{className:"h-full flex items-center justify-center text-[var(--text-muted)] text-sm",children:"No data available"},void 0,!1,void 0,this):fs.jsxDEV("div",{className:"h-[280px]",children:fs.jsxDEV(wo,{data:f,options:h},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function nz(a,n=5){if(a.length===0)return{data:[],series:[]};let s=new Map;for(let x of a){let v=`${x.model}::${x.provider}`,I=s.get(v);if(I)I.total+=x.requests;else s.set(v,{model:x.model,provider:x.provider,total:x.requests})}let r=[...s.entries()].map(([x,v])=>({key:x,...v})).sort((x,v)=>v.total-x.total).slice(0,n),c=new Set(r.map((x)=>x.key)),f=new Map;for(let x of r)f.set(x.model,(f.get(x.model)??0)+1);let h=new Map;for(let x of r){let v=(f.get(x.model)??0)>1;h.set(x.key,v?`${x.model} (${x.provider})`:x.model)}let p=new Map;for(let x of a){let v=`${x.model}::${x.provider}`,I=p.get(x.timestamp)??{timestamp:x.timestamp,total:0};I.total+=x.requests;let M=c.has(v)?h.get(v)??x.model:"Other";I[M]=(I[M]??0)+x.requests,p.set(x.timestamp,I)}let y=r.map((x)=>h.get(x.key)??x.model);if([...p.values()].some((x)=>(x.Other??0)>0))y.push("Other");return{data:[...p.values()].sort((x,v)=>(x.timestamp??0)-(v.timestamp??0)).map((x)=>{let v=x.total??0;for(let I of y)x[I]=v>0?(x[I]??0)/v*100:0;return x}),series:y}}var am=be(ea(),1);var tm=be(nt(),1);wa.register(Fo,No,sd,Na,Uo,In,wn,Cn,Yr);var sz={dark:"rgba(248, 250, 252, 0.7)",light:"rgba(15, 23, 42, 0.6)"};function iz(a){return{id:"costBarLabels",afterDatasetsDraw(n){let{ctx:s}=n;if(!n.data.datasets[0])return;let r=n.getDatasetMeta(0);s.save(),s.font="11px system-ui, sans-serif",s.fillStyle=a,s.textAlign="center",s.textBaseline="bottom";for(let c of r.data){let f=c.$context.parsed.y;if(!f)continue;let h=`$${Math.round(f)}`,{x:p,y}=c.getProps(["x","y"],!0);s.fillText(h,p,y-3)}s.restore()}}}function lz(a){return Op(a,"Cost",{initBucket:()=>({total:0}),accumulate:(n,s)=>{n.total+=s.cost},bucketToValue:(n)=>n.total})}function rz(a){return Ep(a,{rankWeight:(n)=>n.cost,initBucket:()=>({total:0}),accumulate:(n,s)=>{n.total+=s.cost},bucketToValue:(n)=>n.total})}function TA({costSeries:a}){let[n,s]=am.useState(!1),l=Mn(),r=Ap[l],c=am.useMemo(()=>n?rz(a):lz(a),[a,n]),f=_p({chartTheme:r,showLegend:n,defaultLabel:"Cost",formatValue:(b)=>`$${Math.round(b)}`,footer:(b)=>{if(!n||b.length<2)return;let x=b.reduce((v,I)=>v+(I.parsed.y??0),0);return`Total: $${Math.round(x)}`}}),{sharedScaleBase:h,yScale:p}=Dp({chartTheme:r,formatY:(b)=>`$${Math.round(b)}`}),y;if(n){let b={labels:c.labels,datasets:Jr(c,(v)=>Rp(ra[v%ra.length]))};y=tm.jsxDEV(wo,{data:b,options:{responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:f,scales:{x:h,y:p}}},void 0,!1,void 0,this)}else{let b={labels:c.labels,datasets:Jr(c,(I)=>kp(ra[I%ra.length]))},x=iz(sz[l]),v={responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{...f,costBarLabels:{}},scales:{x:{...h,stacked:!0},y:{...p,stacked:!0}},layout:{padding:{top:24}}};y=tm.jsxDEV(Lp,{data:b,options:v,plugins:[x]},void 0,!1,void 0,this)}return tm.jsxDEV(Bp,{title:"Daily Cost",subtitle:"API spending over time",empty:c.labels.length===0,emptyMessage:"No cost data available",byModel:n,onByModelChange:s,children:y},void 0,!1,void 0,this)}var nu=be(nt(),1);function Kx(a){return`$${Math.round(a)}`}function AA({costSeries:a}){let n=a.reduce((p,y)=>p+y.cost,0),s=new Set(a.map((p)=>p.timestamp)).size,l=s>0?n/s:0,r=new Map;for(let p of a)r.set(p.model,(r.get(p.model)??0)+p.cost);let c="",f=0;for(let[p,y]of r)if(y>f)c=p,f=y;let h=[{label:"Total",value:Kx(n)},{label:"Avg / day",value:Kx(l)},{label:"Top model",value:c||"—",sub:c?Kx(f):void 0}];return nu.jsxDEV("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:h.map((p)=>nu.jsxDEV("div",{className:"surface px-4 py-3",children:[nu.jsxDEV("p",{className:"text-xs text-[var(--text-muted)] mb-1",children:p.label},void 0,!1,void 0,this),nu.jsxDEV("p",{className:"text-lg font-semibold text-[var(--text-primary)] truncate",title:p.value,children:p.value},void 0,!1,void 0,this),p.sub&&nu.jsxDEV("p",{className:"text-xs text-[var(--text-muted)] mt-0.5",children:p.sub},void 0,!1,void 0,this)]},p.label,!0,void 0,this))},void 0,!1,void 0,this)}var Ma=be(nt(),1),uz=["overview","requests","errors","models","costs","behavior"],cz=[{label:"1h",value:"1h"},{label:"24h",value:"24h"},{label:"7d",value:"7d"},{label:"30d",value:"30d"},{label:"90d",value:"90d"},{label:"All",value:"all"}];function _A({activeTab:a,onTabChange:n,onSync:s,syncing:l,timeRange:r,onTimeRangeChange:c}){return Ma.jsxDEV("header",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 pb-6 mb-8 border-b border-[var(--border-subtle)]",children:[Ma.jsxDEV("div",{className:"flex items-center gap-3",children:[Ma.jsxDEV("div",{className:"w-10 h-10 rounded-[var(--radius-md)] bg-gradient-to-br from-[var(--accent-pink)] to-[var(--accent-cyan)] flex items-center justify-center shadow-lg",children:Ma.jsxDEV(Ml,{className:"w-5 h-5 text-white"},void 0,!1,void 0,this)},void 0,!1,void 0,this),Ma.jsxDEV("div",{children:[Ma.jsxDEV("h1",{className:"text-xl font-semibold text-[var(--text-primary)]",children:"AI Usage"},void 0,!1,void 0,this),Ma.jsxDEV("p",{className:"text-sm text-[var(--text-muted)]",children:"Statistics & Analytics"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Ma.jsxDEV("div",{className:"flex items-center gap-3",children:[Ma.jsxDEV("div",{className:"flex bg-[var(--bg-surface)] rounded-[var(--radius-md)] p-1 border border-[var(--border-subtle)]",children:uz.map((f)=>Ma.jsxDEV("button",{type:"button",onClick:()=>n(f),className:`tab-btn capitalize ${a===f?"active":""}`,children:f},f,!1,void 0,this))},void 0,!1,void 0,this),Ma.jsxDEV("div",{className:"flex bg-[var(--bg-surface)] rounded-[var(--radius-md)] p-1 border border-[var(--border-subtle)]",children:cz.map((f)=>Ma.jsxDEV("button",{type:"button",onClick:()=>c(f.value),className:`tab-btn ${r===f.value?"active":""}`,title:f.value==="all"?"All time":`Last ${f.label}`,children:f.label},f.value,!1,void 0,this))},void 0,!1,void 0,this),Ma.jsxDEV("button",{type:"button",onClick:s,disabled:l,className:"btn btn-primary",children:[Ma.jsxDEV(bd,{size:16,className:l?"spin":""},void 0,!1,void 0,this),l?"Syncing...":"Sync"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var om=be(ea(),1);var We=be(nt(),1);wa.register(Fo,No,Uo,Na,In,wn,Cn);var DA="2fr 0.9fr 0.9fr 1fr 0.8fr 0.8fr 140px 40px";function RA({models:a,performanceSeries:n,timeRange:s}){let[l,r]=om.useState(null),c=Kp(s),f=om.useMemo(()=>fz(n,c.bucketCount,c.bucketMs),[n,c.bucketCount,c.bucketMs]),h=Mn(),p=Up[h],y=[...a].sort((b,x)=>x.totalInputTokens+x.totalOutputTokens-(b.totalInputTokens+b.totalOutputTokens));return We.jsxDEV(qp,{title:"Model Statistics",children:[We.jsxDEV(Vp,{gridTemplate:DA,columns:[{label:"Model"},{label:"Requests",align:"right"},{label:"Cost",align:"right"},{label:"Tokens",align:"right"},{label:"Tokens/s",align:"right"},{label:"TTFT",align:"right"},{label:c.trendLabel,align:"center"}]},void 0,!1,void 0,this),We.jsxDEV(jp,{children:y.map((b,x)=>{let v=`${b.model}::${b.provider}`,M=f.get(v)?.data??[],D=ra[x%ra.length],w=l===v,z=b.errorRate*100;return We.jsxDEV(Yp,{gridTemplate:DA,isExpanded:w,onToggle:()=>r(w?null:v),cells:[We.jsxDEV(Gp,{model:b.model,provider:b.provider},"name",!1,void 0,this),We.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:b.totalRequests.toLocaleString()},"requests",!1,void 0,this),We.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:["$",b.totalCost.toFixed(2)]},"cost",!0,void 0,this),We.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:(b.totalInputTokens+b.totalOutputTokens).toLocaleString()},"tokens",!1,void 0,this),We.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:b.avgTokensPerSecond?.toFixed(1)??"-"},"tps",!1,void 0,this),We.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:b.avgTtft?`${(b.avgTtft/1000).toFixed(2)}s`:"-"},"ttft",!1,void 0,this)],trendCell:M.length===0?We.jsxDEV(Xp,{},void 0,!1,void 0,this):We.jsxDEV(Fp,{timestamps:M.map((N)=>N.timestamp),values:M.map((N)=>N.avgTokensPerSecond??0),color:D},void 0,!1,void 0,this),expandedContent:We.jsxDEV("div",{className:"grid gap-4",style:{gridTemplateColumns:"200px 1fr"},children:[We.jsxDEV("div",{className:"space-y-4 text-sm",children:[We.jsxDEV("div",{children:[We.jsxDEV("div",{className:"text-[var(--text-primary)] font-medium mb-2",children:"Quality"},void 0,!1,void 0,this),We.jsxDEV("div",{className:"space-y-1 text-[var(--text-secondary)]",children:[We.jsxDEV("div",{className:"flex items-center justify-between",children:[We.jsxDEV("span",{children:"Error rate"},void 0,!1,void 0,this),We.jsxDEV("span",{className:z>5?"text-[var(--accent-red)]":"text-[var(--accent-green)]",children:[z.toFixed(1),"%"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),We.jsxDEV("div",{className:"flex items-center justify-between",children:[We.jsxDEV("span",{children:"Cache rate"},void 0,!1,void 0,this),We.jsxDEV("span",{className:"text-[var(--accent-cyan)]",children:[(b.cacheRate*100).toFixed(1),"%"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),We.jsxDEV("div",{children:[We.jsxDEV("div",{className:"text-[var(--text-primary)] font-medium mb-2",children:"Latency"},void 0,!1,void 0,this),We.jsxDEV("div",{className:"space-y-1 text-[var(--text-secondary)]",children:[We.jsxDEV("div",{className:"flex items-center justify-between",children:[We.jsxDEV("span",{children:"Avg duration"},void 0,!1,void 0,this),We.jsxDEV("span",{className:"font-mono",children:b.avgDuration?`${(b.avgDuration/1000).toFixed(2)}s`:"-"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),We.jsxDEV("div",{className:"flex items-center justify-between",children:[We.jsxDEV("span",{children:"Avg TTFT"},void 0,!1,void 0,this),We.jsxDEV("span",{className:"font-mono",children:b.avgTtft?`${(b.avgTtft/1000).toFixed(2)}s`:"-"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),We.jsxDEV("div",{className:"h-[200px]",children:M.length===0?We.jsxDEV(Wp,{},void 0,!1,void 0,this):We.jsxDEV(dz,{data:M,color:D,chartTheme:p},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},v,!1,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function dz({data:a,color:n,chartTheme:s}){let l={labels:a.map((c)=>qo(new Date(c.timestamp),"MMM d")),datasets:[{label:"TTFT",data:a.map((c)=>c.avgTtftSeconds??null),...ds("#fbbf24"),yAxisID:"y"},{label:"Tokens/s",data:a.map((c)=>c.avgTokensPerSecond??null),...ds(n),yAxisID:"y1"}]},r={responsive:!0,maintainAspectRatio:!1,plugins:Np(s),scales:gA(s)};return We.jsxDEV(wo,{data:l,options:r},void 0,!1,void 0,this)}function fz(a,n,s){let l=a.reduce((x,v)=>Math.max(x,v.timestamp),0),r=l>0?l:Math.floor(Date.now()/s)*s,c=new Set(a.map((x)=>x.timestamp)),f=n>0?n:Math.max(1,c.size),h=r-(f-1)*s,p=Array.from({length:f},(x,v)=>h+v*s),y=new Map(p.map((x,v)=>[x,v])),b=new Map;for(let x of a){let v=`${x.model}::${x.provider}`,I=b.get(v);if(!I)I={label:`${x.model} (${x.provider})`,data:p.map((D)=>({timestamp:D,avgTtftSeconds:null,avgTokensPerSecond:null,requests:0}))},b.set(v,I);let M=y.get(x.timestamp);if(M===void 0)continue;I.data[M]={timestamp:x.timestamp,avgTtftSeconds:x.avgTtft!==null?x.avgTtft/1000:null,avgTokensPerSecond:x.avgTokensPerSecond,requests:x.requests}}return b}var Ld=be(ea(),1);var le=be(nt(),1);function kA({id:a,onClose:n}){let[s,l]=Ld.useState(null),[r,c]=Ld.useState(!0);if(Ld.useEffect(()=>{KI(a).then(l).catch(console.error).finally(()=>c(!1))},[a]),!s&&r)return le.jsxDEV("div",{className:"fixed inset-0 bg-[var(--bg-overlay)] flex justify-center items-center z-[100]",children:le.jsxDEV("div",{className:"surface px-8 py-6",children:le.jsxDEV("div",{className:"flex items-center gap-3 text-[var(--text-secondary)]",children:[le.jsxDEV("div",{className:"w-5 h-5 border-2 border-[var(--border-default)] border-t-[var(--accent-cyan)] rounded-full spin"},void 0,!1,void 0,this),le.jsxDEV("span",{children:"Loading..."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(!s)return null;return le.jsxDEV("div",{role:"presentation",className:"fixed inset-0 bg-[var(--bg-overlay)] backdrop-blur-sm flex justify-end z-[100] animate-fade-in",onClick:n,children:le.jsxDEV("div",{role:"dialog","aria-modal":"true",className:"w-[600px] max-w-full bg-[var(--bg-page)] h-full overflow-y-auto border-l border-[var(--border-subtle)] animate-slide-up",onClick:(f)=>f.stopPropagation(),children:[le.jsxDEV("div",{className:"sticky top-0 bg-[var(--bg-page)]/95 backdrop-blur border-b border-[var(--border-subtle)] px-6 py-4 flex justify-between items-center z-10",children:[le.jsxDEV("div",{className:"flex items-center gap-3",children:[le.jsxDEV("div",{className:"w-8 h-8 rounded-[var(--radius-sm)] bg-gradient-to-br from-[var(--accent-pink)]/20 to-[var(--accent-cyan)]/20 flex items-center justify-center",children:le.jsxDEV(vi,{size:16,className:"text-[var(--accent-cyan)]"},void 0,!1,void 0,this)},void 0,!1,void 0,this),le.jsxDEV("h2",{className:"text-lg font-semibold text-[var(--text-primary)]",children:"Request Details"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("button",{type:"button",onClick:n,className:"p-2 rounded-[var(--radius-sm)] text-[var(--text-muted)] hover:text-[var(--text-primary)] hover:bg-[var(--bg-hover)] transition-colors",children:le.jsxDEV(vd,{size:20},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{className:"p-6 space-y-6",children:[le.jsxDEV("div",{className:"surface p-5",children:le.jsxDEV("div",{className:"flex items-center justify-between mb-4",children:[le.jsxDEV("div",{children:[le.jsxDEV("div",{className:"text-2xl font-bold text-[var(--text-primary)]",children:s.model},void 0,!1,void 0,this),le.jsxDEV("div",{className:"text-sm text-[var(--text-muted)]",children:s.provider},void 0,!1,void 0,this)]},void 0,!0,void 0,this),s.errorMessage?le.jsxDEV("span",{className:"badge badge-error",children:"Error"},void 0,!1,void 0,this):le.jsxDEV("span",{className:"badge badge-success",children:"Success"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),le.jsxDEV("div",{className:"grid grid-cols-2 gap-4",children:[le.jsxDEV("div",{className:"surface p-4",children:[le.jsxDEV("div",{className:"flex items-center gap-2 text-[var(--text-muted)] mb-2",children:[le.jsxDEV(hd,{size:14},void 0,!1,void 0,this),le.jsxDEV("span",{className:"text-xs uppercase tracking-wide",children:"Cost"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{className:"text-xl font-semibold text-[var(--text-primary)]",children:["$",s.usage.cost.total.toFixed(4)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{className:"surface p-4",children:[le.jsxDEV("div",{className:"flex items-center gap-2 text-[var(--text-muted)] mb-2",children:[le.jsxDEV(Tl,{size:14},void 0,!1,void 0,this),le.jsxDEV("span",{className:"text-xs uppercase tracking-wide",children:"Premium Reqs"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{className:"text-xl font-semibold text-[var(--text-primary)]",children:(s.usage.premiumRequests??0).toLocaleString()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{className:"surface p-4",children:[le.jsxDEV("div",{className:"flex items-center gap-2 text-[var(--text-muted)] mb-2",children:[le.jsxDEV(yd,{size:14},void 0,!1,void 0,this),le.jsxDEV("span",{className:"text-xs uppercase tracking-wide",children:"Tokens"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{className:"text-xl font-semibold text-[var(--text-primary)]",children:s.usage.totalTokens.toLocaleString()},void 0,!1,void 0,this),le.jsxDEV("div",{className:"text-xs text-[var(--text-muted)] mt-1",children:[s.usage.input.toLocaleString()," in · ",s.usage.output.toLocaleString()," out"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{className:"surface p-4",children:[le.jsxDEV("div",{className:"flex items-center gap-2 text-[var(--text-muted)] mb-2",children:[le.jsxDEV(fd,{size:14},void 0,!1,void 0,this),le.jsxDEV("span",{className:"text-xs uppercase tracking-wide",children:"Duration"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{className:"text-xl font-semibold text-[var(--text-primary)]",children:s.duration?`${(s.duration/1000).toFixed(2)}s`:"-"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{className:"surface p-4",children:[le.jsxDEV("div",{className:"flex items-center gap-2 text-[var(--text-muted)] mb-2",children:[le.jsxDEV(Al,{size:14},void 0,!1,void 0,this),le.jsxDEV("span",{className:"text-xs uppercase tracking-wide",children:"TTFT"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{className:"text-xl font-semibold text-[var(--text-primary)]",children:s.ttft?`${(s.ttft/1000).toFixed(2)}s`:"-"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),s.duration&&s.usage.output>0&&le.jsxDEV("div",{className:"surface p-4",children:[le.jsxDEV("div",{className:"flex items-center justify-between",children:[le.jsxDEV("div",{className:"flex items-center gap-2 text-[var(--text-muted)]",children:[le.jsxDEV(gd,{size:14},void 0,!1,void 0,this),le.jsxDEV("span",{className:"text-xs uppercase tracking-wide",children:"Throughput"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("span",{className:"text-2xl font-bold gradient-text",children:(s.usage.output*1000/s.duration).toFixed(1)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{className:"text-xs text-[var(--text-muted)] mt-1 text-right",children:"tokens/second"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{children:[le.jsxDEV("h3",{className:"text-sm font-semibold text-[var(--text-primary)] mb-3",children:"Output"},void 0,!1,void 0,this),le.jsxDEV("pre",{className:"surface bg-[var(--bg-elevated)] p-4 rounded-[var(--radius-md)] text-sm font-mono text-[var(--text-secondary)] overflow-x-auto",children:JSON.stringify(s.output,null,2)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{children:[le.jsxDEV("h3",{className:"text-sm font-semibold text-[var(--text-primary)] mb-3",children:"Raw Metadata"},void 0,!1,void 0,this),le.jsxDEV("pre",{className:"surface bg-[var(--bg-elevated)] p-4 rounded-[var(--radius-md)] text-xs font-mono text-[var(--text-muted)] overflow-x-auto",children:JSON.stringify(s,null,2)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var ft=be(nt(),1);function Cd({requests:a,onSelect:n,title:s}){return ft.jsxDEV("div",{className:"surface overflow-hidden flex flex-col h-full",children:[ft.jsxDEV("div",{className:"px-5 py-4 border-b border-[var(--border-subtle)]",children:ft.jsxDEV("h3",{className:"text-sm font-semibold text-[var(--text-primary)]",children:s},void 0,!1,void 0,this)},void 0,!1,void 0,this),ft.jsxDEV("div",{className:"overflow-auto flex-1",children:ft.jsxDEV("table",{className:"w-full",children:[ft.jsxDEV("thead",{className:"bg-[var(--bg-elevated)] sticky top-0 z-10",children:ft.jsxDEV("tr",{children:[ft.jsxDEV("th",{className:"text-left py-3 px-4 table-header",children:"Model"},void 0,!1,void 0,this),ft.jsxDEV("th",{className:"text-left py-3 px-4 table-header",children:"Time"},void 0,!1,void 0,this),ft.jsxDEV("th",{className:"text-right py-3 px-4 table-header",children:"Tokens"},void 0,!1,void 0,this),ft.jsxDEV("th",{className:"text-right py-3 px-4 table-header",children:"Cost"},void 0,!1,void 0,this),ft.jsxDEV("th",{className:"text-right py-3 px-4 table-header",children:"Duration"},void 0,!1,void 0,this),ft.jsxDEV("th",{className:"text-center py-3 px-4 table-header",children:"Status"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),ft.jsxDEV("tbody",{children:[a.map((l)=>ft.jsxDEV("tr",{onClick:()=>n(l),className:"table-row cursor-pointer border-b border-[var(--border-subtle)] last:border-b-0",children:[ft.jsxDEV("td",{className:"py-3 px-4",children:[ft.jsxDEV("div",{className:"font-medium text-[var(--text-primary)] text-sm",children:l.model},void 0,!1,void 0,this),ft.jsxDEV("div",{className:"text-xs text-[var(--text-muted)]",children:l.provider},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ft.jsxDEV("td",{className:"py-3 px-4 text-sm text-[var(--text-secondary)]",children:sA(l.timestamp,{addSuffix:!0})},void 0,!1,void 0,this),ft.jsxDEV("td",{className:"py-3 px-4 text-right text-sm text-[var(--text-secondary)] font-mono",children:l.usage.totalTokens.toLocaleString()},void 0,!1,void 0,this),ft.jsxDEV("td",{className:"py-3 px-4 text-right text-sm text-[var(--text-secondary)] font-mono",children:["$",l.usage.cost.total.toFixed(4)]},void 0,!0,void 0,this),ft.jsxDEV("td",{className:"py-3 px-4 text-right text-sm text-[var(--text-secondary)] font-mono",children:l.duration?`${(l.duration/1000).toFixed(1)}s`:"-"},void 0,!1,void 0,this),ft.jsxDEV("td",{className:"py-3 px-4 text-center",children:l.errorMessage?ft.jsxDEV(Si,{size:16,className:"text-[var(--accent-red)] mx-auto"},void 0,!1,void 0,this):ft.jsxDEV(xi,{size:16,className:"text-[var(--accent-green)] mx-auto"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},`${l.sessionFile}-${l.entryId}`,!0,void 0,this)),a.length===0&&ft.jsxDEV("tr",{children:ft.jsxDEV("td",{colSpan:6,className:"py-12 text-center text-[var(--text-muted)] text-sm",children:"No requests found"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var hs=be(nt(),1),hz=new Intl.NumberFormat(void 0,{notation:"compact",maximumFractionDigits:1});function OA(a){return hz.format(a)}function e0(a){return a.toLocaleString()}var Id=(a)=>a.totalInputTokens+a.totalOutputTokens,pz=[{key:"requests",title:"Total Requests",icon:xd,color:"var(--accent-violet)",getValue:(a)=>a.totalRequests.toLocaleString(),getDetail:(a)=>`${a.successfulRequests.toLocaleString()} success · ${a.failedRequests.toLocaleString()} errors`},{key:"cost",title:"Total Cost",icon:Ml,color:"var(--accent-pink)",getValue:(a)=>`$${a.totalCost.toFixed(2)}`,getDetail:(a)=>a.totalRequests>0?`$${(a.totalCost/a.totalRequests).toFixed(4)} avg/req`:"-"},{key:"premiumRequests",title:"Premium Reqs",icon:Tl,color:"var(--accent-amber)",getValue:(a)=>e0(a.totalPremiumRequests),getDetail:(a)=>a.totalRequests>0?`${(a.totalPremiumRequests/a.totalRequests*100).toFixed(1)}% of requests`:"-"},{key:"cache",title:"Cache Rate",icon:pd,color:"var(--accent-cyan)",getValue:(a)=>`${(a.cacheRate*100).toFixed(1)}%`,getDetail:(a)=>`${OA(a.totalCacheReadTokens)} cached tokens`},{key:"inputTokens",title:"Input Tokens",icon:md,color:"var(--accent-violet)",getValue:(a)=>e0(a.totalInputTokens),getDetail:(a)=>Id(a)>0?`${(a.totalInputTokens/Id(a)*100).toFixed(1)}% of prompt+completion`:"-"},{key:"outputTokens",title:"Output Tokens",icon:Sd,color:"var(--accent-pink)",getValue:(a)=>e0(a.totalOutputTokens),getDetail:(a)=>Id(a)>0?`${(a.totalOutputTokens/Id(a)*100).toFixed(1)}% of prompt+completion`:"-"},{key:"errors",title:"Error Rate",icon:bi,color:"var(--accent-red)",getValue:(a)=>`${(a.errorRate*100).toFixed(1)}%`,getDetail:(a)=>`${a.failedRequests.toLocaleString()} failed requests`},{key:"tokens",title:"Tokens/Sec",icon:yi,color:"var(--accent-green)",getValue:(a)=>a.avgTokensPerSecond?.toFixed(1)??"-",getDetail:(a)=>`${OA(Id(a))} total prompt+completion`},{key:"ttft",title:"TTFT",icon:Al,color:"var(--accent-amber)",getValue:(a)=>a.avgTtft?`${(a.avgTtft/1000).toFixed(2)}s`:"-",getDetail:()=>"Time to first token"}];function EA({stats:a}){return hs.jsxDEV("div",{className:"grid grid-cols-2 lg:grid-cols-3 xl:grid-cols-9 gap-4 mb-8",children:pz.map((n)=>{let s=n.icon;return hs.jsxDEV("div",{className:"stat-card group",children:[hs.jsxDEV("div",{className:"flex items-center justify-between mb-3",children:[hs.jsxDEV("span",{className:"text-sm font-medium text-[var(--text-secondary)]",children:n.title},void 0,!1,void 0,this),hs.jsxDEV("div",{className:"p-2 rounded-[var(--radius-sm)] transition-colors",style:{backgroundColor:`${n.color}15`},children:hs.jsxDEV(s,{size:18,style:{color:n.color},className:"transition-transform group-hover:scale-110"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),hs.jsxDEV("div",{className:"text-2xl font-bold text-[var(--text-primary)] mb-1",children:n.getValue(a)},void 0,!1,void 0,this),hs.jsxDEV("div",{className:"text-xs text-[var(--text-muted)] truncate",children:n.getDetail(a)},void 0,!1,void 0,this)]},n.key,!0,void 0,this)})},void 0,!1,void 0,this)}var qe=be(nt(),1);function t0(){let[a,n]=ua.useState(null),[s,l]=ua.useState(null),[r,c]=ua.useState(null),[f,h]=ua.useState(null),[p,y]=ua.useState([]),[b,x]=ua.useState([]),[v,I]=ua.useState(null),[M,D]=ua.useState(!1),[w,z]=ua.useState("overview"),[N,Q]=ua.useState("24h"),Z=ua.useCallback(async()=>{try{let[V,J]=await Promise.all([ZI(50),JI(50)]);y(V),x(J)}catch(V){console.error(V)}},[]),X=ua.useCallback(async()=>{try{if(w==="models"){l(await $I(N));return}if(w==="costs"){c(await QI(N));return}if(w==="behavior"){h(await tw(N));return}if(w==="overview")n(await WI(N))}catch(V){console.error(V)}},[w,N]),oe=async()=>{D(!0);try{await ew(),await Promise.all([X(),Z()])}finally{D(!1)}};return ua.useEffect(()=>{Z();let V=setInterval(Z,30000);return()=>clearInterval(V)},[Z]),ua.useEffect(()=>{X();let V=setInterval(X,30000);return()=>clearInterval(V)},[X]),qe.jsxDEV("div",{className:"min-h-screen",children:qe.jsxDEV("div",{className:"max-w-[1600px] mx-auto px-6 py-6",children:[qe.jsxDEV(_A,{activeTab:w,onTabChange:z,onSync:oe,syncing:M,timeRange:N,onTimeRangeChange:Q},void 0,!1,void 0,this),w==="overview"&&qe.jsxDEV("div",{className:"space-y-6 animate-fade-in",children:[a?qe.jsxDEV(EA,{stats:a.overall},void 0,!1,void 0,this):qe.jsxDEV(nm,{label:"Loading overview..."},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"grid lg:grid-cols-2 gap-6",children:[qe.jsxDEV(Cd,{title:"Recent Requests",requests:p.slice(0,10),onSelect:(V)=>V.id&&I(V.id)},void 0,!1,void 0,this),qe.jsxDEV(Cd,{title:"Recent Errors",requests:b.slice(0,10),onSelect:(V)=>V.id&&I(V.id)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),w==="requests"&&qe.jsxDEV("div",{className:"h-[calc(100vh-140px)] animate-fade-in",children:qe.jsxDEV(Cd,{title:"All Recent Requests",requests:p,onSelect:(V)=>V.id&&I(V.id)},void 0,!1,void 0,this)},void 0,!1,void 0,this),w==="errors"&&qe.jsxDEV("div",{className:"h-[calc(100vh-140px)] animate-fade-in",children:qe.jsxDEV(Cd,{title:"Failed Requests",requests:b,onSelect:(V)=>V.id&&I(V.id)},void 0,!1,void 0,this)},void 0,!1,void 0,this),w==="models"&&qe.jsxDEV("div",{className:"space-y-6 animate-fade-in",children:s?qe.jsxDEV(qe.Fragment,{children:[qe.jsxDEV(MA,{modelSeries:s.modelSeries,timeRange:N},void 0,!1,void 0,this),qe.jsxDEV(RA,{models:s.byModel,performanceSeries:s.modelPerformanceSeries,timeRange:N},void 0,!1,void 0,this)]},void 0,!0,void 0,this):qe.jsxDEV(nm,{label:"Loading models..."},void 0,!1,void 0,this)},void 0,!1,void 0,this),w==="costs"&&qe.jsxDEV("div",{className:"space-y-6 animate-fade-in",children:r?qe.jsxDEV(qe.Fragment,{children:[qe.jsxDEV(AA,{costSeries:r.costSeries},void 0,!1,void 0,this),qe.jsxDEV(TA,{costSeries:r.costSeries},void 0,!1,void 0,this)]},void 0,!0,void 0,this):qe.jsxDEV(nm,{label:"Loading costs..."},void 0,!1,void 0,this)},void 0,!1,void 0,this),w==="behavior"&&qe.jsxDEV("div",{className:"space-y-6 animate-fade-in",children:f?qe.jsxDEV(qe.Fragment,{children:[qe.jsxDEV(LA,{overall:f.overall,behaviorSeries:f.behaviorSeries},void 0,!1,void 0,this),qe.jsxDEV(uA,{behaviorSeries:f.behaviorSeries},void 0,!1,void 0,this),qe.jsxDEV(SA,{models:f.byModel,behaviorSeries:f.behaviorSeries},void 0,!1,void 0,this)]},void 0,!0,void 0,this):qe.jsxDEV(nm,{label:"Loading behavior..."},void 0,!1,void 0,this)},void 0,!1,void 0,this),v!==null&&qe.jsxDEV(kA,{id:v,onClose:()=>I(null)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function nm({label:a}){return qe.jsxDEV("div",{className:"min-h-[180px] flex items-center justify-center",children:qe.jsxDEV("div",{className:"flex items-center gap-3 text-[var(--text-muted)]",children:[qe.jsxDEV("div",{className:"w-5 h-5 border-2 border-[var(--border-default)] border-t-[var(--accent-cyan)] rounded-full spin"},void 0,!1,void 0,this),qe.jsxDEV("span",{className:"text-sm",children:a},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var PA=be(nt(),1),mz=BA.createRoot(document.getElementById("root"));mz.render(PA.jsxDEV(t0,{},void 0,!1,void 0,this));
|
|
257
|
+
`);return a}function iB(a,n){let{element:s,datasetIndex:l,index:r}=n,c=a.getDatasetMeta(l).controller,{label:f,value:h}=c.getLabelAndValue(r);return{chart:a,label:f,parsed:c.getParsed(r),raw:a.data.datasets[l].data[r],formattedValue:h,dataset:c.getDataset(),dataIndex:r,datasetIndex:l,element:s}}function OM(a,n){let s=a.chart.ctx,{body:l,footer:r,title:c}=a,{boxWidth:f,boxHeight:h}=n,p=jt(n.bodyFont),y=jt(n.titleFont),b=jt(n.footerFont),x=c.length,v=r.length,I=l.length,M=la(n.padding),D=M.height,w=0,z=l.reduce((Z,X)=>Z+X.before.length+X.lines.length+X.after.length,0);if(z+=a.beforeBody.length+a.afterBody.length,x)D+=x*y.lineHeight+(x-1)*n.titleSpacing+n.titleMarginBottom;if(z){let Z=n.displayColors?Math.max(h,p.lineHeight):p.lineHeight;D+=I*Z+(z-I)*p.lineHeight+(z-1)*n.bodySpacing}if(v)D+=n.footerMarginTop+v*b.lineHeight+(v-1)*n.footerSpacing;let N=0,Q=function(Z){w=Math.max(w,s.measureText(Z).width+N)};return s.save(),s.font=y.string,lt(a.title,Q),s.font=p.string,lt(a.beforeBody.concat(a.afterBody),Q),N=n.displayColors?f+2+n.boxPadding:0,lt(l,(Z)=>{lt(Z.before,Q),lt(Z.lines,Q),lt(Z.after,Q)}),N=0,s.font=b.string,lt(a.footer,Q),s.restore(),w+=M.width,{width:w,height:D}}function lB(a,n){let{y:s,height:l}=n;if(s<l/2)return"top";else if(s>a.height-l/2)return"bottom";return"center"}function rB(a,n,s,l){let{x:r,width:c}=l,f=s.caretSize+s.caretPadding;if(a==="left"&&r+c+f>n.width)return!0;if(a==="right"&&r-c-f<0)return!0}function uB(a,n,s,l){let{x:r,width:c}=s,{width:f,chartArea:{left:h,right:p}}=a,y="center";if(l==="center")y=r<=(h+p)/2?"left":"right";else if(r<=c/2)y="left";else if(r>=f-c/2)y="right";if(rB(y,a,n,s))y="center";return y}function EM(a,n,s){let l=s.yAlign||n.yAlign||lB(a,s);return{xAlign:s.xAlign||n.xAlign||uB(a,n,s,l),yAlign:l}}function cB(a,n){let{x:s,width:l}=a;if(n==="right")s-=l;else if(n==="center")s-=l/2;return s}function dB(a,n,s){let{y:l,height:r}=a;if(n==="top")l+=s;else if(n==="bottom")l-=r+s;else l-=r/2;return l}function BM(a,n,s,l){let{caretSize:r,caretPadding:c,cornerRadius:f}=a,{xAlign:h,yAlign:p}=s,y=r+c,{topLeft:b,topRight:x,bottomLeft:v,bottomRight:I}=hi(f),M=cB(n,h),D=dB(n,p,y);if(p==="center"){if(h==="left")M+=y;else if(h==="right")M-=y}else if(h==="left")M-=Math.max(b,v)+r;else if(h==="right")M+=Math.max(x,I)+r;return{x:za(M,0,l.width-n.width),y:za(D,0,l.height-n.height)}}function pp(a,n,s){let l=la(s.padding);return n==="center"?a.x+a.width/2:n==="right"?a.x+a.width-l.right:a.x+l.left}function PM(a){return vn([],ls(a))}function fB(a,n,s){return ss(a,{tooltip:n,tooltipItems:s,type:"tooltip"})}function zM(a,n){let s=n&&n.dataset&&n.dataset.tooltip&&n.dataset.tooltip.callbacks;return s?a.override(s):a}var gT={beforeTitle:Sn,title(a){if(a.length>0){let n=a[0],s=n.chart.data.labels,l=s?s.length:0;if(this&&this.options&&this.options.mode==="dataset")return n.dataset.label||"";else if(n.label)return n.label;else if(l>0&&n.dataIndex<l)return s[n.dataIndex]}return""},afterTitle:Sn,beforeBody:Sn,beforeLabel:Sn,label(a){if(this&&this.options&&this.options.mode==="dataset")return a.label+": "+a.formattedValue||a.formattedValue;let n=a.dataset.label||"";if(n)n+=": ";let s=a.formattedValue;if(!Ke(s))n+=s;return n},labelColor(a){let s=a.chart.getDatasetMeta(a.datasetIndex).controller.getStyle(a.dataIndex);return{borderColor:s.borderColor,backgroundColor:s.backgroundColor,borderWidth:s.borderWidth,borderDash:s.borderDash,borderDashOffset:s.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(a){let s=a.chart.getDatasetMeta(a.datasetIndex).controller.getStyle(a.dataIndex);return{pointStyle:s.pointStyle,rotation:s.rotation}},afterLabel:Sn,afterBody:Sn,beforeFooter:Sn,footer:Sn,afterFooter:Sn};function Ua(a,n,s,l){let r=a[n].call(s,l);if(typeof r>"u")return gT[n].call(s,l);return r}class Bx extends rs{static positioners=ed;constructor(a){super();this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=a.chart,this.options=a.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(a){this.options=a,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){let a=this._cachedAnimations;if(a)return a;let n=this.chart,s=this.options.setContext(this.getContext()),l=s.enabled&&n.options.animation&&s.animations,r=new Hx(this.chart,l);if(l._cacheable)this._cachedAnimations=Object.freeze(r);return r}getContext(){return this.$context||(this.$context=fB(this.chart.getContext(),this,this._tooltipItems))}getTitle(a,n){let{callbacks:s}=n,l=Ua(s,"beforeTitle",this,a),r=Ua(s,"title",this,a),c=Ua(s,"afterTitle",this,a),f=[];return f=vn(f,ls(l)),f=vn(f,ls(r)),f=vn(f,ls(c)),f}getBeforeBody(a,n){return PM(Ua(n.callbacks,"beforeBody",this,a))}getBody(a,n){let{callbacks:s}=n,l=[];return lt(a,(r)=>{let c={before:[],lines:[],after:[]},f=zM(s,r);vn(c.before,ls(Ua(f,"beforeLabel",this,r))),vn(c.lines,Ua(f,"label",this,r)),vn(c.after,ls(Ua(f,"afterLabel",this,r))),l.push(c)}),l}getAfterBody(a,n){return PM(Ua(n.callbacks,"afterBody",this,a))}getFooter(a,n){let{callbacks:s}=n,l=Ua(s,"beforeFooter",this,a),r=Ua(s,"footer",this,a),c=Ua(s,"afterFooter",this,a),f=[];return f=vn(f,ls(l)),f=vn(f,ls(r)),f=vn(f,ls(c)),f}_createItems(a){let n=this._active,s=this.chart.data,l=[],r=[],c=[],f=[],h,p;for(h=0,p=n.length;h<p;++h)f.push(iB(this.chart,n[h]));if(a.filter)f=f.filter((y,b,x)=>a.filter(y,b,x,s));if(a.itemSort)f=f.sort((y,b)=>a.itemSort(y,b,s));return lt(f,(y)=>{let b=zM(a.callbacks,y);l.push(Ua(b,"labelColor",this,y)),r.push(Ua(b,"labelPointStyle",this,y)),c.push(Ua(b,"labelTextColor",this,y))}),this.labelColors=l,this.labelPointStyles=r,this.labelTextColors=c,this.dataPoints=f,f}update(a,n){let s=this.options.setContext(this.getContext()),l=this._active,r,c=[];if(!l.length){if(this.opacity!==0)r={opacity:0}}else{let f=ed[s.position].call(this,l,this._eventPosition);c=this._createItems(s),this.title=this.getTitle(c,s),this.beforeBody=this.getBeforeBody(c,s),this.body=this.getBody(c,s),this.afterBody=this.getAfterBody(c,s),this.footer=this.getFooter(c,s);let h=this._size=OM(this,s),p=Object.assign({},f,h),y=EM(this.chart,s,p),b=BM(s,p,y,this.chart);this.xAlign=y.xAlign,this.yAlign=y.yAlign,r={opacity:1,x:b.x,y:b.y,width:h.width,height:h.height,caretX:f.x,caretY:f.y}}if(this._tooltipItems=c,this.$context=void 0,r)this._resolveAnimations().update(this,r);if(a&&s.external)s.external.call(this,{chart:this.chart,tooltip:this,replay:n})}drawCaret(a,n,s,l){let r=this.getCaretPosition(a,s,l);n.lineTo(r.x1,r.y1),n.lineTo(r.x2,r.y2),n.lineTo(r.x3,r.y3)}getCaretPosition(a,n,s){let{xAlign:l,yAlign:r}=this,{caretSize:c,cornerRadius:f}=s,{topLeft:h,topRight:p,bottomLeft:y,bottomRight:b}=hi(f),{x,y:v}=a,{width:I,height:M}=n,D,w,z,N,Q,Z;if(r==="center"){if(Q=v+M/2,l==="left")D=x,w=D-c,N=Q+c,Z=Q-c;else D=x+I,w=D+c,N=Q-c,Z=Q+c;z=D}else{if(l==="left")w=x+Math.max(h,y)+c;else if(l==="right")w=x+I-Math.max(p,b)-c;else w=this.caretX;if(r==="top")N=v,Q=N-c,D=w-c,z=w+c;else N=v+M,Q=N+c,D=w+c,z=w-c;Z=N}return{x1:D,x2:w,x3:z,y1:N,y2:Q,y3:Z}}drawTitle(a,n,s){let l=this.title,r=l.length,c,f,h;if(r){let p=bl(s.rtl,this.x,this.width);a.x=pp(this,s.titleAlign,s),n.textAlign=p.textAlign(s.titleAlign),n.textBaseline="middle",c=jt(s.titleFont),f=s.titleSpacing,n.fillStyle=s.titleColor,n.font=c.string;for(h=0;h<r;++h)if(n.fillText(l[h],p.x(a.x),a.y+c.lineHeight/2),a.y+=c.lineHeight+f,h+1===r)a.y+=s.titleMarginBottom-f}}_drawColorBox(a,n,s,l,r){let c=this.labelColors[s],f=this.labelPointStyles[s],{boxHeight:h,boxWidth:p}=r,y=jt(r.bodyFont),b=pp(this,"left",r),x=l.x(b),v=h<y.lineHeight?(y.lineHeight-h)/2:0,I=n.y+v;if(r.usePointStyle){let M={radius:Math.min(p,h)/2,pointStyle:f.pointStyle,rotation:f.rotation,borderWidth:1},D=l.leftForLtr(x,p)+p/2,w=I+h/2;a.strokeStyle=r.multiKeyBackground,a.fillStyle=r.multiKeyBackground,ip(a,M,D,w),a.strokeStyle=c.borderColor,a.fillStyle=c.backgroundColor,ip(a,M,D,w)}else{a.lineWidth=$e(c.borderWidth)?Math.max(...Object.values(c.borderWidth)):c.borderWidth||1,a.strokeStyle=c.borderColor,a.setLineDash(c.borderDash||[]),a.lineDashOffset=c.borderDashOffset||0;let M=l.leftForLtr(x,p),D=l.leftForLtr(l.xPlus(x,1),p-2),w=hi(c.borderRadius);if(Object.values(w).some((z)=>z!==0))a.beginPath(),a.fillStyle=r.multiKeyBackground,Gr(a,{x:M,y:I,w:p,h,radius:w}),a.fill(),a.stroke(),a.fillStyle=c.backgroundColor,a.beginPath(),Gr(a,{x:D,y:I+1,w:p-2,h:h-2,radius:w}),a.fill();else a.fillStyle=r.multiKeyBackground,a.fillRect(M,I,p,h),a.strokeRect(M,I,p,h),a.fillStyle=c.backgroundColor,a.fillRect(D,I+1,p-2,h-2)}a.fillStyle=this.labelTextColors[s]}drawBody(a,n,s){let{body:l}=this,{bodySpacing:r,bodyAlign:c,displayColors:f,boxHeight:h,boxWidth:p,boxPadding:y}=s,b=jt(s.bodyFont),x=b.lineHeight,v=0,I=bl(s.rtl,this.x,this.width),M=function(V){n.fillText(V,I.x(a.x+v),a.y+x/2),a.y+=x+r},D=I.textAlign(c),w,z,N,Q,Z,X,oe;n.textAlign=c,n.textBaseline="middle",n.font=b.string,a.x=pp(this,D,s),n.fillStyle=s.bodyColor,lt(this.beforeBody,M),v=f&&D!=="right"?c==="center"?p/2+y:p+2+y:0;for(Q=0,X=l.length;Q<X;++Q){if(w=l[Q],z=this.labelTextColors[Q],n.fillStyle=z,lt(w.before,M),N=w.lines,f&&N.length)this._drawColorBox(n,a,Q,I,s),x=Math.max(b.lineHeight,h);for(Z=0,oe=N.length;Z<oe;++Z)M(N[Z]),x=b.lineHeight;lt(w.after,M)}v=0,x=b.lineHeight,lt(this.afterBody,M),a.y-=r}drawFooter(a,n,s){let l=this.footer,r=l.length,c,f;if(r){let h=bl(s.rtl,this.x,this.width);a.x=pp(this,s.footerAlign,s),a.y+=s.footerMarginTop,n.textAlign=h.textAlign(s.footerAlign),n.textBaseline="middle",c=jt(s.footerFont),n.fillStyle=s.footerColor,n.font=c.string;for(f=0;f<r;++f)n.fillText(l[f],h.x(a.x),a.y+c.lineHeight/2),a.y+=c.lineHeight+s.footerSpacing}}drawBackground(a,n,s,l){let{xAlign:r,yAlign:c}=this,{x:f,y:h}=a,{width:p,height:y}=s,{topLeft:b,topRight:x,bottomLeft:v,bottomRight:I}=hi(l.cornerRadius);if(n.fillStyle=l.backgroundColor,n.strokeStyle=l.borderColor,n.lineWidth=l.borderWidth,n.beginPath(),n.moveTo(f+b,h),c==="top")this.drawCaret(a,n,s,l);if(n.lineTo(f+p-x,h),n.quadraticCurveTo(f+p,h,f+p,h+x),c==="center"&&r==="right")this.drawCaret(a,n,s,l);if(n.lineTo(f+p,h+y-I),n.quadraticCurveTo(f+p,h+y,f+p-I,h+y),c==="bottom")this.drawCaret(a,n,s,l);if(n.lineTo(f+v,h+y),n.quadraticCurveTo(f,h+y,f,h+y-v),c==="center"&&r==="left")this.drawCaret(a,n,s,l);if(n.lineTo(f,h+b),n.quadraticCurveTo(f,h,f+b,h),n.closePath(),n.fill(),l.borderWidth>0)n.stroke()}_updateAnimationTarget(a){let n=this.chart,s=this.$animations,l=s&&s.x,r=s&&s.y;if(l||r){let c=ed[a.position].call(this,this._active,this._eventPosition);if(!c)return;let f=this._size=OM(this,a),h=Object.assign({},c,this._size),p=EM(n,a,h),y=BM(a,h,p,n);if(l._to!==y.x||r._to!==y.y)this.xAlign=p.xAlign,this.yAlign=p.yAlign,this.width=f.width,this.height=f.height,this.caretX=c.x,this.caretY=c.y,this._resolveAnimations().update(this,y)}}_willRender(){return!!this.opacity}draw(a){let n=this.options.setContext(this.getContext()),s=this.opacity;if(!s)return;this._updateAnimationTarget(n);let l={width:this.width,height:this.height},r={x:this.x,y:this.y};s=Math.abs(s)<0.001?0:s;let c=la(n.padding),f=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;if(n.enabled&&f)a.save(),a.globalAlpha=s,this.drawBackground(r,a,l,n),px(a,n.textDirection),r.y+=c.top,this.drawTitle(r,a,n),this.drawBody(r,a,n),this.drawFooter(r,a,n),mx(a,n.textDirection),a.restore()}getActiveElements(){return this._active||[]}setActiveElements(a,n){let s=this._active,l=a.map(({datasetIndex:f,index:h})=>{let p=this.chart.getDatasetMeta(f);if(!p)throw Error("Cannot find a dataset at index "+f);return{datasetIndex:f,element:p.data[h],index:h}}),r=!qc(s,l),c=this._positionChanged(l,n);if(r||c)this._active=l,this._eventPosition=n,this._ignoreReplayEvents=!0,this.update(!0)}handleEvent(a,n,s=!0){if(n&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;let l=this.options,r=this._active||[],c=this._getActiveElements(a,r,n,s),f=this._positionChanged(c,a),h=n||!qc(c,r)||f;if(h){if(this._active=c,l.enabled||l.external)this._eventPosition={x:a.x,y:a.y},this.update(!0,n)}return h}_getActiveElements(a,n,s,l){let r=this.options;if(a.type==="mouseout")return[];if(!l)return n.filter((f)=>this.chart.data.datasets[f.datasetIndex]&&this.chart.getDatasetMeta(f.datasetIndex).controller.getParsed(f.index)!==void 0);let c=this.chart.getElementsAtEventForMode(a,r.mode,r,s);if(r.reverse)c.reverse();return c}_positionChanged(a,n){let{caretX:s,caretY:l,options:r}=this,c=ed[r.position].call(this,a,n);return c!==!1&&(s!==c.x||l!==c.y)}}var wn={id:"tooltip",_element:Bx,positioners:ed,afterInit(a,n,s){if(s)a.tooltip=new Bx({chart:a,options:s})},beforeUpdate(a,n,s){if(a.tooltip)a.tooltip.initialize(s)},reset(a,n,s){if(a.tooltip)a.tooltip.initialize(s)},afterDraw(a){let n=a.tooltip;if(n&&n._willRender()){let s={tooltip:n};if(a.notifyPlugins("beforeTooltipDraw",{...s,cancelable:!0})===!1)return;n.draw(a.ctx),a.notifyPlugins("afterTooltipDraw",s)}},afterEvent(a,n){if(a.tooltip){let s=n.replay;if(a.tooltip.handleEvent(n.event,s,n.inChartArea))n.changed=!0}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(a,n)=>n.bodyFont.size,boxWidth:(a,n)=>n.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:gT},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:(a)=>a!=="filter"&&a!=="itemSort"&&a!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};var hB=(a,n,s,l)=>{if(typeof n==="string")s=a.push(n)-1,l.unshift({index:s,label:n});else if(isNaN(n))s=null;return s};function pB(a,n,s,l){let r=a.indexOf(n);if(r===-1)return hB(a,n,s,l);let c=a.lastIndexOf(n);return r!==c?s:r}var mB=(a,n)=>a===null?null:za(Math.round(a),0,n);function HM(a){let n=this.getLabels();if(a>=0&&a<n.length)return n[a];return a}class Fo extends vl{static id="category";static defaults={ticks:{callback:HM}};constructor(a){super(a);this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(a){let n=this._addedLabels;if(n.length){let s=this.getLabels();for(let{index:l,label:r}of n)if(s[l]===r)s.splice(l,1);this._addedLabels=[]}super.init(a)}parse(a,n){if(Ke(a))return null;let s=this.getLabels();return n=isFinite(n)&&s[n]===a?n:pB(s,a,Ue(n,a),this._addedLabels),mB(n,s.length-1)}determineDataLimits(){let{minDefined:a,maxDefined:n}=this.getUserBounds(),{min:s,max:l}=this.getMinMax(!0);if(this.options.bounds==="ticks"){if(!a)s=0;if(!n)l=this.getLabels().length-1}this.min=s,this.max=l}buildTicks(){let a=this.min,n=this.max,s=this.options.offset,l=[],r=this.getLabels();r=a===0&&n===r.length-1?r:r.slice(a,n+1),this._valueRange=Math.max(r.length-(s?0:1),1),this._startValue=this.min-(s?0.5:0);for(let c=a;c<=n;c++)l.push({value:c});return l}getLabelForValue(a){return HM.call(this,a)}configure(){if(super.configure(),!this.isHorizontal())this._reversePixels=!this._reversePixels}getPixelForValue(a){if(typeof a!=="number")a=this.parse(a);return a===null?NaN:this.getPixelForDecimal((a-this._startValue)/this._valueRange)}getPixelForTick(a){let n=this.ticks;if(a<0||a>n.length-1)return null;return this.getPixelForValue(n[a].value)}getValueForPixel(a){return Math.round(this._startValue+this.getDecimalForPixel(a)*this._valueRange)}getBasePixel(){return this.bottom}}function gB(a,n){let s=[],l=0.00000000000001,{bounds:r,step:c,min:f,max:h,precision:p,count:y,maxTicks:b,maxDigits:x,includeBounds:v}=a,I=c||1,M=b-1,{min:D,max:w}=n,z=!Ke(f),N=!Ke(h),Q=!Ke(y),Z=(w-D)/(x+1),X=$b((w-D)/M/I)*I,oe,V,J,re;if(X<0.00000000000001&&!z&&!N)return[{value:D},{value:w}];if(re=Math.ceil(w/X)-Math.floor(D/X),re>M)X=$b(re*X/M/I)*I;if(!Ke(p))oe=Math.pow(10,p),X=Math.ceil(X*oe)/oe;if(r==="ticks")V=Math.floor(D/X)*X,J=Math.ceil(w/X)*X;else V=D,J=w;if(z&&N&&c&&Iw((h-f)/c,X/1000))re=Math.round(Math.min((h-f)/X,b)),X=(h-f)/re,V=f,J=h;else if(Q)V=z?f:V,J=N?h:J,re=y-1,X=(J-V)/re;else if(re=(J-V)/X,Vr(re,Math.round(re),X/1000))re=Math.round(re);else re=Math.ceil(re);let q=Math.max(Zb(X),Zb(V));oe=Math.pow(10,Ke(p)?q:p),V=Math.round(V*oe)/oe,J=Math.round(J*oe)/oe;let ce=0;if(z){if(v&&V!==f){if(s.push({value:f}),V<f)ce++;if(Vr(Math.round((V+ce*X)*oe)/oe,f,UM(f,Z,a)))ce++}else if(V<f)ce++}for(;ce<re;++ce){let ye=Math.round((V+ce*X)*oe)/oe;if(N&&ye>h)break;s.push({value:ye})}if(N&&v&&J!==h)if(s.length&&Vr(s[s.length-1].value,h,UM(h,Z,a)))s[s.length-1].value=h;else s.push({value:h});else if(!N||J===h)s.push({value:J});return s}function UM(a,n,{horizontal:s,minRotation:l}){let r=os(l),c=(s?Math.sin(r):Math.cos(r))||0.001,f=0.75*n*(""+a).length;return Math.min(n/c,f)}class ad extends vl{constructor(a){super(a);this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(a,n){if(Ke(a))return null;if((typeof a==="number"||a instanceof Number)&&!isFinite(+a))return null;return+a}handleTickRangeOptions(){let{beginAtZero:a}=this.options,{minDefined:n,maxDefined:s}=this.getUserBounds(),{min:l,max:r}=this,c=(h)=>l=n?l:h,f=(h)=>r=s?r:h;if(a){let h=Ho(l),p=Ho(r);if(h<0&&p<0)f(0);else if(h>0&&p>0)c(0)}if(l===r){let h=r===0?1:Math.abs(r*0.05);if(f(r+h),!a)c(l-h)}this.min=l,this.max=r}getTickLimit(){let a=this.options.ticks,{maxTicksLimit:n,stepSize:s}=a,l;if(s){if(l=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,l>1000)console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${l} ticks. Limiting to 1000.`),l=1000}else l=this.computeTickLimit(),n=n||11;if(n)l=Math.min(n,l);return l}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){let a=this.options,n=a.ticks,s=this.getTickLimit();s=Math.max(2,s);let l={maxTicks:s,bounds:a.bounds,min:a.min,max:a.max,precision:n.precision,step:n.stepSize,count:n.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:n.minRotation||0,includeBounds:n.includeBounds!==!1},r=this._range||this,c=gB(l,r);if(a.bounds==="ticks")Qb(c,this,"value");if(a.reverse)c.reverse(),this.start=this.max,this.end=this.min;else this.start=this.min,this.end=this.max;return c}configure(){let a=this.ticks,n=this.min,s=this.max;if(super.configure(),this.options.offset&&a.length){let l=(s-n)/Math.max(a.length-1,1)/2;n-=l,s+=l}this._startValue=n,this._endValue=s,this._valueRange=s-n}getLabelForValue(a){return np(a,this.chart.options.locale,this.options.ticks.format)}}class No extends ad{static id="linear";static defaults={ticks:{callback:Vc.formatters.numeric}};determineDataLimits(){let{min:a,max:n}=this.getMinMax(!0);this.min=At(a)?a:0,this.max=At(n)?n:1,this.handleTickRangeOptions()}computeTickLimit(){let a=this.isHorizontal(),n=a?this.width:this.height,s=os(this.options.ticks.minRotation),l=(a?Math.sin(s):Math.cos(s))||0.001,r=this._resolveTickFontOptions(0);return Math.ceil(n/Math.min(40,r.lineHeight/l))}getPixelForValue(a){return a===null?NaN:this.getPixelForDecimal((a-this._startValue)/this._valueRange)}getValueForPixel(a){return this._startValue+this.getDecimalForPixel(a)*this._valueRange}}var od=(a)=>Math.floor(as(a)),Sl=(a,n)=>Math.pow(10,od(a)+n);function FM(a){return a/Math.pow(10,od(a))===1}function NM(a,n,s){let l=Math.pow(10,s),r=Math.floor(a/l);return Math.ceil(n/l)-r}function yB(a,n){let s=n-a,l=od(s);while(NM(a,n,l)>10)l++;while(NM(a,n,l)<10)l--;return Math.min(l,od(a))}function bB(a,{min:n,max:s}){n=Ha(a.min,n);let l=[],r=od(n),c=yB(n,s),f=c<0?Math.pow(10,Math.abs(c)):1,h=Math.pow(10,c),p=r>c?Math.pow(10,r):0,y=Math.round((n-p)*f)/f,b=Math.floor((n-p)/h/10)*h*10,x=Math.floor((y-b)/Math.pow(10,c)),v=Ha(a.min,Math.round((p+b+x*Math.pow(10,c))*f)/f);while(v<s){if(l.push({value:v,major:FM(v),significand:x}),x>=10)x=x<15?15:20;else x++;if(x>=20)c++,x=2,f=c>=0?1:f;v=Math.round((p+b+x*Math.pow(10,c))*f)/f}let I=Ha(a.max,v);return l.push({value:I,major:FM(I),significand:x}),l}class xB extends vl{static id="logarithmic";static defaults={ticks:{callback:Vc.formatters.logarithmic,major:{enabled:!0}}};constructor(a){super(a);this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(a,n){let s=ad.prototype.parse.apply(this,[a,n]);if(s===0){this._zero=!0;return}return At(s)&&s>0?s:null}determineDataLimits(){let{min:a,max:n}=this.getMinMax(!0);if(this.min=At(a)?Math.max(0,a):null,this.max=At(n)?Math.max(0,n):null,this.options.beginAtZero)this._zero=!0;if(this._zero&&this.min!==this._suggestedMin&&!At(this._userMin))this.min=a===Sl(this.min,0)?Sl(this.min,-1):Sl(this.min,0);this.handleTickRangeOptions()}handleTickRangeOptions(){let{minDefined:a,maxDefined:n}=this.getUserBounds(),s=this.min,l=this.max,r=(f)=>s=a?s:f,c=(f)=>l=n?l:f;if(s===l)if(s<=0)r(1),c(10);else r(Sl(s,-1)),c(Sl(l,1));if(s<=0)r(Sl(l,-1));if(l<=0)c(Sl(s,1));this.min=s,this.max=l}buildTicks(){let a=this.options,n={min:this._userMin,max:this._userMax},s=bB(n,this);if(a.bounds==="ticks")Qb(s,this,"value");if(a.reverse)s.reverse(),this.start=this.max,this.end=this.min;else this.start=this.min,this.end=this.max;return s}getLabelForValue(a){return a===void 0?"0":np(a,this.chart.options.locale,this.options.ticks.format)}configure(){let a=this.min;super.configure(),this._startValue=as(a),this._valueRange=as(this.max)-as(a)}getPixelForValue(a){if(a===void 0||a===0)a=this.min;if(a===null||isNaN(a))return NaN;return this.getPixelForDecimal(a===this.min?0:(as(a)-this._startValue)/this._valueRange)}getValueForPixel(a){let n=this.getDecimalForPixel(a);return Math.pow(10,this._startValue+n*this._valueRange)}}function Px(a){let n=a.ticks;if(n.display&&a.display){let s=la(n.backdropPadding);return Ue(n.font&&n.font.size,_t.font.size)+s.height}return 0}function SB(a,n,s){return s=St(s)?s:[s],{w:zw(a,n.string,s),h:s.length*n.lineHeight}}function qM(a,n,s,l,r){if(a===l||a===r)return{start:n-s/2,end:n+s/2};else if(a<l||a>r)return{start:n-s,end:n};return{start:n,end:n+s}}function vB(a){let n={l:a.left+a._padding.left,r:a.right-a._padding.right,t:a.top+a._padding.top,b:a.bottom-a._padding.bottom},s=Object.assign({},n),l=[],r=[],c=a._pointLabels.length,f=a.options.pointLabels,h=f.centerPointLabels?Bt/c:0;for(let p=0;p<c;p++){let y=f.setContext(a.getPointLabelContext(p));r[p]=y.padding;let b=a.getPointPosition(p,a.drawingArea+r[p],h),x=jt(y.font),v=SB(a.ctx,x,a._pointLabels[p]);l[p]=v;let I=Ea(a.getIndexAngle(p)+h),M=Math.round(tp(I)),D=qM(M,b.x,v.w,0,180),w=qM(M,b.y,v.h,90,270);LB(s,n,I,D,w)}a.setCenterPoint(n.l-s.l,s.r-n.r,n.t-s.t,s.b-n.b),a._pointLabelItems=wB(a,l,r)}function LB(a,n,s,l,r){let c=Math.abs(Math.sin(s)),f=Math.abs(Math.cos(s)),h=0,p=0;if(l.start<n.l)h=(n.l-l.start)/c,a.l=Math.min(a.l,n.l-h);else if(l.end>n.r)h=(l.end-n.r)/c,a.r=Math.max(a.r,n.r+h);if(r.start<n.t)p=(n.t-r.start)/f,a.t=Math.min(a.t,n.t-p);else if(r.end>n.b)p=(r.end-n.b)/f,a.b=Math.max(a.b,n.b+p)}function CB(a,n,s){let l=a.drawingArea,{extra:r,additionalAngle:c,padding:f,size:h}=s,p=a.getPointPosition(n,l+r+f,c),y=Math.round(tp(Ea(p.angle+Ba))),b=AB(p.y,h.h,y),x=MB(y),v=TB(p.x,h.w,x);return{visible:!0,x:p.x,y:b,textAlign:x,left:v,top:b,right:v+h.w,bottom:b+h.h}}function IB(a,n){if(!n)return!0;let{left:s,top:l,right:r,bottom:c}=a;return!(xn({x:s,y:l},n)||xn({x:s,y:c},n)||xn({x:r,y:l},n)||xn({x:r,y:c},n))}function wB(a,n,s){let l=[],r=a._pointLabels.length,c=a.options,{centerPointLabels:f,display:h}=c.pointLabels,p={extra:Px(c)/2,additionalAngle:f?Bt/r:0},y;for(let b=0;b<r;b++){p.padding=s[b],p.size=n[b];let x=CB(a,b,p);if(l.push(x),h==="auto"){if(x.visible=IB(x,y),x.visible)y=x}}return l}function MB(a){if(a===0||a===180)return"center";else if(a<180)return"left";return"right"}function TB(a,n,s){if(s==="right")a-=n;else if(s==="center")a-=n/2;return a}function AB(a,n,s){if(s===90||s===270)a-=n/2;else if(s>270||s<90)a-=n;return a}function _B(a,n,s){let{left:l,top:r,right:c,bottom:f}=s,{backdropColor:h}=n;if(!Ke(h)){let p=hi(n.borderRadius),y=la(n.backdropPadding);a.fillStyle=h;let b=l-y.left,x=r-y.top,v=c-l+y.width,I=f-r+y.height;if(Object.values(p).some((M)=>M!==0))a.beginPath(),Gr(a,{x:b,y:x,w:v,h:I,radius:p}),a.fill();else a.fillRect(b,x,v,I)}}function DB(a,n){let{ctx:s,options:{pointLabels:l}}=a;for(let r=n-1;r>=0;r--){let c=a._pointLabelItems[r];if(!c.visible)continue;let f=l.setContext(a.getPointLabelContext(r));_B(s,f,c);let h=jt(f.font),{x:p,y,textAlign:b}=c;fi(s,a._pointLabels[r],p,y+h.lineHeight/2,h,{color:f.color,textAlign:b,textBaseline:"middle"})}}function yT(a,n,s,l){let{ctx:r}=a;if(s)r.arc(a.xCenter,a.yCenter,n,0,Pa);else{let c=a.getPointPosition(0,n);r.moveTo(c.x,c.y);for(let f=1;f<l;f++)c=a.getPointPosition(f,n),r.lineTo(c.x,c.y)}}function RB(a,n,s,l,r){let c=a.ctx,f=n.circular,{color:h,lineWidth:p}=n;if(!f&&!l||!h||!p||s<0)return;c.save(),c.strokeStyle=h,c.lineWidth=p,c.setLineDash(r.dash||[]),c.lineDashOffset=r.dashOffset,c.beginPath(),yT(a,s,f,l),c.closePath(),c.stroke(),c.restore()}function kB(a,n,s){return ss(a,{label:s,index:n,type:"pointLabel"})}class OB extends ad{static id="radialLinear";static defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:Vc.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(a){return a},padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(a){super(a);this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){let a=this._padding=la(Px(this.options)/2),n=this.width=this.maxWidth-a.width,s=this.height=this.maxHeight-a.height;this.xCenter=Math.floor(this.left+n/2+a.left),this.yCenter=Math.floor(this.top+s/2+a.top),this.drawingArea=Math.floor(Math.min(n,s)/2)}determineDataLimits(){let{min:a,max:n}=this.getMinMax(!1);this.min=At(a)&&!isNaN(a)?a:0,this.max=At(n)&&!isNaN(n)?n:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/Px(this.options))}generateTickLabels(a){ad.prototype.generateTickLabels.call(this,a),this._pointLabels=this.getLabels().map((n,s)=>{let l=gt(this.options.pointLabels.callback,[n,s],this);return l||l===0?l:""}).filter((n,s)=>this.chart.getDataVisibility(s))}fit(){let a=this.options;if(a.display&&a.pointLabels.display)vB(this);else this.setCenterPoint(0,0,0,0)}setCenterPoint(a,n,s,l){this.xCenter+=Math.floor((a-n)/2),this.yCenter+=Math.floor((s-l)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(a,n,s,l))}getIndexAngle(a){let n=Pa/(this._pointLabels.length||1),s=this.options.startAngle||0;return Ea(a*n+os(s))}getDistanceFromCenterForValue(a){if(Ke(a))return NaN;let n=this.drawingArea/(this.max-this.min);if(this.options.reverse)return(this.max-a)*n;return(a-this.min)*n}getValueForDistanceFromCenter(a){if(Ke(a))return NaN;let n=a/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-n:this.min+n}getPointLabelContext(a){let n=this._pointLabels||[];if(a>=0&&a<n.length){let s=n[a];return kB(this.getContext(),a,s)}}getPointPosition(a,n,s=0){let l=this.getIndexAngle(a)-Ba+s;return{x:Math.cos(l)*n+this.xCenter,y:Math.sin(l)*n+this.yCenter,angle:l}}getPointPositionForValue(a,n){return this.getPointPosition(a,this.getDistanceFromCenterForValue(n))}getBasePosition(a){return this.getPointPositionForValue(a||0,this.getBaseValue())}getPointLabelPosition(a){let{left:n,top:s,right:l,bottom:r}=this._pointLabelItems[a];return{left:n,top:s,right:l,bottom:r}}drawBackground(){let{backgroundColor:a,grid:{circular:n}}=this.options;if(a){let s=this.ctx;s.save(),s.beginPath(),yT(this,this.getDistanceFromCenterForValue(this._endValue),n,this._pointLabels.length),s.closePath(),s.fillStyle=a,s.fill(),s.restore()}}drawGrid(){let a=this.ctx,n=this.options,{angleLines:s,grid:l,border:r}=n,c=this._pointLabels.length,f,h,p;if(n.pointLabels.display)DB(this,c);if(l.display)this.ticks.forEach((y,b)=>{if(b!==0||b===0&&this.min<0){h=this.getDistanceFromCenterForValue(y.value);let x=this.getContext(b),v=l.setContext(x),I=r.setContext(x);RB(this,v,h,c,I)}});if(s.display){a.save();for(f=c-1;f>=0;f--){let y=s.setContext(this.getPointLabelContext(f)),{color:b,lineWidth:x}=y;if(!x||!b)continue;a.lineWidth=x,a.strokeStyle=b,a.setLineDash(y.borderDash),a.lineDashOffset=y.borderDashOffset,h=this.getDistanceFromCenterForValue(n.reverse?this.min:this.max),p=this.getPointPosition(f,h),a.beginPath(),a.moveTo(this.xCenter,this.yCenter),a.lineTo(p.x,p.y),a.stroke()}a.restore()}}drawBorder(){}drawLabels(){let a=this.ctx,n=this.options,s=n.ticks;if(!s.display)return;let l=this.getIndexAngle(0),r,c;a.save(),a.translate(this.xCenter,this.yCenter),a.rotate(l),a.textAlign="center",a.textBaseline="middle",this.ticks.forEach((f,h)=>{if(h===0&&this.min>=0&&!n.reverse)return;let p=s.setContext(this.getContext(h)),y=jt(p.font);if(r=this.getDistanceFromCenterForValue(this.ticks[h].value),p.showLabelBackdrop){a.font=y.string,c=a.measureText(f.label).width,a.fillStyle=p.backdropColor;let b=la(p.backdropPadding);a.fillRect(-c/2-b.left,-r-y.size/2-b.top,c+b.width,y.size+b.height)}fi(a,f.label,0,-r,y,{color:p.color,strokeColor:p.textStrokeColor,strokeWidth:p.textStrokeWidth})}),a.restore()}drawTitle(){}}var vp={millisecond:{common:!0,size:1,steps:1000},second:{common:!0,size:1000,steps:60},minute:{common:!0,size:60000,steps:60},hour:{common:!0,size:3600000,steps:24},day:{common:!0,size:86400000,steps:30},week:{common:!1,size:604800000,steps:4},month:{common:!0,size:2628000000,steps:12},quarter:{common:!1,size:7884000000,steps:4},year:{common:!0,size:31540000000}},Fa=Object.keys(vp);function VM(a,n){return a-n}function jM(a,n){if(Ke(n))return null;let s=a._adapter,{parser:l,round:r,isoWeekday:c}=a._parseOpts,f=n;if(typeof l==="function")f=l(f);if(!At(f))f=typeof l==="string"?s.parse(f,l):s.parse(f);if(f===null)return null;if(r)f=r==="week"&&(jr(c)||c===!0)?s.startOf(f,"isoWeek",c):s.startOf(f,r);return+f}function GM(a,n,s,l){let r=Fa.length;for(let c=Fa.indexOf(a);c<r-1;++c){let f=vp[Fa[c]],h=f.steps?f.steps:Number.MAX_SAFE_INTEGER;if(f.common&&Math.ceil((s-n)/(h*f.size))<=l)return Fa[c]}return Fa[r-1]}function EB(a,n,s,l,r){for(let c=Fa.length-1;c>=Fa.indexOf(s);c--){let f=Fa[c];if(vp[f].common&&a._adapter.diff(r,l,f)>=n-1)return f}return Fa[s?Fa.indexOf(s):0]}function BB(a){for(let n=Fa.indexOf(a)+1,s=Fa.length;n<s;++n)if(vp[Fa[n]].common)return Fa[n]}function YM(a,n,s){if(!s)a[n]=!0;else if(s.length){let{lo:l,hi:r}=ap(s,n),c=s[l]>=n?s[l]:s[r];a[c]=!0}}function PB(a,n,s,l){let r=a._adapter,c=+r.startOf(n[0].value,l),f=n[n.length-1].value,h,p;for(h=c;h<=f;h=+r.add(h,1,l))if(p=s[h],p>=0)n[p].major=!0;return n}function XM(a,n,s){let l=[],r={},c=n.length,f,h;for(f=0;f<c;++f)h=n[f],r[h]=f,l.push({value:h,major:!1});return c===0||!s?l:PB(a,l,r,s)}class zx extends vl{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(a){super(a);this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(a,n={}){let s=a.time||(a.time={}),l=this._adapter=new yO._date(a.adapters.date);l.init(n),Nr(s.displayFormats,l.formats()),this._parseOpts={parser:s.parser,round:s.round,isoWeekday:s.isoWeekday},super.init(a),this._normalized=n.normalized}parse(a,n){if(a===void 0)return null;return jM(this,a)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){let a=this.options,n=this._adapter,s=a.time.unit||"day",{min:l,max:r,minDefined:c,maxDefined:f}=this.getUserBounds();function h(p){if(!c&&!isNaN(p.min))l=Math.min(l,p.min);if(!f&&!isNaN(p.max))r=Math.max(r,p.max)}if(!c||!f){if(h(this._getLabelBounds()),a.bounds!=="ticks"||a.ticks.source!=="labels")h(this.getMinMax(!1))}l=At(l)&&!isNaN(l)?l:+n.startOf(Date.now(),s),r=At(r)&&!isNaN(r)?r:+n.endOf(Date.now(),s)+1,this.min=Math.min(l,r-1),this.max=Math.max(l+1,r)}_getLabelBounds(){let a=this.getLabelTimestamps(),n=Number.POSITIVE_INFINITY,s=Number.NEGATIVE_INFINITY;if(a.length)n=a[0],s=a[a.length-1];return{min:n,max:s}}buildTicks(){let a=this.options,n=a.time,s=a.ticks,l=s.source==="labels"?this.getLabelTimestamps():this._generate();if(a.bounds==="ticks"&&l.length)this.min=this._userMin||l[0],this.max=this._userMax||l[l.length-1];let r=this.min,c=this.max,f=Aw(l,r,c);if(this._unit=n.unit||(s.autoSkip?GM(n.minUnit,this.min,this.max,this._getLabelCapacity(r)):EB(this,f.length,n.minUnit,this.min,this.max)),this._majorUnit=!s.major.enabled||this._unit==="year"?void 0:BB(this._unit),this.initOffsets(l),a.reverse)f.reverse();return XM(this,f,this._majorUnit)}afterAutoSkip(){if(this.options.offsetAfterAutoskip)this.initOffsets(this.ticks.map((a)=>+a.value))}initOffsets(a=[]){let n=0,s=0,l,r;if(this.options.offset&&a.length){if(l=this.getDecimalForValue(a[0]),a.length===1)n=1-l;else n=(this.getDecimalForValue(a[1])-l)/2;if(r=this.getDecimalForValue(a[a.length-1]),a.length===1)s=r;else s=(r-this.getDecimalForValue(a[a.length-2]))/2}let c=a.length<3?0.5:0.25;n=za(n,0,c),s=za(s,0,c),this._offsets={start:n,end:s,factor:1/(n+1+s)}}_generate(){let a=this._adapter,n=this.min,s=this.max,l=this.options,r=l.time,c=r.unit||GM(r.minUnit,n,s,this._getLabelCapacity(n)),f=Ue(l.ticks.stepSize,1),h=c==="week"?r.isoWeekday:!1,p=jr(h)||h===!0,y={},b=n,x,v;if(p)b=+a.startOf(b,"isoWeek",h);if(b=+a.startOf(b,p?"day":c),a.diff(s,n,c)>1e5*f)throw Error(n+" and "+s+" are too far apart with stepSize of "+f+" "+c);let I=l.ticks.source==="data"&&this.getDataTimestamps();for(x=b,v=0;x<s;x=+a.add(x,f,c),v++)YM(y,x,I);if(x===s||l.bounds==="ticks"||v===1)YM(y,x,I);return Object.keys(y).sort(VM).map((M)=>+M)}getLabelForValue(a){let n=this._adapter,s=this.options.time;if(s.tooltipFormat)return n.format(a,s.tooltipFormat);return n.format(a,s.displayFormats.datetime)}format(a,n){let l=this.options.time.displayFormats,r=this._unit,c=n||l[r];return this._adapter.format(a,c)}_tickFormatFunction(a,n,s,l){let r=this.options,c=r.ticks.callback;if(c)return gt(c,[a,n,s],this);let f=r.time.displayFormats,h=this._unit,p=this._majorUnit,y=h&&f[h],b=p&&f[p],x=s[n],v=p&&b&&x&&x.major;return this._adapter.format(a,l||(v?b:y))}generateTickLabels(a){let n,s,l;for(n=0,s=a.length;n<s;++n)l=a[n],l.label=this._tickFormatFunction(l.value,n,a)}getDecimalForValue(a){return a===null?NaN:(a-this.min)/(this.max-this.min)}getPixelForValue(a){let n=this._offsets,s=this.getDecimalForValue(a);return this.getPixelForDecimal((n.start+s)*n.factor)}getValueForPixel(a){let n=this._offsets,s=this.getDecimalForPixel(a)/n.factor-n.end;return this.min+s*(this.max-this.min)}_getLabelSize(a){let n=this.options.ticks,s=this.ctx.measureText(a).width,l=os(this.isHorizontal()?n.maxRotation:n.minRotation),r=Math.cos(l),c=Math.sin(l),f=this._resolveTickFontOptions(0).size;return{w:s*r+f*c,h:s*c+f*r}}_getLabelCapacity(a){let n=this.options.time,s=n.displayFormats,l=s[n.unit]||s.millisecond,r=this._tickFormatFunction(a,0,XM(this,[a],this._majorUnit),l),c=this._getLabelSize(r),f=Math.floor(this.isHorizontal()?this.width/c.w:this.height/c.h)-1;return f>0?f:1}getDataTimestamps(){let a=this._cache.data||[],n,s;if(a.length)return a;let l=this.getMatchingVisibleMetas();if(this._normalized&&l.length)return this._cache.data=l[0].controller.getAllParsedValues(this);for(n=0,s=l.length;n<s;++n)a=a.concat(l[n].controller.getAllParsedValues(this));return this._cache.data=this.normalize(a)}getLabelTimestamps(){let a=this._cache.labels||[],n,s;if(a.length)return a;let l=this.getLabels();for(n=0,s=l.length;n<s;++n)a.push(jM(this,l[n]));return this._cache.labels=this._normalized?a:this.normalize(a)}normalize(a){return ex(a.sort(VM))}}function mp(a,n,s){let l=0,r=a.length-1,c,f,h,p;if(s){if(n>=a[l].pos&&n<=a[r].pos)({lo:l,hi:r}=ri(a,"pos",n));({pos:c,time:h}=a[l]),{pos:f,time:p}=a[r]}else{if(n>=a[l].time&&n<=a[r].time)({lo:l,hi:r}=ri(a,"time",n));({time:c,pos:h}=a[l]),{time:f,pos:p}=a[r]}let y=f-c;return y?h+(p-h)*(n-c)/y:h}class zB extends zx{static id="timeseries";static defaults=zx.defaults;constructor(a){super(a);this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){let a=this._getTimestampsForTable(),n=this._table=this.buildLookupTable(a);this._minPos=mp(n,this.min),this._tableRange=mp(n,this.max)-this._minPos,super.initOffsets(a)}buildLookupTable(a){let{min:n,max:s}=this,l=[],r=[],c,f,h,p,y;for(c=0,f=a.length;c<f;++c)if(p=a[c],p>=n&&p<=s)l.push(p);if(l.length<2)return[{time:n,pos:0},{time:s,pos:1}];for(c=0,f=l.length;c<f;++c)if(y=l[c+1],h=l[c-1],p=l[c],Math.round((y+h)/2)!==p)r.push({time:p,pos:c/(f-1)});return r}_generate(){let a=this.min,n=this.max,s=super.getDataTimestamps();if(!s.includes(a)||!s.length)s.splice(0,0,a);if(!s.includes(n)||s.length===1)s.push(n);return s.sort((l,r)=>l-r)}_getTimestampsForTable(){let a=this._cache.all||[];if(a.length)return a;let n=this.getDataTimestamps(),s=this.getLabelTimestamps();if(n.length&&s.length)a=this.normalize(n.concat(s));else a=n.length?n:s;return a=this._cache.all=a,a}getDecimalForValue(a){return(mp(this._table,a)-this._minPos)/this._tableRange}getValueForPixel(a){let n=this._offsets,s=this.getDecimalForPixel(a)/n.factor-n.end;return mp(this._table,s*this._tableRange+this._minPos,!0)}}var rd=be(ea(),1);var Gx=be(bT(),1),io=be(ea(),1);var ST="label";function xT(a,n){if(typeof a==="function")a(n);else if(a)a.current=n}function UB(a,n){let s=a.options;if(s&&n)Object.assign(s,n)}function vT(a,n){a.labels=n}function LT(a,n,s=ST){let l=[];a.datasets=n.map((r)=>{let c=a.datasets.find((f)=>f[s]===r[s]);if(!c||!r.data||l.includes(c))return{...r};return l.push(c),Object.assign(c,r),c})}function FB(a,n=ST){let s={labels:[],datasets:[]};return vT(s,a.labels),LT(s,a.datasets,n),s}function NB(a,n){let{height:s=150,width:l=300,redraw:r=!1,datasetIdKey:c,type:f,data:h,options:p,plugins:y=[],fallbackContent:b,updateMode:x,...v}=a,I=io.useRef(null),M=io.useRef(null),D=()=>{if(!I.current)return;M.current=new wa(I.current,{type:f,data:FB(h,c),options:p&&{...p},plugins:y}),xT(n,M.current)},w=()=>{if(xT(n,null),M.current)M.current.destroy(),M.current=null};return io.useEffect(()=>{if(!r&&M.current&&p)UB(M.current,p)},[r,p]),io.useEffect(()=>{if(!r&&M.current)vT(M.current.config.data,h.labels)},[r,h.labels]),io.useEffect(()=>{if(!r&&M.current&&h.datasets)LT(M.current.config.data,h.datasets,c)},[r,h.datasets]),io.useEffect(()=>{if(!M.current)return;if(r)w(),setTimeout(D);else M.current.update(x)},[r,p,h.labels,h.datasets,x]),io.useEffect(()=>{if(!M.current)return;w(),setTimeout(D)},[f]),io.useEffect(()=>(D(),()=>w()),[]),Gx.jsx("canvas",{ref:I,role:"img",height:s,width:l,...v,children:b})}var qB=io.forwardRef(NB);function CT(a,n){return wa.register(n),io.forwardRef((s,l)=>Gx.jsx(qB,{...s,ref:l,type:a}))}var wo=CT("line",Fx),Lp=CT("bar",Ux);var Cp=be(ea(),1),IT="(prefers-color-scheme: dark)";function VB(){if(typeof window>"u")return"light";return window.matchMedia(IT).matches?"dark":"light"}function Mn(){let[a,n]=Cp.useState(()=>VB());return Cp.useEffect(()=>{let s=window.matchMedia(IT),l=()=>{n(s.matches?"dark":"light")};return l(),s.addEventListener("change",l),()=>s.removeEventListener("change",l)},[]),a}var jB=Math.pow(10,8)*24*60*60*1000,bU=-jB,Ip=604800000,wT=86400000;var id=43200,Yx=1440;var Xx=Symbol.for("constructDateFrom");function ma(a,n){if(typeof a==="function")return a(n);if(a&&typeof a==="object"&&Xx in a)return a[Xx](n);if(a instanceof Date)return new a.constructor(n);return new Date(n)}function et(a,n){return ma(n||a,a)}var GB={};function Tn(){return GB}function us(a,n){let s=Tn(),l=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??s.weekStartsOn??s.locale?.options?.weekStartsOn??0,r=et(a,n?.in),c=r.getDay(),f=(c<l?7:0)+c-l;return r.setDate(r.getDate()-f),r.setHours(0,0,0,0),r}function Cl(a,n){return us(a,{...n,weekStartsOn:1})}function wp(a,n){let s=et(a,n?.in),l=s.getFullYear(),r=ma(s,0);r.setFullYear(l+1,0,4),r.setHours(0,0,0,0);let c=Cl(r),f=ma(s,0);f.setFullYear(l,0,4),f.setHours(0,0,0,0);let h=Cl(f);if(s.getTime()>=c.getTime())return l+1;else if(s.getTime()>=h.getTime())return l;else return l-1}function Xr(a){let n=et(a),s=new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()));return s.setUTCFullYear(n.getFullYear()),+a-+s}function gi(a,...n){let s=ma.bind(null,a||n.find((l)=>typeof l==="object"));return n.map(s)}function Wx(a,n){let s=et(a,n?.in);return s.setHours(0,0,0,0),s}function MT(a,n,s){let[l,r]=gi(s?.in,a,n),c=Wx(l),f=Wx(r),h=+c-Xr(c),p=+f-Xr(f);return Math.round((h-p)/wT)}function TT(a,n){let s=wp(a,n),l=ma(n?.in||a,0);return l.setFullYear(s,0,4),l.setHours(0,0,0,0),Cl(l)}function Wr(a,n){let s=+et(a)-+et(n);if(s<0)return-1;else if(s>0)return 1;return s}function AT(a){return ma(a,Date.now())}function _T(a){return a instanceof Date||typeof a==="object"&&Object.prototype.toString.call(a)==="[object Date]"}function DT(a){return!(!_T(a)&&typeof a!=="number"||isNaN(+et(a)))}function RT(a,n,s){let[l,r]=gi(s?.in,a,n),c=l.getFullYear()-r.getFullYear(),f=l.getMonth()-r.getMonth();return c*12+f}function kT(a){return(n)=>{let l=(a?Math[a]:Math.trunc)(n);return l===0?0:l}}function OT(a,n){return+et(a)-+et(n)}function ET(a,n){let s=et(a,n?.in);return s.setHours(23,59,59,999),s}function BT(a,n){let s=et(a,n?.in),l=s.getMonth();return s.setFullYear(s.getFullYear(),l+1,0),s.setHours(23,59,59,999),s}function PT(a,n){let s=et(a,n?.in);return+ET(s,n)===+BT(s,n)}function zT(a,n,s){let[l,r,c]=gi(s?.in,a,a,n),f=Wr(r,c),h=Math.abs(RT(r,c));if(h<1)return 0;if(r.getMonth()===1&&r.getDate()>27)r.setDate(30);r.setMonth(r.getMonth()-f*h);let p=Wr(r,c)===-f;if(PT(l)&&h===1&&Wr(l,c)===1)p=!1;let y=f*(h-+p);return y===0?0:y}function HT(a,n,s){let l=OT(a,n)/1000;return kT(s?.roundingMethod)(l)}function UT(a,n){let s=et(a,n?.in);return s.setFullYear(s.getFullYear(),0,1),s.setHours(0,0,0,0),s}var YB={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},FT=(a,n,s)=>{let l,r=YB[a];if(typeof r==="string")l=r;else if(n===1)l=r.one;else l=r.other.replace("{{count}}",n.toString());if(s?.addSuffix)if(s.comparison&&s.comparison>0)return"in "+l;else return l+" ago";return l};function Mp(a){return(n={})=>{let s=n.width?String(n.width):a.defaultWidth;return a.formats[s]||a.formats[a.defaultWidth]}}var XB={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},WB={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},$B={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},NT={date:Mp({formats:XB,defaultWidth:"full"}),time:Mp({formats:WB,defaultWidth:"full"}),dateTime:Mp({formats:$B,defaultWidth:"full"})};var QB={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},qT=(a,n,s,l)=>QB[a];function $r(a){return(n,s)=>{let l=s?.context?String(s.context):"standalone",r;if(l==="formatting"&&a.formattingValues){let f=a.defaultFormattingWidth||a.defaultWidth,h=s?.width?String(s.width):f;r=a.formattingValues[h]||a.formattingValues[f]}else{let f=a.defaultWidth,h=s?.width?String(s.width):a.defaultWidth;r=a.values[h]||a.values[f]}let c=a.argumentCallback?a.argumentCallback(n):n;return r[c]}}var ZB={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},JB={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},KB={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},eP={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},tP={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},aP={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},oP=(a,n)=>{let s=Number(a),l=s%100;if(l>20||l<10)switch(l%10){case 1:return s+"st";case 2:return s+"nd";case 3:return s+"rd"}return s+"th"},VT={ordinalNumber:oP,era:$r({values:ZB,defaultWidth:"wide"}),quarter:$r({values:JB,defaultWidth:"wide",argumentCallback:(a)=>a-1}),month:$r({values:KB,defaultWidth:"wide"}),day:$r({values:eP,defaultWidth:"wide"}),dayPeriod:$r({values:tP,defaultWidth:"wide",formattingValues:aP,defaultFormattingWidth:"wide"})};function Qr(a){return(n,s={})=>{let l=s.width,r=l&&a.matchPatterns[l]||a.matchPatterns[a.defaultMatchWidth],c=n.match(r);if(!c)return null;let f=c[0],h=l&&a.parsePatterns[l]||a.parsePatterns[a.defaultParseWidth],p=Array.isArray(h)?sP(h,(x)=>x.test(f)):nP(h,(x)=>x.test(f)),y;y=a.valueCallback?a.valueCallback(p):p,y=s.valueCallback?s.valueCallback(y):y;let b=n.slice(f.length);return{value:y,rest:b}}}function nP(a,n){for(let s in a)if(Object.prototype.hasOwnProperty.call(a,s)&&n(a[s]))return s;return}function sP(a,n){for(let s=0;s<a.length;s++)if(n(a[s]))return s;return}function jT(a){return(n,s={})=>{let l=n.match(a.matchPattern);if(!l)return null;let r=l[0],c=n.match(a.parsePattern);if(!c)return null;let f=a.valueCallback?a.valueCallback(c[0]):c[0];f=s.valueCallback?s.valueCallback(f):f;let h=n.slice(r.length);return{value:f,rest:h}}}var iP=/^(\d+)(th|st|nd|rd)?/i,lP=/\d+/i,rP={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},uP={any:[/^b/i,/^(a|c)/i]},cP={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},dP={any:[/1/i,/2/i,/3/i,/4/i]},fP={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},hP={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},pP={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},mP={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},gP={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},yP={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},GT={ordinalNumber:jT({matchPattern:iP,parsePattern:lP,valueCallback:(a)=>parseInt(a,10)}),era:Qr({matchPatterns:rP,defaultMatchWidth:"wide",parsePatterns:uP,defaultParseWidth:"any"}),quarter:Qr({matchPatterns:cP,defaultMatchWidth:"wide",parsePatterns:dP,defaultParseWidth:"any",valueCallback:(a)=>a+1}),month:Qr({matchPatterns:fP,defaultMatchWidth:"wide",parsePatterns:hP,defaultParseWidth:"any"}),day:Qr({matchPatterns:pP,defaultMatchWidth:"wide",parsePatterns:mP,defaultParseWidth:"any"}),dayPeriod:Qr({matchPatterns:gP,defaultMatchWidth:"any",parsePatterns:yP,defaultParseWidth:"any"})};var ld={code:"en-US",formatDistance:FT,formatLong:NT,formatRelative:qT,localize:VT,match:GT,options:{weekStartsOn:0,firstWeekContainsDate:1}};function YT(a,n){let s=et(a,n?.in);return MT(s,UT(s))+1}function XT(a,n){let s=et(a,n?.in),l=+Cl(s)-+TT(s);return Math.round(l/Ip)+1}function Tp(a,n){let s=et(a,n?.in),l=s.getFullYear(),r=Tn(),c=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,f=ma(n?.in||a,0);f.setFullYear(l+1,0,c),f.setHours(0,0,0,0);let h=us(f,n),p=ma(n?.in||a,0);p.setFullYear(l,0,c),p.setHours(0,0,0,0);let y=us(p,n);if(+s>=+h)return l+1;else if(+s>=+y)return l;else return l-1}function WT(a,n){let s=Tn(),l=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??s.firstWeekContainsDate??s.locale?.options?.firstWeekContainsDate??1,r=Tp(a,n),c=ma(n?.in||a,0);return c.setFullYear(r,0,l),c.setHours(0,0,0,0),us(c,n)}function $T(a,n){let s=et(a,n?.in),l=+us(s,n)-+WT(s,n);return Math.round(l/Ip)+1}function ot(a,n){let s=a<0?"-":"",l=Math.abs(a).toString().padStart(n,"0");return s+l}var cs={y(a,n){let s=a.getFullYear(),l=s>0?s:1-s;return ot(n==="yy"?l%100:l,n.length)},M(a,n){let s=a.getMonth();return n==="M"?String(s+1):ot(s+1,2)},d(a,n){return ot(a.getDate(),n.length)},a(a,n){let s=a.getHours()/12>=1?"pm":"am";switch(n){case"a":case"aa":return s.toUpperCase();case"aaa":return s;case"aaaaa":return s[0];case"aaaa":default:return s==="am"?"a.m.":"p.m."}},h(a,n){return ot(a.getHours()%12||12,n.length)},H(a,n){return ot(a.getHours(),n.length)},m(a,n){return ot(a.getMinutes(),n.length)},s(a,n){return ot(a.getSeconds(),n.length)},S(a,n){let s=n.length,l=a.getMilliseconds(),r=Math.trunc(l*Math.pow(10,s-3));return ot(r,n.length)}};var Zr={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},$x={G:function(a,n,s){let l=a.getFullYear()>0?1:0;switch(n){case"G":case"GG":case"GGG":return s.era(l,{width:"abbreviated"});case"GGGGG":return s.era(l,{width:"narrow"});case"GGGG":default:return s.era(l,{width:"wide"})}},y:function(a,n,s){if(n==="yo"){let l=a.getFullYear(),r=l>0?l:1-l;return s.ordinalNumber(r,{unit:"year"})}return cs.y(a,n)},Y:function(a,n,s,l){let r=Tp(a,l),c=r>0?r:1-r;if(n==="YY"){let f=c%100;return ot(f,2)}if(n==="Yo")return s.ordinalNumber(c,{unit:"year"});return ot(c,n.length)},R:function(a,n){let s=wp(a);return ot(s,n.length)},u:function(a,n){let s=a.getFullYear();return ot(s,n.length)},Q:function(a,n,s){let l=Math.ceil((a.getMonth()+1)/3);switch(n){case"Q":return String(l);case"QQ":return ot(l,2);case"Qo":return s.ordinalNumber(l,{unit:"quarter"});case"QQQ":return s.quarter(l,{width:"abbreviated",context:"formatting"});case"QQQQQ":return s.quarter(l,{width:"narrow",context:"formatting"});case"QQQQ":default:return s.quarter(l,{width:"wide",context:"formatting"})}},q:function(a,n,s){let l=Math.ceil((a.getMonth()+1)/3);switch(n){case"q":return String(l);case"qq":return ot(l,2);case"qo":return s.ordinalNumber(l,{unit:"quarter"});case"qqq":return s.quarter(l,{width:"abbreviated",context:"standalone"});case"qqqqq":return s.quarter(l,{width:"narrow",context:"standalone"});case"qqqq":default:return s.quarter(l,{width:"wide",context:"standalone"})}},M:function(a,n,s){let l=a.getMonth();switch(n){case"M":case"MM":return cs.M(a,n);case"Mo":return s.ordinalNumber(l+1,{unit:"month"});case"MMM":return s.month(l,{width:"abbreviated",context:"formatting"});case"MMMMM":return s.month(l,{width:"narrow",context:"formatting"});case"MMMM":default:return s.month(l,{width:"wide",context:"formatting"})}},L:function(a,n,s){let l=a.getMonth();switch(n){case"L":return String(l+1);case"LL":return ot(l+1,2);case"Lo":return s.ordinalNumber(l+1,{unit:"month"});case"LLL":return s.month(l,{width:"abbreviated",context:"standalone"});case"LLLLL":return s.month(l,{width:"narrow",context:"standalone"});case"LLLL":default:return s.month(l,{width:"wide",context:"standalone"})}},w:function(a,n,s,l){let r=$T(a,l);if(n==="wo")return s.ordinalNumber(r,{unit:"week"});return ot(r,n.length)},I:function(a,n,s){let l=XT(a);if(n==="Io")return s.ordinalNumber(l,{unit:"week"});return ot(l,n.length)},d:function(a,n,s){if(n==="do")return s.ordinalNumber(a.getDate(),{unit:"date"});return cs.d(a,n)},D:function(a,n,s){let l=YT(a);if(n==="Do")return s.ordinalNumber(l,{unit:"dayOfYear"});return ot(l,n.length)},E:function(a,n,s){let l=a.getDay();switch(n){case"E":case"EE":case"EEE":return s.day(l,{width:"abbreviated",context:"formatting"});case"EEEEE":return s.day(l,{width:"narrow",context:"formatting"});case"EEEEEE":return s.day(l,{width:"short",context:"formatting"});case"EEEE":default:return s.day(l,{width:"wide",context:"formatting"})}},e:function(a,n,s,l){let r=a.getDay(),c=(r-l.weekStartsOn+8)%7||7;switch(n){case"e":return String(c);case"ee":return ot(c,2);case"eo":return s.ordinalNumber(c,{unit:"day"});case"eee":return s.day(r,{width:"abbreviated",context:"formatting"});case"eeeee":return s.day(r,{width:"narrow",context:"formatting"});case"eeeeee":return s.day(r,{width:"short",context:"formatting"});case"eeee":default:return s.day(r,{width:"wide",context:"formatting"})}},c:function(a,n,s,l){let r=a.getDay(),c=(r-l.weekStartsOn+8)%7||7;switch(n){case"c":return String(c);case"cc":return ot(c,n.length);case"co":return s.ordinalNumber(c,{unit:"day"});case"ccc":return s.day(r,{width:"abbreviated",context:"standalone"});case"ccccc":return s.day(r,{width:"narrow",context:"standalone"});case"cccccc":return s.day(r,{width:"short",context:"standalone"});case"cccc":default:return s.day(r,{width:"wide",context:"standalone"})}},i:function(a,n,s){let l=a.getDay(),r=l===0?7:l;switch(n){case"i":return String(r);case"ii":return ot(r,n.length);case"io":return s.ordinalNumber(r,{unit:"day"});case"iii":return s.day(l,{width:"abbreviated",context:"formatting"});case"iiiii":return s.day(l,{width:"narrow",context:"formatting"});case"iiiiii":return s.day(l,{width:"short",context:"formatting"});case"iiii":default:return s.day(l,{width:"wide",context:"formatting"})}},a:function(a,n,s){let r=a.getHours()/12>=1?"pm":"am";switch(n){case"a":case"aa":return s.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"aaa":return s.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return s.dayPeriod(r,{width:"narrow",context:"formatting"});case"aaaa":default:return s.dayPeriod(r,{width:"wide",context:"formatting"})}},b:function(a,n,s){let l=a.getHours(),r;if(l===12)r=Zr.noon;else if(l===0)r=Zr.midnight;else r=l/12>=1?"pm":"am";switch(n){case"b":case"bb":return s.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbb":return s.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return s.dayPeriod(r,{width:"narrow",context:"formatting"});case"bbbb":default:return s.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(a,n,s){let l=a.getHours(),r;if(l>=17)r=Zr.evening;else if(l>=12)r=Zr.afternoon;else if(l>=4)r=Zr.morning;else r=Zr.night;switch(n){case"B":case"BB":case"BBB":return s.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return s.dayPeriod(r,{width:"narrow",context:"formatting"});case"BBBB":default:return s.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(a,n,s){if(n==="ho"){let l=a.getHours()%12;if(l===0)l=12;return s.ordinalNumber(l,{unit:"hour"})}return cs.h(a,n)},H:function(a,n,s){if(n==="Ho")return s.ordinalNumber(a.getHours(),{unit:"hour"});return cs.H(a,n)},K:function(a,n,s){let l=a.getHours()%12;if(n==="Ko")return s.ordinalNumber(l,{unit:"hour"});return ot(l,n.length)},k:function(a,n,s){let l=a.getHours();if(l===0)l=24;if(n==="ko")return s.ordinalNumber(l,{unit:"hour"});return ot(l,n.length)},m:function(a,n,s){if(n==="mo")return s.ordinalNumber(a.getMinutes(),{unit:"minute"});return cs.m(a,n)},s:function(a,n,s){if(n==="so")return s.ordinalNumber(a.getSeconds(),{unit:"second"});return cs.s(a,n)},S:function(a,n){return cs.S(a,n)},X:function(a,n,s){let l=a.getTimezoneOffset();if(l===0)return"Z";switch(n){case"X":return ZT(l);case"XXXX":case"XX":return Il(l);case"XXXXX":case"XXX":default:return Il(l,":")}},x:function(a,n,s){let l=a.getTimezoneOffset();switch(n){case"x":return ZT(l);case"xxxx":case"xx":return Il(l);case"xxxxx":case"xxx":default:return Il(l,":")}},O:function(a,n,s){let l=a.getTimezoneOffset();switch(n){case"O":case"OO":case"OOO":return"GMT"+QT(l,":");case"OOOO":default:return"GMT"+Il(l,":")}},z:function(a,n,s){let l=a.getTimezoneOffset();switch(n){case"z":case"zz":case"zzz":return"GMT"+QT(l,":");case"zzzz":default:return"GMT"+Il(l,":")}},t:function(a,n,s){let l=Math.trunc(+a/1000);return ot(l,n.length)},T:function(a,n,s){return ot(+a,n.length)}};function QT(a,n=""){let s=a>0?"-":"+",l=Math.abs(a),r=Math.trunc(l/60),c=l%60;if(c===0)return s+String(r);return s+String(r)+n+ot(c,2)}function ZT(a,n){if(a%60===0)return(a>0?"-":"+")+ot(Math.abs(a)/60,2);return Il(a,n)}function Il(a,n=""){let s=a>0?"-":"+",l=Math.abs(a),r=ot(Math.trunc(l/60),2),c=ot(l%60,2);return s+r+n+c}var JT=(a,n)=>{switch(a){case"P":return n.date({width:"short"});case"PP":return n.date({width:"medium"});case"PPP":return n.date({width:"long"});case"PPPP":default:return n.date({width:"full"})}},KT=(a,n)=>{switch(a){case"p":return n.time({width:"short"});case"pp":return n.time({width:"medium"});case"ppp":return n.time({width:"long"});case"pppp":default:return n.time({width:"full"})}},bP=(a,n)=>{let s=a.match(/(P+)(p+)?/)||[],l=s[1],r=s[2];if(!r)return JT(a,n);let c;switch(l){case"P":c=n.dateTime({width:"short"});break;case"PP":c=n.dateTime({width:"medium"});break;case"PPP":c=n.dateTime({width:"long"});break;case"PPPP":default:c=n.dateTime({width:"full"});break}return c.replace("{{date}}",JT(l,n)).replace("{{time}}",KT(r,n))},eA={p:KT,P:bP};var xP=/^D+$/,SP=/^Y+$/,vP=["D","DD","YY","YYYY"];function tA(a){return xP.test(a)}function aA(a){return SP.test(a)}function oA(a,n,s){let l=LP(a,n,s);if(console.warn(l),vP.includes(a))throw RangeError(l)}function LP(a,n,s){let l=a[0]==="Y"?"years":"days of the month";return`Use \`${a.toLowerCase()}\` instead of \`${a}\` (in \`${n}\`) for formatting ${l} to the input \`${s}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var CP=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,IP=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,wP=/^'([^]*?)'?$/,MP=/''/g,TP=/[a-zA-Z]/;function qo(a,n,s){let l=Tn(),r=s?.locale??l.locale??ld,c=s?.firstWeekContainsDate??s?.locale?.options?.firstWeekContainsDate??l.firstWeekContainsDate??l.locale?.options?.firstWeekContainsDate??1,f=s?.weekStartsOn??s?.locale?.options?.weekStartsOn??l.weekStartsOn??l.locale?.options?.weekStartsOn??0,h=et(a,s?.in);if(!DT(h))throw RangeError("Invalid time value");let p=n.match(IP).map((b)=>{let x=b[0];if(x==="p"||x==="P"){let v=eA[x];return v(b,r.formatLong)}return b}).join("").match(CP).map((b)=>{if(b==="''")return{isToken:!1,value:"'"};let x=b[0];if(x==="'")return{isToken:!1,value:AP(b)};if($x[x])return{isToken:!0,value:b};if(x.match(TP))throw RangeError("Format string contains an unescaped latin alphabet character `"+x+"`");return{isToken:!1,value:b}});if(r.localize.preprocessor)p=r.localize.preprocessor(h,p);let y={firstWeekContainsDate:c,weekStartsOn:f,locale:r};return p.map((b)=>{if(!b.isToken)return b.value;let x=b.value;if(!s?.useAdditionalWeekYearTokens&&aA(x)||!s?.useAdditionalDayOfYearTokens&&tA(x))oA(x,n,String(a));let v=$x[x[0]];return v(h,x,r.localize,y)}).join("")}function AP(a){let n=a.match(wP);if(!n)return a;return n[1].replace(MP,"'")}function nA(a,n,s){let l=Tn(),r=s?.locale??l.locale??ld,c=2520,f=Wr(a,n);if(isNaN(f))throw RangeError("Invalid time value");let h=Object.assign({},s,{addSuffix:s?.addSuffix,comparison:f}),[p,y]=gi(s?.in,...f>0?[n,a]:[a,n]),b=HT(y,p),x=(Xr(y)-Xr(p))/1000,v=Math.round((b-x)/60),I;if(v<2)if(s?.includeSeconds)if(b<5)return r.formatDistance("lessThanXSeconds",5,h);else if(b<10)return r.formatDistance("lessThanXSeconds",10,h);else if(b<20)return r.formatDistance("lessThanXSeconds",20,h);else if(b<40)return r.formatDistance("halfAMinute",0,h);else if(b<60)return r.formatDistance("lessThanXMinutes",1,h);else return r.formatDistance("xMinutes",1,h);else if(v===0)return r.formatDistance("lessThanXMinutes",1,h);else return r.formatDistance("xMinutes",v,h);else if(v<45)return r.formatDistance("xMinutes",v,h);else if(v<90)return r.formatDistance("aboutXHours",1,h);else if(v<Yx){let M=Math.round(v/60);return r.formatDistance("aboutXHours",M,h)}else if(v<2520)return r.formatDistance("xDays",1,h);else if(v<id){let M=Math.round(v/Yx);return r.formatDistance("xDays",M,h)}else if(v<id*2)return I=Math.round(v/id),r.formatDistance("aboutXMonths",I,h);if(I=zT(y,p),I<12){let M=Math.round(v/id);return r.formatDistance("xMonths",M,h)}else{let M=I%12,D=Math.trunc(I/12);if(M<3)return r.formatDistance("aboutXYears",D,h);else if(M<9)return r.formatDistance("overXYears",D,h);else return r.formatDistance("almostXYears",D+1,h)}}function sA(a,n){return nA(a,AT(a),n)}var qa=be(nt(),1),ra=["#a78bfa","#22d3ee","#ec4899","#4ade80","#fbbf24","#f87171","#60a5fa"],Ap={dark:{legendLabel:"#94a3b8",tooltipBackground:"#16161e",tooltipTitle:"#f8fafc",tooltipBody:"#94a3b8",tooltipBorder:"rgba(255, 255, 255, 0.1)",grid:"rgba(255, 255, 255, 0.06)",tick:"#64748b"},light:{legendLabel:"#475569",tooltipBackground:"#ffffff",tooltipTitle:"#0f172a",tooltipBody:"#334155",tooltipBorder:"rgba(15, 23, 42, 0.18)",grid:"rgba(15, 23, 42, 0.08)",tick:"#64748b"}};function _p(a){let{chartTheme:n,showLegend:s,defaultLabel:l,formatValue:r,footer:c}=a;return{legend:{display:s,position:"top",align:"start",labels:{color:n.legendLabel,usePointStyle:!0,padding:16,font:{size:12},boxWidth:8}},tooltip:{backgroundColor:n.tooltipBackground,titleColor:n.tooltipTitle,bodyColor:n.tooltipBody,borderColor:n.tooltipBorder,borderWidth:1,padding:12,cornerRadius:8,callbacks:{label:(f)=>{let h=f.dataset.label??l,p=f.parsed.y??0;return`${h}: ${r(p)}`},...c?{footer:c}:{}}}}}function Dp(a){let{chartTheme:n,formatY:s}=a,l={grid:{color:n.grid,drawBorder:!1},ticks:{color:n.tick,font:{size:11}}},r={...l,ticks:{...l.ticks,callback:(c)=>s(Number(c))},min:0};return{sharedScaleBase:l,yScale:r}}function Rp(a){return{borderColor:a,backgroundColor:`${a}20`,fill:!0,tension:0,pointRadius:3,pointHoverRadius:4,borderWidth:2}}function kp(a){return{backgroundColor:a,borderColor:a,borderWidth:0,borderRadius:3}}function Jr(a,n){return a.datasets.map((s,l)=>({label:s.label,data:s.data,...n(l)}))}function Op(a,n,s){if(a.length===0)return{labels:[],datasets:[]};let{initBucket:l,accumulate:r,bucketToValue:c}=s,f=new Map;for(let p of a){let y=f.get(p.timestamp)??l();r(y,p),f.set(p.timestamp,y)}let h=[...f.entries()].sort((p,y)=>p[0]-y[0]);return{labels:h.map(([p])=>qo(new Date(p),"MMM d")),datasets:[{label:n,data:h.map(([,p])=>c(p))}]}}function Ep(a,n){if(a.length===0)return{labels:[],datasets:[]};let{topN:s=5,rankWeight:l,initBucket:r,accumulate:c,bucketToValue:f}=n,h=new Map;for(let z of a){let N=`${z.model}::${z.provider}`,Q=h.get(N);if(Q)Q.weight+=l(z);else h.set(N,{model:z.model,provider:z.provider,weight:l(z)})}let y=[...h.entries()].sort((z,N)=>N[1].weight-z[1].weight).slice(0,s),b=new Set(y.map(([z])=>z)),x=new Map;for(let[,{model:z}]of y)x.set(z,(x.get(z)??0)+1);let v=new Map;for(let[z,{model:N,provider:Q}]of y)v.set(z,(x.get(N)??0)>1?`${N} (${Q})`:N);let I=[...new Set(a.map((z)=>z.timestamp))].sort((z,N)=>z-N),M=y.map(([z])=>v.get(z)??z);if(a.some((z)=>!b.has(`${z.model}::${z.provider}`)))M.push("Other");let w=new Map;for(let z of I)w.set(z,new Map);for(let z of a){let N=`${z.model}::${z.provider}`,Q=b.has(N)?v.get(N)??z.model:"Other",Z=w.get(z.timestamp);if(!Z)continue;let X=Z.get(Q)??r();c(X,z),Z.set(Q,X)}return{labels:I.map((z)=>qo(new Date(z),"MMM d")),datasets:M.map((z)=>({label:z,data:I.map((N)=>{let Q=w.get(N)?.get(z);return Q?f(Q):0})}))}}function DP({byModel:a,onChange:n}){return qa.jsxDEV("div",{className:"flex bg-[var(--bg-surface)] rounded-[var(--radius-sm)] p-0.5 border border-[var(--border-subtle)]",children:[qa.jsxDEV("button",{type:"button",onClick:()=>n(!1),className:`tab-btn text-xs ${!a?"active":""}`,children:"All Models"},void 0,!1,void 0,this),qa.jsxDEV("button",{type:"button",onClick:()=>n(!0),className:`tab-btn text-xs ${a?"active":""}`,children:"By Model"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Bp({title:a,subtitle:n,empty:s,emptyMessage:l,controls:r,byModel:c,onByModelChange:f,children:h}){return qa.jsxDEV("div",{className:"surface overflow-hidden",children:[qa.jsxDEV("div",{className:"px-5 py-4 border-b border-[var(--border-subtle)] flex items-center justify-between gap-4 flex-wrap",children:[qa.jsxDEV("div",{children:[qa.jsxDEV("h3",{className:"text-sm font-semibold text-[var(--text-primary)]",children:a},void 0,!1,void 0,this),qa.jsxDEV("p",{className:"text-xs text-[var(--text-muted)] mt-1",children:n},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qa.jsxDEV("div",{className:"flex items-center gap-2 flex-wrap",children:[r,qa.jsxDEV(DP,{byModel:c,onChange:f},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),qa.jsxDEV("div",{className:"p-5 min-h-[320px]",children:s?qa.jsxDEV("div",{className:"h-full flex items-center justify-center text-[var(--text-muted)] text-sm",children:l},void 0,!1,void 0,this):qa.jsxDEV("div",{className:"h-[280px]",children:h},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Kr=be(nt(),1);wa.register(Fo,No,sd,Na,Uo,In,wn,Cn,Yr);var Qx=[{value:"yelling",label:"Yelling"},{value:"profanity",label:"Profanity"},{value:"anguish",label:"Anguish (!!!, nooo, dude, ..)"},{value:"negation",label:"Negation (no/nope/wrong)"},{value:"repetition",label:"Repetition (i meant, still doesnt)"},{value:"blame",label:"Blame (you didnt, stop X-ing)"},{value:"frustration",label:"Frustration (neg + rep + blame)"},{value:"total",label:"All signals combined"}];function iA(a){if(!Number.isFinite(a))return"-";if(a===0)return"0%";if(Math.abs(a)<1)return`${a.toFixed(1)}%`;return`${a.toFixed(0)}%`}function lA(a,n){if(n==="frustration")return a.negation+a.repetition+a.blame;if(n==="total")return a.yelling+a.profanity+a.anguish+a.negation+a.repetition+a.blame;return a[n]}function rA(a,n){if(n<=0)return 0;return a/n*100}function RP(a,n){let s=Qx.find((l)=>l.value===n)?.label??"Hits";return Op(a,s,{initBucket:()=>({hits:0,messages:0}),accumulate:(l,r)=>{l.hits+=lA(r,n),l.messages+=r.messages},bucketToValue:(l)=>rA(l.hits,l.messages)})}function kP(a,n){return Ep(a,{rankWeight:(s)=>s.messages,initBucket:()=>({hits:0,messages:0}),accumulate:(s,l)=>{s.hits+=lA(l,n),s.messages+=l.messages},bucketToValue:(s)=>rA(s.hits,s.messages)})}function uA({behaviorSeries:a}){let[n,s]=rd.useState(!1),[l,r]=rd.useState("total"),c=Mn(),f=Ap[c],h=rd.useMemo(()=>n?kP(a,l):RP(a,l),[a,n,l]),p=_p({chartTheme:f,showLegend:n,defaultLabel:"Hits",formatValue:iA}),{sharedScaleBase:y,yScale:b}=Dp({chartTheme:f,formatY:iA}),x=Qx.find((M)=>M.value===l)?.label??"",v=Kr.jsxDEV("div",{className:"flex bg-[var(--bg-surface)] rounded-[var(--radius-sm)] p-0.5 border border-[var(--border-subtle)]",children:Qx.map((M)=>Kr.jsxDEV("button",{type:"button",onClick:()=>r(M.value),className:`tab-btn text-xs ${l===M.value?"active":""}`,children:M.label},M.value,!1,void 0,this))},void 0,!1,void 0,this),I;if(n){let M={labels:h.labels,datasets:Jr(h,(w)=>Rp(ra[w%ra.length]))};I=Kr.jsxDEV(wo,{data:M,options:{responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:p,scales:{x:y,y:b}}},void 0,!1,void 0,this)}else{let M={labels:h.labels,datasets:Jr(h,(w)=>kp(ra[w%ra.length]))},D={responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:p,scales:{x:{...y,stacked:!0},y:{...b,stacked:!0}},layout:{padding:{top:8}}};I=Kr.jsxDEV(Lp,{data:M,options:D},void 0,!1,void 0,this)}return Kr.jsxDEV(Bp,{title:"User Tantrums",subtitle:`${x} as % of user messages per day`,empty:h.labels.length===0,emptyMessage:"No behavioral data yet. Sync to scan your sessions.",controls:v,byModel:n,onByModelChange:s,children:I},void 0,!1,void 0,this)}var Qp=be(ea(),1);var Hp=be(ea(),1);var Pp=(...a)=>a.filter((n,s,l)=>Boolean(n)&&n.trim()!==""&&l.indexOf(n)===s).join(" ").trim();var cA=(a)=>a.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();var dA=(a)=>a.replace(/^([A-Z])|[\s-_]+(\w)/g,(n,s,l)=>l?l.toUpperCase():s.toLowerCase());var Zx=(a)=>{let n=dA(a);return n.charAt(0).toUpperCase()+n.slice(1)};var ud=be(ea(),1);var zp={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var fA=(a)=>{for(let n in a)if(n.startsWith("aria-")||n==="role"||n==="title")return!0;return!1};var eu=be(ea(),1),OP=eu.createContext({});var hA=()=>eu.useContext(OP);var pA=ud.forwardRef(({color:a,size:n,strokeWidth:s,absoluteStrokeWidth:l,className:r="",children:c,iconNode:f,...h},p)=>{let{size:y=24,strokeWidth:b=2,absoluteStrokeWidth:x=!1,color:v="currentColor",className:I=""}=hA()??{},M=l??x?Number(s??b)*24/Number(n??y):s??b;return ud.createElement("svg",{ref:p,...zp,width:n??y??zp.width,height:n??y??zp.height,stroke:a??v,strokeWidth:M,className:Pp("lucide",I,r),...!c&&!fA(h)&&{"aria-hidden":"true"},...h},[...f.map(([D,w])=>ud.createElement(D,w)),...Array.isArray(c)?c:[c]])});var Fe=(a,n)=>{let s=Hp.forwardRef(({className:l,...r},c)=>Hp.createElement(pA,{ref:c,iconNode:n,className:Pp(`lucide-${cA(Zx(a))}`,`lucide-${a}`,l),...r}));return s.displayName=Zx(a),s};var EP=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],yi=Fe("chart-column",EP);var BP=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],bi=Fe("circle-alert",BP);var PP=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],xi=Fe("circle-check",PP);var zP=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],Si=Fe("circle-x",zP);var HP=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1",key:"1oajmo"}],["path",{d:"M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1",key:"mpwhp6"}]],vi=Fe("file-braces",HP);var UP=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],Ml=Fe("activity",UP);var FP=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],cd=Fe("chevron-down",FP);var NP=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],dd=Fe("chevron-up",NP);var qP=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]],fd=Fe("clock",qP);var VP=[["path",{d:"M13.744 17.736a6 6 0 1 1-7.48-7.48",key:"bq4yh3"}],["path",{d:"M15 6h1v4",key:"11y1tn"}],["path",{d:"m6.134 14.768.866-.5 2 3.464",key:"17snzx"}],["circle",{cx:"16",cy:"8",r:"6",key:"14bfc9"}]],hd=Fe("coins",VP);var jP=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],pd=Fe("database",jP);var GP=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],md=Fe("download",GP);var YP=[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]],gd=Fe("gauge",YP);var XP=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],yd=Fe("hash",XP);var WP=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],bd=Fe("refresh-cw",WP);var $P=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],xd=Fe("server",$P);var QP=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],Tl=Fe("star",QP);var ZP=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],Sd=Fe("upload",ZP);var JP=[["path",{d:"M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z",key:"1v7up4"}]],Al=Fe("zap",JP);var KP=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],vd=Fe("x",KP);var wt=be(nt(),1),Up={dark:{legendLabel:"#cbd5e1",tooltipBackground:"#16161e",tooltipTitle:"#f8fafc",tooltipBody:"#94a3b8",tooltipBorder:"rgba(255, 255, 255, 0.1)",grid:"rgba(255, 255, 255, 0.06)",tick:"#94a3b8"},light:{legendLabel:"#334155",tooltipBackground:"#ffffff",tooltipTitle:"#0f172a",tooltipBody:"#334155",tooltipBorder:"rgba(15, 23, 42, 0.18)",grid:"rgba(15, 23, 42, 0.08)",tick:"#475569"}};function ds(a){return{borderColor:a,backgroundColor:"transparent",tension:0.4,pointRadius:0,borderWidth:2}}function Fp({timestamps:a,values:n,color:s}){let l={labels:a.map((c)=>qo(new Date(c),"MMM d")),datasets:[{data:n,...ds(s)}]};return wt.jsxDEV(wo,{data:l,options:{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{display:!1},tooltip:{enabled:!1}},scales:{x:{display:!1},y:{display:!1,min:0}}}},void 0,!1,void 0,this)}function Np(a){return{legend:{display:!0,position:"top",labels:{color:a.legendLabel,usePointStyle:!0,padding:16,font:{size:12}}},tooltip:{backgroundColor:a.tooltipBackground,titleColor:a.tooltipTitle,bodyColor:a.tooltipBody,borderColor:a.tooltipBorder,borderWidth:1,cornerRadius:8}}}function mA(a){return{x:{grid:{color:a.grid},ticks:{color:a.tick,font:{size:11}}},y:{grid:{color:a.grid},ticks:{color:a.tick,font:{size:11}},min:0}}}function gA(a){return{x:{grid:{color:a.grid},ticks:{color:a.tick,font:{size:11}}},y:{type:"linear",display:!0,position:"left",grid:{color:a.grid},ticks:{color:a.tick,font:{size:11}}},y1:{type:"linear",display:!0,position:"right",grid:{drawOnChartArea:!1},ticks:{color:a.tick,font:{size:11}}}}}function qp({title:a,subtitle:n,children:s}){return wt.jsxDEV("div",{className:"surface overflow-hidden",children:[wt.jsxDEV("div",{className:"px-5 py-4 border-b border-[var(--border-subtle)]",children:[wt.jsxDEV("h3",{className:"text-sm font-semibold text-[var(--text-primary)]",children:a},void 0,!1,void 0,this),n?wt.jsxDEV("p",{className:"text-xs text-[var(--text-muted)] mt-1",children:n},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),wt.jsxDEV("div",{className:"overflow-x-auto",children:s},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ez(a){if(a==="right")return"text-right";if(a==="center")return"text-center";return""}function Vp({columns:a,gridTemplate:n}){return wt.jsxDEV("div",{className:"grid gap-3 px-5 py-3 text-[var(--text-muted)] text-xs uppercase tracking-wider font-semibold",style:{gridTemplateColumns:n},children:[a.map((s)=>wt.jsxDEV("div",{className:ez(s.align),children:s.label},s.label,!1,void 0,this)),wt.jsxDEV("div",{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function jp({children:a}){return wt.jsxDEV("div",{className:"max-h-[calc(100vh-300px)] overflow-y-auto",children:a},void 0,!1,void 0,this)}function Gp({model:a,provider:n}){return wt.jsxDEV("div",{children:[wt.jsxDEV("div",{className:"font-medium text-[var(--text-primary)]",children:a},void 0,!1,void 0,this),wt.jsxDEV("div",{className:"text-xs text-[var(--text-muted)]",children:n},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Yp({gridTemplate:a,cells:n,trendCell:s,isExpanded:l,onToggle:r,expandedContent:c}){return wt.jsxDEV("div",{className:"border-t border-[var(--border-subtle)]",children:[wt.jsxDEV("button",{type:"button",onClick:r,className:"w-full bg-transparent border-none text-left px-5 py-3 cursor-pointer hover:bg-[var(--bg-hover)] transition-colors",children:wt.jsxDEV("div",{className:"grid gap-3 items-center",style:{gridTemplateColumns:a},children:[n,wt.jsxDEV("div",{className:"h-10",children:s},void 0,!1,void 0,this),wt.jsxDEV("div",{className:"flex justify-center text-[var(--text-muted)]",children:l?wt.jsxDEV(dd,{size:16},void 0,!1,void 0,this):wt.jsxDEV(cd,{size:16},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),l?wt.jsxDEV("div",{className:"px-5 py-4 bg-[var(--bg-elevated)] border-t border-[var(--border-subtle)]",children:c},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function Xp(){return wt.jsxDEV("div",{className:"text-[var(--text-muted)] text-center text-sm",children:"-"},void 0,!1,void 0,this)}function Wp({message:a="No data available"}){return wt.jsxDEV("div",{className:"h-full flex items-center justify-center text-[var(--text-muted)] text-sm",children:a},void 0,!1,void 0,this)}var Xe=be(nt(),1);wa.register(Fo,No,Uo,Na,In,wn,Cn);var $p={yelling:"#fbbf24",profanity:"#f87171",anguish:"#a78bfa",frustration:"#22d3ee"},yA="2fr 0.9fr 0.8fr 0.8fr 0.8fr 0.9fr 0.8fr 140px 40px";function xA(a){return a.toLocaleString()}function bA(a){if(a.totalMessages===0)return 0;return(a.totalYelling+a.totalProfanity+a.totalAnguish+a.totalNegation+a.totalRepetition+a.totalBlame)/a.totalMessages}function tu(a,n){if(n===0)return"-";let s=a/n*100;if(s===0)return"0%";if(s<1)return`${s.toFixed(1)}%`;return`${s.toFixed(0)}%`}function SA({models:a,behaviorSeries:n}){let[s,l]=Qp.useState(null),r=Mn(),c=Up[r],f=Qp.useMemo(()=>az(n),[n]),h=[...a].sort((p,y)=>{if(y.totalMessages!==p.totalMessages)return y.totalMessages-p.totalMessages;return bA(y)-bA(p)});return Xe.jsxDEV(qp,{title:"Behavior by Model",subtitle:"How often each model elicited a tantrum — rates are per user message",children:[Xe.jsxDEV(Vp,{gridTemplate:yA,columns:[{label:"Model"},{label:"Messages",align:"right"},{label:"CAPS %",align:"right"},{label:"Profanity %",align:"right"},{label:"Anguish %",align:"right"},{label:"Frustration %",align:"right"},{label:"Hits %",align:"right"},{label:"Trend",align:"center"}]},void 0,!1,void 0,this),Xe.jsxDEV(jp,{children:[h.map((p,y)=>{let b=`${p.model}::${p.provider}`,x=f.get(b)?.data??[],v=ra[y%ra.length],I=s===b,M=p.totalNegation+p.totalRepetition+p.totalBlame,D=p.totalYelling+p.totalProfanity+p.totalAnguish+M;return Xe.jsxDEV(Yp,{gridTemplate:yA,isExpanded:I,onToggle:()=>l(I?null:b),cells:[Xe.jsxDEV(Gp,{model:p.model,provider:p.provider},"name",!1,void 0,this),Xe.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:xA(p.totalMessages)},"messages",!1,void 0,this),Xe.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:tu(p.totalYelling,p.totalMessages)},"caps",!1,void 0,this),Xe.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:tu(p.totalProfanity,p.totalMessages)},"profanity",!1,void 0,this),Xe.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:tu(p.totalAnguish,p.totalMessages)},"anguish",!1,void 0,this),Xe.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:tu(M,p.totalMessages)},"frustration",!1,void 0,this),Xe.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:tu(D,p.totalMessages)},"hits",!1,void 0,this)],trendCell:x.length===0?Xe.jsxDEV(Xp,{},void 0,!1,void 0,this):Xe.jsxDEV(Fp,{timestamps:x.map((w)=>w.timestamp),values:x.map((w)=>w.total),color:v},void 0,!1,void 0,this),expandedContent:Xe.jsxDEV("div",{className:"grid gap-4",style:{gridTemplateColumns:"220px 1fr"},children:[Xe.jsxDEV("div",{className:"space-y-4 text-sm",children:[Xe.jsxDEV(_l,{label:"Yelling (CAPS)",total:p.totalYelling,messages:p.totalMessages,valueClass:"text-[var(--accent-amber,#fbbf24)]"},void 0,!1,void 0,this),Xe.jsxDEV(_l,{label:"Profanity",total:p.totalProfanity,messages:p.totalMessages,valueClass:"text-[var(--accent-red,#f87171)]"},void 0,!1,void 0,this),Xe.jsxDEV(_l,{label:"Anguish (!!!, nooo, dude, ..)",total:p.totalAnguish,messages:p.totalMessages,valueClass:"text-[var(--accent-violet,#a78bfa)]"},void 0,!1,void 0,this),Xe.jsxDEV(_l,{label:"Negation (no/nope/wrong)",total:p.totalNegation,messages:p.totalMessages,valueClass:"text-[var(--accent-cyan,#22d3ee)]"},void 0,!1,void 0,this),Xe.jsxDEV(_l,{label:"Repetition (i meant, still doesnt)",total:p.totalRepetition,messages:p.totalMessages,valueClass:"text-[var(--accent-cyan,#22d3ee)]"},void 0,!1,void 0,this),Xe.jsxDEV(_l,{label:"Blame (you didnt, stop X-ing)",total:p.totalBlame,messages:p.totalMessages,valueClass:"text-[var(--accent-cyan,#22d3ee)]"},void 0,!1,void 0,this),Xe.jsxDEV(_l,{label:"Avg chars / msg",total:p.totalChars,messages:p.totalMessages,valueClass:"text-[var(--text-secondary)]",mode:"average"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Xe.jsxDEV("div",{className:"h-[200px]",children:x.length===0?Xe.jsxDEV(Wp,{},void 0,!1,void 0,this):Xe.jsxDEV(tz,{data:x,chartTheme:c},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},b,!1,void 0,this)}),h.length===0?Xe.jsxDEV("div",{className:"border-t border-[var(--border-subtle)] px-5 py-8 text-center text-[var(--text-muted)] text-sm",children:"No user behavior recorded for this range yet."},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function _l({label:a,total:n,messages:s,valueClass:l,mode:r="rate"}){let c=r==="rate"?"% of msgs":"Per msg",f=s>0?r==="rate"?tu(n,s):(n/s).toFixed(0):"-";return Xe.jsxDEV("div",{children:[Xe.jsxDEV("div",{className:"text-[var(--text-primary)] font-medium mb-2",children:a},void 0,!1,void 0,this),Xe.jsxDEV("div",{className:"space-y-1 text-[var(--text-secondary)]",children:[Xe.jsxDEV("div",{className:"flex items-center justify-between",children:[Xe.jsxDEV("span",{children:"Total"},void 0,!1,void 0,this),Xe.jsxDEV("span",{className:`font-mono ${l}`,children:xA(n)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Xe.jsxDEV("div",{className:"flex items-center justify-between",children:[Xe.jsxDEV("span",{children:c},void 0,!1,void 0,this),Xe.jsxDEV("span",{className:"font-mono",children:f},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function tz({data:a,chartTheme:n}){let s={labels:a.map((r)=>qo(new Date(r.timestamp),"MMM d")),datasets:[{label:"CAPS",data:a.map((r)=>r.yelling),...ds($p.yelling)},{label:"Profanity",data:a.map((r)=>r.profanity),...ds($p.profanity)},{label:"Anguish",data:a.map((r)=>r.anguish),...ds($p.anguish)},{label:"Frustration",data:a.map((r)=>r.frustration),...ds($p.frustration)}]},l={responsive:!0,maintainAspectRatio:!1,plugins:Np(n),scales:mA(n)};return Xe.jsxDEV(wo,{data:s,options:l},void 0,!1,void 0,this)}function az(a){if(a.length===0)return new Map;let n=[...new Set(a.map((r)=>r.timestamp))].sort((r,c)=>r-c),s=new Map;for(let r of a){let c=`${r.model}::${r.provider}`,f=s.get(c);if(!f)f=new Map,s.set(c,f);let h=f.get(r.timestamp)??{timestamp:r.timestamp,yelling:0,profanity:0,anguish:0,frustration:0,total:0};h.yelling+=r.yelling,h.profanity+=r.profanity,h.anguish+=r.anguish,h.frustration+=r.negation+r.repetition+r.blame,h.total=h.yelling+h.profanity+h.anguish+h.frustration,f.set(r.timestamp,h)}let l=new Map;for(let[r,c]of s){let f=n.map((h)=>c.get(h)??{timestamp:h,yelling:0,profanity:0,anguish:0,frustration:0,total:0});l.set(r,{data:f})}return l}var vA=be(ea(),1),ou=be(nt(),1);function au(a){return a.toLocaleString()}function Zp(a,n){if(n<=0)return;return`${(a/n).toFixed(2)} / msg`}function LA({overall:a,behaviorSeries:n}){let s=vA.useMemo(()=>{let f=new Map;for(let p of n){let y=`${p.model}::${p.provider}`,b=f.get(y),x=p.yelling+p.profanity+p.anguish+p.negation+p.repetition+p.blame;if(b)b.score+=x;else f.set(y,{model:p.model,provider:p.provider,score:x})}let h=null;for(let p of f.values())if(!h||p.score>h.score)h=p;return h},[n]),l=a.totalNegation+a.totalRepetition+a.totalBlame,r=a.totalMessages,c=[{label:"Messages",value:au(a.totalMessages),sub:r>0?"in selected range":void 0},{label:"Yelling",value:au(a.totalYelling),sub:Zp(a.totalYelling,r)},{label:"Profanity hits",value:au(a.totalProfanity),sub:Zp(a.totalProfanity,r)},{label:"Anguish",value:au(a.totalAnguish),sub:Zp(a.totalAnguish,r)},{label:"Frustration",value:au(l),sub:Zp(l,r)},{label:"Most yelled-at",value:s?.model??"—",sub:s?`${au(s.score)} hits`:void 0}];return ou.jsxDEV("div",{className:"grid grid-cols-2 sm:grid-cols-6 gap-4",children:c.map((f)=>ou.jsxDEV("div",{className:"surface px-4 py-3",children:[ou.jsxDEV("p",{className:"text-xs text-[var(--text-muted)] mb-1",children:f.label},void 0,!1,void 0,this),ou.jsxDEV("p",{className:"text-lg font-semibold text-[var(--text-primary)] truncate",title:f.value,children:f.value},void 0,!1,void 0,this),f.sub&&ou.jsxDEV("p",{className:"text-xs text-[var(--text-muted)] mt-0.5",children:f.sub},void 0,!1,void 0,this)]},f.label,!0,void 0,this))},void 0,!1,void 0,this)}var wA=be(ea(),1);var Jx=3600000,Jp=24*Jx,CA={"1h":{windowLabel:"the last hour",trendLabel:"1h Trend",bucketMs:Jx,bucketCount:1,tickFormat:"HH:mm"},"24h":{windowLabel:"the last 24 hours",trendLabel:"24h Trend",bucketMs:Jx,bucketCount:24,tickFormat:"HH:mm"},"7d":{windowLabel:"the last 7 days",trendLabel:"7d Trend",bucketMs:Jp,bucketCount:7,tickFormat:"MMM d"},"30d":{windowLabel:"the last 30 days",trendLabel:"30d Trend",bucketMs:Jp,bucketCount:30,tickFormat:"MMM d"},"90d":{windowLabel:"the last 90 days",trendLabel:"90d Trend",bucketMs:Jp,bucketCount:90,tickFormat:"MMM d"},all:{windowLabel:"all time",trendLabel:"Trend",bucketMs:Jp,bucketCount:0,tickFormat:"MMM d"}};function Kp(a){return CA[a]}function IA(a,n){return qo(new Date(a),CA[n].tickFormat)}var fs=be(nt(),1);wa.register(Fo,No,Uo,Na,In,wn,Cn,Yr);var em=["#a78bfa","#22d3ee","#ec4899","#4ade80","#fbbf24","#f87171","#60a5fa"],oz={dark:{legendLabel:"#94a3b8",tooltipBackground:"#16161e",tooltipTitle:"#f8fafc",tooltipBody:"#94a3b8",tooltipBorder:"rgba(255, 255, 255, 0.1)",grid:"rgba(255, 255, 255, 0.06)",tick:"#64748b"},light:{legendLabel:"#475569",tooltipBackground:"#ffffff",tooltipTitle:"#0f172a",tooltipBody:"#334155",tooltipBorder:"rgba(15, 23, 42, 0.18)",grid:"rgba(15, 23, 42, 0.08)",tick:"#64748b"}};function MA({modelSeries:a,timeRange:n}){let s=wA.useMemo(()=>nz(a),[a]),l=Mn(),r=oz[l],c=Kp(n),f={labels:s.data.map((p)=>IA(p.timestamp,n)),datasets:s.series.map((p,y)=>({label:p,data:s.data.map((b)=>b[p]??0),borderColor:em[y%em.length],backgroundColor:`${em[y%em.length]}20`,fill:!0,tension:0.4,pointRadius:0,pointHoverRadius:4,borderWidth:2}))},h={responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{legend:{position:"top",align:"start",labels:{color:r.legendLabel,usePointStyle:!0,padding:16,font:{size:12},boxWidth:8}},tooltip:{backgroundColor:r.tooltipBackground,titleColor:r.tooltipTitle,bodyColor:r.tooltipBody,borderColor:r.tooltipBorder,borderWidth:1,padding:12,cornerRadius:8,callbacks:{label:(p)=>{let y=p.dataset.label??"",b=p.parsed.y;return`${y}: ${(b??0).toFixed(1)}%`}}}},scales:{x:{grid:{color:r.grid,drawBorder:!1},ticks:{color:r.tick,font:{size:11}}},y:{grid:{color:r.grid,drawBorder:!1},ticks:{color:r.tick,font:{size:11},callback:(p)=>`${p}%`},min:0,max:100}}};return fs.jsxDEV("div",{className:"surface overflow-hidden",children:[fs.jsxDEV("div",{className:"px-5 py-4 border-b border-[var(--border-subtle)]",children:[fs.jsxDEV("h3",{className:"text-sm font-semibold text-[var(--text-primary)]",children:"Model Preference"},void 0,!1,void 0,this),fs.jsxDEV("p",{className:"text-xs text-[var(--text-muted)] mt-1",children:["Share of requests over ",c.windowLabel]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),fs.jsxDEV("div",{className:"p-5 min-h-[320px]",children:s.data.length===0?fs.jsxDEV("div",{className:"h-full flex items-center justify-center text-[var(--text-muted)] text-sm",children:"No data available"},void 0,!1,void 0,this):fs.jsxDEV("div",{className:"h-[280px]",children:fs.jsxDEV(wo,{data:f,options:h},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function nz(a,n=5){if(a.length===0)return{data:[],series:[]};let s=new Map;for(let x of a){let v=`${x.model}::${x.provider}`,I=s.get(v);if(I)I.total+=x.requests;else s.set(v,{model:x.model,provider:x.provider,total:x.requests})}let r=[...s.entries()].map(([x,v])=>({key:x,...v})).sort((x,v)=>v.total-x.total).slice(0,n),c=new Set(r.map((x)=>x.key)),f=new Map;for(let x of r)f.set(x.model,(f.get(x.model)??0)+1);let h=new Map;for(let x of r){let v=(f.get(x.model)??0)>1;h.set(x.key,v?`${x.model} (${x.provider})`:x.model)}let p=new Map;for(let x of a){let v=`${x.model}::${x.provider}`,I=p.get(x.timestamp)??{timestamp:x.timestamp,total:0};I.total+=x.requests;let M=c.has(v)?h.get(v)??x.model:"Other";I[M]=(I[M]??0)+x.requests,p.set(x.timestamp,I)}let y=r.map((x)=>h.get(x.key)??x.model);if([...p.values()].some((x)=>(x.Other??0)>0))y.push("Other");return{data:[...p.values()].sort((x,v)=>(x.timestamp??0)-(v.timestamp??0)).map((x)=>{let v=x.total??0;for(let I of y)x[I]=v>0?(x[I]??0)/v*100:0;return x}),series:y}}var am=be(ea(),1);var tm=be(nt(),1);wa.register(Fo,No,sd,Na,Uo,In,wn,Cn,Yr);var sz={dark:"rgba(248, 250, 252, 0.7)",light:"rgba(15, 23, 42, 0.6)"};function iz(a){return{id:"costBarLabels",afterDatasetsDraw(n){let{ctx:s}=n;if(!n.data.datasets[0])return;let r=n.getDatasetMeta(0);s.save(),s.font="11px system-ui, sans-serif",s.fillStyle=a,s.textAlign="center",s.textBaseline="bottom";for(let c of r.data){let f=c.$context.parsed.y;if(!f)continue;let h=`$${Math.round(f)}`,{x:p,y}=c.getProps(["x","y"],!0);s.fillText(h,p,y-3)}s.restore()}}}function lz(a){return Op(a,"Cost",{initBucket:()=>({total:0}),accumulate:(n,s)=>{n.total+=s.cost},bucketToValue:(n)=>n.total})}function rz(a){return Ep(a,{rankWeight:(n)=>n.cost,initBucket:()=>({total:0}),accumulate:(n,s)=>{n.total+=s.cost},bucketToValue:(n)=>n.total})}function TA({costSeries:a}){let[n,s]=am.useState(!1),l=Mn(),r=Ap[l],c=am.useMemo(()=>n?rz(a):lz(a),[a,n]),f=_p({chartTheme:r,showLegend:n,defaultLabel:"Cost",formatValue:(b)=>`$${Math.round(b)}`,footer:(b)=>{if(!n||b.length<2)return;let x=b.reduce((v,I)=>v+(I.parsed.y??0),0);return`Total: $${Math.round(x)}`}}),{sharedScaleBase:h,yScale:p}=Dp({chartTheme:r,formatY:(b)=>`$${Math.round(b)}`}),y;if(n){let b={labels:c.labels,datasets:Jr(c,(v)=>Rp(ra[v%ra.length]))};y=tm.jsxDEV(wo,{data:b,options:{responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:f,scales:{x:h,y:p}}},void 0,!1,void 0,this)}else{let b={labels:c.labels,datasets:Jr(c,(I)=>kp(ra[I%ra.length]))},x=iz(sz[l]),v={responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{...f,costBarLabels:{}},scales:{x:{...h,stacked:!0},y:{...p,stacked:!0}},layout:{padding:{top:24}}};y=tm.jsxDEV(Lp,{data:b,options:v,plugins:[x]},void 0,!1,void 0,this)}return tm.jsxDEV(Bp,{title:"Daily Cost",subtitle:"API spending over time",empty:c.labels.length===0,emptyMessage:"No cost data available",byModel:n,onByModelChange:s,children:y},void 0,!1,void 0,this)}var nu=be(nt(),1);function Kx(a){return`$${Math.round(a)}`}function AA({costSeries:a}){let n=a.reduce((p,y)=>p+y.cost,0),s=new Set(a.map((p)=>p.timestamp)).size,l=s>0?n/s:0,r=new Map;for(let p of a)r.set(p.model,(r.get(p.model)??0)+p.cost);let c="",f=0;for(let[p,y]of r)if(y>f)c=p,f=y;let h=[{label:"Total",value:Kx(n)},{label:"Avg / day",value:Kx(l)},{label:"Top model",value:c||"—",sub:c?Kx(f):void 0}];return nu.jsxDEV("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:h.map((p)=>nu.jsxDEV("div",{className:"surface px-4 py-3",children:[nu.jsxDEV("p",{className:"text-xs text-[var(--text-muted)] mb-1",children:p.label},void 0,!1,void 0,this),nu.jsxDEV("p",{className:"text-lg font-semibold text-[var(--text-primary)] truncate",title:p.value,children:p.value},void 0,!1,void 0,this),p.sub&&nu.jsxDEV("p",{className:"text-xs text-[var(--text-muted)] mt-0.5",children:p.sub},void 0,!1,void 0,this)]},p.label,!0,void 0,this))},void 0,!1,void 0,this)}var Ma=be(nt(),1),uz=["overview","requests","errors","models","costs","behavior"],cz=[{label:"1h",value:"1h"},{label:"24h",value:"24h"},{label:"7d",value:"7d"},{label:"30d",value:"30d"},{label:"90d",value:"90d"},{label:"All",value:"all"}];function _A({activeTab:a,onTabChange:n,onSync:s,syncing:l,timeRange:r,onTimeRangeChange:c}){return Ma.jsxDEV("header",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 pb-6 mb-8 border-b border-[var(--border-subtle)]",children:[Ma.jsxDEV("div",{className:"flex items-center gap-3",children:[Ma.jsxDEV("div",{className:"w-10 h-10 rounded-[var(--radius-md)] bg-gradient-to-br from-[var(--accent-pink)] to-[var(--accent-cyan)] flex items-center justify-center shadow-lg",children:Ma.jsxDEV(Ml,{className:"w-5 h-5 text-white"},void 0,!1,void 0,this)},void 0,!1,void 0,this),Ma.jsxDEV("div",{children:[Ma.jsxDEV("h1",{className:"text-xl font-semibold text-[var(--text-primary)]",children:"AI Usage"},void 0,!1,void 0,this),Ma.jsxDEV("p",{className:"text-sm text-[var(--text-muted)]",children:"Statistics & Analytics"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Ma.jsxDEV("div",{className:"flex items-center gap-3",children:[Ma.jsxDEV("div",{className:"flex bg-[var(--bg-surface)] rounded-[var(--radius-md)] p-1 border border-[var(--border-subtle)]",children:uz.map((f)=>Ma.jsxDEV("button",{type:"button",onClick:()=>n(f),className:`tab-btn capitalize ${a===f?"active":""}`,children:f},f,!1,void 0,this))},void 0,!1,void 0,this),Ma.jsxDEV("div",{className:"flex bg-[var(--bg-surface)] rounded-[var(--radius-md)] p-1 border border-[var(--border-subtle)]",children:cz.map((f)=>Ma.jsxDEV("button",{type:"button",onClick:()=>c(f.value),className:`tab-btn ${r===f.value?"active":""}`,title:f.value==="all"?"All time":`Last ${f.label}`,children:f.label},f.value,!1,void 0,this))},void 0,!1,void 0,this),Ma.jsxDEV("button",{type:"button",onClick:s,disabled:l,className:"btn btn-primary",children:[Ma.jsxDEV(bd,{size:16,className:l?"spin":""},void 0,!1,void 0,this),l?"Syncing...":"Sync"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var om=be(ea(),1);var We=be(nt(),1);wa.register(Fo,No,Uo,Na,In,wn,Cn);var DA="2fr 0.9fr 0.9fr 1fr 0.8fr 0.8fr 140px 40px";function RA({models:a,performanceSeries:n,timeRange:s}){let[l,r]=om.useState(null),c=Kp(s),f=om.useMemo(()=>fz(n,c.bucketCount,c.bucketMs),[n,c.bucketCount,c.bucketMs]),h=Mn(),p=Up[h],y=[...a].sort((b,x)=>x.totalInputTokens+x.totalOutputTokens-(b.totalInputTokens+b.totalOutputTokens));return We.jsxDEV(qp,{title:"Model Statistics",children:[We.jsxDEV(Vp,{gridTemplate:DA,columns:[{label:"Model"},{label:"Requests",align:"right"},{label:"Cost",align:"right"},{label:"Tokens",align:"right"},{label:"Tokens/s",align:"right"},{label:"TTFT",align:"right"},{label:c.trendLabel,align:"center"}]},void 0,!1,void 0,this),We.jsxDEV(jp,{children:y.map((b,x)=>{let v=`${b.model}::${b.provider}`,M=f.get(v)?.data??[],D=ra[x%ra.length],w=l===v,z=b.errorRate*100;return We.jsxDEV(Yp,{gridTemplate:DA,isExpanded:w,onToggle:()=>r(w?null:v),cells:[We.jsxDEV(Gp,{model:b.model,provider:b.provider},"name",!1,void 0,this),We.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:b.totalRequests.toLocaleString()},"requests",!1,void 0,this),We.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:["$",b.totalCost.toFixed(2)]},"cost",!0,void 0,this),We.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:(b.totalInputTokens+b.totalOutputTokens).toLocaleString()},"tokens",!1,void 0,this),We.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:b.avgTokensPerSecond?.toFixed(1)??"-"},"tps",!1,void 0,this),We.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:b.avgTtft?`${(b.avgTtft/1000).toFixed(2)}s`:"-"},"ttft",!1,void 0,this)],trendCell:M.length===0?We.jsxDEV(Xp,{},void 0,!1,void 0,this):We.jsxDEV(Fp,{timestamps:M.map((N)=>N.timestamp),values:M.map((N)=>N.avgTokensPerSecond??0),color:D},void 0,!1,void 0,this),expandedContent:We.jsxDEV("div",{className:"grid gap-4",style:{gridTemplateColumns:"200px 1fr"},children:[We.jsxDEV("div",{className:"space-y-4 text-sm",children:[We.jsxDEV("div",{children:[We.jsxDEV("div",{className:"text-[var(--text-primary)] font-medium mb-2",children:"Quality"},void 0,!1,void 0,this),We.jsxDEV("div",{className:"space-y-1 text-[var(--text-secondary)]",children:[We.jsxDEV("div",{className:"flex items-center justify-between",children:[We.jsxDEV("span",{children:"Error rate"},void 0,!1,void 0,this),We.jsxDEV("span",{className:z>5?"text-[var(--accent-red)]":"text-[var(--accent-green)]",children:[z.toFixed(1),"%"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),We.jsxDEV("div",{className:"flex items-center justify-between",children:[We.jsxDEV("span",{children:"Cache rate"},void 0,!1,void 0,this),We.jsxDEV("span",{className:"text-[var(--accent-cyan)]",children:[(b.cacheRate*100).toFixed(1),"%"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),We.jsxDEV("div",{children:[We.jsxDEV("div",{className:"text-[var(--text-primary)] font-medium mb-2",children:"Latency"},void 0,!1,void 0,this),We.jsxDEV("div",{className:"space-y-1 text-[var(--text-secondary)]",children:[We.jsxDEV("div",{className:"flex items-center justify-between",children:[We.jsxDEV("span",{children:"Avg duration"},void 0,!1,void 0,this),We.jsxDEV("span",{className:"font-mono",children:b.avgDuration?`${(b.avgDuration/1000).toFixed(2)}s`:"-"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),We.jsxDEV("div",{className:"flex items-center justify-between",children:[We.jsxDEV("span",{children:"Avg TTFT"},void 0,!1,void 0,this),We.jsxDEV("span",{className:"font-mono",children:b.avgTtft?`${(b.avgTtft/1000).toFixed(2)}s`:"-"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),We.jsxDEV("div",{className:"h-[200px]",children:M.length===0?We.jsxDEV(Wp,{},void 0,!1,void 0,this):We.jsxDEV(dz,{data:M,color:D,chartTheme:p},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},v,!1,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function dz({data:a,color:n,chartTheme:s}){let l={labels:a.map((c)=>qo(new Date(c.timestamp),"MMM d")),datasets:[{label:"TTFT",data:a.map((c)=>c.avgTtftSeconds??null),...ds("#fbbf24"),yAxisID:"y"},{label:"Tokens/s",data:a.map((c)=>c.avgTokensPerSecond??null),...ds(n),yAxisID:"y1"}]},r={responsive:!0,maintainAspectRatio:!1,plugins:Np(s),scales:gA(s)};return We.jsxDEV(wo,{data:l,options:r},void 0,!1,void 0,this)}function fz(a,n,s){let l=a.reduce((x,v)=>Math.max(x,v.timestamp),0),r=l>0?l:Math.floor(Date.now()/s)*s,c=new Set(a.map((x)=>x.timestamp)),f=n>0?n:Math.max(1,c.size),h=r-(f-1)*s,p=Array.from({length:f},(x,v)=>h+v*s),y=new Map(p.map((x,v)=>[x,v])),b=new Map;for(let x of a){let v=`${x.model}::${x.provider}`,I=b.get(v);if(!I)I={label:`${x.model} (${x.provider})`,data:p.map((D)=>({timestamp:D,avgTtftSeconds:null,avgTokensPerSecond:null,requests:0}))},b.set(v,I);let M=y.get(x.timestamp);if(M===void 0)continue;I.data[M]={timestamp:x.timestamp,avgTtftSeconds:x.avgTtft!==null?x.avgTtft/1000:null,avgTokensPerSecond:x.avgTokensPerSecond,requests:x.requests}}return b}var Ld=be(ea(),1);var le=be(nt(),1);function kA({id:a,onClose:n}){let[s,l]=Ld.useState(null),[r,c]=Ld.useState(!0);if(Ld.useEffect(()=>{KI(a).then(l).catch(console.error).finally(()=>c(!1))},[a]),!s&&r)return le.jsxDEV("div",{className:"fixed inset-0 bg-[var(--bg-overlay)] flex justify-center items-center z-[100]",children:le.jsxDEV("div",{className:"surface px-8 py-6",children:le.jsxDEV("div",{className:"flex items-center gap-3 text-[var(--text-secondary)]",children:[le.jsxDEV("div",{className:"w-5 h-5 border-2 border-[var(--border-default)] border-t-[var(--accent-cyan)] rounded-full spin"},void 0,!1,void 0,this),le.jsxDEV("span",{children:"Loading..."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(!s)return null;return le.jsxDEV("div",{role:"presentation",className:"fixed inset-0 bg-[var(--bg-overlay)] backdrop-blur-sm flex justify-end z-[100] animate-fade-in",onClick:n,children:le.jsxDEV("div",{role:"dialog","aria-modal":"true",className:"w-[600px] max-w-full bg-[var(--bg-page)] h-full overflow-y-auto border-l border-[var(--border-subtle)] animate-slide-up",onClick:(f)=>f.stopPropagation(),children:[le.jsxDEV("div",{className:"sticky top-0 bg-[var(--bg-page)]/95 backdrop-blur border-b border-[var(--border-subtle)] px-6 py-4 flex justify-between items-center z-10",children:[le.jsxDEV("div",{className:"flex items-center gap-3",children:[le.jsxDEV("div",{className:"w-8 h-8 rounded-[var(--radius-sm)] bg-gradient-to-br from-[var(--accent-pink)]/20 to-[var(--accent-cyan)]/20 flex items-center justify-center",children:le.jsxDEV(vi,{size:16,className:"text-[var(--accent-cyan)]"},void 0,!1,void 0,this)},void 0,!1,void 0,this),le.jsxDEV("h2",{className:"text-lg font-semibold text-[var(--text-primary)]",children:"Request Details"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("button",{type:"button",onClick:n,className:"p-2 rounded-[var(--radius-sm)] text-[var(--text-muted)] hover:text-[var(--text-primary)] hover:bg-[var(--bg-hover)] transition-colors",children:le.jsxDEV(vd,{size:20},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{className:"p-6 space-y-6",children:[le.jsxDEV("div",{className:"surface p-5",children:le.jsxDEV("div",{className:"flex items-center justify-between mb-4",children:[le.jsxDEV("div",{children:[le.jsxDEV("div",{className:"text-2xl font-bold text-[var(--text-primary)]",children:s.model},void 0,!1,void 0,this),le.jsxDEV("div",{className:"text-sm text-[var(--text-muted)]",children:s.provider},void 0,!1,void 0,this)]},void 0,!0,void 0,this),s.errorMessage?le.jsxDEV("span",{className:"badge badge-error",children:"Error"},void 0,!1,void 0,this):le.jsxDEV("span",{className:"badge badge-success",children:"Success"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),le.jsxDEV("div",{className:"grid grid-cols-2 gap-4",children:[le.jsxDEV("div",{className:"surface p-4",children:[le.jsxDEV("div",{className:"flex items-center gap-2 text-[var(--text-muted)] mb-2",children:[le.jsxDEV(hd,{size:14},void 0,!1,void 0,this),le.jsxDEV("span",{className:"text-xs uppercase tracking-wide",children:"Cost"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{className:"text-xl font-semibold text-[var(--text-primary)]",children:["$",s.usage.cost.total.toFixed(4)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{className:"surface p-4",children:[le.jsxDEV("div",{className:"flex items-center gap-2 text-[var(--text-muted)] mb-2",children:[le.jsxDEV(Tl,{size:14},void 0,!1,void 0,this),le.jsxDEV("span",{className:"text-xs uppercase tracking-wide",children:"Premium Reqs"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{className:"text-xl font-semibold text-[var(--text-primary)]",children:(s.usage.premiumRequests??0).toLocaleString()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{className:"surface p-4",children:[le.jsxDEV("div",{className:"flex items-center gap-2 text-[var(--text-muted)] mb-2",children:[le.jsxDEV(yd,{size:14},void 0,!1,void 0,this),le.jsxDEV("span",{className:"text-xs uppercase tracking-wide",children:"Tokens"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{className:"text-xl font-semibold text-[var(--text-primary)]",children:s.usage.totalTokens.toLocaleString()},void 0,!1,void 0,this),le.jsxDEV("div",{className:"text-xs text-[var(--text-muted)] mt-1",children:[s.usage.input.toLocaleString()," in · ",s.usage.output.toLocaleString()," out"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{className:"surface p-4",children:[le.jsxDEV("div",{className:"flex items-center gap-2 text-[var(--text-muted)] mb-2",children:[le.jsxDEV(fd,{size:14},void 0,!1,void 0,this),le.jsxDEV("span",{className:"text-xs uppercase tracking-wide",children:"Duration"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{className:"text-xl font-semibold text-[var(--text-primary)]",children:s.duration?`${(s.duration/1000).toFixed(2)}s`:"-"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{className:"surface p-4",children:[le.jsxDEV("div",{className:"flex items-center gap-2 text-[var(--text-muted)] mb-2",children:[le.jsxDEV(Al,{size:14},void 0,!1,void 0,this),le.jsxDEV("span",{className:"text-xs uppercase tracking-wide",children:"TTFT"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{className:"text-xl font-semibold text-[var(--text-primary)]",children:s.ttft?`${(s.ttft/1000).toFixed(2)}s`:"-"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),s.duration&&s.usage.output>0&&le.jsxDEV("div",{className:"surface p-4",children:[le.jsxDEV("div",{className:"flex items-center justify-between",children:[le.jsxDEV("div",{className:"flex items-center gap-2 text-[var(--text-muted)]",children:[le.jsxDEV(gd,{size:14},void 0,!1,void 0,this),le.jsxDEV("span",{className:"text-xs uppercase tracking-wide",children:"Throughput"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("span",{className:"text-2xl font-bold gradient-text",children:(s.usage.output*1000/s.duration).toFixed(1)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{className:"text-xs text-[var(--text-muted)] mt-1 text-right",children:"tokens/second"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{children:[le.jsxDEV("h3",{className:"text-sm font-semibold text-[var(--text-primary)] mb-3",children:"Output"},void 0,!1,void 0,this),le.jsxDEV("pre",{className:"surface bg-[var(--bg-elevated)] p-4 rounded-[var(--radius-md)] text-sm font-mono text-[var(--text-secondary)] overflow-x-auto",children:JSON.stringify(s.output,null,2)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le.jsxDEV("div",{children:[le.jsxDEV("h3",{className:"text-sm font-semibold text-[var(--text-primary)] mb-3",children:"Raw Metadata"},void 0,!1,void 0,this),le.jsxDEV("pre",{className:"surface bg-[var(--bg-elevated)] p-4 rounded-[var(--radius-md)] text-xs font-mono text-[var(--text-muted)] overflow-x-auto",children:JSON.stringify(s,null,2)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var ft=be(nt(),1);function Cd({requests:a,onSelect:n,title:s}){return ft.jsxDEV("div",{className:"surface overflow-hidden flex flex-col h-full",children:[ft.jsxDEV("div",{className:"px-5 py-4 border-b border-[var(--border-subtle)]",children:ft.jsxDEV("h3",{className:"text-sm font-semibold text-[var(--text-primary)]",children:s},void 0,!1,void 0,this)},void 0,!1,void 0,this),ft.jsxDEV("div",{className:"overflow-auto flex-1",children:ft.jsxDEV("table",{className:"w-full",children:[ft.jsxDEV("thead",{className:"bg-[var(--bg-elevated)] sticky top-0 z-10",children:ft.jsxDEV("tr",{children:[ft.jsxDEV("th",{className:"text-left py-3 px-4 table-header",children:"Model"},void 0,!1,void 0,this),ft.jsxDEV("th",{className:"text-left py-3 px-4 table-header",children:"Time"},void 0,!1,void 0,this),ft.jsxDEV("th",{className:"text-right py-3 px-4 table-header",children:"Tokens"},void 0,!1,void 0,this),ft.jsxDEV("th",{className:"text-right py-3 px-4 table-header",children:"Cost"},void 0,!1,void 0,this),ft.jsxDEV("th",{className:"text-right py-3 px-4 table-header",children:"Duration"},void 0,!1,void 0,this),ft.jsxDEV("th",{className:"text-center py-3 px-4 table-header",children:"Status"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),ft.jsxDEV("tbody",{children:[a.map((l)=>ft.jsxDEV("tr",{onClick:()=>n(l),className:"table-row cursor-pointer border-b border-[var(--border-subtle)] last:border-b-0",children:[ft.jsxDEV("td",{className:"py-3 px-4",children:[ft.jsxDEV("div",{className:"font-medium text-[var(--text-primary)] text-sm",children:l.model},void 0,!1,void 0,this),ft.jsxDEV("div",{className:"text-xs text-[var(--text-muted)]",children:l.provider},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ft.jsxDEV("td",{className:"py-3 px-4 text-sm text-[var(--text-secondary)]",children:sA(l.timestamp,{addSuffix:!0})},void 0,!1,void 0,this),ft.jsxDEV("td",{className:"py-3 px-4 text-right text-sm text-[var(--text-secondary)] font-mono",children:l.usage.totalTokens.toLocaleString()},void 0,!1,void 0,this),ft.jsxDEV("td",{className:"py-3 px-4 text-right text-sm text-[var(--text-secondary)] font-mono",children:["$",l.usage.cost.total.toFixed(4)]},void 0,!0,void 0,this),ft.jsxDEV("td",{className:"py-3 px-4 text-right text-sm text-[var(--text-secondary)] font-mono",children:l.duration?`${(l.duration/1000).toFixed(1)}s`:"-"},void 0,!1,void 0,this),ft.jsxDEV("td",{className:"py-3 px-4 text-center",children:l.errorMessage?ft.jsxDEV(Si,{size:16,className:"text-[var(--accent-red)] mx-auto"},void 0,!1,void 0,this):ft.jsxDEV(xi,{size:16,className:"text-[var(--accent-green)] mx-auto"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},`${l.sessionFile}-${l.entryId}`,!0,void 0,this)),a.length===0&&ft.jsxDEV("tr",{children:ft.jsxDEV("td",{colSpan:6,className:"py-12 text-center text-[var(--text-muted)] text-sm",children:"No requests found"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var hs=be(nt(),1),hz=new Intl.NumberFormat(void 0,{notation:"compact",maximumFractionDigits:1});function OA(a){return hz.format(a)}function e0(a){return a.toLocaleString()}var Id=(a)=>a.totalInputTokens+a.totalOutputTokens,pz=[{key:"requests",title:"Total Requests",icon:xd,color:"var(--accent-violet)",getValue:(a)=>a.totalRequests.toLocaleString(),getDetail:(a)=>`${a.successfulRequests.toLocaleString()} success · ${a.failedRequests.toLocaleString()} errors`},{key:"cost",title:"Total Cost",icon:Ml,color:"var(--accent-pink)",getValue:(a)=>`$${a.totalCost.toFixed(2)}`,getDetail:(a)=>a.totalRequests>0?`$${(a.totalCost/a.totalRequests).toFixed(4)} avg/req`:"-"},{key:"premiumRequests",title:"Premium Reqs",icon:Tl,color:"var(--accent-amber)",getValue:(a)=>e0(a.totalPremiumRequests),getDetail:(a)=>a.totalRequests>0?`${(a.totalPremiumRequests/a.totalRequests*100).toFixed(1)}% of requests`:"-"},{key:"cache",title:"Cache Rate",icon:pd,color:"var(--accent-cyan)",getValue:(a)=>`${(a.cacheRate*100).toFixed(1)}%`,getDetail:(a)=>`${OA(a.totalCacheReadTokens)} cached tokens`},{key:"inputTokens",title:"Input Tokens",icon:md,color:"var(--accent-violet)",getValue:(a)=>e0(a.totalInputTokens),getDetail:(a)=>Id(a)>0?`${(a.totalInputTokens/Id(a)*100).toFixed(1)}% of prompt+completion`:"-"},{key:"outputTokens",title:"Output Tokens",icon:Sd,color:"var(--accent-pink)",getValue:(a)=>e0(a.totalOutputTokens),getDetail:(a)=>Id(a)>0?`${(a.totalOutputTokens/Id(a)*100).toFixed(1)}% of prompt+completion`:"-"},{key:"errors",title:"Error Rate",icon:bi,color:"var(--accent-red)",getValue:(a)=>`${(a.errorRate*100).toFixed(1)}%`,getDetail:(a)=>`${a.failedRequests.toLocaleString()} failed requests`},{key:"tokens",title:"Tokens/Sec",icon:yi,color:"var(--accent-green)",getValue:(a)=>a.avgTokensPerSecond?.toFixed(1)??"-",getDetail:(a)=>`${OA(Id(a))} total prompt+completion`},{key:"ttft",title:"TTFT",icon:Al,color:"var(--accent-amber)",getValue:(a)=>a.avgTtft?`${(a.avgTtft/1000).toFixed(2)}s`:"-",getDetail:()=>"Time to first token"}];function EA({stats:a}){return hs.jsxDEV("div",{className:"grid grid-cols-2 lg:grid-cols-3 xl:grid-cols-9 gap-4 mb-8",children:pz.map((n)=>{let s=n.icon;return hs.jsxDEV("div",{className:"stat-card group",children:[hs.jsxDEV("div",{className:"flex items-center justify-between mb-3",children:[hs.jsxDEV("span",{className:"text-sm font-medium text-[var(--text-secondary)]",children:n.title},void 0,!1,void 0,this),hs.jsxDEV("div",{className:"p-2 rounded-[var(--radius-sm)] transition-colors",style:{backgroundColor:`${n.color}15`},children:hs.jsxDEV(s,{size:18,style:{color:n.color},className:"transition-transform group-hover:scale-110"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),hs.jsxDEV("div",{className:"text-2xl font-bold text-[var(--text-primary)] mb-1",children:n.getValue(a)},void 0,!1,void 0,this),hs.jsxDEV("div",{className:"text-xs text-[var(--text-muted)] truncate",children:n.getDetail(a)},void 0,!1,void 0,this)]},n.key,!0,void 0,this)})},void 0,!1,void 0,this)}var qe=be(nt(),1);function t0(){let[a,n]=ua.useState(null),[s,l]=ua.useState(null),[r,c]=ua.useState(null),[f,h]=ua.useState(null),[p,y]=ua.useState([]),[b,x]=ua.useState([]),[v,I]=ua.useState(null),[M,D]=ua.useState(!1),[w,z]=ua.useState("overview"),[N,Q]=ua.useState("24h"),Z=ua.useCallback(async()=>{try{let[V,J]=await Promise.all([ZI(50),JI(50)]);y(V),x(J)}catch(V){console.error(V)}},[]),X=ua.useCallback(async()=>{try{if(w==="models"){l(await $I(N));return}if(w==="costs"){c(await QI(N));return}if(w==="behavior"){h(await tw(N));return}if(w==="overview")n(await WI(N))}catch(V){console.error(V)}},[w,N]),oe=async()=>{D(!0);try{await ew(),await Promise.all([X(),Z()])}finally{D(!1)}};return ua.useEffect(()=>{Z();let V=setInterval(Z,30000);return()=>clearInterval(V)},[Z]),ua.useEffect(()=>{X();let V=setInterval(X,30000);return()=>clearInterval(V)},[X]),qe.jsxDEV("div",{className:"min-h-screen",children:qe.jsxDEV("div",{className:"max-w-[1600px] mx-auto px-6 py-6",children:[qe.jsxDEV(_A,{activeTab:w,onTabChange:z,onSync:oe,syncing:M,timeRange:N,onTimeRangeChange:Q},void 0,!1,void 0,this),w==="overview"&&qe.jsxDEV("div",{className:"space-y-6 animate-fade-in",children:[a?qe.jsxDEV(EA,{stats:a.overall},void 0,!1,void 0,this):qe.jsxDEV(nm,{label:"Loading overview..."},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"grid lg:grid-cols-2 gap-6",children:[qe.jsxDEV(Cd,{title:"Recent Requests",requests:p.slice(0,10),onSelect:(V)=>V.id&&I(V.id)},void 0,!1,void 0,this),qe.jsxDEV(Cd,{title:"Recent Errors",requests:b.slice(0,10),onSelect:(V)=>V.id&&I(V.id)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),w==="requests"&&qe.jsxDEV("div",{className:"h-[calc(100vh-140px)] animate-fade-in",children:qe.jsxDEV(Cd,{title:"All Recent Requests",requests:p,onSelect:(V)=>V.id&&I(V.id)},void 0,!1,void 0,this)},void 0,!1,void 0,this),w==="errors"&&qe.jsxDEV("div",{className:"h-[calc(100vh-140px)] animate-fade-in",children:qe.jsxDEV(Cd,{title:"Failed Requests",requests:b,onSelect:(V)=>V.id&&I(V.id)},void 0,!1,void 0,this)},void 0,!1,void 0,this),w==="models"&&qe.jsxDEV("div",{className:"space-y-6 animate-fade-in",children:s?qe.jsxDEV(qe.Fragment,{children:[qe.jsxDEV(MA,{modelSeries:s.modelSeries,timeRange:N},void 0,!1,void 0,this),qe.jsxDEV(RA,{models:s.byModel,performanceSeries:s.modelPerformanceSeries,timeRange:N},void 0,!1,void 0,this)]},void 0,!0,void 0,this):qe.jsxDEV(nm,{label:"Loading models..."},void 0,!1,void 0,this)},void 0,!1,void 0,this),w==="costs"&&qe.jsxDEV("div",{className:"space-y-6 animate-fade-in",children:r?qe.jsxDEV(qe.Fragment,{children:[qe.jsxDEV(AA,{costSeries:r.costSeries},void 0,!1,void 0,this),qe.jsxDEV(TA,{costSeries:r.costSeries},void 0,!1,void 0,this)]},void 0,!0,void 0,this):qe.jsxDEV(nm,{label:"Loading costs..."},void 0,!1,void 0,this)},void 0,!1,void 0,this),w==="behavior"&&qe.jsxDEV("div",{className:"space-y-6 animate-fade-in",children:f?qe.jsxDEV(qe.Fragment,{children:[qe.jsxDEV(LA,{overall:f.overall,behaviorSeries:f.behaviorSeries},void 0,!1,void 0,this),qe.jsxDEV(uA,{behaviorSeries:f.behaviorSeries},void 0,!1,void 0,this),qe.jsxDEV(SA,{models:f.byModel,behaviorSeries:f.behaviorSeries},void 0,!1,void 0,this)]},void 0,!0,void 0,this):qe.jsxDEV(nm,{label:"Loading behavior..."},void 0,!1,void 0,this)},void 0,!1,void 0,this),v!==null&&qe.jsxDEV(kA,{id:v,onClose:()=>I(null)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function nm({label:a}){return qe.jsxDEV("div",{className:"min-h-[180px] flex items-center justify-center",children:qe.jsxDEV("div",{className:"flex items-center gap-3 text-[var(--text-muted)]",children:[qe.jsxDEV("div",{className:"w-5 h-5 border-2 border-[var(--border-default)] border-t-[var(--accent-cyan)] rounded-full spin"},void 0,!1,void 0,this),qe.jsxDEV("span",{className:"text-sm",children:a},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var PA=be(nt(),1),mz=BA.createRoot(document.getElementById("root"));mz.render(PA.jsxDEV(t0,{},void 0,!1,void 0,this));
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@gajae-code/stats",
|
|
4
|
-
"version": "0.18.
|
|
4
|
+
"version": "0.18.8",
|
|
5
5
|
"description": "Local observability dashboard for pi AI usage statistics",
|
|
6
6
|
"homepage": "https://gajae-code.com",
|
|
7
7
|
"author": "Yeachan-Heo",
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"fmt": "biome format --write ."
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@gajae-code/ai": "0.18.
|
|
42
|
-
"@gajae-code/utils": "0.18.
|
|
41
|
+
"@gajae-code/ai": "0.18.8",
|
|
42
|
+
"@gajae-code/utils": "0.18.8",
|
|
43
43
|
"@tailwindcss/node": "^4.2.4",
|
|
44
44
|
"chart.js": "^4.5.1",
|
|
45
45
|
"date-fns": "^4.1.0",
|
|
@@ -228,16 +228,18 @@ export function buildTopNByModelSeries<T extends ModelKeyedPoint, B>(
|
|
|
228
228
|
const hasOther = points.some(p => !topKeys.has(`${p.model}::${p.provider}`));
|
|
229
229
|
if (hasOther) seriesNames.push("Other");
|
|
230
230
|
|
|
231
|
-
|
|
232
|
-
|
|
231
|
+
// Model labels are attacker-controlled strings. A plain object would treat
|
|
232
|
+
// "__proto__" as the inherited prototype and mutate Object.prototype.
|
|
233
|
+
const dayMap = new Map<number, Map<string, B>>();
|
|
234
|
+
for (const day of allDays) dayMap.set(day, new Map());
|
|
233
235
|
for (const point of points) {
|
|
234
236
|
const key = `${point.model}::${point.provider}`;
|
|
235
237
|
const label = topKeys.has(key) ? (labelByKey.get(key) ?? point.model) : "Other";
|
|
236
238
|
const row = dayMap.get(point.timestamp);
|
|
237
239
|
if (!row) continue;
|
|
238
|
-
const bucket = row
|
|
240
|
+
const bucket = row.get(label) ?? initBucket();
|
|
239
241
|
accumulate(bucket, point);
|
|
240
|
-
row
|
|
242
|
+
row.set(label, bucket);
|
|
241
243
|
}
|
|
242
244
|
|
|
243
245
|
return {
|
|
@@ -245,7 +247,7 @@ export function buildTopNByModelSeries<T extends ModelKeyedPoint, B>(
|
|
|
245
247
|
datasets: seriesNames.map(name => ({
|
|
246
248
|
label: name,
|
|
247
249
|
data: allDays.map(day => {
|
|
248
|
-
const bucket = dayMap.get(day)?.
|
|
250
|
+
const bucket = dayMap.get(day)?.get(name);
|
|
249
251
|
return bucket ? bucketToValue(bucket) : 0;
|
|
250
252
|
}),
|
|
251
253
|
})),
|