@pb33f/cowboy-components 0.12.0 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/{_basePickBy-DutEHqAt.js → _basePickBy-CHhH8kjm.js} +2 -2
  2. package/dist/{_baseUniq-BaFN6LLe.js → _baseUniq-CqLfUP_m.js} +1 -1
  3. package/dist/{arc-C_BQqdHh.js → arc-Bc0dbGi3.js} +1 -1
  4. package/dist/{architecture-U656AL7Q-DBJtTFqh.js → architecture-U656AL7Q-B1Af1iSx.js} +1 -1
  5. package/dist/{architectureDiagram-VXUJARFQ-Duxne8BG.js → architectureDiagram-VXUJARFQ-CJl5OVfp.js} +3 -3
  6. package/dist/{blockDiagram-VD42YOAC-a8IAc1p-.js → blockDiagram-VD42YOAC-CICDv6Wk.js} +5 -5
  7. package/dist/{c4Diagram-YG6GDRKO-DKHf3S5X.js → c4Diagram-YG6GDRKO-MIX4hsr0.js} +2 -2
  8. package/dist/{channel-BrDRjKFM.js → channel-DrLe0ToL.js} +1 -1
  9. package/dist/{chunk-4BX2VUAB-rO4gQTSn.js → chunk-4BX2VUAB-C0WUXJTj.js} +1 -1
  10. package/dist/{chunk-55IACEB6-xU7M_-1z.js → chunk-55IACEB6-BQmuOZTD.js} +1 -1
  11. package/dist/{chunk-B4BG7PRW-CyCVBhx8.js → chunk-B4BG7PRW-BVzpD5kO.js} +4 -4
  12. package/dist/{chunk-DI55MBZ5-BVWDssHd.js → chunk-DI55MBZ5-BBKOtSgz.js} +3 -3
  13. package/dist/{chunk-FMBD7UC4-C2BHhXyD.js → chunk-FMBD7UC4-CKC9V5WI.js} +1 -1
  14. package/dist/{chunk-QN33PNHL-CF8FtUjq.js → chunk-QN33PNHL-BpLt0jar.js} +1 -1
  15. package/dist/{chunk-QZHKN3VN-C76zdhmt.js → chunk-QZHKN3VN-D8_F_eNC.js} +1 -1
  16. package/dist/{chunk-TZMSLE5B-DDfh65h7.js → chunk-TZMSLE5B-DT1-HT9H.js} +1 -1
  17. package/dist/{classDiagram-v2-WZHVMYZB-Dqqym7_Y.js → classDiagram-2ON5EDUG-Cw7wLeoA.js} +2 -2
  18. package/dist/{classDiagram-2ON5EDUG-Dqqym7_Y.js → classDiagram-v2-WZHVMYZB-Cw7wLeoA.js} +2 -2
  19. package/dist/{clone-Ciuvzcw5.js → clone-ygSTXFFk.js} +1 -1
  20. package/dist/components/charts/beefy-chart.d.ts +4 -1
  21. package/dist/components/charts/beefy-chart.js +25 -5
  22. package/dist/components/time-vortex/timeline-view.css.js +11 -0
  23. package/dist/components/time-vortex/timeline-view.js +0 -1
  24. package/dist/{cose-bilkent-S5V4N54A-B6YhG0jQ.js → cose-bilkent-S5V4N54A-DxgFNfEN.js} +1 -1
  25. package/dist/{cowboy-components-B-_nREEs.js → cowboy-components-Bg77T9d-.js} +59 -35
  26. package/dist/cowboy-components.umd.cjs +20 -6
  27. package/dist/{dagre-6UL2VRFP-DgD6IJ9F.js → dagre-6UL2VRFP-D9TgF5Zl.js} +6 -6
  28. package/dist/{diagram-PSM6KHXK-C6Ify0Ii.js → diagram-PSM6KHXK-BYwvaRBx.js} +4 -4
  29. package/dist/{diagram-QEK2KX5R-BZYBfJWN.js → diagram-QEK2KX5R-D5qHrA0J.js} +3 -3
  30. package/dist/{diagram-S2PKOQOG-pD2aZK6J.js → diagram-S2PKOQOG-fAU_B7kH.js} +3 -3
  31. package/dist/{erDiagram-Q2GNP2WA-CLzSou8D.js → erDiagram-Q2GNP2WA-hZ_gfIFY.js} +4 -4
  32. package/dist/{flowDiagram-NV44I4VS-Dv-mV3jC.js → flowDiagram-NV44I4VS-vUzBvpAl.js} +5 -5
  33. package/dist/{ganttDiagram-LVOFAZNH-9caw7-W9.js → ganttDiagram-LVOFAZNH-WYbgDSC6.js} +2 -2
  34. package/dist/{gitGraph-F6HP7TQM-BXi9VWGG.js → gitGraph-F6HP7TQM-BGxu6gOF.js} +1 -1
  35. package/dist/{gitGraphDiagram-NY62KEGX-AjRVeBfh.js → gitGraphDiagram-NY62KEGX-fZaPPkg2.js} +4 -4
  36. package/dist/{graph-CQfZU7JF.js → graph-DXbidQWz.js} +2 -2
  37. package/dist/info-NVLQJR56-BRqR8nwN.js +5 -0
  38. package/dist/{infoDiagram-F6ZHWCRC-Db-l9t59.js → infoDiagram-F6ZHWCRC-CE5aCiKV.js} +2 -2
  39. package/dist/{journeyDiagram-XKPGCS4Q-Bzsre_OA.js → journeyDiagram-XKPGCS4Q-DJ6V2dBQ.js} +4 -4
  40. package/dist/{kanban-definition-3W4ZIXB7-DNQ1RxWM.js → kanban-definition-3W4ZIXB7-CHwozqlt.js} +2 -2
  41. package/dist/{layout-DWA7jiRR.js → layout-D2zY0T7Y.js} +4 -4
  42. package/dist/{linear-D4cCLhR2.js → linear-BTUJ7KAT.js} +1 -1
  43. package/dist/{mermaid-parser.core-DVD4vgd2.js → mermaid-parser.core-CyYIBqRM.js} +11 -11
  44. package/dist/{mindmap-definition-VGOIOE7T-CCwE02s8.js → mindmap-definition-VGOIOE7T-CEY6R2uT.js} +3 -3
  45. package/dist/{packet-BFZMPI3H-BEUG4mf5.js → packet-BFZMPI3H-BRke7E6n.js} +1 -1
  46. package/dist/pie-7BOR55EZ-CSvfOnqQ.js +5 -0
  47. package/dist/{pieDiagram-ADFJNKIX-DGK58sb4.js → pieDiagram-ADFJNKIX-COTsjh1f.js} +4 -4
  48. package/dist/{quadrantDiagram-AYHSOK5B-rVXhriiY.js → quadrantDiagram-AYHSOK5B-CwZFHRdc.js} +2 -2
  49. package/dist/radar-NHE76QYJ-COI8FsH2.js +5 -0
  50. package/dist/{requirementDiagram-UZGBJVZJ-C6FZbh4u.js → requirementDiagram-UZGBJVZJ-IWxwgSOA.js} +3 -3
  51. package/dist/{sankeyDiagram-TZEHDZUN-5wCrQhOL.js → sankeyDiagram-TZEHDZUN-CNxVVwLZ.js} +1 -1
  52. package/dist/{sequenceDiagram-WL72ISMW-Da2nlEu9.js → sequenceDiagram-WL72ISMW-DKEYvd1s.js} +3 -3
  53. package/dist/{stateDiagram-FKZM4ZOC-Bq-_ilzh.js → stateDiagram-FKZM4ZOC-YsmqtK1x.js} +4 -4
  54. package/dist/{stateDiagram-v2-4FDKWEC3-BBFdw24E.js → stateDiagram-v2-4FDKWEC3-DHLeiZBf.js} +2 -2
  55. package/dist/{timeline-definition-IT6M3QCI-DOQnDEPa.js → timeline-definition-IT6M3QCI-wc-Q7mjm.js} +2 -2
  56. package/dist/{treemap-KMMF4GRG-DxIiGKv_.js → treemap-KMMF4GRG-CRJ0PvT3.js} +1 -1
  57. package/dist/{xychartDiagram-PRI3JC2R-BNEydtiO.js → xychartDiagram-PRI3JC2R-C9a1QBu6.js} +2 -2
  58. package/package.json +1 -1
  59. package/dist/info-NVLQJR56-DZ6YZtba.js +0 -5
  60. package/dist/pie-7BOR55EZ-BYgfM_sP.js +0 -5
  61. package/dist/radar-NHE76QYJ-paBTVy27.js +0 -5
@@ -16612,6 +16612,17 @@ void mainImage( out vec4 fragColor, in vec2 fragCoord ) {
16612
16612
  display: flex;
16613
16613
  padding: 10px 10px 10px 20px;
16614
16614
  height: 370px;
16615
+ width: 100%;
16616
+ box-sizing: border-box;
16617
+ }
16618
+
16619
+ pb33f-chart {
16620
+ flex: 1;
16621
+ min-width: 0;
16622
+ }
16623
+
16624
+ .stats-container > div {
16625
+ flex-shrink: 0;
16615
16626
  }
16616
16627
 
