UNPKG

lightweight-charts

Version:

Performant financial charts built with HTML5 canvas

7 lines 187 kB
/*! * @license * TradingView Lightweight Charts™ v5.2.0 * Copyright (c) 2026 TradingView, Inc. * Licensed under Apache License 2.0 https://www.apache.org/licenses/LICENSE-2.0 */ import{size as t,bindCanvasElementBitmapSizeTo as i,equalSizes as n,tryCreateCanvasRenderingTarget2D as s}from"fancy-canvas";const e={title:"",visible:!0,hitTestTolerance:3,lastValueVisible:!0,priceLineVisible:!0,priceLineSource:0,priceLineWidth:1,priceLineColor:"",priceLineStyle:2,baseLineVisible:!0,baseLineWidth:1,baseLineColor:"#B2B5BE",baseLineStyle:0,priceFormat:{type:"price",precision:2,minMove:.01}};var r,h;function a(t,i){const n=function(t,i){switch(t){case 0:default:return[];case 1:return[i,i];case 2:return[2*i,2*i];case 3:return[6*i,6*i];case 4:return[i,4*i]}}(i,t.lineWidth);return t.setLineDash(n),n}function l(t,i,n,s){t.beginPath();const e=t.lineWidth%2?.5:0;t.moveTo(n,i+e),t.lineTo(s,i+e),t.stroke()}function o(t,i){if(!t)throw new Error("Assertion failed"+(i?": "+i:""))}function _(t){if(void 0===t)throw new Error("Value is undefined");return t}function u(t){if(null===t)throw new Error("Value is null");return t}function c(t){return u(_(t))}!function(t){t[t.Simple=0]="Simple",t[t.WithSteps=1]="WithSteps",t[t.Curved=2]="Curved"}(r||(r={})),function(t){t[t.Solid=0]="Solid",t[t.Dotted=1]="Dotted",t[t.Dashed=2]="Dashed",t[t.LargeDashed=3]="LargeDashed",t[t.SparseDotted=4]="SparseDotted"}(h||(h={}));class d{constructor(){this.t=[]}i(t,i,n){const s={h:t,l:i,o:!0===n};this.t.push(s)}_(t){const i=this.t.findIndex((i=>t===i.h));i>-1&&this.t.splice(i,1)}u(t){this.t=this.t.filter((i=>i.l!==t))}p(t,i,n){const s=[...this.t];this.t=this.t.filter((t=>!t.o)),s.forEach((s=>s.h(t,i,n)))}v(){return this.t.length>0}m(){this.t=[]}}function f(t,...i){for(const n of i)for(const i in n)void 0!==n[i]&&Object.prototype.hasOwnProperty.call(n,i)&&!["__proto__","constructor","prototype"].includes(i)&&("object"!=typeof n[i]||void 0===t[i]||Array.isArray(n[i])?t[i]=n[i]:f(t[i],n[i]));return t}function p(t){return"number"==typeof t&&isFinite(t)}function v(t){return"number"==typeof t&&t%1==0}function m(t){return"string"==typeof t}function w(t){return"boolean"==typeof t}function M(t){const i=t;if(!i||"object"!=typeof i)return i;let n,s,e;for(s in n=Array.isArray(i)?[]:{},i)i.hasOwnProperty(s)&&(e=i[s],n[s]=e&&"object"==typeof e?M(e):e);return n}function g(t){return null!==t}function b(t){return null===t?void 0:t}const S="-apple-system, BlinkMacSystemFont, 'Trebuchet MS', Roboto, Ubuntu, sans-serif";function x(t,i,n){return void 0===i&&(i=S),`${n=void 0!==n?`${n} `:""}${t}px ${i}`}class C{constructor(t){this.M={S:1,C:5,k:NaN,P:"",T:"",R:"",D:"",I:0,V:0,B:0,A:0,L:0},this.O=t}N(){const t=this.M,i=this.F(),n=this.W();return t.k===i&&t.T===n||(t.k=i,t.T=n,t.P=x(i,n),t.A=2.5/12*i,t.I=t.A,t.V=i/12*t.C,t.B=i/12*t.C,t.L=0),t.R=this.H(),t.D=this.U(),this.M}H(){return this.O.N().layout.textColor}U(){return this.O.$()}F(){return this.O.N().layout.fontSize}W(){return this.O.N().layout.fontFamily}}function y(t){return t<0?0:t>255?255:Math.round(t)||0}function k(t){return.199*t[0]+.687*t[1]+.114*t[2]}class P{constructor(t,i){this.j=new Map,this.q=t,i&&(this.j=i)}Y(t,i){if("transparent"===t)return t;const n=this.K(t),s=n[3];return`rgba(${n[0]}, ${n[1]}, ${n[2]}, ${i*s})`}Z(t){const i=this.K(t);return{G:`rgb(${i[0]}, ${i[1]}, ${i[2]})`,X:k(i)>160?"black":"white"}}J(t){return k(this.K(t))}tt(t,i,n){const[s,e,r,h]=this.K(t),[a,l,o,_]=this.K(i),u=[y(s+n*(a-s)),y(e+n*(l-e)),y(r+n*(o-r)),(c=h+n*(_-h),c<=0||c>1?Math.min(Math.max(c,0),1):Math.round(1e4*c)/1e4)];var c;return`rgba(${u[0]}, ${u[1]}, ${u[2]}, ${u[3]})`}K(t){const i=this.j.get(t);if(i)return i;const n=function(t){const i=document.createElement("div");i.style.display="none",document.body.appendChild(i),i.style.color=t;const n=window.getComputedStyle(i).color;return document.body.removeChild(i),n}(t),s=n.match(/^rgba?\s*\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d*\.?\d+))?\)$/);if(!s){if(this.q.length)for(const i of this.q){const n=i(t);if(n)return this.j.set(t,n),n}throw new Error(`Failed to parse color: ${t}`)}const e=[parseInt(s[1],10),parseInt(s[2],10),parseInt(s[3],10),s[4]?parseFloat(s[4]):1];return this.j.set(t,e),e}}class T{constructor(){this.it=[]}nt(t){this.it=t}st(t,i,n){this.it.forEach((s=>{s.st(t,i,n)}))}}class R{st(t,i,n){t.useBitmapCoordinateSpace((t=>this.et(t,i,n)))}}class D extends R{constructor(){super(...arguments),this.rt=null}ht(t){this.rt=t}et({context:t,horizontalPixelRatio:i,verticalPixelRatio:n}){if(null===this.rt||null===this.rt.lt)return;const s=this.rt.lt,e=this.rt,r=Math.max(1,Math.floor(i))%2/2,h=h=>{t.beginPath();for(let a=s.to-1;a>=s.from;--a){const s=e.ot[a],l=Math.round(s._t*i)+r,o=s.ut*n,_=h*n+r;t.moveTo(l,o),t.arc(l,o,_,0,2*Math.PI)}t.fill()};e.ct>0&&(t.fillStyle=e.dt,h(e.ft+e.ct)),t.fillStyle=e.vt,h(e.ft)}}function I(){return{ot:[{_t:0,ut:0,wt:0,Mt:0}],vt:"",dt:"",ft:0,ct:0,lt:null}}const V={from:0,to:1};class B{constructor(t,i,n){this.gt=new T,this.bt=[],this.St=[],this.xt=!0,this.O=t,this.Ct=i,this.yt=n,this.gt.nt(this.bt)}kt(t){this.Pt(),this.xt=!0}Tt(){return this.xt&&(this.Rt(),this.xt=!1),this.gt}Pt(){const t=this.yt.Dt();t.length!==this.bt.length&&(this.St=t.map(I),this.bt=this.St.map((t=>{const i=new D;return i.ht(t),i})),this.gt.nt(this.bt))}Rt(){const t=2===this.Ct.N().mode||!this.Ct.It(),i=this.yt.Vt(),n=this.Ct.Bt(),s=this.O.Et();this.Pt(),i.forEach(((i,e)=>{const r=this.St[e],h=i.At(n),a=i.Lt();!t&&null!==h&&i.It()&&null!==a?(r.vt=h.zt,r.ft=h.ft,r.ct=h.Ot,r.ot[0].Mt=h.Mt,r.ot[0].ut=i.Ft().Nt(h.Mt,a.Wt),r.dt=h.Ht??this.O.Ut(r.ot[0].ut/i.Ft().$t()),r.ot[0].wt=n,r.ot[0]._t=s.jt(n),r.lt=V):r.lt=null}))}}class E extends R{constructor(t){super(),this.qt=t}et({context:t,bitmapSize:i,horizontalPixelRatio:n,verticalPixelRatio:s}){if(null===this.qt)return;const e=this.qt.Yt.It,r=this.qt.Kt.It;if(!e&&!r)return;const h=Math.round(this.qt._t*n),o=Math.round(this.qt.ut*s);t.lineCap="butt",e&&h>=0&&(t.lineWidth=Math.floor(this.qt.Yt.ct*n),t.strokeStyle=this.qt.Yt.R,t.fillStyle=this.qt.Yt.R,a(t,this.qt.Yt.Zt),function(t,i,n,s){t.beginPath();const e=t.lineWidth%2?.5:0;t.moveTo(i+e,n),t.lineTo(i+e,s),t.stroke()}(t,h,0,i.height)),r&&o>=0&&(t.lineWidth=Math.floor(this.qt.Kt.ct*s),t.strokeStyle=this.qt.Kt.R,t.fillStyle=this.qt.Kt.R,a(t,this.qt.Kt.Zt),l(t,o,0,i.width))}}class A{constructor(t,i){this.xt=!0,this.Gt={Yt:{ct:1,Zt:0,R:"",It:!1},Kt:{ct:1,Zt:0,R:"",It:!1},_t:0,ut:0},this.Xt=new E(this.Gt),this.Jt=t,this.yt=i}kt(){this.xt=!0}Tt(t){return this.xt&&(this.Rt(),this.xt=!1),this.Xt}Rt(){const t=this.Jt.It(),i=this.yt.Qt().N().crosshair,n=this.Gt;if(2===i.mode)return n.Kt.It=!1,void(n.Yt.It=!1);n.Kt.It=t&&this.Jt.ti(this.yt),n.Yt.It=t&&this.Jt.ii(),n.Kt.ct=i.horzLine.width,n.Kt.Zt=i.horzLine.style,n.Kt.R=i.horzLine.color,n.Yt.ct=i.vertLine.width,n.Yt.Zt=i.vertLine.style,n.Yt.R=i.vertLine.color,n._t=this.Jt.ni(),n.ut=this.Jt.si()}}function L(t,i,n,s,e,r){t.fillRect(i+r,n,s-2*r,r),t.fillRect(i+r,n+e-r,s-2*r,r),t.fillRect(i,n,r,e),t.fillRect(i+s-r,n,r,e)}function z(t,i,n,s,e,r){t.save(),t.globalCompositeOperation="copy",t.fillStyle=r,t.fillRect(i,n,s,e),t.restore()}function O(t,i,n,s,e,r){t.beginPath(),t.roundRect?t.roundRect(i,n,s,e,r):(t.lineTo(i+s-r[1],n),0!==r[1]&&t.arcTo(i+s,n,i+s,n+r[1],r[1]),t.lineTo(i+s,n+e-r[2]),0!==r[2]&&t.arcTo(i+s,n+e,i+s-r[2],n+e,r[2]),t.lineTo(i+r[3],n+e),0!==r[3]&&t.arcTo(i,n+e,i,n+e-r[3],r[3]),t.lineTo(i,n+r[0]),0!==r[0]&&t.arcTo(i,n,i+r[0],n,r[0]))}function N(t,i,n,s,e,r,h=0,a=[0,0,0,0],l=""){if(t.save(),!h||!l||l===r)return O(t,i,n,s,e,a),t.fillStyle=r,t.fill(),void t.restore();const o=h/2;var _;O(t,i+o,n+o,s-h,e-h,(_=-o,a.map((t=>0===t?t:t+_)))),"transparent"!==r&&(t.fillStyle=r,t.fill()),"transparent"!==l&&(t.lineWidth=h,t.strokeStyle=l,t.closePath(),t.stroke()),t.restore()}function F(t,i,n,s,e,r,h){t.save(),t.globalCompositeOperation="copy";const a=t.createLinearGradient(0,0,0,e);a.addColorStop(0,r),a.addColorStop(1,h),t.fillStyle=a,t.fillRect(i,n,s,e),t.restore()}class W{constructor(t,i){this.ht(t,i)}ht(t,i){this.qt=t,this.ei=i}$t(t,i){return this.qt.It?t.k+t.A+t.I:0}st(t,i,n,s){if(!this.qt.It||0===this.qt.ri.length)return;const e=this.qt.R,r=this.ei.G,h=t.useBitmapCoordinateSpace((t=>{const h=t.context;h.font=i.P;const a=this.hi(t,i,n,s),l=a.ai;return a.li?N(h,l.oi,l._i,l.ui,l.ci,r,l.di,[l.ft,0,0,l.ft],r):N(h,l.fi,l._i,l.ui,l.ci,r,l.di,[0,l.ft,l.ft,0],r),this.qt.pi&&(h.fillStyle=e,h.fillRect(l.fi,l.mi,l.wi-l.fi,l.Mi)),this.qt.gi&&(h.fillStyle=i.D,h.fillRect(a.li?l.bi-l.di:0,l._i,l.di,l.Si-l._i)),a}));t.useMediaCoordinateSpace((({context:t})=>{const n=h.xi;t.font=i.P,t.textAlign=h.li?"right":"left",t.textBaseline="middle",t.fillStyle=e,t.fillText(this.qt.ri,n.Ci,(n._i+n.Si)/2+n.yi)}))}hi(t,i,n,s){const{context:e,bitmapSize:r,mediaSize:h,horizontalPixelRatio:a,verticalPixelRatio:l}=t,o=this.qt.pi||!this.qt.ki?i.C:0,_=this.qt.Pi?i.S:0,u=i.A+this.ei.Ti,c=i.I+this.ei.Ri,d=i.V,f=i.B,p=this.qt.ri,v=i.k,m=n.Di(e,p),w=Math.ceil(n.Ii(e,p)),M=v+u+c,g=i.S+d+f+w+o,b=Math.max(1,Math.floor(l));let S=Math.round(M*l);S%2!=b%2&&(S+=1);const x=_>0?Math.max(1,Math.floor(_*a)):0,C=Math.round(g*a),y=Math.round(o*a),k=this.ei.Vi??this.ei.Bi??this.ei.Ei,P=Math.round(k*l)-Math.floor(.5*l),T=Math.floor(P+b/2-S/2),R=T+S,D="right"===s,I=D?h.width-_:_,V=D?r.width-x:x;let B,E,A;return D?(B=V-C,E=V-y,A=I-o-d-_):(B=V+C,E=V+y,A=I+o+d),{li:D,ai:{_i:T,mi:P,Si:R,ui:C,ci:S,ft:2*a,di:x,oi:B,fi:V,wi:E,Mi:b,bi:r.width},xi:{_i:T/l,Si:R/l,Ci:A,yi:m}}}}class H{constructor(t){this.Ai={Ei:0,G:"#000",Ri:0,Ti:0},this.Li={ri:"",It:!1,pi:!0,ki:!1,Ht:"",R:"#FFF",gi:!1,Pi:!1},this.zi={ri:"",It:!1,pi:!1,ki:!0,Ht:"",R:"#FFF",gi:!0,Pi:!0},this.xt=!0,this.Oi=new(t||W)(this.Li,this.Ai),this.Ni=new(t||W)(this.zi,this.Ai)}ri(){return this.Fi(),this.Li.ri}Ei(){return this.Fi(),this.Ai.Ei}kt(){this.xt=!0}$t(t,i=!1){return Math.max(this.Oi.$t(t,i),this.Ni.$t(t,i))}Wi(){return this.Ai.Vi??null}Hi(){return this.Ai.Vi??this.Ai.Bi??this.Ei()}Ui(t){this.Ai.Bi=t??void 0}$i(){return this.Fi(),this.Li.It||this.zi.It}ji(){return this.Fi(),this.Li.It}Tt(t){return this.Fi(),this.Li.pi=this.Li.pi&&t.N().ticksVisible,this.zi.pi=this.zi.pi&&t.N().ticksVisible,this.Oi.ht(this.Li,this.Ai),this.Ni.ht(this.zi,this.Ai),this.Oi}qi(){return this.Fi(),this.Oi.ht(this.Li,this.Ai),this.Ni.ht(this.zi,this.Ai),this.Ni}Fi(){this.xt&&(this.Li.pi=!0,this.zi.pi=!1,this.Yi(this.Li,this.zi,this.Ai))}}class U extends H{constructor(t,i,n){super(),this.Jt=t,this.Ki=i,this.Zi=n}Yi(t,i,n){if(t.It=!1,2===this.Jt.N().mode)return;const s=this.Jt.N().horzLine;if(!s.labelVisible)return;const e=this.Ki.Lt();if(!this.Jt.It()||this.Ki.Gi()||null===e)return;const r=this.Ki.Xi().Z(s.labelBackgroundColor);n.G=r.G,t.R=r.X;const h=2/12*this.Ki.k();n.Ti=h,n.Ri=h;const a=this.Zi(this.Ki);n.Ei=a.Ei,t.ri=this.Ki.Ji(a.Mt,e),t.It=!0}}const $=/[1-9]/g;class j{constructor(){this.qt=null}ht(t){this.qt=t}st(t,i){if(null===this.qt||!1===this.qt.It||0===this.qt.ri.length)return;const n=t.useMediaCoordinateSpace((({context:t})=>(t.font=i.P,Math.round(i.Qi.Ii(t,u(this.qt).ri,$)))));if(n<=0)return;const s=i.tn,e=n+2*s,r=e/2,h=this.qt.nn;let a=this.qt.Ei,l=Math.floor(a-r)+.5;l<0?(a+=Math.abs(0-l),l=Math.floor(a-r)+.5):l+e>h&&(a-=Math.abs(h-(l+e)),l=Math.floor(a-r)+.5);const o=l+e,_=Math.ceil(0+i.S+i.C+i.A+i.k+i.I);t.useBitmapCoordinateSpace((({context:t,horizontalPixelRatio:n,verticalPixelRatio:s})=>{const e=u(this.qt);t.fillStyle=e.G;const r=Math.round(l*n),h=Math.round(0*s),a=Math.round(o*n),c=Math.round(_*s),d=Math.round(2*n);if(t.beginPath(),t.moveTo(r,h),t.lineTo(r,c-d),t.arcTo(r,c,r+d,c,d),t.lineTo(a-d,c),t.arcTo(a,c,a,c-d,d),t.lineTo(a,h),t.fill(),e.pi){const r=Math.round(e.Ei*n),a=h,l=Math.round((a+i.C)*s);t.fillStyle=e.R;const o=Math.max(1,Math.floor(n)),_=Math.floor(.5*n);t.fillRect(r-_,a,o,l-a)}})),t.useMediaCoordinateSpace((({context:t})=>{const n=u(this.qt),e=0+i.S+i.C+i.A+i.k/2;t.font=i.P,t.textAlign="left",t.textBaseline="middle",t.fillStyle=n.R;const r=i.Qi.Di(t,"Apr0");t.translate(l+s,e+r),t.fillText(n.ri,0,0)}))}}class q{constructor(t,i,n){this.xt=!0,this.Xt=new j,this.Gt={It:!1,G:"#4c525e",R:"white",ri:"",nn:0,Ei:NaN,pi:!0},this.Ct=t,this.sn=i,this.Zi=n}kt(){this.xt=!0}Tt(){return this.xt&&(this.Rt(),this.xt=!1),this.Xt.ht(this.Gt),this.Xt}Rt(){const t=this.Gt;if(t.It=!1,2===this.Ct.N().mode)return;const i=this.Ct.N().vertLine;if(!i.labelVisible)return;const n=this.sn.Et();if(n.Gi())return;t.nn=n.nn();const s=this.Zi();if(null===s)return;t.Ei=s.Ei;const e=n.en(this.Ct.Bt());t.ri=n.rn(u(e)),t.It=!0;const r=this.sn.Xi().Z(i.labelBackgroundColor);t.G=r.G,t.R=r.X,t.pi=n.N().ticksVisible}}class Y{constructor(){this.hn=null,this.an=0}ln(){return this.an}_n(t){this.an=t}Ft(){return this.hn}un(t){this.hn=t}cn(t){return[]}dn(){return[]}It(){return!0}}var K;!function(t){t[t.Normal=0]="Normal",t[t.Magnet=1]="Magnet",t[t.Hidden=2]="Hidden",t[t.MagnetOHLC=3]="MagnetOHLC"}(K||(K={}));class Z extends Y{constructor(t,i){super(),this.yt=null,this.fn=NaN,this.pn=0,this.vn=!1,this.mn=new Map,this.wn=!1,this.Mn=new WeakMap,this.gn=new WeakMap,this.bn=NaN,this.Sn=NaN,this.xn=NaN,this.Cn=NaN,this.sn=t,this.yn=i;this.kn=((t,i)=>n=>{const s=i(),e=t();if(n===u(this.yt).Pn())return{Mt:e,Ei:s};{const t=u(n.Lt());return{Mt:n.Tn(s,t),Ei:s}}})((()=>this.fn),(()=>this.Sn));const n=((t,i)=>()=>{const n=this.sn.Et().Rn(t()),s=i();return n&&Number.isFinite(s)?{wt:n,Ei:s}:null})((()=>this.pn),(()=>this.ni()));this.Dn=new q(this,t,n)}N(){return this.yn}In(t,i){this.xn=t,this.Cn=i}Vn(){this.xn=NaN,this.Cn=NaN}Bn(){return this.xn}En(){return this.Cn}An(t,i,n){this.wn||(this.wn=!0),this.vn=!0,this.Ln(t,i,n)}Bt(){return this.pn}ni(){return this.bn}si(){return this.Sn}It(){return this.vn}zn(){this.vn=!1,this.On(),this.fn=NaN,this.bn=NaN,this.Sn=NaN,this.yt=null,this.Vn(),this.Nn()}Fn(t){if(!this.yn.doNotSnapToHiddenSeriesIndices)return t;const i=this.sn,n=i.Et();let s=null,e=null;for(const n of i.Wn()){const i=n.Un().Hn(t,-1);if(i){if(i.$n===t)return t;(null===s||i.$n>s)&&(s=i.$n)}const r=n.Un().Hn(t,1);if(r){if(r.$n===t)return t;(null===e||r.$n<e)&&(e=r.$n)}}const r=[s,e].filter(g);if(0===r.length)return t;const h=n.jt(t),a=r.map((t=>Math.abs(h-n.jt(t))));return r[a.indexOf(Math.min(...a))]}jn(t){let i=this.Mn.get(t);i||(i=new A(this,t),this.Mn.set(t,i));let n=this.gn.get(t);return n||(n=new B(this.sn,this,t),this.gn.set(t,n)),[i,n]}ti(t){return t===this.yt&&this.yn.horzLine.visible}ii(){return this.yn.vertLine.visible}qn(t,i){this.vn&&this.yt===t||this.mn.clear();const n=[];return this.yt===t&&n.push(this.Yn(this.mn,i,this.kn)),n}dn(){return this.vn?[this.Dn]:[]}Kn(){return this.yt}Nn(){this.sn.Zn().forEach((t=>{this.Mn.get(t)?.kt(),this.gn.get(t)?.kt()})),this.mn.forEach((t=>t.kt())),this.Dn.kt()}Gn(t){return t&&!t.Pn().Gi()?t.Pn():null}Ln(t,i,n){this.Xn(t,i,n)&&this.Nn()}Xn(t,i,n){const s=this.bn,e=this.Sn,r=this.fn,h=this.pn,a=this.yt,l=this.Gn(n);this.pn=t,this.bn=isNaN(t)?NaN:this.sn.Et().jt(t),this.yt=n;const o=null!==l?l.Lt():null;return null!==l&&null!==o?(this.fn=i,this.Sn=l.Nt(i,o)):(this.fn=NaN,this.Sn=NaN),s!==this.bn||e!==this.Sn||h!==this.pn||r!==this.fn||a!==this.yt}On(){const t=this.sn.Jn().map((t=>t.Un().Qn())).filter(g),i=0===t.length?null:Math.max(...t);this.pn=null!==i?i:NaN}Yn(t,i,n){let s=t.get(i);return void 0===s&&(s=new U(this,i,n),t.set(i,s)),s}}function G(t){return"left"===t||"right"===t}class X{constructor(t){this.ts=new Map,this.ns=[],this.ss=t}es(t,i){const n=function(t,i){return void 0===t?i:{rs:Math.max(t.rs,i.rs),hs:t.hs||i.hs}}(this.ts.get(t),i);this.ts.set(t,n)}ls(){return this.ss}_s(t){const i=this.ts.get(t);return void 0===i?{rs:this.ss}:{rs:Math.max(this.ss,i.rs),hs:i.hs}}us(){this.cs(),this.ns=[{ds:0}]}fs(t){this.cs(),this.ns=[{ds:1,Wt:t}]}ps(t){this.vs(),this.ns.push({ds:5,Wt:t})}cs(){this.vs(),this.ns.push({ds:6})}ws(){this.cs(),this.ns=[{ds:4}]}Ms(t){this.cs(),this.ns.push({ds:2,Wt:t})}gs(t){this.cs(),this.ns.push({ds:3,Wt:t})}bs(){return this.ns}Ss(t){for(const i of t.ns)this.xs(i);this.ss=Math.max(this.ss,t.ss),t.ts.forEach(((t,i)=>{this.es(i,t)}))}static Cs(){return new X(2)}static ys(){return new X(3)}xs(t){switch(t.ds){case 0:this.us();break;case 1:this.fs(t.Wt);break;case 2:this.Ms(t.Wt);break;case 3:this.gs(t.Wt);break;case 4:this.ws();break;case 5:this.ps(t.Wt);break;case 6:this.vs()}}vs(){const t=this.ns.findIndex((t=>5===t.ds));-1!==t&&this.ns.splice(t,1)}}class J{formatTickmarks(t){return t.map((t=>this.format(t)))}}const Q=".";function tt(t,i){if(!p(t))return"n/a";if(!v(i))throw new TypeError("invalid length");if(i<0||i>16)throw new TypeError("invalid length");if(0===i)return t.toString();return("0000000000000000"+t.toString()).slice(-i)}class it extends J{constructor(t,i){if(super(),i||(i=1),p(t)&&v(t)||(t=100),t<0)throw new TypeError("invalid base");this.Ki=t,this.ks=i,this.Ps()}format(t){const i=t<0?"−":"";return t=Math.abs(t),i+this.Ts(t)}Ps(){if(this.Rs=0,this.Ki>0&&this.ks>0){let t=this.Ki;for(;t>1;)t/=10,this.Rs++}}Ts(t){const i=this.Ki/this.ks;let n=Math.floor(t),s="";const e=void 0!==this.Rs?this.Rs:NaN;if(i>1){let r=+(Math.round(t*i)-n*i).toFixed(this.Rs);r>=i&&(r-=i,n+=1),s=Q+tt(+r.toFixed(this.Rs)*this.ks,e)}else n=Math.round(n*i)/i,e>0&&(s=Q+tt(0,e));return n.toFixed(0)+s}}class nt extends it{constructor(t=100){super(t)}format(t){return`${super.format(t)}%`}}class st extends J{constructor(t){super(),this.Ds=t}format(t){let i="";return t<0&&(i="-",t=-t),t<995?i+this.Is(t):t<999995?i+this.Is(t/1e3)+"K":t<999999995?(t=1e3*Math.round(t/1e3),i+this.Is(t/1e6)+"M"):(t=1e6*Math.round(t/1e6),i+this.Is(t/1e9)+"B")}Is(t){let i;const n=Math.pow(10,this.Ds);return i=(t=Math.round(t*n)/n)>=1e-15&&t<1?t.toFixed(this.Ds).replace(/\.?0+$/,""):String(t),i.replace(/(\.[1-9]*)0+$/,((t,i)=>i))}}const et=/[2-9]/g;class rt{constructor(t=50){this.Vs=0,this.Bs=1,this.Es=1,this.As={},this.Ls=new Map,this.zs=t}Os(){this.Vs=0,this.Ls.clear(),this.Bs=1,this.Es=1,this.As={}}Ii(t,i,n){return this.Ns(t,i,n).width}Di(t,i,n){const s=this.Ns(t,i,n);return((s.actualBoundingBoxAscent||0)-(s.actualBoundingBoxDescent||0))/2}Ns(t,i,n){const s=n||et,e=String(i).replace(s,"0");if(this.Ls.has(e))return _(this.Ls.get(e)).Fs;if(this.Vs===this.zs){const t=this.As[this.Es];delete this.As[this.Es],this.Ls.delete(t),this.Es++,this.Vs--}t.save(),t.textBaseline="middle";const r=t.measureText(e);return t.restore(),0===r.width&&i.length||(this.Ls.set(e,{Fs:r,Ws:this.Bs}),this.As[this.Bs]=e,this.Vs++,this.Bs++),r}}class ht{constructor(t){this.Hs=null,this.M=null,this.Us="right",this.$s=t}js(t,i,n){this.Hs=t,this.M=i,this.Us=n}st(t){null!==this.M&&null!==this.Hs&&this.Hs.st(t,this.M,this.$s,this.Us)}}class at{constructor(t,i,n){this.qs=t,this.$s=new rt(50),this.Ys=i,this.O=n,this.F=-1,this.Xt=new ht(this.$s)}Tt(){const t=this.O.Ks(this.Ys);if(null===t)return null;const i=t.Zs(this.Ys)?t.Gs():this.Ys.Ft();if(null===i)return null;const n=t.Xs(i);if("overlay"===n)return null;const s=this.O.Js();return s.k!==this.F&&(this.F=s.k,this.$s.Os()),this.Xt.js(this.qs.qi(),s,n),this.Xt}}class lt extends R{constructor(){super(...arguments),this.qt=null}ht(t){this.qt=t}Qs(t,i){if(!this.qt?.It)return null;const{ut:n,ct:s,te:e}=this.qt;return i>=n-s-7&&i<=n+s+7?{ie:this.qt,ne:Math.abs(i-n),se:2,ee:"price-line",te:e}:null}et({context:t,bitmapSize:i,horizontalPixelRatio:n,verticalPixelRatio:s}){if(null===this.qt)return;if(!1===this.qt.It)return;const e=Math.round(this.qt.ut*s);e<0||e>i.height||(t.lineCap="butt",t.strokeStyle=this.qt.R,t.lineWidth=Math.floor(this.qt.ct*n),a(t,this.qt.Zt),l(t,e,0,i.width))}}class ot{constructor(t){this.re={ut:0,R:"rgba(0, 0, 0, 0)",ct:1,Zt:0,It:!1},this.he=new lt,this.xt=!0,this.ae=t,this.le=t.Qt(),this.he.ht(this.re)}kt(){this.xt=!0}Tt(){return this.ae.It()?(this.xt&&(this.oe(),this.xt=!1),this.he):null}}class _t extends ot{constructor(t){super(t)}oe(){this.re.It=!1;const t=this.ae.Ft(),i=t._e()._e;if(2!==i&&3!==i)return;const n=this.ae.N();if(!n.baseLineVisible||!this.ae.It())return;const s=this.ae.Lt();null!==s&&(this.re.It=!0,this.re.ut=t.Nt(s.Wt,s.Wt),this.re.R=n.baseLineColor,this.re.ct=n.baseLineWidth,this.re.Zt=n.baseLineStyle)}}class ut extends R{constructor(){super(...arguments),this.qt=null}ht(t){this.qt=t}ue(){return this.qt}et({context:t,horizontalPixelRatio:i,verticalPixelRatio:n}){const s=this.qt;if(null===s)return;const e=Math.max(1,Math.floor(i)),r=e%2/2,h=Math.round(s.ce.x*i)+r,a=s.ce.y*n;t.fillStyle=s.de,t.beginPath();const l=Math.max(2,1.5*s.fe)*i;t.arc(h,a,l,0,2*Math.PI,!1),t.fill(),t.fillStyle=s.pe,t.beginPath(),t.arc(h,a,s.ft*i,0,2*Math.PI,!1),t.fill(),t.lineWidth=e,t.strokeStyle=s.ve,t.beginPath(),t.arc(h,a,s.ft*i+e/2,0,2*Math.PI,!1),t.stroke()}}const ct=[{me:0,we:.25,Me:4,ge:10,be:.25,Se:0,xe:.4,Ce:.8},{me:.25,we:.525,Me:10,ge:14,be:0,Se:0,xe:.8,Ce:0},{me:.525,we:1,Me:14,ge:14,be:0,Se:0,xe:0,Ce:0}];class dt{constructor(t){this.Xt=new ut,this.xt=!0,this.ye=!0,this.ke=performance.now(),this.Pe=this.ke-1,this.Te=t}Re(){this.Pe=this.ke-1,this.kt()}De(){if(this.kt(),2===this.Te.N().lastPriceAnimation){const t=performance.now(),i=this.Pe-t;if(i>0)return void(i<650&&(this.Pe+=2600));this.ke=t,this.Pe=t+2600}}kt(){this.xt=!0}Ie(){this.ye=!0}It(){return 0!==this.Te.N().lastPriceAnimation}Ve(){switch(this.Te.N().lastPriceAnimation){case 0:return!1;case 1:return!0;case 2:return performance.now()<=this.Pe}}Tt(){return this.xt?(this.Rt(),this.xt=!1,this.ye=!1):this.ye&&(this.Be(),this.ye=!1),this.Xt}Rt(){this.Xt.ht(null);const t=this.Te.Qt().Et(),i=t.Ee(),n=this.Te.Lt();if(null===i||null===n)return;const s=this.Te.Ae(!0);if(s.Le||!i.ze(s.$n))return;const e={x:t.jt(s.$n),y:this.Te.Ft().Nt(s.Mt,n.Wt)},r=s.R,h=this.Te.N().lineWidth,a=this.Oe(this.Ne(),r);this.Xt.ht({de:r,fe:h,pe:a.pe,ve:a.ve,ft:a.ft,ce:e})}Be(){const t=this.Xt.ue();if(null!==t){const i=this.Oe(this.Ne(),t.de);t.pe=i.pe,t.ve=i.ve,t.ft=i.ft}}Ne(){return this.Ve()?performance.now()-this.ke:2599}Fe(t,i,n,s){const e=n+(s-n)*i;return this.Te.Qt().Xi().Y(t,e)}Oe(t,i){const n=t%2600/2600;let s;for(const t of ct)if(n>=t.me&&n<=t.we){s=t;break}o(void 0!==s,"Last price animation internal logic error");const e=(n-s.me)/(s.we-s.me);return{pe:this.Fe(i,e,s.be,s.Se),ve:this.Fe(i,e,s.xe,s.Ce),ft:(r=e,h=s.Me,a=s.ge,h+(a-h)*r)};var r,h,a}}class ft extends ot{constructor(t){super(t)}oe(){const t=this.re;t.It=!1;const i=this.ae.N();if(!i.priceLineVisible||!this.ae.It())return;const n=this.ae.Ae(0===i.priceLineSource);n.Le||(t.It=!0,t.ut=n.Ei,t.R=this.ae.We(n.R),t.ct=i.priceLineWidth,t.Zt=i.priceLineStyle)}}class pt extends H{constructor(t){super(),this.Jt=t}Yi(t,i,n){t.It=!1,i.It=!1;const s=this.Jt;if(!s.It())return;const e=s.N(),r=e.lastValueVisible,h=""!==s.He(),a=0===e.seriesLastValueMode,l=s.Ae(!1);if(l.Le)return;r&&(t.ri=this.Ue(l,r,a),t.It=0!==t.ri.length),(h||a)&&(i.ri=this.$e(l,r,h,a),i.It=i.ri.length>0);const o=s.We(l.R),_=this.Jt.Qt().Xi().Z(o);n.G=_.G,n.Ei=l.Ei,i.Ht=s.Qt().Ut(l.Ei/s.Ft().$t()),t.Ht=o,t.R=_.X,i.R=_.X}$e(t,i,n,s){let e="";const r=this.Jt.He();return n&&0!==r.length&&(e+=`${r} `),i&&s&&(e+=this.Jt.Ft().je()?t.qe:t.Ye),e.trim()}Ue(t,i,n){return i?n?this.Jt.Ft().je()?t.Ye:t.qe:t.ri:""}}function vt(t,i,n,s){const e=Number.isFinite(i),r=Number.isFinite(n);return e&&r?t(i,n):e||r?e?i:n:s}class mt{constructor(t,i){this.Ke=t,this.Ze=i}Ge(t){return null!==t&&(this.Ke===t.Ke&&this.Ze===t.Ze)}Xe(){return new mt(this.Ke,this.Ze)}Je(){return this.Ke}Qe(){return this.Ze}tr(){return this.Ze-this.Ke}Gi(){return this.Ze===this.Ke||Number.isNaN(this.Ze)||Number.isNaN(this.Ke)}Ss(t){return null===t?this:new mt(vt(Math.min,this.Je(),t.Je(),-1/0),vt(Math.max,this.Qe(),t.Qe(),1/0))}ir(t){if(!p(t))return;if(0===this.Ze-this.Ke)return;const i=.5*(this.Ze+this.Ke);let n=this.Ze-i,s=this.Ke-i;n*=t,s*=t,this.Ze=i+n,this.Ke=i+s}nr(t){p(t)&&(this.Ze+=t,this.Ke+=t)}sr(){return{minValue:this.Ke,maxValue:this.Ze}}static er(t){return null===t?null:new mt(t.minValue,t.maxValue)}}class wt{constructor(t,i){this.rr=t,this.hr=i||null}ar(){return this.rr}lr(){return this.hr}sr(){return{priceRange:null===this.rr?null:this.rr.sr(),margins:this.hr||void 0}}static er(t){return null===t?null:new wt(mt.er(t.priceRange),t.margins)}}const Mt=[2,4,8,16,32,64,128,256,512],gt="Custom series with conflation reducer must have a priceValueBuilder method";class bt extends ot{constructor(t,i){super(t),this._r=i}oe(){const t=this.re;t.It=!1;const i=this._r.N();if(!this.ae.It()||!i.lineVisible)return;const n=this._r.ur();null!==n&&(t.It=!0,t.ut=n,t.R=i.color,t.ct=i.lineWidth,t.Zt=i.lineStyle,t.te=this._r.N().id)}}class St extends H{constructor(t,i){super(),this.Te=t,this._r=i}Yi(t,i,n){t.It=!1,i.It=!1;const s=this._r.N(),e=s.axisLabelVisible,r=""!==s.title,h=this.Te;if(!e||!h.It())return;const a=this._r.ur();if(null===a)return;r&&(i.ri=s.title,i.It=!0),i.Ht=h.Qt().Ut(a/h.Ft().$t()),t.ri=this.cr(s.price),t.It=!0;const l=this.Te.Qt().Xi().Z(s.axisLabelColor||s.color);n.G=l.G;const o=s.axisLabelTextColor||l.X;t.R=o,i.R=o,n.Ei=a}cr(t){const i=this.Te.Lt();return null===i?"":this.Te.Ft().Ji(t,i.Wt)}}class xt{constructor(t,i){this.Te=t,this.yn=i,this.dr=new bt(t,this),this.qs=new St(t,this),this.pr=new at(this.qs,t,t.Qt())}vr(t){f(this.yn,t),this.kt(),this.Te.Qt().mr()}N(){return this.yn}wr(){return this.dr}Mr(){return this.pr}gr(){return this.qs}kt(){this.dr.kt(),this.qs.kt()}ur(){const t=this.Te,i=t.Ft();if(t.Qt().Et().Gi()||i.Gi())return null;const n=t.Lt();return null===n?null:i.Nt(this.yn.price,n.Wt)}}class Ct{constructor(){this.br=new WeakMap}Sr(t,i,n){const s=1/i*n;if(t>=s)return 1;const e=s/t,r=Math.pow(2,Math.floor(Math.log2(e)));return Math.min(r,512)}Cr(t,i,n,s=!1,e){if(0===t.length||i<=1)return t;const r=this.yr(i);if(r<=1)return t;const h=this.kr(t);let a=h.Pr.get(r);return void 0!==a||(a=this.Tr(t,r,n,s,e,h.Pr),h.Pr.set(r,a)),a}Rr(t,i,n,s,e=!1,r){if(n<1||0===t.length)return t;const h=this.kr(t),a=h.Pr.get(n);if(!a)return this.Cr(t,n,s,e,r);const l=this.Dr(t,i,n,a,e,s,r);return h.Pr.set(n,l),l}yr(t){if(t<=2)return 2;for(const i of Mt)if(t<=i)return i;return 512}Ir(t){if(0===t.length)return 0;const i=t[0],n=t[t.length-1];return 31*t.length+17*i.$n+13*n.$n}Tr(t,i,n,s=!1,e,r=new Map){if(2===i)return this.Vr(t,2,n,s,e);const h=i/2;let a=r.get(h);return a||(a=this.Tr(t,h,n,s,e,r),r.set(h,a)),this.Br(a,n,s,e)}Vr(t,i,n,s=!1,e){const r=this.Er(t,i,n,s,e);return this.Ar(r,s)}Br(t,i,n=!1,s){const e=this.Er(t,2,i,n,s);return this.Ar(e,n)}Er(t,i,n,s=!1,e){const r=[];for(let h=0;h<t.length;h+=i){if(t.length-h>=i){const i=this.Lr(t[h],t[h+1],n,s,e);i.zr=!1,r.push(i)}else if(0===r.length)r.push(this.Or(t[h],!0));else{const i=r[r.length-1];r[r.length-1]=this.Nr(i,t[h],n,s,e)}}return r}Fr(t,i){return(t??1)+(i??1)}Lr(t,i,n,s=!1,e){if(!s||!n||!e){const n=t.Wt[1]>i.Wt[1]?t.Wt[1]:i.Wt[1],s=t.Wt[2]<i.Wt[2]?t.Wt[2]:i.Wt[2];return{Wr:t.$n,Hr:i.$n,Ur:t.wt,$r:i.wt,jr:t.Wt[0],qr:n,Yr:s,Kr:i.Wt[3],Zr:this.Fr(t.Zr,i.Zr),Gr:void 0,zr:!1}}const r=n(this.Xr(t,e),this.Xr(i,e)),h=e(r),a=h.length?h[h.length-1]:0;return{Wr:t.$n,Hr:i.$n,Ur:t.wt,$r:i.wt,jr:t.Wt[0],qr:Math.max(t.Wt[1],a),Yr:Math.min(t.Wt[2],a),Kr:a,Zr:this.Fr(t.Zr,i.Zr),Gr:r,zr:!1}}Nr(t,i,n,s=!1,e){if(!s||!n||!e)return{Wr:t.Wr,Hr:i.$n,Ur:t.Ur,$r:i.wt,jr:t.jr,qr:t.qr>i.Wt[1]?t.qr:i.Wt[1],Yr:t.Yr<i.Wt[2]?t.Yr:i.Wt[2],Kr:i.Wt[3],Zr:t.Zr+(i.Zr??1),Gr:t.Gr,zr:!1};const r=t.Gr,h=this.Xr(i,e),a=r?{data:r,index:t.Wr,originalTime:t.Ur,time:t.Ur,priceValues:e(r)}:null,l=a?n(a,h):h.data,o=a?e(l):h.priceValues,_=o.length?o[o.length-1]:0;return{Wr:t.Wr,Hr:i.$n,Ur:t.Ur,$r:i.wt,jr:t.jr,qr:Math.max(t.qr,_),Yr:Math.min(t.Yr,_),Kr:_,Zr:t.Zr+(i.Zr??1),Gr:l,zr:!1}}Jr(t,i,n,s,e,r,h=!1,a){const l=i===s?e:t[i];if(n-i==1)return this.Or(l,!0);const o=i+1===s?e:t[i+1];let _=this.Lr(l,o,r,h,a);for(let l=i+2;l<n;l++){const i=l===s?e:t[l];_=this.Nr(_,i,r,h,a)}return _}Xr(t,i){const n=t.ue??{};return{data:t.ue,index:t.$n,originalTime:t.Qr,time:t.wt,priceValues:i(n)}}th(t,i=!1){const n=!0===i,s=!!t.Gr;return{...{$n:t.Wr,wt:t.Ur,Qr:t.Ur,Wt:[n?t.Kr:t.jr,t.qr,t.Yr,t.Kr],Zr:t.Zr},ue:n?s?t.Gr:{wt:t.Ur}:void 0}}Ar(t,i=!1){return t.map((t=>this.th(t,i)))}Dr(t,i,n,s,e=!1,r,h){if(0===s.length)return s;const a=t.length-1,l=Math.floor(a/n)*n;if(Math.min(l+n,t.length)-l<n&&t.length>n){const s=t.slice();return s[s.length-1]=i,this.Cr(s,n,r,e,h)}if(Math.floor((a-1)/n)===Math.floor(a/n)||1===s.length){const o=Math.min(l+n,t.length),_=o-l;if(_<=0)return s;const u=1===_?this.Or(l===a?i:t[l],!0):this.Jr(t,l,o,a,i,r,e,h);return s[s.length-1]=this.th(u,e),s}{const s=t.slice();return s[s.length-1]=i,this.Cr(s,n,r,e,h)}}Or(t,i=!1){return{Wr:t.$n,Hr:t.$n,Ur:t.wt,$r:t.wt,jr:t.Wt[0],qr:t.Wt[1],Yr:t.Wt[2],Kr:t.Wt[3],Zr:t.Zr??1,Gr:t.ue,zr:i}}kr(t){const i=this.ih(t),n=this.Ir(t);return i.nh!==n&&(i.Pr.clear(),i.nh=n),i}ih(t){let i=this.br.get(t);return void 0===i&&(i={nh:this.Ir(t),Pr:new Map},this.br.set(t,i)),i}}class yt extends Y{constructor(t){super(),this.sn=t}Qt(){return this.sn}}const kt={Bar:(t,i,n,s)=>{const e=i.upColor,r=i.downColor,h=u(t(n,s)),a=c(h.Wt[0])<=c(h.Wt[3]);return{sh:h.R??(a?e:r)}},Candlestick:(t,i,n,s)=>{const e=i.upColor,r=i.downColor,h=i.borderUpColor,a=i.borderDownColor,l=i.wickUpColor,o=i.wickDownColor,_=u(t(n,s)),d=c(_.Wt[0])<=c(_.Wt[3]);return{sh:_.R??(d?e:r),eh:_.Ht??(d?h:a),rh:_.hh??(d?l:o)}},Custom:(t,i,n,s)=>({sh:u(t(n,s)).R??i.color}),Area:(t,i,n,s)=>{const e=u(t(n,s));return{sh:e.vt??i.lineColor,vt:e.vt??i.lineColor,ah:e.ah??i.topColor,oh:e.oh??i.bottomColor}},Baseline:(t,i,n,s)=>{const e=u(t(n,s));return{sh:e.Wt[3]>=i.baseValue.price?i.topLineColor:i.bottomLineColor,_h:e._h??i.topLineColor,uh:e.uh??i.bottomLineColor,dh:e.dh??i.topFillColor1,fh:e.fh??i.topFillColor2,ph:e.ph??i.bottomFillColor1,mh:e.mh??i.bottomFillColor2}},Line:(t,i,n,s)=>{const e=u(t(n,s));return{sh:e.R??i.color,vt:e.R??i.color}},Histogram:(t,i,n,s)=>({sh:u(t(n,s)).R??i.color})};class Pt{constructor(t){this.wh=(t,i)=>void 0!==i?i.Wt:this.Te.Un().Mh(t),this.Te=t,this.gh=kt[t.bh()]}Sh(t,i){return this.gh(this.wh,this.Te.N(),t,i)}}function Tt(t,i,n,s,e=0,r=i.length){let h=r-e;for(;0<h;){const r=h>>1,a=e+r;s(i[a],n)===t?(e=a+1,h-=r+1):h=r}return e}const Rt=Tt.bind(null,!0),Dt=Tt.bind(null,!1);var It;!function(t){t[t.NearestLeft=-1]="NearestLeft",t[t.None=0]="None",t[t.NearestRight=1]="NearestRight"}(It||(It={}));const Vt=30;class Bt{constructor(){this.xh=[],this.Ch=new Map,this.yh=new Map,this.kh=[]}Ph(){return this.Th()>0?this.xh[this.xh.length-1]:null}Rh(){return this.Th()>0?this.Dh(0):null}Qn(){return this.Th()>0?this.Dh(this.xh.length-1):null}Th(){return this.xh.length}Gi(){return 0===this.Th()}ze(t){return null!==this.Ih(t,0)}Mh(t){return this.Hn(t)}Hn(t,i=0){const n=this.Ih(t,i);return null===n?null:{...this.Vh(n),$n:this.Dh(n)}}Bh(){return this.xh}Eh(t,i,n){if(this.Gi())return null;let s=null;for(const e of n){s=Et(s,this.Ah(t,i,e))}return s}ht(t){this.yh.clear(),this.Ch.clear(),this.xh=t,this.kh=t.map((t=>t.$n))}Lh(){return this.kh}Dh(t){return this.xh[t].$n}Vh(t){return this.xh[t]}Ih(t,i){const n=this.zh(t);if(null===n&&0!==i)switch(i){case-1:return this.Oh(t);case 1:return this.Nh(t);default:throw new TypeError("Unknown search mode")}return n}Oh(t){let i=this.Fh(t);return i>0&&(i-=1),i!==this.xh.length&&this.Dh(i)<t?i:null}Nh(t){const i=this.Wh(t);return i!==this.xh.length&&t<this.Dh(i)?i:null}zh(t){const i=this.Fh(t);return i===this.xh.length||t<this.xh[i].$n?null:i}Fh(t){return Rt(this.xh,t,((t,i)=>t.$n<i))}Wh(t){return Dt(this.xh,t,((t,i)=>t.$n>i))}Hh(t,i,n){let s=null;for(let e=t;e<i;e++){const t=this.xh[e].Wt[n];Number.isNaN(t)||(null===s?s={Uh:t,$h:t}:(t<s.Uh&&(s.Uh=t),t>s.$h&&(s.$h=t)))}return s}Ah(t,i,n){if(this.Gi())return null;let s=null;const e=u(this.Rh()),r=u(this.Qn()),h=Math.max(t,e),a=Math.min(i,r),l=Math.ceil(h/Vt)*Vt,o=Math.max(l,Math.floor(a/Vt)*Vt);{const t=this.Fh(h),e=this.Wh(Math.min(a,l,i));s=Et(s,this.Hh(t,e,n))}let _=this.Ch.get(n);void 0===_&&(_=new Map,this.Ch.set(n,_));for(let t=Math.max(l+1,h);t<o;t+=Vt){const i=Math.floor(t/Vt);let e=_.get(i);if(void 0===e){const t=this.Fh(i*Vt),s=this.Wh((i+1)*Vt-1);e=this.Hh(t,s,n),_.set(i,e)}s=Et(s,e)}{const t=this.Fh(o),i=this.Wh(a);s=Et(s,this.Hh(t,i,n))}return s}}function Et(t,i){if(null===t)return i;if(null===i)return t;return{Uh:Math.min(t.Uh,i.Uh),$h:Math.max(t.$h,i.$h)}}function At(){return new Bt}const Lt={setLineStyle:a};class zt{constructor(t){this.jh=t}st(t,i,n){this.jh.draw(t,Lt)}qh(t,i,n){this.jh.drawBackground?.(t,Lt)}}class Ot{constructor(t){this.Ls=null,this.Yh=t}Tt(){const t=this.Yh.renderer();if(null===t)return null;if(this.Ls?.Kh===t)return this.Ls.Zh;const i=new zt(t);return this.Ls={Kh:t,Zh:i},i}Gh(){return this.Yh.zOrder?.()??"normal"}}class Nt{constructor(t){this.Xh=null,this.Jh=t}Qh(){return this.Jh}Nn(){this.Jh.updateAllViews?.()}jn(){const t=this.Jh.paneViews?.()??[];if(this.Xh?.Kh===t)return this.Xh.Zh;const i=t.map((t=>new Ot(t)));return this.Xh={Kh:t,Zh:i},i}Qs(t,i){return this.Jh.hitTest?.(t,i)??null}}let Ft=class extends Nt{cn(){return[]}};class Wt{constructor(t){this.jh=t}st(t,i,n){this.jh.draw(t,Lt)}qh(t,i,n){this.jh.drawBackground?.(t,Lt)}}class Ht{constructor(t){this.Ls=null,this.Yh=t}Tt(){const t=this.Yh.renderer();if(null===t)return null;if(this.Ls?.Kh===t)return this.Ls.Zh;const i=new Wt(t);return this.Ls={Kh:t,Zh:i},i}Gh(){return this.Yh.zOrder?.()??"normal"}}function Ut(t){return{ri:t.text(),Ei:t.coordinate(),Vi:t.fixedCoordinate?.(),R:t.textColor(),G:t.backColor(),It:t.visible?.()??!0,pi:t.tickVisible?.()??!0}}class $t{constructor(t,i){this.Xt=new j,this.ta=t,this.ia=i}Tt(){return this.Xt.ht({nn:this.ia.nn(),...Ut(this.ta)}),this.Xt}}class jt extends H{constructor(t,i){super(),this.ta=t,this.Ki=i}Yi(t,i,n){const s=Ut(this.ta);n.G=s.G,t.R=s.R;const e=2/12*this.Ki.k();n.Ti=e,n.Ri=e,n.Ei=s.Ei,n.Vi=s.Vi,t.ri=s.ri,t.It=s.It,t.pi=s.pi}}class qt extends Nt{constructor(t,i){super(t),this.na=null,this.sa=null,this.ea=null,this.ra=null,this.Te=i}dn(){const t=this.Jh.timeAxisViews?.()??[];if(this.na?.Kh===t)return this.na.Zh;const i=this.Te.Qt().Et(),n=t.map((t=>new $t(t,i)));return this.na={Kh:t,Zh:n},n}qn(){const t=this.Jh.priceAxisViews?.()??[];if(this.sa?.Kh===t)return this.sa.Zh;const i=this.Te.Ft(),n=t.map((t=>new jt(t,i)));return this.sa={Kh:t,Zh:n},n}ha(){const t=this.Jh.priceAxisPaneViews?.()??[];if(this.ea?.Kh===t)return this.ea.Zh;const i=t.map((t=>new Ht(t)));return this.ea={Kh:t,Zh:i},i}aa(){const t=this.Jh.timeAxisPaneViews?.()??[];if(this.ra?.Kh===t)return this.ra.Zh;const i=t.map((t=>new Ht(t)));return this.ra={Kh:t,Zh:i},i}la(t,i){return this.Jh.autoscaleInfo?.(t,i)??null}}function Yt(t,i,n,s){t.forEach((t=>{i(t).forEach((t=>{t.Gh()===n&&s.push(t)}))}))}function Kt(t){return t.jn()}function Zt(t){return t.ha()}function Gt(t){return t.aa()}const Xt=["Area","Line","Baseline"];class Jt extends yt{constructor(t,i,n,s,e){super(t),this.qt=At(),this.dr=new ft(this),this.oa=[],this._a=new _t(this),this.ua=null,this.ca=null,this.da=null,this.fa=[],this.pa=new Ct,this.va=new Map,this.ma=null,this.yn=n,this.wa=i;const r=new pt(this);if(this.mn=[r],this.pr=new at(r,this,t),Xt.includes(this.wa)&&(this.ua=new dt(this)),this.Ma(),this.Yh=s(this,this.Qt(),e),"Custom"===this.wa){const t=this.Yh;t.ga&&this.ba(t.ga)}}m(){null!==this.da&&clearTimeout(this.da)}We(t){return this.yn.priceLineColor||t}Ae(t){const i={Le:!0},n=this.Ft();if(this.Qt().Et().Gi()||n.Gi()||this.qt.Gi())return i;const s=this.Qt().Et().Ee(),e=this.Lt();if(null===s||null===e)return i;let r,h;if(t){const t=this.qt.Ph();if(null===t)return i;r=t,h=t.$n}else{const t=this.qt.Hn(s.bi(),-1);if(null===t)return i;if(r=this.qt.Mh(t.$n),null===r)return i;h=t.$n}const a=r.Wt[3],l=this.Sa().Sh(h,{Wt:r}),o=n.Nt(a,e.Wt);return{Le:!1,Mt:a,ri:n.Ji(a,e.Wt),qe:n.xa(a),Ye:n.Ca(a,e.Wt),R:l.sh,Ei:o,$n:h}}Sa(){return null!==this.ca||(this.ca=new Pt(this)),this.ca}N(){return this.yn}vr(t){const i=this.Qt(),{priceScaleId:n,visible:s,priceFormat:e}=t;void 0!==n&&n!==this.yn.priceScaleId&&i.ya(this,n),void 0!==s&&s!==this.yn.visible&&i.ka();const r=void 0!==t.conflationThresholdFactor;f(this.yn,t),r&&(this.va.clear(),this.Qt().mr()),void 0!==e&&(this.Ma(),i.Pa()),i.Ta(this),i.Ra(),this.Yh.kt("options")}ht(t,i){this.qt.ht(t),this.va.clear();const n=this.Qt().Et().N();n.enableConflation&&n.precomputeConflationOnInit&&this.Da(n.precomputeConflationPriority),this.Yh.kt("data"),null!==this.ua&&(i&&i.Ia?this.ua.De():0===t.length&&this.ua.Re());const s=this.Qt().Ks(this);this.Qt().Va(s),this.Qt().Ta(this),this.Qt().Ra(),this.Qt().mr()}Ba(t){const i=new xt(this,t);return this.oa.push(i),this.Qt().Ta(this),i}Ea(t){const i=this.oa.indexOf(t);-1!==i&&this.oa.splice(i,1),this.Qt().Ta(this)}Aa(){return this.oa}bh(){return this.wa}Lt(){const t=this.La();return null===t?null:{Wt:t.Wt[3],za:t.wt}}La(){const t=this.Qt().Et().Ee();if(null===t)return null;const i=t.Oa();return this.qt.Hn(i,1)}Un(){return this.qt}ba(t){this.ma=t,this.va.clear()}Na(){return!!this.Qt().Et().N().enableConflation&&this.Fa()>1}Rr(t){if(!this.Na())return;const i=this.Fa();if(!this.va.has(i))return;const n="Custom"===this.wa,s=n&&this.ma||void 0,e=n&&this.Yh.Wa?t=>{const i=t,n=this.Yh.Wa(i);return Array.isArray(n)?n:["number"==typeof n?n:0]}:void 0,r=this.pa.Rr(this.qt.Bh(),t,i,s,n,e),h=At();h.ht(r),this.va.set(i,h)}Ha(){const t=this.Qt().Et().N().enableConflation;if("Custom"===this.wa&&null===this.ma)return this.qt;if(!t)return this.qt;const i=this.Fa(),n=this.va.get(i);if(n)return n;this.Ua(i);return this.va.get(i)??this.qt}$a(t){const i=this.qt.Mh(t);return null===i?null:"Bar"===this.wa||"Candlestick"===this.wa||"Custom"===this.wa?{jr:i.Wt[0],qr:i.Wt[1],Yr:i.Wt[2],Kr:i.Wt[3]}:i.Wt[3]}ja(t){const i=[];Yt(this.fa,Kt,"top",i);const n=this.ua;return null!==n&&n.It()?(null===this.da&&n.Ve()&&(this.da=setTimeout((()=>{this.da=null,this.Qt().qa()}),0)),n.Ie(),i.unshift(n),i):i}jn(){const t=[];this.Ya()||t.push(this._a),t.push(this.Yh,this.dr);const i=this.oa.map((t=>t.wr()));return t.push(...i),Yt(this.fa,Kt,"normal",t),t}Ka(){return this.Za(Kt,"bottom")}Ga(t){return this.Za(Zt,t)}Xa(t){return this.Za(Gt,t)}Ja(t,i){return this.fa.map((n=>n.Qs(t,i))).filter((t=>null!==t))}cn(){return[this.pr,...this.oa.map((t=>t.Mr()))]}qn(t,i){if(i!==this.hn&&!this.Ya())return[];const n=[...this.mn];for(const t of this.oa)n.push(t.gr());return this.fa.forEach((t=>{n.push(...t.qn())})),n}dn(){const t=[];return this.fa.forEach((i=>{t.push(...i.dn())})),t}la(t,i){if(void 0!==this.yn.autoscaleInfoProvider){const n=this.yn.autoscaleInfoProvider((()=>{const n=this.Qa(t,i);return null===n?null:n.sr()}));return wt.er(n)}return this.Qa(t,i)}Kh(){const t=this.yn.priceFormat;return t.base??1/t.minMove}tl(){return this.il}Nn(){this.Yh.kt();for(const t of this.mn)t.kt();for(const t of this.oa)t.kt();this.dr.kt(),this._a.kt(),this.ua?.kt(),this.fa.forEach((t=>t.Nn()))}Ft(){return u(super.Ft())}At(t){if(!(("Line"===this.wa||"Area"===this.wa||"Baseline"===this.wa)&&this.yn.crosshairMarkerVisible))return null;const i=this.qt.Mh(t);if(null===i)return null;return{Mt:i.Wt[3],ft:this.nl(),Ht:this.sl(),Ot:this.el(),zt:this.rl(t)}}He(){return this.yn.title}It(){return this.yn.visible}hl(t){this.fa.push(new qt(t,this))}al(t){this.fa=this.fa.filter((i=>i.Qh()!==t))}ll(){if("Custom"===this.wa)return t=>this.Yh.Wa(t)}ol(){if("Custom"===this.wa)return t=>this.Yh._l(t)}ul(){return this.qt.Lh()}Ya(){return!G(this.Ft().cl())}Qa(t,i){if(!v(t)||!v(i)||this.qt.Gi())return null;const n="Line"===this.wa||"Area"===this.wa||"Baseline"===this.wa||"Histogram"===this.wa?[3]:[2,1],s=this.qt.Eh(t,i,n);let e=null!==s?new mt(s.Uh,s.$h):null,r=null;if("Histogram"===this.bh()){const t=this.yn.base,i=new mt(t,t);e=null!==e?e.Ss(i):i}return this.fa.forEach((n=>{const s=n.la(t,i);if(s?.priceRange){const t=new mt(s.priceRange.minValue,s.priceRange.maxValue);e=null!==e?e.Ss(t):t}s?.margins&&(r=s.margins)})),new wt(e,r)}nl(){switch(this.wa){case"Line":case"Area":case"Baseline":return this.yn.crosshairMarkerRadius}return 0}sl(){switch(this.wa){case"Line":case"Area":case"Baseline":{const t=this.yn.crosshairMarkerBorderColor;if(0!==t.length)return t}}return null}el(){switch(this.wa){case"Line":case"Area":case"Baseline":return this.yn.crosshairMarkerBorderWidth}return 0}rl(t){switch(this.wa){case"Line":case"Area":case"Baseline":{const t=this.yn.crosshairMarkerBackgroundColor;if(0!==t.length)return t}}return this.Sa().Sh(t).sh}Ma(){switch(this.yn.priceFormat.type){case"custom":{const t=this.yn.priceFormat.formatter;this.il={format:t,formatTickmarks:this.yn.priceFormat.tickmarksFormatter??(i=>i.map(t))};break}case"volume":this.il=new st(this.yn.priceFormat.precision);break;case"percent":this.il=new nt(this.yn.priceFormat.precision);break;default:{const t=Math.pow(10,this.yn.priceFormat.precision);this.il=new it(t,this.yn.priceFormat.minMove*t)}}null!==this.hn&&this.hn.dl()}Za(t,i){const n=[];return Yt(this.fa,t,i,n),n}Fa(){const{fl:t,pl:i,vl:n}=this.ml();return this.pa.Sr(t,i,n)}ml(){const t=this.Qt().Et(),i=t.fl(),n=window.devicePixelRatio||1,s=t.N().conflationThresholdFactor;return{fl:i,pl:n,vl:this.yn.conflationThresholdFactor??s??1}}wl(t){const i=this.qt.Bh();let n;if("Custom"===this.wa&&null!==this.ma){const s=this.ll();if(!s)throw new Error(gt);n=this.pa.Cr(i,t,this.ma,!0,(t=>s(t)))}else n=this.pa.Cr(i,t);const s=At();return s.ht(n),s}Ua(t){const i=this.wl(t);this.va.set(t,i)}Da(t){if("Custom"===this.wa&&(null===this.ma||!this.ll()))return;this.va.clear();const i=this.Qt().Et().Ml();for(const n of i){const i=()=>{this.gl(n)},s="object"==typeof window&&window||"object"==typeof self&&self;s?.Sl?.bl?s.Sl.bl((()=>{i()}),{se:t}):Promise.resolve().then((()=>i()))}}gl(t){if(this.va.has(t))return;if(0===this.qt.Bh().length)return;const i=this.wl(t);this.va.set(t,i)}}const Qt=[3],ti=[0,1,2,3];class ii{constructor(t){this.yn=t}xl(t,i,n){let s=t;if(0===this.yn.mode)return s;const e=n.Pn(),r=e.Lt();if(null===r)return s;const h=e.Nt(t,r),a=n.Cl().filter((t=>t instanceof Jt)).reduce(((t,s)=>{if(n.Zs(s)||!s.It())return t;const e=s.Ft(),r=s.Un();if(e.Gi()||!r.ze(i))return t;const h=r.Mh(i);if(null===h)return t;const a=c(s.Lt()),l=3===this.yn.mode?ti:Qt;return t.concat(l.map((t=>e.Nt(h.Wt[t],a.Wt))))}),[]);if(0===a.length)return s;a.sort(((t,i)=>Math.abs(t-h)-Math.abs(i-h)));const l=a[0];return s=e.Tn(l,r),s}}function ni(t,i,n){return Math.min(Math.max(t,i),n)}function si(t,i,n){return i-t<=n}function ei(t){const i=Math.ceil(t);return i%2==0?i-1:i}class ri extends R{constructor(){super(...arguments),this.qt=null}ht(t){this.qt=t}et({context:t,bitmapSize:i,horizontalPixelRatio:n,verticalPixelRatio:s}){if(null===this.qt)return;const e=Math.max(1,Math.floor(n));t.lineWidth=e,function(t,i){t.save(),t.lineWidth%2&&t.translate(.5,.5),i(),t.restore()}(t,(()=>{const r=u(this.qt);if(r.yl){t.strokeStyle=r.kl,a(t,r.Pl),t.beginPath();for(const s of r.Tl){const r=Math.round(s.Rl*n);t.moveTo(r,-e),t.lineTo(r,i.height+e)}t.stroke()}if(r.Dl){t.strokeStyle=r.Il,a(t,r.Vl),t.beginPath();for(const n of r.Bl){const r=Math.round(n.Rl*s);t.moveTo(-e,r),t.lineTo(i.width+e,r)}t.stroke()}}))}}class hi{constructor(t){this.Xt=new ri,this.xt=!0,this.yt=t}kt(){this.xt=!0}Tt(){if(this.xt){const t=this.yt.Qt().N().grid,i={Dl:t.horzLines.visible,yl:t.vertLines.visible,Il:t.horzLines.color,kl:t.vertLines.color,Vl:t.horzLines.style,Pl:t.vertLines.style,Bl:this.yt.Pn().El(),Tl:(this.yt.Qt().Et().El()||[]).map((t=>({Rl:t.coord})))};this.Xt.ht(i),this.xt=!1}return this.Xt}}class ai{constructor(t){this.Yh=new hi(t)}wr(){return this.Yh}}const li={Al:4,Ll:1e-4};function oi(t,i){const n=100*(t-i)/i;return i<0?-n:n}function _i(t,i){const n=oi(t.Je(),i),s=oi(t.Qe(),i);return new mt(n,s)}function ui(t,i){const n=100*(t-i)/i+100;return i<0?-n:n}function ci(t,i){const n=ui(t.Je(),i),s=ui(t.Qe(),i);return new mt(n,s)}function di(t,i){const n=Math.abs(t);if(n<1e-15)return 0;const s=Math.log10(n+i.Ll)+i.Al;return t<0?-s:s}function fi(t,i){const n=Math.abs(t);if(n<1e-15)return 0;const s=Math.pow(10,n-i.Al)-i.Ll;return t<0?-s:s}function pi(t,i){if(null===t)return null;const n=di(t.Je(),i),s=di(t.Qe(),i);return new mt(n,s)}function vi(t,i){if(null===t)return null;const n=fi(t.Je(),i),s=fi(t.Qe(),i);return new mt(n,s)}function mi(t){if(null===t)return li;const i=Math.abs(t.Qe()-t.Je());if(i>=1||i<1e-15)return li;const n=Math.ceil(Math.abs(Math.log10(i))),s=li.Al+n;return{Al:s,Ll:1/Math.pow(10,s)}}class wi{constructor(t,i){if(this.zl=t,this.Ol=i,function(t){if(t<0)return!1;if(t>1e18)return!0;for(let i=t;i>1;i/=10)if(i%10!=0)return!1;return!0}(this.zl))this.Nl=[2,2.5,2];else{this.Nl=[];for(let t=this.zl;1!==t;){if(t%2==0)this.Nl.push(2),t/=2;else{if(t%5!=0)throw new Error("unexpected base");this.Nl.push(2,2.5),t/=5}if(this.Nl.length>100)throw new Error("something wrong with base")}}}Fl(t,i,n){const s=0===this.zl?0:1/this.zl;let e=Math.pow(10,Math.max(0,Math.ceil(Math.log10(t-i)))),r=0,h=this.Ol[0];for(;;){const t=si(e,s,1e-14)&&e>s+1e-14,i=si(e,n*h,1e-14),a=si(e,1,1e-14);if(!(t&&i&&a))break;e/=h,h=this.Ol[++r%this.Ol.length]}if(e<=s+1e-14&&(e=s),e=Math.max(1,e),this.Nl.length>0&&(a=e,l=1,o=1e-14,Math.abs(a-l)<o))for(r=0,h=this.Nl[0];si(e,n*h,1e-14)&&e>s+1e-14;)e/=h,h=this.Nl[++r%this.Nl.length];var a,l,o;return e}}class Mi{constructor(t,i,n,s){this.Wl=[],this.Ki=t,this.zl=i,this.Hl=n,this.Ul=s}Fl(t,i){if(t<i)throw new Error("high < low");const n=this.Ki.$t(),s=(t-i)*this.$l()/n,e=new wi(this.zl,[2,2.5,2]),r=new wi(this.zl,[2,2,2.5]),h=new wi(this.zl,[2.5,2,2]),a=[];return a.push(e.Fl(t,i,s),r.Fl(t,i,s),h.Fl(t,i,s)),function(t){if(t.length<1)throw Error("array is empty");let i=t[0];for(let n=1;n<t.length;++n)t[n]<i&&(i=t[n]);return i}(a)}jl(){const t=this.Ki,i=t.Lt();if(null===i)return void(this.Wl=[]);const n=t.$t(),s=this.Hl(n-1,i),e=this.Hl(0,i),r=this.Ki.N().entireTextOnly?this.ql()/2:0,h=r,a=n-1-r,l=Math.max(s,e),o=Math.min(s,e);if(l===o)return void(this.Wl=[]);const _=this.Fl(l,o);if(this.Yl(i,_,l,o,h,a),t.Kl()&&this.Zl(_,o,l)){const t=this.Ki.Gl();this.Xl(i,_,h,a,t,2*t)}const u=this.Wl.map((t=>t.Jl)),c=this.Ki.Ql(u);for(let t=0;t<this.Wl.length;t++)this.Wl[t].io=c[t]}El(){return this.Wl}ql(){return this.Ki.k()}$l(){return Math.ceil(this.ql()*this.Ki.N().tickMarkDensity)}Yl(t,i,n,s,e,r){const h=this.Wl,a=this.Ki;let l=n%i;l+=l<0?i:0;const o=n>=s?1:-1;let _=null,u=0;for(let c=n-l;c>s;c-=i){const n=this.Ul(c,t,!0);null!==_&&Math.abs(n-_)<this.$l()||(n<e||n>r||(u<h.length?(h[u].Rl=n,h[u].io=a.no(c),h[u].Jl=c):h.push({Rl:n,io:a.no(c),Jl:c}),u++,_=n,a.so()&&(i=this.Fl(c*o,s))))}h.length=u}Xl(t,i,n,s,e,r){const h=this.Wl,a=this.eo(t,n,e,r),l=this.eo(t,s,-r,-e),o=this.Ul(0,t,!0)-this.Ul(i,t,!0);h.length>0&&h[0].Rl-a.Rl<o/2&&h.shift(),h.length>0&&l.Rl-h[h.length-1].Rl<o/2&&h.pop(),h.unshift(a),h.push(l)}eo(t,i,n,s){const e=(n+s)/2,r=this.Hl(i+n,t),h=this.Hl(i+s,t),a=Math.min(r,h),l=Math.max(r,h),o=Math.max(.1,this.Fl(l,a)),_=this.Hl(i+e,t),u=_-_%o,c=this.Ul(u,t,!0);return{io:this.Ki.no(u),Rl:c,Jl:u}}Zl(t,i,n){let s=c(this.Ki.ar());return this.Ki.so()&&(s=vi(s,this.Ki.ro())),s.Je()-i<t&&n-s.Qe()<t}}function gi(t){return t.slice().sort(((t,i)=>u(t.ln())-u(i.ln())))}var bi;!function(t){t[t.Normal=0]="Normal",t[t.Logarithmic=1]="Logarithmic",t[t.Percentage=2]="Percentage",t[t.IndexedTo100=3]="IndexedTo100"}(bi||(bi={}));const Si=new nt,xi=new it(100,1);class Ci{constructor(t,i,n,s,e){this.ho=0,this.ao=null,this.rr=null,this.lo=null,this.oo={_o:!1,uo:null},this.co=!1,this.do=0,this.fo=0,this.po=new d,this.vo=new d,this.mo=[],this.wo=null,this.Mo=null,this.bo=null,this.So=null,this.xo=null,this.il=xi,this.Co=mi(null),this.yo=t,this.yn=i,this.ko=n,this.Po=s,this.To=e,this.Ro=new Mi(this,100,this.Do.bind(this),this.Io.bind(this))}cl(){return this.yo}N(){return this.yn}vr(t){if(f(this.yn,t),this.dl(),void 0!==t.mode&&this.Vo({_e:t.mode}),void 0!==t.scaleMargins){const i=_(t.scaleMargins.top),n=_(t.scaleMargins.bottom);if(i<0||i>1)throw new Error(`Invalid top margin - expect value between 0 and 1, given=${i}`);if(n<0||n>1)throw new Error(`Invalid bottom margin - expect value between 0 and 1, given=${n}`);if(i+n>1)throw new Error(`Invalid margins - sum of margins must be less than 1, given=${i+n}`);this.Bo(),this.bo=null}}Eo(){return this.yn.autoScale}Ao(){return this.co}so(){return 1===this.yn.mode}je(){return 2===this.yn.mode}Lo(){return 3===this.yn.mode}ro(){return this.Co}_e(){return{hs:this.yn.autoScale,zo:this.yn.invertScale,_e:this.yn.mode}}Vo(t){const i=this._e();let n=null;void 0!==t.hs&&(this.yn.autoScale=t.hs),void 0!==t._e&&(this.yn.mode=t._e,2!==t._e&&3!==t._e||(this.yn.autoScale=!0),this.oo._o=!1),1===i._e&&t._e!==i._e&&(!function(t,i){if(null===t)return!1;const n=fi(t.Je(),i),s=fi(t.Qe(),i);return isFinite(n)&&isFinite(s)}(this.rr,this.Co)?this.yn.autoScale=!0:(n=vi(this.rr,this.Co),null!==n&&this.Oo(n))),1===t._e&&t._e!==i._e&&(n=pi(this.rr,this.Co),null!==n&&this.Oo(n));const s=i._e!==this.yn.mode;s&&(2===i._e||this.je())&&this.dl(),s&&(3===i._e||this.Lo())&&this.dl(),void 0!==t.zo&&i.zo!==t.zo&&(this.yn.invertScale=t.zo,this.No()),this.vo.p(i,this._e())}Fo(){return this.vo}k(){return this.ko.fontSize}$t(){return this.ho}Wo(t){this.ho!==t&&(this.ho=t,this.Bo(),this.bo=null)}Ho(){if(this.ao)return this.ao;const t=this.$t()-this.Uo()-this.$o();return this.ao=t,t}ar(){return this.jo(),this.rr}Oo(t,i){const n=this.rr;(i||null===n&&null!==t||null!==n&&!n.Ge(t))&&(this.bo=null,this.rr=t)}qo(t){this.Oo(t),this.Yo(null!==t)}Gi(){return this.jo(),0===this.ho||!this.rr||this.rr.Gi()}Ko(t){return this.zo()?t:this.$t()-1-t}Nt(t,i){return this.je()?t=oi(t,i):this.Lo()&&(t=ui(t,i)),this.Io(t,i)}Zo(t,i,n){this.jo();const s=this.$o(),e=u(this.ar()),r=e.Je(),h=e.Qe(),a=this.Ho()-1,l=this.zo(),o=a/(h-r),_=void 0===n?0:n.from,c=void 0===n?t.length:n.to,d=this.Go();for(let n=_;n<c;n++){const e=t[n],h=e.Mt;if(isNaN(h))continue;let a=h;null!==d&&(a=d(e.Mt,i));const _=s+o*(a-r),u=l?_:this.ho-1-_;e.ut=u}}Xo(t,i,n){this.jo();const s=this.$o(),e=u(this.ar()),r=e.Je(),h=e.Qe(),a=this.Ho()-1,l=this.zo(),o=a/(h-r),_=void 0===n?0:n.from,c=void 0===n?t.length:n.to,d=this.Go();for(let n=_;n<c;n++){const e=t[n];let h=e.jr,a=e.qr,_=e.Yr,u=e.Kr;null!==d&&(h=d(e.jr,i),a=d(e.qr,i),_=d(e.Yr,i),u=d(e.Kr,i));let c=s+o*(h-r),f=l?c:this.ho-1-c;e.Jo=f,c=s+o*(a-r),f=l?c