@pipsend/charts 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/pipsend-charts.development.mjs +63 -30
- package/dist/pipsend-charts.production.mjs +2 -2
- package/dist/pipsend-charts.standalone.development.js +63 -30
- package/dist/pipsend-charts.standalone.development.mjs +63 -30
- package/dist/pipsend-charts.standalone.production.js +2 -2
- package/dist/pipsend-charts.standalone.production.mjs +2 -2
- package/dist/typings.d.ts +9 -9
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* @license
|
|
3
|
-
* Pipsend Charts v1.
|
|
3
|
+
* Pipsend Charts v1.1.0
|
|
4
4
|
* Copyright (c) 2026 Pipsend
|
|
5
5
|
* Licensed under MIT License
|
|
6
6
|
* Built on TradingView Lightweight Charts™ (Apache 2.0)
|
|
7
7
|
*/
|
|
8
|
-
import{size as t,bindCanvasElementBitmapSizeTo as i,equalSizes as s,tryCreateCanvasRenderingTarget2D as e}from"fancy-canvas";const n={title:"",visible:!0,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 h,r;function a(t,i){const s={0:[],1:[t.lineWidth,t.lineWidth],2:[2*t.lineWidth,2*t.lineWidth],3:[6*t.lineWidth,6*t.lineWidth],4:[t.lineWidth,4*t.lineWidth]}[i];t.setLineDash(s)}function l(t,i,s,e){t.beginPath();const n=t.lineWidth%2?.5:0;t.moveTo(s,i+n),t.lineTo(e,i+n),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 c(t){if(null===t)throw new Error("Value is null");return t}function u(t){return c(_(t))}!function(t){t[t.Simple=0]="Simple",t[t.WithSteps=1]="WithSteps",t[t.Curved=2]="Curved"}(h||(h={})),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"}(r||(r={}));class d{constructor(){this.t=[]}i(t,i,s){const e={h:t,l:i,o:!0===s};this.t.push(e)}_(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,s){const e=[...this.t];this.t=this.t.filter(t=>!t.o),e.forEach(e=>e.h(t,i,s))}v(){return this.t.length>0}m(){this.t=[]}}function f(t,...i){for(const s of i)for(const i in s)void 0!==s[i]&&Object.prototype.hasOwnProperty.call(s,i)&&!["__proto__","constructor","prototype"].includes(i)&&("object"!=typeof s[i]||void 0===t[i]||Array.isArray(s[i])?t[i]=s[i]:f(t[i],s[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 g(t){return"boolean"==typeof t}function w(t){const i=t;if(!i||"object"!=typeof i)return i;let s,e,n;for(e in s=Array.isArray(i)?[]:{},i)i.hasOwnProperty(e)&&(n=i[e],s[e]=n&&"object"==typeof n?w(n):n);return s}function M(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,s){return void 0===i&&(i=S),`${s=void 0!==s?`${s} `:""}${t}px ${i}`}class y{constructor(t){this.M={S:1,P:5,C:NaN,T:"",D:"",V:"",R:"",A:0,F:0,B:0,I:0,L:0},this.O=t}W(){const t=this.M,i=this.$(),s=this.N();return t.C===i&&t.D===s||(t.C=i,t.D=s,t.T=x(i,s),t.I=2.5/12*i,t.A=t.I,t.F=i/12*t.P,t.B=i/12*t.P,t.L=0),t.V=this.U(),t.R=this.H(),this.M}U(){return this.O.W().layout.textColor}H(){return this.O.q()}$(){return this.O.W().layout.fontSize}N(){return this.O.W().layout.fontFamily}}function P(t){return t<0?0:t>255?255:Math.round(t)||0}function C(t){return.199*t[0]+.687*t[1]+.114*t[2]}class T{constructor(t,i){this.Y=new Map,this.j=t,i&&(this.Y=i)}G(t,i){if("transparent"===t)return t;const s=this.K(t),e=s[3];return`rgba(${s[0]}, ${s[1]}, ${s[2]}, ${i*e})`}J(t){const i=this.K(t);return{X:`rgb(${i[0]}, ${i[1]}, ${i[2]})`,Z:C(i)>160?"black":"white"}}tt(t){return C(this.K(t))}it(t,i,s){const[e,n,h,r]=this.K(t),[a,l,o,_]=this.K(i),c=[P(e+s*(a-e)),P(n+s*(l-n)),P(h+s*(o-h)),(u=r+s*(_-r),u<=0||u>1?Math.min(Math.max(u,0),1):Math.round(1e4*u)/1e4)];var u;return`rgba(${c[0]}, ${c[1]}, ${c[2]}, ${c[3]})`}K(t){const i=this.Y.get(t);if(i)return i;const s=function(t){const i=document.createElement("div");i.style.display="none",document.body.appendChild(i),i.style.color=t;const s=window.getComputedStyle(i).color;return document.body.removeChild(i),s}(t),e=s.match(/^rgba?\s*\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d*\.?\d+))?\)$/);if(!e){if(this.j.length)for(const i of this.j){const s=i(t);if(s)return this.Y.set(t,s),s}throw new Error(`Failed to parse color: ${t}`)}const n=[parseInt(e[1],10),parseInt(e[2],10),parseInt(e[3],10),e[4]?parseFloat(e[4]):1];return this.Y.set(t,n),n}}class k{constructor(){this.st=[]}et(t){this.st=t}nt(t,i,s){this.st.forEach(e=>{e.nt(t,i,s)})}}class D{nt(t,i,s){t.useBitmapCoordinateSpace(t=>this.ht(t,i,s))}}class V extends D{constructor(){super(...arguments),this.rt=null}lt(t){this.rt=t}ht({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.rt||null===this.rt.ot)return;const e=this.rt.ot,n=this.rt,h=Math.max(1,Math.floor(i))%2/2,r=r=>{t.beginPath();for(let a=e.to-1;a>=e.from;--a){const e=n._t[a],l=Math.round(e.ct*i)+h,o=e.ut*s,_=r*s+h;t.moveTo(l,o),t.arc(l,o,_,0,2*Math.PI)}t.fill()};n.dt>0&&(t.fillStyle=n.ft,r(n.vt+n.dt)),t.fillStyle=n.gt,r(n.vt)}}function R(){return{_t:[{ct:0,ut:0,wt:0,Mt:0}],gt:"",ft:"",vt:0,dt:0,ot:null}}const E={from:0,to:1};class A{constructor(t,i,s){this.bt=new k,this.St=[],this.xt=[],this.yt=!0,this.O=t,this.Pt=i,this.Ct=s,this.bt.et(this.St)}Tt(t){this.kt(),this.yt=!0}Dt(){return this.yt&&(this.Vt(),this.yt=!1),this.bt}kt(){const t=this.Ct.Rt();t.length!==this.St.length&&(this.xt=t.map(R),this.St=this.xt.map(t=>{const i=new V;return i.lt(t),i}),this.bt.et(this.St))}Vt(){const t=2===this.Pt.W().mode||!this.Pt.Et(),i=this.Ct.At(),s=this.Pt.Ft(),e=this.O.Bt();this.kt(),i.forEach((i,n)=>{const h=this.xt[n],r=i.It(s),a=i.Lt();!t&&null!==r&&i.Et()&&null!==a?(h.gt=r.zt,h.vt=r.vt,h.dt=r.Ot,h._t[0].Mt=r.Mt,h._t[0].ut=i.$t().Wt(r.Mt,a.Nt),h.ft=r.Ut??this.O.Ht(h._t[0].ut/i.$t().qt()),h._t[0].wt=s,h._t[0].ct=e.Yt(s),h.ot=E):h.ot=null})}}class F extends D{constructor(t){super(),this.jt=t}ht({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:e}){if(null===this.jt)return;const n=this.jt.Gt.Et,h=this.jt.Kt.Et;if(!n&&!h)return;const r=Math.round(this.jt.ct*s),o=Math.round(this.jt.ut*e);t.lineCap="butt",n&&r>=0&&(t.lineWidth=Math.floor(this.jt.Gt.dt*s),t.strokeStyle=this.jt.Gt.V,t.fillStyle=this.jt.Gt.V,a(t,this.jt.Gt.Jt),function(t,i,s,e){t.beginPath();const n=t.lineWidth%2?.5:0;t.moveTo(i+n,s),t.lineTo(i+n,e),t.stroke()}(t,r,0,i.height)),h&&o>=0&&(t.lineWidth=Math.floor(this.jt.Kt.dt*e),t.strokeStyle=this.jt.Kt.V,t.fillStyle=this.jt.Kt.V,a(t,this.jt.Kt.Jt),l(t,o,0,i.width))}}class B{constructor(t,i){this.yt=!0,this.Xt={Gt:{dt:1,Jt:0,V:"",Et:!1},Kt:{dt:1,Jt:0,V:"",Et:!1},ct:0,ut:0},this.Zt=new F(this.Xt),this.Qt=t,this.Ct=i}Tt(){this.yt=!0}Dt(t){return this.yt&&(this.Vt(),this.yt=!1),this.Zt}Vt(){const t=this.Qt.Et(),i=this.Ct.ti().W().crosshair,s=this.Xt;if(2===i.mode)return s.Kt.Et=!1,void(s.Gt.Et=!1);s.Kt.Et=t&&this.Qt.ii(this.Ct),s.Gt.Et=t&&this.Qt.si(),s.Kt.dt=i.horzLine.width,s.Kt.Jt=i.horzLine.style,s.Kt.V=i.horzLine.color,s.Gt.dt=i.vertLine.width,s.Gt.Jt=i.vertLine.style,s.Gt.V=i.vertLine.color,s.ct=this.Qt.ei(),s.ut=this.Qt.ni()}}function I(t,i,s,e,n,h){t.fillRect(i+h,s,e-2*h,h),t.fillRect(i+h,s+n-h,e-2*h,h),t.fillRect(i,s,h,n),t.fillRect(i+e-h,s,h,n)}function L(t,i,s,e,n,h){t.save(),t.globalCompositeOperation="copy",t.fillStyle=h,t.fillRect(i,s,e,n),t.restore()}function z(t,i,s,e,n,h){t.beginPath(),t.roundRect?t.roundRect(i,s,e,n,h):(t.lineTo(i+e-h[1],s),0!==h[1]&&t.arcTo(i+e,s,i+e,s+h[1],h[1]),t.lineTo(i+e,s+n-h[2]),0!==h[2]&&t.arcTo(i+e,s+n,i+e-h[2],s+n,h[2]),t.lineTo(i+h[3],s+n),0!==h[3]&&t.arcTo(i,s+n,i,s+n-h[3],h[3]),t.lineTo(i,s+h[0]),0!==h[0]&&t.arcTo(i,s,i+h[0],s,h[0]))}function O(t,i,s,e,n,h,r=0,a=[0,0,0,0],l=""){if(t.save(),!r||!l||l===h)return z(t,i,s,e,n,a),t.fillStyle=h,t.fill(),void t.restore();const o=r/2;var _;z(t,i+o,s+o,e-r,n-r,(_=-o,a.map(t=>0===t?t:t+_))),"transparent"!==h&&(t.fillStyle=h,t.fill()),"transparent"!==l&&(t.lineWidth=r,t.strokeStyle=l,t.closePath(),t.stroke()),t.restore()}function W(t,i,s,e,n,h,r){t.save(),t.globalCompositeOperation="copy";const a=t.createLinearGradient(0,0,0,n);a.addColorStop(0,h),a.addColorStop(1,r),t.fillStyle=a,t.fillRect(i,s,e,n),t.restore()}class ${constructor(t,i){this.lt(t,i)}lt(t,i){this.jt=t,this.hi=i}qt(t,i){return this.jt.Et?t.C+t.I+t.A:0}nt(t,i,s,e){if(!this.jt.Et||0===this.jt.ri.length)return;const n=this.jt.V,h=this.hi.X,r=t.useBitmapCoordinateSpace(t=>{const r=t.context;r.font=i.T;const a=this.ai(t,i,s,e),l=a.li;return a.oi?O(r,l._i,l.ci,l.ui,l.di,h,l.fi,[l.vt,0,0,l.vt],h):O(r,l.pi,l.ci,l.ui,l.di,h,l.fi,[0,l.vt,l.vt,0],h),this.jt.mi&&(r.fillStyle=n,r.fillRect(l.pi,l.gi,l.wi-l.pi,l.Mi)),this.jt.bi&&(r.fillStyle=i.R,r.fillRect(a.oi?l.Si-l.fi:0,l.ci,l.fi,l.xi-l.ci)),a});t.useMediaCoordinateSpace(({context:t})=>{const s=r.yi;t.font=i.T,t.textAlign=r.oi?"right":"left",t.textBaseline="middle",t.fillStyle=n,t.fillText(this.jt.ri,s.Pi,(s.ci+s.xi)/2+s.Ci)})}ai(t,i,s,e){const{context:n,bitmapSize:h,mediaSize:r,horizontalPixelRatio:a,verticalPixelRatio:l}=t,o=this.jt.mi||!this.jt.Ti?i.P:0,_=this.jt.ki?i.S:0,c=i.I+this.hi.Di,u=i.A+this.hi.Vi,d=i.F,f=i.B,p=this.jt.ri,v=i.C,m=s.Ri(n,p),g=Math.ceil(s.Ei(n,p)),w=v+c+u,M=i.S+d+f+g+o,b=Math.max(1,Math.floor(l));let S=Math.round(w*l);S%2!=b%2&&(S+=1);const x=_>0?Math.max(1,Math.floor(_*a)):0,y=Math.round(M*a),P=Math.round(o*a),C=this.hi.Ai??this.hi.Fi,T=Math.round(C*l)-Math.floor(.5*l),k=Math.floor(T+b/2-S/2),D=k+S,V="right"===e,R=V?r.width-_:_,E=V?h.width-x:x;let A,F,B;return V?(A=E-y,F=E-P,B=R-o-d-_):(A=E+y,F=E+P,B=R+o+d),{oi:V,li:{ci:k,gi:T,xi:D,ui:y,di:S,vt:2*a,fi:x,_i:A,pi:E,wi:F,Mi:b,Si:h.width},yi:{ci:k/l,xi:D/l,Pi:B,Ci:m}}}}class N{constructor(t){this.Bi={Fi:0,X:"#000",Vi:0,Di:0},this.Ii={ri:"",Et:!1,mi:!0,Ti:!1,Ut:"",V:"#FFF",bi:!1,ki:!1},this.Li={ri:"",Et:!1,mi:!1,Ti:!0,Ut:"",V:"#FFF",bi:!0,ki:!0},this.yt=!0,this.zi=new(t||$)(this.Ii,this.Bi),this.Oi=new(t||$)(this.Li,this.Bi)}ri(){return this.Wi(),this.Ii.ri}Fi(){return this.Wi(),this.Bi.Fi}Tt(){this.yt=!0}qt(t,i=!1){return Math.max(this.zi.qt(t,i),this.Oi.qt(t,i))}$i(){return this.Bi.Ai||0}Ni(t){this.Bi.Ai=t}Ui(){return this.Wi(),this.Ii.Et||this.Li.Et}Hi(){return this.Wi(),this.Ii.Et}Dt(t){return this.Wi(),this.Ii.mi=this.Ii.mi&&t.W().ticksVisible,this.Li.mi=this.Li.mi&&t.W().ticksVisible,this.zi.lt(this.Ii,this.Bi),this.Oi.lt(this.Li,this.Bi),this.zi}qi(){return this.Wi(),this.zi.lt(this.Ii,this.Bi),this.Oi.lt(this.Li,this.Bi),this.Oi}Wi(){this.yt&&(this.Ii.mi=!0,this.Li.mi=!1,this.Yi(this.Ii,this.Li,this.Bi))}}class U extends N{constructor(t,i,s){super(),this.Qt=t,this.ji=i,this.Gi=s}Yi(t,i,s){if(t.Et=!1,2===this.Qt.W().mode)return;const e=this.Qt.W().horzLine;if(!e.labelVisible)return;const n=this.ji.Lt();if(!this.Qt.Et()||this.ji.Ki()||null===n)return;const h=this.ji.Ji().J(e.labelBackgroundColor);s.X=h.X,t.V=h.Z;const r=2/12*this.ji.C();s.Di=r,s.Vi=r;const a=this.Gi(this.ji);s.Fi=a.Fi,t.ri=this.ji.Xi(a.Mt,n),t.Et=!0}}const H=/[1-9]/g;class q{constructor(){this.jt=null}lt(t){this.jt=t}nt(t,i){if(null===this.jt||!1===this.jt.Et||0===this.jt.ri.length)return;const s=t.useMediaCoordinateSpace(({context:t})=>(t.font=i.T,Math.round(i.Zi.Ei(t,c(this.jt).ri,H))));if(s<=0)return;const e=i.Qi,n=s+2*e,h=n/2,r=this.jt.ts;let a=this.jt.Fi,l=Math.floor(a-h)+.5;l<0?(a+=Math.abs(0-l),l=Math.floor(a-h)+.5):l+n>r&&(a-=Math.abs(r-(l+n)),l=Math.floor(a-h)+.5);const o=l+n,_=Math.ceil(0+i.S+i.P+i.I+i.C+i.A);t.useBitmapCoordinateSpace(({context:t,horizontalPixelRatio:s,verticalPixelRatio:e})=>{const n=c(this.jt);t.fillStyle=n.X;const h=Math.round(l*s),r=Math.round(0*e),a=Math.round(o*s),u=Math.round(_*e),d=Math.round(2*s);if(t.beginPath(),t.moveTo(h,r),t.lineTo(h,u-d),t.arcTo(h,u,h+d,u,d),t.lineTo(a-d,u),t.arcTo(a,u,a,u-d,d),t.lineTo(a,r),t.fill(),n.mi){const h=Math.round(n.Fi*s),a=r,l=Math.round((a+i.P)*e);t.fillStyle=n.V;const o=Math.max(1,Math.floor(s)),_=Math.floor(.5*s);t.fillRect(h-_,a,o,l-a)}}),t.useMediaCoordinateSpace(({context:t})=>{const s=c(this.jt),n=0+i.S+i.P+i.I+i.C/2;t.font=i.T,t.textAlign="left",t.textBaseline="middle",t.fillStyle=s.V;const h=i.Zi.Ri(t,"Apr0");t.translate(l+e,n+h),t.fillText(s.ri,0,0)})}}class Y{constructor(t,i,s){this.yt=!0,this.Zt=new q,this.Xt={Et:!1,X:"#4c525e",V:"white",ri:"",ts:0,Fi:NaN,mi:!0},this.Pt=t,this.ss=i,this.Gi=s}Tt(){this.yt=!0}Dt(){return this.yt&&(this.Vt(),this.yt=!1),this.Zt.lt(this.Xt),this.Zt}Vt(){const t=this.Xt;if(t.Et=!1,2===this.Pt.W().mode)return;const i=this.Pt.W().vertLine;if(!i.labelVisible)return;const s=this.ss.Bt();if(s.Ki())return;t.ts=s.ts();const e=this.Gi();if(null===e)return;t.Fi=e.Fi;const n=s.es(this.Pt.Ft());t.ri=s.ns(c(n)),t.Et=!0;const h=this.ss.Ji().J(i.labelBackgroundColor);t.X=h.X,t.V=h.Z,t.mi=s.W().ticksVisible}}class j{constructor(){this.hs=null,this.rs=0}ls(){return this.rs}_s(t){this.rs=t}$t(){return this.hs}cs(t){this.hs=t}us(t){return[]}ds(){return[]}Et(){return!0}}var G;!function(t){t[t.Normal=0]="Normal",t[t.Magnet=1]="Magnet",t[t.Hidden=2]="Hidden",t[t.MagnetOHLC=3]="MagnetOHLC"}(G||(G={}));class K extends j{constructor(t,i){super(),this.Ct=null,this.fs=NaN,this.ps=0,this.vs=!1,this.gs=new Map,this.ws=!1,this.Ms=new WeakMap,this.bs=new WeakMap,this.Ss=NaN,this.xs=NaN,this.ys=NaN,this.Ps=NaN,this.ss=t,this.Cs=i;this.Ts=((t,i)=>s=>{const e=i(),n=t();if(s===c(this.Ct).ks())return{Mt:n,Fi:e};{const t=c(s.Lt());return{Mt:s.Ds(e,t),Fi:e}}})(()=>this.fs,()=>this.xs);const s=((t,i)=>()=>{const s=this.ss.Bt().Vs(t()),e=i();return s&&Number.isFinite(e)?{wt:s,Fi:e}:null})(()=>this.ps,()=>this.ei());this.Rs=new Y(this,t,s)}W(){return this.Cs}Es(t,i){this.ys=t,this.Ps=i}As(){this.ys=NaN,this.Ps=NaN}Fs(){return this.ys}Bs(){return this.Ps}Is(t,i,s){this.ws||(this.ws=!0),this.vs=!0,this.Ls(t,i,s)}Ft(){return this.ps}ei(){return this.Ss}ni(){return this.xs}Et(){return this.vs}zs(){this.vs=!1,this.Os(),this.fs=NaN,this.Ss=NaN,this.xs=NaN,this.Ct=null,this.As(),this.Ws()}$s(t){let i=this.Ms.get(t);i||(i=new B(this,t),this.Ms.set(t,i));let s=this.bs.get(t);return s||(s=new A(this.ss,this,t),this.bs.set(t,s)),[i,s]}ii(t){return t===this.Ct&&this.Cs.horzLine.visible}si(){return this.Cs.vertLine.visible}Ns(t,i){this.vs&&this.Ct===t||this.gs.clear();const s=[];return this.Ct===t&&s.push(this.Us(this.gs,i,this.Ts)),s}ds(){return this.vs?[this.Rs]:[]}Hs(){return this.Ct}Ws(){this.ss.qs().forEach(t=>{this.Ms.get(t)?.Tt(),this.bs.get(t)?.Tt()}),this.gs.forEach(t=>t.Tt()),this.Rs.Tt()}Ys(t){return t&&!t.ks().Ki()?t.ks():null}Ls(t,i,s){this.js(t,i,s)&&this.Ws()}js(t,i,s){const e=this.Ss,n=this.xs,h=this.fs,r=this.ps,a=this.Ct,l=this.Ys(s);this.ps=t,this.Ss=isNaN(t)?NaN:this.ss.Bt().Yt(t),this.Ct=s;const o=null!==l?l.Lt():null;return null!==l&&null!==o?(this.fs=i,this.xs=l.Wt(i,o)):(this.fs=NaN,this.xs=NaN),e!==this.Ss||n!==this.xs||r!==this.ps||h!==this.fs||a!==this.Ct}Os(){const t=this.ss.Gs().map(t=>t.Js().Ks()).filter(M),i=0===t.length?null:Math.max(...t);this.ps=null!==i?i:NaN}Us(t,i,s){let e=t.get(i);return void 0===e&&(e=new U(this,i,s),t.set(i,e)),e}}function J(t){return"left"===t||"right"===t}class X{constructor(t){this.Xs=new Map,this.Zs=[],this.Qs=t}te(t,i){const s=function(t,i){return void 0===t?i:{ie:Math.max(t.ie,i.ie),se:t.se||i.se}}(this.Xs.get(t),i);this.Xs.set(t,s)}ee(){return this.Qs}ne(t){const i=this.Xs.get(t);return void 0===i?{ie:this.Qs}:{ie:Math.max(this.Qs,i.ie),se:i.se}}he(){this.re(),this.Zs=[{ae:0}]}le(t){this.re(),this.Zs=[{ae:1,Nt:t}]}oe(t){this._e(),this.Zs.push({ae:5,Nt:t})}re(){this._e(),this.Zs.push({ae:6})}ce(){this.re(),this.Zs=[{ae:4}]}ue(t){this.re(),this.Zs.push({ae:2,Nt:t})}de(t){this.re(),this.Zs.push({ae:3,Nt:t})}fe(){return this.Zs}pe(t){for(const i of t.Zs)this.ve(i);this.Qs=Math.max(this.Qs,t.Qs),t.Xs.forEach((t,i)=>{this.te(i,t)})}static me(){return new X(2)}static ge(){return new X(3)}ve(t){switch(t.ae){case 0:this.he();break;case 1:this.le(t.Nt);break;case 2:this.ue(t.Nt);break;case 3:this.de(t.Nt);break;case 4:this.ce();break;case 5:this.oe(t.Nt);break;case 6:this._e()}}_e(){const t=this.Zs.findIndex(t=>5===t.ae);-1!==t&&this.Zs.splice(t,1)}}class Z{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 Z{constructor(t,i){if(super(),i||(i=1),p(t)&&v(t)||(t=100),t<0)throw new TypeError("invalid base");this.ji=t,this.we=i,this.Me()}format(t){const i=t<0?"−":"";return t=Math.abs(t),i+this.be(t)}Me(){if(this.Se=0,this.ji>0&&this.we>0){let t=this.ji;for(;t>1;)t/=10,this.Se++}}be(t){const i=this.ji/this.we;let s=Math.floor(t),e="";const n=void 0!==this.Se?this.Se:NaN;if(i>1){let h=+(Math.round(t*i)-s*i).toFixed(this.Se);h>=i&&(h-=i,s+=1),e=Q+tt(+h.toFixed(this.Se)*this.we,n)}else s=Math.round(s*i)/i,n>0&&(e=Q+tt(0,n));return s.toFixed(0)+e}}class st extends it{constructor(t=100){super(t)}format(t){return`${super.format(t)}%`}}class et extends Z{constructor(t){super(),this.xe=t}format(t){let i="";return t<0&&(i="-",t=-t),t<995?i+this.ye(t):t<999995?i+this.ye(t/1e3)+"K":t<999999995?(t=1e3*Math.round(t/1e3),i+this.ye(t/1e6)+"M"):(t=1e6*Math.round(t/1e6),i+this.ye(t/1e9)+"B")}ye(t){let i;const s=Math.pow(10,this.xe);return i=(t=Math.round(t*s)/s)>=1e-15&&t<1?t.toFixed(this.xe).replace(/\.?0+$/,""):String(t),i.replace(/(\.[1-9]*)0+$/,(t,i)=>i)}}const nt=/[2-9]/g;class ht{constructor(t=50){this.Pe=0,this.Ce=1,this.Te=1,this.ke={},this.De=new Map,this.Ve=t}Re(){this.Pe=0,this.De.clear(),this.Ce=1,this.Te=1,this.ke={}}Ei(t,i,s){return this.Ee(t,i,s).width}Ri(t,i,s){const e=this.Ee(t,i,s);return((e.actualBoundingBoxAscent||0)-(e.actualBoundingBoxDescent||0))/2}Ee(t,i,s){const e=s||nt,n=String(i).replace(e,"0");if(this.De.has(n))return _(this.De.get(n)).Ae;if(this.Pe===this.Ve){const t=this.ke[this.Te];delete this.ke[this.Te],this.De.delete(t),this.Te++,this.Pe--}t.save(),t.textBaseline="middle";const h=t.measureText(n);return t.restore(),0===h.width&&i.length||(this.De.set(n,{Ae:h,Fe:this.Ce}),this.ke[this.Ce]=n,this.Pe++,this.Ce++),h}}class rt{constructor(t){this.Be=null,this.M=null,this.Ie="right",this.Le=t}ze(t,i,s){this.Be=t,this.M=i,this.Ie=s}nt(t){null!==this.M&&null!==this.Be&&this.Be.nt(t,this.M,this.Le,this.Ie)}}class at{constructor(t,i,s){this.Oe=t,this.Le=new ht(50),this.We=i,this.O=s,this.$=-1,this.Zt=new rt(this.Le)}Dt(){const t=this.O.$e(this.We);if(null===t)return null;const i=t.Ne(this.We)?t.Ue():this.We.$t();if(null===i)return null;const s=t.He(i);if("overlay"===s)return null;const e=this.O.qe();return e.C!==this.$&&(this.$=e.C,this.Le.Re()),this.Zt.ze(this.Oe.qi(),e,s),this.Zt}}class lt extends D{constructor(){super(...arguments),this.jt=null}lt(t){this.jt=t}Ye(t,i){if(!this.jt?.Et)return null;const{ut:s,dt:e,je:n}=this.jt;return i>=s-e-7&&i<=s+e+7?{Ge:this.jt,je:n}:null}ht({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:e}){if(null===this.jt)return;if(!1===this.jt.Et)return;const n=Math.round(this.jt.ut*e);n<0||n>i.height||(t.lineCap="butt",t.strokeStyle=this.jt.V,t.lineWidth=Math.floor(this.jt.dt*s),a(t,this.jt.Jt),l(t,n,0,i.width))}}class ot{constructor(t){this.Ke={ut:0,V:"rgba(0, 0, 0, 0)",dt:1,Jt:0,Et:!1},this.Je=new lt,this.yt=!0,this.Xe=t,this.Ze=t.ti(),this.Je.lt(this.Ke)}Tt(){this.yt=!0}Dt(){return this.Xe.Et()?(this.yt&&(this.Qe(),this.yt=!1),this.Je):null}}class _t extends ot{constructor(t){super(t)}Qe(){this.Ke.Et=!1;const t=this.Xe.$t(),i=t.tn().tn;if(2!==i&&3!==i)return;const s=this.Xe.W();if(!s.baseLineVisible||!this.Xe.Et())return;const e=this.Xe.Lt();null!==e&&(this.Ke.Et=!0,this.Ke.ut=t.Wt(e.Nt,e.Nt),this.Ke.V=s.baseLineColor,this.Ke.dt=s.baseLineWidth,this.Ke.Jt=s.baseLineStyle)}}class ct extends D{constructor(){super(...arguments),this.jt=null}lt(t){this.jt=t}sn(){return this.jt}ht({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){const e=this.jt;if(null===e)return;const n=Math.max(1,Math.floor(i)),h=n%2/2,r=Math.round(e.en.x*i)+h,a=e.en.y*s;t.fillStyle=e.nn,t.beginPath();const l=Math.max(2,1.5*e.hn)*i;t.arc(r,a,l,0,2*Math.PI,!1),t.fill(),t.fillStyle=e.rn,t.beginPath(),t.arc(r,a,e.vt*i,0,2*Math.PI,!1),t.fill(),t.lineWidth=n,t.strokeStyle=e.an,t.beginPath(),t.arc(r,a,e.vt*i+n/2,0,2*Math.PI,!1),t.stroke()}}const ut=[{ln:0,_n:.25,cn:4,un:10,dn:.25,fn:0,pn:.4,vn:.8},{ln:.25,_n:.525,cn:10,un:14,dn:0,fn:0,pn:.8,vn:0},{ln:.525,_n:1,cn:14,un:14,dn:0,fn:0,pn:0,vn:0}];class dt{constructor(t){this.Zt=new ct,this.yt=!0,this.mn=!0,this.gn=performance.now(),this.wn=this.gn-1,this.Mn=t}bn(){this.wn=this.gn-1,this.Tt()}Sn(){if(this.Tt(),2===this.Mn.W().lastPriceAnimation){const t=performance.now(),i=this.wn-t;if(i>0)return void(i<650&&(this.wn+=2600));this.gn=t,this.wn=t+2600}}Tt(){this.yt=!0}xn(){this.mn=!0}Et(){return 0!==this.Mn.W().lastPriceAnimation}yn(){switch(this.Mn.W().lastPriceAnimation){case 0:return!1;case 1:return!0;case 2:return performance.now()<=this.wn}}Dt(){return this.yt?(this.Vt(),this.yt=!1,this.mn=!1):this.mn&&(this.Pn(),this.mn=!1),this.Zt}Vt(){this.Zt.lt(null);const t=this.Mn.ti().Bt(),i=t.Cn(),s=this.Mn.Lt();if(null===i||null===s)return;const e=this.Mn.Tn(!0);if(e.kn||!i.Dn(e.Vn))return;const n={x:t.Yt(e.Vn),y:this.Mn.$t().Wt(e.Mt,s.Nt)},h=e.V,r=this.Mn.W().lineWidth,a=this.Rn(this.En(),h);this.Zt.lt({nn:h,hn:r,rn:a.rn,an:a.an,vt:a.vt,en:n})}Pn(){const t=this.Zt.sn();if(null!==t){const i=this.Rn(this.En(),t.nn);t.rn=i.rn,t.an=i.an,t.vt=i.vt}}En(){return this.yn()?performance.now()-this.gn:2599}An(t,i,s,e){const n=s+(e-s)*i;return this.Mn.ti().Ji().G(t,n)}Rn(t,i){const s=t%2600/2600;let e;for(const t of ut)if(s>=t.ln&&s<=t._n){e=t;break}o(void 0!==e,"Last price animation internal logic error");const n=(s-e.ln)/(e._n-e.ln);return{rn:this.An(i,n,e.dn,e.fn),an:this.An(i,n,e.pn,e.vn),vt:(h=n,r=e.cn,a=e.un,r+(a-r)*h)};var h,r,a}}class ft extends ot{constructor(t){super(t)}Qe(){const t=this.Ke;t.Et=!1;const i=this.Xe.W();if(!i.priceLineVisible||!this.Xe.Et())return;const s=this.Xe.Tn(0===i.priceLineSource);s.kn||(t.Et=!0,t.ut=s.Fi,t.V=this.Xe.Fn(s.V),t.dt=i.priceLineWidth,t.Jt=i.priceLineStyle)}}class pt extends N{constructor(t){super(),this.Qt=t}Yi(t,i,s){t.Et=!1,i.Et=!1;const e=this.Qt;if(!e.Et())return;const n=e.W(),h=n.lastValueVisible,r=""!==e.Bn(),a=0===n.seriesLastValueMode,l=e.Tn(!1);if(l.kn)return;h&&(t.ri=this.In(l,h,a),t.Et=0!==t.ri.length),(r||a)&&(i.ri=this.Ln(l,h,r,a),i.Et=i.ri.length>0);const o=e.Fn(l.V),_=this.Qt.ti().Ji().J(o);s.X=_.X,s.Fi=l.Fi,i.Ut=e.ti().Ht(l.Fi/e.$t().qt()),t.Ut=o,t.V=_.Z,i.V=_.Z}Ln(t,i,s,e){let n="";const h=this.Qt.Bn();return s&&0!==h.length&&(n+=`${h} `),i&&e&&(n+=this.Qt.$t().zn()?t.On:t.Wn),n.trim()}In(t,i,s){return i?s?this.Qt.$t().zn()?t.Wn:t.On:t.ri:""}}function vt(t,i,s,e){const n=Number.isFinite(i),h=Number.isFinite(s);return n&&h?t(i,s):n||h?n?i:s:e}class mt{constructor(t,i){this.$n=t,this.Nn=i}Un(t){return null!==t&&(this.$n===t.$n&&this.Nn===t.Nn)}Hn(){return new mt(this.$n,this.Nn)}qn(){return this.$n}Yn(){return this.Nn}jn(){return this.Nn-this.$n}Ki(){return this.Nn===this.$n||Number.isNaN(this.Nn)||Number.isNaN(this.$n)}pe(t){return null===t?this:new mt(vt(Math.min,this.qn(),t.qn(),-1/0),vt(Math.max,this.Yn(),t.Yn(),1/0))}Gn(t){if(!p(t))return;if(0===this.Nn-this.$n)return;const i=.5*(this.Nn+this.$n);let s=this.Nn-i,e=this.$n-i;s*=t,e*=t,this.Nn=i+s,this.$n=i+e}Kn(t){p(t)&&(this.Nn+=t,this.$n+=t)}Jn(){return{minValue:this.$n,maxValue:this.Nn}}static Xn(t){return null===t?null:new mt(t.minValue,t.maxValue)}}class gt{constructor(t,i){this.Zn=t,this.Qn=i||null}th(){return this.Zn}ih(){return this.Qn}Jn(){return{priceRange:null===this.Zn?null:this.Zn.Jn(),margins:this.Qn||void 0}}static Xn(t){return null===t?null:new gt(mt.Xn(t.priceRange),t.margins)}}class wt extends ot{constructor(t,i){super(t),this.sh=i}Qe(){const t=this.Ke;t.Et=!1;const i=this.sh.W();if(!this.Xe.Et()||!i.lineVisible)return;const s=this.sh.eh();null!==s&&(t.Et=!0,t.ut=s,t.V=i.color,t.dt=i.lineWidth,t.Jt=i.lineStyle,t.je=this.sh.W().id)}}class Mt extends N{constructor(t,i){super(),this.Mn=t,this.sh=i}Yi(t,i,s){t.Et=!1,i.Et=!1;const e=this.sh.W(),n=e.axisLabelVisible,h=""!==e.title,r=this.Mn;if(!n||!r.Et())return;const a=this.sh.eh();if(null===a)return;h&&(i.ri=e.title,i.Et=!0),i.Ut=r.ti().Ht(a/r.$t().qt()),t.ri=this.nh(e.price),t.Et=!0;const l=this.Mn.ti().Ji().J(e.axisLabelColor||e.color);s.X=l.X;const o=e.axisLabelTextColor||l.Z;t.V=o,i.V=o,s.Fi=a}nh(t){const i=this.Mn.Lt();return null===i?"":this.Mn.$t().Xi(t,i.Nt)}}class bt{constructor(t,i){this.Mn=t,this.Cs=i,this.hh=new wt(t,this),this.Oe=new Mt(t,this),this.rh=new at(this.Oe,t,t.ti())}ah(t){f(this.Cs,t),this.Tt(),this.Mn.ti().oh()}W(){return this.Cs}_h(){return this.hh}uh(){return this.rh}dh(){return this.Oe}Tt(){this.hh.Tt(),this.Oe.Tt()}eh(){const t=this.Mn,i=t.$t();if(t.ti().Bt().Ki()||i.Ki())return null;const s=t.Lt();return null===s?null:i.Wt(this.Cs.price,s.Nt)}}class St extends j{constructor(t){super(),this.ss=t}ti(){return this.ss}}const xt={Bar:(t,i,s,e)=>{const n=i.upColor,h=i.downColor,r=c(t(s,e)),a=u(r.Nt[0])<=u(r.Nt[3]);return{fh:r.V??(a?n:h)}},Candlestick:(t,i,s,e)=>{const n=i.upColor,h=i.downColor,r=i.borderUpColor,a=i.borderDownColor,l=i.wickUpColor,o=i.wickDownColor,_=c(t(s,e)),d=u(_.Nt[0])<=u(_.Nt[3]);return{fh:_.V??(d?n:h),ph:_.Ut??(d?r:a),mh:_.gh??(d?l:o)}},Custom:(t,i,s,e)=>({fh:c(t(s,e)).V??i.color}),Area:(t,i,s,e)=>{const n=c(t(s,e));return{fh:n.gt??i.lineColor,gt:n.gt??i.lineColor,wh:n.wh??i.topColor,Mh:n.Mh??i.bottomColor}},Baseline:(t,i,s,e)=>{const n=c(t(s,e));return{fh:n.Nt[3]>=i.baseValue.price?i.topLineColor:i.bottomLineColor,bh:n.bh??i.topLineColor,Sh:n.Sh??i.bottomLineColor,xh:n.xh??i.topFillColor1,yh:n.yh??i.topFillColor2,Ph:n.Ph??i.bottomFillColor1,Ch:n.Ch??i.bottomFillColor2}},Line:(t,i,s,e)=>{const n=c(t(s,e));return{fh:n.V??i.color,gt:n.V??i.color}},Histogram:(t,i,s,e)=>({fh:c(t(s,e)).V??i.color})};class yt{constructor(t){this.Th=(t,i)=>void 0!==i?i.Nt:this.Mn.Js().kh(t),this.Mn=t,this.Dh=xt[t.Vh()]}Rh(t,i){return this.Dh(this.Th,this.Mn.W(),t,i)}}function Pt(t,i,s,e,n=0,h=i.length){let r=h-n;for(;0<r;){const h=r>>1,a=n+h;e(i[a],s)===t?(n=a+1,r-=h+1):r=h}return n}const Ct=Pt.bind(null,!0),Tt=Pt.bind(null,!1);var kt;!function(t){t[t.NearestLeft=-1]="NearestLeft",t[t.None=0]="None",t[t.NearestRight=1]="NearestRight"}(kt||(kt={}));const Dt=30;class Vt{constructor(){this.Eh=[],this.Ah=new Map,this.Fh=new Map,this.Bh=[]}Ih(){return this.Lh()>0?this.Eh[this.Eh.length-1]:null}zh(){return this.Lh()>0?this.Oh(0):null}Ks(){return this.Lh()>0?this.Oh(this.Eh.length-1):null}Lh(){return this.Eh.length}Ki(){return 0===this.Lh()}Dn(t){return null!==this.Wh(t,0)}kh(t){return this.$h(t)}$h(t,i=0){const s=this.Wh(t,i);return null===s?null:{...this.Nh(s),Vn:this.Oh(s)}}Uh(){return this.Eh}Hh(t,i,s){if(this.Ki())return null;let e=null;for(const n of s){e=Rt(e,this.qh(t,i,n))}return e}lt(t){this.Fh.clear(),this.Ah.clear(),this.Eh=t,this.Bh=t.map(t=>t.Vn)}Yh(){return this.Bh}Oh(t){return this.Eh[t].Vn}Nh(t){return this.Eh[t]}Wh(t,i){const s=this.jh(t);if(null===s&&0!==i)switch(i){case-1:return this.Gh(t);case 1:return this.Kh(t);default:throw new TypeError("Unknown search mode")}return s}Gh(t){let i=this.Jh(t);return i>0&&(i-=1),i!==this.Eh.length&&this.Oh(i)<t?i:null}Kh(t){const i=this.Xh(t);return i!==this.Eh.length&&t<this.Oh(i)?i:null}jh(t){const i=this.Jh(t);return i===this.Eh.length||t<this.Eh[i].Vn?null:i}Jh(t){return Ct(this.Eh,t,(t,i)=>t.Vn<i)}Xh(t){return Tt(this.Eh,t,(t,i)=>t.Vn>i)}Zh(t,i,s){let e=null;for(let n=t;n<i;n++){const t=this.Eh[n].Nt[s];Number.isNaN(t)||(null===e?e={Qh:t,tr:t}:(t<e.Qh&&(e.Qh=t),t>e.tr&&(e.tr=t)))}return e}qh(t,i,s){if(this.Ki())return null;let e=null;const n=c(this.zh()),h=c(this.Ks()),r=Math.max(t,n),a=Math.min(i,h),l=Math.ceil(r/Dt)*Dt,o=Math.max(l,Math.floor(a/Dt)*Dt);{const t=this.Jh(r),n=this.Xh(Math.min(a,l,i));e=Rt(e,this.Zh(t,n,s))}let _=this.Ah.get(s);void 0===_&&(_=new Map,this.Ah.set(s,_));for(let t=Math.max(l+1,r);t<o;t+=Dt){const i=Math.floor(t/Dt);let n=_.get(i);if(void 0===n){const t=this.Jh(i*Dt),e=this.Xh((i+1)*Dt-1);n=this.Zh(t,e,s),_.set(i,n)}e=Rt(e,n)}{const t=this.Jh(o),i=this.Xh(a);e=Rt(e,this.Zh(t,i,s))}return e}}function Rt(t,i){if(null===t)return i;if(null===i)return t;return{Qh:Math.min(t.Qh,i.Qh),tr:Math.max(t.tr,i.tr)}}const Et={setLineStyle:a};class At{constructor(t){this.ir=t}nt(t,i,s){this.ir.draw(t,Et)}sr(t,i,s){this.ir.drawBackground?.(t,Et)}}class Ft{constructor(t){this.De=null,this.er=t}Dt(){const t=this.er.renderer();if(null===t)return null;if(this.De?.nr===t)return this.De.hr;const i=new At(t);return this.De={nr:t,hr:i},i}rr(){return this.er.zOrder?.()??"normal"}}class Bt{constructor(t){this.ar=null,this.lr=t}_r(){return this.lr}Ws(){this.lr.updateAllViews?.()}$s(){const t=this.lr.paneViews?.()??[];if(this.ar?.nr===t)return this.ar.hr;const i=t.map(t=>new Ft(t));return this.ar={nr:t,hr:i},i}Ye(t,i){return this.lr.hitTest?.(t,i)??null}}let It=class extends Bt{us(){return[]}};class Lt{constructor(t){this.ir=t}nt(t,i,s){this.ir.draw(t,Et)}sr(t,i,s){this.ir.drawBackground?.(t,Et)}}class zt{constructor(t){this.De=null,this.er=t}Dt(){const t=this.er.renderer();if(null===t)return null;if(this.De?.nr===t)return this.De.hr;const i=new Lt(t);return this.De={nr:t,hr:i},i}rr(){return this.er.zOrder?.()??"normal"}}function Ot(t){return{ri:t.text(),Fi:t.coordinate(),Ai:t.fixedCoordinate?.(),V:t.textColor(),X:t.backColor(),Et:t.visible?.()??!0,mi:t.tickVisible?.()??!0}}class Wt{constructor(t,i){this.Zt=new q,this.cr=t,this.ur=i}Dt(){return this.Zt.lt({ts:this.ur.ts(),...Ot(this.cr)}),this.Zt}}class $t extends N{constructor(t,i){super(),this.cr=t,this.ji=i}Yi(t,i,s){const e=Ot(this.cr);s.X=e.X,t.V=e.V;const n=2/12*this.ji.C();s.Di=n,s.Vi=n,s.Fi=e.Fi,s.Ai=e.Ai,t.ri=e.ri,t.Et=e.Et,t.mi=e.mi}}class Nt extends Bt{constructor(t,i){super(t),this.dr=null,this.pr=null,this.vr=null,this.mr=null,this.Mn=i}ds(){const t=this.lr.timeAxisViews?.()??[];if(this.dr?.nr===t)return this.dr.hr;const i=this.Mn.ti().Bt(),s=t.map(t=>new Wt(t,i));return this.dr={nr:t,hr:s},s}Ns(){const t=this.lr.priceAxisViews?.()??[];if(this.pr?.nr===t)return this.pr.hr;const i=this.Mn.$t(),s=t.map(t=>new $t(t,i));return this.pr={nr:t,hr:s},s}gr(){const t=this.lr.priceAxisPaneViews?.()??[];if(this.vr?.nr===t)return this.vr.hr;const i=t.map(t=>new zt(t));return this.vr={nr:t,hr:i},i}wr(){const t=this.lr.timeAxisPaneViews?.()??[];if(this.mr?.nr===t)return this.mr.hr;const i=t.map(t=>new zt(t));return this.mr={nr:t,hr:i},i}Mr(t,i){return this.lr.autoscaleInfo?.(t,i)??null}}function Ut(t,i,s,e){t.forEach(t=>{i(t).forEach(t=>{t.rr()===s&&e.push(t)})})}function Ht(t){return t.$s()}function qt(t){return t.gr()}function Yt(t){return t.wr()}const jt=["Area","Line","Baseline"];class Gt extends St{constructor(t,i,s,e,n){super(t),this.jt=new Vt,this.hh=new ft(this),this.br=[],this.Sr=new _t(this),this.yr=null,this.Pr=null,this.Cr=null,this.Tr=[],this.Cs=s,this.kr=i;const h=new pt(this);this.gs=[h],this.rh=new at(h,this,t),jt.includes(this.kr)&&(this.yr=new dt(this)),this.Dr(),this.er=e(this,this.ti(),n)}m(){null!==this.Cr&&clearTimeout(this.Cr)}Fn(t){return this.Cs.priceLineColor||t}Tn(t){const i={kn:!0},s=this.$t();if(this.ti().Bt().Ki()||s.Ki()||this.jt.Ki())return i;const e=this.ti().Bt().Cn(),n=this.Lt();if(null===e||null===n)return i;let h,r;if(t){const t=this.jt.Ih();if(null===t)return i;h=t,r=t.Vn}else{const t=this.jt.$h(e.Si(),-1);if(null===t)return i;if(h=this.jt.kh(t.Vn),null===h)return i;r=t.Vn}const a=h.Nt[3],l=this.Vr().Rh(r,{Nt:h}),o=s.Wt(a,n.Nt);return{kn:!1,Mt:a,ri:s.Xi(a,n.Nt),On:s.Rr(a),Wn:s.Er(a,n.Nt),V:l.fh,Fi:o,Vn:r}}Vr(){return null!==this.Pr||(this.Pr=new yt(this)),this.Pr}W(){return this.Cs}ah(t){const i=t.priceScaleId;void 0!==i&&i!==this.Cs.priceScaleId&&this.ti().Ar(this,i),f(this.Cs,t),void 0!==t.priceFormat&&(this.Dr(),this.ti().Fr()),this.ti().Br(this),this.ti().Ir(),this.er.Tt("options")}lt(t,i){this.jt.lt(t),this.er.Tt("data"),null!==this.yr&&(i&&i.Lr?this.yr.Sn():0===t.length&&this.yr.bn());const s=this.ti().$e(this);this.ti().zr(s),this.ti().Br(this),this.ti().Ir(),this.ti().oh()}Or(t){const i=new bt(this,t);return this.br.push(i),this.ti().Br(this),i}Wr(t){const i=this.br.indexOf(t);-1!==i&&this.br.splice(i,1),this.ti().Br(this)}$r(){return this.br}Vh(){return this.kr}Lt(){const t=this.Nr();return null===t?null:{Nt:t.Nt[3],Ur:t.wt}}Nr(){const t=this.ti().Bt().Cn();if(null===t)return null;const i=t.Hr();return this.jt.$h(i,1)}Js(){return this.jt}qr(t){const i=this.jt.kh(t);return null===i?null:"Bar"===this.kr||"Candlestick"===this.kr||"Custom"===this.kr?{Yr:i.Nt[0],jr:i.Nt[1],Gr:i.Nt[2],Kr:i.Nt[3]}:i.Nt[3]}Jr(t){const i=[];Ut(this.Tr,Ht,"top",i);const s=this.yr;return null!==s&&s.Et()?(null===this.Cr&&s.yn()&&(this.Cr=setTimeout(()=>{this.Cr=null,this.ti().Xr()},0)),s.xn(),i.unshift(s),i):i}$s(){const t=[];this.Zr()||t.push(this.Sr),t.push(this.er,this.hh);const i=this.br.map(t=>t._h());return t.push(...i),Ut(this.Tr,Ht,"normal",t),t}Qr(){return this.ta(Ht,"bottom")}ia(t){return this.ta(qt,t)}sa(t){return this.ta(Yt,t)}ea(t,i){return this.Tr.map(s=>s.Ye(t,i)).filter(t=>null!==t)}us(){return[this.rh,...this.br.map(t=>t.uh())]}Ns(t,i){if(i!==this.hs&&!this.Zr())return[];const s=[...this.gs];for(const t of this.br)s.push(t.dh());return this.Tr.forEach(t=>{s.push(...t.Ns())}),s}ds(){const t=[];return this.Tr.forEach(i=>{t.push(...i.ds())}),t}Mr(t,i){if(void 0!==this.Cs.autoscaleInfoProvider){const s=this.Cs.autoscaleInfoProvider(()=>{const s=this.na(t,i);return null===s?null:s.Jn()});return gt.Xn(s)}return this.na(t,i)}nr(){const t=this.Cs.priceFormat;return t.base??1/t.minMove}ha(){return this.ra}Ws(){this.er.Tt();for(const t of this.gs)t.Tt();for(const t of this.br)t.Tt();this.hh.Tt(),this.Sr.Tt(),this.yr?.Tt(),this.Tr.forEach(t=>t.Ws())}$t(){return c(super.$t())}It(t){if(!(("Line"===this.kr||"Area"===this.kr||"Baseline"===this.kr)&&this.Cs.crosshairMarkerVisible))return null;const i=this.jt.kh(t);if(null===i)return null;return{Mt:i.Nt[3],vt:this.aa(),Ut:this.la(),Ot:this.oa(),zt:this._a(t)}}Bn(){return this.Cs.title}Et(){return this.Cs.visible}ca(t){this.Tr.push(new Nt(t,this))}ua(t){this.Tr=this.Tr.filter(i=>i._r()!==t)}da(){if("Custom"===this.kr)return t=>this.er.fa(t)}pa(){if("Custom"===this.kr)return t=>this.er.va(t)}ma(){return this.jt.Yh()}Zr(){return!J(this.$t().ga())}na(t,i){if(!v(t)||!v(i)||this.jt.Ki())return null;const s="Line"===this.kr||"Area"===this.kr||"Baseline"===this.kr||"Histogram"===this.kr?[3]:[2,1],e=this.jt.Hh(t,i,s);let n=null!==e?new mt(e.Qh,e.tr):null,h=null;if("Histogram"===this.Vh()){const t=this.Cs.base,i=new mt(t,t);n=null!==n?n.pe(i):i}return this.Tr.forEach(s=>{const e=s.Mr(t,i);if(e?.priceRange){const t=new mt(e.priceRange.minValue,e.priceRange.maxValue);n=null!==n?n.pe(t):t}e?.margins&&(h=e.margins)}),new gt(n,h)}aa(){switch(this.kr){case"Line":case"Area":case"Baseline":return this.Cs.crosshairMarkerRadius}return 0}la(){switch(this.kr){case"Line":case"Area":case"Baseline":{const t=this.Cs.crosshairMarkerBorderColor;if(0!==t.length)return t}}return null}oa(){switch(this.kr){case"Line":case"Area":case"Baseline":return this.Cs.crosshairMarkerBorderWidth}return 0}_a(t){switch(this.kr){case"Line":case"Area":case"Baseline":{const t=this.Cs.crosshairMarkerBackgroundColor;if(0!==t.length)return t}}return this.Vr().Rh(t).fh}Dr(){switch(this.Cs.priceFormat.type){case"custom":{const t=this.Cs.priceFormat.formatter;this.ra={format:t,formatTickmarks:this.Cs.priceFormat.tickmarksFormatter??(i=>i.map(t))};break}case"volume":this.ra=new et(this.Cs.priceFormat.precision);break;case"percent":this.ra=new st(this.Cs.priceFormat.precision);break;default:{const t=Math.pow(10,this.Cs.priceFormat.precision);this.ra=new it(t,this.Cs.priceFormat.minMove*t)}}null!==this.hs&&this.hs.wa()}ta(t,i){const s=[];return Ut(this.Tr,t,i,s),s}}const Kt=[3],Jt=[0,1,2,3];class Xt{constructor(t){this.Cs=t}Ma(t,i,s){let e=t;if(0===this.Cs.mode)return e;const n=s.ks(),h=n.Lt();if(null===h)return e;const r=n.Wt(t,h),a=s.ba().filter(t=>t instanceof Gt).reduce((t,e)=>{if(s.Ne(e)||!e.Et())return t;const n=e.$t(),h=e.Js();if(n.Ki()||!h.Dn(i))return t;const r=h.kh(i);if(null===r)return t;const a=u(e.Lt()),l=3===this.Cs.mode?Jt:Kt;return t.concat(l.map(t=>n.Wt(r.Nt[t],a.Nt)))},[]);if(0===a.length)return e;a.sort((t,i)=>Math.abs(t-r)-Math.abs(i-r));const l=a[0];return e=n.Ds(l,h),e}}function Zt(t,i,s){return Math.min(Math.max(t,i),s)}function Qt(t,i,s){return i-t<=s}function ti(t){const i=Math.ceil(t);return i%2==0?i-1:i}class ii extends D{constructor(){super(...arguments),this.jt=null}lt(t){this.jt=t}ht({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:e}){if(null===this.jt)return;const n=Math.max(1,Math.floor(s));t.lineWidth=n,function(t,i){t.save(),t.lineWidth%2&&t.translate(.5,.5),i(),t.restore()}(t,()=>{const h=c(this.jt);if(h.Sa){t.strokeStyle=h.xa,a(t,h.ya),t.beginPath();for(const e of h.Pa){const h=Math.round(e.Ca*s);t.moveTo(h,-n),t.lineTo(h,i.height+n)}t.stroke()}if(h.Ta){t.strokeStyle=h.ka,a(t,h.Da),t.beginPath();for(const s of h.Va){const h=Math.round(s.Ca*e);t.moveTo(-n,h),t.lineTo(i.width+n,h)}t.stroke()}})}}class si{constructor(t){this.Zt=new ii,this.yt=!0,this.Ct=t}Tt(){this.yt=!0}Dt(){if(this.yt){const t=this.Ct.ti().W().grid,i={Ta:t.horzLines.visible,Sa:t.vertLines.visible,ka:t.horzLines.color,xa:t.vertLines.color,Da:t.horzLines.style,ya:t.vertLines.style,Va:this.Ct.ks().Ra(),Pa:(this.Ct.ti().Bt().Ra()||[]).map(t=>({Ca:t.coord}))};this.Zt.lt(i),this.yt=!1}return this.Zt}}class ei{constructor(t){this.er=new si(t)}_h(){return this.er}}const ni={Ea:4,Aa:1e-4};function hi(t,i){const s=100*(t-i)/i;return i<0?-s:s}function ri(t,i){const s=hi(t.qn(),i),e=hi(t.Yn(),i);return new mt(s,e)}function ai(t,i){const s=100*(t-i)/i+100;return i<0?-s:s}function li(t,i){const s=ai(t.qn(),i),e=ai(t.Yn(),i);return new mt(s,e)}function oi(t,i){const s=Math.abs(t);if(s<1e-15)return 0;const e=Math.log10(s+i.Aa)+i.Ea;return t<0?-e:e}function _i(t,i){const s=Math.abs(t);if(s<1e-15)return 0;const e=Math.pow(10,s-i.Ea)-i.Aa;return t<0?-e:e}function ci(t,i){if(null===t)return null;const s=oi(t.qn(),i),e=oi(t.Yn(),i);return new mt(s,e)}function ui(t,i){if(null===t)return null;const s=_i(t.qn(),i),e=_i(t.Yn(),i);return new mt(s,e)}function di(t){if(null===t)return ni;const i=Math.abs(t.Yn()-t.qn());if(i>=1||i<1e-15)return ni;const s=Math.ceil(Math.abs(Math.log10(i))),e=ni.Ea+s;return{Ea:e,Aa:1/Math.pow(10,e)}}class fi{constructor(t,i){if(this.Fa=t,this.Ba=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.Fa))this.Ia=[2,2.5,2];else{this.Ia=[];for(let t=this.Fa;1!==t;){if(t%2==0)this.Ia.push(2),t/=2;else{if(t%5!=0)throw new Error("unexpected base");this.Ia.push(2,2.5),t/=5}if(this.Ia.length>100)throw new Error("something wrong with base")}}}La(t,i,s){const e=0===this.Fa?0:1/this.Fa;let n=Math.pow(10,Math.max(0,Math.ceil(Math.log10(t-i)))),h=0,r=this.Ba[0];for(;;){const t=Qt(n,e,1e-14)&&n>e+1e-14,i=Qt(n,s*r,1e-14),a=Qt(n,1,1e-14);if(!(t&&i&&a))break;n/=r,r=this.Ba[++h%this.Ba.length]}if(n<=e+1e-14&&(n=e),n=Math.max(1,n),this.Ia.length>0&&(a=n,l=1,o=1e-14,Math.abs(a-l)<o))for(h=0,r=this.Ia[0];Qt(n,s*r,1e-14)&&n>e+1e-14;)n/=r,r=this.Ia[++h%this.Ia.length];var a,l,o;return n}}class pi{constructor(t,i,s,e){this.za=[],this.ji=t,this.Fa=i,this.Oa=s,this.Wa=e}La(t,i){if(t<i)throw new Error("high < low");const s=this.ji.qt(),e=(t-i)*this.$a()/s,n=new fi(this.Fa,[2,2.5,2]),h=new fi(this.Fa,[2,2,2.5]),r=new fi(this.Fa,[2.5,2,2]),a=[];return a.push(n.La(t,i,e),h.La(t,i,e),r.La(t,i,e)),function(t){if(t.length<1)throw Error("array is empty");let i=t[0];for(let s=1;s<t.length;++s)t[s]<i&&(i=t[s]);return i}(a)}Na(){const t=this.ji,i=t.Lt();if(null===i)return void(this.za=[]);const s=t.qt(),e=this.Oa(s-1,i),n=this.Oa(0,i),h=this.ji.W().entireTextOnly?this.Ua()/2:0,r=h,a=s-1-h,l=Math.max(e,n),o=Math.min(e,n);if(l===o)return void(this.za=[]);const _=this.La(l,o);if(this.Ha(i,_,l,o,r,a),t.qa()&&this.Ya(_,o,l)){const t=this.ji.ja();this.Ga(i,_,r,a,t,2*t)}const c=this.za.map(t=>t.Ka),u=this.ji.Ja(c);for(let t=0;t<this.za.length;t++)this.za[t].Xa=u[t]}Ra(){return this.za}Ua(){return this.ji.C()}$a(){return Math.ceil(2.5*this.Ua())}Ha(t,i,s,e,n,h){const r=this.za,a=this.ji;let l=s%i;l+=l<0?i:0;const o=s>=e?1:-1;let _=null,c=0;for(let u=s-l;u>e;u-=i){const s=this.Wa(u,t,!0);null!==_&&Math.abs(s-_)<this.$a()||(s<n||s>h||(c<r.length?(r[c].Ca=s,r[c].Xa=a.Za(u),r[c].Ka=u):r.push({Ca:s,Xa:a.Za(u),Ka:u}),c++,_=s,a.Qa()&&(i=this.La(u*o,e))))}r.length=c}Ga(t,i,s,e,n,h){const r=this.za,a=this.tl(t,s,n,h),l=this.tl(t,e,-h,-n),o=this.Wa(0,t,!0)-this.Wa(i,t,!0);r.length>0&&r[0].Ca-a.Ca<o/2&&r.shift(),r.length>0&&l.Ca-r[r.length-1].Ca<o/2&&r.pop(),r.unshift(a),r.push(l)}tl(t,i,s,e){const n=(s+e)/2,h=this.Oa(i+s,t),r=this.Oa(i+e,t),a=Math.min(h,r),l=Math.max(h,r),o=Math.max(.1,this.La(l,a)),_=this.Oa(i+n,t),c=_-_%o,u=this.Wa(c,t,!0);return{Xa:this.ji.Za(c),Ca:u,Ka:c}}Ya(t,i,s){let e=u(this.ji.th());return this.ji.Qa()&&(e=ui(e,this.ji.il())),e.qn()-i<t&&s-e.Yn()<t}}function vi(t){return t.slice().sort((t,i)=>c(t.ls())-c(i.ls()))}var mi;!function(t){t[t.Normal=0]="Normal",t[t.Logarithmic=1]="Logarithmic",t[t.Percentage=2]="Percentage",t[t.IndexedTo100=3]="IndexedTo100"}(mi||(mi={}));const gi=new st,wi=new it(100,1);class Mi{constructor(t,i,s,e,n){this.sl=0,this.el=null,this.Zn=null,this.nl=null,this.hl={rl:!1,al:null},this.ll=!1,this.ol=0,this._l=0,this.cl=new d,this.ul=new d,this.dl=[],this.fl=null,this.pl=null,this.vl=null,this.ml=null,this.gl=null,this.ra=wi,this.wl=di(null),this.Ml=t,this.Cs=i,this.bl=s,this.Sl=e,this.xl=n,this.yl=new pi(this,100,this.Pl.bind(this),this.Cl.bind(this))}ga(){return this.Ml}W(){return this.Cs}ah(t){if(f(this.Cs,t),this.wa(),void 0!==t.mode&&this.Tl({tn:t.mode}),void 0!==t.scaleMargins){const i=_(t.scaleMargins.top),s=_(t.scaleMargins.bottom);if(i<0||i>1)throw new Error(`Invalid top margin - expect value between 0 and 1, given=${i}`);if(s<0||s>1)throw new Error(`Invalid bottom margin - expect value between 0 and 1, given=${s}`);if(i+s>1)throw new Error(`Invalid margins - sum of margins must be less than 1, given=${i+s}`);this.kl(),this.vl=null}}Dl(){return this.Cs.autoScale}Vl(){return this.ll}Qa(){return 1===this.Cs.mode}zn(){return 2===this.Cs.mode}Rl(){return 3===this.Cs.mode}il(){return this.wl}tn(){return{se:this.Cs.autoScale,El:this.Cs.invertScale,tn:this.Cs.mode}}Tl(t){const i=this.tn();let s=null;void 0!==t.se&&(this.Cs.autoScale=t.se),void 0!==t.tn&&(this.Cs.mode=t.tn,2!==t.tn&&3!==t.tn||(this.Cs.autoScale=!0),this.hl.rl=!1),1===i.tn&&t.tn!==i.tn&&(!function(t,i){if(null===t)return!1;const s=_i(t.qn(),i),e=_i(t.Yn(),i);return isFinite(s)&&isFinite(e)}(this.Zn,this.wl)?this.Cs.autoScale=!0:(s=ui(this.Zn,this.wl),null!==s&&this.Al(s))),1===t.tn&&t.tn!==i.tn&&(s=ci(this.Zn,this.wl),null!==s&&this.Al(s));const e=i.tn!==this.Cs.mode;e&&(2===i.tn||this.zn())&&this.wa(),e&&(3===i.tn||this.Rl())&&this.wa(),void 0!==t.El&&i.El!==t.El&&(this.Cs.invertScale=t.El,this.Fl()),this.ul.p(i,this.tn())}Bl(){return this.ul}C(){return this.bl.fontSize}qt(){return this.sl}Il(t){this.sl!==t&&(this.sl=t,this.kl(),this.vl=null)}Ll(){if(this.el)return this.el;const t=this.qt()-this.zl()-this.Ol();return this.el=t,t}th(){return this.Wl(),this.Zn}Al(t,i){const s=this.Zn;(i||null===s&&null!==t||null!==s&&!s.Un(t))&&(this.vl=null,this.Zn=t)}$l(t){this.Al(t),this.Nl(null!==t)}Ki(){return this.Wl(),0===this.sl||!this.Zn||this.Zn.Ki()}Ul(t){return this.El()?t:this.qt()-1-t}Wt(t,i){return this.zn()?t=hi(t,i):this.Rl()&&(t=ai(t,i)),this.Cl(t,i)}Hl(t,i,s){this.Wl();const e=this.Ol(),n=c(this.th()),h=n.qn(),r=n.Yn(),a=this.Ll()-1,l=this.El(),o=a/(r-h),_=void 0===s?0:s.from,u=void 0===s?t.length:s.to,d=this.ql();for(let s=_;s<u;s++){const n=t[s],r=n.Mt;if(isNaN(r))continue;let a=r;null!==d&&(a=d(n.Mt,i));const _=e+o*(a-h),c=l?_:this.sl-1-_;n.ut=c}}Yl(t,i,s){this.Wl();const e=this.Ol(),n=c(this.th()),h=n.qn(),r=n.Yn(),a=this.Ll()-1,l=this.El(),o=a/(r-h),_=void 0===s?0:s.from,u=void 0===s?t.length:s.to,d=this.ql();for(let s=_;s<u;s++){const n=t[s];let r=n.Yr,a=n.jr,_=n.Gr,c=n.Kr;null!==d&&(r=d(n.Yr,i),a=d(n.jr,i),_=d(n.Gr,i),c=d(n.Kr,i));let u=e+o*(r-h),f=l?u:this.sl-1-u;n.jl=f,u=e+o*(a-h),f=l?u:this.sl-1-u,n.Gl=f,u=e+o*(_-h),f=l?u:this.sl-1-u,n.Kl=f,u=e+o*(c-h),f=l?u:this.sl-1-u,n.Jl=f}}Ds(t,i){const s=this.Pl(t,i);return this.Xl(s,i)}Xl(t,i){let s=t;return this.zn()?s=function(t,i){return i<0&&(t=-t),t/100*i+i}(s,i):this.Rl()&&(s=function(t,i){return t-=100,i<0&&(t=-t),t/100*i+i}(s,i)),s}ba(){return this.dl}Rt(){return this.pl||(this.pl=vi(this.dl)),this.pl}Zl(t){-1===this.dl.indexOf(t)&&(this.dl.push(t),this.wa(),this.Ql())}io(t){const i=this.dl.indexOf(t);if(-1===i)throw new Error("source is not attached to scale");this.dl.splice(i,1),0===this.dl.length&&(this.Tl({se:!0}),this.Al(null)),this.wa(),this.Ql()}Lt(){let t=null;for(const i of this.dl){const s=i.Lt();null!==s&&((null===t||s.Ur<t.Ur)&&(t=s))}return null===t?null:t.Nt}El(){return this.Cs.invertScale}Ra(){const t=null===this.Lt();if(null!==this.vl&&(t||this.vl.so===t))return this.vl.Ra;this.yl.Na();const i=this.yl.Ra();return this.vl={Ra:i,so:t},this.cl.p(),i}eo(){return this.cl}no(t){this.zn()||this.Rl()||null===this.ml&&null===this.nl&&(this.Ki()||(this.ml=this.sl-t,this.nl=c(this.th()).Hn()))}ho(t){if(this.zn()||this.Rl())return;if(null===this.ml)return;this.Tl({se:!1}),(t=this.sl-t)<0&&(t=0);let i=(this.ml+.2*(this.sl-1))/(t+.2*(this.sl-1));const s=c(this.nl).Hn();i=Math.max(i,.1),s.Gn(i),this.Al(s)}ro(){this.zn()||this.Rl()||(this.ml=null,this.nl=null)}ao(t){this.Dl()||null===this.gl&&null===this.nl&&(this.Ki()||(this.gl=t,this.nl=c(this.th()).Hn()))}lo(t){if(this.Dl())return;if(null===this.gl)return;const i=c(this.th()).jn()/(this.Ll()-1);let s=t-this.gl;this.El()&&(s*=-1);const e=s*i,n=c(this.nl).Hn();n.Kn(e),this.Al(n,!0),this.vl=null}oo(){this.Dl()||null!==this.gl&&(this.gl=null,this.nl=null)}ha(){return this.ra||this.wa(),this.ra}Xi(t,i){switch(this.Cs.mode){case 2:return this._o(hi(t,i));case 3:return this.ha().format(ai(t,i));default:return this.nh(t)}}Za(t){switch(this.Cs.mode){case 2:return this._o(t);case 3:return this.ha().format(t);default:return this.nh(t)}}Ja(t){switch(this.Cs.mode){case 2:return this.co(t);case 3:return this.ha().formatTickmarks(t);default:return this.uo(t)}}Rr(t){return this.nh(t,c(this.fl).ha())}Er(t,i){return t=hi(t,i),this._o(t,gi)}do(){return this.dl}fo(t){this.hl={al:t,rl:!1}}Ws(){this.dl.forEach(t=>t.Ws())}qa(){return this.Cs.ensureEdgeTickMarksVisible&&this.Dl()}ja(){return this.C()/2}wa(){this.vl=null;let t=1/0;this.fl=null;for(const i of this.dl)i.ls()<t&&(t=i.ls(),this.fl=i);let i=100;null!==this.fl&&(i=Math.round(this.fl.nr())),this.ra=wi,this.zn()?(this.ra=gi,i=100):this.Rl()?(this.ra=new it(100,1),i=100):null!==this.fl&&(this.ra=this.fl.ha()),this.yl=new pi(this,i,this.Pl.bind(this),this.Cl.bind(this)),this.yl.Na()}Ql(){this.pl=null}po(){return null===this.fl||this.zn()||this.Rl()?1:1/this.fl.nr()}Ji(){return this.xl}Nl(t){this.ll=t}zl(){return this.El()?this.Cs.scaleMargins.bottom*this.qt()+this._l:this.Cs.scaleMargins.top*this.qt()+this.ol}Ol(){return this.El()?this.Cs.scaleMargins.top*this.qt()+this.ol:this.Cs.scaleMargins.bottom*this.qt()+this._l}Wl(){this.hl.rl||(this.hl.rl=!0,this.vo())}kl(){this.el=null}Cl(t,i){if(this.Wl(),this.Ki())return 0;t=this.Qa()&&t?oi(t,this.wl):t;const s=c(this.th()),e=this.Ol()+(this.Ll()-1)*(t-s.qn())/s.jn();return this.Ul(e)}Pl(t,i){if(this.Wl(),this.Ki())return 0;const s=this.Ul(t),e=c(this.th()),n=e.qn()+e.jn()*((s-this.Ol())/(this.Ll()-1));return this.Qa()?_i(n,this.wl):n}Fl(){this.vl=null,this.yl.Na()}vo(){if(this.Vl()&&!this.Dl())return;const t=this.hl.al;if(null===t)return;let i=null;const s=this.do();let e=0,n=0;for(const h of s){if(!h.Et())continue;const s=h.Lt();if(null===s)continue;const r=h.Mr(t.Hr(),t.Si());let a=r&&r.th();if(null!==a){switch(this.Cs.mode){case 1:a=ci(a,this.wl);break;case 2:a=ri(a,s.Nt);break;case 3:a=li(a,s.Nt)}if(i=null===i?a:i.pe(c(a)),null!==r){const t=r.ih();null!==t&&(e=Math.max(e,t.above),n=Math.max(n,t.below))}}}if(this.qa()&&(e=Math.max(e,this.ja()),n=Math.max(n,this.ja())),e===this.ol&&n===this._l||(this.ol=e,this._l=n,this.vl=null,this.kl()),null!==i){if(i.qn()===i.Yn()){const t=5*this.po();this.Qa()&&(i=ui(i,this.wl)),i=new mt(i.qn()-t,i.Yn()+t),this.Qa()&&(i=ci(i,this.wl))}if(this.Qa()){const t=ui(i,this.wl),s=di(t);if(h=s,r=this.wl,h.Ea!==r.Ea||h.Aa!==r.Aa){const e=null!==this.nl?ui(this.nl,this.wl):null;this.wl=s,i=ci(t,s),null!==e&&(this.nl=ci(e,s))}}this.Al(i)}else null===this.Zn&&(this.Al(new mt(-.5,.5)),this.wl=di(null));var h,r}ql(){return this.zn()?hi:this.Rl()?ai:this.Qa()?t=>oi(t,this.wl):null}mo(t,i,s){return void 0===i?(void 0===s&&(s=this.ha()),s.format(t)):i(t)}wo(t,i,s){return void 0===i?(void 0===s&&(s=this.ha()),s.formatTickmarks(t)):i(t)}nh(t,i){return this.mo(t,this.Sl.priceFormatter,i)}uo(t,i){const s=this.Sl.priceFormatter;return this.wo(t,this.Sl.tickmarksPriceFormatter??(s?t=>t.map(s):void 0),i)}_o(t,i){return this.mo(t,this.Sl.percentageFormatter,i)}co(t,i){const s=this.Sl.percentageFormatter;return this.wo(t,this.Sl.tickmarksPercentageFormatter??(s?t=>t.map(s):void 0),i)}}function bi(t){return t instanceof Gt}class Si{constructor(t,i){this.dl=[],this.Mo=new Map,this.sl=0,this.bo=0,this.So=1,this.pl=null,this.xo=!1,this.yo=new d,this.Tr=[],this.ur=t,this.ss=i,this.Po=new ei(this);const s=i.W();this.Co=this.To("left",s.leftPriceScale),this.ko=this.To("right",s.rightPriceScale),this.Co.Bl().i(this.Do.bind(this,this.Co),this),this.ko.Bl().i(this.Do.bind(this,this.ko),this),this.Vo(s)}Vo(t){if(t.leftPriceScale&&this.Co.ah(t.leftPriceScale),t.rightPriceScale&&this.ko.ah(t.rightPriceScale),t.localization&&(this.Co.wa(),this.ko.wa()),t.overlayPriceScales){const i=Array.from(this.Mo.values());for(const s of i){const i=c(s[0].$t());i.ah(t.overlayPriceScales),t.localization&&i.wa()}}}Ro(t){switch(t){case"left":return this.Co;case"right":return this.ko}return this.Mo.has(t)?_(this.Mo.get(t))[0].$t():null}m(){this.ti().Eo().u(this),this.Co.Bl().u(this),this.ko.Bl().u(this),this.dl.forEach(t=>{t.m&&t.m()}),this.Tr=this.Tr.filter(t=>{const i=t._r();return i.detached&&i.detached(),!1}),this.yo.p()}Ao(){return this.So}Fo(t){this.So=t}ti(){return this.ss}ts(){return this.bo}qt(){return this.sl}Bo(t){this.bo=t,this.Io()}Il(t){this.sl=t,this.Co.Il(t),this.ko.Il(t),this.dl.forEach(i=>{if(this.Ne(i)){const s=i.$t();null!==s&&s.Il(t)}}),this.Io()}Lo(t){this.xo=t}zo(){return this.xo}Oo(){return this.dl.filter(bi)}ba(){return this.dl}Ne(t){const i=t.$t();return null===i||this.Co!==i&&this.ko!==i}Zl(t,i,s){this.Wo(t,i,s?t.ls():this.dl.length)}io(t,i){const s=this.dl.indexOf(t);o(-1!==s,"removeDataSource: invalid data source"),this.dl.splice(s,1),i||this.dl.forEach((t,i)=>t._s(i));const e=c(t.$t()).ga();if(this.Mo.has(e)){const i=_(this.Mo.get(e)),s=i.indexOf(t);-1!==s&&(i.splice(s,1),0===i.length&&this.Mo.delete(e))}const n=t.$t();n&&n.ba().indexOf(t)>=0&&(n.io(t),this.$o(n)),this.pl=null}He(t){return t===this.Co?"left":t===this.ko?"right":"overlay"}No(){return this.Co}Uo(){return this.ko}Ho(t,i){t.no(i)}qo(t,i){t.ho(i),this.Io()}Yo(t){t.ro()}jo(t,i){t.ao(i)}Go(t,i){t.lo(i),this.Io()}Ko(t){t.oo()}Io(){this.dl.forEach(t=>{t.Ws()})}ks(){let t=null;return this.ss.W().rightPriceScale.visible&&0!==this.ko.ba().length?t=this.ko:this.ss.W().leftPriceScale.visible&&0!==this.Co.ba().length?t=this.Co:0!==this.dl.length&&(t=this.dl[0].$t()),null===t&&(t=this.ko),t}Ue(){let t=null;return this.ss.W().rightPriceScale.visible?t=this.ko:this.ss.W().leftPriceScale.visible&&(t=this.Co),t}$o(t){null!==t&&t.Dl()&&this.Jo(t)}Xo(t){const i=this.ur.Cn();t.Tl({se:!0}),null!==i&&t.fo(i),this.Io()}Zo(){this.Jo(this.Co),this.Jo(this.ko)}Qo(){this.$o(this.Co),this.$o(this.ko),this.dl.forEach(t=>{this.Ne(t)&&this.$o(t.$t())}),this.Io(),this.ss.oh()}Rt(){return null===this.pl&&(this.pl=vi(this.dl)),this.pl}t_(t,i){i=Zt(i,0,this.dl.length-1);const s=this.dl.indexOf(t);o(-1!==s,"setSeriesOrder: invalid data source"),this.dl.splice(s,1),this.dl.splice(i,0,t),this.dl.forEach((t,i)=>t._s(i)),this.pl=null;for(const t of[this.Co,this.ko])t.Ql(),t.wa();this.ss.oh()}At(){return this.Rt().filter(bi)}i_(){return this.yo}s_(){return this.Po}ca(t){this.Tr.push(new It(t))}ua(t){this.Tr=this.Tr.filter(i=>i._r()!==t),t.detached&&t.detached(),this.ss.oh()}e_(){return this.Tr}ea(t,i){return this.Tr.map(s=>s.Ye(t,i)).filter(t=>null!==t)}Jo(t){const i=t.do();if(i&&i.length>0&&!this.ur.Ki()){const i=this.ur.Cn();null!==i&&t.fo(i)}t.Ws()}Wo(t,i,s){let e=this.Ro(i);if(null===e&&(e=this.To(i,this.ss.W().overlayPriceScales)),this.dl.splice(s,0,t),!J(i)){const s=this.Mo.get(i)||[];s.push(t),this.Mo.set(i,s)}t._s(s),e.Zl(t),t.cs(e),this.$o(e),this.pl=null}Do(t,i,s){i.tn!==s.tn&&this.Jo(t)}To(t,i){const s={visible:!0,autoScale:!0,...w(i)},e=new Mi(t,s,this.ss.W().layout,this.ss.W().localization,this.ss.Ji());return e.Il(this.qt()),e}}function xi(t,i){return!i||"top"===t&&"top"!==i||"normal"===t&&"bottom"===i}function yi(t){return{n_:t.n_,h_:{je:t.r_.externalId},a_:t.r_.cursorStyle}}function Pi(t,i,s,e){for(const n of t){const t=n.Dt(e);if(null!==t&&t.Ye){const e=t.Ye(i,s);if(null!==e)return{l_:n,h_:e}}}return null}function Ci(t){return void 0!==t.$s}function Ti(t,i,s){const e=[t,...t.Rt()],n=function(t,i,s){let e,n;for(const h of t){const t=h.ea?.(i,s)??[];for(const i of t)xi(i.zOrder,e?.zOrder)&&(e=i,n=h)}return e&&n?{r_:e,n_:n}:null}(e,i,s);if("top"===n?.r_.zOrder)return yi(n);for(const h of e){if(n&&n.n_===h&&"bottom"!==n.r_.zOrder&&!n.r_.isBackground)return yi(n);if(Ci(h)){const e=Pi(h.$s(t),i,s,t);if(null!==e)return{n_:h,l_:e.l_,h_:e.h_}}if(n&&n.n_===h&&"bottom"!==n.r_.zOrder&&n.r_.isBackground)return yi(n)}return n?.r_?yi(n):null}class ki{constructor(t,i,s=50){this.Pe=0,this.Ce=1,this.Te=1,this.De=new Map,this.ke=new Map,this.o_=t,this.__=i,this.Ve=s}c_(t){const i=t.time,s=this.__.cacheKey(i),e=this.De.get(s);if(void 0!==e)return e.u_;if(this.Pe===this.Ve){const t=this.ke.get(this.Te);this.ke.delete(this.Te),this.De.delete(_(t)),this.Te++,this.Pe--}const n=this.o_(t);return this.De.set(s,{u_:n,Fe:this.Ce}),this.ke.set(this.Ce,s),this.Pe++,this.Ce++,n}}class Di{constructor(t,i){o(t<=i,"right should be >= left"),this.d_=t,this.f_=i}Hr(){return this.d_}Si(){return this.f_}p_(){return this.f_-this.d_+1}Dn(t){return this.d_<=t&&t<=this.f_}Un(t){return this.d_===t.Hr()&&this.f_===t.Si()}}function Vi(t,i){return null===t||null===i?t===i:t.Un(i)}class Ri{constructor(){this.v_=new Map,this.De=null,this.m_=!1}g_(t){this.m_=t,this.De=null}w_(t,i){this.M_(i),this.De=null;for(let s=i;s<t.length;++s){const i=t[s];let e=this.v_.get(i.timeWeight);void 0===e&&(e=[],this.v_.set(i.timeWeight,e)),e.push({index:s,time:i.time,weight:i.timeWeight,originalTime:i.originalTime})}}b_(t,i,s,e,n){const h=Math.ceil(i/t);return null!==this.De&&this.De.S_===h&&n===this.De.x_&&s===this.De.y_||(this.De={x_:n,y_:s,Ra:this.P_(h,s,e),S_:h}),this.De.Ra}M_(t){if(0===t)return void this.v_.clear();const i=[];this.v_.forEach((s,e)=>{t<=s[0].index?i.push(e):s.splice(Ct(s,t,i=>i.index<t),1/0)});for(const t of i)this.v_.delete(t)}P_(t,i,s){let e=[];const n=t=>!i||s.has(t.index);for(const i of Array.from(this.v_.keys()).sort((t,i)=>i-t)){if(!this.v_.get(i))continue;const s=e;e=[];const h=s.length;let r=0;const a=_(this.v_.get(i)),l=a.length;let o=1/0,c=-1/0;for(let i=0;i<l;i++){const l=a[i],_=l.index;for(;r<h;){const t=s[r],i=t.index;if(!(i<_&&n(t))){o=i;break}r++,e.push(t),c=i,o=1/0}if(o-_>=t&&_-c>=t&&n(l))e.push(l),c=_;else if(this.m_)return s}for(;r<h;r++)n(s[r])&&e.push(s[r])}return e}}class Ei{constructor(t){this.C_=t}T_(){return null===this.C_?null:new Di(Math.floor(this.C_.Hr()),Math.ceil(this.C_.Si()))}k_(){return this.C_}static D_(){return new Ei(null)}}function Ai(t,i){return t.weight>i.weight?t:i}class Fi{constructor(t,i,s,e){this.bo=0,this.V_=null,this.R_=[],this.gl=null,this.ml=null,this.E_=new Ri,this.A_=new Map,this.F_=Ei.D_(),this.B_=!0,this.I_=new d,this.L_=new d,this.z_=new d,this.O_=null,this.W_=null,this.N_=new Map,this.U_=-1,this.H_=[],this.Cs=i,this.Sl=s,this.q_=i.rightOffset,this.Y_=i.barSpacing,this.ss=t,this.j_(i),this.__=e,this.G_(),this.E_.g_(i.uniformDistribution),this.K_()}W(){return this.Cs}J_(t){f(this.Sl,t),this.X_(),this.G_()}ah(t,i){f(this.Cs,t),this.Cs.fixLeftEdge&&this.Z_(),this.Cs.fixRightEdge&&this.Q_(),void 0!==t.barSpacing&&this.ss.ue(t.barSpacing),void 0!==t.rightOffset&&this.ss.de(t.rightOffset),this.j_(t),void 0===t.minBarSpacing&&void 0===t.maxBarSpacing||this.ss.ue(t.barSpacing??this.Y_),void 0!==t.ignoreWhitespaceIndices&&t.ignoreWhitespaceIndices!==this.Cs.ignoreWhitespaceIndices&&this.K_(),this.X_(),this.G_(),this.z_.p()}Vs(t){return this.R_[t]?.time??null}es(t){return this.R_[t]??null}tc(t,i){if(this.R_.length<1)return null;if(this.__.key(t)>this.__.key(this.R_[this.R_.length-1].time))return i?this.R_.length-1:null;const s=Ct(this.R_,this.__.key(t),(t,i)=>this.__.key(t.time)<i);return this.__.key(t)<this.__.key(this.R_[s].time)?i?s:null:s}Ki(){return 0===this.bo||0===this.R_.length||null===this.V_}sc(){return this.R_.length>0}Cn(){return this.ec(),this.F_.T_()}nc(){return this.ec(),this.F_.k_()}hc(){const t=this.Cn();if(null===t)return null;const i={from:t.Hr(),to:t.Si()};return this.rc(i)}rc(t){const i=Math.round(t.from),s=Math.round(t.to),e=c(this.ac()),n=c(this.lc());return{from:c(this.es(Math.max(e,i))),to:c(this.es(Math.min(n,s)))}}oc(t){return{from:c(this.tc(t.from,!0)),to:c(this.tc(t.to,!0))}}ts(){return this.bo}Bo(t){if(!isFinite(t)||t<=0)return;if(this.bo===t)return;const i=this.nc(),s=this.bo;if(this.bo=t,this.B_=!0,this.Cs.lockVisibleTimeRangeOnResize&&0!==s){const i=this.Y_*t/s;this.Y_=i}if(this.Cs.fixLeftEdge&&null!==i&&i.Hr()<=0){const i=s-t;this.q_-=Math.round(i/this.Y_)+1,this.B_=!0}this._c(),this.cc()}Yt(t){if(this.Ki()||!v(t))return 0;const i=this.uc()+this.q_-t;return this.bo-(i+.5)*this.Y_-1}dc(t,i){const s=this.uc(),e=void 0===i?0:i.from,n=void 0===i?t.length:i.to;for(let i=e;i<n;i++){const e=t[i].wt,n=s+this.q_-e,h=this.bo-(n+.5)*this.Y_-1;t[i].ct=h}}fc(t,i){const s=Math.ceil(this.vc(t));return i&&this.Cs.ignoreWhitespaceIndices&&!this.mc(s)?this.gc(s):s}de(t){this.B_=!0,this.q_=t,this.cc(),this.ss.wc(),this.ss.oh()}Mc(){return this.Y_}ue(t){const i=this.Y_;if(this.bc(t),void 0!==this.Cs.rightOffsetPixels&&0!==i){const t=this.q_*i/this.Y_;this.q_=t}this.cc(),this.ss.wc(),this.ss.oh()}Sc(){return this.q_}Ra(){if(this.Ki())return null;if(null!==this.W_)return this.W_;const t=this.Y_,i=5*(this.ss.W().layout.fontSize+4)/8*(this.Cs.tickMarkMaxCharacterLength||8),s=Math.round(i/t),e=c(this.Cn()),n=Math.max(e.Hr(),e.Hr()-s),h=Math.max(e.Si(),e.Si()-s),r=this.E_.b_(t,i,this.Cs.ignoreWhitespaceIndices,this.N_,this.U_),a=this.ac()+s,l=this.lc()-s,o=this.xc(),_=this.Cs.fixLeftEdge||o,u=this.Cs.fixRightEdge||o;let d=0;for(const t of r){if(!(n<=t.index&&t.index<=h))continue;let s;d<this.H_.length?(s=this.H_[d],s.coord=this.Yt(t.index),s.label=this.yc(t),s.weight=t.weight):(s={needAlignCoordinate:!1,coord:this.Yt(t.index),label:this.yc(t),weight:t.weight},this.H_.push(s)),this.Y_>i/2&&!o?s.needAlignCoordinate=!1:s.needAlignCoordinate=_&&t.index<=a||u&&t.index>=l,d++}return this.H_.length=d,this.W_=this.H_,this.H_}Pc(){let t;this.B_=!0,this.ue(this.Cs.barSpacing),t=void 0!==this.Cs.rightOffsetPixels?this.Cs.rightOffsetPixels/this.Mc():this.Cs.rightOffset,this.de(t)}Cc(t){this.B_=!0,this.V_=t,this.cc(),this.Z_()}Tc(t,i){const s=this.vc(t),e=this.Mc(),n=e+i*(e/10);this.ue(n),this.Cs.rightBarStaysOnScroll||this.de(this.Sc()+(s-this.vc(t)))}no(t){this.gl&&this.oo(),null===this.ml&&null===this.O_&&(this.Ki()||(this.ml=t,this.kc()))}ho(t){if(null===this.O_)return;const i=Zt(this.bo-t,0,this.bo),s=Zt(this.bo-c(this.ml),0,this.bo);0!==i&&0!==s&&this.ue(this.O_.Mc*i/s)}ro(){null!==this.ml&&(this.ml=null,this.Dc())}ao(t){null===this.gl&&null===this.O_&&(this.Ki()||(this.gl=t,this.kc()))}lo(t){if(null===this.gl)return;const i=(this.gl-t)/this.Mc();this.q_=c(this.O_).Sc+i,this.B_=!0,this.cc()}oo(){null!==this.gl&&(this.gl=null,this.Dc())}Vc(){this.Rc(this.Cs.rightOffset)}Rc(t,i=400){if(!isFinite(t))throw new RangeError("offset is required and must be finite number");if(!isFinite(i)||i<=0)throw new RangeError("animationDuration (optional) must be finite positive number");const s=this.q_,e=performance.now();this.ss.oe({Ec:t=>(t-e)/i>=1,Ac:n=>{const h=(n-e)/i;return h>=1?t:s+(t-s)*h}})}Tt(t,i){this.B_=!0,this.R_=t,this.E_.w_(t,i),this.cc()}Fc(){return this.I_}Bc(){return this.L_}Ic(){return this.z_}uc(){return this.V_||0}Lc(t,i){const s=t.p_(),e=i&&this.Cs.rightOffsetPixels||0;this.bc((this.bo-e)/s),this.q_=t.Si()-this.uc(),i&&(this.q_=e?e/this.Mc():this.Cs.rightOffset),this.cc(),this.B_=!0,this.ss.wc(),this.ss.oh()}zc(){const t=this.ac(),i=this.lc();null!==t&&null!==i&&this.Lc(new Di(t,i),!0)}Oc(t){const i=new Di(t.from,t.to);this.Lc(i)}ns(t){return void 0!==this.Sl.timeFormatter?this.Sl.timeFormatter(t.originalTime):this.__.formatHorzItem(t.time)}K_(){if(!this.Cs.ignoreWhitespaceIndices)return;this.N_.clear();const t=this.ss.Gs();for(const i of t)for(const t of i.ma())this.N_.set(t,!0);this.U_++}xc(){const t=this.ss.W().handleScroll,i=this.ss.W().handleScale;return!(t.horzTouchDrag||t.mouseWheel||t.pressedMouseMove||t.vertTouchDrag||i.axisDoubleClickReset.time||i.axisPressedMouseMove.time||i.mouseWheel||i.pinch)}ac(){return 0===this.R_.length?null:0}lc(){return 0===this.R_.length?null:this.R_.length-1}Wc(t){return(this.bo-1-t)/this.Y_}vc(t){const i=this.Wc(t),s=this.uc()+this.q_-i;return Math.round(1e6*s)/1e6}bc(t){const i=this.Y_;this.Y_=t,this._c(),i!==this.Y_&&(this.B_=!0,this.$c())}ec(){if(!this.B_)return;if(this.B_=!1,this.Ki())return void this.Nc(Ei.D_());const t=this.uc(),i=this.bo/this.Y_,s=this.q_+t,e=new Di(s-i+1,s);this.Nc(new Ei(e))}_c(){const t=Zt(this.Y_,this.Uc(),this.Hc());this.Y_!==t&&(this.Y_=t,this.B_=!0)}Hc(){return this.Cs.maxBarSpacing>0?this.Cs.maxBarSpacing:.5*this.bo}Uc(){return this.Cs.fixLeftEdge&&this.Cs.fixRightEdge&&0!==this.R_.length?this.bo/this.R_.length:this.Cs.minBarSpacing}cc(){const t=this.qc();null!==t&&this.q_<t&&(this.q_=t,this.B_=!0);const i=this.Yc();this.q_>i&&(this.q_=i,this.B_=!0)}qc(){const t=this.ac(),i=this.V_;if(null===t||null===i)return null;return t-i-1+(this.Cs.fixLeftEdge?this.bo/this.Y_:Math.min(2,this.R_.length))}Yc(){return this.Cs.fixRightEdge?0:this.bo/this.Y_-Math.min(2,this.R_.length)}kc(){this.O_={Mc:this.Mc(),Sc:this.Sc()}}Dc(){this.O_=null}yc(t){let i=this.A_.get(t.weight);return void 0===i&&(i=new ki(t=>this.jc(t),this.__),this.A_.set(t.weight,i)),i.c_(t)}jc(t){return this.__.formatTickmark(t,this.Sl)}Nc(t){const i=this.F_;this.F_=t,Vi(i.T_(),this.F_.T_())||this.I_.p(),Vi(i.k_(),this.F_.k_())||this.L_.p(),this.$c()}$c(){this.W_=null}X_(){this.$c(),this.A_.clear()}G_(){this.__.updateFormatter(this.Sl)}Z_(){if(!this.Cs.fixLeftEdge)return;const t=this.ac();if(null===t)return;const i=this.Cn();if(null===i)return;const s=i.Hr()-t;if(s<0){const t=this.q_-s-1;this.de(t)}this._c()}Q_(){this.cc(),this._c()}mc(t){return!this.Cs.ignoreWhitespaceIndices||(this.N_.get(t)||!1)}gc(t){const i=function*(t){const i=Math.round(t),s=i<t;let e=1;for(;;)s?(yield i+e,yield i-e):(yield i-e,yield i+e),e++}(t),s=this.lc();for(;s;){const t=i.next().value;if(this.N_.get(t))return t;if(t<0||t>s)break}return t}j_(t){if(void 0!==t.rightOffsetPixels){const i=t.rightOffsetPixels/(t.barSpacing||this.Y_);this.ss.de(i)}}}var Bi,Ii,Li,zi,Oi;!function(t){t[t.OnTouchEnd=0]="OnTouchEnd",t[t.OnNextTap=1]="OnNextTap"}(Bi||(Bi={}));class Wi{constructor(t,i,s){this.Gc=[],this.Kc=[],this.bo=0,this.Jc=null,this.Xc=new d,this.Zc=new d,this.Qc=null,this.tu=t,this.Cs=i,this.__=s,this.xl=new T(this.Cs.layout.colorParsers),this.iu=new y(this),this.ur=new Fi(this,i.timeScale,this.Cs.localization,s),this.Pt=new K(this,i.crosshair),this.su=new Xt(i.crosshair),i.addDefaultPane&&(this.eu(0),this.Gc[0].Fo(2)),this.nu=this.hu(0),this.ru=this.hu(1)}Fr(){this.au(X.ge())}oh(){this.au(X.me())}Xr(){this.au(new X(1))}Br(t){const i=this.lu(t);this.au(i)}ou(){return this.Jc}_u(t){if(this.Jc?.n_===t?.n_&&this.Jc?.h_?.je===t?.h_?.je)return;const i=this.Jc;this.Jc=t,null!==i&&this.Br(i.n_),null!==t&&t.n_!==i?.n_&&this.Br(t.n_)}W(){return this.Cs}ah(t){f(this.Cs,t),this.Gc.forEach(i=>i.Vo(t)),void 0!==t.timeScale&&this.ur.ah(t.timeScale),void 0!==t.localization&&this.ur.J_(t.localization),(t.leftPriceScale||t.rightPriceScale)&&this.Xc.p(),this.nu=this.hu(0),this.ru=this.hu(1),this.Fr()}cu(t,i,s=0){const e=this.Gc[s];if(void 0===e)return;if("left"===t)return f(this.Cs,{leftPriceScale:i}),e.Vo({leftPriceScale:i}),this.Xc.p(),void this.Fr();if("right"===t)return f(this.Cs,{rightPriceScale:i}),e.Vo({rightPriceScale:i}),this.Xc.p(),void this.Fr();const n=this.uu(t,s);null!==n&&(n.$t.ah(i),this.Xc.p())}uu(t,i){const s=this.Gc[i];if(void 0===s)return null;const e=s.Ro(t);return null!==e?{Hs:s,$t:e}:null}Bt(){return this.ur}qs(){return this.Gc}du(){return this.Pt}fu(){return this.Zc}pu(t,i){t.Il(i),this.wc()}Bo(t){this.bo=t,this.ur.Bo(this.bo),this.Gc.forEach(i=>i.Bo(t)),this.wc()}vu(t){1!==this.Gc.length&&(o(t>=0&&t<this.Gc.length,"Invalid pane index"),this.Gc.splice(t,1),this.Fr())}mu(t,i){if(this.Gc.length<2)return;o(t>=0&&t<this.Gc.length,"Invalid pane index");const s=this.Gc[t],e=this.Gc.reduce((t,i)=>t+i.Ao(),0),n=this.Gc.reduce((t,i)=>t+i.qt(),0),h=n-30*(this.Gc.length-1);i=Math.min(h,Math.max(30,i));const r=e/n,a=s.qt();s.Fo(i*r);let l=i-a,_=this.Gc.length-1;for(const t of this.Gc)if(t!==s){const i=Math.min(h,Math.max(30,t.qt()-l/_));l-=t.qt()-i,_-=1;const s=i*r;t.Fo(s)}this.Fr()}gu(t,i){o(t>=0&&t<this.Gc.length&&i>=0&&i<this.Gc.length,"Invalid pane index");const s=this.Gc[t],e=this.Gc[i];this.Gc[t]=e,this.Gc[i]=s,this.Fr()}wu(t,i){if(o(t>=0&&t<this.Gc.length&&i>=0&&i<this.Gc.length,"Invalid pane index"),t===i)return;const[s]=this.Gc.splice(t,1);this.Gc.splice(i,0,s),this.Fr()}Ho(t,i,s){t.Ho(i,s)}qo(t,i,s){t.qo(i,s),this.Ir(),this.au(this.Mu(t,2))}Yo(t,i){t.Yo(i),this.au(this.Mu(t,2))}jo(t,i,s){i.Dl()||t.jo(i,s)}Go(t,i,s){i.Dl()||(t.Go(i,s),this.Ir(),this.au(this.Mu(t,2)))}Ko(t,i){i.Dl()||(t.Ko(i),this.au(this.Mu(t,2)))}Xo(t,i){t.Xo(i),this.au(this.Mu(t,2))}bu(t){this.ur.no(t)}Su(t,i){const s=this.Bt();if(s.Ki()||0===i)return;const e=s.ts();t=Math.max(1,Math.min(t,e)),s.Tc(t,i),this.wc()}xu(t){this.yu(0),this.Pu(t),this.Cu()}Tu(t){this.ur.ho(t),this.wc()}ku(){this.ur.ro(),this.oh()}yu(t){this.ur.ao(t)}Pu(t){this.ur.lo(t),this.wc()}Cu(){this.ur.oo(),this.oh()}Gs(){return this.Kc}Du(t,i,s,e,n){this.Pt.Es(t,i);let h=NaN,r=this.ur.fc(t,!0);const a=this.ur.Cn();null!==a&&(r=Math.min(Math.max(a.Hr(),r),a.Si()));const l=e.ks(),o=l.Lt();if(null!==o&&(h=l.Ds(i,o)),h=this.su.Ma(h,r,e),this.Pt.Is(r,h,e),this.Xr(),!n){const n=Ti(e,t,i);this._u(n&&{n_:n.n_,h_:n.h_,a_:n.a_||null}),this.Zc.p(this.Pt.Ft(),{x:t,y:i},s)}}Vu(t,i,s){const e=s.ks(),n=e.Lt(),h=e.Wt(t,c(n)),r=this.ur.tc(i,!0),a=this.ur.Yt(c(r));this.Du(a,h,null,s,!0)}Ru(t){this.du().zs(),this.Xr(),t||this.Zc.p(null,null,null)}Ir(){const t=this.Pt.Hs();if(null!==t){const i=this.Pt.Fs(),s=this.Pt.Bs();this.Du(i,s,null,t)}this.Pt.Ws()}Eu(t,i,s){const e=this.ur.Vs(0);void 0!==i&&void 0!==s&&this.ur.Tt(i,s);const n=this.ur.Vs(0),h=this.ur.uc(),r=this.ur.Cn();if(null!==r&&null!==e&&null!==n){const i=r.Dn(h),a=this.__.key(e)>this.__.key(n),l=null!==t&&t>h&&!a,o=this.ur.W().allowShiftVisibleRangeOnWhitespaceReplacement,_=i&&(!(void 0===s)||o)&&this.ur.W().shiftVisibleRangeOnNewBar;if(l&&!_){const i=t-h;this.ur.de(this.ur.Sc()-i)}}this.ur.Cc(t)}zr(t){null!==t&&t.Qo()}$e(t){if(function(t){return t instanceof Si}(t))return t;const i=this.Gc.find(i=>i.Rt().includes(t));return void 0===i?null:i}wc(){this.Gc.forEach(t=>t.Qo()),this.Ir()}m(){this.Gc.forEach(t=>t.m()),this.Gc.length=0,this.Cs.localization.priceFormatter=void 0,this.Cs.localization.percentageFormatter=void 0,this.Cs.localization.timeFormatter=void 0}Au(){return this.iu}qe(){return this.iu.W()}Eo(){return this.Xc}Fu(t,i){const s=this.eu(i);this.Bu(t,s),this.Kc.push(t),1===this.Kc.length?this.Fr():this.oh()}Iu(t){const i=this.$e(t),s=this.Kc.indexOf(t);o(-1!==s,"Series not found");const e=c(i);this.Kc.splice(s,1),e.io(t),t.m&&t.m(),this.ur.K_();const n=this.Gc.length;this.Lu(e),this.Gc.length<n&&this.Fr()}Ar(t,i){const s=c(this.$e(t));s.io(t,!0),s.Zl(t,i,!0)}zc(){const t=X.me();t.he(),this.au(t)}zu(t){const i=X.me();i.le(t),this.au(i)}ce(){const t=X.me();t.ce(),this.au(t)}ue(t){const i=X.me();i.ue(t),this.au(i)}de(t){const i=X.me();i.de(t),this.au(i)}oe(t){const i=X.me();i.oe(t),this.au(i)}re(){const t=X.me();t.re(),this.au(t)}Ou(){return this.Cs.rightPriceScale.visible?"right":"left"}Wu(t,i){o(i>=0,"Index should be greater or equal to 0");if(i===this.$u(t))return;const s=c(this.$e(t));s.io(t);const e=this.eu(i);this.Bu(t,e),0===s.ba().length&&this.Lu(s),this.Fr()}Nu(){return this.ru}q(){return this.nu}Ht(t){const i=this.ru,s=this.nu;if(i===s)return i;if(t=Math.max(0,Math.min(100,Math.round(100*t))),null===this.Qc||this.Qc.wh!==s||this.Qc.Mh!==i)this.Qc={wh:s,Mh:i,Uu:new Map};else{const i=this.Qc.Uu.get(t);if(void 0!==i)return i}const e=this.xl.it(s,i,t/100);return this.Qc.Uu.set(t,e),e}Hu(t){return this.Gc.indexOf(t)}Ji(){return this.xl}qu(){return this.Yu()}Yu(t){const i=new Si(this.ur,this);this.Gc.push(i);const s=t??this.Gc.length-1,e=X.ge();return e.te(s,{ie:0,se:!0}),this.au(e),i}eu(t){return o(t>=0,"Index should be greater or equal to 0"),(t=Math.min(this.Gc.length,t))<this.Gc.length?this.Gc[t]:this.Yu(t)}$u(t){return this.Gc.findIndex(i=>i.Oo().includes(t))}Mu(t,i){const s=new X(i);if(null!==t){const e=this.Gc.indexOf(t);s.te(e,{ie:i})}return s}lu(t,i){return void 0===i&&(i=2),this.Mu(this.$e(t),i)}au(t){this.tu&&this.tu(t),this.Gc.forEach(t=>t.s_()._h().Tt())}Bu(t,i){const s=t.W().priceScaleId,e=void 0!==s?s:this.Ou();i.Zl(t,e),J(e)||t.ah(t.W())}hu(t){const i=this.Cs.layout;return"gradient"===i.background.type?0===t?i.background.topColor:i.background.bottomColor:i.background.color}Lu(t){!t.zo()&&0===t.ba().length&&this.Gc.length>1&&this.Gc.splice(this.Hu(t),1)}}function $i(t){if(t>=1)return 0;let i=0;for(;i<8;i++){const s=Math.round(t);if(Math.abs(s-t)<1e-8)return i;t*=10}return i}function Ni(t){return!p(t)&&!m(t)}function Ui(t){return p(t)}!function(t){t[t.Disabled=0]="Disabled",t[t.Continuous=1]="Continuous",t[t.OnDataUpdate=2]="OnDataUpdate"}(Ii||(Ii={})),function(t){t[t.LastBar=0]="LastBar",t[t.LastVisible=1]="LastVisible"}(Li||(Li={})),function(t){t.Solid="solid",t.VerticalGradient="gradient"}(zi||(zi={})),function(t){t[t.Year=0]="Year",t[t.Month=1]="Month",t[t.DayOfMonth=2]="DayOfMonth",t[t.Time=3]="Time",t[t.TimeWithSeconds=4]="TimeWithSeconds"}(Oi||(Oi={}));const Hi=t=>t.getUTCFullYear();function qi(t,i,s){return i.replace(/yyyy/g,(t=>tt(Hi(t),4))(t)).replace(/yy/g,(t=>tt(Hi(t)%100,2))(t)).replace(/MMMM/g,((t,i)=>new Date(t.getUTCFullYear(),t.getUTCMonth(),1).toLocaleString(i,{month:"long"}))(t,s)).replace(/MMM/g,((t,i)=>new Date(t.getUTCFullYear(),t.getUTCMonth(),1).toLocaleString(i,{month:"short"}))(t,s)).replace(/MM/g,(t=>tt((t=>t.getUTCMonth()+1)(t),2))(t)).replace(/dd/g,(t=>tt((t=>t.getUTCDate())(t),2))(t))}class Yi{constructor(t="yyyy-MM-dd",i="default"){this.ju=t,this.Gu=i}c_(t){return qi(t,this.ju,this.Gu)}}class ji{constructor(t){this.Ku=t||"%h:%m:%s"}c_(t){return this.Ku.replace("%h",tt(t.getUTCHours(),2)).replace("%m",tt(t.getUTCMinutes(),2)).replace("%s",tt(t.getUTCSeconds(),2))}}const Gi={Ju:"yyyy-MM-dd",Xu:"%h:%m:%s",Zu:" ",Qu:"default"};class Ki{constructor(t={}){const i={...Gi,...t};this.td=new Yi(i.Ju,i.Qu),this.sd=new ji(i.Xu),this.ed=i.Zu}c_(t){return`${this.td.c_(t)}${this.ed}${this.sd.c_(t)}`}}function Ji(t){return 60*t*60*1e3}function Xi(t){return 60*t*1e3}const Zi=[{nd:(Qi=1,1e3*Qi),hd:10},{nd:Xi(1),hd:20},{nd:Xi(5),hd:21},{nd:Xi(30),hd:22},{nd:Ji(1),hd:30},{nd:Ji(3),hd:31},{nd:Ji(6),hd:32},{nd:Ji(12),hd:33}];var Qi;function ts(t,i){if(t.getUTCFullYear()!==i.getUTCFullYear())return 70;if(t.getUTCMonth()!==i.getUTCMonth())return 60;if(t.getUTCDate()!==i.getUTCDate())return 50;for(let s=Zi.length-1;s>=0;--s)if(Math.floor(i.getTime()/Zi[s].nd)!==Math.floor(t.getTime()/Zi[s].nd))return Zi[s].hd;return 0}function is(t){return t}function ss(t){let i=t;if(m(t)&&(i=ns(t)),!Ni(i))throw new Error("time must be of type BusinessDay");const s=new Date(Date.UTC(i.year,i.month-1,i.day,0,0,0,0));return{rd:Math.round(s.getTime()/1e3),ad:i}}function es(t){if(!Ui(t))throw new Error("time must be of type isUTCTimestamp");return{rd:t}}function ns(t){const i=new Date(t);if(isNaN(i.getTime()))throw new Error(`Invalid date string=${t}, expected format=yyyy-mm-dd`);return{day:i.getUTCDate(),month:i.getUTCMonth()+1,year:i.getUTCFullYear()}}function hs(t){m(t.time)&&(t.time=ns(t.time))}class rs{options(){return this.Cs}setOptions(t){this.Cs=t,this.updateFormatter(t.localization)}preprocessData(t){Array.isArray(t)?function(t){t.forEach(hs)}(t):hs(t)}createConverterToInternalObj(t){return c(function(t){return 0===t.length?null:Ni(t[0].time)||m(t[0].time)?ss:es}(t))}key(t){return"object"==typeof t&&"rd"in t?t.rd:this.key(this.convertHorzItemToInternal(t))}cacheKey(t){const i=t;return void 0===i.ad?new Date(1e3*i.rd).getTime():new Date(Date.UTC(i.ad.year,i.ad.month-1,i.ad.day)).getTime()}convertHorzItemToInternal(t){return Ui(i=t)?es(i):Ni(i)?ss(i):ss(ns(i));var i}updateFormatter(t){if(!this.Cs)return;const i=t.dateFormat;this.Cs.timeScale.timeVisible?this.ld=new Ki({Ju:i,Xu:this.Cs.timeScale.secondsVisible?"%h:%m:%s":"%h:%m",Zu:" ",Qu:t.locale}):this.ld=new Yi(i,t.locale)}formatHorzItem(t){const i=t;return this.ld.c_(new Date(1e3*i.rd))}formatTickmark(t,i){const s=function(t,i,s){switch(t){case 0:case 10:return i?s?4:3:2;case 20:case 21:case 22:case 30:case 31:case 32:case 33:return i?3:2;case 50:return 2;case 60:return 1;case 70:return 0}}(t.weight,this.Cs.timeScale.timeVisible,this.Cs.timeScale.secondsVisible),e=this.Cs.timeScale;if(void 0!==e.tickMarkFormatter){const n=e.tickMarkFormatter(t.originalTime,s,i.locale);if(null!==n)return n}return function(t,i,s){const e={};switch(i){case 0:e.year="numeric";break;case 1:e.month="short";break;case 2:e.day="numeric";break;case 3:e.hour12=!1,e.hour="2-digit",e.minute="2-digit";break;case 4:e.hour12=!1,e.hour="2-digit",e.minute="2-digit",e.second="2-digit"}const n=void 0===t.ad?new Date(1e3*t.rd):new Date(Date.UTC(t.ad.year,t.ad.month-1,t.ad.day));return new Date(n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate(),n.getUTCHours(),n.getUTCMinutes(),n.getUTCSeconds(),n.getUTCMilliseconds()).toLocaleString(s,e)}(t.time,s,i.locale)}maxTickMarkWeight(t){let i=t.reduce(Ai,t[0]).weight;return i>30&&i<50&&(i=30),i}fillWeightsForPoints(t,i){!function(t,i=0){if(0===t.length)return;let s=0===i?null:t[i-1].time.rd,e=null!==s?new Date(1e3*s):null,n=0;for(let h=i;h<t.length;++h){const i=t[h],r=new Date(1e3*is(i.time).rd);null!==e&&(i.timeWeight=ts(r,e)),n+=is(i.time).rd-(s||is(i.time).rd),s=is(i.time).rd,e=r}if(0===i&&t.length>1){const i=Math.ceil(n/(t.length-1)),s=new Date(1e3*(t[0].time.rd-i));t[0].timeWeight=ts(new Date(1e3*t[0].time.rd),s)}}(t,i)}static od(t){return f({localization:{dateFormat:"dd MMM 'yy"}},t??{})}}const as="undefined"!=typeof window;function ls(){return!!as&&window.navigator.userAgent.toLowerCase().indexOf("firefox")>-1}function os(){return!!as&&/iPhone|iPad|iPod/.test(window.navigator.platform)}function _s(t){return t+t%2}function cs(t){as&&void 0!==window.chrome&&t.addEventListener("mousedown",t=>{if(1===t.button)return t.preventDefault(),!1})}class us{constructor(t,i,s){this._d=0,this.ud=null,this.dd={ct:Number.NEGATIVE_INFINITY,ut:Number.POSITIVE_INFINITY},this.fd=0,this.pd=null,this.vd={ct:Number.NEGATIVE_INFINITY,ut:Number.POSITIVE_INFINITY},this.md=null,this.gd=!1,this.wd=null,this.Md=null,this.bd=!1,this.Sd=!1,this.xd=!1,this.yd=null,this.Pd=null,this.Cd=null,this.Td=null,this.kd=null,this.Dd=null,this.Vd=null,this.Rd=0,this.Ed=!1,this.Ad=!1,this.Fd=!1,this.Bd=0,this.Id=null,this.Ld=!os(),this.zd=t=>{this.Od(t)},this.Wd=t=>{if(this.$d(t)){const i=this.Nd(t);if(++this.fd,this.pd&&this.fd>1){const{Ud:s}=this.Hd(ps(t),this.vd);s<30&&!this.xd&&this.qd(i,this.jd.Yd),this.Gd()}}else{const i=this.Nd(t);if(++this._d,this.ud&&this._d>1){const{Ud:s}=this.Hd(ps(t),this.dd);s<5&&!this.Sd&&this.Kd(i,this.jd.Jd),this.Xd()}}},this.Zd=t,this.jd=i,this.Cs=s,this.Qd()}m(){null!==this.yd&&(this.yd(),this.yd=null),null!==this.Pd&&(this.Pd(),this.Pd=null),null!==this.Td&&(this.Td(),this.Td=null),null!==this.kd&&(this.kd(),this.kd=null),null!==this.Dd&&(this.Dd(),this.Dd=null),null!==this.Cd&&(this.Cd(),this.Cd=null),this.tf(),this.Xd()}if(t){this.Td&&this.Td();const i=this.sf.bind(this);if(this.Td=()=>{this.Zd.removeEventListener("mousemove",i)},this.Zd.addEventListener("mousemove",i),this.$d(t))return;const s=this.Nd(t);this.Kd(s,this.jd.ef),this.Ld=!0}Xd(){null!==this.ud&&clearTimeout(this.ud),this._d=0,this.ud=null,this.dd={ct:Number.NEGATIVE_INFINITY,ut:Number.POSITIVE_INFINITY}}Gd(){null!==this.pd&&clearTimeout(this.pd),this.fd=0,this.pd=null,this.vd={ct:Number.NEGATIVE_INFINITY,ut:Number.POSITIVE_INFINITY}}sf(t){if(this.Fd||null!==this.Md)return;if(this.$d(t))return;const i=this.Nd(t);this.Kd(i,this.jd.nf),this.Ld=!0}hf(t){const i=ms(t.changedTouches,c(this.Id));if(null===i)return;if(this.Bd=vs(t),null!==this.Vd)return;if(this.Ad)return;this.Ed=!0;const s=this.Hd(ps(i),c(this.Md)),{rf:e,af:n,Ud:h}=s;if(this.bd||!(h<5)){if(!this.bd){const t=.5*e,i=n>=t&&!this.Cs.lf(),s=t>n&&!this.Cs._f();i||s||(this.Ad=!0),this.bd=!0,this.xd=!0,this.tf(),this.Gd()}if(!this.Ad){const s=this.Nd(t,i);this.qd(s,this.jd.cf),fs(t)}}}uf(t){if(0!==t.button)return;const i=this.Hd(ps(t),c(this.wd)),{Ud:s}=i;if(s>=5&&(this.Sd=!0,this.Xd()),this.Sd){const i=this.Nd(t);this.Kd(i,this.jd.df)}}Hd(t,i){const s=Math.abs(i.ct-t.ct),e=Math.abs(i.ut-t.ut);return{rf:s,af:e,Ud:s+e}}ff(t){let i=ms(t.changedTouches,c(this.Id));if(null===i&&0===t.touches.length&&(i=t.changedTouches[0]),null===i)return;this.Id=null,this.Bd=vs(t),this.tf(),this.Md=null,this.Dd&&(this.Dd(),this.Dd=null);const s=this.Nd(t,i);if(this.qd(s,this.jd.pf),++this.fd,this.pd&&this.fd>1){const{Ud:t}=this.Hd(ps(i),this.vd);t<30&&!this.xd&&this.qd(s,this.jd.Yd),this.Gd()}else this.xd||(this.qd(s,this.jd.vf),this.jd.vf&&fs(t));0===this.fd&&fs(t),0===t.touches.length&&this.gd&&(this.gd=!1,fs(t))}Od(t){if(0!==t.button)return;const i=this.Nd(t);if(this.wd=null,this.Fd=!1,this.kd&&(this.kd(),this.kd=null),ls()){this.Zd.ownerDocument.documentElement.removeEventListener("mouseleave",this.zd)}if(!this.$d(t))if(this.Kd(i,this.jd.mf),++this._d,this.ud&&this._d>1){const{Ud:s}=this.Hd(ps(t),this.dd);s<5&&!this.Sd&&this.Kd(i,this.jd.Jd),this.Xd()}else this.Sd||this.Kd(i,this.jd.gf)}tf(){null!==this.md&&(clearTimeout(this.md),this.md=null)}wf(t){if(null!==this.Id)return;const i=t.changedTouches[0];this.Id=i.identifier,this.Bd=vs(t);const s=this.Zd.ownerDocument.documentElement;this.xd=!1,this.bd=!1,this.Ad=!1,this.Md=ps(i),this.Dd&&(this.Dd(),this.Dd=null);{const i=this.hf.bind(this),e=this.ff.bind(this);this.Dd=()=>{s.removeEventListener("touchmove",i),s.removeEventListener("touchend",e)},s.addEventListener("touchmove",i,{passive:!1}),s.addEventListener("touchend",e,{passive:!1}),this.tf(),this.md=setTimeout(this.Mf.bind(this,t),240)}const e=this.Nd(t,i);this.qd(e,this.jd.bf),this.pd||(this.fd=0,this.pd=setTimeout(this.Gd.bind(this),500),this.vd=ps(i))}Sf(t){if(0!==t.button)return;const i=this.Zd.ownerDocument.documentElement;ls()&&i.addEventListener("mouseleave",this.zd),this.Sd=!1,this.wd=ps(t),this.kd&&(this.kd(),this.kd=null);{const t=this.uf.bind(this),s=this.Od.bind(this);this.kd=()=>{i.removeEventListener("mousemove",t),i.removeEventListener("mouseup",s)},i.addEventListener("mousemove",t),i.addEventListener("mouseup",s)}if(this.Fd=!0,this.$d(t))return;const s=this.Nd(t);this.Kd(s,this.jd.xf),this.ud||(this._d=0,this.ud=setTimeout(this.Xd.bind(this),500),this.dd=ps(t))}Qd(){this.Zd.addEventListener("mouseenter",this.if.bind(this)),this.Zd.addEventListener("touchcancel",this.tf.bind(this));{const t=this.Zd.ownerDocument,i=t=>{this.jd.yf&&(t.composed&&this.Zd.contains(t.composedPath()[0])||t.target&&this.Zd.contains(t.target)||this.jd.yf())};this.Pd=()=>{t.removeEventListener("touchstart",i)},this.yd=()=>{t.removeEventListener("mousedown",i)},t.addEventListener("mousedown",i),t.addEventListener("touchstart",i,{passive:!0})}os()&&(this.Cd=()=>{this.Zd.removeEventListener("dblclick",this.Wd)},this.Zd.addEventListener("dblclick",this.Wd)),this.Zd.addEventListener("mouseleave",this.Pf.bind(this)),this.Zd.addEventListener("touchstart",this.wf.bind(this),{passive:!0}),cs(this.Zd),this.Zd.addEventListener("mousedown",this.Sf.bind(this)),this.Cf(),this.Zd.addEventListener("touchmove",()=>{},{passive:!1})}Cf(){void 0===this.jd.Tf&&void 0===this.jd.kf&&void 0===this.jd.Df||(this.Zd.addEventListener("touchstart",t=>this.Vf(t.touches),{passive:!0}),this.Zd.addEventListener("touchmove",t=>{if(2===t.touches.length&&null!==this.Vd&&void 0!==this.jd.kf){const i=ds(t.touches[0],t.touches[1])/this.Rd;this.jd.kf(this.Vd,i),fs(t)}},{passive:!1}),this.Zd.addEventListener("touchend",t=>{this.Vf(t.touches)}))}Vf(t){1===t.length&&(this.Ed=!1),2!==t.length||this.Ed||this.gd?this.Rf():this.Ef(t)}Ef(t){const i=this.Zd.getBoundingClientRect()||{left:0,top:0};this.Vd={ct:(t[0].clientX-i.left+(t[1].clientX-i.left))/2,ut:(t[0].clientY-i.top+(t[1].clientY-i.top))/2},this.Rd=ds(t[0],t[1]),void 0!==this.jd.Tf&&this.jd.Tf(),this.tf()}Rf(){null!==this.Vd&&(this.Vd=null,void 0!==this.jd.Df&&this.jd.Df())}Pf(t){if(this.Td&&this.Td(),this.$d(t))return;if(!this.Ld)return;const i=this.Nd(t);this.Kd(i,this.jd.Af),this.Ld=!os()}Mf(t){const i=ms(t.touches,c(this.Id));if(null===i)return;const s=this.Nd(t,i);this.qd(s,this.jd.Ff),this.xd=!0,this.gd=!0}$d(t){return t.sourceCapabilities&&void 0!==t.sourceCapabilities.firesTouchEvents?t.sourceCapabilities.firesTouchEvents:vs(t)<this.Bd+500}qd(t,i){i&&i.call(this.jd,t)}Kd(t,i){i&&i.call(this.jd,t)}Nd(t,i){const s=i||t,e=this.Zd.getBoundingClientRect()||{left:0,top:0};return{clientX:s.clientX,clientY:s.clientY,pageX:s.pageX,pageY:s.pageY,screenX:s.screenX,screenY:s.screenY,localX:s.clientX-e.left,localY:s.clientY-e.top,ctrlKey:t.ctrlKey,altKey:t.altKey,shiftKey:t.shiftKey,metaKey:t.metaKey,Bf:!t.type.startsWith("mouse")&&"contextmenu"!==t.type&&"click"!==t.type,If:t.type,Lf:s.target,l_:t.view,zf:()=>{"touchstart"!==t.type&&fs(t)}}}}function ds(t,i){const s=t.clientX-i.clientX,e=t.clientY-i.clientY;return Math.sqrt(s*s+e*e)}function fs(t){t.cancelable&&t.preventDefault()}function ps(t){return{ct:t.pageX,ut:t.pageY}}function vs(t){return t.timeStamp||performance.now()}function ms(t,i){for(let s=0;s<t.length;++s)if(t[s].identifier===i)return t[s];return null}class gs{constructor(t,i,s){this.Of=null,this.Wf=null,this.$f=!0,this.Nf=null,this.Uf=t,this.Hf=t.qf()[i],this.Yf=t.qf()[s],this.jf=document.createElement("tr"),this.jf.style.height="1px",this.Gf=document.createElement("td"),this.Gf.style.position="relative",this.Gf.style.padding="0",this.Gf.style.margin="0",this.Gf.setAttribute("colspan","3"),this.Kf(),this.jf.appendChild(this.Gf),this.$f=this.Uf.W().layout.panes.enableResize,this.$f?this.Jf():(this.Of=null,this.Wf=null)}m(){null!==this.Wf&&this.Wf.m()}Xf(){return this.jf}Zf(){return t({width:this.Hf.Zf().width,height:1})}Qf(){return t({width:this.Hf.Qf().width,height:1*window.devicePixelRatio})}tp(t,i,s){const e=this.Qf();t.fillStyle=this.Uf.W().layout.panes.separatorColor,t.fillRect(i,s,e.width,e.height)}Tt(){this.Kf(),this.Uf.W().layout.panes.enableResize!==this.$f&&(this.$f=this.Uf.W().layout.panes.enableResize,this.$f?this.Jf():(null!==this.Of&&(this.Gf.removeChild(this.Of.ip),this.Gf.removeChild(this.Of.sp),this.Of=null),null!==this.Wf&&(this.Wf.m(),this.Wf=null)))}Jf(){const t=document.createElement("div"),i=t.style;i.position="fixed",i.display="none",i.zIndex="49",i.top="0",i.left="0",i.width="100%",i.height="100%",i.cursor="row-resize",this.Gf.appendChild(t);const s=document.createElement("div"),e=s.style;e.position="absolute",e.zIndex="50",e.top="-4px",e.height="9px",e.width="100%",e.backgroundColor="",e.cursor="row-resize",this.Gf.appendChild(s);const n={ef:this.ep.bind(this),Af:this.np.bind(this),xf:this.hp.bind(this),bf:this.hp.bind(this),df:this.rp.bind(this),cf:this.rp.bind(this),mf:this.ap.bind(this),pf:this.ap.bind(this)};this.Wf=new us(s,n,{lf:()=>!1,_f:()=>!0}),this.Of={sp:s,ip:t}}Kf(){this.Gf.style.background=this.Uf.W().layout.panes.separatorColor}ep(t){null!==this.Of&&(this.Of.sp.style.backgroundColor=this.Uf.W().layout.panes.separatorHoverColor)}np(t){null!==this.Of&&null===this.Nf&&(this.Of.sp.style.backgroundColor="")}hp(t){if(null===this.Of)return;const i=this.Hf.lp().Ao()+this.Yf.lp().Ao(),s=i/(this.Hf.Zf().height+this.Yf.Zf().height),e=30*s;i<=2*e||(this.Nf={op:t.pageY,_p:this.Hf.lp().Ao(),cp:i-e,up:i,dp:s,fp:e},this.Of.ip.style.display="block")}rp(t){const i=this.Nf;if(null===i)return;const s=(t.pageY-i.op)*i.dp,e=Zt(i._p+s,i.fp,i.cp);this.Hf.lp().Fo(e),this.Yf.lp().Fo(i.up-e),this.Uf.ti().Fr()}ap(t){null!==this.Nf&&null!==this.Of&&(this.Nf=null,this.Of.ip.style.display="none")}}function ws(t,i){return t.pp-i.pp}function Ms(t,i,s){const e=(t.pp-i.pp)/(t.wt-i.wt);return Math.sign(e)*Math.min(Math.abs(e),s)}class bs{constructor(t,i,s,e){this.vp=null,this.mp=null,this.gp=null,this.wp=null,this.Mp=null,this.bp=0,this.Sp=0,this.xp=t,this.yp=i,this.Pp=s,this.we=e}Cp(t,i){if(null!==this.vp){if(this.vp.wt===i)return void(this.vp.pp=t);if(Math.abs(this.vp.pp-t)<this.we)return}this.wp=this.gp,this.gp=this.mp,this.mp=this.vp,this.vp={wt:i,pp:t}}ln(t,i){if(null===this.vp||null===this.mp)return;if(i-this.vp.wt>50)return;let s=0;const e=Ms(this.vp,this.mp,this.yp),n=ws(this.vp,this.mp),h=[e],r=[n];if(s+=n,null!==this.gp){const t=Ms(this.mp,this.gp,this.yp);if(Math.sign(t)===Math.sign(e)){const i=ws(this.mp,this.gp);if(h.push(t),r.push(i),s+=i,null!==this.wp){const t=Ms(this.gp,this.wp,this.yp);if(Math.sign(t)===Math.sign(e)){const i=ws(this.gp,this.wp);h.push(t),r.push(i),s+=i}}}}let a=0;for(let t=0;t<h.length;++t)a+=r[t]/s*h[t];Math.abs(a)<this.xp||(this.Mp={pp:t,wt:i},this.Sp=a,this.bp=function(t,i){const s=Math.log(i);return Math.log(1*s/-t)/s}(Math.abs(a),this.Pp))}Ac(t){const i=c(this.Mp),s=t-i.wt;return i.pp+this.Sp*(Math.pow(this.Pp,s)-1)/Math.log(this.Pp)}Ec(t){return null===this.Mp||this.Tp(t)===this.bp}Tp(t){const i=t-c(this.Mp).wt;return Math.min(i,this.bp)}}class Ss{constructor(t,i){this.kp=void 0,this.Dp=void 0,this.Vp=void 0,this.vs=!1,this.Rp=t,this.Ep=i,this.Ap()}Tt(){this.Ap()}Fp(){this.kp&&this.Rp.removeChild(this.kp),this.Dp&&this.Rp.removeChild(this.Dp),this.kp=void 0,this.Dp=void 0}Bp(){return this.vs!==this.Ip()||this.Vp!==this.Lp()}Lp(){return this.Ep.ti().Ji().tt(this.Ep.W().layout.textColor)>160?"dark":"light"}Ip(){return this.Ep.W().layout.attributionLogo}zp(){const t=new URL(location.href);return t.hostname?"&utm_source="+t.hostname+t.pathname:""}Ap(){this.Bp()&&(this.Fp(),this.vs=this.Ip(),this.vs&&(this.Vp=this.Lp(),this.Dp=document.createElement("style"),this.Dp.innerText="a#pipsend-attr-logo{--fill:#13d3c9;position:absolute;left:10px;bottom:10px;height:24px;width:46px;margin:0;padding:0;border:0;z-index:3;opacity:0.8;transition:opacity 0.3s;}a#pipsend-attr-logo:hover{opacity:1;}a#pipsend-attr-logo[data-dark]{--fill:#13d3c9;}",this.kp=document.createElement("a"),this.kp.href=`https://pipsend.com${this.zp()}`,this.kp.title="Powered by Pipsend Charts",this.kp.id="pipsend-attr-logo",this.kp.target="_blank",this.kp.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 155.89"><g><circle cx="220.68" cy="77.94" r="32.86" style="fill: var(--fill);"/><path d="M138.84,77.94c0,12.01-3.69,23.15-10,32.37h42.32v-.22c-6.21-9.17-9.84-20.24-9.84-32.15s3.63-22.97,9.84-32.15v-.22h-42.32c6.3,9.22,10,20.36,10,32.37Z" style="fill: var(--fill);"/><path d="M222.06,0H77.94C34.9,0,0,34.9,0,77.94h0c0,43.05,34.9,77.94,77.94,77.94h144.11c43.05,0,77.94-34.9,77.94-77.94h0C300,34.9,265.1,0,222.06,0ZM279.4,77.94c0,31.75-25.74,57.49-57.49,57.49H78.09c-31.75,0-57.49-25.74-57.49-57.49h0c0-31.75,25.74-57.49,57.49-57.49h143.82c31.75,0,57.49,25.74,57.49,57.49h0Z" style="fill: var(--fill);"/><circle cx="79.33" cy="77.94" r="32.86" style="fill: var(--fill);"/></g></svg>',this.kp.toggleAttribute("data-dark","dark"===this.Vp),this.Rp.appendChild(this.Dp),this.Rp.appendChild(this.kp)))}}function xs(t,s){const e=c(t.ownerDocument).createElement("canvas");t.appendChild(e);const n=i(e,{type:"device-pixel-content-box",options:{allowResizeObserver:!0},transform:(t,i)=>({width:Math.max(t.width,i.width),height:Math.max(t.height,i.height)})});return n.resizeCanvasElement(s),n}function ys(t){t.width=1,t.height=1,t.getContext("2d")?.clearRect(0,0,1,1)}function Ps(t,i,s,e){t.sr&&t.sr(i,s,e)}function Cs(t,i,s,e){t.nt(i,s,e)}function Ts(t,i,s,e){const n=t(s,e);for(const t of n){const s=t.Dt(e);null!==s&&i(s)}}function ks(t,i){return s=>{if(!function(t){return void 0!==t.$t}(s))return[];return(s.$t()?.ga()??"")!==i?[]:s.ia?.(t)??[]}}function Ds(t,i,s,e){if(!t.length)return;let n=0;const h=t[0].qt(e,!0);let r=1===i?s/2-(t[0].$i()-h/2):t[0].$i()-h/2-s/2;r=Math.max(0,r);for(let h=1;h<t.length;h++){const a=t[h],l=t[h-1],o=l.qt(e,!1),_=a.$i(),c=l.$i();if(1===i?_>c-o:_<c+o){const e=c-o*i;a.Ni(e);const h=e-i*o/2;if((1===i?h<0:h>s)&&r>0){const e=1===i?-1-h:h-s,a=Math.min(e,r);for(let s=n;s<t.length;s++)t[s].Ni(t[s].$i()+i*a);r-=a}}else n=h,r=1===i?c-o-_:_-(c+o)}}class Vs{constructor(i,s,e,n){this.ji=null,this.Op=null,this.Wp=!1,this.$p=new ht(200),this.Np=null,this.Up=0,this.Hp=!1,this.qp=()=>{this.Hp||this.Ct.Yp().ti().oh()},this.jp=()=>{this.Hp||this.Ct.Yp().ti().oh()},this.Ct=i,this.Cs=s,this.bl=s.layout,this.iu=e,this.Gp="left"===n,this.Kp=ks("normal",n),this.Jp=ks("top",n),this.Xp=ks("bottom",n),this.Gf=document.createElement("div"),this.Gf.style.height="100%",this.Gf.style.overflow="hidden",this.Gf.style.width="25px",this.Gf.style.left="0",this.Gf.style.position="relative",this.Zp=xs(this.Gf,t({width:16,height:16})),this.Zp.subscribeSuggestedBitmapSizeChanged(this.qp);const h=this.Zp.canvasElement;h.style.position="absolute",h.style.zIndex="1",h.style.left="0",h.style.top="0",this.Qp=xs(this.Gf,t({width:16,height:16})),this.Qp.subscribeSuggestedBitmapSizeChanged(this.jp);const r=this.Qp.canvasElement;r.style.position="absolute",r.style.zIndex="2",r.style.left="0",r.style.top="0";const a={xf:this.hp.bind(this),bf:this.hp.bind(this),df:this.rp.bind(this),cf:this.rp.bind(this),yf:this.tv.bind(this),mf:this.ap.bind(this),pf:this.ap.bind(this),Jd:this.iv.bind(this),Yd:this.iv.bind(this),ef:this.sv.bind(this),Af:this.np.bind(this)};this.Wf=new us(this.Qp.canvasElement,a,{lf:()=>!this.Cs.handleScroll.vertTouchDrag,_f:()=>!0})}m(){this.Wf.m(),this.Qp.unsubscribeSuggestedBitmapSizeChanged(this.jp),ys(this.Qp.canvasElement),this.Qp.dispose(),this.Zp.unsubscribeSuggestedBitmapSizeChanged(this.qp),ys(this.Zp.canvasElement),this.Zp.dispose(),null!==this.ji&&this.ji.eo().u(this),this.ji=null}Xf(){return this.Gf}C(){return this.bl.fontSize}ev(){const t=this.iu.W();return this.Np!==t.T&&(this.$p.Re(),this.Np=t.T),t}nv(){if(null===this.ji)return 0;let t=0;const i=this.ev(),s=c(this.Zp.canvasElement.getContext("2d",{colorSpace:this.Ct.Yp().W().layout.colorSpace}));s.save();const e=this.ji.Ra();s.font=this.hv(),e.length>0&&(t=Math.max(this.$p.Ei(s,e[0].Xa),this.$p.Ei(s,e[e.length-1].Xa)));const n=this.rv();for(let i=n.length;i--;){const e=this.$p.Ei(s,n[i].ri());e>t&&(t=e)}const h=this.ji.Lt();if(null!==h&&null!==this.Op&&(2!==(r=this.Cs.crosshair).mode&&r.horzLine.visible&&r.horzLine.labelVisible)){const i=this.ji.Ds(1,h),e=this.ji.Ds(this.Op.height-2,h);t=Math.max(t,this.$p.Ei(s,this.ji.Xi(Math.floor(Math.min(i,e))+.11111111111111,h)),this.$p.Ei(s,this.ji.Xi(Math.ceil(Math.max(i,e))-.11111111111111,h)))}var r;s.restore();const a=t||34;return _s(Math.ceil(i.S+i.P+i.F+i.B+5+a))}av(t){null!==this.Op&&s(this.Op,t)||(this.Op=t,this.Hp=!0,this.Zp.resizeCanvasElement(t),this.Qp.resizeCanvasElement(t),this.Hp=!1,this.Gf.style.width=`${t.width}px`,this.Gf.style.height=`${t.height}px`)}lv(){return c(this.Op).width}cs(t){this.ji!==t&&(null!==this.ji&&this.ji.eo().u(this),this.ji=t,t.eo().i(this.cl.bind(this),this))}$t(){return this.ji}Re(){const t=this.Ct.lp();this.Ct.Yp().ti().Xo(t,c(this.$t()))}ov(t){if(null===this.Op)return;const i={colorSpace:this.Ct.Yp().W().layout.colorSpace};if(1!==t){this._v(),this.Zp.applySuggestedBitmapSize();const t=e(this.Zp,i);null!==t&&(t.useBitmapCoordinateSpace(t=>{this.cv(t),this.uv(t)}),this.Ct.dv(t,this.Xp),this.fv(t),this.Ct.dv(t,this.Kp),this.pv(t))}this.Qp.applySuggestedBitmapSize();const s=e(this.Qp,i);null!==s&&(s.useBitmapCoordinateSpace(({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)}),this.vv(s),this.Ct.dv(s,this.Jp))}Qf(){return this.Zp.bitmapSize}tp(t,i,s,e){const n=this.Qf();if(n.width>0&&n.height>0&&(t.drawImage(this.Zp.canvasElement,i,s),e)){const e=this.Qp.canvasElement;t.drawImage(e,i,s)}}Tt(){this.ji?.Ra()}hp(t){if(null===this.ji||this.ji.Ki()||!this.Cs.handleScale.axisPressedMouseMove.price)return;const i=this.Ct.Yp().ti(),s=this.Ct.lp();this.Wp=!0,i.Ho(s,this.ji,t.localY)}rp(t){if(null===this.ji||!this.Cs.handleScale.axisPressedMouseMove.price)return;const i=this.Ct.Yp().ti(),s=this.Ct.lp(),e=this.ji;i.qo(s,e,t.localY)}tv(){if(null===this.ji||!this.Cs.handleScale.axisPressedMouseMove.price)return;const t=this.Ct.Yp().ti(),i=this.Ct.lp(),s=this.ji;this.Wp&&(this.Wp=!1,t.Yo(i,s))}ap(t){if(null===this.ji||!this.Cs.handleScale.axisPressedMouseMove.price)return;const i=this.Ct.Yp().ti(),s=this.Ct.lp();this.Wp=!1,i.Yo(s,this.ji)}iv(t){this.Cs.handleScale.axisDoubleClickReset.price&&this.Re()}sv(t){if(null===this.ji)return;!this.Ct.Yp().ti().W().handleScale.axisPressedMouseMove.price||this.ji.zn()||this.ji.Rl()||this.mv(1)}np(t){this.mv(0)}rv(){const t=[],i=null===this.ji?void 0:this.ji;return(s=>{for(let e=0;e<s.length;++e){const n=s[e].Ns(this.Ct.lp(),i);for(let i=0;i<n.length;i++)t.push(n[i])}})(this.Ct.lp().Rt()),t}cv({context:t,bitmapSize:i}){const{width:s,height:e}=i,n=this.Ct.lp().ti(),h=n.q(),r=n.Nu();h===r?L(t,0,0,s,e,h):W(t,0,0,s,e,h,r)}uv({context:t,bitmapSize:i,horizontalPixelRatio:s}){if(null===this.Op||null===this.ji||!this.ji.W().borderVisible)return;t.fillStyle=this.ji.W().borderColor;const e=Math.max(1,Math.floor(this.ev().S*s));let n;n=this.Gp?i.width-e:0,t.fillRect(n,0,e,i.height)}fv(t){if(null===this.Op||null===this.ji)return;const i=this.ji.Ra(),s=this.ji.W(),e=this.ev(),n=this.Gp?this.Op.width-e.P:0;s.borderVisible&&s.ticksVisible&&t.useBitmapCoordinateSpace(({context:t,horizontalPixelRatio:h,verticalPixelRatio:r})=>{t.fillStyle=s.borderColor;const a=Math.max(1,Math.floor(r)),l=Math.floor(.5*r),o=Math.round(e.P*h);t.beginPath();for(const s of i)t.rect(Math.floor(n*h),Math.round(s.Ca*r)-l,o,a);t.fill()}),t.useMediaCoordinateSpace(({context:t})=>{t.font=this.hv(),t.fillStyle=s.textColor??this.bl.textColor,t.textAlign=this.Gp?"right":"left",t.textBaseline="middle";const h=this.Gp?Math.round(n-e.F):Math.round(n+e.P+e.F),r=i.map(i=>this.$p.Ri(t,i.Xa));for(let s=i.length;s--;){const e=i[s];t.fillText(e.Xa,h,e.Ca+r[s])}})}_v(){if(null===this.Op||null===this.ji)return;let t=this.Op.height/2;const i=[],s=this.ji.Rt().slice(),e=this.Ct.lp(),n=this.ev();this.ji===e.Ue()&&this.Ct.lp().Rt().forEach(t=>{e.Ne(t)&&s.push(t)});const h=this.ji.ba()[0],r=this.ji;s.forEach(s=>{const n=s.Ns(e,r);n.forEach(t=>{t.Ni(null),t.Ui()&&i.push(t)}),h===s&&n.length>0&&(t=n[0].Fi())}),i.forEach(t=>t.Ni(t.Fi()));this.ji.W().alignLabels&&this.gv(i,n,t)}gv(t,i,s){if(null===this.Op)return;const e=t.filter(t=>t.Fi()<=s),n=t.filter(t=>t.Fi()>s);e.sort((t,i)=>i.Fi()-t.Fi()),e.length&&n.length&&n.push(e[0]),n.sort((t,i)=>t.Fi()-i.Fi());for(const s of t){const t=Math.floor(s.qt(i)/2),e=s.Fi();e>-t&&e<t&&s.Ni(t),e>this.Op.height-t&&e<this.Op.height+t&&s.Ni(this.Op.height-t)}Ds(e,1,this.Op.height,i),Ds(n,-1,this.Op.height,i)}pv(t){if(null===this.Op)return;const i=this.rv(),s=this.ev(),e=this.Gp?"right":"left";i.forEach(i=>{if(i.Hi()){i.Dt(c(this.ji)).nt(t,s,this.$p,e)}})}vv(t){if(null===this.Op||null===this.ji)return;const i=this.Ct.Yp().ti(),s=[],e=this.Ct.lp(),n=i.du().Ns(e,this.ji);n.length&&s.push(n);const h=this.ev(),r=this.Gp?"right":"left";s.forEach(i=>{i.forEach(i=>{i.Dt(c(this.ji)).nt(t,h,this.$p,r)})})}mv(t){this.Gf.style.cursor=1===t?"ns-resize":"default"}cl(){const t=this.nv();this.Up<t&&this.Ct.Yp().ti().Fr(),this.Up=t}hv(){return x(this.bl.fontSize,this.bl.fontFamily)}}function Rs(t,i){return t.Qr?.(i)??[]}function Es(t,i){return t.$s?.(i)??[]}function As(t,i){return t.us?.(i)??[]}function Fs(t,i){return t.Jr?.(i)??[]}class Bs{constructor(i,s){this.Op=t({width:0,height:0}),this.wv=null,this.Mv=null,this.bv=null,this.Sv=null,this.xv=!1,this.yv=new d,this.Pv=new d,this.Cv=0,this.Tv=!1,this.kv=null,this.Dv=!1,this.Vv=null,this.Rv=null,this.Hp=!1,this.qp=()=>{this.Hp||null===this.Ev||this.ss().oh()},this.jp=()=>{this.Hp||null===this.Ev||this.ss().oh()},this.Ep=i,this.Ev=s,this.Ev.i_().i(this.Av.bind(this),this,!0),this.Fv=document.createElement("td"),this.Fv.style.padding="0",this.Fv.style.position="relative";const e=document.createElement("div");e.style.width="100%",e.style.height="100%",e.style.position="relative",e.style.overflow="hidden",this.Bv=document.createElement("td"),this.Bv.style.padding="0",this.Iv=document.createElement("td"),this.Iv.style.padding="0",this.Fv.appendChild(e),this.Zp=xs(e,t({width:16,height:16})),this.Zp.subscribeSuggestedBitmapSizeChanged(this.qp);const n=this.Zp.canvasElement;n.style.position="absolute",n.style.zIndex="1",n.style.left="0",n.style.top="0",this.Qp=xs(e,t({width:16,height:16})),this.Qp.subscribeSuggestedBitmapSizeChanged(this.jp);const h=this.Qp.canvasElement;h.style.position="absolute",h.style.zIndex="2",h.style.left="0",h.style.top="0",this.jf=document.createElement("tr"),this.jf.appendChild(this.Bv),this.jf.appendChild(this.Fv),this.jf.appendChild(this.Iv),this.Lv(),this.Wf=new us(this.Qp.canvasElement,this,{lf:()=>null===this.kv&&!this.Ep.W().handleScroll.vertTouchDrag,_f:()=>null===this.kv&&!this.Ep.W().handleScroll.horzTouchDrag})}m(){null!==this.wv&&this.wv.m(),null!==this.Mv&&this.Mv.m(),this.bv=null,this.Qp.unsubscribeSuggestedBitmapSizeChanged(this.jp),ys(this.Qp.canvasElement),this.Qp.dispose(),this.Zp.unsubscribeSuggestedBitmapSizeChanged(this.qp),ys(this.Zp.canvasElement),this.Zp.dispose(),null!==this.Ev&&(this.Ev.i_().u(this),this.Ev.m()),this.Wf.m()}lp(){return c(this.Ev)}zv(t){null!==this.Ev&&this.Ev.i_().u(this),this.Ev=t,null!==this.Ev&&this.Ev.i_().i(Bs.prototype.Av.bind(this),this,!0),this.Lv(),this.Ep.qf().indexOf(this)===this.Ep.qf().length-1?(this.bv=this.bv??new Ss(this.Fv,this.Ep),this.bv.Tt()):(this.bv?.Fp(),this.bv=null)}Yp(){return this.Ep}Xf(){return this.jf}Lv(){if(null!==this.Ev&&(this.Ov(),0!==this.ss().Gs().length)){if(null!==this.wv){const t=this.Ev.No();this.wv.cs(c(t))}if(null!==this.Mv){const t=this.Ev.Uo();this.Mv.cs(c(t))}}}Wv(){null!==this.wv&&this.wv.Tt(),null!==this.Mv&&this.Mv.Tt()}Ao(){return null!==this.Ev?this.Ev.Ao():0}Fo(t){this.Ev&&this.Ev.Fo(t)}ef(t){if(!this.Ev)return;this.$v();const i=t.localX,s=t.localY;this.Nv(i,s,t)}xf(t){this.$v(),this.Uv(),this.Nv(t.localX,t.localY,t)}nf(t){if(!this.Ev)return;this.$v();const i=t.localX,s=t.localY;this.Nv(i,s,t)}gf(t){null!==this.Ev&&(this.$v(),this.Hv(t))}Jd(t){null!==this.Ev&&this.qv(this.Pv,t)}Yd(t){this.Jd(t)}df(t){this.$v(),this.Yv(t),this.Nv(t.localX,t.localY,t)}mf(t){null!==this.Ev&&(this.$v(),this.Tv=!1,this.jv(t))}vf(t){null!==this.Ev&&this.Hv(t)}Ff(t){if(this.Tv=!0,null===this.kv){const i={x:t.localX,y:t.localY};this.Gv(i,i,t)}}Af(t){null!==this.Ev&&(this.$v(),this.Ev.ti()._u(null),this.Kv())}Jv(){return this.yv}Xv(){return this.Pv}Tf(){this.Cv=1,this.ss().re()}kf(t,i){if(!this.Ep.W().handleScale.pinch)return;const s=5*(i-this.Cv);this.Cv=i,this.ss().Su(t.ct,s)}bf(t){this.Tv=!1,this.Dv=null!==this.kv,this.Uv();const i=this.ss().du();null!==this.kv&&i.Et()&&(this.Vv={x:i.ei(),y:i.ni()},this.kv={x:t.localX,y:t.localY})}cf(t){if(null===this.Ev)return;const i=t.localX,s=t.localY;if(null!==this.kv){this.Dv=!1;const e=c(this.Vv),n=e.x+(i-this.kv.x),h=e.y+(s-this.kv.y);return void this.Nv(n,h,t)}this.Yv(t)}pf(t){0===this.Yp().W().trackingMode.exitMode&&(this.Dv=!0),this.Zv(),this.jv(t)}Ye(t,i){const s=this.Ev;return null===s?null:Ti(s,t,i)}Qv(i,s){c("left"===s?this.wv:this.Mv).av(t({width:i,height:this.Op.height}))}Zf(){return this.Op}av(t){s(this.Op,t)||(this.Op=t,this.Hp=!0,this.Zp.resizeCanvasElement(t),this.Qp.resizeCanvasElement(t),this.Hp=!1,this.Fv.style.width=t.width+"px",this.Fv.style.height=t.height+"px")}tm(){const t=c(this.Ev);t.$o(t.No()),t.$o(t.Uo());for(const i of t.ba())if(t.Ne(i)){const s=i.$t();null!==s&&t.$o(s),i.Ws()}for(const i of t.e_())i.Ws()}Qf(){return this.Zp.bitmapSize}tp(t,i,s,e){const n=this.Qf();if(n.width>0&&n.height>0&&(t.drawImage(this.Zp.canvasElement,i,s),e)){const e=this.Qp.canvasElement;null!==t&&t.drawImage(e,i,s)}}ov(t){if(0===t)return;if(null===this.Ev)return;t>1&&this.tm(),null!==this.wv&&this.wv.ov(t),null!==this.Mv&&this.Mv.ov(t);const i={colorSpace:this.Ep.W().layout.colorSpace};if(1!==t){this.Zp.applySuggestedBitmapSize();const t=e(this.Zp,i);null!==t&&(t.useBitmapCoordinateSpace(t=>{this.cv(t)}),this.Ev&&(this.im(t,Rs),this.sm(t),this.im(t,Es),this.im(t,As)))}this.Qp.applySuggestedBitmapSize();const s=e(this.Qp,i);null!==s&&(s.useBitmapCoordinateSpace(({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)}),this.nm(s),this.im(s,Fs),this.im(s,As))}hm(){return this.wv}rm(){return this.Mv}dv(t,i){this.im(t,i)}Av(){null!==this.Ev&&this.Ev.i_().u(this),this.Ev=null}Hv(t){this.qv(this.yv,t)}qv(t,i){const s=i.localX,e=i.localY;t.v()&&t.p(this.ss().Bt().fc(s),{x:s,y:e},i)}cv({context:t,bitmapSize:i}){const{width:s,height:e}=i,n=this.ss(),h=n.q(),r=n.Nu();h===r?L(t,0,0,s,e,r):W(t,0,0,s,e,h,r)}sm(t){const i=c(this.Ev),s=i.s_()._h().Dt(i);null!==s&&s.nt(t,!1)}nm(t){this.am(t,Es,Cs,this.ss().du())}im(t,i){const s=c(this.Ev),e=s.Rt(),n=s.e_();for(const s of n)this.am(t,i,Ps,s);for(const s of e)this.am(t,i,Ps,s);for(const s of n)this.am(t,i,Cs,s);for(const s of e)this.am(t,i,Cs,s)}am(t,i,s,e){const n=c(this.Ev),h=n.ti().ou(),r=null!==h&&h.n_===e,a=null!==h&&r&&void 0!==h.h_?h.h_.Ge:void 0;Ts(i,i=>s(i,t,r,a),e,n)}Ov(){if(null===this.Ev)return;const t=this.Ep,i=this.Ev.No().W().visible,s=this.Ev.Uo().W().visible;i||null===this.wv||(this.Bv.removeChild(this.wv.Xf()),this.wv.m(),this.wv=null),s||null===this.Mv||(this.Iv.removeChild(this.Mv.Xf()),this.Mv.m(),this.Mv=null);const e=t.ti().Au();i&&null===this.wv&&(this.wv=new Vs(this,t.W(),e,"left"),this.Bv.appendChild(this.wv.Xf())),s&&null===this.Mv&&(this.Mv=new Vs(this,t.W(),e,"right"),this.Iv.appendChild(this.Mv.Xf()))}lm(t){return t.Bf&&this.Tv||null!==this.kv}om(t){return Math.max(0,Math.min(t,this.Op.width-1))}_m(t){return Math.max(0,Math.min(t,this.Op.height-1))}Nv(t,i,s){this.ss().Du(this.om(t),this._m(i),s,c(this.Ev))}Kv(){this.ss().Ru()}Zv(){this.Dv&&(this.kv=null,this.Kv())}Gv(t,i,s){this.kv=t,this.Dv=!1,this.Nv(i.x,i.y,s);const e=this.ss().du();this.Vv={x:e.ei(),y:e.ni()}}ss(){return this.Ep.ti()}jv(t){if(!this.xv)return;const i=this.ss(),s=this.lp();if(i.Ko(s,s.ks()),this.Sv=null,this.xv=!1,i.Cu(),null!==this.Rv){const t=performance.now(),s=i.Bt();this.Rv.ln(s.Sc(),t),this.Rv.Ec(t)||i.oe(this.Rv)}}$v(){this.kv=null}Uv(){if(!this.Ev)return;if(this.ss().re(),document.activeElement!==document.body&&document.activeElement!==document.documentElement)c(document.activeElement).blur();else{const t=document.getSelection();null!==t&&t.removeAllRanges()}!this.Ev.ks().Ki()&&this.ss().Bt().Ki()}Yv(t){if(null===this.Ev)return;const i=this.ss(),s=i.Bt();if(s.Ki())return;const e=this.Ep.W(),n=e.handleScroll,h=e.kineticScroll;if((!n.pressedMouseMove||t.Bf)&&(!n.horzTouchDrag&&!n.vertTouchDrag||!t.Bf))return;const r=this.Ev.ks(),a=performance.now();if(null!==this.Sv||this.lm(t)||(this.Sv={x:t.clientX,y:t.clientY,rd:a,um:t.localX,dm:t.localY}),null!==this.Sv&&!this.xv&&(this.Sv.x!==t.clientX||this.Sv.y!==t.clientY)){if(t.Bf&&h.touch||!t.Bf&&h.mouse){const t=s.Mc();this.Rv=new bs(.2/t,7/t,.997,15/t),this.Rv.Cp(s.Sc(),this.Sv.rd)}else this.Rv=null;r.Ki()||i.jo(this.Ev,r,t.localY),i.yu(t.localX),this.xv=!0}this.xv&&(r.Ki()||i.Go(this.Ev,r,t.localY),i.Pu(t.localX),null!==this.Rv&&this.Rv.Cp(s.Sc(),a))}}class Is{constructor(i,s,e,n,h){this.yt=!0,this.Op=t({width:0,height:0}),this.qp=()=>this.ov(3),this.Gp="left"===i,this.iu=e.Au,this.Cs=s,this.fm=n,this.pm=h,this.Gf=document.createElement("div"),this.Gf.style.width="25px",this.Gf.style.height="100%",this.Gf.style.overflow="hidden",this.Zp=xs(this.Gf,t({width:16,height:16})),this.Zp.subscribeSuggestedBitmapSizeChanged(this.qp)}m(){this.Zp.unsubscribeSuggestedBitmapSizeChanged(this.qp),ys(this.Zp.canvasElement),this.Zp.dispose()}Xf(){return this.Gf}Zf(){return this.Op}av(t){s(this.Op,t)||(this.Op=t,this.Zp.resizeCanvasElement(t),this.Gf.style.width=`${t.width}px`,this.Gf.style.height=`${t.height}px`,this.yt=!0)}ov(t){if(t<3&&!this.yt)return;if(0===this.Op.width||0===this.Op.height)return;this.yt=!1,this.Zp.applySuggestedBitmapSize();const i=e(this.Zp,{colorSpace:this.Cs.layout.colorSpace});null!==i&&i.useBitmapCoordinateSpace(t=>{this.cv(t),this.uv(t)})}Qf(){return this.Zp.bitmapSize}tp(t,i,s){const e=this.Qf();e.width>0&&e.height>0&&t.drawImage(this.Zp.canvasElement,i,s)}uv({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:e}){if(!this.fm())return;t.fillStyle=this.Cs.timeScale.borderColor;const n=Math.floor(this.iu.W().S*s),h=Math.floor(this.iu.W().S*e),r=this.Gp?i.width-n:0;t.fillRect(r,0,n,h)}cv({context:t,bitmapSize:i}){L(t,0,0,i.width,i.height,this.pm())}}function Ls(t){return i=>i.sa?.(t)??[]}const zs=Ls("normal"),Os=Ls("top"),Ws=Ls("bottom");class $s{constructor(i,s){this.vm=null,this.gm=null,this.M=null,this.wm=!1,this.Op=t({width:0,height:0}),this.Mm=new d,this.$p=new ht(5),this.Hp=!1,this.qp=()=>{this.Hp||this.Ep.ti().oh()},this.jp=()=>{this.Hp||this.Ep.ti().oh()},this.Ep=i,this.__=s,this.Cs=i.W().layout,this.kp=document.createElement("tr"),this.bm=document.createElement("td"),this.bm.style.padding="0",this.Sm=document.createElement("td"),this.Sm.style.padding="0",this.Gf=document.createElement("td"),this.Gf.style.height="25px",this.Gf.style.padding="0",this.xm=document.createElement("div"),this.xm.style.width="100%",this.xm.style.height="100%",this.xm.style.position="relative",this.xm.style.overflow="hidden",this.Gf.appendChild(this.xm),this.Zp=xs(this.xm,t({width:16,height:16})),this.Zp.subscribeSuggestedBitmapSizeChanged(this.qp);const e=this.Zp.canvasElement;e.style.position="absolute",e.style.zIndex="1",e.style.left="0",e.style.top="0",this.Qp=xs(this.xm,t({width:16,height:16})),this.Qp.subscribeSuggestedBitmapSizeChanged(this.jp);const n=this.Qp.canvasElement;n.style.position="absolute",n.style.zIndex="2",n.style.left="0",n.style.top="0",this.kp.appendChild(this.bm),this.kp.appendChild(this.Gf),this.kp.appendChild(this.Sm),this.ym(),this.Ep.ti().Eo().i(this.ym.bind(this),this),this.Wf=new us(this.Qp.canvasElement,this,{lf:()=>!0,_f:()=>!this.Ep.W().handleScroll.horzTouchDrag})}m(){this.Wf.m(),null!==this.vm&&this.vm.m(),null!==this.gm&&this.gm.m(),this.Qp.unsubscribeSuggestedBitmapSizeChanged(this.jp),ys(this.Qp.canvasElement),this.Qp.dispose(),this.Zp.unsubscribeSuggestedBitmapSizeChanged(this.qp),ys(this.Zp.canvasElement),this.Zp.dispose()}Xf(){return this.kp}Pm(){return this.vm}Cm(){return this.gm}xf(t){if(this.wm)return;this.wm=!0;const i=this.Ep.ti();!i.Bt().Ki()&&this.Ep.W().handleScale.axisPressedMouseMove.time&&i.bu(t.localX)}bf(t){this.xf(t)}yf(){const t=this.Ep.ti();!t.Bt().Ki()&&this.wm&&(this.wm=!1,this.Ep.W().handleScale.axisPressedMouseMove.time&&t.ku())}df(t){const i=this.Ep.ti();!i.Bt().Ki()&&this.Ep.W().handleScale.axisPressedMouseMove.time&&i.Tu(t.localX)}cf(t){this.df(t)}mf(){this.wm=!1;const t=this.Ep.ti();t.Bt().Ki()&&!this.Ep.W().handleScale.axisPressedMouseMove.time||t.ku()}pf(){this.mf()}Jd(){this.Ep.W().handleScale.axisDoubleClickReset.time&&this.Ep.ti().ce()}Yd(){this.Jd()}ef(){this.Ep.ti().W().handleScale.axisPressedMouseMove.time&&this.mv(1)}Af(){this.mv(0)}Zf(){return this.Op}Tm(){return this.Mm}km(i,e,n){s(this.Op,i)||(this.Op=i,this.Hp=!0,this.Zp.resizeCanvasElement(i),this.Qp.resizeCanvasElement(i),this.Hp=!1,this.Gf.style.width=`${i.width}px`,this.Gf.style.height=`${i.height}px`,this.Mm.p(i)),null!==this.vm&&this.vm.av(t({width:e,height:i.height})),null!==this.gm&&this.gm.av(t({width:n,height:i.height}))}Dm(){const t=this.Vm();return Math.ceil(t.S+t.P+t.C+t.I+t.A+t.Rm)}Tt(){this.Ep.ti().Bt().Ra()}Qf(){return this.Zp.bitmapSize}tp(t,i,s,e){const n=this.Qf();if(n.width>0&&n.height>0&&(t.drawImage(this.Zp.canvasElement,i,s),e)){const e=this.Qp.canvasElement;t.drawImage(e,i,s)}}ov(t){if(0===t)return;const i={colorSpace:this.Cs.colorSpace};if(1!==t){this.Zp.applySuggestedBitmapSize();const s=e(this.Zp,i);null!==s&&(s.useBitmapCoordinateSpace(t=>{this.cv(t),this.uv(t),this.Em(s,Ws)}),this.fv(s),this.Em(s,zs)),null!==this.vm&&this.vm.ov(t),null!==this.gm&&this.gm.ov(t)}this.Qp.applySuggestedBitmapSize();const s=e(this.Qp,i);null!==s&&(s.useBitmapCoordinateSpace(({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)}),this.Am([...this.Ep.ti().Gs(),this.Ep.ti().du()],s),this.Em(s,Os))}Em(t,i){const s=this.Ep.ti().Gs();for(const e of s)Ts(i,i=>Ps(i,t,!1,void 0),e,void 0);for(const e of s)Ts(i,i=>Cs(i,t,!1,void 0),e,void 0)}cv({context:t,bitmapSize:i}){L(t,0,0,i.width,i.height,this.Ep.ti().Nu())}uv({context:t,bitmapSize:i,verticalPixelRatio:s}){if(this.Ep.W().timeScale.borderVisible){t.fillStyle=this.Fm();const e=Math.max(1,Math.floor(this.Vm().S*s));t.fillRect(0,0,i.width,e)}}fv(t){const i=this.Ep.ti().Bt(),s=i.Ra();if(!s||0===s.length)return;const e=this.__.maxTickMarkWeight(s),n=this.Vm(),h=i.W();h.borderVisible&&h.ticksVisible&&t.useBitmapCoordinateSpace(({context:t,horizontalPixelRatio:i,verticalPixelRatio:e})=>{t.strokeStyle=this.Fm(),t.fillStyle=this.Fm();const h=Math.max(1,Math.floor(i)),r=Math.floor(.5*i);t.beginPath();const a=Math.round(n.P*e);for(let e=s.length;e--;){const n=Math.round(s[e].coord*i);t.rect(n-r,0,h,a)}t.fill()}),t.useMediaCoordinateSpace(({context:t})=>{const i=n.S+n.P+n.I+n.C/2;t.textAlign="center",t.textBaseline="middle",t.fillStyle=this.U(),t.font=this.hv();for(const n of s)if(n.weight<e){const s=n.needAlignCoordinate?this.Bm(t,n.coord,n.label):n.coord;t.fillText(n.label,s,i)}this.Ep.W().timeScale.allowBoldLabels&&(t.font=this.Im());for(const n of s)if(n.weight>=e){const s=n.needAlignCoordinate?this.Bm(t,n.coord,n.label):n.coord;t.fillText(n.label,s,i)}})}Bm(t,i,s){const e=this.$p.Ei(t,s),n=e/2,h=Math.floor(i-n)+.5;return h<0?i+=Math.abs(0-h):h+e>this.Op.width&&(i-=Math.abs(this.Op.width-(h+e))),i}Am(t,i){const s=this.Vm();for(const e of t)for(const t of e.ds())t.Dt().nt(i,s)}Fm(){return this.Ep.W().timeScale.borderColor}U(){return this.Cs.textColor}$(){return this.Cs.fontSize}hv(){return x(this.$(),this.Cs.fontFamily)}Im(){return x(this.$(),this.Cs.fontFamily,"bold")}Vm(){null===this.M&&(this.M={S:1,L:NaN,I:NaN,A:NaN,Qi:NaN,P:5,C:NaN,T:"",Zi:new ht,Rm:0});const t=this.M,i=this.hv();if(t.T!==i){const s=this.$();t.C=s,t.T=i,t.I=3*s/12,t.A=3*s/12,t.Qi=9*s/12,t.L=0,t.Rm=4*s/12,t.Zi.Re()}return this.M}mv(t){this.Gf.style.cursor=1===t?"ew-resize":"default"}ym(){const t=this.Ep.ti(),i=t.W();i.leftPriceScale.visible||null===this.vm||(this.bm.removeChild(this.vm.Xf()),this.vm.m(),this.vm=null),i.rightPriceScale.visible||null===this.gm||(this.Sm.removeChild(this.gm.Xf()),this.gm.m(),this.gm=null);const s={Au:this.Ep.ti().Au()},e=()=>i.leftPriceScale.borderVisible&&t.Bt().W().borderVisible,n=()=>t.Nu();i.leftPriceScale.visible&&null===this.vm&&(this.vm=new Is("left",i,s,e,n),this.bm.appendChild(this.vm.Xf())),i.rightPriceScale.visible&&null===this.gm&&(this.gm=new Is("right",i,s,e,n),this.Sm.appendChild(this.gm.Xf()))}}const Ns=!!as&&!!navigator.userAgentData&&navigator.userAgentData.brands.some(t=>t.brand.includes("Chromium"))&&!!as&&(navigator?.userAgentData?.platform?"Windows"===navigator.userAgentData.platform:navigator.userAgent.toLowerCase().indexOf("win")>=0);class Us{constructor(t,i,s){var e;this.Lm=[],this.zm=[],this.Om=0,this.sl=0,this.bo=0,this.Wm=0,this.$m=0,this.Nm=null,this.Um=!1,this.yv=new d,this.Pv=new d,this.Zc=new d,this.Hm=null,this.qm=null,this.Rp=t,this.Cs=i,this.__=s,this.kp=document.createElement("div"),this.kp.classList.add("tv-lightweight-charts"),this.kp.style.overflow="hidden",this.kp.style.direction="ltr",this.kp.style.width="100%",this.kp.style.height="100%",(e=this.kp).style.userSelect="none",e.style.webkitUserSelect="none",e.style.msUserSelect="none",e.style.MozUserSelect="none",e.style.webkitTapHighlightColor="transparent",this.Ym=document.createElement("table"),this.Ym.setAttribute("cellspacing","0"),this.kp.appendChild(this.Ym),this.jm=this.Gm.bind(this),Hs(this.Cs)&&this.Km(!0),this.ss=new Wi(this.tu.bind(this),this.Cs,s),this.ti().fu().i(this.Jm.bind(this),this),this.Xm=new $s(this,this.__),this.Ym.appendChild(this.Xm.Xf());const n=i.autoSize&&this.Zm();let h=this.Cs.width,r=this.Cs.height;if(n||0===h||0===r){const i=t.getBoundingClientRect();h=h||i.width,r=r||i.height}this.Qm(h,r),this.tg(),t.appendChild(this.kp),this.ig(),this.ss.Bt().Ic().i(this.ss.Fr.bind(this.ss),this),this.ss.Eo().i(this.ss.Fr.bind(this.ss),this)}ti(){return this.ss}W(){return this.Cs}qf(){return this.Lm}sg(){return this.Xm}m(){this.Km(!1),0!==this.Om&&window.cancelAnimationFrame(this.Om),this.ss.fu().u(this),this.ss.Bt().Ic().u(this),this.ss.Eo().u(this),this.ss.m();for(const t of this.Lm)this.Ym.removeChild(t.Xf()),t.Jv().u(this),t.Xv().u(this),t.m();this.Lm=[];for(const t of this.zm)this.eg(t);this.zm=[],c(this.Xm).m(),null!==this.kp.parentElement&&this.kp.parentElement.removeChild(this.kp),this.Zc.m(),this.yv.m(),this.Pv.m(),this.ng()}Qm(i,s,e=!1){if(this.sl===s&&this.bo===i)return;const n=function(i){const s=Math.floor(i.width),e=Math.floor(i.height);return t({width:s-s%2,height:e-e%2})}(t({width:i,height:s}));this.sl=n.height,this.bo=n.width;const h=this.sl+"px",r=this.bo+"px";c(this.kp).style.height=h,c(this.kp).style.width=r,this.Ym.style.height=h,this.Ym.style.width=r,e?this.hg(X.ge(),performance.now()):this.ss.Fr()}ov(t){void 0===t&&(t=X.ge());for(let i=0;i<this.Lm.length;i++)this.Lm[i].ov(t.ne(i).ie);this.Cs.timeScale.visible&&this.Xm.ov(t.ee())}ah(t){const i=Hs(this.Cs);this.ss.ah(t);const s=Hs(this.Cs);s!==i&&this.Km(s),t.layout?.panes&&this.rg(),this.ig(),this.ag(t)}Jv(){return this.yv}Xv(){return this.Pv}fu(){return this.Zc}lg(t=!1){null!==this.Nm&&(this.hg(this.Nm,performance.now()),this.Nm=null);const i=this.og(null),s=document.createElement("canvas");s.width=i.width,s.height=i.height;const e=c(s.getContext("2d"));return this.og(e,t),s}_g(t){if("left"===t&&!this.cg())return 0;if("right"===t&&!this.ug())return 0;if(0===this.Lm.length)return 0;return c("left"===t?this.Lm[0].hm():this.Lm[0].rm()).lv()}dg(){return this.Cs.autoSize&&null!==this.Hm}sp(){return this.kp}fg(t){this.qm=t,this.qm?this.sp().style.setProperty("cursor",t):this.sp().style.removeProperty("cursor")}pg(){return this.qm}vg(t){return _(this.Lm[t]).Zf()}rg(){this.zm.forEach(t=>{t.Tt()})}ag(t){(void 0!==t.autoSize||!this.Hm||void 0===t.width&&void 0===t.height)&&(t.autoSize&&!this.Hm&&this.Zm(),!1===t.autoSize&&null!==this.Hm&&this.ng(),t.autoSize||void 0===t.width&&void 0===t.height||this.Qm(t.width||this.bo,t.height||this.sl))}og(i,s){let e=0,n=0;const h=this.Lm[0],r=(t,e)=>{let n=0;for(let h=0;h<this.Lm.length;h++){const r=this.Lm[h],a=c("left"===t?r.hm():r.rm()),l=a.Qf();if(null!==i&&a.tp(i,e,n,s),n+=l.height,h<this.Lm.length-1){const t=this.zm[h],s=t.Qf();null!==i&&t.tp(i,e,n),n+=s.height}}};if(this.cg()){r("left",0);e+=c(h.hm()).Qf().width}for(let t=0;t<this.Lm.length;t++){const h=this.Lm[t],r=h.Qf();if(null!==i&&h.tp(i,e,n,s),n+=r.height,t<this.Lm.length-1){const s=this.zm[t],h=s.Qf();null!==i&&s.tp(i,e,n),n+=h.height}}if(e+=h.Qf().width,this.ug()){r("right",e);e+=c(h.rm()).Qf().width}const a=(t,s,e)=>{c("left"===t?this.Xm.Pm():this.Xm.Cm()).tp(c(i),s,e)};if(this.Cs.timeScale.visible){const t=this.Xm.Qf();if(null!==i){let e=0;this.cg()&&(a("left",e,n),e=c(h.hm()).Qf().width),this.Xm.tp(i,e,n,s),e+=t.width,this.ug()&&a("right",e,n)}n+=t.height}return t({width:e,height:n})}mg(){let i=0,s=0,e=0;for(const t of this.Lm)this.cg()&&(s=Math.max(s,c(t.hm()).nv(),this.Cs.leftPriceScale.minimumWidth)),this.ug()&&(e=Math.max(e,c(t.rm()).nv(),this.Cs.rightPriceScale.minimumWidth)),i+=t.Ao();s=_s(s),e=_s(e);const n=this.bo,h=this.sl,r=Math.max(n-s-e,0),a=1*this.zm.length,l=this.Cs.timeScale.visible;let o=l?Math.max(this.Xm.Dm(),this.Cs.timeScale.minimumHeight):0;var _;o=(_=o)+_%2;const u=a+o,d=h<u?0:h-u,f=d/i;let p=0;const v=window.devicePixelRatio||1;for(let i=0;i<this.Lm.length;++i){const n=this.Lm[i];n.zv(this.ss.qs()[i]);let h=0,a=0;a=i===this.Lm.length-1?Math.ceil((d-p)*v)/v:Math.round(n.Ao()*f*v)/v,h=Math.max(a,2),p+=h,n.av(t({width:r,height:h})),this.cg()&&n.Qv(s,"left"),this.ug()&&n.Qv(e,"right"),n.lp()&&this.ss.pu(n.lp(),h)}this.Xm.km(t({width:l?r:0,height:o}),l?s:0,l?e:0),this.ss.Bo(r),this.Wm!==s&&(this.Wm=s),this.$m!==e&&(this.$m=e)}Km(t){t?this.kp.addEventListener("wheel",this.jm,{passive:!1}):this.kp.removeEventListener("wheel",this.jm)}gg(t){switch(t.deltaMode){case t.DOM_DELTA_PAGE:return 120;case t.DOM_DELTA_LINE:return 32}return Ns?1/window.devicePixelRatio:1}Gm(t){if(!(0!==t.deltaX&&this.Cs.handleScroll.mouseWheel||0!==t.deltaY&&this.Cs.handleScale.mouseWheel))return;const i=this.gg(t),s=i*t.deltaX/100,e=-i*t.deltaY/100;if(t.cancelable&&t.preventDefault(),0!==e&&this.Cs.handleScale.mouseWheel){const i=Math.sign(e)*Math.min(1,Math.abs(e)),s=t.clientX-this.kp.getBoundingClientRect().left;this.ti().Su(s,i)}0!==s&&this.Cs.handleScroll.mouseWheel&&this.ti().xu(-80*s)}hg(t,i){const s=t.ee();3===s&&this.wg(),3!==s&&2!==s||(this.Mg(t),this.bg(t,i),this.Xm.Tt(),this.Lm.forEach(t=>{t.Wv()}),3===this.Nm?.ee()&&(this.Nm.pe(t),this.wg(),this.Mg(this.Nm),this.bg(this.Nm,i),t=this.Nm,this.Nm=null)),this.ov(t)}bg(t,i){for(const s of t.fe())this.ve(s,i)}Mg(t){const i=this.ss.qs();for(let s=0;s<i.length;s++)t.ne(s).se&&i[s].Zo()}ve(t,i){const s=this.ss.Bt();switch(t.ae){case 0:s.zc();break;case 1:s.Oc(t.Nt);break;case 2:s.ue(t.Nt);break;case 3:s.de(t.Nt);break;case 4:s.Pc();break;case 5:t.Nt.Ec(i)||s.de(t.Nt.Ac(i))}}tu(t){null!==this.Nm?this.Nm.pe(t):this.Nm=t,this.Um||(this.Um=!0,this.Om=window.requestAnimationFrame(t=>{if(this.Um=!1,this.Om=0,null!==this.Nm){const i=this.Nm;this.Nm=null,this.hg(i,t);for(const s of i.fe())if(5===s.ae&&!s.Nt.Ec(t)){this.ti().oe(s.Nt);break}}}))}wg(){this.tg()}eg(t){this.Ym.removeChild(t.Xf()),t.m()}tg(){const t=this.ss.qs(),i=t.length,s=this.Lm.length;for(let t=i;t<s;t++){const t=_(this.Lm.pop());this.Ym.removeChild(t.Xf()),t.Jv().u(this),t.Xv().u(this),t.m();const i=this.zm.pop();void 0!==i&&this.eg(i)}for(let e=s;e<i;e++){const i=new Bs(this,t[e]);if(i.Jv().i(this.Sg.bind(this,i),this),i.Xv().i(this.xg.bind(this,i),this),this.Lm.push(i),e>0){const t=new gs(this,e-1,e);this.zm.push(t),this.Ym.insertBefore(t.Xf(),this.Xm.Xf())}this.Ym.insertBefore(i.Xf(),this.Xm.Xf())}for(let s=0;s<i;s++){const i=t[s],e=this.Lm[s];e.lp()!==i?e.zv(i):e.Lv()}this.ig(),this.mg()}yg(t,i,s,e){const n=new Map;if(null!==t){this.ss.Gs().forEach(i=>{const s=i.Js().$h(t);null!==s&&n.set(i,s)})}let h;if(null!==t){const i=this.ss.Bt().es(t)?.originalTime;void 0!==i&&(h=i)}const r=this.ti().ou(),a=null!==r&&r.n_ instanceof Gt?r.n_:void 0,l=null!==r&&void 0!==r.h_?r.h_.je:void 0,o=this.Pg(e);return{Cg:h,Vn:t??void 0,Tg:i??void 0,kg:-1!==o?o:void 0,Dg:a,Vg:n,Rg:l,Eg:s??void 0}}Pg(t){let i=-1;if(t)i=this.Lm.indexOf(t);else{const t=this.ti().du().Hs();null!==t&&(i=this.ti().qs().indexOf(t))}return i}Sg(t,i,s,e){this.yv.p(()=>this.yg(i,s,e,t))}xg(t,i,s,e){this.Pv.p(()=>this.yg(i,s,e,t))}Jm(t,i,s){this.fg(this.ti().ou()?.a_??null),this.Zc.p(()=>this.yg(t,i,s))}ig(){const t=this.Cs.timeScale.visible?"":"none";this.Xm.Xf().style.display=t}cg(){return this.Lm[0].lp().No().W().visible}ug(){return this.Lm[0].lp().Uo().W().visible}Zm(){return"ResizeObserver"in window&&(this.Hm=new ResizeObserver(t=>{const i=t[t.length-1];i&&this.Qm(i.contentRect.width,i.contentRect.height)}),this.Hm.observe(this.Rp,{box:"border-box"}),!0)}ng(){null!==this.Hm&&this.Hm.disconnect(),this.Hm=null}}function Hs(t){return Boolean(t.handleScroll.mouseWheel||t.handleScale.mouseWheel)}function qs(t){return void 0===t.open&&void 0===t.value}function Ys(t){return function(t){return void 0!==t.open}(t)||function(t){return void 0!==t.value}(t)}function js(t,i,s,e){const n=s.value,h={Vn:i,wt:t,Nt:[n,n,n,n],Cg:e};return void 0!==s.color&&(h.V=s.color),h}function Gs(t,i,s,e){const n=s.value,h={Vn:i,wt:t,Nt:[n,n,n,n],Cg:e};return void 0!==s.lineColor&&(h.gt=s.lineColor),void 0!==s.topColor&&(h.wh=s.topColor),void 0!==s.bottomColor&&(h.Mh=s.bottomColor),h}function Ks(t,i,s,e){const n=s.value,h={Vn:i,wt:t,Nt:[n,n,n,n],Cg:e};return void 0!==s.topLineColor&&(h.bh=s.topLineColor),void 0!==s.bottomLineColor&&(h.Sh=s.bottomLineColor),void 0!==s.topFillColor1&&(h.xh=s.topFillColor1),void 0!==s.topFillColor2&&(h.yh=s.topFillColor2),void 0!==s.bottomFillColor1&&(h.Ph=s.bottomFillColor1),void 0!==s.bottomFillColor2&&(h.Ch=s.bottomFillColor2),h}function Js(t,i,s,e){const n={Vn:i,wt:t,Nt:[s.open,s.high,s.low,s.close],Cg:e};return void 0!==s.color&&(n.V=s.color),n}function Xs(t,i,s,e){const n={Vn:i,wt:t,Nt:[s.open,s.high,s.low,s.close],Cg:e};return void 0!==s.color&&(n.V=s.color),void 0!==s.borderColor&&(n.Ut=s.borderColor),void 0!==s.wickColor&&(n.gh=s.wickColor),n}function Zs(t,i,s,e,n){const h=_(n)(s),r=Math.max(...h),a=Math.min(...h),l=h[h.length-1],o=[l,r,a,l],{time:c,color:u,...d}=s;return{Vn:i,wt:t,Nt:o,Cg:e,sn:d,V:u}}function Qs(t){return void 0!==t.Nt}function te(t,i){return void 0!==i.customValues&&(t.Ag=i.customValues),t}function ie(t){return(i,s,e,n,h,r)=>function(t,i){return i?i(t):qs(t)}(e,r)?te({wt:i,Vn:s,Cg:n},e):te(t(i,s,e,n,h),e)}function se(t){return{Candlestick:ie(Xs),Bar:ie(Js),Area:ie(Gs),Baseline:ie(Ks),Histogram:ie(js),Line:ie(js),Custom:ie(Zs)}[t]}function ee(t){return{Vn:0,Fg:new Map,Ur:t}}function ne(t,i){if(void 0!==t&&0!==t.length)return{Bg:i.key(t[0].wt),Ig:i.key(t[t.length-1].wt)}}function he(t){let i;return t.forEach(t=>{void 0===i&&(i=t.Cg)}),_(i)}class re{constructor(t){this.Lg=new Map,this.zg=new Map,this.Og=new Map,this.Wg=[],this.__=t}m(){this.Lg.clear(),this.zg.clear(),this.Og.clear(),this.Wg=[]}$g(t,i){let s=0!==this.Lg.size,e=!1;const n=this.zg.get(t);if(void 0!==n)if(1===this.zg.size)s=!1,e=!0,this.Lg.clear();else for(const i of this.Wg)i.pointData.Fg.delete(t)&&(e=!0);let h=[];if(0!==i.length){const s=i.map(t=>t.time),n=this.__.createConverterToInternalObj(i),r=se(t.Vh()),a=t.da(),l=t.pa();h=i.map((i,h)=>{const o=n(i.time),_=this.__.key(o);let c=this.Lg.get(_);void 0===c&&(c=ee(o),this.Lg.set(_,c),e=!0);const u=r(o,c.Vn,i,s[h],a,l);return c.Fg.set(t,u),u})}s&&this.Ng(),this.Ug(t,h);let r=-1;if(e){const t=[];this.Lg.forEach(i=>{t.push({timeWeight:0,time:i.Ur,pointData:i,originalTime:he(i.Fg)})}),t.sort((t,i)=>this.__.key(t.time)-this.__.key(i.time)),r=this.Hg(t)}return this.qg(t,r,function(t,i,s){const e=ne(t,s),n=ne(i,s);if(void 0!==e&&void 0!==n)return{Yg:!1,Lr:e.Ig>=n.Ig&&e.Bg>=n.Bg}}(this.zg.get(t),n,this.__))}Iu(t){return this.$g(t,[])}jg(t,i,s){const e=i;!function(t){void 0===t.Cg&&(t.Cg=t.time)}(e),this.__.preprocessData(i);const n=this.__.createConverterToInternalObj([i])(i.time),h=this.Og.get(t);if(!s&&void 0!==h&&this.__.key(n)<this.__.key(h))throw new Error(`Cannot update oldest data, last time=${h}, new time=${n}`);let r=this.Lg.get(this.__.key(n));if(s&&void 0===r)throw new Error("Cannot update non-existing data point when historicalUpdate is true");const a=void 0===r;void 0===r&&(r=ee(n),this.Lg.set(this.__.key(n),r));const l=se(t.Vh()),o=t.da(),_=t.pa(),c=l(n,r.Vn,i,e.Cg,o,_);r.Fg.set(t,c),s?this.Gg(t,c,r.Vn):this.Kg(t,c);const u={Lr:Qs(c),Yg:s};if(!a)return this.qg(t,-1,u);const d={timeWeight:0,time:r.Ur,pointData:r,originalTime:he(r.Fg)},f=Ct(this.Wg,this.__.key(d.time),(t,i)=>this.__.key(t.time)<i);this.Wg.splice(f,0,d);for(let t=f;t<this.Wg.length;++t)ae(this.Wg[t].pointData,t);return this.__.fillWeightsForPoints(this.Wg,f),this.qg(t,f,u)}Jg(t,i){const s=this.zg.get(t);if(void 0===s||i<=0)return[[],this.Xg()];i=Math.min(i,s.length);const e=s.splice(-i).reverse();0===s.length?this.Og.delete(t):this.Og.set(t,s[s.length-1].wt);for(const i of e){const s=this.Lg.get(this.__.key(i.wt));if(s&&(s.Fg.delete(t),0===s.Fg.size)){this.Lg.delete(this.__.key(s.Ur)),this.Wg.splice(s.Vn,1);for(let t=s.Vn;t<this.Wg.length;++t)ae(this.Wg[t].pointData,t)}}return[e,this.qg(t,this.Wg.length-1,{Yg:!1,Lr:!1})]}Kg(t,i){let s=this.zg.get(t);void 0===s&&(s=[],this.zg.set(t,s));const e=0!==s.length?s[s.length-1]:null;null===e||this.__.key(i.wt)>this.__.key(e.wt)?Qs(i)&&s.push(i):Qs(i)?s[s.length-1]=i:s.splice(-1,1),this.Og.set(t,i.wt)}Gg(t,i,s){const e=this.zg.get(t);if(void 0===e)return;const n=Ct(e,s,(t,i)=>t.Vn<i);Qs(i)?e[n]=i:e.splice(n,1)}Ug(t,i){0!==i.length?(this.zg.set(t,i.filter(Qs)),this.Og.set(t,i[i.length-1].wt)):(this.zg.delete(t),this.Og.delete(t))}Ng(){for(const t of this.Wg)0===t.pointData.Fg.size&&this.Lg.delete(this.__.key(t.time))}Hg(t){let i=-1;for(let s=0;s<this.Wg.length&&s<t.length;++s){const e=this.Wg[s],n=t[s];if(this.__.key(e.time)!==this.__.key(n.time)){i=s;break}n.timeWeight=e.timeWeight,ae(n.pointData,s)}if(-1===i&&this.Wg.length!==t.length&&(i=Math.min(this.Wg.length,t.length)),-1===i)return-1;for(let s=i;s<t.length;++s)ae(t[s].pointData,s);return this.__.fillWeightsForPoints(t,i),this.Wg=t,i}Zg(){if(0===this.zg.size)return null;let t=0;return this.zg.forEach(i=>{0!==i.length&&(t=Math.max(t,i[i.length-1].Vn))}),t}qg(t,i,s){const e=this.Xg();if(-1!==i)this.zg.forEach((i,n)=>{e.Oo.set(n,{sn:i,Qg:n===t?s:void 0})}),this.zg.has(t)||e.Oo.set(t,{sn:[],Qg:s}),e.Bt.tw=this.Wg,e.Bt.iw=i;else{const i=this.zg.get(t);e.Oo.set(t,{sn:i||[],Qg:s})}return e}Xg(){return{Oo:new Map,Bt:{uc:this.Zg()}}}}function ae(t,i){t.Vn=i,t.Fg.forEach(t=>{t.Vn=i})}function le(t,i){return t.wt<i}function oe(t,i){return i<t.wt}function _e(t,i,s){const e=i.Hr(),n=i.Si(),h=Ct(t,e,le),r=Tt(t,n,oe);if(!s)return{from:h,to:r};let a=h,l=r;return h>0&&h<t.length&&t[h].wt>=e&&(a=h-1),r>0&&r<t.length&&t[r-1].wt<=n&&(l=r+1),{from:a,to:l}}class ce{constructor(t,i,s){this.sw=!0,this.ew=!0,this.nw=!0,this.hw=[],this.rw=null,this.Xe=t,this.Ze=i,this.aw=s}Tt(t){this.sw=!0,"data"===t&&(this.ew=!0),"options"===t&&(this.nw=!0)}Dt(){return this.Xe.Et()?(this.lw(),null===this.rw?null:this.ow):null}_w(){this.hw=this.hw.map(t=>({...t,...this.Xe.Vr().Rh(t.wt)}))}cw(){this.rw=null}lw(){this.ew&&(this.uw(),this.ew=!1),this.nw&&(this._w(),this.nw=!1),this.sw&&(this.dw(),this.sw=!1)}dw(){const t=this.Xe.$t(),i=this.Ze.Bt();if(this.cw(),i.Ki()||t.Ki())return;const s=i.Cn();if(null===s)return;if(0===this.Xe.Js().Lh())return;const e=this.Xe.Lt();null!==e&&(this.rw=_e(this.hw,s,this.aw),this.fw(t,i,e.Nt),this.pw())}}class ue{constructor(t,i){this.mw=t,this.ji=i}nt(t,i,s){this.mw.draw(t,this.ji,i,s)}}class de extends ce{constructor(t,i,s){super(t,i,!1),this.er=s,this.ow=new ue(this.er.renderer(),i=>{const s=t.Lt();return null===s?null:t.$t().Wt(i,s.Nt)})}fa(t){return this.er.priceValueBuilder(t)}va(t){return this.er.isWhitespace(t)}uw(){const t=this.Xe.Vr();this.hw=this.Xe.Js().Uh().map(i=>({wt:i.Vn,ct:NaN,...t.Rh(i.Vn),gw:i.sn}))}fw(t,i){i.dc(this.hw,b(this.rw))}pw(){this.er.update({bars:this.hw.map(fe),barSpacing:this.Ze.Bt().Mc(),visibleRange:this.rw},this.Xe.W())}}function fe(t){return{x:t.ct,time:t.wt,originalData:t.gw,barColor:t.fh}}const pe={color:"#2196f3"},ve=(t,i,s)=>{const e=u(s);return new de(t,i,e)};function me(t){const i={value:t.Nt[3],time:t.Cg};return void 0!==t.Ag&&(i.customValues=t.Ag),i}function ge(t){const i=me(t);return void 0!==t.V&&(i.color=t.V),i}function we(t){const i=me(t);return void 0!==t.gt&&(i.lineColor=t.gt),void 0!==t.wh&&(i.topColor=t.wh),void 0!==t.Mh&&(i.bottomColor=t.Mh),i}function Me(t){const i=me(t);return void 0!==t.bh&&(i.topLineColor=t.bh),void 0!==t.Sh&&(i.bottomLineColor=t.Sh),void 0!==t.xh&&(i.topFillColor1=t.xh),void 0!==t.yh&&(i.topFillColor2=t.yh),void 0!==t.Ph&&(i.bottomFillColor1=t.Ph),void 0!==t.Ch&&(i.bottomFillColor2=t.Ch),i}function be(t){const i={open:t.Nt[0],high:t.Nt[1],low:t.Nt[2],close:t.Nt[3],time:t.Cg};return void 0!==t.Ag&&(i.customValues=t.Ag),i}function Se(t){const i=be(t);return void 0!==t.V&&(i.color=t.V),i}function xe(t){const i=be(t),{V:s,Ut:e,gh:n}=t;return void 0!==s&&(i.color=s),void 0!==e&&(i.borderColor=e),void 0!==n&&(i.wickColor=n),i}function ye(t){return{Area:we,Line:ge,Baseline:Me,Histogram:ge,Bar:Se,Candlestick:xe,Custom:Pe}[t]}function Pe(t){const i=t.Cg;return{...t.sn,time:i}}const Ce={vertLine:{color:"#9598A1",width:1,style:3,visible:!0,labelVisible:!0,labelBackgroundColor:"#131722"},horzLine:{color:"#9598A1",width:1,style:3,visible:!0,labelVisible:!0,labelBackgroundColor:"#131722"},mode:1},Te={vertLines:{color:"#D6DCDE",style:0,visible:!0},horzLines:{color:"#D6DCDE",style:0,visible:!0}},ke={background:{type:"solid",color:"#FFFFFF"},textColor:"#191919",fontSize:12,fontFamily:S,panes:{enableResize:!0,separatorColor:"#E0E3EB",separatorHoverColor:"rgba(178, 181, 189, 0.2)"},attributionLogo:!0,colorSpace:"srgb",colorParsers:[]},De={autoScale:!0,mode:0,invertScale:!1,alignLabels:!0,borderVisible:!0,borderColor:"#2B2B43",entireTextOnly:!1,visible:!1,ticksVisible:!1,scaleMargins:{bottom:.1,top:.2},minimumWidth:0,ensureEdgeTickMarksVisible:!1},Ve={rightOffset:0,barSpacing:6,minBarSpacing:.5,maxBarSpacing:0,fixLeftEdge:!1,fixRightEdge:!1,lockVisibleTimeRangeOnResize:!1,rightBarStaysOnScroll:!1,borderVisible:!0,borderColor:"#2B2B43",visible:!0,timeVisible:!1,secondsVisible:!0,shiftVisibleRangeOnNewBar:!0,allowShiftVisibleRangeOnWhitespaceReplacement:!1,ticksVisible:!1,uniformDistribution:!1,minimumHeight:0,allowBoldLabels:!0,ignoreWhitespaceIndices:!1};function Re(){return{addDefaultPane:!0,width:0,height:0,autoSize:!1,layout:ke,crosshair:Ce,grid:Te,overlayPriceScales:{...De},leftPriceScale:{...De,visible:!1},rightPriceScale:{...De,visible:!0},timeScale:Ve,localization:{locale:as?navigator.language:"",dateFormat:"dd MMM 'yy"},handleScroll:{mouseWheel:!0,pressedMouseMove:!0,horzTouchDrag:!0,vertTouchDrag:!0},handleScale:{axisPressedMouseMove:{time:!0,price:!0},axisDoubleClickReset:{time:!0,price:!0},mouseWheel:!0,pinch:!0},kineticScroll:{mouse:!1,touch:!0},trackingMode:{exitMode:1}}}class Ee{constructor(t,i,s){this.Uf=t,this.ww=i,this.Mw=s??0}applyOptions(t){this.Uf.ti().cu(this.ww,t,this.Mw)}options(){return this.ji().W()}width(){return J(this.ww)?this.Uf._g(this.ww):0}setVisibleRange(t){this.setAutoScale(!1),this.ji().$l(new mt(t.from,t.to))}getVisibleRange(){let t,i,s=this.ji().th();if(null===s)return null;if(this.ji().Qa()){const e=this.ji().po(),n=$i(e);s=ui(s,this.ji().il()),t=Number((Math.round(s.qn()/e)*e).toFixed(n)),i=Number((Math.round(s.Yn()/e)*e).toFixed(n))}else t=s.qn(),i=s.Yn();return{from:t,to:i}}setAutoScale(t){this.applyOptions({autoScale:t})}ji(){return c(this.Uf.ti().uu(this.ww,this.Mw)).$t}}class Ae{constructor(t,i,s,e){this.Uf=t,this.Ct=s,this.bw=i,this.Sw=e}getHeight(){return this.Ct.qt()}setHeight(t){const i=this.Uf.ti(),s=i.Hu(this.Ct);i.mu(s,t)}getStretchFactor(){return this.Ct.Ao()}setStretchFactor(t){this.Ct.Fo(t),this.Uf.ti().Fr()}paneIndex(){return this.Uf.ti().Hu(this.Ct)}moveTo(t){const i=this.paneIndex();i!==t&&(o(t>=0&&t<this.Uf.qf().length,"Invalid pane index"),this.Uf.ti().wu(i,t))}getSeries(){return this.Ct.Oo().map(t=>this.bw(t))??[]}getHTMLElement(){const t=this.Uf.qf();return t&&0!==t.length&&t[this.paneIndex()]?t[this.paneIndex()].Xf():null}attachPrimitive(t){this.Ct.ca(t),t.attached&&t.attached({chart:this.Sw,requestUpdate:()=>this.Ct.ti().Fr()})}detachPrimitive(t){this.Ct.ua(t)}priceScale(t){if(null===this.Ct.Ro(t))throw new Error(`Cannot find price scale with id: ${t}`);return new Ee(this.Uf,t,this.paneIndex())}setPreserveEmptyPane(t){this.Ct.Lo(t)}preserveEmptyPane(){return this.Ct.zo()}addCustomSeries(t,i={},s=0){return this.Sw.addCustomSeries(t,i,s)}addSeries(t,i={}){return this.Sw.addSeries(t,i,this.paneIndex())}}const Fe={color:"#FF0000",price:0,lineStyle:2,lineWidth:1,lineVisible:!0,axisLabelVisible:!0,title:"",axisLabelColor:"",axisLabelTextColor:""};class Be{constructor(t){this.sh=t}applyOptions(t){this.sh.ah(t)}options(){return this.sh.W()}xw(){return this.sh}}class Ie{constructor(t,i,s,e,n,h){this.yw=new d,this.Xe=t,this.Pw=i,this.Cw=s,this.__=n,this.Sw=e,this.Tw=h}m(){this.yw.m()}priceFormatter(){return this.Xe.ha()}priceToCoordinate(t){const i=this.Xe.Lt();return null===i?null:this.Xe.$t().Wt(t,i.Nt)}coordinateToPrice(t){const i=this.Xe.Lt();return null===i?null:this.Xe.$t().Ds(t,i.Nt)}barsInLogicalRange(t){if(null===t)return null;const i=new Ei(new Di(t.from,t.to)).T_(),s=this.Xe.Js();if(s.Ki())return null;const e=s.$h(i.Hr(),1),n=s.$h(i.Si(),-1),h=c(s.zh()),r=c(s.Ks());if(null!==e&&null!==n&&e.Vn>n.Vn)return{barsBefore:t.from-h,barsAfter:r-t.to};const a={barsBefore:null===e||e.Vn===h?t.from-h:e.Vn-h,barsAfter:null===n||n.Vn===r?r-t.to:r-n.Vn};return null!==e&&null!==n&&(a.from=e.Cg,a.to=n.Cg),a}setData(t){this.__,this.Xe.Vh(),this.Pw.kw(this.Xe,t),this.Dw("full")}update(t,i=!1){this.Xe.Vh(),this.Pw.Vw(this.Xe,t,i),this.Dw("update")}pop(t=1){const i=this.Pw.Rw(this.Xe,t);0!==i.length&&this.Dw("update");const s=ye(this.seriesType());return i.map(t=>s(t))}dataByIndex(t,i){const s=this.Xe.Js().$h(t,i);if(null===s)return null;return ye(this.seriesType())(s)}data(){const t=ye(this.seriesType());return this.Xe.Js().Uh().map(i=>t(i))}subscribeDataChanged(t){this.yw.i(t)}unsubscribeDataChanged(t){this.yw._(t)}applyOptions(t){this.Xe.ah(t)}options(){return w(this.Xe.W())}priceScale(){return this.Cw.priceScale(this.Xe.$t().ga(),this.getPane().paneIndex())}createPriceLine(t){const i=f(w(Fe),t),s=this.Xe.Or(i);return new Be(s)}removePriceLine(t){this.Xe.Wr(t.xw())}priceLines(){return this.Xe.$r().map(t=>new Be(t))}seriesType(){return this.Xe.Vh()}lastValueData(t){const i=this.Xe.Tn(t);return i.kn?{noData:!0}:{noData:!1,price:i.Mt,color:i.V}}attachPrimitive(t){this.Xe.ca(t),t.attached&&t.attached({chart:this.Sw,series:this,requestUpdate:()=>this.Xe.ti().Fr(),horzScaleBehavior:this.__})}detachPrimitive(t){this.Xe.ua(t),t.detached&&t.detached(),this.Xe.ti().Fr()}getPane(){const t=this.Xe,i=c(this.Xe.ti().$e(t));return this.Tw(i)}moveToPane(t){this.Xe.ti().Wu(this.Xe,t)}seriesOrder(){const t=this.Xe.ti().$e(this.Xe);return null===t?-1:t.Oo().indexOf(this.Xe)}setSeriesOrder(t){const i=this.Xe.ti().$e(this.Xe);null!==i&&i.t_(this.Xe,t)}Dw(t){this.yw.v()&&this.yw.p(t)}}class Le{constructor(t,i,s){this.Ew=new d,this.L_=new d,this.Mm=new d,this.ss=t,this.ur=t.Bt(),this.Xm=i,this.ur.Fc().i(this.Aw.bind(this)),this.ur.Bc().i(this.Fw.bind(this)),this.Xm.Tm().i(this.Bw.bind(this)),this.__=s}m(){this.ur.Fc().u(this),this.ur.Bc().u(this),this.Xm.Tm().u(this),this.Ew.m(),this.L_.m(),this.Mm.m()}scrollPosition(){return this.ur.Sc()}scrollToPosition(t,i){i?this.ur.Rc(t,1e3):this.ss.de(t)}scrollToRealTime(){this.ur.Vc()}getVisibleRange(){const t=this.ur.hc();return null===t?null:{from:t.from.originalTime,to:t.to.originalTime}}setVisibleRange(t){const i={from:this.__.convertHorzItemToInternal(t.from),to:this.__.convertHorzItemToInternal(t.to)},s=this.ur.oc(i);this.ss.zu(s)}getVisibleLogicalRange(){const t=this.ur.nc();return null===t?null:{from:t.Hr(),to:t.Si()}}setVisibleLogicalRange(t){o(t.from<=t.to,"The from index cannot be after the to index."),this.ss.zu(t)}resetTimeScale(){this.ss.ce()}fitContent(){this.ss.zc()}logicalToCoordinate(t){const i=this.ss.Bt();return i.Ki()?null:i.Yt(t)}coordinateToLogical(t){return this.ur.Ki()?null:this.ur.fc(t)}timeToIndex(t,i){const s=this.__.convertHorzItemToInternal(t);return this.ur.tc(s,i)}timeToCoordinate(t){const i=this.timeToIndex(t,!1);return null===i?null:this.ur.Yt(i)}coordinateToTime(t){const i=this.ss.Bt(),s=i.fc(t),e=i.es(s);return null===e?null:e.originalTime}width(){return this.Xm.Zf().width}height(){return this.Xm.Zf().height}subscribeVisibleTimeRangeChange(t){this.Ew.i(t)}unsubscribeVisibleTimeRangeChange(t){this.Ew._(t)}subscribeVisibleLogicalRangeChange(t){this.L_.i(t)}unsubscribeVisibleLogicalRangeChange(t){this.L_._(t)}subscribeSizeChange(t){this.Mm.i(t)}unsubscribeSizeChange(t){this.Mm._(t)}applyOptions(t){this.ur.ah(t)}options(){return{...w(this.ur.W()),barSpacing:this.ur.Mc()}}Aw(){this.Ew.v()&&this.Ew.p(this.getVisibleRange())}Fw(){this.L_.v()&&this.L_.p(this.getVisibleLogicalRange())}Bw(t){this.Mm.p(t.width,t.height)}}function ze(t){return function(t){if(g(t.handleScale)){const i=t.handleScale;t.handleScale={axisDoubleClickReset:{time:i,price:i},axisPressedMouseMove:{time:i,price:i},mouseWheel:i,pinch:i}}else if(void 0!==t.handleScale){const{axisPressedMouseMove:i,axisDoubleClickReset:s}=t.handleScale;g(i)&&(t.handleScale.axisPressedMouseMove={time:i,price:i}),g(s)&&(t.handleScale.axisDoubleClickReset={time:s,price:s})}const i=t.handleScroll;g(i)&&(t.handleScroll={horzTouchDrag:i,vertTouchDrag:i,mouseWheel:i,pressedMouseMove:i})}(t),t}class Oe{constructor(t,i,s){this.Iw=new Map,this.Lw=new Map,this.zw=new d,this.Ow=new d,this.Ww=new d,this.Gc=new WeakMap,this.$w=new re(i);const e=void 0===s?w(Re()):f(w(Re()),ze(s));this.Nw=i,this.Uf=new Us(t,e,i),this.Uf.Jv().i(t=>{this.zw.v()&&this.zw.p(this.Uw(t()))},this),this.Uf.Xv().i(t=>{this.Ow.v()&&this.Ow.p(this.Uw(t()))},this),this.Uf.fu().i(t=>{this.Ww.v()&&this.Ww.p(this.Uw(t()))},this);const n=this.Uf.ti();this.Hw=new Le(n,this.Uf.sg(),this.Nw)}remove(){this.Uf.Jv().u(this),this.Uf.Xv().u(this),this.Uf.fu().u(this),this.Hw.m(),this.Uf.m(),this.Iw.clear(),this.Lw.clear(),this.zw.m(),this.Ow.m(),this.Ww.m(),this.$w.m()}resize(t,i,s){this.autoSizeActive()||this.Uf.Qm(t,i,s)}addCustomSeries(t,i={},s=0){const e=(t=>({type:"Custom",isBuiltIn:!1,defaultOptions:{...pe,...t.defaultOptions()},qw:ve,Yw:t}))(u(t));return this.jw(e,i,s)}addSeries(t,i={},s=0){return this.jw(t,i,s)}removeSeries(t){const i=_(this.Iw.get(t)),s=this.$w.Iu(i);this.Uf.ti().Iu(i),this.Gw(s),this.Iw.delete(t),this.Lw.delete(i)}kw(t,i){this.Gw(this.$w.$g(t,i))}Vw(t,i,s){this.Gw(this.$w.jg(t,i,s))}Rw(t,i){const[s,e]=this.$w.Jg(t,i);return 0!==s.length&&this.Gw(e),s}subscribeClick(t){this.zw.i(t)}unsubscribeClick(t){this.zw._(t)}subscribeCrosshairMove(t){this.Ww.i(t)}unsubscribeCrosshairMove(t){this.Ww._(t)}subscribeDblClick(t){this.Ow.i(t)}unsubscribeDblClick(t){this.Ow._(t)}priceScale(t,i=0){return new Ee(this.Uf,t,i)}timeScale(){return this.Hw}applyOptions(t){this.Uf.ah(ze(t))}options(){return this.Uf.W()}takeScreenshot(t=!1,i=!1){let s,e;try{i||(s=this.Uf.ti().W().crosshair.mode,this.Uf.ah({crosshair:{mode:2}})),e=this.Uf.lg(t)}finally{i||void 0===s||this.Uf.ti().ah({crosshair:{mode:s}})}return e}addPane(t=!1){const i=this.Uf.ti().qu();return i.Lo(t),this.Kw(i)}removePane(t){this.Uf.ti().vu(t)}swapPanes(t,i){this.Uf.ti().gu(t,i)}autoSizeActive(){return this.Uf.dg()}chartElement(){return this.Uf.sp()}panes(){return this.Uf.ti().qs().map(t=>this.Kw(t))}paneSize(t=0){const i=this.Uf.vg(t);return{height:i.height,width:i.width}}setCrosshairPosition(t,i,s){const e=this.Iw.get(s);if(void 0===e)return;const n=this.Uf.ti().$e(e);null!==n&&this.Uf.ti().Vu(t,i,n)}clearCrosshairPosition(){this.Uf.ti().Ru(!0)}horzBehaviour(){return this.Nw}jw(t,i={},s=0){o(void 0!==t.qw),function(t){if(void 0===t||"custom"===t.type)return;const i=t;void 0!==i.minMove&&void 0===i.precision&&(i.precision=$i(i.minMove))}(i.priceFormat),"Candlestick"===t.type&&function(t){void 0!==t.borderColor&&(t.borderUpColor=t.borderColor,t.borderDownColor=t.borderColor),void 0!==t.wickColor&&(t.wickUpColor=t.wickColor,t.wickDownColor=t.wickColor)}(i);const e=f(w(n),w(t.defaultOptions),i),h=t.qw,r=new Gt(this.Uf.ti(),t.type,e,h,t.Yw);this.Uf.ti().Fu(r,s);const a=new Ie(r,this,this,this,this.Nw,t=>this.Kw(t));return this.Iw.set(a,r),this.Lw.set(r,a),a}Gw(t){const i=this.Uf.ti();i.Eu(t.Bt.uc,t.Bt.tw,t.Bt.iw),t.Oo.forEach((t,i)=>i.lt(t.sn,t.Qg)),i.Bt().K_(),i.wc()}Jw(t){return _(this.Lw.get(t))}Uw(t){const i=new Map;t.Vg.forEach((t,s)=>{const e=s.Vh(),n=ye(e)(t);if("Custom"!==e)o(Ys(n));else{const t=s.pa();o(!t||!1===t(n))}i.set(this.Jw(s),n)});const s=void 0!==t.Dg&&this.Lw.has(t.Dg)?this.Jw(t.Dg):void 0;return{time:t.Cg,logical:t.Vn,point:t.Tg,paneIndex:t.kg,hoveredSeries:s,hoveredObjectId:t.Rg,seriesData:i,sourceEvent:t.Eg}}Kw(t){let i=this.Gc.get(t);return i||(i=new Ae(this.Uf,t=>this.Jw(t),t,this),this.Gc.set(t,i)),i}}function We(t){if(m(t)){const i=document.getElementById(t);return o(null!==i,`Cannot find element in DOM with id=${t}`),i}return t}function $e(t,i,s){const e=We(t),n=new Oe(e,i,s);return i.setOptions(n.options()),n}function Ne(t,i){return $e(t,new rs,rs.od(i))}function Ue(){return rs}class He extends ce{constructor(t,i){super(t,i,!0)}fw(t,i,s){i.dc(this.hw,b(this.rw)),t.Hl(this.hw,s,b(this.rw))}Xw(t,i){return{wt:t,Mt:i,ct:NaN,ut:NaN}}uw(){const t=this.Xe.Vr();this.hw=this.Xe.Js().Uh().map(i=>{const s=i.Nt[3];return this.Zw(i.Vn,s,t)})}}function qe(t,i,s,e,n,h,r){if(0===i.length||e.from>=i.length||e.to<=0)return;const{context:a,horizontalPixelRatio:l,verticalPixelRatio:o}=t,_=i[e.from];let c=h(t,_),u=_;if(e.to-e.from<2){const i=n/2;a.beginPath();const s={ct:_.ct-i,ut:_.ut},e={ct:_.ct+i,ut:_.ut};a.moveTo(s.ct*l,s.ut*o),a.lineTo(e.ct*l,e.ut*o),r(t,c,s,e)}else{const n=(i,s)=>{r(t,c,u,s),a.beginPath(),c=i,u=s};let d=u;a.beginPath(),a.moveTo(_.ct*l,_.ut*o);for(let r=e.from+1;r<e.to;++r){d=i[r];const e=h(t,d);switch(s){case 0:a.lineTo(d.ct*l,d.ut*o);break;case 1:a.lineTo(d.ct*l,i[r-1].ut*o),e!==c&&(n(e,d),a.lineTo(d.ct*l,i[r-1].ut*o)),a.lineTo(d.ct*l,d.ut*o);break;case 2:{const[t,s]=Ke(i,r-1,r);a.bezierCurveTo(t.ct*l,t.ut*o,s.ct*l,s.ut*o,d.ct*l,d.ut*o);break}}1!==s&&e!==c&&(n(e,d),a.moveTo(d.ct*l,d.ut*o))}(u!==d||u===d&&1===s)&&r(t,c,u,d)}}const Ye=6;function je(t,i){return{ct:t.ct-i.ct,ut:t.ut-i.ut}}function Ge(t,i){return{ct:t.ct/i,ut:t.ut/i}}function Ke(t,i,s){const e=Math.max(0,i-1),n=Math.min(t.length-1,s+1);var h,r;return[(h=t[i],r=Ge(je(t[s],t[e]),Ye),{ct:h.ct+r.ct,ut:h.ut+r.ut}),je(t[s],Ge(je(t[n],t[i]),Ye))]}function Je(t,i){const s=t.context;s.strokeStyle=i,s.stroke()}class Xe extends D{constructor(){super(...arguments),this.rt=null}lt(t){this.rt=t}ht(t){if(null===this.rt)return;const{_t:i,ot:s,Qw:e,tM:n,dt:h,Jt:r,iM:l}=this.rt;if(null===s)return;const o=t.context;o.lineCap="butt",o.lineWidth=h*t.verticalPixelRatio,a(o,r),o.lineJoin="round";const _=this.sM.bind(this);void 0!==n&&qe(t,i,n,s,e,_,Je),l&&function(t,i,s,e,n){if(e.to-e.from<=0)return;const{horizontalPixelRatio:h,verticalPixelRatio:r,context:a}=t;let l=null;const o=Math.max(1,Math.floor(h))%2/2,_=s*r+o;for(let s=e.to-1;s>=e.from;--s){const e=i[s];if(e){const i=n(t,e);i!==l&&(a.beginPath(),null!==l&&a.fill(),a.fillStyle=i,l=i);const s=Math.round(e.ct*h)+o,c=e.ut*r;a.moveTo(s,c),a.arc(s,c,_,0,2*Math.PI)}}a.fill()}(t,i,l,s,_)}}class Ze extends Xe{sM(t,i){return i.gt}}class Qe extends He{constructor(){super(...arguments),this.ow=new Ze}Zw(t,i,s){return{...this.Xw(t,i),...s.Rh(t)}}pw(){const t=this.Xe.W(),i={_t:this.hw,Jt:t.lineStyle,tM:t.lineVisible?t.lineType:void 0,dt:t.lineWidth,iM:t.pointMarkersVisible?t.pointMarkersRadius||t.lineWidth/2+2:void 0,ot:this.rw,Qw:this.Ze.Bt().Mc()};this.ow.lt(i)}}const tn={type:"Line",isBuiltIn:!0,defaultOptions:{color:"#2196f3",lineStyle:0,lineWidth:3,lineType:0,lineVisible:!0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBorderWidth:2,crosshairMarkerBackgroundColor:"",lastPriceAnimation:0,pointMarkersVisible:!1},qw:(t,i)=>new Qe(t,i)};function sn(t,i){return t.weight>i.weight?t:i}function en(t){return t}class nn{constructor(){this.eM=new d,this.nM=function(t){let i=!1;return function(...s){i||(i=!0,queueMicrotask(()=>{t(...s),i=!1}))}}(()=>this.eM.p(this.hM)),this.hM=0}rM(){return this.eM}m(){this.eM.m()}options(){return this.Cs}setOptions(t){this.Cs=t}preprocessData(t){}updateFormatter(t){this.Cs&&(this.Cs.localization=t)}createConverterToInternalObj(t){return this.nM(),t=>(t>this.hM&&(this.hM=t),t)}key(t){return t}cacheKey(t){return t}convertHorzItemToInternal(t){return t}formatHorzItem(t){return this.aM(t)}formatTickmark(t){return this.aM(t.time)}maxTickMarkWeight(t){return t.reduce(sn,t[0]).weight}fillWeightsForPoints(t,i){const s=t=>t%120==0?10:t%60==0?9:t%36==0?8:t%12==0?7:t%6==0?6:t%3==0?5:t%1==0?4:0;for(let e=i;e<t.length;++e)t[e].timeWeight=s(en(t[e].time));this.hM=t[t.length-1].time,this.nM()}aM(t){if(this.Cs.localization?.timeFormatter)return this.Cs.localization.timeFormatter(t);if(t<12)return`${t}M`;const i=Math.floor(t/12),s=t%12;return 0===s?`${i}Y`:`${i}Y${s}M`}}const hn={yieldCurve:{baseResolution:1,minimumTimeRange:120,startTimeRange:0},timeScale:{ignoreWhitespaceIndices:!0},leftPriceScale:{visible:!0},rightPriceScale:{visible:!1},localization:{priceFormatter:t=>t.toFixed(3)+"%"}},rn={lastValueVisible:!1,priceLineVisible:!1};class an extends Oe{constructor(t,i){const s=f(hn,i||{}),e=new nn;super(t,e,s),e.setOptions(this.options()),this._initWhitespaceSeries()}addSeries(t,i={},s=0){if(t.isBuiltIn&&!1===["Area","Line"].includes(t.type))throw new Error("Yield curve only support Area and Line series");const e={...rn,...i};return super.addSeries(t,e,s)}_initWhitespaceSeries(){const t=this.horzBehaviour(),i=this.addSeries(tn);let s;function e(e){const n=function(t,i){return{ln:Math.max(0,t.startTimeRange),_n:Math.max(0,t.minimumTimeRange,i||0),lM:Math.max(1,t.baseResolution)}}(t.options().yieldCurve,e),h=(({ln:t,_n:i,lM:s})=>`${t}~${i}~${s}`)(n);h!==s&&(s=h,i.setData(function({ln:t,_n:i,lM:s}){return Array.from({length:Math.floor((i-t)/s)+1},(i,e)=>({time:t+e*s}))}(n)))}e(0),t.rM().i(e)}}function ln(t,i){const s=We(t);return new an(s,i)}function on(t,i){return t.weight>i.weight?t:i}class _n{options(){return this.Cs}setOptions(t){this.Cs=t}preprocessData(t){}updateFormatter(t){this.Cs&&(this.Cs.localization=t)}createConverterToInternalObj(t){return t=>t}key(t){return t}cacheKey(t){return t}convertHorzItemToInternal(t){return t}formatHorzItem(t){return t.toFixed(this.xe())}formatTickmark(t,i){return t.time.toFixed(this.xe())}maxTickMarkWeight(t){return t.reduce(on,t[0]).weight}fillWeightsForPoints(t,i){const s=t=>t===100*Math.ceil(t/100)?8:t===50*Math.ceil(t/50)?7:t===25*Math.ceil(t/25)?6:t===10*Math.ceil(t/10)?5:t===5*Math.ceil(t/5)?4:t===Math.ceil(t)?3:2*t===Math.ceil(2*t)?1:0;for(let e=i;e<t.length;++e)t[e].timeWeight=s(t[e].time)}xe(){return this.Cs.localization.precision}}function cn(t,i){return $e(t,new _n,i)}function un(t,i,s,e,n){const{context:h,horizontalPixelRatio:r,verticalPixelRatio:a}=i;h.lineTo(n.ct*r,t*a),h.lineTo(e.ct*r,t*a),h.closePath(),h.fillStyle=s,h.fill()}class dn extends D{constructor(){super(...arguments),this.rt=null}lt(t){this.rt=t}ht(t){if(null===this.rt)return;const{_t:i,ot:s,Qw:e,dt:n,Jt:h,tM:r}=this.rt,l=this.rt.oM??(this.rt._M?0:t.mediaSize.height);if(null===s)return;const o=t.context;o.lineCap="butt",o.lineJoin="round",o.lineWidth=n,a(o,h),o.lineWidth=1,qe(t,i,r,s,e,this.cM.bind(this),un.bind(null,l))}}class fn{uM(t,i){const s=this.dM,{fM:e,pM:n,vM:h,mM:r,oM:a,gM:l,wM:o}=i;if(void 0===this.MM||void 0===s||s.fM!==e||s.pM!==n||s.vM!==h||s.mM!==r||s.oM!==a||s.gM!==l||s.wM!==o){const{verticalPixelRatio:s}=t,_=a||l>0?s:1,c=l*_,u=o===t.bitmapSize.height?o:o*_,d=(a??0)*_,f=t.context.createLinearGradient(0,c,0,u);if(f.addColorStop(0,e),null!=a){const t=Zt((d-c)/(u-c),0,1);f.addColorStop(t,n),f.addColorStop(t,h)}f.addColorStop(1,r),this.MM=f,this.dM=i}return this.MM}}class pn extends dn{constructor(){super(...arguments),this.bM=new fn}cM(t,i){const s=this.rt;return this.bM.uM(t,{fM:i.xh,pM:i.yh,vM:i.Ph,mM:i.Ch,oM:s.oM,gM:s.gM??0,wM:s.wM??t.bitmapSize.height})}}class vn extends Xe{constructor(){super(...arguments),this.SM=new fn}sM(t,i){const s=this.rt;return this.SM.uM(t,{fM:i.bh,pM:i.bh,vM:i.Sh,mM:i.Sh,oM:s.oM,gM:s.gM??0,wM:s.wM??t.bitmapSize.height})}}class mn extends He{constructor(t,i){super(t,i),this.ow=new k,this.xM=new pn,this.yM=new vn,this.ow.et([this.xM,this.yM])}Zw(t,i,s){return{...this.Xw(t,i),...s.Rh(t)}}pw(){const t=this.Xe.Lt();if(null===t)return;const i=this.Xe.W(),s=this.Xe.$t().Wt(i.baseValue.price,t.Nt),e=this.Ze.Bt().Mc();if(null===this.rw||0===this.hw.length)return;let n,h;if(i.relativeGradient){n=this.hw[this.rw.from].ut,h=this.hw[this.rw.from].ut;for(let t=this.rw.from;t<this.rw.to;t++){const i=this.hw[t];i.ut<n&&(n=i.ut),i.ut>h&&(h=i.ut)}}this.xM.lt({_t:this.hw,dt:i.lineWidth,Jt:i.lineStyle,tM:i.lineType,oM:s,gM:n,wM:h,_M:!1,ot:this.rw,Qw:e}),this.yM.lt({_t:this.hw,dt:i.lineWidth,Jt:i.lineStyle,tM:i.lineVisible?i.lineType:void 0,iM:i.pointMarkersVisible?i.pointMarkersRadius||i.lineWidth/2+2:void 0,oM:s,gM:n,wM:h,ot:this.rw,Qw:e})}}const gn={type:"Baseline",isBuiltIn:!0,defaultOptions:{baseValue:{type:"price",price:0},relativeGradient:!1,topFillColor1:"rgba(38, 166, 154, 0.28)",topFillColor2:"rgba(38, 166, 154, 0.05)",topLineColor:"rgba(38, 166, 154, 1)",bottomFillColor1:"rgba(239, 83, 80, 0.05)",bottomFillColor2:"rgba(239, 83, 80, 0.28)",bottomLineColor:"rgba(239, 83, 80, 1)",lineWidth:3,lineStyle:0,lineType:0,lineVisible:!0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBorderWidth:2,crosshairMarkerBackgroundColor:"",lastPriceAnimation:0,pointMarkersVisible:!1},qw:(t,i)=>new mn(t,i)};class wn extends dn{constructor(){super(...arguments),this.bM=new fn}cM(t,i){return this.bM.uM(t,{fM:i.wh,pM:"",vM:"",mM:i.Mh,gM:this.rt?.gM??0,wM:t.bitmapSize.height})}}class Mn extends He{constructor(t,i){super(t,i),this.ow=new k,this.PM=new wn,this.CM=new Ze,this.ow.et([this.PM,this.CM])}Zw(t,i,s){return{...this.Xw(t,i),...s.Rh(t)}}pw(){const t=this.Xe.W();if(null===this.rw||0===this.hw.length)return;let i;if(t.relativeGradient){i=this.hw[this.rw.from].ut;for(let t=this.rw.from;t<this.rw.to;t++){const s=this.hw[t];s.ut<i&&(i=s.ut)}}this.PM.lt({tM:t.lineType,_t:this.hw,Jt:t.lineStyle,dt:t.lineWidth,oM:null,gM:i,_M:t.invertFilledArea,ot:this.rw,Qw:this.Ze.Bt().Mc()}),this.CM.lt({tM:t.lineVisible?t.lineType:void 0,_t:this.hw,Jt:t.lineStyle,dt:t.lineWidth,ot:this.rw,Qw:this.Ze.Bt().Mc(),iM:t.pointMarkersVisible?t.pointMarkersRadius||t.lineWidth/2+2:void 0})}}const bn={type:"Area",isBuiltIn:!0,defaultOptions:{topColor:"rgba( 46, 220, 135, 0.4)",bottomColor:"rgba( 40, 221, 100, 0)",invertFilledArea:!1,relativeGradient:!1,lineColor:"#33D778",lineStyle:0,lineWidth:3,lineType:0,lineVisible:!0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBorderWidth:2,crosshairMarkerBackgroundColor:"",lastPriceAnimation:0,pointMarkersVisible:!1},qw:(t,i)=>new Mn(t,i)};class Sn extends D{constructor(){super(...arguments),this.jt=null,this.TM=0,this.kM=0}lt(t){this.jt=t}ht({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.jt||0===this.jt.Js.length||null===this.jt.ot)return;if(this.TM=this.DM(i),this.TM>=2){Math.max(1,Math.floor(i))%2!=this.TM%2&&this.TM--}this.kM=this.jt.VM?Math.min(this.TM,Math.floor(i)):this.TM;let e=null;const n=this.kM<=this.TM&&this.jt.Mc>=Math.floor(1.5*i);for(let h=this.jt.ot.from;h<this.jt.ot.to;++h){const r=this.jt.Js[h];e!==r.fh&&(t.fillStyle=r.fh,e=r.fh);const a=Math.floor(.5*this.kM),l=Math.round(r.ct*i),o=l-a,_=this.kM,c=o+_-1,u=Math.min(r.Gl,r.Kl),d=Math.max(r.Gl,r.Kl),f=Math.round(u*s)-a,p=Math.round(d*s)+a,v=Math.max(p-f,this.kM);t.fillRect(o,f,_,v);const m=Math.ceil(1.5*this.TM);if(n){if(this.jt.RM){const i=l-m;let e=Math.max(f,Math.round(r.jl*s)-a),n=e+_-1;n>f+v-1&&(n=f+v-1,e=n-_+1),t.fillRect(i,e,o-i,n-e+1)}const i=l+m;let e=Math.max(f,Math.round(r.Jl*s)-a),n=e+_-1;n>f+v-1&&(n=f+v-1,e=n-_+1),t.fillRect(c+1,e,i-c,n-e+1)}}}DM(t){const i=Math.floor(t);return Math.max(i,Math.floor(function(t,i){return Math.floor(.3*t*i)}(c(this.jt).Mc,t)))}}class xn extends ce{constructor(t,i){super(t,i,!1)}fw(t,i,s){i.dc(this.hw,b(this.rw)),t.Yl(this.hw,s,b(this.rw))}EM(t,i,s){return{wt:t,Yr:i.Nt[0],jr:i.Nt[1],Gr:i.Nt[2],Kr:i.Nt[3],ct:NaN,jl:NaN,Gl:NaN,Kl:NaN,Jl:NaN}}uw(){const t=this.Xe.Vr();this.hw=this.Xe.Js().Uh().map(i=>this.Zw(i.Vn,i,t))}}class yn extends xn{constructor(){super(...arguments),this.ow=new Sn}Zw(t,i,s){return{...this.EM(t,i,s),...s.Rh(t)}}pw(){const t=this.Xe.W();this.ow.lt({Js:this.hw,Mc:this.Ze.Bt().Mc(),RM:t.openVisible,VM:t.thinBars,ot:this.rw})}}const Pn={type:"Bar",isBuiltIn:!0,defaultOptions:{upColor:"#26a69a",downColor:"#ef5350",openVisible:!0,thinBars:!0},qw:(t,i)=>new yn(t,i)};class Cn extends D{constructor(){super(...arguments),this.jt=null,this.TM=0}lt(t){this.jt=t}ht(t){if(null===this.jt||0===this.jt.Js.length||null===this.jt.ot)return;const{horizontalPixelRatio:i}=t;if(this.TM=function(t,i){if(t>=2.5&&t<=4)return Math.floor(3*i);const s=1-.2*Math.atan(Math.max(4,t)-4)/(.5*Math.PI),e=Math.floor(t*s*i),n=Math.floor(t*i),h=Math.min(e,n);return Math.max(Math.floor(i),h)}(this.jt.Mc,i),this.TM>=2){Math.floor(i)%2!=this.TM%2&&this.TM--}const s=this.jt.Js;this.jt.AM&&this.FM(t,s,this.jt.ot),this.jt.bi&&this.uv(t,s,this.jt.ot);const e=this.BM(i);(!this.jt.bi||this.TM>2*e)&&this.IM(t,s,this.jt.ot)}FM(t,i,s){if(null===this.jt)return;const{context:e,horizontalPixelRatio:n,verticalPixelRatio:h}=t;let r="",a=Math.min(Math.floor(n),Math.floor(this.jt.Mc*n));a=Math.max(Math.floor(n),Math.min(a,this.TM));const l=Math.floor(.5*a);let o=null;for(let t=s.from;t<s.to;t++){const s=i[t];s.mh!==r&&(e.fillStyle=s.mh,r=s.mh);const _=Math.round(Math.min(s.jl,s.Jl)*h),c=Math.round(Math.max(s.jl,s.Jl)*h),u=Math.round(s.Gl*h),d=Math.round(s.Kl*h);let f=Math.round(n*s.ct)-l;const p=f+a-1;null!==o&&(f=Math.max(o+1,f),f=Math.min(f,p));const v=p-f+1;e.fillRect(f,u,v,_-u),e.fillRect(f,c+1,v,d-c),o=p}}BM(t){let i=Math.floor(1*t);this.TM<=2*i&&(i=Math.floor(.5*(this.TM-1)));const s=Math.max(Math.floor(t),i);return this.TM<=2*s?Math.max(Math.floor(t),Math.floor(1*t)):s}uv(t,i,s){if(null===this.jt)return;const{context:e,horizontalPixelRatio:n,verticalPixelRatio:h}=t;let r="";const a=this.BM(n);let l=null;for(let t=s.from;t<s.to;t++){const s=i[t];s.ph!==r&&(e.fillStyle=s.ph,r=s.ph);let o=Math.round(s.ct*n)-Math.floor(.5*this.TM);const _=o+this.TM-1,c=Math.round(Math.min(s.jl,s.Jl)*h),u=Math.round(Math.max(s.jl,s.Jl)*h);if(null!==l&&(o=Math.max(l+1,o),o=Math.min(o,_)),this.jt.Mc*n>2*a)I(e,o,c,_-o+1,u-c+1,a);else{const t=_-o+1;e.fillRect(o,c,t,u-c+1)}l=_}}IM(t,i,s){if(null===this.jt)return;const{context:e,horizontalPixelRatio:n,verticalPixelRatio:h}=t;let r="";const a=this.BM(n);for(let t=s.from;t<s.to;t++){const s=i[t];let l=Math.round(Math.min(s.jl,s.Jl)*h),o=Math.round(Math.max(s.jl,s.Jl)*h),_=Math.round(s.ct*n)-Math.floor(.5*this.TM),c=_+this.TM-1;if(s.fh!==r){const t=s.fh;e.fillStyle=t,r=t}this.jt.bi&&(_+=a,l+=a,c-=a,o-=a),l>o||e.fillRect(_,l,c-_+1,o-l+1)}}}class Tn extends xn{constructor(){super(...arguments),this.ow=new Cn}Zw(t,i,s){return{...this.EM(t,i,s),...s.Rh(t)}}pw(){const t=this.Xe.W();this.ow.lt({Js:this.hw,Mc:this.Ze.Bt().Mc(),AM:t.wickVisible,bi:t.borderVisible,ot:this.rw})}}const kn={type:"Candlestick",isBuiltIn:!0,defaultOptions:{upColor:"#26a69a",downColor:"#ef5350",wickVisible:!0,borderVisible:!0,borderColor:"#378658",borderUpColor:"#26a69a",borderDownColor:"#ef5350",wickColor:"#737375",wickUpColor:"#26a69a",wickDownColor:"#ef5350"},qw:(t,i)=>new Tn(t,i)};class Dn extends D{constructor(){super(...arguments),this.jt=null,this.LM=[]}lt(t){this.jt=t,this.LM=[]}ht({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.jt||0===this.jt._t.length||null===this.jt.ot)return;this.LM.length||this.zM(i);const e=Math.max(1,Math.floor(s)),n=Math.round(this.jt.OM*s)-Math.floor(e/2),h=n+e;for(let i=this.jt.ot.from;i<this.jt.ot.to;i++){const r=this.jt._t[i],a=this.LM[i-this.jt.ot.from],l=Math.round(r.ut*s);let o,_;t.fillStyle=r.fh,l<=n?(o=l,_=h):(o=n,_=l-Math.floor(e/2)+e),t.fillRect(a.Hr,o,a.Si-a.Hr+1,_-o)}}zM(t){if(null===this.jt||0===this.jt._t.length||null===this.jt.ot)return void(this.LM=[]);const i=Math.ceil(this.jt.Mc*t)<=1?0:Math.max(1,Math.floor(t)),s=Math.round(this.jt.Mc*t)-i;this.LM=new Array(this.jt.ot.to-this.jt.ot.from);for(let i=this.jt.ot.from;i<this.jt.ot.to;i++){const e=this.jt._t[i],n=Math.round(e.ct*t);let h,r;if(s%2){const t=(s-1)/2;h=n-t,r=n+t}else{const t=s/2;h=n-t,r=n+t-1}this.LM[i-this.jt.ot.from]={Hr:h,Si:r,WM:n,en:e.ct*t,wt:e.wt}}for(let t=this.jt.ot.from+1;t<this.jt.ot.to;t++){const s=this.LM[t-this.jt.ot.from],e=this.LM[t-this.jt.ot.from-1];s.wt===e.wt+1&&(s.Hr-e.Si!==i+1&&(e.WM>e.en?e.Si=s.Hr-i-1:s.Hr=e.Si+i+1))}let e=Math.ceil(this.jt.Mc*t);for(let t=this.jt.ot.from;t<this.jt.ot.to;t++){const i=this.LM[t-this.jt.ot.from];i.Si<i.Hr&&(i.Si=i.Hr);const s=i.Si-i.Hr+1;e=Math.min(s,e)}if(i>0&&e<4)for(let t=this.jt.ot.from;t<this.jt.ot.to;t++){const i=this.LM[t-this.jt.ot.from];i.Si-i.Hr+1>e&&(i.WM>i.en?i.Si-=1:i.Hr+=1)}}}class Vn extends He{constructor(){super(...arguments),this.ow=new Dn}Zw(t,i,s){return{...this.Xw(t,i),...s.Rh(t)}}pw(){const t={_t:this.hw,Mc:this.Ze.Bt().Mc(),ot:this.rw,OM:this.Xe.$t().Wt(this.Xe.W().base,c(this.Xe.Lt()).Nt)};this.ow.lt(t)}}const Rn={type:"Histogram",isBuiltIn:!0,defaultOptions:{color:"#26a69a",base:0},qw:(t,i)=>new Vn(t,i)};class En{constructor(t,i){this.Ct=t,this.$M=i,this.NM()}detach(){this.Ct.detachPrimitive(this.$M)}getPane(){return this.Ct}applyOptions(t){this.$M.ah?.(t)}NM(){this.Ct.attachPrimitive(this.$M)}}const An={visible:!0,horzAlign:"center",vertAlign:"center",lines:[]},Fn={color:"rgba(0, 0, 0, 0.5)",fontSize:48,fontFamily:S,fontStyle:"",text:""};class Bn{constructor(t){this.UM=new Map,this.jt=t}draw(t){t.useMediaCoordinateSpace(t=>{if(!this.jt.visible)return;const{context:i,mediaSize:s}=t;let e=0;for(const t of this.jt.lines){if(0===t.text.length)continue;i.font=t.T;const n=this.HM(i,t.text);n>s.width?t.Tc=s.width/n:t.Tc=1,e+=t.lineHeight*t.Tc}let n=0;switch(this.jt.vertAlign){case"top":n=0;break;case"center":n=Math.max((s.height-e)/2,0);break;case"bottom":n=Math.max(s.height-e,0)}for(const t of this.jt.lines){i.save(),i.fillStyle=t.color;let e=0;switch(this.jt.horzAlign){case"left":i.textAlign="left",e=t.lineHeight/2;break;case"center":i.textAlign="center",e=s.width/2;break;case"right":i.textAlign="right",e=s.width-1-t.lineHeight/2}i.translate(e,n),i.textBaseline="top",i.font=t.T,i.scale(t.Tc,t.Tc),i.fillText(t.text,0,t.qM),i.restore(),n+=t.lineHeight*t.Tc}})}HM(t,i){const s=this.YM(t.font);let e=s.get(i);return void 0===e&&(e=t.measureText(i).width,s.set(i,e)),e}YM(t){let i=this.UM.get(t);return void 0===i&&(i=new Map,this.UM.set(t,i)),i}}class In{constructor(t){this.Cs=zn(t)}Tt(t){this.Cs=zn(t)}renderer(){return new Bn(this.Cs)}}function Ln(t){return{...t,T:x(t.fontSize,t.fontFamily,t.fontStyle),lineHeight:t.lineHeight||1.2*t.fontSize,qM:0,Tc:0}}function zn(t){return{...t,lines:t.lines.map(Ln)}}function On(t){return{...Fn,...t}}function Wn(t){return{...An,...t,lines:t.lines?.map(On)??[]}}class $n{constructor(t){this.Cs=Wn(t),this.jM=[new In(this.Cs)]}updateAllViews(){this.jM.forEach(t=>t.Tt(this.Cs))}paneViews(){return this.jM}attached({requestUpdate:t}){this.GM=t}detached(){this.GM=void 0}ah(t){this.Cs=Wn({...this.Cs,...t}),this.GM&&this.GM()}}function Nn(t,i){return new En(t,new $n(i))}const Un={alpha:1,padding:0};class Hn{constructor(t){this.jt=t}draw(t){t.useMediaCoordinateSpace(t=>{const i=t.context,s=this.KM(this.jt,t.mediaSize);s&&this.jt.JM&&(i.globalAlpha=this.jt.alpha??1,i.drawImage(this.jt.JM,s.ct,s.ut,s.ts,s.qt))})}KM(t,i){const{maxHeight:s,maxWidth:e,XM:n,ZM:h,padding:r}=t,a=Math.round(i.width/2),l=Math.round(i.height/2),o=r??0;let _=i.width-2*o,c=i.height-2*o;s&&(c=Math.min(c,s)),e&&(_=Math.min(_,e));const u=_/h,d=c/n,f=Math.min(u,d),p=h*f,v=n*f;return{ct:a-.5*p,ut:l-.5*v,qt:v,ts:p}}}class qn{constructor(t){this.QM=null,this.tb=0,this.ib=0,this.Cs=t,this.M=Yn(this.Cs,this.QM,this.tb,this.ib)}sb(t){void 0!==t.eb&&(this.tb=t.eb),void 0!==t.nb&&(this.ib=t.nb),void 0!==t.hb&&(this.QM=t.hb),this.Tt()}rb(t){this.Cs=t,this.Tt()}zOrder(){return"bottom"}Tt(){this.M=Yn(this.Cs,this.QM,this.tb,this.ib)}renderer(){return new Hn(this.M)}}function Yn(t,i,s,e){return{...t,JM:i,ZM:s,XM:e}}function jn(t){return{...Un,...t}}class Gn{constructor(t,i){this.ab=null,this.lb=t,this.Cs=jn(i),this.jM=[new qn(this.Cs)]}updateAllViews(){this.jM.forEach(t=>t.Tt())}paneViews(){return this.jM}attached(t){const{requestUpdate:i}=t;this.ob=i,this.ab=new Image,this.ab.onload=()=>{const t=this.ab?.naturalHeight??1,i=this.ab?.naturalWidth??1;this.jM.forEach(s=>s.sb({nb:t,eb:i,hb:this.ab})),this.ob&&this.ob()},this.ab.src=this.lb}detached(){this.ob=void 0,this.ab=null}ah(t){this.Cs=jn({...this.Cs,...t}),this._b(),this.GM&&this.GM()}GM(){this.ob&&this.ob()}_b(){this.jM.forEach(t=>t.rb(this.Cs))}}function Kn(t,i,s){return new En(t,new Gn(i,s))}class Jn{constructor(t,i){this.Xe=t,this.lr=i,this.NM()}detach(){this.Xe.detachPrimitive(this.lr)}getSeries(){return this.Xe}applyOptions(t){this.lr&&this.lr.ah&&this.lr.ah(t)}NM(){this.Xe.attachPrimitive(this.lr)}}const Xn={autoScale:!0,zOrder:"normal"};function Zn(t,i){return ti(Math.min(Math.max(t,12),30)*i)}function Qn(t,i){switch(t){case"arrowDown":case"arrowUp":return Zn(i,1);case"circle":return Zn(i,.8);case"square":return Zn(i,.7)}}function th(t){return function(t){const i=Math.ceil(t);return i%2!=0?i-1:i}(Zn(t,1))}function ih(t){return Math.max(Zn(t,.1),3)}function sh(t,i,s){return i?t:s?Math.ceil(t/2):0}function eh(t,i,s,e){const n=(Qn("arrowUp",e)-1)/2*s.cb,h=(ti(e/2)-1)/2*s.cb;i.beginPath(),t?(i.moveTo(s.ct-n,s.ut),i.lineTo(s.ct,s.ut-n),i.lineTo(s.ct+n,s.ut),i.lineTo(s.ct+h,s.ut),i.lineTo(s.ct+h,s.ut+n),i.lineTo(s.ct-h,s.ut+n),i.lineTo(s.ct-h,s.ut)):(i.moveTo(s.ct-n,s.ut),i.lineTo(s.ct,s.ut+n),i.lineTo(s.ct+n,s.ut),i.lineTo(s.ct+h,s.ut),i.lineTo(s.ct+h,s.ut-n),i.lineTo(s.ct-h,s.ut-n),i.lineTo(s.ct-h,s.ut)),i.fill()}function nh(t,i,s,e,n,h){const r=(Qn("arrowUp",e)-1)/2,a=(ti(e/2)-1)/2;if(n>=i-a-2&&n<=i+a+2&&h>=(t?s:s-r)-2&&h<=(t?s+r:s)+2)return!0;return(()=>{if(n<i-r-3||n>i+r+3||h<(t?s-r-3:s)||h>(t?s:s+r+3))return!1;const e=Math.abs(n-i);return Math.abs(h-s)+3>=e/2})()}class hh{constructor(){this.jt=null,this.Le=new ht,this.$=-1,this.N="",this.Np="",this.ub="normal"}lt(t){this.jt=t}ze(t,i,s){this.$===t&&this.N===i||(this.$=t,this.N=i,this.Np=x(t,i),this.Le.Re()),this.ub=s}Ye(t,i){if(null===this.jt||null===this.jt.ot)return null;for(let s=this.jt.ot.from;s<this.jt.ot.to;s++){const e=this.jt._t[s];if(e&&ah(e,t,i))return{zOrder:"normal",externalId:e.je??""}}return null}draw(t){"aboveSeries"!==this.ub&&t.useBitmapCoordinateSpace(t=>{this.ht(t)})}drawBackground(t){"aboveSeries"===this.ub&&t.useBitmapCoordinateSpace(t=>{this.ht(t)})}ht({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null!==this.jt&&null!==this.jt.ot){t.textBaseline="middle",t.font=this.Np;for(let e=this.jt.ot.from;e<this.jt.ot.to;e++){const n=this.jt._t[e];void 0!==n.ri&&(n.ri.ts=this.Le.Ei(t,n.ri.fb),n.ri.qt=this.$,n.ri.ct=n.ct-n.ri.ts/2),rh(n,t,i,s)}}}}function rh(t,i,s,e){i.fillStyle=t.V,void 0!==t.ri&&function(t,i,s,e,n,h){t.save(),t.scale(n,h),t.fillText(i,s,e),t.restore()}(i,t.ri.fb,t.ri.ct,t.ri.ut,s,e),function(t,i,s){if(0===t.Lh)return;switch(t.pb){case"arrowDown":return void eh(!1,i,s,t.Lh);case"arrowUp":return void eh(!0,i,s,t.Lh);case"circle":return void function(t,i,s){const e=(Qn("circle",s)-1)/2;t.beginPath(),t.arc(i.ct,i.ut,e*i.cb,0,2*Math.PI,!1),t.fill()}(i,s,t.Lh);case"square":return void function(t,i,s){const e=Qn("square",s),n=(e-1)*i.cb/2,h=i.ct-n,r=i.ut-n;t.fillRect(h,r,e*i.cb,e*i.cb)}(i,s,t.Lh)}t.pb}(t,i,function(t,i,s){const e=Math.max(1,Math.floor(i))%2/2;return{ct:Math.round(t.ct*i)+e,ut:t.ut*s,cb:i}}(t,s,e))}function ah(t,i,s){return!(void 0===t.ri||!function(t,i,s,e,n,h){const r=e/2;return n>=t&&n<=t+s&&h>=i-r&&h<=i+r}(t.ri.ct,t.ri.ut,t.ri.ts,t.ri.qt,i,s))||function(t,i,s){if(0===t.Lh)return!1;switch(t.pb){case"arrowDown":return nh(!0,t.ct,t.ut,t.Lh,i,s);case"arrowUp":return nh(!1,t.ct,t.ut,t.Lh,i,s);case"circle":return function(t,i,s,e,n){const h=2+Qn("circle",s)/2,r=t-e,a=i-n;return Math.sqrt(r*r+a*a)<=h}(t.ct,t.ut,t.Lh,i,s);case"square":return function(t,i,s,e,n){const h=Qn("square",s),r=(h-1)/2,a=t-r,l=i-r;return e>=a&&e<=a+h&&n>=l&&n<=l+h}(t.ct,t.ut,t.Lh,i,s)}}(t,i,s)}function lh(t){return"atPriceTop"===t||"atPriceBottom"===t||"atPriceMiddle"===t}function oh(t,i,s,e,n,h,r,a){const l=function(t,i,s){if(lh(i.position)&&void 0!==i.price)return i.price;if("value"in(e=t)&&"number"==typeof e.value)return t.value;var e;if(function(t){return"open"in t&&"high"in t&&"low"in t&&"close"in t}(t)){if("inBar"===i.position)return t.close;if("aboveBar"===i.position)return s?t.low:t.high;if("belowBar"===i.position)return s?t.high:t.low}}(s,i,r.priceScale().options().invertScale);if(void 0===l)return;const o=lh(i.position),_=a.timeScale(),u=p(i.size)?Math.max(i.size,0):1,d=th(_.options().barSpacing)*u,f=d/2;t.Lh=d;switch(i.position){case"inBar":case"atPriceMiddle":return t.ut=c(r.priceToCoordinate(l)),void(void 0!==t.ri&&(t.ri.ut=t.ut+f+h+.6*n));case"aboveBar":case"atPriceTop":{const i=o?0:e.mb;return t.ut=c(r.priceToCoordinate(l))-f-i,void 0!==t.ri&&(t.ri.ut=t.ut-f-.6*n,e.mb+=1.2*n),void(o||(e.mb+=d+h))}case"belowBar":case"atPriceBottom":{const i=o?0:e.gb;return t.ut=c(r.priceToCoordinate(l))+f+i,void 0!==t.ri&&(t.ri.ut=t.ut+f+h+.6*n,e.gb+=1.2*n),void(o||(e.gb+=d+h))}}}class _h{constructor(t,i,s){this.wb=[],this.yt=!0,this.Mb=!0,this.Zt=new hh,this.Mn=t,this.Ep=i,this.jt={_t:[],ot:null},this.Cs=s}renderer(){if(!this.Mn.options().visible)return null;this.yt&&this.bb();const t=this.Ep.options().layout;return this.Zt.ze(t.fontSize,t.fontFamily,this.Cs.zOrder),this.Zt.lt(this.jt),this.Zt}Sb(t){this.wb=t,this.Tt("data")}Tt(t){this.yt=!0,"data"===t&&(this.Mb=!0)}xb(t){this.yt=!0,this.Cs=t}zOrder(){return"aboveSeries"===this.Cs.zOrder?"top":this.Cs.zOrder}bb(){const t=this.Ep.timeScale(),i=this.wb;this.Mb&&(this.jt._t=i.map(t=>({wt:t.time,ct:0,ut:0,Lh:0,pb:t.shape,V:t.color,je:t.id,yb:t.yb,ri:void 0})),this.Mb=!1);const s=this.Ep.options().layout;this.jt.ot=null;const e=t.getVisibleLogicalRange();if(null===e)return;const n=new Di(Math.floor(e.from),Math.ceil(e.to));if(null===this.Mn.data()[0])return;if(0===this.jt._t.length)return;let h=NaN;const r=ih(t.options().barSpacing),a={mb:r,gb:r};this.jt.ot=_e(this.jt._t,n,!0);for(let e=this.jt.ot.from;e<this.jt.ot.to;e++){const n=i[e];n.time!==h&&(a.mb=r,a.gb=r,h=n.time);const l=this.jt._t[e];l.ct=c(t.logicalToCoordinate(n.time)),void 0!==n.text&&n.text.length>0&&(l.ri={fb:n.text,ct:0,ut:0,ts:0,qt:0});const o=this.Mn.dataByIndex(n.time,0);null!==o&&oh(l,n,o,a,s.fontSize,r,this.Mn,this.Ep)}this.yt=!1}}function ch(t){return{...Xn,...t}}class uh{constructor(t){this.er=null,this.wb=[],this.Pb=[],this.Cb=null,this.Mn=null,this.Ep=null,this.Tb=!0,this.kb=null,this.Db=null,this.Vb=null,this.Rb=!0,this.Cs=ch(t)}attached(t){this.Eb(),this.Ep=t.chart,this.Mn=t.series,this.er=new _h(this.Mn,c(this.Ep),this.Cs),this.ob=t.requestUpdate,this.Mn.subscribeDataChanged(t=>this.Dw(t)),this.Rb=!0,this.GM()}GM(){this.ob&&this.ob()}detached(){this.Mn&&this.Cb&&this.Mn.unsubscribeDataChanged(this.Cb),this.Ep=null,this.Mn=null,this.er=null,this.Cb=null}Sb(t){this.Rb=!0,this.wb=t,this.Eb(),this.Tb=!0,this.Db=null,this.GM()}Ab(){return this.wb}paneViews(){return this.er?[this.er]:[]}updateAllViews(){this.Fb()}hitTest(t,i){return this.er?this.er.renderer()?.Ye(t,i)??null:null}autoscaleInfo(t,i){if(this.Cs.autoScale&&this.er){const t=this.Bb();if(t)return{priceRange:null,margins:t}}return null}ah(t){this.Cs=ch({...this.Cs,...t}),this.GM&&this.GM()}Bb(){const t=c(this.Ep).timeScale().options().barSpacing;if(this.Tb||t!==this.Vb){if(this.Vb=t,this.wb.length>0){const i=ih(t),s=1.5*th(t)+2*i,e=this.Ib();this.kb={above:sh(s,e.aboveBar,e.inBar),below:sh(s,e.belowBar,e.inBar)}}else this.kb=null;this.Tb=!1}return this.kb}Ib(){return null===this.Db&&(this.Db=this.wb.reduce((t,i)=>(t[i.position]||(t[i.position]=!0),t),{inBar:!1,aboveBar:!1,belowBar:!1,atPriceTop:!1,atPriceBottom:!1,atPriceMiddle:!1})),this.Db}Eb(){if(!this.Rb||!this.Ep||!this.Mn)return;const t=this.Ep.timeScale(),i=this.Mn?.data();if(null==t.getVisibleLogicalRange()||!this.Mn||0===i.length)return void(this.Pb=[]);const s=t.timeToIndex(c(i[0].time),!0);this.Pb=this.wb.map((i,e)=>{const n=t.timeToIndex(i.time,!0),h=n<s?1:-1,r=c(this.Mn).dataByIndex(n,h),a={time:t.timeToIndex(c(r).time,!1),position:i.position,shape:i.shape,color:i.color,id:i.id,yb:e,text:i.text,size:i.size,price:i.price,Cg:i.time};if("atPriceTop"===i.position||"atPriceBottom"===i.position||"atPriceMiddle"===i.position){if(void 0===i.price)throw new Error(`Price is required for position ${i.position}`);return{...a,position:i.position,price:i.price}}return{...a,position:i.position,price:i.price}}),this.Rb=!1}Fb(t){this.er&&(this.Eb(),this.er.Sb(this.Pb),this.er.xb(this.Cs),this.er.Tt(t))}Dw(t){this.Rb=!0,this.GM()}}class dh extends Jn{constructor(t,i,s){super(t,i),s&&this.setMarkers(s)}setMarkers(t){this.lr.Sb(t)}markers(){return this.lr.Ab()}}function fh(t,i,s){const e=new dh(t,new uh(s??{}));return i&&e.setMarkers(i),e}class ph{constructor(t){this.wb=new Map,this.Lb=t}zb(t,i,s){if(this.Ob(i),void 0!==s){const e=window.setTimeout(()=>{this.wb.delete(i),this.Wb()},s),n={...t,$b:e,Nb:Date.now()+s};this.wb.set(i,n)}else this.wb.set(i,{...t,$b:void 0,Nb:void 0});this.Wb()}Ob(t){const i=this.wb.get(t);i&&void 0!==i.$b&&window.clearTimeout(i.$b),this.wb.delete(t),this.Wb()}Ub(){for(const[t]of this.wb)this.Ob(t)}Hb(){const t=Date.now(),i=[];for(const[s,e]of this.wb)!e.Nb||e.Nb>t?i.push({time:e.time,sign:e.sign,value:e.value}):this.Ob(s);return i}qb(t){this.Lb=t}Wb(){this.Lb&&this.Lb()}}const vh={positiveColor:"#22AB94",negativeColor:"#F7525F",updateVisibilityDuration:5e3};class mh{constructor(t,i,s,e){this.jt=t,this.Yb=i,this.jb=s,this.Gb=e}draw(t){t.useBitmapCoordinateSpace(t=>{const i=t.context,s=Math.max(1,Math.floor(t.horizontalPixelRatio))%2/2,e=4*t.verticalPixelRatio+s;this.jt.forEach(n=>{const h=Math.round(n.ct*t.horizontalPixelRatio)+s;i.beginPath();const r=this.Kb(n.Jb);i.fillStyle=r,i.arc(h,n.ut*t.verticalPixelRatio,e,0,2*Math.PI,!1),i.fill(),n.Jb&&(i.strokeStyle=r,i.lineWidth=Math.floor(2*t.horizontalPixelRatio),i.beginPath(),i.moveTo((n.ct-4.7)*t.horizontalPixelRatio+s,(n.ut-7*n.Jb)*t.verticalPixelRatio),i.lineTo(n.ct*t.horizontalPixelRatio+s,(n.ut-7*n.Jb-7*n.Jb*.5)*t.verticalPixelRatio),i.lineTo((n.ct+4.7)*t.horizontalPixelRatio+s,(n.ut-7*n.Jb)*t.verticalPixelRatio),i.stroke())})})}Kb(t){return 0===t?this.Yb:t>0?this.Gb:this.jb}}class gh{constructor(t,i,s){this.jt=[],this.Mn=t,this.ur=i,this.Cs=s}Tt(t){this.jt=t.map(t=>{const i=this.Mn.priceToCoordinate(t.value);if(null===i)return null;return{ct:c(this.ur.timeToCoordinate(t.time)),ut:i,Jb:t.sign}}).filter(M)}renderer(){const t=function(t,i){return function(t,i){return"Area"===i}(0,i)?t.lineColor:t.color}(this.Mn.options(),this.Mn.seriesType());return new mh(this.jt,t,this.Cs.negativeColor,this.Cs.positiveColor)}}function wh(t,i){return"Line"===i||"Area"===i}class Mh{constructor(t){this.Ep=void 0,this.Mn=void 0,this.jM=[],this.__=null,this.Xb=new Map,this.Zb=new ph(()=>this.GM()),this.Cs={...vh,...t}}ah(t){this.Cs={...this.Cs,...t},this.GM()}Sb(t){this.Zb.Ub();const i=this.__;i&&t.forEach(t=>{this.Zb.zb(t,i.key(t.time))})}Ab(){return this.Zb.Hb()}GM(){this.ob?.()}attached(t){const{chart:i,series:s,requestUpdate:e,horzScaleBehavior:n}=t;this.Ep=i,this.Mn=s,this.__=n;const h=this.Mn.seriesType();if("Area"!==h&&"Line"!==h)throw new Error("UpDownMarkersPrimitive is only supported for Area and Line series types");this.jM=[new gh(this.Mn,this.Ep.timeScale(),this.Cs)],this.ob=e,this.GM()}detached(){this.Ep=void 0,this.Mn=void 0,this.ob=void 0}Yp(){return _(this.Ep)}Oo(){return _(this.Mn)}updateAllViews(){this.jM.forEach(t=>t.Tt(this.Ab()))}paneViews(){return this.jM}lt(t){if(!this.Mn)throw new Error("Primitive not attached to series");const i=this.Mn.seriesType();this.Xb.clear();const s=this.__;s&&t.forEach(t=>{Ys(t)&&wh(0,i)&&this.Xb.set(s.key(t.time),t.value)}),_(this.Mn).setData(t)}Tt(t,i){if(!this.Mn||!this.__)throw new Error("Primitive not attached to series");const s=this.Mn.seriesType(),e=this.__.key(t.time);if(qs(t)&&this.Xb.delete(e),Ys(t)&&wh(0,s)){const i=this.Xb.get(e);i&&this.Zb.zb({time:t.time,value:t.value,sign:bh(t.value,i)},e,this.Cs.updateVisibilityDuration)}_(this.Mn).update(t,i)}Qb(){this.Zb.Ub()}}function bh(t,i){return t===i?0:t-i>0?1:-1}class Sh extends Jn{setData(t){return this.lr.lt(t)}update(t,i){return this.lr.Tt(t,i)}markers(){return this.lr.Ab()}setMarkers(t){return this.lr.Sb(t)}clearMarkers(){return this.lr.Qb()}}function xh(t,i={}){return new Sh(t,new Mh(i))}class yh{constructor(t,i){this.tS=null,this.iS=[],this.Cs={longColors:{entry:i?.longColors?.entry??"#26a69a",exit:i?.longColors?.exit??"#ef5350"},shortColors:{entry:i?.shortColors?.entry??"#ef5350",exit:i?.shortColors?.exit??"#26a69a"},defaultSize:i?.defaultSize??1,entryOffset:i?.entryOffset??0,exitOffset:i?.exitOffset??0},this.tS=fh(t)}addPosition(t){this.iS.push(t),this.sS()}addPositions(t){this.iS.push(...t),this.sS()}setPositions(t){this.iS=[...t],this.sS()}closePosition(t,i,s){const e=this.iS.find(i=>i.id===t);e&&(e.exit=i,s&&e.text?e.text.exit=s:s&&(e.text={exit:s}),this.sS())}removePosition(t){this.iS=this.iS.filter(i=>i.id!==t),this.sS()}clearPositions(){this.iS=[],this.sS()}getPositions(){return this.iS}applyOptions(t){t.longColors&&(this.Cs.longColors={...this.Cs.longColors,...t.longColors}),t.shortColors&&(this.Cs.shortColors={...this.Cs.shortColors,...t.shortColors}),void 0!==t.defaultSize&&(this.Cs.defaultSize=t.defaultSize),void 0!==t.entryOffset&&(this.Cs.entryOffset=t.entryOffset),void 0!==t.exitOffset&&(this.Cs.exitOffset=t.exitOffset),this.sS()}eS(){const t=[];for(const i of this.iS){const s="long"===i.type,e=i.size??this.Cs.defaultSize,n=i.color?.entry??(s?this.Cs.longColors.entry:this.Cs.shortColors.entry),h=i.color?.exit??(s?this.Cs.longColors.exit:this.Cs.shortColors.exit),r={time:i.entry.time,position:"atPriceMiddle",price:i.entry.price+this.Cs.entryOffset,shape:s?"arrowUp":"arrowDown",color:n,size:e};if(i.text?.entry&&(r.text=i.text.entry),i.id&&(r.id=`${i.id}-entry`),t.push(r),i.exit){const n={time:i.exit.time,position:"atPriceMiddle",price:i.exit.price+this.Cs.exitOffset,shape:s?"arrowDown":"arrowUp",color:h,size:e};i.text?.exit&&(n.text=i.text.exit),i.id&&(n.id=`${i.id}-exit`),t.push(n)}}return t}sS(){if(this.tS){const t=this.eS();this.tS.setMarkers(t)}}detach(){this.tS&&(this.tS.detach(),this.tS=null),this.iS=[]}}function Ph(t,i,s){const e=new yh(t,s);return i&&i.length>0&&e.setPositions(i),e}function Ch(t,i,s={}){const e=s.period??20,n=s.color??"#2196F3",h=i.addSeries(tn,{color:n,lineWidth:2,priceFormat:{type:"price",precision:2,minMove:.01}},0),r=()=>{try{const i=t.data();if(!i||0===i.length)return;const s=(t=>{if(!t||t.length<e)return[];const i=[];for(const s of t)"close"in s?i.push(s.close):"value"in s?i.push(s.value):i.push(0);const s=[];for(let n=e-1;n<i.length;n++){let h=0;for(let t=0;t<e;t++)h+=i[n-t];const r=h/e;t[n]&&t[n].time&&s.push({time:t[n].time,value:r})}return s})([...i]);s&&s.length>0&&h.setData(s)}catch(t){console.error("Error calculating SMA:",t)}};return t.subscribeDataChanged(r),r(),h}function Th(t,i,s={}){const e=s.period??12,n=s.color??"#FF9800",h=i.addSeries(tn,{color:n,lineWidth:2,priceFormat:{type:"price",precision:2,minMove:.01}},0),r=()=>{try{const i=t.data();if(!i||0===i.length)return;const s=(t=>{if(!t||t.length<e)return[];const i=[];for(const s of t)"close"in s?i.push(s.close):"value"in s?i.push(s.value):i.push(0);const s=[],n=2/(e+1);let h=0;for(let t=0;t<e;t++)h+=i[t];h/=e,t[e-1]&&t[e-1].time&&s.push({time:t[e-1].time,value:h});for(let r=e;r<i.length;r++)h=(i[r]-h)*n+h,t[r]&&t[r].time&&s.push({time:t[r].time,value:h});return s})([...i]);s&&s.length>0&&h.setData(s)}catch(t){console.error("Error calculating EMA:",t)}};return t.subscribeDataChanged(r),r(),h}function kh(t,i,s={}){const e=s.period??20,n=s.color??"#4CAF50",h=i.addSeries(tn,{color:n,lineWidth:2,priceFormat:{type:"price",precision:2,minMove:.01}},0),r=()=>{try{const i=t.data();if(!i||0===i.length)return;const s=(t=>{if(!t||t.length<e)return[];const i=[];for(const s of t)"close"in s?i.push(s.close):"value"in s?i.push(s.value):i.push(0);const s=[],n=e*(e+1)/2;for(let h=e-1;h<i.length;h++){let r=0;for(let t=0;t<e;t++){const s=t+1;r+=i[h-e+1+t]*s}const a=r/n;t[h]&&t[h].time&&s.push({time:t[h].time,value:a})}return s})([...i]);s&&s.length>0&&h.setData(s)}catch(t){console.error("Error calculating WMA:",t)}};return t.subscribeDataChanged(r),r(),h}function Dh(t,i,s={}){const e=s.period??20,n=s.stdDev??2,h=i.addSeries(tn,{color:s.colorUpper??"#3F51B5",lineWidth:1},0),r=i.addSeries(tn,{color:s.colorMiddle??"#2196F3",lineWidth:2},0),a=i.addSeries(tn,{color:s.colorLower??"#3F51B5",lineWidth:1},0),l=()=>{try{const i=t.data();if(!i||0===i.length)return;const s=(t=>{if(!t||t.length<e)return{nS:[],hS:[],rS:[]};const i=[];for(const s of t)"close"in s?i.push(s.close):"value"in s?i.push(s.value):i.push(0);const s=[],h=[],r=[];for(let a=e-1;a<i.length;a++){let l=0;for(let t=0;t<e;t++)l+=i[a-t];const o=l/e;let _=0;for(let t=0;t<e;t++)_+=Math.pow(i[a-t]-o,2);const c=Math.sqrt(_/e),u=o+c*n,d=o-c*n;if(t[a]&&t[a].time){const i=t[a].time;s.push({time:i,value:u}),h.push({time:i,value:o}),r.push({time:i,value:d})}}return{nS:s,hS:h,rS:r}})([...i]);s.nS.length>0&&(h.setData(s.nS),r.setData(s.hS),a.setData(s.rS))}catch(t){console.error("Error calculating Bollinger Bands:",t)}};return t.subscribeDataChanged(l),l(),{upper:h,middle:r,lower:a}}function Vh(t,i,s={}){const e=s.period??14,n=s.color??"#9C27B0",h=i.addSeries(tn,{color:n,priceFormat:{type:"price",precision:2,minMove:.01}},1);h.priceScale().applyOptions({scaleMargins:{top:.1,bottom:.1},borderVisible:!1,autoScale:!1});const r=()=>{try{const i=t.data();if(!i||0===i.length)return;const s=(t=>{if(!t||t.length<e+1)return[];const i=[];for(const s of t)"close"in s?i.push(s.close):"value"in s?i.push(s.value):i.push(0);const s=[],n=[];for(let t=1;t<i.length;t++)n.push(i[t]-i[t-1]);let h=0,r=0;for(let t=0;t<e;t++)n[t]>0?h+=n[t]:r+=Math.abs(n[t]);h/=e,r/=e;let a=0===r?100:h/r,l=100-100/(1+a);t[e]&&t[e].time&&s.push({time:t[e].time,value:l});for(let i=e;i<n.length;i++){const o=n[i],_=o>0?o:0,c=o<0?Math.abs(o):0;h=(h*(e-1)+_)/e,r=(r*(e-1)+c)/e,a=0===r?100:h/r,l=100-100/(1+a),t[i+1]&&t[i+1].time&&s.push({time:t[i+1].time,value:l})}return s})([...i]);s&&s.length>0&&h.setData(s)}catch(t){console.error("Error calculating RSI:",t)}};return t.subscribeDataChanged(r),r(),h}function Rh(t,i,s={}){const e=s.fastPeriod??12,n=s.slowPeriod??26,h=s.signalPeriod??9,r=i.addSeries(tn,{color:s.colorMACD??"#2196F3",lineWidth:2},2),a=i.addSeries(tn,{color:s.colorSignal??"#FF6D00",lineWidth:2},2),l=i.addSeries(Rn,{color:s.colorHistogram??"#26a69a"},2),o=(t,i)=>{const s=[],e=2/(i+1);let n=0;for(let s=0;s<i;s++)n+=t[s];s.push(n/i);for(let n=i;n<t.length;n++)s.push((t[n]-s[s.length-1])*e+s[s.length-1]);return s},_=()=>{try{const i=t.data();if(!i||0===i.length)return;const s=(t=>{if(!t||t.length<n+h)return{aS:[],lS:[],oS:[]};const i=[];for(const s of t)"close"in s?i.push(s.close):"value"in s?i.push(s.value):i.push(0);const s=o(i,e),r=o(i,n),a=[],l=n-e;for(let t=0;t<r.length;t++)a.push(s[t+l]-r[t]);const _=o(a,h),c=[],u=[],d=[],f=n-1;for(let i=h-1;i<_.length;i++){const s=f+i;if(t[s]&&t[s].time){const e=t[s].time,n=a[i],h=_[i],r=n-h;c.push({time:e,value:n}),u.push({time:e,value:h}),d.push({time:e,value:r,color:r>=0?"#26a69a":"#ef5350"})}}return{aS:c,lS:u,oS:d}})([...i]);s.aS.length>0&&(r.setData(s.aS),a.setData(s.lS),l.setData(s.oS))}catch(t){console.error("Error calculating MACD:",t)}};return t.subscribeDataChanged(_),_(),{macd:r,signal:a,histogram:l}}function Eh(t,i,s={}){const e=s.kPeriod??14,n=s.dPeriod??3,h=i.addSeries(tn,{color:s.colorK??"#2196F3",lineWidth:2},4),r=i.addSeries(tn,{color:s.colorD??"#FF6D00",lineWidth:2},4);h.priceScale().applyOptions({scaleMargins:{top:.1,bottom:.1}});const a=()=>{try{const i=t.data();if(!i||0===i.length)return;const s=(t=>{if(!t||t.length<e)return{_S:[],cS:[]};const i=[];for(let s=e-1;s<t.length;s++){let n=-1/0,h=1/0;for(let i=0;i<e;i++){const e=t[s-i];"high"in e&&"low"in e&&(n=Math.max(n,e.high),h=Math.min(h,e.low))}const r=t[s];if("close"in r){const t=(r.close-h)/(n-h)*100;i.push(t)}}const s=[];for(let n=0;n<i.length;n++){const h=e-1+n;t[h]&&t[h].time&&s.push({time:t[h].time,value:i[n]})}const h=[];if(i.length>=n)for(let s=n-1;s<i.length;s++){let r=0;for(let t=0;t<n;t++)r+=i[s-t];const a=r/n,l=e-1+s;t[l]&&t[l].time&&h.push({time:t[l].time,value:a})}return{_S:s,cS:h}})([...i]);s._S.length>0&&(h.setData(s._S),r.setData(s.cS))}catch(t){console.error("Error calculating Stochastic:",t)}};return t.subscribeDataChanged(a),a(),{k:h,d:r}}function Ah(t,i,s={}){const e=s.period??14,n=s.color??"#FF9800",h=i.addSeries(tn,{color:n,lineWidth:2},6),r=()=>{try{const i=t.data();if(!i||0===i.length)return;const s=(t=>{if(!t||t.length<e+1)return[];const i=[];for(let s=1;s<t.length;s++){const e=t[s],n=t[s-1];if("high"in e&&"low"in e&&"close"in n){const t=e.high-e.low,s=Math.abs(e.high-n.close),h=Math.abs(e.low-n.close),r=Math.max(t,s,h);i.push(r)}}if(i.length<e)return[];const s=[];let n=0;for(let t=0;t<e;t++)n+=i[t];n/=e,t[e]&&t[e].time&&s.push({time:t[e].time,value:n});for(let h=e;h<i.length;h++)n=(n*(e-1)+i[h])/e,t[h+1]&&t[h+1].time&&s.push({time:t[h+1].time,value:n});return s})([...i]);s&&s.length>0&&h.setData(s)}catch(t){console.error("Error calculating ATR:",t)}};return t.subscribeDataChanged(r),r(),h}const Fh=new Map;function Bh(t,i,s={}){const e=s.colorUp??"#26a69a",n=s.colorDown??"#ef5350";Fh.has(t)||Fh.set(t,new Map);const h=i.addSeries(Rn,{color:e,priceFormat:{type:"volume"},priceScaleId:""},3);h.priceScale().applyOptions({scaleMargins:{top:.8,bottom:0}});const r=()=>{try{const i=(()=>{const i=t.data(),s=Fh.get(t);if(!i||0===i.length)return[];if(!s||0===s.size)return[];const h=[];for(const t of i){const i="string"==typeof t.time?t.time:String(t.time),r=s.get(i);r&&"close"in t&&"open"in t&&h.push({time:t.time,value:r,color:t.close>=t.open?e:n})}return h})();i.length>0&&h.setData(i)}catch(t){console.error("Error calculating Volume:",t)}};return t.subscribeDataChanged(r),r(),h}function Ih(t,i){Fh.has(t)||Fh.set(t,new Map);const s=Fh.get(t);s.clear();for(const t of i)if("time"in t&&"volume"in t){const i="string"==typeof t.time?t.time:String(t.time);s.set(i,t.volume)}}const Lh=new Map;function zh(t,i,s={}){const e=s.color??"#2196F3";Lh.has(t)||Lh.set(t,new Map);const n=i.addSeries(tn,{color:e,lineWidth:2},5),h=()=>{try{const i=(()=>{const i=t.data(),s=Lh.get(t);if(!i||i.length<2)return[];if(!s||0===s.size)return[];const e=[];let n=0;e.push({time:i[0].time,value:n});for(let t=1;t<i.length;t++){const h=i[t],r=i[t-1],a="string"==typeof h.time?h.time:String(h.time),l=s.get(a);l&&"close"in h&&"close"in r&&(h.close>r.close?n+=l:h.close<r.close&&(n-=l),e.push({time:h.time,value:n}))}return e})();i.length>0&&n.setData(i)}catch(t){console.error("Error calculating OBV:",t)}};return t.subscribeDataChanged(h),h(),n}function Oh(t,i){Lh.has(t)||Lh.set(t,new Map);const s=Lh.get(t);s.clear();for(const t of i)if("time"in t&&"volume"in t){const i="string"==typeof t.time?t.time:String(t.time);s.set(i,t.volume)}}class Wh{constructor(t){this.uS=t}draw(t){t.useBitmapCoordinateSpace(t=>{const i=t.context,s=this.uS.getSessionBoxes();if(s&&0!==s.length)for(const e of s)this.dS(i,e,t.horizontalPixelRatio,t.verticalPixelRatio)})}dS(t,i,s,e){const n=i.fS||i.startTime,h=i.pS||i.endTime,r=i.V||i.color,a=i.vS||i.opacity;if(!i||!n||!h)return;const l=this.uS.getChart().timeScale(),o=l.timeToCoordinate(n),_=l.timeToCoordinate(h);if(null===o||null===_)return;const c=o*s,u=_*s,d=0*e,f=t.canvas.height/e*e;t.fillStyle=this.mS(r,a),t.fillRect(c,d,u-c,f-d)}mS(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}}class $h{constructor(t){this.Zt=new Wh(t)}renderer(){return this.Zt}zOrder(){return"bottom"}}const Nh=[{name:"Tokyo",startHour:0,endHour:9,color:"#FF6B00",opacity:.1},{name:"London",startHour:8,endHour:17,color:"#2962FF",opacity:.1},{name:"New York",startHour:13,endHour:22,color:"#089981",opacity:.1}];class Uh{constructor(t,i,s={}){this.gS=[],this.$M=null,this.er=null,this.Ep=t,this.Mn=i,this.Cs={sessions:s.sessions||Nh,showOverlaps:s.showOverlaps??!0,overlapColor:s.overlapColor||"#9C27B0",overlapOpacity:s.overlapOpacity||.15,enabled:s.enabled??!0},this.wS(),this.Cs.enabled&&this.MS()}wS(){this.er=new $h(this);const t={attached:t=>{},detached:()=>{},paneViews:()=>this.er?[this.er]:[],updateAllViews:()=>{this.er}};this.$M=t,this.Mn.attachPrimitive(t)}MS(){this.Ep.timeScale().subscribeVisibleLogicalRangeChange(()=>{this.bS()}),this.bS()}bS(){this.SS();const t=this.Ep.timeScale().getVisibleLogicalRange();if(!t)return void console.log("⚠️ No visible range");const i=this.Mn.data();if(!i||0===i.length)return void console.log("⚠️ No data available");const s=i.filter((i,s)=>s>=t.from&&s<=t.to);console.log("📊 Trading Sessions: Processing",s.length,"data points"),this.xS(s),console.log("📊 Created",this.gS.length,"session boxes"),this.ob()}xS(t){if(0!==t.length){for(const i of this.Cs.sessions)this.yS(i,t);this.Cs.showOverlaps&&this.PS(t)}}yS(t,i){let s=null,e=[];for(const n of i){const i=n.time,h=this.CS(i);this.TS(h,t.startHour,t.endHour)?(s||(s=i),e.push(n)):s&&e.length>0&&(this.kS(s,e[e.length-1].time,t),s=null,e=[])}s&&e.length>0&&this.kS(s,e[e.length-1].time,t)}PS(t){const i=this.Cs.sessions;for(let s=0;s<i.length;s++)for(let e=s+1;e<i.length;e++){const n=i[s],h=i[e],r=this.DS(n,h);r&&this.VS(r,t)}}DS(t,i){const s=Math.max(t.startHour,i.startHour),e=Math.min(t.endHour,i.endHour);return s<e?{ln:s,_n:e}:null}VS(t,i){let s=null,e=[];for(const n of i){const i=n.time,h=this.CS(i);h>=t.ln&&h<t._n?(s||(s=i),e.push(n)):s&&e.length>0&&(this.RS(s,e[e.length-1].time),s=null,e=[])}s&&e.length>0&&this.RS(s,e[e.length-1].time)}kS(t,i,s){if(!t||!i)return void console.warn("Invalid session box times:",{startTime:t,endTime:i,session:s.name});const e={ae:"session",fS:t,pS:i,V:s.color,vS:s.opacity,ES:s.name};this.gS.push(e)}RS(t,i){const s={ae:"overlap",fS:t,pS:i,V:this.Cs.overlapColor,vS:this.Cs.overlapOpacity,ES:"Overlap"};this.gS.push(s)}TS(t,i,s){return i<s?t>=i&&t<s:t>=i||t<s}CS(t){if("number"==typeof t){return new Date(1e3*t).getUTCHours()}if("string"==typeof t){return new Date(t).getUTCHours()}return 0}SS(){this.gS=[]}updateOptions(t){this.Cs={...this.Cs,...t},this.Cs.enabled?this.bS():this.SS()}enable(){this.Cs.enabled=!0,this.bS()}disable(){this.Cs.enabled=!1,this.SS()}remove(){this.$M&&this.Mn&&this.Mn.detachPrimitive(this.$M),this.SS()}getSessionBoxes(){return this.gS}getChart(){return this.Ep}getSeries(){return this.Mn}ob(){this.$M&&this.$M.updateAllViews?.(),this.Ep.timeScale().applyOptions({})}}function Hh(t,i,s){return new Uh(t,i,s)}class qh{constructor(t){this.uS=t}draw(t){t.useBitmapCoordinateSpace(t=>{const i=t.context,s=this.uS.getProfileData();if(!s||0===s.bins.length)return;const e=this.uS.getOptions(),n=this.uS.getSeries(),h=i.canvas.width/t.horizontalPixelRatio,r=Math.min(e.width||100,.2*h),a="right"===e.position?h-r:0;let l=0;for(const t of s.bins)t.volume>l&&(l=t.volume);if(0!==l){for(const h of s.bins)this.AS(i,h,a,r,l,s,e,n,t.horizontalPixelRatio,t.verticalPixelRatio);e.showPOC&&this.FS(i,s.poc,e.pocColor||"#FF6B00",n,h,t.horizontalPixelRatio,t.verticalPixelRatio),e.showValueArea&&this.BS(i,s.valueAreaHigh,s.valueAreaLow,e.valueAreaColor||"#089981",n,h,t.horizontalPixelRatio,t.verticalPixelRatio)}})}AS(t,i,s,e,n,h,r,a,l,o){const _=i.volume/n*e,c=a.priceToCoordinate(i.priceLevel);if(null===c)return;const u=s*l,d=(c-1.5)*o,f=_*l,p=3*o,v=i.priceLevel>=h.valueAreaLow&&i.priceLevel<=h.valueAreaHigh,m=Math.abs(i.priceLevel-h.poc)<1e-5;let g=r.profileColor||"#2962FF",w=r.opacity||.3;m?(g=r.pocColor||"#FF6B00",w=.6):v&&r.showValueArea&&(g=r.valueAreaColor||"#089981",w=.4),t.fillStyle=this.mS(g,w),t.fillRect(u,d,f,p)}FS(t,i,s,e,n,h,r){const a=e.priceToCoordinate(i);if(null===a)return;const l=a*r;t.strokeStyle=s,t.lineWidth=2*Math.min(h,r),t.setLineDash([5*h,3*h]),t.beginPath(),t.moveTo(0,l),t.lineTo(n*h,l),t.stroke(),t.setLineDash([])}BS(t,i,s,e,n,h,r,a){const l=n.priceToCoordinate(i);if(null!==l){const i=l*a;t.strokeStyle=this.mS(e,.5),t.lineWidth=1*Math.min(r,a),t.setLineDash([3*r,2*r]),t.beginPath(),t.moveTo(0,i),t.lineTo(h*r,i),t.stroke()}const o=n.priceToCoordinate(s);if(null!==o){const i=o*a;t.strokeStyle=this.mS(e,.5),t.lineWidth=1*Math.min(r,a),t.setLineDash([3*r,2*r]),t.beginPath(),t.moveTo(0,i),t.lineTo(h*r,i),t.stroke()}t.setLineDash([])}mS(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}}class Yh{constructor(t){this.Zt=new qh(t)}renderer(){return this.Zt}zOrder(){return"normal"}}class jh{constructor(t,i,s={}){this.IS=null,this.LS=new Map,this.$M=null,this.er=null,this.Ep=t,this.Mn=i,this.Cs={numberOfBins:s.numberOfBins||24,valueAreaPercentage:s.valueAreaPercentage||.7,showPOC:s.showPOC??!0,showValueArea:s.showValueArea??!0,profileColor:s.profileColor||"#2962FF",pocColor:s.pocColor||"#FF6B00",valueAreaColor:s.valueAreaColor||"#089981",opacity:s.opacity||.3,width:s.width||100,position:s.position||"right"},this.wS(),this.MS()}wS(){this.er=new Yh(this);const t={attached:t=>{},detached:()=>{},paneViews:()=>this.er?[this.er]:[],updateAllViews:()=>{this.er}};this.$M=t,this.Mn.attachPrimitive(t)}MS(){this.Ep.timeScale().subscribeVisibleLogicalRangeChange(()=>{this.zS()}),this.zS()}setVolumeData(t){this.LS=t,this.zS()}addVolumeData(t,i){this.LS.set(t,i),this.zS()}zS(){const t=this.Ep.timeScale().getVisibleLogicalRange();if(!t)return;const i=this.Mn.data();if(!i||0===i.length)return;const s=i.filter((i,s)=>s>=t.from&&s<=t.to);if(0===s.length)return;let e=1/0,n=-1/0;for(const t of s){const i=t.low||t.value||t.close,s=t.high||t.value||t.close;i<e&&(e=i),s>n&&(n=s)}const h=(n-e)/this.Cs.numberOfBins,r=[];for(let t=0;t<this.Cs.numberOfBins;t++)r.push({priceLevel:e+(t+.5)*h,volume:0,percentage:0});let a=0;for(const t of s){const i=t.close||t.value,s=this.LS.get(t.time)||1,n=Math.floor((i-e)/h);r[Math.max(0,Math.min(this.Cs.numberOfBins-1,n))].volume+=s,a+=s}for(const t of r)t.percentage=a>0?t.volume/a*100:0;let l=r[0];for(const t of r)t.volume>l.volume&&(l=t);const o=a*this.Cs.valueAreaPercentage,_=[...r].sort((t,i)=>i.volume-t.volume);let c=0;const u=[];for(const t of _){if(!(c<o))break;u.push(t),c+=t.volume}let d=-1/0,f=1/0;for(const t of u)t.priceLevel>d&&(d=t.priceLevel),t.priceLevel<f&&(f=t.priceLevel);this.IS={bins:r,poc:l.priceLevel,valueAreaHigh:d,valueAreaLow:f,totalVolume:a},this.ob()}getProfileData(){return this.IS}updateOptions(t){this.Cs={...this.Cs,...t},this.zS()}remove(){this.$M&&this.Mn&&this.Mn.detachPrimitive(this.$M),this.IS=null,this.LS.clear()}getChart(){return this.Ep}getSeries(){return this.Mn}getOptions(){return this.Cs}ob(){this.$M&&this.$M.updateAllViews?.(),this.Ep.timeScale().applyOptions({})}}function Gh(t,i,s){return new jh(t,i,s)}function Kh(t,i){const s=new Map;for(const t of i)s.set(t.time,t.volume);t.setVolumeData(s)}class Jh{constructor(t,i,s){this.sh=null,this.OS=!1,this.Rp=null,this.WS=[],this.$S=!1,this.NS="",this.Ep=t,this.Mn=i,this.Cs={lineWidth:2,lineStyle:0,axisLabelVisible:!0,draggable:!0,...s},this.US(),this.Cs.draggable&&this.HS()}US(){this.NS=this.Cs.color,this.sh=this.Mn.createPriceLine({price:this.Cs.price,color:this.Cs.color,lineWidth:this.Cs.lineWidth,lineStyle:this.Cs.lineStyle,axisLabelVisible:this.Cs.axisLabelVisible,title:this.Cs.title||""})}HS(){const t=this.Ep.chartElement?.()||document.querySelector(".tv-lightweight-charts");if(!t)return;this.Rp=t;const i=t=>{if(!this.qS(t))return;const i=this.YS(t.clientY);this.jS(t,i)&&(this.OS=!0,this.Rp.style.cursor="ns-resize",this.Cs.onDragStart&&this.Cs.onDragStart(this.Cs.price),t.preventDefault(),t.stopPropagation())},s=t=>{if(this.OS){const i=this.YS(t.clientY);this.GS(i),this.Cs.onDragMove&&this.Cs.onDragMove(i),t.preventDefault(),t.stopPropagation()}else{if(!this.qS(t))return void this.KS(!1);const i=this.YS(t.clientY);this.jS(t,i)?(this.Rp.style.cursor="ns-resize",this.KS(!0)):(this.Rp.style.cursor="default",this.KS(!1))}},e=t=>{this.OS&&(this.OS=!1,this.Rp.style.cursor="default",this.KS(!1),this.Cs.onDragEnd&&this.Cs.onDragEnd(this.Cs.price))},n=t=>{this.OS?(this.OS=!1,this.KS(!1),this.Cs.onDragEnd&&this.Cs.onDragEnd(this.Cs.price)):this.KS(!1)};this.Rp.addEventListener("mousedown",i),this.Rp.addEventListener("mousemove",s),this.Rp.addEventListener("mouseup",e),this.Rp.addEventListener("mouseleave",n),this.WS.push(()=>{this.Rp?.removeEventListener("mousedown",i),this.Rp?.removeEventListener("mousemove",s),this.Rp?.removeEventListener("mouseup",e),this.Rp?.removeEventListener("mouseleave",n)})}YS(t){try{const i=this.Ep.chartElement?.()||document.querySelector(".tv-lightweight-charts");if(!i)return this.Cs.price;const s=t-i.getBoundingClientRect().top,e=this.Mn.coordinateToPrice(s);return null===e?this.Cs.price:e}catch(t){return console.error("Error getting price from Y:",t),this.Cs.price}}jS(t,i){const s=this.Ep.chartElement?.()||document.querySelector(".tv-lightweight-charts");if(!s)return!1;const e=this.Mn.priceToCoordinate(this.Cs.price);if(null===e)return!1;const n=s.getBoundingClientRect(),h=t.clientY-n.top;return Math.abs(h-e)<=5}qS(t){if(!this.Rp)return!1;const i=this.Rp.getBoundingClientRect();return t.clientX-i.left<i.width-80}KS(t){this.$S!==t&&this.sh&&(this.$S=t,t?this.sh.applyOptions({color:"#000000"}):this.sh.applyOptions({color:this.NS}))}GS(t){this.Cs.price=t,this.sh&&this.sh.applyOptions({price:t})}applyOptions(t){this.Cs={...this.Cs,...t},t.color&&(this.NS=t.color),this.sh&&void 0!==t.price&&this.sh.applyOptions({price:t.price,color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle,title:t.title})}getPrice(){return this.Cs.price}setPrice(t){this.GS(t)}remove(){this.WS.forEach(t=>t()),this.WS=[],this.KS(!1),this.sh&&(this.Mn.removePriceLine(this.sh),this.sh=null),this.Rp&&(this.Rp.style.cursor="default")}getPriceLine(){return this.sh}}function Xh(t,i,s){const e={"stop-loss":{color:"#ef5350",lineStyle:2,title:"Stop Loss",draggable:!0},"take-profit":{color:"#26a69a",lineStyle:2,title:"Take Profit",draggable:!0},entry:{color:"#2196F3",lineStyle:0,title:"Entry",draggable:!0},target:{color:"#FF9800",lineStyle:2,title:"Target",draggable:!0},resistance:{color:"#f44336",lineStyle:0,title:"Resistance",draggable:!0},support:{color:"#4CAF50",lineStyle:0,title:"Support",draggable:!0},custom:{color:"#9E9E9E",lineStyle:0,title:"",draggable:!0}},n=s.type?e[s.type]:e.custom,h={price:s.price,color:s.color??n.color??"#9E9E9E",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??n.lineStyle??0,title:s.title??n.title??"",axisLabelVisible:s.axisLabelVisible??!0,draggable:s.draggable??n.draggable??!0,onDragStart:s.onDragStart,onDragMove:s.onDragMove,onDragEnd:s.onDragEnd};return new Jh(i,t,h)}class Zh{constructor(t,i){this.Rp=null,this.JS=null,this.XS=null,this.ZS={},this.Ep=t,this.Mn=i,this.QS()}QS(){const t=this.Ep.chartElement?.()||document.querySelector(".tv-lightweight-charts");t&&(this.Rp=t)}tx(t){try{if(!this.Rp)return 0;const i=this.Rp.getBoundingClientRect(),s=t.clientY-i.top,e=this.Mn.coordinateToPrice(s);return null===e?0:e}catch(t){return console.error("Error getting price from mouse event:",t),0}}enableClickToCreate(t,i){return this.Rp?(this.JS=t,this.ZS=i||{},new Promise(t=>{this.Rp.style.cursor="crosshair",this.XS=i=>{const s=this.tx(i),e=this.ix(s);this.disableClickToCreate(),t(e)},this.Rp.addEventListener("click",this.XS)})):Promise.resolve(null)}disableClickToCreate(){this.Rp&&this.XS&&(this.Rp.removeEventListener("click",this.XS),this.Rp.style.cursor="default"),this.JS=null,this.XS=null,this.ZS={}}ix(t){if(!this.JS)return null;let i;switch(this.JS){case"stop-loss":i={price:t,color:"#ef5350",lineWidth:2,title:"Stop Loss",draggable:!0,...this.ZS};break;case"take-profit":i={price:t,color:"#26a69a",lineWidth:2,title:"Take Profit",draggable:!0,...this.ZS};break;case"entry":i={price:t,color:"#2196F3",lineWidth:2,title:"Entry",draggable:!0,...this.ZS};break;case"target":i={price:t,color:"#FF9800",lineWidth:2,title:"Target",draggable:!0,...this.ZS};break;case"resistance":i={price:t,color:"#f44336",lineWidth:2,title:"Resistance",draggable:!0,...this.ZS};break;case"support":i={price:t,color:"#4CAF50",lineWidth:2,title:"Support",draggable:!0,...this.ZS};break;case"custom":i={price:t,color:"#9E9E9E",lineWidth:2,title:"Custom",draggable:!0,...this.ZS};break;default:return null}return new Jh(this.Ep,this.Mn,i)}getCreationMode(){return this.JS}isCreating(){return null!==this.JS}}function Qh(t,i){return new Zh(t,i)}var tr;!function(t){t.Idle="idle",t.Creating="creating",t.Editing="editing",t.Dragging="dragging",t.Hovering="hovering"}(tr||(tr={}));class ir{constructor(t,i,s={}){this._state=tr.Idle,this._visible=!0,this._locked=!1,this._chart=t.chart,this._series=t.series,this._type=i,this._id=this.sx(),this._options={color:"#2196F3",lineWidth:2,lineStyle:"solid",visible:!0,locked:!1,zIndex:0,...s},this._visible=this._options.visible??!0,this._locked=this._options.locked??!1}sx(){return`${this._type}_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}get id(){return this._id}get type(){return this._type}applyOptions(t){this._options={...this._options,...t},void 0!==t.visible&&(this._visible=t.visible),void 0!==t.locked&&(this._locked=t.locked),this._update()}show(){this._visible=!0,this._update()}hide(){this._visible=!1,this._update()}lock(){this._locked=!0}unlock(){this._locked=!1}isLocked(){return this._locked}isVisible(){return this._visible}getState(){return this._state}}class sr{constructor(t,i,s={}){this.nx=new Map,this.hx=null,this.lx=null,this.ox=null,this.XS=null,this._x=null,this.sf=null,this.Sf=null,this.Od=null,this.ux=0,this.OS=!1,this.vx=null,this.Ep=t,this.Cs={enableKeyboardShortcuts:!0,selectionColor:"#2962ff",selectionLineWidth:3,...s},this.mx()}startDrawing(t){this.ox=t,this.gx(),console.log(`📐 Started drawing mode: ${t}`)}stopDrawing(){this.ox=null,console.log("🛑 Stopped drawing mode")}addTool(t,i){const s=i||"tool_"+this.ux++;return this.nx.set(s,t),console.log(`➕ Tool added: ${s}`),s}removeTool(t){const i=this.nx.get(t);return!!i&&(i.remove(),this.nx.delete(t),this.hx===t&&(this.hx=null),console.log(`🗑️ Tool removed: ${t}`),!0)}selectTool(t){if(this.nx.has(t)){this.gx(),this.hx=t;const i=this.nx.get(t);return i&&"function"==typeof i.setSelected&&i.setSelected(!0),!0}return!1}deselectAll(){this.gx()}deleteSelected(){return!!this.hx&&this.removeTool(this.hx)}getSelectedToolId(){return this.hx}getAllTools(){return new Map(this.nx)}getTool(t){return this.nx.get(t)}clearAll(){this.nx.forEach(t=>t.remove()),this.nx.clear(),this.hx=null,console.log("🧹 All tools cleared")}getToolCount(){return this.nx.size}isToolSelected(t){return this.hx===t}destroy(){this.clearAll(),this.wx()}mx(){this.XS=t=>{this.Mx(t)},this.Ep.subscribeClick(this.XS),this.sf=t=>{this.bx(t)},this.Ep.subscribeCrosshairMove(this.sf);const t=this.Ep.chartElement();t&&(this.Sf=t=>{this.Sx(t)},this.Od=t=>{this.xx(t)},t.addEventListener("mousedown",this.Sf),t.addEventListener("mouseup",this.Od)),this.Cs.enableKeyboardShortcuts&&(this._x=t=>{this.yx(t)},document.addEventListener("keydown",this._x))}wx(){this.XS&&(this.Ep.unsubscribeClick(this.XS),this.XS=null),this.sf&&(this.Ep.unsubscribeCrosshairMove(this.sf),this.sf=null);const t=this.Ep.chartElement();t&&(this.Sf&&(t.removeEventListener("mousedown",this.Sf),this.Sf=null),this.Od&&(t.removeEventListener("mouseup",this.Od),this.Od=null)),this._x&&(document.removeEventListener("keydown",this._x),this._x=null)}Mx(t){if(!t.point)return;if(this.ox)return;if(this.OS)return;const i=this.Px(t.point.x,t.point.y);i?this.selectTool(i):this.gx()}bx(t){if(!t.point||!t.time)return;if(this.OS&&this.vx){const i=this.nx.get(this.vx);if(i){const s=i._series?.coordinateToPrice(t.point.y);null!=s&&"function"==typeof i.updateDrag&&i.updateDrag(t.time,s)}return}const i=this.Ep.chartElement();if(!i)return;if(this.hx){const s=this.nx.get(this.hx);if(s&&"function"==typeof s.hitTestEndpoint){if(s.hitTestEndpoint(t.point.x,t.point.y))return void(i.style.cursor="grab")}}const s=this.Px(t.point.x,t.point.y);if(this.lx&&this.lx!==s){const t=this.nx.get(this.lx);t&&"function"==typeof t.setHovered&&t.setHovered(!1)}if(s){const t=this.nx.get(s);t&&"function"==typeof t.setHovered&&t.setHovered(!0),this.lx=s,i.style.cursor="pointer"}else this.lx=null,i.style.cursor="default"}Sx(t){const i=this.Ep.chartElement();if(!i)return;const s=i.getBoundingClientRect(),e=t.clientX-s.left,n=t.clientY-s.top;if(this.hx){const s=this.nx.get(this.hx);if(s&&"function"==typeof s.hitTestEndpoint){const h=s.hitTestEndpoint(e,n);h&&(this.OS=!0,this.vx=this.hx,"function"==typeof s.startDrag&&s.startDrag(h),i.style.cursor="grabbing",t.preventDefault(),t.stopPropagation(),this.Cx())}}}xx(t){if(this.OS&&this.vx){const t=this.nx.get(this.vx);t&&"function"==typeof t.stopDrag&&t.stopDrag();const i=this.Ep.chartElement();i&&(i.style.cursor="default"),this.Tx(),this.OS=!1,this.vx=null}}Cx(){this.Ep.applyOptions({handleScroll:!1,handleScale:!1})}Tx(){this.Ep.applyOptions({handleScroll:!0,handleScale:!0})}yx(t){"Delete"!==t.key&&"Backspace"!==t.key||this.deleteSelected()&&t.preventDefault(),"Escape"===t.key&&(this.gx(),this.stopDrawing(),t.preventDefault())}Px(t,i){for(const[s,e]of this.nx)if("function"==typeof e.hitTest&&e.hitTest(t,i))return s;return null}gx(){if(this.hx){const t=this.nx.get(this.hx);t&&"function"==typeof t.setSelected&&t.setSelected(!1),this.hx=null}}}class er{constructor(t){this.kx=t}calculatePips(t,i){return Math.abs(i-t)/this.kx.pipValue}calculatePercent(t,i){return(i-t)/t*100}calculateRiskReward(t,i,s){const e=Math.abs(t-i),n=Math.abs(s-t);return 0===e?0:n/e}calculateMetrics(t,i,s,e){const n={entryPrice:t,stopLoss:i,takeProfit:s,quantity:e,stopLossPips:this.calculatePips(t,i),takeProfitPips:this.calculatePips(t,s),stopLossPercent:this.calculatePercent(t,i),takeProfitPercent:this.calculatePercent(t,s),riskRewardRatio:this.calculateRiskReward(t,i,s)};if(void 0!==e){const h=Math.abs(t-i),r=Math.abs(s-t);n.stopLossAmount=h*e,n.takeProfitAmount=r*e}return n}formatPips(t,i=1){return`${t>=0?"+":""}${t.toFixed(i)} pips`}formatPercent(t,i=2){return`${t>=0?"+":""}${t.toFixed(i)}%`}formatRiskReward(t,i=2){return`1:${t.toFixed(i)}`}updatePipConfig(t){this.kx={...this.kx,...t}}getPipConfig(){return{...this.kx}}}const nr={EURUSD:{symbol:"EURUSD",pipValue:1e-4},GBPUSD:{symbol:"GBPUSD",pipValue:1e-4},AUDUSD:{symbol:"AUDUSD",pipValue:1e-4},NZDUSD:{symbol:"NZDUSD",pipValue:1e-4},USDCAD:{symbol:"USDCAD",pipValue:1e-4},USDCHF:{symbol:"USDCHF",pipValue:1e-4},USDJPY:{symbol:"USDJPY",pipValue:.01},EURJPY:{symbol:"EURJPY",pipValue:.01},GBPJPY:{symbol:"GBPJPY",pipValue:.01},AUDJPY:{symbol:"AUDJPY",pipValue:.01},BTCUSD:{symbol:"BTCUSD",pipValue:1},ETHUSD:{symbol:"ETHUSD",pipValue:.1},DEFAULT:{symbol:"DEFAULT",pipValue:1e-4}};function hr(t){const i=t.toUpperCase();return nr[i]||nr.DEFAULT}class rr{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class ar{constructor(t){this.Dx=t,this.Zt=new rr(t)}renderer(){return this.Dx.isVisible()?this.Zt:null}}class lr extends ir{constructor(t,i){super(t,"position-tool",i),this.$M=null,this.HM=null,this.er=null,this.Vx=!1,this.Rx=!1,this.OS=!1,this.Ex=null,this.Ax=0,this.Fx=null,this.Bx=null,this.Ix=null,this.Lx={profitColor:"#26a69a",lossColor:"#ef5350",entryLineColor:"#ffffff",opacity:.3,showTooltips:!0,symbol:"DEFAULT",...i};const s=this.Lx.pipConfig||hr(this.Lx.symbol||"DEFAULT");this.zx=new er(s),this.wS(),this.Ox()}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new ar(this)}drawToCanvas(t,i,s){const e=this._chart.timeScale();this.Bx&&this.Lx.takeProfit&&(this.$x(t,this.Bx,i,s,e),(this.Rx||this.Vx)&&this.Nx(t,this.Bx,"profit",i,s,e)),this.Ix&&this.Lx.stopLoss&&(this.$x(t,this.Ix,i,s,e),(this.Rx||this.Vx)&&this.Nx(t,this.Ix,"loss",i,s,e)),this.Ux(t,i,s,e),this.Lx.takeProfit&&this.Hx(t,this.Lx.takeProfit,this.Lx.profitColor,i,s,e),this.Lx.stopLoss&&this.Hx(t,this.Lx.stopLoss,this.Lx.lossColor,i,s,e)}$x(t,i,s,e,n){const h=(n.timeToCoordinate(this.Lx.entryTime)??0)*s;let r;if(this.Lx.endTime)r=(n.timeToCoordinate(this.Lx.endTime)??0)*s;else{r=this._chart.chartElement().clientWidth*s}const a=(this._series.priceToCoordinate(i.qx)??0)*e,l=(this._series.priceToCoordinate(i.Yx)??0)*e;t.fillStyle=this.mS(i.V,.15),t.fillRect(h,Math.min(a,l),r-h,Math.abs(l-a)),t.strokeStyle=i.V,t.lineWidth=2*s,t.beginPath(),t.moveTo(h,l),t.lineTo(r,l),t.stroke()}Ux(t,i,s,e){const n=(e.timeToCoordinate(this.Lx.entryTime)??0)*i,h=(this._series.priceToCoordinate(this.Lx.entryPrice)??0)*s;let r;if(this.Lx.endTime)r=(e.timeToCoordinate(this.Lx.endTime)??0)*i;else{r=this._chart.chartElement().clientWidth*i}const a=this.Vx?"#ff6b00":this.Lx.entryLineColor;t.strokeStyle=a,t.lineWidth=2*i,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(n,h),t.lineTo(r,h),t.stroke(),t.setLineDash([]),t.strokeStyle=this.Lx.entryLineColor,t.lineWidth=1*i,t.setLineDash([5*i,5*i]);const l=this._chart.chartElement().clientHeight*s;if(t.beginPath(),t.moveTo(n,0),t.lineTo(n,l),t.stroke(),t.setLineDash([]),this.Vx){t.fillStyle=a,t.strokeStyle="#ffffff",t.lineWidth=2*i,t.beginPath(),t.arc(n,h,5*i,0,2*Math.PI),t.fill(),t.stroke();const s=8*i;t.fillStyle=a,t.strokeStyle="#ffffff",t.lineWidth=2*i,t.fillRect(r-s/2,h-s/2,s,s),t.strokeRect(r-s/2,h-s/2,s,s)}else t.fillStyle=this.Lx.entryLineColor,t.beginPath(),t.arc(n,h,4*i,0,2*Math.PI),t.fill()}Ox(){this.Lx.stopLoss&&this.Lx.takeProfit&&(this.HM=this.zx.calculateMetrics(this.Lx.entryPrice,this.Lx.stopLoss,this.Lx.takeProfit,this.Lx.quantity),this.jx(),this.Lx.onUpdate&&this.HM&&this.Lx.onUpdate(this.HM))}jx(){const t=this.Gx();this.Lx.takeProfit&&(this.Bx={Kx:this.Lx.entryTime,Jx:t,qx:this.Lx.entryPrice,Yx:this.Lx.takeProfit,V:this.Lx.profitColor,vS:this.Lx.opacity}),this.Lx.stopLoss&&(this.Ix={Kx:this.Lx.entryTime,Jx:t,qx:this.Lx.entryPrice,Yx:this.Lx.stopLoss,V:this.Lx.lossColor,vS:this.Lx.opacity})}Gx(){this._chart.timeScale().getVisibleLogicalRange();return this.Lx.entryTime}Nx(t,i,s,e,n,h){if(!this.HM)return;const r=(h.timeToCoordinate(this.Lx.entryTime)??0)*e,a=(this._series.priceToCoordinate(i.Yx)??0)*n,l="profit"===s,o=l?this.HM.takeProfitPips:this.HM.stopLossPips,_=l?this.Lx.takeProfit:this.Lx.stopLoss,c=this.HM.riskRewardRatio,u=l?`Objetivo: ${_?.toFixed(5)} (${o.toFixed(1)} pips) 1:${c.toFixed(2)}`:`P/G Abertura: ${_?.toFixed(5)} (${o.toFixed(1)} pips)`;t.font=11*e+'px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif';const d=6*e,f=t.measureText(u).width+2*d,p=20*e,v=r+8*e,m=a-p/2;t.fillStyle=i.V,t.fillRect(v,m,f,p),t.fillStyle="#ffffff",t.textAlign="left",t.textBaseline="middle",t.fillText(u,v+d,a)}Hx(t,i,s,e,n,h){const r=(h.timeToCoordinate(this.Lx.entryTime)??0)*e,a=(this._series.priceToCoordinate(i)??0)*n,l=this.Vx?"#ff6b00":s;let o;if(t.fillStyle=l,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.beginPath(),t.arc(r,a,5*e,0,2*Math.PI),t.fill(),t.stroke(),this.Lx.endTime)o=(h.timeToCoordinate(this.Lx.endTime)??0)*e;else{o=this._chart.chartElement().clientWidth*e-10*e}const _=8*e,c=this.Vx?"#ff6b00":s;t.fillStyle=c,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.fillRect(o-_/2,a-_/2,_,_),t.strokeRect(o-_/2,a-_/2,_,_)}mS(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}updatePosition(t){this.Lx={...this.Lx,...t},this.Ox(),this._update()}getMetrics(){return this.HM}setStopLoss(t){this.Lx.stopLoss=t,this.Ox(),this._update()}setTakeProfit(t){this.Lx.takeProfit=t,this.Ox(),this._update()}setEntryPrice(t){this.Lx.entryPrice=t,this.Ox(),this._update()}setSelected(t){this.Vx!==t&&(this.Vx=t,this.ob())}isSelected(){return this.Vx}setHovered(t){this.Rx!==t&&(this.Rx=t,this.ob())}hitTest(t,i){if(!this.Lx.stopLoss&&!this.Lx.takeProfit)return!1;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.Lx.entryTime)??0;let n;if(this.Lx.endTime)n=s.timeToCoordinate(this.Lx.endTime)??0;else{n=this._chart.chartElement().clientWidth}if(this.Lx.takeProfit&&this.Lx.stopLoss){const s=this._series.priceToCoordinate(this.Lx.takeProfit)??0,h=this._series.priceToCoordinate(this.Lx.stopLoss)??0,r=Math.min(s,h),a=Math.max(s,h);if(t>=e&&t<=n&&i>=r&&i<=a)return!0;const l=8;if(Math.abs(t-e)<=l&&i>=r&&i<=a)return!0}return!1}hitTestEndpoint(t,i){const s=this._chart.timeScale(),e=s.timeToCoordinate(this.Lx.entryTime)??0;let n;if(this.Lx.endTime)n=s.timeToCoordinate(this.Lx.endTime)??0;else{n=this._chart.chartElement().clientWidth}if(this.Lx.takeProfit){const s=this._series.priceToCoordinate(this.Lx.takeProfit)??0;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-s,2))<=10)return"tp"}if(this.Lx.stopLoss){const s=this._series.priceToCoordinate(this.Lx.stopLoss)??0;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-s,2))<=10)return"sl"}if(this.Lx.takeProfit){const s=this._series.priceToCoordinate(this.Lx.takeProfit)??0;if(Math.sqrt(Math.pow(t-n,2)+Math.pow(i-s,2))<=10)return"tp-right"}if(this.Lx.stopLoss){const s=this._series.priceToCoordinate(this.Lx.stopLoss)??0;if(Math.sqrt(Math.pow(t-n,2)+Math.pow(i-s,2))<=10)return"sl-right"}const h=this._series.priceToCoordinate(this.Lx.entryPrice)??0;if(t>=e&&t<=n&&Math.abs(i-h)<=8)return"entry";if(this.Lx.takeProfit&&this.Lx.stopLoss){const s=this._series.priceToCoordinate(this.Lx.takeProfit)??0,h=this._series.priceToCoordinate(this.Lx.stopLoss)??0,r=Math.min(s,h),a=Math.max(s,h);if(t>=e&&t<=n&&i>=r&&i<=a)return"move"}return null}startDrag(t){this.OS=!0,this.Ex=t,"move"===t&&(this.Ax=this.Lx.entryPrice,this.Fx=this.Lx.entryTime)}stopDrag(){this.OS=!1,this.Ex=null,this.Ax=0,this.Fx=null}updateDrag(t,i){if(this.OS&&this.Ex){if("entry"===this.Ex)this.Lx.entryPrice=i;else if("move"===this.Ex){if(this.Fx&&this.Ax){const s=i-this.Ax,e=this.Xx(this.Fx,t),n=this.Lx.takeProfit,h=this.Lx.stopLoss;this.Lx.entryPrice=i,this.Lx.takeProfit=n+s,this.Lx.stopLoss=h+s,this.Lx.entryTime=t,this.Lx.endTime&&(this.Lx.endTime=this.Zx(this.Lx.endTime,e)),this.Ax=i,this.Fx=t}}else"tp"===this.Ex||"tp-right"===this.Ex?(this.Lx.takeProfit=i,"tp-right"===this.Ex?this.Lx.endTime=t:this.Lx.entryTime=t):"sl"!==this.Ex&&"sl-right"!==this.Ex||(this.Lx.stopLoss=i,"sl-right"===this.Ex?this.Lx.endTime=t:this.Lx.entryTime=t);this.Ox(),this.ob()}}Xx(t,i){return i-t}Zx(t,i){return t+i}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.$M&&this._series.updatePrimitive(this.$M)}remove(){this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.Lx.onRemove&&this.Lx.onRemove()}}function or(t,i){return new lr(t,i)}class _r{constructor(t){this.kx=t}calculateMetrics(t,i,s,e,n){const h=e-i;return{point1:{time:t,price:i},point2:{time:s,price:e},priceDifference:h,pricePercent:h/i*100,pips:Math.abs(h)/this.kx.pipValue,timeDifference:this.Qx(t,s),barCount:n}}Qx(t,i){return"number"==typeof t&&"number"==typeof i?Math.abs(i-t):0}formatPriceDifference(t,i=5){return`${t>=0?"+":""}${t.toFixed(i)}`}formatPips(t,i=1){return`${t.toFixed(i)} pips`}formatPercent(t,i=2){return`${t>=0?"+":""}${t.toFixed(i)}%`}formatTimeDifference(t){if(0===t)return"N/A";const i=Math.floor(t/86400),s=Math.floor(t%86400/3600),e=Math.floor(t%3600/60);return i>0?`${i}d ${s}h`:s>0?`${s}h ${e}m`:e>0?`${e}m`:`${t}s`}formatBarCount(t){return`${t} ${1===t?"bar":"bars"}`}updatePipConfig(t){this.kx={...this.kx,...t}}getPipConfig(){return{...this.kx}}}class cr{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class ur{constructor(t){this.Dx=t,this.Zt=new cr(t)}renderer(){return this.Dx.isVisible()?this.Zt:null}}var dr;!function(t){t.ty="idle",t.iy="waiting_first_point",t.sy="waiting_second_point",t.ey="completed"}(dr||(dr={}));class fr{constructor(t,i,s={}){this.Ev=dr.ty,this.ny=null,this.XS=null,this.sf=null,this.Ep=t,this.Mn=i,this.hy=s}ly(){this.Ev===dr.ty&&(this.Ev=dr.iy,this.ny=null,this.oy(),this._y())}uy(){this.Ev=dr.ty,this.ny=null,this.py(),this.vy(),this.hy.my&&this.hy.my()}gy(){return this.Ev}wy(){return this.Ev===dr.iy||this.Ev===dr.sy}oy(){this.XS=t=>{this.Mx(t)},this.Ep.subscribeClick(this.XS)}_y(){this.sf=t=>{this.bx(t)},this.Ep.subscribeCrosshairMove(this.sf)}py(){this.XS&&(this.Ep.unsubscribeClick(this.XS),this.XS=null)}vy(){this.sf&&(this.Ep.unsubscribeCrosshairMove(this.sf),this.sf=null)}Mx(t){if(!t.point||!t.time)return;const i=this.Mn.coordinateToPrice(t.point.y);if(null===i)return;const s={wt:t.time,Mt:i};this.Ev===dr.iy?(this.ny=s,this.Ev=dr.sy,this.hy.My&&this.hy.My(s)):this.Ev===dr.sy&&this.ny&&(this.Ev=dr.ey,this.hy.by&&this.hy.by(s),this.hy.Sy&&this.hy.Sy(this.ny,s),this.py(),this.vy(),this.Ev=dr.ty,this.ny=null)}bx(t){if(!t.point||!t.time)return;if(this.Ev!==dr.sy)return;const i=this.Mn.coordinateToPrice(t.point.y);if(null===i)return;const s={wt:t.time,Mt:i};this.hy.xy&&this.hy.xy(s)}m(){this.uy()}}class pr extends ir{constructor(t,i){super(t,"ruler-tool",i),this.$M=null,this.HM=null,this.er=null,this.yy=null,this.Py=!1,this.Vx=!1,this.Cy=null,this.OS=!1,this.Ty=null,this.sf=null,this.ky={lineColor:"#2962ff",lineWidth:2,showLabel:!0,labelBackgroundColor:"#2962ff",labelTextColor:"#ffffff",selectionColor:"#ff6b00",selectionLineWidth:3,symbol:"DEFAULT",...i};const s=this.ky.pipConfig||hr(this.ky.symbol||"DEFAULT");this.zx=new _r(s),this.wS(),this.ky.interactive?this.Dy():this.ky.point1Time&&this.ky.point2Time&&(this.Py=!0,this.Ox())}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new ur(this)}Dy(){this.yy=new fr(this._chart,this._series,{My:t=>{this.ky.point1Time=t.wt,this.ky.point1Price=t.Mt,this.ob()},by:t=>{this.ky.point2Time=t.wt,this.ky.point2Price=t.Mt},Sy:(t,i)=>{this.ky.point1Time=t.wt,this.ky.point1Price=t.Mt,this.ky.point2Time=i.wt,this.ky.point2Price=i.Mt,this.Py=!0,this.Cy=null,this.Ox(),this.Vy(),this.ob()},xy:t=>{this.Cy=t,this.ob()}}),this.yy.ly()}drawToCanvas(t,i,s){if(!this.Py&&this.ky.point1Time&&this.Cy)return void this.Ry(t,i,s);if(!this.Py||!this.ky.point1Time||!this.ky.point2Time)return;const e=this._chart.timeScale(),n=(e.timeToCoordinate(this.ky.point1Time)??0)*i,h=(this._series.priceToCoordinate(this.ky.point1Price)??0)*s,r=(e.timeToCoordinate(this.ky.point2Time)??0)*i,a=(this._series.priceToCoordinate(this.ky.point2Price)??0)*s;this.Vx&&(t.strokeStyle=this.ky.selectionColor,t.lineWidth=this.ky.selectionLineWidth*i,t.beginPath(),t.moveTo(n,h),t.lineTo(r,a),t.stroke()),t.strokeStyle=this.ky.lineColor,t.lineWidth=this.ky.lineWidth*i,t.beginPath(),t.moveTo(n,h),t.lineTo(r,a),t.stroke(),this.Hx(t,n,h,i),this.Hx(t,r,a,i),this.ky.showLabel&&this.HM&&this.Nx(t,n,h,r,a,i,s)}Hx(t,i,s,e){const n=this.Vx?this.ky.selectionColor:this.ky.lineColor,h=this.Vx?5*e:4*e;t.fillStyle=n,t.beginPath(),t.arc(i,s,h,0,2*Math.PI),t.fill(),this.Vx&&(t.strokeStyle="#ffffff",t.lineWidth=2*e,t.stroke())}Ry(t,i,s){if(!this.ky.point1Time||!this.Cy)return;const e=this._chart.timeScale(),n=(e.timeToCoordinate(this.ky.point1Time)??0)*i,h=(this._series.priceToCoordinate(this.ky.point1Price)??0)*s,r=(e.timeToCoordinate(this.Cy.wt)??0)*i,a=(this._series.priceToCoordinate(this.Cy.Mt)??0)*s;t.strokeStyle=this.ky.lineColor,t.lineWidth=this.ky.lineWidth*i,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(n,h),t.lineTo(r,a),t.stroke(),t.setLineDash([]),this.Hx(t,n,h,i),t.globalAlpha=.5,this.Hx(t,r,a,i),t.globalAlpha=1}Nx(t,i,s,e,n,h,r){if(!this.HM)return;const a=(i+e)/2,l=(s+n)/2,o=`${this.zx.formatPips(this.HM.pips)} | ${this.zx.formatPercent(this.HM.pricePercent)} | ${this.zx.formatBarCount(this.HM.barCount)}`;t.font=12*h+"px sans-serif";const _=6*h,c=t.measureText(o).width+2*_,u=12*h+2*_;t.fillStyle=this.ky.labelBackgroundColor,t.fillRect(a-c/2,l-u/2,c,u),t.fillStyle=this.ky.labelTextColor,t.textAlign="center",t.textBaseline="middle",t.fillText(o,a,l)}Ox(){if(!this.ky.point1Time||!this.ky.point2Time||void 0===this.ky.point1Price||void 0===this.ky.point2Price)return;const t=this.Ey();this.HM=this.zx.calculateMetrics(this.ky.point1Time,this.ky.point1Price,this.ky.point2Time,this.ky.point2Price,t),this.ky.onUpdate&&this.HM&&this.ky.onUpdate(this.HM)}Ey(){if(!this.ky.point1Time||!this.ky.point2Time)return 0;const t=this._chart.timeScale(),i=t.timeToCoordinate(this.ky.point1Time),s=t.timeToCoordinate(this.ky.point2Time);if(null===i||null===s)return 0;return Math.abs(Math.round((s-i)/6))}updatePoints(t,i,s,e){this.ky.point1Time=t,this.ky.point1Price=i,this.ky.point2Time=s,this.ky.point2Price=e,this.Ox(),this.ob()}getMetrics(){return this.HM}remove(){this.destroy()}destroy(){this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.yy&&(this.yy.m(),this.yy=null),this.Ay(),this.ky.onRemove&&this.ky.onRemove()}Vy(){this.sf=t=>{this.Fy(t)},this._chart.subscribeCrosshairMove(this.sf)}Ay(){this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null)}Fy(t){if(!t.point||!t.time)return;if(!this.Vx||!this.OS)return;const i=this._series.coordinateToPrice(t.point.y);null!==i&&("point1"===this.Ty?(this.ky.point1Time=t.time,this.ky.point1Price=i):"point2"===this.Ty&&(this.ky.point2Time=t.time,this.ky.point2Price=i),this.Ox(),this.ob())}startDrag(t){this.OS=!0,this.Ty=t}stopDrag(){this.OS=!1,this.Ty=null}hitTestEndpoint(t,i){if(!this.Py||!this.ky.point1Time||!this.ky.point2Time)return null;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.ky.point1Time)??0,n=this._series.priceToCoordinate(this.ky.point1Price)??0,h=s.timeToCoordinate(this.ky.point2Time)??0,r=this._series.priceToCoordinate(this.ky.point2Price)??0;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-n,2))<=10)return"point1";return Math.sqrt(Math.pow(t-h,2)+Math.pow(i-r,2))<=10?"point2":null}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.Ox(),this.ob()}setSelected(t){this.Vx!==t&&(this.Vx=t,this.ob())}isSelected(){return this.Vx}isComplete(){return this.Py}hitTest(t,i){if(!this.Py||!this.ky.point1Time||!this.ky.point2Time)return!1;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.ky.point1Time)??0,n=this._series.priceToCoordinate(this.ky.point1Price)??0,h=s.timeToCoordinate(this.ky.point2Time)??0,r=this._series.priceToCoordinate(this.ky.point2Price)??0;return this.By(t,i,e,n,h,r)<=(this.Vx?12:8)}By(t,i,s,e,n,h){const r=n-s,a=h-e,l=r*r+a*a;let o,_,c=-1;0!==l&&(c=((t-s)*r+(i-e)*a)/l),c<0?(o=s,_=e):c>1?(o=n,_=h):(o=s+c*r,_=e+c*a);const u=t-o,d=i-_;return Math.sqrt(u*u+d*d)}}function vr(t,i){return new pr(t,i)}const mr=[{Iy:0,Xa:"0.0%"},{Iy:.236,Xa:"23.6%"},{Iy:.382,Xa:"38.2%"},{Iy:.5,Xa:"50.0%"},{Iy:.618,Xa:"61.8%"},{Iy:.786,Xa:"78.6%"},{Iy:1,Xa:"100.0%"}],gr=[...mr,{Iy:1.272,Xa:"127.2%"},{Iy:1.414,Xa:"141.4%"},{Iy:1.618,Xa:"161.8%"},{Iy:2,Xa:"200.0%"},{Iy:2.618,Xa:"261.8%"}];class wr{constructor(t=!1){this.Ly=t?gr:mr}calculateLevels(t,i,s,e){const n=Math.abs(e-i),h=n/i*100,r=e>i,a=this.Ly.map(({Iy:t,Xa:i})=>{let s;return s=r?e-n*t:e+n*t,{Iy:t,Mt:s,Xa:i}});return{point1:{time:t,price:i},point2:{time:s,price:e},priceRange:n,priceRangePercent:h,levels:a,isUptrend:r}}getPriceAtRatio(t,i,s){const e=Math.abs(i-t);return i>t?i-e*s:i+e*s}formatPrice(t,i=5){return t.toFixed(i)}formatLevel(t,i=5){return`${t.label} (${this.formatPrice(t.price,i)})`}updateRatios(t){this.Ly=t}getRatios(){return[...this.Ly]}useStandardRatios(){this.Ly=mr}useExtendedRatios(){this.Ly=gr}}class Mr{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class br{constructor(t){this.Dx=t,this.Zt=new Mr(t)}renderer(){return this.Dx.isVisible()?this.Zt:null}}class Sr extends ir{constructor(t,i){super(t,"fibonacci-tool",i),this.$M=null,this.HM=null,this.er=null,this.yy=null,this.Py=!1,this.Vx=!1,this.Cy=null,this.OS=!1,this.Ty=null,this.sf=null,this.zy={lineColor:"#787b86",lineWidth:1,showLabels:!0,labelPosition:"right",useExtended:!1,levelColors:{0:"#787b86",.236:"#f23645",.382:"#ff9800",.5:"#2196f3",.618:"#4caf50",.786:"#9c27b0",1:"#787b86"},...i},this.zx=new wr(this.zy.useExtended),this.wS(),this.zy.interactive?this.Dy():(this.Py=!0,this.Ox())}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new br(this)}drawToCanvas(t,i,s){if(!this.Py&&this.zy.point1Time&&this.Cy)return void this.Ry(t,i,s);if(!this.HM||!this.zy.point1Time||!this.zy.point2Time)return;const e=this._chart.timeScale(),n=(e.timeToCoordinate(this.zy.point1Time)??0)*i,h=(e.timeToCoordinate(this.zy.point2Time)??0)*i,r=Math.min(n,h),a=Math.max(n,h),l=this.Vx?2:this.zy.lineWidth;this.HM.levels.forEach(e=>{this.Oy(t,e,r,a,i,s,l)}),this.Vx&&(this.Hx(t,n,(this._series.priceToCoordinate(this.zy.point1Price)??0)*s,i),this.Hx(t,h,(this._series.priceToCoordinate(this.zy.point2Price)??0)*s,i))}Oy(t,i,s,e,n,h,r=1){const a=i.ratio??i.Iy,l=i.price??i.Mt;if(void 0===a||void 0===l)return;const o=(this._series.priceToCoordinate(l)??0)*h;let _=this.zy.levelColors?.[a.toString()]||this.zy.lineColor;this.Vx&&(_="#ff6b00"),t.strokeStyle=_,t.lineWidth=r*n,t.beginPath(),t.moveTo(s,o),t.lineTo(e,o),t.stroke(),this.zy.showLabels&&this.Nx(t,i,s,e,o,n,_)}Nx(t,i,s,e,n,h,r){const a=i.label??i.Xa,l=i.price??i.Mt,o=`${a} ${this.zx.formatPrice(l)}`;t.font=11*h+"px sans-serif";const _=t.measureText(o),c=4*h,u="right"===this.zy.labelPosition?e+c:s-_.width-c,d=n;t.fillStyle="rgba(255, 255, 255, 0.9)",t.fillRect(u-c/2,d-11*h/2-c/2,_.width+c,11*h+c),t.fillStyle=r,t.textAlign="right"===this.zy.labelPosition?"left":"right",t.textBaseline="middle",t.fillText(o,u,d)}Ox(){this.zy.point1Time&&this.zy.point1Price&&this.zy.point2Time&&this.zy.point2Price&&(this.HM=this.zx.calculateLevels(this.zy.point1Time,this.zy.point1Price,this.zy.point2Time,this.zy.point2Price),this.zy.onUpdate&&this.HM&&this.zy.onUpdate(this.HM))}updatePoints(t,i,s,e){this.zy.point1Time=t,this.zy.point1Price=i,this.zy.point2Time=s,this.zy.point2Price=e,this.Ox(),this.ob()}getMetrics(){return this.HM}getLevels(){return this.HM?.levels||[]}isVisible(){return this._visible}useExtendedLevels(t){this.zy.useExtended=t,t?this.zx.useExtendedRatios():this.zx.useStandardRatios(),this.Ox(),this.ob()}Dy(){this.yy=new fr(this._chart,this._series,{My:t=>{this.zy.point1Time=t.wt,this.zy.point1Price=t.Mt,this.ob()},by:t=>{this.zy.point2Time=t.wt,this.zy.point2Price=t.Mt},Sy:(t,i)=>{this.zy.point1Time=t.wt,this.zy.point1Price=t.Mt,this.zy.point2Time=i.wt,this.zy.point2Price=i.Mt,this.Py=!0,this.Cy=null,this.Ox(),this.Vy(),this.ob()},xy:t=>{this.Cy=t,this.ob()}}),this.yy.ly()}Ry(t,i,s){if(!this.zy.point1Time||!this.Cy)return;const e=this._chart.timeScale(),n=(e.timeToCoordinate(this.zy.point1Time)??0)*i,h=(this._series.priceToCoordinate(this.zy.point1Price)??0)*s,r=(e.timeToCoordinate(this.Cy.wt)??0)*i,a=(this._series.priceToCoordinate(this.Cy.Mt)??0)*s,l=this.zx.calculateLevels(this.zy.point1Time,this.zy.point1Price,this.Cy.wt,this.Cy.Mt),o=Math.min(n,r),_=Math.max(n,r);t.setLineDash([5*i,5*i]),t.globalAlpha=.7,l.levels.forEach(e=>{const n=e.ratio??e.Iy,h=e.price??e.Mt;if(void 0===n||void 0===h)return;const r=(this._series.priceToCoordinate(h)??0)*s,a=this.zy.levelColors?.[n.toString()]||this.zy.lineColor;if(t.strokeStyle=a,t.lineWidth=this.zy.lineWidth*i,t.beginPath(),t.moveTo(o,r),t.lineTo(_,r),t.stroke(),this.zy.showLabels){const s=`${e.label??e.Xa} ${this.zx.formatPrice(h)}`;t.font=11*i+"px sans-serif";const n=t.measureText(s),l=4*i,c="right"===this.zy.labelPosition?_+l:o-n.width-l,u=r;t.fillStyle="rgba(255, 255, 255, 0.8)",t.fillRect(c-l/2,u-11*i/2-l/2,n.width+l,11*i+l),t.fillStyle=a,t.textAlign="right"===this.zy.labelPosition?"left":"right",t.textBaseline="middle",t.fillText(s,c,u)}}),t.setLineDash([]),t.globalAlpha=1,this.Hx(t,n,h,i),t.globalAlpha=.6,this.Hx(t,r,a,i),t.globalAlpha=1}Hx(t,i,s,e){const n=this.Vx?"#ff6b00":this.zy.lineColor,h=this.Vx?5*e:4*e;t.fillStyle=n,t.beginPath(),t.arc(i,s,h,0,2*Math.PI),t.fill(),this.Vx&&(t.strokeStyle="#ffffff",t.lineWidth=2*e,t.stroke())}Vy(){this.sf=t=>{this.Fy(t)},this._chart.subscribeCrosshairMove(this.sf)}Ay(){this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null)}Fy(t){if(!t.point||!t.time)return;if(!this.Vx||!this.OS)return;const i=this._series.coordinateToPrice(t.point.y);null!==i&&("point1"===this.Ty?(this.zy.point1Time=t.time,this.zy.point1Price=i):"point2"===this.Ty&&(this.zy.point2Time=t.time,this.zy.point2Price=i),this.Ox(),this.ob())}startDrag(t){this.OS=!0,this.Ty=t}stopDrag(){this.OS=!1,this.Ty=null}hitTestEndpoint(t,i){if(!this.Py||!this.zy.point1Time||!this.zy.point2Time)return null;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.zy.point1Time)??0,n=this._series.priceToCoordinate(this.zy.point1Price)??0,h=s.timeToCoordinate(this.zy.point2Time)??0,r=this._series.priceToCoordinate(this.zy.point2Price)??0;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-n,2))<=10)return"point1";return Math.sqrt(Math.pow(t-h,2)+Math.pow(i-r,2))<=10?"point2":null}setSelected(t){this.Vx!==t&&(this.Vx=t,this.ob())}isSelected(){return this.Vx}hitTest(t,i){if(!this.Py||!this.zy.point1Time||!this.zy.point2Time)return!1;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.zy.point1Time)??0,n=s.timeToCoordinate(this.zy.point2Time)??0;if(t<Math.min(e,n)||t>Math.max(e,n))return!1;if(!this.HM)return!1;for(const t of this.HM.levels){const s=t.price??t.Mt;if(void 0===s)continue;const e=this._series.priceToCoordinate(s)??0;if(Math.abs(i-e)<=8)return!0}return!1}remove(){this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.yy&&(this.yy.m(),this.yy=null),this.Ay(),this.zy.onRemove&&this.zy.onRemove()}destroy(){this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.zy.onRemove&&this.zy.onRemove()}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.Ox(),this.ob()}}function xr(t,i){return new Sr(t,i)}class yr{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Pr{constructor(t){this.Dx=t,this.Zt=new yr(t)}renderer(){return this.Dx.isVisible()?this.Zt:null}Tt(){}zOrder(){return"normal"}}class Cr extends ir{constructor(t,i){super(t,"trend-line",i),this.$M=null,this.er=null,this.Vx=!1,this.Rx=!1,this.OS=!1,this.Ex=null,this.Wy=null,this.$y=null,this.Py=!1,this.Cy=null,this.Ny={lineColor:"#2962ff",lineWidth:2,lineStyle:"solid",extendLeft:!1,extendRight:!1,interactive:!1,...i},this.wS(),this.Ny.interactive?this.Dy():this.Py=!0}Dy(){new fr(this._chart,this._series,{My:t=>{this.Ny.point1Time=t.wt,this.Ny.point1Price=t.Mt,this.ob()},by:t=>{this.Ny.point2Time=t.wt,this.Ny.point2Price=t.Mt,this.Py=!0,this.ob(),this.Ny.onUpdate&&this.Ny.onUpdate()},xy:t=>{this.Ny.point1Time&&!this.Py&&(this.Cy=t,this.ob())},Sy:()=>{this.Py=!0}}).ly()}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new Pr(this)}drawToCanvas(t,i,s){if(!this.Py&&this.Ny.point1Time&&this.Cy)return void this.Ry(t,i,s);if(!this.Ny.point1Time||!this.Ny.point2Time)return;const e=this._chart.timeScale(),n=(e.timeToCoordinate(this.Ny.point1Time)??0)*i,h=(this._series.priceToCoordinate(this.Ny.point1Price)??0)*s,r=(e.timeToCoordinate(this.Ny.point2Time)??0)*i,a=(this._series.priceToCoordinate(this.Ny.point2Price)??0)*s,l=this.Vx?"#ff6b00":this.Ny.lineColor,o=this.Vx?this.Ny.lineWidth+1:this.Ny.lineWidth;t.strokeStyle=l,t.lineWidth=o*i,"dashed"===this.Ny.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.Ny.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath();const _=this._chart.chartElement().clientWidth*i;let c=n,u=h,d=r,f=a;if(this.Ny.extendLeft||this.Ny.extendRight){const t=(a-h)/(r-n);this.Ny.extendLeft&&(c=0,u=h-t*(n-0)),this.Ny.extendRight&&(d=_,f=h+t*(_-n))}t.moveTo(c,u),t.lineTo(d,f),t.stroke(),t.setLineDash([]),this.Vx&&(this.Hx(t,n,h,i,l),this.Hx(t,r,a,i,l))}Ry(t,i,s){if(!this.Ny.point1Time||!this.Cy)return;const e=this._chart.timeScale(),n=(e.timeToCoordinate(this.Ny.point1Time)??0)*i,h=(this._series.priceToCoordinate(this.Ny.point1Price)??0)*s,r=(e.timeToCoordinate(this.Cy.wt)??0)*i,a=(this._series.priceToCoordinate(this.Cy.Mt)??0)*s;t.strokeStyle=this.Ny.lineColor,t.lineWidth=this.Ny.lineWidth*i,t.globalAlpha=.7,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(n,h),t.lineTo(r,a),t.stroke(),t.setLineDash([]),t.globalAlpha=1,this.Hx(t,n,h,i,this.Ny.lineColor),t.globalAlpha=.5,this.Hx(t,r,a,i,this.Ny.lineColor),t.globalAlpha=1}Hx(t,i,s,e,n){const h=5*e;t.fillStyle=n,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.beginPath(),t.arc(i,s,h,0,2*Math.PI),t.fill(),t.stroke()}setSelected(t){this.Vx!==t&&(this.Vx=t,this.ob())}isSelected(){return this.Vx}setHovered(t){this.Rx!==t&&(this.Rx=t,this.ob())}hitTest(t,i){if(!this.Ny.point1Time||!this.Ny.point2Time)return!1;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.Ny.point1Time)??0,n=this._series.priceToCoordinate(this.Ny.point1Price)??0,h=s.timeToCoordinate(this.Ny.point2Time)??0,r=this._series.priceToCoordinate(this.Ny.point2Price)??0;return this.Uy(t,i,e,n,h,r)<=8}Uy(t,i,s,e,n,h){const r=n-s,a=h-e,l=r*r+a*a;if(0===l)return Math.sqrt((t-s)*(t-s)+(i-e)*(i-e));let o=((t-s)*r+(i-e)*a)/l;o=Math.max(0,Math.min(1,o));const _=s+o*r,c=e+o*a;return Math.sqrt((t-_)*(t-_)+(i-c)*(i-c))}hitTestEndpoint(t,i){if(!this.Ny.point1Time||!this.Ny.point2Time)return null;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.Ny.point1Time)??0,n=this._series.priceToCoordinate(this.Ny.point1Price)??0,h=s.timeToCoordinate(this.Ny.point2Time)??0,r=this._series.priceToCoordinate(this.Ny.point2Price)??0;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-n,2))<=10)return"point1";if(Math.sqrt(Math.pow(t-h,2)+Math.pow(i-r,2))<=10)return"point2";return this.Uy(t,i,e,n,h,r)<=10?"line":null}startDrag(t){this.OS=!0,this.Ex=t,"line"===t&&(this.Wy={wt:this.Ny.point1Time,Mt:this.Ny.point1Price},this.$y={wt:this.Ny.point2Time,Mt:this.Ny.point2Price})}stopDrag(){this.OS=!1,this.Ex=null,this.Wy=null,this.$y=null}updateDrag(t,i){if(this.OS&&this.Ex){if("point1"===this.Ex)this.Ny.point1Time=t,this.Ny.point1Price=i;else if("point2"===this.Ex)this.Ny.point2Time=t,this.Ny.point2Price=i;else if("line"===this.Ex&&this.Wy&&this.$y){const s=i-this.Wy.Mt,e=t-this.Wy.wt;this.Ny.point1Time=this.Wy.wt+e,this.Ny.point1Price=this.Wy.Mt+s,this.Ny.point2Time=this.$y.wt+e,this.Ny.point2Price=this.$y.Mt+s,this.Wy={wt:this.Ny.point1Time,Mt:this.Ny.point1Price},this.$y={wt:this.Ny.point2Time,Mt:this.Ny.point2Price}}this.ob(),this.Ny.onUpdate&&this.Ny.onUpdate()}}isVisible(){return this._visible}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.$M&&this._series.updatePrimitive(this.$M)}remove(){this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.Ny.onRemove&&this.Ny.onRemove()}}function Tr(t,i){return new Cr(t,i)}class kr{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Dr{constructor(t){this.Dx=t,this.Zt=new kr(t)}renderer(){return this.Dx.isVisible()?this.Zt:null}Tt(){}zOrder(){return"normal"}}class Vr extends ir{constructor(t,i){super(t,"horizontal-line",i),this.$M=null,this.er=null,this.Vx=!1,this.Rx=!1,this.OS=!1,this.Hy={lineColor:"#2962ff",lineWidth:2,lineStyle:"solid",showLabel:!0,labelText:"",interactive:!1,...i},this.wS()}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new Dr(this)}drawToCanvas(t,i,s){if(void 0===this.Hy.price)return;const e=(this._series.priceToCoordinate(this.Hy.price)??0)*s,n=this._chart.chartElement().clientWidth*i,h=this.Vx?"#ff6b00":this.Hy.lineColor,r=this.Vx?this.Hy.lineWidth+1:this.Hy.lineWidth;t.strokeStyle=h,t.lineWidth=r*i,"dashed"===this.Hy.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.Hy.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.moveTo(0,e),t.lineTo(n,e),t.stroke(),t.setLineDash([]),this.Hy.showLabel&&(this.Vx||this.Rx)&&this.Nx(t,e,i,s,h)}Nx(t,i,s,e,n){const h=this.Hy.labelText||this.Hy.price.toFixed(4),r=6*s,a=12*s;t.font=`${a}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const l=t.measureText(h).width,o=a,_=10*s,c=i-o/2-r;t.fillStyle=n,t.fillRect(_,c,l+2*r,o+2*r),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(h,_+r,c+r)}setSelected(t){this.Vx!==t&&(this.Vx=t,this.ob())}isSelected(){return this.Vx}setHovered(t){this.Rx!==t&&(this.Rx=t,this.ob())}hitTest(t,i){if(void 0===this.Hy.price)return!1;const s=this._series.priceToCoordinate(this.Hy.price)??0;return Math.abs(i-s)<=8}hitTestEndpoint(t,i){return this.hitTest(t,i)?"line":null}startDrag(t){this.OS=!0}stopDrag(){this.OS=!1}updateDrag(t,i){this.OS&&(this.Hy.price=i,this.ob(),this.Hy.onUpdate&&this.Hy.onUpdate())}getPrice(){return this.Hy.price}setPrice(t){this.Hy.price=t,this.ob()}setLabel(t){this.Hy.labelText=t,this.ob()}isVisible(){return this._visible}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.$M&&this._series.updatePrimitive(this.$M)}remove(){this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.Hy.onRemove&&this.Hy.onRemove()}}function Rr(t,i){return new Vr(t,i)}class Er{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Ar{constructor(t){this.Dx=t,this.Zt=new Er(t)}renderer(){return this.Dx.isVisible()?this.Zt:null}Tt(){}zOrder(){return"normal"}}class Fr extends ir{constructor(t,i){super(t,"vertical-line",i),this.$M=null,this.er=null,this.Vx=!1,this.Rx=!1,this.OS=!1,this.qy={lineColor:"#787b86",lineWidth:1,lineStyle:"dashed",showLabel:!0,labelText:"",interactive:!1,...i},this.wS()}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new Ar(this)}drawToCanvas(t,i,s){if(void 0===this.qy.time)return;const e=(this._chart.timeScale().timeToCoordinate(this.qy.time)??0)*i,n=this._chart.chartElement().clientHeight*s,h=this.Vx?"#ff6b00":this.qy.lineColor,r=this.Vx?this.qy.lineWidth+1:this.qy.lineWidth;t.strokeStyle=h,t.lineWidth=r*i,"dashed"===this.qy.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.qy.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.moveTo(e,0),t.lineTo(e,n),t.stroke(),t.setLineDash([]),this.qy.showLabel&&(this.Vx||this.Rx)&&this.qy.labelText&&this.Nx(t,e,i,s,h)}Nx(t,i,s,e,n){const h=this.qy.labelText,r=6*s,a=12*s;t.font=`${a}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const l=t.measureText(h).width,o=a,_=i-l/2-r,c=10*e;t.fillStyle=n,t.fillRect(_,c,l+2*r,o+2*r),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(h,_+r,c+r)}setSelected(t){this.Vx!==t&&(this.Vx=t,this.ob())}isSelected(){return this.Vx}setHovered(t){this.Rx!==t&&(this.Rx=t,this.ob())}hitTest(t,i){if(void 0===this.qy.time)return!1;const s=this._chart.timeScale().timeToCoordinate(this.qy.time)??0;return Math.abs(t-s)<=8}hitTestEndpoint(t,i){return this.hitTest(t,i)?"line":null}startDrag(t){this.OS=!0}stopDrag(){this.OS=!1}updateDrag(t,i){this.OS&&(this.qy.time=t,this.ob(),this.qy.onUpdate&&this.qy.onUpdate())}getTime(){return this.qy.time}setTime(t){this.qy.time=t,this.ob()}setLabel(t){this.qy.labelText=t,this.ob()}isVisible(){return this._visible}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.$M&&this._series.updatePrimitive(this.$M)}remove(){this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.qy.onRemove&&this.qy.onRemove()}}function Br(t,i){return new Fr(t,i)}class Ir{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Lr{constructor(t){this.Dx=t,this.Zt=new Ir(t)}renderer(){return this.Dx.isVisible()?this.Zt:null}Tt(){}zOrder(){return"normal"}}class zr extends ir{constructor(t,i){super(t,"arrow",i),this.$M=null,this.er=null,this.Vx=!1,this.Rx=!1,this.OS=!1,this.Yy=-1,this.jy=!1,this.XS=null,this.Gy=null,this.sf=null,this.Cy=null,this.Ky={points:[],lineColor:"#2962ff",lineWidth:2,showArrowHead:!0,showCircles:!0,circleRadius:4,interactive:!1,...i},this.wS(),!this.Ky.interactive||this.Ky.points&&0!==this.Ky.points.length||this.Dy()}Dy(){this.jy=!0,this.XS=t=>{if(!t.point||!t.time)return;const i=this._series.coordinateToPrice(t.point.y);null!==i&&(this.Ky.points||(this.Ky.points=[]),this.Ky.points.push({time:t.time,price:i}),this.ob(),this.Ky.onUpdate&&this.Ky.onUpdate())},this.sf=t=>{if(this.jy)if(t.point&&t.time){const i=this._series.coordinateToPrice(t.point.y);null!==i&&(this.Cy={wt:t.time,Mt:i},this.ob())}else this.Cy=null,this.ob()},this.Gy=t=>{this.jy&&(t.preventDefault(),t.stopPropagation(),this.finishDrawing())},this._chart.subscribeClick(this.XS),this._chart.subscribeCrosshairMove(this.sf);const t=this._chart.chartElement?.();t&&t.addEventListener("contextmenu",this.Gy)}finishDrawing(){if(this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.Gy){const t=this._chart.chartElement?.();t&&t.removeEventListener("contextmenu",this.Gy),this.Gy=null}this.jy=!1,this.Cy=null,this.ob(),this.Ky.onComplete&&this.Ky.onComplete()}isDrawing(){return this.jy}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new Lr(this)}drawToCanvas(t,i,s){if(!this.Ky.points||0===this.Ky.points.length)return;const e=this._chart.timeScale(),n=this.Vx?"#ff6b00":this.Ky.lineColor,h=this.Vx?this.Ky.lineWidth+1:this.Ky.lineWidth,r=[];for(const t of this.Ky.points){const n=(e.timeToCoordinate(t.time)??0)*i,h=(this._series.priceToCoordinate(t.price)??0)*s;r.push({ct:n,ut:h})}let a=null;if(this.jy&&this.Cy&&this.Ky.points.length>0){a={ct:(e.timeToCoordinate(this.Cy.wt)??0)*i,ut:(this._series.priceToCoordinate(this.Cy.Mt)??0)*s}}if(r.length>1){t.strokeStyle=n,t.lineWidth=h*i,t.beginPath(),t.moveTo(r[0].ct,r[0].ut);for(let i=1;i<r.length;i++)t.lineTo(r[i].ct,r[i].ut);t.stroke()}if(a&&r.length>0){const s=r[r.length-1];t.strokeStyle=n,t.lineWidth=h*i,t.globalAlpha=.5,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(s.ct,s.ut),t.lineTo(a.ct,a.ut),t.stroke(),t.setLineDash([]),t.globalAlpha=1}if(this.Ky.showArrowHead&&r.length>1&&this.Jy(t,r[r.length-2],r[r.length-1],i,n),this.Ky.showCircles)for(let s=0;s<r.length;s++)this.Xy(t,r[s].ct,r[s].ut,i,n,0===s)}Jy(t,i,s,e,n){const h=12*e,r=Math.atan2(s.ut-i.ut,s.ct-i.ct),a={ct:s.ct-h*Math.cos(r-Math.PI/6),ut:s.ut-h*Math.sin(r-Math.PI/6)},l={ct:s.ct-h*Math.cos(r+Math.PI/6),ut:s.ut-h*Math.sin(r+Math.PI/6)};t.fillStyle=n,t.beginPath(),t.moveTo(s.ct,s.ut),t.lineTo(a.ct,a.ut),t.lineTo(l.ct,l.ut),t.closePath(),t.fill()}Xy(t,i,s,e,n,h){const r=this.Ky.circleRadius*e;t.beginPath(),t.arc(i,s,r,0,2*Math.PI),h?(t.fillStyle=n,t.fill()):(t.strokeStyle=n,t.lineWidth=2*e,t.stroke(),t.fillStyle="#ffffff",t.fill(),t.strokeStyle=n,t.stroke())}setSelected(t){this.Vx!==t&&(this.Vx=t,this.ob())}isSelected(){return this.Vx}setHovered(t){this.Rx!==t&&(this.Rx=t,this.ob())}hitTest(t,i){if(!this.Ky.points||0===this.Ky.points.length)return!1;const s=this._chart.timeScale();for(let e=0;e<this.Ky.points.length-1;e++){const n=this.Ky.points[e],h=this.Ky.points[e+1],r=s.timeToCoordinate(n.time)??0,a=this._series.priceToCoordinate(n.price)??0,l=s.timeToCoordinate(h.time)??0,o=this._series.priceToCoordinate(h.price)??0;if(this.Uy(t,i,r,a,l,o)<=8)return!0}for(const e of this.Ky.points){const n=s.timeToCoordinate(e.time)??0,h=this._series.priceToCoordinate(e.price)??0;if(Math.sqrt(Math.pow(t-n,2)+Math.pow(i-h,2))<=8)return!0}return!1}Uy(t,i,s,e,n,h){const r=n-s,a=h-e,l=r*r+a*a;if(0===l)return Math.sqrt((t-s)*(t-s)+(i-e)*(i-e));let o=((t-s)*r+(i-e)*a)/l;o=Math.max(0,Math.min(1,o));const _=s+o*r,c=e+o*a;return Math.sqrt((t-_)*(t-_)+(i-c)*(i-c))}hitTestEndpoint(t,i){if(!this.Ky.points||0===this.Ky.points.length)return null;const s=this._chart.timeScale();for(let e=0;e<this.Ky.points.length;e++){const n=this.Ky.points[e],h=s.timeToCoordinate(n.time)??0,r=this._series.priceToCoordinate(n.price)??0;if(Math.sqrt(Math.pow(t-h,2)+Math.pow(i-r,2))<=10)return e}return null}startDrag(t){this.OS=!0,this.Yy=t}stopDrag(){this.OS=!1,this.Yy=-1}updateDrag(t,i){this.OS&&-1!==this.Yy&&this.Ky.points&&this.Yy>=0&&this.Yy<this.Ky.points.length&&(this.Ky.points[this.Yy]={time:t,price:i},this.ob(),this.Ky.onUpdate&&this.Ky.onUpdate())}getPoints(){return this.Ky.points||[]}addPoint(t){this.Ky.points||(this.Ky.points=[]),this.Ky.points.push(t),this.ob()}isVisible(){return this._visible}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.$M&&this._series.updatePrimitive(this.$M)}remove(){if(this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.Gy){const t=this._chart.chartElement?.();t&&t.removeEventListener("contextmenu",this.Gy),this.Gy=null}this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.Ky.onRemove&&this.Ky.onRemove()}}function Or(t,i){return new zr(t,i)}class Wr{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class $r{constructor(t){this.Dx=t,this.Zt=new Wr(t)}renderer(){return this.Dx.isVisible()?this.Zt:null}Tt(){}zOrder(){return"bottom"}}class Nr extends ir{constructor(t,i){super(t,"rectangle",i),this.$M=null,this.er=null,this.Vx=!1,this.Rx=!1,this.OS=!1,this.Ex=null,this.Wy=null,this.$y=null,this.jy=!1,this.XS=null,this.sf=null,this.Cy=null,this.Zy={fillColor:"#2962ff",fillOpacity:.2,borderColor:"#2962ff",borderWidth:2,borderStyle:"solid",showLabel:!0,labelText:"",labelPosition:"top-left",interactive:!1,...i},this.wS(),!this.Zy.interactive||this.Zy.time1&&this.Zy.time2||this.Dy()}Dy(){this.jy=!0,this.XS=t=>{if(!t.point||!t.time)return;const i=this._series.coordinateToPrice(t.point.y);null!==i&&(this.Zy.time1?(this.Zy.time2=t.time,this.Zy.price2=i,this.jy=!1,this.Cy=null,this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.ob(),this.Zy.onUpdate&&this.Zy.onUpdate()):(this.Zy.time1=t.time,this.Zy.price1=i,this.ob()))},this.sf=t=>{if(this.jy&&this.Zy.time1)if(t.point&&t.time){const i=this._series.coordinateToPrice(t.point.y);null!==i&&(this.Cy={wt:t.time,Mt:i},this.ob())}else this.Cy=null,this.ob()},this._chart.subscribeClick(this.XS),this._chart.subscribeCrosshairMove(this.sf)}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new $r(this)}drawToCanvas(t,i,s){const e=this.Zy.time1,n=this.Zy.price1,h=this.jy&&this.Cy?this.Cy.wt:this.Zy.time2,r=this.jy&&this.Cy?this.Cy.Mt:this.Zy.price2;if(!e||void 0===n||!h||void 0===r)return;const a=this._chart.timeScale(),l=(a.timeToCoordinate(e)??0)*i,o=(this._series.priceToCoordinate(n)??0)*s,_=(a.timeToCoordinate(h)??0)*i,c=(this._series.priceToCoordinate(r)??0)*s,u=Math.min(l,_),d=Math.max(l,_),f=Math.min(o,c),p=Math.max(o,c),v=d-u,m=p-f;if(this.Zy.fillOpacity>0){const i=this.mS(this.Vx?"#ff6b00":this.Zy.fillColor,this.jy?.1:this.Zy.fillOpacity);t.fillStyle=i,t.fillRect(u,f,v,m)}const g=this.Vx?"#ff6b00":this.Zy.borderColor,w=this.Vx?this.Zy.borderWidth+1:this.Zy.borderWidth;t.strokeStyle=g,t.lineWidth=w*i,"dashed"===this.Zy.borderStyle?t.setLineDash([10*i,5*i]):"dotted"===this.Zy.borderStyle&&t.setLineDash([2*i,3*i]),t.strokeRect(u,f,v,m),t.setLineDash([]),this.Vx&&!this.jy&&this.Qy(t,u,f,d,p,i,g),this.Zy.showLabel&&this.Zy.labelText&&!this.jy&&this.Nx(t,u,f,d,p,i,s,g)}Qy(t,i,s,e,n,h,r){const a=8*h,l=[{ct:i,ut:s},{ct:e,ut:s},{ct:i,ut:n},{ct:e,ut:n}];t.fillStyle=r,t.strokeStyle="#ffffff",t.lineWidth=2*h;for(const i of l)t.fillRect(i.ct-a/2,i.ut-a/2,a,a),t.strokeRect(i.ct-a/2,i.ut-a/2,a,a)}Nx(t,i,s,e,n,h,r,a){const l=6*h,o=12*h;t.font=`${o}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const _=t.measureText(this.Zy.labelText).width,c=o;let u=i+l,d=s+l;switch(this.Zy.labelPosition){case"top-right":u=e-_-2*l,d=s+l;break;case"bottom-left":u=i+l,d=n-c-2*l;break;case"bottom-right":u=e-_-2*l,d=n-c-2*l;break;case"center":u=(i+e)/2-_/2-l,d=(s+n)/2-c/2-l}t.fillStyle=a,t.fillRect(u,d,_+2*l,c+2*l),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(this.Zy.labelText,u+l,d+l)}mS(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}setSelected(t){this.Vx!==t&&(this.Vx=t,this.ob())}isSelected(){return this.Vx}setHovered(t){this.Rx!==t&&(this.Rx=t,this.ob())}hitTest(t,i){if(!this.Zy.time1||!this.Zy.time2)return!1;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.Zy.time1)??0,n=this._series.priceToCoordinate(this.Zy.price1)??0,h=s.timeToCoordinate(this.Zy.time2)??0,r=this._series.priceToCoordinate(this.Zy.price2)??0,a=Math.min(e,h),l=Math.max(e,h),o=Math.min(n,r),_=Math.max(n,r);return t>=a&&t<=l&&i>=o&&i<=_}hitTestEndpoint(t,i){if(!this.Zy.time1||!this.Zy.time2)return null;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.Zy.time1)??0,n=this._series.priceToCoordinate(this.Zy.price1)??0,h=s.timeToCoordinate(this.Zy.time2)??0,r=this._series.priceToCoordinate(this.Zy.price2)??0,a=Math.min(e,h),l=Math.max(e,h),o=Math.min(n,r),_=Math.max(n,r),c=10;return Math.abs(t-a)<=c&&Math.abs(i-o)<=c?"corner1":Math.abs(t-l)<=c&&Math.abs(i-o)<=c?"corner2":Math.abs(t-a)<=c&&Math.abs(i-_)<=c?"corner3":Math.abs(t-l)<=c&&Math.abs(i-_)<=c?"corner4":t>=a&&t<=l&&i>=o&&i<=_?"body":null}startDrag(t){this.OS=!0,this.Ex=t,"body"===t&&(this.Wy={wt:this.Zy.time1,Mt:this.Zy.price1},this.$y={wt:this.Zy.time2,Mt:this.Zy.price2})}stopDrag(){this.OS=!1,this.Ex=null,this.Wy=null,this.$y=null}updateDrag(t,i){if(!this.OS||!this.Ex)return;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.Zy.time1)??0,n=this._series.priceToCoordinate(this.Zy.price1)??0,h=e<(s.timeToCoordinate(this.Zy.time2)??0),r=n<(this._series.priceToCoordinate(this.Zy.price2)??0);if("body"===this.Ex&&this.Wy&&this.$y){const s=i-this.Wy.Mt,e=t-this.Wy.wt;this.Zy.time1=this.Wy.wt+e,this.Zy.price1=this.Wy.Mt+s,this.Zy.time2=this.$y.wt+e,this.Zy.price2=this.$y.Mt+s,this.Wy={wt:this.Zy.time1,Mt:this.Zy.price1},this.$y={wt:this.Zy.time2,Mt:this.Zy.price2}}else switch(this.Ex){case"corner1":h&&r?(this.Zy.time1=t,this.Zy.price1=i):!h&&r?(this.Zy.time2=t,this.Zy.price1=i):h&&!r?(this.Zy.time1=t,this.Zy.price2=i):(this.Zy.time2=t,this.Zy.price2=i);break;case"corner2":h&&r?(this.Zy.time2=t,this.Zy.price1=i):!h&&r?(this.Zy.time1=t,this.Zy.price1=i):h&&!r?(this.Zy.time2=t,this.Zy.price2=i):(this.Zy.time1=t,this.Zy.price2=i);break;case"corner3":h&&r?(this.Zy.time1=t,this.Zy.price2=i):!h&&r?(this.Zy.time2=t,this.Zy.price2=i):h&&!r?(this.Zy.time1=t,this.Zy.price1=i):(this.Zy.time2=t,this.Zy.price1=i);break;case"corner4":h&&r?(this.Zy.time2=t,this.Zy.price2=i):!h&&r?(this.Zy.time1=t,this.Zy.price2=i):h&&!r?(this.Zy.time2=t,this.Zy.price1=i):(this.Zy.time1=t,this.Zy.price1=i)}this.ob(),this.Zy.onUpdate&&this.Zy.onUpdate()}isVisible(){return this._visible}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.$M&&this._series.updatePrimitive(this.$M)}remove(){this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.Zy.onRemove&&this.Zy.onRemove()}}function Ur(t,i){return new Nr(t,i)}class Hr{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class qr{constructor(t){this.Dx=t,this.Zt=new Hr(t)}renderer(){return this.Dx.isVisible()?this.Zt:null}Tt(){}zOrder(){return"bottom"}}class Yr extends ir{constructor(t,i){super(t,"circle",i),this.$M=null,this.er=null,this.Vx=!1,this.Rx=!1,this.OS=!1,this.Ex=null,this.jy=!1,this.XS=null,this.sf=null,this.Cy=null,this.tP={fillColor:"#2962ff",fillOpacity:.1,borderColor:"#2962ff",borderWidth:2,borderStyle:"solid",showLabel:!1,labelText:"",interactive:!1,...i},this.wS(),this.tP.interactive&&!this.tP.centerTime&&this.Dy()}Dy(){this.jy=!0,this.XS=t=>{if(!t.point||!t.time)return;const i=this._series.coordinateToPrice(t.point.y);if(null!==i)if(this.tP.centerTime){const s=this._chart.timeScale().timeToCoordinate(this.tP.centerTime)??0,e=this._series.priceToCoordinate(this.tP.centerPrice)??0,n=this._chart.timeScale().timeToCoordinate(t.time)??0,h=this._series.priceToCoordinate(i)??0;this.tP.radiusTime=Math.abs(n-s),this.tP.radiusPrice=Math.abs(h-e),this.jy=!1,this.Cy=null,this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.ob(),this.tP.onUpdate&&this.tP.onUpdate()}else this.tP.centerTime=t.time,this.tP.centerPrice=i,this.ob()},this.sf=t=>{if(this.jy&&this.tP.centerTime)if(t.point&&t.time){const i=this._series.coordinateToPrice(t.point.y);null!==i&&(this.Cy={wt:t.time,Mt:i},this.ob())}else this.Cy=null,this.ob()},this._chart.subscribeClick(this.XS),this._chart.subscribeCrosshairMove(this.sf)}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new qr(this)}drawToCanvas(t,i,s){if(!this.tP.centerTime||void 0===this.tP.centerPrice)return;const e=this._chart.timeScale(),n=(e.timeToCoordinate(this.tP.centerTime)??0)*i,h=(this._series.priceToCoordinate(this.tP.centerPrice)??0)*s;let r,a;if(this.jy&&this.Cy){const t=(e.timeToCoordinate(this.Cy.wt)??0)*i,l=(this._series.priceToCoordinate(this.Cy.Mt)??0)*s;r=Math.abs(t-n),a=Math.abs(l-h)}else{if(void 0===this.tP.radiusTime||void 0===this.tP.radiusPrice)return;r=this.tP.radiusTime*i,a=this.tP.radiusPrice*s}if(this.tP.fillOpacity>0){const i=this.mS(this.Vx?"#ff6b00":this.tP.fillColor,this.jy?.05:this.tP.fillOpacity);t.fillStyle=i,t.beginPath(),t.ellipse(n,h,r,a,0,0,2*Math.PI),t.fill()}const l=this.Vx?"#ff6b00":this.tP.borderColor,o=this.Vx?this.tP.borderWidth+1:this.tP.borderWidth;t.strokeStyle=l,t.lineWidth=o*i,"dashed"===this.tP.borderStyle?t.setLineDash([10*i,5*i]):"dotted"===this.tP.borderStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.ellipse(n,h,r,a,0,0,2*Math.PI),t.stroke(),t.setLineDash([]),this.Vx&&!this.jy&&this.iP(t,n,h,i,l),this.Vx&&!this.jy&&this.sP(t,n,h,r,a,i,l),this.tP.showLabel&&this.tP.labelText&&!this.jy&&this.Nx(t,n,h,i,l)}iP(t,i,s,e,n){const h=8*e;t.fillStyle=n,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.beginPath(),t.arc(i,s,h/2,0,2*Math.PI),t.fill(),t.stroke()}sP(t,i,s,e,n,h,r){const a=8*h,l=[{ct:i,ut:s-n},{ct:i+e,ut:s},{ct:i,ut:s+n},{ct:i-e,ut:s}];t.fillStyle=r,t.strokeStyle="#ffffff",t.lineWidth=2*h;for(const i of l)t.fillRect(i.ct-a/2,i.ut-a/2,a,a),t.strokeRect(i.ct-a/2,i.ut-a/2,a,a)}Nx(t,i,s,e,n){const h=6*e,r=12*e;t.font=`${r}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const a=t.measureText(this.tP.labelText).width,l=r,o=i-a/2-h,_=s-l/2-h;t.fillStyle=n,t.fillRect(o,_,a+2*h,l+2*h),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(this.tP.labelText,o+h,_+h)}mS(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}setSelected(t){this.Vx!==t&&(this.Vx=t,this.ob())}isSelected(){return this.Vx}setHovered(t){this.Rx!==t&&(this.Rx=t,this.ob())}hitTest(t,i){if(!this.tP.centerTime||void 0===this.tP.radiusTime)return!1;const s=this._chart.timeScale().timeToCoordinate(this.tP.centerTime)??0,e=this._series.priceToCoordinate(this.tP.centerPrice)??0,n=(t-s)/this.tP.radiusTime,h=(i-e)/this.tP.radiusPrice;return n*n+h*h<=1}hitTestEndpoint(t,i){if(!this.tP.centerTime||void 0===this.tP.radiusTime)return null;const s=this._chart.timeScale().timeToCoordinate(this.tP.centerTime)??0,e=this._series.priceToCoordinate(this.tP.centerPrice)??0,n=this.tP.radiusTime,h=this.tP.radiusPrice;if(Math.abs(t-s)<=10&&Math.abs(i-e)<=10)return"center";const r=[{ct:s,ut:e-h},{ct:s+n,ut:e},{ct:s,ut:e+h},{ct:s-n,ut:e}];for(const s of r)if(Math.abs(t-s.ct)<=10&&Math.abs(i-s.ut)<=10)return"edge";return null}startDrag(t){this.OS=!0,this.Ex=t}stopDrag(){this.OS=!1,this.Ex=null}updateDrag(t,i){if(this.OS&&this.Ex){if("center"===this.Ex)this.tP.centerTime=t,this.tP.centerPrice=i;else if("edge"===this.Ex){const s=this._chart.timeScale(),e=s.timeToCoordinate(this.tP.centerTime)??0,n=this._series.priceToCoordinate(this.tP.centerPrice)??0,h=s.timeToCoordinate(t)??0,r=this._series.priceToCoordinate(i)??0;this.tP.radiusTime=Math.abs(h-e),this.tP.radiusPrice=Math.abs(r-n)}this.ob(),this.tP.onUpdate&&this.tP.onUpdate()}}isVisible(){return this._visible}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.$M&&this._series.updatePrimitive(this.$M)}remove(){this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.tP.onRemove&&this.tP.onRemove()}}function jr(t,i){return new Yr(t,i)}class Gr{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Kr{constructor(t){this.Dx=t,this.Zt=new Gr(t)}renderer(){return this.Dx.isVisible()?this.Zt:null}Tt(){}zOrder(){return"normal"}}const Jr=[{level:.382,color:"#787B86",label:"38.2%"},{level:.5,color:"#9598A1",label:"50%"},{level:.618,color:"#787B86",label:"61.8%"}];class Xr extends ir{constructor(t,i){super(t,"fibonacci-fan",i),this.$M=null,this.er=null,this.Vx=!1,this.Rx=!1,this.OS=!1,this.Ex=null,this.jy=!1,this.XS=null,this.sf=null,this.Cy=null,this.eP={levels:Jr,lineWidth:1,showLabels:!0,extendLines:!0,interactive:!1,...i},this.wS(),this.eP.interactive&&!this.eP.point1Time&&this.Dy()}Dy(){this.jy=!0,this.XS=t=>{if(!t.point||!t.time)return;const i=this._series.coordinateToPrice(t.point.y);null!==i&&(this.eP.point1Time?(this.eP.point2Time=t.time,this.eP.point2Price=i,this.jy=!1,this.Cy=null,this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.ob(),this.eP.onUpdate&&this.eP.onUpdate()):(this.eP.point1Time=t.time,this.eP.point1Price=i,this.ob()))},this.sf=t=>{if(this.jy&&this.eP.point1Time)if(t.point&&t.time){const i=this._series.coordinateToPrice(t.point.y);null!==i&&(this.Cy={wt:t.time,Mt:i},this.ob())}else this.Cy=null,this.ob()},this._chart.subscribeClick(this.XS),this._chart.subscribeCrosshairMove(this.sf)}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new Kr(this)}drawToCanvas(t,i,s){const e=this.eP.point1Time,n=this.eP.point1Price,h=this.jy&&this.Cy?this.Cy.wt:this.eP.point2Time,r=this.jy&&this.Cy?this.Cy.Mt:this.eP.point2Price;if(!e||void 0===n||!h||void 0===r)return;const a=this._chart.timeScale(),l=(a.timeToCoordinate(e)??0)*i,o=(this._series.priceToCoordinate(n)??0)*s,_=(a.timeToCoordinate(h)??0)*i,c=(this._series.priceToCoordinate(r)??0)*s,u=this.Vx?"#ff6b00":void 0,d=this.Vx?this.eP.lineWidth+1:this.eP.lineWidth;if(this.nP(t,l,o,_,c,u||"#2962FF",d*i),this.eP.levels)for(const e of this.eP.levels)this.hP(t,l,o,_,c,e,i,s,u,d);this.Vx&&!this.jy&&(this.Hx(t,l,o,i,u||"#ff6b00"),this.Hx(t,_,c,i,u||"#ff6b00"))}hP(t,i,s,e,n,h,r,a,l,o){const _=e,c=s+(n-s)*h.level;let u=_,d=c;if(this.eP.extendLines){const t=this._chart.chartElement().clientWidth*r,e=_-i,n=c-s,h=Math.sqrt(e*e+n*n);if(h>0){const r=2*t;u=i+e/h*r,d=s+n/h*r}}const f=l||h.color;this.nP(t,i,s,u,d,f,o*r),this.eP.showLabels&&!this.jy&&this.Nx(t,_,c,h.label,r,f)}nP(t,i,s,e,n,h,r){t.strokeStyle=h,t.lineWidth=r,t.beginPath(),t.moveTo(i,s),t.lineTo(e,n),t.stroke()}Hx(t,i,s,e,n){const h=5*e;t.fillStyle=n,t.beginPath(),t.arc(i,s,h,0,2*Math.PI),t.fill(),t.strokeStyle="#ffffff",t.lineWidth=2*e,t.stroke()}Nx(t,i,s,e,n,h){const r=11*n,a=4*n;t.font=`${r}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const l=t.measureText(e).width,o=r;t.fillStyle=h,t.fillRect(i+a,s-o-a,l+2*a,o+2*a),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(e,i+2*a,s-o-a+a)}setSelected(t){this.Vx!==t&&(this.Vx=t,this.ob())}isSelected(){return this.Vx}setHovered(t){this.Rx!==t&&(this.Rx=t,this.ob())}hitTest(t,i){if(!this.eP.point1Time||!this.eP.point2Time)return!1;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.eP.point1Time)??0,n=this._series.priceToCoordinate(this.eP.point1Price)??0,h=s.timeToCoordinate(this.eP.point2Time)??0,r=this._series.priceToCoordinate(this.eP.point2Price)??0;if(this.Uy(t,i,e,n,h,r)<=8)return!0;if(this.eP.levels)for(const s of this.eP.levels){const a=n+(r-n)*s.level,l=h;if(this.Uy(t,i,e,n,l,a)<=8)return!0}return!1}Uy(t,i,s,e,n,h){const r=n-s,a=h-e,l=r*r+a*a;if(0===l)return Math.sqrt((t-s)*(t-s)+(i-e)*(i-e));let o=((t-s)*r+(i-e)*a)/l;o=Math.max(0,Math.min(1,o));const _=s+o*r,c=e+o*a;return Math.sqrt((t-_)*(t-_)+(i-c)*(i-c))}hitTestEndpoint(t,i){if(!this.eP.point1Time||!this.eP.point2Time)return null;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.eP.point1Time)??0,n=this._series.priceToCoordinate(this.eP.point1Price)??0,h=s.timeToCoordinate(this.eP.point2Time)??0,r=this._series.priceToCoordinate(this.eP.point2Price)??0;return Math.abs(t-e)<=10&&Math.abs(i-n)<=10?"point1":Math.abs(t-h)<=10&&Math.abs(i-r)<=10?"point2":null}startDrag(t){this.OS=!0,this.Ex=t}stopDrag(){this.OS=!1,this.Ex=null}updateDrag(t,i){this.OS&&this.Ex&&("point1"===this.Ex?(this.eP.point1Time=t,this.eP.point1Price=i):"point2"===this.Ex&&(this.eP.point2Time=t,this.eP.point2Price=i),this.ob(),this.eP.onUpdate&&this.eP.onUpdate())}isVisible(){return this._visible}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.$M&&this._series.updatePrimitive(this.$M)}remove(){this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.eP.onRemove&&this.eP.onRemove()}}function Zr(t,i){return new Xr(t,i)}class Qr{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class ta{constructor(t){this.Dx=t,this.Zt=new Qr(t)}renderer(){return this.Dx.isVisible()?this.Zt:null}}class ia extends ir{constructor(t,i){super(t,"fibonacci-extension",i),this.$M=null,this.er=null,this.Vx=!1,this.Rx=!1,this.OS=!1,this.Ex=null,this.zy={levels:[{level:0,color:"#787B86",label:"0%"},{level:.618,color:"#2962FF",label:"61.8%"},{level:1,color:"#787B86",label:"100%"},{level:1.618,color:"#F23645",label:"161.8%"},{level:2.618,color:"#9C27B0",label:"261.8%"}],lineColor:"#787B86",lineWidth:1,showLabels:!0,extendLines:!0,...i},this.wS()}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new ta(this)}getPoint1(){return this.zy.point1}getPoint2(){return this.zy.point2}getPoint3(){return this.zy.point3}getLevels(){return this.zy.levels||[]}getOptions(){return this.zy}setPoint1(t){this.zy.point1=t,this.ob()}setPoint2(t){this.zy.point2=t,this.ob()}setPoint3(t){this.zy.point3=t,this.ob()}isComplete(){return!!(this.zy.point1&&this.zy.point2&&this.zy.point3)}setSelected(t){this.Vx!==t&&(this.Vx=t,this.ob())}isSelected(){return this.Vx}setHovered(t){this.Rx!==t&&(this.Rx=t,this.ob())}hitTest(t,i){if(!this.isComplete())return!1;const s=this.zy.point1,e=this.zy.point2,n=this.zy.point3,h=this._chart.timeScale(),r=[s,e,n];for(const s of r){const e=h.timeToCoordinate(s.time)??0,n=this._series.priceToCoordinate(s.price)??0;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-n,2))<=10)return!0}const a=this.rP();for(const t of a){const s=this._series.priceToCoordinate(t.Mt)??0;if(Math.abs(i-s)<=10)return!0}return!1}hitTestEndpoint(t,i){if(console.log("🔍 hitTestEndpoint called:",t,i),console.log("isComplete:",this.isComplete()),!this.isComplete())return console.log("❌ Not complete"),null;const s=this.zy.point1,e=this.zy.point2,n=this.zy.point3;if(console.log("Points:",s,e,n),!s||!e||!n)return console.log("❌ Points missing"),null;const h=this._chart.timeScale(),r=20;if(console.log("Starting point checks..."),s&&s.time&&void 0!==s.price){const e=h.timeToCoordinate(s.time)??0,n=this._series.priceToCoordinate(s.price)??0,a=Math.sqrt(Math.pow(t-e,2)+Math.pow(i-n,2));if(console.log(`📍 point1: distance=${a.toFixed(2)}, tolerance=20`),a<=r)return console.log("✅ Hit point1!"),"point1"}if(e&&e.time&&void 0!==e.price){const s=h.timeToCoordinate(e.time)??0,n=this._series.priceToCoordinate(e.price)??0,a=Math.sqrt(Math.pow(t-s,2)+Math.pow(i-n,2));if(console.log(`📍 point2: distance=${a.toFixed(2)}, tolerance=20`),a<=r)return console.log("✅ Hit point2!"),"point2"}if(n&&n.time&&void 0!==n.price){const s=h.timeToCoordinate(n.time)??0,e=this._series.priceToCoordinate(n.price)??0,a=Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2));if(console.log(`📍 point3: distance=${a.toFixed(2)}, tolerance=20`),a<=r)return console.log("✅ Hit point3!"),"point3"}return console.log("❌ No endpoint hit"),null}startDrag(t){console.log("🚀 startDrag:",t),this.OS=!0,this.Ex=t}stopDrag(){console.log("🛑 stopDrag"),this.OS=!1,this.Ex=null}updateDrag(t,i){if(console.log("🔄 updateDrag:",t,i,"isDragging:",this.OS,"target:",this.Ex),!this.OS||!this.Ex)return;const s={time:t,price:i};switch(this.Ex){case"point1":this.setPoint1(s);break;case"point2":this.setPoint2(s);break;case"point3":this.setPoint3(s)}this.zy.onUpdate&&this.zy.onUpdate()}rP(){if(!this.isComplete())return[];const t=this.zy.point1,i=this.zy.point2,s=this.zy.point3,e=i.price-t.price;return(this.zy.levels||[]).map(t=>({ie:t.level,Mt:s.price+e*t.level,Xa:t.label,V:t.color}))}getExtensionLevels(){return this.rP()}drawToCanvas(t,i,s){if(!this.isComplete())return;const e=this.zy.point1,n=this.zy.point2,h=this.zy.point3,r=this._chart.timeScale(),a=this.Vx,l=(r.timeToCoordinate(e.time)??0)*i,o=(this._series.priceToCoordinate(e.price)??0)*s,_=(r.timeToCoordinate(n.time)??0)*i,c=(this._series.priceToCoordinate(n.price)??0)*s,u=(r.timeToCoordinate(h.time)??0)*i,d=(this._series.priceToCoordinate(h.price)??0)*s;t.strokeStyle=this.zy.lineColor||"#787B86",t.lineWidth=(this.zy.lineWidth||1)*i*(a?1.5:1),t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(l,o),t.lineTo(_,c),t.stroke(),t.beginPath(),t.moveTo(_,c),t.lineTo(u,d),t.stroke(),t.setLineDash([]);const f=this.getExtensionLevels(),p=t.canvas.width;for(const e of f){const n=e.Mt??e.price,h=e.V??e.color,r=e.Xa??e.label;if(null==n)continue;const l=(this._series.priceToCoordinate(n)??0)*s;if(t.strokeStyle=h,t.lineWidth=(this.zy.lineWidth||1)*i*(a?1.5:1),t.beginPath(),this.zy.extendLines?(t.moveTo(0,l),t.lineTo(p,l)):(t.moveTo(u,l),t.lineTo(p,l)),t.stroke(),this.zy.showLabels){const s=`${r} (${n.toFixed(5)})`;t.font=12*i+"px Arial",t.fillStyle=h,t.textAlign="left",t.textBaseline="middle";const e=5*i,a=Math.max(u,10*i)+e;t.fillText(s,a,l)}}const v=(a?6:4)*i,m=[{ct:l,ut:o,Xa:"A"},{ct:_,ut:c,Xa:"B"},{ct:u,ut:d,Xa:"C"}];for(const s of m)t.fillStyle=a?"#ff6b00":"#2962FF",t.beginPath(),t.arc(s.ct,s.ut,v,0,2*Math.PI),t.fill(),t.fillStyle="#ffffff",t.beginPath(),t.arc(s.ct,s.ut,v-2*i,0,2*Math.PI),t.fill(),a&&(t.fillStyle="#2962FF",t.font=`bold ${10*i}px Arial`,t.textAlign="center",t.textBaseline="middle",t.fillText(s.Xa,s.ct,s.ut))}isVisible(){return this._visible}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.$M&&this._series.updatePrimitive(this.$M)}remove(){this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null)}}function sa(t,i){return new ia(t,i)}class ea{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class na{constructor(t){this.Dx=t,this.Zt=new ea(t)}renderer(){return this.Dx.isVisible()?this.Zt:null}Tt(){}zOrder(){return"top"}}class ha extends ir{constructor(t,i){super(t,"gantt",i),this.$M=null,this.er=null,this.Vx=!1,this.Rx=!1,this.aP=-1,this.lP={segments:[],rowHeight:40,rowSpacing:5,fillOpacity:.7,borderWidth:2,showLabels:!0,showGrid:!0,...i},this.wS()}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new na(this)}drawToCanvas(t,i,s){if(!this.lP.segments||0===this.lP.segments.length)return;const e=this._chart.timeScale(),n=50*s,h=this.lP.rowHeight*s,r=this.lP.rowSpacing*s;this.lP.showGrid&&this.sm(t,n,h,r,i,s),this.lP.segments.forEach((s,a)=>{const l=(e.timeToCoordinate(s.startTime)??0)*i,o=(e.timeToCoordinate(s.endTime)??0)*i,_=n+s.level*(h+r),c=a===this.aP;this.oP(t,l,o,_,h,s,c,i)})}sm(t,i,s,e,n,h){if(!this.lP.segments)return;const r=Math.max(...this.lP.segments.map(t=>t.level),0),a=this._chart.chartElement().clientWidth*n;t.strokeStyle="rgba(200, 200, 200, 0.3)",t.lineWidth=1*n;for(let n=0;n<=r+1;n++){const h=i+n*(s+e);t.beginPath(),t.moveTo(0,h),t.lineTo(a,h),t.stroke()}}oP(t,i,s,e,n,h,r,a){const l=s-i,o=this.mS(h.color,r?this.lP.fillOpacity+.2:this.lP.fillOpacity);t.fillStyle=o,t.fillRect(i,e,l,n);const _=this.Vx?"#ff6b00":h.color;t.strokeStyle=_,t.lineWidth=this.lP.borderWidth*a,t.strokeRect(i,e,l,n),this.lP.showLabels&&h.label&&this.Nx(t,i,e,l,n,h.label,a)}Nx(t,i,s,e,n,h,r){const a=11*r,l=6*r;t.font=`${a}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,t.fillStyle="#ffffff",t.textBaseline="middle";let o=h;const _=e-2*l;let c=t.measureText(o).width;if(c>_&&_>0){for(;c>_&&o.length>0;)o=o.slice(0,-1),c=t.measureText(o+"...").width;o+="..."}t.fillText(o,i+l,s+n/2)}mS(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${Math.min(1,i)})`}addSegment(t){this.lP.segments||(this.lP.segments=[]),this.lP.segments.push(t),this.ob(),this.lP.onUpdate&&this.lP.onUpdate()}removeSegment(t){this.lP.segments&&t>=0&&t<this.lP.segments.length&&(this.lP.segments.splice(t,1),this.ob(),this.lP.onUpdate&&this.lP.onUpdate())}getSegments(){return this.lP.segments||[]}setSelected(t){this.Vx!==t&&(this.Vx=t,this.ob())}isSelected(){return this.Vx}setHovered(t){this.Rx!==t&&(this.Rx=t,this.ob())}hitTest(t,i){if(!this.lP.segments||0===this.lP.segments.length)return!1;const s=this._chart.timeScale(),e=this.lP.rowHeight,n=this.lP.rowSpacing;for(let h=0;h<this.lP.segments.length;h++){const r=this.lP.segments[h],a=s.timeToCoordinate(r.startTime)??0,l=s.timeToCoordinate(r.endTime)??0,o=50+r.level*(e+n);if(t>=a&&t<=l&&i>=o&&i<=o+e)return this.aP=h,!0}return this.aP=-1,!1}isVisible(){return this._visible}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.$M&&this._series.updatePrimitive(this.$M)}remove(){this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.lP.onRemove&&this.lP.onRemove()}}function ra(t,i){return new ha(t,i)}class aa{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class la{constructor(t){this.Dx=t,this.Zt=new aa(t)}renderer(){return this.Dx.isVisible()?this.Zt:null}Tt(){}zOrder(){return"normal"}}class oa extends ir{constructor(t,i){super(t,"brush",i),this.$M=null,this.er=null,this.Vx=!1,this.Rx=!1,this.jy=!1,this._P=null,this.Sf=null,this.sf=null,this.Od=null,this.cP=null,this.uP=[],this.dP=null,this.OS=!1,this.fP=null,this.pP={points:[],color:"#2962ff",lineWidth:2,smoothing:!0,...i};const s=!this.pP.points||0===this.pP.points.length;this.wS(),s&&this.vP()}vP(){this.cP=this._chart.chartElement?.(),this.cP&&(this.Sf=t=>{if(0!==t.button)return;this.jy=!0;const i=this.mP(t);if(i){const t=this.pP.color,s=this.pP.lineWidth,e=this.pP.smoothing,n=new oa({chart:this._chart,series:this._series},{points:[i],color:t,lineWidth:s,smoothing:e}),h=this._chart._drawingManager;h&&h.addTool(n),this._P=n,this.gP()}t.preventDefault(),t.stopPropagation()},this.sf=t=>{if(!this.jy)return;if(!this._P||!this._P.pP)return;const i=this.mP(t);i&&this.uP.push(i),t.preventDefault(),t.stopPropagation()},this.Od=t=>{this.jy&&(this.jy=!1,this.wP(),this.MP(),this.pP.onComplete&&this.pP.onComplete(),t.preventDefault(),t.stopPropagation())},this.cP.addEventListener("mousedown",this.Sf,!0),this.cP.addEventListener("mousemove",this.sf,!0),this.cP.addEventListener("mouseup",this.Od,!0),this.cP.addEventListener("mouseleave",this.Od,!0))}gP(){this.wP(),this.dP=window.setInterval(()=>{this.bP()},16)}wP(){null!==this.dP&&(clearInterval(this.dP),this.dP=null)}bP(){if(!this._P||!this._P.pP)return;if(0===this.uP.length)return;const t=this._P.pP.points;if(!t)return;const i=this.uP.shift();if(t.length>0){const s=t[t.length-1],e=this._chart.timeScale(),n=e.timeToCoordinate(s.time)??0,h=this._series.priceToCoordinate(s.price)??0,r=e.timeToCoordinate(i.time)??0,a=this._series.priceToCoordinate(i.price)??0;if(Math.sqrt(Math.pow(r-n,2)+Math.pow(a-h,2))<25)return}t.push(i),this._P.ob(),this._P.pP.onUpdate&&this._P.pP.onUpdate()}MP(){for(;this.uP.length>0;)this.bP()}SP(){this.cP&&(this.Sf&&this.cP.removeEventListener("mousedown",this.Sf,!0),this.sf&&this.cP.removeEventListener("mousemove",this.sf,!0),this.Od&&(this.cP.removeEventListener("mouseup",this.Od,!0),this.cP.removeEventListener("mouseleave",this.Od,!0))),this.Sf=null,this.sf=null,this.Od=null}mP(t){if(!this.cP)return null;const i=this.cP.getBoundingClientRect(),s=t.clientX-i.left,e=t.clientY-i.top,n=this._chart.timeScale().coordinateToTime(s),h=this._series.coordinateToPrice(e);return null===n||null===h?null:{time:n,price:h}}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new la(this)}drawToCanvas(t,i,s){if(!this.pP.points||this.pP.points.length<1)return;const e=this._chart.timeScale(),n=this.Vx?"#ff6b00":this.pP.color,h=this.Vx?this.pP.lineWidth+1:this.pP.lineWidth,r=[];for(const t of this.pP.points){const n=(e.timeToCoordinate(t.time)??0)*i,h=(this._series.priceToCoordinate(t.price)??0)*s;r.push({ct:n,ut:h})}if(1===r.length)return t.fillStyle=n,t.beginPath(),t.arc(r[0].ct,r[0].ut,h*i,0,2*Math.PI),void t.fill();t.strokeStyle=n,t.lineWidth=h*i,t.lineCap="round",t.lineJoin="round",this.pP.smoothing&&r.length>2?this.xP(t,r):this.yP(t,r)}yP(t,i){t.beginPath(),t.moveTo(i[0].ct,i[0].ut);for(let s=1;s<i.length;s++)t.lineTo(i[s].ct,i[s].ut);t.stroke()}xP(t,i){if(i.length<2)1===i.length&&(t.beginPath(),t.arc(i[0].ct,i[0].ut,2,0,2*Math.PI),t.fill());else if(2!==i.length){t.beginPath(),t.moveTo(i[0].ct,i[0].ut);for(let s=0;s<i.length-1;s++){const e=s>0?i[s-1]:i[s],n=i[s],h=i[s+1],r=s+2<i.length?i[s+2]:h,a=n.ct+(h.ct-e.ct)/6,l=n.ut+(h.ut-e.ut)/6,o=h.ct-(r.ct-n.ct)/6,_=h.ut-(r.ut-n.ut)/6;t.bezierCurveTo(a,l,o,_,h.ct,h.ut)}t.stroke()}else this.yP(t,i)}stopDrawingMode(){this.wP(),this.SP(),this.jy=!1,this._P=null,this.uP=[]}isDrawingModeActive(){return null!==this.Sf}setSelected(t){this.Vx!==t&&(this.Vx=t,this.ob())}isSelected(){return this.Vx}setHovered(t){this.Rx!==t&&(this.Rx=t,this.ob())}hitTest(t,i){if(!this.pP.points||this.pP.points.length<2)return!1;const s=this._chart.timeScale();for(let e=0;e<this.pP.points.length-1;e++){const n=this.pP.points[e],h=this.pP.points[e+1],r=s.timeToCoordinate(n.time)??0,a=this._series.priceToCoordinate(n.price)??0,l=s.timeToCoordinate(h.time)??0,o=this._series.priceToCoordinate(h.price)??0;if(this.Uy(t,i,r,a,l,o)<=20)return!0}return!1}Uy(t,i,s,e,n,h){const r=n-s,a=h-e,l=r*r+a*a;if(0===l)return Math.sqrt((t-s)*(t-s)+(i-e)*(i-e));let o=((t-s)*r+(i-e)*a)/l;o=Math.max(0,Math.min(1,o));const _=s+o*r,c=e+o*a;return Math.sqrt((t-_)*(t-_)+(i-c)*(i-c))}getPoints(){return this.pP.points||[]}hitTestEndpoint(t,i){return this.hitTest(t,i)?"stroke":null}startDrag(t){this.OS=!0,this.fP=null}stopDrag(){this.OS=!1,this.fP=null}updateDrag(t,i){if(!this.OS||!this.pP.points)return;if(!this.fP)return void(this.fP={wt:t,Mt:i});const s=t-this.fP.wt,e=i-this.fP.Mt;for(const t of this.pP.points)t.time=t.time+s,t.price=t.price+e;this.fP={wt:t,Mt:i},this.ob(),this.pP.onUpdate&&this.pP.onUpdate()}isVisible(){return this._visible}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.$M&&this._series.updatePrimitive(this.$M)}remove(){this.SP(),this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.pP.onRemove&&this.pP.onRemove()}}function _a(t,i){return new oa(t,i)}class ca{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class ua{constructor(t){this.Dx=t,this.Zt=new ca(t)}renderer(){return this.Dx.isComplete()?this.Zt:null}}class da extends ir{constructor(t,i){super(t,"text-tool",i),this.$M=null,this.er=null,this.Vx=!1,this.Rx=!1,this.OS=!1,this.PP=!1,this.CP=null,this.TP={text:"Double-click to edit",fontSize:14,fontFamily:"Arial, sans-serif",textColor:"#FFFFFF",backgroundColor:"#2962FF",backgroundOpacity:.8,padding:8,borderColor:"#2962FF",borderWidth:1,textAlign:"left",maxWidth:200,...i},this.wS(),this.kP()}kP(){this.CP=this._chart.subscribeClick(t=>{if(!this.PP)return;const i=t.point?.x||0,s=t.point?.y||0;this.hitTest(i,s)||(this.setEditing(!1),this.TP.text&&""!==this.TP.text.trim()&&"Type here..."!==this.TP.text||this.remove())})}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new ua(this)}getTime(){return this.TP.time}getPrice(){return this.TP.price}getText(){return this.TP.text||""}getOptions(){return this.TP}setPosition(t,i){this.TP.time=t,this.TP.price=i,this._update()}setText(t){this.TP.text=t,this._update(),this.TP.onTextChange&&this.TP.onTextChange(t)}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.ob()}isComplete(){return!(!this.TP.time||void 0===this.TP.price)}setSelected(t){this.Vx!==t&&(this.Vx=t,this._update())}isSelected(){return this.Vx}setHovered(t){this.Rx!==t&&(this.Rx=t,this._update())}setEditing(t){this.PP!==t&&(this.PP=t,this._update())}isEditing(){return this.PP}hitTest(t,i){if(!this.isComplete())return!1;const s=this.TP.time,e=this.TP.price,n=this._chart.timeScale().timeToCoordinate(s)??0,h=this._series.priceToCoordinate(e)??0,r=this.TP.fontSize||14,a=this.TP.padding||8,l=this.TP.text||"",o=.6*r,_=Math.min(l.length*o,this.TP.maxWidth||200);return t>=n&&t<=n+_+2*a&&i>=h&&i<=h+(r+2*a)}hitTestEndpoint(t,i){if(!this.isComplete())return null;const s=this.TP.time,e=this.TP.price,n=this._chart.timeScale().timeToCoordinate(s)??0,h=this._series.priceToCoordinate(e)??0;return Math.sqrt(Math.pow(t-n,2)+Math.pow(i-h,2))<=10?"anchor":null}startDrag(t){this.OS=!0}stopDrag(){this.OS=!1}updateDrag(t,i){this.OS&&(this.setPosition(t,i),this.TP.onUpdate&&this.TP.onUpdate())}drawToCanvas(t,i,s){if(!this.isComplete())return;const e=this.TP.time,n=this.TP.price,h=this.TP.text||"",r=(this._chart.timeScale().timeToCoordinate(e)??0)*i,a=(this._series.priceToCoordinate(n)??0)*s,l=(this.TP.fontSize||14)*i,o=(this.TP.padding||8)*i,_=(this.TP.maxWidth||200)*i;t.font=`${l}px ${this.TP.fontFamily||"Arial"}`,t.textBaseline="top";const c=h.split(" "),u=[];let d="";for(const i of c){const s=d?`${d} ${i}`:i;t.measureText(s).width>_&&d?(u.push(d),d=i):d=s}d&&u.push(d);let f=0;for(const i of u){const s=t.measureText(i);f=Math.max(f,s.width)}const p=f+2*o,v=1.2*l,m=u.length*v+2*o,g=this.TP.backgroundOpacity||.8,w=this.TP.backgroundColor||"#2962FF";t.fillStyle=this.mS(w,g),t.fillRect(r,a,p,m),(this.Vx||this.Rx)&&(t.strokeStyle=this.Vx?"#FF6B00":"#FFFFFF",t.lineWidth=(this.TP.borderWidth||1)*i*(this.Vx?2:1),t.strokeRect(r,a,p,m)),t.fillStyle=this.TP.textColor||"#FFFFFF";for(let i=0;i<u.length;i++){const s=u[i];let e=r+o;if("center"===this.TP.textAlign){e=r+(p-t.measureText(s).width)/2}else if("right"===this.TP.textAlign){e=r+p-t.measureText(s).width-o}const n=a+o+i*v;t.fillText(s,e,n)}if(this.Vx){const s=4*i;t.fillStyle="#FF6B00",t.beginPath(),t.arc(r,a,s,0,2*Math.PI),t.fill(),t.fillStyle="#FFFFFF",t.beginPath(),t.arc(r,a,s-2*i,0,2*Math.PI),t.fill()}}mS(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}remove(){this.CP&&(this._chart.unsubscribeClick(this.CP),this.CP=null),this.$M&&this._series&&this._series.detachPrimitive(this.$M),this.TP.onRemove&&this.TP.onRemove()}}function fa(t,i){return new da(t,i)}const pa={...n,color:"#2196f3"};function va(){return"1.0.0"}export{bn as AreaSeries,zr as ArrowTool,Pn as BarSeries,gn as BaselineSeries,oa as BrushTool,kn as CandlestickSeries,Yr as CircleTool,zi as ColorType,G as CrosshairMode,nr as DEFAULT_PIP_CONFIGS,Nh as DEFAULT_SESSIONS,Jh as DraggablePriceLine,sr as DrawingToolsManager,gr as EXTENDED_FIBONACCI_RATIOS,wr as FibonacciCalculator,ia as FibonacciExtensionTool,Xr as FibonacciFanTool,Sr as FibonacciTool,ha as GanttTool,Rn as HistogramSeries,Vr as HorizontalLineTool,Zh as InteractiveLineManager,Ii as LastPriceAnimationMode,tn as LineSeries,r as LineStyle,h as LineType,kt as MismatchDirection,er as PositionCalculator,yh as PositionMarkersManager,lr as PositionTool,Li as PriceLineSource,mi as PriceScaleMode,Nr as RectangleTool,_r as RulerCalculator,pr as RulerTool,mr as STANDARD_FIBONACCI_RATIOS,da as TextTool,Oi as TickMarkType,Bi as TrackingModeExitMode,Uh as TradingSessionsIndicator,Cr as TrendLineTool,Fr as VerticalLineTool,jh as VolumeProfileIndicator,Ah as applyATR,Dh as applyBollingerBands,Th as applyEMA,Rh as applyMACD,zh as applyOBV,Vh as applyRSI,Ch as applySMA,Eh as applyStochastic,Bh as applyVolume,kh as applyWMA,Or as createArrowTool,_a as createBrushTool,Ne as createChart,$e as createChartEx,jr as createCircleTool,sa as createFibonacciExtensionTool,Zr as createFibonacciFanTool,xr as createFibonacciTool,ra as createGanttTool,Rr as createHorizontalLineTool,Kn as createImageWatermark,Qh as createInteractiveLineManager,cn as createOptionsChart,Ph as createPositionMarkers,or as createPositionTool,Ur as createRectangleTool,vr as createRulerTool,fh as createSeriesMarkers,fa as createTextTool,Nn as createTextWatermark,Xh as createTradingLine,Hh as createTradingSessionsIndicator,Tr as createTrendLineTool,xh as createUpDownMarkers,Br as createVerticalLineTool,Gh as createVolumeProfileIndicator,ln as createYieldCurveChart,pa as customSeriesDefaultOptions,Ue as defaultHorzScaleBehavior,hr as getPipConfig,Ni as isBusinessDay,Ui as isUTCTimestamp,Oh as setOBVVolumeData,Ih as setVolumeData,Kh as setVolumeProfileData,va as version};
|
|
8
|
+
import{size as t,bindCanvasElementBitmapSizeTo as i,equalSizes as s,tryCreateCanvasRenderingTarget2D as e}from"fancy-canvas";const n={title:"",visible:!0,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 h,r;function a(t,i){const s={0:[],1:[t.lineWidth,t.lineWidth],2:[2*t.lineWidth,2*t.lineWidth],3:[6*t.lineWidth,6*t.lineWidth],4:[t.lineWidth,4*t.lineWidth]}[i];t.setLineDash(s)}function l(t,i,s,e){t.beginPath();const n=t.lineWidth%2?.5:0;t.moveTo(s,i+n),t.lineTo(e,i+n),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 c(t){if(null===t)throw new Error("Value is null");return t}function u(t){return c(_(t))}!function(t){t[t.Simple=0]="Simple",t[t.WithSteps=1]="WithSteps",t[t.Curved=2]="Curved"}(h||(h={})),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"}(r||(r={}));class d{constructor(){this.t=[]}i(t,i,s){const e={h:t,l:i,o:!0===s};this.t.push(e)}_(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,s){const e=[...this.t];this.t=this.t.filter(t=>!t.o),e.forEach(e=>e.h(t,i,s))}v(){return this.t.length>0}m(){this.t=[]}}function f(t,...i){for(const s of i)for(const i in s)void 0!==s[i]&&Object.prototype.hasOwnProperty.call(s,i)&&!["__proto__","constructor","prototype"].includes(i)&&("object"!=typeof s[i]||void 0===t[i]||Array.isArray(s[i])?t[i]=s[i]:f(t[i],s[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 g(t){return"boolean"==typeof t}function w(t){const i=t;if(!i||"object"!=typeof i)return i;let s,e,n;for(e in s=Array.isArray(i)?[]:{},i)i.hasOwnProperty(e)&&(n=i[e],s[e]=n&&"object"==typeof n?w(n):n);return s}function M(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,s){return void 0===i&&(i=S),`${s=void 0!==s?`${s} `:""}${t}px ${i}`}class y{constructor(t){this.M={S:1,P:5,C:NaN,T:"",D:"",R:"",V:"",A:0,I:0,F:0,B:0,L:0},this.O=t}W(){const t=this.M,i=this.$(),s=this.N();return t.C===i&&t.D===s||(t.C=i,t.D=s,t.T=x(i,s),t.B=2.5/12*i,t.A=t.B,t.I=i/12*t.P,t.F=i/12*t.P,t.L=0),t.R=this.H(),t.V=this.U(),this.M}H(){return this.O.W().layout.textColor}U(){return this.O.q()}$(){return this.O.W().layout.fontSize}N(){return this.O.W().layout.fontFamily}}function P(t){return t<0?0:t>255?255:Math.round(t)||0}function C(t){return.199*t[0]+.687*t[1]+.114*t[2]}class T{constructor(t,i){this.Y=new Map,this.j=t,i&&(this.Y=i)}G(t,i){if("transparent"===t)return t;const s=this.K(t),e=s[3];return`rgba(${s[0]}, ${s[1]}, ${s[2]}, ${i*e})`}X(t){const i=this.K(t);return{Z:`rgb(${i[0]}, ${i[1]}, ${i[2]})`,J:C(i)>160?"black":"white"}}tt(t){return C(this.K(t))}it(t,i,s){const[e,n,h,r]=this.K(t),[a,l,o,_]=this.K(i),c=[P(e+s*(a-e)),P(n+s*(l-n)),P(h+s*(o-h)),(u=r+s*(_-r),u<=0||u>1?Math.min(Math.max(u,0),1):Math.round(1e4*u)/1e4)];var u;return`rgba(${c[0]}, ${c[1]}, ${c[2]}, ${c[3]})`}K(t){const i=this.Y.get(t);if(i)return i;const s=function(t){const i=document.createElement("div");i.style.display="none",document.body.appendChild(i),i.style.color=t;const s=window.getComputedStyle(i).color;return document.body.removeChild(i),s}(t),e=s.match(/^rgba?\s*\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d*\.?\d+))?\)$/);if(!e){if(this.j.length)for(const i of this.j){const s=i(t);if(s)return this.Y.set(t,s),s}throw new Error(`Failed to parse color: ${t}`)}const n=[parseInt(e[1],10),parseInt(e[2],10),parseInt(e[3],10),e[4]?parseFloat(e[4]):1];return this.Y.set(t,n),n}}class k{constructor(){this.st=[]}et(t){this.st=t}nt(t,i,s){this.st.forEach(e=>{e.nt(t,i,s)})}}class D{nt(t,i,s){t.useBitmapCoordinateSpace(t=>this.ht(t,i,s))}}class R extends D{constructor(){super(...arguments),this.rt=null}lt(t){this.rt=t}ht({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.rt||null===this.rt.ot)return;const e=this.rt.ot,n=this.rt,h=Math.max(1,Math.floor(i))%2/2,r=r=>{t.beginPath();for(let a=e.to-1;a>=e.from;--a){const e=n._t[a],l=Math.round(e.ct*i)+h,o=e.ut*s,_=r*s+h;t.moveTo(l,o),t.arc(l,o,_,0,2*Math.PI)}t.fill()};n.dt>0&&(t.fillStyle=n.ft,r(n.vt+n.dt)),t.fillStyle=n.gt,r(n.vt)}}function V(){return{_t:[{ct:0,ut:0,wt:0,Mt:0}],gt:"",ft:"",vt:0,dt:0,ot:null}}const E={from:0,to:1};class A{constructor(t,i,s){this.bt=new k,this.St=[],this.xt=[],this.yt=!0,this.O=t,this.Pt=i,this.Ct=s,this.bt.et(this.St)}Tt(t){this.kt(),this.yt=!0}Dt(){return this.yt&&(this.Rt(),this.yt=!1),this.bt}kt(){const t=this.Ct.Vt();t.length!==this.St.length&&(this.xt=t.map(V),this.St=this.xt.map(t=>{const i=new R;return i.lt(t),i}),this.bt.et(this.St))}Rt(){const t=2===this.Pt.W().mode||!this.Pt.Et(),i=this.Ct.At(),s=this.Pt.It(),e=this.O.Ft();this.kt(),i.forEach((i,n)=>{const h=this.xt[n],r=i.Bt(s),a=i.Lt();!t&&null!==r&&i.Et()&&null!==a?(h.gt=r.zt,h.vt=r.vt,h.dt=r.Ot,h._t[0].Mt=r.Mt,h._t[0].ut=i.$t().Wt(r.Mt,a.Nt),h.ft=r.Ht??this.O.Ut(h._t[0].ut/i.$t().qt()),h._t[0].wt=s,h._t[0].ct=e.Yt(s),h.ot=E):h.ot=null})}}class I extends D{constructor(t){super(),this.jt=t}ht({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:e}){if(null===this.jt)return;const n=this.jt.Gt.Et,h=this.jt.Kt.Et;if(!n&&!h)return;const r=Math.round(this.jt.ct*s),o=Math.round(this.jt.ut*e);t.lineCap="butt",n&&r>=0&&(t.lineWidth=Math.floor(this.jt.Gt.dt*s),t.strokeStyle=this.jt.Gt.R,t.fillStyle=this.jt.Gt.R,a(t,this.jt.Gt.Xt),function(t,i,s,e){t.beginPath();const n=t.lineWidth%2?.5:0;t.moveTo(i+n,s),t.lineTo(i+n,e),t.stroke()}(t,r,0,i.height)),h&&o>=0&&(t.lineWidth=Math.floor(this.jt.Kt.dt*e),t.strokeStyle=this.jt.Kt.R,t.fillStyle=this.jt.Kt.R,a(t,this.jt.Kt.Xt),l(t,o,0,i.width))}}class F{constructor(t,i){this.yt=!0,this.Zt={Gt:{dt:1,Xt:0,R:"",Et:!1},Kt:{dt:1,Xt:0,R:"",Et:!1},ct:0,ut:0},this.Jt=new I(this.Zt),this.Qt=t,this.Ct=i}Tt(){this.yt=!0}Dt(t){return this.yt&&(this.Rt(),this.yt=!1),this.Jt}Rt(){const t=this.Qt.Et(),i=this.Ct.ti().W().crosshair,s=this.Zt;if(2===i.mode)return s.Kt.Et=!1,void(s.Gt.Et=!1);s.Kt.Et=t&&this.Qt.ii(this.Ct),s.Gt.Et=t&&this.Qt.si(),s.Kt.dt=i.horzLine.width,s.Kt.Xt=i.horzLine.style,s.Kt.R=i.horzLine.color,s.Gt.dt=i.vertLine.width,s.Gt.Xt=i.vertLine.style,s.Gt.R=i.vertLine.color,s.ct=this.Qt.ei(),s.ut=this.Qt.ni()}}function B(t,i,s,e,n,h){t.fillRect(i+h,s,e-2*h,h),t.fillRect(i+h,s+n-h,e-2*h,h),t.fillRect(i,s,h,n),t.fillRect(i+e-h,s,h,n)}function L(t,i,s,e,n,h){t.save(),t.globalCompositeOperation="copy",t.fillStyle=h,t.fillRect(i,s,e,n),t.restore()}function z(t,i,s,e,n,h){t.beginPath(),t.roundRect?t.roundRect(i,s,e,n,h):(t.lineTo(i+e-h[1],s),0!==h[1]&&t.arcTo(i+e,s,i+e,s+h[1],h[1]),t.lineTo(i+e,s+n-h[2]),0!==h[2]&&t.arcTo(i+e,s+n,i+e-h[2],s+n,h[2]),t.lineTo(i+h[3],s+n),0!==h[3]&&t.arcTo(i,s+n,i,s+n-h[3],h[3]),t.lineTo(i,s+h[0]),0!==h[0]&&t.arcTo(i,s,i+h[0],s,h[0]))}function O(t,i,s,e,n,h,r=0,a=[0,0,0,0],l=""){if(t.save(),!r||!l||l===h)return z(t,i,s,e,n,a),t.fillStyle=h,t.fill(),void t.restore();const o=r/2;var _;z(t,i+o,s+o,e-r,n-r,(_=-o,a.map(t=>0===t?t:t+_))),"transparent"!==h&&(t.fillStyle=h,t.fill()),"transparent"!==l&&(t.lineWidth=r,t.strokeStyle=l,t.closePath(),t.stroke()),t.restore()}function W(t,i,s,e,n,h,r){t.save(),t.globalCompositeOperation="copy";const a=t.createLinearGradient(0,0,0,n);a.addColorStop(0,h),a.addColorStop(1,r),t.fillStyle=a,t.fillRect(i,s,e,n),t.restore()}class ${constructor(t,i){this.lt(t,i)}lt(t,i){this.jt=t,this.hi=i}qt(t,i){return this.jt.Et?t.C+t.B+t.A:0}nt(t,i,s,e){if(!this.jt.Et||0===this.jt.ri.length)return;const n=this.jt.R,h=this.hi.Z,r=t.useBitmapCoordinateSpace(t=>{const r=t.context;r.font=i.T;const a=this.ai(t,i,s,e),l=a.li;return a.oi?O(r,l._i,l.ci,l.ui,l.di,h,l.fi,[l.vt,0,0,l.vt],h):O(r,l.pi,l.ci,l.ui,l.di,h,l.fi,[0,l.vt,l.vt,0],h),this.jt.mi&&(r.fillStyle=n,r.fillRect(l.pi,l.gi,l.wi-l.pi,l.Mi)),this.jt.bi&&(r.fillStyle=i.V,r.fillRect(a.oi?l.Si-l.fi:0,l.ci,l.fi,l.xi-l.ci)),a});t.useMediaCoordinateSpace(({context:t})=>{const s=r.yi;t.font=i.T,t.textAlign=r.oi?"right":"left",t.textBaseline="middle",t.fillStyle=n,t.fillText(this.jt.ri,s.Pi,(s.ci+s.xi)/2+s.Ci)})}ai(t,i,s,e){const{context:n,bitmapSize:h,mediaSize:r,horizontalPixelRatio:a,verticalPixelRatio:l}=t,o=this.jt.mi||!this.jt.Ti?i.P:0,_=this.jt.ki?i.S:0,c=i.B+this.hi.Di,u=i.A+this.hi.Ri,d=i.I,f=i.F,p=this.jt.ri,v=i.C,m=s.Vi(n,p),g=Math.ceil(s.Ei(n,p)),w=v+c+u,M=i.S+d+f+g+o,b=Math.max(1,Math.floor(l));let S=Math.round(w*l);S%2!=b%2&&(S+=1);const x=_>0?Math.max(1,Math.floor(_*a)):0,y=Math.round(M*a),P=Math.round(o*a),C=this.hi.Ai??this.hi.Ii,T=Math.round(C*l)-Math.floor(.5*l),k=Math.floor(T+b/2-S/2),D=k+S,R="right"===e,V=R?r.width-_:_,E=R?h.width-x:x;let A,I,F;return R?(A=E-y,I=E-P,F=V-o-d-_):(A=E+y,I=E+P,F=V+o+d),{oi:R,li:{ci:k,gi:T,xi:D,ui:y,di:S,vt:2*a,fi:x,_i:A,pi:E,wi:I,Mi:b,Si:h.width},yi:{ci:k/l,xi:D/l,Pi:F,Ci:m}}}}class N{constructor(t){this.Fi={Ii:0,Z:"#000",Ri:0,Di:0},this.Bi={ri:"",Et:!1,mi:!0,Ti:!1,Ht:"",R:"#FFF",bi:!1,ki:!1},this.Li={ri:"",Et:!1,mi:!1,Ti:!0,Ht:"",R:"#FFF",bi:!0,ki:!0},this.yt=!0,this.zi=new(t||$)(this.Bi,this.Fi),this.Oi=new(t||$)(this.Li,this.Fi)}ri(){return this.Wi(),this.Bi.ri}Ii(){return this.Wi(),this.Fi.Ii}Tt(){this.yt=!0}qt(t,i=!1){return Math.max(this.zi.qt(t,i),this.Oi.qt(t,i))}$i(){return this.Fi.Ai||0}Ni(t){this.Fi.Ai=t}Hi(){return this.Wi(),this.Bi.Et||this.Li.Et}Ui(){return this.Wi(),this.Bi.Et}Dt(t){return this.Wi(),this.Bi.mi=this.Bi.mi&&t.W().ticksVisible,this.Li.mi=this.Li.mi&&t.W().ticksVisible,this.zi.lt(this.Bi,this.Fi),this.Oi.lt(this.Li,this.Fi),this.zi}qi(){return this.Wi(),this.zi.lt(this.Bi,this.Fi),this.Oi.lt(this.Li,this.Fi),this.Oi}Wi(){this.yt&&(this.Bi.mi=!0,this.Li.mi=!1,this.Yi(this.Bi,this.Li,this.Fi))}}class H extends N{constructor(t,i,s){super(),this.Qt=t,this.ji=i,this.Gi=s}Yi(t,i,s){if(t.Et=!1,2===this.Qt.W().mode)return;const e=this.Qt.W().horzLine;if(!e.labelVisible)return;const n=this.ji.Lt();if(!this.Qt.Et()||this.ji.Ki()||null===n)return;const h=this.ji.Xi().X(e.labelBackgroundColor);s.Z=h.Z,t.R=h.J;const r=2/12*this.ji.C();s.Di=r,s.Ri=r;const a=this.Gi(this.ji);s.Ii=a.Ii,t.ri=this.ji.Zi(a.Mt,n),t.Et=!0}}const U=/[1-9]/g;class q{constructor(){this.jt=null}lt(t){this.jt=t}nt(t,i){if(null===this.jt||!1===this.jt.Et||0===this.jt.ri.length)return;const s=t.useMediaCoordinateSpace(({context:t})=>(t.font=i.T,Math.round(i.Ji.Ei(t,c(this.jt).ri,U))));if(s<=0)return;const e=i.Qi,n=s+2*e,h=n/2,r=this.jt.ts;let a=this.jt.Ii,l=Math.floor(a-h)+.5;l<0?(a+=Math.abs(0-l),l=Math.floor(a-h)+.5):l+n>r&&(a-=Math.abs(r-(l+n)),l=Math.floor(a-h)+.5);const o=l+n,_=Math.ceil(0+i.S+i.P+i.B+i.C+i.A);t.useBitmapCoordinateSpace(({context:t,horizontalPixelRatio:s,verticalPixelRatio:e})=>{const n=c(this.jt);t.fillStyle=n.Z;const h=Math.round(l*s),r=Math.round(0*e),a=Math.round(o*s),u=Math.round(_*e),d=Math.round(2*s);if(t.beginPath(),t.moveTo(h,r),t.lineTo(h,u-d),t.arcTo(h,u,h+d,u,d),t.lineTo(a-d,u),t.arcTo(a,u,a,u-d,d),t.lineTo(a,r),t.fill(),n.mi){const h=Math.round(n.Ii*s),a=r,l=Math.round((a+i.P)*e);t.fillStyle=n.R;const o=Math.max(1,Math.floor(s)),_=Math.floor(.5*s);t.fillRect(h-_,a,o,l-a)}}),t.useMediaCoordinateSpace(({context:t})=>{const s=c(this.jt),n=0+i.S+i.P+i.B+i.C/2;t.font=i.T,t.textAlign="left",t.textBaseline="middle",t.fillStyle=s.R;const h=i.Ji.Vi(t,"Apr0");t.translate(l+e,n+h),t.fillText(s.ri,0,0)})}}class Y{constructor(t,i,s){this.yt=!0,this.Jt=new q,this.Zt={Et:!1,Z:"#4c525e",R:"white",ri:"",ts:0,Ii:NaN,mi:!0},this.Pt=t,this.ss=i,this.Gi=s}Tt(){this.yt=!0}Dt(){return this.yt&&(this.Rt(),this.yt=!1),this.Jt.lt(this.Zt),this.Jt}Rt(){const t=this.Zt;if(t.Et=!1,2===this.Pt.W().mode)return;const i=this.Pt.W().vertLine;if(!i.labelVisible)return;const s=this.ss.Ft();if(s.Ki())return;t.ts=s.ts();const e=this.Gi();if(null===e)return;t.Ii=e.Ii;const n=s.es(this.Pt.It());t.ri=s.ns(c(n)),t.Et=!0;const h=this.ss.Xi().X(i.labelBackgroundColor);t.Z=h.Z,t.R=h.J,t.mi=s.W().ticksVisible}}class j{constructor(){this.hs=null,this.rs=0}ls(){return this.rs}_s(t){this.rs=t}$t(){return this.hs}cs(t){this.hs=t}us(t){return[]}ds(){return[]}Et(){return!0}}var G;!function(t){t[t.Normal=0]="Normal",t[t.Magnet=1]="Magnet",t[t.Hidden=2]="Hidden",t[t.MagnetOHLC=3]="MagnetOHLC"}(G||(G={}));class K extends j{constructor(t,i){super(),this.Ct=null,this.fs=NaN,this.ps=0,this.vs=!1,this.gs=new Map,this.ws=!1,this.Ms=new WeakMap,this.bs=new WeakMap,this.Ss=NaN,this.xs=NaN,this.ys=NaN,this.Ps=NaN,this.ss=t,this.Cs=i;this.Ts=((t,i)=>s=>{const e=i(),n=t();if(s===c(this.Ct).ks())return{Mt:n,Ii:e};{const t=c(s.Lt());return{Mt:s.Ds(e,t),Ii:e}}})(()=>this.fs,()=>this.xs);const s=((t,i)=>()=>{const s=this.ss.Ft().Rs(t()),e=i();return s&&Number.isFinite(e)?{wt:s,Ii:e}:null})(()=>this.ps,()=>this.ei());this.Vs=new Y(this,t,s)}W(){return this.Cs}Es(t,i){this.ys=t,this.Ps=i}As(){this.ys=NaN,this.Ps=NaN}Is(){return this.ys}Fs(){return this.Ps}Bs(t,i,s){this.ws||(this.ws=!0),this.vs=!0,this.Ls(t,i,s)}It(){return this.ps}ei(){return this.Ss}ni(){return this.xs}Et(){return this.vs}zs(){this.vs=!1,this.Os(),this.fs=NaN,this.Ss=NaN,this.xs=NaN,this.Ct=null,this.As(),this.Ws()}$s(t){let i=this.Ms.get(t);i||(i=new F(this,t),this.Ms.set(t,i));let s=this.bs.get(t);return s||(s=new A(this.ss,this,t),this.bs.set(t,s)),[i,s]}ii(t){return t===this.Ct&&this.Cs.horzLine.visible}si(){return this.Cs.vertLine.visible}Ns(t,i){this.vs&&this.Ct===t||this.gs.clear();const s=[];return this.Ct===t&&s.push(this.Hs(this.gs,i,this.Ts)),s}ds(){return this.vs?[this.Vs]:[]}Us(){return this.Ct}Ws(){this.ss.qs().forEach(t=>{this.Ms.get(t)?.Tt(),this.bs.get(t)?.Tt()}),this.gs.forEach(t=>t.Tt()),this.Vs.Tt()}Ys(t){return t&&!t.ks().Ki()?t.ks():null}Ls(t,i,s){this.js(t,i,s)&&this.Ws()}js(t,i,s){const e=this.Ss,n=this.xs,h=this.fs,r=this.ps,a=this.Ct,l=this.Ys(s);this.ps=t,this.Ss=isNaN(t)?NaN:this.ss.Ft().Yt(t),this.Ct=s;const o=null!==l?l.Lt():null;return null!==l&&null!==o?(this.fs=i,this.xs=l.Wt(i,o)):(this.fs=NaN,this.xs=NaN),e!==this.Ss||n!==this.xs||r!==this.ps||h!==this.fs||a!==this.Ct}Os(){const t=this.ss.Gs().map(t=>t.Xs().Ks()).filter(M),i=0===t.length?null:Math.max(...t);this.ps=null!==i?i:NaN}Hs(t,i,s){let e=t.get(i);return void 0===e&&(e=new H(this,i,s),t.set(i,e)),e}}function X(t){return"left"===t||"right"===t}class Z{constructor(t){this.Zs=new Map,this.Js=[],this.Qs=t}te(t,i){const s=function(t,i){return void 0===t?i:{ie:Math.max(t.ie,i.ie),se:t.se||i.se}}(this.Zs.get(t),i);this.Zs.set(t,s)}ee(){return this.Qs}ne(t){const i=this.Zs.get(t);return void 0===i?{ie:this.Qs}:{ie:Math.max(this.Qs,i.ie),se:i.se}}he(){this.re(),this.Js=[{ae:0}]}le(t){this.re(),this.Js=[{ae:1,Nt:t}]}oe(t){this._e(),this.Js.push({ae:5,Nt:t})}re(){this._e(),this.Js.push({ae:6})}ce(){this.re(),this.Js=[{ae:4}]}ue(t){this.re(),this.Js.push({ae:2,Nt:t})}de(t){this.re(),this.Js.push({ae:3,Nt:t})}fe(){return this.Js}pe(t){for(const i of t.Js)this.ve(i);this.Qs=Math.max(this.Qs,t.Qs),t.Zs.forEach((t,i)=>{this.te(i,t)})}static me(){return new Z(2)}static ge(){return new Z(3)}ve(t){switch(t.ae){case 0:this.he();break;case 1:this.le(t.Nt);break;case 2:this.ue(t.Nt);break;case 3:this.de(t.Nt);break;case 4:this.ce();break;case 5:this.oe(t.Nt);break;case 6:this._e()}}_e(){const t=this.Js.findIndex(t=>5===t.ae);-1!==t&&this.Js.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.ji=t,this.we=i,this.Me()}format(t){const i=t<0?"−":"";return t=Math.abs(t),i+this.be(t)}Me(){if(this.Se=0,this.ji>0&&this.we>0){let t=this.ji;for(;t>1;)t/=10,this.Se++}}be(t){const i=this.ji/this.we;let s=Math.floor(t),e="";const n=void 0!==this.Se?this.Se:NaN;if(i>1){let h=+(Math.round(t*i)-s*i).toFixed(this.Se);h>=i&&(h-=i,s+=1),e=Q+tt(+h.toFixed(this.Se)*this.we,n)}else s=Math.round(s*i)/i,n>0&&(e=Q+tt(0,n));return s.toFixed(0)+e}}class st extends it{constructor(t=100){super(t)}format(t){return`${super.format(t)}%`}}class et extends J{constructor(t){super(),this.xe=t}format(t){let i="";return t<0&&(i="-",t=-t),t<995?i+this.ye(t):t<999995?i+this.ye(t/1e3)+"K":t<999999995?(t=1e3*Math.round(t/1e3),i+this.ye(t/1e6)+"M"):(t=1e6*Math.round(t/1e6),i+this.ye(t/1e9)+"B")}ye(t){let i;const s=Math.pow(10,this.xe);return i=(t=Math.round(t*s)/s)>=1e-15&&t<1?t.toFixed(this.xe).replace(/\.?0+$/,""):String(t),i.replace(/(\.[1-9]*)0+$/,(t,i)=>i)}}const nt=/[2-9]/g;class ht{constructor(t=50){this.Pe=0,this.Ce=1,this.Te=1,this.ke={},this.De=new Map,this.Re=t}Ve(){this.Pe=0,this.De.clear(),this.Ce=1,this.Te=1,this.ke={}}Ei(t,i,s){return this.Ee(t,i,s).width}Vi(t,i,s){const e=this.Ee(t,i,s);return((e.actualBoundingBoxAscent||0)-(e.actualBoundingBoxDescent||0))/2}Ee(t,i,s){const e=s||nt,n=String(i).replace(e,"0");if(this.De.has(n))return _(this.De.get(n)).Ae;if(this.Pe===this.Re){const t=this.ke[this.Te];delete this.ke[this.Te],this.De.delete(t),this.Te++,this.Pe--}t.save(),t.textBaseline="middle";const h=t.measureText(n);return t.restore(),0===h.width&&i.length||(this.De.set(n,{Ae:h,Ie:this.Ce}),this.ke[this.Ce]=n,this.Pe++,this.Ce++),h}}class rt{constructor(t){this.Fe=null,this.M=null,this.Be="right",this.Le=t}ze(t,i,s){this.Fe=t,this.M=i,this.Be=s}nt(t){null!==this.M&&null!==this.Fe&&this.Fe.nt(t,this.M,this.Le,this.Be)}}class at{constructor(t,i,s){this.Oe=t,this.Le=new ht(50),this.We=i,this.O=s,this.$=-1,this.Jt=new rt(this.Le)}Dt(){const t=this.O.$e(this.We);if(null===t)return null;const i=t.Ne(this.We)?t.He():this.We.$t();if(null===i)return null;const s=t.Ue(i);if("overlay"===s)return null;const e=this.O.qe();return e.C!==this.$&&(this.$=e.C,this.Le.Ve()),this.Jt.ze(this.Oe.qi(),e,s),this.Jt}}class lt extends D{constructor(){super(...arguments),this.jt=null}lt(t){this.jt=t}Ye(t,i){if(!this.jt?.Et)return null;const{ut:s,dt:e,je:n}=this.jt;return i>=s-e-7&&i<=s+e+7?{Ge:this.jt,je:n}:null}ht({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:e}){if(null===this.jt)return;if(!1===this.jt.Et)return;const n=Math.round(this.jt.ut*e);n<0||n>i.height||(t.lineCap="butt",t.strokeStyle=this.jt.R,t.lineWidth=Math.floor(this.jt.dt*s),a(t,this.jt.Xt),l(t,n,0,i.width))}}class ot{constructor(t){this.Ke={ut:0,R:"rgba(0, 0, 0, 0)",dt:1,Xt:0,Et:!1},this.Xe=new lt,this.yt=!0,this.Ze=t,this.Je=t.ti(),this.Xe.lt(this.Ke)}Tt(){this.yt=!0}Dt(){return this.Ze.Et()?(this.yt&&(this.Qe(),this.yt=!1),this.Xe):null}}class _t extends ot{constructor(t){super(t)}Qe(){this.Ke.Et=!1;const t=this.Ze.$t(),i=t.tn().tn;if(2!==i&&3!==i)return;const s=this.Ze.W();if(!s.baseLineVisible||!this.Ze.Et())return;const e=this.Ze.Lt();null!==e&&(this.Ke.Et=!0,this.Ke.ut=t.Wt(e.Nt,e.Nt),this.Ke.R=s.baseLineColor,this.Ke.dt=s.baseLineWidth,this.Ke.Xt=s.baseLineStyle)}}class ct extends D{constructor(){super(...arguments),this.jt=null}lt(t){this.jt=t}sn(){return this.jt}ht({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){const e=this.jt;if(null===e)return;const n=Math.max(1,Math.floor(i)),h=n%2/2,r=Math.round(e.en.x*i)+h,a=e.en.y*s;t.fillStyle=e.nn,t.beginPath();const l=Math.max(2,1.5*e.hn)*i;t.arc(r,a,l,0,2*Math.PI,!1),t.fill(),t.fillStyle=e.rn,t.beginPath(),t.arc(r,a,e.vt*i,0,2*Math.PI,!1),t.fill(),t.lineWidth=n,t.strokeStyle=e.an,t.beginPath(),t.arc(r,a,e.vt*i+n/2,0,2*Math.PI,!1),t.stroke()}}const ut=[{ln:0,_n:.25,cn:4,un:10,dn:.25,fn:0,pn:.4,vn:.8},{ln:.25,_n:.525,cn:10,un:14,dn:0,fn:0,pn:.8,vn:0},{ln:.525,_n:1,cn:14,un:14,dn:0,fn:0,pn:0,vn:0}];class dt{constructor(t){this.Jt=new ct,this.yt=!0,this.mn=!0,this.gn=performance.now(),this.wn=this.gn-1,this.Mn=t}bn(){this.wn=this.gn-1,this.Tt()}Sn(){if(this.Tt(),2===this.Mn.W().lastPriceAnimation){const t=performance.now(),i=this.wn-t;if(i>0)return void(i<650&&(this.wn+=2600));this.gn=t,this.wn=t+2600}}Tt(){this.yt=!0}xn(){this.mn=!0}Et(){return 0!==this.Mn.W().lastPriceAnimation}yn(){switch(this.Mn.W().lastPriceAnimation){case 0:return!1;case 1:return!0;case 2:return performance.now()<=this.wn}}Dt(){return this.yt?(this.Rt(),this.yt=!1,this.mn=!1):this.mn&&(this.Pn(),this.mn=!1),this.Jt}Rt(){this.Jt.lt(null);const t=this.Mn.ti().Ft(),i=t.Cn(),s=this.Mn.Lt();if(null===i||null===s)return;const e=this.Mn.Tn(!0);if(e.kn||!i.Dn(e.Rn))return;const n={x:t.Yt(e.Rn),y:this.Mn.$t().Wt(e.Mt,s.Nt)},h=e.R,r=this.Mn.W().lineWidth,a=this.Vn(this.En(),h);this.Jt.lt({nn:h,hn:r,rn:a.rn,an:a.an,vt:a.vt,en:n})}Pn(){const t=this.Jt.sn();if(null!==t){const i=this.Vn(this.En(),t.nn);t.rn=i.rn,t.an=i.an,t.vt=i.vt}}En(){return this.yn()?performance.now()-this.gn:2599}An(t,i,s,e){const n=s+(e-s)*i;return this.Mn.ti().Xi().G(t,n)}Vn(t,i){const s=t%2600/2600;let e;for(const t of ut)if(s>=t.ln&&s<=t._n){e=t;break}o(void 0!==e,"Last price animation internal logic error");const n=(s-e.ln)/(e._n-e.ln);return{rn:this.An(i,n,e.dn,e.fn),an:this.An(i,n,e.pn,e.vn),vt:(h=n,r=e.cn,a=e.un,r+(a-r)*h)};var h,r,a}}class ft extends ot{constructor(t){super(t)}Qe(){const t=this.Ke;t.Et=!1;const i=this.Ze.W();if(!i.priceLineVisible||!this.Ze.Et())return;const s=this.Ze.Tn(0===i.priceLineSource);s.kn||(t.Et=!0,t.ut=s.Ii,t.R=this.Ze.In(s.R),t.dt=i.priceLineWidth,t.Xt=i.priceLineStyle)}}class pt extends N{constructor(t){super(),this.Qt=t}Yi(t,i,s){t.Et=!1,i.Et=!1;const e=this.Qt;if(!e.Et())return;const n=e.W(),h=n.lastValueVisible,r=""!==e.Fn(),a=0===n.seriesLastValueMode,l=e.Tn(!1);if(l.kn)return;h&&(t.ri=this.Bn(l,h,a),t.Et=0!==t.ri.length),(r||a)&&(i.ri=this.Ln(l,h,r,a),i.Et=i.ri.length>0);const o=e.In(l.R),_=this.Qt.ti().Xi().X(o);s.Z=_.Z,s.Ii=l.Ii,i.Ht=e.ti().Ut(l.Ii/e.$t().qt()),t.Ht=o,t.R=_.J,i.R=_.J}Ln(t,i,s,e){let n="";const h=this.Qt.Fn();return s&&0!==h.length&&(n+=`${h} `),i&&e&&(n+=this.Qt.$t().zn()?t.On:t.Wn),n.trim()}Bn(t,i,s){return i?s?this.Qt.$t().zn()?t.Wn:t.On:t.ri:""}}function vt(t,i,s,e){const n=Number.isFinite(i),h=Number.isFinite(s);return n&&h?t(i,s):n||h?n?i:s:e}class mt{constructor(t,i){this.$n=t,this.Nn=i}Hn(t){return null!==t&&(this.$n===t.$n&&this.Nn===t.Nn)}Un(){return new mt(this.$n,this.Nn)}qn(){return this.$n}Yn(){return this.Nn}jn(){return this.Nn-this.$n}Ki(){return this.Nn===this.$n||Number.isNaN(this.Nn)||Number.isNaN(this.$n)}pe(t){return null===t?this:new mt(vt(Math.min,this.qn(),t.qn(),-1/0),vt(Math.max,this.Yn(),t.Yn(),1/0))}Gn(t){if(!p(t))return;if(0===this.Nn-this.$n)return;const i=.5*(this.Nn+this.$n);let s=this.Nn-i,e=this.$n-i;s*=t,e*=t,this.Nn=i+s,this.$n=i+e}Kn(t){p(t)&&(this.Nn+=t,this.$n+=t)}Xn(){return{minValue:this.$n,maxValue:this.Nn}}static Zn(t){return null===t?null:new mt(t.minValue,t.maxValue)}}class gt{constructor(t,i){this.Jn=t,this.Qn=i||null}th(){return this.Jn}ih(){return this.Qn}Xn(){return{priceRange:null===this.Jn?null:this.Jn.Xn(),margins:this.Qn||void 0}}static Zn(t){return null===t?null:new gt(mt.Zn(t.priceRange),t.margins)}}class wt extends ot{constructor(t,i){super(t),this.sh=i}Qe(){const t=this.Ke;t.Et=!1;const i=this.sh.W();if(!this.Ze.Et()||!i.lineVisible)return;const s=this.sh.eh();null!==s&&(t.Et=!0,t.ut=s,t.R=i.color,t.dt=i.lineWidth,t.Xt=i.lineStyle,t.je=this.sh.W().id)}}class Mt extends N{constructor(t,i){super(),this.Mn=t,this.sh=i}Yi(t,i,s){t.Et=!1,i.Et=!1;const e=this.sh.W(),n=e.axisLabelVisible,h=""!==e.title,r=this.Mn;if(!n||!r.Et())return;const a=this.sh.eh();if(null===a)return;h&&(i.ri=e.title,i.Et=!0),i.Ht=r.ti().Ut(a/r.$t().qt()),t.ri=this.nh(e.price),t.Et=!0;const l=this.Mn.ti().Xi().X(e.axisLabelColor||e.color);s.Z=l.Z;const o=e.axisLabelTextColor||l.J;t.R=o,i.R=o,s.Ii=a}nh(t){const i=this.Mn.Lt();return null===i?"":this.Mn.$t().Zi(t,i.Nt)}}class bt{constructor(t,i){this.Mn=t,this.Cs=i,this.hh=new wt(t,this),this.Oe=new Mt(t,this),this.rh=new at(this.Oe,t,t.ti())}ah(t){f(this.Cs,t),this.Tt(),this.Mn.ti().oh()}W(){return this.Cs}_h(){return this.hh}uh(){return this.rh}dh(){return this.Oe}Tt(){this.hh.Tt(),this.Oe.Tt()}eh(){const t=this.Mn,i=t.$t();if(t.ti().Ft().Ki()||i.Ki())return null;const s=t.Lt();return null===s?null:i.Wt(this.Cs.price,s.Nt)}}class St extends j{constructor(t){super(),this.ss=t}ti(){return this.ss}}const xt={Bar:(t,i,s,e)=>{const n=i.upColor,h=i.downColor,r=c(t(s,e)),a=u(r.Nt[0])<=u(r.Nt[3]);return{fh:r.R??(a?n:h)}},Candlestick:(t,i,s,e)=>{const n=i.upColor,h=i.downColor,r=i.borderUpColor,a=i.borderDownColor,l=i.wickUpColor,o=i.wickDownColor,_=c(t(s,e)),d=u(_.Nt[0])<=u(_.Nt[3]);return{fh:_.R??(d?n:h),ph:_.Ht??(d?r:a),mh:_.gh??(d?l:o)}},Custom:(t,i,s,e)=>({fh:c(t(s,e)).R??i.color}),Area:(t,i,s,e)=>{const n=c(t(s,e));return{fh:n.gt??i.lineColor,gt:n.gt??i.lineColor,wh:n.wh??i.topColor,Mh:n.Mh??i.bottomColor}},Baseline:(t,i,s,e)=>{const n=c(t(s,e));return{fh:n.Nt[3]>=i.baseValue.price?i.topLineColor:i.bottomLineColor,bh:n.bh??i.topLineColor,Sh:n.Sh??i.bottomLineColor,xh:n.xh??i.topFillColor1,yh:n.yh??i.topFillColor2,Ph:n.Ph??i.bottomFillColor1,Ch:n.Ch??i.bottomFillColor2}},Line:(t,i,s,e)=>{const n=c(t(s,e));return{fh:n.R??i.color,gt:n.R??i.color}},Histogram:(t,i,s,e)=>({fh:c(t(s,e)).R??i.color})};class yt{constructor(t){this.Th=(t,i)=>void 0!==i?i.Nt:this.Mn.Xs().kh(t),this.Mn=t,this.Dh=xt[t.Rh()]}Vh(t,i){return this.Dh(this.Th,this.Mn.W(),t,i)}}function Pt(t,i,s,e,n=0,h=i.length){let r=h-n;for(;0<r;){const h=r>>1,a=n+h;e(i[a],s)===t?(n=a+1,r-=h+1):r=h}return n}const Ct=Pt.bind(null,!0),Tt=Pt.bind(null,!1);var kt;!function(t){t[t.NearestLeft=-1]="NearestLeft",t[t.None=0]="None",t[t.NearestRight=1]="NearestRight"}(kt||(kt={}));const Dt=30;class Rt{constructor(){this.Eh=[],this.Ah=new Map,this.Ih=new Map,this.Fh=[]}Bh(){return this.Lh()>0?this.Eh[this.Eh.length-1]:null}zh(){return this.Lh()>0?this.Oh(0):null}Ks(){return this.Lh()>0?this.Oh(this.Eh.length-1):null}Lh(){return this.Eh.length}Ki(){return 0===this.Lh()}Dn(t){return null!==this.Wh(t,0)}kh(t){return this.$h(t)}$h(t,i=0){const s=this.Wh(t,i);return null===s?null:{...this.Nh(s),Rn:this.Oh(s)}}Hh(){return this.Eh}Uh(t,i,s){if(this.Ki())return null;let e=null;for(const n of s){e=Vt(e,this.qh(t,i,n))}return e}lt(t){this.Ih.clear(),this.Ah.clear(),this.Eh=t,this.Fh=t.map(t=>t.Rn)}Yh(){return this.Fh}Oh(t){return this.Eh[t].Rn}Nh(t){return this.Eh[t]}Wh(t,i){const s=this.jh(t);if(null===s&&0!==i)switch(i){case-1:return this.Gh(t);case 1:return this.Kh(t);default:throw new TypeError("Unknown search mode")}return s}Gh(t){let i=this.Xh(t);return i>0&&(i-=1),i!==this.Eh.length&&this.Oh(i)<t?i:null}Kh(t){const i=this.Zh(t);return i!==this.Eh.length&&t<this.Oh(i)?i:null}jh(t){const i=this.Xh(t);return i===this.Eh.length||t<this.Eh[i].Rn?null:i}Xh(t){return Ct(this.Eh,t,(t,i)=>t.Rn<i)}Zh(t){return Tt(this.Eh,t,(t,i)=>t.Rn>i)}Jh(t,i,s){let e=null;for(let n=t;n<i;n++){const t=this.Eh[n].Nt[s];Number.isNaN(t)||(null===e?e={Qh:t,tr:t}:(t<e.Qh&&(e.Qh=t),t>e.tr&&(e.tr=t)))}return e}qh(t,i,s){if(this.Ki())return null;let e=null;const n=c(this.zh()),h=c(this.Ks()),r=Math.max(t,n),a=Math.min(i,h),l=Math.ceil(r/Dt)*Dt,o=Math.max(l,Math.floor(a/Dt)*Dt);{const t=this.Xh(r),n=this.Zh(Math.min(a,l,i));e=Vt(e,this.Jh(t,n,s))}let _=this.Ah.get(s);void 0===_&&(_=new Map,this.Ah.set(s,_));for(let t=Math.max(l+1,r);t<o;t+=Dt){const i=Math.floor(t/Dt);let n=_.get(i);if(void 0===n){const t=this.Xh(i*Dt),e=this.Zh((i+1)*Dt-1);n=this.Jh(t,e,s),_.set(i,n)}e=Vt(e,n)}{const t=this.Xh(o),i=this.Zh(a);e=Vt(e,this.Jh(t,i,s))}return e}}function Vt(t,i){if(null===t)return i;if(null===i)return t;return{Qh:Math.min(t.Qh,i.Qh),tr:Math.max(t.tr,i.tr)}}const Et={setLineStyle:a};class At{constructor(t){this.ir=t}nt(t,i,s){this.ir.draw(t,Et)}sr(t,i,s){this.ir.drawBackground?.(t,Et)}}class It{constructor(t){this.De=null,this.er=t}Dt(){const t=this.er.renderer();if(null===t)return null;if(this.De?.nr===t)return this.De.hr;const i=new At(t);return this.De={nr:t,hr:i},i}rr(){return this.er.zOrder?.()??"normal"}}class Ft{constructor(t){this.ar=null,this.lr=t}_r(){return this.lr}Ws(){this.lr.updateAllViews?.()}$s(){const t=this.lr.paneViews?.()??[];if(this.ar?.nr===t)return this.ar.hr;const i=t.map(t=>new It(t));return this.ar={nr:t,hr:i},i}Ye(t,i){return this.lr.hitTest?.(t,i)??null}}let Bt=class extends Ft{us(){return[]}};class Lt{constructor(t){this.ir=t}nt(t,i,s){this.ir.draw(t,Et)}sr(t,i,s){this.ir.drawBackground?.(t,Et)}}class zt{constructor(t){this.De=null,this.er=t}Dt(){const t=this.er.renderer();if(null===t)return null;if(this.De?.nr===t)return this.De.hr;const i=new Lt(t);return this.De={nr:t,hr:i},i}rr(){return this.er.zOrder?.()??"normal"}}function Ot(t){return{ri:t.text(),Ii:t.coordinate(),Ai:t.fixedCoordinate?.(),R:t.textColor(),Z:t.backColor(),Et:t.visible?.()??!0,mi:t.tickVisible?.()??!0}}class Wt{constructor(t,i){this.Jt=new q,this.cr=t,this.ur=i}Dt(){return this.Jt.lt({ts:this.ur.ts(),...Ot(this.cr)}),this.Jt}}class $t extends N{constructor(t,i){super(),this.cr=t,this.ji=i}Yi(t,i,s){const e=Ot(this.cr);s.Z=e.Z,t.R=e.R;const n=2/12*this.ji.C();s.Di=n,s.Ri=n,s.Ii=e.Ii,s.Ai=e.Ai,t.ri=e.ri,t.Et=e.Et,t.mi=e.mi}}class Nt extends Ft{constructor(t,i){super(t),this.dr=null,this.pr=null,this.vr=null,this.mr=null,this.Mn=i}ds(){const t=this.lr.timeAxisViews?.()??[];if(this.dr?.nr===t)return this.dr.hr;const i=this.Mn.ti().Ft(),s=t.map(t=>new Wt(t,i));return this.dr={nr:t,hr:s},s}Ns(){const t=this.lr.priceAxisViews?.()??[];if(this.pr?.nr===t)return this.pr.hr;const i=this.Mn.$t(),s=t.map(t=>new $t(t,i));return this.pr={nr:t,hr:s},s}gr(){const t=this.lr.priceAxisPaneViews?.()??[];if(this.vr?.nr===t)return this.vr.hr;const i=t.map(t=>new zt(t));return this.vr={nr:t,hr:i},i}wr(){const t=this.lr.timeAxisPaneViews?.()??[];if(this.mr?.nr===t)return this.mr.hr;const i=t.map(t=>new zt(t));return this.mr={nr:t,hr:i},i}Mr(t,i){return this.lr.autoscaleInfo?.(t,i)??null}}function Ht(t,i,s,e){t.forEach(t=>{i(t).forEach(t=>{t.rr()===s&&e.push(t)})})}function Ut(t){return t.$s()}function qt(t){return t.gr()}function Yt(t){return t.wr()}const jt=["Area","Line","Baseline"];class Gt extends St{constructor(t,i,s,e,n){super(t),this.jt=new Rt,this.hh=new ft(this),this.br=[],this.Sr=new _t(this),this.yr=null,this.Pr=null,this.Cr=null,this.Tr=[],this.Cs=s,this.kr=i;const h=new pt(this);this.gs=[h],this.rh=new at(h,this,t),jt.includes(this.kr)&&(this.yr=new dt(this)),this.Dr(),this.er=e(this,this.ti(),n)}m(){null!==this.Cr&&clearTimeout(this.Cr)}In(t){return this.Cs.priceLineColor||t}Tn(t){const i={kn:!0},s=this.$t();if(this.ti().Ft().Ki()||s.Ki()||this.jt.Ki())return i;const e=this.ti().Ft().Cn(),n=this.Lt();if(null===e||null===n)return i;let h,r;if(t){const t=this.jt.Bh();if(null===t)return i;h=t,r=t.Rn}else{const t=this.jt.$h(e.Si(),-1);if(null===t)return i;if(h=this.jt.kh(t.Rn),null===h)return i;r=t.Rn}const a=h.Nt[3],l=this.Rr().Vh(r,{Nt:h}),o=s.Wt(a,n.Nt);return{kn:!1,Mt:a,ri:s.Zi(a,n.Nt),On:s.Vr(a),Wn:s.Er(a,n.Nt),R:l.fh,Ii:o,Rn:r}}Rr(){return null!==this.Pr||(this.Pr=new yt(this)),this.Pr}W(){return this.Cs}ah(t){const i=t.priceScaleId;void 0!==i&&i!==this.Cs.priceScaleId&&this.ti().Ar(this,i),f(this.Cs,t),void 0!==t.priceFormat&&(this.Dr(),this.ti().Ir()),this.ti().Fr(this),this.ti().Br(),this.er.Tt("options")}lt(t,i){this.jt.lt(t),this.er.Tt("data"),null!==this.yr&&(i&&i.Lr?this.yr.Sn():0===t.length&&this.yr.bn());const s=this.ti().$e(this);this.ti().zr(s),this.ti().Fr(this),this.ti().Br(),this.ti().oh()}Or(t){const i=new bt(this,t);return this.br.push(i),this.ti().Fr(this),i}Wr(t){const i=this.br.indexOf(t);-1!==i&&this.br.splice(i,1),this.ti().Fr(this)}$r(){return this.br}Rh(){return this.kr}Lt(){const t=this.Nr();return null===t?null:{Nt:t.Nt[3],Hr:t.wt}}Nr(){const t=this.ti().Ft().Cn();if(null===t)return null;const i=t.Ur();return this.jt.$h(i,1)}Xs(){return this.jt}qr(t){const i=this.jt.kh(t);return null===i?null:"Bar"===this.kr||"Candlestick"===this.kr||"Custom"===this.kr?{Yr:i.Nt[0],jr:i.Nt[1],Gr:i.Nt[2],Kr:i.Nt[3]}:i.Nt[3]}Xr(t){const i=[];Ht(this.Tr,Ut,"top",i);const s=this.yr;return null!==s&&s.Et()?(null===this.Cr&&s.yn()&&(this.Cr=setTimeout(()=>{this.Cr=null,this.ti().Zr()},0)),s.xn(),i.unshift(s),i):i}$s(){const t=[];this.Jr()||t.push(this.Sr),t.push(this.er,this.hh);const i=this.br.map(t=>t._h());return t.push(...i),Ht(this.Tr,Ut,"normal",t),t}Qr(){return this.ta(Ut,"bottom")}ia(t){return this.ta(qt,t)}sa(t){return this.ta(Yt,t)}ea(t,i){return this.Tr.map(s=>s.Ye(t,i)).filter(t=>null!==t)}us(){return[this.rh,...this.br.map(t=>t.uh())]}Ns(t,i){if(i!==this.hs&&!this.Jr())return[];const s=[...this.gs];for(const t of this.br)s.push(t.dh());return this.Tr.forEach(t=>{s.push(...t.Ns())}),s}ds(){const t=[];return this.Tr.forEach(i=>{t.push(...i.ds())}),t}Mr(t,i){if(void 0!==this.Cs.autoscaleInfoProvider){const s=this.Cs.autoscaleInfoProvider(()=>{const s=this.na(t,i);return null===s?null:s.Xn()});return gt.Zn(s)}return this.na(t,i)}nr(){const t=this.Cs.priceFormat;return t.base??1/t.minMove}ha(){return this.ra}Ws(){this.er.Tt();for(const t of this.gs)t.Tt();for(const t of this.br)t.Tt();this.hh.Tt(),this.Sr.Tt(),this.yr?.Tt(),this.Tr.forEach(t=>t.Ws())}$t(){return c(super.$t())}Bt(t){if(!(("Line"===this.kr||"Area"===this.kr||"Baseline"===this.kr)&&this.Cs.crosshairMarkerVisible))return null;const i=this.jt.kh(t);if(null===i)return null;return{Mt:i.Nt[3],vt:this.aa(),Ht:this.la(),Ot:this.oa(),zt:this._a(t)}}Fn(){return this.Cs.title}Et(){return this.Cs.visible}ca(t){this.Tr.push(new Nt(t,this))}ua(t){this.Tr=this.Tr.filter(i=>i._r()!==t)}da(){if("Custom"===this.kr)return t=>this.er.fa(t)}pa(){if("Custom"===this.kr)return t=>this.er.va(t)}ma(){return this.jt.Yh()}Jr(){return!X(this.$t().ga())}na(t,i){if(!v(t)||!v(i)||this.jt.Ki())return null;const s="Line"===this.kr||"Area"===this.kr||"Baseline"===this.kr||"Histogram"===this.kr?[3]:[2,1],e=this.jt.Uh(t,i,s);let n=null!==e?new mt(e.Qh,e.tr):null,h=null;if("Histogram"===this.Rh()){const t=this.Cs.base,i=new mt(t,t);n=null!==n?n.pe(i):i}return this.Tr.forEach(s=>{const e=s.Mr(t,i);if(e?.priceRange){const t=new mt(e.priceRange.minValue,e.priceRange.maxValue);n=null!==n?n.pe(t):t}e?.margins&&(h=e.margins)}),new gt(n,h)}aa(){switch(this.kr){case"Line":case"Area":case"Baseline":return this.Cs.crosshairMarkerRadius}return 0}la(){switch(this.kr){case"Line":case"Area":case"Baseline":{const t=this.Cs.crosshairMarkerBorderColor;if(0!==t.length)return t}}return null}oa(){switch(this.kr){case"Line":case"Area":case"Baseline":return this.Cs.crosshairMarkerBorderWidth}return 0}_a(t){switch(this.kr){case"Line":case"Area":case"Baseline":{const t=this.Cs.crosshairMarkerBackgroundColor;if(0!==t.length)return t}}return this.Rr().Vh(t).fh}Dr(){switch(this.Cs.priceFormat.type){case"custom":{const t=this.Cs.priceFormat.formatter;this.ra={format:t,formatTickmarks:this.Cs.priceFormat.tickmarksFormatter??(i=>i.map(t))};break}case"volume":this.ra=new et(this.Cs.priceFormat.precision);break;case"percent":this.ra=new st(this.Cs.priceFormat.precision);break;default:{const t=Math.pow(10,this.Cs.priceFormat.precision);this.ra=new it(t,this.Cs.priceFormat.minMove*t)}}null!==this.hs&&this.hs.wa()}ta(t,i){const s=[];return Ht(this.Tr,t,i,s),s}}const Kt=[3],Xt=[0,1,2,3];class Zt{constructor(t){this.Cs=t}Ma(t,i,s){let e=t;if(0===this.Cs.mode)return e;const n=s.ks(),h=n.Lt();if(null===h)return e;const r=n.Wt(t,h),a=s.ba().filter(t=>t instanceof Gt).reduce((t,e)=>{if(s.Ne(e)||!e.Et())return t;const n=e.$t(),h=e.Xs();if(n.Ki()||!h.Dn(i))return t;const r=h.kh(i);if(null===r)return t;const a=u(e.Lt()),l=3===this.Cs.mode?Xt:Kt;return t.concat(l.map(t=>n.Wt(r.Nt[t],a.Nt)))},[]);if(0===a.length)return e;a.sort((t,i)=>Math.abs(t-r)-Math.abs(i-r));const l=a[0];return e=n.Ds(l,h),e}}function Jt(t,i,s){return Math.min(Math.max(t,i),s)}function Qt(t,i,s){return i-t<=s}function ti(t){const i=Math.ceil(t);return i%2==0?i-1:i}class ii extends D{constructor(){super(...arguments),this.jt=null}lt(t){this.jt=t}ht({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:e}){if(null===this.jt)return;const n=Math.max(1,Math.floor(s));t.lineWidth=n,function(t,i){t.save(),t.lineWidth%2&&t.translate(.5,.5),i(),t.restore()}(t,()=>{const h=c(this.jt);if(h.Sa){t.strokeStyle=h.xa,a(t,h.ya),t.beginPath();for(const e of h.Pa){const h=Math.round(e.Ca*s);t.moveTo(h,-n),t.lineTo(h,i.height+n)}t.stroke()}if(h.Ta){t.strokeStyle=h.ka,a(t,h.Da),t.beginPath();for(const s of h.Ra){const h=Math.round(s.Ca*e);t.moveTo(-n,h),t.lineTo(i.width+n,h)}t.stroke()}})}}class si{constructor(t){this.Jt=new ii,this.yt=!0,this.Ct=t}Tt(){this.yt=!0}Dt(){if(this.yt){const t=this.Ct.ti().W().grid,i={Ta:t.horzLines.visible,Sa:t.vertLines.visible,ka:t.horzLines.color,xa:t.vertLines.color,Da:t.horzLines.style,ya:t.vertLines.style,Ra:this.Ct.ks().Va(),Pa:(this.Ct.ti().Ft().Va()||[]).map(t=>({Ca:t.coord}))};this.Jt.lt(i),this.yt=!1}return this.Jt}}class ei{constructor(t){this.er=new si(t)}_h(){return this.er}}const ni={Ea:4,Aa:1e-4};function hi(t,i){const s=100*(t-i)/i;return i<0?-s:s}function ri(t,i){const s=hi(t.qn(),i),e=hi(t.Yn(),i);return new mt(s,e)}function ai(t,i){const s=100*(t-i)/i+100;return i<0?-s:s}function li(t,i){const s=ai(t.qn(),i),e=ai(t.Yn(),i);return new mt(s,e)}function oi(t,i){const s=Math.abs(t);if(s<1e-15)return 0;const e=Math.log10(s+i.Aa)+i.Ea;return t<0?-e:e}function _i(t,i){const s=Math.abs(t);if(s<1e-15)return 0;const e=Math.pow(10,s-i.Ea)-i.Aa;return t<0?-e:e}function ci(t,i){if(null===t)return null;const s=oi(t.qn(),i),e=oi(t.Yn(),i);return new mt(s,e)}function ui(t,i){if(null===t)return null;const s=_i(t.qn(),i),e=_i(t.Yn(),i);return new mt(s,e)}function di(t){if(null===t)return ni;const i=Math.abs(t.Yn()-t.qn());if(i>=1||i<1e-15)return ni;const s=Math.ceil(Math.abs(Math.log10(i))),e=ni.Ea+s;return{Ea:e,Aa:1/Math.pow(10,e)}}class fi{constructor(t,i){if(this.Ia=t,this.Fa=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.Ia))this.Ba=[2,2.5,2];else{this.Ba=[];for(let t=this.Ia;1!==t;){if(t%2==0)this.Ba.push(2),t/=2;else{if(t%5!=0)throw new Error("unexpected base");this.Ba.push(2,2.5),t/=5}if(this.Ba.length>100)throw new Error("something wrong with base")}}}La(t,i,s){const e=0===this.Ia?0:1/this.Ia;let n=Math.pow(10,Math.max(0,Math.ceil(Math.log10(t-i)))),h=0,r=this.Fa[0];for(;;){const t=Qt(n,e,1e-14)&&n>e+1e-14,i=Qt(n,s*r,1e-14),a=Qt(n,1,1e-14);if(!(t&&i&&a))break;n/=r,r=this.Fa[++h%this.Fa.length]}if(n<=e+1e-14&&(n=e),n=Math.max(1,n),this.Ba.length>0&&(a=n,l=1,o=1e-14,Math.abs(a-l)<o))for(h=0,r=this.Ba[0];Qt(n,s*r,1e-14)&&n>e+1e-14;)n/=r,r=this.Ba[++h%this.Ba.length];var a,l,o;return n}}class pi{constructor(t,i,s,e){this.za=[],this.ji=t,this.Ia=i,this.Oa=s,this.Wa=e}La(t,i){if(t<i)throw new Error("high < low");const s=this.ji.qt(),e=(t-i)*this.$a()/s,n=new fi(this.Ia,[2,2.5,2]),h=new fi(this.Ia,[2,2,2.5]),r=new fi(this.Ia,[2.5,2,2]),a=[];return a.push(n.La(t,i,e),h.La(t,i,e),r.La(t,i,e)),function(t){if(t.length<1)throw Error("array is empty");let i=t[0];for(let s=1;s<t.length;++s)t[s]<i&&(i=t[s]);return i}(a)}Na(){const t=this.ji,i=t.Lt();if(null===i)return void(this.za=[]);const s=t.qt(),e=this.Oa(s-1,i),n=this.Oa(0,i),h=this.ji.W().entireTextOnly?this.Ha()/2:0,r=h,a=s-1-h,l=Math.max(e,n),o=Math.min(e,n);if(l===o)return void(this.za=[]);const _=this.La(l,o);if(this.Ua(i,_,l,o,r,a),t.qa()&&this.Ya(_,o,l)){const t=this.ji.ja();this.Ga(i,_,r,a,t,2*t)}const c=this.za.map(t=>t.Ka),u=this.ji.Xa(c);for(let t=0;t<this.za.length;t++)this.za[t].Za=u[t]}Va(){return this.za}Ha(){return this.ji.C()}$a(){return Math.ceil(2.5*this.Ha())}Ua(t,i,s,e,n,h){const r=this.za,a=this.ji;let l=s%i;l+=l<0?i:0;const o=s>=e?1:-1;let _=null,c=0;for(let u=s-l;u>e;u-=i){const s=this.Wa(u,t,!0);null!==_&&Math.abs(s-_)<this.$a()||(s<n||s>h||(c<r.length?(r[c].Ca=s,r[c].Za=a.Ja(u),r[c].Ka=u):r.push({Ca:s,Za:a.Ja(u),Ka:u}),c++,_=s,a.Qa()&&(i=this.La(u*o,e))))}r.length=c}Ga(t,i,s,e,n,h){const r=this.za,a=this.tl(t,s,n,h),l=this.tl(t,e,-h,-n),o=this.Wa(0,t,!0)-this.Wa(i,t,!0);r.length>0&&r[0].Ca-a.Ca<o/2&&r.shift(),r.length>0&&l.Ca-r[r.length-1].Ca<o/2&&r.pop(),r.unshift(a),r.push(l)}tl(t,i,s,e){const n=(s+e)/2,h=this.Oa(i+s,t),r=this.Oa(i+e,t),a=Math.min(h,r),l=Math.max(h,r),o=Math.max(.1,this.La(l,a)),_=this.Oa(i+n,t),c=_-_%o,u=this.Wa(c,t,!0);return{Za:this.ji.Ja(c),Ca:u,Ka:c}}Ya(t,i,s){let e=u(this.ji.th());return this.ji.Qa()&&(e=ui(e,this.ji.il())),e.qn()-i<t&&s-e.Yn()<t}}function vi(t){return t.slice().sort((t,i)=>c(t.ls())-c(i.ls()))}var mi;!function(t){t[t.Normal=0]="Normal",t[t.Logarithmic=1]="Logarithmic",t[t.Percentage=2]="Percentage",t[t.IndexedTo100=3]="IndexedTo100"}(mi||(mi={}));const gi=new st,wi=new it(100,1);class Mi{constructor(t,i,s,e,n){this.sl=0,this.el=null,this.Jn=null,this.nl=null,this.hl={rl:!1,al:null},this.ll=!1,this.ol=0,this._l=0,this.cl=new d,this.ul=new d,this.dl=[],this.fl=null,this.pl=null,this.vl=null,this.ml=null,this.gl=null,this.ra=wi,this.wl=di(null),this.Ml=t,this.Cs=i,this.bl=s,this.Sl=e,this.xl=n,this.yl=new pi(this,100,this.Pl.bind(this),this.Cl.bind(this))}ga(){return this.Ml}W(){return this.Cs}ah(t){if(f(this.Cs,t),this.wa(),void 0!==t.mode&&this.Tl({tn:t.mode}),void 0!==t.scaleMargins){const i=_(t.scaleMargins.top),s=_(t.scaleMargins.bottom);if(i<0||i>1)throw new Error(`Invalid top margin - expect value between 0 and 1, given=${i}`);if(s<0||s>1)throw new Error(`Invalid bottom margin - expect value between 0 and 1, given=${s}`);if(i+s>1)throw new Error(`Invalid margins - sum of margins must be less than 1, given=${i+s}`);this.kl(),this.vl=null}}Dl(){return this.Cs.autoScale}Rl(){return this.ll}Qa(){return 1===this.Cs.mode}zn(){return 2===this.Cs.mode}Vl(){return 3===this.Cs.mode}il(){return this.wl}tn(){return{se:this.Cs.autoScale,El:this.Cs.invertScale,tn:this.Cs.mode}}Tl(t){const i=this.tn();let s=null;void 0!==t.se&&(this.Cs.autoScale=t.se),void 0!==t.tn&&(this.Cs.mode=t.tn,2!==t.tn&&3!==t.tn||(this.Cs.autoScale=!0),this.hl.rl=!1),1===i.tn&&t.tn!==i.tn&&(!function(t,i){if(null===t)return!1;const s=_i(t.qn(),i),e=_i(t.Yn(),i);return isFinite(s)&&isFinite(e)}(this.Jn,this.wl)?this.Cs.autoScale=!0:(s=ui(this.Jn,this.wl),null!==s&&this.Al(s))),1===t.tn&&t.tn!==i.tn&&(s=ci(this.Jn,this.wl),null!==s&&this.Al(s));const e=i.tn!==this.Cs.mode;e&&(2===i.tn||this.zn())&&this.wa(),e&&(3===i.tn||this.Vl())&&this.wa(),void 0!==t.El&&i.El!==t.El&&(this.Cs.invertScale=t.El,this.Il()),this.ul.p(i,this.tn())}Fl(){return this.ul}C(){return this.bl.fontSize}qt(){return this.sl}Bl(t){this.sl!==t&&(this.sl=t,this.kl(),this.vl=null)}Ll(){if(this.el)return this.el;const t=this.qt()-this.zl()-this.Ol();return this.el=t,t}th(){return this.Wl(),this.Jn}Al(t,i){const s=this.Jn;(i||null===s&&null!==t||null!==s&&!s.Hn(t))&&(this.vl=null,this.Jn=t)}$l(t){this.Al(t),this.Nl(null!==t)}Ki(){return this.Wl(),0===this.sl||!this.Jn||this.Jn.Ki()}Hl(t){return this.El()?t:this.qt()-1-t}Wt(t,i){return this.zn()?t=hi(t,i):this.Vl()&&(t=ai(t,i)),this.Cl(t,i)}Ul(t,i,s){this.Wl();const e=this.Ol(),n=c(this.th()),h=n.qn(),r=n.Yn(),a=this.Ll()-1,l=this.El(),o=a/(r-h),_=void 0===s?0:s.from,u=void 0===s?t.length:s.to,d=this.ql();for(let s=_;s<u;s++){const n=t[s],r=n.Mt;if(isNaN(r))continue;let a=r;null!==d&&(a=d(n.Mt,i));const _=e+o*(a-h),c=l?_:this.sl-1-_;n.ut=c}}Yl(t,i,s){this.Wl();const e=this.Ol(),n=c(this.th()),h=n.qn(),r=n.Yn(),a=this.Ll()-1,l=this.El(),o=a/(r-h),_=void 0===s?0:s.from,u=void 0===s?t.length:s.to,d=this.ql();for(let s=_;s<u;s++){const n=t[s];let r=n.Yr,a=n.jr,_=n.Gr,c=n.Kr;null!==d&&(r=d(n.Yr,i),a=d(n.jr,i),_=d(n.Gr,i),c=d(n.Kr,i));let u=e+o*(r-h),f=l?u:this.sl-1-u;n.jl=f,u=e+o*(a-h),f=l?u:this.sl-1-u,n.Gl=f,u=e+o*(_-h),f=l?u:this.sl-1-u,n.Kl=f,u=e+o*(c-h),f=l?u:this.sl-1-u,n.Xl=f}}Ds(t,i){const s=this.Pl(t,i);return this.Zl(s,i)}Zl(t,i){let s=t;return this.zn()?s=function(t,i){return i<0&&(t=-t),t/100*i+i}(s,i):this.Vl()&&(s=function(t,i){return t-=100,i<0&&(t=-t),t/100*i+i}(s,i)),s}ba(){return this.dl}Vt(){return this.pl||(this.pl=vi(this.dl)),this.pl}Jl(t){-1===this.dl.indexOf(t)&&(this.dl.push(t),this.wa(),this.Ql())}io(t){const i=this.dl.indexOf(t);if(-1===i)throw new Error("source is not attached to scale");this.dl.splice(i,1),0===this.dl.length&&(this.Tl({se:!0}),this.Al(null)),this.wa(),this.Ql()}Lt(){let t=null;for(const i of this.dl){const s=i.Lt();null!==s&&((null===t||s.Hr<t.Hr)&&(t=s))}return null===t?null:t.Nt}El(){return this.Cs.invertScale}Va(){const t=null===this.Lt();if(null!==this.vl&&(t||this.vl.so===t))return this.vl.Va;this.yl.Na();const i=this.yl.Va();return this.vl={Va:i,so:t},this.cl.p(),i}eo(){return this.cl}no(t){this.zn()||this.Vl()||null===this.ml&&null===this.nl&&(this.Ki()||(this.ml=this.sl-t,this.nl=c(this.th()).Un()))}ho(t){if(this.zn()||this.Vl())return;if(null===this.ml)return;this.Tl({se:!1}),(t=this.sl-t)<0&&(t=0);let i=(this.ml+.2*(this.sl-1))/(t+.2*(this.sl-1));const s=c(this.nl).Un();i=Math.max(i,.1),s.Gn(i),this.Al(s)}ro(){this.zn()||this.Vl()||(this.ml=null,this.nl=null)}ao(t){this.Dl()||null===this.gl&&null===this.nl&&(this.Ki()||(this.gl=t,this.nl=c(this.th()).Un()))}lo(t){if(this.Dl())return;if(null===this.gl)return;const i=c(this.th()).jn()/(this.Ll()-1);let s=t-this.gl;this.El()&&(s*=-1);const e=s*i,n=c(this.nl).Un();n.Kn(e),this.Al(n,!0),this.vl=null}oo(){this.Dl()||null!==this.gl&&(this.gl=null,this.nl=null)}ha(){return this.ra||this.wa(),this.ra}Zi(t,i){switch(this.Cs.mode){case 2:return this._o(hi(t,i));case 3:return this.ha().format(ai(t,i));default:return this.nh(t)}}Ja(t){switch(this.Cs.mode){case 2:return this._o(t);case 3:return this.ha().format(t);default:return this.nh(t)}}Xa(t){switch(this.Cs.mode){case 2:return this.co(t);case 3:return this.ha().formatTickmarks(t);default:return this.uo(t)}}Vr(t){return this.nh(t,c(this.fl).ha())}Er(t,i){return t=hi(t,i),this._o(t,gi)}do(){return this.dl}fo(t){this.hl={al:t,rl:!1}}Ws(){this.dl.forEach(t=>t.Ws())}qa(){return this.Cs.ensureEdgeTickMarksVisible&&this.Dl()}ja(){return this.C()/2}wa(){this.vl=null;let t=1/0;this.fl=null;for(const i of this.dl)i.ls()<t&&(t=i.ls(),this.fl=i);let i=100;null!==this.fl&&(i=Math.round(this.fl.nr())),this.ra=wi,this.zn()?(this.ra=gi,i=100):this.Vl()?(this.ra=new it(100,1),i=100):null!==this.fl&&(this.ra=this.fl.ha()),this.yl=new pi(this,i,this.Pl.bind(this),this.Cl.bind(this)),this.yl.Na()}Ql(){this.pl=null}po(){return null===this.fl||this.zn()||this.Vl()?1:1/this.fl.nr()}Xi(){return this.xl}Nl(t){this.ll=t}zl(){return this.El()?this.Cs.scaleMargins.bottom*this.qt()+this._l:this.Cs.scaleMargins.top*this.qt()+this.ol}Ol(){return this.El()?this.Cs.scaleMargins.top*this.qt()+this.ol:this.Cs.scaleMargins.bottom*this.qt()+this._l}Wl(){this.hl.rl||(this.hl.rl=!0,this.vo())}kl(){this.el=null}Cl(t,i){if(this.Wl(),this.Ki())return 0;t=this.Qa()&&t?oi(t,this.wl):t;const s=c(this.th()),e=this.Ol()+(this.Ll()-1)*(t-s.qn())/s.jn();return this.Hl(e)}Pl(t,i){if(this.Wl(),this.Ki())return 0;const s=this.Hl(t),e=c(this.th()),n=e.qn()+e.jn()*((s-this.Ol())/(this.Ll()-1));return this.Qa()?_i(n,this.wl):n}Il(){this.vl=null,this.yl.Na()}vo(){if(this.Rl()&&!this.Dl())return;const t=this.hl.al;if(null===t)return;let i=null;const s=this.do();let e=0,n=0;for(const h of s){if(!h.Et())continue;const s=h.Lt();if(null===s)continue;const r=h.Mr(t.Ur(),t.Si());let a=r&&r.th();if(null!==a){switch(this.Cs.mode){case 1:a=ci(a,this.wl);break;case 2:a=ri(a,s.Nt);break;case 3:a=li(a,s.Nt)}if(i=null===i?a:i.pe(c(a)),null!==r){const t=r.ih();null!==t&&(e=Math.max(e,t.above),n=Math.max(n,t.below))}}}if(this.qa()&&(e=Math.max(e,this.ja()),n=Math.max(n,this.ja())),e===this.ol&&n===this._l||(this.ol=e,this._l=n,this.vl=null,this.kl()),null!==i){if(i.qn()===i.Yn()){const t=5*this.po();this.Qa()&&(i=ui(i,this.wl)),i=new mt(i.qn()-t,i.Yn()+t),this.Qa()&&(i=ci(i,this.wl))}if(this.Qa()){const t=ui(i,this.wl),s=di(t);if(h=s,r=this.wl,h.Ea!==r.Ea||h.Aa!==r.Aa){const e=null!==this.nl?ui(this.nl,this.wl):null;this.wl=s,i=ci(t,s),null!==e&&(this.nl=ci(e,s))}}this.Al(i)}else null===this.Jn&&(this.Al(new mt(-.5,.5)),this.wl=di(null));var h,r}ql(){return this.zn()?hi:this.Vl()?ai:this.Qa()?t=>oi(t,this.wl):null}mo(t,i,s){return void 0===i?(void 0===s&&(s=this.ha()),s.format(t)):i(t)}wo(t,i,s){return void 0===i?(void 0===s&&(s=this.ha()),s.formatTickmarks(t)):i(t)}nh(t,i){return this.mo(t,this.Sl.priceFormatter,i)}uo(t,i){const s=this.Sl.priceFormatter;return this.wo(t,this.Sl.tickmarksPriceFormatter??(s?t=>t.map(s):void 0),i)}_o(t,i){return this.mo(t,this.Sl.percentageFormatter,i)}co(t,i){const s=this.Sl.percentageFormatter;return this.wo(t,this.Sl.tickmarksPercentageFormatter??(s?t=>t.map(s):void 0),i)}}function bi(t){return t instanceof Gt}class Si{constructor(t,i){this.dl=[],this.Mo=new Map,this.sl=0,this.bo=0,this.So=1,this.pl=null,this.xo=!1,this.yo=new d,this.Tr=[],this.ur=t,this.ss=i,this.Po=new ei(this);const s=i.W();this.Co=this.To("left",s.leftPriceScale),this.ko=this.To("right",s.rightPriceScale),this.Co.Fl().i(this.Do.bind(this,this.Co),this),this.ko.Fl().i(this.Do.bind(this,this.ko),this),this.Ro(s)}Ro(t){if(t.leftPriceScale&&this.Co.ah(t.leftPriceScale),t.rightPriceScale&&this.ko.ah(t.rightPriceScale),t.localization&&(this.Co.wa(),this.ko.wa()),t.overlayPriceScales){const i=Array.from(this.Mo.values());for(const s of i){const i=c(s[0].$t());i.ah(t.overlayPriceScales),t.localization&&i.wa()}}}Vo(t){switch(t){case"left":return this.Co;case"right":return this.ko}return this.Mo.has(t)?_(this.Mo.get(t))[0].$t():null}m(){this.ti().Eo().u(this),this.Co.Fl().u(this),this.ko.Fl().u(this),this.dl.forEach(t=>{t.m&&t.m()}),this.Tr=this.Tr.filter(t=>{const i=t._r();return i.detached&&i.detached(),!1}),this.yo.p()}Ao(){return this.So}Io(t){this.So=t}ti(){return this.ss}ts(){return this.bo}qt(){return this.sl}Fo(t){this.bo=t,this.Bo()}Bl(t){this.sl=t,this.Co.Bl(t),this.ko.Bl(t),this.dl.forEach(i=>{if(this.Ne(i)){const s=i.$t();null!==s&&s.Bl(t)}}),this.Bo()}Lo(t){this.xo=t}zo(){return this.xo}Oo(){return this.dl.filter(bi)}ba(){return this.dl}Ne(t){const i=t.$t();return null===i||this.Co!==i&&this.ko!==i}Jl(t,i,s){this.Wo(t,i,s?t.ls():this.dl.length)}io(t,i){const s=this.dl.indexOf(t);o(-1!==s,"removeDataSource: invalid data source"),this.dl.splice(s,1),i||this.dl.forEach((t,i)=>t._s(i));const e=c(t.$t()).ga();if(this.Mo.has(e)){const i=_(this.Mo.get(e)),s=i.indexOf(t);-1!==s&&(i.splice(s,1),0===i.length&&this.Mo.delete(e))}const n=t.$t();n&&n.ba().indexOf(t)>=0&&(n.io(t),this.$o(n)),this.pl=null}Ue(t){return t===this.Co?"left":t===this.ko?"right":"overlay"}No(){return this.Co}Ho(){return this.ko}Uo(t,i){t.no(i)}qo(t,i){t.ho(i),this.Bo()}Yo(t){t.ro()}jo(t,i){t.ao(i)}Go(t,i){t.lo(i),this.Bo()}Ko(t){t.oo()}Bo(){this.dl.forEach(t=>{t.Ws()})}ks(){let t=null;return this.ss.W().rightPriceScale.visible&&0!==this.ko.ba().length?t=this.ko:this.ss.W().leftPriceScale.visible&&0!==this.Co.ba().length?t=this.Co:0!==this.dl.length&&(t=this.dl[0].$t()),null===t&&(t=this.ko),t}He(){let t=null;return this.ss.W().rightPriceScale.visible?t=this.ko:this.ss.W().leftPriceScale.visible&&(t=this.Co),t}$o(t){null!==t&&t.Dl()&&this.Xo(t)}Zo(t){const i=this.ur.Cn();t.Tl({se:!0}),null!==i&&t.fo(i),this.Bo()}Jo(){this.Xo(this.Co),this.Xo(this.ko)}Qo(){this.$o(this.Co),this.$o(this.ko),this.dl.forEach(t=>{this.Ne(t)&&this.$o(t.$t())}),this.Bo(),this.ss.oh()}Vt(){return null===this.pl&&(this.pl=vi(this.dl)),this.pl}t_(t,i){i=Jt(i,0,this.dl.length-1);const s=this.dl.indexOf(t);o(-1!==s,"setSeriesOrder: invalid data source"),this.dl.splice(s,1),this.dl.splice(i,0,t),this.dl.forEach((t,i)=>t._s(i)),this.pl=null;for(const t of[this.Co,this.ko])t.Ql(),t.wa();this.ss.oh()}At(){return this.Vt().filter(bi)}i_(){return this.yo}s_(){return this.Po}ca(t){this.Tr.push(new Bt(t))}ua(t){this.Tr=this.Tr.filter(i=>i._r()!==t),t.detached&&t.detached(),this.ss.oh()}e_(){return this.Tr}ea(t,i){return this.Tr.map(s=>s.Ye(t,i)).filter(t=>null!==t)}Xo(t){const i=t.do();if(i&&i.length>0&&!this.ur.Ki()){const i=this.ur.Cn();null!==i&&t.fo(i)}t.Ws()}Wo(t,i,s){let e=this.Vo(i);if(null===e&&(e=this.To(i,this.ss.W().overlayPriceScales)),this.dl.splice(s,0,t),!X(i)){const s=this.Mo.get(i)||[];s.push(t),this.Mo.set(i,s)}t._s(s),e.Jl(t),t.cs(e),this.$o(e),this.pl=null}Do(t,i,s){i.tn!==s.tn&&this.Xo(t)}To(t,i){const s={visible:!0,autoScale:!0,...w(i)},e=new Mi(t,s,this.ss.W().layout,this.ss.W().localization,this.ss.Xi());return e.Bl(this.qt()),e}}function xi(t,i){return!i||"top"===t&&"top"!==i||"normal"===t&&"bottom"===i}function yi(t){return{n_:t.n_,h_:{je:t.r_.externalId},a_:t.r_.cursorStyle}}function Pi(t,i,s,e){for(const n of t){const t=n.Dt(e);if(null!==t&&t.Ye){const e=t.Ye(i,s);if(null!==e)return{l_:n,h_:e}}}return null}function Ci(t){return void 0!==t.$s}function Ti(t,i,s){const e=[t,...t.Vt()],n=function(t,i,s){let e,n;for(const h of t){const t=h.ea?.(i,s)??[];for(const i of t)xi(i.zOrder,e?.zOrder)&&(e=i,n=h)}return e&&n?{r_:e,n_:n}:null}(e,i,s);if("top"===n?.r_.zOrder)return yi(n);for(const h of e){if(n&&n.n_===h&&"bottom"!==n.r_.zOrder&&!n.r_.isBackground)return yi(n);if(Ci(h)){const e=Pi(h.$s(t),i,s,t);if(null!==e)return{n_:h,l_:e.l_,h_:e.h_}}if(n&&n.n_===h&&"bottom"!==n.r_.zOrder&&n.r_.isBackground)return yi(n)}return n?.r_?yi(n):null}class ki{constructor(t,i,s=50){this.Pe=0,this.Ce=1,this.Te=1,this.De=new Map,this.ke=new Map,this.o_=t,this.__=i,this.Re=s}c_(t){const i=t.time,s=this.__.cacheKey(i),e=this.De.get(s);if(void 0!==e)return e.u_;if(this.Pe===this.Re){const t=this.ke.get(this.Te);this.ke.delete(this.Te),this.De.delete(_(t)),this.Te++,this.Pe--}const n=this.o_(t);return this.De.set(s,{u_:n,Ie:this.Ce}),this.ke.set(this.Ce,s),this.Pe++,this.Ce++,n}}class Di{constructor(t,i){o(t<=i,"right should be >= left"),this.d_=t,this.f_=i}Ur(){return this.d_}Si(){return this.f_}p_(){return this.f_-this.d_+1}Dn(t){return this.d_<=t&&t<=this.f_}Hn(t){return this.d_===t.Ur()&&this.f_===t.Si()}}function Ri(t,i){return null===t||null===i?t===i:t.Hn(i)}class Vi{constructor(){this.v_=new Map,this.De=null,this.m_=!1}g_(t){this.m_=t,this.De=null}w_(t,i){this.M_(i),this.De=null;for(let s=i;s<t.length;++s){const i=t[s];let e=this.v_.get(i.timeWeight);void 0===e&&(e=[],this.v_.set(i.timeWeight,e)),e.push({index:s,time:i.time,weight:i.timeWeight,originalTime:i.originalTime})}}b_(t,i,s,e,n){const h=Math.ceil(i/t);return null!==this.De&&this.De.S_===h&&n===this.De.x_&&s===this.De.y_||(this.De={x_:n,y_:s,Va:this.P_(h,s,e),S_:h}),this.De.Va}M_(t){if(0===t)return void this.v_.clear();const i=[];this.v_.forEach((s,e)=>{t<=s[0].index?i.push(e):s.splice(Ct(s,t,i=>i.index<t),1/0)});for(const t of i)this.v_.delete(t)}P_(t,i,s){let e=[];const n=t=>!i||s.has(t.index);for(const i of Array.from(this.v_.keys()).sort((t,i)=>i-t)){if(!this.v_.get(i))continue;const s=e;e=[];const h=s.length;let r=0;const a=_(this.v_.get(i)),l=a.length;let o=1/0,c=-1/0;for(let i=0;i<l;i++){const l=a[i],_=l.index;for(;r<h;){const t=s[r],i=t.index;if(!(i<_&&n(t))){o=i;break}r++,e.push(t),c=i,o=1/0}if(o-_>=t&&_-c>=t&&n(l))e.push(l),c=_;else if(this.m_)return s}for(;r<h;r++)n(s[r])&&e.push(s[r])}return e}}class Ei{constructor(t){this.C_=t}T_(){return null===this.C_?null:new Di(Math.floor(this.C_.Ur()),Math.ceil(this.C_.Si()))}k_(){return this.C_}static D_(){return new Ei(null)}}function Ai(t,i){return t.weight>i.weight?t:i}class Ii{constructor(t,i,s,e){this.bo=0,this.R_=null,this.V_=[],this.gl=null,this.ml=null,this.E_=new Vi,this.A_=new Map,this.I_=Ei.D_(),this.F_=!0,this.B_=new d,this.L_=new d,this.z_=new d,this.O_=null,this.W_=null,this.N_=new Map,this.H_=-1,this.U_=[],this.Cs=i,this.Sl=s,this.q_=i.rightOffset,this.Y_=i.barSpacing,this.ss=t,this.j_(i),this.__=e,this.G_(),this.E_.g_(i.uniformDistribution),this.K_()}W(){return this.Cs}X_(t){f(this.Sl,t),this.Z_(),this.G_()}ah(t,i){f(this.Cs,t),this.Cs.fixLeftEdge&&this.J_(),this.Cs.fixRightEdge&&this.Q_(),void 0!==t.barSpacing&&this.ss.ue(t.barSpacing),void 0!==t.rightOffset&&this.ss.de(t.rightOffset),this.j_(t),void 0===t.minBarSpacing&&void 0===t.maxBarSpacing||this.ss.ue(t.barSpacing??this.Y_),void 0!==t.ignoreWhitespaceIndices&&t.ignoreWhitespaceIndices!==this.Cs.ignoreWhitespaceIndices&&this.K_(),this.Z_(),this.G_(),this.z_.p()}Rs(t){return this.V_[t]?.time??null}es(t){return this.V_[t]??null}tc(t,i){if(this.V_.length<1)return null;if(this.__.key(t)>this.__.key(this.V_[this.V_.length-1].time))return i?this.V_.length-1:null;const s=Ct(this.V_,this.__.key(t),(t,i)=>this.__.key(t.time)<i);return this.__.key(t)<this.__.key(this.V_[s].time)?i?s:null:s}Ki(){return 0===this.bo||0===this.V_.length||null===this.R_}sc(){return this.V_.length>0}Cn(){return this.ec(),this.I_.T_()}nc(){return this.ec(),this.I_.k_()}hc(){const t=this.Cn();if(null===t)return null;const i={from:t.Ur(),to:t.Si()};return this.rc(i)}rc(t){const i=Math.round(t.from),s=Math.round(t.to),e=c(this.ac()),n=c(this.lc());return{from:c(this.es(Math.max(e,i))),to:c(this.es(Math.min(n,s)))}}oc(t){return{from:c(this.tc(t.from,!0)),to:c(this.tc(t.to,!0))}}ts(){return this.bo}Fo(t){if(!isFinite(t)||t<=0)return;if(this.bo===t)return;const i=this.nc(),s=this.bo;if(this.bo=t,this.F_=!0,this.Cs.lockVisibleTimeRangeOnResize&&0!==s){const i=this.Y_*t/s;this.Y_=i}if(this.Cs.fixLeftEdge&&null!==i&&i.Ur()<=0){const i=s-t;this.q_-=Math.round(i/this.Y_)+1,this.F_=!0}this._c(),this.cc()}Yt(t){if(this.Ki()||!v(t))return 0;const i=this.uc()+this.q_-t;return this.bo-(i+.5)*this.Y_-1}dc(t,i){const s=this.uc(),e=void 0===i?0:i.from,n=void 0===i?t.length:i.to;for(let i=e;i<n;i++){const e=t[i].wt,n=s+this.q_-e,h=this.bo-(n+.5)*this.Y_-1;t[i].ct=h}}fc(t,i){const s=Math.ceil(this.vc(t));return i&&this.Cs.ignoreWhitespaceIndices&&!this.mc(s)?this.gc(s):s}de(t){this.F_=!0,this.q_=t,this.cc(),this.ss.wc(),this.ss.oh()}Mc(){return this.Y_}ue(t){const i=this.Y_;if(this.bc(t),void 0!==this.Cs.rightOffsetPixels&&0!==i){const t=this.q_*i/this.Y_;this.q_=t}this.cc(),this.ss.wc(),this.ss.oh()}Sc(){return this.q_}Va(){if(this.Ki())return null;if(null!==this.W_)return this.W_;const t=this.Y_,i=5*(this.ss.W().layout.fontSize+4)/8*(this.Cs.tickMarkMaxCharacterLength||8),s=Math.round(i/t),e=c(this.Cn()),n=Math.max(e.Ur(),e.Ur()-s),h=Math.max(e.Si(),e.Si()-s),r=this.E_.b_(t,i,this.Cs.ignoreWhitespaceIndices,this.N_,this.H_),a=this.ac()+s,l=this.lc()-s,o=this.xc(),_=this.Cs.fixLeftEdge||o,u=this.Cs.fixRightEdge||o;let d=0;for(const t of r){if(!(n<=t.index&&t.index<=h))continue;let s;d<this.U_.length?(s=this.U_[d],s.coord=this.Yt(t.index),s.label=this.yc(t),s.weight=t.weight):(s={needAlignCoordinate:!1,coord:this.Yt(t.index),label:this.yc(t),weight:t.weight},this.U_.push(s)),this.Y_>i/2&&!o?s.needAlignCoordinate=!1:s.needAlignCoordinate=_&&t.index<=a||u&&t.index>=l,d++}return this.U_.length=d,this.W_=this.U_,this.U_}Pc(){let t;this.F_=!0,this.ue(this.Cs.barSpacing),t=void 0!==this.Cs.rightOffsetPixels?this.Cs.rightOffsetPixels/this.Mc():this.Cs.rightOffset,this.de(t)}Cc(t){this.F_=!0,this.R_=t,this.cc(),this.J_()}Tc(t,i){const s=this.vc(t),e=this.Mc(),n=e+i*(e/10);this.ue(n),this.Cs.rightBarStaysOnScroll||this.de(this.Sc()+(s-this.vc(t)))}no(t){this.gl&&this.oo(),null===this.ml&&null===this.O_&&(this.Ki()||(this.ml=t,this.kc()))}ho(t){if(null===this.O_)return;const i=Jt(this.bo-t,0,this.bo),s=Jt(this.bo-c(this.ml),0,this.bo);0!==i&&0!==s&&this.ue(this.O_.Mc*i/s)}ro(){null!==this.ml&&(this.ml=null,this.Dc())}ao(t){null===this.gl&&null===this.O_&&(this.Ki()||(this.gl=t,this.kc()))}lo(t){if(null===this.gl)return;const i=(this.gl-t)/this.Mc();this.q_=c(this.O_).Sc+i,this.F_=!0,this.cc()}oo(){null!==this.gl&&(this.gl=null,this.Dc())}Rc(){this.Vc(this.Cs.rightOffset)}Vc(t,i=400){if(!isFinite(t))throw new RangeError("offset is required and must be finite number");if(!isFinite(i)||i<=0)throw new RangeError("animationDuration (optional) must be finite positive number");const s=this.q_,e=performance.now();this.ss.oe({Ec:t=>(t-e)/i>=1,Ac:n=>{const h=(n-e)/i;return h>=1?t:s+(t-s)*h}})}Tt(t,i){this.F_=!0,this.V_=t,this.E_.w_(t,i),this.cc()}Ic(){return this.B_}Fc(){return this.L_}Bc(){return this.z_}uc(){return this.R_||0}Lc(t,i){const s=t.p_(),e=i&&this.Cs.rightOffsetPixels||0;this.bc((this.bo-e)/s),this.q_=t.Si()-this.uc(),i&&(this.q_=e?e/this.Mc():this.Cs.rightOffset),this.cc(),this.F_=!0,this.ss.wc(),this.ss.oh()}zc(){const t=this.ac(),i=this.lc();null!==t&&null!==i&&this.Lc(new Di(t,i),!0)}Oc(t){const i=new Di(t.from,t.to);this.Lc(i)}ns(t){return void 0!==this.Sl.timeFormatter?this.Sl.timeFormatter(t.originalTime):this.__.formatHorzItem(t.time)}K_(){if(!this.Cs.ignoreWhitespaceIndices)return;this.N_.clear();const t=this.ss.Gs();for(const i of t)for(const t of i.ma())this.N_.set(t,!0);this.H_++}xc(){const t=this.ss.W().handleScroll,i=this.ss.W().handleScale;return!(t.horzTouchDrag||t.mouseWheel||t.pressedMouseMove||t.vertTouchDrag||i.axisDoubleClickReset.time||i.axisPressedMouseMove.time||i.mouseWheel||i.pinch)}ac(){return 0===this.V_.length?null:0}lc(){return 0===this.V_.length?null:this.V_.length-1}Wc(t){return(this.bo-1-t)/this.Y_}vc(t){const i=this.Wc(t),s=this.uc()+this.q_-i;return Math.round(1e6*s)/1e6}bc(t){const i=this.Y_;this.Y_=t,this._c(),i!==this.Y_&&(this.F_=!0,this.$c())}ec(){if(!this.F_)return;if(this.F_=!1,this.Ki())return void this.Nc(Ei.D_());const t=this.uc(),i=this.bo/this.Y_,s=this.q_+t,e=new Di(s-i+1,s);this.Nc(new Ei(e))}_c(){const t=Jt(this.Y_,this.Hc(),this.Uc());this.Y_!==t&&(this.Y_=t,this.F_=!0)}Uc(){return this.Cs.maxBarSpacing>0?this.Cs.maxBarSpacing:.5*this.bo}Hc(){return this.Cs.fixLeftEdge&&this.Cs.fixRightEdge&&0!==this.V_.length?this.bo/this.V_.length:this.Cs.minBarSpacing}cc(){const t=this.qc();null!==t&&this.q_<t&&(this.q_=t,this.F_=!0);const i=this.Yc();this.q_>i&&(this.q_=i,this.F_=!0)}qc(){const t=this.ac(),i=this.R_;if(null===t||null===i)return null;return t-i-1+(this.Cs.fixLeftEdge?this.bo/this.Y_:Math.min(2,this.V_.length))}Yc(){return this.Cs.fixRightEdge?0:this.bo/this.Y_-Math.min(2,this.V_.length)}kc(){this.O_={Mc:this.Mc(),Sc:this.Sc()}}Dc(){this.O_=null}yc(t){let i=this.A_.get(t.weight);return void 0===i&&(i=new ki(t=>this.jc(t),this.__),this.A_.set(t.weight,i)),i.c_(t)}jc(t){return this.__.formatTickmark(t,this.Sl)}Nc(t){const i=this.I_;this.I_=t,Ri(i.T_(),this.I_.T_())||this.B_.p(),Ri(i.k_(),this.I_.k_())||this.L_.p(),this.$c()}$c(){this.W_=null}Z_(){this.$c(),this.A_.clear()}G_(){this.__.updateFormatter(this.Sl)}J_(){if(!this.Cs.fixLeftEdge)return;const t=this.ac();if(null===t)return;const i=this.Cn();if(null===i)return;const s=i.Ur()-t;if(s<0){const t=this.q_-s-1;this.de(t)}this._c()}Q_(){this.cc(),this._c()}mc(t){return!this.Cs.ignoreWhitespaceIndices||(this.N_.get(t)||!1)}gc(t){const i=function*(t){const i=Math.round(t),s=i<t;let e=1;for(;;)s?(yield i+e,yield i-e):(yield i-e,yield i+e),e++}(t),s=this.lc();for(;s;){const t=i.next().value;if(this.N_.get(t))return t;if(t<0||t>s)break}return t}j_(t){if(void 0!==t.rightOffsetPixels){const i=t.rightOffsetPixels/(t.barSpacing||this.Y_);this.ss.de(i)}}}var Fi,Bi,Li,zi,Oi;!function(t){t[t.OnTouchEnd=0]="OnTouchEnd",t[t.OnNextTap=1]="OnNextTap"}(Fi||(Fi={}));class Wi{constructor(t,i,s){this.Gc=[],this.Kc=[],this.bo=0,this.Xc=null,this.Zc=new d,this.Jc=new d,this.Qc=null,this.tu=t,this.Cs=i,this.__=s,this.xl=new T(this.Cs.layout.colorParsers),this.iu=new y(this),this.ur=new Ii(this,i.timeScale,this.Cs.localization,s),this.Pt=new K(this,i.crosshair),this.su=new Zt(i.crosshair),i.addDefaultPane&&(this.eu(0),this.Gc[0].Io(2)),this.nu=this.hu(0),this.ru=this.hu(1)}Ir(){this.au(Z.ge())}oh(){this.au(Z.me())}Zr(){this.au(new Z(1))}Fr(t){const i=this.lu(t);this.au(i)}ou(){return this.Xc}_u(t){if(this.Xc?.n_===t?.n_&&this.Xc?.h_?.je===t?.h_?.je)return;const i=this.Xc;this.Xc=t,null!==i&&this.Fr(i.n_),null!==t&&t.n_!==i?.n_&&this.Fr(t.n_)}W(){return this.Cs}ah(t){f(this.Cs,t),this.Gc.forEach(i=>i.Ro(t)),void 0!==t.timeScale&&this.ur.ah(t.timeScale),void 0!==t.localization&&this.ur.X_(t.localization),(t.leftPriceScale||t.rightPriceScale)&&this.Zc.p(),this.nu=this.hu(0),this.ru=this.hu(1),this.Ir()}cu(t,i,s=0){const e=this.Gc[s];if(void 0===e)return;if("left"===t)return f(this.Cs,{leftPriceScale:i}),e.Ro({leftPriceScale:i}),this.Zc.p(),void this.Ir();if("right"===t)return f(this.Cs,{rightPriceScale:i}),e.Ro({rightPriceScale:i}),this.Zc.p(),void this.Ir();const n=this.uu(t,s);null!==n&&(n.$t.ah(i),this.Zc.p())}uu(t,i){const s=this.Gc[i];if(void 0===s)return null;const e=s.Vo(t);return null!==e?{Us:s,$t:e}:null}Ft(){return this.ur}qs(){return this.Gc}du(){return this.Pt}fu(){return this.Jc}pu(t,i){t.Bl(i),this.wc()}Fo(t){this.bo=t,this.ur.Fo(this.bo),this.Gc.forEach(i=>i.Fo(t)),this.wc()}vu(t){1!==this.Gc.length&&(o(t>=0&&t<this.Gc.length,"Invalid pane index"),this.Gc.splice(t,1),this.Ir())}mu(t,i){if(this.Gc.length<2)return;o(t>=0&&t<this.Gc.length,"Invalid pane index");const s=this.Gc[t],e=this.Gc.reduce((t,i)=>t+i.Ao(),0),n=this.Gc.reduce((t,i)=>t+i.qt(),0),h=n-30*(this.Gc.length-1);i=Math.min(h,Math.max(30,i));const r=e/n,a=s.qt();s.Io(i*r);let l=i-a,_=this.Gc.length-1;for(const t of this.Gc)if(t!==s){const i=Math.min(h,Math.max(30,t.qt()-l/_));l-=t.qt()-i,_-=1;const s=i*r;t.Io(s)}this.Ir()}gu(t,i){o(t>=0&&t<this.Gc.length&&i>=0&&i<this.Gc.length,"Invalid pane index");const s=this.Gc[t],e=this.Gc[i];this.Gc[t]=e,this.Gc[i]=s,this.Ir()}wu(t,i){if(o(t>=0&&t<this.Gc.length&&i>=0&&i<this.Gc.length,"Invalid pane index"),t===i)return;const[s]=this.Gc.splice(t,1);this.Gc.splice(i,0,s),this.Ir()}Uo(t,i,s){t.Uo(i,s)}qo(t,i,s){t.qo(i,s),this.Br(),this.au(this.Mu(t,2))}Yo(t,i){t.Yo(i),this.au(this.Mu(t,2))}jo(t,i,s){i.Dl()||t.jo(i,s)}Go(t,i,s){i.Dl()||(t.Go(i,s),this.Br(),this.au(this.Mu(t,2)))}Ko(t,i){i.Dl()||(t.Ko(i),this.au(this.Mu(t,2)))}Zo(t,i){t.Zo(i),this.au(this.Mu(t,2))}bu(t){this.ur.no(t)}Su(t,i){const s=this.Ft();if(s.Ki()||0===i)return;const e=s.ts();t=Math.max(1,Math.min(t,e)),s.Tc(t,i),this.wc()}xu(t){this.yu(0),this.Pu(t),this.Cu()}Tu(t){this.ur.ho(t),this.wc()}ku(){this.ur.ro(),this.oh()}yu(t){this.ur.ao(t)}Pu(t){this.ur.lo(t),this.wc()}Cu(){this.ur.oo(),this.oh()}Gs(){return this.Kc}Du(t,i,s,e,n){this.Pt.Es(t,i);let h=NaN,r=this.ur.fc(t,!0);const a=this.ur.Cn();null!==a&&(r=Math.min(Math.max(a.Ur(),r),a.Si()));const l=e.ks(),o=l.Lt();if(null!==o&&(h=l.Ds(i,o)),h=this.su.Ma(h,r,e),this.Pt.Bs(r,h,e),this.Zr(),!n){const n=Ti(e,t,i);this._u(n&&{n_:n.n_,h_:n.h_,a_:n.a_||null}),this.Jc.p(this.Pt.It(),{x:t,y:i},s)}}Ru(t,i,s){const e=s.ks(),n=e.Lt(),h=e.Wt(t,c(n)),r=this.ur.tc(i,!0),a=this.ur.Yt(c(r));this.Du(a,h,null,s,!0)}Vu(t){this.du().zs(),this.Zr(),t||this.Jc.p(null,null,null)}Br(){const t=this.Pt.Us();if(null!==t){const i=this.Pt.Is(),s=this.Pt.Fs();this.Du(i,s,null,t)}this.Pt.Ws()}Eu(t,i,s){const e=this.ur.Rs(0);void 0!==i&&void 0!==s&&this.ur.Tt(i,s);const n=this.ur.Rs(0),h=this.ur.uc(),r=this.ur.Cn();if(null!==r&&null!==e&&null!==n){const i=r.Dn(h),a=this.__.key(e)>this.__.key(n),l=null!==t&&t>h&&!a,o=this.ur.W().allowShiftVisibleRangeOnWhitespaceReplacement,_=i&&(!(void 0===s)||o)&&this.ur.W().shiftVisibleRangeOnNewBar;if(l&&!_){const i=t-h;this.ur.de(this.ur.Sc()-i)}}this.ur.Cc(t)}zr(t){null!==t&&t.Qo()}$e(t){if(function(t){return t instanceof Si}(t))return t;const i=this.Gc.find(i=>i.Vt().includes(t));return void 0===i?null:i}wc(){this.Gc.forEach(t=>t.Qo()),this.Br()}m(){this.Gc.forEach(t=>t.m()),this.Gc.length=0,this.Cs.localization.priceFormatter=void 0,this.Cs.localization.percentageFormatter=void 0,this.Cs.localization.timeFormatter=void 0}Au(){return this.iu}qe(){return this.iu.W()}Eo(){return this.Zc}Iu(t,i){const s=this.eu(i);this.Fu(t,s),this.Kc.push(t),1===this.Kc.length?this.Ir():this.oh()}Bu(t){const i=this.$e(t),s=this.Kc.indexOf(t);o(-1!==s,"Series not found");const e=c(i);this.Kc.splice(s,1),e.io(t),t.m&&t.m(),this.ur.K_();const n=this.Gc.length;this.Lu(e),this.Gc.length<n&&this.Ir()}Ar(t,i){const s=c(this.$e(t));s.io(t,!0),s.Jl(t,i,!0)}zc(){const t=Z.me();t.he(),this.au(t)}zu(t){const i=Z.me();i.le(t),this.au(i)}ce(){const t=Z.me();t.ce(),this.au(t)}ue(t){const i=Z.me();i.ue(t),this.au(i)}de(t){const i=Z.me();i.de(t),this.au(i)}oe(t){const i=Z.me();i.oe(t),this.au(i)}re(){const t=Z.me();t.re(),this.au(t)}Ou(){return this.Cs.rightPriceScale.visible?"right":"left"}Wu(t,i){o(i>=0,"Index should be greater or equal to 0");if(i===this.$u(t))return;const s=c(this.$e(t));s.io(t);const e=this.eu(i);this.Fu(t,e),0===s.ba().length&&this.Lu(s),this.Ir()}Nu(){return this.ru}q(){return this.nu}Ut(t){const i=this.ru,s=this.nu;if(i===s)return i;if(t=Math.max(0,Math.min(100,Math.round(100*t))),null===this.Qc||this.Qc.wh!==s||this.Qc.Mh!==i)this.Qc={wh:s,Mh:i,Hu:new Map};else{const i=this.Qc.Hu.get(t);if(void 0!==i)return i}const e=this.xl.it(s,i,t/100);return this.Qc.Hu.set(t,e),e}Uu(t){return this.Gc.indexOf(t)}Xi(){return this.xl}qu(){return this.Yu()}Yu(t){const i=new Si(this.ur,this);this.Gc.push(i);const s=t??this.Gc.length-1,e=Z.ge();return e.te(s,{ie:0,se:!0}),this.au(e),i}eu(t){return o(t>=0,"Index should be greater or equal to 0"),(t=Math.min(this.Gc.length,t))<this.Gc.length?this.Gc[t]:this.Yu(t)}$u(t){return this.Gc.findIndex(i=>i.Oo().includes(t))}Mu(t,i){const s=new Z(i);if(null!==t){const e=this.Gc.indexOf(t);s.te(e,{ie:i})}return s}lu(t,i){return void 0===i&&(i=2),this.Mu(this.$e(t),i)}au(t){this.tu&&this.tu(t),this.Gc.forEach(t=>t.s_()._h().Tt())}Fu(t,i){const s=t.W().priceScaleId,e=void 0!==s?s:this.Ou();i.Jl(t,e),X(e)||t.ah(t.W())}hu(t){const i=this.Cs.layout;return"gradient"===i.background.type?0===t?i.background.topColor:i.background.bottomColor:i.background.color}Lu(t){!t.zo()&&0===t.ba().length&&this.Gc.length>1&&this.Gc.splice(this.Uu(t),1)}}function $i(t){if(t>=1)return 0;let i=0;for(;i<8;i++){const s=Math.round(t);if(Math.abs(s-t)<1e-8)return i;t*=10}return i}function Ni(t){return!p(t)&&!m(t)}function Hi(t){return p(t)}!function(t){t[t.Disabled=0]="Disabled",t[t.Continuous=1]="Continuous",t[t.OnDataUpdate=2]="OnDataUpdate"}(Bi||(Bi={})),function(t){t[t.LastBar=0]="LastBar",t[t.LastVisible=1]="LastVisible"}(Li||(Li={})),function(t){t.Solid="solid",t.VerticalGradient="gradient"}(zi||(zi={})),function(t){t[t.Year=0]="Year",t[t.Month=1]="Month",t[t.DayOfMonth=2]="DayOfMonth",t[t.Time=3]="Time",t[t.TimeWithSeconds=4]="TimeWithSeconds"}(Oi||(Oi={}));const Ui=t=>t.getUTCFullYear();function qi(t,i,s){return i.replace(/yyyy/g,(t=>tt(Ui(t),4))(t)).replace(/yy/g,(t=>tt(Ui(t)%100,2))(t)).replace(/MMMM/g,((t,i)=>new Date(t.getUTCFullYear(),t.getUTCMonth(),1).toLocaleString(i,{month:"long"}))(t,s)).replace(/MMM/g,((t,i)=>new Date(t.getUTCFullYear(),t.getUTCMonth(),1).toLocaleString(i,{month:"short"}))(t,s)).replace(/MM/g,(t=>tt((t=>t.getUTCMonth()+1)(t),2))(t)).replace(/dd/g,(t=>tt((t=>t.getUTCDate())(t),2))(t))}class Yi{constructor(t="yyyy-MM-dd",i="default"){this.ju=t,this.Gu=i}c_(t){return qi(t,this.ju,this.Gu)}}class ji{constructor(t){this.Ku=t||"%h:%m:%s"}c_(t){return this.Ku.replace("%h",tt(t.getUTCHours(),2)).replace("%m",tt(t.getUTCMinutes(),2)).replace("%s",tt(t.getUTCSeconds(),2))}}const Gi={Xu:"yyyy-MM-dd",Zu:"%h:%m:%s",Ju:" ",Qu:"default"};class Ki{constructor(t={}){const i={...Gi,...t};this.td=new Yi(i.Xu,i.Qu),this.sd=new ji(i.Zu),this.ed=i.Ju}c_(t){return`${this.td.c_(t)}${this.ed}${this.sd.c_(t)}`}}function Xi(t){return 60*t*60*1e3}function Zi(t){return 60*t*1e3}const Ji=[{nd:(Qi=1,1e3*Qi),hd:10},{nd:Zi(1),hd:20},{nd:Zi(5),hd:21},{nd:Zi(30),hd:22},{nd:Xi(1),hd:30},{nd:Xi(3),hd:31},{nd:Xi(6),hd:32},{nd:Xi(12),hd:33}];var Qi;function ts(t,i){if(t.getUTCFullYear()!==i.getUTCFullYear())return 70;if(t.getUTCMonth()!==i.getUTCMonth())return 60;if(t.getUTCDate()!==i.getUTCDate())return 50;for(let s=Ji.length-1;s>=0;--s)if(Math.floor(i.getTime()/Ji[s].nd)!==Math.floor(t.getTime()/Ji[s].nd))return Ji[s].hd;return 0}function is(t){return t}function ss(t){let i=t;if(m(t)&&(i=ns(t)),!Ni(i))throw new Error("time must be of type BusinessDay");const s=new Date(Date.UTC(i.year,i.month-1,i.day,0,0,0,0));return{rd:Math.round(s.getTime()/1e3),ad:i}}function es(t){if(!Hi(t))throw new Error("time must be of type isUTCTimestamp");return{rd:t}}function ns(t){const i=new Date(t);if(isNaN(i.getTime()))throw new Error(`Invalid date string=${t}, expected format=yyyy-mm-dd`);return{day:i.getUTCDate(),month:i.getUTCMonth()+1,year:i.getUTCFullYear()}}function hs(t){m(t.time)&&(t.time=ns(t.time))}class rs{options(){return this.Cs}setOptions(t){this.Cs=t,this.updateFormatter(t.localization)}preprocessData(t){Array.isArray(t)?function(t){t.forEach(hs)}(t):hs(t)}createConverterToInternalObj(t){return c(function(t){return 0===t.length?null:Ni(t[0].time)||m(t[0].time)?ss:es}(t))}key(t){return"object"==typeof t&&"rd"in t?t.rd:this.key(this.convertHorzItemToInternal(t))}cacheKey(t){const i=t;return void 0===i.ad?new Date(1e3*i.rd).getTime():new Date(Date.UTC(i.ad.year,i.ad.month-1,i.ad.day)).getTime()}convertHorzItemToInternal(t){return Hi(i=t)?es(i):Ni(i)?ss(i):ss(ns(i));var i}updateFormatter(t){if(!this.Cs)return;const i=t.dateFormat;this.Cs.timeScale.timeVisible?this.ld=new Ki({Xu:i,Zu:this.Cs.timeScale.secondsVisible?"%h:%m:%s":"%h:%m",Ju:" ",Qu:t.locale}):this.ld=new Yi(i,t.locale)}formatHorzItem(t){const i=t;return this.ld.c_(new Date(1e3*i.rd))}formatTickmark(t,i){const s=function(t,i,s){switch(t){case 0:case 10:return i?s?4:3:2;case 20:case 21:case 22:case 30:case 31:case 32:case 33:return i?3:2;case 50:return 2;case 60:return 1;case 70:return 0}}(t.weight,this.Cs.timeScale.timeVisible,this.Cs.timeScale.secondsVisible),e=this.Cs.timeScale;if(void 0!==e.tickMarkFormatter){const n=e.tickMarkFormatter(t.originalTime,s,i.locale);if(null!==n)return n}return function(t,i,s){const e={};switch(i){case 0:e.year="numeric";break;case 1:e.month="short";break;case 2:e.day="numeric";break;case 3:e.hour12=!1,e.hour="2-digit",e.minute="2-digit";break;case 4:e.hour12=!1,e.hour="2-digit",e.minute="2-digit",e.second="2-digit"}const n=void 0===t.ad?new Date(1e3*t.rd):new Date(Date.UTC(t.ad.year,t.ad.month-1,t.ad.day));return new Date(n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate(),n.getUTCHours(),n.getUTCMinutes(),n.getUTCSeconds(),n.getUTCMilliseconds()).toLocaleString(s,e)}(t.time,s,i.locale)}maxTickMarkWeight(t){let i=t.reduce(Ai,t[0]).weight;return i>30&&i<50&&(i=30),i}fillWeightsForPoints(t,i){!function(t,i=0){if(0===t.length)return;let s=0===i?null:t[i-1].time.rd,e=null!==s?new Date(1e3*s):null,n=0;for(let h=i;h<t.length;++h){const i=t[h],r=new Date(1e3*is(i.time).rd);null!==e&&(i.timeWeight=ts(r,e)),n+=is(i.time).rd-(s||is(i.time).rd),s=is(i.time).rd,e=r}if(0===i&&t.length>1){const i=Math.ceil(n/(t.length-1)),s=new Date(1e3*(t[0].time.rd-i));t[0].timeWeight=ts(new Date(1e3*t[0].time.rd),s)}}(t,i)}static od(t){return f({localization:{dateFormat:"dd MMM 'yy"}},t??{})}}const as="undefined"!=typeof window;function ls(){return!!as&&window.navigator.userAgent.toLowerCase().indexOf("firefox")>-1}function os(){return!!as&&/iPhone|iPad|iPod/.test(window.navigator.platform)}function _s(t){return t+t%2}function cs(t){as&&void 0!==window.chrome&&t.addEventListener("mousedown",t=>{if(1===t.button)return t.preventDefault(),!1})}class us{constructor(t,i,s){this._d=0,this.ud=null,this.dd={ct:Number.NEGATIVE_INFINITY,ut:Number.POSITIVE_INFINITY},this.fd=0,this.pd=null,this.vd={ct:Number.NEGATIVE_INFINITY,ut:Number.POSITIVE_INFINITY},this.md=null,this.gd=!1,this.wd=null,this.Md=null,this.bd=!1,this.Sd=!1,this.xd=!1,this.yd=null,this.Pd=null,this.Cd=null,this.Td=null,this.kd=null,this.Dd=null,this.Rd=null,this.Vd=0,this.Ed=!1,this.Ad=!1,this.Id=!1,this.Fd=0,this.Bd=null,this.Ld=!os(),this.zd=t=>{this.Od(t)},this.Wd=t=>{if(this.$d(t)){const i=this.Nd(t);if(++this.fd,this.pd&&this.fd>1){const{Hd:s}=this.Ud(ps(t),this.vd);s<30&&!this.xd&&this.qd(i,this.jd.Yd),this.Gd()}}else{const i=this.Nd(t);if(++this._d,this.ud&&this._d>1){const{Hd:s}=this.Ud(ps(t),this.dd);s<5&&!this.Sd&&this.Kd(i,this.jd.Xd),this.Zd()}}},this.Jd=t,this.jd=i,this.Cs=s,this.Qd()}m(){null!==this.yd&&(this.yd(),this.yd=null),null!==this.Pd&&(this.Pd(),this.Pd=null),null!==this.Td&&(this.Td(),this.Td=null),null!==this.kd&&(this.kd(),this.kd=null),null!==this.Dd&&(this.Dd(),this.Dd=null),null!==this.Cd&&(this.Cd(),this.Cd=null),this.tf(),this.Zd()}if(t){this.Td&&this.Td();const i=this.sf.bind(this);if(this.Td=()=>{this.Jd.removeEventListener("mousemove",i)},this.Jd.addEventListener("mousemove",i),this.$d(t))return;const s=this.Nd(t);this.Kd(s,this.jd.ef),this.Ld=!0}Zd(){null!==this.ud&&clearTimeout(this.ud),this._d=0,this.ud=null,this.dd={ct:Number.NEGATIVE_INFINITY,ut:Number.POSITIVE_INFINITY}}Gd(){null!==this.pd&&clearTimeout(this.pd),this.fd=0,this.pd=null,this.vd={ct:Number.NEGATIVE_INFINITY,ut:Number.POSITIVE_INFINITY}}sf(t){if(this.Id||null!==this.Md)return;if(this.$d(t))return;const i=this.Nd(t);this.Kd(i,this.jd.nf),this.Ld=!0}hf(t){const i=ms(t.changedTouches,c(this.Bd));if(null===i)return;if(this.Fd=vs(t),null!==this.Rd)return;if(this.Ad)return;this.Ed=!0;const s=this.Ud(ps(i),c(this.Md)),{rf:e,af:n,Hd:h}=s;if(this.bd||!(h<5)){if(!this.bd){const t=.5*e,i=n>=t&&!this.Cs.lf(),s=t>n&&!this.Cs._f();i||s||(this.Ad=!0),this.bd=!0,this.xd=!0,this.tf(),this.Gd()}if(!this.Ad){const s=this.Nd(t,i);this.qd(s,this.jd.cf),fs(t)}}}uf(t){if(0!==t.button)return;const i=this.Ud(ps(t),c(this.wd)),{Hd:s}=i;if(s>=5&&(this.Sd=!0,this.Zd()),this.Sd){const i=this.Nd(t);this.Kd(i,this.jd.df)}}Ud(t,i){const s=Math.abs(i.ct-t.ct),e=Math.abs(i.ut-t.ut);return{rf:s,af:e,Hd:s+e}}ff(t){let i=ms(t.changedTouches,c(this.Bd));if(null===i&&0===t.touches.length&&(i=t.changedTouches[0]),null===i)return;this.Bd=null,this.Fd=vs(t),this.tf(),this.Md=null,this.Dd&&(this.Dd(),this.Dd=null);const s=this.Nd(t,i);if(this.qd(s,this.jd.pf),++this.fd,this.pd&&this.fd>1){const{Hd:t}=this.Ud(ps(i),this.vd);t<30&&!this.xd&&this.qd(s,this.jd.Yd),this.Gd()}else this.xd||(this.qd(s,this.jd.vf),this.jd.vf&&fs(t));0===this.fd&&fs(t),0===t.touches.length&&this.gd&&(this.gd=!1,fs(t))}Od(t){if(0!==t.button)return;const i=this.Nd(t);if(this.wd=null,this.Id=!1,this.kd&&(this.kd(),this.kd=null),ls()){this.Jd.ownerDocument.documentElement.removeEventListener("mouseleave",this.zd)}if(!this.$d(t))if(this.Kd(i,this.jd.mf),++this._d,this.ud&&this._d>1){const{Hd:s}=this.Ud(ps(t),this.dd);s<5&&!this.Sd&&this.Kd(i,this.jd.Xd),this.Zd()}else this.Sd||this.Kd(i,this.jd.gf)}tf(){null!==this.md&&(clearTimeout(this.md),this.md=null)}wf(t){if(null!==this.Bd)return;const i=t.changedTouches[0];this.Bd=i.identifier,this.Fd=vs(t);const s=this.Jd.ownerDocument.documentElement;this.xd=!1,this.bd=!1,this.Ad=!1,this.Md=ps(i),this.Dd&&(this.Dd(),this.Dd=null);{const i=this.hf.bind(this),e=this.ff.bind(this);this.Dd=()=>{s.removeEventListener("touchmove",i),s.removeEventListener("touchend",e)},s.addEventListener("touchmove",i,{passive:!1}),s.addEventListener("touchend",e,{passive:!1}),this.tf(),this.md=setTimeout(this.Mf.bind(this,t),240)}const e=this.Nd(t,i);this.qd(e,this.jd.bf),this.pd||(this.fd=0,this.pd=setTimeout(this.Gd.bind(this),500),this.vd=ps(i))}Sf(t){if(0!==t.button)return;const i=this.Jd.ownerDocument.documentElement;ls()&&i.addEventListener("mouseleave",this.zd),this.Sd=!1,this.wd=ps(t),this.kd&&(this.kd(),this.kd=null);{const t=this.uf.bind(this),s=this.Od.bind(this);this.kd=()=>{i.removeEventListener("mousemove",t),i.removeEventListener("mouseup",s)},i.addEventListener("mousemove",t),i.addEventListener("mouseup",s)}if(this.Id=!0,this.$d(t))return;const s=this.Nd(t);this.Kd(s,this.jd.xf),this.ud||(this._d=0,this.ud=setTimeout(this.Zd.bind(this),500),this.dd=ps(t))}Qd(){this.Jd.addEventListener("mouseenter",this.if.bind(this)),this.Jd.addEventListener("touchcancel",this.tf.bind(this));{const t=this.Jd.ownerDocument,i=t=>{this.jd.yf&&(t.composed&&this.Jd.contains(t.composedPath()[0])||t.target&&this.Jd.contains(t.target)||this.jd.yf())};this.Pd=()=>{t.removeEventListener("touchstart",i)},this.yd=()=>{t.removeEventListener("mousedown",i)},t.addEventListener("mousedown",i),t.addEventListener("touchstart",i,{passive:!0})}os()&&(this.Cd=()=>{this.Jd.removeEventListener("dblclick",this.Wd)},this.Jd.addEventListener("dblclick",this.Wd)),this.Jd.addEventListener("mouseleave",this.Pf.bind(this)),this.Jd.addEventListener("touchstart",this.wf.bind(this),{passive:!0}),cs(this.Jd),this.Jd.addEventListener("mousedown",this.Sf.bind(this)),this.Cf(),this.Jd.addEventListener("touchmove",()=>{},{passive:!1})}Cf(){void 0===this.jd.Tf&&void 0===this.jd.kf&&void 0===this.jd.Df||(this.Jd.addEventListener("touchstart",t=>this.Rf(t.touches),{passive:!0}),this.Jd.addEventListener("touchmove",t=>{if(2===t.touches.length&&null!==this.Rd&&void 0!==this.jd.kf){const i=ds(t.touches[0],t.touches[1])/this.Vd;this.jd.kf(this.Rd,i),fs(t)}},{passive:!1}),this.Jd.addEventListener("touchend",t=>{this.Rf(t.touches)}))}Rf(t){1===t.length&&(this.Ed=!1),2!==t.length||this.Ed||this.gd?this.Vf():this.Ef(t)}Ef(t){const i=this.Jd.getBoundingClientRect()||{left:0,top:0};this.Rd={ct:(t[0].clientX-i.left+(t[1].clientX-i.left))/2,ut:(t[0].clientY-i.top+(t[1].clientY-i.top))/2},this.Vd=ds(t[0],t[1]),void 0!==this.jd.Tf&&this.jd.Tf(),this.tf()}Vf(){null!==this.Rd&&(this.Rd=null,void 0!==this.jd.Df&&this.jd.Df())}Pf(t){if(this.Td&&this.Td(),this.$d(t))return;if(!this.Ld)return;const i=this.Nd(t);this.Kd(i,this.jd.Af),this.Ld=!os()}Mf(t){const i=ms(t.touches,c(this.Bd));if(null===i)return;const s=this.Nd(t,i);this.qd(s,this.jd.If),this.xd=!0,this.gd=!0}$d(t){return t.sourceCapabilities&&void 0!==t.sourceCapabilities.firesTouchEvents?t.sourceCapabilities.firesTouchEvents:vs(t)<this.Fd+500}qd(t,i){i&&i.call(this.jd,t)}Kd(t,i){i&&i.call(this.jd,t)}Nd(t,i){const s=i||t,e=this.Jd.getBoundingClientRect()||{left:0,top:0};return{clientX:s.clientX,clientY:s.clientY,pageX:s.pageX,pageY:s.pageY,screenX:s.screenX,screenY:s.screenY,localX:s.clientX-e.left,localY:s.clientY-e.top,ctrlKey:t.ctrlKey,altKey:t.altKey,shiftKey:t.shiftKey,metaKey:t.metaKey,Ff:!t.type.startsWith("mouse")&&"contextmenu"!==t.type&&"click"!==t.type,Bf:t.type,Lf:s.target,l_:t.view,zf:()=>{"touchstart"!==t.type&&fs(t)}}}}function ds(t,i){const s=t.clientX-i.clientX,e=t.clientY-i.clientY;return Math.sqrt(s*s+e*e)}function fs(t){t.cancelable&&t.preventDefault()}function ps(t){return{ct:t.pageX,ut:t.pageY}}function vs(t){return t.timeStamp||performance.now()}function ms(t,i){for(let s=0;s<t.length;++s)if(t[s].identifier===i)return t[s];return null}class gs{constructor(t,i,s){this.Of=null,this.Wf=null,this.$f=!0,this.Nf=null,this.Hf=t,this.Uf=t.qf()[i],this.Yf=t.qf()[s],this.jf=document.createElement("tr"),this.jf.style.height="1px",this.Gf=document.createElement("td"),this.Gf.style.position="relative",this.Gf.style.padding="0",this.Gf.style.margin="0",this.Gf.setAttribute("colspan","3"),this.Kf(),this.jf.appendChild(this.Gf),this.$f=this.Hf.W().layout.panes.enableResize,this.$f?this.Xf():(this.Of=null,this.Wf=null)}m(){null!==this.Wf&&this.Wf.m()}Zf(){return this.jf}Jf(){return t({width:this.Uf.Jf().width,height:1})}Qf(){return t({width:this.Uf.Qf().width,height:1*window.devicePixelRatio})}tp(t,i,s){const e=this.Qf();t.fillStyle=this.Hf.W().layout.panes.separatorColor,t.fillRect(i,s,e.width,e.height)}Tt(){this.Kf(),this.Hf.W().layout.panes.enableResize!==this.$f&&(this.$f=this.Hf.W().layout.panes.enableResize,this.$f?this.Xf():(null!==this.Of&&(this.Gf.removeChild(this.Of.ip),this.Gf.removeChild(this.Of.sp),this.Of=null),null!==this.Wf&&(this.Wf.m(),this.Wf=null)))}Xf(){const t=document.createElement("div"),i=t.style;i.position="fixed",i.display="none",i.zIndex="49",i.top="0",i.left="0",i.width="100%",i.height="100%",i.cursor="row-resize",this.Gf.appendChild(t);const s=document.createElement("div"),e=s.style;e.position="absolute",e.zIndex="50",e.top="-4px",e.height="9px",e.width="100%",e.backgroundColor="",e.cursor="row-resize",this.Gf.appendChild(s);const n={ef:this.ep.bind(this),Af:this.np.bind(this),xf:this.hp.bind(this),bf:this.hp.bind(this),df:this.rp.bind(this),cf:this.rp.bind(this),mf:this.ap.bind(this),pf:this.ap.bind(this)};this.Wf=new us(s,n,{lf:()=>!1,_f:()=>!0}),this.Of={sp:s,ip:t}}Kf(){this.Gf.style.background=this.Hf.W().layout.panes.separatorColor}ep(t){null!==this.Of&&(this.Of.sp.style.backgroundColor=this.Hf.W().layout.panes.separatorHoverColor)}np(t){null!==this.Of&&null===this.Nf&&(this.Of.sp.style.backgroundColor="")}hp(t){if(null===this.Of)return;const i=this.Uf.lp().Ao()+this.Yf.lp().Ao(),s=i/(this.Uf.Jf().height+this.Yf.Jf().height),e=30*s;i<=2*e||(this.Nf={op:t.pageY,_p:this.Uf.lp().Ao(),cp:i-e,up:i,dp:s,fp:e},this.Of.ip.style.display="block")}rp(t){const i=this.Nf;if(null===i)return;const s=(t.pageY-i.op)*i.dp,e=Jt(i._p+s,i.fp,i.cp);this.Uf.lp().Io(e),this.Yf.lp().Io(i.up-e),this.Hf.ti().Ir()}ap(t){null!==this.Nf&&null!==this.Of&&(this.Nf=null,this.Of.ip.style.display="none")}}function ws(t,i){return t.pp-i.pp}function Ms(t,i,s){const e=(t.pp-i.pp)/(t.wt-i.wt);return Math.sign(e)*Math.min(Math.abs(e),s)}class bs{constructor(t,i,s,e){this.vp=null,this.mp=null,this.gp=null,this.wp=null,this.Mp=null,this.bp=0,this.Sp=0,this.xp=t,this.yp=i,this.Pp=s,this.we=e}Cp(t,i){if(null!==this.vp){if(this.vp.wt===i)return void(this.vp.pp=t);if(Math.abs(this.vp.pp-t)<this.we)return}this.wp=this.gp,this.gp=this.mp,this.mp=this.vp,this.vp={wt:i,pp:t}}ln(t,i){if(null===this.vp||null===this.mp)return;if(i-this.vp.wt>50)return;let s=0;const e=Ms(this.vp,this.mp,this.yp),n=ws(this.vp,this.mp),h=[e],r=[n];if(s+=n,null!==this.gp){const t=Ms(this.mp,this.gp,this.yp);if(Math.sign(t)===Math.sign(e)){const i=ws(this.mp,this.gp);if(h.push(t),r.push(i),s+=i,null!==this.wp){const t=Ms(this.gp,this.wp,this.yp);if(Math.sign(t)===Math.sign(e)){const i=ws(this.gp,this.wp);h.push(t),r.push(i),s+=i}}}}let a=0;for(let t=0;t<h.length;++t)a+=r[t]/s*h[t];Math.abs(a)<this.xp||(this.Mp={pp:t,wt:i},this.Sp=a,this.bp=function(t,i){const s=Math.log(i);return Math.log(1*s/-t)/s}(Math.abs(a),this.Pp))}Ac(t){const i=c(this.Mp),s=t-i.wt;return i.pp+this.Sp*(Math.pow(this.Pp,s)-1)/Math.log(this.Pp)}Ec(t){return null===this.Mp||this.Tp(t)===this.bp}Tp(t){const i=t-c(this.Mp).wt;return Math.min(i,this.bp)}}class Ss{constructor(t,i){this.kp=void 0,this.Dp=void 0,this.Rp=void 0,this.vs=!1,this.Vp=t,this.Ep=i,this.Ap()}Tt(){this.Ap()}Ip(){this.kp&&this.Vp.removeChild(this.kp),this.Dp&&this.Vp.removeChild(this.Dp),this.kp=void 0,this.Dp=void 0}Fp(){return this.vs!==this.Bp()||this.Rp!==this.Lp()}Lp(){return this.Ep.ti().Xi().tt(this.Ep.W().layout.textColor)>160?"dark":"light"}Bp(){return this.Ep.W().layout.attributionLogo}zp(){const t=new URL(location.href);return t.hostname?"&utm_source="+t.hostname+t.pathname:""}Ap(){this.Fp()&&(this.Ip(),this.vs=this.Bp(),this.vs&&(this.Rp=this.Lp(),this.Dp=document.createElement("style"),this.Dp.innerText="a#pipsend-attr-logo{--fill:#13d3c9;position:absolute;left:10px;bottom:10px;height:24px;width:46px;margin:0;padding:0;border:0;z-index:3;opacity:0.8;transition:opacity 0.3s;}a#pipsend-attr-logo:hover{opacity:1;}a#pipsend-attr-logo[data-dark]{--fill:#13d3c9;}",this.kp=document.createElement("a"),this.kp.href=`https://pipsend.com${this.zp()}`,this.kp.title="Powered by Pipsend Charts",this.kp.id="pipsend-attr-logo",this.kp.target="_blank",this.kp.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 155.89"><g><circle cx="220.68" cy="77.94" r="32.86" style="fill: var(--fill);"/><path d="M138.84,77.94c0,12.01-3.69,23.15-10,32.37h42.32v-.22c-6.21-9.17-9.84-20.24-9.84-32.15s3.63-22.97,9.84-32.15v-.22h-42.32c6.3,9.22,10,20.36,10,32.37Z" style="fill: var(--fill);"/><path d="M222.06,0H77.94C34.9,0,0,34.9,0,77.94h0c0,43.05,34.9,77.94,77.94,77.94h144.11c43.05,0,77.94-34.9,77.94-77.94h0C300,34.9,265.1,0,222.06,0ZM279.4,77.94c0,31.75-25.74,57.49-57.49,57.49H78.09c-31.75,0-57.49-25.74-57.49-57.49h0c0-31.75,25.74-57.49,57.49-57.49h143.82c31.75,0,57.49,25.74,57.49,57.49h0Z" style="fill: var(--fill);"/><circle cx="79.33" cy="77.94" r="32.86" style="fill: var(--fill);"/></g></svg>',this.kp.toggleAttribute("data-dark","dark"===this.Rp),this.Vp.appendChild(this.Dp),this.Vp.appendChild(this.kp)))}}function xs(t,s){const e=c(t.ownerDocument).createElement("canvas");t.appendChild(e);const n=i(e,{type:"device-pixel-content-box",options:{allowResizeObserver:!0},transform:(t,i)=>({width:Math.max(t.width,i.width),height:Math.max(t.height,i.height)})});return n.resizeCanvasElement(s),n}function ys(t){t.width=1,t.height=1,t.getContext("2d")?.clearRect(0,0,1,1)}function Ps(t,i,s,e){t.sr&&t.sr(i,s,e)}function Cs(t,i,s,e){t.nt(i,s,e)}function Ts(t,i,s,e){const n=t(s,e);for(const t of n){const s=t.Dt(e);null!==s&&i(s)}}function ks(t,i){return s=>{if(!function(t){return void 0!==t.$t}(s))return[];return(s.$t()?.ga()??"")!==i?[]:s.ia?.(t)??[]}}function Ds(t,i,s,e){if(!t.length)return;let n=0;const h=t[0].qt(e,!0);let r=1===i?s/2-(t[0].$i()-h/2):t[0].$i()-h/2-s/2;r=Math.max(0,r);for(let h=1;h<t.length;h++){const a=t[h],l=t[h-1],o=l.qt(e,!1),_=a.$i(),c=l.$i();if(1===i?_>c-o:_<c+o){const e=c-o*i;a.Ni(e);const h=e-i*o/2;if((1===i?h<0:h>s)&&r>0){const e=1===i?-1-h:h-s,a=Math.min(e,r);for(let s=n;s<t.length;s++)t[s].Ni(t[s].$i()+i*a);r-=a}}else n=h,r=1===i?c-o-_:_-(c+o)}}class Rs{constructor(i,s,e,n){this.ji=null,this.Op=null,this.Wp=!1,this.$p=new ht(200),this.Np=null,this.Hp=0,this.Up=!1,this.qp=()=>{this.Up||this.Ct.Yp().ti().oh()},this.jp=()=>{this.Up||this.Ct.Yp().ti().oh()},this.Ct=i,this.Cs=s,this.bl=s.layout,this.iu=e,this.Gp="left"===n,this.Kp=ks("normal",n),this.Xp=ks("top",n),this.Zp=ks("bottom",n),this.Gf=document.createElement("div"),this.Gf.style.height="100%",this.Gf.style.overflow="hidden",this.Gf.style.width="25px",this.Gf.style.left="0",this.Gf.style.position="relative",this.Jp=xs(this.Gf,t({width:16,height:16})),this.Jp.subscribeSuggestedBitmapSizeChanged(this.qp);const h=this.Jp.canvasElement;h.style.position="absolute",h.style.zIndex="1",h.style.left="0",h.style.top="0",this.Qp=xs(this.Gf,t({width:16,height:16})),this.Qp.subscribeSuggestedBitmapSizeChanged(this.jp);const r=this.Qp.canvasElement;r.style.position="absolute",r.style.zIndex="2",r.style.left="0",r.style.top="0";const a={xf:this.hp.bind(this),bf:this.hp.bind(this),df:this.rp.bind(this),cf:this.rp.bind(this),yf:this.tv.bind(this),mf:this.ap.bind(this),pf:this.ap.bind(this),Xd:this.iv.bind(this),Yd:this.iv.bind(this),ef:this.sv.bind(this),Af:this.np.bind(this)};this.Wf=new us(this.Qp.canvasElement,a,{lf:()=>!this.Cs.handleScroll.vertTouchDrag,_f:()=>!0})}m(){this.Wf.m(),this.Qp.unsubscribeSuggestedBitmapSizeChanged(this.jp),ys(this.Qp.canvasElement),this.Qp.dispose(),this.Jp.unsubscribeSuggestedBitmapSizeChanged(this.qp),ys(this.Jp.canvasElement),this.Jp.dispose(),null!==this.ji&&this.ji.eo().u(this),this.ji=null}Zf(){return this.Gf}C(){return this.bl.fontSize}ev(){const t=this.iu.W();return this.Np!==t.T&&(this.$p.Ve(),this.Np=t.T),t}nv(){if(null===this.ji)return 0;let t=0;const i=this.ev(),s=c(this.Jp.canvasElement.getContext("2d",{colorSpace:this.Ct.Yp().W().layout.colorSpace}));s.save();const e=this.ji.Va();s.font=this.hv(),e.length>0&&(t=Math.max(this.$p.Ei(s,e[0].Za),this.$p.Ei(s,e[e.length-1].Za)));const n=this.rv();for(let i=n.length;i--;){const e=this.$p.Ei(s,n[i].ri());e>t&&(t=e)}const h=this.ji.Lt();if(null!==h&&null!==this.Op&&(2!==(r=this.Cs.crosshair).mode&&r.horzLine.visible&&r.horzLine.labelVisible)){const i=this.ji.Ds(1,h),e=this.ji.Ds(this.Op.height-2,h);t=Math.max(t,this.$p.Ei(s,this.ji.Zi(Math.floor(Math.min(i,e))+.11111111111111,h)),this.$p.Ei(s,this.ji.Zi(Math.ceil(Math.max(i,e))-.11111111111111,h)))}var r;s.restore();const a=t||34;return _s(Math.ceil(i.S+i.P+i.I+i.F+5+a))}av(t){null!==this.Op&&s(this.Op,t)||(this.Op=t,this.Up=!0,this.Jp.resizeCanvasElement(t),this.Qp.resizeCanvasElement(t),this.Up=!1,this.Gf.style.width=`${t.width}px`,this.Gf.style.height=`${t.height}px`)}lv(){return c(this.Op).width}cs(t){this.ji!==t&&(null!==this.ji&&this.ji.eo().u(this),this.ji=t,t.eo().i(this.cl.bind(this),this))}$t(){return this.ji}Ve(){const t=this.Ct.lp();this.Ct.Yp().ti().Zo(t,c(this.$t()))}ov(t){if(null===this.Op)return;const i={colorSpace:this.Ct.Yp().W().layout.colorSpace};if(1!==t){this._v(),this.Jp.applySuggestedBitmapSize();const t=e(this.Jp,i);null!==t&&(t.useBitmapCoordinateSpace(t=>{this.cv(t),this.uv(t)}),this.Ct.dv(t,this.Zp),this.fv(t),this.Ct.dv(t,this.Kp),this.pv(t))}this.Qp.applySuggestedBitmapSize();const s=e(this.Qp,i);null!==s&&(s.useBitmapCoordinateSpace(({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)}),this.vv(s),this.Ct.dv(s,this.Xp))}Qf(){return this.Jp.bitmapSize}tp(t,i,s,e){const n=this.Qf();if(n.width>0&&n.height>0&&(t.drawImage(this.Jp.canvasElement,i,s),e)){const e=this.Qp.canvasElement;t.drawImage(e,i,s)}}Tt(){this.ji?.Va()}hp(t){if(null===this.ji||this.ji.Ki()||!this.Cs.handleScale.axisPressedMouseMove.price)return;const i=this.Ct.Yp().ti(),s=this.Ct.lp();this.Wp=!0,i.Uo(s,this.ji,t.localY)}rp(t){if(null===this.ji||!this.Cs.handleScale.axisPressedMouseMove.price)return;const i=this.Ct.Yp().ti(),s=this.Ct.lp(),e=this.ji;i.qo(s,e,t.localY)}tv(){if(null===this.ji||!this.Cs.handleScale.axisPressedMouseMove.price)return;const t=this.Ct.Yp().ti(),i=this.Ct.lp(),s=this.ji;this.Wp&&(this.Wp=!1,t.Yo(i,s))}ap(t){if(null===this.ji||!this.Cs.handleScale.axisPressedMouseMove.price)return;const i=this.Ct.Yp().ti(),s=this.Ct.lp();this.Wp=!1,i.Yo(s,this.ji)}iv(t){this.Cs.handleScale.axisDoubleClickReset.price&&this.Ve()}sv(t){if(null===this.ji)return;!this.Ct.Yp().ti().W().handleScale.axisPressedMouseMove.price||this.ji.zn()||this.ji.Vl()||this.mv(1)}np(t){this.mv(0)}rv(){const t=[],i=null===this.ji?void 0:this.ji;return(s=>{for(let e=0;e<s.length;++e){const n=s[e].Ns(this.Ct.lp(),i);for(let i=0;i<n.length;i++)t.push(n[i])}})(this.Ct.lp().Vt()),t}cv({context:t,bitmapSize:i}){const{width:s,height:e}=i,n=this.Ct.lp().ti(),h=n.q(),r=n.Nu();h===r?L(t,0,0,s,e,h):W(t,0,0,s,e,h,r)}uv({context:t,bitmapSize:i,horizontalPixelRatio:s}){if(null===this.Op||null===this.ji||!this.ji.W().borderVisible)return;t.fillStyle=this.ji.W().borderColor;const e=Math.max(1,Math.floor(this.ev().S*s));let n;n=this.Gp?i.width-e:0,t.fillRect(n,0,e,i.height)}fv(t){if(null===this.Op||null===this.ji)return;const i=this.ji.Va(),s=this.ji.W(),e=this.ev(),n=this.Gp?this.Op.width-e.P:0;s.borderVisible&&s.ticksVisible&&t.useBitmapCoordinateSpace(({context:t,horizontalPixelRatio:h,verticalPixelRatio:r})=>{t.fillStyle=s.borderColor;const a=Math.max(1,Math.floor(r)),l=Math.floor(.5*r),o=Math.round(e.P*h);t.beginPath();for(const s of i)t.rect(Math.floor(n*h),Math.round(s.Ca*r)-l,o,a);t.fill()}),t.useMediaCoordinateSpace(({context:t})=>{t.font=this.hv(),t.fillStyle=s.textColor??this.bl.textColor,t.textAlign=this.Gp?"right":"left",t.textBaseline="middle";const h=this.Gp?Math.round(n-e.I):Math.round(n+e.P+e.I),r=i.map(i=>this.$p.Vi(t,i.Za));for(let s=i.length;s--;){const e=i[s];t.fillText(e.Za,h,e.Ca+r[s])}})}_v(){if(null===this.Op||null===this.ji)return;let t=this.Op.height/2;const i=[],s=this.ji.Vt().slice(),e=this.Ct.lp(),n=this.ev();this.ji===e.He()&&this.Ct.lp().Vt().forEach(t=>{e.Ne(t)&&s.push(t)});const h=this.ji.ba()[0],r=this.ji;s.forEach(s=>{const n=s.Ns(e,r);n.forEach(t=>{t.Ni(null),t.Hi()&&i.push(t)}),h===s&&n.length>0&&(t=n[0].Ii())}),i.forEach(t=>t.Ni(t.Ii()));this.ji.W().alignLabels&&this.gv(i,n,t)}gv(t,i,s){if(null===this.Op)return;const e=t.filter(t=>t.Ii()<=s),n=t.filter(t=>t.Ii()>s);e.sort((t,i)=>i.Ii()-t.Ii()),e.length&&n.length&&n.push(e[0]),n.sort((t,i)=>t.Ii()-i.Ii());for(const s of t){const t=Math.floor(s.qt(i)/2),e=s.Ii();e>-t&&e<t&&s.Ni(t),e>this.Op.height-t&&e<this.Op.height+t&&s.Ni(this.Op.height-t)}Ds(e,1,this.Op.height,i),Ds(n,-1,this.Op.height,i)}pv(t){if(null===this.Op)return;const i=this.rv(),s=this.ev(),e=this.Gp?"right":"left";i.forEach(i=>{if(i.Ui()){i.Dt(c(this.ji)).nt(t,s,this.$p,e)}})}vv(t){if(null===this.Op||null===this.ji)return;const i=this.Ct.Yp().ti(),s=[],e=this.Ct.lp(),n=i.du().Ns(e,this.ji);n.length&&s.push(n);const h=this.ev(),r=this.Gp?"right":"left";s.forEach(i=>{i.forEach(i=>{i.Dt(c(this.ji)).nt(t,h,this.$p,r)})})}mv(t){this.Gf.style.cursor=1===t?"ns-resize":"default"}cl(){const t=this.nv();this.Hp<t&&this.Ct.Yp().ti().Ir(),this.Hp=t}hv(){return x(this.bl.fontSize,this.bl.fontFamily)}}function Vs(t,i){return t.Qr?.(i)??[]}function Es(t,i){return t.$s?.(i)??[]}function As(t,i){return t.us?.(i)??[]}function Is(t,i){return t.Xr?.(i)??[]}class Fs{constructor(i,s){this.Op=t({width:0,height:0}),this.wv=null,this.Mv=null,this.bv=null,this.Sv=null,this.xv=!1,this.yv=new d,this.Pv=new d,this.Cv=0,this.Tv=!1,this.kv=null,this.Dv=!1,this.Rv=null,this.Vv=null,this.Up=!1,this.qp=()=>{this.Up||null===this.Ev||this.ss().oh()},this.jp=()=>{this.Up||null===this.Ev||this.ss().oh()},this.Ep=i,this.Ev=s,this.Ev.i_().i(this.Av.bind(this),this,!0),this.Iv=document.createElement("td"),this.Iv.style.padding="0",this.Iv.style.position="relative";const e=document.createElement("div");e.style.width="100%",e.style.height="100%",e.style.position="relative",e.style.overflow="hidden",this.Fv=document.createElement("td"),this.Fv.style.padding="0",this.Bv=document.createElement("td"),this.Bv.style.padding="0",this.Iv.appendChild(e),this.Jp=xs(e,t({width:16,height:16})),this.Jp.subscribeSuggestedBitmapSizeChanged(this.qp);const n=this.Jp.canvasElement;n.style.position="absolute",n.style.zIndex="1",n.style.left="0",n.style.top="0",this.Qp=xs(e,t({width:16,height:16})),this.Qp.subscribeSuggestedBitmapSizeChanged(this.jp);const h=this.Qp.canvasElement;h.style.position="absolute",h.style.zIndex="2",h.style.left="0",h.style.top="0",this.jf=document.createElement("tr"),this.jf.appendChild(this.Fv),this.jf.appendChild(this.Iv),this.jf.appendChild(this.Bv),this.Lv(),this.Wf=new us(this.Qp.canvasElement,this,{lf:()=>null===this.kv&&!this.Ep.W().handleScroll.vertTouchDrag,_f:()=>null===this.kv&&!this.Ep.W().handleScroll.horzTouchDrag})}m(){null!==this.wv&&this.wv.m(),null!==this.Mv&&this.Mv.m(),this.bv=null,this.Qp.unsubscribeSuggestedBitmapSizeChanged(this.jp),ys(this.Qp.canvasElement),this.Qp.dispose(),this.Jp.unsubscribeSuggestedBitmapSizeChanged(this.qp),ys(this.Jp.canvasElement),this.Jp.dispose(),null!==this.Ev&&(this.Ev.i_().u(this),this.Ev.m()),this.Wf.m()}lp(){return c(this.Ev)}zv(t){null!==this.Ev&&this.Ev.i_().u(this),this.Ev=t,null!==this.Ev&&this.Ev.i_().i(Fs.prototype.Av.bind(this),this,!0),this.Lv(),this.Ep.qf().indexOf(this)===this.Ep.qf().length-1?(this.bv=this.bv??new Ss(this.Iv,this.Ep),this.bv.Tt()):(this.bv?.Ip(),this.bv=null)}Yp(){return this.Ep}Zf(){return this.jf}Lv(){if(null!==this.Ev&&(this.Ov(),0!==this.ss().Gs().length)){if(null!==this.wv){const t=this.Ev.No();this.wv.cs(c(t))}if(null!==this.Mv){const t=this.Ev.Ho();this.Mv.cs(c(t))}}}Wv(){null!==this.wv&&this.wv.Tt(),null!==this.Mv&&this.Mv.Tt()}Ao(){return null!==this.Ev?this.Ev.Ao():0}Io(t){this.Ev&&this.Ev.Io(t)}ef(t){if(!this.Ev)return;this.$v();const i=t.localX,s=t.localY;this.Nv(i,s,t)}xf(t){this.$v(),this.Hv(),this.Nv(t.localX,t.localY,t)}nf(t){if(!this.Ev)return;this.$v();const i=t.localX,s=t.localY;this.Nv(i,s,t)}gf(t){null!==this.Ev&&(this.$v(),this.Uv(t))}Xd(t){null!==this.Ev&&this.qv(this.Pv,t)}Yd(t){this.Xd(t)}df(t){this.$v(),this.Yv(t),this.Nv(t.localX,t.localY,t)}mf(t){null!==this.Ev&&(this.$v(),this.Tv=!1,this.jv(t))}vf(t){null!==this.Ev&&this.Uv(t)}If(t){if(this.Tv=!0,null===this.kv){const i={x:t.localX,y:t.localY};this.Gv(i,i,t)}}Af(t){null!==this.Ev&&(this.$v(),this.Ev.ti()._u(null),this.Kv())}Xv(){return this.yv}Zv(){return this.Pv}Tf(){this.Cv=1,this.ss().re()}kf(t,i){if(!this.Ep.W().handleScale.pinch)return;const s=5*(i-this.Cv);this.Cv=i,this.ss().Su(t.ct,s)}bf(t){this.Tv=!1,this.Dv=null!==this.kv,this.Hv();const i=this.ss().du();null!==this.kv&&i.Et()&&(this.Rv={x:i.ei(),y:i.ni()},this.kv={x:t.localX,y:t.localY})}cf(t){if(null===this.Ev)return;const i=t.localX,s=t.localY;if(null!==this.kv){this.Dv=!1;const e=c(this.Rv),n=e.x+(i-this.kv.x),h=e.y+(s-this.kv.y);return void this.Nv(n,h,t)}this.Yv(t)}pf(t){0===this.Yp().W().trackingMode.exitMode&&(this.Dv=!0),this.Jv(),this.jv(t)}Ye(t,i){const s=this.Ev;return null===s?null:Ti(s,t,i)}Qv(i,s){c("left"===s?this.wv:this.Mv).av(t({width:i,height:this.Op.height}))}Jf(){return this.Op}av(t){s(this.Op,t)||(this.Op=t,this.Up=!0,this.Jp.resizeCanvasElement(t),this.Qp.resizeCanvasElement(t),this.Up=!1,this.Iv.style.width=t.width+"px",this.Iv.style.height=t.height+"px")}tm(){const t=c(this.Ev);t.$o(t.No()),t.$o(t.Ho());for(const i of t.ba())if(t.Ne(i)){const s=i.$t();null!==s&&t.$o(s),i.Ws()}for(const i of t.e_())i.Ws()}Qf(){return this.Jp.bitmapSize}tp(t,i,s,e){const n=this.Qf();if(n.width>0&&n.height>0&&(t.drawImage(this.Jp.canvasElement,i,s),e)){const e=this.Qp.canvasElement;null!==t&&t.drawImage(e,i,s)}}ov(t){if(0===t)return;if(null===this.Ev)return;t>1&&this.tm(),null!==this.wv&&this.wv.ov(t),null!==this.Mv&&this.Mv.ov(t);const i={colorSpace:this.Ep.W().layout.colorSpace};if(1!==t){this.Jp.applySuggestedBitmapSize();const t=e(this.Jp,i);null!==t&&(t.useBitmapCoordinateSpace(t=>{this.cv(t)}),this.Ev&&(this.im(t,Vs),this.sm(t),this.im(t,Es),this.im(t,As)))}this.Qp.applySuggestedBitmapSize();const s=e(this.Qp,i);null!==s&&(s.useBitmapCoordinateSpace(({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)}),this.nm(s),this.im(s,Is),this.im(s,As))}hm(){return this.wv}rm(){return this.Mv}dv(t,i){this.im(t,i)}Av(){null!==this.Ev&&this.Ev.i_().u(this),this.Ev=null}Uv(t){this.qv(this.yv,t)}qv(t,i){const s=i.localX,e=i.localY;t.v()&&t.p(this.ss().Ft().fc(s),{x:s,y:e},i)}cv({context:t,bitmapSize:i}){const{width:s,height:e}=i,n=this.ss(),h=n.q(),r=n.Nu();h===r?L(t,0,0,s,e,r):W(t,0,0,s,e,h,r)}sm(t){const i=c(this.Ev),s=i.s_()._h().Dt(i);null!==s&&s.nt(t,!1)}nm(t){this.am(t,Es,Cs,this.ss().du())}im(t,i){const s=c(this.Ev),e=s.Vt(),n=s.e_();for(const s of n)this.am(t,i,Ps,s);for(const s of e)this.am(t,i,Ps,s);for(const s of n)this.am(t,i,Cs,s);for(const s of e)this.am(t,i,Cs,s)}am(t,i,s,e){const n=c(this.Ev),h=n.ti().ou(),r=null!==h&&h.n_===e,a=null!==h&&r&&void 0!==h.h_?h.h_.Ge:void 0;Ts(i,i=>s(i,t,r,a),e,n)}Ov(){if(null===this.Ev)return;const t=this.Ep,i=this.Ev.No().W().visible,s=this.Ev.Ho().W().visible;i||null===this.wv||(this.Fv.removeChild(this.wv.Zf()),this.wv.m(),this.wv=null),s||null===this.Mv||(this.Bv.removeChild(this.Mv.Zf()),this.Mv.m(),this.Mv=null);const e=t.ti().Au();i&&null===this.wv&&(this.wv=new Rs(this,t.W(),e,"left"),this.Fv.appendChild(this.wv.Zf())),s&&null===this.Mv&&(this.Mv=new Rs(this,t.W(),e,"right"),this.Bv.appendChild(this.Mv.Zf()))}lm(t){return t.Ff&&this.Tv||null!==this.kv}om(t){return Math.max(0,Math.min(t,this.Op.width-1))}_m(t){return Math.max(0,Math.min(t,this.Op.height-1))}Nv(t,i,s){this.ss().Du(this.om(t),this._m(i),s,c(this.Ev))}Kv(){this.ss().Vu()}Jv(){this.Dv&&(this.kv=null,this.Kv())}Gv(t,i,s){this.kv=t,this.Dv=!1,this.Nv(i.x,i.y,s);const e=this.ss().du();this.Rv={x:e.ei(),y:e.ni()}}ss(){return this.Ep.ti()}jv(t){if(!this.xv)return;const i=this.ss(),s=this.lp();if(i.Ko(s,s.ks()),this.Sv=null,this.xv=!1,i.Cu(),null!==this.Vv){const t=performance.now(),s=i.Ft();this.Vv.ln(s.Sc(),t),this.Vv.Ec(t)||i.oe(this.Vv)}}$v(){this.kv=null}Hv(){if(!this.Ev)return;if(this.ss().re(),document.activeElement!==document.body&&document.activeElement!==document.documentElement)c(document.activeElement).blur();else{const t=document.getSelection();null!==t&&t.removeAllRanges()}!this.Ev.ks().Ki()&&this.ss().Ft().Ki()}Yv(t){if(null===this.Ev)return;const i=this.ss(),s=i.Ft();if(s.Ki())return;const e=this.Ep.W(),n=e.handleScroll,h=e.kineticScroll;if((!n.pressedMouseMove||t.Ff)&&(!n.horzTouchDrag&&!n.vertTouchDrag||!t.Ff))return;const r=this.Ev.ks(),a=performance.now();if(null!==this.Sv||this.lm(t)||(this.Sv={x:t.clientX,y:t.clientY,rd:a,um:t.localX,dm:t.localY}),null!==this.Sv&&!this.xv&&(this.Sv.x!==t.clientX||this.Sv.y!==t.clientY)){if(t.Ff&&h.touch||!t.Ff&&h.mouse){const t=s.Mc();this.Vv=new bs(.2/t,7/t,.997,15/t),this.Vv.Cp(s.Sc(),this.Sv.rd)}else this.Vv=null;r.Ki()||i.jo(this.Ev,r,t.localY),i.yu(t.localX),this.xv=!0}this.xv&&(r.Ki()||i.Go(this.Ev,r,t.localY),i.Pu(t.localX),null!==this.Vv&&this.Vv.Cp(s.Sc(),a))}}class Bs{constructor(i,s,e,n,h){this.yt=!0,this.Op=t({width:0,height:0}),this.qp=()=>this.ov(3),this.Gp="left"===i,this.iu=e.Au,this.Cs=s,this.fm=n,this.pm=h,this.Gf=document.createElement("div"),this.Gf.style.width="25px",this.Gf.style.height="100%",this.Gf.style.overflow="hidden",this.Jp=xs(this.Gf,t({width:16,height:16})),this.Jp.subscribeSuggestedBitmapSizeChanged(this.qp)}m(){this.Jp.unsubscribeSuggestedBitmapSizeChanged(this.qp),ys(this.Jp.canvasElement),this.Jp.dispose()}Zf(){return this.Gf}Jf(){return this.Op}av(t){s(this.Op,t)||(this.Op=t,this.Jp.resizeCanvasElement(t),this.Gf.style.width=`${t.width}px`,this.Gf.style.height=`${t.height}px`,this.yt=!0)}ov(t){if(t<3&&!this.yt)return;if(0===this.Op.width||0===this.Op.height)return;this.yt=!1,this.Jp.applySuggestedBitmapSize();const i=e(this.Jp,{colorSpace:this.Cs.layout.colorSpace});null!==i&&i.useBitmapCoordinateSpace(t=>{this.cv(t),this.uv(t)})}Qf(){return this.Jp.bitmapSize}tp(t,i,s){const e=this.Qf();e.width>0&&e.height>0&&t.drawImage(this.Jp.canvasElement,i,s)}uv({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:e}){if(!this.fm())return;t.fillStyle=this.Cs.timeScale.borderColor;const n=Math.floor(this.iu.W().S*s),h=Math.floor(this.iu.W().S*e),r=this.Gp?i.width-n:0;t.fillRect(r,0,n,h)}cv({context:t,bitmapSize:i}){L(t,0,0,i.width,i.height,this.pm())}}function Ls(t){return i=>i.sa?.(t)??[]}const zs=Ls("normal"),Os=Ls("top"),Ws=Ls("bottom");class $s{constructor(i,s){this.vm=null,this.gm=null,this.M=null,this.wm=!1,this.Op=t({width:0,height:0}),this.Mm=new d,this.$p=new ht(5),this.Up=!1,this.qp=()=>{this.Up||this.Ep.ti().oh()},this.jp=()=>{this.Up||this.Ep.ti().oh()},this.Ep=i,this.__=s,this.Cs=i.W().layout,this.kp=document.createElement("tr"),this.bm=document.createElement("td"),this.bm.style.padding="0",this.Sm=document.createElement("td"),this.Sm.style.padding="0",this.Gf=document.createElement("td"),this.Gf.style.height="25px",this.Gf.style.padding="0",this.xm=document.createElement("div"),this.xm.style.width="100%",this.xm.style.height="100%",this.xm.style.position="relative",this.xm.style.overflow="hidden",this.Gf.appendChild(this.xm),this.Jp=xs(this.xm,t({width:16,height:16})),this.Jp.subscribeSuggestedBitmapSizeChanged(this.qp);const e=this.Jp.canvasElement;e.style.position="absolute",e.style.zIndex="1",e.style.left="0",e.style.top="0",this.Qp=xs(this.xm,t({width:16,height:16})),this.Qp.subscribeSuggestedBitmapSizeChanged(this.jp);const n=this.Qp.canvasElement;n.style.position="absolute",n.style.zIndex="2",n.style.left="0",n.style.top="0",this.kp.appendChild(this.bm),this.kp.appendChild(this.Gf),this.kp.appendChild(this.Sm),this.ym(),this.Ep.ti().Eo().i(this.ym.bind(this),this),this.Wf=new us(this.Qp.canvasElement,this,{lf:()=>!0,_f:()=>!this.Ep.W().handleScroll.horzTouchDrag})}m(){this.Wf.m(),null!==this.vm&&this.vm.m(),null!==this.gm&&this.gm.m(),this.Qp.unsubscribeSuggestedBitmapSizeChanged(this.jp),ys(this.Qp.canvasElement),this.Qp.dispose(),this.Jp.unsubscribeSuggestedBitmapSizeChanged(this.qp),ys(this.Jp.canvasElement),this.Jp.dispose()}Zf(){return this.kp}Pm(){return this.vm}Cm(){return this.gm}xf(t){if(this.wm)return;this.wm=!0;const i=this.Ep.ti();!i.Ft().Ki()&&this.Ep.W().handleScale.axisPressedMouseMove.time&&i.bu(t.localX)}bf(t){this.xf(t)}yf(){const t=this.Ep.ti();!t.Ft().Ki()&&this.wm&&(this.wm=!1,this.Ep.W().handleScale.axisPressedMouseMove.time&&t.ku())}df(t){const i=this.Ep.ti();!i.Ft().Ki()&&this.Ep.W().handleScale.axisPressedMouseMove.time&&i.Tu(t.localX)}cf(t){this.df(t)}mf(){this.wm=!1;const t=this.Ep.ti();t.Ft().Ki()&&!this.Ep.W().handleScale.axisPressedMouseMove.time||t.ku()}pf(){this.mf()}Xd(){this.Ep.W().handleScale.axisDoubleClickReset.time&&this.Ep.ti().ce()}Yd(){this.Xd()}ef(){this.Ep.ti().W().handleScale.axisPressedMouseMove.time&&this.mv(1)}Af(){this.mv(0)}Jf(){return this.Op}Tm(){return this.Mm}km(i,e,n){s(this.Op,i)||(this.Op=i,this.Up=!0,this.Jp.resizeCanvasElement(i),this.Qp.resizeCanvasElement(i),this.Up=!1,this.Gf.style.width=`${i.width}px`,this.Gf.style.height=`${i.height}px`,this.Mm.p(i)),null!==this.vm&&this.vm.av(t({width:e,height:i.height})),null!==this.gm&&this.gm.av(t({width:n,height:i.height}))}Dm(){const t=this.Rm();return Math.ceil(t.S+t.P+t.C+t.B+t.A+t.Vm)}Tt(){this.Ep.ti().Ft().Va()}Qf(){return this.Jp.bitmapSize}tp(t,i,s,e){const n=this.Qf();if(n.width>0&&n.height>0&&(t.drawImage(this.Jp.canvasElement,i,s),e)){const e=this.Qp.canvasElement;t.drawImage(e,i,s)}}ov(t){if(0===t)return;const i={colorSpace:this.Cs.colorSpace};if(1!==t){this.Jp.applySuggestedBitmapSize();const s=e(this.Jp,i);null!==s&&(s.useBitmapCoordinateSpace(t=>{this.cv(t),this.uv(t),this.Em(s,Ws)}),this.fv(s),this.Em(s,zs)),null!==this.vm&&this.vm.ov(t),null!==this.gm&&this.gm.ov(t)}this.Qp.applySuggestedBitmapSize();const s=e(this.Qp,i);null!==s&&(s.useBitmapCoordinateSpace(({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)}),this.Am([...this.Ep.ti().Gs(),this.Ep.ti().du()],s),this.Em(s,Os))}Em(t,i){const s=this.Ep.ti().Gs();for(const e of s)Ts(i,i=>Ps(i,t,!1,void 0),e,void 0);for(const e of s)Ts(i,i=>Cs(i,t,!1,void 0),e,void 0)}cv({context:t,bitmapSize:i}){L(t,0,0,i.width,i.height,this.Ep.ti().Nu())}uv({context:t,bitmapSize:i,verticalPixelRatio:s}){if(this.Ep.W().timeScale.borderVisible){t.fillStyle=this.Im();const e=Math.max(1,Math.floor(this.Rm().S*s));t.fillRect(0,0,i.width,e)}}fv(t){const i=this.Ep.ti().Ft(),s=i.Va();if(!s||0===s.length)return;const e=this.__.maxTickMarkWeight(s),n=this.Rm(),h=i.W();h.borderVisible&&h.ticksVisible&&t.useBitmapCoordinateSpace(({context:t,horizontalPixelRatio:i,verticalPixelRatio:e})=>{t.strokeStyle=this.Im(),t.fillStyle=this.Im();const h=Math.max(1,Math.floor(i)),r=Math.floor(.5*i);t.beginPath();const a=Math.round(n.P*e);for(let e=s.length;e--;){const n=Math.round(s[e].coord*i);t.rect(n-r,0,h,a)}t.fill()}),t.useMediaCoordinateSpace(({context:t})=>{const i=n.S+n.P+n.B+n.C/2;t.textAlign="center",t.textBaseline="middle",t.fillStyle=this.H(),t.font=this.hv();for(const n of s)if(n.weight<e){const s=n.needAlignCoordinate?this.Fm(t,n.coord,n.label):n.coord;t.fillText(n.label,s,i)}this.Ep.W().timeScale.allowBoldLabels&&(t.font=this.Bm());for(const n of s)if(n.weight>=e){const s=n.needAlignCoordinate?this.Fm(t,n.coord,n.label):n.coord;t.fillText(n.label,s,i)}})}Fm(t,i,s){const e=this.$p.Ei(t,s),n=e/2,h=Math.floor(i-n)+.5;return h<0?i+=Math.abs(0-h):h+e>this.Op.width&&(i-=Math.abs(this.Op.width-(h+e))),i}Am(t,i){const s=this.Rm();for(const e of t)for(const t of e.ds())t.Dt().nt(i,s)}Im(){return this.Ep.W().timeScale.borderColor}H(){return this.Cs.textColor}$(){return this.Cs.fontSize}hv(){return x(this.$(),this.Cs.fontFamily)}Bm(){return x(this.$(),this.Cs.fontFamily,"bold")}Rm(){null===this.M&&(this.M={S:1,L:NaN,B:NaN,A:NaN,Qi:NaN,P:5,C:NaN,T:"",Ji:new ht,Vm:0});const t=this.M,i=this.hv();if(t.T!==i){const s=this.$();t.C=s,t.T=i,t.B=3*s/12,t.A=3*s/12,t.Qi=9*s/12,t.L=0,t.Vm=4*s/12,t.Ji.Ve()}return this.M}mv(t){this.Gf.style.cursor=1===t?"ew-resize":"default"}ym(){const t=this.Ep.ti(),i=t.W();i.leftPriceScale.visible||null===this.vm||(this.bm.removeChild(this.vm.Zf()),this.vm.m(),this.vm=null),i.rightPriceScale.visible||null===this.gm||(this.Sm.removeChild(this.gm.Zf()),this.gm.m(),this.gm=null);const s={Au:this.Ep.ti().Au()},e=()=>i.leftPriceScale.borderVisible&&t.Ft().W().borderVisible,n=()=>t.Nu();i.leftPriceScale.visible&&null===this.vm&&(this.vm=new Bs("left",i,s,e,n),this.bm.appendChild(this.vm.Zf())),i.rightPriceScale.visible&&null===this.gm&&(this.gm=new Bs("right",i,s,e,n),this.Sm.appendChild(this.gm.Zf()))}}const Ns=!!as&&!!navigator.userAgentData&&navigator.userAgentData.brands.some(t=>t.brand.includes("Chromium"))&&!!as&&(navigator?.userAgentData?.platform?"Windows"===navigator.userAgentData.platform:navigator.userAgent.toLowerCase().indexOf("win")>=0);class Hs{constructor(t,i,s){var e;this.Lm=[],this.zm=[],this.Om=0,this.sl=0,this.bo=0,this.Wm=0,this.$m=0,this.Nm=null,this.Hm=!1,this.yv=new d,this.Pv=new d,this.Jc=new d,this.Um=null,this.qm=null,this.Vp=t,this.Cs=i,this.__=s,this.kp=document.createElement("div"),this.kp.classList.add("tv-lightweight-charts"),this.kp.style.overflow="hidden",this.kp.style.direction="ltr",this.kp.style.width="100%",this.kp.style.height="100%",(e=this.kp).style.userSelect="none",e.style.webkitUserSelect="none",e.style.msUserSelect="none",e.style.MozUserSelect="none",e.style.webkitTapHighlightColor="transparent",this.Ym=document.createElement("table"),this.Ym.setAttribute("cellspacing","0"),this.kp.appendChild(this.Ym),this.jm=this.Gm.bind(this),Us(this.Cs)&&this.Km(!0),this.ss=new Wi(this.tu.bind(this),this.Cs,s),this.ti().fu().i(this.Xm.bind(this),this),this.Zm=new $s(this,this.__),this.Ym.appendChild(this.Zm.Zf());const n=i.autoSize&&this.Jm();let h=this.Cs.width,r=this.Cs.height;if(n||0===h||0===r){const i=t.getBoundingClientRect();h=h||i.width,r=r||i.height}this.Qm(h,r),this.tg(),t.appendChild(this.kp),this.ig(),this.ss.Ft().Bc().i(this.ss.Ir.bind(this.ss),this),this.ss.Eo().i(this.ss.Ir.bind(this.ss),this)}ti(){return this.ss}W(){return this.Cs}qf(){return this.Lm}sg(){return this.Zm}m(){this.Km(!1),0!==this.Om&&window.cancelAnimationFrame(this.Om),this.ss.fu().u(this),this.ss.Ft().Bc().u(this),this.ss.Eo().u(this),this.ss.m();for(const t of this.Lm)this.Ym.removeChild(t.Zf()),t.Xv().u(this),t.Zv().u(this),t.m();this.Lm=[];for(const t of this.zm)this.eg(t);this.zm=[],c(this.Zm).m(),null!==this.kp.parentElement&&this.kp.parentElement.removeChild(this.kp),this.Jc.m(),this.yv.m(),this.Pv.m(),this.ng()}Qm(i,s,e=!1){if(this.sl===s&&this.bo===i)return;const n=function(i){const s=Math.floor(i.width),e=Math.floor(i.height);return t({width:s-s%2,height:e-e%2})}(t({width:i,height:s}));this.sl=n.height,this.bo=n.width;const h=this.sl+"px",r=this.bo+"px";c(this.kp).style.height=h,c(this.kp).style.width=r,this.Ym.style.height=h,this.Ym.style.width=r,e?this.hg(Z.ge(),performance.now()):this.ss.Ir()}ov(t){void 0===t&&(t=Z.ge());for(let i=0;i<this.Lm.length;i++)this.Lm[i].ov(t.ne(i).ie);this.Cs.timeScale.visible&&this.Zm.ov(t.ee())}ah(t){const i=Us(this.Cs);this.ss.ah(t);const s=Us(this.Cs);s!==i&&this.Km(s),t.layout?.panes&&this.rg(),this.ig(),this.ag(t)}Xv(){return this.yv}Zv(){return this.Pv}fu(){return this.Jc}lg(t=!1){null!==this.Nm&&(this.hg(this.Nm,performance.now()),this.Nm=null);const i=this.og(null),s=document.createElement("canvas");s.width=i.width,s.height=i.height;const e=c(s.getContext("2d"));return this.og(e,t),s}_g(t){if("left"===t&&!this.cg())return 0;if("right"===t&&!this.ug())return 0;if(0===this.Lm.length)return 0;return c("left"===t?this.Lm[0].hm():this.Lm[0].rm()).lv()}dg(){return this.Cs.autoSize&&null!==this.Um}sp(){return this.kp}fg(t){this.qm=t,this.qm?this.sp().style.setProperty("cursor",t):this.sp().style.removeProperty("cursor")}pg(){return this.qm}vg(t){return _(this.Lm[t]).Jf()}rg(){this.zm.forEach(t=>{t.Tt()})}ag(t){(void 0!==t.autoSize||!this.Um||void 0===t.width&&void 0===t.height)&&(t.autoSize&&!this.Um&&this.Jm(),!1===t.autoSize&&null!==this.Um&&this.ng(),t.autoSize||void 0===t.width&&void 0===t.height||this.Qm(t.width||this.bo,t.height||this.sl))}og(i,s){let e=0,n=0;const h=this.Lm[0],r=(t,e)=>{let n=0;for(let h=0;h<this.Lm.length;h++){const r=this.Lm[h],a=c("left"===t?r.hm():r.rm()),l=a.Qf();if(null!==i&&a.tp(i,e,n,s),n+=l.height,h<this.Lm.length-1){const t=this.zm[h],s=t.Qf();null!==i&&t.tp(i,e,n),n+=s.height}}};if(this.cg()){r("left",0);e+=c(h.hm()).Qf().width}for(let t=0;t<this.Lm.length;t++){const h=this.Lm[t],r=h.Qf();if(null!==i&&h.tp(i,e,n,s),n+=r.height,t<this.Lm.length-1){const s=this.zm[t],h=s.Qf();null!==i&&s.tp(i,e,n),n+=h.height}}if(e+=h.Qf().width,this.ug()){r("right",e);e+=c(h.rm()).Qf().width}const a=(t,s,e)=>{c("left"===t?this.Zm.Pm():this.Zm.Cm()).tp(c(i),s,e)};if(this.Cs.timeScale.visible){const t=this.Zm.Qf();if(null!==i){let e=0;this.cg()&&(a("left",e,n),e=c(h.hm()).Qf().width),this.Zm.tp(i,e,n,s),e+=t.width,this.ug()&&a("right",e,n)}n+=t.height}return t({width:e,height:n})}mg(){let i=0,s=0,e=0;for(const t of this.Lm)this.cg()&&(s=Math.max(s,c(t.hm()).nv(),this.Cs.leftPriceScale.minimumWidth)),this.ug()&&(e=Math.max(e,c(t.rm()).nv(),this.Cs.rightPriceScale.minimumWidth)),i+=t.Ao();s=_s(s),e=_s(e);const n=this.bo,h=this.sl,r=Math.max(n-s-e,0),a=1*this.zm.length,l=this.Cs.timeScale.visible;let o=l?Math.max(this.Zm.Dm(),this.Cs.timeScale.minimumHeight):0;var _;o=(_=o)+_%2;const u=a+o,d=h<u?0:h-u,f=d/i;let p=0;const v=window.devicePixelRatio||1;for(let i=0;i<this.Lm.length;++i){const n=this.Lm[i];n.zv(this.ss.qs()[i]);let h=0,a=0;a=i===this.Lm.length-1?Math.ceil((d-p)*v)/v:Math.round(n.Ao()*f*v)/v,h=Math.max(a,2),p+=h,n.av(t({width:r,height:h})),this.cg()&&n.Qv(s,"left"),this.ug()&&n.Qv(e,"right"),n.lp()&&this.ss.pu(n.lp(),h)}this.Zm.km(t({width:l?r:0,height:o}),l?s:0,l?e:0),this.ss.Fo(r),this.Wm!==s&&(this.Wm=s),this.$m!==e&&(this.$m=e)}Km(t){t?this.kp.addEventListener("wheel",this.jm,{passive:!1}):this.kp.removeEventListener("wheel",this.jm)}gg(t){switch(t.deltaMode){case t.DOM_DELTA_PAGE:return 120;case t.DOM_DELTA_LINE:return 32}return Ns?1/window.devicePixelRatio:1}Gm(t){if(!(0!==t.deltaX&&this.Cs.handleScroll.mouseWheel||0!==t.deltaY&&this.Cs.handleScale.mouseWheel))return;const i=this.gg(t),s=i*t.deltaX/100,e=-i*t.deltaY/100;if(t.cancelable&&t.preventDefault(),0!==e&&this.Cs.handleScale.mouseWheel){const i=Math.sign(e)*Math.min(1,Math.abs(e)),s=t.clientX-this.kp.getBoundingClientRect().left;this.ti().Su(s,i)}0!==s&&this.Cs.handleScroll.mouseWheel&&this.ti().xu(-80*s)}hg(t,i){const s=t.ee();3===s&&this.wg(),3!==s&&2!==s||(this.Mg(t),this.bg(t,i),this.Zm.Tt(),this.Lm.forEach(t=>{t.Wv()}),3===this.Nm?.ee()&&(this.Nm.pe(t),this.wg(),this.Mg(this.Nm),this.bg(this.Nm,i),t=this.Nm,this.Nm=null)),this.ov(t)}bg(t,i){for(const s of t.fe())this.ve(s,i)}Mg(t){const i=this.ss.qs();for(let s=0;s<i.length;s++)t.ne(s).se&&i[s].Jo()}ve(t,i){const s=this.ss.Ft();switch(t.ae){case 0:s.zc();break;case 1:s.Oc(t.Nt);break;case 2:s.ue(t.Nt);break;case 3:s.de(t.Nt);break;case 4:s.Pc();break;case 5:t.Nt.Ec(i)||s.de(t.Nt.Ac(i))}}tu(t){null!==this.Nm?this.Nm.pe(t):this.Nm=t,this.Hm||(this.Hm=!0,this.Om=window.requestAnimationFrame(t=>{if(this.Hm=!1,this.Om=0,null!==this.Nm){const i=this.Nm;this.Nm=null,this.hg(i,t);for(const s of i.fe())if(5===s.ae&&!s.Nt.Ec(t)){this.ti().oe(s.Nt);break}}}))}wg(){this.tg()}eg(t){this.Ym.removeChild(t.Zf()),t.m()}tg(){const t=this.ss.qs(),i=t.length,s=this.Lm.length;for(let t=i;t<s;t++){const t=_(this.Lm.pop());this.Ym.removeChild(t.Zf()),t.Xv().u(this),t.Zv().u(this),t.m();const i=this.zm.pop();void 0!==i&&this.eg(i)}for(let e=s;e<i;e++){const i=new Fs(this,t[e]);if(i.Xv().i(this.Sg.bind(this,i),this),i.Zv().i(this.xg.bind(this,i),this),this.Lm.push(i),e>0){const t=new gs(this,e-1,e);this.zm.push(t),this.Ym.insertBefore(t.Zf(),this.Zm.Zf())}this.Ym.insertBefore(i.Zf(),this.Zm.Zf())}for(let s=0;s<i;s++){const i=t[s],e=this.Lm[s];e.lp()!==i?e.zv(i):e.Lv()}this.ig(),this.mg()}yg(t,i,s,e){const n=new Map;if(null!==t){this.ss.Gs().forEach(i=>{const s=i.Xs().$h(t);null!==s&&n.set(i,s)})}let h;if(null!==t){const i=this.ss.Ft().es(t)?.originalTime;void 0!==i&&(h=i)}const r=this.ti().ou(),a=null!==r&&r.n_ instanceof Gt?r.n_:void 0,l=null!==r&&void 0!==r.h_?r.h_.je:void 0,o=this.Pg(e);return{Cg:h,Rn:t??void 0,Tg:i??void 0,kg:-1!==o?o:void 0,Dg:a,Rg:n,Vg:l,Eg:s??void 0}}Pg(t){let i=-1;if(t)i=this.Lm.indexOf(t);else{const t=this.ti().du().Us();null!==t&&(i=this.ti().qs().indexOf(t))}return i}Sg(t,i,s,e){this.yv.p(()=>this.yg(i,s,e,t))}xg(t,i,s,e){this.Pv.p(()=>this.yg(i,s,e,t))}Xm(t,i,s){this.fg(this.ti().ou()?.a_??null),this.Jc.p(()=>this.yg(t,i,s))}ig(){const t=this.Cs.timeScale.visible?"":"none";this.Zm.Zf().style.display=t}cg(){return this.Lm[0].lp().No().W().visible}ug(){return this.Lm[0].lp().Ho().W().visible}Jm(){return"ResizeObserver"in window&&(this.Um=new ResizeObserver(t=>{const i=t[t.length-1];i&&this.Qm(i.contentRect.width,i.contentRect.height)}),this.Um.observe(this.Vp,{box:"border-box"}),!0)}ng(){null!==this.Um&&this.Um.disconnect(),this.Um=null}}function Us(t){return Boolean(t.handleScroll.mouseWheel||t.handleScale.mouseWheel)}function qs(t){return void 0===t.open&&void 0===t.value}function Ys(t){return function(t){return void 0!==t.open}(t)||function(t){return void 0!==t.value}(t)}function js(t,i,s,e){const n=s.value,h={Rn:i,wt:t,Nt:[n,n,n,n],Cg:e};return void 0!==s.color&&(h.R=s.color),h}function Gs(t,i,s,e){const n=s.value,h={Rn:i,wt:t,Nt:[n,n,n,n],Cg:e};return void 0!==s.lineColor&&(h.gt=s.lineColor),void 0!==s.topColor&&(h.wh=s.topColor),void 0!==s.bottomColor&&(h.Mh=s.bottomColor),h}function Ks(t,i,s,e){const n=s.value,h={Rn:i,wt:t,Nt:[n,n,n,n],Cg:e};return void 0!==s.topLineColor&&(h.bh=s.topLineColor),void 0!==s.bottomLineColor&&(h.Sh=s.bottomLineColor),void 0!==s.topFillColor1&&(h.xh=s.topFillColor1),void 0!==s.topFillColor2&&(h.yh=s.topFillColor2),void 0!==s.bottomFillColor1&&(h.Ph=s.bottomFillColor1),void 0!==s.bottomFillColor2&&(h.Ch=s.bottomFillColor2),h}function Xs(t,i,s,e){const n={Rn:i,wt:t,Nt:[s.open,s.high,s.low,s.close],Cg:e};return void 0!==s.color&&(n.R=s.color),n}function Zs(t,i,s,e){const n={Rn:i,wt:t,Nt:[s.open,s.high,s.low,s.close],Cg:e};return void 0!==s.color&&(n.R=s.color),void 0!==s.borderColor&&(n.Ht=s.borderColor),void 0!==s.wickColor&&(n.gh=s.wickColor),n}function Js(t,i,s,e,n){const h=_(n)(s),r=Math.max(...h),a=Math.min(...h),l=h[h.length-1],o=[l,r,a,l],{time:c,color:u,...d}=s;return{Rn:i,wt:t,Nt:o,Cg:e,sn:d,R:u}}function Qs(t){return void 0!==t.Nt}function te(t,i){return void 0!==i.customValues&&(t.Ag=i.customValues),t}function ie(t){return(i,s,e,n,h,r)=>function(t,i){return i?i(t):qs(t)}(e,r)?te({wt:i,Rn:s,Cg:n},e):te(t(i,s,e,n,h),e)}function se(t){return{Candlestick:ie(Zs),Bar:ie(Xs),Area:ie(Gs),Baseline:ie(Ks),Histogram:ie(js),Line:ie(js),Custom:ie(Js)}[t]}function ee(t){return{Rn:0,Ig:new Map,Hr:t}}function ne(t,i){if(void 0!==t&&0!==t.length)return{Fg:i.key(t[0].wt),Bg:i.key(t[t.length-1].wt)}}function he(t){let i;return t.forEach(t=>{void 0===i&&(i=t.Cg)}),_(i)}class re{constructor(t){this.Lg=new Map,this.zg=new Map,this.Og=new Map,this.Wg=[],this.__=t}m(){this.Lg.clear(),this.zg.clear(),this.Og.clear(),this.Wg=[]}$g(t,i){let s=0!==this.Lg.size,e=!1;const n=this.zg.get(t);if(void 0!==n)if(1===this.zg.size)s=!1,e=!0,this.Lg.clear();else for(const i of this.Wg)i.pointData.Ig.delete(t)&&(e=!0);let h=[];if(0!==i.length){const s=i.map(t=>t.time),n=this.__.createConverterToInternalObj(i),r=se(t.Rh()),a=t.da(),l=t.pa();h=i.map((i,h)=>{const o=n(i.time),_=this.__.key(o);let c=this.Lg.get(_);void 0===c&&(c=ee(o),this.Lg.set(_,c),e=!0);const u=r(o,c.Rn,i,s[h],a,l);return c.Ig.set(t,u),u})}s&&this.Ng(),this.Hg(t,h);let r=-1;if(e){const t=[];this.Lg.forEach(i=>{t.push({timeWeight:0,time:i.Hr,pointData:i,originalTime:he(i.Ig)})}),t.sort((t,i)=>this.__.key(t.time)-this.__.key(i.time)),r=this.Ug(t)}return this.qg(t,r,function(t,i,s){const e=ne(t,s),n=ne(i,s);if(void 0!==e&&void 0!==n)return{Yg:!1,Lr:e.Bg>=n.Bg&&e.Fg>=n.Fg}}(this.zg.get(t),n,this.__))}Bu(t){return this.$g(t,[])}jg(t,i,s){const e=i;!function(t){void 0===t.Cg&&(t.Cg=t.time)}(e),this.__.preprocessData(i);const n=this.__.createConverterToInternalObj([i])(i.time),h=this.Og.get(t);if(!s&&void 0!==h&&this.__.key(n)<this.__.key(h))throw new Error(`Cannot update oldest data, last time=${h}, new time=${n}`);let r=this.Lg.get(this.__.key(n));if(s&&void 0===r)throw new Error("Cannot update non-existing data point when historicalUpdate is true");const a=void 0===r;void 0===r&&(r=ee(n),this.Lg.set(this.__.key(n),r));const l=se(t.Rh()),o=t.da(),_=t.pa(),c=l(n,r.Rn,i,e.Cg,o,_);r.Ig.set(t,c),s?this.Gg(t,c,r.Rn):this.Kg(t,c);const u={Lr:Qs(c),Yg:s};if(!a)return this.qg(t,-1,u);const d={timeWeight:0,time:r.Hr,pointData:r,originalTime:he(r.Ig)},f=Ct(this.Wg,this.__.key(d.time),(t,i)=>this.__.key(t.time)<i);this.Wg.splice(f,0,d);for(let t=f;t<this.Wg.length;++t)ae(this.Wg[t].pointData,t);return this.__.fillWeightsForPoints(this.Wg,f),this.qg(t,f,u)}Xg(t,i){const s=this.zg.get(t);if(void 0===s||i<=0)return[[],this.Zg()];i=Math.min(i,s.length);const e=s.splice(-i).reverse();0===s.length?this.Og.delete(t):this.Og.set(t,s[s.length-1].wt);for(const i of e){const s=this.Lg.get(this.__.key(i.wt));if(s&&(s.Ig.delete(t),0===s.Ig.size)){this.Lg.delete(this.__.key(s.Hr)),this.Wg.splice(s.Rn,1);for(let t=s.Rn;t<this.Wg.length;++t)ae(this.Wg[t].pointData,t)}}return[e,this.qg(t,this.Wg.length-1,{Yg:!1,Lr:!1})]}Kg(t,i){let s=this.zg.get(t);void 0===s&&(s=[],this.zg.set(t,s));const e=0!==s.length?s[s.length-1]:null;null===e||this.__.key(i.wt)>this.__.key(e.wt)?Qs(i)&&s.push(i):Qs(i)?s[s.length-1]=i:s.splice(-1,1),this.Og.set(t,i.wt)}Gg(t,i,s){const e=this.zg.get(t);if(void 0===e)return;const n=Ct(e,s,(t,i)=>t.Rn<i);Qs(i)?e[n]=i:e.splice(n,1)}Hg(t,i){0!==i.length?(this.zg.set(t,i.filter(Qs)),this.Og.set(t,i[i.length-1].wt)):(this.zg.delete(t),this.Og.delete(t))}Ng(){for(const t of this.Wg)0===t.pointData.Ig.size&&this.Lg.delete(this.__.key(t.time))}Ug(t){let i=-1;for(let s=0;s<this.Wg.length&&s<t.length;++s){const e=this.Wg[s],n=t[s];if(this.__.key(e.time)!==this.__.key(n.time)){i=s;break}n.timeWeight=e.timeWeight,ae(n.pointData,s)}if(-1===i&&this.Wg.length!==t.length&&(i=Math.min(this.Wg.length,t.length)),-1===i)return-1;for(let s=i;s<t.length;++s)ae(t[s].pointData,s);return this.__.fillWeightsForPoints(t,i),this.Wg=t,i}Jg(){if(0===this.zg.size)return null;let t=0;return this.zg.forEach(i=>{0!==i.length&&(t=Math.max(t,i[i.length-1].Rn))}),t}qg(t,i,s){const e=this.Zg();if(-1!==i)this.zg.forEach((i,n)=>{e.Oo.set(n,{sn:i,Qg:n===t?s:void 0})}),this.zg.has(t)||e.Oo.set(t,{sn:[],Qg:s}),e.Ft.tw=this.Wg,e.Ft.iw=i;else{const i=this.zg.get(t);e.Oo.set(t,{sn:i||[],Qg:s})}return e}Zg(){return{Oo:new Map,Ft:{uc:this.Jg()}}}}function ae(t,i){t.Rn=i,t.Ig.forEach(t=>{t.Rn=i})}function le(t,i){return t.wt<i}function oe(t,i){return i<t.wt}function _e(t,i,s){const e=i.Ur(),n=i.Si(),h=Ct(t,e,le),r=Tt(t,n,oe);if(!s)return{from:h,to:r};let a=h,l=r;return h>0&&h<t.length&&t[h].wt>=e&&(a=h-1),r>0&&r<t.length&&t[r-1].wt<=n&&(l=r+1),{from:a,to:l}}class ce{constructor(t,i,s){this.sw=!0,this.ew=!0,this.nw=!0,this.hw=[],this.rw=null,this.Ze=t,this.Je=i,this.aw=s}Tt(t){this.sw=!0,"data"===t&&(this.ew=!0),"options"===t&&(this.nw=!0)}Dt(){return this.Ze.Et()?(this.lw(),null===this.rw?null:this.ow):null}_w(){this.hw=this.hw.map(t=>({...t,...this.Ze.Rr().Vh(t.wt)}))}cw(){this.rw=null}lw(){this.ew&&(this.uw(),this.ew=!1),this.nw&&(this._w(),this.nw=!1),this.sw&&(this.dw(),this.sw=!1)}dw(){const t=this.Ze.$t(),i=this.Je.Ft();if(this.cw(),i.Ki()||t.Ki())return;const s=i.Cn();if(null===s)return;if(0===this.Ze.Xs().Lh())return;const e=this.Ze.Lt();null!==e&&(this.rw=_e(this.hw,s,this.aw),this.fw(t,i,e.Nt),this.pw())}}class ue{constructor(t,i){this.mw=t,this.ji=i}nt(t,i,s){this.mw.draw(t,this.ji,i,s)}}class de extends ce{constructor(t,i,s){super(t,i,!1),this.er=s,this.ow=new ue(this.er.renderer(),i=>{const s=t.Lt();return null===s?null:t.$t().Wt(i,s.Nt)})}fa(t){return this.er.priceValueBuilder(t)}va(t){return this.er.isWhitespace(t)}uw(){const t=this.Ze.Rr();this.hw=this.Ze.Xs().Hh().map(i=>({wt:i.Rn,ct:NaN,...t.Vh(i.Rn),gw:i.sn}))}fw(t,i){i.dc(this.hw,b(this.rw))}pw(){this.er.update({bars:this.hw.map(fe),barSpacing:this.Je.Ft().Mc(),visibleRange:this.rw},this.Ze.W())}}function fe(t){return{x:t.ct,time:t.wt,originalData:t.gw,barColor:t.fh}}const pe={color:"#2196f3"},ve=(t,i,s)=>{const e=u(s);return new de(t,i,e)};function me(t){const i={value:t.Nt[3],time:t.Cg};return void 0!==t.Ag&&(i.customValues=t.Ag),i}function ge(t){const i=me(t);return void 0!==t.R&&(i.color=t.R),i}function we(t){const i=me(t);return void 0!==t.gt&&(i.lineColor=t.gt),void 0!==t.wh&&(i.topColor=t.wh),void 0!==t.Mh&&(i.bottomColor=t.Mh),i}function Me(t){const i=me(t);return void 0!==t.bh&&(i.topLineColor=t.bh),void 0!==t.Sh&&(i.bottomLineColor=t.Sh),void 0!==t.xh&&(i.topFillColor1=t.xh),void 0!==t.yh&&(i.topFillColor2=t.yh),void 0!==t.Ph&&(i.bottomFillColor1=t.Ph),void 0!==t.Ch&&(i.bottomFillColor2=t.Ch),i}function be(t){const i={open:t.Nt[0],high:t.Nt[1],low:t.Nt[2],close:t.Nt[3],time:t.Cg};return void 0!==t.Ag&&(i.customValues=t.Ag),i}function Se(t){const i=be(t);return void 0!==t.R&&(i.color=t.R),i}function xe(t){const i=be(t),{R:s,Ht:e,gh:n}=t;return void 0!==s&&(i.color=s),void 0!==e&&(i.borderColor=e),void 0!==n&&(i.wickColor=n),i}function ye(t){return{Area:we,Line:ge,Baseline:Me,Histogram:ge,Bar:Se,Candlestick:xe,Custom:Pe}[t]}function Pe(t){const i=t.Cg;return{...t.sn,time:i}}const Ce={vertLine:{color:"#9598A1",width:1,style:3,visible:!0,labelVisible:!0,labelBackgroundColor:"#131722"},horzLine:{color:"#9598A1",width:1,style:3,visible:!0,labelVisible:!0,labelBackgroundColor:"#131722"},mode:1},Te={vertLines:{color:"#D6DCDE",style:0,visible:!0},horzLines:{color:"#D6DCDE",style:0,visible:!0}},ke={background:{type:"solid",color:"#FFFFFF"},textColor:"#191919",fontSize:12,fontFamily:S,panes:{enableResize:!0,separatorColor:"#E0E3EB",separatorHoverColor:"rgba(178, 181, 189, 0.2)"},attributionLogo:!0,colorSpace:"srgb",colorParsers:[]},De={autoScale:!0,mode:0,invertScale:!1,alignLabels:!0,borderVisible:!0,borderColor:"#2B2B43",entireTextOnly:!1,visible:!1,ticksVisible:!1,scaleMargins:{bottom:.1,top:.2},minimumWidth:0,ensureEdgeTickMarksVisible:!1},Re={rightOffset:0,barSpacing:6,minBarSpacing:.5,maxBarSpacing:0,fixLeftEdge:!1,fixRightEdge:!1,lockVisibleTimeRangeOnResize:!1,rightBarStaysOnScroll:!1,borderVisible:!0,borderColor:"#2B2B43",visible:!0,timeVisible:!1,secondsVisible:!0,shiftVisibleRangeOnNewBar:!0,allowShiftVisibleRangeOnWhitespaceReplacement:!1,ticksVisible:!1,uniformDistribution:!1,minimumHeight:0,allowBoldLabels:!0,ignoreWhitespaceIndices:!1};function Ve(){return{addDefaultPane:!0,width:0,height:0,autoSize:!1,layout:ke,crosshair:Ce,grid:Te,overlayPriceScales:{...De},leftPriceScale:{...De,visible:!1},rightPriceScale:{...De,visible:!0},timeScale:Re,localization:{locale:as?navigator.language:"",dateFormat:"dd MMM 'yy"},handleScroll:{mouseWheel:!0,pressedMouseMove:!0,horzTouchDrag:!0,vertTouchDrag:!0},handleScale:{axisPressedMouseMove:{time:!0,price:!0},axisDoubleClickReset:{time:!0,price:!0},mouseWheel:!0,pinch:!0},kineticScroll:{mouse:!1,touch:!0},trackingMode:{exitMode:1}}}class Ee{constructor(t,i,s){this.Hf=t,this.ww=i,this.Mw=s??0}applyOptions(t){this.Hf.ti().cu(this.ww,t,this.Mw)}options(){return this.ji().W()}width(){return X(this.ww)?this.Hf._g(this.ww):0}setVisibleRange(t){this.setAutoScale(!1),this.ji().$l(new mt(t.from,t.to))}getVisibleRange(){let t,i,s=this.ji().th();if(null===s)return null;if(this.ji().Qa()){const e=this.ji().po(),n=$i(e);s=ui(s,this.ji().il()),t=Number((Math.round(s.qn()/e)*e).toFixed(n)),i=Number((Math.round(s.Yn()/e)*e).toFixed(n))}else t=s.qn(),i=s.Yn();return{from:t,to:i}}setAutoScale(t){this.applyOptions({autoScale:t})}ji(){return c(this.Hf.ti().uu(this.ww,this.Mw)).$t}}class Ae{constructor(t,i,s,e){this.Hf=t,this.Ct=s,this.bw=i,this.Sw=e}getHeight(){return this.Ct.qt()}setHeight(t){const i=this.Hf.ti(),s=i.Uu(this.Ct);i.mu(s,t)}getStretchFactor(){return this.Ct.Ao()}setStretchFactor(t){this.Ct.Io(t),this.Hf.ti().Ir()}paneIndex(){return this.Hf.ti().Uu(this.Ct)}moveTo(t){const i=this.paneIndex();i!==t&&(o(t>=0&&t<this.Hf.qf().length,"Invalid pane index"),this.Hf.ti().wu(i,t))}getSeries(){return this.Ct.Oo().map(t=>this.bw(t))??[]}getHTMLElement(){const t=this.Hf.qf();return t&&0!==t.length&&t[this.paneIndex()]?t[this.paneIndex()].Zf():null}attachPrimitive(t){this.Ct.ca(t),t.attached&&t.attached({chart:this.Sw,requestUpdate:()=>this.Ct.ti().Ir()})}detachPrimitive(t){this.Ct.ua(t)}priceScale(t){if(null===this.Ct.Vo(t))throw new Error(`Cannot find price scale with id: ${t}`);return new Ee(this.Hf,t,this.paneIndex())}setPreserveEmptyPane(t){this.Ct.Lo(t)}preserveEmptyPane(){return this.Ct.zo()}addCustomSeries(t,i={},s=0){return this.Sw.addCustomSeries(t,i,s)}addSeries(t,i={}){return this.Sw.addSeries(t,i,this.paneIndex())}}const Ie={color:"#FF0000",price:0,lineStyle:2,lineWidth:1,lineVisible:!0,axisLabelVisible:!0,title:"",axisLabelColor:"",axisLabelTextColor:""};class Fe{constructor(t){this.sh=t}applyOptions(t){this.sh.ah(t)}options(){return this.sh.W()}xw(){return this.sh}}class Be{constructor(t,i,s,e,n,h){this.yw=new d,this.Ze=t,this.Pw=i,this.Cw=s,this.__=n,this.Sw=e,this.Tw=h}m(){this.yw.m()}priceFormatter(){return this.Ze.ha()}priceToCoordinate(t){const i=this.Ze.Lt();return null===i?null:this.Ze.$t().Wt(t,i.Nt)}coordinateToPrice(t){const i=this.Ze.Lt();return null===i?null:this.Ze.$t().Ds(t,i.Nt)}barsInLogicalRange(t){if(null===t)return null;const i=new Ei(new Di(t.from,t.to)).T_(),s=this.Ze.Xs();if(s.Ki())return null;const e=s.$h(i.Ur(),1),n=s.$h(i.Si(),-1),h=c(s.zh()),r=c(s.Ks());if(null!==e&&null!==n&&e.Rn>n.Rn)return{barsBefore:t.from-h,barsAfter:r-t.to};const a={barsBefore:null===e||e.Rn===h?t.from-h:e.Rn-h,barsAfter:null===n||n.Rn===r?r-t.to:r-n.Rn};return null!==e&&null!==n&&(a.from=e.Cg,a.to=n.Cg),a}setData(t){this.__,this.Ze.Rh(),this.Pw.kw(this.Ze,t),this.Dw("full")}update(t,i=!1){this.Ze.Rh(),this.Pw.Rw(this.Ze,t,i),this.Dw("update")}pop(t=1){const i=this.Pw.Vw(this.Ze,t);0!==i.length&&this.Dw("update");const s=ye(this.seriesType());return i.map(t=>s(t))}dataByIndex(t,i){const s=this.Ze.Xs().$h(t,i);if(null===s)return null;return ye(this.seriesType())(s)}data(){const t=ye(this.seriesType());return this.Ze.Xs().Hh().map(i=>t(i))}subscribeDataChanged(t){this.yw.i(t)}unsubscribeDataChanged(t){this.yw._(t)}applyOptions(t){this.Ze.ah(t)}options(){return w(this.Ze.W())}priceScale(){return this.Cw.priceScale(this.Ze.$t().ga(),this.getPane().paneIndex())}createPriceLine(t){const i=f(w(Ie),t),s=this.Ze.Or(i);return new Fe(s)}removePriceLine(t){this.Ze.Wr(t.xw())}priceLines(){return this.Ze.$r().map(t=>new Fe(t))}seriesType(){return this.Ze.Rh()}lastValueData(t){const i=this.Ze.Tn(t);return i.kn?{noData:!0}:{noData:!1,price:i.Mt,color:i.R}}attachPrimitive(t){this.Ze.ca(t),t.attached&&t.attached({chart:this.Sw,series:this,requestUpdate:()=>this.Ze.ti().Ir(),horzScaleBehavior:this.__})}detachPrimitive(t){this.Ze.ua(t),t.detached&&t.detached(),this.Ze.ti().Ir()}getPane(){const t=this.Ze,i=c(this.Ze.ti().$e(t));return this.Tw(i)}moveToPane(t){this.Ze.ti().Wu(this.Ze,t)}seriesOrder(){const t=this.Ze.ti().$e(this.Ze);return null===t?-1:t.Oo().indexOf(this.Ze)}setSeriesOrder(t){const i=this.Ze.ti().$e(this.Ze);null!==i&&i.t_(this.Ze,t)}Dw(t){this.yw.v()&&this.yw.p(t)}}class Le{constructor(t,i,s){this.Ew=new d,this.L_=new d,this.Mm=new d,this.ss=t,this.ur=t.Ft(),this.Zm=i,this.ur.Ic().i(this.Aw.bind(this)),this.ur.Fc().i(this.Iw.bind(this)),this.Zm.Tm().i(this.Fw.bind(this)),this.__=s}m(){this.ur.Ic().u(this),this.ur.Fc().u(this),this.Zm.Tm().u(this),this.Ew.m(),this.L_.m(),this.Mm.m()}scrollPosition(){return this.ur.Sc()}scrollToPosition(t,i){i?this.ur.Vc(t,1e3):this.ss.de(t)}scrollToRealTime(){this.ur.Rc()}getVisibleRange(){const t=this.ur.hc();return null===t?null:{from:t.from.originalTime,to:t.to.originalTime}}setVisibleRange(t){const i={from:this.__.convertHorzItemToInternal(t.from),to:this.__.convertHorzItemToInternal(t.to)},s=this.ur.oc(i);this.ss.zu(s)}getVisibleLogicalRange(){const t=this.ur.nc();return null===t?null:{from:t.Ur(),to:t.Si()}}setVisibleLogicalRange(t){o(t.from<=t.to,"The from index cannot be after the to index."),this.ss.zu(t)}resetTimeScale(){this.ss.ce()}fitContent(){this.ss.zc()}logicalToCoordinate(t){const i=this.ss.Ft();return i.Ki()?null:i.Yt(t)}coordinateToLogical(t){return this.ur.Ki()?null:this.ur.fc(t)}timeToIndex(t,i){const s=this.__.convertHorzItemToInternal(t);return this.ur.tc(s,i)}timeToCoordinate(t){const i=this.timeToIndex(t,!1);return null===i?null:this.ur.Yt(i)}coordinateToTime(t){const i=this.ss.Ft(),s=i.fc(t),e=i.es(s);return null===e?null:e.originalTime}width(){return this.Zm.Jf().width}height(){return this.Zm.Jf().height}subscribeVisibleTimeRangeChange(t){this.Ew.i(t)}unsubscribeVisibleTimeRangeChange(t){this.Ew._(t)}subscribeVisibleLogicalRangeChange(t){this.L_.i(t)}unsubscribeVisibleLogicalRangeChange(t){this.L_._(t)}subscribeSizeChange(t){this.Mm.i(t)}unsubscribeSizeChange(t){this.Mm._(t)}applyOptions(t){this.ur.ah(t)}options(){return{...w(this.ur.W()),barSpacing:this.ur.Mc()}}Aw(){this.Ew.v()&&this.Ew.p(this.getVisibleRange())}Iw(){this.L_.v()&&this.L_.p(this.getVisibleLogicalRange())}Fw(t){this.Mm.p(t.width,t.height)}}function ze(t){return function(t){if(g(t.handleScale)){const i=t.handleScale;t.handleScale={axisDoubleClickReset:{time:i,price:i},axisPressedMouseMove:{time:i,price:i},mouseWheel:i,pinch:i}}else if(void 0!==t.handleScale){const{axisPressedMouseMove:i,axisDoubleClickReset:s}=t.handleScale;g(i)&&(t.handleScale.axisPressedMouseMove={time:i,price:i}),g(s)&&(t.handleScale.axisDoubleClickReset={time:s,price:s})}const i=t.handleScroll;g(i)&&(t.handleScroll={horzTouchDrag:i,vertTouchDrag:i,mouseWheel:i,pressedMouseMove:i})}(t),t}class Oe{constructor(t,i,s){this.Bw=new Map,this.Lw=new Map,this.zw=new d,this.Ow=new d,this.Ww=new d,this.Gc=new WeakMap,this.$w=new re(i);const e=void 0===s?w(Ve()):f(w(Ve()),ze(s));this.Nw=i,this.Hf=new Hs(t,e,i),this.Hf.Xv().i(t=>{this.zw.v()&&this.zw.p(this.Hw(t()))},this),this.Hf.Zv().i(t=>{this.Ow.v()&&this.Ow.p(this.Hw(t()))},this),this.Hf.fu().i(t=>{this.Ww.v()&&this.Ww.p(this.Hw(t()))},this);const n=this.Hf.ti();this.Uw=new Le(n,this.Hf.sg(),this.Nw)}remove(){this.Hf.Xv().u(this),this.Hf.Zv().u(this),this.Hf.fu().u(this),this.Uw.m(),this.Hf.m(),this.Bw.clear(),this.Lw.clear(),this.zw.m(),this.Ow.m(),this.Ww.m(),this.$w.m()}resize(t,i,s){this.autoSizeActive()||this.Hf.Qm(t,i,s)}addCustomSeries(t,i={},s=0){const e=(t=>({type:"Custom",isBuiltIn:!1,defaultOptions:{...pe,...t.defaultOptions()},qw:ve,Yw:t}))(u(t));return this.jw(e,i,s)}addSeries(t,i={},s=0){return this.jw(t,i,s)}removeSeries(t){const i=_(this.Bw.get(t)),s=this.$w.Bu(i);this.Hf.ti().Bu(i),this.Gw(s),this.Bw.delete(t),this.Lw.delete(i)}kw(t,i){this.Gw(this.$w.$g(t,i))}Rw(t,i,s){this.Gw(this.$w.jg(t,i,s))}Vw(t,i){const[s,e]=this.$w.Xg(t,i);return 0!==s.length&&this.Gw(e),s}subscribeClick(t){this.zw.i(t)}unsubscribeClick(t){this.zw._(t)}subscribeCrosshairMove(t){this.Ww.i(t)}unsubscribeCrosshairMove(t){this.Ww._(t)}subscribeDblClick(t){this.Ow.i(t)}unsubscribeDblClick(t){this.Ow._(t)}priceScale(t,i=0){return new Ee(this.Hf,t,i)}timeScale(){return this.Uw}applyOptions(t){this.Hf.ah(ze(t))}options(){return this.Hf.W()}takeScreenshot(t=!1,i=!1){let s,e;try{i||(s=this.Hf.ti().W().crosshair.mode,this.Hf.ah({crosshair:{mode:2}})),e=this.Hf.lg(t)}finally{i||void 0===s||this.Hf.ti().ah({crosshair:{mode:s}})}return e}addPane(t=!1){const i=this.Hf.ti().qu();return i.Lo(t),this.Kw(i)}removePane(t){this.Hf.ti().vu(t)}swapPanes(t,i){this.Hf.ti().gu(t,i)}autoSizeActive(){return this.Hf.dg()}chartElement(){return this.Hf.sp()}panes(){return this.Hf.ti().qs().map(t=>this.Kw(t))}paneSize(t=0){const i=this.Hf.vg(t);return{height:i.height,width:i.width}}setCrosshairPosition(t,i,s){const e=this.Bw.get(s);if(void 0===e)return;const n=this.Hf.ti().$e(e);null!==n&&this.Hf.ti().Ru(t,i,n)}clearCrosshairPosition(){this.Hf.ti().Vu(!0)}horzBehaviour(){return this.Nw}jw(t,i={},s=0){o(void 0!==t.qw),function(t){if(void 0===t||"custom"===t.type)return;const i=t;void 0!==i.minMove&&void 0===i.precision&&(i.precision=$i(i.minMove))}(i.priceFormat),"Candlestick"===t.type&&function(t){void 0!==t.borderColor&&(t.borderUpColor=t.borderColor,t.borderDownColor=t.borderColor),void 0!==t.wickColor&&(t.wickUpColor=t.wickColor,t.wickDownColor=t.wickColor)}(i);const e=f(w(n),w(t.defaultOptions),i),h=t.qw,r=new Gt(this.Hf.ti(),t.type,e,h,t.Yw);this.Hf.ti().Iu(r,s);const a=new Be(r,this,this,this,this.Nw,t=>this.Kw(t));return this.Bw.set(a,r),this.Lw.set(r,a),a}Gw(t){const i=this.Hf.ti();i.Eu(t.Ft.uc,t.Ft.tw,t.Ft.iw),t.Oo.forEach((t,i)=>i.lt(t.sn,t.Qg)),i.Ft().K_(),i.wc()}Xw(t){return _(this.Lw.get(t))}Hw(t){const i=new Map;t.Rg.forEach((t,s)=>{const e=s.Rh(),n=ye(e)(t);if("Custom"!==e)o(Ys(n));else{const t=s.pa();o(!t||!1===t(n))}i.set(this.Xw(s),n)});const s=void 0!==t.Dg&&this.Lw.has(t.Dg)?this.Xw(t.Dg):void 0;return{time:t.Cg,logical:t.Rn,point:t.Tg,paneIndex:t.kg,hoveredSeries:s,hoveredObjectId:t.Vg,seriesData:i,sourceEvent:t.Eg}}Kw(t){let i=this.Gc.get(t);return i||(i=new Ae(this.Hf,t=>this.Xw(t),t,this),this.Gc.set(t,i)),i}}function We(t){if(m(t)){const i=document.getElementById(t);return o(null!==i,`Cannot find element in DOM with id=${t}`),i}return t}function $e(t,i,s){const e=We(t),n=new Oe(e,i,s);return i.setOptions(n.options()),n}function Ne(t,i){return $e(t,new rs,rs.od(i))}function He(){return rs}class Ue extends ce{constructor(t,i){super(t,i,!0)}fw(t,i,s){i.dc(this.hw,b(this.rw)),t.Ul(this.hw,s,b(this.rw))}Zw(t,i){return{wt:t,Mt:i,ct:NaN,ut:NaN}}uw(){const t=this.Ze.Rr();this.hw=this.Ze.Xs().Hh().map(i=>{const s=i.Nt[3];return this.Jw(i.Rn,s,t)})}}function qe(t,i,s,e,n,h,r){if(0===i.length||e.from>=i.length||e.to<=0)return;const{context:a,horizontalPixelRatio:l,verticalPixelRatio:o}=t,_=i[e.from];let c=h(t,_),u=_;if(e.to-e.from<2){const i=n/2;a.beginPath();const s={ct:_.ct-i,ut:_.ut},e={ct:_.ct+i,ut:_.ut};a.moveTo(s.ct*l,s.ut*o),a.lineTo(e.ct*l,e.ut*o),r(t,c,s,e)}else{const n=(i,s)=>{r(t,c,u,s),a.beginPath(),c=i,u=s};let d=u;a.beginPath(),a.moveTo(_.ct*l,_.ut*o);for(let r=e.from+1;r<e.to;++r){d=i[r];const e=h(t,d);switch(s){case 0:a.lineTo(d.ct*l,d.ut*o);break;case 1:a.lineTo(d.ct*l,i[r-1].ut*o),e!==c&&(n(e,d),a.lineTo(d.ct*l,i[r-1].ut*o)),a.lineTo(d.ct*l,d.ut*o);break;case 2:{const[t,s]=Ke(i,r-1,r);a.bezierCurveTo(t.ct*l,t.ut*o,s.ct*l,s.ut*o,d.ct*l,d.ut*o);break}}1!==s&&e!==c&&(n(e,d),a.moveTo(d.ct*l,d.ut*o))}(u!==d||u===d&&1===s)&&r(t,c,u,d)}}const Ye=6;function je(t,i){return{ct:t.ct-i.ct,ut:t.ut-i.ut}}function Ge(t,i){return{ct:t.ct/i,ut:t.ut/i}}function Ke(t,i,s){const e=Math.max(0,i-1),n=Math.min(t.length-1,s+1);var h,r;return[(h=t[i],r=Ge(je(t[s],t[e]),Ye),{ct:h.ct+r.ct,ut:h.ut+r.ut}),je(t[s],Ge(je(t[n],t[i]),Ye))]}function Xe(t,i){const s=t.context;s.strokeStyle=i,s.stroke()}class Ze extends D{constructor(){super(...arguments),this.rt=null}lt(t){this.rt=t}ht(t){if(null===this.rt)return;const{_t:i,ot:s,Qw:e,tM:n,dt:h,Xt:r,iM:l}=this.rt;if(null===s)return;const o=t.context;o.lineCap="butt",o.lineWidth=h*t.verticalPixelRatio,a(o,r),o.lineJoin="round";const _=this.sM.bind(this);void 0!==n&&qe(t,i,n,s,e,_,Xe),l&&function(t,i,s,e,n){if(e.to-e.from<=0)return;const{horizontalPixelRatio:h,verticalPixelRatio:r,context:a}=t;let l=null;const o=Math.max(1,Math.floor(h))%2/2,_=s*r+o;for(let s=e.to-1;s>=e.from;--s){const e=i[s];if(e){const i=n(t,e);i!==l&&(a.beginPath(),null!==l&&a.fill(),a.fillStyle=i,l=i);const s=Math.round(e.ct*h)+o,c=e.ut*r;a.moveTo(s,c),a.arc(s,c,_,0,2*Math.PI)}}a.fill()}(t,i,l,s,_)}}class Je extends Ze{sM(t,i){return i.gt}}class Qe extends Ue{constructor(){super(...arguments),this.ow=new Je}Jw(t,i,s){return{...this.Zw(t,i),...s.Vh(t)}}pw(){const t=this.Ze.W(),i={_t:this.hw,Xt:t.lineStyle,tM:t.lineVisible?t.lineType:void 0,dt:t.lineWidth,iM:t.pointMarkersVisible?t.pointMarkersRadius||t.lineWidth/2+2:void 0,ot:this.rw,Qw:this.Je.Ft().Mc()};this.ow.lt(i)}}const tn={type:"Line",isBuiltIn:!0,defaultOptions:{color:"#2196f3",lineStyle:0,lineWidth:3,lineType:0,lineVisible:!0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBorderWidth:2,crosshairMarkerBackgroundColor:"",lastPriceAnimation:0,pointMarkersVisible:!1},qw:(t,i)=>new Qe(t,i)};function sn(t,i){return t.weight>i.weight?t:i}function en(t){return t}class nn{constructor(){this.eM=new d,this.nM=function(t){let i=!1;return function(...s){i||(i=!0,queueMicrotask(()=>{t(...s),i=!1}))}}(()=>this.eM.p(this.hM)),this.hM=0}rM(){return this.eM}m(){this.eM.m()}options(){return this.Cs}setOptions(t){this.Cs=t}preprocessData(t){}updateFormatter(t){this.Cs&&(this.Cs.localization=t)}createConverterToInternalObj(t){return this.nM(),t=>(t>this.hM&&(this.hM=t),t)}key(t){return t}cacheKey(t){return t}convertHorzItemToInternal(t){return t}formatHorzItem(t){return this.aM(t)}formatTickmark(t){return this.aM(t.time)}maxTickMarkWeight(t){return t.reduce(sn,t[0]).weight}fillWeightsForPoints(t,i){const s=t=>t%120==0?10:t%60==0?9:t%36==0?8:t%12==0?7:t%6==0?6:t%3==0?5:t%1==0?4:0;for(let e=i;e<t.length;++e)t[e].timeWeight=s(en(t[e].time));this.hM=t[t.length-1].time,this.nM()}aM(t){if(this.Cs.localization?.timeFormatter)return this.Cs.localization.timeFormatter(t);if(t<12)return`${t}M`;const i=Math.floor(t/12),s=t%12;return 0===s?`${i}Y`:`${i}Y${s}M`}}const hn={yieldCurve:{baseResolution:1,minimumTimeRange:120,startTimeRange:0},timeScale:{ignoreWhitespaceIndices:!0},leftPriceScale:{visible:!0},rightPriceScale:{visible:!1},localization:{priceFormatter:t=>t.toFixed(3)+"%"}},rn={lastValueVisible:!1,priceLineVisible:!1};class an extends Oe{constructor(t,i){const s=f(hn,i||{}),e=new nn;super(t,e,s),e.setOptions(this.options()),this._initWhitespaceSeries()}addSeries(t,i={},s=0){if(t.isBuiltIn&&!1===["Area","Line"].includes(t.type))throw new Error("Yield curve only support Area and Line series");const e={...rn,...i};return super.addSeries(t,e,s)}_initWhitespaceSeries(){const t=this.horzBehaviour(),i=this.addSeries(tn);let s;function e(e){const n=function(t,i){return{ln:Math.max(0,t.startTimeRange),_n:Math.max(0,t.minimumTimeRange,i||0),lM:Math.max(1,t.baseResolution)}}(t.options().yieldCurve,e),h=(({ln:t,_n:i,lM:s})=>`${t}~${i}~${s}`)(n);h!==s&&(s=h,i.setData(function({ln:t,_n:i,lM:s}){return Array.from({length:Math.floor((i-t)/s)+1},(i,e)=>({time:t+e*s}))}(n)))}e(0),t.rM().i(e)}}function ln(t,i){const s=We(t);return new an(s,i)}function on(t,i){return t.weight>i.weight?t:i}class _n{options(){return this.Cs}setOptions(t){this.Cs=t}preprocessData(t){}updateFormatter(t){this.Cs&&(this.Cs.localization=t)}createConverterToInternalObj(t){return t=>t}key(t){return t}cacheKey(t){return t}convertHorzItemToInternal(t){return t}formatHorzItem(t){return t.toFixed(this.xe())}formatTickmark(t,i){return t.time.toFixed(this.xe())}maxTickMarkWeight(t){return t.reduce(on,t[0]).weight}fillWeightsForPoints(t,i){const s=t=>t===100*Math.ceil(t/100)?8:t===50*Math.ceil(t/50)?7:t===25*Math.ceil(t/25)?6:t===10*Math.ceil(t/10)?5:t===5*Math.ceil(t/5)?4:t===Math.ceil(t)?3:2*t===Math.ceil(2*t)?1:0;for(let e=i;e<t.length;++e)t[e].timeWeight=s(t[e].time)}xe(){return this.Cs.localization.precision}}function cn(t,i){return $e(t,new _n,i)}function un(t,i,s,e,n){const{context:h,horizontalPixelRatio:r,verticalPixelRatio:a}=i;h.lineTo(n.ct*r,t*a),h.lineTo(e.ct*r,t*a),h.closePath(),h.fillStyle=s,h.fill()}class dn extends D{constructor(){super(...arguments),this.rt=null}lt(t){this.rt=t}ht(t){if(null===this.rt)return;const{_t:i,ot:s,Qw:e,dt:n,Xt:h,tM:r}=this.rt,l=this.rt.oM??(this.rt._M?0:t.mediaSize.height);if(null===s)return;const o=t.context;o.lineCap="butt",o.lineJoin="round",o.lineWidth=n,a(o,h),o.lineWidth=1,qe(t,i,r,s,e,this.cM.bind(this),un.bind(null,l))}}class fn{uM(t,i){const s=this.dM,{fM:e,pM:n,vM:h,mM:r,oM:a,gM:l,wM:o}=i;if(void 0===this.MM||void 0===s||s.fM!==e||s.pM!==n||s.vM!==h||s.mM!==r||s.oM!==a||s.gM!==l||s.wM!==o){const{verticalPixelRatio:s}=t,_=a||l>0?s:1,c=l*_,u=o===t.bitmapSize.height?o:o*_,d=(a??0)*_,f=t.context.createLinearGradient(0,c,0,u);if(f.addColorStop(0,e),null!=a){const t=Jt((d-c)/(u-c),0,1);f.addColorStop(t,n),f.addColorStop(t,h)}f.addColorStop(1,r),this.MM=f,this.dM=i}return this.MM}}class pn extends dn{constructor(){super(...arguments),this.bM=new fn}cM(t,i){const s=this.rt;return this.bM.uM(t,{fM:i.xh,pM:i.yh,vM:i.Ph,mM:i.Ch,oM:s.oM,gM:s.gM??0,wM:s.wM??t.bitmapSize.height})}}class vn extends Ze{constructor(){super(...arguments),this.SM=new fn}sM(t,i){const s=this.rt;return this.SM.uM(t,{fM:i.bh,pM:i.bh,vM:i.Sh,mM:i.Sh,oM:s.oM,gM:s.gM??0,wM:s.wM??t.bitmapSize.height})}}class mn extends Ue{constructor(t,i){super(t,i),this.ow=new k,this.xM=new pn,this.yM=new vn,this.ow.et([this.xM,this.yM])}Jw(t,i,s){return{...this.Zw(t,i),...s.Vh(t)}}pw(){const t=this.Ze.Lt();if(null===t)return;const i=this.Ze.W(),s=this.Ze.$t().Wt(i.baseValue.price,t.Nt),e=this.Je.Ft().Mc();if(null===this.rw||0===this.hw.length)return;let n,h;if(i.relativeGradient){n=this.hw[this.rw.from].ut,h=this.hw[this.rw.from].ut;for(let t=this.rw.from;t<this.rw.to;t++){const i=this.hw[t];i.ut<n&&(n=i.ut),i.ut>h&&(h=i.ut)}}this.xM.lt({_t:this.hw,dt:i.lineWidth,Xt:i.lineStyle,tM:i.lineType,oM:s,gM:n,wM:h,_M:!1,ot:this.rw,Qw:e}),this.yM.lt({_t:this.hw,dt:i.lineWidth,Xt:i.lineStyle,tM:i.lineVisible?i.lineType:void 0,iM:i.pointMarkersVisible?i.pointMarkersRadius||i.lineWidth/2+2:void 0,oM:s,gM:n,wM:h,ot:this.rw,Qw:e})}}const gn={type:"Baseline",isBuiltIn:!0,defaultOptions:{baseValue:{type:"price",price:0},relativeGradient:!1,topFillColor1:"rgba(38, 166, 154, 0.28)",topFillColor2:"rgba(38, 166, 154, 0.05)",topLineColor:"rgba(38, 166, 154, 1)",bottomFillColor1:"rgba(239, 83, 80, 0.05)",bottomFillColor2:"rgba(239, 83, 80, 0.28)",bottomLineColor:"rgba(239, 83, 80, 1)",lineWidth:3,lineStyle:0,lineType:0,lineVisible:!0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBorderWidth:2,crosshairMarkerBackgroundColor:"",lastPriceAnimation:0,pointMarkersVisible:!1},qw:(t,i)=>new mn(t,i)};class wn extends dn{constructor(){super(...arguments),this.bM=new fn}cM(t,i){return this.bM.uM(t,{fM:i.wh,pM:"",vM:"",mM:i.Mh,gM:this.rt?.gM??0,wM:t.bitmapSize.height})}}class Mn extends Ue{constructor(t,i){super(t,i),this.ow=new k,this.PM=new wn,this.CM=new Je,this.ow.et([this.PM,this.CM])}Jw(t,i,s){return{...this.Zw(t,i),...s.Vh(t)}}pw(){const t=this.Ze.W();if(null===this.rw||0===this.hw.length)return;let i;if(t.relativeGradient){i=this.hw[this.rw.from].ut;for(let t=this.rw.from;t<this.rw.to;t++){const s=this.hw[t];s.ut<i&&(i=s.ut)}}this.PM.lt({tM:t.lineType,_t:this.hw,Xt:t.lineStyle,dt:t.lineWidth,oM:null,gM:i,_M:t.invertFilledArea,ot:this.rw,Qw:this.Je.Ft().Mc()}),this.CM.lt({tM:t.lineVisible?t.lineType:void 0,_t:this.hw,Xt:t.lineStyle,dt:t.lineWidth,ot:this.rw,Qw:this.Je.Ft().Mc(),iM:t.pointMarkersVisible?t.pointMarkersRadius||t.lineWidth/2+2:void 0})}}const bn={type:"Area",isBuiltIn:!0,defaultOptions:{topColor:"rgba( 46, 220, 135, 0.4)",bottomColor:"rgba( 40, 221, 100, 0)",invertFilledArea:!1,relativeGradient:!1,lineColor:"#33D778",lineStyle:0,lineWidth:3,lineType:0,lineVisible:!0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBorderWidth:2,crosshairMarkerBackgroundColor:"",lastPriceAnimation:0,pointMarkersVisible:!1},qw:(t,i)=>new Mn(t,i)};class Sn extends D{constructor(){super(...arguments),this.jt=null,this.TM=0,this.kM=0}lt(t){this.jt=t}ht({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.jt||0===this.jt.Xs.length||null===this.jt.ot)return;if(this.TM=this.DM(i),this.TM>=2){Math.max(1,Math.floor(i))%2!=this.TM%2&&this.TM--}this.kM=this.jt.RM?Math.min(this.TM,Math.floor(i)):this.TM;let e=null;const n=this.kM<=this.TM&&this.jt.Mc>=Math.floor(1.5*i);for(let h=this.jt.ot.from;h<this.jt.ot.to;++h){const r=this.jt.Xs[h];e!==r.fh&&(t.fillStyle=r.fh,e=r.fh);const a=Math.floor(.5*this.kM),l=Math.round(r.ct*i),o=l-a,_=this.kM,c=o+_-1,u=Math.min(r.Gl,r.Kl),d=Math.max(r.Gl,r.Kl),f=Math.round(u*s)-a,p=Math.round(d*s)+a,v=Math.max(p-f,this.kM);t.fillRect(o,f,_,v);const m=Math.ceil(1.5*this.TM);if(n){if(this.jt.VM){const i=l-m;let e=Math.max(f,Math.round(r.jl*s)-a),n=e+_-1;n>f+v-1&&(n=f+v-1,e=n-_+1),t.fillRect(i,e,o-i,n-e+1)}const i=l+m;let e=Math.max(f,Math.round(r.Xl*s)-a),n=e+_-1;n>f+v-1&&(n=f+v-1,e=n-_+1),t.fillRect(c+1,e,i-c,n-e+1)}}}DM(t){const i=Math.floor(t);return Math.max(i,Math.floor(function(t,i){return Math.floor(.3*t*i)}(c(this.jt).Mc,t)))}}class xn extends ce{constructor(t,i){super(t,i,!1)}fw(t,i,s){i.dc(this.hw,b(this.rw)),t.Yl(this.hw,s,b(this.rw))}EM(t,i,s){return{wt:t,Yr:i.Nt[0],jr:i.Nt[1],Gr:i.Nt[2],Kr:i.Nt[3],ct:NaN,jl:NaN,Gl:NaN,Kl:NaN,Xl:NaN}}uw(){const t=this.Ze.Rr();this.hw=this.Ze.Xs().Hh().map(i=>this.Jw(i.Rn,i,t))}}class yn extends xn{constructor(){super(...arguments),this.ow=new Sn}Jw(t,i,s){return{...this.EM(t,i,s),...s.Vh(t)}}pw(){const t=this.Ze.W();this.ow.lt({Xs:this.hw,Mc:this.Je.Ft().Mc(),VM:t.openVisible,RM:t.thinBars,ot:this.rw})}}const Pn={type:"Bar",isBuiltIn:!0,defaultOptions:{upColor:"#26a69a",downColor:"#ef5350",openVisible:!0,thinBars:!0},qw:(t,i)=>new yn(t,i)};class Cn extends D{constructor(){super(...arguments),this.jt=null,this.TM=0}lt(t){this.jt=t}ht(t){if(null===this.jt||0===this.jt.Xs.length||null===this.jt.ot)return;const{horizontalPixelRatio:i}=t;if(this.TM=function(t,i){if(t>=2.5&&t<=4)return Math.floor(3*i);const s=1-.2*Math.atan(Math.max(4,t)-4)/(.5*Math.PI),e=Math.floor(t*s*i),n=Math.floor(t*i),h=Math.min(e,n);return Math.max(Math.floor(i),h)}(this.jt.Mc,i),this.TM>=2){Math.floor(i)%2!=this.TM%2&&this.TM--}const s=this.jt.Xs;this.jt.AM&&this.IM(t,s,this.jt.ot),this.jt.bi&&this.uv(t,s,this.jt.ot);const e=this.FM(i);(!this.jt.bi||this.TM>2*e)&&this.BM(t,s,this.jt.ot)}IM(t,i,s){if(null===this.jt)return;const{context:e,horizontalPixelRatio:n,verticalPixelRatio:h}=t;let r="",a=Math.min(Math.floor(n),Math.floor(this.jt.Mc*n));a=Math.max(Math.floor(n),Math.min(a,this.TM));const l=Math.floor(.5*a);let o=null;for(let t=s.from;t<s.to;t++){const s=i[t];s.mh!==r&&(e.fillStyle=s.mh,r=s.mh);const _=Math.round(Math.min(s.jl,s.Xl)*h),c=Math.round(Math.max(s.jl,s.Xl)*h),u=Math.round(s.Gl*h),d=Math.round(s.Kl*h);let f=Math.round(n*s.ct)-l;const p=f+a-1;null!==o&&(f=Math.max(o+1,f),f=Math.min(f,p));const v=p-f+1;e.fillRect(f,u,v,_-u),e.fillRect(f,c+1,v,d-c),o=p}}FM(t){let i=Math.floor(1*t);this.TM<=2*i&&(i=Math.floor(.5*(this.TM-1)));const s=Math.max(Math.floor(t),i);return this.TM<=2*s?Math.max(Math.floor(t),Math.floor(1*t)):s}uv(t,i,s){if(null===this.jt)return;const{context:e,horizontalPixelRatio:n,verticalPixelRatio:h}=t;let r="";const a=this.FM(n);let l=null;for(let t=s.from;t<s.to;t++){const s=i[t];s.ph!==r&&(e.fillStyle=s.ph,r=s.ph);let o=Math.round(s.ct*n)-Math.floor(.5*this.TM);const _=o+this.TM-1,c=Math.round(Math.min(s.jl,s.Xl)*h),u=Math.round(Math.max(s.jl,s.Xl)*h);if(null!==l&&(o=Math.max(l+1,o),o=Math.min(o,_)),this.jt.Mc*n>2*a)B(e,o,c,_-o+1,u-c+1,a);else{const t=_-o+1;e.fillRect(o,c,t,u-c+1)}l=_}}BM(t,i,s){if(null===this.jt)return;const{context:e,horizontalPixelRatio:n,verticalPixelRatio:h}=t;let r="";const a=this.FM(n);for(let t=s.from;t<s.to;t++){const s=i[t];let l=Math.round(Math.min(s.jl,s.Xl)*h),o=Math.round(Math.max(s.jl,s.Xl)*h),_=Math.round(s.ct*n)-Math.floor(.5*this.TM),c=_+this.TM-1;if(s.fh!==r){const t=s.fh;e.fillStyle=t,r=t}this.jt.bi&&(_+=a,l+=a,c-=a,o-=a),l>o||e.fillRect(_,l,c-_+1,o-l+1)}}}class Tn extends xn{constructor(){super(...arguments),this.ow=new Cn}Jw(t,i,s){return{...this.EM(t,i,s),...s.Vh(t)}}pw(){const t=this.Ze.W();this.ow.lt({Xs:this.hw,Mc:this.Je.Ft().Mc(),AM:t.wickVisible,bi:t.borderVisible,ot:this.rw})}}const kn={type:"Candlestick",isBuiltIn:!0,defaultOptions:{upColor:"#26a69a",downColor:"#ef5350",wickVisible:!0,borderVisible:!0,borderColor:"#378658",borderUpColor:"#26a69a",borderDownColor:"#ef5350",wickColor:"#737375",wickUpColor:"#26a69a",wickDownColor:"#ef5350"},qw:(t,i)=>new Tn(t,i)};class Dn extends D{constructor(){super(...arguments),this.jt=null,this.LM=[]}lt(t){this.jt=t,this.LM=[]}ht({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.jt||0===this.jt._t.length||null===this.jt.ot)return;this.LM.length||this.zM(i);const e=Math.max(1,Math.floor(s)),n=Math.round(this.jt.OM*s)-Math.floor(e/2),h=n+e;for(let i=this.jt.ot.from;i<this.jt.ot.to;i++){const r=this.jt._t[i],a=this.LM[i-this.jt.ot.from],l=Math.round(r.ut*s);let o,_;t.fillStyle=r.fh,l<=n?(o=l,_=h):(o=n,_=l-Math.floor(e/2)+e),t.fillRect(a.Ur,o,a.Si-a.Ur+1,_-o)}}zM(t){if(null===this.jt||0===this.jt._t.length||null===this.jt.ot)return void(this.LM=[]);const i=Math.ceil(this.jt.Mc*t)<=1?0:Math.max(1,Math.floor(t)),s=Math.round(this.jt.Mc*t)-i;this.LM=new Array(this.jt.ot.to-this.jt.ot.from);for(let i=this.jt.ot.from;i<this.jt.ot.to;i++){const e=this.jt._t[i],n=Math.round(e.ct*t);let h,r;if(s%2){const t=(s-1)/2;h=n-t,r=n+t}else{const t=s/2;h=n-t,r=n+t-1}this.LM[i-this.jt.ot.from]={Ur:h,Si:r,WM:n,en:e.ct*t,wt:e.wt}}for(let t=this.jt.ot.from+1;t<this.jt.ot.to;t++){const s=this.LM[t-this.jt.ot.from],e=this.LM[t-this.jt.ot.from-1];s.wt===e.wt+1&&(s.Ur-e.Si!==i+1&&(e.WM>e.en?e.Si=s.Ur-i-1:s.Ur=e.Si+i+1))}let e=Math.ceil(this.jt.Mc*t);for(let t=this.jt.ot.from;t<this.jt.ot.to;t++){const i=this.LM[t-this.jt.ot.from];i.Si<i.Ur&&(i.Si=i.Ur);const s=i.Si-i.Ur+1;e=Math.min(s,e)}if(i>0&&e<4)for(let t=this.jt.ot.from;t<this.jt.ot.to;t++){const i=this.LM[t-this.jt.ot.from];i.Si-i.Ur+1>e&&(i.WM>i.en?i.Si-=1:i.Ur+=1)}}}class Rn extends Ue{constructor(){super(...arguments),this.ow=new Dn}Jw(t,i,s){return{...this.Zw(t,i),...s.Vh(t)}}pw(){const t={_t:this.hw,Mc:this.Je.Ft().Mc(),ot:this.rw,OM:this.Ze.$t().Wt(this.Ze.W().base,c(this.Ze.Lt()).Nt)};this.ow.lt(t)}}const Vn={type:"Histogram",isBuiltIn:!0,defaultOptions:{color:"#26a69a",base:0},qw:(t,i)=>new Rn(t,i)};class En{constructor(t,i){this.Ct=t,this.$M=i,this.NM()}detach(){this.Ct.detachPrimitive(this.$M)}getPane(){return this.Ct}applyOptions(t){this.$M.ah?.(t)}NM(){this.Ct.attachPrimitive(this.$M)}}const An={visible:!0,horzAlign:"center",vertAlign:"center",lines:[]},In={color:"rgba(0, 0, 0, 0.5)",fontSize:48,fontFamily:S,fontStyle:"",text:""};class Fn{constructor(t){this.HM=new Map,this.jt=t}draw(t){t.useMediaCoordinateSpace(t=>{if(!this.jt.visible)return;const{context:i,mediaSize:s}=t;let e=0;for(const t of this.jt.lines){if(0===t.text.length)continue;i.font=t.T;const n=this.UM(i,t.text);n>s.width?t.Tc=s.width/n:t.Tc=1,e+=t.lineHeight*t.Tc}let n=0;switch(this.jt.vertAlign){case"top":n=0;break;case"center":n=Math.max((s.height-e)/2,0);break;case"bottom":n=Math.max(s.height-e,0)}for(const t of this.jt.lines){i.save(),i.fillStyle=t.color;let e=0;switch(this.jt.horzAlign){case"left":i.textAlign="left",e=t.lineHeight/2;break;case"center":i.textAlign="center",e=s.width/2;break;case"right":i.textAlign="right",e=s.width-1-t.lineHeight/2}i.translate(e,n),i.textBaseline="top",i.font=t.T,i.scale(t.Tc,t.Tc),i.fillText(t.text,0,t.qM),i.restore(),n+=t.lineHeight*t.Tc}})}UM(t,i){const s=this.YM(t.font);let e=s.get(i);return void 0===e&&(e=t.measureText(i).width,s.set(i,e)),e}YM(t){let i=this.HM.get(t);return void 0===i&&(i=new Map,this.HM.set(t,i)),i}}class Bn{constructor(t){this.Cs=zn(t)}Tt(t){this.Cs=zn(t)}renderer(){return new Fn(this.Cs)}}function Ln(t){return{...t,T:x(t.fontSize,t.fontFamily,t.fontStyle),lineHeight:t.lineHeight||1.2*t.fontSize,qM:0,Tc:0}}function zn(t){return{...t,lines:t.lines.map(Ln)}}function On(t){return{...In,...t}}function Wn(t){return{...An,...t,lines:t.lines?.map(On)??[]}}class $n{constructor(t){this.Cs=Wn(t),this.jM=[new Bn(this.Cs)]}updateAllViews(){this.jM.forEach(t=>t.Tt(this.Cs))}paneViews(){return this.jM}attached({requestUpdate:t}){this.GM=t}detached(){this.GM=void 0}ah(t){this.Cs=Wn({...this.Cs,...t}),this.GM&&this.GM()}}function Nn(t,i){return new En(t,new $n(i))}const Hn={alpha:1,padding:0};class Un{constructor(t){this.jt=t}draw(t){t.useMediaCoordinateSpace(t=>{const i=t.context,s=this.KM(this.jt,t.mediaSize);s&&this.jt.XM&&(i.globalAlpha=this.jt.alpha??1,i.drawImage(this.jt.XM,s.ct,s.ut,s.ts,s.qt))})}KM(t,i){const{maxHeight:s,maxWidth:e,ZM:n,JM:h,padding:r}=t,a=Math.round(i.width/2),l=Math.round(i.height/2),o=r??0;let _=i.width-2*o,c=i.height-2*o;s&&(c=Math.min(c,s)),e&&(_=Math.min(_,e));const u=_/h,d=c/n,f=Math.min(u,d),p=h*f,v=n*f;return{ct:a-.5*p,ut:l-.5*v,qt:v,ts:p}}}class qn{constructor(t){this.QM=null,this.tb=0,this.ib=0,this.Cs=t,this.M=Yn(this.Cs,this.QM,this.tb,this.ib)}sb(t){void 0!==t.eb&&(this.tb=t.eb),void 0!==t.nb&&(this.ib=t.nb),void 0!==t.hb&&(this.QM=t.hb),this.Tt()}rb(t){this.Cs=t,this.Tt()}zOrder(){return"bottom"}Tt(){this.M=Yn(this.Cs,this.QM,this.tb,this.ib)}renderer(){return new Un(this.M)}}function Yn(t,i,s,e){return{...t,XM:i,JM:s,ZM:e}}function jn(t){return{...Hn,...t}}class Gn{constructor(t,i){this.ab=null,this.lb=t,this.Cs=jn(i),this.jM=[new qn(this.Cs)]}updateAllViews(){this.jM.forEach(t=>t.Tt())}paneViews(){return this.jM}attached(t){const{requestUpdate:i}=t;this.ob=i,this.ab=new Image,this.ab.onload=()=>{const t=this.ab?.naturalHeight??1,i=this.ab?.naturalWidth??1;this.jM.forEach(s=>s.sb({nb:t,eb:i,hb:this.ab})),this.ob&&this.ob()},this.ab.src=this.lb}detached(){this.ob=void 0,this.ab=null}ah(t){this.Cs=jn({...this.Cs,...t}),this._b(),this.GM&&this.GM()}GM(){this.ob&&this.ob()}_b(){this.jM.forEach(t=>t.rb(this.Cs))}}function Kn(t,i,s){return new En(t,new Gn(i,s))}class Xn{constructor(t,i){this.Ze=t,this.lr=i,this.NM()}detach(){this.Ze.detachPrimitive(this.lr)}getSeries(){return this.Ze}applyOptions(t){this.lr&&this.lr.ah&&this.lr.ah(t)}NM(){this.Ze.attachPrimitive(this.lr)}}const Zn={autoScale:!0,zOrder:"normal"};function Jn(t,i){return ti(Math.min(Math.max(t,12),30)*i)}function Qn(t,i){switch(t){case"arrowDown":case"arrowUp":return Jn(i,1);case"circle":return Jn(i,.8);case"square":return Jn(i,.7)}}function th(t){return function(t){const i=Math.ceil(t);return i%2!=0?i-1:i}(Jn(t,1))}function ih(t){return Math.max(Jn(t,.1),3)}function sh(t,i,s){return i?t:s?Math.ceil(t/2):0}function eh(t,i,s,e){const n=(Qn("arrowUp",e)-1)/2*s.cb,h=(ti(e/2)-1)/2*s.cb;i.beginPath(),t?(i.moveTo(s.ct-n,s.ut),i.lineTo(s.ct,s.ut-n),i.lineTo(s.ct+n,s.ut),i.lineTo(s.ct+h,s.ut),i.lineTo(s.ct+h,s.ut+n),i.lineTo(s.ct-h,s.ut+n),i.lineTo(s.ct-h,s.ut)):(i.moveTo(s.ct-n,s.ut),i.lineTo(s.ct,s.ut+n),i.lineTo(s.ct+n,s.ut),i.lineTo(s.ct+h,s.ut),i.lineTo(s.ct+h,s.ut-n),i.lineTo(s.ct-h,s.ut-n),i.lineTo(s.ct-h,s.ut)),i.fill()}function nh(t,i,s,e,n,h){const r=(Qn("arrowUp",e)-1)/2,a=(ti(e/2)-1)/2;if(n>=i-a-2&&n<=i+a+2&&h>=(t?s:s-r)-2&&h<=(t?s+r:s)+2)return!0;return(()=>{if(n<i-r-3||n>i+r+3||h<(t?s-r-3:s)||h>(t?s:s+r+3))return!1;const e=Math.abs(n-i);return Math.abs(h-s)+3>=e/2})()}class hh{constructor(){this.jt=null,this.Le=new ht,this.$=-1,this.N="",this.Np="",this.ub="normal"}lt(t){this.jt=t}ze(t,i,s){this.$===t&&this.N===i||(this.$=t,this.N=i,this.Np=x(t,i),this.Le.Ve()),this.ub=s}Ye(t,i){if(null===this.jt||null===this.jt.ot)return null;for(let s=this.jt.ot.from;s<this.jt.ot.to;s++){const e=this.jt._t[s];if(e&&ah(e,t,i))return{zOrder:"normal",externalId:e.je??""}}return null}draw(t){"aboveSeries"!==this.ub&&t.useBitmapCoordinateSpace(t=>{this.ht(t)})}drawBackground(t){"aboveSeries"===this.ub&&t.useBitmapCoordinateSpace(t=>{this.ht(t)})}ht({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null!==this.jt&&null!==this.jt.ot){t.textBaseline="middle",t.font=this.Np;for(let e=this.jt.ot.from;e<this.jt.ot.to;e++){const n=this.jt._t[e];void 0!==n.ri&&(n.ri.ts=this.Le.Ei(t,n.ri.fb),n.ri.qt=this.$,n.ri.ct=n.ct-n.ri.ts/2),rh(n,t,i,s)}}}}function rh(t,i,s,e){i.fillStyle=t.R,void 0!==t.ri&&function(t,i,s,e,n,h){t.save(),t.scale(n,h),t.fillText(i,s,e),t.restore()}(i,t.ri.fb,t.ri.ct,t.ri.ut,s,e),function(t,i,s){if(0===t.Lh)return;switch(t.pb){case"arrowDown":return void eh(!1,i,s,t.Lh);case"arrowUp":return void eh(!0,i,s,t.Lh);case"circle":return void function(t,i,s){const e=(Qn("circle",s)-1)/2;t.beginPath(),t.arc(i.ct,i.ut,e*i.cb,0,2*Math.PI,!1),t.fill()}(i,s,t.Lh);case"square":return void function(t,i,s){const e=Qn("square",s),n=(e-1)*i.cb/2,h=i.ct-n,r=i.ut-n;t.fillRect(h,r,e*i.cb,e*i.cb)}(i,s,t.Lh)}t.pb}(t,i,function(t,i,s){const e=Math.max(1,Math.floor(i))%2/2;return{ct:Math.round(t.ct*i)+e,ut:t.ut*s,cb:i}}(t,s,e))}function ah(t,i,s){return!(void 0===t.ri||!function(t,i,s,e,n,h){const r=e/2;return n>=t&&n<=t+s&&h>=i-r&&h<=i+r}(t.ri.ct,t.ri.ut,t.ri.ts,t.ri.qt,i,s))||function(t,i,s){if(0===t.Lh)return!1;switch(t.pb){case"arrowDown":return nh(!0,t.ct,t.ut,t.Lh,i,s);case"arrowUp":return nh(!1,t.ct,t.ut,t.Lh,i,s);case"circle":return function(t,i,s,e,n){const h=2+Qn("circle",s)/2,r=t-e,a=i-n;return Math.sqrt(r*r+a*a)<=h}(t.ct,t.ut,t.Lh,i,s);case"square":return function(t,i,s,e,n){const h=Qn("square",s),r=(h-1)/2,a=t-r,l=i-r;return e>=a&&e<=a+h&&n>=l&&n<=l+h}(t.ct,t.ut,t.Lh,i,s)}}(t,i,s)}function lh(t){return"atPriceTop"===t||"atPriceBottom"===t||"atPriceMiddle"===t}function oh(t,i,s,e,n,h,r,a){const l=function(t,i,s){if(lh(i.position)&&void 0!==i.price)return i.price;if("value"in(e=t)&&"number"==typeof e.value)return t.value;var e;if(function(t){return"open"in t&&"high"in t&&"low"in t&&"close"in t}(t)){if("inBar"===i.position)return t.close;if("aboveBar"===i.position)return s?t.low:t.high;if("belowBar"===i.position)return s?t.high:t.low}}(s,i,r.priceScale().options().invertScale);if(void 0===l)return;const o=lh(i.position),_=a.timeScale(),u=p(i.size)?Math.max(i.size,0):1,d=th(_.options().barSpacing)*u,f=d/2;t.Lh=d;switch(i.position){case"inBar":case"atPriceMiddle":return t.ut=c(r.priceToCoordinate(l)),void(void 0!==t.ri&&(t.ri.ut=t.ut+f+h+.6*n));case"aboveBar":case"atPriceTop":{const i=o?0:e.mb;return t.ut=c(r.priceToCoordinate(l))-f-i,void 0!==t.ri&&(t.ri.ut=t.ut-f-.6*n,e.mb+=1.2*n),void(o||(e.mb+=d+h))}case"belowBar":case"atPriceBottom":{const i=o?0:e.gb;return t.ut=c(r.priceToCoordinate(l))+f+i,void 0!==t.ri&&(t.ri.ut=t.ut+f+h+.6*n,e.gb+=1.2*n),void(o||(e.gb+=d+h))}}}class _h{constructor(t,i,s){this.wb=[],this.yt=!0,this.Mb=!0,this.Jt=new hh,this.Mn=t,this.Ep=i,this.jt={_t:[],ot:null},this.Cs=s}renderer(){if(!this.Mn.options().visible)return null;this.yt&&this.bb();const t=this.Ep.options().layout;return this.Jt.ze(t.fontSize,t.fontFamily,this.Cs.zOrder),this.Jt.lt(this.jt),this.Jt}Sb(t){this.wb=t,this.Tt("data")}Tt(t){this.yt=!0,"data"===t&&(this.Mb=!0)}xb(t){this.yt=!0,this.Cs=t}zOrder(){return"aboveSeries"===this.Cs.zOrder?"top":this.Cs.zOrder}bb(){const t=this.Ep.timeScale(),i=this.wb;this.Mb&&(this.jt._t=i.map(t=>({wt:t.time,ct:0,ut:0,Lh:0,pb:t.shape,R:t.color,je:t.id,yb:t.yb,ri:void 0})),this.Mb=!1);const s=this.Ep.options().layout;this.jt.ot=null;const e=t.getVisibleLogicalRange();if(null===e)return;const n=new Di(Math.floor(e.from),Math.ceil(e.to));if(null===this.Mn.data()[0])return;if(0===this.jt._t.length)return;let h=NaN;const r=ih(t.options().barSpacing),a={mb:r,gb:r};this.jt.ot=_e(this.jt._t,n,!0);for(let e=this.jt.ot.from;e<this.jt.ot.to;e++){const n=i[e];n.time!==h&&(a.mb=r,a.gb=r,h=n.time);const l=this.jt._t[e];l.ct=c(t.logicalToCoordinate(n.time)),void 0!==n.text&&n.text.length>0&&(l.ri={fb:n.text,ct:0,ut:0,ts:0,qt:0});const o=this.Mn.dataByIndex(n.time,0);null!==o&&oh(l,n,o,a,s.fontSize,r,this.Mn,this.Ep)}this.yt=!1}}function ch(t){return{...Zn,...t}}class uh{constructor(t){this.er=null,this.wb=[],this.Pb=[],this.Cb=null,this.Mn=null,this.Ep=null,this.Tb=!0,this.kb=null,this.Db=null,this.Rb=null,this.Vb=!0,this.Cs=ch(t)}attached(t){this.Eb(),this.Ep=t.chart,this.Mn=t.series,this.er=new _h(this.Mn,c(this.Ep),this.Cs),this.ob=t.requestUpdate,this.Mn.subscribeDataChanged(t=>this.Dw(t)),this.Vb=!0,this.GM()}GM(){this.ob&&this.ob()}detached(){this.Mn&&this.Cb&&this.Mn.unsubscribeDataChanged(this.Cb),this.Ep=null,this.Mn=null,this.er=null,this.Cb=null}Sb(t){this.Vb=!0,this.wb=t,this.Eb(),this.Tb=!0,this.Db=null,this.GM()}Ab(){return this.wb}paneViews(){return this.er?[this.er]:[]}updateAllViews(){this.Ib()}hitTest(t,i){return this.er?this.er.renderer()?.Ye(t,i)??null:null}autoscaleInfo(t,i){if(this.Cs.autoScale&&this.er){const t=this.Fb();if(t)return{priceRange:null,margins:t}}return null}ah(t){this.Cs=ch({...this.Cs,...t}),this.GM&&this.GM()}Fb(){const t=c(this.Ep).timeScale().options().barSpacing;if(this.Tb||t!==this.Rb){if(this.Rb=t,this.wb.length>0){const i=ih(t),s=1.5*th(t)+2*i,e=this.Bb();this.kb={above:sh(s,e.aboveBar,e.inBar),below:sh(s,e.belowBar,e.inBar)}}else this.kb=null;this.Tb=!1}return this.kb}Bb(){return null===this.Db&&(this.Db=this.wb.reduce((t,i)=>(t[i.position]||(t[i.position]=!0),t),{inBar:!1,aboveBar:!1,belowBar:!1,atPriceTop:!1,atPriceBottom:!1,atPriceMiddle:!1})),this.Db}Eb(){if(!this.Vb||!this.Ep||!this.Mn)return;const t=this.Ep.timeScale(),i=this.Mn?.data();if(null==t.getVisibleLogicalRange()||!this.Mn||0===i.length)return void(this.Pb=[]);const s=t.timeToIndex(c(i[0].time),!0);this.Pb=this.wb.map((i,e)=>{const n=t.timeToIndex(i.time,!0),h=n<s?1:-1,r=c(this.Mn).dataByIndex(n,h),a={time:t.timeToIndex(c(r).time,!1),position:i.position,shape:i.shape,color:i.color,id:i.id,yb:e,text:i.text,size:i.size,price:i.price,Cg:i.time};if("atPriceTop"===i.position||"atPriceBottom"===i.position||"atPriceMiddle"===i.position){if(void 0===i.price)throw new Error(`Price is required for position ${i.position}`);return{...a,position:i.position,price:i.price}}return{...a,position:i.position,price:i.price}}),this.Vb=!1}Ib(t){this.er&&(this.Eb(),this.er.Sb(this.Pb),this.er.xb(this.Cs),this.er.Tt(t))}Dw(t){this.Vb=!0,this.GM()}}class dh extends Xn{constructor(t,i,s){super(t,i),s&&this.setMarkers(s)}setMarkers(t){this.lr.Sb(t)}markers(){return this.lr.Ab()}}function fh(t,i,s){const e=new dh(t,new uh(s??{}));return i&&e.setMarkers(i),e}class ph{constructor(t){this.wb=new Map,this.Lb=t}zb(t,i,s){if(this.Ob(i),void 0!==s){const e=window.setTimeout(()=>{this.wb.delete(i),this.Wb()},s),n={...t,$b:e,Nb:Date.now()+s};this.wb.set(i,n)}else this.wb.set(i,{...t,$b:void 0,Nb:void 0});this.Wb()}Ob(t){const i=this.wb.get(t);i&&void 0!==i.$b&&window.clearTimeout(i.$b),this.wb.delete(t),this.Wb()}Hb(){for(const[t]of this.wb)this.Ob(t)}Ub(){const t=Date.now(),i=[];for(const[s,e]of this.wb)!e.Nb||e.Nb>t?i.push({time:e.time,sign:e.sign,value:e.value}):this.Ob(s);return i}qb(t){this.Lb=t}Wb(){this.Lb&&this.Lb()}}const vh={positiveColor:"#22AB94",negativeColor:"#F7525F",updateVisibilityDuration:5e3};class mh{constructor(t,i,s,e){this.jt=t,this.Yb=i,this.jb=s,this.Gb=e}draw(t){t.useBitmapCoordinateSpace(t=>{const i=t.context,s=Math.max(1,Math.floor(t.horizontalPixelRatio))%2/2,e=4*t.verticalPixelRatio+s;this.jt.forEach(n=>{const h=Math.round(n.ct*t.horizontalPixelRatio)+s;i.beginPath();const r=this.Kb(n.Xb);i.fillStyle=r,i.arc(h,n.ut*t.verticalPixelRatio,e,0,2*Math.PI,!1),i.fill(),n.Xb&&(i.strokeStyle=r,i.lineWidth=Math.floor(2*t.horizontalPixelRatio),i.beginPath(),i.moveTo((n.ct-4.7)*t.horizontalPixelRatio+s,(n.ut-7*n.Xb)*t.verticalPixelRatio),i.lineTo(n.ct*t.horizontalPixelRatio+s,(n.ut-7*n.Xb-7*n.Xb*.5)*t.verticalPixelRatio),i.lineTo((n.ct+4.7)*t.horizontalPixelRatio+s,(n.ut-7*n.Xb)*t.verticalPixelRatio),i.stroke())})})}Kb(t){return 0===t?this.Yb:t>0?this.Gb:this.jb}}class gh{constructor(t,i,s){this.jt=[],this.Mn=t,this.ur=i,this.Cs=s}Tt(t){this.jt=t.map(t=>{const i=this.Mn.priceToCoordinate(t.value);if(null===i)return null;return{ct:c(this.ur.timeToCoordinate(t.time)),ut:i,Xb:t.sign}}).filter(M)}renderer(){const t=function(t,i){return function(t,i){return"Area"===i}(0,i)?t.lineColor:t.color}(this.Mn.options(),this.Mn.seriesType());return new mh(this.jt,t,this.Cs.negativeColor,this.Cs.positiveColor)}}function wh(t,i){return"Line"===i||"Area"===i}class Mh{constructor(t){this.Ep=void 0,this.Mn=void 0,this.jM=[],this.__=null,this.Zb=new Map,this.Jb=new ph(()=>this.GM()),this.Cs={...vh,...t}}ah(t){this.Cs={...this.Cs,...t},this.GM()}Sb(t){this.Jb.Hb();const i=this.__;i&&t.forEach(t=>{this.Jb.zb(t,i.key(t.time))})}Ab(){return this.Jb.Ub()}GM(){this.ob?.()}attached(t){const{chart:i,series:s,requestUpdate:e,horzScaleBehavior:n}=t;this.Ep=i,this.Mn=s,this.__=n;const h=this.Mn.seriesType();if("Area"!==h&&"Line"!==h)throw new Error("UpDownMarkersPrimitive is only supported for Area and Line series types");this.jM=[new gh(this.Mn,this.Ep.timeScale(),this.Cs)],this.ob=e,this.GM()}detached(){this.Ep=void 0,this.Mn=void 0,this.ob=void 0}Yp(){return _(this.Ep)}Oo(){return _(this.Mn)}updateAllViews(){this.jM.forEach(t=>t.Tt(this.Ab()))}paneViews(){return this.jM}lt(t){if(!this.Mn)throw new Error("Primitive not attached to series");const i=this.Mn.seriesType();this.Zb.clear();const s=this.__;s&&t.forEach(t=>{Ys(t)&&wh(0,i)&&this.Zb.set(s.key(t.time),t.value)}),_(this.Mn).setData(t)}Tt(t,i){if(!this.Mn||!this.__)throw new Error("Primitive not attached to series");const s=this.Mn.seriesType(),e=this.__.key(t.time);if(qs(t)&&this.Zb.delete(e),Ys(t)&&wh(0,s)){const i=this.Zb.get(e);i&&this.Jb.zb({time:t.time,value:t.value,sign:bh(t.value,i)},e,this.Cs.updateVisibilityDuration)}_(this.Mn).update(t,i)}Qb(){this.Jb.Hb()}}function bh(t,i){return t===i?0:t-i>0?1:-1}class Sh extends Xn{setData(t){return this.lr.lt(t)}update(t,i){return this.lr.Tt(t,i)}markers(){return this.lr.Ab()}setMarkers(t){return this.lr.Sb(t)}clearMarkers(){return this.lr.Qb()}}function xh(t,i={}){return new Sh(t,new Mh(i))}class yh{constructor(t,i){this.tS=null,this.iS=[],this.Cs={longColors:{entry:i?.longColors?.entry??"#26a69a",exit:i?.longColors?.exit??"#ef5350"},shortColors:{entry:i?.shortColors?.entry??"#ef5350",exit:i?.shortColors?.exit??"#26a69a"},defaultSize:i?.defaultSize??1,entryOffset:i?.entryOffset??0,exitOffset:i?.exitOffset??0},this.tS=fh(t)}addPosition(t){this.iS.push(t),this.sS()}addPositions(t){this.iS.push(...t),this.sS()}setPositions(t){this.iS=[...t],this.sS()}closePosition(t,i,s){const e=this.iS.find(i=>i.id===t);e&&(e.exit=i,s&&e.text?e.text.exit=s:s&&(e.text={exit:s}),this.sS())}removePosition(t){this.iS=this.iS.filter(i=>i.id!==t),this.sS()}clearPositions(){this.iS=[],this.sS()}getPositions(){return this.iS}applyOptions(t){t.longColors&&(this.Cs.longColors={...this.Cs.longColors,...t.longColors}),t.shortColors&&(this.Cs.shortColors={...this.Cs.shortColors,...t.shortColors}),void 0!==t.defaultSize&&(this.Cs.defaultSize=t.defaultSize),void 0!==t.entryOffset&&(this.Cs.entryOffset=t.entryOffset),void 0!==t.exitOffset&&(this.Cs.exitOffset=t.exitOffset),this.sS()}eS(){const t=[];for(const i of this.iS){const s="long"===i.type,e=i.size??this.Cs.defaultSize,n=i.color?.entry??(s?this.Cs.longColors.entry:this.Cs.shortColors.entry),h=i.color?.exit??(s?this.Cs.longColors.exit:this.Cs.shortColors.exit),r={time:i.entry.time,position:"atPriceMiddle",price:i.entry.price+this.Cs.entryOffset,shape:s?"arrowUp":"arrowDown",color:n,size:e};if(i.text?.entry&&(r.text=i.text.entry),i.id&&(r.id=`${i.id}-entry`),t.push(r),i.exit){const n={time:i.exit.time,position:"atPriceMiddle",price:i.exit.price+this.Cs.exitOffset,shape:s?"arrowDown":"arrowUp",color:h,size:e};i.text?.exit&&(n.text=i.text.exit),i.id&&(n.id=`${i.id}-exit`),t.push(n)}}return t}sS(){if(this.tS){const t=this.eS();this.tS.setMarkers(t)}}detach(){this.tS&&(this.tS.detach(),this.tS=null),this.iS=[]}}function Ph(t,i,s){const e=new yh(t,s);return i&&i.length>0&&e.setPositions(i),e}function Ch(t,i,s={}){const e=s.period??20,n=s.color??"#2196F3",h=i.addSeries(tn,{color:n,lineWidth:2,priceFormat:{type:"price",precision:2,minMove:.01}},0),r=()=>{try{const i=t.data();if(!i||0===i.length)return;const s=(t=>{if(!t||t.length<e)return[];const i=[];for(const s of t)"close"in s?i.push(s.close):"value"in s?i.push(s.value):i.push(0);const s=[];for(let n=e-1;n<i.length;n++){let h=0;for(let t=0;t<e;t++)h+=i[n-t];const r=h/e;t[n]&&t[n].time&&s.push({time:t[n].time,value:r})}return s})([...i]);s&&s.length>0&&h.setData(s)}catch(t){console.error("Error calculating SMA:",t)}};return t.subscribeDataChanged(r),r(),h}function Th(t,i,s={}){const e=s.period??12,n=s.color??"#FF9800",h=i.addSeries(tn,{color:n,lineWidth:2,priceFormat:{type:"price",precision:2,minMove:.01}},0),r=()=>{try{const i=t.data();if(!i||0===i.length)return;const s=(t=>{if(!t||t.length<e)return[];const i=[];for(const s of t)"close"in s?i.push(s.close):"value"in s?i.push(s.value):i.push(0);const s=[],n=2/(e+1);let h=0;for(let t=0;t<e;t++)h+=i[t];h/=e,t[e-1]&&t[e-1].time&&s.push({time:t[e-1].time,value:h});for(let r=e;r<i.length;r++)h=(i[r]-h)*n+h,t[r]&&t[r].time&&s.push({time:t[r].time,value:h});return s})([...i]);s&&s.length>0&&h.setData(s)}catch(t){console.error("Error calculating EMA:",t)}};return t.subscribeDataChanged(r),r(),h}function kh(t,i,s={}){const e=s.period??20,n=s.color??"#4CAF50",h=i.addSeries(tn,{color:n,lineWidth:2,priceFormat:{type:"price",precision:2,minMove:.01}},0),r=()=>{try{const i=t.data();if(!i||0===i.length)return;const s=(t=>{if(!t||t.length<e)return[];const i=[];for(const s of t)"close"in s?i.push(s.close):"value"in s?i.push(s.value):i.push(0);const s=[],n=e*(e+1)/2;for(let h=e-1;h<i.length;h++){let r=0;for(let t=0;t<e;t++){const s=t+1;r+=i[h-e+1+t]*s}const a=r/n;t[h]&&t[h].time&&s.push({time:t[h].time,value:a})}return s})([...i]);s&&s.length>0&&h.setData(s)}catch(t){console.error("Error calculating WMA:",t)}};return t.subscribeDataChanged(r),r(),h}function Dh(t,i,s={}){const e=s.period??20,n=s.stdDev??2,h=i.addSeries(tn,{color:s.colorUpper??"#3F51B5",lineWidth:1},0),r=i.addSeries(tn,{color:s.colorMiddle??"#2196F3",lineWidth:2},0),a=i.addSeries(tn,{color:s.colorLower??"#3F51B5",lineWidth:1},0),l=()=>{try{const i=t.data();if(!i||0===i.length)return;const s=(t=>{if(!t||t.length<e)return{nS:[],hS:[],rS:[]};const i=[];for(const s of t)"close"in s?i.push(s.close):"value"in s?i.push(s.value):i.push(0);const s=[],h=[],r=[];for(let a=e-1;a<i.length;a++){let l=0;for(let t=0;t<e;t++)l+=i[a-t];const o=l/e;let _=0;for(let t=0;t<e;t++)_+=Math.pow(i[a-t]-o,2);const c=Math.sqrt(_/e),u=o+c*n,d=o-c*n;if(t[a]&&t[a].time){const i=t[a].time;s.push({time:i,value:u}),h.push({time:i,value:o}),r.push({time:i,value:d})}}return{nS:s,hS:h,rS:r}})([...i]);s.nS.length>0&&(h.setData(s.nS),r.setData(s.hS),a.setData(s.rS))}catch(t){console.error("Error calculating Bollinger Bands:",t)}};return t.subscribeDataChanged(l),l(),{upper:h,middle:r,lower:a}}function Rh(t,i,s={}){const e=s.period??14,n=s.color??"#9C27B0",h=i.addSeries(tn,{color:n,priceFormat:{type:"price",precision:2,minMove:.01}},1);h.priceScale().applyOptions({scaleMargins:{top:.1,bottom:.1},borderVisible:!1,autoScale:!1});const r=()=>{try{const i=t.data();if(!i||0===i.length)return;const s=(t=>{if(!t||t.length<e+1)return[];const i=[];for(const s of t)"close"in s?i.push(s.close):"value"in s?i.push(s.value):i.push(0);const s=[],n=[];for(let t=1;t<i.length;t++)n.push(i[t]-i[t-1]);let h=0,r=0;for(let t=0;t<e;t++)n[t]>0?h+=n[t]:r+=Math.abs(n[t]);h/=e,r/=e;let a=0===r?100:h/r,l=100-100/(1+a);t[e]&&t[e].time&&s.push({time:t[e].time,value:l});for(let i=e;i<n.length;i++){const o=n[i],_=o>0?o:0,c=o<0?Math.abs(o):0;h=(h*(e-1)+_)/e,r=(r*(e-1)+c)/e,a=0===r?100:h/r,l=100-100/(1+a),t[i+1]&&t[i+1].time&&s.push({time:t[i+1].time,value:l})}return s})([...i]);s&&s.length>0&&h.setData(s)}catch(t){console.error("Error calculating RSI:",t)}};return t.subscribeDataChanged(r),r(),h}function Vh(t,i,s={}){const e=s.fastPeriod??12,n=s.slowPeriod??26,h=s.signalPeriod??9,r=i.addSeries(tn,{color:s.colorMACD??"#2196F3",lineWidth:2},2),a=i.addSeries(tn,{color:s.colorSignal??"#FF6D00",lineWidth:2},2),l=i.addSeries(Vn,{color:s.colorHistogram??"#26a69a"},2),o=(t,i)=>{const s=[],e=2/(i+1);let n=0;for(let s=0;s<i;s++)n+=t[s];s.push(n/i);for(let n=i;n<t.length;n++)s.push((t[n]-s[s.length-1])*e+s[s.length-1]);return s},_=()=>{try{const i=t.data();if(!i||0===i.length)return;const s=(t=>{if(!t||t.length<n+h)return{aS:[],lS:[],oS:[]};const i=[];for(const s of t)"close"in s?i.push(s.close):"value"in s?i.push(s.value):i.push(0);const s=o(i,e),r=o(i,n),a=[],l=n-e;for(let t=0;t<r.length;t++)a.push(s[t+l]-r[t]);const _=o(a,h),c=[],u=[],d=[],f=n-1;for(let i=h-1;i<_.length;i++){const s=f+i;if(t[s]&&t[s].time){const e=t[s].time,n=a[i],h=_[i],r=n-h;c.push({time:e,value:n}),u.push({time:e,value:h}),d.push({time:e,value:r,color:r>=0?"#26a69a":"#ef5350"})}}return{aS:c,lS:u,oS:d}})([...i]);s.aS.length>0&&(r.setData(s.aS),a.setData(s.lS),l.setData(s.oS))}catch(t){console.error("Error calculating MACD:",t)}};return t.subscribeDataChanged(_),_(),{macd:r,signal:a,histogram:l}}function Eh(t,i,s={}){const e=s.kPeriod??14,n=s.dPeriod??3,h=i.addSeries(tn,{color:s.colorK??"#2196F3",lineWidth:2},4),r=i.addSeries(tn,{color:s.colorD??"#FF6D00",lineWidth:2},4);h.priceScale().applyOptions({scaleMargins:{top:.1,bottom:.1}});const a=()=>{try{const i=t.data();if(!i||0===i.length)return;const s=(t=>{if(!t||t.length<e)return{_S:[],cS:[]};const i=[];for(let s=e-1;s<t.length;s++){let n=-1/0,h=1/0;for(let i=0;i<e;i++){const e=t[s-i];"high"in e&&"low"in e&&(n=Math.max(n,e.high),h=Math.min(h,e.low))}const r=t[s];if("close"in r){const t=(r.close-h)/(n-h)*100;i.push(t)}}const s=[];for(let n=0;n<i.length;n++){const h=e-1+n;t[h]&&t[h].time&&s.push({time:t[h].time,value:i[n]})}const h=[];if(i.length>=n)for(let s=n-1;s<i.length;s++){let r=0;for(let t=0;t<n;t++)r+=i[s-t];const a=r/n,l=e-1+s;t[l]&&t[l].time&&h.push({time:t[l].time,value:a})}return{_S:s,cS:h}})([...i]);s._S.length>0&&(h.setData(s._S),r.setData(s.cS))}catch(t){console.error("Error calculating Stochastic:",t)}};return t.subscribeDataChanged(a),a(),{k:h,d:r}}function Ah(t,i,s={}){const e=s.period??14,n=s.color??"#FF9800",h=i.addSeries(tn,{color:n,lineWidth:2},6),r=()=>{try{const i=t.data();if(!i||0===i.length)return;const s=(t=>{if(!t||t.length<e+1)return[];const i=[];for(let s=1;s<t.length;s++){const e=t[s],n=t[s-1];if("high"in e&&"low"in e&&"close"in n){const t=e.high-e.low,s=Math.abs(e.high-n.close),h=Math.abs(e.low-n.close),r=Math.max(t,s,h);i.push(r)}}if(i.length<e)return[];const s=[];let n=0;for(let t=0;t<e;t++)n+=i[t];n/=e,t[e]&&t[e].time&&s.push({time:t[e].time,value:n});for(let h=e;h<i.length;h++)n=(n*(e-1)+i[h])/e,t[h+1]&&t[h+1].time&&s.push({time:t[h+1].time,value:n});return s})([...i]);s&&s.length>0&&h.setData(s)}catch(t){console.error("Error calculating ATR:",t)}};return t.subscribeDataChanged(r),r(),h}const Ih=new Map;function Fh(t,i,s={}){const e=s.colorUp??"#26a69a",n=s.colorDown??"#ef5350";Ih.has(t)||Ih.set(t,new Map);const h=i.addSeries(Vn,{color:e,priceFormat:{type:"volume"},priceScaleId:""},3);h.priceScale().applyOptions({scaleMargins:{top:.8,bottom:0}});const r=()=>{try{const i=(()=>{const i=t.data(),s=Ih.get(t);if(!i||0===i.length)return[];if(!s||0===s.size)return[];const h=[];for(const t of i){const i="string"==typeof t.time?t.time:String(t.time),r=s.get(i);r&&"close"in t&&"open"in t&&h.push({time:t.time,value:r,color:t.close>=t.open?e:n})}return h})();i.length>0&&h.setData(i)}catch(t){console.error("Error calculating Volume:",t)}};return t.subscribeDataChanged(r),r(),h}function Bh(t,i){Ih.has(t)||Ih.set(t,new Map);const s=Ih.get(t);s.clear();for(const t of i)if("time"in t&&"volume"in t){const i="string"==typeof t.time?t.time:String(t.time);s.set(i,t.volume)}}const Lh=new Map;function zh(t,i,s={}){const e=s.color??"#2196F3";Lh.has(t)||Lh.set(t,new Map);const n=i.addSeries(tn,{color:e,lineWidth:2},5),h=()=>{try{const i=(()=>{const i=t.data(),s=Lh.get(t);if(!i||i.length<2)return[];if(!s||0===s.size)return[];const e=[];let n=0;e.push({time:i[0].time,value:n});for(let t=1;t<i.length;t++){const h=i[t],r=i[t-1],a="string"==typeof h.time?h.time:String(h.time),l=s.get(a);l&&"close"in h&&"close"in r&&(h.close>r.close?n+=l:h.close<r.close&&(n-=l),e.push({time:h.time,value:n}))}return e})();i.length>0&&n.setData(i)}catch(t){console.error("Error calculating OBV:",t)}};return t.subscribeDataChanged(h),h(),n}function Oh(t,i){Lh.has(t)||Lh.set(t,new Map);const s=Lh.get(t);s.clear();for(const t of i)if("time"in t&&"volume"in t){const i="string"==typeof t.time?t.time:String(t.time);s.set(i,t.volume)}}class Wh{constructor(t){this.uS=t}draw(t){t.useBitmapCoordinateSpace(t=>{const i=t.context,s=this.uS.getSessionBoxes();if(s&&0!==s.length)for(const e of s)this.dS(i,e,t.horizontalPixelRatio,t.verticalPixelRatio)})}dS(t,i,s,e){const n=i.fS||i.startTime,h=i.pS||i.endTime,r=i.R||i.color,a=i.vS||i.opacity;if(!i||!n||!h)return;const l=this.uS.getChart().timeScale(),o=l.timeToCoordinate(n),_=l.timeToCoordinate(h);if(null===o||null===_)return;const c=o*s,u=_*s,d=0*e,f=t.canvas.height/e*e;t.fillStyle=this.mS(r,a),t.fillRect(c,d,u-c,f-d)}mS(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}}class $h{constructor(t){this.Jt=new Wh(t)}renderer(){return this.Jt}zOrder(){return"bottom"}}const Nh=[{name:"Tokyo",startHour:0,endHour:9,color:"#FF6B00",opacity:.1},{name:"London",startHour:8,endHour:17,color:"#2962FF",opacity:.1},{name:"New York",startHour:13,endHour:22,color:"#089981",opacity:.1}];class Hh{constructor(t,i,s={}){this.gS=[],this.$M=null,this.er=null,this.Ep=t,this.Mn=i,this.Cs={sessions:s.sessions||Nh,showOverlaps:s.showOverlaps??!0,overlapColor:s.overlapColor||"#9C27B0",overlapOpacity:s.overlapOpacity||.15,enabled:s.enabled??!0},this.wS(),this.Cs.enabled&&this.MS()}wS(){this.er=new $h(this);const t={attached:t=>{},detached:()=>{},paneViews:()=>this.er?[this.er]:[],updateAllViews:()=>{this.er}};this.$M=t,this.Mn.attachPrimitive(t)}MS(){this.Ep.timeScale().subscribeVisibleLogicalRangeChange(()=>{this.bS()}),this.bS()}bS(){this.SS();const t=this.Ep.timeScale().getVisibleLogicalRange();if(!t)return void console.log("⚠️ No visible range");const i=this.Mn.data();if(!i||0===i.length)return void console.log("⚠️ No data available");const s=i.filter((i,s)=>s>=t.from&&s<=t.to);console.log("📊 Trading Sessions: Processing",s.length,"data points"),this.xS(s),console.log("📊 Created",this.gS.length,"session boxes"),this.ob()}xS(t){if(0!==t.length){for(const i of this.Cs.sessions)this.yS(i,t);this.Cs.showOverlaps&&this.PS(t)}}yS(t,i){let s=null,e=[];for(const n of i){const i=n.time,h=this.CS(i);this.TS(h,t.startHour,t.endHour)?(s||(s=i),e.push(n)):s&&e.length>0&&(this.kS(s,e[e.length-1].time,t),s=null,e=[])}s&&e.length>0&&this.kS(s,e[e.length-1].time,t)}PS(t){const i=this.Cs.sessions;for(let s=0;s<i.length;s++)for(let e=s+1;e<i.length;e++){const n=i[s],h=i[e],r=this.DS(n,h);r&&this.RS(r,t)}}DS(t,i){const s=Math.max(t.startHour,i.startHour),e=Math.min(t.endHour,i.endHour);return s<e?{ln:s,_n:e}:null}RS(t,i){let s=null,e=[];for(const n of i){const i=n.time,h=this.CS(i);h>=t.ln&&h<t._n?(s||(s=i),e.push(n)):s&&e.length>0&&(this.VS(s,e[e.length-1].time),s=null,e=[])}s&&e.length>0&&this.VS(s,e[e.length-1].time)}kS(t,i,s){if(!t||!i)return void console.warn("Invalid session box times:",{startTime:t,endTime:i,session:s.name});const e={ae:"session",fS:t,pS:i,R:s.color,vS:s.opacity,ES:s.name};this.gS.push(e)}VS(t,i){const s={ae:"overlap",fS:t,pS:i,R:this.Cs.overlapColor,vS:this.Cs.overlapOpacity,ES:"Overlap"};this.gS.push(s)}TS(t,i,s){return i<s?t>=i&&t<s:t>=i||t<s}CS(t){if("number"==typeof t){return new Date(1e3*t).getUTCHours()}if("string"==typeof t){return new Date(t).getUTCHours()}return 0}SS(){this.gS=[]}updateOptions(t){this.Cs={...this.Cs,...t},this.Cs.enabled?this.bS():this.SS()}enable(){this.Cs.enabled=!0,this.bS()}disable(){this.Cs.enabled=!1,this.SS()}remove(){this.$M&&this.Mn&&this.Mn.detachPrimitive(this.$M),this.SS()}getSessionBoxes(){return this.gS}getChart(){return this.Ep}getSeries(){return this.Mn}ob(){this.$M&&this.$M.updateAllViews?.(),this.Ep.timeScale().applyOptions({})}}function Uh(t,i,s){return new Hh(t,i,s)}class qh{constructor(t){this.uS=t}draw(t){t.useBitmapCoordinateSpace(t=>{const i=t.context,s=this.uS.getProfileData();if(!s||0===s.bins.length)return;const e=this.uS.getOptions(),n=this.uS.getSeries(),h=i.canvas.width/t.horizontalPixelRatio,r=Math.min(e.width||100,.2*h),a="right"===e.position?h-r:0;let l=0;for(const t of s.bins)t.volume>l&&(l=t.volume);if(0!==l){for(const h of s.bins)this.AS(i,h,a,r,l,s,e,n,t.horizontalPixelRatio,t.verticalPixelRatio);e.showPOC&&this.IS(i,s.poc,e.pocColor||"#FF6B00",n,h,t.horizontalPixelRatio,t.verticalPixelRatio),e.showValueArea&&this.FS(i,s.valueAreaHigh,s.valueAreaLow,e.valueAreaColor||"#089981",n,h,t.horizontalPixelRatio,t.verticalPixelRatio)}})}AS(t,i,s,e,n,h,r,a,l,o){const _=i.volume/n*e,c=a.priceToCoordinate(i.priceLevel);if(null===c)return;const u=s*l,d=(c-1.5)*o,f=_*l,p=3*o,v=i.priceLevel>=h.valueAreaLow&&i.priceLevel<=h.valueAreaHigh,m=Math.abs(i.priceLevel-h.poc)<1e-5;let g=r.profileColor||"#2962FF",w=r.opacity||.3;m?(g=r.pocColor||"#FF6B00",w=.6):v&&r.showValueArea&&(g=r.valueAreaColor||"#089981",w=.4),t.fillStyle=this.mS(g,w),t.fillRect(u,d,f,p)}IS(t,i,s,e,n,h,r){const a=e.priceToCoordinate(i);if(null===a)return;const l=a*r;t.strokeStyle=s,t.lineWidth=2*Math.min(h,r),t.setLineDash([5*h,3*h]),t.beginPath(),t.moveTo(0,l),t.lineTo(n*h,l),t.stroke(),t.setLineDash([])}FS(t,i,s,e,n,h,r,a){const l=n.priceToCoordinate(i);if(null!==l){const i=l*a;t.strokeStyle=this.mS(e,.5),t.lineWidth=1*Math.min(r,a),t.setLineDash([3*r,2*r]),t.beginPath(),t.moveTo(0,i),t.lineTo(h*r,i),t.stroke()}const o=n.priceToCoordinate(s);if(null!==o){const i=o*a;t.strokeStyle=this.mS(e,.5),t.lineWidth=1*Math.min(r,a),t.setLineDash([3*r,2*r]),t.beginPath(),t.moveTo(0,i),t.lineTo(h*r,i),t.stroke()}t.setLineDash([])}mS(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}}class Yh{constructor(t){this.Jt=new qh(t)}renderer(){return this.Jt}zOrder(){return"normal"}}class jh{constructor(t,i,s={}){this.BS=null,this.LS=new Map,this.$M=null,this.er=null,this.Ep=t,this.Mn=i,this.Cs={numberOfBins:s.numberOfBins||24,valueAreaPercentage:s.valueAreaPercentage||.7,showPOC:s.showPOC??!0,showValueArea:s.showValueArea??!0,profileColor:s.profileColor||"#2962FF",pocColor:s.pocColor||"#FF6B00",valueAreaColor:s.valueAreaColor||"#089981",opacity:s.opacity||.3,width:s.width||100,position:s.position||"right"},this.wS(),this.MS()}wS(){this.er=new Yh(this);const t={attached:t=>{},detached:()=>{},paneViews:()=>this.er?[this.er]:[],updateAllViews:()=>{this.er}};this.$M=t,this.Mn.attachPrimitive(t)}MS(){this.Ep.timeScale().subscribeVisibleLogicalRangeChange(()=>{this.zS()}),this.zS()}setVolumeData(t){this.LS=t,this.zS()}addVolumeData(t,i){this.LS.set(t,i),this.zS()}zS(){const t=this.Ep.timeScale().getVisibleLogicalRange();if(!t)return;const i=this.Mn.data();if(!i||0===i.length)return;const s=i.filter((i,s)=>s>=t.from&&s<=t.to);if(0===s.length)return;let e=1/0,n=-1/0;for(const t of s){const i=t.low||t.value||t.close,s=t.high||t.value||t.close;i<e&&(e=i),s>n&&(n=s)}const h=(n-e)/this.Cs.numberOfBins,r=[];for(let t=0;t<this.Cs.numberOfBins;t++)r.push({priceLevel:e+(t+.5)*h,volume:0,percentage:0});let a=0;for(const t of s){const i=t.close||t.value,s=this.LS.get(t.time)||1,n=Math.floor((i-e)/h);r[Math.max(0,Math.min(this.Cs.numberOfBins-1,n))].volume+=s,a+=s}for(const t of r)t.percentage=a>0?t.volume/a*100:0;let l=r[0];for(const t of r)t.volume>l.volume&&(l=t);const o=a*this.Cs.valueAreaPercentage,_=[...r].sort((t,i)=>i.volume-t.volume);let c=0;const u=[];for(const t of _){if(!(c<o))break;u.push(t),c+=t.volume}let d=-1/0,f=1/0;for(const t of u)t.priceLevel>d&&(d=t.priceLevel),t.priceLevel<f&&(f=t.priceLevel);this.BS={bins:r,poc:l.priceLevel,valueAreaHigh:d,valueAreaLow:f,totalVolume:a},this.ob()}getProfileData(){return this.BS}updateOptions(t){this.Cs={...this.Cs,...t},this.zS()}remove(){this.$M&&this.Mn&&this.Mn.detachPrimitive(this.$M),this.BS=null,this.LS.clear()}getChart(){return this.Ep}getSeries(){return this.Mn}getOptions(){return this.Cs}ob(){this.$M&&this.$M.updateAllViews?.(),this.Ep.timeScale().applyOptions({})}}function Gh(t,i,s){return new jh(t,i,s)}function Kh(t,i){const s=new Map;for(const t of i)s.set(t.time,t.volume);t.setVolumeData(s)}class Xh{constructor(t,i,s){this.sh=null,this.OS=!1,this.Vp=null,this.WS=[],this.$S=!1,this.NS="",this.Ep=t,this.Mn=i,this.Cs={lineWidth:2,lineStyle:0,axisLabelVisible:!0,draggable:!0,...s},this.HS(),this.Cs.draggable&&this.US()}HS(){this.NS=this.Cs.color,this.sh=this.Mn.createPriceLine({price:this.Cs.price,color:this.Cs.color,lineWidth:this.Cs.lineWidth,lineStyle:this.Cs.lineStyle,axisLabelVisible:this.Cs.axisLabelVisible,title:this.Cs.title||""})}US(){const t=this.Ep.chartElement?.()||document.querySelector(".tv-lightweight-charts");if(!t)return;this.Vp=t;const i=t=>{if(!this.qS(t))return;const i=this.YS(t.clientY);this.jS(t,i)&&(this.OS=!0,this.Vp.style.cursor="ns-resize",this.Cs.onDragStart&&this.Cs.onDragStart(this.Cs.price),t.preventDefault(),t.stopPropagation())},s=t=>{if(this.OS){const i=this.YS(t.clientY);this.GS(i),this.Cs.onDragMove&&this.Cs.onDragMove(i),t.preventDefault(),t.stopPropagation()}else{if(!this.qS(t))return void this.KS(!1);const i=this.YS(t.clientY);this.jS(t,i)?(this.Vp.style.cursor="ns-resize",this.KS(!0)):(this.Vp.style.cursor="default",this.KS(!1))}},e=t=>{this.OS&&(this.OS=!1,this.Vp.style.cursor="default",this.KS(!1),this.Cs.onDragEnd&&this.Cs.onDragEnd(this.Cs.price))},n=t=>{this.OS?(this.OS=!1,this.KS(!1),this.Cs.onDragEnd&&this.Cs.onDragEnd(this.Cs.price)):this.KS(!1)};this.Vp.addEventListener("mousedown",i),this.Vp.addEventListener("mousemove",s),this.Vp.addEventListener("mouseup",e),this.Vp.addEventListener("mouseleave",n),this.WS.push(()=>{this.Vp?.removeEventListener("mousedown",i),this.Vp?.removeEventListener("mousemove",s),this.Vp?.removeEventListener("mouseup",e),this.Vp?.removeEventListener("mouseleave",n)})}YS(t){try{const i=this.Ep.chartElement?.()||document.querySelector(".tv-lightweight-charts");if(!i)return this.Cs.price;const s=t-i.getBoundingClientRect().top,e=this.Mn.coordinateToPrice(s);return null===e?this.Cs.price:e}catch(t){return console.error("Error getting price from Y:",t),this.Cs.price}}jS(t,i){const s=this.Ep.chartElement?.()||document.querySelector(".tv-lightweight-charts");if(!s)return!1;const e=this.Mn.priceToCoordinate(this.Cs.price);if(null===e)return!1;const n=s.getBoundingClientRect(),h=t.clientY-n.top;return Math.abs(h-e)<=5}qS(t){if(!this.Vp)return!1;const i=this.Vp.getBoundingClientRect();return t.clientX-i.left<i.width-80}KS(t){this.$S!==t&&this.sh&&(this.$S=t,t?this.sh.applyOptions({color:"#000000"}):this.sh.applyOptions({color:this.NS}))}GS(t){this.Cs.price=t,this.sh&&this.sh.applyOptions({price:t})}applyOptions(t){this.Cs={...this.Cs,...t},t.color&&(this.NS=t.color),this.sh&&void 0!==t.price&&this.sh.applyOptions({price:t.price,color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle,title:t.title})}getPrice(){return this.Cs.price}setPrice(t){this.GS(t)}remove(){this.WS.forEach(t=>t()),this.WS=[],this.KS(!1),this.sh&&(this.Mn.removePriceLine(this.sh),this.sh=null),this.Vp&&(this.Vp.style.cursor="default")}getPriceLine(){return this.sh}}function Zh(t,i,s){const e={"stop-loss":{color:"#ef5350",lineStyle:2,title:"Stop Loss",draggable:!0},"take-profit":{color:"#26a69a",lineStyle:2,title:"Take Profit",draggable:!0},entry:{color:"#2196F3",lineStyle:0,title:"Entry",draggable:!0},target:{color:"#FF9800",lineStyle:2,title:"Target",draggable:!0},resistance:{color:"#f44336",lineStyle:0,title:"Resistance",draggable:!0},support:{color:"#4CAF50",lineStyle:0,title:"Support",draggable:!0},custom:{color:"#9E9E9E",lineStyle:0,title:"",draggable:!0}},n=s.type?e[s.type]:e.custom,h={price:s.price,color:s.color??n.color??"#9E9E9E",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??n.lineStyle??0,title:s.title??n.title??"",axisLabelVisible:s.axisLabelVisible??!0,draggable:s.draggable??n.draggable??!0,onDragStart:s.onDragStart,onDragMove:s.onDragMove,onDragEnd:s.onDragEnd};return new Xh(i,t,h)}class Jh{constructor(t,i){this.Vp=null,this.XS=null,this.ZS=null,this.JS={},this.Ep=t,this.Mn=i,this.QS()}QS(){const t=this.Ep.chartElement?.()||document.querySelector(".tv-lightweight-charts");t&&(this.Vp=t)}tx(t){try{if(!this.Vp)return 0;const i=this.Vp.getBoundingClientRect(),s=t.clientY-i.top,e=this.Mn.coordinateToPrice(s);return null===e?0:e}catch(t){return console.error("Error getting price from mouse event:",t),0}}enableClickToCreate(t,i){return this.Vp?(this.XS=t,this.JS=i||{},new Promise(t=>{this.Vp.style.cursor="crosshair",this.ZS=i=>{const s=this.tx(i),e=this.ix(s);this.disableClickToCreate(),t(e)},this.Vp.addEventListener("click",this.ZS)})):Promise.resolve(null)}disableClickToCreate(){this.Vp&&this.ZS&&(this.Vp.removeEventListener("click",this.ZS),this.Vp.style.cursor="default"),this.XS=null,this.ZS=null,this.JS={}}ix(t){if(!this.XS)return null;let i;switch(this.XS){case"stop-loss":i={price:t,color:"#ef5350",lineWidth:2,title:"Stop Loss",draggable:!0,...this.JS};break;case"take-profit":i={price:t,color:"#26a69a",lineWidth:2,title:"Take Profit",draggable:!0,...this.JS};break;case"entry":i={price:t,color:"#2196F3",lineWidth:2,title:"Entry",draggable:!0,...this.JS};break;case"target":i={price:t,color:"#FF9800",lineWidth:2,title:"Target",draggable:!0,...this.JS};break;case"resistance":i={price:t,color:"#f44336",lineWidth:2,title:"Resistance",draggable:!0,...this.JS};break;case"support":i={price:t,color:"#4CAF50",lineWidth:2,title:"Support",draggable:!0,...this.JS};break;case"custom":i={price:t,color:"#9E9E9E",lineWidth:2,title:"Custom",draggable:!0,...this.JS};break;default:return null}return new Xh(this.Ep,this.Mn,i)}getCreationMode(){return this.XS}isCreating(){return null!==this.XS}}function Qh(t,i){return new Jh(t,i)}var tr,ir;!function(t){t.Idle="idle",t.Creating="creating",t.Editing="editing",t.Dragging="dragging",t.Hovering="hovering"}(tr||(tr={}));class sr{constructor(t,i,s={}){this._state=tr.Idle,this._visible=!0,this._locked=!1,this._chart=t.chart,this._series=t.series,this._type=i,this._id=this.sx(),this._options={color:"#2196F3",lineWidth:2,lineStyle:"solid",visible:!0,locked:!1,zIndex:0,...s},this._visible=this._options.visible??!0,this._locked=this._options.locked??!1}sx(){return`${this._type}_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}get id(){return this._id}get type(){return this._type}applyOptions(t){this._options={...this._options,...t},void 0!==t.visible&&(this._visible=t.visible),void 0!==t.locked&&(this._locked=t.locked),this._update()}show(){this._visible=!0,this._update()}hide(){this._visible=!1,this._update()}lock(){this._locked=!0}unlock(){this._locked=!1}isLocked(){return this._locked}isVisible(){return this._visible}getState(){return this._state}}class er{constructor(t,i,s={}){this.nx=new Map,this.hx=null,this.lx=null,this.ox=null,this.ZS=null,this._x=null,this.sf=null,this.Sf=null,this.Od=null,this.ux=0,this.OS=!1,this.vx=null,this.Ep=t,this.Cs={enableKeyboardShortcuts:!0,selectionColor:"#2962ff",selectionLineWidth:3,...s},this.mx()}startDrawing(t){this.ox=t,this.gx(),console.log(`📐 Started drawing mode: ${t}`)}stopDrawing(){this.ox=null,console.log("🛑 Stopped drawing mode")}addTool(t,i){const s=i||"tool_"+this.ux++;return this.nx.set(s,t),console.log(`➕ Tool added: ${s}`),s}removeTool(t){const i=this.nx.get(t);return!!i&&(i.remove(),this.nx.delete(t),this.hx===t&&(this.hx=null),console.log(`🗑️ Tool removed: ${t}`),!0)}selectTool(t){if(this.nx.has(t)){this.gx(),this.hx=t;const i=this.nx.get(t);return i&&"function"==typeof i.setSelected&&i.setSelected(!0),!0}return!1}deselectAll(){this.gx()}deleteSelected(){return!!this.hx&&this.removeTool(this.hx)}getSelectedToolId(){return this.hx}getAllTools(){return new Map(this.nx)}getTool(t){return this.nx.get(t)}clearAll(){this.nx.forEach(t=>t.remove()),this.nx.clear(),this.hx=null,console.log("🧹 All tools cleared")}getToolCount(){return this.nx.size}isToolSelected(t){return this.hx===t}destroy(){this.clearAll(),this.wx()}mx(){this.ZS=t=>{this.Mx(t)},this.Ep.subscribeClick(this.ZS),this.sf=t=>{this.bx(t)},this.Ep.subscribeCrosshairMove(this.sf);const t=this.Ep.chartElement();t&&(this.Sf=t=>{this.Sx(t)},this.Od=t=>{this.xx(t)},t.addEventListener("mousedown",this.Sf),t.addEventListener("mouseup",this.Od)),this.Cs.enableKeyboardShortcuts&&(this._x=t=>{this.yx(t)},document.addEventListener("keydown",this._x))}wx(){this.ZS&&(this.Ep.unsubscribeClick(this.ZS),this.ZS=null),this.sf&&(this.Ep.unsubscribeCrosshairMove(this.sf),this.sf=null);const t=this.Ep.chartElement();t&&(this.Sf&&(t.removeEventListener("mousedown",this.Sf),this.Sf=null),this.Od&&(t.removeEventListener("mouseup",this.Od),this.Od=null)),this._x&&(document.removeEventListener("keydown",this._x),this._x=null)}Mx(t){if(!t.point)return;if(this.ox)return;if(this.OS)return;const i=this.Px(t.point.x,t.point.y);i?this.selectTool(i):this.gx()}bx(t){if(!t.point||!t.time)return;if(this.OS&&this.vx){const i=this.nx.get(this.vx);if(i){const s=i._series?.coordinateToPrice(t.point.y);null!=s&&"function"==typeof i.updateDrag&&i.updateDrag(t.time,s)}return}const i=this.Ep.chartElement();if(!i)return;if(this.hx){const s=this.nx.get(this.hx);if(s&&"function"==typeof s.hitTestEndpoint){if(s.hitTestEndpoint(t.point.x,t.point.y))return void(i.style.cursor="grab")}}const s=this.Px(t.point.x,t.point.y);if(this.lx&&this.lx!==s){const t=this.nx.get(this.lx);t&&"function"==typeof t.setHovered&&t.setHovered(!1)}if(s){const t=this.nx.get(s);t&&"function"==typeof t.setHovered&&t.setHovered(!0),this.lx=s,i.style.cursor="pointer"}else this.lx=null,i.style.cursor="default"}Sx(t){const i=this.Ep.chartElement();if(!i)return;const s=i.getBoundingClientRect(),e=t.clientX-s.left,n=t.clientY-s.top;if(this.hx){const s=this.nx.get(this.hx);if(s&&"function"==typeof s.hitTestEndpoint){const h=s.hitTestEndpoint(e,n);h&&(this.OS=!0,this.vx=this.hx,"function"==typeof s.startDrag&&s.startDrag(h),i.style.cursor="grabbing",t.preventDefault(),t.stopPropagation(),this.Cx())}}}xx(t){if(this.OS&&this.vx){const t=this.nx.get(this.vx);t&&"function"==typeof t.stopDrag&&t.stopDrag();const i=this.Ep.chartElement();i&&(i.style.cursor="default"),this.Tx(),this.OS=!1,this.vx=null}}Cx(){this.Ep.applyOptions({handleScroll:!1,handleScale:!1})}Tx(){this.Ep.applyOptions({handleScroll:!0,handleScale:!0})}yx(t){"Delete"!==t.key&&"Backspace"!==t.key||this.deleteSelected()&&t.preventDefault(),"Escape"===t.key&&(this.gx(),this.stopDrawing(),t.preventDefault())}Px(t,i){for(const[s,e]of this.nx)if("function"==typeof e.hitTest&&e.hitTest(t,i))return s;return null}gx(){if(this.hx){const t=this.nx.get(this.hx);t&&"function"==typeof t.setSelected&&t.setSelected(!1),this.hx=null}}}class nr{constructor(t){this.kx=t}calculatePips(t,i){return Math.abs(i-t)/this.kx.pipValue}calculatePercent(t,i){return(i-t)/t*100}calculateRiskReward(t,i,s){const e=Math.abs(t-i),n=Math.abs(s-t);return 0===e?0:n/e}calculateMetrics(t,i,s,e){const n={entryPrice:t,stopLoss:i,takeProfit:s,quantity:e,stopLossPips:this.calculatePips(t,i),takeProfitPips:this.calculatePips(t,s),stopLossPercent:this.calculatePercent(t,i),takeProfitPercent:this.calculatePercent(t,s),riskRewardRatio:this.calculateRiskReward(t,i,s)};if(void 0!==e){const h=Math.abs(t-i),r=Math.abs(s-t);n.stopLossAmount=h*e,n.takeProfitAmount=r*e}return n}formatPips(t,i=1){return`${t>=0?"+":""}${t.toFixed(i)} pips`}formatPercent(t,i=2){return`${t>=0?"+":""}${t.toFixed(i)}%`}formatRiskReward(t,i=2){return`1:${t.toFixed(i)}`}updatePipConfig(t){this.kx={...this.kx,...t}}getPipConfig(){return{...this.kx}}}function hr(t){const i=t.toString().split("."),s=i.length>1?i[1].length:0;let e;return e=s>=5?1e-5:4===s?1e-4:3===s?.001:2===s?.01:1===s?.1:1,{pipValue:e,decimals:s}}function rr(t,i){return"number"==typeof t?hr(t):void 0!==i?hr(i):{pipValue:.1,decimals:1}}class ar{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class lr{constructor(t){this.Dx=t,this.Jt=new ar(t)}renderer(){return this.Dx.isVisible()?this.Jt:null}}class or extends sr{constructor(t,i){super(t,"position-tool",i),this.$M=null,this.UM=null,this.er=null,this.Rx=!1,this.Vx=!1,this.OS=!1,this.Ex=null,this.Ax=0,this.Ix=null,this.Fx=null,this.Bx=null,this.Lx={profitColor:"#26a69a",lossColor:"#ef5350",entryLineColor:"#ffffff",opacity:.3,showTooltips:!0,...i};const s=this.Lx.pipConfig||rr(this.Lx.entryPrice);this.zx=new nr(s),this.wS(),this.Ox()}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new lr(this)}drawToCanvas(t,i,s){const e=this._chart.timeScale();this.Fx&&this.Lx.takeProfit&&(this.$x(t,this.Fx,i,s,e),(this.Vx||this.Rx)&&this.Nx(t,this.Fx,"profit",i,s,e)),this.Bx&&this.Lx.stopLoss&&(this.$x(t,this.Bx,i,s,e),(this.Vx||this.Rx)&&this.Nx(t,this.Bx,"loss",i,s,e)),this.Hx(t,i,s,e),this.Lx.takeProfit&&this.Ux(t,this.Lx.takeProfit,this.Lx.profitColor,i,s,e),this.Lx.stopLoss&&this.Ux(t,this.Lx.stopLoss,this.Lx.lossColor,i,s,e)}$x(t,i,s,e,n){const h=(n.timeToCoordinate(this.Lx.entryTime)??0)*s;let r;if(this.Lx.endTime)r=(n.timeToCoordinate(this.Lx.endTime)??0)*s;else{r=this._chart.chartElement().clientWidth*s}const a=(this._series.priceToCoordinate(i.qx)??0)*e,l=(this._series.priceToCoordinate(i.Yx)??0)*e;t.fillStyle=this.mS(i.R,.15),t.fillRect(h,Math.min(a,l),r-h,Math.abs(l-a)),t.strokeStyle=i.R,t.lineWidth=2*s,t.beginPath(),t.moveTo(h,l),t.lineTo(r,l),t.stroke()}Hx(t,i,s,e){const n=(e.timeToCoordinate(this.Lx.entryTime)??0)*i,h=(this._series.priceToCoordinate(this.Lx.entryPrice)??0)*s;let r;if(this.Lx.endTime)r=(e.timeToCoordinate(this.Lx.endTime)??0)*i;else{r=this._chart.chartElement().clientWidth*i}const a=this.Rx?"#ff6b00":this.Lx.entryLineColor;t.strokeStyle=a,t.lineWidth=2*i,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(n,h),t.lineTo(r,h),t.stroke(),t.setLineDash([]),t.strokeStyle=this.Lx.entryLineColor,t.lineWidth=1*i,t.setLineDash([5*i,5*i]);const l=this._chart.chartElement().clientHeight*s;if(t.beginPath(),t.moveTo(n,0),t.lineTo(n,l),t.stroke(),t.setLineDash([]),this.Rx){t.fillStyle=a,t.strokeStyle="#ffffff",t.lineWidth=2*i,t.beginPath(),t.arc(n,h,5*i,0,2*Math.PI),t.fill(),t.stroke();const s=8*i;t.fillStyle=a,t.strokeStyle="#ffffff",t.lineWidth=2*i,t.fillRect(r-s/2,h-s/2,s,s),t.strokeRect(r-s/2,h-s/2,s,s)}else t.fillStyle=this.Lx.entryLineColor,t.beginPath(),t.arc(n,h,4*i,0,2*Math.PI),t.fill()}Ox(){this.Lx.stopLoss&&this.Lx.takeProfit&&(this.UM=this.zx.calculateMetrics(this.Lx.entryPrice,this.Lx.stopLoss,this.Lx.takeProfit,this.Lx.quantity),this.jx(),this.Lx.onUpdate&&this.UM&&this.Lx.onUpdate(this.UM))}jx(){const t=this.Gx();this.Lx.takeProfit&&(this.Fx={Kx:this.Lx.entryTime,Xx:t,qx:this.Lx.entryPrice,Yx:this.Lx.takeProfit,R:this.Lx.profitColor,vS:this.Lx.opacity}),this.Lx.stopLoss&&(this.Bx={Kx:this.Lx.entryTime,Xx:t,qx:this.Lx.entryPrice,Yx:this.Lx.stopLoss,R:this.Lx.lossColor,vS:this.Lx.opacity})}Gx(){this._chart.timeScale().getVisibleLogicalRange();return this.Lx.entryTime}Nx(t,i,s,e,n,h){if(!this.UM)return;const r=(h.timeToCoordinate(this.Lx.entryTime)??0)*e,a=(this._series.priceToCoordinate(i.Yx)??0)*n,l="profit"===s,o=l?this.UM.takeProfitPips:this.UM.stopLossPips,_=l?this.Lx.takeProfit:this.Lx.stopLoss,c=this.UM.riskRewardRatio,u=l?`Objetivo: ${_?.toFixed(5)} (${o.toFixed(1)} pips) 1:${c.toFixed(2)}`:`P/G Abertura: ${_?.toFixed(5)} (${o.toFixed(1)} pips)`;t.font=11*e+'px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif';const d=6*e,f=t.measureText(u).width+2*d,p=20*e,v=r+8*e,m=a-p/2;t.fillStyle=i.R,t.fillRect(v,m,f,p),t.fillStyle="#ffffff",t.textAlign="left",t.textBaseline="middle",t.fillText(u,v+d,a)}Ux(t,i,s,e,n,h){const r=(h.timeToCoordinate(this.Lx.entryTime)??0)*e,a=(this._series.priceToCoordinate(i)??0)*n,l=this.Rx?"#ff6b00":s;let o;if(t.fillStyle=l,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.beginPath(),t.arc(r,a,5*e,0,2*Math.PI),t.fill(),t.stroke(),this.Lx.endTime)o=(h.timeToCoordinate(this.Lx.endTime)??0)*e;else{o=this._chart.chartElement().clientWidth*e-10*e}const _=8*e,c=this.Rx?"#ff6b00":s;t.fillStyle=c,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.fillRect(o-_/2,a-_/2,_,_),t.strokeRect(o-_/2,a-_/2,_,_)}mS(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}updatePosition(t){this.Lx={...this.Lx,...t},this.Ox(),this._update()}getMetrics(){return this.UM}setStopLoss(t){this.Lx.stopLoss=t,this.Ox(),this._update()}setTakeProfit(t){this.Lx.takeProfit=t,this.Ox(),this._update()}setEntryPrice(t){this.Lx.entryPrice=t,this.Ox(),this._update()}setSelected(t){this.Rx!==t&&(this.Rx=t,this.ob())}isSelected(){return this.Rx}setHovered(t){this.Vx!==t&&(this.Vx=t,this.ob())}hitTest(t,i){if(!this.Lx.stopLoss&&!this.Lx.takeProfit)return!1;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.Lx.entryTime)??0;let n;if(this.Lx.endTime)n=s.timeToCoordinate(this.Lx.endTime)??0;else{n=this._chart.chartElement().clientWidth}if(this.Lx.takeProfit&&this.Lx.stopLoss){const s=this._series.priceToCoordinate(this.Lx.takeProfit)??0,h=this._series.priceToCoordinate(this.Lx.stopLoss)??0,r=Math.min(s,h),a=Math.max(s,h);if(t>=e&&t<=n&&i>=r&&i<=a)return!0;const l=8;if(Math.abs(t-e)<=l&&i>=r&&i<=a)return!0}return!1}hitTestEndpoint(t,i){const s=this._chart.timeScale(),e=s.timeToCoordinate(this.Lx.entryTime)??0;let n;if(this.Lx.endTime)n=s.timeToCoordinate(this.Lx.endTime)??0;else{n=this._chart.chartElement().clientWidth}if(this.Lx.takeProfit){const s=this._series.priceToCoordinate(this.Lx.takeProfit)??0;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-s,2))<=10)return"tp"}if(this.Lx.stopLoss){const s=this._series.priceToCoordinate(this.Lx.stopLoss)??0;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-s,2))<=10)return"sl"}if(this.Lx.takeProfit){const s=this._series.priceToCoordinate(this.Lx.takeProfit)??0;if(Math.sqrt(Math.pow(t-n,2)+Math.pow(i-s,2))<=10)return"tp-right"}if(this.Lx.stopLoss){const s=this._series.priceToCoordinate(this.Lx.stopLoss)??0;if(Math.sqrt(Math.pow(t-n,2)+Math.pow(i-s,2))<=10)return"sl-right"}const h=this._series.priceToCoordinate(this.Lx.entryPrice)??0;if(t>=e&&t<=n&&Math.abs(i-h)<=8)return"entry";if(this.Lx.takeProfit&&this.Lx.stopLoss){const s=this._series.priceToCoordinate(this.Lx.takeProfit)??0,h=this._series.priceToCoordinate(this.Lx.stopLoss)??0,r=Math.min(s,h),a=Math.max(s,h);if(t>=e&&t<=n&&i>=r&&i<=a)return"move"}return null}startDrag(t){this.OS=!0,this.Ex=t,"move"===t&&(this.Ax=this.Lx.entryPrice,this.Ix=this.Lx.entryTime)}stopDrag(){this.OS=!1,this.Ex=null,this.Ax=0,this.Ix=null}updateDrag(t,i){if(this.OS&&this.Ex){if("entry"===this.Ex)this.Lx.entryPrice=i;else if("move"===this.Ex){if(this.Ix&&this.Ax){const s=i-this.Ax,e=this.Zx(this.Ix,t),n=this.Lx.takeProfit,h=this.Lx.stopLoss;this.Lx.entryPrice=i,this.Lx.takeProfit=n+s,this.Lx.stopLoss=h+s,this.Lx.entryTime=t,this.Lx.endTime&&(this.Lx.endTime=this.Jx(this.Lx.endTime,e)),this.Ax=i,this.Ix=t}}else"tp"===this.Ex||"tp-right"===this.Ex?(this.Lx.takeProfit=i,"tp-right"===this.Ex?this.Lx.endTime=t:this.Lx.entryTime=t):"sl"!==this.Ex&&"sl-right"!==this.Ex||(this.Lx.stopLoss=i,"sl-right"===this.Ex?this.Lx.endTime=t:this.Lx.entryTime=t);this.Ox(),this.ob()}}Zx(t,i){return i-t}Jx(t,i){return t+i}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.$M&&this._series.updatePrimitive(this.$M)}remove(){this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.Lx.onRemove&&this.Lx.onRemove()}}function _r(t,i){return new or(t,i)}class cr{constructor(t){this.kx=t}calculateMetrics(t,i,s,e,n){const h=e-i;return{point1:{time:t,price:i},point2:{time:s,price:e},priceDifference:h,pricePercent:h/i*100,pips:Math.abs(h)/this.kx.pipValue,timeDifference:this.Qx(t,s),barCount:n}}Qx(t,i){return"number"==typeof t&&"number"==typeof i?Math.abs(i-t):0}formatPriceDifference(t,i=5){return`${t>=0?"+":""}${t.toFixed(i)}`}formatPips(t,i=1){return`${t.toFixed(i)} pips`}formatPercent(t,i=2){return`${t>=0?"+":""}${t.toFixed(i)}%`}formatTimeDifference(t){if(0===t)return"N/A";const i=Math.floor(t/86400),s=Math.floor(t%86400/3600),e=Math.floor(t%3600/60);return i>0?`${i}d ${s}h`:s>0?`${s}h ${e}m`:e>0?`${e}m`:`${t}s`}formatBarCount(t){return`${t} ${1===t?"bar":"bars"}`}updatePipConfig(t){this.kx={...this.kx,...t}}getPipConfig(){return{...this.kx}}}class ur{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class dr{constructor(t){this.Dx=t,this.Jt=new ur(t)}renderer(){return this.Dx.isVisible()?this.Jt:null}}!function(t){t.ty="idle",t.iy="waiting_first_point",t.sy="waiting_second_point",t.ey="completed"}(ir||(ir={}));class fr{constructor(t,i,s={}){this.Ev=ir.ty,this.ny=null,this.ZS=null,this.sf=null,this.Ep=t,this.Mn=i,this.hy=s}ly(){this.Ev===ir.ty&&(this.Ev=ir.iy,this.ny=null,this.oy(),this._y())}uy(){this.Ev=ir.ty,this.ny=null,this.py(),this.vy(),this.hy.my&&this.hy.my()}gy(){return this.Ev}wy(){return this.Ev===ir.iy||this.Ev===ir.sy}oy(){this.ZS=t=>{this.Mx(t)},this.Ep.subscribeClick(this.ZS)}_y(){this.sf=t=>{this.bx(t)},this.Ep.subscribeCrosshairMove(this.sf)}py(){this.ZS&&(this.Ep.unsubscribeClick(this.ZS),this.ZS=null)}vy(){this.sf&&(this.Ep.unsubscribeCrosshairMove(this.sf),this.sf=null)}Mx(t){if(!t.point||!t.time)return;const i=this.Mn.coordinateToPrice(t.point.y);if(null===i)return;const s={wt:t.time,Mt:i};this.Ev===ir.iy?(this.ny=s,this.Ev=ir.sy,this.hy.My&&this.hy.My(s)):this.Ev===ir.sy&&this.ny&&(this.Ev=ir.ey,this.hy.by&&this.hy.by(s),this.hy.Sy&&this.hy.Sy(this.ny,s),this.py(),this.vy(),this.Ev=ir.ty,this.ny=null)}bx(t){if(!t.point||!t.time)return;if(this.Ev!==ir.sy)return;const i=this.Mn.coordinateToPrice(t.point.y);if(null===i)return;const s={wt:t.time,Mt:i};this.hy.xy&&this.hy.xy(s)}m(){this.uy()}}class pr extends sr{constructor(t,i){super(t,"ruler-tool",i),this.$M=null,this.UM=null,this.er=null,this.yy=null,this.Py=!1,this.Rx=!1,this.Cy=null,this.OS=!1,this.Ty=null,this.sf=null,this.ky={lineColor:"#2962ff",lineWidth:2,showLabel:!0,labelBackgroundColor:"#2962ff",labelTextColor:"#ffffff",selectionColor:"#ff6b00",selectionLineWidth:3,symbol:"DEFAULT",...i};const s=this.ky.pipConfig||rr(this.ky.symbol||"DEFAULT");this.zx=new cr(s),this.wS(),this.ky.interactive?this.Dy():this.ky.point1Time&&this.ky.point2Time&&(this.Py=!0,this.Ox())}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new dr(this)}Dy(){this.yy=new fr(this._chart,this._series,{My:t=>{this.ky.point1Time=t.wt,this.ky.point1Price=t.Mt,this.ob()},by:t=>{this.ky.point2Time=t.wt,this.ky.point2Price=t.Mt},Sy:(t,i)=>{this.ky.point1Time=t.wt,this.ky.point1Price=t.Mt,this.ky.point2Time=i.wt,this.ky.point2Price=i.Mt,this.Py=!0,this.Cy=null,this.Ox(),this.Ry(),this.ob()},xy:t=>{this.Cy=t,this.ob()}}),this.yy.ly()}drawToCanvas(t,i,s){if(!this.Py&&this.ky.point1Time&&this.Cy)return void this.Vy(t,i,s);if(!this.Py||!this.ky.point1Time||!this.ky.point2Time)return;const e=this._chart.timeScale(),n=(e.timeToCoordinate(this.ky.point1Time)??0)*i,h=(this._series.priceToCoordinate(this.ky.point1Price)??0)*s,r=(e.timeToCoordinate(this.ky.point2Time)??0)*i,a=(this._series.priceToCoordinate(this.ky.point2Price)??0)*s;this.Rx&&(t.strokeStyle=this.ky.selectionColor,t.lineWidth=this.ky.selectionLineWidth*i,t.beginPath(),t.moveTo(n,h),t.lineTo(r,a),t.stroke()),t.strokeStyle=this.ky.lineColor,t.lineWidth=this.ky.lineWidth*i,t.beginPath(),t.moveTo(n,h),t.lineTo(r,a),t.stroke(),this.Ux(t,n,h,i),this.Ux(t,r,a,i),this.ky.showLabel&&this.UM&&this.Nx(t,n,h,r,a,i,s)}Ux(t,i,s,e){const n=this.Rx?this.ky.selectionColor:this.ky.lineColor,h=this.Rx?5*e:4*e;t.fillStyle=n,t.beginPath(),t.arc(i,s,h,0,2*Math.PI),t.fill(),this.Rx&&(t.strokeStyle="#ffffff",t.lineWidth=2*e,t.stroke())}Vy(t,i,s){if(!this.ky.point1Time||!this.Cy)return;const e=this._chart.timeScale(),n=(e.timeToCoordinate(this.ky.point1Time)??0)*i,h=(this._series.priceToCoordinate(this.ky.point1Price)??0)*s,r=(e.timeToCoordinate(this.Cy.wt)??0)*i,a=(this._series.priceToCoordinate(this.Cy.Mt)??0)*s;t.strokeStyle=this.ky.lineColor,t.lineWidth=this.ky.lineWidth*i,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(n,h),t.lineTo(r,a),t.stroke(),t.setLineDash([]),this.Ux(t,n,h,i),t.globalAlpha=.5,this.Ux(t,r,a,i),t.globalAlpha=1}Nx(t,i,s,e,n,h,r){if(!this.UM)return;const a=(i+e)/2,l=(s+n)/2,o=`${this.zx.formatPips(this.UM.pips)} | ${this.zx.formatPercent(this.UM.pricePercent)} | ${this.zx.formatBarCount(this.UM.barCount)}`;t.font=12*h+"px sans-serif";const _=6*h,c=t.measureText(o).width+2*_,u=12*h+2*_;t.fillStyle=this.ky.labelBackgroundColor,t.fillRect(a-c/2,l-u/2,c,u),t.fillStyle=this.ky.labelTextColor,t.textAlign="center",t.textBaseline="middle",t.fillText(o,a,l)}Ox(){if(!this.ky.point1Time||!this.ky.point2Time||void 0===this.ky.point1Price||void 0===this.ky.point2Price)return;const t=this.Ey();this.UM=this.zx.calculateMetrics(this.ky.point1Time,this.ky.point1Price,this.ky.point2Time,this.ky.point2Price,t),this.ky.onUpdate&&this.UM&&this.ky.onUpdate(this.UM)}Ey(){if(!this.ky.point1Time||!this.ky.point2Time)return 0;const t=this._chart.timeScale(),i=t.timeToCoordinate(this.ky.point1Time),s=t.timeToCoordinate(this.ky.point2Time);if(null===i||null===s)return 0;return Math.abs(Math.round((s-i)/6))}updatePoints(t,i,s,e){this.ky.point1Time=t,this.ky.point1Price=i,this.ky.point2Time=s,this.ky.point2Price=e,this.Ox(),this.ob()}getMetrics(){return this.UM}remove(){this.destroy()}destroy(){this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.yy&&(this.yy.m(),this.yy=null),this.Ay(),this.ky.onRemove&&this.ky.onRemove()}Ry(){this.sf=t=>{this.Iy(t)},this._chart.subscribeCrosshairMove(this.sf)}Ay(){this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null)}Iy(t){if(!t.point||!t.time)return;if(!this.Rx||!this.OS)return;const i=this._series.coordinateToPrice(t.point.y);null!==i&&("point1"===this.Ty?(this.ky.point1Time=t.time,this.ky.point1Price=i):"point2"===this.Ty&&(this.ky.point2Time=t.time,this.ky.point2Price=i),this.Ox(),this.ob())}startDrag(t){this.OS=!0,this.Ty=t}stopDrag(){this.OS=!1,this.Ty=null}hitTestEndpoint(t,i){if(!this.Py||!this.ky.point1Time||!this.ky.point2Time)return null;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.ky.point1Time)??0,n=this._series.priceToCoordinate(this.ky.point1Price)??0,h=s.timeToCoordinate(this.ky.point2Time)??0,r=this._series.priceToCoordinate(this.ky.point2Price)??0;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-n,2))<=10)return"point1";return Math.sqrt(Math.pow(t-h,2)+Math.pow(i-r,2))<=10?"point2":null}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.Ox(),this.ob()}setSelected(t){this.Rx!==t&&(this.Rx=t,this.ob())}isSelected(){return this.Rx}isComplete(){return this.Py}hitTest(t,i){if(!this.Py||!this.ky.point1Time||!this.ky.point2Time)return!1;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.ky.point1Time)??0,n=this._series.priceToCoordinate(this.ky.point1Price)??0,h=s.timeToCoordinate(this.ky.point2Time)??0,r=this._series.priceToCoordinate(this.ky.point2Price)??0;return this.Fy(t,i,e,n,h,r)<=(this.Rx?12:8)}Fy(t,i,s,e,n,h){const r=n-s,a=h-e,l=r*r+a*a;let o,_,c=-1;0!==l&&(c=((t-s)*r+(i-e)*a)/l),c<0?(o=s,_=e):c>1?(o=n,_=h):(o=s+c*r,_=e+c*a);const u=t-o,d=i-_;return Math.sqrt(u*u+d*d)}}function vr(t,i){return new pr(t,i)}const mr=[{By:0,Za:"0.0%"},{By:.236,Za:"23.6%"},{By:.382,Za:"38.2%"},{By:.5,Za:"50.0%"},{By:.618,Za:"61.8%"},{By:.786,Za:"78.6%"},{By:1,Za:"100.0%"}],gr=[...mr,{By:1.272,Za:"127.2%"},{By:1.414,Za:"141.4%"},{By:1.618,Za:"161.8%"},{By:2,Za:"200.0%"},{By:2.618,Za:"261.8%"}];class wr{constructor(t=!1){this.Ly=t?gr:mr}calculateLevels(t,i,s,e){const n=Math.abs(e-i),h=n/i*100,r=e>i,a=this.Ly.map(({By:t,Za:i})=>{let s;return s=r?e-n*t:e+n*t,{By:t,Mt:s,Za:i}});return{point1:{time:t,price:i},point2:{time:s,price:e},priceRange:n,priceRangePercent:h,levels:a,isUptrend:r}}getPriceAtRatio(t,i,s){const e=Math.abs(i-t);return i>t?i-e*s:i+e*s}formatPrice(t,i=5){return t.toFixed(i)}formatLevel(t,i=5){return`${t.label} (${this.formatPrice(t.price,i)})`}updateRatios(t){this.Ly=t}getRatios(){return[...this.Ly]}useStandardRatios(){this.Ly=mr}useExtendedRatios(){this.Ly=gr}}class Mr{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class br{constructor(t){this.Dx=t,this.Jt=new Mr(t)}renderer(){return this.Dx.isVisible()?this.Jt:null}}class Sr extends sr{constructor(t,i){super(t,"fibonacci-tool",i),this.$M=null,this.UM=null,this.er=null,this.yy=null,this.Py=!1,this.Rx=!1,this.Cy=null,this.OS=!1,this.Ty=null,this.sf=null,this.zy={lineColor:"#787b86",lineWidth:1,showLabels:!0,labelPosition:"right",useExtended:!1,levelColors:{0:"#787b86",.236:"#f23645",.382:"#ff9800",.5:"#2196f3",.618:"#4caf50",.786:"#9c27b0",1:"#787b86"},...i},this.zx=new wr(this.zy.useExtended),this.wS(),this.zy.interactive?this.Dy():(this.Py=!0,this.Ox())}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new br(this)}drawToCanvas(t,i,s){if(!this.Py&&this.zy.point1Time&&this.Cy)return void this.Vy(t,i,s);if(!this.UM||!this.zy.point1Time||!this.zy.point2Time)return;const e=this._chart.timeScale(),n=(e.timeToCoordinate(this.zy.point1Time)??0)*i,h=(e.timeToCoordinate(this.zy.point2Time)??0)*i,r=Math.min(n,h),a=Math.max(n,h),l=this.Rx?2:this.zy.lineWidth;this.UM.levels.forEach(e=>{this.Oy(t,e,r,a,i,s,l)}),this.Rx&&(this.Ux(t,n,(this._series.priceToCoordinate(this.zy.point1Price)??0)*s,i),this.Ux(t,h,(this._series.priceToCoordinate(this.zy.point2Price)??0)*s,i))}Oy(t,i,s,e,n,h,r=1){const a=i.ratio??i.By,l=i.price??i.Mt;if(void 0===a||void 0===l)return;const o=(this._series.priceToCoordinate(l)??0)*h;let _=this.zy.levelColors?.[a.toString()]||this.zy.lineColor;this.Rx&&(_="#ff6b00"),t.strokeStyle=_,t.lineWidth=r*n,t.beginPath(),t.moveTo(s,o),t.lineTo(e,o),t.stroke(),this.zy.showLabels&&this.Nx(t,i,s,e,o,n,_)}Nx(t,i,s,e,n,h,r){const a=i.label??i.Za,l=i.price??i.Mt,o=`${a} ${this.zx.formatPrice(l)}`;t.font=11*h+"px sans-serif";const _=t.measureText(o),c=4*h,u="right"===this.zy.labelPosition?e+c:s-_.width-c,d=n;t.fillStyle="rgba(255, 255, 255, 0.9)",t.fillRect(u-c/2,d-11*h/2-c/2,_.width+c,11*h+c),t.fillStyle=r,t.textAlign="right"===this.zy.labelPosition?"left":"right",t.textBaseline="middle",t.fillText(o,u,d)}Ox(){this.zy.point1Time&&this.zy.point1Price&&this.zy.point2Time&&this.zy.point2Price&&(this.UM=this.zx.calculateLevels(this.zy.point1Time,this.zy.point1Price,this.zy.point2Time,this.zy.point2Price),this.zy.onUpdate&&this.UM&&this.zy.onUpdate(this.UM))}updatePoints(t,i,s,e){this.zy.point1Time=t,this.zy.point1Price=i,this.zy.point2Time=s,this.zy.point2Price=e,this.Ox(),this.ob()}getMetrics(){return this.UM}getLevels(){return this.UM?.levels||[]}isVisible(){return this._visible}useExtendedLevels(t){this.zy.useExtended=t,t?this.zx.useExtendedRatios():this.zx.useStandardRatios(),this.Ox(),this.ob()}Dy(){this.yy=new fr(this._chart,this._series,{My:t=>{this.zy.point1Time=t.wt,this.zy.point1Price=t.Mt,this.ob()},by:t=>{this.zy.point2Time=t.wt,this.zy.point2Price=t.Mt},Sy:(t,i)=>{this.zy.point1Time=t.wt,this.zy.point1Price=t.Mt,this.zy.point2Time=i.wt,this.zy.point2Price=i.Mt,this.Py=!0,this.Cy=null,this.Ox(),this.Ry(),this.ob()},xy:t=>{this.Cy=t,this.ob()}}),this.yy.ly()}Vy(t,i,s){if(!this.zy.point1Time||!this.Cy)return;const e=this._chart.timeScale(),n=(e.timeToCoordinate(this.zy.point1Time)??0)*i,h=(this._series.priceToCoordinate(this.zy.point1Price)??0)*s,r=(e.timeToCoordinate(this.Cy.wt)??0)*i,a=(this._series.priceToCoordinate(this.Cy.Mt)??0)*s,l=this.zx.calculateLevels(this.zy.point1Time,this.zy.point1Price,this.Cy.wt,this.Cy.Mt),o=Math.min(n,r),_=Math.max(n,r);t.setLineDash([5*i,5*i]),t.globalAlpha=.7,l.levels.forEach(e=>{const n=e.ratio??e.By,h=e.price??e.Mt;if(void 0===n||void 0===h)return;const r=(this._series.priceToCoordinate(h)??0)*s,a=this.zy.levelColors?.[n.toString()]||this.zy.lineColor;if(t.strokeStyle=a,t.lineWidth=this.zy.lineWidth*i,t.beginPath(),t.moveTo(o,r),t.lineTo(_,r),t.stroke(),this.zy.showLabels){const s=`${e.label??e.Za} ${this.zx.formatPrice(h)}`;t.font=11*i+"px sans-serif";const n=t.measureText(s),l=4*i,c="right"===this.zy.labelPosition?_+l:o-n.width-l,u=r;t.fillStyle="rgba(255, 255, 255, 0.8)",t.fillRect(c-l/2,u-11*i/2-l/2,n.width+l,11*i+l),t.fillStyle=a,t.textAlign="right"===this.zy.labelPosition?"left":"right",t.textBaseline="middle",t.fillText(s,c,u)}}),t.setLineDash([]),t.globalAlpha=1,this.Ux(t,n,h,i),t.globalAlpha=.6,this.Ux(t,r,a,i),t.globalAlpha=1}Ux(t,i,s,e){const n=this.Rx?"#ff6b00":this.zy.lineColor,h=this.Rx?5*e:4*e;t.fillStyle=n,t.beginPath(),t.arc(i,s,h,0,2*Math.PI),t.fill(),this.Rx&&(t.strokeStyle="#ffffff",t.lineWidth=2*e,t.stroke())}Ry(){this.sf=t=>{this.Iy(t)},this._chart.subscribeCrosshairMove(this.sf)}Ay(){this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null)}Iy(t){if(!t.point||!t.time)return;if(!this.Rx||!this.OS)return;const i=this._series.coordinateToPrice(t.point.y);null!==i&&("point1"===this.Ty?(this.zy.point1Time=t.time,this.zy.point1Price=i):"point2"===this.Ty&&(this.zy.point2Time=t.time,this.zy.point2Price=i),this.Ox(),this.ob())}startDrag(t){this.OS=!0,this.Ty=t}stopDrag(){this.OS=!1,this.Ty=null}hitTestEndpoint(t,i){if(!this.Py||!this.zy.point1Time||!this.zy.point2Time)return null;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.zy.point1Time)??0,n=this._series.priceToCoordinate(this.zy.point1Price)??0,h=s.timeToCoordinate(this.zy.point2Time)??0,r=this._series.priceToCoordinate(this.zy.point2Price)??0;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-n,2))<=10)return"point1";return Math.sqrt(Math.pow(t-h,2)+Math.pow(i-r,2))<=10?"point2":null}setSelected(t){this.Rx!==t&&(this.Rx=t,this.ob())}isSelected(){return this.Rx}hitTest(t,i){if(!this.Py||!this.zy.point1Time||!this.zy.point2Time)return!1;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.zy.point1Time)??0,n=s.timeToCoordinate(this.zy.point2Time)??0;if(t<Math.min(e,n)||t>Math.max(e,n))return!1;if(!this.UM)return!1;for(const t of this.UM.levels){const s=t.price??t.Mt;if(void 0===s)continue;const e=this._series.priceToCoordinate(s)??0;if(Math.abs(i-e)<=8)return!0}return!1}remove(){this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.yy&&(this.yy.m(),this.yy=null),this.Ay(),this.zy.onRemove&&this.zy.onRemove()}destroy(){this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.zy.onRemove&&this.zy.onRemove()}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.Ox(),this.ob()}}function xr(t,i){return new Sr(t,i)}class yr{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Pr{constructor(t){this.Dx=t,this.Jt=new yr(t)}renderer(){return this.Dx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class Cr extends sr{constructor(t,i){super(t,"trend-line",i),this.$M=null,this.er=null,this.Rx=!1,this.Vx=!1,this.OS=!1,this.Ex=null,this.Wy=null,this.$y=null,this.Py=!1,this.Cy=null,this.Ny={lineColor:"#2962ff",lineWidth:2,lineStyle:"solid",extendLeft:!1,extendRight:!1,interactive:!1,...i},this.wS(),this.Ny.interactive?this.Dy():this.Py=!0}Dy(){new fr(this._chart,this._series,{My:t=>{this.Ny.point1Time=t.wt,this.Ny.point1Price=t.Mt,this.ob()},by:t=>{this.Ny.point2Time=t.wt,this.Ny.point2Price=t.Mt,this.Py=!0,this.ob(),this.Ny.onUpdate&&this.Ny.onUpdate()},xy:t=>{this.Ny.point1Time&&!this.Py&&(this.Cy=t,this.ob())},Sy:()=>{this.Py=!0}}).ly()}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new Pr(this)}drawToCanvas(t,i,s){if(!this.Py&&this.Ny.point1Time&&this.Cy)return void this.Vy(t,i,s);if(!this.Ny.point1Time||!this.Ny.point2Time)return;const e=this._chart.timeScale(),n=(e.timeToCoordinate(this.Ny.point1Time)??0)*i,h=(this._series.priceToCoordinate(this.Ny.point1Price)??0)*s,r=(e.timeToCoordinate(this.Ny.point2Time)??0)*i,a=(this._series.priceToCoordinate(this.Ny.point2Price)??0)*s,l=this.Rx?"#ff6b00":this.Ny.lineColor,o=this.Rx?this.Ny.lineWidth+1:this.Ny.lineWidth;t.strokeStyle=l,t.lineWidth=o*i,"dashed"===this.Ny.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.Ny.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath();const _=this._chart.chartElement().clientWidth*i;let c=n,u=h,d=r,f=a;if(this.Ny.extendLeft||this.Ny.extendRight){const t=(a-h)/(r-n);this.Ny.extendLeft&&(c=0,u=h-t*(n-0)),this.Ny.extendRight&&(d=_,f=h+t*(_-n))}t.moveTo(c,u),t.lineTo(d,f),t.stroke(),t.setLineDash([]),this.Rx&&(this.Ux(t,n,h,i,l),this.Ux(t,r,a,i,l))}Vy(t,i,s){if(!this.Ny.point1Time||!this.Cy)return;const e=this._chart.timeScale(),n=(e.timeToCoordinate(this.Ny.point1Time)??0)*i,h=(this._series.priceToCoordinate(this.Ny.point1Price)??0)*s,r=(e.timeToCoordinate(this.Cy.wt)??0)*i,a=(this._series.priceToCoordinate(this.Cy.Mt)??0)*s;t.strokeStyle=this.Ny.lineColor,t.lineWidth=this.Ny.lineWidth*i,t.globalAlpha=.7,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(n,h),t.lineTo(r,a),t.stroke(),t.setLineDash([]),t.globalAlpha=1,this.Ux(t,n,h,i,this.Ny.lineColor),t.globalAlpha=.5,this.Ux(t,r,a,i,this.Ny.lineColor),t.globalAlpha=1}Ux(t,i,s,e,n){const h=5*e;t.fillStyle=n,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.beginPath(),t.arc(i,s,h,0,2*Math.PI),t.fill(),t.stroke()}setSelected(t){this.Rx!==t&&(this.Rx=t,this.ob())}isSelected(){return this.Rx}setHovered(t){this.Vx!==t&&(this.Vx=t,this.ob())}hitTest(t,i){if(!this.Ny.point1Time||!this.Ny.point2Time)return!1;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.Ny.point1Time)??0,n=this._series.priceToCoordinate(this.Ny.point1Price)??0,h=s.timeToCoordinate(this.Ny.point2Time)??0,r=this._series.priceToCoordinate(this.Ny.point2Price)??0;return this.Hy(t,i,e,n,h,r)<=8}Hy(t,i,s,e,n,h){const r=n-s,a=h-e,l=r*r+a*a;if(0===l)return Math.sqrt((t-s)*(t-s)+(i-e)*(i-e));let o=((t-s)*r+(i-e)*a)/l;o=Math.max(0,Math.min(1,o));const _=s+o*r,c=e+o*a;return Math.sqrt((t-_)*(t-_)+(i-c)*(i-c))}hitTestEndpoint(t,i){if(!this.Ny.point1Time||!this.Ny.point2Time)return null;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.Ny.point1Time)??0,n=this._series.priceToCoordinate(this.Ny.point1Price)??0,h=s.timeToCoordinate(this.Ny.point2Time)??0,r=this._series.priceToCoordinate(this.Ny.point2Price)??0;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-n,2))<=10)return"point1";if(Math.sqrt(Math.pow(t-h,2)+Math.pow(i-r,2))<=10)return"point2";return this.Hy(t,i,e,n,h,r)<=10?"line":null}startDrag(t){this.OS=!0,this.Ex=t,"line"===t&&(this.Wy={wt:this.Ny.point1Time,Mt:this.Ny.point1Price},this.$y={wt:this.Ny.point2Time,Mt:this.Ny.point2Price})}stopDrag(){this.OS=!1,this.Ex=null,this.Wy=null,this.$y=null}updateDrag(t,i){if(this.OS&&this.Ex){if("point1"===this.Ex)this.Ny.point1Time=t,this.Ny.point1Price=i;else if("point2"===this.Ex)this.Ny.point2Time=t,this.Ny.point2Price=i;else if("line"===this.Ex&&this.Wy&&this.$y){const s=i-this.Wy.Mt,e=t-this.Wy.wt;this.Ny.point1Time=this.Wy.wt+e,this.Ny.point1Price=this.Wy.Mt+s,this.Ny.point2Time=this.$y.wt+e,this.Ny.point2Price=this.$y.Mt+s,this.Wy={wt:this.Ny.point1Time,Mt:this.Ny.point1Price},this.$y={wt:this.Ny.point2Time,Mt:this.Ny.point2Price}}this.ob(),this.Ny.onUpdate&&this.Ny.onUpdate()}}isVisible(){return this._visible}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.$M&&this._series.updatePrimitive(this.$M)}remove(){this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.Ny.onRemove&&this.Ny.onRemove()}}function Tr(t,i){return new Cr(t,i)}class kr{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Dr{constructor(t){this.Dx=t,this.Jt=new kr(t)}renderer(){return this.Dx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class Rr extends sr{constructor(t,i){super(t,"horizontal-line",i),this.$M=null,this.er=null,this.Rx=!1,this.Vx=!1,this.OS=!1,this.Uy={lineColor:"#2962ff",lineWidth:2,lineStyle:"solid",showLabel:!0,labelText:"",interactive:!1,...i},this.wS()}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new Dr(this)}drawToCanvas(t,i,s){if(void 0===this.Uy.price)return;const e=(this._series.priceToCoordinate(this.Uy.price)??0)*s,n=this._chart.chartElement().clientWidth*i,h=this.Rx?"#ff6b00":this.Uy.lineColor,r=this.Rx?this.Uy.lineWidth+1:this.Uy.lineWidth;t.strokeStyle=h,t.lineWidth=r*i,"dashed"===this.Uy.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.Uy.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.moveTo(0,e),t.lineTo(n,e),t.stroke(),t.setLineDash([]),this.Uy.showLabel&&(this.Rx||this.Vx)&&this.Nx(t,e,i,s,h)}Nx(t,i,s,e,n){const h=this.Uy.labelText||this.Uy.price.toFixed(4),r=6*s,a=12*s;t.font=`${a}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const l=t.measureText(h).width,o=a,_=10*s,c=i-o/2-r;t.fillStyle=n,t.fillRect(_,c,l+2*r,o+2*r),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(h,_+r,c+r)}setSelected(t){this.Rx!==t&&(this.Rx=t,this.ob())}isSelected(){return this.Rx}setHovered(t){this.Vx!==t&&(this.Vx=t,this.ob())}hitTest(t,i){if(void 0===this.Uy.price)return!1;const s=this._series.priceToCoordinate(this.Uy.price)??0;return Math.abs(i-s)<=8}hitTestEndpoint(t,i){return this.hitTest(t,i)?"line":null}startDrag(t){this.OS=!0}stopDrag(){this.OS=!1}updateDrag(t,i){this.OS&&(this.Uy.price=i,this.ob(),this.Uy.onUpdate&&this.Uy.onUpdate())}getPrice(){return this.Uy.price}setPrice(t){this.Uy.price=t,this.ob()}setLabel(t){this.Uy.labelText=t,this.ob()}isVisible(){return this._visible}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.$M&&this._series.updatePrimitive(this.$M)}remove(){this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.Uy.onRemove&&this.Uy.onRemove()}}function Vr(t,i){return new Rr(t,i)}class Er{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Ar{constructor(t){this.Dx=t,this.Jt=new Er(t)}renderer(){return this.Dx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class Ir extends sr{constructor(t,i){super(t,"vertical-line",i),this.$M=null,this.er=null,this.Rx=!1,this.Vx=!1,this.OS=!1,this.qy={lineColor:"#787b86",lineWidth:1,lineStyle:"dashed",showLabel:!0,labelText:"",interactive:!1,...i},this.wS()}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new Ar(this)}drawToCanvas(t,i,s){if(void 0===this.qy.time)return;const e=(this._chart.timeScale().timeToCoordinate(this.qy.time)??0)*i,n=this._chart.chartElement().clientHeight*s,h=this.Rx?"#ff6b00":this.qy.lineColor,r=this.Rx?this.qy.lineWidth+1:this.qy.lineWidth;t.strokeStyle=h,t.lineWidth=r*i,"dashed"===this.qy.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.qy.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.moveTo(e,0),t.lineTo(e,n),t.stroke(),t.setLineDash([]),this.qy.showLabel&&(this.Rx||this.Vx)&&this.qy.labelText&&this.Nx(t,e,i,s,h)}Nx(t,i,s,e,n){const h=this.qy.labelText,r=6*s,a=12*s;t.font=`${a}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const l=t.measureText(h).width,o=a,_=i-l/2-r,c=10*e;t.fillStyle=n,t.fillRect(_,c,l+2*r,o+2*r),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(h,_+r,c+r)}setSelected(t){this.Rx!==t&&(this.Rx=t,this.ob())}isSelected(){return this.Rx}setHovered(t){this.Vx!==t&&(this.Vx=t,this.ob())}hitTest(t,i){if(void 0===this.qy.time)return!1;const s=this._chart.timeScale().timeToCoordinate(this.qy.time)??0;return Math.abs(t-s)<=8}hitTestEndpoint(t,i){return this.hitTest(t,i)?"line":null}startDrag(t){this.OS=!0}stopDrag(){this.OS=!1}updateDrag(t,i){this.OS&&(this.qy.time=t,this.ob(),this.qy.onUpdate&&this.qy.onUpdate())}getTime(){return this.qy.time}setTime(t){this.qy.time=t,this.ob()}setLabel(t){this.qy.labelText=t,this.ob()}isVisible(){return this._visible}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.$M&&this._series.updatePrimitive(this.$M)}remove(){this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.qy.onRemove&&this.qy.onRemove()}}function Fr(t,i){return new Ir(t,i)}class Br{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Lr{constructor(t){this.Dx=t,this.Jt=new Br(t)}renderer(){return this.Dx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class zr extends sr{constructor(t,i){super(t,"arrow",i),this.$M=null,this.er=null,this.Rx=!1,this.Vx=!1,this.OS=!1,this.Yy=-1,this.jy=!1,this.ZS=null,this.Gy=null,this.sf=null,this.Cy=null,this.Ky={points:[],lineColor:"#2962ff",lineWidth:2,showArrowHead:!0,showCircles:!0,circleRadius:4,interactive:!1,...i},this.wS(),!this.Ky.interactive||this.Ky.points&&0!==this.Ky.points.length||this.Dy()}Dy(){this.jy=!0,this.ZS=t=>{if(!t.point||!t.time)return;const i=this._series.coordinateToPrice(t.point.y);null!==i&&(this.Ky.points||(this.Ky.points=[]),this.Ky.points.push({time:t.time,price:i}),this.ob(),this.Ky.onUpdate&&this.Ky.onUpdate())},this.sf=t=>{if(this.jy)if(t.point&&t.time){const i=this._series.coordinateToPrice(t.point.y);null!==i&&(this.Cy={wt:t.time,Mt:i},this.ob())}else this.Cy=null,this.ob()},this.Gy=t=>{this.jy&&(t.preventDefault(),t.stopPropagation(),this.finishDrawing())},this._chart.subscribeClick(this.ZS),this._chart.subscribeCrosshairMove(this.sf);const t=this._chart.chartElement?.();t&&t.addEventListener("contextmenu",this.Gy)}finishDrawing(){if(this.ZS&&(this._chart.unsubscribeClick(this.ZS),this.ZS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.Gy){const t=this._chart.chartElement?.();t&&t.removeEventListener("contextmenu",this.Gy),this.Gy=null}this.jy=!1,this.Cy=null,this.ob(),this.Ky.onComplete&&this.Ky.onComplete()}isDrawing(){return this.jy}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new Lr(this)}drawToCanvas(t,i,s){if(!this.Ky.points||0===this.Ky.points.length)return;const e=this._chart.timeScale(),n=this.Rx?"#ff6b00":this.Ky.lineColor,h=this.Rx?this.Ky.lineWidth+1:this.Ky.lineWidth,r=[];for(const t of this.Ky.points){const n=(e.timeToCoordinate(t.time)??0)*i,h=(this._series.priceToCoordinate(t.price)??0)*s;r.push({ct:n,ut:h})}let a=null;if(this.jy&&this.Cy&&this.Ky.points.length>0){a={ct:(e.timeToCoordinate(this.Cy.wt)??0)*i,ut:(this._series.priceToCoordinate(this.Cy.Mt)??0)*s}}if(r.length>1){t.strokeStyle=n,t.lineWidth=h*i,t.beginPath(),t.moveTo(r[0].ct,r[0].ut);for(let i=1;i<r.length;i++)t.lineTo(r[i].ct,r[i].ut);t.stroke()}if(a&&r.length>0){const s=r[r.length-1];t.strokeStyle=n,t.lineWidth=h*i,t.globalAlpha=.5,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(s.ct,s.ut),t.lineTo(a.ct,a.ut),t.stroke(),t.setLineDash([]),t.globalAlpha=1}if(this.Ky.showArrowHead&&r.length>1&&this.Xy(t,r[r.length-2],r[r.length-1],i,n),this.Ky.showCircles)for(let s=0;s<r.length;s++)this.Zy(t,r[s].ct,r[s].ut,i,n,0===s)}Xy(t,i,s,e,n){const h=12*e,r=Math.atan2(s.ut-i.ut,s.ct-i.ct),a={ct:s.ct-h*Math.cos(r-Math.PI/6),ut:s.ut-h*Math.sin(r-Math.PI/6)},l={ct:s.ct-h*Math.cos(r+Math.PI/6),ut:s.ut-h*Math.sin(r+Math.PI/6)};t.fillStyle=n,t.beginPath(),t.moveTo(s.ct,s.ut),t.lineTo(a.ct,a.ut),t.lineTo(l.ct,l.ut),t.closePath(),t.fill()}Zy(t,i,s,e,n,h){const r=this.Ky.circleRadius*e;t.beginPath(),t.arc(i,s,r,0,2*Math.PI),h?(t.fillStyle=n,t.fill()):(t.strokeStyle=n,t.lineWidth=2*e,t.stroke(),t.fillStyle="#ffffff",t.fill(),t.strokeStyle=n,t.stroke())}setSelected(t){this.Rx!==t&&(this.Rx=t,this.ob())}isSelected(){return this.Rx}setHovered(t){this.Vx!==t&&(this.Vx=t,this.ob())}hitTest(t,i){if(!this.Ky.points||0===this.Ky.points.length)return!1;const s=this._chart.timeScale();for(let e=0;e<this.Ky.points.length-1;e++){const n=this.Ky.points[e],h=this.Ky.points[e+1],r=s.timeToCoordinate(n.time)??0,a=this._series.priceToCoordinate(n.price)??0,l=s.timeToCoordinate(h.time)??0,o=this._series.priceToCoordinate(h.price)??0;if(this.Hy(t,i,r,a,l,o)<=8)return!0}for(const e of this.Ky.points){const n=s.timeToCoordinate(e.time)??0,h=this._series.priceToCoordinate(e.price)??0;if(Math.sqrt(Math.pow(t-n,2)+Math.pow(i-h,2))<=8)return!0}return!1}Hy(t,i,s,e,n,h){const r=n-s,a=h-e,l=r*r+a*a;if(0===l)return Math.sqrt((t-s)*(t-s)+(i-e)*(i-e));let o=((t-s)*r+(i-e)*a)/l;o=Math.max(0,Math.min(1,o));const _=s+o*r,c=e+o*a;return Math.sqrt((t-_)*(t-_)+(i-c)*(i-c))}hitTestEndpoint(t,i){if(!this.Ky.points||0===this.Ky.points.length)return null;const s=this._chart.timeScale();for(let e=0;e<this.Ky.points.length;e++){const n=this.Ky.points[e],h=s.timeToCoordinate(n.time)??0,r=this._series.priceToCoordinate(n.price)??0;if(Math.sqrt(Math.pow(t-h,2)+Math.pow(i-r,2))<=10)return e}return null}startDrag(t){this.OS=!0,this.Yy=t}stopDrag(){this.OS=!1,this.Yy=-1}updateDrag(t,i){this.OS&&-1!==this.Yy&&this.Ky.points&&this.Yy>=0&&this.Yy<this.Ky.points.length&&(this.Ky.points[this.Yy]={time:t,price:i},this.ob(),this.Ky.onUpdate&&this.Ky.onUpdate())}getPoints(){return this.Ky.points||[]}addPoint(t){this.Ky.points||(this.Ky.points=[]),this.Ky.points.push(t),this.ob()}isVisible(){return this._visible}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.$M&&this._series.updatePrimitive(this.$M)}remove(){if(this.ZS&&(this._chart.unsubscribeClick(this.ZS),this.ZS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.Gy){const t=this._chart.chartElement?.();t&&t.removeEventListener("contextmenu",this.Gy),this.Gy=null}this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.Ky.onRemove&&this.Ky.onRemove()}}function Or(t,i){return new zr(t,i)}class Wr{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class $r{constructor(t){this.Dx=t,this.Jt=new Wr(t)}renderer(){return this.Dx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"bottom"}}class Nr extends sr{constructor(t,i){super(t,"rectangle",i),this.$M=null,this.er=null,this.Rx=!1,this.Vx=!1,this.OS=!1,this.Ex=null,this.Wy=null,this.$y=null,this.jy=!1,this.ZS=null,this.sf=null,this.Cy=null,this.Jy={fillColor:"#2962ff",fillOpacity:.2,borderColor:"#2962ff",borderWidth:2,borderStyle:"solid",showLabel:!0,labelText:"",labelPosition:"top-left",interactive:!1,...i},this.wS(),!this.Jy.interactive||this.Jy.time1&&this.Jy.time2||this.Dy()}Dy(){this.jy=!0,this.ZS=t=>{if(!t.point||!t.time)return;const i=this._series.coordinateToPrice(t.point.y);null!==i&&(this.Jy.time1?(this.Jy.time2=t.time,this.Jy.price2=i,this.jy=!1,this.Cy=null,this.ZS&&(this._chart.unsubscribeClick(this.ZS),this.ZS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.ob(),this.Jy.onUpdate&&this.Jy.onUpdate()):(this.Jy.time1=t.time,this.Jy.price1=i,this.ob()))},this.sf=t=>{if(this.jy&&this.Jy.time1)if(t.point&&t.time){const i=this._series.coordinateToPrice(t.point.y);null!==i&&(this.Cy={wt:t.time,Mt:i},this.ob())}else this.Cy=null,this.ob()},this._chart.subscribeClick(this.ZS),this._chart.subscribeCrosshairMove(this.sf)}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new $r(this)}drawToCanvas(t,i,s){const e=this.Jy.time1,n=this.Jy.price1,h=this.jy&&this.Cy?this.Cy.wt:this.Jy.time2,r=this.jy&&this.Cy?this.Cy.Mt:this.Jy.price2;if(!e||void 0===n||!h||void 0===r)return;const a=this._chart.timeScale(),l=(a.timeToCoordinate(e)??0)*i,o=(this._series.priceToCoordinate(n)??0)*s,_=(a.timeToCoordinate(h)??0)*i,c=(this._series.priceToCoordinate(r)??0)*s,u=Math.min(l,_),d=Math.max(l,_),f=Math.min(o,c),p=Math.max(o,c),v=d-u,m=p-f;if(this.Jy.fillOpacity>0){const i=this.mS(this.Rx?"#ff6b00":this.Jy.fillColor,this.jy?.1:this.Jy.fillOpacity);t.fillStyle=i,t.fillRect(u,f,v,m)}const g=this.Rx?"#ff6b00":this.Jy.borderColor,w=this.Rx?this.Jy.borderWidth+1:this.Jy.borderWidth;t.strokeStyle=g,t.lineWidth=w*i,"dashed"===this.Jy.borderStyle?t.setLineDash([10*i,5*i]):"dotted"===this.Jy.borderStyle&&t.setLineDash([2*i,3*i]),t.strokeRect(u,f,v,m),t.setLineDash([]),this.Rx&&!this.jy&&this.Qy(t,u,f,d,p,i,g),this.Jy.showLabel&&this.Jy.labelText&&!this.jy&&this.Nx(t,u,f,d,p,i,s,g)}Qy(t,i,s,e,n,h,r){const a=8*h,l=[{ct:i,ut:s},{ct:e,ut:s},{ct:i,ut:n},{ct:e,ut:n}];t.fillStyle=r,t.strokeStyle="#ffffff",t.lineWidth=2*h;for(const i of l)t.fillRect(i.ct-a/2,i.ut-a/2,a,a),t.strokeRect(i.ct-a/2,i.ut-a/2,a,a)}Nx(t,i,s,e,n,h,r,a){const l=6*h,o=12*h;t.font=`${o}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const _=t.measureText(this.Jy.labelText).width,c=o;let u=i+l,d=s+l;switch(this.Jy.labelPosition){case"top-right":u=e-_-2*l,d=s+l;break;case"bottom-left":u=i+l,d=n-c-2*l;break;case"bottom-right":u=e-_-2*l,d=n-c-2*l;break;case"center":u=(i+e)/2-_/2-l,d=(s+n)/2-c/2-l}t.fillStyle=a,t.fillRect(u,d,_+2*l,c+2*l),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(this.Jy.labelText,u+l,d+l)}mS(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}setSelected(t){this.Rx!==t&&(this.Rx=t,this.ob())}isSelected(){return this.Rx}setHovered(t){this.Vx!==t&&(this.Vx=t,this.ob())}hitTest(t,i){if(!this.Jy.time1||!this.Jy.time2)return!1;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.Jy.time1)??0,n=this._series.priceToCoordinate(this.Jy.price1)??0,h=s.timeToCoordinate(this.Jy.time2)??0,r=this._series.priceToCoordinate(this.Jy.price2)??0,a=Math.min(e,h),l=Math.max(e,h),o=Math.min(n,r),_=Math.max(n,r);return t>=a&&t<=l&&i>=o&&i<=_}hitTestEndpoint(t,i){if(!this.Jy.time1||!this.Jy.time2)return null;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.Jy.time1)??0,n=this._series.priceToCoordinate(this.Jy.price1)??0,h=s.timeToCoordinate(this.Jy.time2)??0,r=this._series.priceToCoordinate(this.Jy.price2)??0,a=Math.min(e,h),l=Math.max(e,h),o=Math.min(n,r),_=Math.max(n,r),c=10;return Math.abs(t-a)<=c&&Math.abs(i-o)<=c?"corner1":Math.abs(t-l)<=c&&Math.abs(i-o)<=c?"corner2":Math.abs(t-a)<=c&&Math.abs(i-_)<=c?"corner3":Math.abs(t-l)<=c&&Math.abs(i-_)<=c?"corner4":t>=a&&t<=l&&i>=o&&i<=_?"body":null}startDrag(t){this.OS=!0,this.Ex=t,"body"===t&&(this.Wy={wt:this.Jy.time1,Mt:this.Jy.price1},this.$y={wt:this.Jy.time2,Mt:this.Jy.price2})}stopDrag(){this.OS=!1,this.Ex=null,this.Wy=null,this.$y=null}updateDrag(t,i){if(!this.OS||!this.Ex)return;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.Jy.time1)??0,n=this._series.priceToCoordinate(this.Jy.price1)??0,h=e<(s.timeToCoordinate(this.Jy.time2)??0),r=n<(this._series.priceToCoordinate(this.Jy.price2)??0);if("body"===this.Ex&&this.Wy&&this.$y){const s=i-this.Wy.Mt,e=t-this.Wy.wt;this.Jy.time1=this.Wy.wt+e,this.Jy.price1=this.Wy.Mt+s,this.Jy.time2=this.$y.wt+e,this.Jy.price2=this.$y.Mt+s,this.Wy={wt:this.Jy.time1,Mt:this.Jy.price1},this.$y={wt:this.Jy.time2,Mt:this.Jy.price2}}else switch(this.Ex){case"corner1":h&&r?(this.Jy.time1=t,this.Jy.price1=i):!h&&r?(this.Jy.time2=t,this.Jy.price1=i):h&&!r?(this.Jy.time1=t,this.Jy.price2=i):(this.Jy.time2=t,this.Jy.price2=i);break;case"corner2":h&&r?(this.Jy.time2=t,this.Jy.price1=i):!h&&r?(this.Jy.time1=t,this.Jy.price1=i):h&&!r?(this.Jy.time2=t,this.Jy.price2=i):(this.Jy.time1=t,this.Jy.price2=i);break;case"corner3":h&&r?(this.Jy.time1=t,this.Jy.price2=i):!h&&r?(this.Jy.time2=t,this.Jy.price2=i):h&&!r?(this.Jy.time1=t,this.Jy.price1=i):(this.Jy.time2=t,this.Jy.price1=i);break;case"corner4":h&&r?(this.Jy.time2=t,this.Jy.price2=i):!h&&r?(this.Jy.time1=t,this.Jy.price2=i):h&&!r?(this.Jy.time2=t,this.Jy.price1=i):(this.Jy.time1=t,this.Jy.price1=i)}this.ob(),this.Jy.onUpdate&&this.Jy.onUpdate()}isVisible(){return this._visible}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.$M&&this._series.updatePrimitive(this.$M)}remove(){this.ZS&&(this._chart.unsubscribeClick(this.ZS),this.ZS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.Jy.onRemove&&this.Jy.onRemove()}}function Hr(t,i){return new Nr(t,i)}class Ur{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class qr{constructor(t){this.Dx=t,this.Jt=new Ur(t)}renderer(){return this.Dx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"bottom"}}class Yr extends sr{constructor(t,i){super(t,"circle",i),this.$M=null,this.er=null,this.Rx=!1,this.Vx=!1,this.OS=!1,this.Ex=null,this.jy=!1,this.ZS=null,this.sf=null,this.Cy=null,this.tP={fillColor:"#2962ff",fillOpacity:.1,borderColor:"#2962ff",borderWidth:2,borderStyle:"solid",showLabel:!1,labelText:"",interactive:!1,...i},this.wS(),this.tP.interactive&&!this.tP.centerTime&&this.Dy()}Dy(){this.jy=!0,this.ZS=t=>{if(!t.point||!t.time)return;const i=this._series.coordinateToPrice(t.point.y);if(null!==i)if(this.tP.centerTime){const s=this._chart.timeScale().timeToCoordinate(this.tP.centerTime)??0,e=this._series.priceToCoordinate(this.tP.centerPrice)??0,n=this._chart.timeScale().timeToCoordinate(t.time)??0,h=this._series.priceToCoordinate(i)??0;this.tP.radiusTime=Math.abs(n-s),this.tP.radiusPrice=Math.abs(h-e),this.jy=!1,this.Cy=null,this.ZS&&(this._chart.unsubscribeClick(this.ZS),this.ZS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.ob(),this.tP.onUpdate&&this.tP.onUpdate()}else this.tP.centerTime=t.time,this.tP.centerPrice=i,this.ob()},this.sf=t=>{if(this.jy&&this.tP.centerTime)if(t.point&&t.time){const i=this._series.coordinateToPrice(t.point.y);null!==i&&(this.Cy={wt:t.time,Mt:i},this.ob())}else this.Cy=null,this.ob()},this._chart.subscribeClick(this.ZS),this._chart.subscribeCrosshairMove(this.sf)}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new qr(this)}drawToCanvas(t,i,s){if(!this.tP.centerTime||void 0===this.tP.centerPrice)return;const e=this._chart.timeScale(),n=(e.timeToCoordinate(this.tP.centerTime)??0)*i,h=(this._series.priceToCoordinate(this.tP.centerPrice)??0)*s;let r,a;if(this.jy&&this.Cy){const t=(e.timeToCoordinate(this.Cy.wt)??0)*i,l=(this._series.priceToCoordinate(this.Cy.Mt)??0)*s;r=Math.abs(t-n),a=Math.abs(l-h)}else{if(void 0===this.tP.radiusTime||void 0===this.tP.radiusPrice)return;r=this.tP.radiusTime*i,a=this.tP.radiusPrice*s}if(this.tP.fillOpacity>0){const i=this.mS(this.Rx?"#ff6b00":this.tP.fillColor,this.jy?.05:this.tP.fillOpacity);t.fillStyle=i,t.beginPath(),t.ellipse(n,h,r,a,0,0,2*Math.PI),t.fill()}const l=this.Rx?"#ff6b00":this.tP.borderColor,o=this.Rx?this.tP.borderWidth+1:this.tP.borderWidth;t.strokeStyle=l,t.lineWidth=o*i,"dashed"===this.tP.borderStyle?t.setLineDash([10*i,5*i]):"dotted"===this.tP.borderStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.ellipse(n,h,r,a,0,0,2*Math.PI),t.stroke(),t.setLineDash([]),this.Rx&&!this.jy&&this.iP(t,n,h,i,l),this.Rx&&!this.jy&&this.sP(t,n,h,r,a,i,l),this.tP.showLabel&&this.tP.labelText&&!this.jy&&this.Nx(t,n,h,i,l)}iP(t,i,s,e,n){const h=8*e;t.fillStyle=n,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.beginPath(),t.arc(i,s,h/2,0,2*Math.PI),t.fill(),t.stroke()}sP(t,i,s,e,n,h,r){const a=8*h,l=[{ct:i,ut:s-n},{ct:i+e,ut:s},{ct:i,ut:s+n},{ct:i-e,ut:s}];t.fillStyle=r,t.strokeStyle="#ffffff",t.lineWidth=2*h;for(const i of l)t.fillRect(i.ct-a/2,i.ut-a/2,a,a),t.strokeRect(i.ct-a/2,i.ut-a/2,a,a)}Nx(t,i,s,e,n){const h=6*e,r=12*e;t.font=`${r}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const a=t.measureText(this.tP.labelText).width,l=r,o=i-a/2-h,_=s-l/2-h;t.fillStyle=n,t.fillRect(o,_,a+2*h,l+2*h),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(this.tP.labelText,o+h,_+h)}mS(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}setSelected(t){this.Rx!==t&&(this.Rx=t,this.ob())}isSelected(){return this.Rx}setHovered(t){this.Vx!==t&&(this.Vx=t,this.ob())}hitTest(t,i){if(!this.tP.centerTime||void 0===this.tP.radiusTime)return!1;const s=this._chart.timeScale().timeToCoordinate(this.tP.centerTime)??0,e=this._series.priceToCoordinate(this.tP.centerPrice)??0,n=(t-s)/this.tP.radiusTime,h=(i-e)/this.tP.radiusPrice;return n*n+h*h<=1}hitTestEndpoint(t,i){if(!this.tP.centerTime||void 0===this.tP.radiusTime)return null;const s=this._chart.timeScale().timeToCoordinate(this.tP.centerTime)??0,e=this._series.priceToCoordinate(this.tP.centerPrice)??0,n=this.tP.radiusTime,h=this.tP.radiusPrice;if(Math.abs(t-s)<=10&&Math.abs(i-e)<=10)return"center";const r=[{ct:s,ut:e-h},{ct:s+n,ut:e},{ct:s,ut:e+h},{ct:s-n,ut:e}];for(const s of r)if(Math.abs(t-s.ct)<=10&&Math.abs(i-s.ut)<=10)return"edge";return null}startDrag(t){this.OS=!0,this.Ex=t}stopDrag(){this.OS=!1,this.Ex=null}updateDrag(t,i){if(this.OS&&this.Ex){if("center"===this.Ex)this.tP.centerTime=t,this.tP.centerPrice=i;else if("edge"===this.Ex){const s=this._chart.timeScale(),e=s.timeToCoordinate(this.tP.centerTime)??0,n=this._series.priceToCoordinate(this.tP.centerPrice)??0,h=s.timeToCoordinate(t)??0,r=this._series.priceToCoordinate(i)??0;this.tP.radiusTime=Math.abs(h-e),this.tP.radiusPrice=Math.abs(r-n)}this.ob(),this.tP.onUpdate&&this.tP.onUpdate()}}isVisible(){return this._visible}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.$M&&this._series.updatePrimitive(this.$M)}remove(){this.ZS&&(this._chart.unsubscribeClick(this.ZS),this.ZS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.tP.onRemove&&this.tP.onRemove()}}function jr(t,i){return new Yr(t,i)}class Gr{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Kr{constructor(t){this.Dx=t,this.Jt=new Gr(t)}renderer(){return this.Dx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}const Xr=[{level:.382,color:"#787B86",label:"38.2%"},{level:.5,color:"#9598A1",label:"50%"},{level:.618,color:"#787B86",label:"61.8%"}];class Zr extends sr{constructor(t,i){super(t,"fibonacci-fan",i),this.$M=null,this.er=null,this.Rx=!1,this.Vx=!1,this.OS=!1,this.Ex=null,this.jy=!1,this.ZS=null,this.sf=null,this.Cy=null,this.eP={levels:Xr,lineWidth:1,showLabels:!0,extendLines:!0,interactive:!1,...i},this.wS(),this.eP.interactive&&!this.eP.point1Time&&this.Dy()}Dy(){this.jy=!0,this.ZS=t=>{if(!t.point||!t.time)return;const i=this._series.coordinateToPrice(t.point.y);null!==i&&(this.eP.point1Time?(this.eP.point2Time=t.time,this.eP.point2Price=i,this.jy=!1,this.Cy=null,this.ZS&&(this._chart.unsubscribeClick(this.ZS),this.ZS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.ob(),this.eP.onUpdate&&this.eP.onUpdate()):(this.eP.point1Time=t.time,this.eP.point1Price=i,this.ob()))},this.sf=t=>{if(this.jy&&this.eP.point1Time)if(t.point&&t.time){const i=this._series.coordinateToPrice(t.point.y);null!==i&&(this.Cy={wt:t.time,Mt:i},this.ob())}else this.Cy=null,this.ob()},this._chart.subscribeClick(this.ZS),this._chart.subscribeCrosshairMove(this.sf)}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new Kr(this)}drawToCanvas(t,i,s){const e=this.eP.point1Time,n=this.eP.point1Price,h=this.jy&&this.Cy?this.Cy.wt:this.eP.point2Time,r=this.jy&&this.Cy?this.Cy.Mt:this.eP.point2Price;if(!e||void 0===n||!h||void 0===r)return;const a=this._chart.timeScale(),l=(a.timeToCoordinate(e)??0)*i,o=(this._series.priceToCoordinate(n)??0)*s,_=(a.timeToCoordinate(h)??0)*i,c=(this._series.priceToCoordinate(r)??0)*s,u=this.Rx?"#ff6b00":void 0,d=this.Rx?this.eP.lineWidth+1:this.eP.lineWidth;if(this.nP(t,l,o,_,c,u||"#2962FF",d*i),this.eP.levels)for(const e of this.eP.levels)this.hP(t,l,o,_,c,e,i,s,u,d);this.Rx&&!this.jy&&(this.Ux(t,l,o,i,u||"#ff6b00"),this.Ux(t,_,c,i,u||"#ff6b00"))}hP(t,i,s,e,n,h,r,a,l,o){const _=e,c=s+(n-s)*h.level;let u=_,d=c;if(this.eP.extendLines){const t=this._chart.chartElement().clientWidth*r,e=_-i,n=c-s,h=Math.sqrt(e*e+n*n);if(h>0){const r=2*t;u=i+e/h*r,d=s+n/h*r}}const f=l||h.color;this.nP(t,i,s,u,d,f,o*r),this.eP.showLabels&&!this.jy&&this.Nx(t,_,c,h.label,r,f)}nP(t,i,s,e,n,h,r){t.strokeStyle=h,t.lineWidth=r,t.beginPath(),t.moveTo(i,s),t.lineTo(e,n),t.stroke()}Ux(t,i,s,e,n){const h=5*e;t.fillStyle=n,t.beginPath(),t.arc(i,s,h,0,2*Math.PI),t.fill(),t.strokeStyle="#ffffff",t.lineWidth=2*e,t.stroke()}Nx(t,i,s,e,n,h){const r=11*n,a=4*n;t.font=`${r}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const l=t.measureText(e).width,o=r;t.fillStyle=h,t.fillRect(i+a,s-o-a,l+2*a,o+2*a),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(e,i+2*a,s-o-a+a)}setSelected(t){this.Rx!==t&&(this.Rx=t,this.ob())}isSelected(){return this.Rx}setHovered(t){this.Vx!==t&&(this.Vx=t,this.ob())}hitTest(t,i){if(!this.eP.point1Time||!this.eP.point2Time)return!1;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.eP.point1Time)??0,n=this._series.priceToCoordinate(this.eP.point1Price)??0,h=s.timeToCoordinate(this.eP.point2Time)??0,r=this._series.priceToCoordinate(this.eP.point2Price)??0;if(this.Hy(t,i,e,n,h,r)<=8)return!0;if(this.eP.levels)for(const s of this.eP.levels){const a=n+(r-n)*s.level,l=h;if(this.Hy(t,i,e,n,l,a)<=8)return!0}return!1}Hy(t,i,s,e,n,h){const r=n-s,a=h-e,l=r*r+a*a;if(0===l)return Math.sqrt((t-s)*(t-s)+(i-e)*(i-e));let o=((t-s)*r+(i-e)*a)/l;o=Math.max(0,Math.min(1,o));const _=s+o*r,c=e+o*a;return Math.sqrt((t-_)*(t-_)+(i-c)*(i-c))}hitTestEndpoint(t,i){if(!this.eP.point1Time||!this.eP.point2Time)return null;const s=this._chart.timeScale(),e=s.timeToCoordinate(this.eP.point1Time)??0,n=this._series.priceToCoordinate(this.eP.point1Price)??0,h=s.timeToCoordinate(this.eP.point2Time)??0,r=this._series.priceToCoordinate(this.eP.point2Price)??0;return Math.abs(t-e)<=10&&Math.abs(i-n)<=10?"point1":Math.abs(t-h)<=10&&Math.abs(i-r)<=10?"point2":null}startDrag(t){this.OS=!0,this.Ex=t}stopDrag(){this.OS=!1,this.Ex=null}updateDrag(t,i){this.OS&&this.Ex&&("point1"===this.Ex?(this.eP.point1Time=t,this.eP.point1Price=i):"point2"===this.Ex&&(this.eP.point2Time=t,this.eP.point2Price=i),this.ob(),this.eP.onUpdate&&this.eP.onUpdate())}isVisible(){return this._visible}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.$M&&this._series.updatePrimitive(this.$M)}remove(){this.ZS&&(this._chart.unsubscribeClick(this.ZS),this.ZS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.eP.onRemove&&this.eP.onRemove()}}function Jr(t,i){return new Zr(t,i)}class Qr{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class ta{constructor(t){this.Dx=t,this.Jt=new Qr(t)}renderer(){return this.Dx.isVisible()?this.Jt:null}}class ia extends sr{constructor(t,i){super(t,"fibonacci-extension",i),this.$M=null,this.er=null,this.Rx=!1,this.Vx=!1,this.OS=!1,this.Ex=null,this.zy={levels:[{level:0,color:"#787B86",label:"0%"},{level:.618,color:"#2962FF",label:"61.8%"},{level:1,color:"#787B86",label:"100%"},{level:1.618,color:"#F23645",label:"161.8%"},{level:2.618,color:"#9C27B0",label:"261.8%"}],lineColor:"#787B86",lineWidth:1,showLabels:!0,extendLines:!0,...i},this.wS()}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new ta(this)}getPoint1(){return this.zy.point1}getPoint2(){return this.zy.point2}getPoint3(){return this.zy.point3}getLevels(){return this.zy.levels||[]}getOptions(){return this.zy}setPoint1(t){this.zy.point1=t,this.ob()}setPoint2(t){this.zy.point2=t,this.ob()}setPoint3(t){this.zy.point3=t,this.ob()}isComplete(){return!!(this.zy.point1&&this.zy.point2&&this.zy.point3)}setSelected(t){this.Rx!==t&&(this.Rx=t,this.ob())}isSelected(){return this.Rx}setHovered(t){this.Vx!==t&&(this.Vx=t,this.ob())}hitTest(t,i){if(!this.isComplete())return!1;const s=this.zy.point1,e=this.zy.point2,n=this.zy.point3,h=this._chart.timeScale(),r=[s,e,n];for(const s of r){const e=h.timeToCoordinate(s.time)??0,n=this._series.priceToCoordinate(s.price)??0;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-n,2))<=10)return!0}const a=this.rP();for(const t of a){const s=this._series.priceToCoordinate(t.Mt)??0;if(Math.abs(i-s)<=10)return!0}return!1}hitTestEndpoint(t,i){if(console.log("🔍 hitTestEndpoint called:",t,i),console.log("isComplete:",this.isComplete()),!this.isComplete())return console.log("❌ Not complete"),null;const s=this.zy.point1,e=this.zy.point2,n=this.zy.point3;if(console.log("Points:",s,e,n),!s||!e||!n)return console.log("❌ Points missing"),null;const h=this._chart.timeScale(),r=20;if(console.log("Starting point checks..."),s&&s.time&&void 0!==s.price){const e=h.timeToCoordinate(s.time)??0,n=this._series.priceToCoordinate(s.price)??0,a=Math.sqrt(Math.pow(t-e,2)+Math.pow(i-n,2));if(console.log(`📍 point1: distance=${a.toFixed(2)}, tolerance=20`),a<=r)return console.log("✅ Hit point1!"),"point1"}if(e&&e.time&&void 0!==e.price){const s=h.timeToCoordinate(e.time)??0,n=this._series.priceToCoordinate(e.price)??0,a=Math.sqrt(Math.pow(t-s,2)+Math.pow(i-n,2));if(console.log(`📍 point2: distance=${a.toFixed(2)}, tolerance=20`),a<=r)return console.log("✅ Hit point2!"),"point2"}if(n&&n.time&&void 0!==n.price){const s=h.timeToCoordinate(n.time)??0,e=this._series.priceToCoordinate(n.price)??0,a=Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2));if(console.log(`📍 point3: distance=${a.toFixed(2)}, tolerance=20`),a<=r)return console.log("✅ Hit point3!"),"point3"}return console.log("❌ No endpoint hit"),null}startDrag(t){console.log("🚀 startDrag:",t),this.OS=!0,this.Ex=t}stopDrag(){console.log("🛑 stopDrag"),this.OS=!1,this.Ex=null}updateDrag(t,i){if(console.log("🔄 updateDrag:",t,i,"isDragging:",this.OS,"target:",this.Ex),!this.OS||!this.Ex)return;const s={time:t,price:i};switch(this.Ex){case"point1":this.setPoint1(s);break;case"point2":this.setPoint2(s);break;case"point3":this.setPoint3(s)}this.zy.onUpdate&&this.zy.onUpdate()}rP(){if(!this.isComplete())return[];const t=this.zy.point1,i=this.zy.point2,s=this.zy.point3,e=i.price-t.price;return(this.zy.levels||[]).map(t=>({ie:t.level,Mt:s.price+e*t.level,Za:t.label,R:t.color}))}getExtensionLevels(){return this.rP()}drawToCanvas(t,i,s){if(!this.isComplete())return;const e=this.zy.point1,n=this.zy.point2,h=this.zy.point3,r=this._chart.timeScale(),a=this.Rx,l=(r.timeToCoordinate(e.time)??0)*i,o=(this._series.priceToCoordinate(e.price)??0)*s,_=(r.timeToCoordinate(n.time)??0)*i,c=(this._series.priceToCoordinate(n.price)??0)*s,u=(r.timeToCoordinate(h.time)??0)*i,d=(this._series.priceToCoordinate(h.price)??0)*s;t.strokeStyle=this.zy.lineColor||"#787B86",t.lineWidth=(this.zy.lineWidth||1)*i*(a?1.5:1),t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(l,o),t.lineTo(_,c),t.stroke(),t.beginPath(),t.moveTo(_,c),t.lineTo(u,d),t.stroke(),t.setLineDash([]);const f=this.getExtensionLevels(),p=t.canvas.width;for(const e of f){const n=e.Mt??e.price,h=e.R??e.color,r=e.Za??e.label;if(null==n)continue;const l=(this._series.priceToCoordinate(n)??0)*s;if(t.strokeStyle=h,t.lineWidth=(this.zy.lineWidth||1)*i*(a?1.5:1),t.beginPath(),this.zy.extendLines?(t.moveTo(0,l),t.lineTo(p,l)):(t.moveTo(u,l),t.lineTo(p,l)),t.stroke(),this.zy.showLabels){const s=`${r} (${n.toFixed(5)})`;t.font=12*i+"px Arial",t.fillStyle=h,t.textAlign="left",t.textBaseline="middle";const e=5*i,a=Math.max(u,10*i)+e;t.fillText(s,a,l)}}const v=(a?6:4)*i,m=[{ct:l,ut:o,Za:"A"},{ct:_,ut:c,Za:"B"},{ct:u,ut:d,Za:"C"}];for(const s of m)t.fillStyle=a?"#ff6b00":"#2962FF",t.beginPath(),t.arc(s.ct,s.ut,v,0,2*Math.PI),t.fill(),t.fillStyle="#ffffff",t.beginPath(),t.arc(s.ct,s.ut,v-2*i,0,2*Math.PI),t.fill(),a&&(t.fillStyle="#2962FF",t.font=`bold ${10*i}px Arial`,t.textAlign="center",t.textBaseline="middle",t.fillText(s.Za,s.ct,s.ut))}isVisible(){return this._visible}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.$M&&this._series.updatePrimitive(this.$M)}remove(){this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null)}}function sa(t,i){return new ia(t,i)}class ea{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class na{constructor(t){this.Dx=t,this.Jt=new ea(t)}renderer(){return this.Dx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"top"}}class ha extends sr{constructor(t,i){super(t,"gantt",i),this.$M=null,this.er=null,this.Rx=!1,this.Vx=!1,this.aP=-1,this.lP={segments:[],rowHeight:40,rowSpacing:5,fillOpacity:.7,borderWidth:2,showLabels:!0,showGrid:!0,...i},this.wS()}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new na(this)}drawToCanvas(t,i,s){if(!this.lP.segments||0===this.lP.segments.length)return;const e=this._chart.timeScale(),n=50*s,h=this.lP.rowHeight*s,r=this.lP.rowSpacing*s;this.lP.showGrid&&this.sm(t,n,h,r,i,s),this.lP.segments.forEach((s,a)=>{const l=(e.timeToCoordinate(s.startTime)??0)*i,o=(e.timeToCoordinate(s.endTime)??0)*i,_=n+s.level*(h+r),c=a===this.aP;this.oP(t,l,o,_,h,s,c,i)})}sm(t,i,s,e,n,h){if(!this.lP.segments)return;const r=Math.max(...this.lP.segments.map(t=>t.level),0),a=this._chart.chartElement().clientWidth*n;t.strokeStyle="rgba(200, 200, 200, 0.3)",t.lineWidth=1*n;for(let n=0;n<=r+1;n++){const h=i+n*(s+e);t.beginPath(),t.moveTo(0,h),t.lineTo(a,h),t.stroke()}}oP(t,i,s,e,n,h,r,a){const l=s-i,o=this.mS(h.color,r?this.lP.fillOpacity+.2:this.lP.fillOpacity);t.fillStyle=o,t.fillRect(i,e,l,n);const _=this.Rx?"#ff6b00":h.color;t.strokeStyle=_,t.lineWidth=this.lP.borderWidth*a,t.strokeRect(i,e,l,n),this.lP.showLabels&&h.label&&this.Nx(t,i,e,l,n,h.label,a)}Nx(t,i,s,e,n,h,r){const a=11*r,l=6*r;t.font=`${a}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,t.fillStyle="#ffffff",t.textBaseline="middle";let o=h;const _=e-2*l;let c=t.measureText(o).width;if(c>_&&_>0){for(;c>_&&o.length>0;)o=o.slice(0,-1),c=t.measureText(o+"...").width;o+="..."}t.fillText(o,i+l,s+n/2)}mS(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${Math.min(1,i)})`}addSegment(t){this.lP.segments||(this.lP.segments=[]),this.lP.segments.push(t),this.ob(),this.lP.onUpdate&&this.lP.onUpdate()}removeSegment(t){this.lP.segments&&t>=0&&t<this.lP.segments.length&&(this.lP.segments.splice(t,1),this.ob(),this.lP.onUpdate&&this.lP.onUpdate())}getSegments(){return this.lP.segments||[]}setSelected(t){this.Rx!==t&&(this.Rx=t,this.ob())}isSelected(){return this.Rx}setHovered(t){this.Vx!==t&&(this.Vx=t,this.ob())}hitTest(t,i){if(!this.lP.segments||0===this.lP.segments.length)return!1;const s=this._chart.timeScale(),e=this.lP.rowHeight,n=this.lP.rowSpacing;for(let h=0;h<this.lP.segments.length;h++){const r=this.lP.segments[h],a=s.timeToCoordinate(r.startTime)??0,l=s.timeToCoordinate(r.endTime)??0,o=50+r.level*(e+n);if(t>=a&&t<=l&&i>=o&&i<=o+e)return this.aP=h,!0}return this.aP=-1,!1}isVisible(){return this._visible}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.$M&&this._series.updatePrimitive(this.$M)}remove(){this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.lP.onRemove&&this.lP.onRemove()}}function ra(t,i){return new ha(t,i)}class aa{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class la{constructor(t){this.Dx=t,this.Jt=new aa(t)}renderer(){return this.Dx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class oa extends sr{constructor(t,i){super(t,"brush",i),this.$M=null,this.er=null,this.Rx=!1,this.Vx=!1,this.jy=!1,this._P=null,this.Sf=null,this.sf=null,this.Od=null,this.cP=null,this.uP=[],this.dP=null,this.OS=!1,this.fP=null,this.pP={points:[],color:"#2962ff",lineWidth:2,smoothing:!0,...i};const s=!this.pP.points||0===this.pP.points.length;this.wS(),s&&this.vP()}vP(){this.cP=this._chart.chartElement?.(),this.cP&&(this.Sf=t=>{if(0!==t.button)return;this.jy=!0;const i=this.mP(t);if(i){const t=this.pP.color,s=this.pP.lineWidth,e=this.pP.smoothing,n=new oa({chart:this._chart,series:this._series},{points:[i],color:t,lineWidth:s,smoothing:e}),h=this._chart._drawingManager;h&&h.addTool(n),this._P=n,this.gP()}t.preventDefault(),t.stopPropagation()},this.sf=t=>{if(!this.jy)return;if(!this._P||!this._P.pP)return;const i=this.mP(t);i&&this.uP.push(i),t.preventDefault(),t.stopPropagation()},this.Od=t=>{this.jy&&(this.jy=!1,this.wP(),this.MP(),this.pP.onComplete&&this.pP.onComplete(),t.preventDefault(),t.stopPropagation())},this.cP.addEventListener("mousedown",this.Sf,!0),this.cP.addEventListener("mousemove",this.sf,!0),this.cP.addEventListener("mouseup",this.Od,!0),this.cP.addEventListener("mouseleave",this.Od,!0))}gP(){this.wP(),this.dP=window.setInterval(()=>{this.bP()},16)}wP(){null!==this.dP&&(clearInterval(this.dP),this.dP=null)}bP(){if(!this._P||!this._P.pP)return;if(0===this.uP.length)return;const t=this._P.pP.points;if(!t)return;const i=this.uP.shift();if(t.length>0){const s=t[t.length-1],e=this._chart.timeScale(),n=e.timeToCoordinate(s.time)??0,h=this._series.priceToCoordinate(s.price)??0,r=e.timeToCoordinate(i.time)??0,a=this._series.priceToCoordinate(i.price)??0;if(Math.sqrt(Math.pow(r-n,2)+Math.pow(a-h,2))<25)return}t.push(i),this._P.ob(),this._P.pP.onUpdate&&this._P.pP.onUpdate()}MP(){for(;this.uP.length>0;)this.bP()}SP(){this.cP&&(this.Sf&&this.cP.removeEventListener("mousedown",this.Sf,!0),this.sf&&this.cP.removeEventListener("mousemove",this.sf,!0),this.Od&&(this.cP.removeEventListener("mouseup",this.Od,!0),this.cP.removeEventListener("mouseleave",this.Od,!0))),this.Sf=null,this.sf=null,this.Od=null}mP(t){if(!this.cP)return null;const i=this.cP.getBoundingClientRect(),s=t.clientX-i.left,e=t.clientY-i.top,n=this._chart.timeScale().coordinateToTime(s),h=this._series.coordinateToPrice(e);return null===n||null===h?null:{time:n,price:h}}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new la(this)}drawToCanvas(t,i,s){if(!this.pP.points||this.pP.points.length<1)return;const e=this._chart.timeScale(),n=this.Rx?"#ff6b00":this.pP.color,h=this.Rx?this.pP.lineWidth+1:this.pP.lineWidth,r=[];for(const t of this.pP.points){const n=(e.timeToCoordinate(t.time)??0)*i,h=(this._series.priceToCoordinate(t.price)??0)*s;r.push({ct:n,ut:h})}if(1===r.length)return t.fillStyle=n,t.beginPath(),t.arc(r[0].ct,r[0].ut,h*i,0,2*Math.PI),void t.fill();t.strokeStyle=n,t.lineWidth=h*i,t.lineCap="round",t.lineJoin="round",this.pP.smoothing&&r.length>2?this.xP(t,r):this.yP(t,r)}yP(t,i){t.beginPath(),t.moveTo(i[0].ct,i[0].ut);for(let s=1;s<i.length;s++)t.lineTo(i[s].ct,i[s].ut);t.stroke()}xP(t,i){if(i.length<2)1===i.length&&(t.beginPath(),t.arc(i[0].ct,i[0].ut,2,0,2*Math.PI),t.fill());else if(2!==i.length){t.beginPath(),t.moveTo(i[0].ct,i[0].ut);for(let s=0;s<i.length-1;s++){const e=s>0?i[s-1]:i[s],n=i[s],h=i[s+1],r=s+2<i.length?i[s+2]:h,a=n.ct+(h.ct-e.ct)/6,l=n.ut+(h.ut-e.ut)/6,o=h.ct-(r.ct-n.ct)/6,_=h.ut-(r.ut-n.ut)/6;t.bezierCurveTo(a,l,o,_,h.ct,h.ut)}t.stroke()}else this.yP(t,i)}stopDrawingMode(){this.wP(),this.SP(),this.jy=!1,this._P=null,this.uP=[]}isDrawingModeActive(){return null!==this.Sf}setSelected(t){this.Rx!==t&&(this.Rx=t,this.ob())}isSelected(){return this.Rx}setHovered(t){this.Vx!==t&&(this.Vx=t,this.ob())}hitTest(t,i){if(!this.pP.points||this.pP.points.length<2)return!1;const s=this._chart.timeScale();for(let e=0;e<this.pP.points.length-1;e++){const n=this.pP.points[e],h=this.pP.points[e+1],r=s.timeToCoordinate(n.time)??0,a=this._series.priceToCoordinate(n.price)??0,l=s.timeToCoordinate(h.time)??0,o=this._series.priceToCoordinate(h.price)??0;if(this.Hy(t,i,r,a,l,o)<=20)return!0}return!1}Hy(t,i,s,e,n,h){const r=n-s,a=h-e,l=r*r+a*a;if(0===l)return Math.sqrt((t-s)*(t-s)+(i-e)*(i-e));let o=((t-s)*r+(i-e)*a)/l;o=Math.max(0,Math.min(1,o));const _=s+o*r,c=e+o*a;return Math.sqrt((t-_)*(t-_)+(i-c)*(i-c))}getPoints(){return this.pP.points||[]}hitTestEndpoint(t,i){return this.hitTest(t,i)?"stroke":null}startDrag(t){this.OS=!0,this.fP=null}stopDrag(){this.OS=!1,this.fP=null}updateDrag(t,i){if(!this.OS||!this.pP.points)return;if(!this.fP)return void(this.fP={wt:t,Mt:i});const s=t-this.fP.wt,e=i-this.fP.Mt;for(const t of this.pP.points)t.time=t.time+s,t.price=t.price+e;this.fP={wt:t,Mt:i},this.ob(),this.pP.onUpdate&&this.pP.onUpdate()}isVisible(){return this._visible}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.$M&&this._series.updatePrimitive(this.$M)}remove(){this.SP(),this.$M&&(this._series.detachPrimitive(this.$M),this.$M=null),this.pP.onRemove&&this.pP.onRemove()}}function _a(t,i){return new oa(t,i)}class ca{constructor(t){this.Dx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Dx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class ua{constructor(t){this.Dx=t,this.Jt=new ca(t)}renderer(){return this.Dx.isComplete()?this.Jt:null}}class da extends sr{constructor(t,i){super(t,"text-tool",i),this.$M=null,this.er=null,this.Rx=!1,this.Vx=!1,this.OS=!1,this.PP=!1,this.CP=null,this.TP={text:"Double-click to edit",fontSize:14,fontFamily:"Arial, sans-serif",textColor:"#FFFFFF",backgroundColor:"#2962FF",backgroundOpacity:.8,padding:8,borderColor:"#2962FF",borderWidth:1,textAlign:"left",maxWidth:200,...i},this.wS(),this.kP()}kP(){this.CP=this._chart.subscribeClick(t=>{if(!this.PP)return;const i=t.point?.x||0,s=t.point?.y||0;this.hitTest(i,s)||(this.setEditing(!1),this.TP.text&&""!==this.TP.text.trim()&&"Type here..."!==this.TP.text||this.remove())})}wS(){this.er=this.Wx();const t={attached:t=>{},detached:()=>{},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[]};this.$M=t,this._series.attachPrimitive(t)}Wx(){return new ua(this)}getTime(){return this.TP.time}getPrice(){return this.TP.price}getText(){return this.TP.text||""}getOptions(){return this.TP}setPosition(t,i){this.TP.time=t,this.TP.price=i,this._update()}setText(t){this.TP.text=t,this._update(),this.TP.onTextChange&&this.TP.onTextChange(t)}ob(){this.$M&&this.$M.updateAllViews?.(),this._chart.timeScale().applyOptions({})}_update(){this.ob()}isComplete(){return!(!this.TP.time||void 0===this.TP.price)}setSelected(t){this.Rx!==t&&(this.Rx=t,this._update())}isSelected(){return this.Rx}setHovered(t){this.Vx!==t&&(this.Vx=t,this._update())}setEditing(t){this.PP!==t&&(this.PP=t,this._update())}isEditing(){return this.PP}hitTest(t,i){if(!this.isComplete())return!1;const s=this.TP.time,e=this.TP.price,n=this._chart.timeScale().timeToCoordinate(s)??0,h=this._series.priceToCoordinate(e)??0,r=this.TP.fontSize||14,a=this.TP.padding||8,l=this.TP.text||"",o=.6*r,_=Math.min(l.length*o,this.TP.maxWidth||200);return t>=n&&t<=n+_+2*a&&i>=h&&i<=h+(r+2*a)}hitTestEndpoint(t,i){if(!this.isComplete())return null;const s=this.TP.time,e=this.TP.price,n=this._chart.timeScale().timeToCoordinate(s)??0,h=this._series.priceToCoordinate(e)??0;return Math.sqrt(Math.pow(t-n,2)+Math.pow(i-h,2))<=10?"anchor":null}startDrag(t){this.OS=!0}stopDrag(){this.OS=!1}updateDrag(t,i){this.OS&&(this.setPosition(t,i),this.TP.onUpdate&&this.TP.onUpdate())}drawToCanvas(t,i,s){if(!this.isComplete())return;const e=this.TP.time,n=this.TP.price,h=this.TP.text||"",r=(this._chart.timeScale().timeToCoordinate(e)??0)*i,a=(this._series.priceToCoordinate(n)??0)*s,l=(this.TP.fontSize||14)*i,o=(this.TP.padding||8)*i,_=(this.TP.maxWidth||200)*i;t.font=`${l}px ${this.TP.fontFamily||"Arial"}`,t.textBaseline="top";const c=h.split(" "),u=[];let d="";for(const i of c){const s=d?`${d} ${i}`:i;t.measureText(s).width>_&&d?(u.push(d),d=i):d=s}d&&u.push(d);let f=0;for(const i of u){const s=t.measureText(i);f=Math.max(f,s.width)}const p=f+2*o,v=1.2*l,m=u.length*v+2*o,g=this.TP.backgroundOpacity||.8,w=this.TP.backgroundColor||"#2962FF";t.fillStyle=this.mS(w,g),t.fillRect(r,a,p,m),(this.Rx||this.Vx)&&(t.strokeStyle=this.Rx?"#FF6B00":"#FFFFFF",t.lineWidth=(this.TP.borderWidth||1)*i*(this.Rx?2:1),t.strokeRect(r,a,p,m)),t.fillStyle=this.TP.textColor||"#FFFFFF";for(let i=0;i<u.length;i++){const s=u[i];let e=r+o;if("center"===this.TP.textAlign){e=r+(p-t.measureText(s).width)/2}else if("right"===this.TP.textAlign){e=r+p-t.measureText(s).width-o}const n=a+o+i*v;t.fillText(s,e,n)}if(this.Rx){const s=4*i;t.fillStyle="#FF6B00",t.beginPath(),t.arc(r,a,s,0,2*Math.PI),t.fill(),t.fillStyle="#FFFFFF",t.beginPath(),t.arc(r,a,s-2*i,0,2*Math.PI),t.fill()}}mS(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}remove(){this.CP&&(this._chart.unsubscribeClick(this.CP),this.CP=null),this.$M&&this._series&&this._series.detachPrimitive(this.$M),this.TP.onRemove&&this.TP.onRemove()}}function fa(t,i){return new da(t,i)}const pa={...n,color:"#2196f3"};function va(){return"1.1.0"}export{bn as AreaSeries,zr as ArrowTool,Pn as BarSeries,gn as BaselineSeries,oa as BrushTool,kn as CandlestickSeries,Yr as CircleTool,zi as ColorType,G as CrosshairMode,Nh as DEFAULT_SESSIONS,Xh as DraggablePriceLine,er as DrawingToolsManager,gr as EXTENDED_FIBONACCI_RATIOS,wr as FibonacciCalculator,ia as FibonacciExtensionTool,Zr as FibonacciFanTool,Sr as FibonacciTool,ha as GanttTool,Vn as HistogramSeries,Rr as HorizontalLineTool,Jh as InteractiveLineManager,Bi as LastPriceAnimationMode,tn as LineSeries,r as LineStyle,h as LineType,kt as MismatchDirection,nr as PositionCalculator,yh as PositionMarkersManager,or as PositionTool,Li as PriceLineSource,mi as PriceScaleMode,Nr as RectangleTool,cr as RulerCalculator,pr as RulerTool,mr as STANDARD_FIBONACCI_RATIOS,da as TextTool,Oi as TickMarkType,Fi as TrackingModeExitMode,Hh as TradingSessionsIndicator,Cr as TrendLineTool,Ir as VerticalLineTool,jh as VolumeProfileIndicator,Ah as applyATR,Dh as applyBollingerBands,Th as applyEMA,Vh as applyMACD,zh as applyOBV,Rh as applyRSI,Ch as applySMA,Eh as applyStochastic,Fh as applyVolume,kh as applyWMA,hr as calculatePipConfig,Or as createArrowTool,_a as createBrushTool,Ne as createChart,$e as createChartEx,jr as createCircleTool,sa as createFibonacciExtensionTool,Jr as createFibonacciFanTool,xr as createFibonacciTool,ra as createGanttTool,Vr as createHorizontalLineTool,Kn as createImageWatermark,Qh as createInteractiveLineManager,cn as createOptionsChart,Ph as createPositionMarkers,_r as createPositionTool,Hr as createRectangleTool,vr as createRulerTool,fh as createSeriesMarkers,fa as createTextTool,Nn as createTextWatermark,Zh as createTradingLine,Uh as createTradingSessionsIndicator,Tr as createTrendLineTool,xh as createUpDownMarkers,Fr as createVerticalLineTool,Gh as createVolumeProfileIndicator,ln as createYieldCurveChart,pa as customSeriesDefaultOptions,He as defaultHorzScaleBehavior,rr as getPipConfig,Ni as isBusinessDay,Hi as isUTCTimestamp,Oh as setOBVVolumeData,Bh as setVolumeData,Kh as setVolumeProfileData,va as version};
|