16617
16628
  .changes-chart {
@@ -16800,7 +16811,6 @@ void mainImage( out vec4 fragColor, in vec2 fragCoord ) {
16800
16811
  <div class="changes-chart stats-container">
16801
16812
  <pb33f-chart id="diagnosis-chart"
16802
16813
  height="400"
16803
- width="1000"
16804
16814
  smallTitle
16805
16815
  ?legend=${!1}
16806
16816
  title="Diagnosis score over time"
@@ -16823,14 +16833,18 @@ void mainImage( out vec4 fragColor, in vec2 fragCoord ) {
16823
16833
  * Released under the MIT License
16824
16834
  */class ZNe{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(e,r,i,n){const s=r.listeners[n],a=r.duration;s.forEach(o=>o({chart:e,initial:r.initial,numSteps:a,currentStep:Math.min(i-r.start,a)}))}_refresh(){this._request||(this._running=!0,this._request=Hq.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(e=Date.now()){let r=0;this._charts.forEach((i,n)=>{if(!i.running||!i.items.length)return;const s=i.items;let a=s.length-1,o=!1,l;for(;a>=0;--a)l=s[a],l._active?(l._total>i.duration&&(i.duration=l._total),l.tick(e),o=!0):(s[a]=s[s.length-1],s.pop());o&&(n.draw(),this._notify(n,i,e,"progress")),s.length||(i.running=!1,this._notify(n,i,e,"complete"),i.initial=!1),r+=s.length}),this._lastDate=e,r===0&&(this._running=!1)}_getAnims(e){const r=this._charts;let i=r.get(e);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},r.set(e,i)),i}listen(e,r,i){this._getAnims(e).listeners[r].push(i)}add(e,r){!r||!r.length||this._getAnims(e).items.push(...r)}has(e){return this._getAnims(e).items.length>0}start(e){const r=this._charts.get(e);r&&(r.running=!0,r.start=Date.now(),r.duration=r.items.reduce((i,n)=>Math.max(i,n._duration),0),this._refresh())}running(e){if(!this._running)return!1;const r=this._charts.get(e);return!(!r||!r.running||!r.items.length)}stop(e){const r=this._charts.get(e);if(!r||!r.items.length)return;const i=r.items;let n=i.length-1;for(;n>=0;--n)i[n].cancel();r.items=[],this._notify(e,r,Date.now(),"complete")}remove(e){return this._charts.delete(e)}}var Sh=new ZNe;const wY="transparent",KNe={boolean(t,e,r){return r>.5?e:t},color(t,e,r){const i=Zq(t||wY),n=i.valid&&Zq(e||wY);return n&&n.valid?n.mix(i,r).hexString():e},number(t,e,r){return t+(e-t)*r}};let QNe=class{constructor(e,r,i,n){const s=r[i];n=O2([e.to,n,s,e.from]);const a=O2([e.from,s,n]);this._active=!0,this._fn=e.fn||KNe[e.type||typeof a],this._easing=_2[e.easing]||_2.linear,this._start=Math.floor(Date.now()+(e.delay||0)),this._duration=this._total=Math.floor(e.duration),this._loop=!!e.loop,this._target=r,this._prop=i,this._from=a,this._to=n,this._promises=void 0}active(){return this._active}update(e,r,i){if(this._active){this._notify(!1);const n=this._target[this._prop],s=i-this._start,a=this._duration-s;this._start=i,this._duration=Math.floor(Math.max(a,e.duration)),this._total+=s,this._loop=!!e.loop,this._to=O2([e.to,r,n,e.from]),this._from=O2([e.from,n,r])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(e){const r=e-this._start,i=this._duration,n=this._prop,s=this._from,a=this._loop,o=this._to;let l;if(this._active=s!==o&&(a||r<i),!this._active){this._target[n]=o,this._notify(!0);return}if(r<0){this._target[n]=s;return}l=r/i%2,l=a&&l>1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[n]=this._fn(s,o,l)}wait(){const e=this._promises||(this._promises=[]);return new Promise((r,i)=>{e.push({res:r,rej:i})})}_notify(e){const r=e?"res":"rej",i=this._promises||[];for(let n=0;n<i.length;n++)i[n][r]()}};class CY{constructor(e,r){this._chart=e,this._properties=new Map,this.configure(r)}configure(e){if(!wr(e))return;const r=Object.keys(ki.animation),i=this._properties;Object.getOwnPropertyNames(e).forEach(n=>{const s=e[n];if(!wr(s))return;const a={};for(const o of r)a[o]=s[o];(Ci(s.properties)&&s.properties||[n]).forEach(o=>{(o===n||!i.has(o))&&i.set(o,a)})})}_animateOptions(e,r){const i=r.options,n=eIe(e,i);if(!n)return[];const s=this._createAnimations(n,i);return i.$shared&&JNe(e.options.$animations,i).then(()=>{e.options=i},()=>{}),s}_createAnimations(e,r){const i=this._properties,n=[],s=e.$animations||(e.$animations={}),a=Object.keys(r),o=Date.now();let l;for(l=a.length-1;l>=0;--l){const h=a[l];if(h.charAt(0)==="$")continue;if(h==="options"){n.push(...this._animateOptions(e,r));continue}const u=r[h];let d=s[h];const p=i.get(h);if(d)if(p&&d.active()){d.update(p,u,o);continue}else d.cancel();if(!p||!p.duration){e[h]=u;continue}s[h]=d=new QNe(p,e,h,u),n.push(d)}return n}update(e,r){if(this._properties.size===0){Object.assign(e,r);return}const i=this._createAnimations(e,r);if(i.length)return Sh.add(this._chart,i),!0}}function JNe(t,e){const r=[],i=Object.keys(e);for(let n=0;n<i.length;n++){const s=t[i[n]];s&&s.active()&&r.push(s.wait())}return Promise.all(r)}function eIe(t,e){if(!e)return;let r=t.options;if(!r){t.options=e;return}return r.$shared&&(t.options=r=Object.assign({},r,{$shared:!1,$animations:{}})),r}function kY(t,e){const r=t&&t.options||{},i=r.reverse,n=r.min===void 0?e:0,s=r.max===void 0?e:0;return{start:i?s:n,end:i?n:s}}function tIe(t,e,r){if(r===!1)return!1;const i=kY(t,r),n=kY(e,r);return{top:n.end,right:i.end,bottom:n.start,left:i.start}}function rIe(t){let e,r,i,n;return wr(t)?(e=t.top,r=t.right,i=t.bottom,n=t.left):e=r=i=n=t,{top:e,right:r,bottom:i,left:n,disabled:t===!1}}function TY(t,e){const r=[],i=t._getSortedDatasetMetas(e);let n,s;for(n=0,s=i.length;n<s;++n)r.push(i[n].index);return r}function EY(t,e,r,i={}){const n=t.keys,s=i.mode==="single";let a,o,l,h;if(e===null)return;let u=!1;for(a=0,o=n.length;a<o;++a){if(l=+n[a],l===r){if(u=!0,i.all)continue;break}h=t.values[l],$i(h)&&(s||e===0||cc(e)===cc(h))&&(e+=h)}return!u&&!i.all?0:e}function iIe(t,e){const{iScale:r,vScale:i}=e,n=r.axis==="x"?"x":"y",s=i.axis==="x"?"x":"y",a=Object.keys(t),o=new Array(a.length);let l,h,u;for(l=0,h=a.length;l<h;++l)u=a[l],o[l]={[n]:u,[s]:t[u]};return o}function JA(t,e){const r=t&&t.options.stacked;return r||r===void 0&&e.stack!==void 0}function nIe(t,e,r){return`${t.id}.${e.id}.${r.stack||r.type}`}function sIe(t){const{min:e,max:r,minDefined:i,maxDefined:n}=t.getUserBounds();return{min:i?e:Number.NEGATIVE_INFINITY,max:n?r:Number.POSITIVE_INFINITY}}function aIe(t,e,r){const i=t[e]||(t[e]={});return i[r]||(i[r]={})}function SY(t,e,r,i){for(const n of e.getMatchingVisibleMetas(i).reverse()){const s=t[n.index];if(r&&s>0||!r&&s<0)return n.index}return null}function LY(t,e){const{chart:r,_cachedMeta:i}=t,n=r._stacks||(r._stacks={}),{iScale:s,vScale:a,index:o}=i,l=s.axis,h=a.axis,u=nIe(s,a,i),d=e.length;let p;for(let f=0;f<d;++f){const m=e[f],{[l]:v,[h]:y}=m,b=m._stacks||(m._stacks={});p=b[h]=aIe(n,u,v),p[o]=y,p._top=SY(p,a,!0,i.type),p._bottom=SY(p,a,!1,i.type);const x=p._visualValues||(p._visualValues={});x[o]=y}}function eM(t,e){const r=t.scales;return Object.keys(r).filter(i=>r[i].axis===e).shift()}function oIe(t,e){return Ku(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:"default",type:"dataset"})}function lIe(t,e,r){return Ku(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:r,index:e,mode:"default",type:"data"})}function $2(t,e){const r=t.controller.index,i=t.vScale&&t.vScale.axis;if(i){e=e||t._parsed;for(const n of e){const s=n._stacks;if(!s||s[i]===void 0||s[i][r]===void 0)return;delete s[i][r],s[i]._visualValues!==void 0&&s[i]._visualValues[r]!==void 0&&delete s[i]._visualValues[r]}}}const tM=t=>t==="reset"||t==="none",AY=(t,e)=>e?t:Object.assign({},t),cIe=(t,e,r)=>t&&!e.hidden&&e._stacked&&{keys:TY(r,!0),values:null};class Qu{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(e,r){this.chart=e,this._ctx=e.ctx,this.index=r,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(){const e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=JA(e.vScale,e),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(e){this.index!==e&&$2(this._cachedMeta),this.index=e}linkScales(){const e=this.chart,r=this._cachedMeta,i=this.getDataset(),n=(d,p,f,m)=>d==="x"?p:d==="r"?m:f,s=r.xAxisID=ar(i.xAxisID,eM(e,"x")),a=r.yAxisID=ar(i.yAxisID,eM(e,"y")),o=r.rAxisID=ar(i.rAxisID,eM(e,"r")),l=r.indexAxis,h=r.iAxisID=n(l,s,a,o),u=r.vAxisID=n(l,a,s,o);r.xScale=this.getScaleForId(s),r.yScale=this.getScaleForId(a),r.rScale=this.getScaleForId(o),r.iScale=this.getScaleForId(h),r.vScale=this.getScaleForId(u)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){const r=this._cachedMeta;return e===r.iScale?r.vScale:r.iScale}reset(){this._update("reset")}_destroy(){const e=this._cachedMeta;this._data&&Gq(this._data,this),e._stacked&&$2(e)}_dataCheck(){const e=this.getDataset(),r=e.data||(e.data=[]),i=this._data;if(wr(r)){const n=this._cachedMeta;this._data=iIe(r,n)}else if(i!==r){if(i){Gq(i,this);const n=this._cachedMeta;$2(n),n._parsed=[]}r&&Object.isExtensible(r)&&q9e(r,this),this._syncList=[],this._data=r}}addElements(){const e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){const r=this._cachedMeta,i=this.getDataset();let n=!1;this._dataCheck();const s=r._stacked;r._stacked=JA(r.vScale,r),r.stack!==i.stack&&(n=!0,$2(r),r.stack=i.stack),this._resyncElements(e),(n||s!==r._stacked)&&(LY(this,r._parsed),r._stacked=JA(r.vScale,r))}configure(){const e=this.chart.config,r=e.datasetScopeKeys(this._type),i=e.getOptionScopes(this.getDataset(),r,!0);this.options=e.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,r){const{_cachedMeta:i,_data:n}=this,{iScale:s,_stacked:a}=i,o=s.axis;let l=e===0&&r===n.length?!0:i._sorted,h=e>0&&i._parsed[e-1],u,d,p;if(this._parsing===!1)i._parsed=n,i._sorted=!0,p=n;else{Ci(n[e])?p=this.parseArrayData(i,n,e,r):wr(n[e])?p=this.parseObjectData(i,n,e,r):p=this.parsePrimitiveData(i,n,e,r);const f=()=>d[o]===null||h&&d[o]<h[o];for(u=0;u<r;++u)i._parsed[u+e]=d=p[u],l&&(f()&&(l=!1),h=d);i._sorted=l}a&&LY(this,p)}parsePrimitiveData(e,r,i,n){const{iScale:s,vScale:a}=e,o=s.axis,l=a.axis,h=s.getLabels(),u=s===a,d=new Array(n);let p,f,m;for(p=0,f=n;p<f;++p)m=p+i,d[p]={[o]:u||s.parse(h[m],m),[l]:a.parse(r[m],m)};return d}parseArrayData(e,r,i,n){const{xScale:s,yScale:a}=e,o=new Array(n);let l,h,u,d;for(l=0,h=n;l<h;++l)u=l+i,d=r[u],o[l]={x:s.parse(d[0],u),y:a.parse(d[1],u)};return o}parseObjectData(e,r,i,n){const{xScale:s,yScale:a}=e,{xAxisKey:o="x",yAxisKey:l="y"}=this._parsing,h=new Array(n);let u,d,p,f;for(u=0,d=n;u<d;++u)p=u+i,f=r[p],h[u]={x:s.parse(Yu(f,o),p),y:a.parse(Yu(f,l),p)};return h}getParsed(e){return this._cachedMeta._parsed[e]}getDataElement(e){return this._cachedMeta.data[e]}applyStack(e,r,i){const n=this.chart,s=this._cachedMeta,a=r[e.axis],o={keys:TY(n,!0),values:r._stacks[e.axis]._visualValues};return EY(o,a,s.index,{mode:i})}updateRangeFromParsed(e,r,i,n){const s=i[r.axis];let a=s===null?NaN:s;const o=n&&i._stacks[r.axis];n&&o&&(n.values=o,a=EY(n,s,this._cachedMeta.index)),e.min=Math.min(e.min,a),e.max=Math.max(e.max,a)}getMinMax(e,r){const i=this._cachedMeta,n=i._parsed,s=i._sorted&&e===i.iScale,a=n.length,o=this._getOtherScale(e),l=cIe(r,i,this.chart),h={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:u,max:d}=sIe(o);let p,f;function m(){f=n[p];const v=f[o.axis];return!$i(f[e.axis])||u>v||d<v}for(p=0;p<a&&!(!m()&&(this.updateRangeFromParsed(h,e,f,l),s));++p);if(s){for(p=a-1;p>=0;--p)if(!m()){this.updateRangeFromParsed(h,e,f,l);break}}return h}getAllParsedValues(e){const r=this._cachedMeta._parsed,i=[];let n,s,a;for(n=0,s=r.length;n<s;++n)a=r[n][e.axis],$i(a)&&i.push(a);return i}getMaxOverflow(){return!1}getLabelAndValue(e){const r=this._cachedMeta,i=r.iScale,n=r.vScale,s=this.getParsed(e);return{label:i?""+i.getLabelForValue(s[i.axis]):"",value:n?""+n.getLabelForValue(s[n.axis]):""}}_update(e){const r=this._cachedMeta;this.update(e||"default"),r._clip=rIe(ar(this.options.clip,tIe(r.xScale,r.yScale,this.getMaxOverflow())))}update(e){}draw(){const e=this._ctx,r=this.chart,i=this._cachedMeta,n=i.data||[],s=r.chartArea,a=[],o=this._drawStart||0,l=this._drawCount||n.length-o,h=this.options.drawActiveElementsOnTop;let u;for(i.dataset&&i.dataset.draw(e,s,o,l),u=o;u<o+l;++u){const d=n[u];d.hidden||(d.active&&h?a.push(d):d.draw(e,s))}for(u=0;u<a.length;++u)a[u].draw(e,s)}getStyle(e,r){const i=r?"active":"default";return e===void 0&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(i):this.resolveDataElementOptions(e||0,i)}getContext(e,r,i){const n=this.getDataset();let s;if(e>=0&&e<this._cachedMeta.data.length){const a=this._cachedMeta.data[e];s=a.$context||(a.$context=lIe(this.getContext(),e,a)),s.parsed=this.getParsed(e),s.raw=n.data[e],s.index=s.dataIndex=e}else s=this.$context||(this.$context=oIe(this.chart.getContext(),this.index)),s.dataset=n,s.index=s.datasetIndex=this.index;return s.active=!!r,s.mode=i,s}resolveDatasetElementOptions(e){return this._resolveElementOptions(this.datasetElementType.id,e)}resolveDataElementOptions(e,r){return this._resolveElementOptions(this.dataElementType.id,r,e)}_resolveElementOptions(e,r="default",i){const n=r==="active",s=this._cachedDataOpts,a=e+"-"+r,o=s[a],l=this.enableOptionSharing&&M2(i);if(o)return AY(o,l);const h=this.chart.config,u=h.datasetElementScopeKeys(this._type,e),d=n?[`${e}Hover`,"hover",e,""]:[e,""],p=h.getOptionScopes(this.getDataset(),u),f=Object.keys(ki.elements[e]),m=()=>this.getContext(i,n,r),v=h.resolveNamedOptions(p,f,m,d);return v.$shared&&(v.$shared=l,s[a]=Object.freeze(AY(v,l))),v}_resolveAnimations(e,r,i){const n=this.chart,s=this._cachedDataOpts,a=`animation-${r}`,o=s[a];if(o)return o;let l;if(n.options.animation!==!1){const u=this.chart.config,d=u.datasetAnimationScopeKeys(this._type,r),p=u.getOptionScopes(this.getDataset(),d);l=u.createResolver(p,this.getContext(e,i,r))}const h=new CY(n,l&&l.animations);return l&&l._cacheable&&(s[a]=Object.freeze(h)),h}getSharedOptions(e){if(e.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},e))}includeOptions(e,r){return!r||tM(e)||this.chart._animationsDisabled}_getSharedOptions(e,r){const i=this.resolveDataElementOptions(e,r),n=this._sharedOptions,s=this.getSharedOptions(i),a=this.includeOptions(r,s)||s!==n;return this.updateSharedOptions(s,r,i),{sharedOptions:s,includeOptions:a}}updateElement(e,r,i,n){tM(n)?Object.assign(e,i):this._resolveAnimations(r,n).update(e,i)}updateSharedOptions(e,r,i){e&&!tM(r)&&this._resolveAnimations(void 0,r).update(e,i)}_setStyle(e,r,i,n){e.active=n;const s=this.getStyle(r,n);this._resolveAnimations(r,i,n).update(e,{options:!n&&this.getSharedOptions(s)||s})}removeHoverStyle(e,r,i){this._setStyle(e,i,"active",!1)}setHoverStyle(e,r,i){this._setStyle(e,i,"active",!0)}_removeDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!1)}_setDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!0)}_resyncElements(e){const r=this._data,i=this._cachedMeta.data;for(const[o,l,h]of this._syncList)this[o](l,h);this._syncList=[];const n=i.length,s=r.length,a=Math.min(s,n);a&&this.parse(0,a),s>n?this._insertElements(n,s-n,e):s<n&&this._removeElements(s,n-s)}_insertElements(e,r,i=!0){const n=this._cachedMeta,s=n.data,a=e+r;let o;const l=h=>{for(h.length+=r,o=h.length-1;o>=a;o--)h[o]=h[o-r]};for(l(s),o=e;o<a;++o)s[o]=new this.dataElementType;this._parsing&&l(n._parsed),this.parse(e,r),i&&this.updateElements(s,e,r,"reset")}updateElements(e,r,i,n){}_removeElements(e,r){const i=this._cachedMeta;if(this._parsing){const n=i._parsed.splice(e,r);i._stacked&&$2(i,n)}i.data.splice(e,r)}_sync(e){if(this._parsing)this._syncList.push(e);else{const[r,i,n]=e;this[r](i,n)}this.chart._dataChanges.push([this.index,...e])}_onDataPush(){const e=arguments.length;this._sync(["_insertElements",this.getDataset().data.length-e,e])}_onDataPop(){this._sync(["_removeElements",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync(["_removeElements",0,1])}_onDataSplice(e,r){r&&this._sync(["_removeElements",e,r]);const i=arguments.length-2;i&&this._sync(["_insertElements",e,i])}_onDataUnshift(){this._sync(["_insertElements",0,arguments.length])}}function hIe(t,e){if(!t._cache.$bar){const r=t.getMatchingVisibleMetas(e);let i=[];for(let n=0,s=r.length;n<s;n++)i=i.concat(r[n].controller.getAllParsedValues(t));t._cache.$bar=Vq(i.sort((n,s)=>n-s))}return t._cache.$bar}function uIe(t){const e=t.iScale,r=hIe(e,t.type);let i=e._length,n,s,a,o;const l=()=>{a===32767||a===-32768||(M2(o)&&(i=Math.min(i,Math.abs(a-o)||i)),o=a)};for(n=0,s=r.length;n<s;++n)a=e.getPixelForValue(r[n]),l();for(o=void 0,n=0,s=e.ticks.length;n<s;++n)a=e.getPixelForTick(n),l();return i}function dIe(t,e,r,i){const n=r.barThickness;let s,a;return yr(n)?(s=e.min*r.categoryPercentage,a=r.barPercentage):(s=n*i,a=1),{chunk:s/i,ratio:a,start:e.pixels[t]-s/2}}function pIe(t,e,r,i){const n=e.pixels,s=n[t];let a=t>0?n[t-1]:null,o=t<n.length-1?n[t+1]:null;const l=r.categoryPercentage;a===null&&(a=s-(o===null?e.end-e.start:o-s)),o===null&&(o=s+s-a);const h=s-(s-Math.min(a,o))/2*l;return{chunk:Math.abs(o-a)/2*l/i,ratio:r.barPercentage,start:h}}function fIe(t,e,r,i){const n=r.parse(t[0],i),s=r.parse(t[1],i),a=Math.min(n,s),o=Math.max(n,s);let l=a,h=o;Math.abs(a)>Math.abs(o)&&(l=o,h=a),e[r.axis]=h,e._custom={barStart:l,barEnd:h,start:n,end:s,min:a,max:o}}function MY(t,e,r,i){return Ci(t)?fIe(t,e,r,i):e[r.axis]=r.parse(t,i),e}function NY(t,e,r,i){const n=t.iScale,s=t.vScale,a=n.getLabels(),o=n===s,l=[];let h,u,d,p;for(h=r,u=r+i;h<u;++h)p=e[h],d={},d[n.axis]=o||n.parse(a[h],h),l.push(MY(p,d,s,h));return l}function rM(t){return t&&t.barStart!==void 0&&t.barEnd!==void 0}function gIe(t,e,r){return t!==0?cc(t):(e.isHorizontal()?1:-1)*(e.min>=r?1:-1)}function mIe(t){let e,r,i,n,s;return t.horizontal?(e=t.base>t.x,r="left",i="right"):(e=t.base<t.y,r="bottom",i="top"),e?(n="end",s="start"):(n="start",s="end"),{start:r,end:i,reverse:e,top:n,bottom:s}}function vIe(t,e,r,i){let n=e.borderSkipped;const s={};if(!n){t.borderSkipped=s;return}if(n===!0){t.borderSkipped={top:!0,right:!0,bottom:!0,left:!0};return}const{start:a,end:o,reverse:l,top:h,bottom:u}=mIe(t);n==="middle"&&r&&(t.enableBorderRadius=!0,(r._top||0)===i?n=h:(r._bottom||0)===i?n=u:(s[IY(u,a,o,l)]=!0,n=h)),s[IY(n,a,o,l)]=!0,t.borderSkipped=s}function IY(t,e,r,i){return i?(t=yIe(t,e,r),t=_Y(t,r,e)):t=_Y(t,e,r),t}function yIe(t,e,r){return t===e?r:t===r?e:t}function _Y(t,e,r){return t==="start"?e:t==="end"?r:t}function bIe(t,{inflateAmount:e},r){t.inflateAmount=e==="auto"?r===1?.33:0:e}class xIe extends Qu{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.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(e,r,i,n){return NY(e,r,i,n)}parseArrayData(e,r,i,n){return NY(e,r,i,n)}parseObjectData(e,r,i,n){const{iScale:s,vScale:a}=e,{xAxisKey:o="x",yAxisKey:l="y"}=this._parsing,h=s.axis==="x"?o:l,u=a.axis==="x"?o:l,d=[];let p,f,m,v;for(p=i,f=i+n;p<f;++p)v=r[p],m={},m[s.axis]=s.parse(Yu(v,h),p),d.push(MY(Yu(v,u),m,a,p));return d}updateRangeFromParsed(e,r,i,n){super.updateRangeFromParsed(e,r,i,n);const s=i._custom;s&&r===this._cachedMeta.vScale&&(e.min=Math.min(e.min,s.min),e.max=Math.max(e.max,s.max))}getMaxOverflow(){return 0}getLabelAndValue(e){const r=this._cachedMeta,{iScale:i,vScale:n}=r,s=this.getParsed(e),a=s._custom,o=rM(a)?"["+a.start+", "+a.end+"]":""+n.getLabelForValue(s[n.axis]);return{label:""+i.getLabelForValue(s[i.axis]),value:o}}initialize(){this.enableOptionSharing=!0,super.initialize();const e=this._cachedMeta;e.stack=this.getDataset().stack}update(e){const r=this._cachedMeta;this.updateElements(r.data,0,r.data.length,e)}updateElements(e,r,i,n){const s=n==="reset",{index:a,_cachedMeta:{vScale:o}}=this,l=o.getBasePixel(),h=o.isHorizontal(),u=this._getRuler(),{sharedOptions:d,includeOptions:p}=this._getSharedOptions(r,n);for(let f=r;f<r+i;f++){const m=this.getParsed(f),v=s||yr(m[o.axis])?{base:l,head:l}:this._calculateBarValuePixels(f),y=this._calculateBarIndexPixels(f,u),b=(m._stacks||{})[o.axis],x={horizontal:h,base:v.base,enableBorderRadius:!b||rM(m._custom)||a===b._top||a===b._bottom,x:h?v.head:y.center,y:h?y.center:v.head,height:h?y.size:Math.abs(v.size),width:h?Math.abs(v.size):y.size};p&&(x.options=d||this.resolveDataElementOptions(f,e[f].active?"active":n));const w=x.options||e[f].options;vIe(x,w,b,a),bIe(x,w,u.ratio),this.updateElement(e[f],f,x,n)}}_getStacks(e,r){const{iScale:i}=this._cachedMeta,n=i.getMatchingVisibleMetas(this._type).filter(u=>u.controller.options.grouped),s=i.options.stacked,a=[],o=this._cachedMeta.controller.getParsed(r),l=o&&o[i.axis],h=u=>{const d=u._parsed.find(f=>f[i.axis]===l),p=d&&d[u.vScale.axis];if(yr(p)||isNaN(p))return!0};for(const u of n)if(!(r!==void 0&&h(u))&&((s===!1||a.indexOf(u.stack)===-1||s===void 0&&u.stack===void 0)&&a.push(u.stack),u.index===e))break;return a.length||a.push(void 0),a}_getStackCount(e){return this._getStacks(void 0,e).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){const e=this.chart.scales,r=this.chart.options.indexAxis;return Object.keys(e).filter(i=>e[i].axis===r).shift()}_getAxis(){const e={},r=this.getFirstScaleIdForIndexAxis();for(const i of this.chart.data.datasets)e[ar(this.chart.options.indexAxis==="x"?i.xAxisID:i.yAxisID,r)]=!0;return Object.keys(e)}_getStackIndex(e,r,i){const n=this._getStacks(e,i),s=r!==void 0?n.indexOf(r):-1;return s===-1?n.length-1:s}_getRuler(){const e=this.options,r=this._cachedMeta,i=r.iScale,n=[];let s,a;for(s=0,a=r.data.length;s<a;++s)n.push(i.getPixelForValue(this.getParsed(s)[i.axis],s));const o=e.barThickness;return{min:o||uIe(r),pixels:n,start:i._startPixel,end:i._endPixel,stackCount:this._getStackCount(),scale:i,grouped:e.grouped,ratio:o?1:e.categoryPercentage*e.barPercentage}}_calculateBarValuePixels(e){const{_cachedMeta:{vScale:r,_stacked:i,index:n},options:{base:s,minBarLength:a}}=this,o=s||0,l=this.getParsed(e),h=l._custom,u=rM(h);let d=l[r.axis],p=0,f=i?this.applyStack(r,l,i):d,m,v;f!==d&&(p=f-d,f=d),u&&(d=h.barStart,f=h.barEnd-h.barStart,d!==0&&cc(d)!==cc(h.barEnd)&&(p=0),p+=d);const y=!yr(s)&&!u?s:p;let b=r.getPixelForValue(y);if(this.chart.getDataVisibility(e)?m=r.getPixelForValue(p+f):m=b,v=m-b,Math.abs(v)<a){v=gIe(v,r,o)*a,d===o&&(b-=v/2);const x=r.getPixelForDecimal(0),w=r.getPixelForDecimal(1),C=Math.min(x,w),k=Math.max(x,w);b=Math.max(Math.min(b,k),C),m=b+v,i&&!u&&(l._stacks[r.axis]._visualValues[n]=r.getValueForPixel(m)-r.getValueForPixel(b))}if(b===r.getPixelForValue(o)){const x=cc(v)*r.getLineWidthForValue(o)/2;b+=x,v-=x}return{size:v,base:b,head:m,center:m+v/2}}_calculateBarIndexPixels(e,r){const i=r.scale,n=this.options,s=n.skipNull,a=ar(n.maxBarThickness,1/0);let o,l;const h=this._getAxisCount();if(r.grouped){const u=s?this._getStackCount(e):r.stackCount,d=n.barThickness==="flex"?pIe(e,r,n,u*h):dIe(e,r,n,u*h),p=this.chart.options.indexAxis==="x"?this.getDataset().xAxisID:this.getDataset().yAxisID,f=this._getAxis().indexOf(ar(p,this.getFirstScaleIdForIndexAxis())),m=this._getStackIndex(this.index,this._cachedMeta.stack,s?e:void 0)+f;o=d.start+d.chunk*m+d.chunk/2,l=Math.min(a,d.chunk*d.ratio)}else o=i.getPixelForValue(this.getParsed(e)[i.axis],e),l=Math.min(a,r.min*r.ratio);return{base:o-l/2,head:o+l/2,center:o,size:l}}draw(){const e=this._cachedMeta,r=e.vScale,i=e.data,n=i.length;let s=0;for(;s<n;++s)this.getParsed(s)[r.axis]!==null&&!i[s].hidden&&i[s].draw(this._ctx)}}class wIe extends Qu{static id="bubble";static defaults={datasetElementType:!1,dataElementType:"point",animations:{numbers:{type:"number",properties:["x","y","borderWidth","radius"]}}};static overrides={scales:{x:{type:"linear"},y:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,super.initialize()}parsePrimitiveData(e,r,i,n){const s=super.parsePrimitiveData(e,r,i,n);for(let a=0;a<s.length;a++)s[a]._custom=this.resolveDataElementOptions(a+i).radius;return s}parseArrayData(e,r,i,n){const s=super.parseArrayData(e,r,i,n);for(let a=0;a<s.length;a++){const o=r[i+a];s[a]._custom=ar(o[2],this.resolveDataElementOptions(a+i).radius)}return s}parseObjectData(e,r,i,n){const s=super.parseObjectData(e,r,i,n);for(let a=0;a<s.length;a++){const o=r[i+a];s[a]._custom=ar(o&&o.r&&+o.r,this.resolveDataElementOptions(a+i).radius)}return s}getMaxOverflow(){const e=this._cachedMeta.data;let r=0;for(let i=e.length-1;i>=0;--i)r=Math.max(r,e[i].size(this.resolveDataElementOptions(i))/2);return r>0&&r}getLabelAndValue(e){const r=this._cachedMeta,i=this.chart.data.labels||[],{xScale:n,yScale:s}=r,a=this.getParsed(e),o=n.getLabelForValue(a.x),l=s.getLabelForValue(a.y),h=a._custom;return{label:i[e]||"",value:"("+o+", "+l+(h?", "+h:"")+")"}}update(e){const r=this._cachedMeta.data;this.updateElements(r,0,r.length,e)}updateElements(e,r,i,n){const s=n==="reset",{iScale:a,vScale:o}=this._cachedMeta,{sharedOptions:l,includeOptions:h}=this._getSharedOptions(r,n),u=a.axis,d=o.axis;for(let p=r;p<r+i;p++){const f=e[p],m=!s&&this.getParsed(p),v={},y=v[u]=s?a.getPixelForDecimal(.5):a.getPixelForValue(m[u]),b=v[d]=s?o.getBasePixel():o.getPixelForValue(m[d]);v.skip=isNaN(y)||isNaN(b),h&&(v.options=l||this.resolveDataElementOptions(p,f.active?"active":n),s&&(v.options.radius=0)),this.updateElement(f,p,v,n)}}resolveDataElementOptions(e,r){const i=this.getParsed(e);let n=super.resolveDataElementOptions(e,r);n.$shared&&(n=Object.assign({},n,{$shared:!1}));const s=n.radius;return r!=="active"&&(n.radius=0),n.radius+=ar(i&&i._custom,s),n}}function CIe(t,e,r){let i=1,n=1,s=0,a=0;if(e<fi){const o=t,l=o+e,h=Math.cos(o),u=Math.sin(o),d=Math.cos(l),p=Math.sin(l),f=(w,C,k)=>I2(w,o,l,!0)?1:Math.max(C,C*r,k,k*r),m=(w,C,k)=>I2(w,o,l,!0)?-1:Math.min(C,C*r,k,k*r),v=f(0,h,d),y=f(Ki,u,p),b=m(Br,h,d),x=m(Br+Ki,u,p);i=(v-b)/2,n=(y-x)/2,s=-(v+b)/2,a=-(y+x)/2}return{ratioX:i,ratioY:n,offsetX:s,offsetY:a}}class iM extends Qu{static id="doughnut";static defaults={datasetElementType:!1,dataElementType:"arc",animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:"number",properties:["circumference","endAngle","innerRadius","outerRadius","startAngle","x","y","offset","borderWidth","spacing"]}},cutout:"50%",rotation:0,circumference:360,radius:"100%",spacing:0,indexAxis:"r"};static descriptors={_scriptable:e=>e!=="spacing",_indexable:e=>e!=="spacing"&&!e.startsWith("borderDash")&&!e.startsWith("hoverBorderDash")};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){const r=e.data;if(r.labels.length&&r.datasets.length){const{labels:{pointStyle:i,color:n}}=e.legend.options;return r.labels.map((s,a)=>{const l=e.getDatasetMeta(0).controller.getStyle(a);return{text:s,fillStyle:l.backgroundColor,strokeStyle:l.borderColor,fontColor:n,lineWidth:l.borderWidth,pointStyle:i,hidden:!e.getDataVisibility(a),index:a}})}return[]}},onClick(e,r,i){i.chart.toggleDataVisibility(r.index),i.chart.update()}}}};constructor(e,r){super(e,r),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(e,r){const i=this.getDataset().data,n=this._cachedMeta;if(this._parsing===!1)n._parsed=i;else{let s=l=>+i[l];if(wr(i[e])){const{key:l="value"}=this._parsing;s=h=>+Yu(i[h],l)}let a,o;for(a=e,o=e+r;a<o;++a)n._parsed[a]=s(a)}}_getRotation(){return kl(this.options.rotation-90)}_getCircumference(){return kl(this.options.circumference)}_getRotationExtents(){let e=fi,r=-fi;for(let i=0;i<this.chart.data.datasets.length;++i)if(this.chart.isDatasetVisible(i)&&this.chart.getDatasetMeta(i).type===this._type){const n=this.chart.getDatasetMeta(i).controller,s=n._getRotation(),a=n._getCircumference();e=Math.min(e,s),r=Math.max(r,s+a)}return{rotation:e,circumference:r-e}}update(e){const r=this.chart,{chartArea:i}=r,n=this._cachedMeta,s=n.data,a=this.getMaxBorderWidth()+this.getMaxOffset(s)+this.options.spacing,o=Math.max((Math.min(i.width,i.height)-a)/2,0),l=Math.min(_9e(this.options.cutout,o),1),h=this._getRingWeight(this.index),{circumference:u,rotation:d}=this._getRotationExtents(),{ratioX:p,ratioY:f,offsetX:m,offsetY:v}=CIe(d,u,l),y=(i.width-a)/p,b=(i.height-a)/f,x=Math.max(Math.min(y,b)/2,0),w=_q(this.options.radius,x),C=Math.max(w*l,0),k=(w-C)/this._getVisibleDatasetWeightTotal();this.offsetX=m*w,this.offsetY=v*w,n.total=this.calculateTotal(),this.outerRadius=w-k*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-k*h,0),this.updateElements(s,0,s.length,e)}_circumference(e,r){const i=this.options,n=this._cachedMeta,s=this._getCircumference();return r&&i.animation.animateRotate||!this.chart.getDataVisibility(e)||n._parsed[e]===null||n.data[e].hidden?0:this.calculateCircumference(n._parsed[e]*s/fi)}updateElements(e,r,i,n){const s=n==="reset",a=this.chart,o=a.chartArea,h=a.options.animation,u=(o.left+o.right)/2,d=(o.top+o.bottom)/2,p=s&&h.animateScale,f=p?0:this.innerRadius,m=p?0:this.outerRadius,{sharedOptions:v,includeOptions:y}=this._getSharedOptions(r,n);let b=this._getRotation(),x;for(x=0;x<r;++x)b+=this._circumference(x,s);for(x=r;x<r+i;++x){const w=this._circumference(x,s),C=e[x],k={x:u+this.offsetX,y:d+this.offsetY,startAngle:b,endAngle:b+w,circumference:w,outerRadius:m,innerRadius:f};y&&(k.options=v||this.resolveDataElementOptions(x,C.active?"active":n)),b+=w,this.updateElement(C,x,k,n)}}calculateTotal(){const e=this._cachedMeta,r=e.data;let i=0,n;for(n=0;n<r.length;n++){const s=e._parsed[n];s!==null&&!isNaN(s)&&this.chart.getDataVisibility(n)&&!r[n].hidden&&(i+=Math.abs(s))}return i}calculateCircumference(e){const r=this._cachedMeta.total;return r>0&&!isNaN(e)?fi*(Math.abs(e)/r):0}getLabelAndValue(e){const r=this._cachedMeta,i=this.chart,n=i.data.labels||[],s=D2(r._parsed[e],i.options.locale);return{label:n[e]||"",value:s}}getMaxBorderWidth(e){let r=0;const i=this.chart;let n,s,a,o,l;if(!e){for(n=0,s=i.data.datasets.length;n<s;++n)if(i.isDatasetVisible(n)){a=i.getDatasetMeta(n),e=a.data,o=a.controller;break}}if(!e)return 0;for(n=0,s=e.length;n<s;++n)l=o.resolveDataElementOptions(n),l.borderAlign!=="inner"&&(r=Math.max(r,l.borderWidth||0,l.hoverBorderWidth||0));return r}getMaxOffset(e){let r=0;for(let i=0,n=e.length;i<n;++i){const s=this.resolveDataElementOptions(i);r=Math.max(r,s.offset||0,s.hoverOffset||0)}return r}_getRingWeightOffset(e){let r=0;for(let i=0;i<e;++i)this.chart.isDatasetVisible(i)&&(r+=this._getRingWeight(i));return r}_getRingWeight(e){return Math.max(ar(this.chart.data.datasets[e].weight,1),0)}_getVisibleDatasetWeightTotal(){return this._getRingWeightOffset(this.chart.data.datasets.length)||1}}class kIe extends Qu{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(e){const r=this._cachedMeta,{dataset:i,data:n=[],_dataset:s}=r,a=this.chart._animationsDisabled;let{start:o,count:l}=Wq(r,n,a);this._drawStart=o,this._drawCount=l,qq(r)&&(o=0,l=n.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!s._decimated,i.points=n;const h=this.resolveDatasetElementOptions(e);this.options.showLine||(h.borderWidth=0),h.segment=this.options.segment,this.updateElement(i,void 0,{animated:!a,options:h},e),this.updateElements(n,o,l,e)}updateElements(e,r,i,n){const s=n==="reset",{iScale:a,vScale:o,_stacked:l,_dataset:h}=this._cachedMeta,{sharedOptions:u,includeOptions:d}=this._getSharedOptions(r,n),p=a.axis,f=o.axis,{spanGaps:m,segment:v}=this.options,y=Gg(m)?m:Number.POSITIVE_INFINITY,b=this.chart._animationsDisabled||s||n==="none",x=r+i,w=e.length;let C=r>0&&this.getParsed(r-1);for(let k=0;k<w;++k){const S=e[k],E=b?S:{};if(k<r||k>=x){E.skip=!0;continue}const A=this.getParsed(k),M=yr(A[f]),_=E[p]=a.getPixelForValue(A[p],k),I=E[f]=s||M?o.getBasePixel():o.getPixelForValue(l?this.applyStack(o,A,l):A[f],k);E.skip=isNaN(_)||isNaN(I)||M,E.stop=k>0&&Math.abs(A[p]-C[p])>y,v&&(E.parsed=A,E.raw=h.data[k]),d&&(E.options=u||this.resolveDataElementOptions(k,S.active?"active":n)),b||this.updateElement(S,k,E,n),C=A}}getMaxOverflow(){const e=this._cachedMeta,r=e.dataset,i=r.options&&r.options.borderWidth||0,n=e.data||[];if(!n.length)return i;const s=n[0].size(this.resolveDataElementOptions(0)),a=n[n.length-1].size(this.resolveDataElementOptions(n.length-1));return Math.max(i,s,a)/2}draw(){const e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}}class DY extends Qu{static id="polarArea";static defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){const r=e.data;if(r.labels.length&&r.datasets.length){const{labels:{pointStyle:i,color:n}}=e.legend.options;return r.labels.map((s,a)=>{const l=e.getDatasetMeta(0).controller.getStyle(a);return{text:s,fillStyle:l.backgroundColor,strokeStyle:l.borderColor,fontColor:n,lineWidth:l.borderWidth,pointStyle:i,hidden:!e.getDataVisibility(a),index:a}})}return[]}},onClick(e,r,i){i.chart.toggleDataVisibility(r.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(e,r){super(e,r),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(e){const r=this._cachedMeta,i=this.chart,n=i.data.labels||[],s=D2(r._parsed[e].r,i.options.locale);return{label:n[e]||"",value:s}}parseObjectData(e,r,i,n){return lY.bind(this)(e,r,i,n)}update(e){const r=this._cachedMeta.data;this._updateRadius(),this.updateElements(r,0,r.length,e)}getMinMax(){const e=this._cachedMeta,r={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return e.data.forEach((i,n)=>{const s=this.getParsed(n).r;!isNaN(s)&&this.chart.getDataVisibility(n)&&(s<r.min&&(r.min=s),s>r.max&&(r.max=s))}),r}_updateRadius(){const e=this.chart,r=e.chartArea,i=e.options,n=Math.min(r.right-r.left,r.bottom-r.top),s=Math.max(n/2,0),a=Math.max(i.cutoutPercentage?s/100*i.cutoutPercentage:1,0),o=(s-a)/e.getVisibleDatasetCount();this.outerRadius=s-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(e,r,i,n){const s=n==="reset",a=this.chart,l=a.options.animation,h=this._cachedMeta.rScale,u=h.xCenter,d=h.yCenter,p=h.getIndexAngle(0)-.5*Br;let f=p,m;const v=360/this.countVisibleElements();for(m=0;m<r;++m)f+=this._computeAngle(m,n,v);for(m=r;m<r+i;m++){const y=e[m];let b=f,x=f+this._computeAngle(m,n,v),w=a.getDataVisibility(m)?h.getDistanceFromCenterForValue(this.getParsed(m).r):0;f=x,s&&(l.animateScale&&(w=0),l.animateRotate&&(b=x=p));const C={x:u,y:d,innerRadius:0,outerRadius:w,startAngle:b,endAngle:x,options:this.resolveDataElementOptions(m,y.active?"active":n)};this.updateElement(y,m,C,n)}}countVisibleElements(){const e=this._cachedMeta;let r=0;return e.data.forEach((i,n)=>{!isNaN(this.getParsed(n).r)&&this.chart.getDataVisibility(n)&&r++}),r}_computeAngle(e,r,i){return this.chart.getDataVisibility(e)?kl(this.resolveDataElementOptions(e,r).angle||i):0}}class TIe extends iM{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}}class EIe extends Qu{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(e){const r=this._cachedMeta.vScale,i=this.getParsed(e);return{label:r.getLabels()[e],value:""+r.getLabelForValue(i[r.axis])}}parseObjectData(e,r,i,n){return lY.bind(this)(e,r,i,n)}update(e){const r=this._cachedMeta,i=r.dataset,n=r.data||[],s=r.iScale.getLabels();if(i.points=n,e!=="resize"){const a=this.resolveDatasetElementOptions(e);this.options.showLine||(a.borderWidth=0);const o={_loop:!0,_fullLoop:s.length===n.length,options:a};this.updateElement(i,void 0,o,e)}this.updateElements(n,0,n.length,e)}updateElements(e,r,i,n){const s=this._cachedMeta.rScale,a=n==="reset";for(let o=r;o<r+i;o++){const l=e[o],h=this.resolveDataElementOptions(o,l.active?"active":n),u=s.getPointPositionForValue(o,this.getParsed(o).r),d=a?s.xCenter:u.x,p=a?s.yCenter:u.y,f={x:d,y:p,angle:u.angle,skip:isNaN(d)||isNaN(p),options:h};this.updateElement(l,o,f,n)}}}class SIe extends Qu{static id="scatter";static defaults={datasetElementType:!1,dataElementType:"point",showLine:!1,fill:!1};static overrides={interaction:{mode:"point"},scales:{x:{type:"linear"},y:{type:"linear"}}};getLabelAndValue(e){const r=this._cachedMeta,i=this.chart.data.labels||[],{xScale:n,yScale:s}=r,a=this.getParsed(e),o=n.getLabelForValue(a.x),l=s.getLabelForValue(a.y);return{label:i[e]||"",value:"("+o+", "+l+")"}}update(e){const r=this._cachedMeta,{data:i=[]}=r,n=this.chart._animationsDisabled;let{start:s,count:a}=Wq(r,i,n);if(this._drawStart=s,this._drawCount=a,qq(r)&&(s=0,a=i.length),this.options.showLine){this.datasetElementType||this.addElements();const{dataset:o,_dataset:l}=r;o._chart=this.chart,o._datasetIndex=this.index,o._decimated=!!l._decimated,o.points=i;const h=this.resolveDatasetElementOptions(e);h.segment=this.options.segment,this.updateElement(o,void 0,{animated:!n,options:h},e)}else this.datasetElementType&&(delete r.dataset,this.datasetElementType=!1);this.updateElements(i,s,a,e)}addElements(){const{showLine:e}=this.options;!this.datasetElementType&&e&&(this.datasetElementType=this.chart.registry.getElement("line")),super.addElements()}updateElements(e,r,i,n){const s=n==="reset",{iScale:a,vScale:o,_stacked:l,_dataset:h}=this._cachedMeta,u=this.resolveDataElementOptions(r,n),d=this.getSharedOptions(u),p=this.includeOptions(n,d),f=a.axis,m=o.axis,{spanGaps:v,segment:y}=this.options,b=Gg(v)?v:Number.POSITIVE_INFINITY,x=this.chart._animationsDisabled||s||n==="none";let w=r>0&&this.getParsed(r-1);for(let C=r;C<r+i;++C){const k=e[C],S=this.getParsed(C),E=x?k:{},A=yr(S[m]),M=E[f]=a.getPixelForValue(S[f],C),_=E[m]=s||A?o.getBasePixel():o.getPixelForValue(l?this.applyStack(o,S,l):S[m],C);E.skip=isNaN(M)||isNaN(_)||A,E.stop=C>0&&Math.abs(S[f]-w[f])>b,y&&(E.parsed=S,E.raw=h.data[C]),p&&(E.options=d||this.resolveDataElementOptions(C,k.active?"active":n)),x||this.updateElement(k,C,E,n),w=S}this.updateSharedOptions(d,n,u)}getMaxOverflow(){const e=this._cachedMeta,r=e.data||[];if(!this.options.showLine){let o=0;for(let l=r.length-1;l>=0;--l)o=Math.max(o,r[l].size(this.resolveDataElementOptions(l))/2);return o>0&&o}const i=e.dataset,n=i.options&&i.options.borderWidth||0;if(!r.length)return n;const s=r[0].size(this.resolveDataElementOptions(0)),a=r[r.length-1].size(this.resolveDataElementOptions(r.length-1));return Math.max(n,s,a)/2}}var LIe=Object.freeze({__proto__:null,BarController:xIe,BubbleController:wIe,DoughnutController:iM,LineController:kIe,PieController:TIe,PolarAreaController:DY,RadarController:EIe,ScatterController:SIe});function kf(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class nM{static override(e){Object.assign(nM.prototype,e)}options;constructor(e){this.options=e||{}}init(){}formats(){return kf()}parse(){return kf()}format(){return kf()}add(){return kf()}diff(){return kf()}startOf(){return kf()}endOf(){return kf()}}var AIe={_date:nM};function MIe(t,e,r,i){const{controller:n,data:s,_sorted:a}=t,o=n._cachedMeta.iScale,l=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null;if(o&&e===o.axis&&e!=="r"&&a&&s.length){const h=o._reversePixels?j9e:Th;if(i){if(n._sharedOptions){const u=s[0],d=typeof u.getRange=="function"&&u.getRange(e);if(d){const p=h(s,e,r-d),f=h(s,e,r+d);return{lo:p.lo,hi:f.hi}}}}else{const u=h(s,e,r);if(l){const{vScale:d}=n._cachedMeta,{_parsed:p}=t,f=p.slice(0,u.lo+1).reverse().findIndex(v=>!yr(v[d.axis]));u.lo-=Math.max(0,f);const m=p.slice(u.hi).findIndex(v=>!yr(v[d.axis]));u.hi+=Math.max(0,m)}return u}}return{lo:0,hi:s.length-1}}function EC(t,e,r,i,n){const s=t.getSortedVisibleDatasetMetas(),a=r[e];for(let o=0,l=s.length;o<l;++o){const{index:h,data:u}=s[o],{lo:d,hi:p}=MIe(s[o],e,a,n);for(let f=d;f<=p;++f){const m=u[f];m.skip||i(m,h,f)}}}function NIe(t){const e=t.indexOf("x")!==-1,r=t.indexOf("y")!==-1;return function(i,n){const s=e?Math.abs(i.x-n.x):0,a=r?Math.abs(i.y-n.y):0;return Math.sqrt(Math.pow(s,2)+Math.pow(a,2))}}function sM(t,e,r,i,n){const s=[];return!n&&!t.isPointInArea(e)||EC(t,r,e,function(o,l,h){!n&&!Eh(o,t.chartArea,0)||o.inRange(e.x,e.y,i)&&s.push({element:o,datasetIndex:l,index:h})},!0),s}function IIe(t,e,r,i){let n=[];function s(a,o,l){const{startAngle:h,endAngle:u}=a.getProps(["startAngle","endAngle"],i),{angle:d}=zq(a,{x:e.x,y:e.y});I2(d,h,u)&&n.push({element:a,datasetIndex:o,index:l})}return EC(t,r,e,s),n}function _Ie(t,e,r,i,n,s){let a=[];const o=NIe(r);let l=Number.POSITIVE_INFINITY;function h(u,d,p){const f=u.inRange(e.x,e.y,n);if(i&&!f)return;const m=u.getCenterPoint(n);if(!(!!s||t.isPointInArea(m))&&!f)return;const y=o(e,m);y<l?(a=[{element:u,datasetIndex:d,index:p}],l=y):y===l&&a.push({element:u,datasetIndex:d,index:p})}return EC(t,r,e,h),a}function aM(t,e,r,i,n,s){return!s&&!t.isPointInArea(e)?[]:r==="r"&&!i?IIe(t,e,r,n):_Ie(t,e,r,i,n,s)}function RY(t,e,r,i,n){const s=[],a=r==="x"?"inXRange":"inYRange";let o=!1;return EC(t,r,e,(l,h,u)=>{l[a]&&l[a](e[r],n)&&(s.push({element:l,datasetIndex:h,index:u}),o=o||l.inRange(e.x,e.y,n))}),i&&!o?[]:s}var DIe={modes:{index(t,e,r,i){const n=wf(e,t),s=r.axis||"x",a=r.includeInvisible||!1,o=r.intersect?sM(t,n,s,i,a):aM(t,n,s,!1,i,a),l=[];return o.length?(t.getSortedVisibleDatasetMetas().forEach(h=>{const u=o[0].index,d=h.data[u];d&&!d.skip&&l.push({element:d,datasetIndex:h.index,index:u})}),l):[]},dataset(t,e,r,i){const n=wf(e,t),s=r.axis||"xy",a=r.includeInvisible||!1;let o=r.intersect?sM(t,n,s,i,a):aM(t,n,s,!1,i,a);if(o.length>0){const l=o[0].datasetIndex,h=t.getDatasetMeta(l).data;o=[];for(let u=0;u<h.length;++u)o.push({element:h[u],datasetIndex:l,index:u})}return o},point(t,e,r,i){const n=wf(e,t),s=r.axis||"xy",a=r.includeInvisible||!1;return sM(t,n,s,i,a)},nearest(t,e,r,i){const n=wf(e,t),s=r.axis||"xy",a=r.includeInvisible||!1;return aM(t,n,s,r.intersect,i,a)},x(t,e,r,i){const n=wf(e,t);return RY(t,n,"x",r.intersect,i)},y(t,e,r,i){const n=wf(e,t);return RY(t,n,"y",r.intersect,i)}}};const PY=["left","top","right","bottom"];function B2(t,e){return t.filter(r=>r.pos===e)}function OY(t,e){return t.filter(r=>PY.indexOf(r.pos)===-1&&r.box.axis===e)}function F2(t,e){return t.sort((r,i)=>{const n=e?i:r,s=e?r:i;return n.weight===s.weight?n.index-s.index:n.weight-s.weight})}function RIe(t){const e=[];let r,i,n,s,a,o;for(r=0,i=(t||[]).length;r<i;++r)n=t[r],{position:s,options:{stack:a,stackWeight:o=1}}=n,e.push({index:r,box:n,pos:s,horizontal:n.isHorizontal(),weight:n.weight,stack:a&&s+a,stackWeight:o});return e}function PIe(t){const e={};for(const r of t){const{stack:i,pos:n,stackWeight:s}=r;if(!i||!PY.includes(n))continue;const a=e[i]||(e[i]={count:0,placed:0,weight:0,size:0});a.count++,a.weight+=s}return e}function OIe(t,e){const r=PIe(t),{vBoxMaxWidth:i,hBoxMaxHeight:n}=e;let s,a,o;for(s=0,a=t.length;s<a;++s){o=t[s];const{fullSize:l}=o.box,h=r[o.stack],u=h&&o.stackWeight/h.weight;o.horizontal?(o.width=u?u*i:l&&e.availableWidth,o.height=n):(o.width=i,o.height=u?u*n:l&&e.availableHeight)}return r}function $Ie(t){const e=RIe(t),r=F2(e.filter(h=>h.box.fullSize),!0),i=F2(B2(e,"left"),!0),n=F2(B2(e,"right")),s=F2(B2(e,"top"),!0),a=F2(B2(e,"bottom")),o=OY(e,"x"),l=OY(e,"y");return{fullSize:r,leftAndTop:i.concat(s),rightAndBottom:n.concat(l).concat(a).concat(o),chartArea:B2(e,"chartArea"),vertical:i.concat(n).concat(l),horizontal:s.concat(a).concat(o)}}function $Y(t,e,r,i){return Math.max(t[r],e[r])+Math.max(t[i],e[i])}function BY(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function BIe(t,e,r,i){const{pos:n,box:s}=r,a=t.maxPadding;if(!wr(n)){r.size&&(t[n]-=r.size);const d=i[r.stack]||{size:0,count:1};d.size=Math.max(d.size,r.horizontal?s.height:s.width),r.size=d.size/d.count,t[n]+=r.size}s.getPadding&&BY(a,s.getPadding());const o=Math.max(0,e.outerWidth-$Y(a,t,"left","right")),l=Math.max(0,e.outerHeight-$Y(a,t,"top","bottom")),h=o!==t.w,u=l!==t.h;return t.w=o,t.h=l,r.horizontal?{same:h,other:u}:{same:u,other:h}}function FIe(t){const e=t.maxPadding;function r(i){const n=Math.max(e[i]-t[i],0);return t[i]+=n,n}t.y+=r("top"),t.x+=r("left"),r("right"),r("bottom")}function zIe(t,e){const r=e.maxPadding;function i(n){const s={left:0,top:0,right:0,bottom:0};return n.forEach(a=>{s[a]=Math.max(e[a],r[a])}),s}return i(t?["left","right"]:["top","bottom"])}function z2(t,e,r,i){const n=[];let s,a,o,l,h,u;for(s=0,a=t.length,h=0;s<a;++s){o=t[s],l=o.box,l.update(o.width||e.w,o.height||e.h,zIe(o.horizontal,e));const{same:d,other:p}=BIe(e,r,o,i);h|=d&&n.length,u=u||p,l.fullSize||n.push(o)}return h&&z2(n,e,r,i)||u}function SC(t,e,r,i,n){t.top=r,t.left=e,t.right=e+i,t.bottom=r+n,t.width=i,t.height=n}function FY(t,e,r,i){const n=r.padding;let{x:s,y:a}=e;for(const o of t){const l=o.box,h=i[o.stack]||{placed:0,weight:1},u=o.stackWeight/h.weight||1;if(o.horizontal){const d=e.w*u,p=h.size||l.height;M2(h.start)&&(a=h.start),l.fullSize?SC(l,n.left,a,r.outerWidth-n.right-n.left,p):SC(l,e.left+h.placed,a,d,p),h.start=a,h.placed+=d,a=l.bottom}else{const d=e.h*u,p=h.size||l.width;M2(h.start)&&(s=h.start),l.fullSize?SC(l,s,n.top,p,r.outerHeight-n.bottom-n.top):SC(l,s,e.top+h.placed,p,d),h.start=s,h.placed+=d,s=l.right}}e.x=s,e.y=a}var Is={addBox(t,e){t.boxes||(t.boxes=[]),e.fullSize=e.fullSize||!1,e.position=e.position||"top",e.weight=e.weight||0,e._layers=e._layers||function(){return[{z:0,draw(r){e.draw(r)}}]},t.boxes.push(e)},removeBox(t,e){const r=t.boxes?t.boxes.indexOf(e):-1;r!==-1&&t.boxes.splice(r,1)},configure(t,e,r){e.fullSize=r.fullSize,e.position=r.position,e.weight=r.weight},update(t,e,r,i){if(!t)return;const n=Ns(t.options.layout.padding),s=Math.max(e-n.width,0),a=Math.max(r-n.height,0),o=$Ie(t.boxes),l=o.vertical,h=o.horizontal;Kr(t.boxes,v=>{typeof v.beforeLayout=="function"&&v.beforeLayout()});const u=l.reduce((v,y)=>y.box.options&&y.box.options.display===!1?v:v+1,0)||1,d=Object.freeze({outerWidth:e,outerHeight:r,padding:n,availableWidth:s,availableHeight:a,vBoxMaxWidth:s/2/u,hBoxMaxHeight:a/2}),p=Object.assign({},n);BY(p,Ns(i));const f=Object.assign({maxPadding:p,w:s,h:a,x:n.left,y:n.top},n),m=OIe(l.concat(h),d);z2(o.fullSize,f,d,m),z2(l,f,d,m),z2(h,f,d,m)&&z2(l,f,d,m),FIe(f),FY(o.leftAndTop,f,d,m),f.x+=f.w,f.y+=f.h,FY(o.rightAndBottom,f,d,m),t.chartArea={left:f.left,top:f.top,right:f.left+f.w,bottom:f.top+f.h,height:f.h,width:f.w},Kr(o.chartArea,v=>{const y=v.box;Object.assign(y,t.chartArea),y.update(f.w,f.h,{left:0,top:0,right:0,bottom:0})})}};class zY{acquireContext(e,r){}releaseContext(e){return!1}addEventListener(e,r,i){}removeEventListener(e,r,i){}getDevicePixelRatio(){return 1}getMaximumSize(e,r,i,n){return r=Math.max(0,r||e.width),i=i||e.height,{width:r,height:Math.max(0,n?Math.floor(r/n):i)}}isAttached(e){return!0}updateConfig(e){}}class UIe extends zY{acquireContext(e){return e&&e.getContext&&e.getContext("2d")||null}updateConfig(e){e.options.animation=!1}}const LC="$chartjs",GIe={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},UY=t=>t===null||t==="";function VIe(t,e){const r=t.style,i=t.getAttribute("height"),n=t.getAttribute("width");if(t[LC]={initial:{height:i,width:n,style:{display:r.display,height:r.height,width:r.width}}},r.display=r.display||"block",r.boxSizing=r.boxSizing||"border-box",UY(n)){const s=uY(t,"width");s!==void 0&&(t.width=s)}if(UY(i))if(t.style.height==="")t.height=t.width/(e||2);else{const s=uY(t,"height");s!==void 0&&(t.height=s)}return t}const GY=BNe?{passive:!0}:!1;function HIe(t,e,r){t&&t.addEventListener(e,r,GY)}function jIe(t,e,r){t&&t.canvas&&t.canvas.removeEventListener(e,r,GY)}function WIe(t,e){const r=GIe[t.type]||t.type,{x:i,y:n}=wf(t,e);return{type:r,chart:e,native:t,x:i!==void 0?i:null,y:n!==void 0?n:null}}function AC(t,e){for(const r of t)if(r===e||r.contains(e))return!0}function qIe(t,e,r){const i=t.canvas,n=new MutationObserver(s=>{let a=!1;for(const o of s)a=a||AC(o.addedNodes,i),a=a&&!AC(o.removedNodes,i);a&&r()});return n.observe(document,{childList:!0,subtree:!0}),n}function YIe(t,e,r){const i=t.canvas,n=new MutationObserver(s=>{let a=!1;for(const o of s)a=a||AC(o.removedNodes,i),a=a&&!AC(o.addedNodes,i);a&&r()});return n.observe(document,{childList:!0,subtree:!0}),n}const U2=new Map;let VY=0;function HY(){const t=window.devicePixelRatio;t!==VY&&(VY=t,U2.forEach((e,r)=>{r.currentDevicePixelRatio!==t&&e()}))}function XIe(t,e){U2.size||window.addEventListener("resize",HY),U2.set(t,e)}function ZIe(t){U2.delete(t),U2.size||window.removeEventListener("resize",HY)}function KIe(t,e,r){const i=t.canvas,n=i&&QA(i);if(!n)return;const s=jq((o,l)=>{const h=n.clientWidth;r(o,l),h<n.clientWidth&&r()},window),a=new ResizeObserver(o=>{const l=o[0],h=l.contentRect.width,u=l.contentRect.height;h===0&&u===0||s(h,u)});return a.observe(n),XIe(t,s),a}function oM(t,e,r){r&&r.disconnect(),e==="resize"&&ZIe(t)}function QIe(t,e,r){const i=t.canvas,n=jq(s=>{t.ctx!==null&&r(WIe(s,t))},t);return HIe(i,e,n),n}class JIe extends zY{acquireContext(e,r){const i=e&&e.getContext&&e.getContext("2d");return i&&i.canvas===e?(VIe(e,r),i):null}releaseContext(e){const r=e.canvas;if(!r[LC])return!1;const i=r[LC].initial;["height","width"].forEach(s=>{const a=i[s];yr(a)?r.removeAttribute(s):r.setAttribute(s,a)});const n=i.style||{};return Object.keys(n).forEach(s=>{r.style[s]=n[s]}),r.width=r.width,delete r[LC],!0}addEventListener(e,r,i){this.removeEventListener(e,r);const n=e.$proxies||(e.$proxies={}),a={attach:qIe,detach:YIe,resize:KIe}[r]||QIe;n[r]=a(e,r,i)}removeEventListener(e,r){const i=e.$proxies||(e.$proxies={}),n=i[r];if(!n)return;({attach:oM,detach:oM,resize:oM}[r]||jIe)(e,r,n),i[r]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(e,r,i,n){return $Ne(e,r,i,n)}isAttached(e){const r=e&&QA(e);return!!(r&&r.isConnected)}}function e_e(t){return!KA()||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas?UIe:JIe}let Lh=class{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(e){const{x:r,y:i}=this.getProps(["x","y"],e);return{x:r,y:i}}hasValue(){return Gg(this.x)&&Gg(this.y)}getProps(e,r){const i=this.$animations;if(!r||!i)return this;const n={};return e.forEach(s=>{n[s]=i[s]&&i[s].active()?i[s]._to:this[s]}),n}};function t_e(t,e){const r=t.options.ticks,i=r_e(t),n=Math.min(r.maxTicksLimit||i,i),s=r.major.enabled?n_e(e):[],a=s.length,o=s[0],l=s[a-1],h=[];if(a>n)return s_e(e,h,s,a/n),h;const u=i_e(s,e,n);if(a>0){let d,p;const f=a>1?Math.round((l-o)/(a-1)):null;for(MC(e,h,u,yr(f)?0:o-f,o),d=0,p=a-1;d<p;d++)MC(e,h,u,s[d],s[d+1]);return MC(e,h,u,l,yr(f)?e.length:l+f),h}return MC(e,h,u),h}function r_e(t){const e=t.options.offset,r=t._tickSize(),i=t._length/r+(e?0:1),n=t._maxLength/r;return Math.floor(Math.min(i,n))}function i_e(t,e,r){const i=a_e(t),n=e.length/r;if(!i)return Math.max(n,1);const s=z9e(i);for(let a=0,o=s.length-1;a<o;a++){const l=s[a];if(l>n)return l}return Math.max(n,1)}function n_e(t){const e=[];let r,i;for(r=0,i=t.length;r<i;r++)t[r].major&&e.push(r);return e}function s_e(t,e,r,i){let n=0,s=r[0],a;for(i=Math.ceil(i),a=0;a<t.length;a++)a===s&&(e.push(t[a]),n++,s=r[n*i])}function MC(t,e,r,i,n){const s=ar(i,0),a=Math.min(ar(n,t.length),t.length);let o=0,l,h,u;for(r=Math.ceil(r),n&&(l=n-i,r=l/Math.floor(l/r)),u=s;u<0;)o++,u=Math.round(s+o*r);for(h=Math.max(s,0);h<a;h++)h===u&&(e.push(t[h]),o++,u=Math.round(s+o*r))}function a_e(t){const e=t.length;let r,i;if(e<2)return!1;for(i=t[0],r=1;r<e;++r)if(t[r]-t[r-1]!==i)return!1;return i}const o_e=t=>t==="left"?"right":t==="right"?"left":t,jY=(t,e,r)=>e==="top"||e==="left"?t[e]+r:t[e]-r,WY=(t,e)=>Math.min(e||t,t);function qY(t,e){const r=[],i=t.length/e,n=t.length;let s=0;for(;s<n;s+=i)r.push(t[Math.floor(s)]);return r}function l_e(t,e,r){const i=t.ticks.length,n=Math.min(e,i-1),s=t._startPixel,a=t._endPixel,o=1e-6;let l=t.getPixelForTick(n),h;if(!(r&&(i===1?h=Math.max(l-s,a-l):e===0?h=(t.getPixelForTick(1)-l)/2:h=(l-t.getPixelForTick(n-1))/2,l+=n<e?h:-h,l<s-o||l>a+o)))return l}function c_e(t,e){Kr(t,r=>{const i=r.gc,n=i.length/2;let s;if(n>e){for(s=0;s<n;++s)delete r.data[i[s]];i.splice(0,n)}})}function G2(t){return t.drawTicks?t.tickLength:0}function YY(t,e){if(!t.display)return 0;const r=En(t.font,e),i=Ns(t.padding);return(Ci(t.text)?t.text.length:1)*r.lineHeight+i.height}function h_e(t,e){return Ku(t,{scale:e,type:"scale"})}function u_e(t,e,r){return Ku(t,{tick:r,index:e,type:"tick"})}function d_e(t,e,r){let i=UA(t);return(r&&e!=="right"||!r&&e==="right")&&(i=o_e(i)),i}function p_e(t,e,r,i){const{top:n,left:s,bottom:a,right:o,chart:l}=t,{chartArea:h,scales:u}=l;let d=0,p,f,m;const v=a-n,y=o-s;if(t.isHorizontal()){if(f=Ms(i,s,o),wr(r)){const b=Object.keys(r)[0],x=r[b];m=u[b].getPixelForValue(x)+v-e}else r==="center"?m=(h.bottom+h.top)/2+v-e:m=jY(t,r,e);p=o-s}else{if(wr(r)){const b=Object.keys(r)[0],x=r[b];f=u[b].getPixelForValue(x)-y+e}else r==="center"?f=(h.left+h.right)/2-y+e:f=jY(t,r,e);m=Ms(i,a,n),d=r==="left"?-Ki:Ki}return{titleX:f,titleY:m,maxWidth:p,rotation:d}}class Tf extends Lh{constructor(e){super(),this.id=e.id,this.type=e.type,this.options=void 0,this.ctx=e.ctx,this.chart=e.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(e){this.options=e.setContext(this.getContext()),this.axis=e.axis,this._userMin=this.parse(e.min),this._userMax=this.parse(e.max),this._suggestedMin=this.parse(e.suggestedMin),this._suggestedMax=this.parse(e.suggestedMax)}parse(e,r){return e}getUserBounds(){let{_userMin:e,_userMax:r,_suggestedMin:i,_suggestedMax:n}=this;return e=oo(e,Number.POSITIVE_INFINITY),r=oo(r,Number.NEGATIVE_INFINITY),i=oo(i,Number.POSITIVE_INFINITY),n=oo(n,Number.NEGATIVE_INFINITY),{min:oo(e,i),max:oo(r,n),minDefined:$i(e),maxDefined:$i(r)}}getMinMax(e){let{min:r,max:i,minDefined:n,maxDefined:s}=this.getUserBounds(),a;if(n&&s)return{min:r,max:i};const o=this.getMatchingVisibleMetas();for(let l=0,h=o.length;l<h;++l)a=o[l].controller.getMinMax(this,e),n||(r=Math.min(r,a.min)),s||(i=Math.max(i,a.max));return r=s&&r>i?i:r,i=n&&r>i?r:i,{min:oo(r,oo(i,r)),max:oo(i,oo(r,i))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const e=this.chart.data;return this.options.labels||(this.isHorizontal()?e.xLabels:e.yLabels)||e.labels||[]}getLabelItems(e=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(e))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){li(this.options.beforeUpdate,[this])}update(e,r,i){const{beginAtZero:n,grace:s,ticks:a}=this.options,o=a.sampleSize;this.beforeUpdate(),this.maxWidth=e,this.maxHeight=r,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=gNe(this,s,n),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const l=o<this.ticks.length;this._convertTicksToLabels(l?qY(this.ticks,o):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),a.display&&(a.autoSkip||a.source==="auto")&&(this.ticks=t_e(this,this.ticks),this._labelSizes=null,this.afterAutoSkip()),l&&this._convertTicksToLabels(this.ticks),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let e=this.options.reverse,r,i;this.isHorizontal()?(r=this.left,i=this.right):(r=this.top,i=this.bottom,e=!e),this._startPixel=r,this._endPixel=i,this._reversePixels=e,this._length=i-r,this._alignToPixels=this.options.alignToPixels}afterUpdate(){li(this.options.afterUpdate,[this])}beforeSetDimensions(){li(this.options.beforeSetDimensions,[this])}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){li(this.options.afterSetDimensions,[this])}_callHooks(e){this.chart.notifyPlugins(e,this.getContext()),li(this.options[e],[this])}beforeDataLimits(){this._callHooks("beforeDataLimits")}determineDataLimits(){}afterDataLimits(){this._callHooks("afterDataLimits")}beforeBuildTicks(){this._callHooks("beforeBuildTicks")}buildTicks(){return[]}afterBuildTicks(){this._callHooks("afterBuildTicks")}beforeTickToLabelConversion(){li(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(e){const r=this.options.ticks;let i,n,s;for(i=0,n=e.length;i<n;i++)s=e[i],s.label=li(r.callback,[s.value,i,e],this)}afterTickToLabelConversion(){li(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){li(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){const e=this.options,r=e.ticks,i=WY(this.ticks.length,e.ticks.maxTicksLimit),n=r.minRotation||0,s=r.maxRotation;let a=n,o,l,h;if(!this._isVisible()||!r.display||n>=s||i<=1||!this.isHorizontal()){this.labelRotation=n;return}const u=this._getLabelSizes(),d=u.widest.width,p=u.highest.height,f=jn(this.chart.width-d,0,this.maxWidth);o=e.offset?this.maxWidth/i:f/(i-1),d+6>o&&(o=f/(i-(e.offset?.5:1)),l=this.maxHeight-G2(e.grid)-r.padding-YY(e.title,this.chart.options.font),h=Math.sqrt(d*d+p*p),a=BA(Math.min(Math.asin(jn((u.highest.height+6)/o,-1,1)),Math.asin(jn(l/h,-1,1))-Math.asin(jn(p/h,-1,1)))),a=Math.max(n,Math.min(s,a))),this.labelRotation=a}afterCalculateLabelRotation(){li(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){li(this.options.beforeFit,[this])}fit(){const e={width:0,height:0},{chart:r,options:{ticks:i,title:n,grid:s}}=this,a=this._isVisible(),o=this.isHorizontal();if(a){const l=YY(n,r.options.font);if(o?(e.width=this.maxWidth,e.height=G2(s)+l):(e.height=this.maxHeight,e.width=G2(s)+l),i.display&&this.ticks.length){const{first:h,last:u,widest:d,highest:p}=this._getLabelSizes(),f=i.padding*2,m=kl(this.labelRotation),v=Math.cos(m),y=Math.sin(m);if(o){const b=i.mirror?0:y*d.width+v*p.height;e.height=Math.min(this.maxHeight,e.height+b+f)}else{const b=i.mirror?0:v*d.width+y*p.height;e.width=Math.min(this.maxWidth,e.width+b+f)}this._calculatePadding(h,u,y,v)}}this._handleMargins(),o?(this.width=this._length=r.width-this._margins.left-this._margins.right,this.height=e.height):(this.width=e.width,this.height=this._length=r.height-this._margins.top-this._margins.bottom)}_calculatePadding(e,r,i,n){const{ticks:{align:s,padding:a},position:o}=this.options,l=this.labelRotation!==0,h=o!=="top"&&this.axis==="x";if(this.isHorizontal()){const u=this.getPixelForTick(0)-this.left,d=this.right-this.getPixelForTick(this.ticks.length-1);let p=0,f=0;l?h?(p=n*e.width,f=i*r.height):(p=i*e.height,f=n*r.width):s==="start"?f=r.width:s==="end"?p=e.width:s!=="inner"&&(p=e.width/2,f=r.width/2),this.paddingLeft=Math.max((p-u+a)*this.width/(this.width-u),0),this.paddingRight=Math.max((f-d+a)*this.width/(this.width-d),0)}else{let u=r.height/2,d=e.height/2;s==="start"?(u=0,d=e.height):s==="end"&&(u=r.height,d=0),this.paddingTop=u+a,this.paddingBottom=d+a}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){li(this.options.afterFit,[this])}isHorizontal(){const{axis:e,position:r}=this.options;return r==="top"||r==="bottom"||e==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(e){this.beforeTickToLabelConversion(),this.generateTickLabels(e);let r,i;for(r=0,i=e.length;r<i;r++)yr(e[r].label)&&(e.splice(r,1),i--,r--);this.afterTickToLabelConversion()}_getLabelSizes(){let e=this._labelSizes;if(!e){const r=this.options.ticks.sampleSize;let i=this.ticks;r<i.length&&(i=qY(i,r)),this._labelSizes=e=this._computeLabelSizes(i,i.length,this.options.ticks.maxTicksLimit)}return e}_computeLabelSizes(e,r,i){const{ctx:n,_longestTextCache:s}=this,a=[],o=[],l=Math.floor(r/WY(r,i));let h=0,u=0,d,p,f,m,v,y,b,x,w,C,k;for(d=0;d<r;d+=l){if(m=e[d].label,v=this._resolveTickFontOptions(d),n.font=y=v.string,b=s[y]=s[y]||{data:{},gc:[]},x=v.lineHeight,w=C=0,!yr(m)&&!Ci(m))w=vC(n,b.data,b.gc,w,m),C=x;else if(Ci(m))for(p=0,f=m.length;p<f;++p)k=m[p],!yr(k)&&!Ci(k)&&(w=vC(n,b.data,b.gc,w,k),C+=x);a.push(w),o.push(C),h=Math.max(w,h),u=Math.max(C,u)}c_e(s,r);const S=a.indexOf(h),E=o.indexOf(u),A=M=>({width:a[M]||0,height:o[M]||0});return{first:A(0),last:A(r-1),widest:A(S),highest:A(E),widths:a,heights:o}}getLabelForValue(e){return e}getPixelForValue(e,r){return NaN}getValueForPixel(e){}getPixelForTick(e){const r=this.ticks;return e<0||e>r.length-1?null:this.getPixelForValue(r[e].value)}getPixelForDecimal(e){this._reversePixels&&(e=1-e);const r=this._startPixel+e*this._length;return H9e(this._alignToPixels?vf(this.chart,r,0):r)}getDecimalForPixel(e){const r=(e-this._startPixel)/this._length;return this._reversePixels?1-r:r}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:e,max:r}=this;return e<0&&r<0?r:e>0&&r>0?e:0}getContext(e){const r=this.ticks||[];if(e>=0&&e<r.length){const i=r[e];return i.$context||(i.$context=u_e(this.getContext(),e,i))}return this.$context||(this.$context=h_e(this.chart.getContext(),this))}_tickSize(){const e=this.options.ticks,r=kl(this.labelRotation),i=Math.abs(Math.cos(r)),n=Math.abs(Math.sin(r)),s=this._getLabelSizes(),a=e.autoSkipPadding||0,o=s?s.widest.width+a:0,l=s?s.highest.height+a:0;return this.isHorizontal()?l*i>o*n?o/i:l/n:l*n<o*i?l/i:o/n}_isVisible(){const e=this.options.display;return e!=="auto"?!!e:this.getMatchingVisibleMetas().length>0}_computeGridLineItems(e){const r=this.axis,i=this.chart,n=this.options,{grid:s,position:a,border:o}=n,l=s.offset,h=this.isHorizontal(),d=this.ticks.length+(l?1:0),p=G2(s),f=[],m=o.setContext(this.getContext()),v=m.display?m.width:0,y=v/2,b=function(P){return vf(i,P,v)};let x,w,C,k,S,E,A,M,_,I,D,B;if(a==="top")x=b(this.bottom),E=this.bottom-p,M=x-y,I=b(e.top)+y,B=e.bottom;else if(a==="bottom")x=b(this.top),I=e.top,B=b(e.bottom)-y,E=x+y,M=this.top+p;else if(a==="left")x=b(this.right),S=this.right-p,A=x-y,_=b(e.left)+y,D=e.right;else if(a==="right")x=b(this.left),_=e.left,D=b(e.right)-y,S=x+y,A=this.left+p;else if(r==="x"){if(a==="center")x=b((e.top+e.bottom)/2+.5);else if(wr(a)){const P=Object.keys(a)[0],O=a[P];x=b(this.chart.scales[P].getPixelForValue(O))}I=e.top,B=e.bottom,E=x+y,M=E+p}else if(r==="y"){if(a==="center")x=b((e.left+e.right)/2);else if(wr(a)){const P=Object.keys(a)[0],O=a[P];x=b(this.chart.scales[P].getPixelForValue(O))}S=x-y,A=S-p,_=e.left,D=e.right}const N=ar(n.ticks.maxTicksLimit,d),R=Math.max(1,Math.ceil(d/N));for(w=0;w<d;w+=R){const P=this.getContext(w),O=s.setContext(P),$=o.setContext(P),F=O.lineWidth,U=O.color,z=$.dash||[],W=$.dashOffset,Y=O.tickWidth,le=O.tickColor,Q=O.tickBorderDash||[],ge=O.tickBorderDashOffset;C=l_e(this,w,l),C!==void 0&&(k=vf(i,C,F),h?S=A=_=D=k:E=M=I=B=k,f.push({tx1:S,ty1:E,tx2:A,ty2:M,x1:_,y1:I,x2:D,y2:B,width:F,color:U,borderDash:z,borderDashOffset:W,tickWidth:Y,tickColor:le,tickBorderDash:Q,tickBorderDashOffset:ge}))}return this._ticksLength=d,this._borderValue=x,f}_computeLabelItems(e){const r=this.axis,i=this.options,{position:n,ticks:s}=i,a=this.isHorizontal(),o=this.ticks,{align:l,crossAlign:h,padding:u,mirror:d}=s,p=G2(i.grid),f=p+u,m=d?-u:f,v=-kl(this.labelRotation),y=[];let b,x,w,C,k,S,E,A,M,_,I,D,B="middle";if(n==="top")S=this.bottom-m,E=this._getXAxisLabelAlignment();else if(n==="bottom")S=this.top+m,E=this._getXAxisLabelAlignment();else if(n==="left"){const R=this._getYAxisLabelAlignment(p);E=R.textAlign,k=R.x}else if(n==="right"){const R=this._getYAxisLabelAlignment(p);E=R.textAlign,k=R.x}else if(r==="x"){if(n==="center")S=(e.top+e.bottom)/2+f;else if(wr(n)){const R=Object.keys(n)[0],P=n[R];S=this.chart.scales[R].getPixelForValue(P)+f}E=this._getXAxisLabelAlignment()}else if(r==="y"){if(n==="center")k=(e.left+e.right)/2-f;else if(wr(n)){const R=Object.keys(n)[0],P=n[R];k=this.chart.scales[R].getPixelForValue(P)}E=this._getYAxisLabelAlignment(p).textAlign}r==="y"&&(l==="start"?B="top":l==="end"&&(B="bottom"));const N=this._getLabelSizes();for(b=0,x=o.length;b<x;++b){w=o[b],C=w.label;const R=s.setContext(this.getContext(b));A=this.getPixelForTick(b)+s.labelOffset,M=this._resolveTickFontOptions(b),_=M.lineHeight,I=Ci(C)?C.length:1;const P=I/2,O=R.color,$=R.textStrokeColor,F=R.textStrokeWidth;let U=E;a?(k=A,E==="inner"&&(b===x-1?U=this.options.reverse?"left":"right":b===0?U=this.options.reverse?"right":"left":U="center"),n==="top"?h==="near"||v!==0?D=-I*_+_/2:h==="center"?D=-N.highest.height/2-P*_+_:D=-N.highest.height+_/2:h==="near"||v!==0?D=_/2:h==="center"?D=N.highest.height/2-P*_:D=N.highest.height-I*_,d&&(D*=-1),v!==0&&!R.showLabelBackdrop&&(k+=_/2*Math.sin(v))):(S=A,D=(1-I)*_/2);let z;if(R.showLabelBackdrop){const W=Ns(R.backdropPadding),Y=N.heights[b],le=N.widths[b];let Q=D-W.top,ge=0-W.left;switch(B){case"middle":Q-=Y/2;break;case"bottom":Q-=Y;break}switch(E){case"center":ge-=le/2;break;case"right":ge-=le;break;case"inner":b===x-1?ge-=le:b>0&&(ge-=le/2);break}z={left:ge,top:Q,width:le+W.width,height:Y+W.height,color:R.backdropColor}}y.push({label:C,font:M,textOffset:D,options:{rotation:v,color:O,strokeColor:$,strokeWidth:F,textAlign:U,textBaseline:B,translation:[k,S],backdrop:z}})}return y}_getXAxisLabelAlignment(){const{position:e,ticks:r}=this.options;if(-kl(this.labelRotation))return e==="top"?"left":"right";let n="center";return r.align==="start"?n="left":r.align==="end"?n="right":r.align==="inner"&&(n="inner"),n}_getYAxisLabelAlignment(e){const{position:r,ticks:{crossAlign:i,mirror:n,padding:s}}=this.options,a=this._getLabelSizes(),o=e+s,l=a.widest.width;let h,u;return r==="left"?n?(u=this.right+s,i==="near"?h="left":i==="center"?(h="center",u+=l/2):(h="right",u+=l)):(u=this.right-o,i==="near"?h="right":i==="center"?(h="center",u-=l/2):(h="left",u=this.left)):r==="right"?n?(u=this.left+s,i==="near"?h="right":i==="center"?(h="center",u-=l/2):(h="left",u-=l)):(u=this.left+o,i==="near"?h="left":i==="center"?(h="center",u+=l/2):(h="right",u=this.right)):h="right",{textAlign:h,x:u}}_computeLabelArea(){if(this.options.ticks.mirror)return;const e=this.chart,r=this.options.position;if(r==="left"||r==="right")return{top:0,left:this.left,bottom:e.height,right:this.right};if(r==="top"||r==="bottom")return{top:this.top,left:0,bottom:this.bottom,right:e.width}}drawBackground(){const{ctx:e,options:{backgroundColor:r},left:i,top:n,width:s,height:a}=this;r&&(e.save(),e.fillStyle=r,e.fillRect(i,n,s,a),e.restore())}getLineWidthForValue(e){const r=this.options.grid;if(!this._isVisible()||!r.display)return 0;const n=this.ticks.findIndex(s=>s.value===e);return n>=0?r.setContext(this.getContext(n)).lineWidth:0}drawGrid(e){const r=this.options.grid,i=this.ctx,n=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(e));let s,a;const o=(l,h,u)=>{!u.width||!u.color||(i.save(),i.lineWidth=u.width,i.strokeStyle=u.color,i.setLineDash(u.borderDash||[]),i.lineDashOffset=u.borderDashOffset,i.beginPath(),i.moveTo(l.x,l.y),i.lineTo(h.x,h.y),i.stroke(),i.restore())};if(r.display)for(s=0,a=n.length;s<a;++s){const l=n[s];r.drawOnChartArea&&o({x:l.x1,y:l.y1},{x:l.x2,y:l.y2},l),r.drawTicks&&o({x:l.tx1,y:l.ty1},{x:l.tx2,y:l.ty2},{color:l.tickColor,width:l.tickWidth,borderDash:l.tickBorderDash,borderDashOffset:l.tickBorderDashOffset})}}drawBorder(){const{chart:e,ctx:r,options:{border:i,grid:n}}=this,s=i.setContext(this.getContext()),a=i.display?s.width:0;if(!a)return;const o=n.setContext(this.getContext(0)).lineWidth,l=this._borderValue;let h,u,d,p;this.isHorizontal()?(h=vf(e,this.left,a)-a/2,u=vf(e,this.right,o)+o/2,d=p=l):(d=vf(e,this.top,a)-a/2,p=vf(e,this.bottom,o)+o/2,h=u=l),r.save(),r.lineWidth=s.width,r.strokeStyle=s.color,r.beginPath(),r.moveTo(h,d),r.lineTo(u,p),r.stroke(),r.restore()}drawLabels(e){if(!this.options.ticks.display)return;const i=this.ctx,n=this._computeLabelArea();n&&yC(i,n);const s=this.getLabelItems(e);for(const a of s){const o=a.options,l=a.font,h=a.label,u=a.textOffset;yf(i,h,0,u,l,o)}n&&bC(i)}drawTitle(){const{ctx:e,options:{position:r,title:i,reverse:n}}=this;if(!i.display)return;const s=En(i.font),a=Ns(i.padding),o=i.align;let l=s.lineHeight/2;r==="bottom"||r==="center"||wr(r)?(l+=a.bottom,Ci(i.text)&&(l+=s.lineHeight*(i.text.length-1))):l+=a.top;const{titleX:h,titleY:u,maxWidth:d,rotation:p}=p_e(this,l,r,o);yf(e,i.text,0,0,s,{color:i.color,maxWidth:d,rotation:p,textAlign:d_e(o,r,n),textBaseline:"middle",translation:[h,u]})}draw(e){this._isVisible()&&(this.drawBackground(),this.drawGrid(e),this.drawBorder(),this.drawTitle(),this.drawLabels(e))}_layers(){const e=this.options,r=e.ticks&&e.ticks.z||0,i=ar(e.grid&&e.grid.z,-1),n=ar(e.border&&e.border.z,0);return!this._isVisible()||this.draw!==Tf.prototype.draw?[{z:r,draw:s=>{this.draw(s)}}]:[{z:i,draw:s=>{this.drawBackground(),this.drawGrid(s),this.drawTitle()}},{z:n,draw:()=>{this.drawBorder()}},{z:r,draw:s=>{this.drawLabels(s)}}]}getMatchingVisibleMetas(e){const r=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",n=[];let s,a;for(s=0,a=r.length;s<a;++s){const o=r[s];o[i]===this.id&&(!e||o.type===e)&&n.push(o)}return n}_resolveTickFontOptions(e){const r=this.options.ticks.setContext(this.getContext(e));return En(r.font)}_maxDigits(){const e=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)/e}}class NC{constructor(e,r,i){this.type=e,this.scope=r,this.override=i,this.items=Object.create(null)}isForType(e){return Object.prototype.isPrototypeOf.call(this.type.prototype,e.prototype)}register(e){const r=Object.getPrototypeOf(e);let i;m_e(r)&&(i=this.register(r));const n=this.items,s=e.id,a=this.scope+"."+s;if(!s)throw new Error("class does not have id: "+e);return s in n||(n[s]=e,f_e(e,a,i),this.override&&ki.override(e.id,e.overrides)),a}get(e){return this.items[e]}unregister(e){const r=this.items,i=e.id,n=this.scope;i in r&&delete r[i],n&&i in ki[n]&&(delete ki[n][i],this.override&&delete mf[i])}}function f_e(t,e,r){const i=L2(Object.create(null),[r?ki.get(r):{},ki.get(e),t.defaults]);ki.set(e,i),t.defaultRoutes&&g_e(e,t.defaultRoutes),t.descriptors&&ki.describe(e,t.descriptors)}function g_e(t,e){Object.keys(e).forEach(r=>{const i=r.split("."),n=i.pop(),s=[t].concat(i).join("."),a=e[r].split("."),o=a.pop(),l=a.join(".");ki.route(s,n,l,o)})}function m_e(t){return"id"in t&&"defaults"in t}class v_e{constructor(){this.controllers=new NC(Qu,"datasets",!0),this.elements=new NC(Lh,"elements"),this.plugins=new NC(Object,"plugins"),this.scales=new NC(Tf,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...e){this._each("register",e)}remove(...e){this._each("unregister",e)}addControllers(...e){this._each("register",e,this.controllers)}addElements(...e){this._each("register",e,this.elements)}addPlugins(...e){this._each("register",e,this.plugins)}addScales(...e){this._each("register",e,this.scales)}getController(e){return this._get(e,this.controllers,"controller")}getElement(e){return this._get(e,this.elements,"element")}getPlugin(e){return this._get(e,this.plugins,"plugin")}getScale(e){return this._get(e,this.scales,"scale")}removeControllers(...e){this._each("unregister",e,this.controllers)}removeElements(...e){this._each("unregister",e,this.elements)}removePlugins(...e){this._each("unregister",e,this.plugins)}removeScales(...e){this._each("unregister",e,this.scales)}_each(e,r,i){[...r].forEach(n=>{const s=i||this._getRegistryForType(n);i||s.isForType(n)||s===this.plugins&&n.id?this._exec(e,s,n):Kr(n,a=>{const o=i||this._getRegistryForType(a);this._exec(e,o,a)})})}_exec(e,r,i){const n=$A(e);li(i["before"+n],[],i),r[e](i),li(i["after"+n],[],i)}_getRegistryForType(e){for(let r=0;r<this._typedRegistries.length;r++){const i=this._typedRegistries[r];if(i.isForType(e))return i}return this.plugins}_get(e,r,i){const n=r.get(e);if(n===void 0)throw new Error('"'+e+'" is not a registered '+i+".");return n}}var hc=new v_e;class y_e{constructor(){this._init=[]}notify(e,r,i,n){r==="beforeInit"&&(this._init=this._createDescriptors(e,!0),this._notify(this._init,e,"install"));const s=n?this._descriptors(e).filter(n):this._descriptors(e),a=this._notify(s,e,r,i);return r==="afterDestroy"&&(this._notify(s,e,"stop"),this._notify(this._init,e,"uninstall")),a}_notify(e,r,i,n){n=n||{};for(const s of e){const a=s.plugin,o=a[i],l=[r,n,s.options];if(li(o,l,a)===!1&&n.cancelable)return!1}return!0}invalidate(){yr(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(e){if(this._cache)return this._cache;const r=this._cache=this._createDescriptors(e);return this._notifyStateChanges(e),r}_createDescriptors(e,r){const i=e&&e.config,n=ar(i.options&&i.options.plugins,{}),s=b_e(i);return n===!1&&!r?[]:w_e(e,s,n,r)}_notifyStateChanges(e){const r=this._oldCache||[],i=this._cache,n=(s,a)=>s.filter(o=>!a.some(l=>o.plugin.id===l.plugin.id));this._notify(n(r,i),e,"stop"),this._notify(n(i,r),e,"start")}}function b_e(t){const e={},r=[],i=Object.keys(hc.plugins.items);for(let s=0;s<i.length;s++)r.push(hc.getPlugin(i[s]));const n=t.plugins||[];for(let s=0;s<n.length;s++){const a=n[s];r.indexOf(a)===-1&&(r.push(a),e[a.id]=!0)}return{plugins:r,localIds:e}}function x_e(t,e){return!e&&t===!1?null:t===!0?{}:t}function w_e(t,{plugins:e,localIds:r},i,n){const s=[],a=t.getContext();for(const o of e){const l=o.id,h=x_e(i[l],n);h!==null&&s.push({plugin:o,options:C_e(t.config,{plugin:o,local:r[l]},h,a)})}return s}function C_e(t,{plugin:e,local:r},i,n){const s=t.pluginScopeKeys(e),a=t.getOptionScopes(i,s);return r&&e.defaults&&a.push(e.defaults),t.createResolver(a,n,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function lM(t,e){const r=ki.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||r.indexAxis||"x"}function k_e(t,e){let r=t;return t==="_index_"?r=e:t==="_value_"&&(r=e==="x"?"y":"x"),r}function T_e(t,e){return t===e?"_index_":"_value_"}function XY(t){if(t==="x"||t==="y"||t==="r")return t}function E_e(t){if(t==="top"||t==="bottom")return"x";if(t==="left"||t==="right")return"y"}function cM(t,...e){if(XY(t))return t;for(const r of e){const i=r.axis||E_e(r.position)||t.length>1&&XY(t[0].toLowerCase());if(i)return i}throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function ZY(t,e,r){if(r[e+"AxisID"]===t)return{axis:e}}function S_e(t,e){if(e.data&&e.data.datasets){const r=e.data.datasets.filter(i=>i.xAxisID===t||i.yAxisID===t);if(r.length)return ZY(t,"x",r[0])||ZY(t,"y",r[0])}return{}}function L_e(t,e){const r=mf[t.type]||{scales:{}},i=e.scales||{},n=lM(t.type,e),s=Object.create(null);return Object.keys(i).forEach(a=>{const o=i[a];if(!wr(o))return console.error(`Invalid scale configuration for scale: ${a}`);if(o._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${a}`);const l=cM(a,o,S_e(a,t),ki.scales[o.type]),h=T_e(l,n),u=r.scales||{};s[a]=A2(Object.create(null),[{axis:l},o,u[l],u[h]])}),t.data.datasets.forEach(a=>{const o=a.type||t.type,l=a.indexAxis||lM(o,e),u=(mf[o]||{}).scales||{};Object.keys(u).forEach(d=>{const p=k_e(d,l),f=a[p+"AxisID"]||p;s[f]=s[f]||Object.create(null),A2(s[f],[{axis:p},i[f],u[d]])})}),Object.keys(s).forEach(a=>{const o=s[a];A2(o,[ki.scales[o.type],ki.scale])}),s}function KY(t){const e=t.options||(t.options={});e.plugins=ar(e.plugins,{}),e.scales=L_e(t,e)}function QY(t){return t=t||{},t.datasets=t.datasets||[],t.labels=t.labels||[],t}function A_e(t){return t=t||{},t.data=QY(t.data),KY(t),t}const JY=new Map,eX=new Set;function IC(t,e){let r=JY.get(t);return r||(r=e(),JY.set(t,r),eX.add(r)),r}const V2=(t,e,r)=>{const i=Yu(e,r);i!==void 0&&t.add(i)};class M_e{constructor(e){this._config=A_e(e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(e){this._config.type=e}get data(){return this._config.data}set data(e){this._config.data=QY(e)}get options(){return this._config.options}set options(e){this._config.options=e}get plugins(){return this._config.plugins}update(){const e=this._config;this.clearCache(),KY(e)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(e){return IC(e,()=>[[`datasets.${e}`,""]])}datasetAnimationScopeKeys(e,r){return IC(`${e}.transition.${r}`,()=>[[`datasets.${e}.transitions.${r}`,`transitions.${r}`],[`datasets.${e}`,""]])}datasetElementScopeKeys(e,r){return IC(`${e}-${r}`,()=>[[`datasets.${e}.elements.${r}`,`datasets.${e}`,`elements.${r}`,""]])}pluginScopeKeys(e){const r=e.id,i=this.type;return IC(`${i}-plugin-${r}`,()=>[[`plugins.${r}`,...e.additionalOptionScopes||[]]])}_cachedScopes(e,r){const i=this._scopeCache;let n=i.get(e);return(!n||r)&&(n=new Map,i.set(e,n)),n}getOptionScopes(e,r,i){const{options:n,type:s}=this,a=this._cachedScopes(e,i),o=a.get(r);if(o)return o;const l=new Set;r.forEach(u=>{e&&(l.add(e),u.forEach(d=>V2(l,e,d))),u.forEach(d=>V2(l,n,d)),u.forEach(d=>V2(l,mf[s]||{},d)),u.forEach(d=>V2(l,ki,d)),u.forEach(d=>V2(l,HA,d))});const h=Array.from(l);return h.length===0&&h.push(Object.create(null)),eX.has(r)&&a.set(r,h),h}chartOptionScopes(){const{options:e,type:r}=this;return[e,mf[r]||{},ki.datasets[r]||{},{type:r},ki,HA]}resolveNamedOptions(e,r,i,n=[""]){const s={$shared:!0},{resolver:a,subPrefixes:o}=tX(this._resolverCache,e,n);let l=a;if(I_e(a,r)){s.$shared=!1,i=Xu(i)?i():i;const h=this.createResolver(e,i,o);l=Vg(a,i,h)}for(const h of r)s[h]=l[h];return s}createResolver(e,r,i=[""],n){const{resolver:s}=tX(this._resolverCache,e,i);return wr(r)?Vg(s,r,void 0,n):s}}function tX(t,e,r){let i=t.get(e);i||(i=new Map,t.set(e,i));const n=r.join();let s=i.get(n);return s||(s={resolver:YA(e,r),subPrefixes:r.filter(o=>!o.toLowerCase().includes("hover"))},i.set(n,s)),s}const N_e=t=>wr(t)&&Object.getOwnPropertyNames(t).some(e=>Xu(t[e]));function I_e(t,e){const{isScriptable:r,isIndexable:i}=rY(t);for(const n of e){const s=r(n),a=i(n),o=(a||s)&&t[n];if(s&&(Xu(o)||N_e(o))||a&&Ci(o))return!0}return!1}var __e="4.5.0";const D_e=["top","bottom","left","right","chartArea"];function rX(t,e){return t==="top"||t==="bottom"||D_e.indexOf(t)===-1&&e==="x"}function iX(t,e){return function(r,i){return r[t]===i[t]?r[e]-i[e]:r[t]-i[t]}}function nX(t){const e=t.chart,r=e.options.animation;e.notifyPlugins("afterRender"),li(r&&r.onComplete,[t],e)}function R_e(t){const e=t.chart,r=e.options.animation;li(r&&r.onProgress,[t],e)}function sX(t){return KA()&&typeof t=="string"?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const _C={},aX=t=>{const e=sX(t);return Object.values(_C).filter(r=>r.canvas===e).pop()};function P_e(t,e,r){const i=Object.keys(t);for(const n of i){const s=+n;if(s>=e){const a=t[n];delete t[n],(r>0||s>e)&&(t[s+r]=a)}}}function O_e(t,e,r,i){return!r||t.type==="mouseout"?null:i?e:t}class DC{static defaults=ki;static instances=_C;static overrides=mf;static registry=hc;static version=__e;static getChart=aX;static register(...e){hc.add(...e),oX()}static unregister(...e){hc.remove(...e),oX()}constructor(e,r){const i=this.config=new M_e(r),n=sX(e),s=aX(n);if(s)throw new Error("Canvas is already in use. Chart with ID '"+s.id+"' must be destroyed before the canvas with ID '"+s.canvas.id+"' can be reused.");const a=i.createResolver(i.chartOptionScopes(),this.getContext());this.platform=new(i.platform||e_e(n)),this.platform.updateConfig(i);const o=this.platform.acquireContext(n,a.aspectRatio),l=o&&o.canvas,h=l&&l.height,u=l&&l.width;if(this.id=I9e(),this.ctx=o,this.canvas=l,this.width=u,this.height=h,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new y_e,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=Y9e(d=>this.update(d),a.resizeDelay||0),this._dataChanges=[],_C[this.id]=this,!o||!l){console.error("Failed to create chart: can't acquire context from the given item");return}Sh.listen(this,"complete",nX),Sh.listen(this,"progress",R_e),this._initialize(),this.attached&&this.update()}get aspectRatio(){const{options:{aspectRatio:e,maintainAspectRatio:r},width:i,height:n,_aspectRatio:s}=this;return yr(e)?r&&s?s:n?i/n:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return hc}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():hY(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Jq(this.canvas,this.ctx),this}stop(){return Sh.stop(this),this}resize(e,r){Sh.running(this)?this._resizeBeforeDraw={width:e,height:r}:this._resize(e,r)}_resize(e,r){const i=this.options,n=this.canvas,s=i.maintainAspectRatio&&this.aspectRatio,a=this.platform.getMaximumSize(n,e,r,s),o=i.devicePixelRatio||this.platform.getDevicePixelRatio(),l=this.width?"resize":"attach";this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,hY(this,o,!0)&&(this.notifyPlugins("resize",{size:a}),li(i.onResize,[this,a],this),this.attached&&this._doResize(l)&&this.render())}ensureScalesHaveIDs(){const r=this.options.scales||{};Kr(r,(i,n)=>{i.id=n})}buildOrUpdateScales(){const e=this.options,r=e.scales,i=this.scales,n=Object.keys(i).reduce((a,o)=>(a[o]=!1,a),{});let s=[];r&&(s=s.concat(Object.keys(r).map(a=>{const o=r[a],l=cM(a,o),h=l==="r",u=l==="x";return{options:o,dposition:h?"chartArea":u?"bottom":"left",dtype:h?"radialLinear":u?"category":"linear"}}))),Kr(s,a=>{const o=a.options,l=o.id,h=cM(l,o),u=ar(o.type,a.dtype);(o.position===void 0||rX(o.position,h)!==rX(a.dposition))&&(o.position=a.dposition),n[l]=!0;let d=null;if(l in i&&i[l].type===u)d=i[l];else{const p=hc.getScale(u);d=new p({id:l,type:u,ctx:this.ctx,chart:this}),i[d.id]=d}d.init(o,e)}),Kr(n,(a,o)=>{a||delete i[o]}),Kr(i,a=>{Is.configure(this,a,a.options),Is.addBox(this,a)})}_updateMetasets(){const e=this._metasets,r=this.data.datasets.length,i=e.length;if(e.sort((n,s)=>n.index-s.index),i>r){for(let n=r;n<i;++n)this._destroyDatasetMeta(n);e.splice(r,i-r)}this._sortedMetasets=e.slice(0).sort(iX("order","index"))}_removeUnreferencedMetasets(){const{_metasets:e,data:{datasets:r}}=this;e.length>r.length&&delete this._stacks,e.forEach((i,n)=>{r.filter(s=>s===i._dataset).length===0&&this._destroyDatasetMeta(n)})}buildOrUpdateControllers(){const e=[],r=this.data.datasets;let i,n;for(this._removeUnreferencedMetasets(),i=0,n=r.length;i<n;i++){const s=r[i];let a=this.getDatasetMeta(i);const o=s.type||this.config.type;if(a.type&&a.type!==o&&(this._destroyDatasetMeta(i),a=this.getDatasetMeta(i)),a.type=o,a.indexAxis=s.indexAxis||lM(o,this.options),a.order=s.order||0,a.index=i,a.label=""+s.label,a.visible=this.isDatasetVisible(i),a.controller)a.controller.updateIndex(i),a.controller.linkScales();else{const l=hc.getController(o),{datasetElementType:h,dataElementType:u}=ki.datasets[o];Object.assign(l,{dataElementType:hc.getElement(u),datasetElementType:h&&hc.getElement(h)}),a.controller=new l(this,i),e.push(a.controller)}}return this._updateMetasets(),e}_resetElements(){Kr(this.data.datasets,(e,r)=>{this.getDatasetMeta(r).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(e){const r=this.config;r.update();const i=this._options=r.createResolver(r.chartOptionScopes(),this.getContext()),n=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:e,cancelable:!0})===!1)return;const s=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let a=0;for(let h=0,u=this.data.datasets.length;h<u;h++){const{controller:d}=this.getDatasetMeta(h),p=!n&&s.indexOf(d)===-1;d.buildOrUpdateElements(p),a=Math.max(+d.getMaxOverflow(),a)}a=this._minPadding=i.layout.autoPadding?a:0,this._updateLayout(a),n||Kr(s,h=>{h.reset()}),this._updateDatasets(e),this.notifyPlugins("afterUpdate",{mode:e}),this._layers.sort(iX("z","_idx"));const{_active:o,_lastEvent:l}=this;l?this._eventHandler(l,!0):o.length&&this._updateHoverStyles(o,o,!0),this.render()}_updateScales(){Kr(this.scales,e=>{Is.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const e=this.options,r=new Set(Object.keys(this._listeners)),i=new Set(e.events);(!Pq(r,i)||!!this._responsiveListeners!==e.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:e}=this,r=this._getUniformDataChanges()||[];for(const{method:i,start:n,count:s}of r){const a=i==="_removeElements"?-s:s;P_e(e,n,a)}}_getUniformDataChanges(){const e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];const r=this.data.datasets.length,i=s=>new Set(e.filter(a=>a[0]===s).map((a,o)=>o+","+a.splice(1).join(","))),n=i(0);for(let s=1;s<r;s++)if(!Pq(n,i(s)))return;return Array.from(n).map(s=>s.split(",")).map(s=>({method:s[1],start:+s[2],count:+s[3]}))}_updateLayout(e){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;Is.update(this,this.width,this.height,e);const r=this.chartArea,i=r.width<=0||r.height<=0;this._layers=[],Kr(this.boxes,n=>{i&&n.position==="chartArea"||(n.configure&&n.configure(),this._layers.push(...n._layers()))},this),this._layers.forEach((n,s)=>{n._idx=s}),this.notifyPlugins("afterLayout")}_updateDatasets(e){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:e,cancelable:!0})!==!1){for(let r=0,i=this.data.datasets.length;r<i;++r)this.getDatasetMeta(r).controller.configure();for(let r=0,i=this.data.datasets.length;r<i;++r)this._updateDataset(r,Xu(e)?e({datasetIndex:r}):e);this.notifyPlugins("afterDatasetsUpdate",{mode:e})}}_updateDataset(e,r){const i=this.getDatasetMeta(e),n={meta:i,index:e,mode:r,cancelable:!0};this.notifyPlugins("beforeDatasetUpdate",n)!==!1&&(i.controller._update(r),n.cancelable=!1,this.notifyPlugins("afterDatasetUpdate",n))}render(){this.notifyPlugins("beforeRender",{cancelable:!0})!==!1&&(Sh.has(this)?this.attached&&!Sh.running(this)&&Sh.start(this):(this.draw(),nX({chart:this})))}draw(){let e;if(this._resizeBeforeDraw){const{width:i,height:n}=this._resizeBeforeDraw;this._resizeBeforeDraw=null,this._resize(i,n)}if(this.clear(),this.width<=0||this.height<=0||this.notifyPlugins("beforeDraw",{cancelable:!0})===!1)return;const r=this._layers;for(e=0;e<r.length&&r[e].z<=0;++e)r[e].draw(this.chartArea);for(this._drawDatasets();e<r.length;++e)r[e].draw(this.chartArea);this.notifyPlugins("afterDraw")}_getSortedDatasetMetas(e){const r=this._sortedMetasets,i=[];let n,s;for(n=0,s=r.length;n<s;++n){const a=r[n];(!e||a.visible)&&i.push(a)}return i}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(this.notifyPlugins("beforeDatasetsDraw",{cancelable:!0})===!1)return;const e=this.getSortedVisibleDatasetMetas();for(let r=e.length-1;r>=0;--r)this._drawDataset(e[r]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(e){const r=this.ctx,i={meta:e,index:e.index,cancelable:!0},n=xY(this,e);this.notifyPlugins("beforeDatasetDraw",i)!==!1&&(n&&yC(r,n),e.controller.draw(),n&&bC(r),i.cancelable=!1,this.notifyPlugins("afterDatasetDraw",i))}isPointInArea(e){return Eh(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,r,i,n){const s=DIe.modes[r];return typeof s=="function"?s(this,e,i,n):[]}getDatasetMeta(e){const r=this.data.datasets[e],i=this._metasets;let n=i.filter(s=>s&&s._dataset===r).pop();return n||(n={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:r&&r.order||0,index:e,_dataset:r,_parsed:[],_sorted:!1},i.push(n)),n}getContext(){return this.$context||(this.$context=Ku(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){const r=this.data.datasets[e];if(!r)return!1;const i=this.getDatasetMeta(e);return typeof i.hidden=="boolean"?!i.hidden:!r.hidden}setDatasetVisibility(e,r){const i=this.getDatasetMeta(e);i.hidden=!r}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,r,i){const n=i?"show":"hide",s=this.getDatasetMeta(e),a=s.controller._resolveAnimations(void 0,n);M2(r)?(s.data[r].hidden=!i,this.update()):(this.setDatasetVisibility(e,i),a.update(s,{visible:i}),this.update(o=>o.datasetIndex===e?n:void 0))}hide(e,r){this._updateVisibility(e,r,!1)}show(e,r){this._updateVisibility(e,r,!0)}_destroyDatasetMeta(e){const r=this._metasets[e];r&&r.controller&&r.controller._destroy(),delete this._metasets[e]}_stop(){let e,r;for(this.stop(),Sh.remove(this),e=0,r=this.data.datasets.length;e<r;++e)this._destroyDatasetMeta(e)}destroy(){this.notifyPlugins("beforeDestroy");const{canvas:e,ctx:r}=this;this._stop(),this.config.clearCache(),e&&(this.unbindEvents(),Jq(e,r),this.platform.releaseContext(r),this.canvas=null,this.ctx=null),delete _C[this.id],this.notifyPlugins("afterDestroy")}toBase64Image(...e){return this.canvas.toDataURL(...e)}bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindResponsiveEvents():this.attached=!0}bindUserEvents(){const e=this._listeners,r=this.platform,i=(s,a)=>{r.addEventListener(this,s,a),e[s]=a},n=(s,a,o)=>{s.offsetX=a,s.offsetY=o,this._eventHandler(s)};Kr(this.options.events,s=>i(s,n))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const e=this._responsiveListeners,r=this.platform,i=(l,h)=>{r.addEventListener(this,l,h),e[l]=h},n=(l,h)=>{e[l]&&(r.removeEventListener(this,l,h),delete e[l])},s=(l,h)=>{this.canvas&&this.resize(l,h)};let a;const o=()=>{n("attach",o),this.attached=!0,this.resize(),i("resize",s),i("detach",a)};a=()=>{this.attached=!1,n("resize",s),this._stop(),this._resize(0,0),i("attach",o)},r.isAttached(this.canvas)?o():a()}unbindEvents(){Kr(this._listeners,(e,r)=>{this.platform.removeEventListener(this,r,e)}),this._listeners={},Kr(this._responsiveListeners,(e,r)=>{this.platform.removeEventListener(this,r,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,r,i){const n=i?"set":"remove";let s,a,o,l;for(r==="dataset"&&(s=this.getDatasetMeta(e[0].datasetIndex),s.controller["_"+n+"DatasetHoverStyle"]()),o=0,l=e.length;o<l;++o){a=e[o];const h=a&&this.getDatasetMeta(a.datasetIndex).controller;h&&h[n+"HoverStyle"](a.element,a.datasetIndex,a.index)}}getActiveElements(){return this._active||[]}setActiveElements(e){const r=this._active||[],i=e.map(({datasetIndex:s,index:a})=>{const o=this.getDatasetMeta(s);if(!o)throw new Error("No dataset found at index "+s);return{datasetIndex:s,element:o.data[a],index:a}});!dC(i,r)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,r))}notifyPlugins(e,r,i){return this._plugins.notify(this,e,r,i)}isPluginEnabled(e){return this._plugins._cache.filter(r=>r.plugin.id===e).length===1}_updateHoverStyles(e,r,i){const n=this.options.hover,s=(l,h)=>l.filter(u=>!h.some(d=>u.datasetIndex===d.datasetIndex&&u.index===d.index)),a=s(r,e),o=i?e:s(e,r);a.length&&this.updateHoverStyle(a,n.mode,!1),o.length&&n.mode&&this.updateHoverStyle(o,n.mode,!0)}_eventHandler(e,r){const i={event:e,replay:r,cancelable:!0,inChartArea:this.isPointInArea(e)},n=a=>(a.options.events||this.options.events).includes(e.native.type);if(this.notifyPlugins("beforeEvent",i,n)===!1)return;const s=this._handleEvent(e,r,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,n),(s||i.changed)&&this.render(),this}_handleEvent(e,r,i){const{_active:n=[],options:s}=this,a=r,o=this._getActiveElements(e,n,i,a),l=$9e(e),h=O_e(e,this._lastEvent,i,l);i&&(this._lastEvent=null,li(s.onHover,[e,o,this],this),l&&li(s.onClick,[e,o,this],this));const u=!dC(o,n);return(u||r)&&(this._active=o,this._updateHoverStyles(o,n,r)),this._lastEvent=h,u}_getActiveElements(e,r,i,n){if(e.type==="mouseout")return[];if(!i)return r;const s=this.options.hover;return this.getElementsAtEventForMode(e,s.mode,s,n)}}function oX(){return Kr(DC.instances,t=>t._plugins.invalidate())}function $_e(t,e,r){const{startAngle:i,x:n,y:s,outerRadius:a,innerRadius:o,options:l}=e,{borderWidth:h,borderJoinStyle:u}=l,d=Math.min(h/a,As(i-r));if(t.beginPath(),t.arc(n,s,a-h/2,i+d/2,r-d/2),o>0){const p=Math.min(h/o,As(i-r));t.arc(n,s,o+h/2,r-p/2,i+p/2,!0)}else{const p=Math.min(h/2,a*As(i-r));if(u==="round")t.arc(n,s,p,r-Br/2,i+Br/2,!0);else if(u==="bevel"){const f=2*p*p,m=-f*Math.cos(r+Br/2)+n,v=-f*Math.sin(r+Br/2)+s,y=f*Math.cos(i+Br/2)+n,b=f*Math.sin(i+Br/2)+s;t.lineTo(m,v),t.lineTo(y,b)}}t.closePath(),t.moveTo(0,0),t.rect(0,0,t.canvas.width,t.canvas.height),t.clip("evenodd")}function B_e(t,e,r){const{startAngle:i,pixelMargin:n,x:s,y:a,outerRadius:o,innerRadius:l}=e;let h=n/o;t.beginPath(),t.arc(s,a,o,i-h,r+h),l>n?(h=n/l,t.arc(s,a,l,r+h,i-h,!0)):t.arc(s,a,n,r+Ki,i-Ki),t.closePath(),t.clip()}function F_e(t){return qA(t,["outerStart","outerEnd","innerStart","innerEnd"])}function z_e(t,e,r,i){const n=F_e(t.options.borderRadius),s=(r-e)/2,a=Math.min(s,i*e/2),o=l=>{const h=(r-Math.min(s,l))*i/2;return jn(l,0,Math.min(s,h))};return{outerStart:o(n.outerStart),outerEnd:o(n.outerEnd),innerStart:jn(n.innerStart,0,a),innerEnd:jn(n.innerEnd,0,a)}}function Wg(t,e,r,i){return{x:r+t*Math.cos(e),y:i+t*Math.sin(e)}}function RC(t,e,r,i,n,s){const{x:a,y:o,startAngle:l,pixelMargin:h,innerRadius:u}=e,d=Math.max(e.outerRadius+i+r-h,0),p=u>0?u+i+r+h:0;let f=0;const m=n-l;if(i){const R=u>0?u-i:0,P=d>0?d-i:0,O=(R+P)/2,$=O!==0?m*O/(O+i):m;f=(m-$)/2}const v=Math.max(.001,m*d-r/Br)/d,y=(m-v)/2,b=l+y+f,x=n-y-f,{outerStart:w,outerEnd:C,innerStart:k,innerEnd:S}=z_e(e,p,d,x-b),E=d-w,A=d-C,M=b+w/E,_=x-C/A,I=p+k,D=p+S,B=b+k/I,N=x-S/D;if(t.beginPath(),s){const R=(M+_)/2;if(t.arc(a,o,d,M,R),t.arc(a,o,d,R,_),C>0){const F=Wg(A,_,a,o);t.arc(F.x,F.y,C,_,x+Ki)}const P=Wg(D,x,a,o);if(t.lineTo(P.x,P.y),S>0){const F=Wg(D,N,a,o);t.arc(F.x,F.y,S,x+Ki,N+Math.PI)}const O=(x-S/p+(b+k/p))/2;if(t.arc(a,o,p,x-S/p,O,!0),t.arc(a,o,p,O,b+k/p,!0),k>0){const F=Wg(I,B,a,o);t.arc(F.x,F.y,k,B+Math.PI,b-Ki)}const $=Wg(E,b,a,o);if(t.lineTo($.x,$.y),w>0){const F=Wg(E,M,a,o);t.arc(F.x,F.y,w,b-Ki,M)}}else{t.moveTo(a,o);const R=Math.cos(M)*d+a,P=Math.sin(M)*d+o;t.lineTo(R,P);const O=Math.cos(_)*d+a,$=Math.sin(_)*d+o;t.lineTo(O,$)}t.closePath()}function U_e(t,e,r,i,n){const{fullCircles:s,startAngle:a,circumference:o}=e;let l=e.endAngle;if(s){RC(t,e,r,i,l,n);for(let h=0;h<s;++h)t.fill();isNaN(o)||(l=a+(o%fi||fi))}return RC(t,e,r,i,l,n),t.fill(),l}function G_e(t,e,r,i,n){const{fullCircles:s,startAngle:a,circumference:o,options:l}=e,{borderWidth:h,borderJoinStyle:u,borderDash:d,borderDashOffset:p,borderRadius:f}=l,m=l.borderAlign==="inner";if(!h)return;t.setLineDash(d||[]),t.lineDashOffset=p,m?(t.lineWidth=h*2,t.lineJoin=u||"round"):(t.lineWidth=h,t.lineJoin=u||"bevel");let v=e.endAngle;if(s){RC(t,e,r,i,v,n);for(let y=0;y<s;++y)t.stroke();isNaN(o)||(v=a+(o%fi||fi))}m&&B_e(t,e,v),l.selfJoin&&v-a>=Br&&f===0&&u!=="miter"&&$_e(t,e,v),s||(RC(t,e,r,i,v,n),t.stroke())}class V_e extends Lh{static id="arc";static defaults={borderAlign:"center",borderColor:"#fff",borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0,selfJoin:!1};static defaultRoutes={backgroundColor:"backgroundColor"};static descriptors={_scriptable:!0,_indexable:e=>e!=="borderDash"};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(e){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,e&&Object.assign(this,e)}inRange(e,r,i){const n=this.getProps(["x","y"],i),{angle:s,distance:a}=zq(n,{x:e,y:r}),{startAngle:o,endAngle:l,innerRadius:h,outerRadius:u,circumference:d}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],i),p=(this.options.spacing+this.options.borderWidth)/2,f=ar(d,l-o),m=I2(s,o,l)&&o!==l,v=f>=fi||m,y=kh(a,h+p,u+p);return v&&y}getCenterPoint(e){const{x:r,y:i,startAngle:n,endAngle:s,innerRadius:a,outerRadius:o}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],e),{offset:l,spacing:h}=this.options,u=(n+s)/2,d=(a+o+h+l)/2;return{x:r+Math.cos(u)*d,y:i+Math.sin(u)*d}}tooltipPosition(e){return this.getCenterPoint(e)}draw(e){const{options:r,circumference:i}=this,n=(r.offset||0)/4,s=(r.spacing||0)/2,a=r.circular;if(this.pixelMargin=r.borderAlign==="inner"?.33:0,this.fullCircles=i>fi?Math.floor(i/fi):0,i===0||this.innerRadius<0||this.outerRadius<0)return;e.save();const o=(this.startAngle+this.endAngle)/2;e.translate(Math.cos(o)*n,Math.sin(o)*n);const l=1-Math.sin(Math.min(Br,i||0)),h=n*l;e.fillStyle=r.backgroundColor,e.strokeStyle=r.borderColor,U_e(e,this,h,s,a),G_e(e,this,h,s,a),e.restore()}}function lX(t,e,r=e){t.lineCap=ar(r.borderCapStyle,e.borderCapStyle),t.setLineDash(ar(r.borderDash,e.borderDash)),t.lineDashOffset=ar(r.borderDashOffset,e.borderDashOffset),t.lineJoin=ar(r.borderJoinStyle,e.borderJoinStyle),t.lineWidth=ar(r.borderWidth,e.borderWidth),t.strokeStyle=ar(r.borderColor,e.borderColor)}function H_e(t,e,r){t.lineTo(r.x,r.y)}function j_e(t){return t.stepped?aNe:t.tension||t.cubicInterpolationMode==="monotone"?oNe:H_e}function cX(t,e,r={}){const i=t.length,{start:n=0,end:s=i-1}=r,{start:a,end:o}=e,l=Math.max(n,a),h=Math.min(s,o),u=n<a&&s<a||n>o&&s>o;return{count:i,start:l,loop:e.loop,ilen:h<l&&!u?i+h-l:h-l}}function W_e(t,e,r,i){const{points:n,options:s}=e,{count:a,start:o,loop:l,ilen:h}=cX(n,r,i),u=j_e(s);let{move:d=!0,reverse:p}=i||{},f,m,v;for(f=0;f<=h;++f)m=n[(o+(p?h-f:f))%a],!m.skip&&(d?(t.moveTo(m.x,m.y),d=!1):u(t,v,m,p,s.stepped),v=m);return l&&(m=n[(o+(p?h:0))%a],u(t,v,m,p,s.stepped)),!!l}function q_e(t,e,r,i){const n=e.points,{count:s,start:a,ilen:o}=cX(n,r,i),{move:l=!0,reverse:h}=i||{};let u=0,d=0,p,f,m,v,y,b;const x=C=>(a+(h?o-C:C))%s,w=()=>{v!==y&&(t.lineTo(u,y),t.lineTo(u,v),t.lineTo(u,b))};for(l&&(f=n[x(0)],t.moveTo(f.x,f.y)),p=0;p<=o;++p){if(f=n[x(p)],f.skip)continue;const C=f.x,k=f.y,S=C|0;S===m?(k<v?v=k:k>y&&(y=k),u=(d*u+C)/++d):(w(),t.lineTo(C,k),m=S,d=0,v=y=k),b=k}w()}function hM(t){const e=t.options,r=e.borderDash&&e.borderDash.length;return!t._decimated&&!t._loop&&!e.tension&&e.cubicInterpolationMode!=="monotone"&&!e.stepped&&!r?q_e:W_e}function Y_e(t){return t.stepped?FNe:t.tension||t.cubicInterpolationMode==="monotone"?zNe:Cf}function X_e(t,e,r,i){let n=e._path;n||(n=e._path=new Path2D,e.path(n,r,i)&&n.closePath()),lX(t,e.options),t.stroke(n)}function Z_e(t,e,r,i){const{segments:n,options:s}=e,a=hM(e);for(const o of n)lX(t,s,o.style),t.beginPath(),a(t,e,o,{start:r,end:r+i-1})&&t.closePath(),t.stroke()}const K_e=typeof Path2D=="function";function Q_e(t,e,r,i){K_e&&!e.options.segment?X_e(t,e,r,i):Z_e(t,e,r,i)}class PC extends Lh{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:e=>e!=="borderDash"&&e!=="fill"};constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,r){const i=this.options;if((i.tension||i.cubicInterpolationMode==="monotone")&&!i.stepped&&!this._pointsUpdated){const n=i.spanGaps?this._loop:this._fullLoop;INe(this._points,i,e,n,r),this._pointsUpdated=!0}}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=WNe(this,this.options.segment))}first(){const e=this.segments,r=this.points;return e.length&&r[e[0].start]}last(){const e=this.segments,r=this.points,i=e.length;return i&&r[e[i-1].end]}interpolate(e,r){const i=this.options,n=e[r],s=this.points,a=vY(this,{property:r,start:n,end:n});if(!a.length)return;const o=[],l=Y_e(i);let h,u;for(h=0,u=a.length;h<u;++h){const{start:d,end:p}=a[h],f=s[d],m=s[p];if(f===m){o.push(f);continue}const v=Math.abs((n-f[r])/(m[r]-f[r])),y=l(f,m,v,i.stepped);y[r]=e[r],o.push(y)}return o.length===1?o[0]:o}pathSegment(e,r,i){return hM(this)(e,this,r,i)}path(e,r,i){const n=this.segments,s=hM(this);let a=this._loop;r=r||0,i=i||this.points.length-r;for(const o of n)a&=s(e,this,o,{start:r,end:r+i-1});return!!a}draw(e,r,i,n){const s=this.options||{};(this.points||[]).length&&s.borderWidth&&(e.save(),Q_e(e,this,i,n),e.restore()),this.animated&&(this._pointsUpdated=!1,this._path=void 0)}}function hX(t,e,r,i){const n=t.options,{[r]:s}=t.getProps([r],i);return Math.abs(e-s)<n.radius+n.hitRadius}class J_e extends Lh{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(e){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,e&&Object.assign(this,e)}inRange(e,r,i){const n=this.options,{x:s,y:a}=this.getProps(["x","y"],i);return Math.pow(e-s,2)+Math.pow(r-a,2)<Math.pow(n.hitRadius+n.radius,2)}inXRange(e,r){return hX(this,e,"x",r)}inYRange(e,r){return hX(this,e,"y",r)}getCenterPoint(e){const{x:r,y:i}=this.getProps(["x","y"],e);return{x:r,y:i}}size(e){e=e||this.options||{};let r=e.radius||0;r=Math.max(r,r&&e.hoverRadius||0);const i=r&&e.borderWidth||0;return(r+i)*2}draw(e,r){const i=this.options;this.skip||i.radius<.1||!Eh(this,r,this.size(i)/2)||(e.strokeStyle=i.borderColor,e.lineWidth=i.borderWidth,e.fillStyle=i.backgroundColor,WA(e,i,this.x,this.y))}getRange(){const e=this.options||{};return e.radius+e.hitRadius}}function uX(t,e){const{x:r,y:i,base:n,width:s,height:a}=t.getProps(["x","y","base","width","height"],e);let o,l,h,u,d;return t.horizontal?(d=a/2,o=Math.min(r,n),l=Math.max(r,n),h=i-d,u=i+d):(d=s/2,o=r-d,l=r+d,h=Math.min(i,n),u=Math.max(i,n)),{left:o,top:h,right:l,bottom:u}}function Ju(t,e,r,i){return t?0:jn(e,r,i)}function eDe(t,e,r){const i=t.options.borderWidth,n=t.borderSkipped,s=tY(i);return{t:Ju(n.top,s.top,0,r),r:Ju(n.right,s.right,0,e),b:Ju(n.bottom,s.bottom,0,r),l:Ju(n.left,s.left,0,e)}}function tDe(t,e,r){const{enableBorderRadius:i}=t.getProps(["enableBorderRadius"]),n=t.options.borderRadius,s=bf(n),a=Math.min(e,r),o=t.borderSkipped,l=i||wr(n);return{topLeft:Ju(!l||o.top||o.left,s.topLeft,0,a),topRight:Ju(!l||o.top||o.right,s.topRight,0,a),bottomLeft:Ju(!l||o.bottom||o.left,s.bottomLeft,0,a),bottomRight:Ju(!l||o.bottom||o.right,s.bottomRight,0,a)}}function rDe(t){const e=uX(t),r=e.right-e.left,i=e.bottom-e.top,n=eDe(t,r/2,i/2),s=tDe(t,r/2,i/2);return{outer:{x:e.left,y:e.top,w:r,h:i,radius:s},inner:{x:e.left+n.l,y:e.top+n.t,w:r-n.l-n.r,h:i-n.t-n.b,radius:{topLeft:Math.max(0,s.topLeft-Math.max(n.t,n.l)),topRight:Math.max(0,s.topRight-Math.max(n.t,n.r)),bottomLeft:Math.max(0,s.bottomLeft-Math.max(n.b,n.l)),bottomRight:Math.max(0,s.bottomRight-Math.max(n.b,n.r))}}}}function uM(t,e,r,i){const n=e===null,s=r===null,o=t&&!(n&&s)&&uX(t,i);return o&&(n||kh(e,o.left,o.right))&&(s||kh(r,o.top,o.bottom))}function iDe(t){return t.topLeft||t.topRight||t.bottomLeft||t.bottomRight}function nDe(t,e){t.rect(e.x,e.y,e.w,e.h)}function dM(t,e,r={}){const i=t.x!==r.x?-e:0,n=t.y!==r.y?-e:0,s=(t.x+t.w!==r.x+r.w?e:0)-i,a=(t.y+t.h!==r.y+r.h?e:0)-n;return{x:t.x+i,y:t.y+n,w:t.w+s,h:t.h+a,radius:t.radius}}class sDe extends Lh{static id="bar";static defaults={borderSkipped:"start",borderWidth:0,borderRadius:0,inflateAmount:"auto",pointStyle:void 0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(e){super(),this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,this.inflateAmount=void 0,e&&Object.assign(this,e)}draw(e){const{inflateAmount:r,options:{borderColor:i,backgroundColor:n}}=this,{inner:s,outer:a}=rDe(this),o=iDe(a.radius)?P2:nDe;e.save(),(a.w!==s.w||a.h!==s.h)&&(e.beginPath(),o(e,dM(a,r,s)),e.clip(),o(e,dM(s,-r,a)),e.fillStyle=i,e.fill("evenodd")),e.beginPath(),o(e,dM(s,r)),e.fillStyle=n,e.fill(),e.restore()}inRange(e,r,i){return uM(this,e,r,i)}inXRange(e,r){return uM(this,e,null,r)}inYRange(e,r){return uM(this,null,e,r)}getCenterPoint(e){const{x:r,y:i,base:n,horizontal:s}=this.getProps(["x","y","base","horizontal"],e);return{x:s?(r+n)/2:r,y:s?i:(i+n)/2}}getRange(e){return e==="x"?this.width/2:this.height/2}}var aDe=Object.freeze({__proto__:null,ArcElement:V_e,BarElement:sDe,LineElement:PC,PointElement:J_e});const pM=["rgb(54, 162, 235)","rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(153, 102, 255)","rgb(201, 203, 207)"],dX=pM.map(t=>t.replace("rgb(","rgba(").replace(")",", 0.5)"));function pX(t){return pM[t%pM.length]}function fX(t){return dX[t%dX.length]}function oDe(t,e){return t.borderColor=pX(e),t.backgroundColor=fX(e),++e}function lDe(t,e){return t.backgroundColor=t.data.map(()=>pX(e++)),e}function cDe(t,e){return t.backgroundColor=t.data.map(()=>fX(e++)),e}function hDe(t){let e=0;return(r,i)=>{const n=t.getDatasetMeta(i).controller;n instanceof iM?e=lDe(r,e):n instanceof DY?e=cDe(r,e):n&&(e=oDe(r,e))}}function gX(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}function uDe(t){return t&&(t.borderColor||t.backgroundColor)}function dDe(){return ki.borderColor!=="rgba(0,0,0,0.1)"||ki.backgroundColor!=="rgba(0,0,0,0.1)"}var pDe={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,r){if(!r.enabled)return;const{data:{datasets:i},options:n}=t.config,{elements:s}=n,a=gX(i)||uDe(n)||s&&gX(s)||dDe();if(!r.forceOverride&&a)return;const o=hDe(t);i.forEach(o)}};function fDe(t,e,r,i,n){const s=n.samples||i;if(s>=r)return t.slice(e,e+r);const a=[],o=(r-2)/(s-2);let l=0;const h=e+r-1;let u=e,d,p,f,m,v;for(a[l++]=t[u],d=0;d<s-2;d++){let y=0,b=0,x;const w=Math.floor((d+1)*o)+1+e,C=Math.min(Math.floor((d+2)*o)+1,r)+e,k=C-w;for(x=w;x<C;x++)y+=t[x].x,b+=t[x].y;y/=k,b/=k;const S=Math.floor(d*o)+1+e,E=Math.min(Math.floor((d+1)*o)+1,r)+e,{x:A,y:M}=t[u];for(f=m=-1,x=S;x<E;x++)m=.5*Math.abs((A-y)*(t[x].y-M)-(A-t[x].x)*(b-M)),m>f&&(f=m,p=t[x],v=x);a[l++]=p,u=v}return a[l++]=t[h],a}function gDe(t,e,r,i){let n=0,s=0,a,o,l,h,u,d,p,f,m,v;const y=[],b=e+r-1,x=t[e].x,C=t[b].x-x;for(a=e;a<e+r;++a){o=t[a],l=(o.x-x)/C*i,h=o.y;const k=l|0;if(k===u)h<m?(m=h,d=a):h>v&&(v=h,p=a),n=(s*n+o.x)/++s;else{const S=a-1;if(!yr(d)&&!yr(p)){const E=Math.min(d,p),A=Math.max(d,p);E!==f&&E!==S&&y.push({...t[E],x:n}),A!==f&&A!==S&&y.push({...t[A],x:n})}a>0&&S!==f&&y.push(t[S]),y.push(o),u=k,s=0,m=v=h,d=p=f=a}}return y}function mX(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function vX(t){t.data.datasets.forEach(e=>{mX(e)})}function mDe(t,e){const r=e.length;let i=0,n;const{iScale:s}=t,{min:a,max:o,minDefined:l,maxDefined:h}=s.getUserBounds();return l&&(i=jn(Th(e,s.axis,a).lo,0,r-1)),h?n=jn(Th(e,s.axis,o).hi+1,i,r)-i:n=r-i,{start:i,count:n}}var vDe={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,r)=>{if(!r.enabled){vX(t);return}const i=t.width;t.data.datasets.forEach((n,s)=>{const{_data:a,indexAxis:o}=n,l=t.getDatasetMeta(s),h=a||n.data;if(O2([o,t.options.indexAxis])==="y"||!l.controller.supportsDecimation)return;const u=t.scales[l.xAxisID];if(u.type!=="linear"&&u.type!=="time"||t.options.parsing)return;let{start:d,count:p}=mDe(l,h);const f=r.threshold||4*i;if(p<=f){mX(n);return}yr(a)&&(n._data=h,delete n.data,Object.defineProperty(n,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(v){this._data=v}}));let m;switch(r.algorithm){case"lttb":m=fDe(h,d,p,i,r);break;case"min-max":m=gDe(h,d,p,i);break;default:throw new Error(`Unsupported decimation algorithm '${r.algorithm}'`)}n._decimated=m})},destroy(t){vX(t)}};function yDe(t,e,r){const i=t.segments,n=t.points,s=e.points,a=[];for(const o of i){let{start:l,end:h}=o;h=OC(l,h,n);const u=fM(r,n[l],n[h],o.loop);if(!e.segments){a.push({source:o,target:u,start:n[l],end:n[h]});continue}const d=vY(e,u);for(const p of d){const f=fM(r,s[p.start],s[p.end],p.loop),m=mY(o,n,f);for(const v of m)a.push({source:v,target:p,start:{[r]:yX(u,f,"start",Math.max)},end:{[r]:yX(u,f,"end",Math.min)}})}}return a}function fM(t,e,r,i){if(i)return;let n=e[t],s=r[t];return t==="angle"&&(n=As(n),s=As(s)),{property:t,start:n,end:s}}function bDe(t,e){const{x:r=null,y:i=null}=t||{},n=e.points,s=[];return e.segments.forEach(({start:a,end:o})=>{o=OC(a,o,n);const l=n[a],h=n[o];i!==null?(s.push({x:l.x,y:i}),s.push({x:h.x,y:i})):r!==null&&(s.push({x:r,y:l.y}),s.push({x:r,y:h.y}))}),s}function OC(t,e,r){for(;e>t;e--){const i=r[e];if(!isNaN(i.x)&&!isNaN(i.y))break}return e}function yX(t,e,r,i){return t&&e?i(t[r],e[r]):t?t[r]:e?e[r]:0}function bX(t,e){let r=[],i=!1;return Ci(t)?(i=!0,r=t):r=bDe(t,e),r.length?new PC({points:r,options:{tension:0},_loop:i,_fullLoop:i}):null}function xX(t){return t&&t.fill!==!1}function xDe(t,e,r){let n=t[e].fill;const s=[e];let a;if(!r)return n;for(;n!==!1&&s.indexOf(n)===-1;){if(!$i(n))return n;if(a=t[n],!a)return!1;if(a.visible)return n;s.push(n),n=a.fill}return!1}function wDe(t,e,r){const i=EDe(t);if(wr(i))return isNaN(i.value)?!1:i;let n=parseFloat(i);return $i(n)&&Math.floor(n)===n?CDe(i[0],e,n,r):["origin","start","end","stack","shape"].indexOf(i)>=0&&i}function CDe(t,e,r,i){return(t==="-"||t==="+")&&(r=e+r),r===e||r<0||r>=i?!1:r}function kDe(t,e){let r=null;return t==="start"?r=e.bottom:t==="end"?r=e.top:wr(t)?r=e.getPixelForValue(t.value):e.getBasePixel&&(r=e.getBasePixel()),r}function TDe(t,e,r){let i;return t==="start"?i=r:t==="end"?i=e.options.reverse?e.min:e.max:wr(t)?i=t.value:i=e.getBaseValue(),i}function EDe(t){const e=t.options,r=e.fill;let i=ar(r&&r.target,r);return i===void 0&&(i=!!e.backgroundColor),i===!1||i===null?!1:i===!0?"origin":i}function SDe(t){const{scale:e,index:r,line:i}=t,n=[],s=i.segments,a=i.points,o=LDe(e,r);o.push(bX({x:null,y:e.bottom},i));for(let l=0;l<s.length;l++){const h=s[l];for(let u=h.start;u<=h.end;u++)ADe(n,a[u],o)}return new PC({points:n,options:{}})}function LDe(t,e){const r=[],i=t.getMatchingVisibleMetas("line");for(let n=0;n<i.length;n++){const s=i[n];if(s.index===e)break;s.hidden||r.unshift(s.dataset)}return r}function ADe(t,e,r){const i=[];for(let n=0;n<r.length;n++){const s=r[n],{first:a,last:o,point:l}=MDe(s,e,"x");if(!(!l||a&&o)){if(a)i.unshift(l);else if(t.push(l),!o)break}}t.push(...i)}function MDe(t,e,r){const i=t.interpolate(e,r);if(!i)return{};const n=i[r],s=t.segments,a=t.points;let o=!1,l=!1;for(let h=0;h<s.length;h++){const u=s[h],d=a[u.start][r],p=a[u.end][r];if(kh(n,d,p)){o=n===d,l=n===p;break}}return{first:o,last:l,point:i}}class wX{constructor(e){this.x=e.x,this.y=e.y,this.radius=e.radius}pathSegment(e,r,i){const{x:n,y:s,radius:a}=this;return r=r||{start:0,end:fi},e.arc(n,s,a,r.end,r.start,!0),!i.bounds}interpolate(e){const{x:r,y:i,radius:n}=this,s=e.angle;return{x:r+Math.cos(s)*n,y:i+Math.sin(s)*n,angle:s}}}function NDe(t){const{chart:e,fill:r,line:i}=t;if($i(r))return IDe(e,r);if(r==="stack")return SDe(t);if(r==="shape")return!0;const n=_De(t);return n instanceof wX?n:bX(n,i)}function IDe(t,e){const r=t.getDatasetMeta(e);return r&&t.isDatasetVisible(e)?r.dataset:null}function _De(t){return(t.scale||{}).getPointPositionForValue?RDe(t):DDe(t)}function DDe(t){const{scale:e={},fill:r}=t,i=kDe(r,e);if($i(i)){const n=e.isHorizontal();return{x:n?i:null,y:n?null:i}}return null}function RDe(t){const{scale:e,fill:r}=t,i=e.options,n=e.getLabels().length,s=i.reverse?e.max:e.min,a=TDe(r,e,s),o=[];if(i.grid.circular){const l=e.getPointPositionForValue(0,s);return new wX({x:l.x,y:l.y,radius:e.getDistanceFromCenterForValue(a)})}for(let l=0;l<n;++l)o.push(e.getPointPositionForValue(l,a));return o}function gM(t,e,r){const i=NDe(e),{chart:n,index:s,line:a,scale:o,axis:l}=e,h=a.options,u=h.fill,d=h.backgroundColor,{above:p=d,below:f=d}=u||{},m=n.getDatasetMeta(s),v=xY(n,m);i&&a.points.length&&(yC(t,r),PDe(t,{line:a,target:i,above:p,below:f,area:r,scale:o,axis:l,clip:v}),bC(t))}function PDe(t,e){const{line:r,target:i,above:n,below:s,area:a,scale:o,clip:l}=e,h=r._loop?"angle":e.axis;t.save();let u=s;s!==n&&(h==="x"?(CX(t,i,a.top),mM(t,{line:r,target:i,color:n,scale:o,property:h,clip:l}),t.restore(),t.save(),CX(t,i,a.bottom)):h==="y"&&(kX(t,i,a.left),mM(t,{line:r,target:i,color:s,scale:o,property:h,clip:l}),t.restore(),t.save(),kX(t,i,a.right),u=n)),mM(t,{line:r,target:i,color:u,scale:o,property:h,clip:l}),t.restore()}function CX(t,e,r){const{segments:i,points:n}=e;let s=!0,a=!1;t.beginPath();for(const o of i){const{start:l,end:h}=o,u=n[l],d=n[OC(l,h,n)];s?(t.moveTo(u.x,u.y),s=!1):(t.lineTo(u.x,r),t.lineTo(u.x,u.y)),a=!!e.pathSegment(t,o,{move:a}),a?t.closePath():t.lineTo(d.x,r)}t.lineTo(e.first().x,r),t.closePath(),t.clip()}function kX(t,e,r){const{segments:i,points:n}=e;let s=!0,a=!1;t.beginPath();for(const o of i){const{start:l,end:h}=o,u=n[l],d=n[OC(l,h,n)];s?(t.moveTo(u.x,u.y),s=!1):(t.lineTo(r,u.y),t.lineTo(u.x,u.y)),a=!!e.pathSegment(t,o,{move:a}),a?t.closePath():t.lineTo(r,d.y)}t.lineTo(r,e.first().y),t.closePath(),t.clip()}function mM(t,e){const{line:r,target:i,property:n,color:s,scale:a,clip:o}=e,l=yDe(r,i,n);for(const{source:h,target:u,start:d,end:p}of l){const{style:{backgroundColor:f=s}={}}=h,m=i!==!0;t.save(),t.fillStyle=f,ODe(t,a,o,m&&fM(n,d,p)),t.beginPath();const v=!!r.pathSegment(t,h);let y;if(m){v?t.closePath():TX(t,i,p,n);const b=!!i.pathSegment(t,u,{move:v,reverse:!0});y=v&&b,y||TX(t,i,d,n)}t.closePath(),t.fill(y?"evenodd":"nonzero"),t.restore()}}function ODe(t,e,r,i){const n=e.chart.chartArea,{property:s,start:a,end:o}=i||{};if(s==="x"||s==="y"){let l,h,u,d;s==="x"?(l=a,h=n.top,u=o,d=n.bottom):(l=n.left,h=a,u=n.right,d=o),t.beginPath(),r&&(l=Math.max(l,r.left),u=Math.min(u,r.right),h=Math.max(h,r.top),d=Math.min(d,r.bottom)),t.rect(l,h,u-l,d-h),t.clip()}}function TX(t,e,r,i){const n=e.interpolate(r,i);n&&t.lineTo(n.x,n.y)}var $De={id:"filler",afterDatasetsUpdate(t,e,r){const i=(t.data.datasets||[]).length,n=[];let s,a,o,l;for(a=0;a<i;++a)s=t.getDatasetMeta(a),o=s.dataset,l=null,o&&o.options&&o instanceof PC&&(l={visible:t.isDatasetVisible(a),index:a,fill:wDe(o,a,i),chart:t,axis:s.controller.options.indexAxis,scale:s.vScale,line:o}),s.$filler=l,n.push(l);for(a=0;a<i;++a)l=n[a],!(!l||l.fill===!1)&&(l.fill=xDe(n,a,r.propagate))},beforeDraw(t,e,r){const i=r.drawTime==="beforeDraw",n=t.getSortedVisibleDatasetMetas(),s=t.chartArea;for(let a=n.length-1;a>=0;--a){const o=n[a].$filler;o&&(o.line.updateControlPoints(s,o.axis),i&&o.fill&&gM(t.ctx,o,s))}},beforeDatasetsDraw(t,e,r){if(r.drawTime!=="beforeDatasetsDraw")return;const i=t.getSortedVisibleDatasetMetas();for(let n=i.length-1;n>=0;--n){const s=i[n].$filler;xX(s)&&gM(t.ctx,s,t.chartArea)}},beforeDatasetDraw(t,e,r){const i=e.meta.$filler;!xX(i)||r.drawTime!=="beforeDatasetDraw"||gM(t.ctx,i,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const EX=(t,e)=>{let{boxHeight:r=e,boxWidth:i=e}=t;return t.usePointStyle&&(r=Math.min(r,e),i=t.pointStyleWidth||Math.min(i,e)),{boxWidth:i,boxHeight:r,itemHeight:Math.max(e,r)}},BDe=(t,e)=>t!==null&&e!==null&&t.datasetIndex===e.datasetIndex&&t.index===e.index;class SX extends Lh{constructor(e){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,r,i){this.maxWidth=e,this.maxHeight=r,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const e=this.options.labels||{};let r=li(e.generateLabels,[this.chart],this)||[];e.filter&&(r=r.filter(i=>e.filter(i,this.chart.data))),e.sort&&(r=r.sort((i,n)=>e.sort(i,n,this.chart.data))),this.options.reverse&&r.reverse(),this.legendItems=r}fit(){const{options:e,ctx:r}=this;if(!e.display){this.width=this.height=0;return}const i=e.labels,n=En(i.font),s=n.size,a=this._computeTitleHeight(),{boxWidth:o,itemHeight:l}=EX(i,s);let h,u;r.font=n.string,this.isHorizontal()?(h=this.maxWidth,u=this._fitRows(a,s,o,l)+10):(u=this.maxHeight,h=this._fitCols(a,n,o,l)+10),this.width=Math.min(h,e.maxWidth||this.maxWidth),this.height=Math.min(u,e.maxHeight||this.maxHeight)}_fitRows(e,r,i,n){const{ctx:s,maxWidth:a,options:{labels:{padding:o}}}=this,l=this.legendHitBoxes=[],h=this.lineWidths=[0],u=n+o;let d=e;s.textAlign="left",s.textBaseline="middle";let p=-1,f=-u;return this.legendItems.forEach((m,v)=>{const y=i+r/2+s.measureText(m.text).width;(v===0||h[h.length-1]+y+2*o>a)&&(d+=u,h[h.length-(v>0?0:1)]=0,f+=u,p++),l[v]={left:0,top:f,row:p,width:y,height:n},h[h.length-1]+=y+o}),d}_fitCols(e,r,i,n){const{ctx:s,maxHeight:a,options:{labels:{padding:o}}}=this,l=this.legendHitBoxes=[],h=this.columnSizes=[],u=a-e;let d=o,p=0,f=0,m=0,v=0;return this.legendItems.forEach((y,b)=>{const{itemWidth:x,itemHeight:w}=FDe(i,r,s,y,n);b>0&&f+w+2*o>u&&(d+=p+o,h.push({width:p,height:f}),m+=p+o,v++,p=f=0),l[b]={left:m,top:f,col:v,width:x,height:w},p=Math.max(p,x),f+=w+o}),d+=p,h.push({width:p,height:f}),d}adjustHitBoxes(){if(!this.options.display)return;const e=this._computeTitleHeight(),{legendHitBoxes:r,options:{align:i,labels:{padding:n},rtl:s}}=this,a=jg(s,this.left,this.width);if(this.isHorizontal()){let o=0,l=Ms(i,this.left+n,this.right-this.lineWidths[o]);for(const h of r)o!==h.row&&(o=h.row,l=Ms(i,this.left+n,this.right-this.lineWidths[o])),h.top+=this.top+e+n,h.left=a.leftForLtr(a.x(l),h.width),l+=h.width+n}else{let o=0,l=Ms(i,this.top+e+n,this.bottom-this.columnSizes[o].height);for(const h of r)h.col!==o&&(o=h.col,l=Ms(i,this.top+e+n,this.bottom-this.columnSizes[o].height)),h.top=l,h.left+=this.left+n,h.left=a.leftForLtr(a.x(h.left),h.width),l+=h.height+n}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){const e=this.ctx;yC(e,this),this._draw(),bC(e)}}_draw(){const{options:e,columnSizes:r,lineWidths:i,ctx:n}=this,{align:s,labels:a}=e,o=ki.color,l=jg(e.rtl,this.left,this.width),h=En(a.font),{padding:u}=a,d=h.size,p=d/2;let f;this.drawTitle(),n.textAlign=l.textAlign("left"),n.textBaseline="middle",n.lineWidth=.5,n.font=h.string;const{boxWidth:m,boxHeight:v,itemHeight:y}=EX(a,d),b=function(S,E,A){if(isNaN(m)||m<=0||isNaN(v)||v<0)return;n.save();const M=ar(A.lineWidth,1);if(n.fillStyle=ar(A.fillStyle,o),n.lineCap=ar(A.lineCap,"butt"),n.lineDashOffset=ar(A.lineDashOffset,0),n.lineJoin=ar(A.lineJoin,"miter"),n.lineWidth=M,n.strokeStyle=ar(A.strokeStyle,o),n.setLineDash(ar(A.lineDash,[])),a.usePointStyle){const _={radius:v*Math.SQRT2/2,pointStyle:A.pointStyle,rotation:A.rotation,borderWidth:M},I=l.xPlus(S,m/2),D=E+p;eY(n,_,I,D,a.pointStyleWidth&&m)}else{const _=E+Math.max((d-v)/2,0),I=l.leftForLtr(S,m),D=bf(A.borderRadius);n.beginPath(),Object.values(D).some(B=>B!==0)?P2(n,{x:I,y:_,w:m,h:v,radius:D}):n.rect(I,_,m,v),n.fill(),M!==0&&n.stroke()}n.restore()},x=function(S,E,A){yf(n,A.text,S,E+y/2,h,{strikethrough:A.hidden,textAlign:l.textAlign(A.textAlign)})},w=this.isHorizontal(),C=this._computeTitleHeight();w?f={x:Ms(s,this.left+u,this.right-i[0]),y:this.top+u+C,line:0}:f={x:this.left+u,y:Ms(s,this.top+C+u,this.bottom-r[0].height),line:0},dY(this.ctx,e.textDirection);const k=y+u;this.legendItems.forEach((S,E)=>{n.strokeStyle=S.fontColor,n.fillStyle=S.fontColor;const A=n.measureText(S.text).width,M=l.textAlign(S.textAlign||(S.textAlign=a.textAlign)),_=m+p+A;let I=f.x,D=f.y;l.setWidth(this.width),w?E>0&&I+_+u>this.right&&(D=f.y+=k,f.line++,I=f.x=Ms(s,this.left+u,this.right-i[f.line])):E>0&&D+k>this.bottom&&(I=f.x=I+r[f.line].width+u,f.line++,D=f.y=Ms(s,this.top+C+u,this.bottom-r[f.line].height));const B=l.x(I);if(b(B,D,S),I=X9e(M,I+m+p,w?I+_:this.right,e.rtl),x(l.x(I),D,S),w)f.x+=_+u;else if(typeof S.text!="string"){const N=h.lineHeight;f.y+=LX(S,N)+u}else f.y+=k}),pY(this.ctx,e.textDirection)}drawTitle(){const e=this.options,r=e.title,i=En(r.font),n=Ns(r.padding);if(!r.display)return;const s=jg(e.rtl,this.left,this.width),a=this.ctx,o=r.position,l=i.size/2,h=n.top+l;let u,d=this.left,p=this.width;if(this.isHorizontal())p=Math.max(...this.lineWidths),u=this.top+h,d=Ms(e.align,d,this.right-p);else{const m=this.columnSizes.reduce((v,y)=>Math.max(v,y.height),0);u=h+Ms(e.align,this.top,this.bottom-m-e.labels.padding-this._computeTitleHeight())}const f=Ms(o,d,d+p);a.textAlign=s.textAlign(UA(o)),a.textBaseline="middle",a.strokeStyle=r.color,a.fillStyle=r.color,a.font=i.string,yf(a,r.text,f,u,i)}_computeTitleHeight(){const e=this.options.title,r=En(e.font),i=Ns(e.padding);return e.display?r.lineHeight+i.height:0}_getLegendItemAt(e,r){let i,n,s;if(kh(e,this.left,this.right)&&kh(r,this.top,this.bottom)){for(s=this.legendHitBoxes,i=0;i<s.length;++i)if(n=s[i],kh(e,n.left,n.left+n.width)&&kh(r,n.top,n.top+n.height))return this.legendItems[i]}return null}handleEvent(e){const r=this.options;if(!GDe(e.type,r))return;const i=this._getLegendItemAt(e.x,e.y);if(e.type==="mousemove"||e.type==="mouseout"){const n=this._hoveredItem,s=BDe(n,i);n&&!s&&li(r.onLeave,[e,n,this],this),this._hoveredItem=i,i&&!s&&li(r.onHover,[e,i,this],this)}else i&&li(r.onClick,[e,i,this],this)}}function FDe(t,e,r,i,n){const s=zDe(i,t,e,r),a=UDe(n,i,e.lineHeight);return{itemWidth:s,itemHeight:a}}function zDe(t,e,r,i){let n=t.text;return n&&typeof n!="string"&&(n=n.reduce((s,a)=>s.length>a.length?s:a)),e+r.size/2+i.measureText(n).width}function UDe(t,e,r){let i=t;return typeof e.text!="string"&&(i=LX(e,r)),i}function LX(t,e){const r=t.text?t.text.length:0;return e*r}function GDe(t,e){return!!((t==="mousemove"||t==="mouseout")&&(e.onHover||e.onLeave)||e.onClick&&(t==="click"||t==="mouseup"))}var VDe={id:"legend",_element:SX,start(t,e,r){const i=t.legend=new SX({ctx:t.ctx,options:r,chart:t});Is.configure(t,i,r),Is.addBox(t,i)},stop(t){Is.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,r){const i=t.legend;Is.configure(t,i,r),i.options=r},afterUpdate(t){const e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,r){const i=e.datasetIndex,n=r.chart;n.isDatasetVisible(i)?(n.hide(i),e.hidden=!0):(n.show(i),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:r,pointStyle:i,textAlign:n,color:s,useBorderRadius:a,borderRadius:o}}=t.legend.options;return t._getSortedDatasetMetas().map(l=>{const h=l.controller.getStyle(r?0:void 0),u=Ns(h.borderWidth);return{text:e[l.index].label,fillStyle:h.backgroundColor,fontColor:s,hidden:!l.visible,lineCap:h.borderCapStyle,lineDash:h.borderDash,lineDashOffset:h.borderDashOffset,lineJoin:h.borderJoinStyle,lineWidth:(u.width+u.height)/4,strokeStyle:h.borderColor,pointStyle:i||h.pointStyle,rotation:h.rotation,textAlign:n||h.textAlign,borderRadius:a&&(o||h.borderRadius),datasetIndex:l.index}},this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class vM extends Lh{constructor(e){super(),this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,r){const i=this.options;if(this.left=0,this.top=0,!i.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=e,this.height=this.bottom=r;const n=Ci(i.text)?i.text.length:1;this._padding=Ns(i.padding);const s=n*En(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=s:this.width=s}isHorizontal(){const e=this.options.position;return e==="top"||e==="bottom"}_drawArgs(e){const{top:r,left:i,bottom:n,right:s,options:a}=this,o=a.align;let l=0,h,u,d;return this.isHorizontal()?(u=Ms(o,i,s),d=r+e,h=s-i):(a.position==="left"?(u=i+e,d=Ms(o,n,r),l=Br*-.5):(u=s-e,d=Ms(o,r,n),l=Br*.5),h=n-r),{titleX:u,titleY:d,maxWidth:h,rotation:l}}draw(){const e=this.ctx,r=this.options;if(!r.display)return;const i=En(r.font),s=i.lineHeight/2+this._padding.top,{titleX:a,titleY:o,maxWidth:l,rotation:h}=this._drawArgs(s);yf(e,r.text,0,0,i,{color:r.color,maxWidth:l,rotation:h,textAlign:UA(r.align),textBaseline:"middle",translation:[a,o]})}}function HDe(t,e){const r=new vM({ctx:t.ctx,options:e,chart:t});Is.configure(t,r,e),Is.addBox(t,r),t.titleBlock=r}var jDe={id:"title",_element:vM,start(t,e,r){HDe(t,r)},stop(t){const e=t.titleBlock;Is.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,r){const i=t.titleBlock;Is.configure(t,i,r),i.options=r},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const $C=new WeakMap;var WDe={id:"subtitle",start(t,e,r){const i=new vM({ctx:t.ctx,options:r,chart:t});Is.configure(t,i,r),Is.addBox(t,i),$C.set(t,i)},stop(t){Is.removeBox(t,$C.get(t)),$C.delete(t)},beforeUpdate(t,e,r){const i=$C.get(t);Is.configure(t,i,r),i.options=r},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const H2={average(t){if(!t.length)return!1;let e,r,i=new Set,n=0,s=0;for(e=0,r=t.length;e<r;++e){const o=t[e].element;if(o&&o.hasValue()){const l=o.tooltipPosition();i.add(l.x),n+=l.y,++s}}return s===0||i.size===0?!1:{x:[...i].reduce((o,l)=>o+l)/i.size,y:n/s}},nearest(t,e){if(!t.length)return!1;let r=e.x,i=e.y,n=Number.POSITIVE_INFINITY,s,a,o;for(s=0,a=t.length;s<a;++s){const l=t[s].element;if(l&&l.hasValue()){const h=l.getCenterPoint(),u=FA(e,h);u<n&&(n=u,o=l)}}if(o){const l=o.tooltipPosition();r=l.x,i=l.y}return{x:r,y:i}}};function uc(t,e){return e&&(Ci(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function Ah(t){return(typeof t=="string"||t instanceof String)&&t.indexOf(`
16825
16835
  `)>-1?t.split(`
16826
- `):t}function qDe(t,e){const{element:r,datasetIndex:i,index:n}=e,s=t.getDatasetMeta(i).controller,{label:a,value:o}=s.getLabelAndValue(n);return{chart:t,label:a,parsed:s.getParsed(n),raw:t.data.datasets[i].data[n],formattedValue:o,dataset:s.getDataset(),dataIndex:n,datasetIndex:i,element:r}}function AX(t,e){const r=t.chart.ctx,{body:i,footer:n,title:s}=t,{boxWidth:a,boxHeight:o}=e,l=En(e.bodyFont),h=En(e.titleFont),u=En(e.footerFont),d=s.length,p=n.length,f=i.length,m=Ns(e.padding);let v=m.height,y=0,b=i.reduce((C,k)=>C+k.before.length+k.lines.length+k.after.length,0);if(b+=t.beforeBody.length+t.afterBody.length,d&&(v+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),b){const C=e.displayColors?Math.max(o,l.lineHeight):l.lineHeight;v+=f*C+(b-f)*l.lineHeight+(b-1)*e.bodySpacing}p&&(v+=e.footerMarginTop+p*u.lineHeight+(p-1)*e.footerSpacing);let x=0;const w=function(C){y=Math.max(y,r.measureText(C).width+x)};return r.save(),r.font=h.string,Kr(t.title,w),r.font=l.string,Kr(t.beforeBody.concat(t.afterBody),w),x=e.displayColors?a+2+e.boxPadding:0,Kr(i,C=>{Kr(C.before,w),Kr(C.lines,w),Kr(C.after,w)}),x=0,r.font=u.string,Kr(t.footer,w),r.restore(),y+=m.width,{width:y,height:v}}function YDe(t,e){const{y:r,height:i}=e;return r<i/2?"top":r>t.height-i/2?"bottom":"center"}function XDe(t,e,r,i){const{x:n,width:s}=i,a=r.caretSize+r.caretPadding;if(t==="left"&&n+s+a>e.width||t==="right"&&n-s-a<0)return!0}function ZDe(t,e,r,i){const{x:n,width:s}=r,{width:a,chartArea:{left:o,right:l}}=t;let h="center";return i==="center"?h=n<=(o+l)/2?"left":"right":n<=s/2?h="left":n>=a-s/2&&(h="right"),XDe(h,t,e,r)&&(h="center"),h}function MX(t,e,r){const i=r.yAlign||e.yAlign||YDe(t,r);return{xAlign:r.xAlign||e.xAlign||ZDe(t,e,r,i),yAlign:i}}function KDe(t,e){let{x:r,width:i}=t;return e==="right"?r-=i:e==="center"&&(r-=i/2),r}function QDe(t,e,r){let{y:i,height:n}=t;return e==="top"?i+=r:e==="bottom"?i-=n+r:i-=n/2,i}function NX(t,e,r,i){const{caretSize:n,caretPadding:s,cornerRadius:a}=t,{xAlign:o,yAlign:l}=r,h=n+s,{topLeft:u,topRight:d,bottomLeft:p,bottomRight:f}=bf(a);let m=KDe(e,o);const v=QDe(e,l,h);return l==="center"?o==="left"?m+=h:o==="right"&&(m-=h):o==="left"?m-=Math.max(u,p)+n:o==="right"&&(m+=Math.max(d,f)+n),{x:jn(m,0,i.width-e.width),y:jn(v,0,i.height-e.height)}}function BC(t,e,r){const i=Ns(r.padding);return e==="center"?t.x+t.width/2:e==="right"?t.x+t.width-i.right:t.x+i.left}function IX(t){return uc([],Ah(t))}function JDe(t,e,r){return Ku(t,{tooltip:e,tooltipItems:r,type:"tooltip"})}function _X(t,e){const r=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return r?t.override(r):t}const DX={beforeTitle:Ch,title(t){if(t.length>0){const e=t[0],r=e.chart.data.labels,i=r?r.length:0;if(this&&this.options&&this.options.mode==="dataset")return e.dataset.label||"";if(e.label)return e.label;if(i>0&&e.dataIndex<i)return r[e.dataIndex]}return""},afterTitle:Ch,beforeBody:Ch,beforeLabel:Ch,label(t){if(this&&this.options&&this.options.mode==="dataset")return t.label+": "+t.formattedValue||t.formattedValue;let e=t.dataset.label||"";e&&(e+=": ");const r=t.formattedValue;return yr(r)||(e+=r),e},labelColor(t){const r=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{borderColor:r.borderColor,backgroundColor:r.backgroundColor,borderWidth:r.borderWidth,borderDash:r.borderDash,borderDashOffset:r.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(t){const r=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{pointStyle:r.pointStyle,rotation:r.rotation}},afterLabel:Ch,afterBody:Ch,beforeFooter:Ch,footer:Ch,afterFooter:Ch};function Ma(t,e,r,i){const n=t[e].call(r,i);return typeof n>"u"?DX[e].call(r,i):n}class RX extends Lh{static positioners=H2;constructor(e){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=e.chart,this.options=e.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(e){this.options=e,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const e=this._cachedAnimations;if(e)return e;const r=this.chart,i=this.options.setContext(this.getContext()),n=i.enabled&&r.options.animation&&i.animations,s=new CY(this.chart,n);return n._cacheable&&(this._cachedAnimations=Object.freeze(s)),s}getContext(){return this.$context||(this.$context=JDe(this.chart.getContext(),this,this._tooltipItems))}getTitle(e,r){const{callbacks:i}=r,n=Ma(i,"beforeTitle",this,e),s=Ma(i,"title",this,e),a=Ma(i,"afterTitle",this,e);let o=[];return o=uc(o,Ah(n)),o=uc(o,Ah(s)),o=uc(o,Ah(a)),o}getBeforeBody(e,r){return IX(Ma(r.callbacks,"beforeBody",this,e))}getBody(e,r){const{callbacks:i}=r,n=[];return Kr(e,s=>{const a={before:[],lines:[],after:[]},o=_X(i,s);uc(a.before,Ah(Ma(o,"beforeLabel",this,s))),uc(a.lines,Ma(o,"label",this,s)),uc(a.after,Ah(Ma(o,"afterLabel",this,s))),n.push(a)}),n}getAfterBody(e,r){return IX(Ma(r.callbacks,"afterBody",this,e))}getFooter(e,r){const{callbacks:i}=r,n=Ma(i,"beforeFooter",this,e),s=Ma(i,"footer",this,e),a=Ma(i,"afterFooter",this,e);let o=[];return o=uc(o,Ah(n)),o=uc(o,Ah(s)),o=uc(o,Ah(a)),o}_createItems(e){const r=this._active,i=this.chart.data,n=[],s=[],a=[];let o=[],l,h;for(l=0,h=r.length;l<h;++l)o.push(qDe(this.chart,r[l]));return e.filter&&(o=o.filter((u,d,p)=>e.filter(u,d,p,i))),e.itemSort&&(o=o.sort((u,d)=>e.itemSort(u,d,i))),Kr(o,u=>{const d=_X(e.callbacks,u);n.push(Ma(d,"labelColor",this,u)),s.push(Ma(d,"labelPointStyle",this,u)),a.push(Ma(d,"labelTextColor",this,u))}),this.labelColors=n,this.labelPointStyles=s,this.labelTextColors=a,this.dataPoints=o,o}update(e,r){const i=this.options.setContext(this.getContext()),n=this._active;let s,a=[];if(!n.length)this.opacity!==0&&(s={opacity:0});else{const o=H2[i.position].call(this,n,this._eventPosition);a=this._createItems(i),this.title=this.getTitle(a,i),this.beforeBody=this.getBeforeBody(a,i),this.body=this.getBody(a,i),this.afterBody=this.getAfterBody(a,i),this.footer=this.getFooter(a,i);const l=this._size=AX(this,i),h=Object.assign({},o,l),u=MX(this.chart,i,h),d=NX(i,h,u,this.chart);this.xAlign=u.xAlign,this.yAlign=u.yAlign,s={opacity:1,x:d.x,y:d.y,width:l.width,height:l.height,caretX:o.x,caretY:o.y}}this._tooltipItems=a,this.$context=void 0,s&&this._resolveAnimations().update(this,s),e&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:r})}drawCaret(e,r,i,n){const s=this.getCaretPosition(e,i,n);r.lineTo(s.x1,s.y1),r.lineTo(s.x2,s.y2),r.lineTo(s.x3,s.y3)}getCaretPosition(e,r,i){const{xAlign:n,yAlign:s}=this,{caretSize:a,cornerRadius:o}=i,{topLeft:l,topRight:h,bottomLeft:u,bottomRight:d}=bf(o),{x:p,y:f}=e,{width:m,height:v}=r;let y,b,x,w,C,k;return s==="center"?(C=f+v/2,n==="left"?(y=p,b=y-a,w=C+a,k=C-a):(y=p+m,b=y+a,w=C-a,k=C+a),x=y):(n==="left"?b=p+Math.max(l,u)+a:n==="right"?b=p+m-Math.max(h,d)-a:b=this.caretX,s==="top"?(w=f,C=w-a,y=b-a,x=b+a):(w=f+v,C=w+a,y=b+a,x=b-a),k=w),{x1:y,x2:b,x3:x,y1:w,y2:C,y3:k}}drawTitle(e,r,i){const n=this.title,s=n.length;let a,o,l;if(s){const h=jg(i.rtl,this.x,this.width);for(e.x=BC(this,i.titleAlign,i),r.textAlign=h.textAlign(i.titleAlign),r.textBaseline="middle",a=En(i.titleFont),o=i.titleSpacing,r.fillStyle=i.titleColor,r.font=a.string,l=0;l<s;++l)r.fillText(n[l],h.x(e.x),e.y+a.lineHeight/2),e.y+=a.lineHeight+o,l+1===s&&(e.y+=i.titleMarginBottom-o)}}_drawColorBox(e,r,i,n,s){const a=this.labelColors[i],o=this.labelPointStyles[i],{boxHeight:l,boxWidth:h}=s,u=En(s.bodyFont),d=BC(this,"left",s),p=n.x(d),f=l<u.lineHeight?(u.lineHeight-l)/2:0,m=r.y+f;if(s.usePointStyle){const v={radius:Math.min(h,l)/2,pointStyle:o.pointStyle,rotation:o.rotation,borderWidth:1},y=n.leftForLtr(p,h)+h/2,b=m+l/2;e.strokeStyle=s.multiKeyBackground,e.fillStyle=s.multiKeyBackground,WA(e,v,y,b),e.strokeStyle=a.borderColor,e.fillStyle=a.backgroundColor,WA(e,v,y,b)}else{e.lineWidth=wr(a.borderWidth)?Math.max(...Object.values(a.borderWidth)):a.borderWidth||1,e.strokeStyle=a.borderColor,e.setLineDash(a.borderDash||[]),e.lineDashOffset=a.borderDashOffset||0;const v=n.leftForLtr(p,h),y=n.leftForLtr(n.xPlus(p,1),h-2),b=bf(a.borderRadius);Object.values(b).some(x=>x!==0)?(e.beginPath(),e.fillStyle=s.multiKeyBackground,P2(e,{x:v,y:m,w:h,h:l,radius:b}),e.fill(),e.stroke(),e.fillStyle=a.backgroundColor,e.beginPath(),P2(e,{x:y,y:m+1,w:h-2,h:l-2,radius:b}),e.fill()):(e.fillStyle=s.multiKeyBackground,e.fillRect(v,m,h,l),e.strokeRect(v,m,h,l),e.fillStyle=a.backgroundColor,e.fillRect(y,m+1,h-2,l-2))}e.fillStyle=this.labelTextColors[i]}drawBody(e,r,i){const{body:n}=this,{bodySpacing:s,bodyAlign:a,displayColors:o,boxHeight:l,boxWidth:h,boxPadding:u}=i,d=En(i.bodyFont);let p=d.lineHeight,f=0;const m=jg(i.rtl,this.x,this.width),v=function(A){r.fillText(A,m.x(e.x+f),e.y+p/2),e.y+=p+s},y=m.textAlign(a);let b,x,w,C,k,S,E;for(r.textAlign=a,r.textBaseline="middle",r.font=d.string,e.x=BC(this,y,i),r.fillStyle=i.bodyColor,Kr(this.beforeBody,v),f=o&&y!=="right"?a==="center"?h/2+u:h+2+u:0,C=0,S=n.length;C<S;++C){for(b=n[C],x=this.labelTextColors[C],r.fillStyle=x,Kr(b.before,v),w=b.lines,o&&w.length&&(this._drawColorBox(r,e,C,m,i),p=Math.max(d.lineHeight,l)),k=0,E=w.length;k<E;++k)v(w[k]),p=d.lineHeight;Kr(b.after,v)}f=0,p=d.lineHeight,Kr(this.afterBody,v),e.y-=s}drawFooter(e,r,i){const n=this.footer,s=n.length;let a,o;if(s){const l=jg(i.rtl,this.x,this.width);for(e.x=BC(this,i.footerAlign,i),e.y+=i.footerMarginTop,r.textAlign=l.textAlign(i.footerAlign),r.textBaseline="middle",a=En(i.footerFont),r.fillStyle=i.footerColor,r.font=a.string,o=0;o<s;++o)r.fillText(n[o],l.x(e.x),e.y+a.lineHeight/2),e.y+=a.lineHeight+i.footerSpacing}}drawBackground(e,r,i,n){const{xAlign:s,yAlign:a}=this,{x:o,y:l}=e,{width:h,height:u}=i,{topLeft:d,topRight:p,bottomLeft:f,bottomRight:m}=bf(n.cornerRadius);r.fillStyle=n.backgroundColor,r.strokeStyle=n.borderColor,r.lineWidth=n.borderWidth,r.beginPath(),r.moveTo(o+d,l),a==="top"&&this.drawCaret(e,r,i,n),r.lineTo(o+h-p,l),r.quadraticCurveTo(o+h,l,o+h,l+p),a==="center"&&s==="right"&&this.drawCaret(e,r,i,n),r.lineTo(o+h,l+u-m),r.quadraticCurveTo(o+h,l+u,o+h-m,l+u),a==="bottom"&&this.drawCaret(e,r,i,n),r.lineTo(o+f,l+u),r.quadraticCurveTo(o,l+u,o,l+u-f),a==="center"&&s==="left"&&this.drawCaret(e,r,i,n),r.lineTo(o,l+d),r.quadraticCurveTo(o,l,o+d,l),r.closePath(),r.fill(),n.borderWidth>0&&r.stroke()}_updateAnimationTarget(e){const r=this.chart,i=this.$animations,n=i&&i.x,s=i&&i.y;if(n||s){const a=H2[e.position].call(this,this._active,this._eventPosition);if(!a)return;const o=this._size=AX(this,e),l=Object.assign({},a,this._size),h=MX(r,e,l),u=NX(e,l,h,r);(n._to!==u.x||s._to!==u.y)&&(this.xAlign=h.xAlign,this.yAlign=h.yAlign,this.width=o.width,this.height=o.height,this.caretX=a.x,this.caretY=a.y,this._resolveAnimations().update(this,u))}}_willRender(){return!!this.opacity}draw(e){const r=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(r);const n={width:this.width,height:this.height},s={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const a=Ns(r.padding),o=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;r.enabled&&o&&(e.save(),e.globalAlpha=i,this.drawBackground(s,e,n,r),dY(e,r.textDirection),s.y+=a.top,this.drawTitle(s,e,r),this.drawBody(s,e,r),this.drawFooter(s,e,r),pY(e,r.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,r){const i=this._active,n=e.map(({datasetIndex:o,index:l})=>{const h=this.chart.getDatasetMeta(o);if(!h)throw new Error("Cannot find a dataset at index "+o);return{datasetIndex:o,element:h.data[l],index:l}}),s=!dC(i,n),a=this._positionChanged(n,r);(s||a)&&(this._active=n,this._eventPosition=r,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,r,i=!0){if(r&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const n=this.options,s=this._active||[],a=this._getActiveElements(e,s,r,i),o=this._positionChanged(a,e),l=r||!dC(a,s)||o;return l&&(this._active=a,(n.enabled||n.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,r))),l}_getActiveElements(e,r,i,n){const s=this.options;if(e.type==="mouseout")return[];if(!n)return r.filter(o=>this.chart.data.datasets[o.datasetIndex]&&this.chart.getDatasetMeta(o.datasetIndex).controller.getParsed(o.index)!==void 0);const a=this.chart.getElementsAtEventForMode(e,s.mode,s,i);return s.reverse&&a.reverse(),a}_positionChanged(e,r){const{caretX:i,caretY:n,options:s}=this,a=H2[s.position].call(this,e,r);return a!==!1&&(i!==a.x||n!==a.y)}}var eRe={id:"tooltip",_element:RX,positioners:H2,afterInit(t,e,r){r&&(t.tooltip=new RX({chart:t,options:r}))},beforeUpdate(t,e,r){t.tooltip&&t.tooltip.initialize(r)},reset(t,e,r){t.tooltip&&t.tooltip.initialize(r)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const r={tooltip:e};if(t.notifyPlugins("beforeTooltipDraw",{...r,cancelable:!0})===!1)return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",r)}},afterEvent(t,e){if(t.tooltip){const r=e.replay;t.tooltip.handleEvent(e.event,r,e.inChartArea)&&(e.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:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.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:DX},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>t!=="filter"&&t!=="itemSort"&&t!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},tRe=Object.freeze({__proto__:null,Colors:pDe,Decimation:vDe,Filler:$De,Legend:VDe,SubTitle:WDe,Title:jDe,Tooltip:eRe});const rRe=(t,e,r,i)=>(typeof e=="string"?(r=t.push(e)-1,i.unshift({index:r,label:e})):isNaN(e)&&(r=null),r);function iRe(t,e,r,i){const n=t.indexOf(e);if(n===-1)return rRe(t,e,r,i);const s=t.lastIndexOf(e);return n!==s?r:n}const nRe=(t,e)=>t===null?null:jn(Math.round(t),0,e);function PX(t){const e=this.getLabels();return t>=0&&t<e.length?e[t]:t}class sRe extends Tf{static id="category";static defaults={ticks:{callback:PX}};constructor(e){super(e),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(e){const r=this._addedLabels;if(r.length){const i=this.getLabels();for(const{index:n,label:s}of r)i[n]===s&&i.splice(n,1);this._addedLabels=[]}super.init(e)}parse(e,r){if(yr(e))return null;const i=this.getLabels();return r=isFinite(r)&&i[r]===e?r:iRe(i,e,ar(r,e),this._addedLabels),nRe(r,i.length-1)}determineDataLimits(){const{minDefined:e,maxDefined:r}=this.getUserBounds();let{min:i,max:n}=this.getMinMax(!0);this.options.bounds==="ticks"&&(e||(i=0),r||(n=this.getLabels().length-1)),this.min=i,this.max=n}buildTicks(){const e=this.min,r=this.max,i=this.options.offset,n=[];let s=this.getLabels();s=e===0&&r===s.length-1?s:s.slice(e,r+1),this._valueRange=Math.max(s.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let a=e;a<=r;a++)n.push({value:a});return n}getLabelForValue(e){return PX.call(this,e)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(e){return typeof e!="number"&&(e=this.parse(e)),e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getPixelForTick(e){const r=this.ticks;return e<0||e>r.length-1?null:this.getPixelForValue(r[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}}function aRe(t,e){const r=[],{bounds:n,step:s,min:a,max:o,precision:l,count:h,maxTicks:u,maxDigits:d,includeBounds:p}=t,f=s||1,m=u-1,{min:v,max:y}=e,b=!yr(a),x=!yr(o),w=!yr(h),C=(y-v)/(d+1);let k=$q((y-v)/m/f)*f,S,E,A,M;if(k<1e-14&&!b&&!x)return[{value:v},{value:y}];M=Math.ceil(y/k)-Math.floor(v/k),M>m&&(k=$q(M*k/m/f)*f),yr(l)||(S=Math.pow(10,l),k=Math.ceil(k*S)/S),n==="ticks"?(E=Math.floor(v/k)*k,A=Math.ceil(y/k)*k):(E=v,A=y),b&&x&&s&&G9e((o-a)/s,k/1e3)?(M=Math.round(Math.min((o-a)/k,u)),k=(o-a)/M,E=a,A=o):w?(E=b?a:E,A=x?o:A,M=h-1,k=(A-E)/M):(M=(A-E)/k,N2(M,Math.round(M),k/1e3)?M=Math.round(M):M=Math.ceil(M));const _=Math.max(Fq(k),Fq(E));S=Math.pow(10,yr(l)?_:l),E=Math.round(E*S)/S,A=Math.round(A*S)/S;let I=0;for(b&&(p&&E!==a?(r.push({value:a}),E<a&&I++,N2(Math.round((E+I*k)*S)/S,a,OX(a,C,t))&&I++):E<a&&I++);I<M;++I){const D=Math.round((E+I*k)*S)/S;if(x&&D>o)break;r.push({value:D})}return x&&p&&A!==o?r.length&&N2(r[r.length-1].value,o,OX(o,C,t))?r[r.length-1].value=o:r.push({value:o}):(!x||A===o)&&r.push({value:A}),r}function OX(t,e,{horizontal:r,minRotation:i}){const n=kl(i),s=(r?Math.sin(n):Math.cos(n))||.001,a=.75*e*(""+t).length;return Math.min(e/s,a)}class FC extends Tf{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(e,r){return yr(e)||(typeof e=="number"||e instanceof Number)&&!isFinite(+e)?null:+e}handleTickRangeOptions(){const{beginAtZero:e}=this.options,{minDefined:r,maxDefined:i}=this.getUserBounds();let{min:n,max:s}=this;const a=l=>n=r?n:l,o=l=>s=i?s:l;if(e){const l=cc(n),h=cc(s);l<0&&h<0?o(0):l>0&&h>0&&a(0)}if(n===s){let l=s===0?1:Math.abs(s*.05);o(s+l),e||a(n-l)}this.min=n,this.max=s}getTickLimit(){const e=this.options.ticks;let{maxTicksLimit:r,stepSize:i}=e,n;return i?(n=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,n>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${n} ticks. Limiting to 1000.`),n=1e3)):(n=this.computeTickLimit(),r=r||11),r&&(n=Math.min(r,n)),n}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const e=this.options,r=e.ticks;let i=this.getTickLimit();i=Math.max(2,i);const n={maxTicks:i,bounds:e.bounds,min:e.min,max:e.max,precision:r.precision,step:r.stepSize,count:r.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:r.minRotation||0,includeBounds:r.includeBounds!==!1},s=this._range||this,a=aRe(n,s);return e.bounds==="ticks"&&Bq(a,this,"value"),e.reverse?(a.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),a}configure(){const e=this.ticks;let r=this.min,i=this.max;if(super.configure(),this.options.offset&&e.length){const n=(i-r)/Math.max(e.length-1,1)/2;r-=n,i+=n}this._startValue=r,this._endValue=i,this._valueRange=i-r}getLabelForValue(e){return D2(e,this.chart.options.locale,this.options.ticks.format)}}class oRe extends FC{static id="linear";static defaults={ticks:{callback:mC.formatters.numeric}};determineDataLimits(){const{min:e,max:r}=this.getMinMax(!0);this.min=$i(e)?e:0,this.max=$i(r)?r:1,this.handleTickRangeOptions()}computeTickLimit(){const e=this.isHorizontal(),r=e?this.width:this.height,i=kl(this.options.ticks.minRotation),n=(e?Math.sin(i):Math.cos(i))||.001,s=this._resolveTickFontOptions(0);return Math.ceil(r/Math.min(40,s.lineHeight/n))}getPixelForValue(e){return e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}}const j2=t=>Math.floor(Zu(t)),Ef=(t,e)=>Math.pow(10,j2(t)+e);function $X(t){return t/Math.pow(10,j2(t))===1}function BX(t,e,r){const i=Math.pow(10,r),n=Math.floor(t/i);return Math.ceil(e/i)-n}function lRe(t,e){const r=e-t;let i=j2(r);for(;BX(t,e,i)>10;)i++;for(;BX(t,e,i)<10;)i--;return Math.min(i,j2(t))}function cRe(t,{min:e,max:r}){e=oo(t.min,e);const i=[],n=j2(e);let s=lRe(e,r),a=s<0?Math.pow(10,Math.abs(s)):1;const o=Math.pow(10,s),l=n>s?Math.pow(10,n):0,h=Math.round((e-l)*a)/a,u=Math.floor((e-l)/o/10)*o*10;let d=Math.floor((h-u)/Math.pow(10,s)),p=oo(t.min,Math.round((l+u+d*Math.pow(10,s))*a)/a);for(;p<r;)i.push({value:p,major:$X(p),significand:d}),d>=10?d=d<15?15:20:d++,d>=20&&(s++,d=2,a=s>=0?1:a),p=Math.round((l+u+d*Math.pow(10,s))*a)/a;const f=oo(t.max,p);return i.push({value:f,major:$X(f),significand:d}),i}class hRe extends Tf{static id="logarithmic";static defaults={ticks:{callback:mC.formatters.logarithmic,major:{enabled:!0}}};constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(e,r){const i=FC.prototype.parse.apply(this,[e,r]);if(i===0){this._zero=!0;return}return $i(i)&&i>0?i:null}determineDataLimits(){const{min:e,max:r}=this.getMinMax(!0);this.min=$i(e)?Math.max(0,e):null,this.max=$i(r)?Math.max(0,r):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!$i(this._userMin)&&(this.min=e===Ef(this.min,0)?Ef(this.min,-1):Ef(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:e,maxDefined:r}=this.getUserBounds();let i=this.min,n=this.max;const s=o=>i=e?i:o,a=o=>n=r?n:o;i===n&&(i<=0?(s(1),a(10)):(s(Ef(i,-1)),a(Ef(n,1)))),i<=0&&s(Ef(n,-1)),n<=0&&a(Ef(i,1)),this.min=i,this.max=n}buildTicks(){const e=this.options,r={min:this._userMin,max:this._userMax},i=cRe(r,this);return e.bounds==="ticks"&&Bq(i,this,"value"),e.reverse?(i.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),i}getLabelForValue(e){return e===void 0?"0":D2(e,this.chart.options.locale,this.options.ticks.format)}configure(){const e=this.min;super.configure(),this._startValue=Zu(e),this._valueRange=Zu(this.max)-Zu(e)}getPixelForValue(e){return(e===void 0||e===0)&&(e=this.min),e===null||isNaN(e)?NaN:this.getPixelForDecimal(e===this.min?0:(Zu(e)-this._startValue)/this._valueRange)}getValueForPixel(e){const r=this.getDecimalForPixel(e);return Math.pow(10,this._startValue+r*this._valueRange)}}function yM(t){const e=t.ticks;if(e.display&&t.display){const r=Ns(e.backdropPadding);return ar(e.font&&e.font.size,ki.font.size)+r.height}return 0}function uRe(t,e,r){return r=Ci(r)?r:[r],{w:sNe(t,e.string,r),h:r.length*e.lineHeight}}function FX(t,e,r,i,n){return t===i||t===n?{start:e-r/2,end:e+r/2}:t<i||t>n?{start:e-r,end:e}:{start:e,end:e+r}}function dRe(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},r=Object.assign({},e),i=[],n=[],s=t._pointLabels.length,a=t.options.pointLabels,o=a.centerPointLabels?Br/s:0;for(let l=0;l<s;l++){const h=a.setContext(t.getPointLabelContext(l));n[l]=h.padding;const u=t.getPointPosition(l,t.drawingArea+n[l],o),d=En(h.font),p=uRe(t.ctx,d,t._pointLabels[l]);i[l]=p;const f=As(t.getIndexAngle(l)+o),m=Math.round(BA(f)),v=FX(m,u.x,p.w,0,180),y=FX(m,u.y,p.h,90,270);pRe(r,e,f,v,y)}t.setCenterPoint(e.l-r.l,r.r-e.r,e.t-r.t,r.b-e.b),t._pointLabelItems=mRe(t,i,n)}function pRe(t,e,r,i,n){const s=Math.abs(Math.sin(r)),a=Math.abs(Math.cos(r));let o=0,l=0;i.start<e.l?(o=(e.l-i.start)/s,t.l=Math.min(t.l,e.l-o)):i.end>e.r&&(o=(i.end-e.r)/s,t.r=Math.max(t.r,e.r+o)),n.start<e.t?(l=(e.t-n.start)/a,t.t=Math.min(t.t,e.t-l)):n.end>e.b&&(l=(n.end-e.b)/a,t.b=Math.max(t.b,e.b+l))}function fRe(t,e,r){const i=t.drawingArea,{extra:n,additionalAngle:s,padding:a,size:o}=r,l=t.getPointPosition(e,i+n+a,s),h=Math.round(BA(As(l.angle+Ki))),u=bRe(l.y,o.h,h),d=vRe(h),p=yRe(l.x,o.w,d);return{visible:!0,x:l.x,y:u,textAlign:d,left:p,top:u,right:p+o.w,bottom:u+o.h}}function gRe(t,e){if(!e)return!0;const{left:r,top:i,right:n,bottom:s}=t;return!(Eh({x:r,y:i},e)||Eh({x:r,y:s},e)||Eh({x:n,y:i},e)||Eh({x:n,y:s},e))}function mRe(t,e,r){const i=[],n=t._pointLabels.length,s=t.options,{centerPointLabels:a,display:o}=s.pointLabels,l={extra:yM(s)/2,additionalAngle:a?Br/n:0};let h;for(let u=0;u<n;u++){l.padding=r[u],l.size=e[u];const d=fRe(t,u,l);i.push(d),o==="auto"&&(d.visible=gRe(d,h),d.visible&&(h=d))}return i}function vRe(t){return t===0||t===180?"center":t<180?"left":"right"}function yRe(t,e,r){return r==="right"?t-=e:r==="center"&&(t-=e/2),t}function bRe(t,e,r){return r===90||r===270?t-=e/2:(r>270||r<90)&&(t-=e),t}function xRe(t,e,r){const{left:i,top:n,right:s,bottom:a}=r,{backdropColor:o}=e;if(!yr(o)){const l=bf(e.borderRadius),h=Ns(e.backdropPadding);t.fillStyle=o;const u=i-h.left,d=n-h.top,p=s-i+h.width,f=a-n+h.height;Object.values(l).some(m=>m!==0)?(t.beginPath(),P2(t,{x:u,y:d,w:p,h:f,radius:l}),t.fill()):t.fillRect(u,d,p,f)}}function wRe(t,e){const{ctx:r,options:{pointLabels:i}}=t;for(let n=e-1;n>=0;n--){const s=t._pointLabelItems[n];if(!s.visible)continue;const a=i.setContext(t.getPointLabelContext(n));xRe(r,a,s);const o=En(a.font),{x:l,y:h,textAlign:u}=s;yf(r,t._pointLabels[n],l,h+o.lineHeight/2,o,{color:a.color,textAlign:u,textBaseline:"middle"})}}function zX(t,e,r,i){const{ctx:n}=t;if(r)n.arc(t.xCenter,t.yCenter,e,0,fi);else{let s=t.getPointPosition(0,e);n.moveTo(s.x,s.y);for(let a=1;a<i;a++)s=t.getPointPosition(a,e),n.lineTo(s.x,s.y)}}function CRe(t,e,r,i,n){const s=t.ctx,a=e.circular,{color:o,lineWidth:l}=e;!a&&!i||!o||!l||r<0||(s.save(),s.strokeStyle=o,s.lineWidth=l,s.setLineDash(n.dash||[]),s.lineDashOffset=n.dashOffset,s.beginPath(),zX(t,r,a,i),s.closePath(),s.stroke(),s.restore())}function kRe(t,e,r){return Ku(t,{label:r,index:e,type:"pointLabel"})}class TRe extends FC{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:mC.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(e){return e},padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(e){super(e),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const e=this._padding=Ns(yM(this.options)/2),r=this.width=this.maxWidth-e.width,i=this.height=this.maxHeight-e.height;this.xCenter=Math.floor(this.left+r/2+e.left),this.yCenter=Math.floor(this.top+i/2+e.top),this.drawingArea=Math.floor(Math.min(r,i)/2)}determineDataLimits(){const{min:e,max:r}=this.getMinMax(!1);this.min=$i(e)&&!isNaN(e)?e:0,this.max=$i(r)&&!isNaN(r)?r:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/yM(this.options))}generateTickLabels(e){FC.prototype.generateTickLabels.call(this,e),this._pointLabels=this.getLabels().map((r,i)=>{const n=li(this.options.pointLabels.callback,[r,i],this);return n||n===0?n:""}).filter((r,i)=>this.chart.getDataVisibility(i))}fit(){const e=this.options;e.display&&e.pointLabels.display?dRe(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(e,r,i,n){this.xCenter+=Math.floor((e-r)/2),this.yCenter+=Math.floor((i-n)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(e,r,i,n))}getIndexAngle(e){const r=fi/(this._pointLabels.length||1),i=this.options.startAngle||0;return As(e*r+kl(i))}getDistanceFromCenterForValue(e){if(yr(e))return NaN;const r=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-e)*r:(e-this.min)*r}getValueForDistanceFromCenter(e){if(yr(e))return NaN;const r=e/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-r:this.min+r}getPointLabelContext(e){const r=this._pointLabels||[];if(e>=0&&e<r.length){const i=r[e];return kRe(this.getContext(),e,i)}}getPointPosition(e,r,i=0){const n=this.getIndexAngle(e)-Ki+i;return{x:Math.cos(n)*r+this.xCenter,y:Math.sin(n)*r+this.yCenter,angle:n}}getPointPositionForValue(e,r){return this.getPointPosition(e,this.getDistanceFromCenterForValue(r))}getBasePosition(e){return this.getPointPositionForValue(e||0,this.getBaseValue())}getPointLabelPosition(e){const{left:r,top:i,right:n,bottom:s}=this._pointLabelItems[e];return{left:r,top:i,right:n,bottom:s}}drawBackground(){const{backgroundColor:e,grid:{circular:r}}=this.options;if(e){const i=this.ctx;i.save(),i.beginPath(),zX(this,this.getDistanceFromCenterForValue(this._endValue),r,this._pointLabels.length),i.closePath(),i.fillStyle=e,i.fill(),i.restore()}}drawGrid(){const e=this.ctx,r=this.options,{angleLines:i,grid:n,border:s}=r,a=this._pointLabels.length;let o,l,h;if(r.pointLabels.display&&wRe(this,a),n.display&&this.ticks.forEach((u,d)=>{if(d!==0||d===0&&this.min<0){l=this.getDistanceFromCenterForValue(u.value);const p=this.getContext(d),f=n.setContext(p),m=s.setContext(p);CRe(this,f,l,a,m)}}),i.display){for(e.save(),o=a-1;o>=0;o--){const u=i.setContext(this.getPointLabelContext(o)),{color:d,lineWidth:p}=u;!p||!d||(e.lineWidth=p,e.strokeStyle=d,e.setLineDash(u.borderDash),e.lineDashOffset=u.borderDashOffset,l=this.getDistanceFromCenterForValue(r.reverse?this.min:this.max),h=this.getPointPosition(o,l),e.beginPath(),e.moveTo(this.xCenter,this.yCenter),e.lineTo(h.x,h.y),e.stroke())}e.restore()}}drawBorder(){}drawLabels(){const e=this.ctx,r=this.options,i=r.ticks;if(!i.display)return;const n=this.getIndexAngle(0);let s,a;e.save(),e.translate(this.xCenter,this.yCenter),e.rotate(n),e.textAlign="center",e.textBaseline="middle",this.ticks.forEach((o,l)=>{if(l===0&&this.min>=0&&!r.reverse)return;const h=i.setContext(this.getContext(l)),u=En(h.font);if(s=this.getDistanceFromCenterForValue(this.ticks[l].value),h.showLabelBackdrop){e.font=u.string,a=e.measureText(o.label).width,e.fillStyle=h.backdropColor;const d=Ns(h.backdropPadding);e.fillRect(-a/2-d.left,-s-u.size/2-d.top,a+d.width,u.size+d.height)}yf(e,o.label,0,-s,u,{color:h.color,strokeColor:h.textStrokeColor,strokeWidth:h.textStrokeWidth})}),e.restore()}drawTitle(){}}const zC={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Na=Object.keys(zC);function UX(t,e){return t-e}function GX(t,e){if(yr(e))return null;const r=t._adapter,{parser:i,round:n,isoWeekday:s}=t._parseOpts;let a=e;return typeof i=="function"&&(a=i(a)),$i(a)||(a=typeof i=="string"?r.parse(a,i):r.parse(a)),a===null?null:(n&&(a=n==="week"&&(Gg(s)||s===!0)?r.startOf(a,"isoWeek",s):r.startOf(a,n)),+a)}function VX(t,e,r,i){const n=Na.length;for(let s=Na.indexOf(t);s<n-1;++s){const a=zC[Na[s]],o=a.steps?a.steps:Number.MAX_SAFE_INTEGER;if(a.common&&Math.ceil((r-e)/(o*a.size))<=i)return Na[s]}return Na[n-1]}function ERe(t,e,r,i,n){for(let s=Na.length-1;s>=Na.indexOf(r);s--){const a=Na[s];if(zC[a].common&&t._adapter.diff(n,i,a)>=e-1)return a}return Na[r?Na.indexOf(r):0]}function SRe(t){for(let e=Na.indexOf(t)+1,r=Na.length;e<r;++e)if(zC[Na[e]].common)return Na[e]}function HX(t,e,r){if(!r)t[e]=!0;else if(r.length){const{lo:i,hi:n}=zA(r,e),s=r[i]>=e?r[i]:r[n];t[s]=!0}}function LRe(t,e,r,i){const n=t._adapter,s=+n.startOf(e[0].value,i),a=e[e.length-1].value;let o,l;for(o=s;o<=a;o=+n.add(o,1,i))l=r[o],l>=0&&(e[l].major=!0);return e}function jX(t,e,r){const i=[],n={},s=e.length;let a,o;for(a=0;a<s;++a)o=e[a],n[o]=a,i.push({value:o,major:!1});return s===0||!r?i:LRe(t,i,n,r)}class bM extends Tf{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(e){super(e),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(e,r={}){const i=e.time||(e.time={}),n=this._adapter=new AIe._date(e.adapters.date);n.init(r),A2(i.displayFormats,n.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(e),this._normalized=r.normalized}parse(e,r){return e===void 0?null:GX(this,e)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const e=this.options,r=this._adapter,i=e.time.unit||"day";let{min:n,max:s,minDefined:a,maxDefined:o}=this.getUserBounds();function l(h){!a&&!isNaN(h.min)&&(n=Math.min(n,h.min)),!o&&!isNaN(h.max)&&(s=Math.max(s,h.max))}(!a||!o)&&(l(this._getLabelBounds()),(e.bounds!=="ticks"||e.ticks.source!=="labels")&&l(this.getMinMax(!1))),n=$i(n)&&!isNaN(n)?n:+r.startOf(Date.now(),i),s=$i(s)&&!isNaN(s)?s:+r.endOf(Date.now(),i)+1,this.min=Math.min(n,s-1),this.max=Math.max(n+1,s)}_getLabelBounds(){const e=this.getLabelTimestamps();let r=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return e.length&&(r=e[0],i=e[e.length-1]),{min:r,max:i}}buildTicks(){const e=this.options,r=e.time,i=e.ticks,n=i.source==="labels"?this.getLabelTimestamps():this._generate();e.bounds==="ticks"&&n.length&&(this.min=this._userMin||n[0],this.max=this._userMax||n[n.length-1]);const s=this.min,a=this.max,o=W9e(n,s,a);return this._unit=r.unit||(i.autoSkip?VX(r.minUnit,this.min,this.max,this._getLabelCapacity(s)):ERe(this,o.length,r.minUnit,this.min,this.max)),this._majorUnit=!i.major.enabled||this._unit==="year"?void 0:SRe(this._unit),this.initOffsets(n),e.reverse&&o.reverse(),jX(this,o,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map(e=>+e.value))}initOffsets(e=[]){let r=0,i=0,n,s;this.options.offset&&e.length&&(n=this.getDecimalForValue(e[0]),e.length===1?r=1-n:r=(this.getDecimalForValue(e[1])-n)/2,s=this.getDecimalForValue(e[e.length-1]),e.length===1?i=s:i=(s-this.getDecimalForValue(e[e.length-2]))/2);const a=e.length<3?.5:.25;r=jn(r,0,a),i=jn(i,0,a),this._offsets={start:r,end:i,factor:1/(r+1+i)}}_generate(){const e=this._adapter,r=this.min,i=this.max,n=this.options,s=n.time,a=s.unit||VX(s.minUnit,r,i,this._getLabelCapacity(r)),o=ar(n.ticks.stepSize,1),l=a==="week"?s.isoWeekday:!1,h=Gg(l)||l===!0,u={};let d=r,p,f;if(h&&(d=+e.startOf(d,"isoWeek",l)),d=+e.startOf(d,h?"day":a),e.diff(i,r,a)>1e5*o)throw new Error(r+" and "+i+" are too far apart with stepSize of "+o+" "+a);const m=n.ticks.source==="data"&&this.getDataTimestamps();for(p=d,f=0;p<i;p=+e.add(p,o,a),f++)HX(u,p,m);return(p===i||n.bounds==="ticks"||f===1)&&HX(u,p,m),Object.keys(u).sort(UX).map(v=>+v)}getLabelForValue(e){const r=this._adapter,i=this.options.time;return i.tooltipFormat?r.format(e,i.tooltipFormat):r.format(e,i.displayFormats.datetime)}format(e,r){const n=this.options.time.displayFormats,s=this._unit,a=r||n[s];return this._adapter.format(e,a)}_tickFormatFunction(e,r,i,n){const s=this.options,a=s.ticks.callback;if(a)return li(a,[e,r,i],this);const o=s.time.displayFormats,l=this._unit,h=this._majorUnit,u=l&&o[l],d=h&&o[h],p=i[r],f=h&&d&&p&&p.major;return this._adapter.format(e,n||(f?d:u))}generateTickLabels(e){let r,i,n;for(r=0,i=e.length;r<i;++r)n=e[r],n.label=this._tickFormatFunction(n.value,r,e)}getDecimalForValue(e){return e===null?NaN:(e-this.min)/(this.max-this.min)}getPixelForValue(e){const r=this._offsets,i=this.getDecimalForValue(e);return this.getPixelForDecimal((r.start+i)*r.factor)}getValueForPixel(e){const r=this._offsets,i=this.getDecimalForPixel(e)/r.factor-r.end;return this.min+i*(this.max-this.min)}_getLabelSize(e){const r=this.options.ticks,i=this.ctx.measureText(e).width,n=kl(this.isHorizontal()?r.maxRotation:r.minRotation),s=Math.cos(n),a=Math.sin(n),o=this._resolveTickFontOptions(0).size;return{w:i*s+o*a,h:i*a+o*s}}_getLabelCapacity(e){const r=this.options.time,i=r.displayFormats,n=i[r.unit]||i.millisecond,s=this._tickFormatFunction(e,0,jX(this,[e],this._majorUnit),n),a=this._getLabelSize(s),o=Math.floor(this.isHorizontal()?this.width/a.w:this.height/a.h)-1;return o>0?o:1}getDataTimestamps(){let e=this._cache.data||[],r,i;if(e.length)return e;const n=this.getMatchingVisibleMetas();if(this._normalized&&n.length)return this._cache.data=n[0].controller.getAllParsedValues(this);for(r=0,i=n.length;r<i;++r)e=e.concat(n[r].controller.getAllParsedValues(this));return this._cache.data=this.normalize(e)}getLabelTimestamps(){const e=this._cache.labels||[];let r,i;if(e.length)return e;const n=this.getLabels();for(r=0,i=n.length;r<i;++r)e.push(GX(this,n[r]));return this._cache.labels=this._normalized?e:this.normalize(e)}normalize(e){return Vq(e.sort(UX))}}function UC(t,e,r){let i=0,n=t.length-1,s,a,o,l;r?(e>=t[i].pos&&e<=t[n].pos&&({lo:i,hi:n}=Th(t,"pos",e)),{pos:s,time:o}=t[i],{pos:a,time:l}=t[n]):(e>=t[i].time&&e<=t[n].time&&({lo:i,hi:n}=Th(t,"time",e)),{time:s,pos:o}=t[i],{time:a,pos:l}=t[n]);const h=a-s;return h?o+(l-o)*(e-s)/h:o}class ARe extends bM{static id="timeseries";static defaults=bM.defaults;constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const e=this._getTimestampsForTable(),r=this._table=this.buildLookupTable(e);this._minPos=UC(r,this.min),this._tableRange=UC(r,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){const{min:r,max:i}=this,n=[],s=[];let a,o,l,h,u;for(a=0,o=e.length;a<o;++a)h=e[a],h>=r&&h<=i&&n.push(h);if(n.length<2)return[{time:r,pos:0},{time:i,pos:1}];for(a=0,o=n.length;a<o;++a)u=n[a+1],l=n[a-1],h=n[a],Math.round((u+l)/2)!==h&&s.push({time:h,pos:a/(o-1)});return s}_generate(){const e=this.min,r=this.max;let i=super.getDataTimestamps();return(!i.includes(e)||!i.length)&&i.splice(0,0,e),(!i.includes(r)||i.length===1)&&i.push(r),i.sort((n,s)=>n-s)}_getTimestampsForTable(){let e=this._cache.all||[];if(e.length)return e;const r=this.getDataTimestamps(),i=this.getLabelTimestamps();return r.length&&i.length?e=this.normalize(r.concat(i)):e=r.length?r:i,e=this._cache.all=e,e}getDecimalForValue(e){return(UC(this._table,e)-this._minPos)/this._tableRange}getValueForPixel(e){const r=this._offsets,i=this.getDecimalForPixel(e)/r.factor-r.end;return UC(this._table,i*this._tableRange+this._minPos,!0)}}var MRe=Object.freeze({__proto__:null,CategoryScale:sRe,LinearScale:oRe,LogarithmicScale:hRe,RadialLinearScale:TRe,TimeScale:bM,TimeSeriesScale:ARe});const NRe=[LIe,aDe,tRe,MRe];DC.register(...NRe);var IRe=Object.defineProperty,_Re=Object.getOwnPropertyDescriptor,dc=(t,e,r,i)=>{for(var n=i>1?void 0:i?_Re(e,r):e,s=t.length-1,a;s>=0;s--)(a=t[s])&&(n=(i?a(e,r,n):a(n))||n);return i&&n&&IRe(e,r,n),n};let Go=class extends Nv{constructor(){super(),this.title="chart",this.legend=!1,this.height=458,this.width=800,this.smallTitle=!1,this.stepSize=1,this.chartType="line"}updateChart(){this.chart&&this.chart.data&&this.datasets&&this.datasets.length>0&&(this.chart.data.labels=this.labels,this.chart.data.datasets=this.datasets,this.chart.update())}buildChart(){let t=this.titleFont;this.smallTitle&&(t=this.fontBold),this.chart&&this.chart.destroy(),this.chart=new DC(this.shadowRoot?.querySelector("#chart"),{type:this.chartType,data:{labels:this.labels,datasets:this.datasets},options:{responsive:!0,elements:{point:{borderColor:this.secondary,backgroundColor:this.secondary,pointStyle:"rect",radius:4}},scales:{x:{ticks:{font:this.smallFont,color:this.secondary},border:{color:this.secondary}},y:{min:0,ticks:{stepSize:this.stepSize,font:this.font,color:this.secondary},border:{color:this.secondary}}},layout:{autoPadding:!1},plugins:{tooltip:{titleFont:this.fontBold,bodyFont:this.font,titleColor:this.primary,displayColors:!1,borderColor:this.tertiary,borderWidth:1,cornerRadius:0},title:{display:!0,text:this.title,font:t,color:this.primary,align:"start"},legend:{display:this.legend,position:"bottom",maxHeight:40,labels:{color:this.secondary,font:this.mediumFont,pointStyle:"line",boxHeight:1}}}}})}firstUpdated(){super.firstUpdated(),this.buildChart()}updated(t){t.has("currentTheme")&&this.chart&&this.buildChart()}render(){return L.html`
16827
- <canvas id="chart" style="width: ${this.width}px; height: ${this.height}px; "></canvas>
16836
+ `):t}function qDe(t,e){const{element:r,datasetIndex:i,index:n}=e,s=t.getDatasetMeta(i).controller,{label:a,value:o}=s.getLabelAndValue(n);return{chart:t,label:a,parsed:s.getParsed(n),raw:t.data.datasets[i].data[n],formattedValue:o,dataset:s.getDataset(),dataIndex:n,datasetIndex:i,element:r}}function AX(t,e){const r=t.chart.ctx,{body:i,footer:n,title:s}=t,{boxWidth:a,boxHeight:o}=e,l=En(e.bodyFont),h=En(e.titleFont),u=En(e.footerFont),d=s.length,p=n.length,f=i.length,m=Ns(e.padding);let v=m.height,y=0,b=i.reduce((C,k)=>C+k.before.length+k.lines.length+k.after.length,0);if(b+=t.beforeBody.length+t.afterBody.length,d&&(v+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),b){const C=e.displayColors?Math.max(o,l.lineHeight):l.lineHeight;v+=f*C+(b-f)*l.lineHeight+(b-1)*e.bodySpacing}p&&(v+=e.footerMarginTop+p*u.lineHeight+(p-1)*e.footerSpacing);let x=0;const w=function(C){y=Math.max(y,r.measureText(C).width+x)};return r.save(),r.font=h.string,Kr(t.title,w),r.font=l.string,Kr(t.beforeBody.concat(t.afterBody),w),x=e.displayColors?a+2+e.boxPadding:0,Kr(i,C=>{Kr(C.before,w),Kr(C.lines,w),Kr(C.after,w)}),x=0,r.font=u.string,Kr(t.footer,w),r.restore(),y+=m.width,{width:y,height:v}}function YDe(t,e){const{y:r,height:i}=e;return r<i/2?"top":r>t.height-i/2?"bottom":"center"}function XDe(t,e,r,i){const{x:n,width:s}=i,a=r.caretSize+r.caretPadding;if(t==="left"&&n+s+a>e.width||t==="right"&&n-s-a<0)return!0}function ZDe(t,e,r,i){const{x:n,width:s}=r,{width:a,chartArea:{left:o,right:l}}=t;let h="center";return i==="center"?h=n<=(o+l)/2?"left":"right":n<=s/2?h="left":n>=a-s/2&&(h="right"),XDe(h,t,e,r)&&(h="center"),h}function MX(t,e,r){const i=r.yAlign||e.yAlign||YDe(t,r);return{xAlign:r.xAlign||e.xAlign||ZDe(t,e,r,i),yAlign:i}}function KDe(t,e){let{x:r,width:i}=t;return e==="right"?r-=i:e==="center"&&(r-=i/2),r}function QDe(t,e,r){let{y:i,height:n}=t;return e==="top"?i+=r:e==="bottom"?i-=n+r:i-=n/2,i}function NX(t,e,r,i){const{caretSize:n,caretPadding:s,cornerRadius:a}=t,{xAlign:o,yAlign:l}=r,h=n+s,{topLeft:u,topRight:d,bottomLeft:p,bottomRight:f}=bf(a);let m=KDe(e,o);const v=QDe(e,l,h);return l==="center"?o==="left"?m+=h:o==="right"&&(m-=h):o==="left"?m-=Math.max(u,p)+n:o==="right"&&(m+=Math.max(d,f)+n),{x:jn(m,0,i.width-e.width),y:jn(v,0,i.height-e.height)}}function BC(t,e,r){const i=Ns(r.padding);return e==="center"?t.x+t.width/2:e==="right"?t.x+t.width-i.right:t.x+i.left}function IX(t){return uc([],Ah(t))}function JDe(t,e,r){return Ku(t,{tooltip:e,tooltipItems:r,type:"tooltip"})}function _X(t,e){const r=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return r?t.override(r):t}const DX={beforeTitle:Ch,title(t){if(t.length>0){const e=t[0],r=e.chart.data.labels,i=r?r.length:0;if(this&&this.options&&this.options.mode==="dataset")return e.dataset.label||"";if(e.label)return e.label;if(i>0&&e.dataIndex<i)return r[e.dataIndex]}return""},afterTitle:Ch,beforeBody:Ch,beforeLabel:Ch,label(t){if(this&&this.options&&this.options.mode==="dataset")return t.label+": "+t.formattedValue||t.formattedValue;let e=t.dataset.label||"";e&&(e+=": ");const r=t.formattedValue;return yr(r)||(e+=r),e},labelColor(t){const r=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{borderColor:r.borderColor,backgroundColor:r.backgroundColor,borderWidth:r.borderWidth,borderDash:r.borderDash,borderDashOffset:r.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(t){const r=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{pointStyle:r.pointStyle,rotation:r.rotation}},afterLabel:Ch,afterBody:Ch,beforeFooter:Ch,footer:Ch,afterFooter:Ch};function Ma(t,e,r,i){const n=t[e].call(r,i);return typeof n>"u"?DX[e].call(r,i):n}class RX extends Lh{static positioners=H2;constructor(e){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=e.chart,this.options=e.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(e){this.options=e,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const e=this._cachedAnimations;if(e)return e;const r=this.chart,i=this.options.setContext(this.getContext()),n=i.enabled&&r.options.animation&&i.animations,s=new CY(this.chart,n);return n._cacheable&&(this._cachedAnimations=Object.freeze(s)),s}getContext(){return this.$context||(this.$context=JDe(this.chart.getContext(),this,this._tooltipItems))}getTitle(e,r){const{callbacks:i}=r,n=Ma(i,"beforeTitle",this,e),s=Ma(i,"title",this,e),a=Ma(i,"afterTitle",this,e);let o=[];return o=uc(o,Ah(n)),o=uc(o,Ah(s)),o=uc(o,Ah(a)),o}getBeforeBody(e,r){return IX(Ma(r.callbacks,"beforeBody",this,e))}getBody(e,r){const{callbacks:i}=r,n=[];return Kr(e,s=>{const a={before:[],lines:[],after:[]},o=_X(i,s);uc(a.before,Ah(Ma(o,"beforeLabel",this,s))),uc(a.lines,Ma(o,"label",this,s)),uc(a.after,Ah(Ma(o,"afterLabel",this,s))),n.push(a)}),n}getAfterBody(e,r){return IX(Ma(r.callbacks,"afterBody",this,e))}getFooter(e,r){const{callbacks:i}=r,n=Ma(i,"beforeFooter",this,e),s=Ma(i,"footer",this,e),a=Ma(i,"afterFooter",this,e);let o=[];return o=uc(o,Ah(n)),o=uc(o,Ah(s)),o=uc(o,Ah(a)),o}_createItems(e){const r=this._active,i=this.chart.data,n=[],s=[],a=[];let o=[],l,h;for(l=0,h=r.length;l<h;++l)o.push(qDe(this.chart,r[l]));return e.filter&&(o=o.filter((u,d,p)=>e.filter(u,d,p,i))),e.itemSort&&(o=o.sort((u,d)=>e.itemSort(u,d,i))),Kr(o,u=>{const d=_X(e.callbacks,u);n.push(Ma(d,"labelColor",this,u)),s.push(Ma(d,"labelPointStyle",this,u)),a.push(Ma(d,"labelTextColor",this,u))}),this.labelColors=n,this.labelPointStyles=s,this.labelTextColors=a,this.dataPoints=o,o}update(e,r){const i=this.options.setContext(this.getContext()),n=this._active;let s,a=[];if(!n.length)this.opacity!==0&&(s={opacity:0});else{const o=H2[i.position].call(this,n,this._eventPosition);a=this._createItems(i),this.title=this.getTitle(a,i),this.beforeBody=this.getBeforeBody(a,i),this.body=this.getBody(a,i),this.afterBody=this.getAfterBody(a,i),this.footer=this.getFooter(a,i);const l=this._size=AX(this,i),h=Object.assign({},o,l),u=MX(this.chart,i,h),d=NX(i,h,u,this.chart);this.xAlign=u.xAlign,this.yAlign=u.yAlign,s={opacity:1,x:d.x,y:d.y,width:l.width,height:l.height,caretX:o.x,caretY:o.y}}this._tooltipItems=a,this.$context=void 0,s&&this._resolveAnimations().update(this,s),e&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:r})}drawCaret(e,r,i,n){const s=this.getCaretPosition(e,i,n);r.lineTo(s.x1,s.y1),r.lineTo(s.x2,s.y2),r.lineTo(s.x3,s.y3)}getCaretPosition(e,r,i){const{xAlign:n,yAlign:s}=this,{caretSize:a,cornerRadius:o}=i,{topLeft:l,topRight:h,bottomLeft:u,bottomRight:d}=bf(o),{x:p,y:f}=e,{width:m,height:v}=r;let y,b,x,w,C,k;return s==="center"?(C=f+v/2,n==="left"?(y=p,b=y-a,w=C+a,k=C-a):(y=p+m,b=y+a,w=C-a,k=C+a),x=y):(n==="left"?b=p+Math.max(l,u)+a:n==="right"?b=p+m-Math.max(h,d)-a:b=this.caretX,s==="top"?(w=f,C=w-a,y=b-a,x=b+a):(w=f+v,C=w+a,y=b+a,x=b-a),k=w),{x1:y,x2:b,x3:x,y1:w,y2:C,y3:k}}drawTitle(e,r,i){const n=this.title,s=n.length;let a,o,l;if(s){const h=jg(i.rtl,this.x,this.width);for(e.x=BC(this,i.titleAlign,i),r.textAlign=h.textAlign(i.titleAlign),r.textBaseline="middle",a=En(i.titleFont),o=i.titleSpacing,r.fillStyle=i.titleColor,r.font=a.string,l=0;l<s;++l)r.fillText(n[l],h.x(e.x),e.y+a.lineHeight/2),e.y+=a.lineHeight+o,l+1===s&&(e.y+=i.titleMarginBottom-o)}}_drawColorBox(e,r,i,n,s){const a=this.labelColors[i],o=this.labelPointStyles[i],{boxHeight:l,boxWidth:h}=s,u=En(s.bodyFont),d=BC(this,"left",s),p=n.x(d),f=l<u.lineHeight?(u.lineHeight-l)/2:0,m=r.y+f;if(s.usePointStyle){const v={radius:Math.min(h,l)/2,pointStyle:o.pointStyle,rotation:o.rotation,borderWidth:1},y=n.leftForLtr(p,h)+h/2,b=m+l/2;e.strokeStyle=s.multiKeyBackground,e.fillStyle=s.multiKeyBackground,WA(e,v,y,b),e.strokeStyle=a.borderColor,e.fillStyle=a.backgroundColor,WA(e,v,y,b)}else{e.lineWidth=wr(a.borderWidth)?Math.max(...Object.values(a.borderWidth)):a.borderWidth||1,e.strokeStyle=a.borderColor,e.setLineDash(a.borderDash||[]),e.lineDashOffset=a.borderDashOffset||0;const v=n.leftForLtr(p,h),y=n.leftForLtr(n.xPlus(p,1),h-2),b=bf(a.borderRadius);Object.values(b).some(x=>x!==0)?(e.beginPath(),e.fillStyle=s.multiKeyBackground,P2(e,{x:v,y:m,w:h,h:l,radius:b}),e.fill(),e.stroke(),e.fillStyle=a.backgroundColor,e.beginPath(),P2(e,{x:y,y:m+1,w:h-2,h:l-2,radius:b}),e.fill()):(e.fillStyle=s.multiKeyBackground,e.fillRect(v,m,h,l),e.strokeRect(v,m,h,l),e.fillStyle=a.backgroundColor,e.fillRect(y,m+1,h-2,l-2))}e.fillStyle=this.labelTextColors[i]}drawBody(e,r,i){const{body:n}=this,{bodySpacing:s,bodyAlign:a,displayColors:o,boxHeight:l,boxWidth:h,boxPadding:u}=i,d=En(i.bodyFont);let p=d.lineHeight,f=0;const m=jg(i.rtl,this.x,this.width),v=function(A){r.fillText(A,m.x(e.x+f),e.y+p/2),e.y+=p+s},y=m.textAlign(a);let b,x,w,C,k,S,E;for(r.textAlign=a,r.textBaseline="middle",r.font=d.string,e.x=BC(this,y,i),r.fillStyle=i.bodyColor,Kr(this.beforeBody,v),f=o&&y!=="right"?a==="center"?h/2+u:h+2+u:0,C=0,S=n.length;C<S;++C){for(b=n[C],x=this.labelTextColors[C],r.fillStyle=x,Kr(b.before,v),w=b.lines,o&&w.length&&(this._drawColorBox(r,e,C,m,i),p=Math.max(d.lineHeight,l)),k=0,E=w.length;k<E;++k)v(w[k]),p=d.lineHeight;Kr(b.after,v)}f=0,p=d.lineHeight,Kr(this.afterBody,v),e.y-=s}drawFooter(e,r,i){const n=this.footer,s=n.length;let a,o;if(s){const l=jg(i.rtl,this.x,this.width);for(e.x=BC(this,i.footerAlign,i),e.y+=i.footerMarginTop,r.textAlign=l.textAlign(i.footerAlign),r.textBaseline="middle",a=En(i.footerFont),r.fillStyle=i.footerColor,r.font=a.string,o=0;o<s;++o)r.fillText(n[o],l.x(e.x),e.y+a.lineHeight/2),e.y+=a.lineHeight+i.footerSpacing}}drawBackground(e,r,i,n){const{xAlign:s,yAlign:a}=this,{x:o,y:l}=e,{width:h,height:u}=i,{topLeft:d,topRight:p,bottomLeft:f,bottomRight:m}=bf(n.cornerRadius);r.fillStyle=n.backgroundColor,r.strokeStyle=n.borderColor,r.lineWidth=n.borderWidth,r.beginPath(),r.moveTo(o+d,l),a==="top"&&this.drawCaret(e,r,i,n),r.lineTo(o+h-p,l),r.quadraticCurveTo(o+h,l,o+h,l+p),a==="center"&&s==="right"&&this.drawCaret(e,r,i,n),r.lineTo(o+h,l+u-m),r.quadraticCurveTo(o+h,l+u,o+h-m,l+u),a==="bottom"&&this.drawCaret(e,r,i,n),r.lineTo(o+f,l+u),r.quadraticCurveTo(o,l+u,o,l+u-f),a==="center"&&s==="left"&&this.drawCaret(e,r,i,n),r.lineTo(o,l+d),r.quadraticCurveTo(o,l,o+d,l),r.closePath(),r.fill(),n.borderWidth>0&&r.stroke()}_updateAnimationTarget(e){const r=this.chart,i=this.$animations,n=i&&i.x,s=i&&i.y;if(n||s){const a=H2[e.position].call(this,this._active,this._eventPosition);if(!a)return;const o=this._size=AX(this,e),l=Object.assign({},a,this._size),h=MX(r,e,l),u=NX(e,l,h,r);(n._to!==u.x||s._to!==u.y)&&(this.xAlign=h.xAlign,this.yAlign=h.yAlign,this.width=o.width,this.height=o.height,this.caretX=a.x,this.caretY=a.y,this._resolveAnimations().update(this,u))}}_willRender(){return!!this.opacity}draw(e){const r=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(r);const n={width:this.width,height:this.height},s={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const a=Ns(r.padding),o=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;r.enabled&&o&&(e.save(),e.globalAlpha=i,this.drawBackground(s,e,n,r),dY(e,r.textDirection),s.y+=a.top,this.drawTitle(s,e,r),this.drawBody(s,e,r),this.drawFooter(s,e,r),pY(e,r.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,r){const i=this._active,n=e.map(({datasetIndex:o,index:l})=>{const h=this.chart.getDatasetMeta(o);if(!h)throw new Error("Cannot find a dataset at index "+o);return{datasetIndex:o,element:h.data[l],index:l}}),s=!dC(i,n),a=this._positionChanged(n,r);(s||a)&&(this._active=n,this._eventPosition=r,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,r,i=!0){if(r&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const n=this.options,s=this._active||[],a=this._getActiveElements(e,s,r,i),o=this._positionChanged(a,e),l=r||!dC(a,s)||o;return l&&(this._active=a,(n.enabled||n.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,r))),l}_getActiveElements(e,r,i,n){const s=this.options;if(e.type==="mouseout")return[];if(!n)return r.filter(o=>this.chart.data.datasets[o.datasetIndex]&&this.chart.getDatasetMeta(o.datasetIndex).controller.getParsed(o.index)!==void 0);const a=this.chart.getElementsAtEventForMode(e,s.mode,s,i);return s.reverse&&a.reverse(),a}_positionChanged(e,r){const{caretX:i,caretY:n,options:s}=this,a=H2[s.position].call(this,e,r);return a!==!1&&(i!==a.x||n!==a.y)}}var eRe={id:"tooltip",_element:RX,positioners:H2,afterInit(t,e,r){r&&(t.tooltip=new RX({chart:t,options:r}))},beforeUpdate(t,e,r){t.tooltip&&t.tooltip.initialize(r)},reset(t,e,r){t.tooltip&&t.tooltip.initialize(r)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const r={tooltip:e};if(t.notifyPlugins("beforeTooltipDraw",{...r,cancelable:!0})===!1)return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",r)}},afterEvent(t,e){if(t.tooltip){const r=e.replay;t.tooltip.handleEvent(e.event,r,e.inChartArea)&&(e.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:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.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:DX},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>t!=="filter"&&t!=="itemSort"&&t!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},tRe=Object.freeze({__proto__:null,Colors:pDe,Decimation:vDe,Filler:$De,Legend:VDe,SubTitle:WDe,Title:jDe,Tooltip:eRe});const rRe=(t,e,r,i)=>(typeof e=="string"?(r=t.push(e)-1,i.unshift({index:r,label:e})):isNaN(e)&&(r=null),r);function iRe(t,e,r,i){const n=t.indexOf(e);if(n===-1)return rRe(t,e,r,i);const s=t.lastIndexOf(e);return n!==s?r:n}const nRe=(t,e)=>t===null?null:jn(Math.round(t),0,e);function PX(t){const e=this.getLabels();return t>=0&&t<e.length?e[t]:t}class sRe extends Tf{static id="category";static defaults={ticks:{callback:PX}};constructor(e){super(e),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(e){const r=this._addedLabels;if(r.length){const i=this.getLabels();for(const{index:n,label:s}of r)i[n]===s&&i.splice(n,1);this._addedLabels=[]}super.init(e)}parse(e,r){if(yr(e))return null;const i=this.getLabels();return r=isFinite(r)&&i[r]===e?r:iRe(i,e,ar(r,e),this._addedLabels),nRe(r,i.length-1)}determineDataLimits(){const{minDefined:e,maxDefined:r}=this.getUserBounds();let{min:i,max:n}=this.getMinMax(!0);this.options.bounds==="ticks"&&(e||(i=0),r||(n=this.getLabels().length-1)),this.min=i,this.max=n}buildTicks(){const e=this.min,r=this.max,i=this.options.offset,n=[];let s=this.getLabels();s=e===0&&r===s.length-1?s:s.slice(e,r+1),this._valueRange=Math.max(s.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let a=e;a<=r;a++)n.push({value:a});return n}getLabelForValue(e){return PX.call(this,e)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(e){return typeof e!="number"&&(e=this.parse(e)),e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getPixelForTick(e){const r=this.ticks;return e<0||e>r.length-1?null:this.getPixelForValue(r[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}}function aRe(t,e){const r=[],{bounds:n,step:s,min:a,max:o,precision:l,count:h,maxTicks:u,maxDigits:d,includeBounds:p}=t,f=s||1,m=u-1,{min:v,max:y}=e,b=!yr(a),x=!yr(o),w=!yr(h),C=(y-v)/(d+1);let k=$q((y-v)/m/f)*f,S,E,A,M;if(k<1e-14&&!b&&!x)return[{value:v},{value:y}];M=Math.ceil(y/k)-Math.floor(v/k),M>m&&(k=$q(M*k/m/f)*f),yr(l)||(S=Math.pow(10,l),k=Math.ceil(k*S)/S),n==="ticks"?(E=Math.floor(v/k)*k,A=Math.ceil(y/k)*k):(E=v,A=y),b&&x&&s&&G9e((o-a)/s,k/1e3)?(M=Math.round(Math.min((o-a)/k,u)),k=(o-a)/M,E=a,A=o):w?(E=b?a:E,A=x?o:A,M=h-1,k=(A-E)/M):(M=(A-E)/k,N2(M,Math.round(M),k/1e3)?M=Math.round(M):M=Math.ceil(M));const _=Math.max(Fq(k),Fq(E));S=Math.pow(10,yr(l)?_:l),E=Math.round(E*S)/S,A=Math.round(A*S)/S;let I=0;for(b&&(p&&E!==a?(r.push({value:a}),E<a&&I++,N2(Math.round((E+I*k)*S)/S,a,OX(a,C,t))&&I++):E<a&&I++);I<M;++I){const D=Math.round((E+I*k)*S)/S;if(x&&D>o)break;r.push({value:D})}return x&&p&&A!==o?r.length&&N2(r[r.length-1].value,o,OX(o,C,t))?r[r.length-1].value=o:r.push({value:o}):(!x||A===o)&&r.push({value:A}),r}function OX(t,e,{horizontal:r,minRotation:i}){const n=kl(i),s=(r?Math.sin(n):Math.cos(n))||.001,a=.75*e*(""+t).length;return Math.min(e/s,a)}class FC extends Tf{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(e,r){return yr(e)||(typeof e=="number"||e instanceof Number)&&!isFinite(+e)?null:+e}handleTickRangeOptions(){const{beginAtZero:e}=this.options,{minDefined:r,maxDefined:i}=this.getUserBounds();let{min:n,max:s}=this;const a=l=>n=r?n:l,o=l=>s=i?s:l;if(e){const l=cc(n),h=cc(s);l<0&&h<0?o(0):l>0&&h>0&&a(0)}if(n===s){let l=s===0?1:Math.abs(s*.05);o(s+l),e||a(n-l)}this.min=n,this.max=s}getTickLimit(){const e=this.options.ticks;let{maxTicksLimit:r,stepSize:i}=e,n;return i?(n=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,n>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${n} ticks. Limiting to 1000.`),n=1e3)):(n=this.computeTickLimit(),r=r||11),r&&(n=Math.min(r,n)),n}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const e=this.options,r=e.ticks;let i=this.getTickLimit();i=Math.max(2,i);const n={maxTicks:i,bounds:e.bounds,min:e.min,max:e.max,precision:r.precision,step:r.stepSize,count:r.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:r.minRotation||0,includeBounds:r.includeBounds!==!1},s=this._range||this,a=aRe(n,s);return e.bounds==="ticks"&&Bq(a,this,"value"),e.reverse?(a.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),a}configure(){const e=this.ticks;let r=this.min,i=this.max;if(super.configure(),this.options.offset&&e.length){const n=(i-r)/Math.max(e.length-1,1)/2;r-=n,i+=n}this._startValue=r,this._endValue=i,this._valueRange=i-r}getLabelForValue(e){return D2(e,this.chart.options.locale,this.options.ticks.format)}}class oRe extends FC{static id="linear";static defaults={ticks:{callback:mC.formatters.numeric}};determineDataLimits(){const{min:e,max:r}=this.getMinMax(!0);this.min=$i(e)?e:0,this.max=$i(r)?r:1,this.handleTickRangeOptions()}computeTickLimit(){const e=this.isHorizontal(),r=e?this.width:this.height,i=kl(this.options.ticks.minRotation),n=(e?Math.sin(i):Math.cos(i))||.001,s=this._resolveTickFontOptions(0);return Math.ceil(r/Math.min(40,s.lineHeight/n))}getPixelForValue(e){return e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}}const j2=t=>Math.floor(Zu(t)),Ef=(t,e)=>Math.pow(10,j2(t)+e);function $X(t){return t/Math.pow(10,j2(t))===1}function BX(t,e,r){const i=Math.pow(10,r),n=Math.floor(t/i);return Math.ceil(e/i)-n}function lRe(t,e){const r=e-t;let i=j2(r);for(;BX(t,e,i)>10;)i++;for(;BX(t,e,i)<10;)i--;return Math.min(i,j2(t))}function cRe(t,{min:e,max:r}){e=oo(t.min,e);const i=[],n=j2(e);let s=lRe(e,r),a=s<0?Math.pow(10,Math.abs(s)):1;const o=Math.pow(10,s),l=n>s?Math.pow(10,n):0,h=Math.round((e-l)*a)/a,u=Math.floor((e-l)/o/10)*o*10;let d=Math.floor((h-u)/Math.pow(10,s)),p=oo(t.min,Math.round((l+u+d*Math.pow(10,s))*a)/a);for(;p<r;)i.push({value:p,major:$X(p),significand:d}),d>=10?d=d<15?15:20:d++,d>=20&&(s++,d=2,a=s>=0?1:a),p=Math.round((l+u+d*Math.pow(10,s))*a)/a;const f=oo(t.max,p);return i.push({value:f,major:$X(f),significand:d}),i}class hRe extends Tf{static id="logarithmic";static defaults={ticks:{callback:mC.formatters.logarithmic,major:{enabled:!0}}};constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(e,r){const i=FC.prototype.parse.apply(this,[e,r]);if(i===0){this._zero=!0;return}return $i(i)&&i>0?i:null}determineDataLimits(){const{min:e,max:r}=this.getMinMax(!0);this.min=$i(e)?Math.max(0,e):null,this.max=$i(r)?Math.max(0,r):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!$i(this._userMin)&&(this.min=e===Ef(this.min,0)?Ef(this.min,-1):Ef(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:e,maxDefined:r}=this.getUserBounds();let i=this.min,n=this.max;const s=o=>i=e?i:o,a=o=>n=r?n:o;i===n&&(i<=0?(s(1),a(10)):(s(Ef(i,-1)),a(Ef(n,1)))),i<=0&&s(Ef(n,-1)),n<=0&&a(Ef(i,1)),this.min=i,this.max=n}buildTicks(){const e=this.options,r={min:this._userMin,max:this._userMax},i=cRe(r,this);return e.bounds==="ticks"&&Bq(i,this,"value"),e.reverse?(i.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),i}getLabelForValue(e){return e===void 0?"0":D2(e,this.chart.options.locale,this.options.ticks.format)}configure(){const e=this.min;super.configure(),this._startValue=Zu(e),this._valueRange=Zu(this.max)-Zu(e)}getPixelForValue(e){return(e===void 0||e===0)&&(e=this.min),e===null||isNaN(e)?NaN:this.getPixelForDecimal(e===this.min?0:(Zu(e)-this._startValue)/this._valueRange)}getValueForPixel(e){const r=this.getDecimalForPixel(e);return Math.pow(10,this._startValue+r*this._valueRange)}}function yM(t){const e=t.ticks;if(e.display&&t.display){const r=Ns(e.backdropPadding);return ar(e.font&&e.font.size,ki.font.size)+r.height}return 0}function uRe(t,e,r){return r=Ci(r)?r:[r],{w:sNe(t,e.string,r),h:r.length*e.lineHeight}}function FX(t,e,r,i,n){return t===i||t===n?{start:e-r/2,end:e+r/2}:t<i||t>n?{start:e-r,end:e}:{start:e,end:e+r}}function dRe(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},r=Object.assign({},e),i=[],n=[],s=t._pointLabels.length,a=t.options.pointLabels,o=a.centerPointLabels?Br/s:0;for(let l=0;l<s;l++){const h=a.setContext(t.getPointLabelContext(l));n[l]=h.padding;const u=t.getPointPosition(l,t.drawingArea+n[l],o),d=En(h.font),p=uRe(t.ctx,d,t._pointLabels[l]);i[l]=p;const f=As(t.getIndexAngle(l)+o),m=Math.round(BA(f)),v=FX(m,u.x,p.w,0,180),y=FX(m,u.y,p.h,90,270);pRe(r,e,f,v,y)}t.setCenterPoint(e.l-r.l,r.r-e.r,e.t-r.t,r.b-e.b),t._pointLabelItems=mRe(t,i,n)}function pRe(t,e,r,i,n){const s=Math.abs(Math.sin(r)),a=Math.abs(Math.cos(r));let o=0,l=0;i.start<e.l?(o=(e.l-i.start)/s,t.l=Math.min(t.l,e.l-o)):i.end>e.r&&(o=(i.end-e.r)/s,t.r=Math.max(t.r,e.r+o)),n.start<e.t?(l=(e.t-n.start)/a,t.t=Math.min(t.t,e.t-l)):n.end>e.b&&(l=(n.end-e.b)/a,t.b=Math.max(t.b,e.b+l))}function fRe(t,e,r){const i=t.drawingArea,{extra:n,additionalAngle:s,padding:a,size:o}=r,l=t.getPointPosition(e,i+n+a,s),h=Math.round(BA(As(l.angle+Ki))),u=bRe(l.y,o.h,h),d=vRe(h),p=yRe(l.x,o.w,d);return{visible:!0,x:l.x,y:u,textAlign:d,left:p,top:u,right:p+o.w,bottom:u+o.h}}function gRe(t,e){if(!e)return!0;const{left:r,top:i,right:n,bottom:s}=t;return!(Eh({x:r,y:i},e)||Eh({x:r,y:s},e)||Eh({x:n,y:i},e)||Eh({x:n,y:s},e))}function mRe(t,e,r){const i=[],n=t._pointLabels.length,s=t.options,{centerPointLabels:a,display:o}=s.pointLabels,l={extra:yM(s)/2,additionalAngle:a?Br/n:0};let h;for(let u=0;u<n;u++){l.padding=r[u],l.size=e[u];const d=fRe(t,u,l);i.push(d),o==="auto"&&(d.visible=gRe(d,h),d.visible&&(h=d))}return i}function vRe(t){return t===0||t===180?"center":t<180?"left":"right"}function yRe(t,e,r){return r==="right"?t-=e:r==="center"&&(t-=e/2),t}function bRe(t,e,r){return r===90||r===270?t-=e/2:(r>270||r<90)&&(t-=e),t}function xRe(t,e,r){const{left:i,top:n,right:s,bottom:a}=r,{backdropColor:o}=e;if(!yr(o)){const l=bf(e.borderRadius),h=Ns(e.backdropPadding);t.fillStyle=o;const u=i-h.left,d=n-h.top,p=s-i+h.width,f=a-n+h.height;Object.values(l).some(m=>m!==0)?(t.beginPath(),P2(t,{x:u,y:d,w:p,h:f,radius:l}),t.fill()):t.fillRect(u,d,p,f)}}function wRe(t,e){const{ctx:r,options:{pointLabels:i}}=t;for(let n=e-1;n>=0;n--){const s=t._pointLabelItems[n];if(!s.visible)continue;const a=i.setContext(t.getPointLabelContext(n));xRe(r,a,s);const o=En(a.font),{x:l,y:h,textAlign:u}=s;yf(r,t._pointLabels[n],l,h+o.lineHeight/2,o,{color:a.color,textAlign:u,textBaseline:"middle"})}}function zX(t,e,r,i){const{ctx:n}=t;if(r)n.arc(t.xCenter,t.yCenter,e,0,fi);else{let s=t.getPointPosition(0,e);n.moveTo(s.x,s.y);for(let a=1;a<i;a++)s=t.getPointPosition(a,e),n.lineTo(s.x,s.y)}}function CRe(t,e,r,i,n){const s=t.ctx,a=e.circular,{color:o,lineWidth:l}=e;!a&&!i||!o||!l||r<0||(s.save(),s.strokeStyle=o,s.lineWidth=l,s.setLineDash(n.dash||[]),s.lineDashOffset=n.dashOffset,s.beginPath(),zX(t,r,a,i),s.closePath(),s.stroke(),s.restore())}function kRe(t,e,r){return Ku(t,{label:r,index:e,type:"pointLabel"})}class TRe extends FC{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:mC.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(e){return e},padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(e){super(e),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const e=this._padding=Ns(yM(this.options)/2),r=this.width=this.maxWidth-e.width,i=this.height=this.maxHeight-e.height;this.xCenter=Math.floor(this.left+r/2+e.left),this.yCenter=Math.floor(this.top+i/2+e.top),this.drawingArea=Math.floor(Math.min(r,i)/2)}determineDataLimits(){const{min:e,max:r}=this.getMinMax(!1);this.min=$i(e)&&!isNaN(e)?e:0,this.max=$i(r)&&!isNaN(r)?r:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/yM(this.options))}generateTickLabels(e){FC.prototype.generateTickLabels.call(this,e),this._pointLabels=this.getLabels().map((r,i)=>{const n=li(this.options.pointLabels.callback,[r,i],this);return n||n===0?n:""}).filter((r,i)=>this.chart.getDataVisibility(i))}fit(){const e=this.options;e.display&&e.pointLabels.display?dRe(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(e,r,i,n){this.xCenter+=Math.floor((e-r)/2),this.yCenter+=Math.floor((i-n)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(e,r,i,n))}getIndexAngle(e){const r=fi/(this._pointLabels.length||1),i=this.options.startAngle||0;return As(e*r+kl(i))}getDistanceFromCenterForValue(e){if(yr(e))return NaN;const r=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-e)*r:(e-this.min)*r}getValueForDistanceFromCenter(e){if(yr(e))return NaN;const r=e/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-r:this.min+r}getPointLabelContext(e){const r=this._pointLabels||[];if(e>=0&&e<r.length){const i=r[e];return kRe(this.getContext(),e,i)}}getPointPosition(e,r,i=0){const n=this.getIndexAngle(e)-Ki+i;return{x:Math.cos(n)*r+this.xCenter,y:Math.sin(n)*r+this.yCenter,angle:n}}getPointPositionForValue(e,r){return this.getPointPosition(e,this.getDistanceFromCenterForValue(r))}getBasePosition(e){return this.getPointPositionForValue(e||0,this.getBaseValue())}getPointLabelPosition(e){const{left:r,top:i,right:n,bottom:s}=this._pointLabelItems[e];return{left:r,top:i,right:n,bottom:s}}drawBackground(){const{backgroundColor:e,grid:{circular:r}}=this.options;if(e){const i=this.ctx;i.save(),i.beginPath(),zX(this,this.getDistanceFromCenterForValue(this._endValue),r,this._pointLabels.length),i.closePath(),i.fillStyle=e,i.fill(),i.restore()}}drawGrid(){const e=this.ctx,r=this.options,{angleLines:i,grid:n,border:s}=r,a=this._pointLabels.length;let o,l,h;if(r.pointLabels.display&&wRe(this,a),n.display&&this.ticks.forEach((u,d)=>{if(d!==0||d===0&&this.min<0){l=this.getDistanceFromCenterForValue(u.value);const p=this.getContext(d),f=n.setContext(p),m=s.setContext(p);CRe(this,f,l,a,m)}}),i.display){for(e.save(),o=a-1;o>=0;o--){const u=i.setContext(this.getPointLabelContext(o)),{color:d,lineWidth:p}=u;!p||!d||(e.lineWidth=p,e.strokeStyle=d,e.setLineDash(u.borderDash),e.lineDashOffset=u.borderDashOffset,l=this.getDistanceFromCenterForValue(r.reverse?this.min:this.max),h=this.getPointPosition(o,l),e.beginPath(),e.moveTo(this.xCenter,this.yCenter),e.lineTo(h.x,h.y),e.stroke())}e.restore()}}drawBorder(){}drawLabels(){const e=this.ctx,r=this.options,i=r.ticks;if(!i.display)return;const n=this.getIndexAngle(0);let s,a;e.save(),e.translate(this.xCenter,this.yCenter),e.rotate(n),e.textAlign="center",e.textBaseline="middle",this.ticks.forEach((o,l)=>{if(l===0&&this.min>=0&&!r.reverse)return;const h=i.setContext(this.getContext(l)),u=En(h.font);if(s=this.getDistanceFromCenterForValue(this.ticks[l].value),h.showLabelBackdrop){e.font=u.string,a=e.measureText(o.label).width,e.fillStyle=h.backdropColor;const d=Ns(h.backdropPadding);e.fillRect(-a/2-d.left,-s-u.size/2-d.top,a+d.width,u.size+d.height)}yf(e,o.label,0,-s,u,{color:h.color,strokeColor:h.textStrokeColor,strokeWidth:h.textStrokeWidth})}),e.restore()}drawTitle(){}}const zC={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Na=Object.keys(zC);function UX(t,e){return t-e}function GX(t,e){if(yr(e))return null;const r=t._adapter,{parser:i,round:n,isoWeekday:s}=t._parseOpts;let a=e;return typeof i=="function"&&(a=i(a)),$i(a)||(a=typeof i=="string"?r.parse(a,i):r.parse(a)),a===null?null:(n&&(a=n==="week"&&(Gg(s)||s===!0)?r.startOf(a,"isoWeek",s):r.startOf(a,n)),+a)}function VX(t,e,r,i){const n=Na.length;for(let s=Na.indexOf(t);s<n-1;++s){const a=zC[Na[s]],o=a.steps?a.steps:Number.MAX_SAFE_INTEGER;if(a.common&&Math.ceil((r-e)/(o*a.size))<=i)return Na[s]}return Na[n-1]}function ERe(t,e,r,i,n){for(let s=Na.length-1;s>=Na.indexOf(r);s--){const a=Na[s];if(zC[a].common&&t._adapter.diff(n,i,a)>=e-1)return a}return Na[r?Na.indexOf(r):0]}function SRe(t){for(let e=Na.indexOf(t)+1,r=Na.length;e<r;++e)if(zC[Na[e]].common)return Na[e]}function HX(t,e,r){if(!r)t[e]=!0;else if(r.length){const{lo:i,hi:n}=zA(r,e),s=r[i]>=e?r[i]:r[n];t[s]=!0}}function LRe(t,e,r,i){const n=t._adapter,s=+n.startOf(e[0].value,i),a=e[e.length-1].value;let o,l;for(o=s;o<=a;o=+n.add(o,1,i))l=r[o],l>=0&&(e[l].major=!0);return e}function jX(t,e,r){const i=[],n={},s=e.length;let a,o;for(a=0;a<s;++a)o=e[a],n[o]=a,i.push({value:o,major:!1});return s===0||!r?i:LRe(t,i,n,r)}class bM extends Tf{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(e){super(e),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(e,r={}){const i=e.time||(e.time={}),n=this._adapter=new AIe._date(e.adapters.date);n.init(r),A2(i.displayFormats,n.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(e),this._normalized=r.normalized}parse(e,r){return e===void 0?null:GX(this,e)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const e=this.options,r=this._adapter,i=e.time.unit||"day";let{min:n,max:s,minDefined:a,maxDefined:o}=this.getUserBounds();function l(h){!a&&!isNaN(h.min)&&(n=Math.min(n,h.min)),!o&&!isNaN(h.max)&&(s=Math.max(s,h.max))}(!a||!o)&&(l(this._getLabelBounds()),(e.bounds!=="ticks"||e.ticks.source!=="labels")&&l(this.getMinMax(!1))),n=$i(n)&&!isNaN(n)?n:+r.startOf(Date.now(),i),s=$i(s)&&!isNaN(s)?s:+r.endOf(Date.now(),i)+1,this.min=Math.min(n,s-1),this.max=Math.max(n+1,s)}_getLabelBounds(){const e=this.getLabelTimestamps();let r=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return e.length&&(r=e[0],i=e[e.length-1]),{min:r,max:i}}buildTicks(){const e=this.options,r=e.time,i=e.ticks,n=i.source==="labels"?this.getLabelTimestamps():this._generate();e.bounds==="ticks"&&n.length&&(this.min=this._userMin||n[0],this.max=this._userMax||n[n.length-1]);const s=this.min,a=this.max,o=W9e(n,s,a);return this._unit=r.unit||(i.autoSkip?VX(r.minUnit,this.min,this.max,this._getLabelCapacity(s)):ERe(this,o.length,r.minUnit,this.min,this.max)),this._majorUnit=!i.major.enabled||this._unit==="year"?void 0:SRe(this._unit),this.initOffsets(n),e.reverse&&o.reverse(),jX(this,o,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map(e=>+e.value))}initOffsets(e=[]){let r=0,i=0,n,s;this.options.offset&&e.length&&(n=this.getDecimalForValue(e[0]),e.length===1?r=1-n:r=(this.getDecimalForValue(e[1])-n)/2,s=this.getDecimalForValue(e[e.length-1]),e.length===1?i=s:i=(s-this.getDecimalForValue(e[e.length-2]))/2);const a=e.length<3?.5:.25;r=jn(r,0,a),i=jn(i,0,a),this._offsets={start:r,end:i,factor:1/(r+1+i)}}_generate(){const e=this._adapter,r=this.min,i=this.max,n=this.options,s=n.time,a=s.unit||VX(s.minUnit,r,i,this._getLabelCapacity(r)),o=ar(n.ticks.stepSize,1),l=a==="week"?s.isoWeekday:!1,h=Gg(l)||l===!0,u={};let d=r,p,f;if(h&&(d=+e.startOf(d,"isoWeek",l)),d=+e.startOf(d,h?"day":a),e.diff(i,r,a)>1e5*o)throw new Error(r+" and "+i+" are too far apart with stepSize of "+o+" "+a);const m=n.ticks.source==="data"&&this.getDataTimestamps();for(p=d,f=0;p<i;p=+e.add(p,o,a),f++)HX(u,p,m);return(p===i||n.bounds==="ticks"||f===1)&&HX(u,p,m),Object.keys(u).sort(UX).map(v=>+v)}getLabelForValue(e){const r=this._adapter,i=this.options.time;return i.tooltipFormat?r.format(e,i.tooltipFormat):r.format(e,i.displayFormats.datetime)}format(e,r){const n=this.options.time.displayFormats,s=this._unit,a=r||n[s];return this._adapter.format(e,a)}_tickFormatFunction(e,r,i,n){const s=this.options,a=s.ticks.callback;if(a)return li(a,[e,r,i],this);const o=s.time.displayFormats,l=this._unit,h=this._majorUnit,u=l&&o[l],d=h&&o[h],p=i[r],f=h&&d&&p&&p.major;return this._adapter.format(e,n||(f?d:u))}generateTickLabels(e){let r,i,n;for(r=0,i=e.length;r<i;++r)n=e[r],n.label=this._tickFormatFunction(n.value,r,e)}getDecimalForValue(e){return e===null?NaN:(e-this.min)/(this.max-this.min)}getPixelForValue(e){const r=this._offsets,i=this.getDecimalForValue(e);return this.getPixelForDecimal((r.start+i)*r.factor)}getValueForPixel(e){const r=this._offsets,i=this.getDecimalForPixel(e)/r.factor-r.end;return this.min+i*(this.max-this.min)}_getLabelSize(e){const r=this.options.ticks,i=this.ctx.measureText(e).width,n=kl(this.isHorizontal()?r.maxRotation:r.minRotation),s=Math.cos(n),a=Math.sin(n),o=this._resolveTickFontOptions(0).size;return{w:i*s+o*a,h:i*a+o*s}}_getLabelCapacity(e){const r=this.options.time,i=r.displayFormats,n=i[r.unit]||i.millisecond,s=this._tickFormatFunction(e,0,jX(this,[e],this._majorUnit),n),a=this._getLabelSize(s),o=Math.floor(this.isHorizontal()?this.width/a.w:this.height/a.h)-1;return o>0?o:1}getDataTimestamps(){let e=this._cache.data||[],r,i;if(e.length)return e;const n=this.getMatchingVisibleMetas();if(this._normalized&&n.length)return this._cache.data=n[0].controller.getAllParsedValues(this);for(r=0,i=n.length;r<i;++r)e=e.concat(n[r].controller.getAllParsedValues(this));return this._cache.data=this.normalize(e)}getLabelTimestamps(){const e=this._cache.labels||[];let r,i;if(e.length)return e;const n=this.getLabels();for(r=0,i=n.length;r<i;++r)e.push(GX(this,n[r]));return this._cache.labels=this._normalized?e:this.normalize(e)}normalize(e){return Vq(e.sort(UX))}}function UC(t,e,r){let i=0,n=t.length-1,s,a,o,l;r?(e>=t[i].pos&&e<=t[n].pos&&({lo:i,hi:n}=Th(t,"pos",e)),{pos:s,time:o}=t[i],{pos:a,time:l}=t[n]):(e>=t[i].time&&e<=t[n].time&&({lo:i,hi:n}=Th(t,"time",e)),{time:s,pos:o}=t[i],{time:a,pos:l}=t[n]);const h=a-s;return h?o+(l-o)*(e-s)/h:o}class ARe extends bM{static id="timeseries";static defaults=bM.defaults;constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const e=this._getTimestampsForTable(),r=this._table=this.buildLookupTable(e);this._minPos=UC(r,this.min),this._tableRange=UC(r,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){const{min:r,max:i}=this,n=[],s=[];let a,o,l,h,u;for(a=0,o=e.length;a<o;++a)h=e[a],h>=r&&h<=i&&n.push(h);if(n.length<2)return[{time:r,pos:0},{time:i,pos:1}];for(a=0,o=n.length;a<o;++a)u=n[a+1],l=n[a-1],h=n[a],Math.round((u+l)/2)!==h&&s.push({time:h,pos:a/(o-1)});return s}_generate(){const e=this.min,r=this.max;let i=super.getDataTimestamps();return(!i.includes(e)||!i.length)&&i.splice(0,0,e),(!i.includes(r)||i.length===1)&&i.push(r),i.sort((n,s)=>n-s)}_getTimestampsForTable(){let e=this._cache.all||[];if(e.length)return e;const r=this.getDataTimestamps(),i=this.getLabelTimestamps();return r.length&&i.length?e=this.normalize(r.concat(i)):e=r.length?r:i,e=this._cache.all=e,e}getDecimalForValue(e){return(UC(this._table,e)-this._minPos)/this._tableRange}getValueForPixel(e){const r=this._offsets,i=this.getDecimalForPixel(e)/r.factor-r.end;return UC(this._table,i*this._tableRange+this._minPos,!0)}}var MRe=Object.freeze({__proto__:null,CategoryScale:sRe,LinearScale:oRe,LogarithmicScale:hRe,RadialLinearScale:TRe,TimeScale:bM,TimeSeriesScale:ARe});const NRe=[LIe,aDe,tRe,MRe];DC.register(...NRe);var IRe=Object.defineProperty,_Re=Object.getOwnPropertyDescriptor,dc=(t,e,r,i)=>{for(var n=i>1?void 0:i?_Re(e,r):e,s=t.length-1,a;s>=0;s--)(a=t[s])&&(n=(i?a(e,r,n):a(n))||n);return i&&n&&IRe(e,r,n),n};let Go=class extends Nv{constructor(){super(),this.title="chart",this.legend=!1,this.height=458,this.smallTitle=!1,this.stepSize=1,this.chartType="line"}updateChart(){this.chart&&this.chart.data&&this.datasets&&this.datasets.length>0&&(this.chart.data.labels=this.labels,this.chart.data.datasets=this.datasets,this.chart.update())}buildChart(){let t=this.titleFont;this.smallTitle&&(t=this.fontBold),this.chart&&this.chart.destroy(),this.chart=new DC(this.shadowRoot?.querySelector("#chart"),{type:this.chartType,data:{labels:this.labels,datasets:this.datasets},options:{responsive:!0,maintainAspectRatio:!1,elements:{point:{borderColor:this.secondary,backgroundColor:this.secondary,pointStyle:"rect",radius:4}},scales:{x:{ticks:{font:this.smallFont,color:this.secondary},border:{color:this.secondary}},y:{min:0,ticks:{stepSize:this.stepSize,font:this.font,color:this.secondary},border:{color:this.secondary}}},layout:{autoPadding:!1},plugins:{tooltip:{titleFont:this.fontBold,bodyFont:this.font,titleColor:this.primary,displayColors:!1,borderColor:this.tertiary,borderWidth:1,cornerRadius:0},title:{display:!0,text:this.title,font:t,color:this.primary,align:"start"},legend:{display:this.legend,position:"bottom",maxHeight:40,labels:{color:this.secondary,font:this.mediumFont,pointStyle:"line",boxHeight:1}}}}})}connectedCallback(){super.connectedCallback(),!this.chart&&this.hasUpdated&&this.updateComplete.then(()=>this.buildChart())}disconnectedCallback(){super.disconnectedCallback(),this.chart&&(this.chart.destroy(),this.chart=null)}resize(){this.chart?.resize()}firstUpdated(){super.firstUpdated(),this.buildChart()}updated(t){t.has("currentTheme")&&this.chart&&this.buildChart()}render(){return L.html`
16837
+ <div class="chart-container" style="height: ${this.height}px;${this.width?` max-width: ${this.width}px;`:""}">
16838
+ <canvas id="chart" style="width: 100%; height: ${this.height}px;"></canvas>
16839
+ </div>
16828
16840
  `}};Go.styles=L.css`
16829
16841
  :host {
16830
- display: block; /* ensures the host takes up space */
16831
- /* Optionally, set explicit dimensions if needed */
16842
+ display: block;
16843
+ width: 100%;
16844
+ }
16845
+ .chart-container {
16846
+ position: relative;
16832
16847
  width: 100%;
16833
-
16834
16848
  }`,dc([V.property()],Go.prototype,"title",2),dc([V.property()],Go.prototype,"datasets",2),dc([V.property()],Go.prototype,"labels",2),dc([V.property({type:Boolean})],Go.prototype,"legend",2),dc([V.property({type:Boolean})],Go.prototype,"smallTitle",2),dc([V.property({type:Number})],Go.prototype,"height",2),dc([V.property({type:Number})],Go.prototype,"width",2),dc([V.property({type:Number})],Go.prototype,"stepSize",2),dc([V.property()],Go.prototype,"chartType",2),Go=dc([V.customElement("pb33f-chart")],Go);var DRe=Object.defineProperty,RRe=Object.getOwnPropertyDescriptor,Mh=(t,e,r,i)=>{for(var n=i>1?void 0:i?RRe(e,r):e,s=t.length-1,a;s>=0;s--)(a=t[s])&&(n=(i?a(e,r,n):a(n))||n);return i&&n&&DRe(e,r,n),n};let pc=class extends Nv{constructor(){super(),this._prevDatasets="",this._prevLabels="",this.colors=d$,this.width=300,this.height=300,this.id=crypto.randomUUID(),this.firstRun=!0}dataChanged(){const t=JSON.stringify(this.datasets?.map(r=>r.data)),e=JSON.stringify(this.labels);return t!==this._prevDatasets||e!==this._prevLabels?(this._prevDatasets=t,this._prevLabels=e,!0):!1}refresh(){this.chart.update()}firstUpdated(){super.firstUpdated()}updated(t){if(!(!this.chart||t.has("changesChart")||t.has("breakingChanges")||t.has("currentTheme")||this.dataChanged()))return;this.chart&&this.chart.destroy();const r=Iv();this.changesChart?this.colors=r?Cfe:wfe:this.breakingChanges?this.colors=r?Tfe:kfe:this.colors=r?xfe:d$,this.datasets.forEach(s=>{s.backgroundColor=this.colors,s.borderColor=this.background});let i=!1;this.title&&(i=!0);const n=this.firstRun?1e3:250;this.chart=new DC(this.shadowRoot?.querySelector("#chart-"+this.id),{type:"doughnut",data:{labels:this.labels,datasets:this.datasets},options:{animation:{duration:n},responsive:!0,maintainAspectRatio:!1,layout:{autoPadding:!1,padding:{top:0,bottom:0}},plugins:{tooltip:{titleFont:this.fontBold,bodyFont:this.font,titleColor:this.primary,displayColors:!1,borderColor:this.tertiary,borderWidth:1,cornerRadius:0},title:{display:i,text:this.title,font:this.titleFont,color:this.primary,align:"center"},legend:{display:this.showLegend,position:"right",maxHeight:40,labels:{color:this.secondary,font:this.mediumFont}}}}}),this.firstRun=!1}render(){return L.html`
16835
16849
  <canvas id="chart-${this.id}" style="width: ${this.width}px; height: ${this.height}px"></canvas>
16836
16850
  `}};Mh([V.property()],pc.prototype,"title",2),Mh([V.property()],pc.prototype,"datasets",2),Mh([V.property()],pc.prototype,"labels",2),Mh([V.property({type:Number})],pc.prototype,"width",2),Mh([V.property({type:Number})],pc.prototype,"height",2),Mh([V.property({type:Boolean})],pc.prototype,"changesChart",2),Mh([V.property({type:Boolean})],pc.prototype,"showLegend",2),Mh([V.property({type:Boolean})],pc.prototype,"breakingChanges",2),pc=Mh([V.customElement("pb33f-doughnut-chart")],pc);const PRe=L.css`
@@ -1,9 +1,9 @@
1
- import { _ as w, ar as F, as as Y, at as _, au as H, l as r, c as V, av as z, aw as U, ag as $, al as q, ah as P, af as K, ax as Q, ay as W, az as Z } from "./cowboy-components-B-_nREEs.js";
2
- import { G as B } from "./graph-CQfZU7JF.js";
3
- import { l as I } from "./layout-DWA7jiRR.js";
4
- import { i as b } from "./_baseUniq-BaFN6LLe.js";
5
- import { c as L } from "./clone-Ciuvzcw5.js";
6
- import { m as A } from "./_basePickBy-DutEHqAt.js";
1
+ import { _ as w, ar as F, as as Y, at as _, au as H, l as r, c as V, av as z, aw as U, ag as $, al as q, ah as P, af as K, ax as Q, ay as W, az as Z } from "./cowboy-components-Bg77T9d-.js";
2
+ import { G as B } from "./graph-DXbidQWz.js";
3
+ import { l as I } from "./layout-D2zY0T7Y.js";
4
+ import { i as b } from "./_baseUniq-CqLfUP_m.js";
5
+ import { c as L } from "./clone-ygSTXFFk.js";
6
+ import { m as A } from "./_basePickBy-CHhH8kjm.js";
7
7
  function h(e) {
8
8
  var t = {
9
9
  options: {