diff --git a/chrome-extension/dist.zip b/chrome-extension/dist.zip new file mode 100644 index 0000000..5b72cdf Binary files /dev/null and b/chrome-extension/dist.zip differ diff --git a/chrome-extension/dist/assets/devtools-11f8aa67.js b/chrome-extension/dist/assets/devtools-11f8aa67.js new file mode 100644 index 0000000..a366985 --- /dev/null +++ b/chrome-extension/dist/assets/devtools-11f8aa67.js @@ -0,0 +1 @@ +import"./modulepreload-polyfill-3cfb730f.js";try{chrome.devtools.panels.create("NextInspect","icon.png","src/pages/panel/index.html")}catch(e){console.log(e)} diff --git a/chrome-extension/dist/assets/devtools-6e5143ad.js b/chrome-extension/dist/assets/devtools-6e5143ad.js deleted file mode 100644 index 971b46f..0000000 --- a/chrome-extension/dist/assets/devtools-6e5143ad.js +++ /dev/null @@ -1 +0,0 @@ -import"./modulepreload-polyfill-3cfb730f.js";try{chrome.devtools.panels.create("NextInspect","icon.png","src/pages/panel/index.html"),chrome.devtools.network.onRequestFinished.addListener(function(e){const t={};e.request.httpVersion!=="chrome-extension"&&(t.method=e.request.method,t.protocol=e.request.httpVersion,t.size=e.response.bodySize,t.status=e.response.status,t.startTime=e.startedDateTime,t.time=e.time,t.urlEndpoint=e.request.url,t.type=e.response.content.mimeType,t.initiator=e._initiator,chrome.runtime.sendMessage(t))})}catch(e){console.log(e)} diff --git a/chrome-extension/dist/assets/index-2b3c72e0.css b/chrome-extension/dist/assets/index-8ab484eb.css similarity index 72% rename from chrome-extension/dist/assets/index-2b3c72e0.css rename to chrome-extension/dist/assets/index-8ab484eb.css index 803a09f..0fd4b66 100644 --- a/chrome-extension/dist/assets/index-2b3c72e0.css +++ b/chrome-extension/dist/assets/index-8ab484eb.css @@ -1 +1 @@ -*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.fixed{position:fixed}.m-3{margin:.75rem}.table{display:table}.grid{display:grid}.h-5{height:1.25rem}.bg-green-400{--tw-bg-opacity: 1;background-color:rgb(74 222 128 / var(--tw-bg-opacity))}:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400}body{background-color:#292a2d;color:#fff}tr:nth-child(even){background-color:#202124}table{border:1.5px solid blue;width:100%;text-align:left;border-collapse:collapse}th{border:1px solid rgb(74,76,80)}th,td{font-weight:400;border-right:1px solid rgb(144,143,143);padding:15px;font-size:small;max-width:10px;max-height:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}tr:hover:not(:first-child){background-color:#24245d}th:hover{background-color:#162266}.arrow{height:10px;width:10px;display:inline-block;-webkit-clip-path:polygon(0% 0%,50% 50%,0% 100%);clip-path:polygon(0% 0%,50% 50%,0% 100%);background-color:#f0f8ff;margin-right:5px}.arrowDown{height:10px;width:10px;display:inline-block;-webkit-clip-path:polygon(0% 50%,100% 50%,50% 100%);clip-path:polygon(0% 50%,100% 50%,50% 100%);background-color:#f0f8ff;margin-right:5px}.noPadding{padding:15px 15px 15px 0} +*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.mb-5{margin-bottom:1.25rem}.ml-auto{margin-left:auto}.flex{display:flex}.table{display:table}.grid{display:grid}.h-\[33vh\]{height:33vh}.h-\[67vh\]{height:67vh}.flex-col{flex-direction:column}.justify-center{justify-content:center}.gap-5{gap:1.25rem}.border-\[1px\]{border-width:1px}.border-b-\[1px\]{border-bottom-width:1px}.border-slate-400{--tw-border-opacity: 1;border-color:rgb(148 163 184 / var(--tw-border-opacity))}.bg-violet-800{--tw-bg-opacity: 1;background-color:rgb(91 33 182 / var(--tw-bg-opacity))}.p-2{padding:.5rem}.p-56{padding:14rem}.text-center{text-align:center}.text-lg{font-size:1.125rem;line-height:1.75rem}:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400}body{background-color:#292a2d;color:#fff}tr:nth-child(even){background-color:#202124}table{border:1.5px solid blue;width:100%;text-align:left;border-collapse:collapse}th{border:1px solid rgb(74,76,80)}th,td{font-weight:400;border-right:1px solid rgb(144,143,143);padding:15px;font-size:small;max-width:10px;max-height:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}tr:hover:not(:first-child){background-color:#24245d}th:hover{background-color:#162266}.arrow{height:10px;width:10px;display:inline-block;-webkit-clip-path:polygon(0% 0%,50% 50%,0% 100%);clip-path:polygon(0% 0%,50% 50%,0% 100%);background-color:#f0f8ff;margin-right:5px}.arrowDown{height:10px;width:10px;display:inline-block;-webkit-clip-path:polygon(0% 50%,100% 50%,50% 100%);clip-path:polygon(0% 50%,100% 50%,50% 100%);background-color:#f0f8ff;margin-right:5px}.noPadding{padding:15px 15px 15px 0} diff --git a/chrome-extension/dist/assets/panel-5c8ccea2.js b/chrome-extension/dist/assets/panel-5c8ccea2.js new file mode 100644 index 0000000..4d80d66 --- /dev/null +++ b/chrome-extension/dist/assets/panel-5c8ccea2.js @@ -0,0 +1,57 @@ +var Np=Object.defineProperty;var jp=(e,t,n)=>t in e?Np(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var z=(e,t,n)=>(jp(e,typeof t!="symbol"?t+"":t,n),n);import"./modulepreload-polyfill-3cfb730f.js";function Bp(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Af={exports:{}},Js={},If={exports:{}},F={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var vr=Symbol.for("react.element"),Hp=Symbol.for("react.portal"),Vp=Symbol.for("react.fragment"),Wp=Symbol.for("react.strict_mode"),$p=Symbol.for("react.profiler"),Up=Symbol.for("react.provider"),Yp=Symbol.for("react.context"),Kp=Symbol.for("react.forward_ref"),Qp=Symbol.for("react.suspense"),Xp=Symbol.for("react.memo"),Gp=Symbol.for("react.lazy"),hu=Symbol.iterator;function Zp(e){return e===null||typeof e!="object"?null:(e=hu&&e[hu]||e["@@iterator"],typeof e=="function"?e:null)}var Nf={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},jf=Object.assign,Bf={};function di(e,t,n){this.props=e,this.context=t,this.refs=Bf,this.updater=n||Nf}di.prototype.isReactComponent={};di.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};di.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Hf(){}Hf.prototype=di.prototype;function ia(e,t,n){this.props=e,this.context=t,this.refs=Bf,this.updater=n||Nf}var ra=ia.prototype=new Hf;ra.constructor=ia;jf(ra,di.prototype);ra.isPureReactComponent=!0;var du=Array.isArray,Vf=Object.prototype.hasOwnProperty,sa={current:null},Wf={key:!0,ref:!0,__self:!0,__source:!0};function $f(e,t,n){var i,r={},s=null,o=null;if(t!=null)for(i in t.ref!==void 0&&(o=t.ref),t.key!==void 0&&(s=""+t.key),t)Vf.call(t,i)&&!Wf.hasOwnProperty(i)&&(r[i]=t[i]);var l=arguments.length-2;if(l===1)r.children=n;else if(1>>1,Y=M[W];if(0>>1;Wr(xe,D))jtr(Cr,xe)?(M[W]=Cr,M[jt]=D,W=jt):(M[W]=xe,M[Nt]=D,W=Nt);else if(jtr(Cr,D))M[W]=Cr,M[jt]=D,W=jt;else break t}}return O}function r(M,O){var D=M.sortIndex-O.sortIndex;return D!==0?D:M.id-O.id}if(typeof performance=="object"&&typeof performance.now=="function"){var s=performance;e.unstable_now=function(){return s.now()}}else{var o=Date,l=o.now();e.unstable_now=function(){return o.now()-l}}var a=[],u=[],c=1,f=null,h=3,d=!1,y=!1,m=!1,x=typeof setTimeout=="function"?setTimeout:null,p=typeof clearTimeout=="function"?clearTimeout:null,g=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function v(M){for(var O=n(u);O!==null;){if(O.callback===null)i(u);else if(O.startTime<=M)i(u),O.sortIndex=O.expirationTime,t(a,O);else break;O=n(u)}}function _(M){if(m=!1,v(M),!y)if(n(a)!==null)y=!0,it(w);else{var O=n(u);O!==null&&yt(_,O.startTime-M)}}function w(M,O){y=!1,m&&(m=!1,p(b),b=-1),d=!0;var D=h;try{for(v(O),f=n(a);f!==null&&(!(f.expirationTime>O)||M&&!L());){var W=f.callback;if(typeof W=="function"){f.callback=null,h=f.priorityLevel;var Y=W(f.expirationTime<=O);O=e.unstable_now(),typeof Y=="function"?f.callback=Y:f===n(a)&&i(a),v(O)}else i(a);f=n(a)}if(f!==null)var ue=!0;else{var Nt=n(u);Nt!==null&&yt(_,Nt.startTime-O),ue=!1}return ue}finally{f=null,h=D,d=!1}}var k=!1,S=null,b=-1,T=5,E=-1;function L(){return!(e.unstable_now()-EM||125W?(M.sortIndex=D,t(u,M),n(a)===null&&M===n(u)&&(m?(p(b),b=-1):m=!0,yt(_,D-W))):(M.sortIndex=Y,t(a,M),y||d||(y=!0,it(w))),M},e.unstable_shouldYield=L,e.unstable_wrapCallback=function(M){var O=h;return function(){var D=h;h=O;try{return M.apply(this,arguments)}finally{h=D}}}})(Xf);Qf.exports=Xf;var ag=Qf.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Gf=Ct,$t=ag;function C(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),nl=Object.prototype.hasOwnProperty,ug=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,gu={},mu={};function cg(e){return nl.call(mu,e)?!0:nl.call(gu,e)?!1:ug.test(e)?mu[e]=!0:(gu[e]=!0,!1)}function fg(e,t,n,i){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return i?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function hg(e,t,n,i){if(t===null||typeof t>"u"||fg(e,t,n,i))return!0;if(i)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Et(e,t,n,i,r,s,o){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=i,this.attributeNamespace=r,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=s,this.removeEmptyString=o}var gt={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){gt[e]=new Et(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];gt[t]=new Et(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){gt[e]=new Et(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){gt[e]=new Et(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){gt[e]=new Et(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){gt[e]=new Et(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){gt[e]=new Et(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){gt[e]=new Et(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){gt[e]=new Et(e,5,!1,e.toLowerCase(),null,!1,!1)});var la=/[\-:]([a-z])/g;function aa(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(la,aa);gt[t]=new Et(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(la,aa);gt[t]=new Et(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(la,aa);gt[t]=new Et(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){gt[e]=new Et(e,1,!1,e.toLowerCase(),null,!1,!1)});gt.xlinkHref=new Et("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){gt[e]=new Et(e,1,!1,e.toLowerCase(),null,!0,!0)});function ua(e,t,n,i){var r=gt.hasOwnProperty(t)?gt[t]:null;(r!==null?r.type!==0:i||!(2l||r[o]!==s[l]){var a=` +`+r[o].replace(" at new "," at ");return e.displayName&&a.includes("")&&(a=a.replace("",e.displayName)),a}while(1<=o&&0<=l);break}}}finally{wo=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Ti(e):""}function dg(e){switch(e.tag){case 5:return Ti(e.type);case 16:return Ti("Lazy");case 13:return Ti("Suspense");case 19:return Ti("SuspenseList");case 0:case 2:case 15:return e=ko(e.type,!1),e;case 11:return e=ko(e.type.render,!1),e;case 1:return e=ko(e.type,!0),e;default:return""}}function ol(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Nn:return"Fragment";case In:return"Portal";case il:return"Profiler";case ca:return"StrictMode";case rl:return"Suspense";case sl:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case qf:return(e.displayName||"Context")+".Consumer";case Jf:return(e._context.displayName||"Context")+".Provider";case fa:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case ha:return t=e.displayName||null,t!==null?t:ol(e.type)||"Memo";case Ae:t=e._payload,e=e._init;try{return ol(e(t))}catch{}}return null}function pg(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ol(t);case 8:return t===ca?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function nn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function eh(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function gg(e){var t=eh(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),i=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var r=n.get,s=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return r.call(this)},set:function(o){i=""+o,s.call(this,o)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return i},setValue:function(o){i=""+o},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Er(e){e._valueTracker||(e._valueTracker=gg(e))}function nh(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),i="";return e&&(i=eh(e)?e.checked?"true":"false":e.value),e=i,e!==n?(t.setValue(e),!0):!1}function xs(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function ll(e,t){var n=t.checked;return tt({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function vu(e,t){var n=t.defaultValue==null?"":t.defaultValue,i=t.checked!=null?t.checked:t.defaultChecked;n=nn(t.value!=null?t.value:n),e._wrapperState={initialChecked:i,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function ih(e,t){t=t.checked,t!=null&&ua(e,"checked",t,!1)}function al(e,t){ih(e,t);var n=nn(t.value),i=t.type;if(n!=null)i==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(i==="submit"||i==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?ul(e,t.type,n):t.hasOwnProperty("defaultValue")&&ul(e,t.type,nn(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function xu(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var i=t.type;if(!(i!=="submit"&&i!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function ul(e,t,n){(t!=="number"||xs(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Li=Array.isArray;function Zn(e,t,n,i){if(e=e.options,t){t={};for(var r=0;r"+t.valueOf().toString()+"",t=Tr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Gi(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Ai={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},mg=["Webkit","ms","Moz","O"];Object.keys(Ai).forEach(function(e){mg.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Ai[t]=Ai[e]})});function lh(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Ai.hasOwnProperty(e)&&Ai[e]?(""+t).trim():t+"px"}function ah(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var i=n.indexOf("--")===0,r=lh(n,t[n],i);n==="float"&&(n="cssFloat"),i?e.setProperty(n,r):e[n]=r}}var yg=tt({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function hl(e,t){if(t){if(yg[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(C(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(C(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(C(61))}if(t.style!=null&&typeof t.style!="object")throw Error(C(62))}}function dl(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var pl=null;function da(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var gl=null,Jn=null,qn=null;function ku(e){if(e=wr(e)){if(typeof gl!="function")throw Error(C(280));var t=e.stateNode;t&&(t=io(t),gl(e.stateNode,e.type,t))}}function uh(e){Jn?qn?qn.push(e):qn=[e]:Jn=e}function ch(){if(Jn){var e=Jn,t=qn;if(qn=Jn=null,ku(e),t)for(e=0;e>>=0,e===0?32:31-(Eg(e)/Tg|0)|0}var Lr=64,Or=4194304;function Oi(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Ss(e,t){var n=e.pendingLanes;if(n===0)return 0;var i=0,r=e.suspendedLanes,s=e.pingedLanes,o=n&268435455;if(o!==0){var l=o&~r;l!==0?i=Oi(l):(s&=o,s!==0&&(i=Oi(s)))}else o=n&~r,o!==0?i=Oi(o):s!==0&&(i=Oi(s));if(i===0)return 0;if(t!==0&&t!==i&&!(t&r)&&(r=i&-i,s=t&-t,r>=s||r===16&&(s&4194240)!==0))return t;if(i&4&&(i|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=i;0n;n++)t.push(e);return t}function xr(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-oe(t),e[t]=n}function zg(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var i=e.eventTimes;for(e=e.expirationTimes;0=Ni),Ou=String.fromCharCode(32),Du=!1;function Lh(e,t){switch(e){case"keyup":return lm.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Oh(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var jn=!1;function um(e,t){switch(e){case"compositionend":return Oh(t);case"keypress":return t.which!==32?null:(Du=!0,Ou);case"textInput":return e=t.data,e===Ou&&Du?null:e;default:return null}}function cm(e,t){if(jn)return e==="compositionend"||!wa&&Lh(e,t)?(e=Eh(),ss=va=Be=null,jn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=i}t:{for(;n;){if(n.nextSibling){n=n.nextSibling;break t}n=n.parentNode}n=void 0}n=Au(n)}}function Fh(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Fh(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Ah(){for(var e=window,t=xs();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=xs(e.document)}return t}function ka(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function xm(e){var t=Ah(),n=e.focusedElem,i=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Fh(n.ownerDocument.documentElement,n)){if(i!==null&&ka(n)){if(t=i.start,e=i.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var r=n.textContent.length,s=Math.min(i.start,r);i=i.end===void 0?s:Math.min(i.end,r),!e.extend&&s>i&&(r=i,i=s,s=r),r=Iu(n,s);var o=Iu(n,i);r&&o&&(e.rangeCount!==1||e.anchorNode!==r.node||e.anchorOffset!==r.offset||e.focusNode!==o.node||e.focusOffset!==o.offset)&&(t=t.createRange(),t.setStart(r.node,r.offset),e.removeAllRanges(),s>i?(e.addRange(t),e.extend(o.node,o.offset)):(t.setEnd(o.node,o.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Bn=null,wl=null,Bi=null,kl=!1;function Nu(e,t,n){var i=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;kl||Bn==null||Bn!==xs(i)||(i=Bn,"selectionStart"in i&&ka(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),Bi&&nr(Bi,i)||(Bi=i,i=Ms(wl,"onSelect"),0Wn||(e.current=El[Wn],El[Wn]=null,Wn--)}function U(e,t){Wn++,El[Wn]=e.current,e.current=t}var rn={},kt=an(rn),Rt=an(!1),bn=rn;function si(e,t){var n=e.type.contextTypes;if(!n)return rn;var i=e.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===t)return i.__reactInternalMemoizedMaskedChildContext;var r={},s;for(s in n)r[s]=t[s];return i&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=r),r}function Ft(e){return e=e.childContextTypes,e!=null}function Es(){Q(Rt),Q(kt)}function Uu(e,t,n){if(kt.current!==rn)throw Error(C(168));U(kt,t),U(Rt,n)}function Uh(e,t,n){var i=e.stateNode;if(t=t.childContextTypes,typeof i.getChildContext!="function")return n;i=i.getChildContext();for(var r in i)if(!(r in t))throw Error(C(108,pg(e)||"Unknown",r));return tt({},n,i)}function Ts(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||rn,bn=kt.current,U(kt,e),U(Rt,Rt.current),!0}function Yu(e,t,n){var i=e.stateNode;if(!i)throw Error(C(169));n?(e=Uh(e,t,bn),i.__reactInternalMemoizedMergedChildContext=e,Q(Rt),Q(kt),U(kt,e)):Q(Rt),U(Rt,n)}var be=null,ro=!1,Ao=!1;function Yh(e){be===null?be=[e]:be.push(e)}function Om(e){ro=!0,Yh(e)}function un(){if(!Ao&&be!==null){Ao=!0;var e=0,t=H;try{var n=be;for(H=1;e>=o,r-=o,Me=1<<32-oe(t)+r|n<b?(T=S,S=null):T=S.sibling;var E=h(p,S,v[b],_);if(E===null){S===null&&(S=T);break}e&&S&&E.alternate===null&&t(p,S),g=s(E,g,b),k===null?w=E:k.sibling=E,k=E,S=T}if(b===v.length)return n(p,S),X&&pn(p,b),w;if(S===null){for(;bb?(T=S,S=null):T=S.sibling;var L=h(p,S,E.value,_);if(L===null){S===null&&(S=T);break}e&&S&&L.alternate===null&&t(p,S),g=s(L,g,b),k===null?w=L:k.sibling=L,k=L,S=T}if(E.done)return n(p,S),X&&pn(p,b),w;if(S===null){for(;!E.done;b++,E=v.next())E=f(p,E.value,_),E!==null&&(g=s(E,g,b),k===null?w=E:k.sibling=E,k=E);return X&&pn(p,b),w}for(S=i(p,S);!E.done;b++,E=v.next())E=d(S,p,b,E.value,_),E!==null&&(e&&E.alternate!==null&&S.delete(E.key===null?b:E.key),g=s(E,g,b),k===null?w=E:k.sibling=E,k=E);return e&&S.forEach(function(R){return t(p,R)}),X&&pn(p,b),w}function x(p,g,v,_){if(typeof v=="object"&&v!==null&&v.type===Nn&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case Pr:t:{for(var w=v.key,k=g;k!==null;){if(k.key===w){if(w=v.type,w===Nn){if(k.tag===7){n(p,k.sibling),g=r(k,v.props.children),g.return=p,p=g;break t}}else if(k.elementType===w||typeof w=="object"&&w!==null&&w.$$typeof===Ae&&qu(w)===k.type){n(p,k.sibling),g=r(k,v.props),g.ref=wi(p,k,v),g.return=p,p=g;break t}n(p,k);break}else t(p,k);k=k.sibling}v.type===Nn?(g=wn(v.props.children,p.mode,_,v.key),g.return=p,p=g):(_=ds(v.type,v.key,v.props,null,p.mode,_),_.ref=wi(p,g,v),_.return=p,p=_)}return o(p);case In:t:{for(k=v.key;g!==null;){if(g.key===k)if(g.tag===4&&g.stateNode.containerInfo===v.containerInfo&&g.stateNode.implementation===v.implementation){n(p,g.sibling),g=r(g,v.children||[]),g.return=p,p=g;break t}else{n(p,g);break}else t(p,g);g=g.sibling}g=$o(v,p.mode,_),g.return=p,p=g}return o(p);case Ae:return k=v._init,x(p,g,k(v._payload),_)}if(Li(v))return y(p,g,v,_);if(mi(v))return m(p,g,v,_);Nr(p,v)}return typeof v=="string"&&v!==""||typeof v=="number"?(v=""+v,g!==null&&g.tag===6?(n(p,g.sibling),g=r(g,v),g.return=p,p=g):(n(p,g),g=Wo(v,p.mode,_),g.return=p,p=g),o(p)):n(p,g)}return x}var li=td(!0),ed=td(!1),kr={},ye=an(kr),or=an(kr),lr=an(kr);function xn(e){if(e===kr)throw Error(C(174));return e}function Oa(e,t){switch(U(lr,t),U(or,e),U(ye,kr),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:fl(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=fl(t,e)}Q(ye),U(ye,t)}function ai(){Q(ye),Q(or),Q(lr)}function nd(e){xn(lr.current);var t=xn(ye.current),n=fl(t,e.type);t!==n&&(U(or,e),U(ye,n))}function Da(e){or.current===e&&(Q(ye),Q(or))}var J=an(0);function Fs(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Io=[];function za(){for(var e=0;en?n:4,e(!0);var i=No.transition;No.transition={};try{e(!1),t()}finally{H=n,No.transition=i}}function vd(){return te().memoizedState}function Fm(e,t,n){var i=Je(e);if(n={lane:i,action:n,hasEagerState:!1,eagerState:null,next:null},xd(e))_d(t,n);else if(n=Gh(e,t,n,i),n!==null){var r=Mt();le(n,e,i,r),wd(n,t,i)}}function Am(e,t,n){var i=Je(e),r={lane:i,action:n,hasEagerState:!1,eagerState:null,next:null};if(xd(e))_d(t,r);else{var s=e.alternate;if(e.lanes===0&&(s===null||s.lanes===0)&&(s=t.lastRenderedReducer,s!==null))try{var o=t.lastRenderedState,l=s(o,n);if(r.hasEagerState=!0,r.eagerState=l,ae(l,o)){var a=t.interleaved;a===null?(r.next=r,Ta(t)):(r.next=a.next,a.next=r),t.interleaved=r;return}}catch{}finally{}n=Gh(e,t,r,i),n!==null&&(r=Mt(),le(n,e,i,r),wd(n,t,i))}}function xd(e){var t=e.alternate;return e===q||t!==null&&t===q}function _d(e,t){Hi=As=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function wd(e,t,n){if(n&4194240){var i=t.lanes;i&=e.pendingLanes,n|=i,t.lanes=n,ga(e,n)}}var Is={readContext:qt,useCallback:vt,useContext:vt,useEffect:vt,useImperativeHandle:vt,useInsertionEffect:vt,useLayoutEffect:vt,useMemo:vt,useReducer:vt,useRef:vt,useState:vt,useDebugValue:vt,useDeferredValue:vt,useTransition:vt,useMutableSource:vt,useSyncExternalStore:vt,useId:vt,unstable_isNewReconciler:!1},Im={readContext:qt,useCallback:function(e,t){return he().memoizedState=[e,t===void 0?null:t],e},useContext:qt,useEffect:ec,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,us(4194308,4,dd.bind(null,t,e),n)},useLayoutEffect:function(e,t){return us(4194308,4,e,t)},useInsertionEffect:function(e,t){return us(4,2,e,t)},useMemo:function(e,t){var n=he();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var i=he();return t=n!==void 0?n(t):t,i.memoizedState=i.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},i.queue=e,e=e.dispatch=Fm.bind(null,q,e),[i.memoizedState,e]},useRef:function(e){var t=he();return e={current:e},t.memoizedState=e},useState:tc,useDebugValue:Na,useDeferredValue:function(e){return he().memoizedState=e},useTransition:function(){var e=tc(!1),t=e[0];return e=Rm.bind(null,e[1]),he().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var i=q,r=he();if(X){if(n===void 0)throw Error(C(407));n=n()}else{if(n=t(),ht===null)throw Error(C(349));Mn&30||sd(i,t,n)}r.memoizedState=n;var s={value:n,getSnapshot:t};return r.queue=s,ec(ld.bind(null,i,s,e),[e]),i.flags|=2048,cr(9,od.bind(null,i,s,n,t),void 0,null),n},useId:function(){var e=he(),t=ht.identifierPrefix;if(X){var n=Pe,i=Me;n=(i&~(1<<32-oe(i)-1)).toString(32)+n,t=":"+t+"R"+n,n=ar++,0<\/script>",e=e.removeChild(e.firstChild)):typeof i.is=="string"?e=o.createElement(n,{is:i.is}):(e=o.createElement(n),n==="select"&&(o=e,i.multiple?o.multiple=!0:i.size&&(o.size=i.size))):e=o.createElementNS(e,n),e[ge]=t,e[sr]=i,Ld(e,t,!1,!1),t.stateNode=e;t:{switch(o=dl(n,i),n){case"dialog":K("cancel",e),K("close",e),r=i;break;case"iframe":case"object":case"embed":K("load",e),r=i;break;case"video":case"audio":for(r=0;rci&&(t.flags|=128,i=!0,ki(s,!1),t.lanes=4194304)}else{if(!i)if(e=Fs(o),e!==null){if(t.flags|=128,i=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),ki(s,!0),s.tail===null&&s.tailMode==="hidden"&&!o.alternate&&!X)return xt(t),null}else 2*rt()-s.renderingStartTime>ci&&n!==1073741824&&(t.flags|=128,i=!0,ki(s,!1),t.lanes=4194304);s.isBackwards?(o.sibling=t.child,t.child=o):(n=s.last,n!==null?n.sibling=o:t.child=o,s.last=o)}return s.tail!==null?(t=s.tail,s.rendering=t,s.tail=t.sibling,s.renderingStartTime=rt(),t.sibling=null,n=J.current,U(J,i?n&1|2:n&1),t):(xt(t),null);case 22:case 23:return $a(),i=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==i&&(t.flags|=8192),i&&t.mode&1?Ht&1073741824&&(xt(t),t.subtreeFlags&6&&(t.flags|=8192)):xt(t),null;case 24:return null;case 25:return null}throw Error(C(156,t.tag))}function Um(e,t){switch(ba(t),t.tag){case 1:return Ft(t.type)&&Es(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ai(),Q(Rt),Q(kt),za(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Da(t),null;case 13:if(Q(J),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(C(340));oi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Q(J),null;case 4:return ai(),null;case 10:return Ea(t.type._context),null;case 22:case 23:return $a(),null;case 24:return null;default:return null}}var Br=!1,wt=!1,Ym=typeof WeakSet=="function"?WeakSet:Set,P=null;function Kn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(i){et(e,t,i)}else n.current=null}function Bl(e,t,n){try{n()}catch(i){et(e,t,i)}}var cc=!1;function Km(e,t){if(Sl=bs,e=Ah(),ka(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else t:{n=(n=e.ownerDocument)&&n.defaultView||window;var i=n.getSelection&&n.getSelection();if(i&&i.rangeCount!==0){n=i.anchorNode;var r=i.anchorOffset,s=i.focusNode;i=i.focusOffset;try{n.nodeType,s.nodeType}catch{n=null;break t}var o=0,l=-1,a=-1,u=0,c=0,f=e,h=null;e:for(;;){for(var d;f!==n||r!==0&&f.nodeType!==3||(l=o+r),f!==s||i!==0&&f.nodeType!==3||(a=o+i),f.nodeType===3&&(o+=f.nodeValue.length),(d=f.firstChild)!==null;)h=f,f=d;for(;;){if(f===e)break e;if(h===n&&++u===r&&(l=o),h===s&&++c===i&&(a=o),(d=f.nextSibling)!==null)break;f=h,h=f.parentNode}f=d}n=l===-1||a===-1?null:{start:l,end:a}}else n=null}n=n||{start:0,end:0}}else n=null;for(bl={focusedElem:e,selectionRange:n},bs=!1,P=t;P!==null;)if(t=P,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,P=e;else for(;P!==null;){t=P;try{var y=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(y!==null){var m=y.memoizedProps,x=y.memoizedState,p=t.stateNode,g=p.getSnapshotBeforeUpdate(t.elementType===t.type?m:ne(t.type,m),x);p.__reactInternalSnapshotBeforeUpdate=g}break;case 3:var v=t.stateNode.containerInfo;v.nodeType===1?v.textContent="":v.nodeType===9&&v.documentElement&&v.removeChild(v.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(C(163))}}catch(_){et(t,t.return,_)}if(e=t.sibling,e!==null){e.return=t.return,P=e;break}P=t.return}return y=cc,cc=!1,y}function Vi(e,t,n){var i=t.updateQueue;if(i=i!==null?i.lastEffect:null,i!==null){var r=i=i.next;do{if((r.tag&e)===e){var s=r.destroy;r.destroy=void 0,s!==void 0&&Bl(t,n,s)}r=r.next}while(r!==i)}}function lo(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var i=n.create;n.destroy=i()}n=n.next}while(n!==t)}}function Hl(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function zd(e){var t=e.alternate;t!==null&&(e.alternate=null,zd(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[ge],delete t[sr],delete t[Pl],delete t[Tm],delete t[Lm])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Rd(e){return e.tag===5||e.tag===3||e.tag===4}function fc(e){t:for(;;){for(;e.sibling===null;){if(e.return===null||Rd(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue t;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Vl(e,t,n){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Ps));else if(i!==4&&(e=e.child,e!==null))for(Vl(e,t,n),e=e.sibling;e!==null;)Vl(e,t,n),e=e.sibling}function Wl(e,t,n){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(i!==4&&(e=e.child,e!==null))for(Wl(e,t,n),e=e.sibling;e!==null;)Wl(e,t,n),e=e.sibling}var dt=null,ie=!1;function Re(e,t,n){for(n=n.child;n!==null;)Fd(e,t,n),n=n.sibling}function Fd(e,t,n){if(me&&typeof me.onCommitFiberUnmount=="function")try{me.onCommitFiberUnmount(qs,n)}catch{}switch(n.tag){case 5:wt||Kn(n,t);case 6:var i=dt,r=ie;dt=null,Re(e,t,n),dt=i,ie=r,dt!==null&&(ie?(e=dt,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):dt.removeChild(n.stateNode));break;case 18:dt!==null&&(ie?(e=dt,n=n.stateNode,e.nodeType===8?Fo(e.parentNode,n):e.nodeType===1&&Fo(e,n),tr(e)):Fo(dt,n.stateNode));break;case 4:i=dt,r=ie,dt=n.stateNode.containerInfo,ie=!0,Re(e,t,n),dt=i,ie=r;break;case 0:case 11:case 14:case 15:if(!wt&&(i=n.updateQueue,i!==null&&(i=i.lastEffect,i!==null))){r=i=i.next;do{var s=r,o=s.destroy;s=s.tag,o!==void 0&&(s&2||s&4)&&Bl(n,t,o),r=r.next}while(r!==i)}Re(e,t,n);break;case 1:if(!wt&&(Kn(n,t),i=n.stateNode,typeof i.componentWillUnmount=="function"))try{i.props=n.memoizedProps,i.state=n.memoizedState,i.componentWillUnmount()}catch(l){et(n,t,l)}Re(e,t,n);break;case 21:Re(e,t,n);break;case 22:n.mode&1?(wt=(i=wt)||n.memoizedState!==null,Re(e,t,n),wt=i):Re(e,t,n);break;default:Re(e,t,n)}}function hc(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Ym),t.forEach(function(i){var r=n0.bind(null,e,i);n.has(i)||(n.add(i),i.then(r,r))})}}function ee(e,t){var n=t.deletions;if(n!==null)for(var i=0;ir&&(r=o),i&=~s}if(i=r,i=rt()-i,i=(120>i?120:480>i?480:1080>i?1080:1920>i?1920:3e3>i?3e3:4320>i?4320:1960*Xm(i/1960))-i,10e?16:e,He===null)var i=!1;else{if(e=He,He=null,Bs=0,A&6)throw Error(C(331));var r=A;for(A|=4,P=e.current;P!==null;){var s=P,o=s.child;if(P.flags&16){var l=s.deletions;if(l!==null){for(var a=0;art()-Va?_n(e,0):Ha|=n),At(e,t)}function Wd(e,t){t===0&&(e.mode&1?(t=Or,Or<<=1,!(Or&130023424)&&(Or=4194304)):t=1);var n=Mt();e=Oe(e,t),e!==null&&(xr(e,t,n),At(e,n))}function e0(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Wd(e,n)}function n0(e,t){var n=0;switch(e.tag){case 13:var i=e.stateNode,r=e.memoizedState;r!==null&&(n=r.retryLane);break;case 19:i=e.stateNode;break;default:throw Error(C(314))}i!==null&&i.delete(t),Wd(e,n)}var $d;$d=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||Rt.current)Dt=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return Dt=!1,Wm(e,t,n);Dt=!!(e.flags&131072)}else Dt=!1,X&&t.flags&1048576&&Kh(t,Os,t.index);switch(t.lanes=0,t.tag){case 2:var i=t.type;cs(e,t),e=t.pendingProps;var r=si(t,kt.current);ei(t,n),r=Fa(null,t,i,e,r,n);var s=Aa();return t.flags|=1,typeof r=="object"&&r!==null&&typeof r.render=="function"&&r.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Ft(i)?(s=!0,Ts(t)):s=!1,t.memoizedState=r.state!==null&&r.state!==void 0?r.state:null,La(t),r.updater=so,t.stateNode=r,r._reactInternals=t,zl(t,i,e,n),t=Al(null,t,i,!0,s,n)):(t.tag=0,X&&s&&Sa(t),bt(null,t,r,n),t=t.child),t;case 16:i=t.elementType;t:{switch(cs(e,t),e=t.pendingProps,r=i._init,i=r(i._payload),t.type=i,r=t.tag=r0(i),e=ne(i,e),r){case 0:t=Fl(null,t,i,e,n);break t;case 1:t=lc(null,t,i,e,n);break t;case 11:t=sc(null,t,i,e,n);break t;case 14:t=oc(null,t,i,ne(i.type,e),n);break t}throw Error(C(306,i,""))}return t;case 0:return i=t.type,r=t.pendingProps,r=t.elementType===i?r:ne(i,r),Fl(e,t,i,r,n);case 1:return i=t.type,r=t.pendingProps,r=t.elementType===i?r:ne(i,r),lc(e,t,i,r,n);case 3:t:{if(Pd(t),e===null)throw Error(C(387));i=t.pendingProps,s=t.memoizedState,r=s.element,Zh(e,t),Rs(t,i,null,n);var o=t.memoizedState;if(i=o.element,s.isDehydrated)if(s={element:i,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},t.updateQueue.baseState=s,t.memoizedState=s,t.flags&256){r=ui(Error(C(423)),t),t=ac(e,t,i,n,r);break t}else if(i!==r){r=ui(Error(C(424)),t),t=ac(e,t,i,n,r);break t}else for(Vt=Xe(t.stateNode.containerInfo.firstChild),Wt=t,X=!0,re=null,n=ed(t,null,i,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(oi(),i===r){t=De(e,t,n);break t}bt(e,t,i,n)}t=t.child}return t;case 5:return nd(t),e===null&&Ll(t),i=t.type,r=t.pendingProps,s=e!==null?e.memoizedProps:null,o=r.children,Cl(i,r)?o=null:s!==null&&Cl(i,s)&&(t.flags|=32),Md(e,t),bt(e,t,o,n),t.child;case 6:return e===null&&Ll(t),null;case 13:return Ed(e,t,n);case 4:return Oa(t,t.stateNode.containerInfo),i=t.pendingProps,e===null?t.child=li(t,null,i,n):bt(e,t,i,n),t.child;case 11:return i=t.type,r=t.pendingProps,r=t.elementType===i?r:ne(i,r),sc(e,t,i,r,n);case 7:return bt(e,t,t.pendingProps,n),t.child;case 8:return bt(e,t,t.pendingProps.children,n),t.child;case 12:return bt(e,t,t.pendingProps.children,n),t.child;case 10:t:{if(i=t.type._context,r=t.pendingProps,s=t.memoizedProps,o=r.value,U(Ds,i._currentValue),i._currentValue=o,s!==null)if(ae(s.value,o)){if(s.children===r.children&&!Rt.current){t=De(e,t,n);break t}}else for(s=t.child,s!==null&&(s.return=t);s!==null;){var l=s.dependencies;if(l!==null){o=s.child;for(var a=l.firstContext;a!==null;){if(a.context===i){if(s.tag===1){a=Ee(-1,n&-n),a.tag=2;var u=s.updateQueue;if(u!==null){u=u.shared;var c=u.pending;c===null?a.next=a:(a.next=c.next,c.next=a),u.pending=a}}s.lanes|=n,a=s.alternate,a!==null&&(a.lanes|=n),Ol(s.return,n,t),l.lanes|=n;break}a=a.next}}else if(s.tag===10)o=s.type===t.type?null:s.child;else if(s.tag===18){if(o=s.return,o===null)throw Error(C(341));o.lanes|=n,l=o.alternate,l!==null&&(l.lanes|=n),Ol(o,n,t),o=s.sibling}else o=s.child;if(o!==null)o.return=s;else for(o=s;o!==null;){if(o===t){o=null;break}if(s=o.sibling,s!==null){s.return=o.return,o=s;break}o=o.return}s=o}bt(e,t,r.children,n),t=t.child}return t;case 9:return r=t.type,i=t.pendingProps.children,ei(t,n),r=qt(r),i=i(r),t.flags|=1,bt(e,t,i,n),t.child;case 14:return i=t.type,r=ne(i,t.pendingProps),r=ne(i.type,r),oc(e,t,i,r,n);case 15:return bd(e,t,t.type,t.pendingProps,n);case 17:return i=t.type,r=t.pendingProps,r=t.elementType===i?r:ne(i,r),cs(e,t),t.tag=1,Ft(i)?(e=!0,Ts(t)):e=!1,ei(t,n),qh(t,i,r),zl(t,i,r,n),Al(null,t,i,!0,e,n);case 19:return Td(e,t,n);case 22:return Cd(e,t,n)}throw Error(C(156,t.tag))};function Ud(e,t){return yh(e,t)}function i0(e,t,n,i){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Gt(e,t,n,i){return new i0(e,t,n,i)}function Ya(e){return e=e.prototype,!(!e||!e.isReactComponent)}function r0(e){if(typeof e=="function")return Ya(e)?1:0;if(e!=null){if(e=e.$$typeof,e===fa)return 11;if(e===ha)return 14}return 2}function qe(e,t){var n=e.alternate;return n===null?(n=Gt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function ds(e,t,n,i,r,s){var o=2;if(i=e,typeof e=="function")Ya(e)&&(o=1);else if(typeof e=="string")o=5;else t:switch(e){case Nn:return wn(n.children,r,s,t);case ca:o=8,r|=8;break;case il:return e=Gt(12,n,t,r|2),e.elementType=il,e.lanes=s,e;case rl:return e=Gt(13,n,t,r),e.elementType=rl,e.lanes=s,e;case sl:return e=Gt(19,n,t,r),e.elementType=sl,e.lanes=s,e;case th:return uo(n,r,s,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Jf:o=10;break t;case qf:o=9;break t;case fa:o=11;break t;case ha:o=14;break t;case Ae:o=16,i=null;break t}throw Error(C(130,e==null?e:typeof e,""))}return t=Gt(o,n,t,r),t.elementType=e,t.type=i,t.lanes=s,t}function wn(e,t,n,i){return e=Gt(7,e,i,t),e.lanes=n,e}function uo(e,t,n,i){return e=Gt(22,e,i,t),e.elementType=th,e.lanes=n,e.stateNode={isHidden:!1},e}function Wo(e,t,n){return e=Gt(6,e,null,t),e.lanes=n,e}function $o(e,t,n){return t=Gt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function s0(e,t,n,i,r){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=bo(0),this.expirationTimes=bo(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=bo(0),this.identifierPrefix=i,this.onRecoverableError=r,this.mutableSourceEagerHydrationData=null}function Ka(e,t,n,i,r,s,o,l,a){return e=new s0(e,t,n,l,a),t===1?(t=1,s===!0&&(t|=8)):t=0,s=Gt(3,null,null,t),e.current=s,s.stateNode=e,s.memoizedState={element:i,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},La(s),e}function o0(e,t,n){var i=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Xd)}catch(e){console.error(e)}}Xd(),Kf.exports=Ut;var f0=Kf.exports,Gd,_c=f0;Gd=_c.createRoot,_c.hydrateRoot;const h0=({data:e})=>N.jsxs("tr",{children:[N.jsx("td",{children:e.name}),N.jsx("td",{children:e.method}),N.jsx("td",{children:e.status}),N.jsx("td",{children:e.protocol}),N.jsxs("td",{children:[e.duration," ms"]}),N.jsx("td",{children:e.originatingService}),N.jsx("td",{children:e.applicationType})]}),d0=({data:e})=>N.jsxs("table",{children:[N.jsxs("tr",{children:[N.jsx("th",{children:"Name"}),N.jsx("th",{children:"Method"}),N.jsx("th",{children:"Status"}),N.jsx("th",{children:"Protocol"}),N.jsx("th",{children:"Time"}),N.jsx("th",{children:"Orig. Svc."}),N.jsx("th",{children:"Application Type"})]}),Array.from(e).map(([t,n])=>N.jsx(h0,{data:n},t))]});function p0(e){const t=[];return e.forEach(n=>{const i=[n.relativeStartTime,n.relativeStartTime+n.duration];t.push(i)}),t}function g0(e){const t=[];return e.forEach(n=>{t.push(n.name)}),t}/*! + * @kurkle/color v0.3.2 + * https://github.com/kurkle/color#readme + * (c) 2023 Jukka Kurkela + * Released under the MIT License + */function Sr(e){return e+.5|0}const Ve=(e,t,n)=>Math.max(Math.min(e,n),t);function zi(e){return Ve(Sr(e*2.55),0,255)}function tn(e){return Ve(Sr(e*255),0,255)}function Ce(e){return Ve(Sr(e/2.55)/100,0,1)}function wc(e){return Ve(Sr(e*100),0,100)}const Kt={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Ql=[..."0123456789ABCDEF"],m0=e=>Ql[e&15],y0=e=>Ql[(e&240)>>4]+Ql[e&15],Wr=e=>(e&240)>>4===(e&15),v0=e=>Wr(e.r)&&Wr(e.g)&&Wr(e.b)&&Wr(e.a);function x0(e){var t=e.length,n;return e[0]==="#"&&(t===4||t===5?n={r:255&Kt[e[1]]*17,g:255&Kt[e[2]]*17,b:255&Kt[e[3]]*17,a:t===5?Kt[e[4]]*17:255}:(t===7||t===9)&&(n={r:Kt[e[1]]<<4|Kt[e[2]],g:Kt[e[3]]<<4|Kt[e[4]],b:Kt[e[5]]<<4|Kt[e[6]],a:t===9?Kt[e[7]]<<4|Kt[e[8]]:255})),n}const _0=(e,t)=>e<255?t(e):"";function w0(e){var t=v0(e)?m0:y0;return e?"#"+t(e.r)+t(e.g)+t(e.b)+_0(e.a,t):void 0}const k0=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Zd(e,t,n){const i=t*Math.min(n,1-n),r=(s,o=(s+e/30)%12)=>n-i*Math.max(Math.min(o-3,9-o,1),-1);return[r(0),r(8),r(4)]}function S0(e,t,n){const i=(r,s=(r+e/60)%6)=>n-n*t*Math.max(Math.min(s,4-s,1),0);return[i(5),i(3),i(1)]}function b0(e,t,n){const i=Zd(e,1,.5);let r;for(t+n>1&&(r=1/(t+n),t*=r,n*=r),r=0;r<3;r++)i[r]*=1-t-n,i[r]+=t;return i}function C0(e,t,n,i,r){return e===r?(t-n)/i+(t.5?c/(2-s-o):c/(s+o),a=C0(n,i,r,c,s),a=a*60+.5),[a|0,u||0,l]}function Ja(e,t,n,i){return(Array.isArray(t)?e(t[0],t[1],t[2]):e(t,n,i)).map(tn)}function qa(e,t,n){return Ja(Zd,e,t,n)}function M0(e,t,n){return Ja(b0,e,t,n)}function P0(e,t,n){return Ja(S0,e,t,n)}function Jd(e){return(e%360+360)%360}function E0(e){const t=k0.exec(e);let n=255,i;if(!t)return;t[5]!==i&&(n=t[6]?zi(+t[5]):tn(+t[5]));const r=Jd(+t[2]),s=+t[3]/100,o=+t[4]/100;return t[1]==="hwb"?i=M0(r,s,o):t[1]==="hsv"?i=P0(r,s,o):i=qa(r,s,o),{r:i[0],g:i[1],b:i[2],a:n}}function T0(e,t){var n=Za(e);n[0]=Jd(n[0]+t),n=qa(n),e.r=n[0],e.g=n[1],e.b=n[2]}function L0(e){if(!e)return;const t=Za(e),n=t[0],i=wc(t[1]),r=wc(t[2]);return e.a<255?`hsla(${n}, ${i}%, ${r}%, ${Ce(e.a)})`:`hsl(${n}, ${i}%, ${r}%)`}const kc={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},Sc={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};function O0(){const e={},t=Object.keys(Sc),n=Object.keys(kc);let i,r,s,o,l;for(i=0;i>16&255,s>>8&255,s&255]}return e}let $r;function D0(e){$r||($r=O0(),$r.transparent=[0,0,0,0]);const t=$r[e.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:t.length===4?t[3]:255}}const z0=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function R0(e){const t=z0.exec(e);let n=255,i,r,s;if(t){if(t[7]!==i){const o=+t[7];n=t[8]?zi(o):Ve(o*255,0,255)}return i=+t[1],r=+t[3],s=+t[5],i=255&(t[2]?zi(i):Ve(i,0,255)),r=255&(t[4]?zi(r):Ve(r,0,255)),s=255&(t[6]?zi(s):Ve(s,0,255)),{r:i,g:r,b:s,a:n}}}function F0(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${Ce(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}const Uo=e=>e<=.0031308?e*12.92:Math.pow(e,1/2.4)*1.055-.055,An=e=>e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4);function A0(e,t,n){const i=An(Ce(e.r)),r=An(Ce(e.g)),s=An(Ce(e.b));return{r:tn(Uo(i+n*(An(Ce(t.r))-i))),g:tn(Uo(r+n*(An(Ce(t.g))-r))),b:tn(Uo(s+n*(An(Ce(t.b))-s))),a:e.a+n*(t.a-e.a)}}function Ur(e,t,n){if(e){let i=Za(e);i[t]=Math.max(0,Math.min(i[t]+i[t]*n,t===0?360:1)),i=qa(i),e.r=i[0],e.g=i[1],e.b=i[2]}}function qd(e,t){return e&&Object.assign(t||{},e)}function bc(e){var t={r:0,g:0,b:0,a:255};return Array.isArray(e)?e.length>=3&&(t={r:e[0],g:e[1],b:e[2],a:255},e.length>3&&(t.a=tn(e[3]))):(t=qd(e,{r:0,g:0,b:0,a:1}),t.a=tn(t.a)),t}function I0(e){return e.charAt(0)==="r"?R0(e):E0(e)}class hr{constructor(t){if(t instanceof hr)return t;const n=typeof t;let i;n==="object"?i=bc(t):n==="string"&&(i=x0(t)||D0(t)||I0(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=qd(this._rgb);return t&&(t.a=Ce(t.a)),t}set rgb(t){this._rgb=bc(t)}rgbString(){return this._valid?F0(this._rgb):void 0}hexString(){return this._valid?w0(this._rgb):void 0}hslString(){return this._valid?L0(this._rgb):void 0}mix(t,n){if(t){const i=this.rgb,r=t.rgb;let s;const o=n===s?.5:n,l=2*o-1,a=i.a-r.a,u=((l*a===-1?l:(l+a)/(1+l*a))+1)/2;s=1-u,i.r=255&u*i.r+s*r.r+.5,i.g=255&u*i.g+s*r.g+.5,i.b=255&u*i.b+s*r.b+.5,i.a=o*i.a+(1-o)*r.a,this.rgb=i}return this}interpolate(t,n){return t&&(this._rgb=A0(this._rgb,t._rgb,n)),this}clone(){return new hr(this.rgb)}alpha(t){return this._rgb.a=tn(t),this}clearer(t){const n=this._rgb;return n.a*=1-t,this}greyscale(){const t=this._rgb,n=Sr(t.r*.3+t.g*.59+t.b*.11);return t.r=t.g=t.b=n,this}opaquer(t){const n=this._rgb;return n.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Ur(this._rgb,2,t),this}darken(t){return Ur(this._rgb,2,-t),this}saturate(t){return Ur(this._rgb,1,t),this}desaturate(t){return Ur(this._rgb,1,-t),this}rotate(t){return T0(this._rgb,t),this}}/*! + * Chart.js v4.3.0 + * https://www.chartjs.org + * (c) 2023 Chart.js Contributors + * Released under the MIT License + */function _e(){}const N0=(()=>{let e=0;return()=>e++})();function V(e){return e===null||typeof e>"u"}function G(e){if(Array.isArray&&Array.isArray(e))return!0;const t=Object.prototype.toString.call(e);return t.slice(0,7)==="[object"&&t.slice(-6)==="Array]"}function I(e){return e!==null&&Object.prototype.toString.call(e)==="[object Object]"}function ft(e){return(typeof e=="number"||e instanceof Number)&&isFinite(+e)}function Bt(e,t){return ft(e)?e:t}function j(e,t){return typeof e>"u"?t:e}const j0=(e,t)=>typeof e=="string"&&e.endsWith("%")?parseFloat(e)/100*t:+e;function $(e,t,n){if(e&&typeof e.call=="function")return e.apply(n,t)}function B(e,t,n,i){let r,s,o;if(G(e))if(s=e.length,i)for(r=s-1;r>=0;r--)t.call(n,e[r],r);else for(r=0;re,x:e=>e.x,y:e=>e.y};function V0(e){const t=e.split("."),n=[];let i="";for(const r of t)i+=r,i.endsWith("\\")?i=i.slice(0,-1)+".":(n.push(i),i="");return n}function W0(e){const t=V0(e);return n=>{for(const i of t){if(i==="")break;n=n&&n[i]}return n}}function fi(e,t){return(Cc[t]||(Cc[t]=W0(t)))(e)}function tu(e){return e.charAt(0).toUpperCase()+e.slice(1)}const pr=e=>typeof e<"u",sn=e=>typeof e=="function",Mc=(e,t)=>{if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0};function $0(e){return e.type==="mouseup"||e.type==="click"||e.type==="contextmenu"}const mt=Math.PI,ve=2*mt,Us=Number.POSITIVE_INFINITY,U0=mt/180,zt=mt/2,cn=mt/4,Pc=mt*2/3,We=Math.log10,en=Math.sign;function ps(e,t,n){return Math.abs(e-t)r-s).pop(),t}function Ys(e){return!isNaN(parseFloat(e))&&isFinite(e)}function K0(e,t){const n=Math.round(e);return n-t<=e&&n+t>=e}function ep(e,t,n){let i,r,s;for(i=0,r=e.length;ia&&u=Math.min(t,n)-i&&e<=Math.max(t,n)+i}function nu(e,t,n){n=n||(o=>e[o]1;)s=r+i>>1,n(s)?r=s:i=s;return{lo:r,hi:i}}const Xl=(e,t,n,i)=>nu(e,n,i?r=>{const s=e[r][t];return se[r][t]nu(e,n,i=>e[i][t]>=n);function q0(e,t,n){let i=0,r=e.length;for(;ii&&e[r-1]>n;)r--;return i>0||r{const i="_onData"+tu(n),r=e[n];Object.defineProperty(e,n,{configurable:!0,enumerable:!1,value(...s){const o=r.apply(this,s);return e._chartjs.listeners.forEach(l=>{typeof l[i]=="function"&&l[i](...s)}),o}})})}function Lc(e,t){const n=e._chartjs;if(!n)return;const i=n.listeners,r=i.indexOf(t);r!==-1&&i.splice(r,1),!(i.length>0)&&(np.forEach(s=>{delete e[s]}),delete e._chartjs)}function ip(e){const t=new Set(e);return t.size===e.length?e:Array.from(t)}const rp=function(){return typeof window>"u"?function(e){return e()}:window.requestAnimationFrame}();function sp(e,t){let n=[],i=!1;return function(...r){n=r,i||(i=!0,rp.call(window,()=>{i=!1,e.apply(t,n)}))}}function ey(e,t){let n;return function(...i){return t?(clearTimeout(n),n=setTimeout(e,t,i)):e.apply(this,i),t}}const iu=e=>e==="start"?"left":e==="end"?"right":"center",_t=(e,t,n)=>e==="start"?t:e==="end"?n:(t+n)/2,ny=(e,t,n,i)=>e===(i?"left":"right")?n:e==="center"?(t+n)/2:t,Yr=e=>e===0||e===1,Oc=(e,t,n)=>-(Math.pow(2,10*(e-=1))*Math.sin((e-t)*ve/n)),Dc=(e,t,n)=>Math.pow(2,-10*e)*Math.sin((e-t)*ve/n)+1,Yi={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>-e*(e-2),easeInOutQuad:e=>(e/=.5)<1?.5*e*e:-.5*(--e*(e-2)-1),easeInCubic:e=>e*e*e,easeOutCubic:e=>(e-=1)*e*e+1,easeInOutCubic:e=>(e/=.5)<1?.5*e*e*e:.5*((e-=2)*e*e+2),easeInQuart:e=>e*e*e*e,easeOutQuart:e=>-((e-=1)*e*e*e-1),easeInOutQuart:e=>(e/=.5)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2),easeInQuint:e=>e*e*e*e*e,easeOutQuint:e=>(e-=1)*e*e*e*e+1,easeInOutQuint:e=>(e/=.5)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2),easeInSine:e=>-Math.cos(e*zt)+1,easeOutSine:e=>Math.sin(e*zt),easeInOutSine:e=>-.5*(Math.cos(mt*e)-1),easeInExpo:e=>e===0?0:Math.pow(2,10*(e-1)),easeOutExpo:e=>e===1?1:-Math.pow(2,-10*e)+1,easeInOutExpo:e=>Yr(e)?e:e<.5?.5*Math.pow(2,10*(e*2-1)):.5*(-Math.pow(2,-10*(e*2-1))+2),easeInCirc:e=>e>=1?e:-(Math.sqrt(1-e*e)-1),easeOutCirc:e=>Math.sqrt(1-(e-=1)*e),easeInOutCirc:e=>(e/=.5)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1),easeInElastic:e=>Yr(e)?e:Oc(e,.075,.3),easeOutElastic:e=>Yr(e)?e:Dc(e,.075,.3),easeInOutElastic(e){return Yr(e)?e:e<.5?.5*Oc(e*2,.1125,.45):.5+.5*Dc(e*2-1,.1125,.45)},easeInBack(e){return e*e*((1.70158+1)*e-1.70158)},easeOutBack(e){return(e-=1)*e*((1.70158+1)*e+1.70158)+1},easeInOutBack(e){let t=1.70158;return(e/=.5)<1?.5*(e*e*(((t*=1.525)+1)*e-t)):.5*((e-=2)*e*(((t*=1.525)+1)*e+t)+2)},easeInBounce:e=>1-Yi.easeOutBounce(1-e),easeOutBounce(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375},easeInOutBounce:e=>e<.5?Yi.easeInBounce(e*2)*.5:Yi.easeOutBounce(e*2-1)*.5+.5};function op(e){if(e&&typeof e=="object"){const t=e.toString();return t==="[object CanvasPattern]"||t==="[object CanvasGradient]"}return!1}function zc(e){return op(e)?e:new hr(e)}function Yo(e){return op(e)?e:new hr(e).saturate(.5).darken(.1).hexString()}const iy=["x","y","borderWidth","radius","tension"],ry=["color","borderColor","backgroundColor"];function sy(e){e.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),e.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>t!=="onProgress"&&t!=="onComplete"&&t!=="fn"}),e.set("animations",{colors:{type:"color",properties:ry},numbers:{type:"number",properties:iy}}),e.describe("animations",{_fallback:"animation"}),e.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>t|0}}}})}function oy(e){e.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}const Rc=new Map;function ly(e,t){t=t||{};const n=e+JSON.stringify(t);let i=Rc.get(n);return i||(i=new Intl.NumberFormat(e,t),Rc.set(n,i)),i}function ru(e,t,n){return ly(t,n).format(e)}const lp={values(e){return G(e)?e:""+e},numeric(e,t,n){if(e===0)return"0";const i=this.chart.options.locale;let r,s=e;if(n.length>1){const u=Math.max(Math.abs(n[0].value),Math.abs(n[n.length-1].value));(u<1e-4||u>1e15)&&(r="scientific"),s=ay(e,n)}const o=We(Math.abs(s)),l=isNaN(o)?1:Math.max(Math.min(-1*Math.floor(o),20),0),a={notation:r,minimumFractionDigits:l,maximumFractionDigits:l};return Object.assign(a,this.options.ticks.format),ru(e,i,a)},logarithmic(e,t,n){if(e===0)return"0";const i=n[t].significand||e/Math.pow(10,Math.floor(We(e)));return[1,2,3,5,10,15].includes(i)||t>.8*n.length?lp.numeric.call(this,e,t,n):""}};function ay(e,t){let n=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(n)>=1&&e!==Math.floor(e)&&(n=e-Math.floor(e)),n}var go={formatters:lp};function uy(e){e.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,n)=>n.lineWidth,tickColor:(t,n)=>n.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:go.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),e.route("scale.ticks","color","","color"),e.route("scale.grid","color","","borderColor"),e.route("scale.border","color","","borderColor"),e.route("scale.title","color","","color"),e.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&t!=="callback"&&t!=="parser",_indexable:t=>t!=="borderDash"&&t!=="tickBorderDash"&&t!=="dash"}),e.describe("scales",{_fallback:"scale"}),e.describe("scale.ticks",{_scriptable:t=>t!=="backdropPadding"&&t!=="callback",_indexable:t=>t!=="backdropPadding"})}const Tn=Object.create(null),Gl=Object.create(null);function Ki(e,t){if(!t)return e;const n=t.split(".");for(let i=0,r=n.length;ii.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(i,r)=>Yo(r.backgroundColor),this.hoverBorderColor=(i,r)=>Yo(r.borderColor),this.hoverColor=(i,r)=>Yo(r.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(n)}set(t,n){return Ko(this,t,n)}get(t){return Ki(this,t)}describe(t,n){return Ko(Gl,t,n)}override(t,n){return Ko(Tn,t,n)}route(t,n,i,r){const s=Ki(this,t),o=Ki(this,i),l="_"+n;Object.defineProperties(s,{[l]:{value:s[n],writable:!0},[n]:{enumerable:!0,get(){const a=this[l],u=o[r];return I(a)?Object.assign({},u,a):j(a,u)},set(a){this[l]=a}}})}apply(t){t.forEach(n=>n(this))}}var nt=new cy({_scriptable:e=>!e.startsWith("on"),_indexable:e=>e!=="events",hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[sy,oy,uy]);function fy(e){return!e||V(e.size)||V(e.family)?null:(e.style?e.style+" ":"")+(e.weight?e.weight+" ":"")+e.size+"px "+e.family}function Ks(e,t,n,i,r){let s=t[r];return s||(s=t[r]=e.measureText(r).width,n.push(r)),s>i&&(i=s),i}function hy(e,t,n,i){i=i||{};let r=i.data=i.data||{},s=i.garbageCollect=i.garbageCollect||[];i.font!==t&&(r=i.data={},s=i.garbageCollect=[],i.font=t),e.save(),e.font=t;let o=0;const l=n.length;let a,u,c,f,h;for(a=0;an.length){for(a=0;a0&&e.stroke()}}function Gn(e,t,n){return n=n||.5,!t||e&&e.x>t.left-n&&e.xt.top-n&&e.y0&&s.strokeColor!=="";let a,u;for(e.save(),e.font=r.string,dy(e,s),a=0;a+e||0;function up(e,t){const n={},i=I(t),r=i?Object.keys(t):t,s=I(e)?i?o=>j(e[o],e[t[o]]):o=>e[o]:()=>e;for(const o of r)n[o]=xy(s(o));return n}function cp(e){return up(e,{top:"y",right:"x",bottom:"y",left:"x"})}function kn(e){return up(e,["topLeft","topRight","bottomLeft","bottomRight"])}function St(e){const t=cp(e);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function ut(e,t){e=e||{},t=t||nt.font;let n=j(e.size,t.size);typeof n=="string"&&(n=parseInt(n,10));let i=j(e.style,t.style);i&&!(""+i).match(yy)&&(console.warn('Invalid font style specified: "'+i+'"'),i=void 0);const r={family:j(e.family,t.family),lineHeight:vy(j(e.lineHeight,t.lineHeight),n),size:n,style:i,weight:j(e.weight,t.weight),string:""};return r.string=fy(r),r}function Kr(e,t,n,i){let r=!0,s,o,l;for(s=0,o=e.length;sn&&l===0?0:l+a;return{min:o(i,-Math.abs(s)),max:o(r,s)}}function zn(e,t){return Object.assign(Object.create(e),t)}function lu(e,t=[""],n,i,r=()=>e[0]){const s=n||e;typeof i>"u"&&(i=pp("_fallback",e));const o={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:e,_rootScopes:s,_fallback:i,_getTarget:r,override:l=>lu([l,...e],t,s,i)};return new Proxy(o,{deleteProperty(l,a){return delete l[a],delete l._keys,delete e[0][a],!0},get(l,a){return hp(l,a,()=>Ey(a,t,e,l))},getOwnPropertyDescriptor(l,a){return Reflect.getOwnPropertyDescriptor(l._scopes[0],a)},getPrototypeOf(){return Reflect.getPrototypeOf(e[0])},has(l,a){return Nc(l).includes(a)},ownKeys(l){return Nc(l)},set(l,a,u){const c=l._storage||(l._storage=r());return l[a]=c[a]=u,delete l._keys,!0}})}function hi(e,t,n,i){const r={_cacheable:!1,_proxy:e,_context:t,_subProxy:n,_stack:new Set,_descriptors:fp(e,i),setContext:s=>hi(e,s,n,i),override:s=>hi(e.override(s),t,n,i)};return new Proxy(r,{deleteProperty(s,o){return delete s[o],delete e[o],!0},get(s,o,l){return hp(s,o,()=>ky(s,o,l))},getOwnPropertyDescriptor(s,o){return s._descriptors.allKeys?Reflect.has(e,o)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(e,o)},getPrototypeOf(){return Reflect.getPrototypeOf(e)},has(s,o){return Reflect.has(e,o)},ownKeys(){return Reflect.ownKeys(e)},set(s,o,l){return e[o]=l,delete s[o],!0}})}function fp(e,t={scriptable:!0,indexable:!0}){const{_scriptable:n=t.scriptable,_indexable:i=t.indexable,_allKeys:r=t.allKeys}=e;return{allKeys:r,scriptable:n,indexable:i,isScriptable:sn(n)?n:()=>n,isIndexable:sn(i)?i:()=>i}}const wy=(e,t)=>e?e+tu(t):t,au=(e,t)=>I(t)&&e!=="adapters"&&(Object.getPrototypeOf(t)===null||t.constructor===Object);function hp(e,t,n){if(Object.prototype.hasOwnProperty.call(e,t))return e[t];const i=n();return e[t]=i,i}function ky(e,t,n){const{_proxy:i,_context:r,_subProxy:s,_descriptors:o}=e;let l=i[t];return sn(l)&&o.isScriptable(t)&&(l=Sy(t,l,e,n)),G(l)&&l.length&&(l=by(t,l,e,o.isIndexable)),au(t,l)&&(l=hi(l,r,s&&s[t],o)),l}function Sy(e,t,n,i){const{_proxy:r,_context:s,_subProxy:o,_stack:l}=n;if(l.has(e))throw new Error("Recursion detected: "+Array.from(l).join("->")+"->"+e);l.add(e);let a=t(s,o||i);return l.delete(e),au(e,a)&&(a=uu(r._scopes,r,e,a)),a}function by(e,t,n,i){const{_proxy:r,_context:s,_subProxy:o,_descriptors:l}=n;if(typeof s.index<"u"&&i(e))return t[s.index%t.length];if(I(t[0])){const a=t,u=r._scopes.filter(c=>c!==a);t=[];for(const c of a){const f=uu(u,r,e,c);t.push(hi(f,s,o&&o[e],l))}}return t}function dp(e,t,n){return sn(e)?e(t,n):e}const Cy=(e,t)=>e===!0?t:typeof e=="string"?fi(t,e):void 0;function My(e,t,n,i,r){for(const s of t){const o=Cy(n,s);if(o){e.add(o);const l=dp(o._fallback,n,r);if(typeof l<"u"&&l!==n&&l!==i)return l}else if(o===!1&&typeof i<"u"&&n!==i)return null}return!1}function uu(e,t,n,i){const r=t._rootScopes,s=dp(t._fallback,n,i),o=[...e,...r],l=new Set;l.add(i);let a=Ic(l,o,n,s||n,i);return a===null||typeof s<"u"&&s!==n&&(a=Ic(l,o,s,a,i),a===null)?!1:lu(Array.from(l),[""],r,s,()=>Py(t,n,i))}function Ic(e,t,n,i,r){for(;n;)n=My(e,t,n,i,r);return n}function Py(e,t,n){const i=e._getTarget();t in i||(i[t]={});const r=i[t];return G(r)&&I(n)?n:r||{}}function Ey(e,t,n,i){let r;for(const s of t)if(r=pp(wy(s,e),n),typeof r<"u")return au(e,r)?uu(n,i,e,r):r}function pp(e,t){for(const n of t){if(!n)continue;const i=n[e];if(typeof i<"u")return i}}function Nc(e){let t=e._keys;return t||(t=e._keys=Ty(e._scopes)),t}function Ty(e){const t=new Set;for(const n of e)for(const i of Object.keys(n).filter(r=>!r.startsWith("_")))t.add(i);return Array.from(t)}function gp(){return typeof window<"u"&&typeof document<"u"}function cu(e){let t=e.parentNode;return t&&t.toString()==="[object ShadowRoot]"&&(t=t.host),t}function Qs(e,t,n){let i;return typeof e=="string"?(i=parseInt(e,10),e.indexOf("%")!==-1&&(i=i/100*t.parentNode[n])):i=e,i}const mo=e=>e.ownerDocument.defaultView.getComputedStyle(e,null);function Ly(e,t){return mo(e).getPropertyValue(t)}const Oy=["top","right","bottom","left"];function Sn(e,t,n){const i={};n=n?"-"+n:"";for(let r=0;r<4;r++){const s=Oy[r];i[s]=parseFloat(e[t+"-"+s+n])||0}return i.width=i.left+i.right,i.height=i.top+i.bottom,i}const Dy=(e,t,n)=>(e>0||t>0)&&(!n||!n.shadowRoot);function zy(e,t){const n=e.touches,i=n&&n.length?n[0]:e,{offsetX:r,offsetY:s}=i;let o=!1,l,a;if(Dy(r,s,e.target))l=r,a=s;else{const u=t.getBoundingClientRect();l=i.clientX-u.left,a=i.clientY-u.top,o=!0}return{x:l,y:a,box:o}}function mn(e,t){if("native"in e)return e;const{canvas:n,currentDevicePixelRatio:i}=t,r=mo(n),s=r.boxSizing==="border-box",o=Sn(r,"padding"),l=Sn(r,"border","width"),{x:a,y:u,box:c}=zy(e,n),f=o.left+(c&&l.left),h=o.top+(c&&l.top);let{width:d,height:y}=t;return s&&(d-=o.width+l.width,y-=o.height+l.height),{x:Math.round((a-f)/d*n.width/i),y:Math.round((u-h)/y*n.height/i)}}function Ry(e,t,n){let i,r;if(t===void 0||n===void 0){const s=cu(e);if(!s)t=e.clientWidth,n=e.clientHeight;else{const o=s.getBoundingClientRect(),l=mo(s),a=Sn(l,"border","width"),u=Sn(l,"padding");t=o.width-u.width-a.width,n=o.height-u.height-a.height,i=Qs(l.maxWidth,s,"clientWidth"),r=Qs(l.maxHeight,s,"clientHeight")}}return{width:t,height:n,maxWidth:i||Us,maxHeight:r||Us}}const Qr=e=>Math.round(e*10)/10;function Fy(e,t,n,i){const r=mo(e),s=Sn(r,"margin"),o=Qs(r.maxWidth,e,"clientWidth")||Us,l=Qs(r.maxHeight,e,"clientHeight")||Us,a=Ry(e,t,n);let{width:u,height:c}=a;if(r.boxSizing==="content-box"){const h=Sn(r,"border","width"),d=Sn(r,"padding");u-=d.width+h.width,c-=d.height+h.height}return u=Math.max(0,u-s.width),c=Math.max(0,i?u/i:c-s.height),u=Qr(Math.min(u,o,a.maxWidth)),c=Qr(Math.min(c,l,a.maxHeight)),u&&!c&&(c=Qr(u/2)),(t!==void 0||n!==void 0)&&i&&a.height&&c>a.height&&(c=a.height,u=Qr(Math.floor(c*i))),{width:u,height:c}}function jc(e,t,n){const i=t||1,r=Math.floor(e.height*i),s=Math.floor(e.width*i);e.height=Math.floor(e.height),e.width=Math.floor(e.width);const o=e.canvas;return o.style&&(n||!o.style.height&&!o.style.width)&&(o.style.height=`${e.height}px`,o.style.width=`${e.width}px`),e.currentDevicePixelRatio!==i||o.height!==r||o.width!==s?(e.currentDevicePixelRatio=i,o.height=r,o.width=s,e.ctx.setTransform(i,0,0,i,0,0),!0):!1}const Ay=function(){let e=!1;try{const t={get passive(){return e=!0,!1}};window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch{}return e}();function Bc(e,t){const n=Ly(e,t),i=n&&n.match(/^(\d+)(\.\d+)?px$/);return i?+i[1]:void 0}const Iy=function(e,t){return{x(n){return e+e+t-n},setWidth(n){t=n},textAlign(n){return n==="center"?n:n==="right"?"left":"right"},xPlus(n,i){return n-i},leftForLtr(n,i){return n-i}}},Ny=function(){return{x(e){return e},setWidth(e){},textAlign(e){return e},xPlus(e,t){return e+t},leftForLtr(e,t){return e}}};function ii(e,t,n){return e?Iy(t,n):Ny()}function mp(e,t){let n,i;(t==="ltr"||t==="rtl")&&(n=e.canvas.style,i=[n.getPropertyValue("direction"),n.getPropertyPriority("direction")],n.setProperty("direction",t,"important"),e.prevTextDirection=i)}function yp(e,t){t!==void 0&&(delete e.prevTextDirection,e.canvas.style.setProperty("direction",t[0],t[1]))}/*! + * Chart.js v4.3.0 + * https://www.chartjs.org + * (c) 2023 Chart.js Contributors + * Released under the MIT License + */class jy{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,n,i,r){const s=n.listeners[r],o=n.duration;s.forEach(l=>l({chart:t,initial:n.initial,numSteps:o,currentStep:Math.min(i-n.start,o)}))}_refresh(){this._request||(this._running=!0,this._request=rp.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(t=Date.now()){let n=0;this._charts.forEach((i,r)=>{if(!i.running||!i.items.length)return;const s=i.items;let o=s.length-1,l=!1,a;for(;o>=0;--o)a=s[o],a._active?(a._total>i.duration&&(i.duration=a._total),a.tick(t),l=!0):(s[o]=s[s.length-1],s.pop());l&&(r.draw(),this._notify(r,i,t,"progress")),s.length||(i.running=!1,this._notify(r,i,t,"complete"),i.initial=!1),n+=s.length}),this._lastDate=t,n===0&&(this._running=!1)}_getAnims(t){const n=this._charts;let i=n.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},n.set(t,i)),i}listen(t,n,i){this._getAnims(t).listeners[n].push(i)}add(t,n){!n||!n.length||this._getAnims(t).items.push(...n)}has(t){return this._getAnims(t).items.length>0}start(t){const n=this._charts.get(t);n&&(n.running=!0,n.start=Date.now(),n.duration=n.items.reduce((i,r)=>Math.max(i,r._duration),0),this._refresh())}running(t){if(!this._running)return!1;const n=this._charts.get(t);return!(!n||!n.running||!n.items.length)}stop(t){const n=this._charts.get(t);if(!n||!n.items.length)return;const i=n.items;let r=i.length-1;for(;r>=0;--r)i[r].cancel();n.items=[],this._notify(t,n,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var we=new jy;const Hc="transparent",By={boolean(e,t,n){return n>.5?t:e},color(e,t,n){const i=zc(e||Hc),r=i.valid&&zc(t||Hc);return r&&r.valid?r.mix(i,n).hexString():t},number(e,t,n){return e+(t-e)*n}};class Hy{constructor(t,n,i,r){const s=n[i];r=Kr([t.to,r,s,t.from]);const o=Kr([t.from,s,r]);this._active=!0,this._fn=t.fn||By[t.type||typeof o],this._easing=Yi[t.easing]||Yi.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=n,this._prop=i,this._from=o,this._to=r,this._promises=void 0}active(){return this._active}update(t,n,i){if(this._active){this._notify(!1);const r=this._target[this._prop],s=i-this._start,o=this._duration-s;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=s,this._loop=!!t.loop,this._to=Kr([t.to,n,r,t.from]),this._from=Kr([t.from,r,n])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const n=t-this._start,i=this._duration,r=this._prop,s=this._from,o=this._loop,l=this._to;let a;if(this._active=s!==l&&(o||n1?2-a:a,a=this._easing(Math.min(1,Math.max(0,a))),this._target[r]=this._fn(s,l,a)}wait(){const t=this._promises||(this._promises=[]);return new Promise((n,i)=>{t.push({res:n,rej:i})})}_notify(t){const n=t?"res":"rej",i=this._promises||[];for(let r=0;r{const s=t[r];if(!I(s))return;const o={};for(const l of n)o[l]=s[l];(G(s.properties)&&s.properties||[r]).forEach(l=>{(l===r||!i.has(l))&&i.set(l,o)})})}_animateOptions(t,n){const i=n.options,r=Wy(t,i);if(!r)return[];const s=this._createAnimations(r,i);return i.$shared&&Vy(t.options.$animations,i).then(()=>{t.options=i},()=>{}),s}_createAnimations(t,n){const i=this._properties,r=[],s=t.$animations||(t.$animations={}),o=Object.keys(n),l=Date.now();let a;for(a=o.length-1;a>=0;--a){const u=o[a];if(u.charAt(0)==="$")continue;if(u==="options"){r.push(...this._animateOptions(t,n));continue}const c=n[u];let f=s[u];const h=i.get(u);if(f)if(h&&f.active()){f.update(h,c,l);continue}else f.cancel();if(!h||!h.duration){t[u]=c;continue}s[u]=f=new Hy(h,t,u,c),r.push(f)}return r}update(t,n){if(this._properties.size===0){Object.assign(t,n);return}const i=this._createAnimations(t,n);if(i.length)return we.add(this._chart,i),!0}}function Vy(e,t){const n=[],i=Object.keys(t);for(let r=0;r0||!n&&s<0)return r.index}return null}function Yc(e,t){const{chart:n,_cachedMeta:i}=e,r=n._stacks||(n._stacks={}),{iScale:s,vScale:o,index:l}=i,a=s.axis,u=o.axis,c=Ky(s,o,i),f=t.length;let h;for(let d=0;dn[i].axis===t).shift()}function Gy(e,t){return zn(e,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:"default",type:"dataset"})}function Zy(e,t,n){return zn(e,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:n,index:t,mode:"default",type:"data"})}function bi(e,t){const n=e.controller.index,i=e.vScale&&e.vScale.axis;if(i){t=t||e._parsed;for(const r of t){const s=r._stacks;if(!s||s[i]===void 0||s[i][n]===void 0)return;delete s[i][n],s[i]._visualValues!==void 0&&s[i]._visualValues[n]!==void 0&&delete s[i]._visualValues[n]}}}const Xo=e=>e==="reset"||e==="none",Kc=(e,t)=>t?e:Object.assign({},e),Jy=(e,t,n)=>e&&!t.hidden&&t._stacked&&{keys:xp(n,!0),values:null};class Qi{constructor(t,n){this.chart=t,this._ctx=t.ctx,this.index=n,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=$c(t.vScale,t),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(t){this.index!==t&&bi(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,n=this._cachedMeta,i=this.getDataset(),r=(f,h,d,y)=>f==="x"?h:f==="r"?y:d,s=n.xAxisID=j(i.xAxisID,Qo(t,"x")),o=n.yAxisID=j(i.yAxisID,Qo(t,"y")),l=n.rAxisID=j(i.rAxisID,Qo(t,"r")),a=n.indexAxis,u=n.iAxisID=r(a,s,o,l),c=n.vAxisID=r(a,o,s,l);n.xScale=this.getScaleForId(s),n.yScale=this.getScaleForId(o),n.rScale=this.getScaleForId(l),n.iScale=this.getScaleForId(u),n.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const n=this._cachedMeta;return t===n.iScale?n.vScale:n.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&Lc(this._data,this),t._stacked&&bi(t)}_dataCheck(){const t=this.getDataset(),n=t.data||(t.data=[]),i=this._data;if(I(n))this._data=Yy(n);else if(i!==n){if(i){Lc(i,this);const r=this._cachedMeta;bi(r),r._parsed=[]}n&&Object.isExtensible(n)&&ty(n,this),this._syncList=[],this._data=n}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const n=this._cachedMeta,i=this.getDataset();let r=!1;this._dataCheck();const s=n._stacked;n._stacked=$c(n.vScale,n),n.stack!==i.stack&&(r=!0,bi(n),n.stack=i.stack),this._resyncElements(t),(r||s!==n._stacked)&&Yc(this,n._parsed)}configure(){const t=this.chart.config,n=t.datasetScopeKeys(this._type),i=t.getOptionScopes(this.getDataset(),n,!0);this.options=t.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,n){const{_cachedMeta:i,_data:r}=this,{iScale:s,_stacked:o}=i,l=s.axis;let a=t===0&&n===r.length?!0:i._sorted,u=t>0&&i._parsed[t-1],c,f,h;if(this._parsing===!1)i._parsed=r,i._sorted=!0,h=r;else{G(r[t])?h=this.parseArrayData(i,r,t,n):I(r[t])?h=this.parseObjectData(i,r,t,n):h=this.parsePrimitiveData(i,r,t,n);const d=()=>f[l]===null||u&&f[l]m||f=0;--h)if(!y()){this.updateRangeFromParsed(u,t,d,a);break}}return u}getAllParsedValues(t){const n=this._cachedMeta._parsed,i=[];let r,s,o;for(r=0,s=n.length;r=0&&tthis.getContext(i,r,n),m=u.resolveNamedOptions(h,d,y,f);return m.$shared&&(m.$shared=a,s[o]=Object.freeze(Kc(m,a))),m}_resolveAnimations(t,n,i){const r=this.chart,s=this._cachedDataOpts,o=`animation-${n}`,l=s[o];if(l)return l;let a;if(r.options.animation!==!1){const c=this.chart.config,f=c.datasetAnimationScopeKeys(this._type,n),h=c.getOptionScopes(this.getDataset(),f);a=c.createResolver(h,this.getContext(t,i,n))}const u=new vp(r,a&&a.animations);return a&&a._cacheable&&(s[o]=Object.freeze(u)),u}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,n){return!n||Xo(t)||this.chart._animationsDisabled}_getSharedOptions(t,n){const i=this.resolveDataElementOptions(t,n),r=this._sharedOptions,s=this.getSharedOptions(i),o=this.includeOptions(n,s)||s!==r;return this.updateSharedOptions(s,n,i),{sharedOptions:s,includeOptions:o}}updateElement(t,n,i,r){Xo(r)?Object.assign(t,i):this._resolveAnimations(n,r).update(t,i)}updateSharedOptions(t,n,i){t&&!Xo(n)&&this._resolveAnimations(void 0,n).update(t,i)}_setStyle(t,n,i,r){t.active=r;const s=this.getStyle(n,r);this._resolveAnimations(n,i,r).update(t,{options:!r&&this.getSharedOptions(s)||s})}removeHoverStyle(t,n,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,n,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const n=this._data,i=this._cachedMeta.data;for(const[l,a,u]of this._syncList)this[l](a,u);this._syncList=[];const r=i.length,s=n.length,o=Math.min(s,r);o&&this.parse(0,o),s>r?this._insertElements(r,s-r,t):s{for(u.length+=n,l=u.length-1;l>=o;l--)u[l]=u[l-n]};for(a(s),l=t;lr-s))}return e._cache.$bar}function tv(e){const t=e.iScale,n=qy(t,e.type);let i=t._length,r,s,o,l;const a=()=>{o===32767||o===-32768||(pr(l)&&(i=Math.min(i,Math.abs(o-l)||i)),l=o)};for(r=0,s=n.length;r0?r[e-1]:null,l=eMath.abs(l)&&(a=l,u=o),t[n.axis]=u,t._custom={barStart:a,barEnd:u,start:r,end:s,min:o,max:l}}function _p(e,t,n,i){return G(e)?iv(e,t,n,i):t[n.axis]=n.parse(e,i),t}function Qc(e,t,n,i){const r=e.iScale,s=e.vScale,o=r.getLabels(),l=r===s,a=[];let u,c,f,h;for(u=n,c=n+i;u=n?1:-1)}function sv(e){let t,n,i,r,s;return e.horizontal?(t=e.base>e.x,n="left",i="right"):(t=e.basea.controller.options.grouped),s=i.options.stacked,o=[],l=a=>{const u=a.controller.getParsed(n),c=u&&u[a.vScale.axis];if(V(c)||isNaN(c))return!0};for(const a of r)if(!(n!==void 0&&l(a))&&((s===!1||o.indexOf(a.stack)===-1||s===void 0&&a.stack===void 0)&&o.push(a.stack),a.index===t))break;return o.length||o.push(void 0),o}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,n,i){const r=this._getStacks(t,i),s=n!==void 0?r.indexOf(n):-1;return s===-1?r.length-1:s}_getRuler(){const t=this.options,n=this._cachedMeta,i=n.iScale,r=[];let s,o;for(s=0,o=n.data.length;s{a[o](t[n],r)&&(s.push({element:a,datasetIndex:u,index:c}),l=l||a.inRange(t.x,t.y,r))}),i&&!l?[]:s}var pv={evaluateInteractionItems:br,modes:{index(e,t,n,i){const r=mn(t,e),s=n.axis||"x",o=n.includeInvisible||!1,l=n.intersect?Zo(e,r,s,i,o):Jo(e,r,s,!1,i,o),a=[];return l.length?(e.getSortedVisibleDatasetMetas().forEach(u=>{const c=l[0].index,f=u.data[c];f&&!f.skip&&a.push({element:f,datasetIndex:u.index,index:c})}),a):[]},dataset(e,t,n,i){const r=mn(t,e),s=n.axis||"xy",o=n.includeInvisible||!1;let l=n.intersect?Zo(e,r,s,i,o):Jo(e,r,s,!1,i,o);if(l.length>0){const a=l[0].datasetIndex,u=e.getDatasetMeta(a).data;l=[];for(let c=0;cn.pos===t)}function Jc(e,t){return e.filter(n=>wp.indexOf(n.pos)===-1&&n.box.axis===t)}function Mi(e,t){return e.sort((n,i)=>{const r=t?i:n,s=t?n:i;return r.weight===s.weight?r.index-s.index:r.weight-s.weight})}function gv(e){const t=[];let n,i,r,s,o,l;for(n=0,i=(e||[]).length;nu.box.fullSize),!0),i=Mi(Ci(t,"left"),!0),r=Mi(Ci(t,"right")),s=Mi(Ci(t,"top"),!0),o=Mi(Ci(t,"bottom")),l=Jc(t,"x"),a=Jc(t,"y");return{fullSize:n,leftAndTop:i.concat(s),rightAndBottom:r.concat(a).concat(o).concat(l),chartArea:Ci(t,"chartArea"),vertical:i.concat(r).concat(a),horizontal:s.concat(o).concat(l)}}function qc(e,t,n,i){return Math.max(e[n],t[n])+Math.max(e[i],t[i])}function kp(e,t){e.top=Math.max(e.top,t.top),e.left=Math.max(e.left,t.left),e.bottom=Math.max(e.bottom,t.bottom),e.right=Math.max(e.right,t.right)}function xv(e,t,n,i){const{pos:r,box:s}=n,o=e.maxPadding;if(!I(r)){n.size&&(e[r]-=n.size);const f=i[n.stack]||{size:0,count:1};f.size=Math.max(f.size,n.horizontal?s.height:s.width),n.size=f.size/f.count,e[r]+=n.size}s.getPadding&&kp(o,s.getPadding());const l=Math.max(0,t.outerWidth-qc(o,e,"left","right")),a=Math.max(0,t.outerHeight-qc(o,e,"top","bottom")),u=l!==e.w,c=a!==e.h;return e.w=l,e.h=a,n.horizontal?{same:u,other:c}:{same:c,other:u}}function _v(e){const t=e.maxPadding;function n(i){const r=Math.max(t[i]-e[i],0);return e[i]+=r,r}e.y+=n("top"),e.x+=n("left"),n("right"),n("bottom")}function wv(e,t){const n=t.maxPadding;function i(r){const s={left:0,top:0,right:0,bottom:0};return r.forEach(o=>{s[o]=Math.max(t[o],n[o])}),s}return i(e?["left","right"]:["top","bottom"])}function Ri(e,t,n,i){const r=[];let s,o,l,a,u,c;for(s=0,o=e.length,u=0;s{typeof m.beforeLayout=="function"&&m.beforeLayout()});const c=a.reduce((m,x)=>x.box.options&&x.box.options.display===!1?m:m+1,0)||1,f=Object.freeze({outerWidth:t,outerHeight:n,padding:r,availableWidth:s,availableHeight:o,vBoxMaxWidth:s/2/c,hBoxMaxHeight:o/2}),h=Object.assign({},r);kp(h,St(i));const d=Object.assign({maxPadding:h,w:s,h:o,x:r.left,y:r.top},r),y=yv(a.concat(u),f);Ri(l.fullSize,d,f,y),Ri(a,d,f,y),Ri(u,d,f,y)&&Ri(a,d,f,y),_v(d),tf(l.leftAndTop,d,f,y),d.x+=d.w,d.y+=d.h,tf(l.rightAndBottom,d,f,y),e.chartArea={left:d.left,top:d.top,right:d.left+d.w,bottom:d.top+d.h,height:d.h,width:d.w},B(l.chartArea,m=>{const x=m.box;Object.assign(x,e.chartArea),x.update(d.w,d.h,{left:0,top:0,right:0,bottom:0})})}};class Sp{acquireContext(t,n){}releaseContext(t){return!1}addEventListener(t,n,i){}removeEventListener(t,n,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,n,i,r){return n=Math.max(0,n||t.width),i=i||t.height,{width:n,height:Math.max(0,r?Math.floor(n/r):i)}}isAttached(t){return!0}updateConfig(t){}}class kv extends Sp{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const ms="$chartjs",Sv={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},ef=e=>e===null||e==="";function bv(e,t){const n=e.style,i=e.getAttribute("height"),r=e.getAttribute("width");if(e[ms]={initial:{height:i,width:r,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",n.boxSizing=n.boxSizing||"border-box",ef(r)){const s=Bc(e,"width");s!==void 0&&(e.width=s)}if(ef(i))if(e.style.height==="")e.height=e.width/(t||2);else{const s=Bc(e,"height");s!==void 0&&(e.height=s)}return e}const bp=Ay?{passive:!0}:!1;function Cv(e,t,n){e.addEventListener(t,n,bp)}function Mv(e,t,n){e.canvas.removeEventListener(t,n,bp)}function Pv(e,t){const n=Sv[e.type]||e.type,{x:i,y:r}=mn(e,t);return{type:n,chart:t,native:e,x:i!==void 0?i:null,y:r!==void 0?r:null}}function Xs(e,t){for(const n of e)if(n===t||n.contains(t))return!0}function Ev(e,t,n){const i=e.canvas,r=new MutationObserver(s=>{let o=!1;for(const l of s)o=o||Xs(l.addedNodes,i),o=o&&!Xs(l.removedNodes,i);o&&n()});return r.observe(document,{childList:!0,subtree:!0}),r}function Tv(e,t,n){const i=e.canvas,r=new MutationObserver(s=>{let o=!1;for(const l of s)o=o||Xs(l.removedNodes,i),o=o&&!Xs(l.addedNodes,i);o&&n()});return r.observe(document,{childList:!0,subtree:!0}),r}const mr=new Map;let nf=0;function Cp(){const e=window.devicePixelRatio;e!==nf&&(nf=e,mr.forEach((t,n)=>{n.currentDevicePixelRatio!==e&&t()}))}function Lv(e,t){mr.size||window.addEventListener("resize",Cp),mr.set(e,t)}function Ov(e){mr.delete(e),mr.size||window.removeEventListener("resize",Cp)}function Dv(e,t,n){const i=e.canvas,r=i&&cu(i);if(!r)return;const s=sp((l,a)=>{const u=r.clientWidth;n(l,a),u{const a=l[0],u=a.contentRect.width,c=a.contentRect.height;u===0&&c===0||s(u,c)});return o.observe(r),Lv(e,s),o}function qo(e,t,n){n&&n.disconnect(),t==="resize"&&Ov(e)}function zv(e,t,n){const i=e.canvas,r=sp(s=>{e.ctx!==null&&n(Pv(s,e))},e);return Cv(i,t,r),r}class Rv extends Sp{acquireContext(t,n){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(bv(t,n),i):null}releaseContext(t){const n=t.canvas;if(!n[ms])return!1;const i=n[ms].initial;["height","width"].forEach(s=>{const o=i[s];V(o)?n.removeAttribute(s):n.setAttribute(s,o)});const r=i.style||{};return Object.keys(r).forEach(s=>{n.style[s]=r[s]}),n.width=n.width,delete n[ms],!0}addEventListener(t,n,i){this.removeEventListener(t,n);const r=t.$proxies||(t.$proxies={}),o={attach:Ev,detach:Tv,resize:Dv}[n]||zv;r[n]=o(t,n,i)}removeEventListener(t,n){const i=t.$proxies||(t.$proxies={}),r=i[n];if(!r)return;({attach:qo,detach:qo,resize:qo}[n]||Mv)(t,n,r),i[n]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,n,i,r){return Fy(t,n,i,r)}isAttached(t){const n=cu(t);return!!(n&&n.isConnected)}}function Fv(e){return!gp()||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas?kv:Rv}class on{constructor(){z(this,"x");z(this,"y");z(this,"active",!1);z(this,"options");z(this,"$animations")}tooltipPosition(t){const{x:n,y:i}=this.getProps(["x","y"],t);return{x:n,y:i}}hasValue(){return Ys(this.x)&&Ys(this.y)}getProps(t,n){const i=this.$animations;if(!n||!i)return this;const r={};return t.forEach(s=>{r[s]=i[s]&&i[s].active()?i[s]._to:this[s]}),r}}z(on,"defaults",{}),z(on,"defaultRoutes");function Av(e,t){const n=e.options.ticks,i=Iv(e),r=Math.min(n.maxTicksLimit||i,i),s=n.major.enabled?jv(t):[],o=s.length,l=s[0],a=s[o-1],u=[];if(o>r)return Bv(t,u,s,o/r),u;const c=Nv(s,t,r);if(o>0){let f,h;const d=o>1?Math.round((a-l)/(o-1)):null;for(Gr(t,u,c,V(d)?0:l-d,l),f=0,h=o-1;fr)return a}return Math.max(r,1)}function jv(e){const t=[];let n,i;for(n=0,i=e.length;ne==="left"?"right":e==="right"?"left":e,rf=(e,t,n)=>t==="top"||t==="left"?e[t]+n:e[t]-n,sf=(e,t)=>Math.min(t||e,e);function of(e,t){const n=[],i=e.length/t,r=e.length;let s=0;for(;so+l)))return a}function $v(e,t){B(e,n=>{const i=n.gc,r=i.length/2;let s;if(r>t){for(s=0;si?i:n,i=r&&n>i?n:i,{min:Bt(n,Bt(i,n)),max:Bt(i,Bt(n,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 t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){$(this.options.beforeUpdate,[this])}update(t,n,i){const{beginAtZero:r,grace:s,ticks:o}=this.options,l=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=n,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=_y(this,s,r),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const a=l=s||i<=1||!this.isHorizontal()){this.labelRotation=r;return}const c=this._getLabelSizes(),f=c.widest.width,h=c.highest.height,d=se(this.chart.width-f,0,this.maxWidth);l=t.offset?this.maxWidth/i:d/(i-1),f+6>l&&(l=d/(i-(t.offset?.5:1)),a=this.maxHeight-Pi(t.grid)-n.padding-lf(t.title,this.chart.options.font),u=Math.sqrt(f*f+h*h),o=eu(Math.min(Math.asin(se((c.highest.height+6)/l,-1,1)),Math.asin(se(a/u,-1,1))-Math.asin(se(h/u,-1,1)))),o=Math.max(r,Math.min(s,o))),this.labelRotation=o}afterCalculateLabelRotation(){$(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){$(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:n,options:{ticks:i,title:r,grid:s}}=this,o=this._isVisible(),l=this.isHorizontal();if(o){const a=lf(r,n.options.font);if(l?(t.width=this.maxWidth,t.height=Pi(s)+a):(t.height=this.maxHeight,t.width=Pi(s)+a),i.display&&this.ticks.length){const{first:u,last:c,widest:f,highest:h}=this._getLabelSizes(),d=i.padding*2,y=$e(this.labelRotation),m=Math.cos(y),x=Math.sin(y);if(l){const p=i.mirror?0:x*f.width+m*h.height;t.height=Math.min(this.maxHeight,t.height+p+d)}else{const p=i.mirror?0:m*f.width+x*h.height;t.width=Math.min(this.maxWidth,t.width+p+d)}this._calculatePadding(u,c,x,m)}}this._handleMargins(),l?(this.width=this._length=n.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=n.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,n,i,r){const{ticks:{align:s,padding:o},position:l}=this.options,a=this.labelRotation!==0,u=l!=="top"&&this.axis==="x";if(this.isHorizontal()){const c=this.getPixelForTick(0)-this.left,f=this.right-this.getPixelForTick(this.ticks.length-1);let h=0,d=0;a?u?(h=r*t.width,d=i*n.height):(h=i*t.height,d=r*n.width):s==="start"?d=n.width:s==="end"?h=t.width:s!=="inner"&&(h=t.width/2,d=n.width/2),this.paddingLeft=Math.max((h-c+o)*this.width/(this.width-c),0),this.paddingRight=Math.max((d-f+o)*this.width/(this.width-f),0)}else{let c=n.height/2,f=t.height/2;s==="start"?(c=0,f=t.height):s==="end"&&(c=n.height,f=0),this.paddingTop=c+o,this.paddingBottom=f+o}}_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(){$(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:n}=this.options;return n==="top"||n==="bottom"||t==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){this.beforeTickToLabelConversion(),this.generateTickLabels(t);let n,i;for(n=0,i=t.length;n({width:o[T]||0,height:l[T]||0});return{first:b(0),last:b(n-1),widest:b(k),highest:b(S),widths:o,heights:l}}getLabelForValue(t){return t}getPixelForValue(t,n){return NaN}getValueForPixel(t){}getPixelForTick(t){const n=this.ticks;return t<0||t>n.length-1?null:this.getPixelForValue(n[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const n=this._startPixel+t*this._length;return Z0(this._alignToPixels?fn(this.chart,n,0):n)}getDecimalForPixel(t){const n=(t-this._startPixel)/this._length;return this._reversePixels?1-n:n}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:n}=this;return t<0&&n<0?n:t>0&&n>0?t:0}getContext(t){const n=this.ticks||[];if(t>=0&&tl*r?l/i:a/r:a*r0}_computeGridLineItems(t){const n=this.axis,i=this.chart,r=this.options,{grid:s,position:o,border:l}=r,a=s.offset,u=this.isHorizontal(),f=this.ticks.length+(a?1:0),h=Pi(s),d=[],y=l.setContext(this.getContext()),m=y.display?y.width:0,x=m/2,p=function(it){return fn(i,it,m)};let g,v,_,w,k,S,b,T,E,L,R,st;if(o==="top")g=p(this.bottom),S=this.bottom-h,T=g-x,L=p(t.top)+x,st=t.bottom;else if(o==="bottom")g=p(this.top),L=t.top,st=p(t.bottom)-x,S=g+x,T=this.top+h;else if(o==="left")g=p(this.right),k=this.right-h,b=g-x,E=p(t.left)+x,R=t.right;else if(o==="right")g=p(this.left),E=t.left,R=p(t.right)-x,k=g+x,b=this.left+h;else if(n==="x"){if(o==="center")g=p((t.top+t.bottom)/2+.5);else if(I(o)){const it=Object.keys(o)[0],yt=o[it];g=p(this.chart.scales[it].getPixelForValue(yt))}L=t.top,st=t.bottom,S=g+x,T=S+h}else if(n==="y"){if(o==="center")g=p((t.left+t.right)/2);else if(I(o)){const it=Object.keys(o)[0],yt=o[it];g=p(this.chart.scales[it].getPixelForValue(yt))}k=g-x,b=k-h,E=t.left,R=t.right}const It=j(r.ticks.maxTicksLimit,f),Z=Math.max(1,Math.ceil(f/It));for(v=0;vs.value===t);return r>=0?n.setContext(this.getContext(r)).lineWidth:0}drawGrid(t){const n=this.options.grid,i=this.ctx,r=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let s,o;const l=(a,u,c)=>{!c.width||!c.color||(i.save(),i.lineWidth=c.width,i.strokeStyle=c.color,i.setLineDash(c.borderDash||[]),i.lineDashOffset=c.borderDashOffset,i.beginPath(),i.moveTo(a.x,a.y),i.lineTo(u.x,u.y),i.stroke(),i.restore())};if(n.display)for(s=0,o=r.length;s{this.draw(s)}}]:[{z:i,draw:s=>{this.drawBackground(),this.drawGrid(s),this.drawTitle()}},{z:r,draw:()=>{this.drawBorder()}},{z:n,draw:s=>{this.drawLabels(s)}}]}getMatchingVisibleMetas(t){const n=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",r=[];let s,o;for(s=0,o=n.length;s{const i=n.split("."),r=i.pop(),s=[e].concat(i).join("."),o=t[n].split("."),l=o.pop(),a=o.join(".");nt.route(s,r,a,l)})}function Zv(e){return"id"in e&&"defaults"in e}class Jv{constructor(){this.controllers=new Zr(Qi,"datasets",!0),this.elements=new Zr(on,"elements"),this.plugins=new Zr(Object,"plugins"),this.scales=new Zr(Rn,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,n,i){[...n].forEach(r=>{const s=i||this._getRegistryForType(r);i||s.isForType(r)||s===this.plugins&&r.id?this._exec(t,s,r):B(r,o=>{const l=i||this._getRegistryForType(o);this._exec(t,l,o)})})}_exec(t,n,i){const r=tu(t);$(i["before"+r],[],i),n[t](i),$(i["after"+r],[],i)}_getRegistryForType(t){for(let n=0;ns.filter(l=>!o.some(a=>l.plugin.id===a.plugin.id));this._notify(r(n,i),t,"stop"),this._notify(r(i,n),t,"start")}}function t1(e){const t={},n=[],i=Object.keys(de.plugins.items);for(let s=0;s1&&af(e[0].toLowerCase());if(i)return i}throw new Error(`Cannot determine type of '${e}' axis. Please provide 'axis' or 'position' option.`)}function uf(e,t,n){if(n[t+"AxisID"]===e)return{axis:t}}function l1(e,t){if(t.data&&t.data.datasets){const n=t.data.datasets.filter(i=>i.xAxisID===e||i.yAxisID===e);if(n.length)return uf(e,"x",n[0])||uf(e,"y",n[0])}return{}}function a1(e,t){const n=Tn[e.type]||{scales:{}},i=t.scales||{},r=Zl(e.type,t),s=Object.create(null);return Object.keys(i).forEach(o=>{const l=i[o];if(!I(l))return console.error(`Invalid scale configuration for scale: ${o}`);if(l._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${o}`);const a=Jl(o,l,l1(o,e),nt.scales[l.type]),u=s1(a,r),c=n.scales||{};s[o]=Ui(Object.create(null),[{axis:a},l,c[a],c[u]])}),e.data.datasets.forEach(o=>{const l=o.type||e.type,a=o.indexAxis||Zl(l,t),c=(Tn[l]||{}).scales||{};Object.keys(c).forEach(f=>{const h=r1(f,a),d=o[h+"AxisID"]||h;s[d]=s[d]||Object.create(null),Ui(s[d],[{axis:h},i[d],c[f]])})}),Object.keys(s).forEach(o=>{const l=s[o];Ui(l,[nt.scales[l.type],nt.scale])}),s}function Mp(e){const t=e.options||(e.options={});t.plugins=j(t.plugins,{}),t.scales=a1(e,t)}function Pp(e){return e=e||{},e.datasets=e.datasets||[],e.labels=e.labels||[],e}function u1(e){return e=e||{},e.data=Pp(e.data),Mp(e),e}const cf=new Map,Ep=new Set;function Jr(e,t){let n=cf.get(e);return n||(n=t(),cf.set(e,n),Ep.add(n)),n}const Ei=(e,t,n)=>{const i=fi(t,n);i!==void 0&&e.add(i)};class c1{constructor(t){this._config=u1(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=Pp(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),Mp(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return Jr(t,()=>[[`datasets.${t}`,""]])}datasetAnimationScopeKeys(t,n){return Jr(`${t}.transition.${n}`,()=>[[`datasets.${t}.transitions.${n}`,`transitions.${n}`],[`datasets.${t}`,""]])}datasetElementScopeKeys(t,n){return Jr(`${t}-${n}`,()=>[[`datasets.${t}.elements.${n}`,`datasets.${t}`,`elements.${n}`,""]])}pluginScopeKeys(t){const n=t.id,i=this.type;return Jr(`${i}-plugin-${n}`,()=>[[`plugins.${n}`,...t.additionalOptionScopes||[]]])}_cachedScopes(t,n){const i=this._scopeCache;let r=i.get(t);return(!r||n)&&(r=new Map,i.set(t,r)),r}getOptionScopes(t,n,i){const{options:r,type:s}=this,o=this._cachedScopes(t,i),l=o.get(n);if(l)return l;const a=new Set;n.forEach(c=>{t&&(a.add(t),c.forEach(f=>Ei(a,t,f))),c.forEach(f=>Ei(a,r,f)),c.forEach(f=>Ei(a,Tn[s]||{},f)),c.forEach(f=>Ei(a,nt,f)),c.forEach(f=>Ei(a,Gl,f))});const u=Array.from(a);return u.length===0&&u.push(Object.create(null)),Ep.has(n)&&o.set(n,u),u}chartOptionScopes(){const{options:t,type:n}=this;return[t,Tn[n]||{},nt.datasets[n]||{},{type:n},nt,Gl]}resolveNamedOptions(t,n,i,r=[""]){const s={$shared:!0},{resolver:o,subPrefixes:l}=ff(this._resolverCache,t,r);let a=o;if(h1(o,n)){s.$shared=!1,i=sn(i)?i():i;const u=this.createResolver(t,i,l);a=hi(o,i,u)}for(const u of n)s[u]=a[u];return s}createResolver(t,n,i=[""],r){const{resolver:s}=ff(this._resolverCache,t,i);return I(n)?hi(s,n,void 0,r):s}}function ff(e,t,n){let i=e.get(t);i||(i=new Map,e.set(t,i));const r=n.join();let s=i.get(r);return s||(s={resolver:lu(t,n),subPrefixes:n.filter(l=>!l.toLowerCase().includes("hover"))},i.set(r,s)),s}const f1=e=>I(e)&&Object.getOwnPropertyNames(e).reduce((t,n)=>t||sn(e[n]),!1);function h1(e,t){const{isScriptable:n,isIndexable:i}=fp(e);for(const r of t){const s=n(r),o=i(r),l=(o||s)&&e[r];if(s&&(sn(l)||f1(l))||o&&G(l))return!0}return!1}var d1="4.3.0";const p1=["top","bottom","left","right","chartArea"];function hf(e,t){return e==="top"||e==="bottom"||p1.indexOf(e)===-1&&t==="x"}function df(e,t){return function(n,i){return n[e]===i[e]?n[t]-i[t]:n[e]-i[e]}}function pf(e){const t=e.chart,n=t.options.animation;t.notifyPlugins("afterRender"),$(n&&n.onComplete,[e],t)}function g1(e){const t=e.chart,n=t.options.animation;$(n&&n.onProgress,[e],t)}function Tp(e){return gp()&&typeof e=="string"?e=document.getElementById(e):e&&e.length&&(e=e[0]),e&&e.canvas&&(e=e.canvas),e}const ys={},gf=e=>{const t=Tp(e);return Object.values(ys).filter(n=>n.canvas===t).pop()};function m1(e,t,n){const i=Object.keys(e);for(const r of i){const s=+r;if(s>=t){const o=e[r];delete e[r],(n>0||s>t)&&(e[s+n]=o)}}}function y1(e,t,n,i){return!n||e.type==="mouseout"?null:i?t:e}function v1(e){const{xScale:t,yScale:n}=e;if(t&&n)return{left:t.left,right:t.right,top:n.top,bottom:n.bottom}}var Fe;let yo=(Fe=class{static register(...t){de.add(...t),mf()}static unregister(...t){de.remove(...t),mf()}constructor(t,n){const i=this.config=new c1(n),r=Tp(t),s=gf(r);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 o=i.createResolver(i.chartOptionScopes(),this.getContext());this.platform=new(i.platform||Fv(r)),this.platform.updateConfig(i);const l=this.platform.acquireContext(r,o.aspectRatio),a=l&&l.canvas,u=a&&a.height,c=a&&a.width;if(this.id=N0(),this.ctx=l,this.canvas=a,this.width=c,this.height=u,this._options=o,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 qv,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=ey(f=>this.update(f),o.resizeDelay||0),this._dataChanges=[],ys[this.id]=this,!l||!a){console.error("Failed to create chart: can't acquire context from the given item");return}we.listen(this,"complete",pf),we.listen(this,"progress",g1),this._initialize(),this.attached&&this.update()}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:n},width:i,height:r,_aspectRatio:s}=this;return V(t)?n&&s?s:r?i/r:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return de}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():jc(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Fc(this.canvas,this.ctx),this}stop(){return we.stop(this),this}resize(t,n){we.running(this)?this._resizeBeforeDraw={width:t,height:n}:this._resize(t,n)}_resize(t,n){const i=this.options,r=this.canvas,s=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(r,t,n,s),l=i.devicePixelRatio||this.platform.getDevicePixelRatio(),a=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,jc(this,l,!0)&&(this.notifyPlugins("resize",{size:o}),$(i.onResize,[this,o],this),this.attached&&this._doResize(a)&&this.render())}ensureScalesHaveIDs(){const n=this.options.scales||{};B(n,(i,r)=>{i.id=r})}buildOrUpdateScales(){const t=this.options,n=t.scales,i=this.scales,r=Object.keys(i).reduce((o,l)=>(o[l]=!1,o),{});let s=[];n&&(s=s.concat(Object.keys(n).map(o=>{const l=n[o],a=Jl(o,l),u=a==="r",c=a==="x";return{options:l,dposition:u?"chartArea":c?"bottom":"left",dtype:u?"radialLinear":c?"category":"linear"}}))),B(s,o=>{const l=o.options,a=l.id,u=Jl(a,l),c=j(l.type,o.dtype);(l.position===void 0||hf(l.position,u)!==hf(o.dposition))&&(l.position=o.dposition),r[a]=!0;let f=null;if(a in i&&i[a].type===c)f=i[a];else{const h=de.getScale(c);f=new h({id:a,type:c,ctx:this.ctx,chart:this}),i[f.id]=f}f.init(l,t)}),B(r,(o,l)=>{o||delete i[l]}),B(i,o=>{Zt.configure(this,o,o.options),Zt.addBox(this,o)})}_updateMetasets(){const t=this._metasets,n=this.data.datasets.length,i=t.length;if(t.sort((r,s)=>r.index-s.index),i>n){for(let r=n;rn.length&&delete this._stacks,t.forEach((i,r)=>{n.filter(s=>s===i._dataset).length===0&&this._destroyDatasetMeta(r)})}buildOrUpdateControllers(){const t=[],n=this.data.datasets;let i,r;for(this._removeUnreferencedMetasets(),i=0,r=n.length;i{this.getDatasetMeta(n).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const n=this.config;n.update();const i=this._options=n.createResolver(n.chartOptionScopes(),this.getContext()),r=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0})===!1)return;const s=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let u=0,c=this.data.datasets.length;u{u.reset()}),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(df("z","_idx"));const{_active:l,_lastEvent:a}=this;a?this._eventHandler(a,!0):l.length&&this._updateHoverStyles(l,l,!0),this.render()}_updateScales(){B(this.scales,t=>{Zt.removeBox(this,t)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,n=new Set(Object.keys(this._listeners)),i=new Set(t.events);(!Mc(n,i)||!!this._responsiveListeners!==t.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,n=this._getUniformDataChanges()||[];for(const{method:i,start:r,count:s}of n){const o=i==="_removeElements"?-s:s;m1(t,r,o)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const n=this.data.datasets.length,i=s=>new Set(t.filter(o=>o[0]===s).map((o,l)=>l+","+o.splice(1).join(","))),r=i(0);for(let s=1;ss.split(",")).map(s=>({method:s[1],start:+s[2],count:+s[3]}))}_updateLayout(t){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;Zt.update(this,this.width,this.height,t);const n=this.chartArea,i=n.width<=0||n.height<=0;this._layers=[],B(this.boxes,r=>{i&&r.position==="chartArea"||(r.configure&&r.configure(),this._layers.push(...r._layers()))},this),this._layers.forEach((r,s)=>{r._idx=s}),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})!==!1){for(let n=0,i=this.data.datasets.length;n=0;--n)this._drawDataset(t[n]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const n=this.ctx,i=t._clip,r=!i.disabled,s=v1(t)||this.chartArea,o={meta:t,index:t.index,cancelable:!0};this.notifyPlugins("beforeDatasetDraw",o)!==!1&&(r&&su(n,{left:i.left===!1?0:s.left-i.left,right:i.right===!1?this.width:s.right+i.right,top:i.top===!1?0:s.top-i.top,bottom:i.bottom===!1?this.height:s.bottom+i.bottom}),t.controller.draw(),r&&ou(n),o.cancelable=!1,this.notifyPlugins("afterDatasetDraw",o))}isPointInArea(t){return Gn(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,n,i,r){const s=pv.modes[n];return typeof s=="function"?s(this,t,i,r):[]}getDatasetMeta(t){const n=this.data.datasets[t],i=this._metasets;let r=i.filter(s=>s&&s._dataset===n).pop();return r||(r={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:n&&n.order||0,index:t,_dataset:n,_parsed:[],_sorted:!1},i.push(r)),r}getContext(){return this.$context||(this.$context=zn(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const n=this.data.datasets[t];if(!n)return!1;const i=this.getDatasetMeta(t);return typeof i.hidden=="boolean"?!i.hidden:!n.hidden}setDatasetVisibility(t,n){const i=this.getDatasetMeta(t);i.hidden=!n}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,n,i){const r=i?"show":"hide",s=this.getDatasetMeta(t),o=s.controller._resolveAnimations(void 0,r);pr(n)?(s.data[n].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(s,{visible:i}),this.update(l=>l.datasetIndex===t?r:void 0))}hide(t,n){this._updateVisibility(t,n,!1)}show(t,n){this._updateVisibility(t,n,!0)}_destroyDatasetMeta(t){const n=this._metasets[t];n&&n.controller&&n.controller._destroy(),delete this._metasets[t]}_stop(){let t,n;for(this.stop(),we.remove(this),t=0,n=this.data.datasets.length;t{n.addEventListener(this,s,o),t[s]=o},r=(s,o,l)=>{s.offsetX=o,s.offsetY=l,this._eventHandler(s)};B(this.options.events,s=>i(s,r))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,n=this.platform,i=(a,u)=>{n.addEventListener(this,a,u),t[a]=u},r=(a,u)=>{t[a]&&(n.removeEventListener(this,a,u),delete t[a])},s=(a,u)=>{this.canvas&&this.resize(a,u)};let o;const l=()=>{r("attach",l),this.attached=!0,this.resize(),i("resize",s),i("detach",o)};o=()=>{this.attached=!1,r("resize",s),this._stop(),this._resize(0,0),i("attach",l)},n.isAttached(this.canvas)?l():o()}unbindEvents(){B(this._listeners,(t,n)=>{this.platform.removeEventListener(this,n,t)}),this._listeners={},B(this._responsiveListeners,(t,n)=>{this.platform.removeEventListener(this,n,t)}),this._responsiveListeners=void 0}updateHoverStyle(t,n,i){const r=i?"set":"remove";let s,o,l,a;for(n==="dataset"&&(s=this.getDatasetMeta(t[0].datasetIndex),s.controller["_"+r+"DatasetHoverStyle"]()),l=0,a=t.length;l{const l=this.getDatasetMeta(s);if(!l)throw new Error("No dataset found at index "+s);return{datasetIndex:s,element:l.data[o],index:o}});!Ws(i,n)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,n))}notifyPlugins(t,n,i){return this._plugins.notify(this,t,n,i)}isPluginEnabled(t){return this._plugins._cache.filter(n=>n.plugin.id===t).length===1}_updateHoverStyles(t,n,i){const r=this.options.hover,s=(a,u)=>a.filter(c=>!u.some(f=>c.datasetIndex===f.datasetIndex&&c.index===f.index)),o=s(n,t),l=i?t:s(t,n);o.length&&this.updateHoverStyle(o,r.mode,!1),l.length&&r.mode&&this.updateHoverStyle(l,r.mode,!0)}_eventHandler(t,n){const i={event:t,replay:n,cancelable:!0,inChartArea:this.isPointInArea(t)},r=o=>(o.options.events||this.options.events).includes(t.native.type);if(this.notifyPlugins("beforeEvent",i,r)===!1)return;const s=this._handleEvent(t,n,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,r),(s||i.changed)&&this.render(),this}_handleEvent(t,n,i){const{_active:r=[],options:s}=this,o=n,l=this._getActiveElements(t,r,i,o),a=$0(t),u=y1(t,this._lastEvent,i,a);i&&(this._lastEvent=null,$(s.onHover,[t,l,this],this),a&&$(s.onClick,[t,l,this],this));const c=!Ws(l,r);return(c||n)&&(this._active=l,this._updateHoverStyles(l,r,n)),this._lastEvent=u,c}_getActiveElements(t,n,i,r){if(t.type==="mouseout")return[];if(!i)return n;const s=this.options.hover;return this.getElementsAtEventForMode(t,s.mode,s,r)}},z(Fe,"defaults",nt),z(Fe,"instances",ys),z(Fe,"overrides",Tn),z(Fe,"registry",de),z(Fe,"version",d1),z(Fe,"getChart",gf),Fe);function mf(){return B(yo.instances,e=>e._plugins.invalidate())}function Lp(e,t){const{x:n,y:i,base:r,width:s,height:o}=e.getProps(["x","y","base","width","height"],t);let l,a,u,c,f;return e.horizontal?(f=o/2,l=Math.min(n,r),a=Math.max(n,r),u=i-f,c=i+f):(f=s/2,l=n-f,a=n+f,u=Math.min(i,r),c=Math.max(i,r)),{left:l,top:u,right:a,bottom:c}}function Ue(e,t,n,i){return e?0:se(t,n,i)}function x1(e,t,n){const i=e.options.borderWidth,r=e.borderSkipped,s=cp(i);return{t:Ue(r.top,s.top,0,n),r:Ue(r.right,s.right,0,t),b:Ue(r.bottom,s.bottom,0,n),l:Ue(r.left,s.left,0,t)}}function _1(e,t,n){const{enableBorderRadius:i}=e.getProps(["enableBorderRadius"]),r=e.options.borderRadius,s=kn(r),o=Math.min(t,n),l=e.borderSkipped,a=i||I(r);return{topLeft:Ue(!a||l.top||l.left,s.topLeft,0,o),topRight:Ue(!a||l.top||l.right,s.topRight,0,o),bottomLeft:Ue(!a||l.bottom||l.left,s.bottomLeft,0,o),bottomRight:Ue(!a||l.bottom||l.right,s.bottomRight,0,o)}}function w1(e){const t=Lp(e),n=t.right-t.left,i=t.bottom-t.top,r=x1(e,n/2,i/2),s=_1(e,n/2,i/2);return{outer:{x:t.left,y:t.top,w:n,h:i,radius:s},inner:{x:t.left+r.l,y:t.top+r.t,w:n-r.l-r.r,h:i-r.t-r.b,radius:{topLeft:Math.max(0,s.topLeft-Math.max(r.t,r.l)),topRight:Math.max(0,s.topRight-Math.max(r.t,r.r)),bottomLeft:Math.max(0,s.bottomLeft-Math.max(r.b,r.l)),bottomRight:Math.max(0,s.bottomRight-Math.max(r.b,r.r))}}}}function tl(e,t,n,i){const r=t===null,s=n===null,l=e&&!(r&&s)&&Lp(e,i);return l&&(r||Xn(t,l.left,l.right))&&(s||Xn(n,l.top,l.bottom))}function k1(e){return e.topLeft||e.topRight||e.bottomLeft||e.bottomRight}function S1(e,t){e.rect(t.x,t.y,t.w,t.h)}function el(e,t,n={}){const i=e.x!==n.x?-t:0,r=e.y!==n.y?-t:0,s=(e.x+e.w!==n.x+n.w?t:0)-i,o=(e.y+e.h!==n.y+n.h?t:0)-r;return{x:e.x+i,y:e.y+r,w:e.w+s,h:e.h+o,radius:e.radius}}class vs extends on{constructor(t){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,t&&Object.assign(this,t)}draw(t){const{inflateAmount:n,options:{borderColor:i,backgroundColor:r}}=this,{inner:s,outer:o}=w1(this),l=k1(o.radius)?gr:S1;t.save(),(o.w!==s.w||o.h!==s.h)&&(t.beginPath(),l(t,el(o,n,s)),t.clip(),l(t,el(s,-n,o)),t.fillStyle=i,t.fill("evenodd")),t.beginPath(),l(t,el(s,n)),t.fillStyle=r,t.fill(),t.restore()}inRange(t,n,i){return tl(this,t,n,i)}inXRange(t,n){return tl(this,t,null,n)}inYRange(t,n){return tl(this,null,t,n)}getCenterPoint(t){const{x:n,y:i,base:r,horizontal:s}=this.getProps(["x","y","base","horizontal"],t);return{x:s?(n+r)/2:n,y:s?i:(i+r)/2}}getRange(t){return t==="x"?this.width/2:this.height/2}}z(vs,"id","bar"),z(vs,"defaults",{borderSkipped:"start",borderWidth:0,borderRadius:0,inflateAmount:"auto",pointStyle:void 0}),z(vs,"defaultRoutes",{backgroundColor:"backgroundColor",borderColor:"borderColor"});const yf=(e,t)=>{let{boxHeight:n=t,boxWidth:i=t}=e;return e.usePointStyle&&(n=Math.min(n,t),i=e.pointStyleWidth||Math.min(i,t)),{boxWidth:i,boxHeight:n,itemHeight:Math.max(t,n)}},b1=(e,t)=>e!==null&&t!==null&&e.datasetIndex===t.datasetIndex&&e.index===t.index;class vf extends on{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.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(t,n,i){this.maxWidth=t,this.maxHeight=n,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 t=this.options.labels||{};let n=$(t.generateLabels,[this.chart],this)||[];t.filter&&(n=n.filter(i=>t.filter(i,this.chart.data))),t.sort&&(n=n.sort((i,r)=>t.sort(i,r,this.chart.data))),this.options.reverse&&n.reverse(),this.legendItems=n}fit(){const{options:t,ctx:n}=this;if(!t.display){this.width=this.height=0;return}const i=t.labels,r=ut(i.font),s=r.size,o=this._computeTitleHeight(),{boxWidth:l,itemHeight:a}=yf(i,s);let u,c;n.font=r.string,this.isHorizontal()?(u=this.maxWidth,c=this._fitRows(o,s,l,a)+10):(c=this.maxHeight,u=this._fitCols(o,r,l,a)+10),this.width=Math.min(u,t.maxWidth||this.maxWidth),this.height=Math.min(c,t.maxHeight||this.maxHeight)}_fitRows(t,n,i,r){const{ctx:s,maxWidth:o,options:{labels:{padding:l}}}=this,a=this.legendHitBoxes=[],u=this.lineWidths=[0],c=r+l;let f=t;s.textAlign="left",s.textBaseline="middle";let h=-1,d=-c;return this.legendItems.forEach((y,m)=>{const x=i+n/2+s.measureText(y.text).width;(m===0||u[u.length-1]+x+2*l>o)&&(f+=c,u[u.length-(m>0?0:1)]=0,d+=c,h++),a[m]={left:0,top:d,row:h,width:x,height:r},u[u.length-1]+=x+l}),f}_fitCols(t,n,i,r){const{ctx:s,maxHeight:o,options:{labels:{padding:l}}}=this,a=this.legendHitBoxes=[],u=this.columnSizes=[],c=o-t;let f=l,h=0,d=0,y=0,m=0;return this.legendItems.forEach((x,p)=>{const{itemWidth:g,itemHeight:v}=C1(i,n,s,x,r);p>0&&d+v+2*l>c&&(f+=h+l,u.push({width:h,height:d}),y+=h+l,m++,h=d=0),a[p]={left:y,top:d,col:m,width:g,height:v},h=Math.max(h,g),d+=v+l}),f+=h,u.push({width:h,height:d}),f}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:n,options:{align:i,labels:{padding:r},rtl:s}}=this,o=ii(s,this.left,this.width);if(this.isHorizontal()){let l=0,a=_t(i,this.left+r,this.right-this.lineWidths[l]);for(const u of n)l!==u.row&&(l=u.row,a=_t(i,this.left+r,this.right-this.lineWidths[l])),u.top+=this.top+t+r,u.left=o.leftForLtr(o.x(a),u.width),a+=u.width+r}else{let l=0,a=_t(i,this.top+t+r,this.bottom-this.columnSizes[l].height);for(const u of n)u.col!==l&&(l=u.col,a=_t(i,this.top+t+r,this.bottom-this.columnSizes[l].height)),u.top=a,u.left+=this.left+r,u.left=o.leftForLtr(o.x(u.left),u.width),a+=u.height+r}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){const t=this.ctx;su(t,this),this._draw(),ou(t)}}_draw(){const{options:t,columnSizes:n,lineWidths:i,ctx:r}=this,{align:s,labels:o}=t,l=nt.color,a=ii(t.rtl,this.left,this.width),u=ut(o.font),{padding:c}=o,f=u.size,h=f/2;let d;this.drawTitle(),r.textAlign=a.textAlign("left"),r.textBaseline="middle",r.lineWidth=.5,r.font=u.string;const{boxWidth:y,boxHeight:m,itemHeight:x}=yf(o,f),p=function(k,S,b){if(isNaN(y)||y<=0||isNaN(m)||m<0)return;r.save();const T=j(b.lineWidth,1);if(r.fillStyle=j(b.fillStyle,l),r.lineCap=j(b.lineCap,"butt"),r.lineDashOffset=j(b.lineDashOffset,0),r.lineJoin=j(b.lineJoin,"miter"),r.lineWidth=T,r.strokeStyle=j(b.strokeStyle,l),r.setLineDash(j(b.lineDash,[])),o.usePointStyle){const E={radius:m*Math.SQRT2/2,pointStyle:b.pointStyle,rotation:b.rotation,borderWidth:T},L=a.xPlus(k,y/2),R=S+h;ap(r,E,L,R,o.pointStyleWidth&&y)}else{const E=S+Math.max((f-m)/2,0),L=a.leftForLtr(k,y),R=kn(b.borderRadius);r.beginPath(),Object.values(R).some(st=>st!==0)?gr(r,{x:L,y:E,w:y,h:m,radius:R}):r.rect(L,E,y,m),r.fill(),T!==0&&r.stroke()}r.restore()},g=function(k,S,b){Ln(r,b.text,k,S+x/2,u,{strikethrough:b.hidden,textAlign:a.textAlign(b.textAlign)})},v=this.isHorizontal(),_=this._computeTitleHeight();v?d={x:_t(s,this.left+c,this.right-i[0]),y:this.top+c+_,line:0}:d={x:this.left+c,y:_t(s,this.top+_+c,this.bottom-n[0].height),line:0},mp(this.ctx,t.textDirection);const w=x+c;this.legendItems.forEach((k,S)=>{r.strokeStyle=k.fontColor,r.fillStyle=k.fontColor;const b=r.measureText(k.text).width,T=a.textAlign(k.textAlign||(k.textAlign=o.textAlign)),E=y+h+b;let L=d.x,R=d.y;a.setWidth(this.width),v?S>0&&L+E+c>this.right&&(R=d.y+=w,d.line++,L=d.x=_t(s,this.left+c,this.right-i[d.line])):S>0&&R+w>this.bottom&&(L=d.x=L+n[d.line].width+c,d.line++,R=d.y=_t(s,this.top+_+c,this.bottom-n[d.line].height));const st=a.x(L);if(p(st,R,k),L=ny(T,L+y+h,v?L+E:this.right,t.rtl),g(a.x(L),R,k),v)d.x+=E+c;else if(typeof k.text!="string"){const It=u.lineHeight;d.y+=Op(k,It)}else d.y+=w}),yp(this.ctx,t.textDirection)}drawTitle(){const t=this.options,n=t.title,i=ut(n.font),r=St(n.padding);if(!n.display)return;const s=ii(t.rtl,this.left,this.width),o=this.ctx,l=n.position,a=i.size/2,u=r.top+a;let c,f=this.left,h=this.width;if(this.isHorizontal())h=Math.max(...this.lineWidths),c=this.top+u,f=_t(t.align,f,this.right-h);else{const y=this.columnSizes.reduce((m,x)=>Math.max(m,x.height),0);c=u+_t(t.align,this.top,this.bottom-y-t.labels.padding-this._computeTitleHeight())}const d=_t(l,f,f+h);o.textAlign=s.textAlign(iu(l)),o.textBaseline="middle",o.strokeStyle=n.color,o.fillStyle=n.color,o.font=i.string,Ln(o,n.text,d,c,i)}_computeTitleHeight(){const t=this.options.title,n=ut(t.font),i=St(t.padding);return t.display?n.lineHeight+i.height:0}_getLegendItemAt(t,n){let i,r,s;if(Xn(t,this.left,this.right)&&Xn(n,this.top,this.bottom)){for(s=this.legendHitBoxes,i=0;is.length>o.length?s:o)),t+n.size/2+i.measureText(r).width}function P1(e,t,n){let i=e;return typeof t.text!="string"&&(i=Op(t,n)),i}function Op(e,t){const n=e.text?e.text.length+.5:0;return t*n}function E1(e,t){return!!((e==="mousemove"||e==="mouseout")&&(t.onHover||t.onLeave)||t.onClick&&(e==="click"||e==="mouseup"))}var T1={id:"legend",_element:vf,start(e,t,n){const i=e.legend=new vf({ctx:e.ctx,options:n,chart:e});Zt.configure(e,i,n),Zt.addBox(e,i)},stop(e){Zt.removeBox(e,e.legend),delete e.legend},beforeUpdate(e,t,n){const i=e.legend;Zt.configure(e,i,n),i.options=n},afterUpdate(e){const t=e.legend;t.buildLabels(),t.adjustHitBoxes()},afterEvent(e,t){t.replay||e.legend.handleEvent(t.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(e,t,n){const i=t.datasetIndex,r=n.chart;r.isDatasetVisible(i)?(r.hide(i),t.hidden=!0):(r.show(i),t.hidden=!1)},onHover:null,onLeave:null,labels:{color:e=>e.chart.options.color,boxWidth:40,padding:10,generateLabels(e){const t=e.data.datasets,{labels:{usePointStyle:n,pointStyle:i,textAlign:r,color:s,useBorderRadius:o,borderRadius:l}}=e.legend.options;return e._getSortedDatasetMetas().map(a=>{const u=a.controller.getStyle(n?0:void 0),c=St(u.borderWidth);return{text:t[a.index].label,fillStyle:u.backgroundColor,fontColor:s,hidden:!a.visible,lineCap:u.borderCapStyle,lineDash:u.borderDash,lineDashOffset:u.borderDashOffset,lineJoin:u.borderJoinStyle,lineWidth:(c.width+c.height)/4,strokeStyle:u.borderColor,pointStyle:i||u.pointStyle,rotation:u.rotation,textAlign:r||u.textAlign,borderRadius:o&&(l||u.borderRadius),datasetIndex:a.index}},this)}},title:{color:e=>e.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:e=>!e.startsWith("on"),labels:{_scriptable:e=>!["generateLabels","filter","sort"].includes(e)}}};class Dp extends on{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.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(t,n){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=t,this.height=this.bottom=n;const r=G(i.text)?i.text.length:1;this._padding=St(i.padding);const s=r*ut(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=s:this.width=s}isHorizontal(){const t=this.options.position;return t==="top"||t==="bottom"}_drawArgs(t){const{top:n,left:i,bottom:r,right:s,options:o}=this,l=o.align;let a=0,u,c,f;return this.isHorizontal()?(c=_t(l,i,s),f=n+t,u=s-i):(o.position==="left"?(c=i+t,f=_t(l,r,n),a=mt*-.5):(c=s-t,f=_t(l,n,r),a=mt*.5),u=r-n),{titleX:c,titleY:f,maxWidth:u,rotation:a}}draw(){const t=this.ctx,n=this.options;if(!n.display)return;const i=ut(n.font),s=i.lineHeight/2+this._padding.top,{titleX:o,titleY:l,maxWidth:a,rotation:u}=this._drawArgs(s);Ln(t,n.text,0,0,i,{color:n.color,maxWidth:a,rotation:u,textAlign:iu(n.align),textBaseline:"middle",translation:[o,l]})}}function L1(e,t){const n=new Dp({ctx:e.ctx,options:t,chart:e});Zt.configure(e,n,t),Zt.addBox(e,n),e.titleBlock=n}var O1={id:"title",_element:Dp,start(e,t,n){L1(e,n)},stop(e){const t=e.titleBlock;Zt.removeBox(e,t),delete e.titleBlock},beforeUpdate(e,t,n){const i=e.titleBlock;Zt.configure(e,i,n),i.options=n},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Fi={average(e){if(!e.length)return!1;let t,n,i=0,r=0,s=0;for(t=0,n=e.length;t-1?e.split(` +`):e}function D1(e,t){const{element:n,datasetIndex:i,index:r}=t,s=e.getDatasetMeta(i).controller,{label:o,value:l}=s.getLabelAndValue(r);return{chart:e,label:o,parsed:s.getParsed(r),raw:e.data.datasets[i].data[r],formattedValue:l,dataset:s.getDataset(),dataIndex:r,datasetIndex:i,element:n}}function xf(e,t){const n=e.chart.ctx,{body:i,footer:r,title:s}=e,{boxWidth:o,boxHeight:l}=t,a=ut(t.bodyFont),u=ut(t.titleFont),c=ut(t.footerFont),f=s.length,h=r.length,d=i.length,y=St(t.padding);let m=y.height,x=0,p=i.reduce((_,w)=>_+w.before.length+w.lines.length+w.after.length,0);if(p+=e.beforeBody.length+e.afterBody.length,f&&(m+=f*u.lineHeight+(f-1)*t.titleSpacing+t.titleMarginBottom),p){const _=t.displayColors?Math.max(l,a.lineHeight):a.lineHeight;m+=d*_+(p-d)*a.lineHeight+(p-1)*t.bodySpacing}h&&(m+=t.footerMarginTop+h*c.lineHeight+(h-1)*t.footerSpacing);let g=0;const v=function(_){x=Math.max(x,n.measureText(_).width+g)};return n.save(),n.font=u.string,B(e.title,v),n.font=a.string,B(e.beforeBody.concat(e.afterBody),v),g=t.displayColors?o+2+t.boxPadding:0,B(i,_=>{B(_.before,v),B(_.lines,v),B(_.after,v)}),g=0,n.font=c.string,B(e.footer,v),n.restore(),x+=y.width,{width:x,height:m}}function z1(e,t){const{y:n,height:i}=t;return ne.height-i/2?"bottom":"center"}function R1(e,t,n,i){const{x:r,width:s}=i,o=n.caretSize+n.caretPadding;if(e==="left"&&r+s+o>t.width||e==="right"&&r-s-o<0)return!0}function F1(e,t,n,i){const{x:r,width:s}=n,{width:o,chartArea:{left:l,right:a}}=e;let u="center";return i==="center"?u=r<=(l+a)/2?"left":"right":r<=s/2?u="left":r>=o-s/2&&(u="right"),R1(u,e,t,n)&&(u="center"),u}function _f(e,t,n){const i=n.yAlign||t.yAlign||z1(e,n);return{xAlign:n.xAlign||t.xAlign||F1(e,t,n,i),yAlign:i}}function A1(e,t){let{x:n,width:i}=e;return t==="right"?n-=i:t==="center"&&(n-=i/2),n}function I1(e,t,n){let{y:i,height:r}=e;return t==="top"?i+=n:t==="bottom"?i-=r+n:i-=r/2,i}function wf(e,t,n,i){const{caretSize:r,caretPadding:s,cornerRadius:o}=e,{xAlign:l,yAlign:a}=n,u=r+s,{topLeft:c,topRight:f,bottomLeft:h,bottomRight:d}=kn(o);let y=A1(t,l);const m=I1(t,a,u);return a==="center"?l==="left"?y+=u:l==="right"&&(y-=u):l==="left"?y-=Math.max(c,h)+r:l==="right"&&(y+=Math.max(f,d)+r),{x:se(y,0,i.width-t.width),y:se(m,0,i.height-t.height)}}function qr(e,t,n){const i=St(n.padding);return t==="center"?e.x+e.width/2:t==="right"?e.x+e.width-i.right:e.x+i.left}function kf(e){return fe([],ke(e))}function N1(e,t,n){return zn(e,{tooltip:t,tooltipItems:n,type:"tooltip"})}function Sf(e,t){const n=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return n?e.override(n):e}const zp={beforeTitle:_e,title(e){if(e.length>0){const t=e[0],n=t.chart.data.labels,i=n?n.length:0;if(this&&this.options&&this.options.mode==="dataset")return t.dataset.label||"";if(t.label)return t.label;if(i>0&&t.dataIndex"u"?zp[t].call(n,i):r}class ql extends on{constructor(t){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=t.chart,this.options=t.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(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const n=this.chart,i=this.options.setContext(this.getContext()),r=i.enabled&&n.options.animation&&i.animations,s=new vp(this.chart,r);return r._cacheable&&(this._cachedAnimations=Object.freeze(s)),s}getContext(){return this.$context||(this.$context=N1(this.chart.getContext(),this,this._tooltipItems))}getTitle(t,n){const{callbacks:i}=n,r=Tt(i,"beforeTitle",this,t),s=Tt(i,"title",this,t),o=Tt(i,"afterTitle",this,t);let l=[];return l=fe(l,ke(r)),l=fe(l,ke(s)),l=fe(l,ke(o)),l}getBeforeBody(t,n){return kf(Tt(n.callbacks,"beforeBody",this,t))}getBody(t,n){const{callbacks:i}=n,r=[];return B(t,s=>{const o={before:[],lines:[],after:[]},l=Sf(i,s);fe(o.before,ke(Tt(l,"beforeLabel",this,s))),fe(o.lines,Tt(l,"label",this,s)),fe(o.after,ke(Tt(l,"afterLabel",this,s))),r.push(o)}),r}getAfterBody(t,n){return kf(Tt(n.callbacks,"afterBody",this,t))}getFooter(t,n){const{callbacks:i}=n,r=Tt(i,"beforeFooter",this,t),s=Tt(i,"footer",this,t),o=Tt(i,"afterFooter",this,t);let l=[];return l=fe(l,ke(r)),l=fe(l,ke(s)),l=fe(l,ke(o)),l}_createItems(t){const n=this._active,i=this.chart.data,r=[],s=[],o=[];let l=[],a,u;for(a=0,u=n.length;at.filter(c,f,h,i))),t.itemSort&&(l=l.sort((c,f)=>t.itemSort(c,f,i))),B(l,c=>{const f=Sf(t.callbacks,c);r.push(Tt(f,"labelColor",this,c)),s.push(Tt(f,"labelPointStyle",this,c)),o.push(Tt(f,"labelTextColor",this,c))}),this.labelColors=r,this.labelPointStyles=s,this.labelTextColors=o,this.dataPoints=l,l}update(t,n){const i=this.options.setContext(this.getContext()),r=this._active;let s,o=[];if(!r.length)this.opacity!==0&&(s={opacity:0});else{const l=Fi[i.position].call(this,r,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const a=this._size=xf(this,i),u=Object.assign({},l,a),c=_f(this.chart,i,u),f=wf(i,u,c,this.chart);this.xAlign=c.xAlign,this.yAlign=c.yAlign,s={opacity:1,x:f.x,y:f.y,width:a.width,height:a.height,caretX:l.x,caretY:l.y}}this._tooltipItems=o,this.$context=void 0,s&&this._resolveAnimations().update(this,s),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:n})}drawCaret(t,n,i,r){const s=this.getCaretPosition(t,i,r);n.lineTo(s.x1,s.y1),n.lineTo(s.x2,s.y2),n.lineTo(s.x3,s.y3)}getCaretPosition(t,n,i){const{xAlign:r,yAlign:s}=this,{caretSize:o,cornerRadius:l}=i,{topLeft:a,topRight:u,bottomLeft:c,bottomRight:f}=kn(l),{x:h,y:d}=t,{width:y,height:m}=n;let x,p,g,v,_,w;return s==="center"?(_=d+m/2,r==="left"?(x=h,p=x-o,v=_+o,w=_-o):(x=h+y,p=x+o,v=_-o,w=_+o),g=x):(r==="left"?p=h+Math.max(a,c)+o:r==="right"?p=h+y-Math.max(u,f)-o:p=this.caretX,s==="top"?(v=d,_=v-o,x=p-o,g=p+o):(v=d+m,_=v+o,x=p+o,g=p-o),w=v),{x1:x,x2:p,x3:g,y1:v,y2:_,y3:w}}drawTitle(t,n,i){const r=this.title,s=r.length;let o,l,a;if(s){const u=ii(i.rtl,this.x,this.width);for(t.x=qr(this,i.titleAlign,i),n.textAlign=u.textAlign(i.titleAlign),n.textBaseline="middle",o=ut(i.titleFont),l=i.titleSpacing,n.fillStyle=i.titleColor,n.font=o.string,a=0;ag!==0)?(t.beginPath(),t.fillStyle=s.multiKeyBackground,gr(t,{x:m,y,w:u,h:a,radius:p}),t.fill(),t.stroke(),t.fillStyle=o.backgroundColor,t.beginPath(),gr(t,{x,y:y+1,w:u-2,h:a-2,radius:p}),t.fill()):(t.fillStyle=s.multiKeyBackground,t.fillRect(m,y,u,a),t.strokeRect(m,y,u,a),t.fillStyle=o.backgroundColor,t.fillRect(x,y+1,u-2,a-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,n,i){const{body:r}=this,{bodySpacing:s,bodyAlign:o,displayColors:l,boxHeight:a,boxWidth:u,boxPadding:c}=i,f=ut(i.bodyFont);let h=f.lineHeight,d=0;const y=ii(i.rtl,this.x,this.width),m=function(b){n.fillText(b,y.x(t.x+d),t.y+h/2),t.y+=h+s},x=y.textAlign(o);let p,g,v,_,w,k,S;for(n.textAlign=o,n.textBaseline="middle",n.font=f.string,t.x=qr(this,x,i),n.fillStyle=i.bodyColor,B(this.beforeBody,m),d=l&&x!=="right"?o==="center"?u/2+c:u+2+c:0,_=0,k=r.length;_0&&n.stroke()}_updateAnimationTarget(t){const n=this.chart,i=this.$animations,r=i&&i.x,s=i&&i.y;if(r||s){const o=Fi[t.position].call(this,this._active,this._eventPosition);if(!o)return;const l=this._size=xf(this,t),a=Object.assign({},o,this._size),u=_f(n,t,a),c=wf(t,a,u,n);(r._to!==c.x||s._to!==c.y)&&(this.xAlign=u.xAlign,this.yAlign=u.yAlign,this.width=l.width,this.height=l.height,this.caretX=o.x,this.caretY=o.y,this._resolveAnimations().update(this,c))}}_willRender(){return!!this.opacity}draw(t){const n=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(n);const r={width:this.width,height:this.height},s={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=St(n.padding),l=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;n.enabled&&l&&(t.save(),t.globalAlpha=i,this.drawBackground(s,t,r,n),mp(t,n.textDirection),s.y+=o.top,this.drawTitle(s,t,n),this.drawBody(s,t,n),this.drawFooter(s,t,n),yp(t,n.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,n){const i=this._active,r=t.map(({datasetIndex:l,index:a})=>{const u=this.chart.getDatasetMeta(l);if(!u)throw new Error("Cannot find a dataset at index "+l);return{datasetIndex:l,element:u.data[a],index:a}}),s=!Ws(i,r),o=this._positionChanged(r,n);(s||o)&&(this._active=r,this._eventPosition=n,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,n,i=!0){if(n&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const r=this.options,s=this._active||[],o=this._getActiveElements(t,s,n,i),l=this._positionChanged(o,t),a=n||!Ws(o,s)||l;return a&&(this._active=o,(r.enabled||r.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,n))),a}_getActiveElements(t,n,i,r){const s=this.options;if(t.type==="mouseout")return[];if(!r)return n;const o=this.chart.getElementsAtEventForMode(t,s.mode,s,i);return s.reverse&&o.reverse(),o}_positionChanged(t,n){const{caretX:i,caretY:r,options:s}=this,o=Fi[s.position].call(this,t,n);return o!==!1&&(i!==o.x||r!==o.y)}}z(ql,"positioners",Fi);var j1={id:"tooltip",_element:ql,positioners:Fi,afterInit(e,t,n){n&&(e.tooltip=new ql({chart:e,options:n}))},beforeUpdate(e,t,n){e.tooltip&&e.tooltip.initialize(n)},reset(e,t,n){e.tooltip&&e.tooltip.initialize(n)},afterDraw(e){const t=e.tooltip;if(t&&t._willRender()){const n={tooltip:t};if(e.notifyPlugins("beforeTooltipDraw",{...n,cancelable:!0})===!1)return;t.draw(e.ctx),e.notifyPlugins("afterTooltipDraw",n)}},afterEvent(e,t){if(e.tooltip){const n=t.replay;e.tooltip.handleEvent(t.event,n,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(e,t)=>t.bodyFont.size,boxWidth:(e,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:zp},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:e=>e!=="filter"&&e!=="itemSort"&&e!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};const B1=(e,t,n,i)=>(typeof t=="string"?(n=e.push(t)-1,i.unshift({index:n,label:t})):isNaN(t)&&(n=null),n);function H1(e,t,n,i){const r=e.indexOf(t);if(r===-1)return B1(e,t,n,i);const s=e.lastIndexOf(t);return r!==s?n:r}const V1=(e,t)=>e===null?null:se(Math.round(e),0,t);function bf(e){const t=this.getLabels();return e>=0&&en.length-1?null:this.getPixelForValue(n[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}}z(ta,"id","category"),z(ta,"defaults",{ticks:{callback:bf}});function W1(e,t){const n=[],{bounds:r,step:s,min:o,max:l,precision:a,count:u,maxTicks:c,maxDigits:f,includeBounds:h}=e,d=s||1,y=c-1,{min:m,max:x}=t,p=!V(o),g=!V(l),v=!V(u),_=(x-m)/(f+1);let w=Ec((x-m)/y/d)*d,k,S,b,T;if(w<1e-14&&!p&&!g)return[{value:m},{value:x}];T=Math.ceil(x/w)-Math.floor(m/w),T>y&&(w=Ec(T*w/y/d)*d),V(a)||(k=Math.pow(10,a),w=Math.ceil(w*k)/k),r==="ticks"?(S=Math.floor(m/w)*w,b=Math.ceil(x/w)*w):(S=m,b=x),p&&g&&s&&K0((l-o)/s,w/1e3)?(T=Math.round(Math.min((l-o)/w,c)),w=(l-o)/T,S=o,b=l):v?(S=p?o:S,b=g?l:b,T=u-1,w=(b-S)/T):(T=(b-S)/w,ps(T,Math.round(T),w/1e3)?T=Math.round(T):T=Math.ceil(T));const E=Math.max(Tc(w),Tc(S));k=Math.pow(10,V(a)?E:a),S=Math.round(S*k)/k,b=Math.round(b*k)/k;let L=0;for(p&&(h&&S!==o?(n.push({value:o}),Sl)break;n.push({value:R})}return g&&h&&b!==l?n.length&&ps(n[n.length-1].value,l,Cf(l,_,e))?n[n.length-1].value=l:n.push({value:l}):(!g||b===l)&&n.push({value:b}),n}function Cf(e,t,{horizontal:n,minRotation:i}){const r=$e(i),s=(n?Math.sin(r):Math.cos(r))||.001,o=.75*t*(""+e).length;return Math.min(t/s,o)}class Gs extends Rn{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,n){return V(t)||(typeof t=="number"||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:n,maxDefined:i}=this.getUserBounds();let{min:r,max:s}=this;const o=a=>r=n?r:a,l=a=>s=i?s:a;if(t){const a=en(r),u=en(s);a<0&&u<0?l(0):a>0&&u>0&&o(0)}if(r===s){let a=s===0?1:Math.abs(s*.05);l(s+a),t||o(r-a)}this.min=r,this.max=s}getTickLimit(){const t=this.options.ticks;let{maxTicksLimit:n,stepSize:i}=t,r;return i?(r=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,r>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${r} ticks. Limiting to 1000.`),r=1e3)):(r=this.computeTickLimit(),n=n||11),n&&(r=Math.min(n,r)),r}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,n=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const r={maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:n.precision,step:n.stepSize,count:n.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:n.minRotation||0,includeBounds:n.includeBounds!==!1},s=this._range||this,o=W1(r,s);return t.bounds==="ticks"&&ep(o,this,"value"),t.reverse?(o.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),o}configure(){const t=this.ticks;let n=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const r=(i-n)/Math.max(t.length-1,1)/2;n-=r,i+=r}this._startValue=n,this._endValue=i,this._valueRange=i-n}getLabelForValue(t){return ru(t,this.chart.options.locale,this.options.ticks.format)}}class ea extends Gs{determineDataLimits(){const{min:t,max:n}=this.getMinMax(!0);this.min=ft(t)?t:0,this.max=ft(n)?n:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),n=t?this.width:this.height,i=$e(this.options.ticks.minRotation),r=(t?Math.sin(i):Math.cos(i))||.001,s=this._resolveTickFontOptions(0);return Math.ceil(n/Math.min(40,s.lineHeight/r))}getPixelForValue(t){return t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}z(ea,"id","linear"),z(ea,"defaults",{ticks:{callback:go.formatters.numeric}});const yr=e=>Math.floor(We(e)),dn=(e,t)=>Math.pow(10,yr(e)+t);function Mf(e){return e/Math.pow(10,yr(e))===1}function Pf(e,t,n){const i=Math.pow(10,n),r=Math.floor(e/i);return Math.ceil(t/i)-r}function $1(e,t){const n=t-e;let i=yr(n);for(;Pf(e,t,i)>10;)i++;for(;Pf(e,t,i)<10;)i--;return Math.min(i,yr(e))}function U1(e,{min:t,max:n}){t=Bt(e.min,t);const i=[],r=yr(t);let s=$1(t,n),o=s<0?Math.pow(10,Math.abs(s)):1;const l=Math.pow(10,s),a=r>s?Math.pow(10,r):0,u=Math.round((t-a)*o)/o,c=Math.floor((t-a)/l/10)*l*10;let f=Math.floor((u-c)/Math.pow(10,s)),h=Bt(e.min,Math.round((a+c+f*Math.pow(10,s))*o)/o);for(;h=10?f=f<15?15:20:f++,f>=20&&(s++,f=2,o=s>=0?1:o),h=Math.round((a+c+f*Math.pow(10,s))*o)/o;const d=Bt(e.max,h);return i.push({value:d,major:Mf(d),significand:f}),i}class Ef extends Rn{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,n){const i=Gs.prototype.parse.apply(this,[t,n]);if(i===0){this._zero=!0;return}return ft(i)&&i>0?i:null}determineDataLimits(){const{min:t,max:n}=this.getMinMax(!0);this.min=ft(t)?Math.max(0,t):null,this.max=ft(n)?Math.max(0,n):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!ft(this._userMin)&&(this.min=t===dn(this.min,0)?dn(this.min,-1):dn(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:n}=this.getUserBounds();let i=this.min,r=this.max;const s=l=>i=t?i:l,o=l=>r=n?r:l;i===r&&(i<=0?(s(1),o(10)):(s(dn(i,-1)),o(dn(r,1)))),i<=0&&s(dn(r,-1)),r<=0&&o(dn(i,1)),this.min=i,this.max=r}buildTicks(){const t=this.options,n={min:this._userMin,max:this._userMax},i=U1(n,this);return t.bounds==="ticks"&&ep(i,this,"value"),t.reverse?(i.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),i}getLabelForValue(t){return t===void 0?"0":ru(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=We(t),this._valueRange=We(this.max)-We(t)}getPixelForValue(t){return(t===void 0||t===0)&&(t=this.min),t===null||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(We(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const n=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+n*this._valueRange)}}z(Ef,"id","logarithmic"),z(Ef,"defaults",{ticks:{callback:go.formatters.logarithmic,major:{enabled:!0}}});function na(e){const t=e.ticks;if(t.display&&e.display){const n=St(t.backdropPadding);return j(t.font&&t.font.size,nt.font.size)+n.height}return 0}function Y1(e,t,n){return n=G(n)?n:[n],{w:hy(e,t.string,n),h:n.length*t.lineHeight}}function Tf(e,t,n,i,r){return e===i||e===r?{start:t-n/2,end:t+n/2}:er?{start:t-n,end:t}:{start:t,end:t+n}}function K1(e){const t={l:e.left+e._padding.left,r:e.right-e._padding.right,t:e.top+e._padding.top,b:e.bottom-e._padding.bottom},n=Object.assign({},t),i=[],r=[],s=e._pointLabels.length,o=e.options.pointLabels,l=o.centerPointLabels?mt/s:0;for(let a=0;at.r&&(l=(i.end-t.r)/s,e.r=Math.max(e.r,t.r+l)),r.startt.b&&(a=(r.end-t.b)/o,e.b=Math.max(e.b,t.b+a))}function X1(e,t,n){const i=e.drawingArea,{extra:r,additionalAngle:s,padding:o,size:l}=n,a=e.getPointPosition(t,i+r+o,s),u=Math.round(eu(pe(a.angle+zt))),c=tx(a.y,l.h,u),f=J1(u),h=q1(a.x,l.w,f);return{visible:!0,x:a.x,y:c,textAlign:f,left:h,top:c,right:h+l.w,bottom:c+l.h}}function G1(e,t){if(!t)return!0;const{left:n,top:i,right:r,bottom:s}=e;return!(Gn({x:n,y:i},t)||Gn({x:n,y:s},t)||Gn({x:r,y:i},t)||Gn({x:r,y:s},t))}function Z1(e,t,n){const i=[],r=e._pointLabels.length,s=e.options,{centerPointLabels:o,display:l}=s.pointLabels,a={extra:na(s)/2,additionalAngle:o?mt/r:0};let u;for(let c=0;c270||n<90)&&(e-=t),e}function ex(e,t,n){const{left:i,top:r,right:s,bottom:o}=n,{backdropColor:l}=t;if(!V(l)){const a=kn(t.borderRadius),u=St(t.backdropPadding);e.fillStyle=l;const c=i-u.left,f=r-u.top,h=s-i+u.width,d=o-r+u.height;Object.values(a).some(y=>y!==0)?(e.beginPath(),gr(e,{x:c,y:f,w:h,h:d,radius:a}),e.fill()):e.fillRect(c,f,h,d)}}function nx(e,t){const{ctx:n,options:{pointLabels:i}}=e;for(let r=t-1;r>=0;r--){const s=e._pointLabelItems[r];if(!s.visible)continue;const o=i.setContext(e.getPointLabelContext(r));ex(n,o,s);const l=ut(o.font),{x:a,y:u,textAlign:c}=s;Ln(n,e._pointLabels[r],a,u+l.lineHeight/2,l,{color:o.color,textAlign:c,textBaseline:"middle"})}}function Rp(e,t,n,i){const{ctx:r}=e;if(n)r.arc(e.xCenter,e.yCenter,t,0,ve);else{let s=e.getPointPosition(0,t);r.moveTo(s.x,s.y);for(let o=1;o{const r=$(this.options.pointLabels.callback,[n,i],this);return r||r===0?r:""}).filter((n,i)=>this.chart.getDataVisibility(i))}fit(){const t=this.options;t.display&&t.pointLabels.display?K1(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,n,i,r){this.xCenter+=Math.floor((t-n)/2),this.yCenter+=Math.floor((i-r)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,n,i,r))}getIndexAngle(t){const n=ve/(this._pointLabels.length||1),i=this.options.startAngle||0;return pe(t*n+$e(i))}getDistanceFromCenterForValue(t){if(V(t))return NaN;const n=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*n:(t-this.min)*n}getValueForDistanceFromCenter(t){if(V(t))return NaN;const n=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-n:this.min+n}getPointLabelContext(t){const n=this._pointLabels||[];if(t>=0&&t{if(f!==0){a=this.getDistanceFromCenterForValue(c.value);const h=this.getContext(f),d=r.setContext(h),y=s.setContext(h);ix(this,d,a,o,y)}}),i.display){for(t.save(),l=o-1;l>=0;l--){const c=i.setContext(this.getPointLabelContext(l)),{color:f,lineWidth:h}=c;!h||!f||(t.lineWidth=h,t.strokeStyle=f,t.setLineDash(c.borderDash),t.lineDashOffset=c.borderDashOffset,a=this.getDistanceFromCenterForValue(n.ticks.reverse?this.min:this.max),u=this.getPointPosition(l,a),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(u.x,u.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,n=this.options,i=n.ticks;if(!i.display)return;const r=this.getIndexAngle(0);let s,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(r),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach((l,a)=>{if(a===0&&!n.reverse)return;const u=i.setContext(this.getContext(a)),c=ut(u.font);if(s=this.getDistanceFromCenterForValue(this.ticks[a].value),u.showLabelBackdrop){t.font=c.string,o=t.measureText(l.label).width,t.fillStyle=u.backdropColor;const f=St(u.backdropPadding);t.fillRect(-o/2-f.left,-s-c.size/2-f.top,o+f.width,c.size+f.height)}Ln(t,l.label,0,-s,c,{color:u.color})}),t.restore()}drawTitle(){}}z(ts,"id","radialLinear"),z(ts,"defaults",{display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:go.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(t){return t},padding:5,centerPointLabels:!1}}),z(ts,"defaultRoutes",{"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"}),z(ts,"descriptors",{angleLines:{_fallback:"grid"}});const vo={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}},Ot=Object.keys(vo);function sx(e,t){return e-t}function Lf(e,t){if(V(t))return null;const n=e._adapter,{parser:i,round:r,isoWeekday:s}=e._parseOpts;let o=t;return typeof i=="function"&&(o=i(o)),ft(o)||(o=typeof i=="string"?n.parse(o,i):n.parse(o)),o===null?null:(r&&(o=r==="week"&&(Ys(s)||s===!0)?n.startOf(o,"isoWeek",s):n.startOf(o,r)),+o)}function Of(e,t,n,i){const r=Ot.length;for(let s=Ot.indexOf(e);s=Ot.indexOf(n);s--){const o=Ot[s];if(vo[o].common&&e._adapter.diff(r,i,o)>=t-1)return o}return Ot[n?Ot.indexOf(n):0]}function lx(e){for(let t=Ot.indexOf(e)+1,n=Ot.length;t=t?n[i]:n[r];e[s]=!0}}function ax(e,t,n,i){const r=e._adapter,s=+r.startOf(t[0].value,i),o=t[t.length-1].value;let l,a;for(l=s;l<=o;l=+r.add(l,1,i))a=n[l],a>=0&&(t[a].major=!0);return t}function zf(e,t,n){const i=[],r={},s=t.length;let o,l;for(o=0;o+t.value))}initOffsets(t=[]){let n=0,i=0,r,s;this.options.offset&&t.length&&(r=this.getDecimalForValue(t[0]),t.length===1?n=1-r:n=(this.getDecimalForValue(t[1])-r)/2,s=this.getDecimalForValue(t[t.length-1]),t.length===1?i=s:i=(s-this.getDecimalForValue(t[t.length-2]))/2);const o=t.length<3?.5:.25;n=se(n,0,o),i=se(i,0,o),this._offsets={start:n,end:i,factor:1/(n+1+i)}}_generate(){const t=this._adapter,n=this.min,i=this.max,r=this.options,s=r.time,o=s.unit||Of(s.minUnit,n,i,this._getLabelCapacity(n)),l=j(r.ticks.stepSize,1),a=o==="week"?s.isoWeekday:!1,u=Ys(a)||a===!0,c={};let f=n,h,d;if(u&&(f=+t.startOf(f,"isoWeek",a)),f=+t.startOf(f,u?"day":o),t.diff(i,n,o)>1e5*l)throw new Error(n+" and "+i+" are too far apart with stepSize of "+l+" "+o);const y=r.ticks.source==="data"&&this.getDataTimestamps();for(h=f,d=0;hm-x).map(m=>+m)}getLabelForValue(t){const n=this._adapter,i=this.options.time;return i.tooltipFormat?n.format(t,i.tooltipFormat):n.format(t,i.displayFormats.datetime)}format(t,n){const r=this.options.time.displayFormats,s=this._unit,o=n||r[s];return this._adapter.format(t,o)}_tickFormatFunction(t,n,i,r){const s=this.options,o=s.ticks.callback;if(o)return $(o,[t,n,i],this);const l=s.time.displayFormats,a=this._unit,u=this._majorUnit,c=a&&l[a],f=u&&l[u],h=i[n],d=u&&f&&h&&h.major;return this._adapter.format(t,r||(d?f:c))}generateTickLabels(t){let n,i,r;for(n=0,i=t.length;n0?l:1}getDataTimestamps(){let t=this._cache.data||[],n,i;if(t.length)return t;const r=this.getMatchingVisibleMetas();if(this._normalized&&r.length)return this._cache.data=r[0].controller.getAllParsedValues(this);for(n=0,i=r.length;n=e[i].pos&&t<=e[r].pos&&({lo:i,hi:r}=Xl(e,"pos",t)),{pos:s,time:l}=e[i],{pos:o,time:a}=e[r]):(t>=e[i].time&&t<=e[r].time&&({lo:i,hi:r}=Xl(e,"time",t)),{time:s,pos:l}=e[i],{time:o,pos:a}=e[r]);const u=o-s;return u?l+(a-l)*(t-s)/u:l}class Rf extends Zs{constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),n=this._table=this.buildLookupTable(t);this._minPos=es(n,this.min),this._tableRange=es(n,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:n,max:i}=this,r=[],s=[];let o,l,a,u,c;for(o=0,l=t.length;o=n&&u<=i&&r.push(u);if(r.length<2)return[{time:n,pos:0},{time:i,pos:1}];for(o=0,l=r.length;o2&&arguments[2]!==void 0?arguments[2]:Fp;const i=[];e.datasets=t.map(r=>{const s=e.datasets.find(o=>o[n]===r[n]);return!s||!r.data||i.includes(s)?{...r}:(i.push(s),Object.assign(s,r),s)})}function cx(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Fp;const n={labels:[],datasets:[]};return Ap(n,e.labels),Ip(n,e.datasets,t),n}function fx(e,t){const{height:n=150,width:i=300,redraw:r=!1,datasetIdKey:s,type:o,data:l,options:a,plugins:u=[],fallbackContent:c,updateMode:f,...h}=e,d=Ct.useRef(null),y=Ct.useRef(),m=()=>{d.current&&(y.current=new yo(d.current,{type:o,data:cx(l,s),options:a&&{...a},plugins:u}),Ff(t,y.current))},x=()=>{Ff(t,null),y.current&&(y.current.destroy(),y.current=null)};return Ct.useEffect(()=>{!r&&y.current&&a&&ux(y.current,a)},[r,a]),Ct.useEffect(()=>{!r&&y.current&&Ap(y.current.config.data,l.labels)},[r,l.labels]),Ct.useEffect(()=>{!r&&y.current&&l.datasets&&Ip(y.current.config.data,l.datasets,s)},[r,l.datasets]),Ct.useEffect(()=>{y.current&&(r?(x(),setTimeout(m)):y.current.update(f))},[r,a,l.labels,l.datasets,f]),Ct.useEffect(()=>{y.current&&(x(),setTimeout(m))},[o]),Ct.useEffect(()=>(m(),()=>x()),[]),Uf.createElement("canvas",Object.assign({ref:d,role:"img",height:n,width:i},h),c)}const hx=Ct.forwardRef(fx);function dx(e,t){return yo.register(t),Ct.forwardRef((n,i)=>Uf.createElement(hx,Object.assign({},n,{ref:i,type:e})))}const px=dx("bar",gs);yo.register(ta,ea,vs,O1,j1,T1);const gx={indexAxis:"y",scales:{y:{ticks:{display:!1},grid:{display:!1}},x:{position:"top"}},elements:{bar:{borderWidth:2}},responsive:!0,barThickness:3,plugins:{legend:{position:"right",display:!1},title:{display:!1}},maintainAspectRatio:!1},mx=({data:e})=>{const t=g0(e),n=p0(e),i={labels:t,datasets:[{label:"All Requests",data:n,borderColor:"rgb(119, 219, 137)",backgroundColor:"rgba(1, 19, 1, 0.5)"}]};return N.jsx(px,{options:gx,data:i})};function yx(e,t){if(!("method"in t)||t.method==="")return;let{name:n,method:i,traceId:r,startTime:s,endTime:o,applicationType:l,originatingService:a,status:u,protocol:c}=t;if(!n.startsWith("/?key=")&&n!=="/"&&!(n.includes("GET")||n.includes("PATCH")||n.includes("PUT")||n.includes("DELETE")||n.includes("POST"))){if(n.startsWith("/_next/static/")){const f=n.lastIndexOf("/");n=n.slice(f+1)}e(f=>{const h=new Map([...f.entries()]),d=`${i}, ${n}, ${r}`;if(h.has(d)){const m=h.get(d);let x=!1;sm.trueEndTime&&(m.trueEndTime=o,x=!0),m.status===void 0&&"status"in t&&(m.status=t.status),m.protocol===void 0&&"protocol"in t&&(m.protocol=t.protocol),x&&(m.duration=m.trueEndTime-m.trueStartTime)}else{const m={traceId:r,applicationType:l,originatingService:a,method:i,status:u,protocol:c,relativeStartTime:0,trueStartTime:s,trueEndTime:o,duration:o-s,name:n};h.set(d,m)}return vx(h)})}}function vx(e){const t=Array.from(e.entries());t.sort((r,s)=>r[1].trueStartTime-s[1].trueStartTime);const n=new Map(t),i=n.entries().next().value;return n.forEach(r=>{r.relativeStartTime=r.trueStartTime-i[1].trueStartTime}),n}const xx=({setRelevant:e})=>{const t=()=>{e(new Map)};return N.jsx("button",{className:"bg-violet-800 border-[1px] border-slate-400 mb-5 p-2 ml-auto",onClick:t,children:"Clear History"})},_x=()=>N.jsxs("div",{className:"h-[67vh] p-56 flex flex-col justify-center text-center text-lg gap-5",children:[N.jsx("p",{children:" Recording network activity ... "}),N.jsx("p",{children:" Perform a request or refresh the page "})]});function wx(){const[e,t]=Ct.useState(new Map);return Ct.useEffect(()=>{new EventSource("http://localhost:3002/stream/sse").addEventListener("message",i=>{try{yx(t,JSON.parse(i.data))}catch(r){console.log("failed",r)}})},[]),N.jsxs("div",{className:"flex flex-col",children:[N.jsx("div",{className:e.size>0?"h-[33vh]":"h-[33vh] border-b-[1px] border-slate-400",children:N.jsx(mx,{data:e})}),e.size>0?N.jsxs("div",{children:[N.jsx(xx,{setRelevant:t}),N.jsx(d0,{data:e})]}):N.jsx(_x,{})]})}const kx=document.getElementById("root"),Sx=Gd(kx);Sx.render(N.jsx(wx,{})); diff --git a/chrome-extension/dist/assets/panel-a9d3a4ab.js b/chrome-extension/dist/assets/panel-a9d3a4ab.js deleted file mode 100644 index 12ce512..0000000 --- a/chrome-extension/dist/assets/panel-a9d3a4ab.js +++ /dev/null @@ -1,57 +0,0 @@ -var Bp=Object.defineProperty;var Hp=(e,t,n)=>t in e?Bp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var R=(e,t,n)=>(Hp(e,typeof t!="symbol"?t+"":t,n),n);import"./modulepreload-polyfill-3cfb730f.js";function Vp(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Af={exports:{}},Js={},Nf={exports:{}},I={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var xr=Symbol.for("react.element"),Wp=Symbol.for("react.portal"),$p=Symbol.for("react.fragment"),Up=Symbol.for("react.strict_mode"),Yp=Symbol.for("react.profiler"),Kp=Symbol.for("react.provider"),Qp=Symbol.for("react.context"),Xp=Symbol.for("react.forward_ref"),Gp=Symbol.for("react.suspense"),Zp=Symbol.for("react.memo"),qp=Symbol.for("react.lazy"),du=Symbol.iterator;function Jp(e){return e===null||typeof e!="object"?null:(e=du&&e[du]||e["@@iterator"],typeof e=="function"?e:null)}var jf={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Bf=Object.assign,Hf={};function di(e,t,n){this.props=e,this.context=t,this.refs=Hf,this.updater=n||jf}di.prototype.isReactComponent={};di.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};di.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Vf(){}Vf.prototype=di.prototype;function ra(e,t,n){this.props=e,this.context=t,this.refs=Hf,this.updater=n||jf}var sa=ra.prototype=new Vf;sa.constructor=ra;Bf(sa,di.prototype);sa.isPureReactComponent=!0;var pu=Array.isArray,Wf=Object.prototype.hasOwnProperty,oa={current:null},$f={key:!0,ref:!0,__self:!0,__source:!0};function Uf(e,t,n){var i,r={},s=null,o=null;if(t!=null)for(i in t.ref!==void 0&&(o=t.ref),t.key!==void 0&&(s=""+t.key),t)Wf.call(t,i)&&!$f.hasOwnProperty(i)&&(r[i]=t[i]);var l=arguments.length-2;if(l===1)r.children=n;else if(1>>1,Y=M[W];if(0>>1;Wr(xe,D))jtr(Mr,xe)?(M[W]=Mr,M[jt]=D,W=jt):(M[W]=xe,M[Nt]=D,W=Nt);else if(jtr(Mr,D))M[W]=Mr,M[jt]=D,W=jt;else break t}}return O}function r(M,O){var D=M.sortIndex-O.sortIndex;return D!==0?D:M.id-O.id}if(typeof performance=="object"&&typeof performance.now=="function"){var s=performance;e.unstable_now=function(){return s.now()}}else{var o=Date,l=o.now();e.unstable_now=function(){return o.now()-l}}var a=[],u=[],c=1,f=null,h=3,d=!1,m=!1,y=!1,x=typeof setTimeout=="function"?setTimeout:null,p=typeof clearTimeout=="function"?clearTimeout:null,g=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function v(M){for(var O=n(u);O!==null;){if(O.callback===null)i(u);else if(O.startTime<=M)i(u),O.sortIndex=O.expirationTime,t(a,O);else break;O=n(u)}}function _(M){if(y=!1,v(M),!m)if(n(a)!==null)m=!0,it(w);else{var O=n(u);O!==null&&vt(_,O.startTime-M)}}function w(M,O){m=!1,y&&(y=!1,p(b),b=-1),d=!0;var D=h;try{for(v(O),f=n(a);f!==null&&(!(f.expirationTime>O)||M&&!L());){var W=f.callback;if(typeof W=="function"){f.callback=null,h=f.priorityLevel;var Y=W(f.expirationTime<=O);O=e.unstable_now(),typeof Y=="function"?f.callback=Y:f===n(a)&&i(a),v(O)}else i(a);f=n(a)}if(f!==null)var ue=!0;else{var Nt=n(u);Nt!==null&&vt(_,Nt.startTime-O),ue=!1}return ue}finally{f=null,h=D,d=!1}}var k=!1,S=null,b=-1,T=5,E=-1;function L(){return!(e.unstable_now()-EM||125W?(M.sortIndex=D,t(u,M),n(a)===null&&M===n(u)&&(y?(p(b),b=-1):y=!0,vt(_,D-W))):(M.sortIndex=Y,t(a,M),m||d||(m=!0,it(w))),M},e.unstable_shouldYield=L,e.unstable_wrapCallback=function(M){var O=h;return function(){var D=h;h=O;try{return M.apply(this,arguments)}finally{h=D}}}})(Gf);Xf.exports=Gf;var cg=Xf.exports;/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Zf=ct,$t=cg;function C(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),il=Object.prototype.hasOwnProperty,fg=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,mu={},yu={};function hg(e){return il.call(yu,e)?!0:il.call(mu,e)?!1:fg.test(e)?yu[e]=!0:(mu[e]=!0,!1)}function dg(e,t,n,i){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return i?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function pg(e,t,n,i){if(t===null||typeof t>"u"||dg(e,t,n,i))return!0;if(i)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Et(e,t,n,i,r,s,o){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=i,this.attributeNamespace=r,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=s,this.removeEmptyString=o}var mt={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){mt[e]=new Et(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];mt[t]=new Et(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){mt[e]=new Et(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){mt[e]=new Et(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){mt[e]=new Et(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){mt[e]=new Et(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){mt[e]=new Et(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){mt[e]=new Et(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){mt[e]=new Et(e,5,!1,e.toLowerCase(),null,!1,!1)});var aa=/[\-:]([a-z])/g;function ua(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(aa,ua);mt[t]=new Et(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(aa,ua);mt[t]=new Et(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(aa,ua);mt[t]=new Et(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){mt[e]=new Et(e,1,!1,e.toLowerCase(),null,!1,!1)});mt.xlinkHref=new Et("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){mt[e]=new Et(e,1,!1,e.toLowerCase(),null,!0,!0)});function ca(e,t,n,i){var r=mt.hasOwnProperty(t)?mt[t]:null;(r!==null?r.type!==0:i||!(2l||r[o]!==s[l]){var a=` -`+r[o].replace(" at new "," at ");return e.displayName&&a.includes("")&&(a=a.replace("",e.displayName)),a}while(1<=o&&0<=l);break}}}finally{ko=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Ti(e):""}function gg(e){switch(e.tag){case 5:return Ti(e.type);case 16:return Ti("Lazy");case 13:return Ti("Suspense");case 19:return Ti("SuspenseList");case 0:case 2:case 15:return e=So(e.type,!1),e;case 11:return e=So(e.type.render,!1),e;case 1:return e=So(e.type,!0),e;default:return""}}function ll(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Nn:return"Fragment";case An:return"Portal";case rl:return"Profiler";case fa:return"StrictMode";case sl:return"Suspense";case ol:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case th:return(e.displayName||"Context")+".Consumer";case Jf:return(e._context.displayName||"Context")+".Provider";case ha:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case da:return t=e.displayName||null,t!==null?t:ll(e.type)||"Memo";case Ie:t=e._payload,e=e._init;try{return ll(e(t))}catch{}}return null}function mg(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ll(t);case 8:return t===fa?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function nn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function nh(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function yg(e){var t=nh(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),i=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var r=n.get,s=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return r.call(this)},set:function(o){i=""+o,s.call(this,o)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return i},setValue:function(o){i=""+o},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Tr(e){e._valueTracker||(e._valueTracker=yg(e))}function ih(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),i="";return e&&(i=nh(e)?e.checked?"true":"false":e.value),e=i,e!==n?(t.setValue(e),!0):!1}function _s(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function al(e,t){var n=t.checked;return tt({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function xu(e,t){var n=t.defaultValue==null?"":t.defaultValue,i=t.checked!=null?t.checked:t.defaultChecked;n=nn(t.value!=null?t.value:n),e._wrapperState={initialChecked:i,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function rh(e,t){t=t.checked,t!=null&&ca(e,"checked",t,!1)}function ul(e,t){rh(e,t);var n=nn(t.value),i=t.type;if(n!=null)i==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(i==="submit"||i==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?cl(e,t.type,n):t.hasOwnProperty("defaultValue")&&cl(e,t.type,nn(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function _u(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var i=t.type;if(!(i!=="submit"&&i!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function cl(e,t,n){(t!=="number"||_s(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Li=Array.isArray;function Zn(e,t,n,i){if(e=e.options,t){t={};for(var r=0;r"+t.valueOf().toString()+"",t=Lr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Gi(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Ii={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},vg=["Webkit","ms","Moz","O"];Object.keys(Ii).forEach(function(e){vg.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Ii[t]=Ii[e]})});function ah(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Ii.hasOwnProperty(e)&&Ii[e]?(""+t).trim():t+"px"}function uh(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var i=n.indexOf("--")===0,r=ah(n,t[n],i);n==="float"&&(n="cssFloat"),i?e.setProperty(n,r):e[n]=r}}var xg=tt({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function dl(e,t){if(t){if(xg[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(C(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(C(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(C(61))}if(t.style!=null&&typeof t.style!="object")throw Error(C(62))}}function pl(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var gl=null;function pa(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var ml=null,qn=null,Jn=null;function Su(e){if(e=kr(e)){if(typeof ml!="function")throw Error(C(280));var t=e.stateNode;t&&(t=ro(t),ml(e.stateNode,e.type,t))}}function ch(e){qn?Jn?Jn.push(e):Jn=[e]:qn=e}function fh(){if(qn){var e=qn,t=Jn;if(Jn=qn=null,Su(e),t)for(e=0;e>>=0,e===0?32:31-(Lg(e)/Og|0)|0}var Or=64,Dr=4194304;function Oi(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function bs(e,t){var n=e.pendingLanes;if(n===0)return 0;var i=0,r=e.suspendedLanes,s=e.pingedLanes,o=n&268435455;if(o!==0){var l=o&~r;l!==0?i=Oi(l):(s&=o,s!==0&&(i=Oi(s)))}else o=n&~r,o!==0?i=Oi(o):s!==0&&(i=Oi(s));if(i===0)return 0;if(t!==0&&t!==i&&!(t&r)&&(r=i&-i,s=t&-t,r>=s||r===16&&(s&4194240)!==0))return t;if(i&4&&(i|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=i;0n;n++)t.push(e);return t}function _r(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-oe(t),e[t]=n}function Fg(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var i=e.eventTimes;for(e=e.expirationTimes;0=Ni),Du=String.fromCharCode(32),zu=!1;function Oh(e,t){switch(e){case"keyup":return um.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Dh(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var jn=!1;function fm(e,t){switch(e){case"compositionend":return Dh(t);case"keypress":return t.which!==32?null:(zu=!0,Du);case"textInput":return e=t.data,e===Du&&zu?null:e;default:return null}}function hm(e,t){if(jn)return e==="compositionend"||!ka&&Oh(e,t)?(e=Th(),os=xa=Be=null,jn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=i}t:{for(;n;){if(n.nextSibling){n=n.nextSibling;break t}n=n.parentNode}n=void 0}n=Au(n)}}function Ih(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Ih(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Ah(){for(var e=window,t=_s();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=_s(e.document)}return t}function Sa(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function wm(e){var t=Ah(),n=e.focusedElem,i=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Ih(n.ownerDocument.documentElement,n)){if(i!==null&&Sa(n)){if(t=i.start,e=i.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var r=n.textContent.length,s=Math.min(i.start,r);i=i.end===void 0?s:Math.min(i.end,r),!e.extend&&s>i&&(r=i,i=s,s=r),r=Nu(n,s);var o=Nu(n,i);r&&o&&(e.rangeCount!==1||e.anchorNode!==r.node||e.anchorOffset!==r.offset||e.focusNode!==o.node||e.focusOffset!==o.offset)&&(t=t.createRange(),t.setStart(r.node,r.offset),e.removeAllRanges(),s>i?(e.addRange(t),e.extend(o.node,o.offset)):(t.setEnd(o.node,o.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Bn=null,kl=null,Bi=null,Sl=!1;function ju(e,t,n){var i=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Sl||Bn==null||Bn!==_s(i)||(i=Bn,"selectionStart"in i&&Sa(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),Bi&&nr(Bi,i)||(Bi=i,i=Ps(kl,"onSelect"),0Wn||(e.current=Tl[Wn],Tl[Wn]=null,Wn--)}function U(e,t){Wn++,Tl[Wn]=e.current,e.current=t}var rn={},St=an(rn),Rt=an(!1),bn=rn;function si(e,t){var n=e.type.contextTypes;if(!n)return rn;var i=e.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===t)return i.__reactInternalMemoizedMaskedChildContext;var r={},s;for(s in n)r[s]=t[s];return i&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=r),r}function Ft(e){return e=e.childContextTypes,e!=null}function Ts(){Q(Rt),Q(St)}function Yu(e,t,n){if(St.current!==rn)throw Error(C(168));U(St,t),U(Rt,n)}function Yh(e,t,n){var i=e.stateNode;if(t=t.childContextTypes,typeof i.getChildContext!="function")return n;i=i.getChildContext();for(var r in i)if(!(r in t))throw Error(C(108,mg(e)||"Unknown",r));return tt({},n,i)}function Ls(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||rn,bn=St.current,U(St,e),U(Rt,Rt.current),!0}function Ku(e,t,n){var i=e.stateNode;if(!i)throw Error(C(169));n?(e=Yh(e,t,bn),i.__reactInternalMemoizedMergedChildContext=e,Q(Rt),Q(St),U(St,e)):Q(Rt),U(Rt,n)}var be=null,so=!1,Ao=!1;function Kh(e){be===null?be=[e]:be.push(e)}function zm(e){so=!0,Kh(e)}function un(){if(!Ao&&be!==null){Ao=!0;var e=0,t=H;try{var n=be;for(H=1;e>=o,r-=o,Me=1<<32-oe(t)+r|n<b?(T=S,S=null):T=S.sibling;var E=h(p,S,v[b],_);if(E===null){S===null&&(S=T);break}e&&S&&E.alternate===null&&t(p,S),g=s(E,g,b),k===null?w=E:k.sibling=E,k=E,S=T}if(b===v.length)return n(p,S),X&&pn(p,b),w;if(S===null){for(;bb?(T=S,S=null):T=S.sibling;var L=h(p,S,E.value,_);if(L===null){S===null&&(S=T);break}e&&S&&L.alternate===null&&t(p,S),g=s(L,g,b),k===null?w=L:k.sibling=L,k=L,S=T}if(E.done)return n(p,S),X&&pn(p,b),w;if(S===null){for(;!E.done;b++,E=v.next())E=f(p,E.value,_),E!==null&&(g=s(E,g,b),k===null?w=E:k.sibling=E,k=E);return X&&pn(p,b),w}for(S=i(p,S);!E.done;b++,E=v.next())E=d(S,p,b,E.value,_),E!==null&&(e&&E.alternate!==null&&S.delete(E.key===null?b:E.key),g=s(E,g,b),k===null?w=E:k.sibling=E,k=E);return e&&S.forEach(function(F){return t(p,F)}),X&&pn(p,b),w}function x(p,g,v,_){if(typeof v=="object"&&v!==null&&v.type===Nn&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case Er:t:{for(var w=v.key,k=g;k!==null;){if(k.key===w){if(w=v.type,w===Nn){if(k.tag===7){n(p,k.sibling),g=r(k,v.props.children),g.return=p,p=g;break t}}else if(k.elementType===w||typeof w=="object"&&w!==null&&w.$$typeof===Ie&&tc(w)===k.type){n(p,k.sibling),g=r(k,v.props),g.ref=wi(p,k,v),g.return=p,p=g;break t}n(p,k);break}else t(p,k);k=k.sibling}v.type===Nn?(g=wn(v.props.children,p.mode,_,v.key),g.return=p,p=g):(_=ps(v.type,v.key,v.props,null,p.mode,_),_.ref=wi(p,g,v),_.return=p,p=_)}return o(p);case An:t:{for(k=v.key;g!==null;){if(g.key===k)if(g.tag===4&&g.stateNode.containerInfo===v.containerInfo&&g.stateNode.implementation===v.implementation){n(p,g.sibling),g=r(g,v.children||[]),g.return=p,p=g;break t}else{n(p,g);break}else t(p,g);g=g.sibling}g=Uo(v,p.mode,_),g.return=p,p=g}return o(p);case Ie:return k=v._init,x(p,g,k(v._payload),_)}if(Li(v))return m(p,g,v,_);if(mi(v))return y(p,g,v,_);jr(p,v)}return typeof v=="string"&&v!==""||typeof v=="number"?(v=""+v,g!==null&&g.tag===6?(n(p,g.sibling),g=r(g,v),g.return=p,p=g):(n(p,g),g=$o(v,p.mode,_),g.return=p,p=g),o(p)):n(p,g)}return x}var li=ed(!0),nd=ed(!1),Sr={},ye=an(Sr),or=an(Sr),lr=an(Sr);function xn(e){if(e===Sr)throw Error(C(174));return e}function Da(e,t){switch(U(lr,t),U(or,e),U(ye,Sr),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:hl(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=hl(t,e)}Q(ye),U(ye,t)}function ai(){Q(ye),Q(or),Q(lr)}function id(e){xn(lr.current);var t=xn(ye.current),n=hl(t,e.type);t!==n&&(U(or,e),U(ye,n))}function za(e){or.current===e&&(Q(ye),Q(or))}var q=an(0);function Is(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var No=[];function Ra(){for(var e=0;en?n:4,e(!0);var i=jo.transition;jo.transition={};try{e(!1),t()}finally{H=n,jo.transition=i}}function xd(){return te().memoizedState}function Am(e,t,n){var i=qe(e);if(n={lane:i,action:n,hasEagerState:!1,eagerState:null,next:null},_d(e))wd(t,n);else if(n=Zh(e,t,n,i),n!==null){var r=Mt();le(n,e,i,r),kd(n,t,i)}}function Nm(e,t,n){var i=qe(e),r={lane:i,action:n,hasEagerState:!1,eagerState:null,next:null};if(_d(e))wd(t,r);else{var s=e.alternate;if(e.lanes===0&&(s===null||s.lanes===0)&&(s=t.lastRenderedReducer,s!==null))try{var o=t.lastRenderedState,l=s(o,n);if(r.hasEagerState=!0,r.eagerState=l,ae(l,o)){var a=t.interleaved;a===null?(r.next=r,La(t)):(r.next=a.next,a.next=r),t.interleaved=r;return}}catch{}finally{}n=Zh(e,t,r,i),n!==null&&(r=Mt(),le(n,e,i,r),kd(n,t,i))}}function _d(e){var t=e.alternate;return e===J||t!==null&&t===J}function wd(e,t){Hi=As=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function kd(e,t,n){if(n&4194240){var i=t.lanes;i&=e.pendingLanes,n|=i,t.lanes=n,ma(e,n)}}var Ns={readContext:Jt,useCallback:xt,useContext:xt,useEffect:xt,useImperativeHandle:xt,useInsertionEffect:xt,useLayoutEffect:xt,useMemo:xt,useReducer:xt,useRef:xt,useState:xt,useDebugValue:xt,useDeferredValue:xt,useTransition:xt,useMutableSource:xt,useSyncExternalStore:xt,useId:xt,unstable_isNewReconciler:!1},jm={readContext:Jt,useCallback:function(e,t){return he().memoizedState=[e,t===void 0?null:t],e},useContext:Jt,useEffect:nc,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,cs(4194308,4,pd.bind(null,t,e),n)},useLayoutEffect:function(e,t){return cs(4194308,4,e,t)},useInsertionEffect:function(e,t){return cs(4,2,e,t)},useMemo:function(e,t){var n=he();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var i=he();return t=n!==void 0?n(t):t,i.memoizedState=i.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},i.queue=e,e=e.dispatch=Am.bind(null,J,e),[i.memoizedState,e]},useRef:function(e){var t=he();return e={current:e},t.memoizedState=e},useState:ec,useDebugValue:ja,useDeferredValue:function(e){return he().memoizedState=e},useTransition:function(){var e=ec(!1),t=e[0];return e=Im.bind(null,e[1]),he().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var i=J,r=he();if(X){if(n===void 0)throw Error(C(407));n=n()}else{if(n=t(),dt===null)throw Error(C(349));Mn&30||od(i,t,n)}r.memoizedState=n;var s={value:n,getSnapshot:t};return r.queue=s,nc(ad.bind(null,i,s,e),[e]),i.flags|=2048,cr(9,ld.bind(null,i,s,n,t),void 0,null),n},useId:function(){var e=he(),t=dt.identifierPrefix;if(X){var n=Pe,i=Me;n=(i&~(1<<32-oe(i)-1)).toString(32)+n,t=":"+t+"R"+n,n=ar++,0<\/script>",e=e.removeChild(e.firstChild)):typeof i.is=="string"?e=o.createElement(n,{is:i.is}):(e=o.createElement(n),n==="select"&&(o=e,i.multiple?o.multiple=!0:i.size&&(o.size=i.size))):e=o.createElementNS(e,n),e[ge]=t,e[sr]=i,Od(e,t,!1,!1),t.stateNode=e;t:{switch(o=pl(n,i),n){case"dialog":K("cancel",e),K("close",e),r=i;break;case"iframe":case"object":case"embed":K("load",e),r=i;break;case"video":case"audio":for(r=0;rci&&(t.flags|=128,i=!0,ki(s,!1),t.lanes=4194304)}else{if(!i)if(e=Is(o),e!==null){if(t.flags|=128,i=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),ki(s,!0),s.tail===null&&s.tailMode==="hidden"&&!o.alternate&&!X)return _t(t),null}else 2*rt()-s.renderingStartTime>ci&&n!==1073741824&&(t.flags|=128,i=!0,ki(s,!1),t.lanes=4194304);s.isBackwards?(o.sibling=t.child,t.child=o):(n=s.last,n!==null?n.sibling=o:t.child=o,s.last=o)}return s.tail!==null?(t=s.tail,s.rendering=t,s.tail=t.sibling,s.renderingStartTime=rt(),t.sibling=null,n=q.current,U(q,i?n&1|2:n&1),t):(_t(t),null);case 22:case 23:return Ua(),i=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==i&&(t.flags|=8192),i&&t.mode&1?Ht&1073741824&&(_t(t),t.subtreeFlags&6&&(t.flags|=8192)):_t(t),null;case 24:return null;case 25:return null}throw Error(C(156,t.tag))}function Km(e,t){switch(Ca(t),t.tag){case 1:return Ft(t.type)&&Ts(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ai(),Q(Rt),Q(St),Ra(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return za(t),null;case 13:if(Q(q),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(C(340));oi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Q(q),null;case 4:return ai(),null;case 10:return Ta(t.type._context),null;case 22:case 23:return Ua(),null;case 24:return null;default:return null}}var Hr=!1,kt=!1,Qm=typeof WeakSet=="function"?WeakSet:Set,P=null;function Kn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(i){et(e,t,i)}else n.current=null}function Hl(e,t,n){try{n()}catch(i){et(e,t,i)}}var fc=!1;function Xm(e,t){if(bl=Cs,e=Ah(),Sa(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else t:{n=(n=e.ownerDocument)&&n.defaultView||window;var i=n.getSelection&&n.getSelection();if(i&&i.rangeCount!==0){n=i.anchorNode;var r=i.anchorOffset,s=i.focusNode;i=i.focusOffset;try{n.nodeType,s.nodeType}catch{n=null;break t}var o=0,l=-1,a=-1,u=0,c=0,f=e,h=null;e:for(;;){for(var d;f!==n||r!==0&&f.nodeType!==3||(l=o+r),f!==s||i!==0&&f.nodeType!==3||(a=o+i),f.nodeType===3&&(o+=f.nodeValue.length),(d=f.firstChild)!==null;)h=f,f=d;for(;;){if(f===e)break e;if(h===n&&++u===r&&(l=o),h===s&&++c===i&&(a=o),(d=f.nextSibling)!==null)break;f=h,h=f.parentNode}f=d}n=l===-1||a===-1?null:{start:l,end:a}}else n=null}n=n||{start:0,end:0}}else n=null;for(Cl={focusedElem:e,selectionRange:n},Cs=!1,P=t;P!==null;)if(t=P,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,P=e;else for(;P!==null;){t=P;try{var m=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(m!==null){var y=m.memoizedProps,x=m.memoizedState,p=t.stateNode,g=p.getSnapshotBeforeUpdate(t.elementType===t.type?y:ne(t.type,y),x);p.__reactInternalSnapshotBeforeUpdate=g}break;case 3:var v=t.stateNode.containerInfo;v.nodeType===1?v.textContent="":v.nodeType===9&&v.documentElement&&v.removeChild(v.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(C(163))}}catch(_){et(t,t.return,_)}if(e=t.sibling,e!==null){e.return=t.return,P=e;break}P=t.return}return m=fc,fc=!1,m}function Vi(e,t,n){var i=t.updateQueue;if(i=i!==null?i.lastEffect:null,i!==null){var r=i=i.next;do{if((r.tag&e)===e){var s=r.destroy;r.destroy=void 0,s!==void 0&&Hl(t,n,s)}r=r.next}while(r!==i)}}function ao(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var i=n.create;n.destroy=i()}n=n.next}while(n!==t)}}function Vl(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Rd(e){var t=e.alternate;t!==null&&(e.alternate=null,Rd(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[ge],delete t[sr],delete t[El],delete t[Om],delete t[Dm])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Fd(e){return e.tag===5||e.tag===3||e.tag===4}function hc(e){t:for(;;){for(;e.sibling===null;){if(e.return===null||Fd(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue t;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Wl(e,t,n){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Es));else if(i!==4&&(e=e.child,e!==null))for(Wl(e,t,n),e=e.sibling;e!==null;)Wl(e,t,n),e=e.sibling}function $l(e,t,n){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(i!==4&&(e=e.child,e!==null))for($l(e,t,n),e=e.sibling;e!==null;)$l(e,t,n),e=e.sibling}var pt=null,ie=!1;function Re(e,t,n){for(n=n.child;n!==null;)Id(e,t,n),n=n.sibling}function Id(e,t,n){if(me&&typeof me.onCommitFiberUnmount=="function")try{me.onCommitFiberUnmount(to,n)}catch{}switch(n.tag){case 5:kt||Kn(n,t);case 6:var i=pt,r=ie;pt=null,Re(e,t,n),pt=i,ie=r,pt!==null&&(ie?(e=pt,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):pt.removeChild(n.stateNode));break;case 18:pt!==null&&(ie?(e=pt,n=n.stateNode,e.nodeType===8?Io(e.parentNode,n):e.nodeType===1&&Io(e,n),tr(e)):Io(pt,n.stateNode));break;case 4:i=pt,r=ie,pt=n.stateNode.containerInfo,ie=!0,Re(e,t,n),pt=i,ie=r;break;case 0:case 11:case 14:case 15:if(!kt&&(i=n.updateQueue,i!==null&&(i=i.lastEffect,i!==null))){r=i=i.next;do{var s=r,o=s.destroy;s=s.tag,o!==void 0&&(s&2||s&4)&&Hl(n,t,o),r=r.next}while(r!==i)}Re(e,t,n);break;case 1:if(!kt&&(Kn(n,t),i=n.stateNode,typeof i.componentWillUnmount=="function"))try{i.props=n.memoizedProps,i.state=n.memoizedState,i.componentWillUnmount()}catch(l){et(n,t,l)}Re(e,t,n);break;case 21:Re(e,t,n);break;case 22:n.mode&1?(kt=(i=kt)||n.memoizedState!==null,Re(e,t,n),kt=i):Re(e,t,n);break;default:Re(e,t,n)}}function dc(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Qm),t.forEach(function(i){var r=r0.bind(null,e,i);n.has(i)||(n.add(i),i.then(r,r))})}}function ee(e,t){var n=t.deletions;if(n!==null)for(var i=0;ir&&(r=o),i&=~s}if(i=r,i=rt()-i,i=(120>i?120:480>i?480:1080>i?1080:1920>i?1920:3e3>i?3e3:4320>i?4320:1960*Zm(i/1960))-i,10e?16:e,He===null)var i=!1;else{if(e=He,He=null,Hs=0,A&6)throw Error(C(331));var r=A;for(A|=4,P=e.current;P!==null;){var s=P,o=s.child;if(P.flags&16){var l=s.deletions;if(l!==null){for(var a=0;art()-Wa?_n(e,0):Va|=n),It(e,t)}function $d(e,t){t===0&&(e.mode&1?(t=Dr,Dr<<=1,!(Dr&130023424)&&(Dr=4194304)):t=1);var n=Mt();e=Oe(e,t),e!==null&&(_r(e,t,n),It(e,n))}function i0(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),$d(e,n)}function r0(e,t){var n=0;switch(e.tag){case 13:var i=e.stateNode,r=e.memoizedState;r!==null&&(n=r.retryLane);break;case 19:i=e.stateNode;break;default:throw Error(C(314))}i!==null&&i.delete(t),$d(e,n)}var Ud;Ud=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||Rt.current)Dt=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return Dt=!1,Um(e,t,n);Dt=!!(e.flags&131072)}else Dt=!1,X&&t.flags&1048576&&Qh(t,Ds,t.index);switch(t.lanes=0,t.tag){case 2:var i=t.type;fs(e,t),e=t.pendingProps;var r=si(t,St.current);ei(t,n),r=Ia(null,t,i,e,r,n);var s=Aa();return t.flags|=1,typeof r=="object"&&r!==null&&typeof r.render=="function"&&r.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Ft(i)?(s=!0,Ls(t)):s=!1,t.memoizedState=r.state!==null&&r.state!==void 0?r.state:null,Oa(t),r.updater=oo,t.stateNode=r,r._reactInternals=t,Rl(t,i,e,n),t=Al(null,t,i,!0,s,n)):(t.tag=0,X&&s&&ba(t),Ct(null,t,r,n),t=t.child),t;case 16:i=t.elementType;t:{switch(fs(e,t),e=t.pendingProps,r=i._init,i=r(i._payload),t.type=i,r=t.tag=o0(i),e=ne(i,e),r){case 0:t=Il(null,t,i,e,n);break t;case 1:t=ac(null,t,i,e,n);break t;case 11:t=oc(null,t,i,e,n);break t;case 14:t=lc(null,t,i,ne(i.type,e),n);break t}throw Error(C(306,i,""))}return t;case 0:return i=t.type,r=t.pendingProps,r=t.elementType===i?r:ne(i,r),Il(e,t,i,r,n);case 1:return i=t.type,r=t.pendingProps,r=t.elementType===i?r:ne(i,r),ac(e,t,i,r,n);case 3:t:{if(Ed(t),e===null)throw Error(C(387));i=t.pendingProps,s=t.memoizedState,r=s.element,qh(e,t),Fs(t,i,null,n);var o=t.memoizedState;if(i=o.element,s.isDehydrated)if(s={element:i,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},t.updateQueue.baseState=s,t.memoizedState=s,t.flags&256){r=ui(Error(C(423)),t),t=uc(e,t,i,n,r);break t}else if(i!==r){r=ui(Error(C(424)),t),t=uc(e,t,i,n,r);break t}else for(Vt=Xe(t.stateNode.containerInfo.firstChild),Wt=t,X=!0,re=null,n=nd(t,null,i,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(oi(),i===r){t=De(e,t,n);break t}Ct(e,t,i,n)}t=t.child}return t;case 5:return id(t),e===null&&Ol(t),i=t.type,r=t.pendingProps,s=e!==null?e.memoizedProps:null,o=r.children,Ml(i,r)?o=null:s!==null&&Ml(i,s)&&(t.flags|=32),Pd(e,t),Ct(e,t,o,n),t.child;case 6:return e===null&&Ol(t),null;case 13:return Td(e,t,n);case 4:return Da(t,t.stateNode.containerInfo),i=t.pendingProps,e===null?t.child=li(t,null,i,n):Ct(e,t,i,n),t.child;case 11:return i=t.type,r=t.pendingProps,r=t.elementType===i?r:ne(i,r),oc(e,t,i,r,n);case 7:return Ct(e,t,t.pendingProps,n),t.child;case 8:return Ct(e,t,t.pendingProps.children,n),t.child;case 12:return Ct(e,t,t.pendingProps.children,n),t.child;case 10:t:{if(i=t.type._context,r=t.pendingProps,s=t.memoizedProps,o=r.value,U(zs,i._currentValue),i._currentValue=o,s!==null)if(ae(s.value,o)){if(s.children===r.children&&!Rt.current){t=De(e,t,n);break t}}else for(s=t.child,s!==null&&(s.return=t);s!==null;){var l=s.dependencies;if(l!==null){o=s.child;for(var a=l.firstContext;a!==null;){if(a.context===i){if(s.tag===1){a=Ee(-1,n&-n),a.tag=2;var u=s.updateQueue;if(u!==null){u=u.shared;var c=u.pending;c===null?a.next=a:(a.next=c.next,c.next=a),u.pending=a}}s.lanes|=n,a=s.alternate,a!==null&&(a.lanes|=n),Dl(s.return,n,t),l.lanes|=n;break}a=a.next}}else if(s.tag===10)o=s.type===t.type?null:s.child;else if(s.tag===18){if(o=s.return,o===null)throw Error(C(341));o.lanes|=n,l=o.alternate,l!==null&&(l.lanes|=n),Dl(o,n,t),o=s.sibling}else o=s.child;if(o!==null)o.return=s;else for(o=s;o!==null;){if(o===t){o=null;break}if(s=o.sibling,s!==null){s.return=o.return,o=s;break}o=o.return}s=o}Ct(e,t,r.children,n),t=t.child}return t;case 9:return r=t.type,i=t.pendingProps.children,ei(t,n),r=Jt(r),i=i(r),t.flags|=1,Ct(e,t,i,n),t.child;case 14:return i=t.type,r=ne(i,t.pendingProps),r=ne(i.type,r),lc(e,t,i,r,n);case 15:return Cd(e,t,t.type,t.pendingProps,n);case 17:return i=t.type,r=t.pendingProps,r=t.elementType===i?r:ne(i,r),fs(e,t),t.tag=1,Ft(i)?(e=!0,Ls(t)):e=!1,ei(t,n),td(t,i,r),Rl(t,i,r,n),Al(null,t,i,!0,e,n);case 19:return Ld(e,t,n);case 22:return Md(e,t,n)}throw Error(C(156,t.tag))};function Yd(e,t){return vh(e,t)}function s0(e,t,n,i){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Gt(e,t,n,i){return new s0(e,t,n,i)}function Ka(e){return e=e.prototype,!(!e||!e.isReactComponent)}function o0(e){if(typeof e=="function")return Ka(e)?1:0;if(e!=null){if(e=e.$$typeof,e===ha)return 11;if(e===da)return 14}return 2}function Je(e,t){var n=e.alternate;return n===null?(n=Gt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function ps(e,t,n,i,r,s){var o=2;if(i=e,typeof e=="function")Ka(e)&&(o=1);else if(typeof e=="string")o=5;else t:switch(e){case Nn:return wn(n.children,r,s,t);case fa:o=8,r|=8;break;case rl:return e=Gt(12,n,t,r|2),e.elementType=rl,e.lanes=s,e;case sl:return e=Gt(13,n,t,r),e.elementType=sl,e.lanes=s,e;case ol:return e=Gt(19,n,t,r),e.elementType=ol,e.lanes=s,e;case eh:return co(n,r,s,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Jf:o=10;break t;case th:o=9;break t;case ha:o=11;break t;case da:o=14;break t;case Ie:o=16,i=null;break t}throw Error(C(130,e==null?e:typeof e,""))}return t=Gt(o,n,t,r),t.elementType=e,t.type=i,t.lanes=s,t}function wn(e,t,n,i){return e=Gt(7,e,i,t),e.lanes=n,e}function co(e,t,n,i){return e=Gt(22,e,i,t),e.elementType=eh,e.lanes=n,e.stateNode={isHidden:!1},e}function $o(e,t,n){return e=Gt(6,e,null,t),e.lanes=n,e}function Uo(e,t,n){return t=Gt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function l0(e,t,n,i,r){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Co(0),this.expirationTimes=Co(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Co(0),this.identifierPrefix=i,this.onRecoverableError=r,this.mutableSourceEagerHydrationData=null}function Qa(e,t,n,i,r,s,o,l,a){return e=new l0(e,t,n,l,a),t===1?(t=1,s===!0&&(t|=8)):t=0,s=Gt(3,null,null,t),e.current=s,s.stateNode=e,s.memoizedState={element:i,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Oa(s),e}function a0(e,t,n){var i=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Gd)}catch(e){console.error(e)}}Gd(),Qf.exports=Ut;var d0=Qf.exports,Zd,wc=d0;Zd=wc.createRoot,wc.hydrateRoot;function hr(e,t){return t-e}function qd(e){const t=[];let n,i;e.map((o,l)=>{const a=hr(o.startTime,o.endTime),u={id:o.spanId,duration:a,start:o.startTime,end:o.endTime};t.push(u),l===0?(n=o.startTime,i=o.endTime):(o.startTimei&&(i=o.endTime))});const r=hr(n,i),s={id:e[0].traceId,duration:r,start:n,end:i};return t.unshift(s),t}function p0(e){const t=[];let n,i;return e.map((s,o)=>{if(o<13){const l=qd(s);t.push(l),o===0&&(n=l[0].start,i=l[0].id),l[0].start{const[t,n]=ct.useState(!1),i=e.length>1,r=qd(e);return z.jsxs(z.Fragment,{children:[z.jsxs("tr",{onClick:()=>n(!t),children:[z.jsxs("td",{className:i?"noPadding":"padding",children:[i?z.jsx("div",{className:t&&i?"arrowDown":"arrow"}):null,e[0].traceId]}),z.jsx("td",{children:e[0].name}),z.jsx("td",{children:e[0].spanId}),z.jsx("td",{children:e[0].applicationType}),z.jsx("td",{children:e[0].originatingService}),z.jsx("td",{children:e[0].method}),z.jsx("td",{children:e[0].status}),z.jsx("td",{children:e[0].protocol}),z.jsxs("td",{children:[t?hr(e[0].startTime,e[0].endTime):r[0].duration," ms"]})]}),i&&t?e.slice(1).map((s,o)=>z.jsxs("tr",{className:"span",children:[z.jsx("td",{}),z.jsx("td",{children:s.name}),z.jsx("td",{children:s.spanId}),z.jsx("td",{children:s.applicationType}),z.jsx("td",{children:s.originatingService}),z.jsx("td",{children:s.method}),z.jsx("td",{children:s.status}),z.jsx("td",{children:s.protocol}),z.jsxs("td",{children:[hr(s.startTime,s.endTime)," ms"]})]},o)):null]})},m0=({data:e})=>z.jsxs("table",{children:[z.jsxs("tr",{children:[z.jsx("th",{children:"Trace ID"}),z.jsx("th",{children:"Name"}),z.jsx("th",{children:"Span ID"}),z.jsx("th",{children:"Application Type"}),z.jsx("th",{children:"Orig. Svc."}),z.jsx("th",{children:"Method"}),z.jsx("th",{children:"Status"}),z.jsx("th",{children:"Protocol"}),z.jsx("th",{children:"Time"})]}),e.map((t,n)=>z.jsx(g0,{data:t},n))]});function y0(e,t){const n=[];return e.map((i,r)=>{const s=[],o=hr(t,i[0].start),l=o+i[0].duration;s.push(o,l),n.push(s)}),n}function v0(e){return e.map(n=>n[0].id)}/*! - * @kurkle/color v0.3.2 - * https://github.com/kurkle/color#readme - * (c) 2023 Jukka Kurkela - * Released under the MIT License - */function br(e){return e+.5|0}const Ve=(e,t,n)=>Math.max(Math.min(e,n),t);function zi(e){return Ve(br(e*2.55),0,255)}function tn(e){return Ve(br(e*255),0,255)}function Ce(e){return Ve(br(e/2.55)/100,0,1)}function kc(e){return Ve(br(e*100),0,100)}const Kt={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Xl=[..."0123456789ABCDEF"],x0=e=>Xl[e&15],_0=e=>Xl[(e&240)>>4]+Xl[e&15],$r=e=>(e&240)>>4===(e&15),w0=e=>$r(e.r)&&$r(e.g)&&$r(e.b)&&$r(e.a);function k0(e){var t=e.length,n;return e[0]==="#"&&(t===4||t===5?n={r:255&Kt[e[1]]*17,g:255&Kt[e[2]]*17,b:255&Kt[e[3]]*17,a:t===5?Kt[e[4]]*17:255}:(t===7||t===9)&&(n={r:Kt[e[1]]<<4|Kt[e[2]],g:Kt[e[3]]<<4|Kt[e[4]],b:Kt[e[5]]<<4|Kt[e[6]],a:t===9?Kt[e[7]]<<4|Kt[e[8]]:255})),n}const S0=(e,t)=>e<255?t(e):"";function b0(e){var t=w0(e)?x0:_0;return e?"#"+t(e.r)+t(e.g)+t(e.b)+S0(e.a,t):void 0}const C0=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Jd(e,t,n){const i=t*Math.min(n,1-n),r=(s,o=(s+e/30)%12)=>n-i*Math.max(Math.min(o-3,9-o,1),-1);return[r(0),r(8),r(4)]}function M0(e,t,n){const i=(r,s=(r+e/60)%6)=>n-n*t*Math.max(Math.min(s,4-s,1),0);return[i(5),i(3),i(1)]}function P0(e,t,n){const i=Jd(e,1,.5);let r;for(t+n>1&&(r=1/(t+n),t*=r,n*=r),r=0;r<3;r++)i[r]*=1-t-n,i[r]+=t;return i}function E0(e,t,n,i,r){return e===r?(t-n)/i+(t.5?c/(2-s-o):c/(s+o),a=E0(n,i,r,c,s),a=a*60+.5),[a|0,u||0,l]}function Ja(e,t,n,i){return(Array.isArray(t)?e(t[0],t[1],t[2]):e(t,n,i)).map(tn)}function tu(e,t,n){return Ja(Jd,e,t,n)}function T0(e,t,n){return Ja(P0,e,t,n)}function L0(e,t,n){return Ja(M0,e,t,n)}function tp(e){return(e%360+360)%360}function O0(e){const t=C0.exec(e);let n=255,i;if(!t)return;t[5]!==i&&(n=t[6]?zi(+t[5]):tn(+t[5]));const r=tp(+t[2]),s=+t[3]/100,o=+t[4]/100;return t[1]==="hwb"?i=T0(r,s,o):t[1]==="hsv"?i=L0(r,s,o):i=tu(r,s,o),{r:i[0],g:i[1],b:i[2],a:n}}function D0(e,t){var n=qa(e);n[0]=tp(n[0]+t),n=tu(n),e.r=n[0],e.g=n[1],e.b=n[2]}function z0(e){if(!e)return;const t=qa(e),n=t[0],i=kc(t[1]),r=kc(t[2]);return e.a<255?`hsla(${n}, ${i}%, ${r}%, ${Ce(e.a)})`:`hsl(${n}, ${i}%, ${r}%)`}const Sc={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},bc={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};function R0(){const e={},t=Object.keys(bc),n=Object.keys(Sc);let i,r,s,o,l;for(i=0;i>16&255,s>>8&255,s&255]}return e}let Ur;function F0(e){Ur||(Ur=R0(),Ur.transparent=[0,0,0,0]);const t=Ur[e.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:t.length===4?t[3]:255}}const I0=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function A0(e){const t=I0.exec(e);let n=255,i,r,s;if(t){if(t[7]!==i){const o=+t[7];n=t[8]?zi(o):Ve(o*255,0,255)}return i=+t[1],r=+t[3],s=+t[5],i=255&(t[2]?zi(i):Ve(i,0,255)),r=255&(t[4]?zi(r):Ve(r,0,255)),s=255&(t[6]?zi(s):Ve(s,0,255)),{r:i,g:r,b:s,a:n}}}function N0(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${Ce(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}const Yo=e=>e<=.0031308?e*12.92:Math.pow(e,1/2.4)*1.055-.055,In=e=>e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4);function j0(e,t,n){const i=In(Ce(e.r)),r=In(Ce(e.g)),s=In(Ce(e.b));return{r:tn(Yo(i+n*(In(Ce(t.r))-i))),g:tn(Yo(r+n*(In(Ce(t.g))-r))),b:tn(Yo(s+n*(In(Ce(t.b))-s))),a:e.a+n*(t.a-e.a)}}function Yr(e,t,n){if(e){let i=qa(e);i[t]=Math.max(0,Math.min(i[t]+i[t]*n,t===0?360:1)),i=tu(i),e.r=i[0],e.g=i[1],e.b=i[2]}}function ep(e,t){return e&&Object.assign(t||{},e)}function Cc(e){var t={r:0,g:0,b:0,a:255};return Array.isArray(e)?e.length>=3&&(t={r:e[0],g:e[1],b:e[2],a:255},e.length>3&&(t.a=tn(e[3]))):(t=ep(e,{r:0,g:0,b:0,a:1}),t.a=tn(t.a)),t}function B0(e){return e.charAt(0)==="r"?A0(e):O0(e)}class dr{constructor(t){if(t instanceof dr)return t;const n=typeof t;let i;n==="object"?i=Cc(t):n==="string"&&(i=k0(t)||F0(t)||B0(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=ep(this._rgb);return t&&(t.a=Ce(t.a)),t}set rgb(t){this._rgb=Cc(t)}rgbString(){return this._valid?N0(this._rgb):void 0}hexString(){return this._valid?b0(this._rgb):void 0}hslString(){return this._valid?z0(this._rgb):void 0}mix(t,n){if(t){const i=this.rgb,r=t.rgb;let s;const o=n===s?.5:n,l=2*o-1,a=i.a-r.a,u=((l*a===-1?l:(l+a)/(1+l*a))+1)/2;s=1-u,i.r=255&u*i.r+s*r.r+.5,i.g=255&u*i.g+s*r.g+.5,i.b=255&u*i.b+s*r.b+.5,i.a=o*i.a+(1-o)*r.a,this.rgb=i}return this}interpolate(t,n){return t&&(this._rgb=j0(this._rgb,t._rgb,n)),this}clone(){return new dr(this.rgb)}alpha(t){return this._rgb.a=tn(t),this}clearer(t){const n=this._rgb;return n.a*=1-t,this}greyscale(){const t=this._rgb,n=br(t.r*.3+t.g*.59+t.b*.11);return t.r=t.g=t.b=n,this}opaquer(t){const n=this._rgb;return n.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Yr(this._rgb,2,t),this}darken(t){return Yr(this._rgb,2,-t),this}saturate(t){return Yr(this._rgb,1,t),this}desaturate(t){return Yr(this._rgb,1,-t),this}rotate(t){return D0(this._rgb,t),this}}/*! - * Chart.js v4.3.0 - * https://www.chartjs.org - * (c) 2023 Chart.js Contributors - * Released under the MIT License - */function _e(){}const H0=(()=>{let e=0;return()=>e++})();function V(e){return e===null||typeof e>"u"}function G(e){if(Array.isArray&&Array.isArray(e))return!0;const t=Object.prototype.toString.call(e);return t.slice(0,7)==="[object"&&t.slice(-6)==="Array]"}function N(e){return e!==null&&Object.prototype.toString.call(e)==="[object Object]"}function ht(e){return(typeof e=="number"||e instanceof Number)&&isFinite(+e)}function Bt(e,t){return ht(e)?e:t}function j(e,t){return typeof e>"u"?t:e}const V0=(e,t)=>typeof e=="string"&&e.endsWith("%")?parseFloat(e)/100*t:+e;function $(e,t,n){if(e&&typeof e.call=="function")return e.apply(n,t)}function B(e,t,n,i){let r,s,o;if(G(e))if(s=e.length,i)for(r=s-1;r>=0;r--)t.call(n,e[r],r);else for(r=0;re,x:e=>e.x,y:e=>e.y};function U0(e){const t=e.split("."),n=[];let i="";for(const r of t)i+=r,i.endsWith("\\")?i=i.slice(0,-1)+".":(n.push(i),i="");return n}function Y0(e){const t=U0(e);return n=>{for(const i of t){if(i==="")break;n=n&&n[i]}return n}}function fi(e,t){return(Mc[t]||(Mc[t]=Y0(t)))(e)}function eu(e){return e.charAt(0).toUpperCase()+e.slice(1)}const gr=e=>typeof e<"u",sn=e=>typeof e=="function",Pc=(e,t)=>{if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0};function K0(e){return e.type==="mouseup"||e.type==="click"||e.type==="contextmenu"}const yt=Math.PI,ve=2*yt,Ys=Number.POSITIVE_INFINITY,Q0=yt/180,zt=yt/2,cn=yt/4,Ec=yt*2/3,We=Math.log10,en=Math.sign;function gs(e,t,n){return Math.abs(e-t)r-s).pop(),t}function Ks(e){return!isNaN(parseFloat(e))&&isFinite(e)}function G0(e,t){const n=Math.round(e);return n-t<=e&&n+t>=e}function ip(e,t,n){let i,r,s;for(i=0,r=e.length;ia&&u=Math.min(t,n)-i&&e<=Math.max(t,n)+i}function iu(e,t,n){n=n||(o=>e[o]1;)s=r+i>>1,n(s)?r=s:i=s;return{lo:r,hi:i}}const Gl=(e,t,n,i)=>iu(e,n,i?r=>{const s=e[r][t];return se[r][t]iu(e,n,i=>e[i][t]>=n);function ny(e,t,n){let i=0,r=e.length;for(;ii&&e[r-1]>n;)r--;return i>0||r{const i="_onData"+eu(n),r=e[n];Object.defineProperty(e,n,{configurable:!0,enumerable:!1,value(...s){const o=r.apply(this,s);return e._chartjs.listeners.forEach(l=>{typeof l[i]=="function"&&l[i](...s)}),o}})})}function Oc(e,t){const n=e._chartjs;if(!n)return;const i=n.listeners,r=i.indexOf(t);r!==-1&&i.splice(r,1),!(i.length>0)&&(rp.forEach(s=>{delete e[s]}),delete e._chartjs)}function sp(e){const t=new Set(e);return t.size===e.length?e:Array.from(t)}const op=function(){return typeof window>"u"?function(e){return e()}:window.requestAnimationFrame}();function lp(e,t){let n=[],i=!1;return function(...r){n=r,i||(i=!0,op.call(window,()=>{i=!1,e.apply(t,n)}))}}function ry(e,t){let n;return function(...i){return t?(clearTimeout(n),n=setTimeout(e,t,i)):e.apply(this,i),t}}const ru=e=>e==="start"?"left":e==="end"?"right":"center",wt=(e,t,n)=>e==="start"?t:e==="end"?n:(t+n)/2,sy=(e,t,n,i)=>e===(i?"left":"right")?n:e==="center"?(t+n)/2:t,Kr=e=>e===0||e===1,Dc=(e,t,n)=>-(Math.pow(2,10*(e-=1))*Math.sin((e-t)*ve/n)),zc=(e,t,n)=>Math.pow(2,-10*e)*Math.sin((e-t)*ve/n)+1,Yi={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>-e*(e-2),easeInOutQuad:e=>(e/=.5)<1?.5*e*e:-.5*(--e*(e-2)-1),easeInCubic:e=>e*e*e,easeOutCubic:e=>(e-=1)*e*e+1,easeInOutCubic:e=>(e/=.5)<1?.5*e*e*e:.5*((e-=2)*e*e+2),easeInQuart:e=>e*e*e*e,easeOutQuart:e=>-((e-=1)*e*e*e-1),easeInOutQuart:e=>(e/=.5)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2),easeInQuint:e=>e*e*e*e*e,easeOutQuint:e=>(e-=1)*e*e*e*e+1,easeInOutQuint:e=>(e/=.5)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2),easeInSine:e=>-Math.cos(e*zt)+1,easeOutSine:e=>Math.sin(e*zt),easeInOutSine:e=>-.5*(Math.cos(yt*e)-1),easeInExpo:e=>e===0?0:Math.pow(2,10*(e-1)),easeOutExpo:e=>e===1?1:-Math.pow(2,-10*e)+1,easeInOutExpo:e=>Kr(e)?e:e<.5?.5*Math.pow(2,10*(e*2-1)):.5*(-Math.pow(2,-10*(e*2-1))+2),easeInCirc:e=>e>=1?e:-(Math.sqrt(1-e*e)-1),easeOutCirc:e=>Math.sqrt(1-(e-=1)*e),easeInOutCirc:e=>(e/=.5)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1),easeInElastic:e=>Kr(e)?e:Dc(e,.075,.3),easeOutElastic:e=>Kr(e)?e:zc(e,.075,.3),easeInOutElastic(e){return Kr(e)?e:e<.5?.5*Dc(e*2,.1125,.45):.5+.5*zc(e*2-1,.1125,.45)},easeInBack(e){return e*e*((1.70158+1)*e-1.70158)},easeOutBack(e){return(e-=1)*e*((1.70158+1)*e+1.70158)+1},easeInOutBack(e){let t=1.70158;return(e/=.5)<1?.5*(e*e*(((t*=1.525)+1)*e-t)):.5*((e-=2)*e*(((t*=1.525)+1)*e+t)+2)},easeInBounce:e=>1-Yi.easeOutBounce(1-e),easeOutBounce(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375},easeInOutBounce:e=>e<.5?Yi.easeInBounce(e*2)*.5:Yi.easeOutBounce(e*2-1)*.5+.5};function ap(e){if(e&&typeof e=="object"){const t=e.toString();return t==="[object CanvasPattern]"||t==="[object CanvasGradient]"}return!1}function Rc(e){return ap(e)?e:new dr(e)}function Ko(e){return ap(e)?e:new dr(e).saturate(.5).darken(.1).hexString()}const oy=["x","y","borderWidth","radius","tension"],ly=["color","borderColor","backgroundColor"];function ay(e){e.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),e.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>t!=="onProgress"&&t!=="onComplete"&&t!=="fn"}),e.set("animations",{colors:{type:"color",properties:ly},numbers:{type:"number",properties:oy}}),e.describe("animations",{_fallback:"animation"}),e.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>t|0}}}})}function uy(e){e.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}const Fc=new Map;function cy(e,t){t=t||{};const n=e+JSON.stringify(t);let i=Fc.get(n);return i||(i=new Intl.NumberFormat(e,t),Fc.set(n,i)),i}function su(e,t,n){return cy(t,n).format(e)}const up={values(e){return G(e)?e:""+e},numeric(e,t,n){if(e===0)return"0";const i=this.chart.options.locale;let r,s=e;if(n.length>1){const u=Math.max(Math.abs(n[0].value),Math.abs(n[n.length-1].value));(u<1e-4||u>1e15)&&(r="scientific"),s=fy(e,n)}const o=We(Math.abs(s)),l=isNaN(o)?1:Math.max(Math.min(-1*Math.floor(o),20),0),a={notation:r,minimumFractionDigits:l,maximumFractionDigits:l};return Object.assign(a,this.options.ticks.format),su(e,i,a)},logarithmic(e,t,n){if(e===0)return"0";const i=n[t].significand||e/Math.pow(10,Math.floor(We(e)));return[1,2,3,5,10,15].includes(i)||t>.8*n.length?up.numeric.call(this,e,t,n):""}};function fy(e,t){let n=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(n)>=1&&e!==Math.floor(e)&&(n=e-Math.floor(e)),n}var mo={formatters:up};function hy(e){e.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,n)=>n.lineWidth,tickColor:(t,n)=>n.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:mo.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),e.route("scale.ticks","color","","color"),e.route("scale.grid","color","","borderColor"),e.route("scale.border","color","","borderColor"),e.route("scale.title","color","","color"),e.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&t!=="callback"&&t!=="parser",_indexable:t=>t!=="borderDash"&&t!=="tickBorderDash"&&t!=="dash"}),e.describe("scales",{_fallback:"scale"}),e.describe("scale.ticks",{_scriptable:t=>t!=="backdropPadding"&&t!=="callback",_indexable:t=>t!=="backdropPadding"})}const Tn=Object.create(null),Zl=Object.create(null);function Ki(e,t){if(!t)return e;const n=t.split(".");for(let i=0,r=n.length;ii.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(i,r)=>Ko(r.backgroundColor),this.hoverBorderColor=(i,r)=>Ko(r.borderColor),this.hoverColor=(i,r)=>Ko(r.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(n)}set(t,n){return Qo(this,t,n)}get(t){return Ki(this,t)}describe(t,n){return Qo(Zl,t,n)}override(t,n){return Qo(Tn,t,n)}route(t,n,i,r){const s=Ki(this,t),o=Ki(this,i),l="_"+n;Object.defineProperties(s,{[l]:{value:s[n],writable:!0},[n]:{enumerable:!0,get(){const a=this[l],u=o[r];return N(a)?Object.assign({},u,a):j(a,u)},set(a){this[l]=a}}})}apply(t){t.forEach(n=>n(this))}}var nt=new dy({_scriptable:e=>!e.startsWith("on"),_indexable:e=>e!=="events",hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[ay,uy,hy]);function py(e){return!e||V(e.size)||V(e.family)?null:(e.style?e.style+" ":"")+(e.weight?e.weight+" ":"")+e.size+"px "+e.family}function Qs(e,t,n,i,r){let s=t[r];return s||(s=t[r]=e.measureText(r).width,n.push(r)),s>i&&(i=s),i}function gy(e,t,n,i){i=i||{};let r=i.data=i.data||{},s=i.garbageCollect=i.garbageCollect||[];i.font!==t&&(r=i.data={},s=i.garbageCollect=[],i.font=t),e.save(),e.font=t;let o=0;const l=n.length;let a,u,c,f,h;for(a=0;an.length){for(a=0;a0&&e.stroke()}}function Gn(e,t,n){return n=n||.5,!t||e&&e.x>t.left-n&&e.xt.top-n&&e.y0&&s.strokeColor!=="";let a,u;for(e.save(),e.font=r.string,my(e,s),a=0;a+e||0;function fp(e,t){const n={},i=N(t),r=i?Object.keys(t):t,s=N(e)?i?o=>j(e[o],e[t[o]]):o=>e[o]:()=>e;for(const o of r)n[o]=ky(s(o));return n}function hp(e){return fp(e,{top:"y",right:"x",bottom:"y",left:"x"})}function kn(e){return fp(e,["topLeft","topRight","bottomLeft","bottomRight"])}function bt(e){const t=hp(e);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function ut(e,t){e=e||{},t=t||nt.font;let n=j(e.size,t.size);typeof n=="string"&&(n=parseInt(n,10));let i=j(e.style,t.style);i&&!(""+i).match(_y)&&(console.warn('Invalid font style specified: "'+i+'"'),i=void 0);const r={family:j(e.family,t.family),lineHeight:wy(j(e.lineHeight,t.lineHeight),n),size:n,style:i,weight:j(e.weight,t.weight),string:""};return r.string=py(r),r}function Qr(e,t,n,i){let r=!0,s,o,l;for(s=0,o=e.length;sn&&l===0?0:l+a;return{min:o(i,-Math.abs(s)),max:o(r,s)}}function zn(e,t){return Object.assign(Object.create(e),t)}function au(e,t=[""],n,i,r=()=>e[0]){const s=n||e;typeof i>"u"&&(i=mp("_fallback",e));const o={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:e,_rootScopes:s,_fallback:i,_getTarget:r,override:l=>au([l,...e],t,s,i)};return new Proxy(o,{deleteProperty(l,a){return delete l[a],delete l._keys,delete e[0][a],!0},get(l,a){return pp(l,a,()=>Oy(a,t,e,l))},getOwnPropertyDescriptor(l,a){return Reflect.getOwnPropertyDescriptor(l._scopes[0],a)},getPrototypeOf(){return Reflect.getPrototypeOf(e[0])},has(l,a){return jc(l).includes(a)},ownKeys(l){return jc(l)},set(l,a,u){const c=l._storage||(l._storage=r());return l[a]=c[a]=u,delete l._keys,!0}})}function hi(e,t,n,i){const r={_cacheable:!1,_proxy:e,_context:t,_subProxy:n,_stack:new Set,_descriptors:dp(e,i),setContext:s=>hi(e,s,n,i),override:s=>hi(e.override(s),t,n,i)};return new Proxy(r,{deleteProperty(s,o){return delete s[o],delete e[o],!0},get(s,o,l){return pp(s,o,()=>Cy(s,o,l))},getOwnPropertyDescriptor(s,o){return s._descriptors.allKeys?Reflect.has(e,o)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(e,o)},getPrototypeOf(){return Reflect.getPrototypeOf(e)},has(s,o){return Reflect.has(e,o)},ownKeys(){return Reflect.ownKeys(e)},set(s,o,l){return e[o]=l,delete s[o],!0}})}function dp(e,t={scriptable:!0,indexable:!0}){const{_scriptable:n=t.scriptable,_indexable:i=t.indexable,_allKeys:r=t.allKeys}=e;return{allKeys:r,scriptable:n,indexable:i,isScriptable:sn(n)?n:()=>n,isIndexable:sn(i)?i:()=>i}}const by=(e,t)=>e?e+eu(t):t,uu=(e,t)=>N(t)&&e!=="adapters"&&(Object.getPrototypeOf(t)===null||t.constructor===Object);function pp(e,t,n){if(Object.prototype.hasOwnProperty.call(e,t))return e[t];const i=n();return e[t]=i,i}function Cy(e,t,n){const{_proxy:i,_context:r,_subProxy:s,_descriptors:o}=e;let l=i[t];return sn(l)&&o.isScriptable(t)&&(l=My(t,l,e,n)),G(l)&&l.length&&(l=Py(t,l,e,o.isIndexable)),uu(t,l)&&(l=hi(l,r,s&&s[t],o)),l}function My(e,t,n,i){const{_proxy:r,_context:s,_subProxy:o,_stack:l}=n;if(l.has(e))throw new Error("Recursion detected: "+Array.from(l).join("->")+"->"+e);l.add(e);let a=t(s,o||i);return l.delete(e),uu(e,a)&&(a=cu(r._scopes,r,e,a)),a}function Py(e,t,n,i){const{_proxy:r,_context:s,_subProxy:o,_descriptors:l}=n;if(typeof s.index<"u"&&i(e))return t[s.index%t.length];if(N(t[0])){const a=t,u=r._scopes.filter(c=>c!==a);t=[];for(const c of a){const f=cu(u,r,e,c);t.push(hi(f,s,o&&o[e],l))}}return t}function gp(e,t,n){return sn(e)?e(t,n):e}const Ey=(e,t)=>e===!0?t:typeof e=="string"?fi(t,e):void 0;function Ty(e,t,n,i,r){for(const s of t){const o=Ey(n,s);if(o){e.add(o);const l=gp(o._fallback,n,r);if(typeof l<"u"&&l!==n&&l!==i)return l}else if(o===!1&&typeof i<"u"&&n!==i)return null}return!1}function cu(e,t,n,i){const r=t._rootScopes,s=gp(t._fallback,n,i),o=[...e,...r],l=new Set;l.add(i);let a=Nc(l,o,n,s||n,i);return a===null||typeof s<"u"&&s!==n&&(a=Nc(l,o,s,a,i),a===null)?!1:au(Array.from(l),[""],r,s,()=>Ly(t,n,i))}function Nc(e,t,n,i,r){for(;n;)n=Ty(e,t,n,i,r);return n}function Ly(e,t,n){const i=e._getTarget();t in i||(i[t]={});const r=i[t];return G(r)&&N(n)?n:r||{}}function Oy(e,t,n,i){let r;for(const s of t)if(r=mp(by(s,e),n),typeof r<"u")return uu(e,r)?cu(n,i,e,r):r}function mp(e,t){for(const n of t){if(!n)continue;const i=n[e];if(typeof i<"u")return i}}function jc(e){let t=e._keys;return t||(t=e._keys=Dy(e._scopes)),t}function Dy(e){const t=new Set;for(const n of e)for(const i of Object.keys(n).filter(r=>!r.startsWith("_")))t.add(i);return Array.from(t)}function yp(){return typeof window<"u"&&typeof document<"u"}function fu(e){let t=e.parentNode;return t&&t.toString()==="[object ShadowRoot]"&&(t=t.host),t}function Xs(e,t,n){let i;return typeof e=="string"?(i=parseInt(e,10),e.indexOf("%")!==-1&&(i=i/100*t.parentNode[n])):i=e,i}const yo=e=>e.ownerDocument.defaultView.getComputedStyle(e,null);function zy(e,t){return yo(e).getPropertyValue(t)}const Ry=["top","right","bottom","left"];function Sn(e,t,n){const i={};n=n?"-"+n:"";for(let r=0;r<4;r++){const s=Ry[r];i[s]=parseFloat(e[t+"-"+s+n])||0}return i.width=i.left+i.right,i.height=i.top+i.bottom,i}const Fy=(e,t,n)=>(e>0||t>0)&&(!n||!n.shadowRoot);function Iy(e,t){const n=e.touches,i=n&&n.length?n[0]:e,{offsetX:r,offsetY:s}=i;let o=!1,l,a;if(Fy(r,s,e.target))l=r,a=s;else{const u=t.getBoundingClientRect();l=i.clientX-u.left,a=i.clientY-u.top,o=!0}return{x:l,y:a,box:o}}function mn(e,t){if("native"in e)return e;const{canvas:n,currentDevicePixelRatio:i}=t,r=yo(n),s=r.boxSizing==="border-box",o=Sn(r,"padding"),l=Sn(r,"border","width"),{x:a,y:u,box:c}=Iy(e,n),f=o.left+(c&&l.left),h=o.top+(c&&l.top);let{width:d,height:m}=t;return s&&(d-=o.width+l.width,m-=o.height+l.height),{x:Math.round((a-f)/d*n.width/i),y:Math.round((u-h)/m*n.height/i)}}function Ay(e,t,n){let i,r;if(t===void 0||n===void 0){const s=fu(e);if(!s)t=e.clientWidth,n=e.clientHeight;else{const o=s.getBoundingClientRect(),l=yo(s),a=Sn(l,"border","width"),u=Sn(l,"padding");t=o.width-u.width-a.width,n=o.height-u.height-a.height,i=Xs(l.maxWidth,s,"clientWidth"),r=Xs(l.maxHeight,s,"clientHeight")}}return{width:t,height:n,maxWidth:i||Ys,maxHeight:r||Ys}}const Xr=e=>Math.round(e*10)/10;function Ny(e,t,n,i){const r=yo(e),s=Sn(r,"margin"),o=Xs(r.maxWidth,e,"clientWidth")||Ys,l=Xs(r.maxHeight,e,"clientHeight")||Ys,a=Ay(e,t,n);let{width:u,height:c}=a;if(r.boxSizing==="content-box"){const h=Sn(r,"border","width"),d=Sn(r,"padding");u-=d.width+h.width,c-=d.height+h.height}return u=Math.max(0,u-s.width),c=Math.max(0,i?u/i:c-s.height),u=Xr(Math.min(u,o,a.maxWidth)),c=Xr(Math.min(c,l,a.maxHeight)),u&&!c&&(c=Xr(u/2)),(t!==void 0||n!==void 0)&&i&&a.height&&c>a.height&&(c=a.height,u=Xr(Math.floor(c*i))),{width:u,height:c}}function Bc(e,t,n){const i=t||1,r=Math.floor(e.height*i),s=Math.floor(e.width*i);e.height=Math.floor(e.height),e.width=Math.floor(e.width);const o=e.canvas;return o.style&&(n||!o.style.height&&!o.style.width)&&(o.style.height=`${e.height}px`,o.style.width=`${e.width}px`),e.currentDevicePixelRatio!==i||o.height!==r||o.width!==s?(e.currentDevicePixelRatio=i,o.height=r,o.width=s,e.ctx.setTransform(i,0,0,i,0,0),!0):!1}const jy=function(){let e=!1;try{const t={get passive(){return e=!0,!1}};window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch{}return e}();function Hc(e,t){const n=zy(e,t),i=n&&n.match(/^(\d+)(\.\d+)?px$/);return i?+i[1]:void 0}const By=function(e,t){return{x(n){return e+e+t-n},setWidth(n){t=n},textAlign(n){return n==="center"?n:n==="right"?"left":"right"},xPlus(n,i){return n-i},leftForLtr(n,i){return n-i}}},Hy=function(){return{x(e){return e},setWidth(e){},textAlign(e){return e},xPlus(e,t){return e+t},leftForLtr(e,t){return e}}};function ii(e,t,n){return e?By(t,n):Hy()}function vp(e,t){let n,i;(t==="ltr"||t==="rtl")&&(n=e.canvas.style,i=[n.getPropertyValue("direction"),n.getPropertyPriority("direction")],n.setProperty("direction",t,"important"),e.prevTextDirection=i)}function xp(e,t){t!==void 0&&(delete e.prevTextDirection,e.canvas.style.setProperty("direction",t[0],t[1]))}/*! - * Chart.js v4.3.0 - * https://www.chartjs.org - * (c) 2023 Chart.js Contributors - * Released under the MIT License - */class Vy{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,n,i,r){const s=n.listeners[r],o=n.duration;s.forEach(l=>l({chart:t,initial:n.initial,numSteps:o,currentStep:Math.min(i-n.start,o)}))}_refresh(){this._request||(this._running=!0,this._request=op.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(t=Date.now()){let n=0;this._charts.forEach((i,r)=>{if(!i.running||!i.items.length)return;const s=i.items;let o=s.length-1,l=!1,a;for(;o>=0;--o)a=s[o],a._active?(a._total>i.duration&&(i.duration=a._total),a.tick(t),l=!0):(s[o]=s[s.length-1],s.pop());l&&(r.draw(),this._notify(r,i,t,"progress")),s.length||(i.running=!1,this._notify(r,i,t,"complete"),i.initial=!1),n+=s.length}),this._lastDate=t,n===0&&(this._running=!1)}_getAnims(t){const n=this._charts;let i=n.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},n.set(t,i)),i}listen(t,n,i){this._getAnims(t).listeners[n].push(i)}add(t,n){!n||!n.length||this._getAnims(t).items.push(...n)}has(t){return this._getAnims(t).items.length>0}start(t){const n=this._charts.get(t);n&&(n.running=!0,n.start=Date.now(),n.duration=n.items.reduce((i,r)=>Math.max(i,r._duration),0),this._refresh())}running(t){if(!this._running)return!1;const n=this._charts.get(t);return!(!n||!n.running||!n.items.length)}stop(t){const n=this._charts.get(t);if(!n||!n.items.length)return;const i=n.items;let r=i.length-1;for(;r>=0;--r)i[r].cancel();n.items=[],this._notify(t,n,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var we=new Vy;const Vc="transparent",Wy={boolean(e,t,n){return n>.5?t:e},color(e,t,n){const i=Rc(e||Vc),r=i.valid&&Rc(t||Vc);return r&&r.valid?r.mix(i,n).hexString():t},number(e,t,n){return e+(t-e)*n}};class $y{constructor(t,n,i,r){const s=n[i];r=Qr([t.to,r,s,t.from]);const o=Qr([t.from,s,r]);this._active=!0,this._fn=t.fn||Wy[t.type||typeof o],this._easing=Yi[t.easing]||Yi.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=n,this._prop=i,this._from=o,this._to=r,this._promises=void 0}active(){return this._active}update(t,n,i){if(this._active){this._notify(!1);const r=this._target[this._prop],s=i-this._start,o=this._duration-s;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=s,this._loop=!!t.loop,this._to=Qr([t.to,n,r,t.from]),this._from=Qr([t.from,r,n])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const n=t-this._start,i=this._duration,r=this._prop,s=this._from,o=this._loop,l=this._to;let a;if(this._active=s!==l&&(o||n1?2-a:a,a=this._easing(Math.min(1,Math.max(0,a))),this._target[r]=this._fn(s,l,a)}wait(){const t=this._promises||(this._promises=[]);return new Promise((n,i)=>{t.push({res:n,rej:i})})}_notify(t){const n=t?"res":"rej",i=this._promises||[];for(let r=0;r{const s=t[r];if(!N(s))return;const o={};for(const l of n)o[l]=s[l];(G(s.properties)&&s.properties||[r]).forEach(l=>{(l===r||!i.has(l))&&i.set(l,o)})})}_animateOptions(t,n){const i=n.options,r=Yy(t,i);if(!r)return[];const s=this._createAnimations(r,i);return i.$shared&&Uy(t.options.$animations,i).then(()=>{t.options=i},()=>{}),s}_createAnimations(t,n){const i=this._properties,r=[],s=t.$animations||(t.$animations={}),o=Object.keys(n),l=Date.now();let a;for(a=o.length-1;a>=0;--a){const u=o[a];if(u.charAt(0)==="$")continue;if(u==="options"){r.push(...this._animateOptions(t,n));continue}const c=n[u];let f=s[u];const h=i.get(u);if(f)if(h&&f.active()){f.update(h,c,l);continue}else f.cancel();if(!h||!h.duration){t[u]=c;continue}s[u]=f=new $y(h,t,u,c),r.push(f)}return r}update(t,n){if(this._properties.size===0){Object.assign(t,n);return}const i=this._createAnimations(t,n);if(i.length)return we.add(this._chart,i),!0}}function Uy(e,t){const n=[],i=Object.keys(t);for(let r=0;r0||!n&&s<0)return r.index}return null}function Kc(e,t){const{chart:n,_cachedMeta:i}=e,r=n._stacks||(n._stacks={}),{iScale:s,vScale:o,index:l}=i,a=s.axis,u=o.axis,c=Gy(s,o,i),f=t.length;let h;for(let d=0;dn[i].axis===t).shift()}function Jy(e,t){return zn(e,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:"default",type:"dataset"})}function tv(e,t,n){return zn(e,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:n,index:t,mode:"default",type:"data"})}function bi(e,t){const n=e.controller.index,i=e.vScale&&e.vScale.axis;if(i){t=t||e._parsed;for(const r of t){const s=r._stacks;if(!s||s[i]===void 0||s[i][n]===void 0)return;delete s[i][n],s[i]._visualValues!==void 0&&s[i]._visualValues[n]!==void 0&&delete s[i]._visualValues[n]}}}const Go=e=>e==="reset"||e==="none",Qc=(e,t)=>t?e:Object.assign({},e),ev=(e,t,n)=>e&&!t.hidden&&t._stacked&&{keys:wp(n,!0),values:null};class Qi{constructor(t,n){this.chart=t,this._ctx=t.ctx,this.index=n,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=Uc(t.vScale,t),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(t){this.index!==t&&bi(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,n=this._cachedMeta,i=this.getDataset(),r=(f,h,d,m)=>f==="x"?h:f==="r"?m:d,s=n.xAxisID=j(i.xAxisID,Xo(t,"x")),o=n.yAxisID=j(i.yAxisID,Xo(t,"y")),l=n.rAxisID=j(i.rAxisID,Xo(t,"r")),a=n.indexAxis,u=n.iAxisID=r(a,s,o,l),c=n.vAxisID=r(a,o,s,l);n.xScale=this.getScaleForId(s),n.yScale=this.getScaleForId(o),n.rScale=this.getScaleForId(l),n.iScale=this.getScaleForId(u),n.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const n=this._cachedMeta;return t===n.iScale?n.vScale:n.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&Oc(this._data,this),t._stacked&&bi(t)}_dataCheck(){const t=this.getDataset(),n=t.data||(t.data=[]),i=this._data;if(N(n))this._data=Xy(n);else if(i!==n){if(i){Oc(i,this);const r=this._cachedMeta;bi(r),r._parsed=[]}n&&Object.isExtensible(n)&&iy(n,this),this._syncList=[],this._data=n}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const n=this._cachedMeta,i=this.getDataset();let r=!1;this._dataCheck();const s=n._stacked;n._stacked=Uc(n.vScale,n),n.stack!==i.stack&&(r=!0,bi(n),n.stack=i.stack),this._resyncElements(t),(r||s!==n._stacked)&&Kc(this,n._parsed)}configure(){const t=this.chart.config,n=t.datasetScopeKeys(this._type),i=t.getOptionScopes(this.getDataset(),n,!0);this.options=t.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,n){const{_cachedMeta:i,_data:r}=this,{iScale:s,_stacked:o}=i,l=s.axis;let a=t===0&&n===r.length?!0:i._sorted,u=t>0&&i._parsed[t-1],c,f,h;if(this._parsing===!1)i._parsed=r,i._sorted=!0,h=r;else{G(r[t])?h=this.parseArrayData(i,r,t,n):N(r[t])?h=this.parseObjectData(i,r,t,n):h=this.parsePrimitiveData(i,r,t,n);const d=()=>f[l]===null||u&&f[l]y||f=0;--h)if(!m()){this.updateRangeFromParsed(u,t,d,a);break}}return u}getAllParsedValues(t){const n=this._cachedMeta._parsed,i=[];let r,s,o;for(r=0,s=n.length;r=0&&tthis.getContext(i,r,n),y=u.resolveNamedOptions(h,d,m,f);return y.$shared&&(y.$shared=a,s[o]=Object.freeze(Qc(y,a))),y}_resolveAnimations(t,n,i){const r=this.chart,s=this._cachedDataOpts,o=`animation-${n}`,l=s[o];if(l)return l;let a;if(r.options.animation!==!1){const c=this.chart.config,f=c.datasetAnimationScopeKeys(this._type,n),h=c.getOptionScopes(this.getDataset(),f);a=c.createResolver(h,this.getContext(t,i,n))}const u=new _p(r,a&&a.animations);return a&&a._cacheable&&(s[o]=Object.freeze(u)),u}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,n){return!n||Go(t)||this.chart._animationsDisabled}_getSharedOptions(t,n){const i=this.resolveDataElementOptions(t,n),r=this._sharedOptions,s=this.getSharedOptions(i),o=this.includeOptions(n,s)||s!==r;return this.updateSharedOptions(s,n,i),{sharedOptions:s,includeOptions:o}}updateElement(t,n,i,r){Go(r)?Object.assign(t,i):this._resolveAnimations(n,r).update(t,i)}updateSharedOptions(t,n,i){t&&!Go(n)&&this._resolveAnimations(void 0,n).update(t,i)}_setStyle(t,n,i,r){t.active=r;const s=this.getStyle(n,r);this._resolveAnimations(n,i,r).update(t,{options:!r&&this.getSharedOptions(s)||s})}removeHoverStyle(t,n,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,n,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const n=this._data,i=this._cachedMeta.data;for(const[l,a,u]of this._syncList)this[l](a,u);this._syncList=[];const r=i.length,s=n.length,o=Math.min(s,r);o&&this.parse(0,o),s>r?this._insertElements(r,s-r,t):s{for(u.length+=n,l=u.length-1;l>=o;l--)u[l]=u[l-n]};for(a(s),l=t;lr-s))}return e._cache.$bar}function iv(e){const t=e.iScale,n=nv(t,e.type);let i=t._length,r,s,o,l;const a=()=>{o===32767||o===-32768||(gr(l)&&(i=Math.min(i,Math.abs(o-l)||i)),l=o)};for(r=0,s=n.length;r0?r[e-1]:null,l=eMath.abs(l)&&(a=l,u=o),t[n.axis]=u,t._custom={barStart:a,barEnd:u,start:r,end:s,min:o,max:l}}function kp(e,t,n,i){return G(e)?ov(e,t,n,i):t[n.axis]=n.parse(e,i),t}function Xc(e,t,n,i){const r=e.iScale,s=e.vScale,o=r.getLabels(),l=r===s,a=[];let u,c,f,h;for(u=n,c=n+i;u=n?1:-1)}function av(e){let t,n,i,r,s;return e.horizontal?(t=e.base>e.x,n="left",i="right"):(t=e.basea.controller.options.grouped),s=i.options.stacked,o=[],l=a=>{const u=a.controller.getParsed(n),c=u&&u[a.vScale.axis];if(V(c)||isNaN(c))return!0};for(const a of r)if(!(n!==void 0&&l(a))&&((s===!1||o.indexOf(a.stack)===-1||s===void 0&&a.stack===void 0)&&o.push(a.stack),a.index===t))break;return o.length||o.push(void 0),o}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,n,i){const r=this._getStacks(t,i),s=n!==void 0?r.indexOf(n):-1;return s===-1?r.length-1:s}_getRuler(){const t=this.options,n=this._cachedMeta,i=n.iScale,r=[];let s,o;for(s=0,o=n.data.length;s{a[o](t[n],r)&&(s.push({element:a,datasetIndex:u,index:c}),l=l||a.inRange(t.x,t.y,r))}),i&&!l?[]:s}var yv={evaluateInteractionItems:Cr,modes:{index(e,t,n,i){const r=mn(t,e),s=n.axis||"x",o=n.includeInvisible||!1,l=n.intersect?qo(e,r,s,i,o):Jo(e,r,s,!1,i,o),a=[];return l.length?(e.getSortedVisibleDatasetMetas().forEach(u=>{const c=l[0].index,f=u.data[c];f&&!f.skip&&a.push({element:f,datasetIndex:u.index,index:c})}),a):[]},dataset(e,t,n,i){const r=mn(t,e),s=n.axis||"xy",o=n.includeInvisible||!1;let l=n.intersect?qo(e,r,s,i,o):Jo(e,r,s,!1,i,o);if(l.length>0){const a=l[0].datasetIndex,u=e.getDatasetMeta(a).data;l=[];for(let c=0;cn.pos===t)}function Jc(e,t){return e.filter(n=>Sp.indexOf(n.pos)===-1&&n.box.axis===t)}function Mi(e,t){return e.sort((n,i)=>{const r=t?i:n,s=t?n:i;return r.weight===s.weight?r.index-s.index:r.weight-s.weight})}function vv(e){const t=[];let n,i,r,s,o,l;for(n=0,i=(e||[]).length;nu.box.fullSize),!0),i=Mi(Ci(t,"left"),!0),r=Mi(Ci(t,"right")),s=Mi(Ci(t,"top"),!0),o=Mi(Ci(t,"bottom")),l=Jc(t,"x"),a=Jc(t,"y");return{fullSize:n,leftAndTop:i.concat(s),rightAndBottom:r.concat(a).concat(o).concat(l),chartArea:Ci(t,"chartArea"),vertical:i.concat(r).concat(a),horizontal:s.concat(o).concat(l)}}function tf(e,t,n,i){return Math.max(e[n],t[n])+Math.max(e[i],t[i])}function bp(e,t){e.top=Math.max(e.top,t.top),e.left=Math.max(e.left,t.left),e.bottom=Math.max(e.bottom,t.bottom),e.right=Math.max(e.right,t.right)}function kv(e,t,n,i){const{pos:r,box:s}=n,o=e.maxPadding;if(!N(r)){n.size&&(e[r]-=n.size);const f=i[n.stack]||{size:0,count:1};f.size=Math.max(f.size,n.horizontal?s.height:s.width),n.size=f.size/f.count,e[r]+=n.size}s.getPadding&&bp(o,s.getPadding());const l=Math.max(0,t.outerWidth-tf(o,e,"left","right")),a=Math.max(0,t.outerHeight-tf(o,e,"top","bottom")),u=l!==e.w,c=a!==e.h;return e.w=l,e.h=a,n.horizontal?{same:u,other:c}:{same:c,other:u}}function Sv(e){const t=e.maxPadding;function n(i){const r=Math.max(t[i]-e[i],0);return e[i]+=r,r}e.y+=n("top"),e.x+=n("left"),n("right"),n("bottom")}function bv(e,t){const n=t.maxPadding;function i(r){const s={left:0,top:0,right:0,bottom:0};return r.forEach(o=>{s[o]=Math.max(t[o],n[o])}),s}return i(e?["left","right"]:["top","bottom"])}function Ri(e,t,n,i){const r=[];let s,o,l,a,u,c;for(s=0,o=e.length,u=0;s{typeof y.beforeLayout=="function"&&y.beforeLayout()});const c=a.reduce((y,x)=>x.box.options&&x.box.options.display===!1?y:y+1,0)||1,f=Object.freeze({outerWidth:t,outerHeight:n,padding:r,availableWidth:s,availableHeight:o,vBoxMaxWidth:s/2/c,hBoxMaxHeight:o/2}),h=Object.assign({},r);bp(h,bt(i));const d=Object.assign({maxPadding:h,w:s,h:o,x:r.left,y:r.top},r),m=_v(a.concat(u),f);Ri(l.fullSize,d,f,m),Ri(a,d,f,m),Ri(u,d,f,m)&&Ri(a,d,f,m),Sv(d),ef(l.leftAndTop,d,f,m),d.x+=d.w,d.y+=d.h,ef(l.rightAndBottom,d,f,m),e.chartArea={left:d.left,top:d.top,right:d.left+d.w,bottom:d.top+d.h,height:d.h,width:d.w},B(l.chartArea,y=>{const x=y.box;Object.assign(x,e.chartArea),x.update(d.w,d.h,{left:0,top:0,right:0,bottom:0})})}};class Cp{acquireContext(t,n){}releaseContext(t){return!1}addEventListener(t,n,i){}removeEventListener(t,n,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,n,i,r){return n=Math.max(0,n||t.width),i=i||t.height,{width:n,height:Math.max(0,r?Math.floor(n/r):i)}}isAttached(t){return!0}updateConfig(t){}}class Cv extends Cp{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const ys="$chartjs",Mv={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},nf=e=>e===null||e==="";function Pv(e,t){const n=e.style,i=e.getAttribute("height"),r=e.getAttribute("width");if(e[ys]={initial:{height:i,width:r,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",n.boxSizing=n.boxSizing||"border-box",nf(r)){const s=Hc(e,"width");s!==void 0&&(e.width=s)}if(nf(i))if(e.style.height==="")e.height=e.width/(t||2);else{const s=Hc(e,"height");s!==void 0&&(e.height=s)}return e}const Mp=jy?{passive:!0}:!1;function Ev(e,t,n){e.addEventListener(t,n,Mp)}function Tv(e,t,n){e.canvas.removeEventListener(t,n,Mp)}function Lv(e,t){const n=Mv[e.type]||e.type,{x:i,y:r}=mn(e,t);return{type:n,chart:t,native:e,x:i!==void 0?i:null,y:r!==void 0?r:null}}function Gs(e,t){for(const n of e)if(n===t||n.contains(t))return!0}function Ov(e,t,n){const i=e.canvas,r=new MutationObserver(s=>{let o=!1;for(const l of s)o=o||Gs(l.addedNodes,i),o=o&&!Gs(l.removedNodes,i);o&&n()});return r.observe(document,{childList:!0,subtree:!0}),r}function Dv(e,t,n){const i=e.canvas,r=new MutationObserver(s=>{let o=!1;for(const l of s)o=o||Gs(l.removedNodes,i),o=o&&!Gs(l.addedNodes,i);o&&n()});return r.observe(document,{childList:!0,subtree:!0}),r}const yr=new Map;let rf=0;function Pp(){const e=window.devicePixelRatio;e!==rf&&(rf=e,yr.forEach((t,n)=>{n.currentDevicePixelRatio!==e&&t()}))}function zv(e,t){yr.size||window.addEventListener("resize",Pp),yr.set(e,t)}function Rv(e){yr.delete(e),yr.size||window.removeEventListener("resize",Pp)}function Fv(e,t,n){const i=e.canvas,r=i&&fu(i);if(!r)return;const s=lp((l,a)=>{const u=r.clientWidth;n(l,a),u{const a=l[0],u=a.contentRect.width,c=a.contentRect.height;u===0&&c===0||s(u,c)});return o.observe(r),zv(e,s),o}function tl(e,t,n){n&&n.disconnect(),t==="resize"&&Rv(e)}function Iv(e,t,n){const i=e.canvas,r=lp(s=>{e.ctx!==null&&n(Lv(s,e))},e);return Ev(i,t,r),r}class Av extends Cp{acquireContext(t,n){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(Pv(t,n),i):null}releaseContext(t){const n=t.canvas;if(!n[ys])return!1;const i=n[ys].initial;["height","width"].forEach(s=>{const o=i[s];V(o)?n.removeAttribute(s):n.setAttribute(s,o)});const r=i.style||{};return Object.keys(r).forEach(s=>{n.style[s]=r[s]}),n.width=n.width,delete n[ys],!0}addEventListener(t,n,i){this.removeEventListener(t,n);const r=t.$proxies||(t.$proxies={}),o={attach:Ov,detach:Dv,resize:Fv}[n]||Iv;r[n]=o(t,n,i)}removeEventListener(t,n){const i=t.$proxies||(t.$proxies={}),r=i[n];if(!r)return;({attach:tl,detach:tl,resize:tl}[n]||Tv)(t,n,r),i[n]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,n,i,r){return Ny(t,n,i,r)}isAttached(t){const n=fu(t);return!!(n&&n.isConnected)}}function Nv(e){return!yp()||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas?Cv:Av}class on{constructor(){R(this,"x");R(this,"y");R(this,"active",!1);R(this,"options");R(this,"$animations")}tooltipPosition(t){const{x:n,y:i}=this.getProps(["x","y"],t);return{x:n,y:i}}hasValue(){return Ks(this.x)&&Ks(this.y)}getProps(t,n){const i=this.$animations;if(!n||!i)return this;const r={};return t.forEach(s=>{r[s]=i[s]&&i[s].active()?i[s]._to:this[s]}),r}}R(on,"defaults",{}),R(on,"defaultRoutes");function jv(e,t){const n=e.options.ticks,i=Bv(e),r=Math.min(n.maxTicksLimit||i,i),s=n.major.enabled?Vv(t):[],o=s.length,l=s[0],a=s[o-1],u=[];if(o>r)return Wv(t,u,s,o/r),u;const c=Hv(s,t,r);if(o>0){let f,h;const d=o>1?Math.round((a-l)/(o-1)):null;for(Zr(t,u,c,V(d)?0:l-d,l),f=0,h=o-1;fr)return a}return Math.max(r,1)}function Vv(e){const t=[];let n,i;for(n=0,i=e.length;ne==="left"?"right":e==="right"?"left":e,sf=(e,t,n)=>t==="top"||t==="left"?e[t]+n:e[t]-n,of=(e,t)=>Math.min(t||e,e);function lf(e,t){const n=[],i=e.length/t,r=e.length;let s=0;for(;so+l)))return a}function Kv(e,t){B(e,n=>{const i=n.gc,r=i.length/2;let s;if(r>t){for(s=0;si?i:n,i=r&&n>i?n:i,{min:Bt(n,Bt(i,n)),max:Bt(i,Bt(n,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 t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){$(this.options.beforeUpdate,[this])}update(t,n,i){const{beginAtZero:r,grace:s,ticks:o}=this.options,l=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=n,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=Sy(this,s,r),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const a=l=s||i<=1||!this.isHorizontal()){this.labelRotation=r;return}const c=this._getLabelSizes(),f=c.widest.width,h=c.highest.height,d=se(this.chart.width-f,0,this.maxWidth);l=t.offset?this.maxWidth/i:d/(i-1),f+6>l&&(l=d/(i-(t.offset?.5:1)),a=this.maxHeight-Pi(t.grid)-n.padding-af(t.title,this.chart.options.font),u=Math.sqrt(f*f+h*h),o=nu(Math.min(Math.asin(se((c.highest.height+6)/l,-1,1)),Math.asin(se(a/u,-1,1))-Math.asin(se(h/u,-1,1)))),o=Math.max(r,Math.min(s,o))),this.labelRotation=o}afterCalculateLabelRotation(){$(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){$(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:n,options:{ticks:i,title:r,grid:s}}=this,o=this._isVisible(),l=this.isHorizontal();if(o){const a=af(r,n.options.font);if(l?(t.width=this.maxWidth,t.height=Pi(s)+a):(t.height=this.maxHeight,t.width=Pi(s)+a),i.display&&this.ticks.length){const{first:u,last:c,widest:f,highest:h}=this._getLabelSizes(),d=i.padding*2,m=$e(this.labelRotation),y=Math.cos(m),x=Math.sin(m);if(l){const p=i.mirror?0:x*f.width+y*h.height;t.height=Math.min(this.maxHeight,t.height+p+d)}else{const p=i.mirror?0:y*f.width+x*h.height;t.width=Math.min(this.maxWidth,t.width+p+d)}this._calculatePadding(u,c,x,y)}}this._handleMargins(),l?(this.width=this._length=n.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=n.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,n,i,r){const{ticks:{align:s,padding:o},position:l}=this.options,a=this.labelRotation!==0,u=l!=="top"&&this.axis==="x";if(this.isHorizontal()){const c=this.getPixelForTick(0)-this.left,f=this.right-this.getPixelForTick(this.ticks.length-1);let h=0,d=0;a?u?(h=r*t.width,d=i*n.height):(h=i*t.height,d=r*n.width):s==="start"?d=n.width:s==="end"?h=t.width:s!=="inner"&&(h=t.width/2,d=n.width/2),this.paddingLeft=Math.max((h-c+o)*this.width/(this.width-c),0),this.paddingRight=Math.max((d-f+o)*this.width/(this.width-f),0)}else{let c=n.height/2,f=t.height/2;s==="start"?(c=0,f=t.height):s==="end"&&(c=n.height,f=0),this.paddingTop=c+o,this.paddingBottom=f+o}}_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(){$(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:n}=this.options;return n==="top"||n==="bottom"||t==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){this.beforeTickToLabelConversion(),this.generateTickLabels(t);let n,i;for(n=0,i=t.length;n({width:o[T]||0,height:l[T]||0});return{first:b(0),last:b(n-1),widest:b(k),highest:b(S),widths:o,heights:l}}getLabelForValue(t){return t}getPixelForValue(t,n){return NaN}getValueForPixel(t){}getPixelForTick(t){const n=this.ticks;return t<0||t>n.length-1?null:this.getPixelForValue(n[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const n=this._startPixel+t*this._length;return ty(this._alignToPixels?fn(this.chart,n,0):n)}getDecimalForPixel(t){const n=(t-this._startPixel)/this._length;return this._reversePixels?1-n:n}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:n}=this;return t<0&&n<0?n:t>0&&n>0?t:0}getContext(t){const n=this.ticks||[];if(t>=0&&tl*r?l/i:a/r:a*r0}_computeGridLineItems(t){const n=this.axis,i=this.chart,r=this.options,{grid:s,position:o,border:l}=r,a=s.offset,u=this.isHorizontal(),f=this.ticks.length+(a?1:0),h=Pi(s),d=[],m=l.setContext(this.getContext()),y=m.display?m.width:0,x=y/2,p=function(it){return fn(i,it,y)};let g,v,_,w,k,S,b,T,E,L,F,st;if(o==="top")g=p(this.bottom),S=this.bottom-h,T=g-x,L=p(t.top)+x,st=t.bottom;else if(o==="bottom")g=p(this.top),L=t.top,st=p(t.bottom)-x,S=g+x,T=this.top+h;else if(o==="left")g=p(this.right),k=this.right-h,b=g-x,E=p(t.left)+x,F=t.right;else if(o==="right")g=p(this.left),E=t.left,F=p(t.right)-x,k=g+x,b=this.left+h;else if(n==="x"){if(o==="center")g=p((t.top+t.bottom)/2+.5);else if(N(o)){const it=Object.keys(o)[0],vt=o[it];g=p(this.chart.scales[it].getPixelForValue(vt))}L=t.top,st=t.bottom,S=g+x,T=S+h}else if(n==="y"){if(o==="center")g=p((t.left+t.right)/2);else if(N(o)){const it=Object.keys(o)[0],vt=o[it];g=p(this.chart.scales[it].getPixelForValue(vt))}k=g-x,b=k-h,E=t.left,F=t.right}const At=j(r.ticks.maxTicksLimit,f),Z=Math.max(1,Math.ceil(f/At));for(v=0;vs.value===t);return r>=0?n.setContext(this.getContext(r)).lineWidth:0}drawGrid(t){const n=this.options.grid,i=this.ctx,r=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let s,o;const l=(a,u,c)=>{!c.width||!c.color||(i.save(),i.lineWidth=c.width,i.strokeStyle=c.color,i.setLineDash(c.borderDash||[]),i.lineDashOffset=c.borderDashOffset,i.beginPath(),i.moveTo(a.x,a.y),i.lineTo(u.x,u.y),i.stroke(),i.restore())};if(n.display)for(s=0,o=r.length;s{this.draw(s)}}]:[{z:i,draw:s=>{this.drawBackground(),this.drawGrid(s),this.drawTitle()}},{z:r,draw:()=>{this.drawBorder()}},{z:n,draw:s=>{this.drawLabels(s)}}]}getMatchingVisibleMetas(t){const n=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",r=[];let s,o;for(s=0,o=n.length;s{const i=n.split("."),r=i.pop(),s=[e].concat(i).join("."),o=t[n].split("."),l=o.pop(),a=o.join(".");nt.route(s,r,a,l)})}function t1(e){return"id"in e&&"defaults"in e}class e1{constructor(){this.controllers=new qr(Qi,"datasets",!0),this.elements=new qr(on,"elements"),this.plugins=new qr(Object,"plugins"),this.scales=new qr(Rn,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,n,i){[...n].forEach(r=>{const s=i||this._getRegistryForType(r);i||s.isForType(r)||s===this.plugins&&r.id?this._exec(t,s,r):B(r,o=>{const l=i||this._getRegistryForType(o);this._exec(t,l,o)})})}_exec(t,n,i){const r=eu(t);$(i["before"+r],[],i),n[t](i),$(i["after"+r],[],i)}_getRegistryForType(t){for(let n=0;ns.filter(l=>!o.some(a=>l.plugin.id===a.plugin.id));this._notify(r(n,i),t,"stop"),this._notify(r(i,n),t,"start")}}function i1(e){const t={},n=[],i=Object.keys(de.plugins.items);for(let s=0;s1&&uf(e[0].toLowerCase());if(i)return i}throw new Error(`Cannot determine type of '${e}' axis. Please provide 'axis' or 'position' option.`)}function cf(e,t,n){if(n[t+"AxisID"]===e)return{axis:t}}function c1(e,t){if(t.data&&t.data.datasets){const n=t.data.datasets.filter(i=>i.xAxisID===e||i.yAxisID===e);if(n.length)return cf(e,"x",n[0])||cf(e,"y",n[0])}return{}}function f1(e,t){const n=Tn[e.type]||{scales:{}},i=t.scales||{},r=ql(e.type,t),s=Object.create(null);return Object.keys(i).forEach(o=>{const l=i[o];if(!N(l))return console.error(`Invalid scale configuration for scale: ${o}`);if(l._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${o}`);const a=Jl(o,l,c1(o,e),nt.scales[l.type]),u=a1(a,r),c=n.scales||{};s[o]=Ui(Object.create(null),[{axis:a},l,c[a],c[u]])}),e.data.datasets.forEach(o=>{const l=o.type||e.type,a=o.indexAxis||ql(l,t),c=(Tn[l]||{}).scales||{};Object.keys(c).forEach(f=>{const h=l1(f,a),d=o[h+"AxisID"]||h;s[d]=s[d]||Object.create(null),Ui(s[d],[{axis:h},i[d],c[f]])})}),Object.keys(s).forEach(o=>{const l=s[o];Ui(l,[nt.scales[l.type],nt.scale])}),s}function Ep(e){const t=e.options||(e.options={});t.plugins=j(t.plugins,{}),t.scales=f1(e,t)}function Tp(e){return e=e||{},e.datasets=e.datasets||[],e.labels=e.labels||[],e}function h1(e){return e=e||{},e.data=Tp(e.data),Ep(e),e}const ff=new Map,Lp=new Set;function Jr(e,t){let n=ff.get(e);return n||(n=t(),ff.set(e,n),Lp.add(n)),n}const Ei=(e,t,n)=>{const i=fi(t,n);i!==void 0&&e.add(i)};class d1{constructor(t){this._config=h1(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=Tp(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),Ep(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return Jr(t,()=>[[`datasets.${t}`,""]])}datasetAnimationScopeKeys(t,n){return Jr(`${t}.transition.${n}`,()=>[[`datasets.${t}.transitions.${n}`,`transitions.${n}`],[`datasets.${t}`,""]])}datasetElementScopeKeys(t,n){return Jr(`${t}-${n}`,()=>[[`datasets.${t}.elements.${n}`,`datasets.${t}`,`elements.${n}`,""]])}pluginScopeKeys(t){const n=t.id,i=this.type;return Jr(`${i}-plugin-${n}`,()=>[[`plugins.${n}`,...t.additionalOptionScopes||[]]])}_cachedScopes(t,n){const i=this._scopeCache;let r=i.get(t);return(!r||n)&&(r=new Map,i.set(t,r)),r}getOptionScopes(t,n,i){const{options:r,type:s}=this,o=this._cachedScopes(t,i),l=o.get(n);if(l)return l;const a=new Set;n.forEach(c=>{t&&(a.add(t),c.forEach(f=>Ei(a,t,f))),c.forEach(f=>Ei(a,r,f)),c.forEach(f=>Ei(a,Tn[s]||{},f)),c.forEach(f=>Ei(a,nt,f)),c.forEach(f=>Ei(a,Zl,f))});const u=Array.from(a);return u.length===0&&u.push(Object.create(null)),Lp.has(n)&&o.set(n,u),u}chartOptionScopes(){const{options:t,type:n}=this;return[t,Tn[n]||{},nt.datasets[n]||{},{type:n},nt,Zl]}resolveNamedOptions(t,n,i,r=[""]){const s={$shared:!0},{resolver:o,subPrefixes:l}=hf(this._resolverCache,t,r);let a=o;if(g1(o,n)){s.$shared=!1,i=sn(i)?i():i;const u=this.createResolver(t,i,l);a=hi(o,i,u)}for(const u of n)s[u]=a[u];return s}createResolver(t,n,i=[""],r){const{resolver:s}=hf(this._resolverCache,t,i);return N(n)?hi(s,n,void 0,r):s}}function hf(e,t,n){let i=e.get(t);i||(i=new Map,e.set(t,i));const r=n.join();let s=i.get(r);return s||(s={resolver:au(t,n),subPrefixes:n.filter(l=>!l.toLowerCase().includes("hover"))},i.set(r,s)),s}const p1=e=>N(e)&&Object.getOwnPropertyNames(e).reduce((t,n)=>t||sn(e[n]),!1);function g1(e,t){const{isScriptable:n,isIndexable:i}=dp(e);for(const r of t){const s=n(r),o=i(r),l=(o||s)&&e[r];if(s&&(sn(l)||p1(l))||o&&G(l))return!0}return!1}var m1="4.3.0";const y1=["top","bottom","left","right","chartArea"];function df(e,t){return e==="top"||e==="bottom"||y1.indexOf(e)===-1&&t==="x"}function pf(e,t){return function(n,i){return n[e]===i[e]?n[t]-i[t]:n[e]-i[e]}}function gf(e){const t=e.chart,n=t.options.animation;t.notifyPlugins("afterRender"),$(n&&n.onComplete,[e],t)}function v1(e){const t=e.chart,n=t.options.animation;$(n&&n.onProgress,[e],t)}function Op(e){return yp()&&typeof e=="string"?e=document.getElementById(e):e&&e.length&&(e=e[0]),e&&e.canvas&&(e=e.canvas),e}const vs={},mf=e=>{const t=Op(e);return Object.values(vs).filter(n=>n.canvas===t).pop()};function x1(e,t,n){const i=Object.keys(e);for(const r of i){const s=+r;if(s>=t){const o=e[r];delete e[r],(n>0||s>t)&&(e[s+n]=o)}}}function _1(e,t,n,i){return!n||e.type==="mouseout"?null:i?t:e}function w1(e){const{xScale:t,yScale:n}=e;if(t&&n)return{left:t.left,right:t.right,top:n.top,bottom:n.bottom}}var Fe;let vo=(Fe=class{static register(...t){de.add(...t),yf()}static unregister(...t){de.remove(...t),yf()}constructor(t,n){const i=this.config=new d1(n),r=Op(t),s=mf(r);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 o=i.createResolver(i.chartOptionScopes(),this.getContext());this.platform=new(i.platform||Nv(r)),this.platform.updateConfig(i);const l=this.platform.acquireContext(r,o.aspectRatio),a=l&&l.canvas,u=a&&a.height,c=a&&a.width;if(this.id=H0(),this.ctx=l,this.canvas=a,this.width=c,this.height=u,this._options=o,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 n1,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=ry(f=>this.update(f),o.resizeDelay||0),this._dataChanges=[],vs[this.id]=this,!l||!a){console.error("Failed to create chart: can't acquire context from the given item");return}we.listen(this,"complete",gf),we.listen(this,"progress",v1),this._initialize(),this.attached&&this.update()}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:n},width:i,height:r,_aspectRatio:s}=this;return V(t)?n&&s?s:r?i/r:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return de}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():Bc(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Ic(this.canvas,this.ctx),this}stop(){return we.stop(this),this}resize(t,n){we.running(this)?this._resizeBeforeDraw={width:t,height:n}:this._resize(t,n)}_resize(t,n){const i=this.options,r=this.canvas,s=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(r,t,n,s),l=i.devicePixelRatio||this.platform.getDevicePixelRatio(),a=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,Bc(this,l,!0)&&(this.notifyPlugins("resize",{size:o}),$(i.onResize,[this,o],this),this.attached&&this._doResize(a)&&this.render())}ensureScalesHaveIDs(){const n=this.options.scales||{};B(n,(i,r)=>{i.id=r})}buildOrUpdateScales(){const t=this.options,n=t.scales,i=this.scales,r=Object.keys(i).reduce((o,l)=>(o[l]=!1,o),{});let s=[];n&&(s=s.concat(Object.keys(n).map(o=>{const l=n[o],a=Jl(o,l),u=a==="r",c=a==="x";return{options:l,dposition:u?"chartArea":c?"bottom":"left",dtype:u?"radialLinear":c?"category":"linear"}}))),B(s,o=>{const l=o.options,a=l.id,u=Jl(a,l),c=j(l.type,o.dtype);(l.position===void 0||df(l.position,u)!==df(o.dposition))&&(l.position=o.dposition),r[a]=!0;let f=null;if(a in i&&i[a].type===c)f=i[a];else{const h=de.getScale(c);f=new h({id:a,type:c,ctx:this.ctx,chart:this}),i[f.id]=f}f.init(l,t)}),B(r,(o,l)=>{o||delete i[l]}),B(i,o=>{Zt.configure(this,o,o.options),Zt.addBox(this,o)})}_updateMetasets(){const t=this._metasets,n=this.data.datasets.length,i=t.length;if(t.sort((r,s)=>r.index-s.index),i>n){for(let r=n;rn.length&&delete this._stacks,t.forEach((i,r)=>{n.filter(s=>s===i._dataset).length===0&&this._destroyDatasetMeta(r)})}buildOrUpdateControllers(){const t=[],n=this.data.datasets;let i,r;for(this._removeUnreferencedMetasets(),i=0,r=n.length;i{this.getDatasetMeta(n).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const n=this.config;n.update();const i=this._options=n.createResolver(n.chartOptionScopes(),this.getContext()),r=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0})===!1)return;const s=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let u=0,c=this.data.datasets.length;u{u.reset()}),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(pf("z","_idx"));const{_active:l,_lastEvent:a}=this;a?this._eventHandler(a,!0):l.length&&this._updateHoverStyles(l,l,!0),this.render()}_updateScales(){B(this.scales,t=>{Zt.removeBox(this,t)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,n=new Set(Object.keys(this._listeners)),i=new Set(t.events);(!Pc(n,i)||!!this._responsiveListeners!==t.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,n=this._getUniformDataChanges()||[];for(const{method:i,start:r,count:s}of n){const o=i==="_removeElements"?-s:s;x1(t,r,o)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const n=this.data.datasets.length,i=s=>new Set(t.filter(o=>o[0]===s).map((o,l)=>l+","+o.splice(1).join(","))),r=i(0);for(let s=1;ss.split(",")).map(s=>({method:s[1],start:+s[2],count:+s[3]}))}_updateLayout(t){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;Zt.update(this,this.width,this.height,t);const n=this.chartArea,i=n.width<=0||n.height<=0;this._layers=[],B(this.boxes,r=>{i&&r.position==="chartArea"||(r.configure&&r.configure(),this._layers.push(...r._layers()))},this),this._layers.forEach((r,s)=>{r._idx=s}),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})!==!1){for(let n=0,i=this.data.datasets.length;n=0;--n)this._drawDataset(t[n]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const n=this.ctx,i=t._clip,r=!i.disabled,s=w1(t)||this.chartArea,o={meta:t,index:t.index,cancelable:!0};this.notifyPlugins("beforeDatasetDraw",o)!==!1&&(r&&ou(n,{left:i.left===!1?0:s.left-i.left,right:i.right===!1?this.width:s.right+i.right,top:i.top===!1?0:s.top-i.top,bottom:i.bottom===!1?this.height:s.bottom+i.bottom}),t.controller.draw(),r&&lu(n),o.cancelable=!1,this.notifyPlugins("afterDatasetDraw",o))}isPointInArea(t){return Gn(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,n,i,r){const s=yv.modes[n];return typeof s=="function"?s(this,t,i,r):[]}getDatasetMeta(t){const n=this.data.datasets[t],i=this._metasets;let r=i.filter(s=>s&&s._dataset===n).pop();return r||(r={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:n&&n.order||0,index:t,_dataset:n,_parsed:[],_sorted:!1},i.push(r)),r}getContext(){return this.$context||(this.$context=zn(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const n=this.data.datasets[t];if(!n)return!1;const i=this.getDatasetMeta(t);return typeof i.hidden=="boolean"?!i.hidden:!n.hidden}setDatasetVisibility(t,n){const i=this.getDatasetMeta(t);i.hidden=!n}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,n,i){const r=i?"show":"hide",s=this.getDatasetMeta(t),o=s.controller._resolveAnimations(void 0,r);gr(n)?(s.data[n].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(s,{visible:i}),this.update(l=>l.datasetIndex===t?r:void 0))}hide(t,n){this._updateVisibility(t,n,!1)}show(t,n){this._updateVisibility(t,n,!0)}_destroyDatasetMeta(t){const n=this._metasets[t];n&&n.controller&&n.controller._destroy(),delete this._metasets[t]}_stop(){let t,n;for(this.stop(),we.remove(this),t=0,n=this.data.datasets.length;t{n.addEventListener(this,s,o),t[s]=o},r=(s,o,l)=>{s.offsetX=o,s.offsetY=l,this._eventHandler(s)};B(this.options.events,s=>i(s,r))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,n=this.platform,i=(a,u)=>{n.addEventListener(this,a,u),t[a]=u},r=(a,u)=>{t[a]&&(n.removeEventListener(this,a,u),delete t[a])},s=(a,u)=>{this.canvas&&this.resize(a,u)};let o;const l=()=>{r("attach",l),this.attached=!0,this.resize(),i("resize",s),i("detach",o)};o=()=>{this.attached=!1,r("resize",s),this._stop(),this._resize(0,0),i("attach",l)},n.isAttached(this.canvas)?l():o()}unbindEvents(){B(this._listeners,(t,n)=>{this.platform.removeEventListener(this,n,t)}),this._listeners={},B(this._responsiveListeners,(t,n)=>{this.platform.removeEventListener(this,n,t)}),this._responsiveListeners=void 0}updateHoverStyle(t,n,i){const r=i?"set":"remove";let s,o,l,a;for(n==="dataset"&&(s=this.getDatasetMeta(t[0].datasetIndex),s.controller["_"+r+"DatasetHoverStyle"]()),l=0,a=t.length;l{const l=this.getDatasetMeta(s);if(!l)throw new Error("No dataset found at index "+s);return{datasetIndex:s,element:l.data[o],index:o}});!$s(i,n)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,n))}notifyPlugins(t,n,i){return this._plugins.notify(this,t,n,i)}isPluginEnabled(t){return this._plugins._cache.filter(n=>n.plugin.id===t).length===1}_updateHoverStyles(t,n,i){const r=this.options.hover,s=(a,u)=>a.filter(c=>!u.some(f=>c.datasetIndex===f.datasetIndex&&c.index===f.index)),o=s(n,t),l=i?t:s(t,n);o.length&&this.updateHoverStyle(o,r.mode,!1),l.length&&r.mode&&this.updateHoverStyle(l,r.mode,!0)}_eventHandler(t,n){const i={event:t,replay:n,cancelable:!0,inChartArea:this.isPointInArea(t)},r=o=>(o.options.events||this.options.events).includes(t.native.type);if(this.notifyPlugins("beforeEvent",i,r)===!1)return;const s=this._handleEvent(t,n,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,r),(s||i.changed)&&this.render(),this}_handleEvent(t,n,i){const{_active:r=[],options:s}=this,o=n,l=this._getActiveElements(t,r,i,o),a=K0(t),u=_1(t,this._lastEvent,i,a);i&&(this._lastEvent=null,$(s.onHover,[t,l,this],this),a&&$(s.onClick,[t,l,this],this));const c=!$s(l,r);return(c||n)&&(this._active=l,this._updateHoverStyles(l,r,n)),this._lastEvent=u,c}_getActiveElements(t,n,i,r){if(t.type==="mouseout")return[];if(!i)return n;const s=this.options.hover;return this.getElementsAtEventForMode(t,s.mode,s,r)}},R(Fe,"defaults",nt),R(Fe,"instances",vs),R(Fe,"overrides",Tn),R(Fe,"registry",de),R(Fe,"version",m1),R(Fe,"getChart",mf),Fe);function yf(){return B(vo.instances,e=>e._plugins.invalidate())}function Dp(e,t){const{x:n,y:i,base:r,width:s,height:o}=e.getProps(["x","y","base","width","height"],t);let l,a,u,c,f;return e.horizontal?(f=o/2,l=Math.min(n,r),a=Math.max(n,r),u=i-f,c=i+f):(f=s/2,l=n-f,a=n+f,u=Math.min(i,r),c=Math.max(i,r)),{left:l,top:u,right:a,bottom:c}}function Ue(e,t,n,i){return e?0:se(t,n,i)}function k1(e,t,n){const i=e.options.borderWidth,r=e.borderSkipped,s=hp(i);return{t:Ue(r.top,s.top,0,n),r:Ue(r.right,s.right,0,t),b:Ue(r.bottom,s.bottom,0,n),l:Ue(r.left,s.left,0,t)}}function S1(e,t,n){const{enableBorderRadius:i}=e.getProps(["enableBorderRadius"]),r=e.options.borderRadius,s=kn(r),o=Math.min(t,n),l=e.borderSkipped,a=i||N(r);return{topLeft:Ue(!a||l.top||l.left,s.topLeft,0,o),topRight:Ue(!a||l.top||l.right,s.topRight,0,o),bottomLeft:Ue(!a||l.bottom||l.left,s.bottomLeft,0,o),bottomRight:Ue(!a||l.bottom||l.right,s.bottomRight,0,o)}}function b1(e){const t=Dp(e),n=t.right-t.left,i=t.bottom-t.top,r=k1(e,n/2,i/2),s=S1(e,n/2,i/2);return{outer:{x:t.left,y:t.top,w:n,h:i,radius:s},inner:{x:t.left+r.l,y:t.top+r.t,w:n-r.l-r.r,h:i-r.t-r.b,radius:{topLeft:Math.max(0,s.topLeft-Math.max(r.t,r.l)),topRight:Math.max(0,s.topRight-Math.max(r.t,r.r)),bottomLeft:Math.max(0,s.bottomLeft-Math.max(r.b,r.l)),bottomRight:Math.max(0,s.bottomRight-Math.max(r.b,r.r))}}}}function el(e,t,n,i){const r=t===null,s=n===null,l=e&&!(r&&s)&&Dp(e,i);return l&&(r||Xn(t,l.left,l.right))&&(s||Xn(n,l.top,l.bottom))}function C1(e){return e.topLeft||e.topRight||e.bottomLeft||e.bottomRight}function M1(e,t){e.rect(t.x,t.y,t.w,t.h)}function nl(e,t,n={}){const i=e.x!==n.x?-t:0,r=e.y!==n.y?-t:0,s=(e.x+e.w!==n.x+n.w?t:0)-i,o=(e.y+e.h!==n.y+n.h?t:0)-r;return{x:e.x+i,y:e.y+r,w:e.w+s,h:e.h+o,radius:e.radius}}class xs extends on{constructor(t){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,t&&Object.assign(this,t)}draw(t){const{inflateAmount:n,options:{borderColor:i,backgroundColor:r}}=this,{inner:s,outer:o}=b1(this),l=C1(o.radius)?mr:M1;t.save(),(o.w!==s.w||o.h!==s.h)&&(t.beginPath(),l(t,nl(o,n,s)),t.clip(),l(t,nl(s,-n,o)),t.fillStyle=i,t.fill("evenodd")),t.beginPath(),l(t,nl(s,n)),t.fillStyle=r,t.fill(),t.restore()}inRange(t,n,i){return el(this,t,n,i)}inXRange(t,n){return el(this,t,null,n)}inYRange(t,n){return el(this,null,t,n)}getCenterPoint(t){const{x:n,y:i,base:r,horizontal:s}=this.getProps(["x","y","base","horizontal"],t);return{x:s?(n+r)/2:n,y:s?i:(i+r)/2}}getRange(t){return t==="x"?this.width/2:this.height/2}}R(xs,"id","bar"),R(xs,"defaults",{borderSkipped:"start",borderWidth:0,borderRadius:0,inflateAmount:"auto",pointStyle:void 0}),R(xs,"defaultRoutes",{backgroundColor:"backgroundColor",borderColor:"borderColor"});const vf=(e,t)=>{let{boxHeight:n=t,boxWidth:i=t}=e;return e.usePointStyle&&(n=Math.min(n,t),i=e.pointStyleWidth||Math.min(i,t)),{boxWidth:i,boxHeight:n,itemHeight:Math.max(t,n)}},P1=(e,t)=>e!==null&&t!==null&&e.datasetIndex===t.datasetIndex&&e.index===t.index;class xf extends on{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.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(t,n,i){this.maxWidth=t,this.maxHeight=n,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 t=this.options.labels||{};let n=$(t.generateLabels,[this.chart],this)||[];t.filter&&(n=n.filter(i=>t.filter(i,this.chart.data))),t.sort&&(n=n.sort((i,r)=>t.sort(i,r,this.chart.data))),this.options.reverse&&n.reverse(),this.legendItems=n}fit(){const{options:t,ctx:n}=this;if(!t.display){this.width=this.height=0;return}const i=t.labels,r=ut(i.font),s=r.size,o=this._computeTitleHeight(),{boxWidth:l,itemHeight:a}=vf(i,s);let u,c;n.font=r.string,this.isHorizontal()?(u=this.maxWidth,c=this._fitRows(o,s,l,a)+10):(c=this.maxHeight,u=this._fitCols(o,r,l,a)+10),this.width=Math.min(u,t.maxWidth||this.maxWidth),this.height=Math.min(c,t.maxHeight||this.maxHeight)}_fitRows(t,n,i,r){const{ctx:s,maxWidth:o,options:{labels:{padding:l}}}=this,a=this.legendHitBoxes=[],u=this.lineWidths=[0],c=r+l;let f=t;s.textAlign="left",s.textBaseline="middle";let h=-1,d=-c;return this.legendItems.forEach((m,y)=>{const x=i+n/2+s.measureText(m.text).width;(y===0||u[u.length-1]+x+2*l>o)&&(f+=c,u[u.length-(y>0?0:1)]=0,d+=c,h++),a[y]={left:0,top:d,row:h,width:x,height:r},u[u.length-1]+=x+l}),f}_fitCols(t,n,i,r){const{ctx:s,maxHeight:o,options:{labels:{padding:l}}}=this,a=this.legendHitBoxes=[],u=this.columnSizes=[],c=o-t;let f=l,h=0,d=0,m=0,y=0;return this.legendItems.forEach((x,p)=>{const{itemWidth:g,itemHeight:v}=E1(i,n,s,x,r);p>0&&d+v+2*l>c&&(f+=h+l,u.push({width:h,height:d}),m+=h+l,y++,h=d=0),a[p]={left:m,top:d,col:y,width:g,height:v},h=Math.max(h,g),d+=v+l}),f+=h,u.push({width:h,height:d}),f}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:n,options:{align:i,labels:{padding:r},rtl:s}}=this,o=ii(s,this.left,this.width);if(this.isHorizontal()){let l=0,a=wt(i,this.left+r,this.right-this.lineWidths[l]);for(const u of n)l!==u.row&&(l=u.row,a=wt(i,this.left+r,this.right-this.lineWidths[l])),u.top+=this.top+t+r,u.left=o.leftForLtr(o.x(a),u.width),a+=u.width+r}else{let l=0,a=wt(i,this.top+t+r,this.bottom-this.columnSizes[l].height);for(const u of n)u.col!==l&&(l=u.col,a=wt(i,this.top+t+r,this.bottom-this.columnSizes[l].height)),u.top=a,u.left+=this.left+r,u.left=o.leftForLtr(o.x(u.left),u.width),a+=u.height+r}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){const t=this.ctx;ou(t,this),this._draw(),lu(t)}}_draw(){const{options:t,columnSizes:n,lineWidths:i,ctx:r}=this,{align:s,labels:o}=t,l=nt.color,a=ii(t.rtl,this.left,this.width),u=ut(o.font),{padding:c}=o,f=u.size,h=f/2;let d;this.drawTitle(),r.textAlign=a.textAlign("left"),r.textBaseline="middle",r.lineWidth=.5,r.font=u.string;const{boxWidth:m,boxHeight:y,itemHeight:x}=vf(o,f),p=function(k,S,b){if(isNaN(m)||m<=0||isNaN(y)||y<0)return;r.save();const T=j(b.lineWidth,1);if(r.fillStyle=j(b.fillStyle,l),r.lineCap=j(b.lineCap,"butt"),r.lineDashOffset=j(b.lineDashOffset,0),r.lineJoin=j(b.lineJoin,"miter"),r.lineWidth=T,r.strokeStyle=j(b.strokeStyle,l),r.setLineDash(j(b.lineDash,[])),o.usePointStyle){const E={radius:y*Math.SQRT2/2,pointStyle:b.pointStyle,rotation:b.rotation,borderWidth:T},L=a.xPlus(k,m/2),F=S+h;cp(r,E,L,F,o.pointStyleWidth&&m)}else{const E=S+Math.max((f-y)/2,0),L=a.leftForLtr(k,m),F=kn(b.borderRadius);r.beginPath(),Object.values(F).some(st=>st!==0)?mr(r,{x:L,y:E,w:m,h:y,radius:F}):r.rect(L,E,m,y),r.fill(),T!==0&&r.stroke()}r.restore()},g=function(k,S,b){Ln(r,b.text,k,S+x/2,u,{strikethrough:b.hidden,textAlign:a.textAlign(b.textAlign)})},v=this.isHorizontal(),_=this._computeTitleHeight();v?d={x:wt(s,this.left+c,this.right-i[0]),y:this.top+c+_,line:0}:d={x:this.left+c,y:wt(s,this.top+_+c,this.bottom-n[0].height),line:0},vp(this.ctx,t.textDirection);const w=x+c;this.legendItems.forEach((k,S)=>{r.strokeStyle=k.fontColor,r.fillStyle=k.fontColor;const b=r.measureText(k.text).width,T=a.textAlign(k.textAlign||(k.textAlign=o.textAlign)),E=m+h+b;let L=d.x,F=d.y;a.setWidth(this.width),v?S>0&&L+E+c>this.right&&(F=d.y+=w,d.line++,L=d.x=wt(s,this.left+c,this.right-i[d.line])):S>0&&F+w>this.bottom&&(L=d.x=L+n[d.line].width+c,d.line++,F=d.y=wt(s,this.top+_+c,this.bottom-n[d.line].height));const st=a.x(L);if(p(st,F,k),L=sy(T,L+m+h,v?L+E:this.right,t.rtl),g(a.x(L),F,k),v)d.x+=E+c;else if(typeof k.text!="string"){const At=u.lineHeight;d.y+=zp(k,At)}else d.y+=w}),xp(this.ctx,t.textDirection)}drawTitle(){const t=this.options,n=t.title,i=ut(n.font),r=bt(n.padding);if(!n.display)return;const s=ii(t.rtl,this.left,this.width),o=this.ctx,l=n.position,a=i.size/2,u=r.top+a;let c,f=this.left,h=this.width;if(this.isHorizontal())h=Math.max(...this.lineWidths),c=this.top+u,f=wt(t.align,f,this.right-h);else{const m=this.columnSizes.reduce((y,x)=>Math.max(y,x.height),0);c=u+wt(t.align,this.top,this.bottom-m-t.labels.padding-this._computeTitleHeight())}const d=wt(l,f,f+h);o.textAlign=s.textAlign(ru(l)),o.textBaseline="middle",o.strokeStyle=n.color,o.fillStyle=n.color,o.font=i.string,Ln(o,n.text,d,c,i)}_computeTitleHeight(){const t=this.options.title,n=ut(t.font),i=bt(t.padding);return t.display?n.lineHeight+i.height:0}_getLegendItemAt(t,n){let i,r,s;if(Xn(t,this.left,this.right)&&Xn(n,this.top,this.bottom)){for(s=this.legendHitBoxes,i=0;is.length>o.length?s:o)),t+n.size/2+i.measureText(r).width}function L1(e,t,n){let i=e;return typeof t.text!="string"&&(i=zp(t,n)),i}function zp(e,t){const n=e.text?e.text.length+.5:0;return t*n}function O1(e,t){return!!((e==="mousemove"||e==="mouseout")&&(t.onHover||t.onLeave)||t.onClick&&(e==="click"||e==="mouseup"))}var D1={id:"legend",_element:xf,start(e,t,n){const i=e.legend=new xf({ctx:e.ctx,options:n,chart:e});Zt.configure(e,i,n),Zt.addBox(e,i)},stop(e){Zt.removeBox(e,e.legend),delete e.legend},beforeUpdate(e,t,n){const i=e.legend;Zt.configure(e,i,n),i.options=n},afterUpdate(e){const t=e.legend;t.buildLabels(),t.adjustHitBoxes()},afterEvent(e,t){t.replay||e.legend.handleEvent(t.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(e,t,n){const i=t.datasetIndex,r=n.chart;r.isDatasetVisible(i)?(r.hide(i),t.hidden=!0):(r.show(i),t.hidden=!1)},onHover:null,onLeave:null,labels:{color:e=>e.chart.options.color,boxWidth:40,padding:10,generateLabels(e){const t=e.data.datasets,{labels:{usePointStyle:n,pointStyle:i,textAlign:r,color:s,useBorderRadius:o,borderRadius:l}}=e.legend.options;return e._getSortedDatasetMetas().map(a=>{const u=a.controller.getStyle(n?0:void 0),c=bt(u.borderWidth);return{text:t[a.index].label,fillStyle:u.backgroundColor,fontColor:s,hidden:!a.visible,lineCap:u.borderCapStyle,lineDash:u.borderDash,lineDashOffset:u.borderDashOffset,lineJoin:u.borderJoinStyle,lineWidth:(c.width+c.height)/4,strokeStyle:u.borderColor,pointStyle:i||u.pointStyle,rotation:u.rotation,textAlign:r||u.textAlign,borderRadius:o&&(l||u.borderRadius),datasetIndex:a.index}},this)}},title:{color:e=>e.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:e=>!e.startsWith("on"),labels:{_scriptable:e=>!["generateLabels","filter","sort"].includes(e)}}};class Rp extends on{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.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(t,n){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=t,this.height=this.bottom=n;const r=G(i.text)?i.text.length:1;this._padding=bt(i.padding);const s=r*ut(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=s:this.width=s}isHorizontal(){const t=this.options.position;return t==="top"||t==="bottom"}_drawArgs(t){const{top:n,left:i,bottom:r,right:s,options:o}=this,l=o.align;let a=0,u,c,f;return this.isHorizontal()?(c=wt(l,i,s),f=n+t,u=s-i):(o.position==="left"?(c=i+t,f=wt(l,r,n),a=yt*-.5):(c=s-t,f=wt(l,n,r),a=yt*.5),u=r-n),{titleX:c,titleY:f,maxWidth:u,rotation:a}}draw(){const t=this.ctx,n=this.options;if(!n.display)return;const i=ut(n.font),s=i.lineHeight/2+this._padding.top,{titleX:o,titleY:l,maxWidth:a,rotation:u}=this._drawArgs(s);Ln(t,n.text,0,0,i,{color:n.color,maxWidth:a,rotation:u,textAlign:ru(n.align),textBaseline:"middle",translation:[o,l]})}}function z1(e,t){const n=new Rp({ctx:e.ctx,options:t,chart:e});Zt.configure(e,n,t),Zt.addBox(e,n),e.titleBlock=n}var R1={id:"title",_element:Rp,start(e,t,n){z1(e,n)},stop(e){const t=e.titleBlock;Zt.removeBox(e,t),delete e.titleBlock},beforeUpdate(e,t,n){const i=e.titleBlock;Zt.configure(e,i,n),i.options=n},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Fi={average(e){if(!e.length)return!1;let t,n,i=0,r=0,s=0;for(t=0,n=e.length;t-1?e.split(` -`):e}function F1(e,t){const{element:n,datasetIndex:i,index:r}=t,s=e.getDatasetMeta(i).controller,{label:o,value:l}=s.getLabelAndValue(r);return{chart:e,label:o,parsed:s.getParsed(r),raw:e.data.datasets[i].data[r],formattedValue:l,dataset:s.getDataset(),dataIndex:r,datasetIndex:i,element:n}}function _f(e,t){const n=e.chart.ctx,{body:i,footer:r,title:s}=e,{boxWidth:o,boxHeight:l}=t,a=ut(t.bodyFont),u=ut(t.titleFont),c=ut(t.footerFont),f=s.length,h=r.length,d=i.length,m=bt(t.padding);let y=m.height,x=0,p=i.reduce((_,w)=>_+w.before.length+w.lines.length+w.after.length,0);if(p+=e.beforeBody.length+e.afterBody.length,f&&(y+=f*u.lineHeight+(f-1)*t.titleSpacing+t.titleMarginBottom),p){const _=t.displayColors?Math.max(l,a.lineHeight):a.lineHeight;y+=d*_+(p-d)*a.lineHeight+(p-1)*t.bodySpacing}h&&(y+=t.footerMarginTop+h*c.lineHeight+(h-1)*t.footerSpacing);let g=0;const v=function(_){x=Math.max(x,n.measureText(_).width+g)};return n.save(),n.font=u.string,B(e.title,v),n.font=a.string,B(e.beforeBody.concat(e.afterBody),v),g=t.displayColors?o+2+t.boxPadding:0,B(i,_=>{B(_.before,v),B(_.lines,v),B(_.after,v)}),g=0,n.font=c.string,B(e.footer,v),n.restore(),x+=m.width,{width:x,height:y}}function I1(e,t){const{y:n,height:i}=t;return ne.height-i/2?"bottom":"center"}function A1(e,t,n,i){const{x:r,width:s}=i,o=n.caretSize+n.caretPadding;if(e==="left"&&r+s+o>t.width||e==="right"&&r-s-o<0)return!0}function N1(e,t,n,i){const{x:r,width:s}=n,{width:o,chartArea:{left:l,right:a}}=e;let u="center";return i==="center"?u=r<=(l+a)/2?"left":"right":r<=s/2?u="left":r>=o-s/2&&(u="right"),A1(u,e,t,n)&&(u="center"),u}function wf(e,t,n){const i=n.yAlign||t.yAlign||I1(e,n);return{xAlign:n.xAlign||t.xAlign||N1(e,t,n,i),yAlign:i}}function j1(e,t){let{x:n,width:i}=e;return t==="right"?n-=i:t==="center"&&(n-=i/2),n}function B1(e,t,n){let{y:i,height:r}=e;return t==="top"?i+=n:t==="bottom"?i-=r+n:i-=r/2,i}function kf(e,t,n,i){const{caretSize:r,caretPadding:s,cornerRadius:o}=e,{xAlign:l,yAlign:a}=n,u=r+s,{topLeft:c,topRight:f,bottomLeft:h,bottomRight:d}=kn(o);let m=j1(t,l);const y=B1(t,a,u);return a==="center"?l==="left"?m+=u:l==="right"&&(m-=u):l==="left"?m-=Math.max(c,h)+r:l==="right"&&(m+=Math.max(f,d)+r),{x:se(m,0,i.width-t.width),y:se(y,0,i.height-t.height)}}function ts(e,t,n){const i=bt(n.padding);return t==="center"?e.x+e.width/2:t==="right"?e.x+e.width-i.right:e.x+i.left}function Sf(e){return fe([],ke(e))}function H1(e,t,n){return zn(e,{tooltip:t,tooltipItems:n,type:"tooltip"})}function bf(e,t){const n=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return n?e.override(n):e}const Fp={beforeTitle:_e,title(e){if(e.length>0){const t=e[0],n=t.chart.data.labels,i=n?n.length:0;if(this&&this.options&&this.options.mode==="dataset")return t.dataset.label||"";if(t.label)return t.label;if(i>0&&t.dataIndex"u"?Fp[t].call(n,i):r}class ta extends on{constructor(t){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=t.chart,this.options=t.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(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const n=this.chart,i=this.options.setContext(this.getContext()),r=i.enabled&&n.options.animation&&i.animations,s=new _p(this.chart,r);return r._cacheable&&(this._cachedAnimations=Object.freeze(s)),s}getContext(){return this.$context||(this.$context=H1(this.chart.getContext(),this,this._tooltipItems))}getTitle(t,n){const{callbacks:i}=n,r=Tt(i,"beforeTitle",this,t),s=Tt(i,"title",this,t),o=Tt(i,"afterTitle",this,t);let l=[];return l=fe(l,ke(r)),l=fe(l,ke(s)),l=fe(l,ke(o)),l}getBeforeBody(t,n){return Sf(Tt(n.callbacks,"beforeBody",this,t))}getBody(t,n){const{callbacks:i}=n,r=[];return B(t,s=>{const o={before:[],lines:[],after:[]},l=bf(i,s);fe(o.before,ke(Tt(l,"beforeLabel",this,s))),fe(o.lines,Tt(l,"label",this,s)),fe(o.after,ke(Tt(l,"afterLabel",this,s))),r.push(o)}),r}getAfterBody(t,n){return Sf(Tt(n.callbacks,"afterBody",this,t))}getFooter(t,n){const{callbacks:i}=n,r=Tt(i,"beforeFooter",this,t),s=Tt(i,"footer",this,t),o=Tt(i,"afterFooter",this,t);let l=[];return l=fe(l,ke(r)),l=fe(l,ke(s)),l=fe(l,ke(o)),l}_createItems(t){const n=this._active,i=this.chart.data,r=[],s=[],o=[];let l=[],a,u;for(a=0,u=n.length;at.filter(c,f,h,i))),t.itemSort&&(l=l.sort((c,f)=>t.itemSort(c,f,i))),B(l,c=>{const f=bf(t.callbacks,c);r.push(Tt(f,"labelColor",this,c)),s.push(Tt(f,"labelPointStyle",this,c)),o.push(Tt(f,"labelTextColor",this,c))}),this.labelColors=r,this.labelPointStyles=s,this.labelTextColors=o,this.dataPoints=l,l}update(t,n){const i=this.options.setContext(this.getContext()),r=this._active;let s,o=[];if(!r.length)this.opacity!==0&&(s={opacity:0});else{const l=Fi[i.position].call(this,r,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const a=this._size=_f(this,i),u=Object.assign({},l,a),c=wf(this.chart,i,u),f=kf(i,u,c,this.chart);this.xAlign=c.xAlign,this.yAlign=c.yAlign,s={opacity:1,x:f.x,y:f.y,width:a.width,height:a.height,caretX:l.x,caretY:l.y}}this._tooltipItems=o,this.$context=void 0,s&&this._resolveAnimations().update(this,s),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:n})}drawCaret(t,n,i,r){const s=this.getCaretPosition(t,i,r);n.lineTo(s.x1,s.y1),n.lineTo(s.x2,s.y2),n.lineTo(s.x3,s.y3)}getCaretPosition(t,n,i){const{xAlign:r,yAlign:s}=this,{caretSize:o,cornerRadius:l}=i,{topLeft:a,topRight:u,bottomLeft:c,bottomRight:f}=kn(l),{x:h,y:d}=t,{width:m,height:y}=n;let x,p,g,v,_,w;return s==="center"?(_=d+y/2,r==="left"?(x=h,p=x-o,v=_+o,w=_-o):(x=h+m,p=x+o,v=_-o,w=_+o),g=x):(r==="left"?p=h+Math.max(a,c)+o:r==="right"?p=h+m-Math.max(u,f)-o:p=this.caretX,s==="top"?(v=d,_=v-o,x=p-o,g=p+o):(v=d+y,_=v+o,x=p+o,g=p-o),w=v),{x1:x,x2:p,x3:g,y1:v,y2:_,y3:w}}drawTitle(t,n,i){const r=this.title,s=r.length;let o,l,a;if(s){const u=ii(i.rtl,this.x,this.width);for(t.x=ts(this,i.titleAlign,i),n.textAlign=u.textAlign(i.titleAlign),n.textBaseline="middle",o=ut(i.titleFont),l=i.titleSpacing,n.fillStyle=i.titleColor,n.font=o.string,a=0;ag!==0)?(t.beginPath(),t.fillStyle=s.multiKeyBackground,mr(t,{x:y,y:m,w:u,h:a,radius:p}),t.fill(),t.stroke(),t.fillStyle=o.backgroundColor,t.beginPath(),mr(t,{x,y:m+1,w:u-2,h:a-2,radius:p}),t.fill()):(t.fillStyle=s.multiKeyBackground,t.fillRect(y,m,u,a),t.strokeRect(y,m,u,a),t.fillStyle=o.backgroundColor,t.fillRect(x,m+1,u-2,a-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,n,i){const{body:r}=this,{bodySpacing:s,bodyAlign:o,displayColors:l,boxHeight:a,boxWidth:u,boxPadding:c}=i,f=ut(i.bodyFont);let h=f.lineHeight,d=0;const m=ii(i.rtl,this.x,this.width),y=function(b){n.fillText(b,m.x(t.x+d),t.y+h/2),t.y+=h+s},x=m.textAlign(o);let p,g,v,_,w,k,S;for(n.textAlign=o,n.textBaseline="middle",n.font=f.string,t.x=ts(this,x,i),n.fillStyle=i.bodyColor,B(this.beforeBody,y),d=l&&x!=="right"?o==="center"?u/2+c:u+2+c:0,_=0,k=r.length;_0&&n.stroke()}_updateAnimationTarget(t){const n=this.chart,i=this.$animations,r=i&&i.x,s=i&&i.y;if(r||s){const o=Fi[t.position].call(this,this._active,this._eventPosition);if(!o)return;const l=this._size=_f(this,t),a=Object.assign({},o,this._size),u=wf(n,t,a),c=kf(t,a,u,n);(r._to!==c.x||s._to!==c.y)&&(this.xAlign=u.xAlign,this.yAlign=u.yAlign,this.width=l.width,this.height=l.height,this.caretX=o.x,this.caretY=o.y,this._resolveAnimations().update(this,c))}}_willRender(){return!!this.opacity}draw(t){const n=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(n);const r={width:this.width,height:this.height},s={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=bt(n.padding),l=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;n.enabled&&l&&(t.save(),t.globalAlpha=i,this.drawBackground(s,t,r,n),vp(t,n.textDirection),s.y+=o.top,this.drawTitle(s,t,n),this.drawBody(s,t,n),this.drawFooter(s,t,n),xp(t,n.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,n){const i=this._active,r=t.map(({datasetIndex:l,index:a})=>{const u=this.chart.getDatasetMeta(l);if(!u)throw new Error("Cannot find a dataset at index "+l);return{datasetIndex:l,element:u.data[a],index:a}}),s=!$s(i,r),o=this._positionChanged(r,n);(s||o)&&(this._active=r,this._eventPosition=n,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,n,i=!0){if(n&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const r=this.options,s=this._active||[],o=this._getActiveElements(t,s,n,i),l=this._positionChanged(o,t),a=n||!$s(o,s)||l;return a&&(this._active=o,(r.enabled||r.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,n))),a}_getActiveElements(t,n,i,r){const s=this.options;if(t.type==="mouseout")return[];if(!r)return n;const o=this.chart.getElementsAtEventForMode(t,s.mode,s,i);return s.reverse&&o.reverse(),o}_positionChanged(t,n){const{caretX:i,caretY:r,options:s}=this,o=Fi[s.position].call(this,t,n);return o!==!1&&(i!==o.x||r!==o.y)}}R(ta,"positioners",Fi);var V1={id:"tooltip",_element:ta,positioners:Fi,afterInit(e,t,n){n&&(e.tooltip=new ta({chart:e,options:n}))},beforeUpdate(e,t,n){e.tooltip&&e.tooltip.initialize(n)},reset(e,t,n){e.tooltip&&e.tooltip.initialize(n)},afterDraw(e){const t=e.tooltip;if(t&&t._willRender()){const n={tooltip:t};if(e.notifyPlugins("beforeTooltipDraw",{...n,cancelable:!0})===!1)return;t.draw(e.ctx),e.notifyPlugins("afterTooltipDraw",n)}},afterEvent(e,t){if(e.tooltip){const n=t.replay;e.tooltip.handleEvent(t.event,n,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(e,t)=>t.bodyFont.size,boxWidth:(e,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Fp},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:e=>e!=="filter"&&e!=="itemSort"&&e!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};const W1=(e,t,n,i)=>(typeof t=="string"?(n=e.push(t)-1,i.unshift({index:n,label:t})):isNaN(t)&&(n=null),n);function $1(e,t,n,i){const r=e.indexOf(t);if(r===-1)return W1(e,t,n,i);const s=e.lastIndexOf(t);return r!==s?n:r}const U1=(e,t)=>e===null?null:se(Math.round(e),0,t);function Cf(e){const t=this.getLabels();return e>=0&&en.length-1?null:this.getPixelForValue(n[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}}R(ea,"id","category"),R(ea,"defaults",{ticks:{callback:Cf}});function Y1(e,t){const n=[],{bounds:r,step:s,min:o,max:l,precision:a,count:u,maxTicks:c,maxDigits:f,includeBounds:h}=e,d=s||1,m=c-1,{min:y,max:x}=t,p=!V(o),g=!V(l),v=!V(u),_=(x-y)/(f+1);let w=Tc((x-y)/m/d)*d,k,S,b,T;if(w<1e-14&&!p&&!g)return[{value:y},{value:x}];T=Math.ceil(x/w)-Math.floor(y/w),T>m&&(w=Tc(T*w/m/d)*d),V(a)||(k=Math.pow(10,a),w=Math.ceil(w*k)/k),r==="ticks"?(S=Math.floor(y/w)*w,b=Math.ceil(x/w)*w):(S=y,b=x),p&&g&&s&&G0((l-o)/s,w/1e3)?(T=Math.round(Math.min((l-o)/w,c)),w=(l-o)/T,S=o,b=l):v?(S=p?o:S,b=g?l:b,T=u-1,w=(b-S)/T):(T=(b-S)/w,gs(T,Math.round(T),w/1e3)?T=Math.round(T):T=Math.ceil(T));const E=Math.max(Lc(w),Lc(S));k=Math.pow(10,V(a)?E:a),S=Math.round(S*k)/k,b=Math.round(b*k)/k;let L=0;for(p&&(h&&S!==o?(n.push({value:o}),Sl)break;n.push({value:F})}return g&&h&&b!==l?n.length&&gs(n[n.length-1].value,l,Mf(l,_,e))?n[n.length-1].value=l:n.push({value:l}):(!g||b===l)&&n.push({value:b}),n}function Mf(e,t,{horizontal:n,minRotation:i}){const r=$e(i),s=(n?Math.sin(r):Math.cos(r))||.001,o=.75*t*(""+e).length;return Math.min(t/s,o)}class Zs extends Rn{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,n){return V(t)||(typeof t=="number"||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:n,maxDefined:i}=this.getUserBounds();let{min:r,max:s}=this;const o=a=>r=n?r:a,l=a=>s=i?s:a;if(t){const a=en(r),u=en(s);a<0&&u<0?l(0):a>0&&u>0&&o(0)}if(r===s){let a=s===0?1:Math.abs(s*.05);l(s+a),t||o(r-a)}this.min=r,this.max=s}getTickLimit(){const t=this.options.ticks;let{maxTicksLimit:n,stepSize:i}=t,r;return i?(r=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,r>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${r} ticks. Limiting to 1000.`),r=1e3)):(r=this.computeTickLimit(),n=n||11),n&&(r=Math.min(n,r)),r}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,n=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const r={maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:n.precision,step:n.stepSize,count:n.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:n.minRotation||0,includeBounds:n.includeBounds!==!1},s=this._range||this,o=Y1(r,s);return t.bounds==="ticks"&&ip(o,this,"value"),t.reverse?(o.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),o}configure(){const t=this.ticks;let n=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const r=(i-n)/Math.max(t.length-1,1)/2;n-=r,i+=r}this._startValue=n,this._endValue=i,this._valueRange=i-n}getLabelForValue(t){return su(t,this.chart.options.locale,this.options.ticks.format)}}class na extends Zs{determineDataLimits(){const{min:t,max:n}=this.getMinMax(!0);this.min=ht(t)?t:0,this.max=ht(n)?n:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),n=t?this.width:this.height,i=$e(this.options.ticks.minRotation),r=(t?Math.sin(i):Math.cos(i))||.001,s=this._resolveTickFontOptions(0);return Math.ceil(n/Math.min(40,s.lineHeight/r))}getPixelForValue(t){return t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}R(na,"id","linear"),R(na,"defaults",{ticks:{callback:mo.formatters.numeric}});const vr=e=>Math.floor(We(e)),dn=(e,t)=>Math.pow(10,vr(e)+t);function Pf(e){return e/Math.pow(10,vr(e))===1}function Ef(e,t,n){const i=Math.pow(10,n),r=Math.floor(e/i);return Math.ceil(t/i)-r}function K1(e,t){const n=t-e;let i=vr(n);for(;Ef(e,t,i)>10;)i++;for(;Ef(e,t,i)<10;)i--;return Math.min(i,vr(e))}function Q1(e,{min:t,max:n}){t=Bt(e.min,t);const i=[],r=vr(t);let s=K1(t,n),o=s<0?Math.pow(10,Math.abs(s)):1;const l=Math.pow(10,s),a=r>s?Math.pow(10,r):0,u=Math.round((t-a)*o)/o,c=Math.floor((t-a)/l/10)*l*10;let f=Math.floor((u-c)/Math.pow(10,s)),h=Bt(e.min,Math.round((a+c+f*Math.pow(10,s))*o)/o);for(;h=10?f=f<15?15:20:f++,f>=20&&(s++,f=2,o=s>=0?1:o),h=Math.round((a+c+f*Math.pow(10,s))*o)/o;const d=Bt(e.max,h);return i.push({value:d,major:Pf(d),significand:f}),i}class Tf extends Rn{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,n){const i=Zs.prototype.parse.apply(this,[t,n]);if(i===0){this._zero=!0;return}return ht(i)&&i>0?i:null}determineDataLimits(){const{min:t,max:n}=this.getMinMax(!0);this.min=ht(t)?Math.max(0,t):null,this.max=ht(n)?Math.max(0,n):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!ht(this._userMin)&&(this.min=t===dn(this.min,0)?dn(this.min,-1):dn(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:n}=this.getUserBounds();let i=this.min,r=this.max;const s=l=>i=t?i:l,o=l=>r=n?r:l;i===r&&(i<=0?(s(1),o(10)):(s(dn(i,-1)),o(dn(r,1)))),i<=0&&s(dn(r,-1)),r<=0&&o(dn(i,1)),this.min=i,this.max=r}buildTicks(){const t=this.options,n={min:this._userMin,max:this._userMax},i=Q1(n,this);return t.bounds==="ticks"&&ip(i,this,"value"),t.reverse?(i.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),i}getLabelForValue(t){return t===void 0?"0":su(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=We(t),this._valueRange=We(this.max)-We(t)}getPixelForValue(t){return(t===void 0||t===0)&&(t=this.min),t===null||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(We(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const n=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+n*this._valueRange)}}R(Tf,"id","logarithmic"),R(Tf,"defaults",{ticks:{callback:mo.formatters.logarithmic,major:{enabled:!0}}});function ia(e){const t=e.ticks;if(t.display&&e.display){const n=bt(t.backdropPadding);return j(t.font&&t.font.size,nt.font.size)+n.height}return 0}function X1(e,t,n){return n=G(n)?n:[n],{w:gy(e,t.string,n),h:n.length*t.lineHeight}}function Lf(e,t,n,i,r){return e===i||e===r?{start:t-n/2,end:t+n/2}:er?{start:t-n,end:t}:{start:t,end:t+n}}function G1(e){const t={l:e.left+e._padding.left,r:e.right-e._padding.right,t:e.top+e._padding.top,b:e.bottom-e._padding.bottom},n=Object.assign({},t),i=[],r=[],s=e._pointLabels.length,o=e.options.pointLabels,l=o.centerPointLabels?yt/s:0;for(let a=0;at.r&&(l=(i.end-t.r)/s,e.r=Math.max(e.r,t.r+l)),r.startt.b&&(a=(r.end-t.b)/o,e.b=Math.max(e.b,t.b+a))}function q1(e,t,n){const i=e.drawingArea,{extra:r,additionalAngle:s,padding:o,size:l}=n,a=e.getPointPosition(t,i+r+o,s),u=Math.round(nu(pe(a.angle+zt))),c=ix(a.y,l.h,u),f=ex(u),h=nx(a.x,l.w,f);return{visible:!0,x:a.x,y:c,textAlign:f,left:h,top:c,right:h+l.w,bottom:c+l.h}}function J1(e,t){if(!t)return!0;const{left:n,top:i,right:r,bottom:s}=e;return!(Gn({x:n,y:i},t)||Gn({x:n,y:s},t)||Gn({x:r,y:i},t)||Gn({x:r,y:s},t))}function tx(e,t,n){const i=[],r=e._pointLabels.length,s=e.options,{centerPointLabels:o,display:l}=s.pointLabels,a={extra:ia(s)/2,additionalAngle:o?yt/r:0};let u;for(let c=0;c270||n<90)&&(e-=t),e}function rx(e,t,n){const{left:i,top:r,right:s,bottom:o}=n,{backdropColor:l}=t;if(!V(l)){const a=kn(t.borderRadius),u=bt(t.backdropPadding);e.fillStyle=l;const c=i-u.left,f=r-u.top,h=s-i+u.width,d=o-r+u.height;Object.values(a).some(m=>m!==0)?(e.beginPath(),mr(e,{x:c,y:f,w:h,h:d,radius:a}),e.fill()):e.fillRect(c,f,h,d)}}function sx(e,t){const{ctx:n,options:{pointLabels:i}}=e;for(let r=t-1;r>=0;r--){const s=e._pointLabelItems[r];if(!s.visible)continue;const o=i.setContext(e.getPointLabelContext(r));rx(n,o,s);const l=ut(o.font),{x:a,y:u,textAlign:c}=s;Ln(n,e._pointLabels[r],a,u+l.lineHeight/2,l,{color:o.color,textAlign:c,textBaseline:"middle"})}}function Ip(e,t,n,i){const{ctx:r}=e;if(n)r.arc(e.xCenter,e.yCenter,t,0,ve);else{let s=e.getPointPosition(0,t);r.moveTo(s.x,s.y);for(let o=1;o{const r=$(this.options.pointLabels.callback,[n,i],this);return r||r===0?r:""}).filter((n,i)=>this.chart.getDataVisibility(i))}fit(){const t=this.options;t.display&&t.pointLabels.display?G1(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,n,i,r){this.xCenter+=Math.floor((t-n)/2),this.yCenter+=Math.floor((i-r)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,n,i,r))}getIndexAngle(t){const n=ve/(this._pointLabels.length||1),i=this.options.startAngle||0;return pe(t*n+$e(i))}getDistanceFromCenterForValue(t){if(V(t))return NaN;const n=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*n:(t-this.min)*n}getValueForDistanceFromCenter(t){if(V(t))return NaN;const n=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-n:this.min+n}getPointLabelContext(t){const n=this._pointLabels||[];if(t>=0&&t{if(f!==0){a=this.getDistanceFromCenterForValue(c.value);const h=this.getContext(f),d=r.setContext(h),m=s.setContext(h);ox(this,d,a,o,m)}}),i.display){for(t.save(),l=o-1;l>=0;l--){const c=i.setContext(this.getPointLabelContext(l)),{color:f,lineWidth:h}=c;!h||!f||(t.lineWidth=h,t.strokeStyle=f,t.setLineDash(c.borderDash),t.lineDashOffset=c.borderDashOffset,a=this.getDistanceFromCenterForValue(n.ticks.reverse?this.min:this.max),u=this.getPointPosition(l,a),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(u.x,u.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,n=this.options,i=n.ticks;if(!i.display)return;const r=this.getIndexAngle(0);let s,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(r),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach((l,a)=>{if(a===0&&!n.reverse)return;const u=i.setContext(this.getContext(a)),c=ut(u.font);if(s=this.getDistanceFromCenterForValue(this.ticks[a].value),u.showLabelBackdrop){t.font=c.string,o=t.measureText(l.label).width,t.fillStyle=u.backdropColor;const f=bt(u.backdropPadding);t.fillRect(-o/2-f.left,-s-c.size/2-f.top,o+f.width,c.size+f.height)}Ln(t,l.label,0,-s,c,{color:u.color})}),t.restore()}drawTitle(){}}R(es,"id","radialLinear"),R(es,"defaults",{display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:mo.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(t){return t},padding:5,centerPointLabels:!1}}),R(es,"defaultRoutes",{"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"}),R(es,"descriptors",{angleLines:{_fallback:"grid"}});const xo={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}},Ot=Object.keys(xo);function ax(e,t){return e-t}function Of(e,t){if(V(t))return null;const n=e._adapter,{parser:i,round:r,isoWeekday:s}=e._parseOpts;let o=t;return typeof i=="function"&&(o=i(o)),ht(o)||(o=typeof i=="string"?n.parse(o,i):n.parse(o)),o===null?null:(r&&(o=r==="week"&&(Ks(s)||s===!0)?n.startOf(o,"isoWeek",s):n.startOf(o,r)),+o)}function Df(e,t,n,i){const r=Ot.length;for(let s=Ot.indexOf(e);s=Ot.indexOf(n);s--){const o=Ot[s];if(xo[o].common&&e._adapter.diff(r,i,o)>=t-1)return o}return Ot[n?Ot.indexOf(n):0]}function cx(e){for(let t=Ot.indexOf(e)+1,n=Ot.length;t=t?n[i]:n[r];e[s]=!0}}function fx(e,t,n,i){const r=e._adapter,s=+r.startOf(t[0].value,i),o=t[t.length-1].value;let l,a;for(l=s;l<=o;l=+r.add(l,1,i))a=n[l],a>=0&&(t[a].major=!0);return t}function Rf(e,t,n){const i=[],r={},s=t.length;let o,l;for(o=0;o+t.value))}initOffsets(t=[]){let n=0,i=0,r,s;this.options.offset&&t.length&&(r=this.getDecimalForValue(t[0]),t.length===1?n=1-r:n=(this.getDecimalForValue(t[1])-r)/2,s=this.getDecimalForValue(t[t.length-1]),t.length===1?i=s:i=(s-this.getDecimalForValue(t[t.length-2]))/2);const o=t.length<3?.5:.25;n=se(n,0,o),i=se(i,0,o),this._offsets={start:n,end:i,factor:1/(n+1+i)}}_generate(){const t=this._adapter,n=this.min,i=this.max,r=this.options,s=r.time,o=s.unit||Df(s.minUnit,n,i,this._getLabelCapacity(n)),l=j(r.ticks.stepSize,1),a=o==="week"?s.isoWeekday:!1,u=Ks(a)||a===!0,c={};let f=n,h,d;if(u&&(f=+t.startOf(f,"isoWeek",a)),f=+t.startOf(f,u?"day":o),t.diff(i,n,o)>1e5*l)throw new Error(n+" and "+i+" are too far apart with stepSize of "+l+" "+o);const m=r.ticks.source==="data"&&this.getDataTimestamps();for(h=f,d=0;hy-x).map(y=>+y)}getLabelForValue(t){const n=this._adapter,i=this.options.time;return i.tooltipFormat?n.format(t,i.tooltipFormat):n.format(t,i.displayFormats.datetime)}format(t,n){const r=this.options.time.displayFormats,s=this._unit,o=n||r[s];return this._adapter.format(t,o)}_tickFormatFunction(t,n,i,r){const s=this.options,o=s.ticks.callback;if(o)return $(o,[t,n,i],this);const l=s.time.displayFormats,a=this._unit,u=this._majorUnit,c=a&&l[a],f=u&&l[u],h=i[n],d=u&&f&&h&&h.major;return this._adapter.format(t,r||(d?f:c))}generateTickLabels(t){let n,i,r;for(n=0,i=t.length;n0?l:1}getDataTimestamps(){let t=this._cache.data||[],n,i;if(t.length)return t;const r=this.getMatchingVisibleMetas();if(this._normalized&&r.length)return this._cache.data=r[0].controller.getAllParsedValues(this);for(n=0,i=r.length;n=e[i].pos&&t<=e[r].pos&&({lo:i,hi:r}=Gl(e,"pos",t)),{pos:s,time:l}=e[i],{pos:o,time:a}=e[r]):(t>=e[i].time&&t<=e[r].time&&({lo:i,hi:r}=Gl(e,"time",t)),{time:s,pos:l}=e[i],{time:o,pos:a}=e[r]);const u=o-s;return u?l+(a-l)*(t-s)/u:l}class Ff extends qs{constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),n=this._table=this.buildLookupTable(t);this._minPos=ns(n,this.min),this._tableRange=ns(n,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:n,max:i}=this,r=[],s=[];let o,l,a,u,c;for(o=0,l=t.length;o=n&&u<=i&&r.push(u);if(r.length<2)return[{time:n,pos:0},{time:i,pos:1}];for(o=0,l=r.length;o2&&arguments[2]!==void 0?arguments[2]:Ap;const i=[];e.datasets=t.map(r=>{const s=e.datasets.find(o=>o[n]===r[n]);return!s||!r.data||i.includes(s)?{...r}:(i.push(s),Object.assign(s,r),s)})}function dx(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Ap;const n={labels:[],datasets:[]};return Np(n,e.labels),jp(n,e.datasets,t),n}function px(e,t){const{height:n=150,width:i=300,redraw:r=!1,datasetIdKey:s,type:o,data:l,options:a,plugins:u=[],fallbackContent:c,updateMode:f,...h}=e,d=ct.useRef(null),m=ct.useRef(),y=()=>{d.current&&(m.current=new vo(d.current,{type:o,data:dx(l,s),options:a&&{...a},plugins:u}),If(t,m.current))},x=()=>{If(t,null),m.current&&(m.current.destroy(),m.current=null)};return ct.useEffect(()=>{!r&&m.current&&a&&hx(m.current,a)},[r,a]),ct.useEffect(()=>{!r&&m.current&&Np(m.current.config.data,l.labels)},[r,l.labels]),ct.useEffect(()=>{!r&&m.current&&l.datasets&&jp(m.current.config.data,l.datasets,s)},[r,l.datasets]),ct.useEffect(()=>{m.current&&(r?(x(),setTimeout(y)):m.current.update(f))},[r,a,l.labels,l.datasets,f]),ct.useEffect(()=>{m.current&&(x(),setTimeout(y))},[o]),ct.useEffect(()=>(y(),()=>x()),[]),Yf.createElement("canvas",Object.assign({ref:d,role:"img",height:n,width:i},h),c)}const gx=ct.forwardRef(px);function mx(e,t){return vo.register(t),ct.forwardRef((n,i)=>Yf.createElement(gx,Object.assign({},n,{ref:i,type:e})))}const yx=mx("bar",ms);vo.register(ea,na,xs,R1,V1,D1);const vx={indexAxis:"y",scales:{y:{ticks:{display:!1},grid:{display:!1}},x:{position:"top"}},elements:{bar:{borderWidth:2}},responsive:!0,barThickness:3,plugins:{legend:{position:"right",display:!1},title:{display:!1}}},xx=({data:e})=>{const t=p0(e),n=v0(t.allTracesTimeInfo),i=y0(t.allTracesTimeInfo,t.earliestTime),r={labels:n,datasets:[{label:"Trace",data:i,borderColor:"rgb(119, 219, 137)",backgroundColor:"rgba(1, 19, 1, 0.5)"}]};return z.jsx(yx,{options:vx,data:r})};function _x(e){let t="",n=!1,i=[];const r=[];return e.map((s,o)=>{o===0&&(t=e[0].traceId),n&&(i=[],n=!1),i.push(s),e[o+1]?e[o+1].traceId!==t&&(t=e[o+1].traceId,n=!0,r.push(i)):r.push(i)}),r.slice(0,13)}function wx(){const[e,t]=ct.useState([]);ct.useEffect(()=>{chrome.runtime.onMessage.addListener(i=>{console.log("received chrome message",i)})},[]),ct.useEffect(()=>{new EventSource("http://localhost:3002/stream/sse").addEventListener("message",r=>{try{t(s=>[...s,JSON.parse(r.data)])}catch(s){console.log("failed",s)}})},[]),ct.useEffect(()=>{},[e]);const n=_x(e);return z.jsxs(z.Fragment,{children:[z.jsx(xx,{data:n}),z.jsx(m0,{data:n})]})}const kx=document.getElementById("root"),Sx=Zd(kx);console.log("panel/index.jsx reached");Sx.render(z.jsx(wx,{})); diff --git a/chrome-extension/dist/manifest.json b/chrome-extension/dist/manifest.json index 9eb2f79..663162c 100644 --- a/chrome-extension/dist/manifest.json +++ b/chrome-extension/dist/manifest.json @@ -1,8 +1,8 @@ { "manifest_version": 3, "name": "NextInspect", - "version": "0.1.0", - "description": "Network observability tool for Next.JS; uses NextInspect npm package as a dependency https://www.npmjs.com/package/nextinspect", + "version": "0.1.1", + "description": "Network observability tool for Next.JS", "author": "Lucia Li, Yourui Ruan, William Nguyen, David An, Michael Bildstein", "devtools_page": "src/pages/devtools/index.html" } \ No newline at end of file diff --git a/chrome-extension/dist/src/pages/devtools/index.html b/chrome-extension/dist/src/pages/devtools/index.html index 27849f1..4d470d7 100644 --- a/chrome-extension/dist/src/pages/devtools/index.html +++ b/chrome-extension/dist/src/pages/devtools/index.html @@ -2,11 +2,10 @@ - + -

hello from index

diff --git a/chrome-extension/dist/src/pages/panel/index.html b/chrome-extension/dist/src/pages/panel/index.html index 2c86511..978088f 100644 --- a/chrome-extension/dist/src/pages/panel/index.html +++ b/chrome-extension/dist/src/pages/panel/index.html @@ -2,9 +2,9 @@ - + - +
diff --git a/chrome-extension/manifest.json b/chrome-extension/manifest.json index 9eb2f79..663162c 100644 --- a/chrome-extension/manifest.json +++ b/chrome-extension/manifest.json @@ -1,8 +1,8 @@ { "manifest_version": 3, "name": "NextInspect", - "version": "0.1.0", - "description": "Network observability tool for Next.JS; uses NextInspect npm package as a dependency https://www.npmjs.com/package/nextinspect", + "version": "0.1.1", + "description": "Network observability tool for Next.JS", "author": "Lucia Li, Yourui Ruan, William Nguyen, David An, Michael Bildstein", "devtools_page": "src/pages/devtools/index.html" } \ No newline at end of file diff --git a/chrome-extension/src/pages/app/app.tsx b/chrome-extension/src/pages/app/app.tsx index eb4d222..0649b4b 100644 --- a/chrome-extension/src/pages/app/app.tsx +++ b/chrome-extension/src/pages/app/app.tsx @@ -2,24 +2,19 @@ import { useEffect, useState } from 'react'; import './App.css' import NetworkTable from './components/NetworkTable.tsx' import WaterfallChart from './components/WaterfallGraph.tsx'; -import checkTraceId from './functions/checkTraceId.ts' -import { OtelData } from '../../types/types.ts'; +import {IRelevantData} from '../../types/types.ts'; +import {aggregateAndSort} from './functions/aggregateAndSort.ts'; +import ClearState from './components/ClearState.tsx'; +import Reload from './components/Reload.tsx'; function App() { - const [networkRequests, setNetworkRequests] = useState([]); - - useEffect(() => { - chrome.runtime.onMessage.addListener((message) => { - console.log('received chrome message', message) - }) - }, []); + const [relevantData, setRelevantData] = useState(new Map()); useEffect(() => { const sseStream = new EventSource('http://localhost:3002/stream/sse'); sseStream.addEventListener('message', (e) => { try { - // console.log(e.data); - setNetworkRequests(prevNetworkRequests => [...prevNetworkRequests, JSON.parse(e.data)]); + aggregateAndSort(setRelevantData, JSON.parse(e.data)); } catch (err) { console.log('failed', err); } @@ -27,19 +22,21 @@ function App() { }, []); - useEffect(() => { - // console.log(networkRequests); - }, [networkRequests]); - - const aggregatedData = checkTraceId(networkRequests); - - - return ( - <> - - - +
+
0 ? 'h-[33vh]' : 'h-[33vh] border-b-[1px] border-slate-400'}> + +
+ + {relevantData.size > 0 ? +
+ + +
+ : + + } +
) } diff --git a/chrome-extension/src/pages/app/components/ClearState.tsx b/chrome-extension/src/pages/app/components/ClearState.tsx new file mode 100644 index 0000000..1e18fcf --- /dev/null +++ b/chrome-extension/src/pages/app/components/ClearState.tsx @@ -0,0 +1,18 @@ +import { ISetRelevantData } from "../../../types/types"; + +interface ClearStateProps { + setRelevant: ISetRelevantData; +} + +const ClearState = ({setRelevant} : ClearStateProps) => { + const clearState = () => { + setRelevant(new Map()); + } + return ( + + ) +} + +export default ClearState \ No newline at end of file diff --git a/chrome-extension/src/pages/app/components/NetworkTable.tsx b/chrome-extension/src/pages/app/components/NetworkTable.tsx index 376fe3e..1458d46 100644 --- a/chrome-extension/src/pages/app/components/NetworkTable.tsx +++ b/chrome-extension/src/pages/app/components/NetworkTable.tsx @@ -1,39 +1,29 @@ -// import { useState } from 'react' -import TableRow from './TableRow'; -// import { IMockData } from '../mockData'; -import { OtelData } from '../../../types/types'; - - +import TableRow from './TableRow'; +import { IRelevantData } from '../../../types/types'; interface NetworkTableProps { - // data: IMockData[][]; - data: OtelData[][] + data: IRelevantData; } const NetworkTable = ({data} : NetworkTableProps) => { - return ( + - - - - - {/* - - */} + + + - {data.map((val, index) => { - return( - - ) - })} + + {Array.from(data).map(([key, request]) => ( + + ))}
Trace ID NameSpan IDApplication TypeOrig. Svc. Method Status Protocol TimeSizeTypeEndpointOrig. Svc.Application Type
) } diff --git a/chrome-extension/src/pages/app/components/Reload.tsx b/chrome-extension/src/pages/app/components/Reload.tsx new file mode 100644 index 0000000..df01f95 --- /dev/null +++ b/chrome-extension/src/pages/app/components/Reload.tsx @@ -0,0 +1,10 @@ +const Reload = () => { + return ( +
+

Recording network activity ...

+

Perform a request or refresh the page

+
+ ) +} + +export default Reload \ No newline at end of file diff --git a/chrome-extension/src/pages/app/components/TableRow.tsx b/chrome-extension/src/pages/app/components/TableRow.tsx index 6efe296..f5c475b 100644 --- a/chrome-extension/src/pages/app/components/TableRow.tsx +++ b/chrome-extension/src/pages/app/components/TableRow.tsx @@ -1,71 +1,23 @@ -import { useState } from 'react' -// import { IMockData } from '../mockData'; -import { calcTotalTime } from '../functions/calcTotalTime'; -import { ITotalTimes, getTraceTimeInfo } from '../functions/getTraceInfo'; -import { OtelData } from '../../../types/types'; +import { IAggregatedSortedData } from '../../../types/types'; interface TableRowProps { - data: OtelData[]; + data: IAggregatedSortedData; } - const TableRow = ({data} : TableRowProps) => { - - const [rowClick, setRowClick] = useState(false); - const multipleSpans = data.length > 1; - - const traceTimeInfo: ITotalTimes[] = getTraceTimeInfo(data) - //console.log({data}); return ( - <> - setRowClick(!rowClick)}> - - {multipleSpans ?
: null} - {data[0].traceId} - - - {data[0].name} - {data[0].spanId} - {data[0].applicationType} - {data[0].originatingService} - {data[0].method} - {data[0].status} - {data[0].protocol} - {!rowClick? - traceTimeInfo[0].duration: - calcTotalTime(data[0].startTime, data[0].endTime) - } ms - - {/* commented out data types for now for better UI during presentation */} - {/* {data[0].size ? data[0].size : 0} - {data[0].type} - {data[0].urlEndpoint} */} - - {multipleSpans && rowClick? ( - data.slice(1).map((val, key) => { - return ( - - - {val.name} - {val.spanId} - {val.applicationType} - {val.originatingService} - {val.method} - {val.status} - {val.protocol} - {calcTotalTime(val.startTime, val.endTime)} ms - {/* {val.size ? val.size : 0} - {val.type} - {val.urlEndpoint} */} - - ) - }) - ): null - } - - - ) + + {data.name} + {data.method} + {data.status} + {data.protocol} + {data.duration} ms + {data.originatingService} + {data.applicationType} + + ) } export default TableRow; + diff --git a/chrome-extension/src/pages/app/components/WaterfallGraph.tsx b/chrome-extension/src/pages/app/components/WaterfallGraph.tsx index 11172d3..1f68838 100644 --- a/chrome-extension/src/pages/app/components/WaterfallGraph.tsx +++ b/chrome-extension/src/pages/app/components/WaterfallGraph.tsx @@ -1,7 +1,4 @@ -// import { IMockData } from "../mockData"; -// import { getAllTracesTimeInfo, getTraceTimeInfo,IAllTracesTimeInfo,ITotalTimes } from "../functions/getTraceInfo"; -import { getAllTracesTimeInfo, IAllTracesTimeInfo } from "../functions/getTraceInfo"; -import { getChartJSLabels, getChartJSTraceData } from "../functions/chartJSData"; +import { getChartJSData, getChartJSLabels} from "../functions/chartJSData"; import { Chart as ChartJS, @@ -13,13 +10,12 @@ import { Legend, } from 'chart.js'; import { Bar } from 'react-chartjs-2'; -import { OtelData } from "../../../types/types"; +import { ILengthsOfChartBars, IRelevantData } from "../../../types/types"; interface WaterfallChartProps { - // data: IMockData[][]; - data: OtelData[][]; + data: IRelevantData; } @@ -63,31 +59,25 @@ const options = { display: false, }, }, + maintainAspectRatio: false, }; const WaterfallChart = ({data} : WaterfallChartProps) => { + const labels: string[]= getChartJSLabels(data); - const tracesTimeInfo: IAllTracesTimeInfo = getAllTracesTimeInfo(data); - - const labels: string[]= getChartJSLabels(tracesTimeInfo.allTracesTimeInfo); - - const chartJSTraceData: number[][] = getChartJSTraceData(tracesTimeInfo.allTracesTimeInfo,tracesTimeInfo.earliestTime); + const chartJSData: ILengthsOfChartBars = getChartJSData(data); const chartData = { labels, datasets: [ { - label: 'Trace', // based on maybe traceId - data: chartJSTraceData, + label: 'All Requests', + data: chartJSData, borderColor: 'rgb(119, 219, 137)', backgroundColor: 'rgba(1, 19, 1, 0.5)', }, - // { - // spans: 'Spans', - // data: - // } ], }; diff --git a/chrome-extension/src/pages/app/functions/aggregateAndSort.ts b/chrome-extension/src/pages/app/functions/aggregateAndSort.ts new file mode 100644 index 0000000..2abeeed --- /dev/null +++ b/chrome-extension/src/pages/app/functions/aggregateAndSort.ts @@ -0,0 +1,88 @@ +import { IOtelData, IRelevantData, ISetRelevantData } from '../../../types/types'; + + +export function aggregateAndSort(setRelevant:ISetRelevantData, incomingSpanData: IOtelData): void { + + if(!('method' in incomingSpanData) || incomingSpanData.method === ""){ + return; + } + + let {name, method, traceId, startTime, endTime, applicationType, originatingService, status, protocol} = incomingSpanData; + + if(name.startsWith("/?key=")) return; + + if(name === "/")return; + + if(name.includes("GET") || name.includes("PATCH")|| name.includes("PUT") || name.includes("DELETE") || name.includes("POST")) return; + + if(name.startsWith("/_next/static/")){ + const lastIndex = name.lastIndexOf("/"); + name = name.slice(lastIndex + 1); + } + + + setRelevant(prevRelevant => { + const newRelevant: IRelevantData = new Map([...prevRelevant.entries()]); + + const newKeyName: string = `${method}, ${name}, ${traceId}`; + + if(newRelevant.has(newKeyName)){ + const existingData = newRelevant.get(newKeyName); + let hasUpdatedTime: boolean = false; + + if(startTime < existingData!.trueStartTime) { + existingData!.trueStartTime = startTime; + hasUpdatedTime = true; + } + if(endTime > existingData!.trueEndTime) { + existingData!.trueEndTime = endTime; + hasUpdatedTime = true; + } + if(existingData!.status === undefined && 'status' in incomingSpanData) existingData!.status = incomingSpanData.status; + + if(existingData!.protocol === undefined && 'protocol' in incomingSpanData) existingData!.protocol = incomingSpanData.protocol; + + if(hasUpdatedTime) { + existingData!.duration = existingData!.trueEndTime - existingData!.trueStartTime + }; + + }else{ + const updatedData = { + traceId, + applicationType, + originatingService, + method, + status, + protocol, + relativeStartTime: 0, + trueStartTime: startTime, + trueEndTime: endTime, + duration: endTime - startTime, + name + }; + + + newRelevant.set(newKeyName,updatedData); + } + + const sortedRelevant: IRelevantData = sortRelevant(newRelevant); + return sortedRelevant; + + }); +} + +function sortRelevant(relevant: IRelevantData): IRelevantData{ + const entries = Array.from(relevant.entries()); + + entries.sort((a, b) => a[1].trueStartTime - b[1].trueStartTime); + + const sortedMap = new Map(entries); + + const earliestEntry = sortedMap.entries().next().value; + + sortedMap.forEach(request => { + request.relativeStartTime = request.trueStartTime - earliestEntry[1].trueStartTime; + }) + + return sortedMap; +} \ No newline at end of file diff --git a/chrome-extension/src/pages/app/functions/calcTotalTime.ts b/chrome-extension/src/pages/app/functions/calcTotalTime.ts deleted file mode 100644 index 794298a..0000000 --- a/chrome-extension/src/pages/app/functions/calcTotalTime.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function calcTotalTime(sTime: number, eTime: number): number{ - return eTime - sTime; -} \ No newline at end of file diff --git a/chrome-extension/src/pages/app/functions/chartJSData.ts b/chrome-extension/src/pages/app/functions/chartJSData.ts index 18dba43..37fbad2 100644 --- a/chrome-extension/src/pages/app/functions/chartJSData.ts +++ b/chrome-extension/src/pages/app/functions/chartJSData.ts @@ -1,30 +1,20 @@ -import { IAllTracesTimeInfo, ITotalTimes } from "./getTraceInfo"; -import { calcTotalTime } from "./calcTotalTime"; +import { ILengthsOfChartBars, IRelevantData } from "../../../types/types"; -export function getChartJSTraceData(allTracesTimeInfo: ITotalTimes[][], earliestTime: number): number[][]{ - const output: number[][] = []; - // let earliestTime: number; - allTracesTimeInfo.map((singleTraceData, index) => { - const singleChartJSData: number[] = []; +export function getChartJSData(allRequestData: IRelevantData): ILengthsOfChartBars{ + const output: ILengthsOfChartBars= []; - // const firstVal: number = calcTotalTime(earliestTime, singleTraceData[0].start) - // if(index === 0){ - // earliestTime = singleTraceData[0].start - // } - const firstVal = calcTotalTime(earliestTime, singleTraceData[0].start); - - const secondVal: number = firstVal + singleTraceData[0].duration; - singleChartJSData.push(firstVal, secondVal); - output.push(singleChartJSData); - // console.log('singleChartJSData', singleChartJSData); + allRequestData.forEach((request) => { + const singleChartJSData: number[] = [request.relativeStartTime, request.relativeStartTime + request.duration]; + output.push(singleChartJSData) }) return output; } -export function getChartJSLabels(allTracesTimeInfo: ITotalTimes[][]):string[]{ - const labelsArr:string[] = allTracesTimeInfo.map((traceTimeInfo: ITotalTimes[]) => { - return (traceTimeInfo[0].id) +export function getChartJSLabels(allRequestData: IRelevantData):string[]{ + const labelsArr:string[] = []; + allRequestData.forEach((request) => { + labelsArr.push(request.name); }) return labelsArr; diff --git a/chrome-extension/src/pages/app/functions/checkTraceId.ts b/chrome-extension/src/pages/app/functions/checkTraceId.ts deleted file mode 100644 index 62f5387..0000000 --- a/chrome-extension/src/pages/app/functions/checkTraceId.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { OtelData } from '../../../types/types'; -// import {IMockData} from '../mockData'; - -// need to refactor to take async requests into account - -// export default function checkTraceId(arrOfDataObj: IMockData[]): IMockData[][]{ -export default function checkTraceId(arrOfDataObj: OtelData[]): OtelData[][]{ - let singleTrace = ''; // storing current traceId - let newTrace = false; // boolean that checks if singleTrace has just been updated - // let singleTraceData: IMockData[] = []; // storing all spanId objects that share one traceId - let singleTraceData: OtelData[] = []; // storing all spanId objects that share one traceId - // const output: IMockData[][] = []; - const output: OtelData[][] = []; - - arrOfDataObj.map((obj, index) => { - if(index === 0){ - singleTrace = arrOfDataObj[0].traceId; - } - if(newTrace){ - singleTraceData = []; - newTrace = false; - } - singleTraceData.push(obj); - - if(!arrOfDataObj[index+1]){ - output.push(singleTraceData); - }else if(arrOfDataObj[index + 1].traceId !== singleTrace){ - singleTrace = arrOfDataObj[index + 1].traceId; - newTrace = true; - // console.log(singleTraceData) - output.push(singleTraceData); - } - }) - - // current sliced output is only due to complications in mockData - return output.slice(0, 13); -} \ No newline at end of file diff --git a/chrome-extension/src/pages/app/functions/createBarClassName.ts b/chrome-extension/src/pages/app/functions/createBarClassName.ts deleted file mode 100644 index 2406dcc..0000000 --- a/chrome-extension/src/pages/app/functions/createBarClassName.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { ITotalTimes } from "./getTraceInfo"; -import { calcTotalTime } from "./calcTotalTime"; - -export function createBarClassName(totalTimes: ITotalTimes, earliestTime: number, totalDuration: number): string{ - // position start time based on margin - // duration based on percentage of view width - // height is fixed - // for now color is fixed - console.log('current start:', totalTimes.start) - console.log('current end:', totalTimes.end) - console.log('current duration', totalTimes.duration) - console.log('total duration', totalDuration) - const marginLeft:number = ((totalTimes.start - earliestTime)/1000 )* 100; - const width:number = Math.floor((totalTimes.duration/1000)* 100); - - console.log({width}); - const outputClassName = `h-5 m-3 bg-green-400 w-[${width}vw]`; - const copiedStr:string = outputClassName; - return copiedStr; -} \ No newline at end of file diff --git a/chrome-extension/src/pages/app/functions/getTraceInfo.ts b/chrome-extension/src/pages/app/functions/getTraceInfo.ts deleted file mode 100644 index 32272c1..0000000 --- a/chrome-extension/src/pages/app/functions/getTraceInfo.ts +++ /dev/null @@ -1,111 +0,0 @@ -// check how long the total traceDuration is by mapping over in one array of objects that share one traceId, all times and checking which time is smallest and biggest then getting the difference -// return an object with traceDuration, traceStart, traceEnd -import { OtelData } from "../../../types/types"; -// import { IMockData } from "../mockData"; -import { calcTotalTime } from "./calcTotalTime"; - -// export interface ITraceTimeInfo{ -// traceDuration: number, -// traceStart: number, -// traceEnd: number -// } - - - -export interface ITotalTimes{ - id: string, - duration: number, - start: number, - end: number -} - - - -// export function getTraceTimeInfo(singleTraceData: IMockData[]): ITotalTimes[]{ -export function getTraceTimeInfo(singleTraceData: OtelData[]): ITotalTimes[]{ - // return an array of totaltimes of each span in each singular trace - const totalTimesSingleTrace: ITotalTimes[] = []; - // while also keeping track of totals - - let traceStart!: number; - let traceEnd!: number; - - singleTraceData.map((spanData, index) => { - const spanDuration: number = calcTotalTime(spanData.startTime, spanData.endTime); - - const spanTotalTimes: ITotalTimes = { - id: spanData.spanId, - duration: spanDuration, - start: spanData.startTime, - end: spanData.endTime - } - - totalTimesSingleTrace.push(spanTotalTimes); - - if(index === 0){ - traceStart = spanData.startTime; - traceEnd = spanData.endTime; - }else{ - if(spanData.startTime < traceStart){ - traceStart = spanData.startTime; - } - if(spanData.endTime > traceEnd){ - traceEnd = spanData.endTime; - } - } - }) - - - const traceDuration:number = calcTotalTime(traceStart, traceEnd); - - const traceTotalTimes: ITotalTimes = { - id: singleTraceData[0].traceId, - duration: traceDuration, - start: traceStart, - end: traceEnd - } - - totalTimesSingleTrace.unshift(traceTotalTimes) - return totalTimesSingleTrace; -} - -export interface IAllTracesTimeInfo{ - allTracesTimeInfo: ITotalTimes[][], - earliestTime: number, - earliestTimeSpanId: string -} - -// function that creates each traceTimeInfo and pushes it into a bigger array -// export function getAllTracesTimeInfo(data: IMockData[][]): IAllTracesTimeInfo{ -export function getAllTracesTimeInfo(data: OtelData[][]): IAllTracesTimeInfo{ - const allTracesTimeInfo: ITotalTimes[][] = []; - let earliestTime!: number; - let earliestTimeSpanId!:string; - - // data.map((singleTraceData: IMockData[], index: number) => { - data.map((singleTraceData: OtelData[], index: number) => { - - // if condition for testing purposes only - if(index < 13){ - const traceTimeInfo:ITotalTimes[] = getTraceTimeInfo(singleTraceData) // first elem of output gives aggregated data of total times in single trace - allTracesTimeInfo.push(traceTimeInfo); - if(index === 0){ - earliestTime = traceTimeInfo[0].start; - earliestTimeSpanId = traceTimeInfo[0].id - } - - if(traceTimeInfo[0].start < earliestTime){ - earliestTime = traceTimeInfo[0].start; - earliestTimeSpanId = traceTimeInfo[0].id; - } - } - }) - - const output = { - allTracesTimeInfo, - earliestTime, - earliestTimeSpanId - } - - return output; -} diff --git a/chrome-extension/src/pages/app/mockData.tsx b/chrome-extension/src/pages/app/mockData.tsx deleted file mode 100644 index 1c233e3..0000000 --- a/chrome-extension/src/pages/app/mockData.tsx +++ /dev/null @@ -1,2107 +0,0 @@ -export interface IMockData{ - traceId: string, - spanId: string, - name?: string - applicationType: string, - originatingService: string, - method: string, - status?: number, - protocol?: string, - startTime: number, - endTime: number, - size?: number, - type?: string, - urlEndpoint?: string - } - -export const updatedMockData: IMockData[] = [ { - traceId: 'c4ec8c6ee711b29abb41e3313bb2c2cf', - spanId: 'd032351f36d40d0f', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.run', - startTime: 1686370496972, - endTime: 1686370497135 - }, - { - traceId: 'c4ec8c6ee711b29abb41e3313bb2c2cf', - spanId: '3ea172ed614cccb7', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/member', - status: 201, - startTime: 1686370496972, - endTime: 1686370497135 - }, - { - traceId: '5eb692495438875cd07cc1b56cf795d1', - spanId: 'f5ad2fb2472970b4', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'PATCH', - name: '/api/renderCount', - status: 201, - protocol: '1.1', - startTime: 1686370496950, - endTime: 1686370497232 - }, - { - traceId: '5eb692495438875cd07cc1b56cf795d1', - spanId: 'cab3319cba741293', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370496931, - endTime: 1686370497232 - }, - { - traceId: 'c4ec8c6ee711b29abb41e3313bb2c2cf', - spanId: 'd90a4347e6587342', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370496924, - endTime: 1686370497148 - }, - { - traceId: 'c4ec8c6ee711b29abb41e3313bb2c2cf', - spanId: 'e4fc6ac89e7c9a82', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370496924, - endTime: 1686370497148 - }, - { - traceId: 'c4ec8c6ee711b29abb41e3313bb2c2cf', - spanId: '9d6d28cb6eac8dae', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/member', - protocol: '1.1', - status: 201, - startTime: 1686370496924, - endTime: 1686370497183 - }, - { - traceId: 'c4ec8c6ee711b29abb41e3313bb2c2cf', - spanId: '4c1065d4044a65ef', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370496972, - endTime: 1686370497135 - }, - { - traceId: 'c4ec8c6ee711b29abb41e3313bb2c2cf', - spanId: '198090b9bfc29993', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370496971, - endTime: 1686370497134 - }, - { - traceId: 'c4ec8c6ee711b29abb41e3313bb2c2cf', - spanId: '2ae4e5da6fd64e6d', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/member', - protocol: '1.1', - status: 201, - startTime: 1686370496971, - endTime: 1686370497135 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: 'b45e5c0f73f88eba', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'PATCH', - name: 'fetch PATCH http://localhost:3000/api/renderCount', - startTime: 1686370496886, - endTime: 1686370497310 - }, - { - traceId: '5eb692495438875cd07cc1b56cf795d1', - spanId: 'a2aaa978520ffb19', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'rendering page', - startTime: 1686370496995, - endTime: 1686370497201 - }, - { - traceId: '5eb692495438875cd07cc1b56cf795d1', - spanId: '0726b26e7c0ac852', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.pipe', - startTime: 1686370496995, - endTime: 1686370497201 - }, - { - traceId: '5eb692495438875cd07cc1b56cf795d1', - spanId: '278d095817ed912f', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.render', - startTime: 1686370496995, - endTime: 1686370497201 - }, - { - traceId: '5eb692495438875cd07cc1b56cf795d1', - spanId: 'dff545fd9f128f61', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370496974, - endTime: 1686370497202 - }, - { - traceId: '5eb692495438875cd07cc1b56cf795d1', - spanId: 'd137c651f0663108', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.run', - startTime: 1686370496973, - endTime: 1686370497201 - }, - { - traceId: '5eb692495438875cd07cc1b56cf795d1', - spanId: '8163213c4470ccc8', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.run', - startTime: 1686370496927, - endTime: 1686370497232 - }, - { - traceId: '5eb692495438875cd07cc1b56cf795d1', - spanId: '5c842096a546697a', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'PATCH', - name: '/api/renderCount', - status: 201, - startTime: 1686370496972, - endTime: 1686370497201 - }, - { - traceId: '5eb692495438875cd07cc1b56cf795d1', - spanId: 'be3b8d7ba11fa192', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370496926, - endTime: 1686370497233 - }, - { - traceId: '5eb692495438875cd07cc1b56cf795d1', - spanId: '535759d544cb6393', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370496972, - endTime: 1686370497201 - }, - { - traceId: '5eb692495438875cd07cc1b56cf795d1', - spanId: 'd5c9b6d2d63c4ede', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370496926, - endTime: 1686370497233 - }, - { - traceId: '5eb692495438875cd07cc1b56cf795d1', - spanId: '67a4e2c9de6002c8', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370496972, - endTime: 1686370497201 - }, - { - traceId: '5eb692495438875cd07cc1b56cf795d1', - spanId: 'c2830c615a465ef4', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'PATCH', - name: '/api/renderCount', - size: 0, - protocol: '1.1', - status: 201, - startTime: 1686370496925, - endTime: 1686370497237 - }, - { - traceId: '5eb692495438875cd07cc1b56cf795d1', - spanId: 'de8fce2ddde0a98d', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'PATCH', - name: '/api/renderCount', - size: 0, - protocol: '1.1', - status: 201, - startTime: 1686370496972, - endTime: 1686370497202 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: '0953469e21f80725', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370497342, - endTime: 1686370497342 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: '73cf7119333f745e', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/?key=237f1f0b59144f7366d95f96c73479faae3b4bd4281ba9c6143609306fbb3cf2&method=ensurePage&args=%5B%7B%22match%22%3A%7B%22definition%22%3A%7B%22kind%22%3A%22APP_ROUTE%22%2C%22pathname%22%3A%22%2Fapi%2FrenderCount%22%2C%22page%22%3A%22%2Fapi%2FrenderCount%2Froute%22%2C%22bundlePath%22%3A%22app%2Fapi%2FrenderCount%2Froute%22%2C%22filename%22%3A%22%2FUsers%2Fwilliam%2FDesktop%2Fnext-inspect-testing-app%2Fapp%2Fapi%2FrenderCount%2Froute.js%22%7D%7D%2C%22page%22%3A%22%2Fapi%2FrenderCount%2Froute%22%2C%22clientOnly%22%3Afalse%7D%5D', - protocol: '1.1', - status: 200, - startTime: 1686370497377, - endTime: 1686370497378 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: 'e612889aa394d60d', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/?key=237f1f0b59144f7366d95f96c73479faae3b4bd4281ba9c6143609306fbb3cf2&method=ensurePage&args=%5B%7B%22match%22%3A%7B%22definition%22%3A%7B%22kind%22%3A%22APP_ROUTE%22%2C%22pathname%22%3A%22%2Fapi%2FrenderCount%22%2C%22page%22%3A%22%2Fapi%2FrenderCount%2Froute%22%2C%22bundlePath%22%3A%22app%2Fapi%2FrenderCount%2Froute%22%2C%22filename%22%3A%22%2FUsers%2Fwilliam%2FDesktop%2Fnext-inspect-testing-app%2Fapp%2Fapi%2FrenderCount%2Froute.js%22%7D%7D%2C%22page%22%3A%22%2Fapi%2FrenderCount%2Froute%22%2C%22clientOnly%22%3Afalse%7D%5D', - status: 200, - protocol: '1.1', - startTime: 1686370497365, - endTime: 1686370497377 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: 'd861d1313bdbf3a1', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/?key=237f1f0b59144f7366d95f96c73479faae3b4bd4281ba9c6143609306fbb3cf2&method=ensurePage&args=%5B%7B%22match%22%3A%7B%22definition%22%3A%7B%22kind%22%3A%22APP_ROUTE%22%2C%22pathname%22%3A%22%2Fapi%2FrenderCount%22%2C%22page%22%3A%22%2Fapi%2FrenderCount%2Froute%22%2C%22bundlePath%22%3A%22app%2Fapi%2FrenderCount%2Froute%22%2C%22filename%22%3A%22%2FUsers%2Fwilliam%2FDesktop%2Fnext-inspect-testing-app%2Fapp%2Fapi%2FrenderCount%2Froute.js%22%7D%7D%2C%22page%22%3A%22%2Fapi%2FrenderCount%2Froute%22%2C%22clientOnly%22%3Afalse%7D%5D', - protocol: '1.1', - status: 200, - startTime: 1686370497392, - endTime: 1686370497392 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: '4c01294c66d028e3', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/?key=237f1f0b59144f7366d95f96c73479faae3b4bd4281ba9c6143609306fbb3cf2&method=ensurePage&args=%5B%7B%22match%22%3A%7B%22definition%22%3A%7B%22kind%22%3A%22APP_ROUTE%22%2C%22pathname%22%3A%22%2Fapi%2FrenderCount%22%2C%22page%22%3A%22%2Fapi%2FrenderCount%2Froute%22%2C%22bundlePath%22%3A%22app%2Fapi%2FrenderCount%2Froute%22%2C%22filename%22%3A%22%2FUsers%2Fwilliam%2FDesktop%2Fnext-inspect-testing-app%2Fapp%2Fapi%2FrenderCount%2Froute.js%22%7D%7D%2C%22page%22%3A%22%2Fapi%2FrenderCount%2Froute%22%2C%22clientOnly%22%3Afalse%7D%5D', - status: 200, - protocol: '1.1', - startTime: 1686370497381, - endTime: 1686370497393 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: 'ac0f6a9fe5491ae5', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/?key=237f1f0b59144f7366d95f96c73479faae3b4bd4281ba9c6143609306fbb3cf2&method=getCompilationError&args=%5B%22%2Fapi%2FrenderCount%2Froute%22%5D', - protocol: '1.1', - status: 200, - startTime: 1686370497405, - endTime: 1686370497405 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: '8569715f142ee5ef', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/?key=237f1f0b59144f7366d95f96c73479faae3b4bd4281ba9c6143609306fbb3cf2&method=getCompilationError&args=%5B%22%2Fapi%2FrenderCount%2Froute%22%5D', - status: 200, - protocol: '1.1', - startTime: 1686370497393, - endTime: 1686370497406 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: '33fb40a5c2cca128', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'LoadComponents.loadComponents', - startTime: 1686370497406, - endTime: 1686370497406 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: '046fed2a6543f8ea', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'resolving page into components', - startTime: 1686370497406, - endTime: 1686370497407 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: 'bcf2ffefc9e7aab2', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'executing api route (app) /api/renderCount/route', - startTime: 1686370497408, - endTime: 1686370497435 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: '592193502c214b0d', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.renderToResponseWithComponents', - startTime: 1686370497407, - endTime: 1686370497434 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: 'b102415c5b371c7f', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'rendering page', - startTime: 1686370497379, - endTime: 1686370497435 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: 'cad08886d597739b', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.pipe', - startTime: 1686370497379, - endTime: 1686370497435 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: '5b65c23dd2e3fe54', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.render', - startTime: 1686370497379, - endTime: 1686370497435 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: 'e838ea9143184b82', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370497364, - endTime: 1686370497435 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: 'ca984b646a18e3bc', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.run', - startTime: 1686370497364, - endTime: 1686370497435 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: '06302b0b7ebc3ff4', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/renderCount', - status: 201, - startTime: 1686370497364, - endTime: 1686370497436 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: '0118f1c182dfdd24', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370497364, - endTime: 1686370497436 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: 'f008918a1197ba05', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370497363, - endTime: 1686370497435 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: 'd60ce5f9e34868d8', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/renderCount', - protocol: '1.1', - status: 201, - startTime: 1686370497363, - endTime: 1686370497436 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: '90b2939f6fae9ba3', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/renderCount', - status: 201, - protocol: '1.1', - startTime: 1686370497350, - endTime: 1686370497435 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: '73ec5fd5593ea7c3', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: 'fetch GET http://localhost:3000/api/renderCount', - startTime: 1686370497311, - endTime: 1686370497441 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: '718b94b22edb4afd', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370497343, - endTime: 1686370497436 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: 'fc7e0599ba20b637', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.run', - startTime: 1686370497342, - endTime: 1686370497439 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: '6d5855b75d903732', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370497341, - endTime: 1686370497438 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: '1f740a38a990338e', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370497341, - endTime: 1686370497439 - }, - { - traceId: '6805722af7c47a4d72e64fda71b0d1e9', - spanId: 'c41f85e4b961c104', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/renderCount', - protocol: '1.1', - status: 201, - startTime: 1686370497341, - endTime: 1686370497440 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: 'dc6e512e0b142d68', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'AppRender.renderToReadableStream', - startTime: 1686370496867, - endTime: 1686370497445 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: '281be0a16377c61f', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'render route (app) /', - startTime: 1686370496865, - endTime: 1686370497446 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: '3c57a2f844da8f88', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextNodeServer.renderHTML', - startTime: 1686370496865, - endTime: 1686370497446 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: 'fc9e8676bcdbef3d', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.renderToResponseWithComponents', - startTime: 1686370496766, - endTime: 1686370497447 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: '4eedac14d35b17db', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'rendering page', - startTime: 1686370496731, - endTime: 1686370497447 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: '43f5f86deb7f98c2', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'AppRender.renderToString', - startTime: 1686370497449, - endTime: 1686370497449 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: 'ced18b9efc49776c', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/', - status: 200, - protocol: '1.1', - startTime: 1686370496693, - endTime: 1686370497451 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: '11346b7353477752', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'AppRender.renderToString', - startTime: 1686370497449, - endTime: 1686370497450 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: '34a2e8fd704b66ca', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.pipe', - startTime: 1686370496731, - endTime: 1686370497451 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: '6bbe721821c154a5', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.render', - startTime: 1686370496731, - endTime: 1686370497451 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: 'fd8518314e44f8ec', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370496708, - endTime: 1686370497451 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: '2095067bc5d34d42', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.run', - startTime: 1686370496707, - endTime: 1686370497451 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: 'bee63ade447dd3bf', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/', - status: 200, - startTime: 1686370496705, - endTime: 1686370497451 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: '6ac92d85bb587b6d', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370496705, - endTime: 1686370497451 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: 'cf79a189677609f5', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370496705, - endTime: 1686370497451 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: '851987a584e0f2cf', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370496671, - endTime: 1686370497452 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: 'f97bc1a9450cd41a', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.run', - startTime: 1686370496649, - endTime: 1686370497451 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: '9cc1f48bb11fddd2', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370496638, - endTime: 1686370497452 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: '1db83e74c4acf2d8', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370496637, - endTime: 1686370497452 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: '597d4a84528c2650', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/', - protocol: '1.1', - status: 200, - startTime: 1686370496705, - endTime: 1686370497451 - }, - { - traceId: '741c6c8fd6527df79294ba61b55ed5e3', - spanId: '6a349dc359b6aea1', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/', - protocol: '1.1', - status: 200, - startTime: 1686370496631, - endTime: 1686370497452 - }, - { - traceId: 'b0f28dbcfc382ea6034ea09f52ead15b', - spanId: '716d7e701fac0517', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/_next/static/css/app/layout.css?v=1686370496882', - protocol: '1.1', - status: 200, - startTime: 1686370497529, - endTime: 1686370497548 - }, - { - traceId: 'b0f28dbcfc382ea6034ea09f52ead15b', - spanId: 'f2f510a2563dbfee', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370497534, - endTime: 1686370497548 - }, - { - traceId: 'b0f28dbcfc382ea6034ea09f52ead15b', - spanId: 'f075259453faba13', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.run', - startTime: 1686370497534, - endTime: 1686370497549 - }, - { - traceId: 'b0f28dbcfc382ea6034ea09f52ead15b', - spanId: 'f2b537ee8f71ded5', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370497529, - endTime: 1686370497549 - }, - { - traceId: 'b0f28dbcfc382ea6034ea09f52ead15b', - spanId: '12df0686174318ae', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370497529, - endTime: 1686370497549 - }, - { - traceId: 'c289904ce988785c9bd2ef617aeb6e11', - spanId: 'e1f7de8a050e0965', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/_next/static/chunks/webpack.js', - protocol: '1.1', - status: 200, - startTime: 1686370497569, - endTime: 1686370497572 - }, - { - traceId: 'c289904ce988785c9bd2ef617aeb6e11', - spanId: 'd5caba52256ab467', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370497569, - endTime: 1686370497573 - }, - { - traceId: 'c289904ce988785c9bd2ef617aeb6e11', - spanId: '3fc769abc377099a', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.run', - startTime: 1686370497569, - endTime: 1686370497573 - }, - { - traceId: 'c289904ce988785c9bd2ef617aeb6e11', - spanId: 'b63fc359d7769d48', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370497569, - endTime: 1686370497574 - }, - { - traceId: 'c289904ce988785c9bd2ef617aeb6e11', - spanId: 'dfc2b27dc57a28c0', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370497569, - endTime: 1686370497574 - }, - { - traceId: '467b51e3f8912c2e96dba05004d4fed5', - spanId: '1e6586fea9b526c1', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/_next/static/chunks/main-app.js', - protocol: '1.1', - status: 200, - startTime: 1686370497569, - endTime: 1686370497812 - }, - { - traceId: '467b51e3f8912c2e96dba05004d4fed5', - spanId: 'd3906aba5452b2d2', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370497569, - endTime: 1686370497812 - }, - { - traceId: '467b51e3f8912c2e96dba05004d4fed5', - spanId: '602dd321eeeca957', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.run', - startTime: 1686370497569, - endTime: 1686370497813 - }, - { - traceId: '467b51e3f8912c2e96dba05004d4fed5', - spanId: 'dbe828cd31f57056', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370497569, - endTime: 1686370497814 - }, - { - traceId: '467b51e3f8912c2e96dba05004d4fed5', - spanId: '7c58afdcc1525173', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370497569, - endTime: 1686370497815 - }, - { - traceId: '83e83e7fe3e14a7a123a0ae4a6eb10ae', - spanId: 'e122d2cd5d5c61d0', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/_next/static/chunks/app/layout.js', - protocol: '1.1', - status: 200, - startTime: 1686370497975, - endTime: 1686370497983 - }, - { - traceId: '83e83e7fe3e14a7a123a0ae4a6eb10ae', - spanId: '0847f3f0c2f66809', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370497976, - endTime: 1686370497983 - }, - { - traceId: '83e83e7fe3e14a7a123a0ae4a6eb10ae', - spanId: '3e120fb3ce6f5579', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.run', - startTime: 1686370497976, - endTime: 1686370497984 - }, - { - traceId: '83e83e7fe3e14a7a123a0ae4a6eb10ae', - spanId: 'ab3615814cb146ac', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370497975, - endTime: 1686370497984 - }, - { - traceId: '83e83e7fe3e14a7a123a0ae4a6eb10ae', - spanId: 'da3a46ddb1eb459a', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370497975, - endTime: 1686370497984 - }, - { - traceId: '189fc8d3df7967abf0ad7e6e6c169687', - spanId: '635d2b53127dab67', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/_next/static/chunks/app-client-internals.js', - protocol: '1.1', - status: 200, - startTime: 1686370497977, - endTime: 1686370497990 - }, - { - traceId: '189fc8d3df7967abf0ad7e6e6c169687', - spanId: '4b2b0fe86cbfda69', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370497977, - endTime: 1686370497990 - }, - { - traceId: '189fc8d3df7967abf0ad7e6e6c169687', - spanId: 'ac3d774a137b0f84', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.run', - startTime: 1686370497977, - endTime: 1686370497990 - }, - { - traceId: '189fc8d3df7967abf0ad7e6e6c169687', - spanId: '7474f0917d20fa9a', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370497977, - endTime: 1686370497992 - }, - { - traceId: '189fc8d3df7967abf0ad7e6e6c169687', - spanId: '7882b5c8444b32a1', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370497977, - endTime: 1686370497993 - }, - { - traceId: 'd623820a35bd22f6eb586e1184f978b4', - spanId: 'c8ca4219d35e7fb4', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/renderCount', - status: 201, - startTime: 1686370654990, - endTime: 1686370655222 - }, - { - traceId: 'd623820a35bd22f6eb586e1184f978b4', - spanId: '058f125ac1f7c1ce', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370654990, - endTime: 1686370655223 - }, - { - traceId: 'd623820a35bd22f6eb586e1184f978b4', - spanId: '0bcdab4a232e9d06', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370654990, - endTime: 1686370655223 - }, - { - traceId: 'd623820a35bd22f6eb586e1184f978b4', - spanId: '055e74c6abf26ae3', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/renderCount', - protocol: '1.1', - status: 201, - startTime: 1686370654990, - endTime: 1686370655223 - }, - { - traceId: 'd623820a35bd22f6eb586e1184f978b4', - spanId: '3956addedc299e42', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/renderCount', - status: 201, - protocol: '1.1', - startTime: 1686370654969, - endTime: 1686370655225 - }, - { - traceId: 'd623820a35bd22f6eb586e1184f978b4', - spanId: '009e52d383aa55f4', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370654909, - endTime: 1686370655226 - }, - { - traceId: 'd623820a35bd22f6eb586e1184f978b4', - spanId: '087a6bea4118825c', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.run', - startTime: 1686370654907, - endTime: 1686370655227 - }, - { - traceId: 'd623820a35bd22f6eb586e1184f978b4', - spanId: '9a0fb85d673c673c', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370654905, - endTime: 1686370655226 - }, - { - traceId: 'd623820a35bd22f6eb586e1184f978b4', - spanId: 'd7fdbf7063058060', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370654905, - endTime: 1686370655227 - }, - { - traceId: 'd623820a35bd22f6eb586e1184f978b4', - spanId: '4be9b8da98830593', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/renderCount', - protocol: '1.1', - status: 201, - startTime: 1686370654905, - endTime: 1686370655228 - }, - { - traceId: '32c7917ca2f3c8783d0ed95a4ad367aa', - spanId: '209e3d8bac7f88a9', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/ramen/64791f884e52c2c903b866f0', - protocol: '1.1', - status: 201, - startTime: 1686370654905, - endTime: 1686370655230 - }, - { - traceId: '32c7917ca2f3c8783d0ed95a4ad367aa', - spanId: 'd58bdaa11d71a786', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'executing api route (app) /api/ramen/[id]/route', - startTime: 1686370655198, - endTime: 1686370655227 - }, - { - traceId: '32c7917ca2f3c8783d0ed95a4ad367aa', - spanId: '8ebd4b930bb87a6a', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.renderToResponseWithComponents', - startTime: 1686370655161, - endTime: 1686370655228 - }, - { - traceId: '32c7917ca2f3c8783d0ed95a4ad367aa', - spanId: '4ed395601d19c588', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'rendering page', - startTime: 1686370655025, - endTime: 1686370655229 - }, - { - traceId: '32c7917ca2f3c8783d0ed95a4ad367aa', - spanId: '691dcd3b9793c137', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.pipe', - startTime: 1686370655025, - endTime: 1686370655229 - }, - { - traceId: '32c7917ca2f3c8783d0ed95a4ad367aa', - spanId: '91c2b8ec653c1ad5', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.render', - startTime: 1686370655025, - endTime: 1686370655229 - }, - { - traceId: '32c7917ca2f3c8783d0ed95a4ad367aa', - spanId: 'b9568dfadf5785eb', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370654989, - endTime: 1686370655229 - }, - { - traceId: '32c7917ca2f3c8783d0ed95a4ad367aa', - spanId: 'd7f2c46e9389e0ee', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.run', - startTime: 1686370654988, - endTime: 1686370655229 - }, - { - traceId: '32c7917ca2f3c8783d0ed95a4ad367aa', - spanId: 'd3a0f3cc332224ff', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/ramen/64791f884e52c2c903b866f0', - status: 201, - startTime: 1686370654988, - endTime: 1686370655231 - }, - { - traceId: '32c7917ca2f3c8783d0ed95a4ad367aa', - spanId: 'aab420449f670bfc', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370654987, - endTime: 1686370655230 - }, - { - traceId: '32c7917ca2f3c8783d0ed95a4ad367aa', - spanId: '4304c158cbc9e482', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370654987, - endTime: 1686370655231 - }, - { - traceId: '32c7917ca2f3c8783d0ed95a4ad367aa', - spanId: '4f3e932f8dddbe3b', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/ramen/64791f884e52c2c903b866f0', - protocol: '1.1', - status: 201, - startTime: 1686370654987, - endTime: 1686370655232 - }, - { - traceId: '4ecdf5702c73b925770c0a2b79bc0e45', - spanId: '07a51483df1bde81', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: 'fetch GET http://localhost:3000/api/renderCount', - startTime: 1686370654782, - endTime: 1686370655234 - }, - { - traceId: '4ecdf5702c73b925770c0a2b79bc0e45', - spanId: 'ff5f6d700a01ee12', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.pipe', - startTime: 1686370653977, - endTime: 1686370655248 - }, - { - traceId: '4ecdf5702c73b925770c0a2b79bc0e45', - spanId: 'bb3c4b42fc4a3727', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.render', - startTime: 1686370653977, - endTime: 1686370655249 - }, - { - traceId: '4ecdf5702c73b925770c0a2b79bc0e45', - spanId: 'e4ca6ba10dd7fb83', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370653939, - endTime: 1686370655249 - }, - { - traceId: '4ecdf5702c73b925770c0a2b79bc0e45', - spanId: '1c827fed28bdc1d0', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.run', - startTime: 1686370653937, - endTime: 1686370655250 - }, - { - traceId: '4ecdf5702c73b925770c0a2b79bc0e45', - spanId: '367ba933dc48b7a6', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/', - status: 200, - startTime: 1686370653932, - endTime: 1686370655250 - }, - { - traceId: '4ecdf5702c73b925770c0a2b79bc0e45', - spanId: '96fc8bb73969a12b', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370653932, - endTime: 1686370655251 - }, - { - traceId: '4ecdf5702c73b925770c0a2b79bc0e45', - spanId: '7771e7bd3a31c2ab', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370653932, - endTime: 1686370655252 - }, - { - traceId: '4ecdf5702c73b925770c0a2b79bc0e45', - spanId: 'b135ffe9189b620c', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/', - protocol: '1.1', - status: 200, - startTime: 1686370653932, - endTime: 1686370655253 - }, - { - traceId: '32c7917ca2f3c8783d0ed95a4ad367aa', - spanId: '1216ef2fc4193ba6', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/ramen/64791f884e52c2c903b866f0', - status: 201, - protocol: '1.1', - startTime: 1686370654939, - endTime: 1686370655228 - }, - { - traceId: '4ecdf5702c73b925770c0a2b79bc0e45', - spanId: '16e23ea28a0c6377', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/', - status: 200, - protocol: '1.1', - startTime: 1686370653905, - endTime: 1686370655257 - }, - { - traceId: '4ecdf5702c73b925770c0a2b79bc0e45', - spanId: '5a11ec80236fd3bc', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370653542, - endTime: 1686370655258 - }, - { - traceId: '4ecdf5702c73b925770c0a2b79bc0e45', - spanId: '82856dd9bd006e54', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.run', - startTime: 1686370653531, - endTime: 1686370655257 - }, - { - traceId: '4ecdf5702c73b925770c0a2b79bc0e45', - spanId: '7bfc286f15f35159', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370653529, - endTime: 1686370655258 - }, - { - traceId: '4ecdf5702c73b925770c0a2b79bc0e45', - spanId: '8e8d6f00c2b2346b', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370653528, - endTime: 1686370655258 - }, - { - traceId: '4ecdf5702c73b925770c0a2b79bc0e45', - spanId: '06b55d53f024dea3', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/', - protocol: '1.1', - status: 200, - startTime: 1686370653527, - endTime: 1686370655259 - }, - { - traceId: '32c7917ca2f3c8783d0ed95a4ad367aa', - spanId: '80e4280705531a0c', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370654929, - endTime: 1686370655229 - }, - { - traceId: '32c7917ca2f3c8783d0ed95a4ad367aa', - spanId: '7202f62c0f64d46d', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.run', - startTime: 1686370654905, - endTime: 1686370655229 - }, - { - traceId: '32c7917ca2f3c8783d0ed95a4ad367aa', - spanId: '2fb57e1b4bc4cb98', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370654905, - endTime: 1686370655229 - }, - { - traceId: '32c7917ca2f3c8783d0ed95a4ad367aa', - spanId: '8a041bfba84bfed1', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370654905, - endTime: 1686370655229 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: '171dffc2c5cc7d9f', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370655326, - endTime: 1686370655326 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: 'efea3e6dcee48dc2', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/?key=7638160cbc94c368072e67d0cdfc15f999ac88325855513d08e249cd9da0e832&method=ensurePage&args=%5B%7B%22match%22%3A%7B%22definition%22%3A%7B%22kind%22%3A%22APP_ROUTE%22%2C%22pathname%22%3A%22%2Fapi%2Framen%22%2C%22page%22%3A%22%2Fapi%2Framen%2Froute%22%2C%22bundlePath%22%3A%22app%2Fapi%2Framen%2Froute%22%2C%22filename%22%3A%22%2FUsers%2Fwilliam%2FDesktop%2Fnext-inspect-testing-app%2Fapp%2Fapi%2Framen%2Froute.js%22%7D%7D%2C%22page%22%3A%22%2Fapi%2Framen%2Froute%22%2C%22clientOnly%22%3Afalse%7D%5D', - protocol: '1.1', - status: 200, - startTime: 1686370655379, - endTime: 1686370655380 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: '67ad10923800e175', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/?key=7638160cbc94c368072e67d0cdfc15f999ac88325855513d08e249cd9da0e832&method=ensurePage&args=%5B%7B%22match%22%3A%7B%22definition%22%3A%7B%22kind%22%3A%22APP_ROUTE%22%2C%22pathname%22%3A%22%2Fapi%2Framen%22%2C%22page%22%3A%22%2Fapi%2Framen%2Froute%22%2C%22bundlePath%22%3A%22app%2Fapi%2Framen%2Froute%22%2C%22filename%22%3A%22%2FUsers%2Fwilliam%2FDesktop%2Fnext-inspect-testing-app%2Fapp%2Fapi%2Framen%2Froute.js%22%7D%7D%2C%22page%22%3A%22%2Fapi%2Framen%2Froute%22%2C%22clientOnly%22%3Afalse%7D%5D', - status: 200, - protocol: '1.1', - startTime: 1686370655363, - endTime: 1686370655382 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: '7bfa92aef2301c75', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/?key=7638160cbc94c368072e67d0cdfc15f999ac88325855513d08e249cd9da0e832&method=ensurePage&args=%5B%7B%22match%22%3A%7B%22definition%22%3A%7B%22kind%22%3A%22APP_ROUTE%22%2C%22pathname%22%3A%22%2Fapi%2Framen%22%2C%22page%22%3A%22%2Fapi%2Framen%2Froute%22%2C%22bundlePath%22%3A%22app%2Fapi%2Framen%2Froute%22%2C%22filename%22%3A%22%2FUsers%2Fwilliam%2FDesktop%2Fnext-inspect-testing-app%2Fapp%2Fapi%2Framen%2Froute.js%22%7D%7D%2C%22page%22%3A%22%2Fapi%2Framen%2Froute%22%2C%22clientOnly%22%3Afalse%7D%5D', - status: 200, - protocol: '1.1', - startTime: 1686370655389, - endTime: 1686370655402 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: 'd4898febe23e85f0', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/?key=7638160cbc94c368072e67d0cdfc15f999ac88325855513d08e249cd9da0e832&method=ensurePage&args=%5B%7B%22match%22%3A%7B%22definition%22%3A%7B%22kind%22%3A%22APP_ROUTE%22%2C%22pathname%22%3A%22%2Fapi%2Framen%22%2C%22page%22%3A%22%2Fapi%2Framen%2Froute%22%2C%22bundlePath%22%3A%22app%2Fapi%2Framen%2Froute%22%2C%22filename%22%3A%22%2FUsers%2Fwilliam%2FDesktop%2Fnext-inspect-testing-app%2Fapp%2Fapi%2Framen%2Froute.js%22%7D%7D%2C%22page%22%3A%22%2Fapi%2Framen%2Froute%22%2C%22clientOnly%22%3Afalse%7D%5D', - protocol: '1.1', - status: 200, - startTime: 1686370655401, - endTime: 1686370655402 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: 'd57df9c7338c5209', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/?key=7638160cbc94c368072e67d0cdfc15f999ac88325855513d08e249cd9da0e832&method=getCompilationError&args=%5B%22%2Fapi%2Framen%2Froute%22%5D', - protocol: '1.1', - status: 200, - startTime: 1686370655412, - endTime: 1686370655412 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: 'debedaaec04859d9', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/?key=7638160cbc94c368072e67d0cdfc15f999ac88325855513d08e249cd9da0e832&method=getCompilationError&args=%5B%22%2Fapi%2Framen%2Froute%22%5D', - status: 200, - protocol: '1.1', - startTime: 1686370655403, - endTime: 1686370655412 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: '5e0a9fd9bfbc9f4e', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'LoadComponents.loadComponents', - startTime: 1686370655414, - endTime: 1686370655422 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: 'f43811d546b806e5', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'resolving page into components', - startTime: 1686370655413, - endTime: 1686370655421 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: '2c945b50b437e102', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'executing api route (app) /api/ramen/route', - startTime: 1686370655448, - endTime: 1686370655488 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: '9d0ce0f919f9da76', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.renderToResponseWithComponents', - startTime: 1686370655423, - endTime: 1686370655491 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: '9fe07dfab32282dd', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'rendering page', - startTime: 1686370655387, - endTime: 1686370655491 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: '20886c7b42159059', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.pipe', - startTime: 1686370655387, - endTime: 1686370655491 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: '5365b4194e2f2a4a', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.render', - startTime: 1686370655387, - endTime: 1686370655491 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: 'cbde0eb0e50d1425', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370655358, - endTime: 1686370655492 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: 'af92e8933c15c522', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.run', - startTime: 1686370655355, - endTime: 1686370655492 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: 'e4c2ad8e02c6650c', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/ramen', - status: 201, - startTime: 1686370655353, - endTime: 1686370655492 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: '439fc9266069dd4c', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370655353, - endTime: 1686370655492 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: '5543a7ee85e936ea', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370655353, - endTime: 1686370655493 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: '7beb3b664556ee47', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/ramen', - protocol: '1.1', - status: 201, - startTime: 1686370655351, - endTime: 1686370655493 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: '1943cd3cc001391b', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/ramen', - status: 201, - protocol: '1.1', - startTime: 1686370655337, - endTime: 1686370655493 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: 'd3deb00254a34085', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370655327, - endTime: 1686370655494 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: 'eb3616211d22a47f', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.run', - startTime: 1686370655324, - endTime: 1686370655494 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: '3232be28c9cb60ba', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370655320, - endTime: 1686370655494 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: '80bb77a1a6d1971a', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370655320, - endTime: 1686370655494 - }, - { - traceId: '01fd0d0bc7f87315fb093c7aab543f2f', - spanId: 'c89c73ed4c95ba20', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/ramen', - protocol: '1.1', - status: 201, - startTime: 1686370655319, - endTime: 1686370655495 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: 'ff2b65505d4958c6', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370655541, - endTime: 1686370655557 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: 'e989e6734ee2ec15', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/?key=7638160cbc94c368072e67d0cdfc15f999ac88325855513d08e249cd9da0e832&method=ensurePage&args=%5B%7B%22match%22%3A%7B%22definition%22%3A%7B%22kind%22%3A%22APP_ROUTE%22%2C%22pathname%22%3A%22%2Fapi%2Framen%22%2C%22page%22%3A%22%2Fapi%2Framen%2Froute%22%2C%22bundlePath%22%3A%22app%2Fapi%2Framen%2Froute%22%2C%22filename%22%3A%22%2FUsers%2Fwilliam%2FDesktop%2Fnext-inspect-testing-app%2Fapp%2Fapi%2Framen%2Froute.js%22%7D%7D%2C%22page%22%3A%22%2Fapi%2Framen%2Froute%22%2C%22clientOnly%22%3Afalse%7D%5D', - protocol: '1.1', - status: 200, - startTime: 1686370655640, - endTime: 1686370655641 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: '45657fc5c232d602', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/?key=7638160cbc94c368072e67d0cdfc15f999ac88325855513d08e249cd9da0e832&method=ensurePage&args=%5B%7B%22match%22%3A%7B%22definition%22%3A%7B%22kind%22%3A%22APP_ROUTE%22%2C%22pathname%22%3A%22%2Fapi%2Framen%22%2C%22page%22%3A%22%2Fapi%2Framen%2Froute%22%2C%22bundlePath%22%3A%22app%2Fapi%2Framen%2Froute%22%2C%22filename%22%3A%22%2FUsers%2Fwilliam%2FDesktop%2Fnext-inspect-testing-app%2Fapp%2Fapi%2Framen%2Froute.js%22%7D%7D%2C%22page%22%3A%22%2Fapi%2Framen%2Froute%22%2C%22clientOnly%22%3Afalse%7D%5D', - status: 200, - protocol: '1.1', - startTime: 1686370655621, - endTime: 1686370655642 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: '3a8f193b219634ab', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/?key=7638160cbc94c368072e67d0cdfc15f999ac88325855513d08e249cd9da0e832&method=ensurePage&args=%5B%7B%22match%22%3A%7B%22definition%22%3A%7B%22kind%22%3A%22APP_ROUTE%22%2C%22pathname%22%3A%22%2Fapi%2Framen%22%2C%22page%22%3A%22%2Fapi%2Framen%2Froute%22%2C%22bundlePath%22%3A%22app%2Fapi%2Framen%2Froute%22%2C%22filename%22%3A%22%2FUsers%2Fwilliam%2FDesktop%2Fnext-inspect-testing-app%2Fapp%2Fapi%2Framen%2Froute.js%22%7D%7D%2C%22page%22%3A%22%2Fapi%2Framen%2Froute%22%2C%22clientOnly%22%3Afalse%7D%5D', - protocol: '1.1', - status: 200, - startTime: 1686370655661, - endTime: 1686370655662 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: '9b37b5b08e44d7ff', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/?key=7638160cbc94c368072e67d0cdfc15f999ac88325855513d08e249cd9da0e832&method=ensurePage&args=%5B%7B%22match%22%3A%7B%22definition%22%3A%7B%22kind%22%3A%22APP_ROUTE%22%2C%22pathname%22%3A%22%2Fapi%2Framen%22%2C%22page%22%3A%22%2Fapi%2Framen%2Froute%22%2C%22bundlePath%22%3A%22app%2Fapi%2Framen%2Froute%22%2C%22filename%22%3A%22%2FUsers%2Fwilliam%2FDesktop%2Fnext-inspect-testing-app%2Fapp%2Fapi%2Framen%2Froute.js%22%7D%7D%2C%22page%22%3A%22%2Fapi%2Framen%2Froute%22%2C%22clientOnly%22%3Afalse%7D%5D', - status: 200, - protocol: '1.1', - startTime: 1686370655646, - endTime: 1686370655663 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: '61bbd8f54e30601c', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/?key=7638160cbc94c368072e67d0cdfc15f999ac88325855513d08e249cd9da0e832&method=getCompilationError&args=%5B%22%2Fapi%2Framen%2Froute%22%5D', - protocol: '1.1', - status: 200, - startTime: 1686370655680, - endTime: 1686370655680 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: '00f39e2bdf5472a3', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/?key=7638160cbc94c368072e67d0cdfc15f999ac88325855513d08e249cd9da0e832&method=getCompilationError&args=%5B%22%2Fapi%2Framen%2Froute%22%5D', - status: 200, - protocol: '1.1', - startTime: 1686370655665, - endTime: 1686370655679 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: '637868ab7e0b4936', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'LoadComponents.loadComponents', - startTime: 1686370655681, - endTime: 1686370655683 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: 'b0c45cde864397d3', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'resolving page into components', - startTime: 1686370655681, - endTime: 1686370655684 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: 'ba236077dac26d08', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'executing api route (app) /api/ramen/route', - startTime: 1686370655686, - endTime: 1686370655712 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: '654534f0e48057ff', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.renderToResponseWithComponents', - startTime: 1686370655684, - endTime: 1686370655713 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: 'a9af17d2eaf50072', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'rendering page', - startTime: 1686370655644, - endTime: 1686370655713 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: '3ab1a78b7a5a90ef', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.pipe', - startTime: 1686370655644, - endTime: 1686370655713 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: 'c855389e370e467a', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.render', - startTime: 1686370655644, - endTime: 1686370655714 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: '21d17b458625b700', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370655620, - endTime: 1686370655714 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: 'a49fc4b127fe6281', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.run', - startTime: 1686370655617, - endTime: 1686370655714 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: '3fc3ddf7c3bdbd3f', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/ramen', - status: 201, - startTime: 1686370655617, - endTime: 1686370655714 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: 'a7876d3e638e493e', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370655617, - endTime: 1686370655715 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: '63c6fed95b74c5ca', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370655617, - endTime: 1686370655715 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: 'd2b69894dd84b576', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/ramen', - protocol: '1.1', - status: 201, - startTime: 1686370655616, - endTime: 1686370655715 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: '7de20b4dad9eb5af', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/ramen', - status: 201, - protocol: '1.1', - startTime: 1686370655599, - endTime: 1686370655715 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: 'dc997efd07f5e90c', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'Router.executeRoute', - startTime: 1686370655559, - endTime: 1686370655716 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: '966a7934c124a9cf', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'BaseServer.run', - startTime: 1686370655541, - endTime: 1686370655716 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: 'bcf92ca9b0985381', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getServerRequestHandler', - startTime: 1686370655539, - endTime: 1686370655716 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: '249958fbcc97e26f', - applicationType: 'next.js', - originatingService: 'next-app', - method: '', - name: 'NextServer.getRequestHandler', - startTime: 1686370655539, - endTime: 1686370655717 - }, - { - traceId: '6141dcf86680369786d28502dfe7527f', - spanId: '5149e16f4c3b765d', - applicationType: 'next.js', - originatingService: 'next-app', - method: 'GET', - name: '/api/ramen', - protocol: '1.1', - status: 201, - startTime: 1686370655537, - endTime: 1686370655717 - }, - // { - // traceId: 'c3915245672b2a5a3501db23f6c4cd49', - // spanId: '9d3e1cb811768839', - // applicationType: 'node.js', - // originatingService: 'items-service', - // method: 'HTTP GET', - // status: 200, - // protocol: '1.1', - // size: 38, - // urlEndpoint: 'http://localhost:8090/user', - // startTime: 1686105694647, - // endTime: 1686105694990 - // }, - // { - // traceId: 'c3915245672b2a5a3501db23f6c4cd49', - // spanId: '935c7ee5734436fb', - // applicationType: 'node.js', - // originatingService: 'users-services', - // method: 'HTTPS GET', - // status: 200, - // protocol: '1.1', - // size: 156, - // urlEndpoint: 'https://mocki.io/v1/d4867d8b-b5d5-4a48-a4ab-79131b5809b8', - // startTime: 1686105694680, - // endTime: 1686105694975 - // }, - // { - // traceId: 'c3915245672b2a5a3501db23f6c4cd49', - // spanId: '14ae32e64ce3b480', - // applicationType: 'node.js', - // originatingService: 'users-services', - // method: 'HTTP GET', - // status: 200, - // protocol: '1.1', - // urlEndpoint: 'http://localhost:8090/user', - // startTime: 1686105694664, - // endTime: 1686105694987 - // }, - // { - // traceId: 'c3915245672b2a5a3501db23f6c4cd49', - // spanId: '7c4422489da2db5a', - // applicationType: 'node.js', - // originatingService: 'users-services', - // method: 'GET /user', - // type: 'application/json', - // startTime: 1686105694666, - // endTime: 1686105694990 - // }, - // { - // traceId: 'c3915245672b2a5a3501db23f6c4cd49', - // spanId: '51b1a7249084786f', - // applicationType: 'node.js', - // originatingService: 'items-service', - // method: 'GET /data', - // type: 'text/html', - // startTime: 1686105694628, - // endTime: 1686105695000 - // }, - // { - // traceId: 'c3915245672b2a5a3501db23f6c4cd49', - // spanId: '68bbbd1189a0da58', - // applicationType: 'node.js', - // originatingService: 'items-service', - // method: 'HTTP GET', - // status: 304, - // protocol: '1.1', - // urlEndpoint: 'http://localhost:8080/data', - // startTime: 1686105694622, - // endTime: 1686105694998 - // } -] - \ No newline at end of file diff --git a/chrome-extension/src/pages/devtools/index.html b/chrome-extension/src/pages/devtools/index.html index 0151772..df6e9f4 100644 --- a/chrome-extension/src/pages/devtools/index.html +++ b/chrome-extension/src/pages/devtools/index.html @@ -5,6 +5,5 @@ -

hello from index

diff --git a/chrome-extension/src/pages/devtools/index.ts b/chrome-extension/src/pages/devtools/index.ts index 4ca76de..bd0e076 100644 --- a/chrome-extension/src/pages/devtools/index.ts +++ b/chrome-extension/src/pages/devtools/index.ts @@ -1,15 +1,3 @@ -type NetworkObject = { - method?: string, - protocol?: string, - size?: number, - status?: number, - startTime?: string, - time?: number, - urlEndpoint?: string, - type?: string, - initiator?: string | null, -} - try { chrome.devtools.panels.create( 'NextInspect', @@ -17,24 +5,6 @@ try { 'src/pages/panel/index.html' ); - //panel.onShown - chrome.devtools.network.onRequestFinished.addListener( - function(request) { - const networkObject: NetworkObject = {}; - if (request.request.httpVersion === 'chrome-extension') return; - networkObject.method = request.request.method; - networkObject.protocol = request.request.httpVersion; - networkObject.size = request.response.bodySize; - networkObject.status = request.response.status; - networkObject.startTime = request.startedDateTime; - networkObject.time = request.time; - networkObject.urlEndpoint = request.request.url; - networkObject.type = request.response.content.mimeType; - networkObject.initiator = request._initiator; - chrome.runtime.sendMessage(networkObject); - } - ) - } catch (error) { console.log(error); } diff --git a/chrome-extension/src/pages/panel/index.tsx b/chrome-extension/src/pages/panel/index.tsx index c5c804c..a4c1c5e 100644 --- a/chrome-extension/src/pages/panel/index.tsx +++ b/chrome-extension/src/pages/panel/index.tsx @@ -1,11 +1,7 @@ import { createRoot } from 'react-dom/client' import App from '../app/app.tsx' -// import '../../assets/styles.css' - const domNode: HTMLElement = document.getElementById('root')! const root = createRoot(domNode) -console.log('panel/index.jsx reached') - root.render() diff --git a/chrome-extension/src/types/types.ts b/chrome-extension/src/types/types.ts index 0958429..a9cb7c4 100644 --- a/chrome-extension/src/types/types.ts +++ b/chrome-extension/src/types/types.ts @@ -1,4 +1,6 @@ -export interface OtelData { +import { Dispatch, SetStateAction } from 'react'; + +export interface IOtelData { traceId: string, spanId: string, applicationType: string, @@ -12,4 +14,29 @@ export interface OtelData { type?: string, urlEndpoint?: string, name: string -} \ No newline at end of file +} + +export type IRelevantData = Map; + +export type ISetRelevantData= Dispatch>; + +export type ILengthsOfChartBars = number[][]; + +export interface IAggregatedSortedData { + traceId: string, + applicationType: string, + originatingService: string, + method?: string, + status?: number, + protocol?: string, + relativeStartTime: number, + trueStartTime: number, + trueEndTime: number, + duration: number, + name: string +} + + + + +