@pipsend/charts 2.2.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  /*!
2
2
  * @license
3
- * Pipsend Charts v2.2.0
3
+ * Pipsend Charts v2.2.1
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 r,h;function l(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 o(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 a(t,i){if(!t)throw new Error("Assertion failed"+(i?": "+i:""))}function _(t){if(void 0===t)throw new Error("Value is undefined");return t}function u(t){if(null===t)throw new Error("Value is null");return t}function c(t){return u(_(t))}!function(t){t[t.Simple=0]="Simple",t[t.WithSteps=1]="WithSteps",t[t.Curved=2]="Curved"}(r||(r={})),function(t){t[t.Solid=0]="Solid",t[t.Dotted=1]="Dotted",t[t.Dashed=2]="Dashed",t[t.LargeDashed=3]="LargeDashed",t[t.SparseDotted=4]="SparseDotted"}(h||(h={}));class d{constructor(){this.t=[]}i(t,i,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 p(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]:p(t[i],s[i]));return t}function f(t){return"number"==typeof t&&isFinite(t)}function v(t){return"number"==typeof t&&t%1==0}function m(t){return"string"==typeof t}function w(t){return"boolean"==typeof t}function g(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?g(n):n);return s}function b(t){return null!==t}function M(t){return null===t?void 0:t}const y="-apple-system, BlinkMacSystemFont, 'Trebuchet MS', Roboto, Ubuntu, sans-serif";function S(t,i,s){return void 0===i&&(i=y),`${s=void 0!==s?`${s} `:""}${t}px ${i}`}class x{constructor(t){this.M={S:1,C:5,P:NaN,T:"",D:"",I:"",V:"",R:0,F:0,L:0,A:0,B:0},this.W=t}O(){const t=this.M,i=this.$(),s=this.H();return t.P===i&&t.D===s||(t.P=i,t.D=s,t.T=S(i,s),t.A=2.5/12*i,t.R=t.A,t.F=i/12*t.C,t.L=i/12*t.C,t.B=0),t.I=this.N(),t.V=this.U(),this.M}N(){return this.W.O().layout.textColor}U(){return this.W.q()}$(){return this.W.O().layout.fontSize}H(){return this.W.O().layout.fontFamily}}function C(t){return t<0?0:t>255?255:Math.round(t)||0}function P(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)}K(t,i){if("transparent"===t)return t;const s=this.G(t),e=s[3];return`rgba(${s[0]}, ${s[1]}, ${s[2]}, ${i*e})`}X(t){const i=this.G(t);return{Z:`rgb(${i[0]}, ${i[1]}, ${i[2]})`,J:P(i)>160?"black":"white"}}tt(t){return P(this.G(t))}it(t,i,s){const[e,n,r,h]=this.G(t),[l,o,a,_]=this.G(i),u=[C(e+s*(l-e)),C(n+s*(o-n)),C(r+s*(a-r)),(c=h+s*(_-h),c<=0||c>1?Math.min(Math.max(c,0),1):Math.round(1e4*c)/1e4)];var c;return`rgba(${u[0]}, ${u[1]}, ${u[2]}, ${u[3]})`}G(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.rt(t,i,s))}}class I extends D{constructor(){super(...arguments),this.ht=null}lt(t){this.ht=t}rt({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.ht||null===this.ht.ot)return;const e=this.ht.ot,n=this.ht,r=Math.max(1,Math.floor(i))%2/2,h=h=>{t.beginPath();for(let l=e.to-1;l>=e.from;--l){const e=n._t[l],o=Math.round(e.ut*i)+r,a=e.ct*s,_=h*s+r;t.moveTo(o,a),t.arc(o,a,_,0,2*Math.PI)}t.fill()};n.dt>0&&(t.fillStyle=n.ft,h(n.vt+n.dt)),t.fillStyle=n.wt,h(n.vt)}}function V(){return{_t:[{ut:0,ct:0,gt:0,bt:0}],wt:"",ft:"",vt:0,dt:0,ot:null}}const R={from:0,to:1};class F{constructor(t,i,s){this.Mt=new k,this.yt=[],this.St=[],this.xt=!0,this.W=t,this.Ct=i,this.Pt=s,this.Mt.et(this.yt)}Tt(t){this.kt(),this.xt=!0}Dt(){return this.xt&&(this.It(),this.xt=!1),this.Mt}kt(){const t=this.Pt.Vt();t.length!==this.yt.length&&(this.St=t.map(V),this.yt=this.St.map(t=>{const i=new I;return i.lt(t),i}),this.Mt.et(this.yt))}It(){const t=2===this.Ct.O().mode||!this.Ct.Rt(),i=this.Pt.Ft(),s=this.Ct.Lt(),e=this.W.At();this.kt(),i.forEach((i,n)=>{const r=this.St[n],h=i.Bt(s),l=i.Wt();!t&&null!==h&&i.Rt()&&null!==l?(r.wt=h.Et,r.vt=h.vt,r.dt=h.Ot,r._t[0].bt=h.bt,r._t[0].ct=i.$t().zt(h.bt,l.Ht),r.ft=h.Nt??this.W.Ut(r._t[0].ct/i.$t().qt()),r._t[0].gt=s,r._t[0].ut=e.Yt(s),r.ot=R):r.ot=null})}}class L extends D{constructor(t){super(),this.jt=t}rt({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:e}){if(null===this.jt)return;const n=this.jt.Kt.Rt,r=this.jt.Gt.Rt;if(!n&&!r)return;const h=Math.round(this.jt.ut*s),a=Math.round(this.jt.ct*e);t.lineCap="butt",n&&h>=0&&(t.lineWidth=Math.floor(this.jt.Kt.dt*s),t.strokeStyle=this.jt.Kt.I,t.fillStyle=this.jt.Kt.I,l(t,this.jt.Kt.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,h,0,i.height)),r&&a>=0&&(t.lineWidth=Math.floor(this.jt.Gt.dt*e),t.strokeStyle=this.jt.Gt.I,t.fillStyle=this.jt.Gt.I,l(t,this.jt.Gt.Xt),o(t,a,0,i.width))}}class A{constructor(t,i){this.xt=!0,this.Zt={Kt:{dt:1,Xt:0,I:"",Rt:!1},Gt:{dt:1,Xt:0,I:"",Rt:!1},ut:0,ct:0},this.Jt=new L(this.Zt),this.Qt=t,this.Pt=i}Tt(){this.xt=!0}Dt(t){return this.xt&&(this.It(),this.xt=!1),this.Jt}It(){const t=this.Qt.Rt(),i=this.Pt.ti().O().crosshair,s=this.Zt;if(2===i.mode)return s.Gt.Rt=!1,void(s.Kt.Rt=!1);s.Gt.Rt=t&&this.Qt.ii(this.Pt),s.Kt.Rt=t&&this.Qt.si(),s.Gt.dt=i.horzLine.width,s.Gt.Xt=i.horzLine.style,s.Gt.I=i.horzLine.color,s.Kt.dt=i.vertLine.width,s.Kt.Xt=i.vertLine.style,s.Kt.I=i.vertLine.color,s.ut=this.Qt.ei(),s.ct=this.Qt.ni()}}function B(t,i,s,e,n,r){t.fillRect(i+r,s,e-2*r,r),t.fillRect(i+r,s+n-r,e-2*r,r),t.fillRect(i,s,r,n),t.fillRect(i+e-r,s,r,n)}function W(t,i,s,e,n,r){t.save(),t.globalCompositeOperation="copy",t.fillStyle=r,t.fillRect(i,s,e,n),t.restore()}function E(t,i,s,e,n,r){t.beginPath(),t.roundRect?t.roundRect(i,s,e,n,r):(t.lineTo(i+e-r[1],s),0!==r[1]&&t.arcTo(i+e,s,i+e,s+r[1],r[1]),t.lineTo(i+e,s+n-r[2]),0!==r[2]&&t.arcTo(i+e,s+n,i+e-r[2],s+n,r[2]),t.lineTo(i+r[3],s+n),0!==r[3]&&t.arcTo(i,s+n,i,s+n-r[3],r[3]),t.lineTo(i,s+r[0]),0!==r[0]&&t.arcTo(i,s,i+r[0],s,r[0]))}function O(t,i,s,e,n,r,h=0,l=[0,0,0,0],o=""){if(t.save(),!h||!o||o===r)return E(t,i,s,e,n,l),t.fillStyle=r,t.fill(),void t.restore();const a=h/2;var _;E(t,i+a,s+a,e-h,n-h,(_=-a,l.map(t=>0===t?t:t+_))),"transparent"!==r&&(t.fillStyle=r,t.fill()),"transparent"!==o&&(t.lineWidth=h,t.strokeStyle=o,t.closePath(),t.stroke()),t.restore()}function z(t,i,s,e,n,r,h){t.save(),t.globalCompositeOperation="copy";const l=t.createLinearGradient(0,0,0,n);l.addColorStop(0,r),l.addColorStop(1,h),t.fillStyle=l,t.fillRect(i,s,e,n),t.restore()}class ${constructor(t,i){this.lt(t,i)}lt(t,i){this.jt=t,this.ri=i}qt(t,i){return this.jt.Rt?t.P+t.A+t.R:0}nt(t,i,s,e){if(!this.jt.Rt||0===this.jt.hi.length)return;const n=this.jt.I,r=this.ri.Z,h=t.useBitmapCoordinateSpace(t=>{const h=t.context;h.font=i.T;const l=this.li(t,i,s,e),o=l.oi;return l.ai?O(h,o._i,o.ui,o.ci,o.di,r,o.pi,[o.vt,0,0,o.vt],r):O(h,o.fi,o.ui,o.ci,o.di,r,o.pi,[0,o.vt,o.vt,0],r),this.jt.mi&&(h.fillStyle=n,h.fillRect(o.fi,o.wi,o.gi-o.fi,o.bi)),this.jt.Mi&&(h.fillStyle=i.V,h.fillRect(l.ai?o.yi-o.pi:0,o.ui,o.pi,o.Si-o.ui)),l});t.useMediaCoordinateSpace(({context:t})=>{const s=h.xi;t.font=i.T,t.textAlign=h.ai?"right":"left",t.textBaseline="middle",t.fillStyle=n,t.fillText(this.jt.hi,s.Ci,(s.ui+s.Si)/2+s.Pi)})}li(t,i,s,e){const{context:n,bitmapSize:r,mediaSize:h,horizontalPixelRatio:l,verticalPixelRatio:o}=t,a=this.jt.mi||!this.jt.Ti?i.C:0,_=this.jt.ki?i.S:0,u=i.A+this.ri.Di,c=i.R+this.ri.Ii,d=i.F,p=i.L,f=this.jt.hi,v=i.P,m=s.Vi(n,f),w=Math.ceil(s.Ri(n,f)),g=v+u+c,b=i.S+d+p+w+a,M=Math.max(1,Math.floor(o));let y=Math.round(g*o);y%2!=M%2&&(y+=1);const S=_>0?Math.max(1,Math.floor(_*l)):0,x=Math.round(b*l),C=Math.round(a*l),P=this.ri.Fi??this.ri.Li,T=Math.round(P*o)-Math.floor(.5*o),k=Math.floor(T+M/2-y/2),D=k+y,I="right"===e,V=I?h.width-_:_,R=I?r.width-S:S;let F,L,A;return I?(F=R-x,L=R-C,A=V-a-d-_):(F=R+x,L=R+C,A=V+a+d),{ai:I,oi:{ui:k,wi:T,Si:D,ci:x,di:y,vt:2*l,pi:S,_i:F,fi:R,gi:L,bi:M,yi:r.width},xi:{ui:k/o,Si:D/o,Ci:A,Pi:m}}}}class H{constructor(t){this.Ai={Li:0,Z:"#000",Ii:0,Di:0},this.Bi={hi:"",Rt:!1,mi:!0,Ti:!1,Nt:"",I:"#FFF",Mi:!1,ki:!1},this.Wi={hi:"",Rt:!1,mi:!1,Ti:!0,Nt:"",I:"#FFF",Mi:!0,ki:!0},this.xt=!0,this.Ei=new(t||$)(this.Bi,this.Ai),this.Oi=new(t||$)(this.Wi,this.Ai)}hi(){return this.zi(),this.Bi.hi}Li(){return this.zi(),this.Ai.Li}Tt(){this.xt=!0}qt(t,i=!1){return Math.max(this.Ei.qt(t,i),this.Oi.qt(t,i))}$i(){return this.Ai.Fi||0}Hi(t){this.Ai.Fi=t}Ni(){return this.zi(),this.Bi.Rt||this.Wi.Rt}Ui(){return this.zi(),this.Bi.Rt}Dt(t){return this.zi(),this.Bi.mi=this.Bi.mi&&t.O().ticksVisible,this.Wi.mi=this.Wi.mi&&t.O().ticksVisible,this.Ei.lt(this.Bi,this.Ai),this.Oi.lt(this.Wi,this.Ai),this.Ei}qi(){return this.zi(),this.Ei.lt(this.Bi,this.Ai),this.Oi.lt(this.Wi,this.Ai),this.Oi}zi(){this.xt&&(this.Bi.mi=!0,this.Wi.mi=!1,this.Yi(this.Bi,this.Wi,this.Ai))}}class N extends H{constructor(t,i,s){super(),this.Qt=t,this.ji=i,this.Ki=s}Yi(t,i,s){if(t.Rt=!1,2===this.Qt.O().mode)return;const e=this.Qt.O().horzLine;if(!e.labelVisible)return;const n=this.ji.Wt();if(!this.Qt.Rt()||this.ji.Gi()||null===n)return;const r=this.ji.Xi().X(e.labelBackgroundColor);s.Z=r.Z,t.I=r.J;const h=2/12*this.ji.P();s.Di=h,s.Ii=h;const l=this.Ki(this.ji);s.Li=l.Li,t.hi=this.ji.Zi(l.bt,n),t.Rt=!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.Rt||0===this.jt.hi.length)return;const s=t.useMediaCoordinateSpace(({context:t})=>(t.font=i.T,Math.round(i.Ji.Ri(t,u(this.jt).hi,U))));if(s<=0)return;const e=i.Qi,n=s+2*e,r=n/2,h=this.jt.ts;let l=this.jt.Li,o=Math.floor(l-r)+.5;o<0?(l+=Math.abs(0-o),o=Math.floor(l-r)+.5):o+n>h&&(l-=Math.abs(h-(o+n)),o=Math.floor(l-r)+.5);const a=o+n,_=Math.ceil(0+i.S+i.C+i.A+i.P+i.R);t.useBitmapCoordinateSpace(({context:t,horizontalPixelRatio:s,verticalPixelRatio:e})=>{const n=u(this.jt);t.fillStyle=n.Z;const r=Math.round(o*s),h=Math.round(0*e),l=Math.round(a*s),c=Math.round(_*e),d=Math.round(2*s);if(t.beginPath(),t.moveTo(r,h),t.lineTo(r,c-d),t.arcTo(r,c,r+d,c,d),t.lineTo(l-d,c),t.arcTo(l,c,l,c-d,d),t.lineTo(l,h),t.fill(),n.mi){const r=Math.round(n.Li*s),l=h,o=Math.round((l+i.C)*e);t.fillStyle=n.I;const a=Math.max(1,Math.floor(s)),_=Math.floor(.5*s);t.fillRect(r-_,l,a,o-l)}}),t.useMediaCoordinateSpace(({context:t})=>{const s=u(this.jt),n=0+i.S+i.C+i.A+i.P/2;t.font=i.T,t.textAlign="left",t.textBaseline="middle",t.fillStyle=s.I;const r=i.Ji.Vi(t,"Apr0");t.translate(o+e,n+r),t.fillText(s.hi,0,0)})}}class Y{constructor(t,i,s){this.xt=!0,this.Jt=new q,this.Zt={Rt:!1,Z:"#4c525e",I:"white",hi:"",ts:0,Li:NaN,mi:!0},this.Ct=t,this.ss=i,this.Ki=s}Tt(){this.xt=!0}Dt(){return this.xt&&(this.It(),this.xt=!1),this.Jt.lt(this.Zt),this.Jt}It(){const t=this.Zt;if(t.Rt=!1,2===this.Ct.O().mode)return;const i=this.Ct.O().vertLine;if(!i.labelVisible)return;const s=this.ss.At();if(s.Gi())return;t.ts=s.ts();const e=this.Ki();if(null===e)return;t.Li=e.Li;const n=s.es(this.Ct.Lt());t.hi=s.ns(u(n)),t.Rt=!0;const r=this.ss.Xi().X(i.labelBackgroundColor);t.Z=r.Z,t.I=r.J,t.mi=s.O().ticksVisible}}class j{constructor(){this.rs=null,this.hs=0}ls(){return this.hs}_s(t){this.hs=t}$t(){return this.rs}us(t){this.rs=t}cs(t){return[]}ds(){return[]}Rt(){return!0}}var K;!function(t){t[t.Normal=0]="Normal",t[t.Magnet=1]="Magnet",t[t.Hidden=2]="Hidden",t[t.MagnetOHLC=3]="MagnetOHLC"}(K||(K={}));class G extends j{constructor(t,i){super(),this.Pt=null,this.ps=NaN,this.fs=0,this.vs=!1,this.ws=new Map,this.gs=!1,this.bs=new WeakMap,this.Ms=new WeakMap,this.ys=NaN,this.Ss=NaN,this.xs=NaN,this.Cs=NaN,this.ss=t,this.Ps=i;this.Ts=((t,i)=>s=>{const e=i(),n=t();if(s===u(this.Pt).ks())return{bt:n,Li:e};{const t=u(s.Wt());return{bt:s.Ds(e,t),Li:e}}})(()=>this.ps,()=>this.Ss);const s=((t,i)=>()=>{const s=this.ss.At().Is(t()),e=i();return s&&Number.isFinite(e)?{gt:s,Li:e}:null})(()=>this.fs,()=>this.ei());this.Vs=new Y(this,t,s)}O(){return this.Ps}Rs(t,i){this.xs=t,this.Cs=i}Fs(){this.xs=NaN,this.Cs=NaN}Ls(){return this.xs}As(){return this.Cs}Bs(t,i,s){this.gs||(this.gs=!0),this.vs=!0,this.Ws(t,i,s)}Lt(){return this.fs}ei(){return this.ys}ni(){return this.Ss}Rt(){return this.vs}Es(){this.vs=!1,this.Os(),this.ps=NaN,this.ys=NaN,this.Ss=NaN,this.Pt=null,this.Fs(),this.zs()}$s(t){let i=this.bs.get(t);i||(i=new A(this,t),this.bs.set(t,i));let s=this.Ms.get(t);return s||(s=new F(this.ss,this,t),this.Ms.set(t,s)),[i,s]}ii(t){return t===this.Pt&&this.Ps.horzLine.visible}si(){return this.Ps.vertLine.visible}Hs(t,i){this.vs&&this.Pt===t||this.ws.clear();const s=[];return this.Pt===t&&s.push(this.Ns(this.ws,i,this.Ts)),s}ds(){return this.vs?[this.Vs]:[]}Us(){return this.Pt}zs(){this.ss.qs().forEach(t=>{this.bs.get(t)?.Tt(),this.Ms.get(t)?.Tt()}),this.ws.forEach(t=>t.Tt()),this.Vs.Tt()}Ys(t){return t&&!t.ks().Gi()?t.ks():null}Ws(t,i,s){this.js(t,i,s)&&this.zs()}js(t,i,s){const e=this.ys,n=this.Ss,r=this.ps,h=this.fs,l=this.Pt,o=this.Ys(s);this.fs=t,this.ys=isNaN(t)?NaN:this.ss.At().Yt(t),this.Pt=s;const a=null!==o?o.Wt():null;return null!==o&&null!==a?(this.ps=i,this.Ss=o.zt(i,a)):(this.ps=NaN,this.Ss=NaN),e!==this.ys||n!==this.Ss||h!==this.fs||r!==this.ps||l!==this.Pt}Os(){const t=this.ss.Ks().map(t=>t.Xs().Gs()).filter(b),i=0===t.length?null:Math.max(...t);this.fs=null!==i?i:NaN}Ns(t,i,s){let e=t.get(i);return void 0===e&&(e=new N(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}}re(){this.he(),this.Js=[{le:0}]}oe(t){this.he(),this.Js=[{le:1,Ht:t}]}ae(t){this._e(),this.Js.push({le:5,Ht:t})}he(){this._e(),this.Js.push({le:6})}ue(){this.he(),this.Js=[{le:4}]}ce(t){this.he(),this.Js.push({le:2,Ht:t})}de(t){this.he(),this.Js.push({le:3,Ht:t})}pe(){return this.Js}fe(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 we(){return new Z(3)}ve(t){switch(t.le){case 0:this.re();break;case 1:this.oe(t.Ht);break;case 2:this.ce(t.Ht);break;case 3:this.de(t.Ht);break;case 4:this.ue();break;case 5:this.ae(t.Ht);break;case 6:this._e()}}_e(){const t=this.Js.findIndex(t=>5===t.le);-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(!f(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),f(t)&&v(t)||(t=100),t<0)throw new TypeError("invalid base");this.ji=t,this.ge=i,this.be()}format(t){const i=t<0?"−":"";return t=Math.abs(t),i+this.Me(t)}be(){if(this.ye=0,this.ji>0&&this.ge>0){let t=this.ji;for(;t>1;)t/=10,this.ye++}}Me(t){const i=this.ji/this.ge;let s=Math.floor(t),e="";const n=void 0!==this.ye?this.ye:NaN;if(i>1){let r=+(Math.round(t*i)-s*i).toFixed(this.ye);r>=i&&(r-=i,s+=1),e=Q+tt(+r.toFixed(this.ye)*this.ge,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.Se=t}format(t){let i="";return t<0&&(i="-",t=-t),t<995?i+this.xe(t):t<999995?i+this.xe(t/1e3)+"K":t<999999995?(t=1e3*Math.round(t/1e3),i+this.xe(t/1e6)+"M"):(t=1e6*Math.round(t/1e6),i+this.xe(t/1e9)+"B")}xe(t){let i;const s=Math.pow(10,this.Se);return i=(t=Math.round(t*s)/s)>=1e-15&&t<1?t.toFixed(this.Se).replace(/\.?0+$/,""):String(t),i.replace(/(\.[1-9]*)0+$/,(t,i)=>i)}}const nt=/[2-9]/g;class rt{constructor(t=50){this.Ce=0,this.Pe=1,this.Te=1,this.ke={},this.De=new Map,this.Ie=t}Ve(){this.Ce=0,this.De.clear(),this.Pe=1,this.Te=1,this.ke={}}Ri(t,i,s){return this.Re(t,i,s).width}Vi(t,i,s){const e=this.Re(t,i,s);return((e.actualBoundingBoxAscent||0)-(e.actualBoundingBoxDescent||0))/2}Re(t,i,s){const e=s||nt,n=String(i).replace(e,"0");if(this.De.has(n))return _(this.De.get(n)).Fe;if(this.Ce===this.Ie){const t=this.ke[this.Te];delete this.ke[this.Te],this.De.delete(t),this.Te++,this.Ce--}t.save(),t.textBaseline="middle";const r=t.measureText(n);return t.restore(),0===r.width&&i.length||(this.De.set(n,{Fe:r,Le:this.Pe}),this.ke[this.Pe]=n,this.Ce++,this.Pe++),r}}class ht{constructor(t){this.Ae=null,this.M=null,this.Be="right",this.We=t}Ee(t,i,s){this.Ae=t,this.M=i,this.Be=s}nt(t){null!==this.M&&null!==this.Ae&&this.Ae.nt(t,this.M,this.We,this.Be)}}class lt{constructor(t,i,s){this.Oe=t,this.We=new rt(50),this.ze=i,this.W=s,this.$=-1,this.Jt=new ht(this.We)}Dt(){const t=this.W.$e(this.ze);if(null===t)return null;const i=t.He(this.ze)?t.Ne():this.ze.$t();if(null===i)return null;const s=t.Ue(i);if("overlay"===s)return null;const e=this.W.qe();return e.P!==this.$&&(this.$=e.P,this.We.Ve()),this.Jt.Ee(this.Oe.qi(),e,s),this.Jt}}class ot extends D{constructor(){super(...arguments),this.jt=null}lt(t){this.jt=t}Ye(t,i){if(!this.jt?.Rt)return null;const{ct:s,dt:e,je:n}=this.jt;return i>=s-e-7&&i<=s+e+7?{Ke:this.jt,je:n}:null}rt({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:e}){if(null===this.jt)return;if(!1===this.jt.Rt)return;const n=Math.round(this.jt.ct*e);n<0||n>i.height||(t.lineCap="butt",t.strokeStyle=this.jt.I,t.lineWidth=Math.floor(this.jt.dt*s),l(t,this.jt.Xt),o(t,n,0,i.width))}}class at{constructor(t){this.Ge={ct:0,I:"rgba(0, 0, 0, 0)",dt:1,Xt:0,Rt:!1},this.Xe=new ot,this.xt=!0,this.Ze=t,this.Je=t.ti(),this.Xe.lt(this.Ge)}Tt(){this.xt=!0}Dt(){return this.Ze.Rt()?(this.xt&&(this.Qe(),this.xt=!1),this.Xe):null}}class _t extends at{constructor(t){super(t)}Qe(){this.Ge.Rt=!1;const t=this.Ze.$t(),i=t.tn().tn;if(2!==i&&3!==i)return;const s=this.Ze.O();if(!s.baseLineVisible||!this.Ze.Rt())return;const e=this.Ze.Wt();null!==e&&(this.Ge.Rt=!0,this.Ge.ct=t.zt(e.Ht,e.Ht),this.Ge.I=s.baseLineColor,this.Ge.dt=s.baseLineWidth,this.Ge.Xt=s.baseLineStyle)}}class ut extends D{constructor(){super(...arguments),this.jt=null}lt(t){this.jt=t}sn(){return this.jt}rt({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){const e=this.jt;if(null===e)return;const n=Math.max(1,Math.floor(i)),r=n%2/2,h=Math.round(e.en.x*i)+r,l=e.en.y*s;t.fillStyle=e.nn,t.beginPath();const o=Math.max(2,1.5*e.rn)*i;t.arc(h,l,o,0,2*Math.PI,!1),t.fill(),t.fillStyle=e.hn,t.beginPath(),t.arc(h,l,e.vt*i,0,2*Math.PI,!1),t.fill(),t.lineWidth=n,t.strokeStyle=e.ln,t.beginPath(),t.arc(h,l,e.vt*i+n/2,0,2*Math.PI,!1),t.stroke()}}const ct=[{an:0,_n:.25,un:4,cn:10,dn:.25,pn:0,fn:.4,vn:.8},{an:.25,_n:.525,un:10,cn:14,dn:0,pn:0,fn:.8,vn:0},{an:.525,_n:1,un:14,cn:14,dn:0,pn:0,fn:0,vn:0}];class dt{constructor(t){this.Jt=new ut,this.xt=!0,this.mn=!0,this.wn=performance.now(),this.gn=this.wn-1,this.bn=t}Mn(){this.gn=this.wn-1,this.Tt()}yn(){if(this.Tt(),2===this.bn.O().lastPriceAnimation){const t=performance.now(),i=this.gn-t;if(i>0)return void(i<650&&(this.gn+=2600));this.wn=t,this.gn=t+2600}}Tt(){this.xt=!0}Sn(){this.mn=!0}Rt(){return 0!==this.bn.O().lastPriceAnimation}xn(){switch(this.bn.O().lastPriceAnimation){case 0:return!1;case 1:return!0;case 2:return performance.now()<=this.gn}}Dt(){return this.xt?(this.It(),this.xt=!1,this.mn=!1):this.mn&&(this.Cn(),this.mn=!1),this.Jt}It(){this.Jt.lt(null);const t=this.bn.ti().At(),i=t.Pn(),s=this.bn.Wt();if(null===i||null===s)return;const e=this.bn.Tn(!0);if(e.kn||!i.Dn(e.In))return;const n={x:t.Yt(e.In),y:this.bn.$t().zt(e.bt,s.Ht)},r=e.I,h=this.bn.O().lineWidth,l=this.Vn(this.Rn(),r);this.Jt.lt({nn:r,rn:h,hn:l.hn,ln:l.ln,vt:l.vt,en:n})}Cn(){const t=this.Jt.sn();if(null!==t){const i=this.Vn(this.Rn(),t.nn);t.hn=i.hn,t.ln=i.ln,t.vt=i.vt}}Rn(){return this.xn()?performance.now()-this.wn:2599}Fn(t,i,s,e){const n=s+(e-s)*i;return this.bn.ti().Xi().K(t,n)}Vn(t,i){const s=t%2600/2600;let e;for(const t of ct)if(s>=t.an&&s<=t._n){e=t;break}a(void 0!==e,"Last price animation internal logic error");const n=(s-e.an)/(e._n-e.an);return{hn:this.Fn(i,n,e.dn,e.pn),ln:this.Fn(i,n,e.fn,e.vn),vt:(r=n,h=e.un,l=e.cn,h+(l-h)*r)};var r,h,l}}class pt extends at{constructor(t){super(t)}Qe(){const t=this.Ge;t.Rt=!1;const i=this.Ze.O();if(!i.priceLineVisible||!this.Ze.Rt())return;const s=this.Ze.Tn(0===i.priceLineSource);s.kn||(t.Rt=!0,t.ct=s.Li,t.I=this.Ze.Ln(s.I),t.dt=i.priceLineWidth,t.Xt=i.priceLineStyle)}}class ft extends H{constructor(t){super(),this.Qt=t}Yi(t,i,s){t.Rt=!1,i.Rt=!1;const e=this.Qt;if(!e.Rt())return;const n=e.O(),r=n.lastValueVisible,h=""!==e.An(),l=0===n.seriesLastValueMode,o=e.Tn(!1);if(o.kn)return;r&&(t.hi=this.Bn(o,r,l),t.Rt=0!==t.hi.length),(h||l)&&(i.hi=this.Wn(o,r,h,l),i.Rt=i.hi.length>0);const a=e.Ln(o.I),_=this.Qt.ti().Xi().X(a);s.Z=_.Z,s.Li=o.Li,i.Nt=e.ti().Ut(o.Li/e.$t().qt()),t.Nt=a,t.I=_.J,i.I=_.J}Wn(t,i,s,e){let n="";const r=this.Qt.An();return s&&0!==r.length&&(n+=`${r} `),i&&e&&(n+=this.Qt.$t().En()?t.On:t.zn),n.trim()}Bn(t,i,s){return i?s?this.Qt.$t().En()?t.zn:t.On:t.hi:""}}function vt(t,i,s,e){const n=Number.isFinite(i),r=Number.isFinite(s);return n&&r?t(i,s):n||r?n?i:s:e}class mt{constructor(t,i){this.$n=t,this.Hn=i}Nn(t){return null!==t&&(this.$n===t.$n&&this.Hn===t.Hn)}Un(){return new mt(this.$n,this.Hn)}qn(){return this.$n}Yn(){return this.Hn}jn(){return this.Hn-this.$n}Gi(){return this.Hn===this.$n||Number.isNaN(this.Hn)||Number.isNaN(this.$n)}fe(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))}Kn(t){if(!f(t))return;if(0===this.Hn-this.$n)return;const i=.5*(this.Hn+this.$n);let s=this.Hn-i,e=this.$n-i;s*=t,e*=t,this.Hn=i+s,this.$n=i+e}Gn(t){f(t)&&(this.Hn+=t,this.$n+=t)}Xn(){return{minValue:this.$n,maxValue:this.Hn}}static Zn(t){return null===t?null:new mt(t.minValue,t.maxValue)}}class wt{constructor(t,i){this.Jn=t,this.Qn=i||null}tr(){return this.Jn}ir(){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 wt(mt.Zn(t.priceRange),t.margins)}}class gt extends at{constructor(t,i){super(t),this.sr=i}Qe(){const t=this.Ge;t.Rt=!1;const i=this.sr.O();if(!this.Ze.Rt()||!i.lineVisible)return;const s=this.sr.er();null!==s&&(t.Rt=!0,t.ct=s,t.I=i.color,t.dt=i.lineWidth,t.Xt=i.lineStyle,t.je=this.sr.O().id)}}class bt extends H{constructor(t,i){super(),this.bn=t,this.sr=i}Yi(t,i,s){t.Rt=!1,i.Rt=!1;const e=this.sr.O(),n=e.axisLabelVisible,r=""!==e.title,h=this.bn;if(!n||!h.Rt())return;const l=this.sr.er();if(null===l)return;r&&(i.hi=e.title,i.Rt=!0),i.Nt=h.ti().Ut(l/h.$t().qt()),t.hi=this.nr(e.price),t.Rt=!0;const o=this.bn.ti().Xi().X(e.axisLabelColor||e.color);s.Z=o.Z;const a=e.axisLabelTextColor||o.J;t.I=a,i.I=a,s.Li=l}nr(t){const i=this.bn.Wt();return null===i?"":this.bn.$t().Zi(t,i.Ht)}}class Mt{constructor(t,i){this.bn=t,this.Ps=i,this.rr=new gt(t,this),this.Oe=new bt(t,this),this.hr=new lt(this.Oe,t,t.ti())}lr(t){p(this.Ps,t),this.Tt(),this.bn.ti().ar()}O(){return this.Ps}_r(){return this.rr}ur(){return this.hr}cr(){return this.Oe}Tt(){this.rr.Tt(),this.Oe.Tt()}er(){const t=this.bn,i=t.$t();if(t.ti().At().Gi()||i.Gi())return null;const s=t.Wt();return null===s?null:i.zt(this.Ps.price,s.Ht)}}class yt extends j{constructor(t){super(),this.ss=t}ti(){return this.ss}}const St={Bar:(t,i,s,e)=>{const n=i.upColor,r=i.downColor,h=u(t(s,e)),l=c(h.Ht[0])<=c(h.Ht[3]);return{dr:h.I??(l?n:r)}},Candlestick:(t,i,s,e)=>{const n=i.upColor,r=i.downColor,h=i.borderUpColor,l=i.borderDownColor,o=i.wickUpColor,a=i.wickDownColor,_=u(t(s,e)),d=c(_.Ht[0])<=c(_.Ht[3]);return{dr:_.I??(d?n:r),pr:_.Nt??(d?h:l),vr:_.mr??(d?o:a)}},Custom:(t,i,s,e)=>({dr:u(t(s,e)).I??i.color}),Area:(t,i,s,e)=>{const n=u(t(s,e));return{dr:n.wt??i.lineColor,wt:n.wt??i.lineColor,wr:n.wr??i.topColor,gr:n.gr??i.bottomColor}},Baseline:(t,i,s,e)=>{const n=u(t(s,e));return{dr:n.Ht[3]>=i.baseValue.price?i.topLineColor:i.bottomLineColor,br:n.br??i.topLineColor,Mr:n.Mr??i.bottomLineColor,yr:n.yr??i.topFillColor1,Sr:n.Sr??i.topFillColor2,Cr:n.Cr??i.bottomFillColor1,Pr:n.Pr??i.bottomFillColor2}},Line:(t,i,s,e)=>{const n=u(t(s,e));return{dr:n.I??i.color,wt:n.I??i.color}},Histogram:(t,i,s,e)=>({dr:u(t(s,e)).I??i.color})};class xt{constructor(t){this.Tr=(t,i)=>void 0!==i?i.Ht:this.bn.Xs().kr(t),this.bn=t,this.Dr=St[t.Ir()]}Vr(t,i){return this.Dr(this.Tr,this.bn.O(),t,i)}}function Ct(t,i,s,e,n=0,r=i.length){let h=r-n;for(;0<h;){const r=h>>1,l=n+r;e(i[l],s)===t?(n=l+1,h-=r+1):h=r}return n}const Pt=Ct.bind(null,!0),Tt=Ct.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 It{constructor(){this.Rr=[],this.Fr=new Map,this.Lr=new Map,this.Ar=[]}Br(){return this.Wr()>0?this.Rr[this.Rr.length-1]:null}Er(){return this.Wr()>0?this.Or(0):null}Gs(){return this.Wr()>0?this.Or(this.Rr.length-1):null}Wr(){return this.Rr.length}Gi(){return 0===this.Wr()}Dn(t){return null!==this.zr(t,0)}kr(t){return this.$r(t)}$r(t,i=0){const s=this.zr(t,i);return null===s?null:{...this.Hr(s),In:this.Or(s)}}Nr(){return this.Rr}Ur(t,i,s){if(this.Gi())return null;let e=null;for(const n of s){e=Vt(e,this.qr(t,i,n))}return e}lt(t){this.Lr.clear(),this.Fr.clear(),this.Rr=t,this.Ar=t.map(t=>t.In)}Yr(){return this.Ar}Or(t){return this.Rr[t].In}Hr(t){return this.Rr[t]}zr(t,i){const s=this.jr(t);if(null===s&&0!==i)switch(i){case-1:return this.Kr(t);case 1:return this.Gr(t);default:throw new TypeError("Unknown search mode")}return s}Kr(t){let i=this.Xr(t);return i>0&&(i-=1),i!==this.Rr.length&&this.Or(i)<t?i:null}Gr(t){const i=this.Zr(t);return i!==this.Rr.length&&t<this.Or(i)?i:null}jr(t){const i=this.Xr(t);return i===this.Rr.length||t<this.Rr[i].In?null:i}Xr(t){return Pt(this.Rr,t,(t,i)=>t.In<i)}Zr(t){return Tt(this.Rr,t,(t,i)=>t.In>i)}Jr(t,i,s){let e=null;for(let n=t;n<i;n++){const t=this.Rr[n].Ht[s];Number.isNaN(t)||(null===e?e={Qr:t,th:t}:(t<e.Qr&&(e.Qr=t),t>e.th&&(e.th=t)))}return e}qr(t,i,s){if(this.Gi())return null;let e=null;const n=u(this.Er()),r=u(this.Gs()),h=Math.max(t,n),l=Math.min(i,r),o=Math.ceil(h/Dt)*Dt,a=Math.max(o,Math.floor(l/Dt)*Dt);{const t=this.Xr(h),n=this.Zr(Math.min(l,o,i));e=Vt(e,this.Jr(t,n,s))}let _=this.Fr.get(s);void 0===_&&(_=new Map,this.Fr.set(s,_));for(let t=Math.max(o+1,h);t<a;t+=Dt){const i=Math.floor(t/Dt);let n=_.get(i);if(void 0===n){const t=this.Xr(i*Dt),e=this.Zr((i+1)*Dt-1);n=this.Jr(t,e,s),_.set(i,n)}e=Vt(e,n)}{const t=this.Xr(a),i=this.Zr(l);e=Vt(e,this.Jr(t,i,s))}return e}}function Vt(t,i){if(null===t)return i;if(null===i)return t;return{Qr:Math.min(t.Qr,i.Qr),th:Math.max(t.th,i.th)}}const Rt={setLineStyle:l};class Ft{constructor(t){this.ih=t}nt(t,i,s){this.ih.draw(t,Rt)}sh(t,i,s){this.ih.drawBackground?.(t,Rt)}}class Lt{constructor(t){this.De=null,this.eh=t}Dt(){const t=this.eh.renderer();if(null===t)return null;if(this.De?.nh===t)return this.De.rh;const i=new Ft(t);return this.De={nh:t,rh:i},i}hh(){return this.eh.zOrder?.()??"normal"}}class At{constructor(t){this.oh=null,this.ah=t}_h(){return this.ah}zs(){this.ah.updateAllViews?.()}$s(){const t=this.ah.paneViews?.()??[];if(this.oh?.nh===t)return this.oh.rh;const i=t.map(t=>new Lt(t));return this.oh={nh:t,rh:i},i}Ye(t,i){return this.ah.hitTest?.(t,i)??null}}let Bt=class extends At{cs(){return[]}};class Wt{constructor(t){this.ih=t}nt(t,i,s){this.ih.draw(t,Rt)}sh(t,i,s){this.ih.drawBackground?.(t,Rt)}}class Et{constructor(t){this.De=null,this.eh=t}Dt(){const t=this.eh.renderer();if(null===t)return null;if(this.De?.nh===t)return this.De.rh;const i=new Wt(t);return this.De={nh:t,rh:i},i}hh(){return this.eh.zOrder?.()??"normal"}}function Ot(t){return{hi:t.text(),Li:t.coordinate(),Fi:t.fixedCoordinate?.(),I:t.textColor(),Z:t.backColor(),Rt:t.visible?.()??!0,mi:t.tickVisible?.()??!0}}class zt{constructor(t,i){this.Jt=new q,this.uh=t,this.dh=i}Dt(){return this.Jt.lt({ts:this.dh.ts(),...Ot(this.uh)}),this.Jt}}class $t extends H{constructor(t,i){super(),this.uh=t,this.ji=i}Yi(t,i,s){const e=Ot(this.uh);s.Z=e.Z,t.I=e.I;const n=2/12*this.ji.P();s.Di=n,s.Ii=n,s.Li=e.Li,s.Fi=e.Fi,t.hi=e.hi,t.Rt=e.Rt,t.mi=e.mi}}class Ht extends At{constructor(t,i){super(t),this.ph=null,this.fh=null,this.mh=null,this.wh=null,this.bn=i}ds(){const t=this.ah.timeAxisViews?.()??[];if(this.ph?.nh===t)return this.ph.rh;const i=this.bn.ti().At(),s=t.map(t=>new zt(t,i));return this.ph={nh:t,rh:s},s}Hs(){const t=this.ah.priceAxisViews?.()??[];if(this.fh?.nh===t)return this.fh.rh;const i=this.bn.$t(),s=t.map(t=>new $t(t,i));return this.fh={nh:t,rh:s},s}gh(){const t=this.ah.priceAxisPaneViews?.()??[];if(this.mh?.nh===t)return this.mh.rh;const i=t.map(t=>new Et(t));return this.mh={nh:t,rh:i},i}bh(){const t=this.ah.timeAxisPaneViews?.()??[];if(this.wh?.nh===t)return this.wh.rh;const i=t.map(t=>new Et(t));return this.wh={nh:t,rh:i},i}Mh(t,i){return this.ah.autoscaleInfo?.(t,i)??null}}function Nt(t,i,s,e){t.forEach(t=>{i(t).forEach(t=>{t.hh()===s&&e.push(t)})})}function Ut(t){return t.$s()}function qt(t){return t.gh()}function Yt(t){return t.bh()}const jt=["Area","Line","Baseline"];class Kt extends yt{constructor(t,i,s,e,n){super(t),this.jt=new It,this.rr=new pt(this),this.yh=[],this.Sh=new _t(this),this.xh=null,this.Ch=null,this.Ph=null,this.Th=[],this.Ps=s,this.kh=i;const r=new ft(this);this.ws=[r],this.hr=new lt(r,this,t),jt.includes(this.kh)&&(this.xh=new dt(this)),this.Dh(),this.eh=e(this,this.ti(),n)}m(){null!==this.Ph&&clearTimeout(this.Ph)}Ln(t){return this.Ps.priceLineColor||t}Tn(t){const i={kn:!0},s=this.$t();if(this.ti().At().Gi()||s.Gi()||this.jt.Gi())return i;const e=this.ti().At().Pn(),n=this.Wt();if(null===e||null===n)return i;let r,h;if(t){const t=this.jt.Br();if(null===t)return i;r=t,h=t.In}else{const t=this.jt.$r(e.yi(),-1);if(null===t)return i;if(r=this.jt.kr(t.In),null===r)return i;h=t.In}const l=r.Ht[3],o=this.Ih().Vr(h,{Ht:r}),a=s.zt(l,n.Ht);return{kn:!1,bt:l,hi:s.Zi(l,n.Ht),On:s.Vh(l),zn:s.Rh(l,n.Ht),I:o.dr,Li:a,In:h}}Ih(){return null!==this.Ch||(this.Ch=new xt(this)),this.Ch}O(){return this.Ps}lr(t){const i=t.priceScaleId;void 0!==i&&i!==this.Ps.priceScaleId&&this.ti().Fh(this,i),p(this.Ps,t),void 0!==t.priceFormat&&(this.Dh(),this.ti().Lh()),this.ti().Ah(this),this.ti().Bh(),this.eh.Tt("options")}lt(t,i){this.jt.lt(t),this.eh.Tt("data"),null!==this.xh&&(i&&i.Wh?this.xh.yn():0===t.length&&this.xh.Mn());const s=this.ti().$e(this);this.ti().Eh(s),this.ti().Ah(this),this.ti().Bh(),this.ti().ar()}Oh(t){const i=new Mt(this,t);return this.yh.push(i),this.ti().Ah(this),i}zh(t){const i=this.yh.indexOf(t);-1!==i&&this.yh.splice(i,1),this.ti().Ah(this)}$h(){return this.yh}Ir(){return this.kh}Wt(){const t=this.Hh();return null===t?null:{Ht:t.Ht[3],Nh:t.gt}}Hh(){const t=this.ti().At().Pn();if(null===t)return null;const i=t.Uh();return this.jt.$r(i,1)}Xs(){return this.jt}qh(t){const i=this.jt.kr(t);return null===i?null:"Bar"===this.kh||"Candlestick"===this.kh||"Custom"===this.kh?{Yh:i.Ht[0],jh:i.Ht[1],Kh:i.Ht[2],Gh:i.Ht[3]}:i.Ht[3]}Xh(t){const i=[];Nt(this.Th,Ut,"top",i);const s=this.xh;return null!==s&&s.Rt()?(null===this.Ph&&s.xn()&&(this.Ph=setTimeout(()=>{this.Ph=null,this.ti().Zh()},0)),s.Sn(),i.unshift(s),i):i}$s(){const t=[];this.Jh()||t.push(this.Sh),t.push(this.eh,this.rr);const i=this.yh.map(t=>t._r());return t.push(...i),Nt(this.Th,Ut,"normal",t),t}Qh(){return this.tl(Ut,"bottom")}il(t){return this.tl(qt,t)}sl(t){return this.tl(Yt,t)}el(t,i){return this.Th.map(s=>s.Ye(t,i)).filter(t=>null!==t)}cs(){return[this.hr,...this.yh.map(t=>t.ur())]}Hs(t,i){if(i!==this.rs&&!this.Jh())return[];const s=[...this.ws];for(const t of this.yh)s.push(t.cr());return this.Th.forEach(t=>{s.push(...t.Hs())}),s}ds(){const t=[];return this.Th.forEach(i=>{t.push(...i.ds())}),t}Mh(t,i){if(void 0!==this.Ps.autoscaleInfoProvider){const s=this.Ps.autoscaleInfoProvider(()=>{const s=this.nl(t,i);return null===s?null:s.Xn()});return wt.Zn(s)}return this.nl(t,i)}nh(){const t=this.Ps.priceFormat;return t.base??1/t.minMove}rl(){return this.hl}zs(){this.eh.Tt();for(const t of this.ws)t.Tt();for(const t of this.yh)t.Tt();this.rr.Tt(),this.Sh.Tt(),this.xh?.Tt(),this.Th.forEach(t=>t.zs())}$t(){return u(super.$t())}Bt(t){if(!(("Line"===this.kh||"Area"===this.kh||"Baseline"===this.kh)&&this.Ps.crosshairMarkerVisible))return null;const i=this.jt.kr(t);if(null===i)return null;return{bt:i.Ht[3],vt:this.ll(),Nt:this.ol(),Ot:this.al(),Et:this._l(t)}}An(){return this.Ps.title}Rt(){return this.Ps.visible}ul(t){this.Th.push(new Ht(t,this))}cl(t){this.Th=this.Th.filter(i=>i._h()!==t)}dl(){if("Custom"===this.kh)return t=>this.eh.pl(t)}fl(){if("Custom"===this.kh)return t=>this.eh.vl(t)}ml(){return this.jt.Yr()}Jh(){return!X(this.$t().wl())}nl(t,i){if(!v(t)||!v(i)||this.jt.Gi())return null;const s="Line"===this.kh||"Area"===this.kh||"Baseline"===this.kh||"Histogram"===this.kh?[3]:[2,1],e=this.jt.Ur(t,i,s);let n=null!==e?new mt(e.Qr,e.th):null,r=null;if("Histogram"===this.Ir()){const t=this.Ps.base,i=new mt(t,t);n=null!==n?n.fe(i):i}return this.Th.forEach(s=>{const e=s.Mh(t,i);if(e?.priceRange){const t=new mt(e.priceRange.minValue,e.priceRange.maxValue);n=null!==n?n.fe(t):t}e?.margins&&(r=e.margins)}),new wt(n,r)}ll(){switch(this.kh){case"Line":case"Area":case"Baseline":return this.Ps.crosshairMarkerRadius}return 0}ol(){switch(this.kh){case"Line":case"Area":case"Baseline":{const t=this.Ps.crosshairMarkerBorderColor;if(0!==t.length)return t}}return null}al(){switch(this.kh){case"Line":case"Area":case"Baseline":return this.Ps.crosshairMarkerBorderWidth}return 0}_l(t){switch(this.kh){case"Line":case"Area":case"Baseline":{const t=this.Ps.crosshairMarkerBackgroundColor;if(0!==t.length)return t}}return this.Ih().Vr(t).dr}Dh(){switch(this.Ps.priceFormat.type){case"custom":{const t=this.Ps.priceFormat.formatter;this.hl={format:t,formatTickmarks:this.Ps.priceFormat.tickmarksFormatter??(i=>i.map(t))};break}case"volume":this.hl=new et(this.Ps.priceFormat.precision);break;case"percent":this.hl=new st(this.Ps.priceFormat.precision);break;default:{const t=Math.pow(10,this.Ps.priceFormat.precision);this.hl=new it(t,this.Ps.priceFormat.minMove*t)}}null!==this.rs&&this.rs.gl()}tl(t,i){const s=[];return Nt(this.Th,t,i,s),s}}const Gt=[3],Xt=[0,1,2,3];class Zt{constructor(t){this.Ps=t}bl(t,i,s){let e=t;if(0===this.Ps.mode)return e;const n=s.ks(),r=n.Wt();if(null===r)return e;const h=n.zt(t,r),l=s.Ml().filter(t=>t instanceof Kt).reduce((t,e)=>{if(s.He(e)||!e.Rt())return t;const n=e.$t(),r=e.Xs();if(n.Gi()||!r.Dn(i))return t;const h=r.kr(i);if(null===h)return t;const l=c(e.Wt()),o=3===this.Ps.mode?Xt:Gt;return t.concat(o.map(t=>n.zt(h.Ht[t],l.Ht)))},[]);if(0===l.length)return e;l.sort((t,i)=>Math.abs(t-h)-Math.abs(i-h));const o=l[0];return e=n.Ds(o,r),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}rt({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 r=u(this.jt);if(r.yl){t.strokeStyle=r.Sl,l(t,r.xl),t.beginPath();for(const e of r.Cl){const r=Math.round(e.Pl*s);t.moveTo(r,-n),t.lineTo(r,i.height+n)}t.stroke()}if(r.Tl){t.strokeStyle=r.kl,l(t,r.Dl),t.beginPath();for(const s of r.Il){const r=Math.round(s.Pl*e);t.moveTo(-n,r),t.lineTo(i.width+n,r)}t.stroke()}})}}class si{constructor(t){this.Jt=new ii,this.xt=!0,this.Pt=t}Tt(){this.xt=!0}Dt(){if(this.xt){const t=this.Pt.ti().O().grid,i={Tl:t.horzLines.visible,yl:t.vertLines.visible,kl:t.horzLines.color,Sl:t.vertLines.color,Dl:t.horzLines.style,xl:t.vertLines.style,Il:this.Pt.ks().Vl(),Cl:(this.Pt.ti().At().Vl()||[]).map(t=>({Pl:t.coord}))};this.Jt.lt(i),this.xt=!1}return this.Jt}}class ei{constructor(t){this.eh=new si(t)}_r(){return this.eh}}const ni={Rl:4,Fl:1e-4};function ri(t,i){const s=100*(t-i)/i;return i<0?-s:s}function hi(t,i){const s=ri(t.qn(),i),e=ri(t.Yn(),i);return new mt(s,e)}function li(t,i){const s=100*(t-i)/i+100;return i<0?-s:s}function oi(t,i){const s=li(t.qn(),i),e=li(t.Yn(),i);return new mt(s,e)}function ai(t,i){const s=Math.abs(t);if(s<1e-15)return 0;const e=Math.log10(s+i.Fl)+i.Rl;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.Rl)-i.Fl;return t<0?-e:e}function ui(t,i){if(null===t)return null;const s=ai(t.qn(),i),e=ai(t.Yn(),i);return new mt(s,e)}function ci(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.Rl+s;return{Rl:e,Fl:1/Math.pow(10,e)}}class pi{constructor(t,i){if(this.Ll=t,this.Al=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.Ll))this.Bl=[2,2.5,2];else{this.Bl=[];for(let t=this.Ll;1!==t;){if(t%2==0)this.Bl.push(2),t/=2;else{if(t%5!=0)throw new Error("unexpected base");this.Bl.push(2,2.5),t/=5}if(this.Bl.length>100)throw new Error("something wrong with base")}}}Wl(t,i,s){const e=0===this.Ll?0:1/this.Ll;let n=Math.pow(10,Math.max(0,Math.ceil(Math.log10(t-i)))),r=0,h=this.Al[0];for(;;){const t=Qt(n,e,1e-14)&&n>e+1e-14,i=Qt(n,s*h,1e-14),l=Qt(n,1,1e-14);if(!(t&&i&&l))break;n/=h,h=this.Al[++r%this.Al.length]}if(n<=e+1e-14&&(n=e),n=Math.max(1,n),this.Bl.length>0&&(l=n,o=1,a=1e-14,Math.abs(l-o)<a))for(r=0,h=this.Bl[0];Qt(n,s*h,1e-14)&&n>e+1e-14;)n/=h,h=this.Bl[++r%this.Bl.length];var l,o,a;return n}}class fi{constructor(t,i,s,e){this.El=[],this.ji=t,this.Ll=i,this.Ol=s,this.zl=e}Wl(t,i){if(t<i)throw new Error("high < low");const s=this.ji.qt(),e=(t-i)*this.$l()/s,n=new pi(this.Ll,[2,2.5,2]),r=new pi(this.Ll,[2,2,2.5]),h=new pi(this.Ll,[2.5,2,2]),l=[];return l.push(n.Wl(t,i,e),r.Wl(t,i,e),h.Wl(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}(l)}Hl(){const t=this.ji,i=t.Wt();if(null===i)return void(this.El=[]);const s=t.qt(),e=this.Ol(s-1,i),n=this.Ol(0,i),r=this.ji.O().entireTextOnly?this.Nl()/2:0,h=r,l=s-1-r,o=Math.max(e,n),a=Math.min(e,n);if(o===a)return void(this.El=[]);const _=this.Wl(o,a);if(this.Ul(i,_,o,a,h,l),t.ql()&&this.Yl(_,a,o)){const t=this.ji.jl();this.Kl(i,_,h,l,t,2*t)}const u=this.El.map(t=>t.Gl),c=this.ji.Xl(u);for(let t=0;t<this.El.length;t++)this.El[t].Zl=c[t]}Vl(){return this.El}Nl(){return this.ji.P()}$l(){return Math.ceil(2.5*this.Nl())}Ul(t,i,s,e,n,r){const h=this.El,l=this.ji;let o=s%i;o+=o<0?i:0;const a=s>=e?1:-1;let _=null,u=0;for(let c=s-o;c>e;c-=i){const s=this.zl(c,t,!0);null!==_&&Math.abs(s-_)<this.$l()||(s<n||s>r||(u<h.length?(h[u].Pl=s,h[u].Zl=l.Jl(c),h[u].Gl=c):h.push({Pl:s,Zl:l.Jl(c),Gl:c}),u++,_=s,l.Ql()&&(i=this.Wl(c*a,e))))}h.length=u}Kl(t,i,s,e,n,r){const h=this.El,l=this.io(t,s,n,r),o=this.io(t,e,-r,-n),a=this.zl(0,t,!0)-this.zl(i,t,!0);h.length>0&&h[0].Pl-l.Pl<a/2&&h.shift(),h.length>0&&o.Pl-h[h.length-1].Pl<a/2&&h.pop(),h.unshift(l),h.push(o)}io(t,i,s,e){const n=(s+e)/2,r=this.Ol(i+s,t),h=this.Ol(i+e,t),l=Math.min(r,h),o=Math.max(r,h),a=Math.max(.1,this.Wl(o,l)),_=this.Ol(i+n,t),u=_-_%a,c=this.zl(u,t,!0);return{Zl:this.ji.Jl(u),Pl:c,Gl:u}}Yl(t,i,s){let e=c(this.ji.tr());return this.ji.Ql()&&(e=ci(e,this.ji.so())),e.qn()-i<t&&s-e.Yn()<t}}function vi(t){return t.slice().sort((t,i)=>u(t.ls())-u(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 wi=new st,gi=new it(100,1);class bi{constructor(t,i,s,e,n){this.eo=0,this.no=null,this.Jn=null,this.ro=null,this.ho={lo:!1,oo:null},this.ao=!1,this._o=0,this.uo=0,this.co=new d,this.do=new d,this.po=[],this.fo=null,this.vo=null,this.mo=null,this.wo=null,this.bo=null,this.hl=gi,this.Mo=di(null),this.yo=t,this.Ps=i,this.So=s,this.xo=e,this.Co=n,this.Po=new fi(this,100,this.To.bind(this),this.ko.bind(this))}wl(){return this.yo}O(){return this.Ps}lr(t){if(p(this.Ps,t),this.gl(),void 0!==t.mode&&this.Do({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.Io(),this.mo=null}}Vo(){return this.Ps.autoScale}Ro(){return this.ao}Ql(){return 1===this.Ps.mode}En(){return 2===this.Ps.mode}Fo(){return 3===this.Ps.mode}so(){return this.Mo}tn(){return{se:this.Ps.autoScale,Lo:this.Ps.invertScale,tn:this.Ps.mode}}Do(t){const i=this.tn();let s=null;void 0!==t.se&&(this.Ps.autoScale=t.se),void 0!==t.tn&&(this.Ps.mode=t.tn,2!==t.tn&&3!==t.tn||(this.Ps.autoScale=!0),this.ho.lo=!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.Mo)?this.Ps.autoScale=!0:(s=ci(this.Jn,this.Mo),null!==s&&this.Ao(s))),1===t.tn&&t.tn!==i.tn&&(s=ui(this.Jn,this.Mo),null!==s&&this.Ao(s));const e=i.tn!==this.Ps.mode;e&&(2===i.tn||this.En())&&this.gl(),e&&(3===i.tn||this.Fo())&&this.gl(),void 0!==t.Lo&&i.Lo!==t.Lo&&(this.Ps.invertScale=t.Lo,this.Bo()),this.do.p(i,this.tn())}Wo(){return this.do}P(){return this.So.fontSize}qt(){return this.eo}Eo(t){this.eo!==t&&(this.eo=t,this.Io(),this.mo=null)}Oo(){if(this.no)return this.no;const t=this.qt()-this.zo()-this.$o();return this.no=t,t}tr(){return this.Ho(),this.Jn}Ao(t,i){const s=this.Jn;(i||null===s&&null!==t||null!==s&&!s.Nn(t))&&(this.mo=null,this.Jn=t)}No(t){this.Ao(t),this.Uo(null!==t)}Gi(){return this.Ho(),0===this.eo||!this.Jn||this.Jn.Gi()}qo(t){return this.Lo()?t:this.qt()-1-t}zt(t,i){return this.En()?t=ri(t,i):this.Fo()&&(t=li(t,i)),this.ko(t,i)}Yo(t,i,s){this.Ho();const e=this.$o(),n=u(this.tr()),r=n.qn(),h=n.Yn(),l=this.Oo()-1,o=this.Lo(),a=l/(h-r),_=void 0===s?0:s.from,c=void 0===s?t.length:s.to,d=this.jo();for(let s=_;s<c;s++){const n=t[s],h=n.bt;if(isNaN(h))continue;let l=h;null!==d&&(l=d(n.bt,i));const _=e+a*(l-r),u=o?_:this.eo-1-_;n.ct=u}}Ko(t,i,s){this.Ho();const e=this.$o(),n=u(this.tr()),r=n.qn(),h=n.Yn(),l=this.Oo()-1,o=this.Lo(),a=l/(h-r),_=void 0===s?0:s.from,c=void 0===s?t.length:s.to,d=this.jo();for(let s=_;s<c;s++){const n=t[s];let h=n.Yh,l=n.jh,_=n.Kh,u=n.Gh;null!==d&&(h=d(n.Yh,i),l=d(n.jh,i),_=d(n.Kh,i),u=d(n.Gh,i));let c=e+a*(h-r),p=o?c:this.eo-1-c;n.Go=p,c=e+a*(l-r),p=o?c:this.eo-1-c,n.Xo=p,c=e+a*(_-r),p=o?c:this.eo-1-c,n.Zo=p,c=e+a*(u-r),p=o?c:this.eo-1-c,n.Jo=p}}Ds(t,i){const s=this.To(t,i);return this.Qo(s,i)}Qo(t,i){let s=t;return this.En()?s=function(t,i){return i<0&&(t=-t),t/100*i+i}(s,i):this.Fo()&&(s=function(t,i){return t-=100,i<0&&(t=-t),t/100*i+i}(s,i)),s}Ml(){return this.po}Vt(){return this.vo||(this.vo=vi(this.po)),this.vo}ta(t){-1===this.po.indexOf(t)&&(this.po.push(t),this.gl(),this.ia())}sa(t){const i=this.po.indexOf(t);if(-1===i)throw new Error("source is not attached to scale");this.po.splice(i,1),0===this.po.length&&(this.Do({se:!0}),this.Ao(null)),this.gl(),this.ia()}Wt(){let t=null;for(const i of this.po){const s=i.Wt();null!==s&&((null===t||s.Nh<t.Nh)&&(t=s))}return null===t?null:t.Ht}Lo(){return this.Ps.invertScale}Vl(){const t=null===this.Wt();if(null!==this.mo&&(t||this.mo.ea===t))return this.mo.Vl;this.Po.Hl();const i=this.Po.Vl();return this.mo={Vl:i,ea:t},this.co.p(),i}na(){return this.co}ra(t){this.En()||this.Fo()||null===this.wo&&null===this.ro&&(this.Gi()||(this.wo=this.eo-t,this.ro=u(this.tr()).Un()))}ha(t){if(this.En()||this.Fo())return;if(null===this.wo)return;this.Do({se:!1}),(t=this.eo-t)<0&&(t=0);let i=(this.wo+.2*(this.eo-1))/(t+.2*(this.eo-1));const s=u(this.ro).Un();i=Math.max(i,.1),s.Kn(i),this.Ao(s)}la(){this.En()||this.Fo()||(this.wo=null,this.ro=null)}oa(t){this.Vo()||null===this.bo&&null===this.ro&&(this.Gi()||(this.bo=t,this.ro=u(this.tr()).Un()))}aa(t){if(this.Vo())return;if(null===this.bo)return;const i=u(this.tr()).jn()/(this.Oo()-1);let s=t-this.bo;this.Lo()&&(s*=-1);const e=s*i,n=u(this.ro).Un();n.Gn(e),this.Ao(n,!0),this.mo=null}_a(){this.Vo()||null!==this.bo&&(this.bo=null,this.ro=null)}rl(){return this.hl||this.gl(),this.hl}Zi(t,i){switch(this.Ps.mode){case 2:return this.ua(ri(t,i));case 3:return this.rl().format(li(t,i));default:return this.nr(t)}}Jl(t){switch(this.Ps.mode){case 2:return this.ua(t);case 3:return this.rl().format(t);default:return this.nr(t)}}Xl(t){switch(this.Ps.mode){case 2:return this.ca(t);case 3:return this.rl().formatTickmarks(t);default:return this.da(t)}}Vh(t){return this.nr(t,u(this.fo).rl())}Rh(t,i){return t=ri(t,i),this.ua(t,wi)}pa(){return this.po}fa(t){this.ho={oo:t,lo:!1}}zs(){this.po.forEach(t=>t.zs())}ql(){return this.Ps.ensureEdgeTickMarksVisible&&this.Vo()}jl(){return this.P()/2}gl(){this.mo=null;let t=1/0;this.fo=null;for(const i of this.po)i.ls()<t&&(t=i.ls(),this.fo=i);let i=100;null!==this.fo&&(i=Math.round(this.fo.nh())),this.hl=gi,this.En()?(this.hl=wi,i=100):this.Fo()?(this.hl=new it(100,1),i=100):null!==this.fo&&(this.hl=this.fo.rl()),this.Po=new fi(this,i,this.To.bind(this),this.ko.bind(this)),this.Po.Hl()}ia(){this.vo=null}va(){return null===this.fo||this.En()||this.Fo()?1:1/this.fo.nh()}Xi(){return this.Co}Uo(t){this.ao=t}zo(){return this.Lo()?this.Ps.scaleMargins.bottom*this.qt()+this.uo:this.Ps.scaleMargins.top*this.qt()+this._o}$o(){return this.Lo()?this.Ps.scaleMargins.top*this.qt()+this._o:this.Ps.scaleMargins.bottom*this.qt()+this.uo}Ho(){this.ho.lo||(this.ho.lo=!0,this.ma())}Io(){this.no=null}ko(t,i){if(this.Ho(),this.Gi())return 0;t=this.Ql()&&t?ai(t,this.Mo):t;const s=u(this.tr()),e=this.$o()+(this.Oo()-1)*(t-s.qn())/s.jn();return this.qo(e)}To(t,i){if(this.Ho(),this.Gi())return 0;const s=this.qo(t),e=u(this.tr()),n=e.qn()+e.jn()*((s-this.$o())/(this.Oo()-1));return this.Ql()?_i(n,this.Mo):n}Bo(){this.mo=null,this.Po.Hl()}ma(){if(this.Ro()&&!this.Vo())return;const t=this.ho.oo;if(null===t)return;let i=null;const s=this.pa();let e=0,n=0;for(const r of s){if(!r.Rt())continue;const s=r.Wt();if(null===s)continue;const h=r.Mh(t.Uh(),t.yi());let l=h&&h.tr();if(null!==l){switch(this.Ps.mode){case 1:l=ui(l,this.Mo);break;case 2:l=hi(l,s.Ht);break;case 3:l=oi(l,s.Ht)}if(i=null===i?l:i.fe(u(l)),null!==h){const t=h.ir();null!==t&&(e=Math.max(e,t.above),n=Math.max(n,t.below))}}}if(this.ql()&&(e=Math.max(e,this.jl()),n=Math.max(n,this.jl())),e===this._o&&n===this.uo||(this._o=e,this.uo=n,this.mo=null,this.Io()),null!==i){if(i.qn()===i.Yn()){const t=5*this.va();this.Ql()&&(i=ci(i,this.Mo)),i=new mt(i.qn()-t,i.Yn()+t),this.Ql()&&(i=ui(i,this.Mo))}if(this.Ql()){const t=ci(i,this.Mo),s=di(t);if(r=s,h=this.Mo,r.Rl!==h.Rl||r.Fl!==h.Fl){const e=null!==this.ro?ci(this.ro,this.Mo):null;this.Mo=s,i=ui(t,s),null!==e&&(this.ro=ui(e,s))}}this.Ao(i)}else null===this.Jn&&(this.Ao(new mt(-.5,.5)),this.Mo=di(null));var r,h}jo(){return this.En()?ri:this.Fo()?li:this.Ql()?t=>ai(t,this.Mo):null}wa(t,i,s){return void 0===i?(void 0===s&&(s=this.rl()),s.format(t)):i(t)}ga(t,i,s){return void 0===i?(void 0===s&&(s=this.rl()),s.formatTickmarks(t)):i(t)}nr(t,i){return this.wa(t,this.xo.priceFormatter,i)}da(t,i){const s=this.xo.priceFormatter;return this.ga(t,this.xo.tickmarksPriceFormatter??(s?t=>t.map(s):void 0),i)}ua(t,i){return this.wa(t,this.xo.percentageFormatter,i)}ca(t,i){const s=this.xo.percentageFormatter;return this.ga(t,this.xo.tickmarksPercentageFormatter??(s?t=>t.map(s):void 0),i)}}function Mi(t){return t instanceof Kt}class yi{constructor(t,i){this.po=[],this.ba=new Map,this.eo=0,this.Ma=0,this.ya=1,this.vo=null,this.Sa=!1,this.xa=new d,this.Th=[],this.dh=t,this.ss=i,this.Ca=new ei(this);const s=i.O();this.Pa=this.Ta("left",s.leftPriceScale),this.ka=this.Ta("right",s.rightPriceScale),this.Pa.Wo().i(this.Da.bind(this,this.Pa),this),this.ka.Wo().i(this.Da.bind(this,this.ka),this),this.Ia(s)}Ia(t){if(t.leftPriceScale&&this.Pa.lr(t.leftPriceScale),t.rightPriceScale&&this.ka.lr(t.rightPriceScale),t.localization&&(this.Pa.gl(),this.ka.gl()),t.overlayPriceScales){const i=Array.from(this.ba.values());for(const s of i){const i=u(s[0].$t());i.lr(t.overlayPriceScales),t.localization&&i.gl()}}}Va(t){switch(t){case"left":return this.Pa;case"right":return this.ka}return this.ba.has(t)?_(this.ba.get(t))[0].$t():null}m(){this.ti().Ra().u(this),this.Pa.Wo().u(this),this.ka.Wo().u(this),this.po.forEach(t=>{t.m&&t.m()}),this.Th=this.Th.filter(t=>{const i=t._h();return i.detached&&i.detached(),!1}),this.xa.p()}Fa(){return this.ya}La(t){this.ya=t}ti(){return this.ss}ts(){return this.Ma}qt(){return this.eo}Aa(t){this.Ma=t,this.Ba()}Eo(t){this.eo=t,this.Pa.Eo(t),this.ka.Eo(t),this.po.forEach(i=>{if(this.He(i)){const s=i.$t();null!==s&&s.Eo(t)}}),this.Ba()}Wa(t){this.Sa=t}Ea(){return this.Sa}Oa(){return this.po.filter(Mi)}Ml(){return this.po}He(t){const i=t.$t();return null===i||this.Pa!==i&&this.ka!==i}ta(t,i,s){this.za(t,i,s?t.ls():this.po.length)}sa(t,i){const s=this.po.indexOf(t);a(-1!==s,"removeDataSource: invalid data source"),this.po.splice(s,1),i||this.po.forEach((t,i)=>t._s(i));const e=u(t.$t()).wl();if(this.ba.has(e)){const i=_(this.ba.get(e)),s=i.indexOf(t);-1!==s&&(i.splice(s,1),0===i.length&&this.ba.delete(e))}const n=t.$t();n&&n.Ml().indexOf(t)>=0&&(n.sa(t),this.$a(n)),this.vo=null}Ue(t){return t===this.Pa?"left":t===this.ka?"right":"overlay"}Ha(){return this.Pa}Na(){return this.ka}Ua(t,i){t.ra(i)}qa(t,i){t.ha(i),this.Ba()}Ya(t){t.la()}ja(t,i){t.oa(i)}Ka(t,i){t.aa(i),this.Ba()}Ga(t){t._a()}Ba(){this.po.forEach(t=>{t.zs()})}ks(){let t=null;return this.ss.O().rightPriceScale.visible&&0!==this.ka.Ml().length?t=this.ka:this.ss.O().leftPriceScale.visible&&0!==this.Pa.Ml().length?t=this.Pa:0!==this.po.length&&(t=this.po[0].$t()),null===t&&(t=this.ka),t}Ne(){let t=null;return this.ss.O().rightPriceScale.visible?t=this.ka:this.ss.O().leftPriceScale.visible&&(t=this.Pa),t}$a(t){null!==t&&t.Vo()&&this.Xa(t)}Za(t){const i=this.dh.Pn();t.Do({se:!0}),null!==i&&t.fa(i),this.Ba()}Ja(){this.Xa(this.Pa),this.Xa(this.ka)}Qa(){this.$a(this.Pa),this.$a(this.ka),this.po.forEach(t=>{this.He(t)&&this.$a(t.$t())}),this.Ba(),this.ss.ar()}Vt(){return null===this.vo&&(this.vo=vi(this.po)),this.vo}t_(t,i){i=Jt(i,0,this.po.length-1);const s=this.po.indexOf(t);a(-1!==s,"setSeriesOrder: invalid data source"),this.po.splice(s,1),this.po.splice(i,0,t),this.po.forEach((t,i)=>t._s(i)),this.vo=null;for(const t of[this.Pa,this.ka])t.ia(),t.gl();this.ss.ar()}Ft(){return this.Vt().filter(Mi)}i_(){return this.xa}s_(){return this.Ca}ul(t){this.Th.push(new Bt(t))}cl(t){this.Th=this.Th.filter(i=>i._h()!==t),t.detached&&t.detached(),this.ss.ar()}e_(){return this.Th}el(t,i){return this.Th.map(s=>s.Ye(t,i)).filter(t=>null!==t)}Xa(t){const i=t.pa();if(i&&i.length>0&&!this.dh.Gi()){const i=this.dh.Pn();null!==i&&t.fa(i)}t.zs()}za(t,i,s){let e=this.Va(i);if(null===e&&(e=this.Ta(i,this.ss.O().overlayPriceScales)),this.po.splice(s,0,t),!X(i)){const s=this.ba.get(i)||[];s.push(t),this.ba.set(i,s)}t._s(s),e.ta(t),t.us(e),this.$a(e),this.vo=null}Da(t,i,s){i.tn!==s.tn&&this.Xa(t)}Ta(t,i){const s={visible:!0,autoScale:!0,...g(i)},e=new bi(t,s,this.ss.O().layout,this.ss.O().localization,this.ss.Xi());return e.Eo(this.qt()),e}}function Si(t,i){return!i||"top"===t&&"top"!==i||"normal"===t&&"bottom"===i}function xi(t){return{n_:t.n_,r_:{je:t.h_.externalId},l_:t.h_.cursorStyle}}function Ci(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{o_:n,r_:e}}}return null}function Pi(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 r of t){const t=r.el?.(i,s)??[];for(const i of t)Si(i.zOrder,e?.zOrder)&&(e=i,n=r)}return e&&n?{h_:e,n_:n}:null}(e,i,s);if("top"===n?.h_.zOrder)return xi(n);for(const r of e){if(n&&n.n_===r&&"bottom"!==n.h_.zOrder&&!n.h_.isBackground)return xi(n);if(Pi(r)){const e=Ci(r.$s(t),i,s,t);if(null!==e)return{n_:r,o_:e.o_,r_:e.r_}}if(n&&n.n_===r&&"bottom"!==n.h_.zOrder&&n.h_.isBackground)return xi(n)}return n?.h_?xi(n):null}class ki{constructor(t,i,s=50){this.Ce=0,this.Pe=1,this.Te=1,this.De=new Map,this.ke=new Map,this.a_=t,this.__=i,this.Ie=s}u_(t){const i=t.time,s=this.__.cacheKey(i),e=this.De.get(s);if(void 0!==e)return e.c_;if(this.Ce===this.Ie){const t=this.ke.get(this.Te);this.ke.delete(this.Te),this.De.delete(_(t)),this.Te++,this.Ce--}const n=this.a_(t);return this.De.set(s,{c_:n,Le:this.Pe}),this.ke.set(this.Pe,s),this.Ce++,this.Pe++,n}}class Di{constructor(t,i){a(t<=i,"right should be >= left"),this.d_=t,this.p_=i}Uh(){return this.d_}yi(){return this.p_}f_(){return this.p_-this.d_+1}Dn(t){return this.d_<=t&&t<=this.p_}Nn(t){return this.d_===t.Uh()&&this.p_===t.yi()}}function Ii(t,i){return null===t||null===i?t===i:t.Nn(i)}class Vi{constructor(){this.v_=new Map,this.De=null,this.m_=!1}w_(t){this.m_=t,this.De=null}g_(t,i){this.b_(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})}}M_(t,i,s,e,n){const r=Math.ceil(i/t);return null!==this.De&&this.De.y_===r&&n===this.De.S_&&s===this.De.x_||(this.De={S_:n,x_:s,Vl:this.C_(r,s,e),y_:r}),this.De.Vl}b_(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(Pt(s,t,i=>i.index<t),1/0)});for(const t of i)this.v_.delete(t)}C_(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 r=s.length;let h=0;const l=_(this.v_.get(i)),o=l.length;let a=1/0,u=-1/0;for(let i=0;i<o;i++){const o=l[i],_=o.index;for(;h<r;){const t=s[h],i=t.index;if(!(i<_&&n(t))){a=i;break}h++,e.push(t),u=i,a=1/0}if(a-_>=t&&_-u>=t&&n(o))e.push(o),u=_;else if(this.m_)return s}for(;h<r;h++)n(s[h])&&e.push(s[h])}return e}}class Ri{constructor(t){this.P_=t}T_(){return null===this.P_?null:new Di(Math.floor(this.P_.Uh()),Math.ceil(this.P_.yi()))}k_(){return this.P_}static D_(){return new Ri(null)}}function Fi(t,i){return t.weight>i.weight?t:i}class Li{constructor(t,i,s,e){this.Ma=0,this.I_=null,this.V_=[],this.bo=null,this.wo=null,this.R_=new Vi,this.F_=new Map,this.L_=Ri.D_(),this.A_=!0,this.B_=new d,this.W_=new d,this.E_=new d,this.O_=null,this.z_=null,this.H_=new Map,this.N_=-1,this.U_=[],this.Ps=i,this.xo=s,this.q_=i.rightOffset,this.Y_=i.barSpacing,this.ss=t,this.j_(i),this.__=e,this.K_(),this.R_.w_(i.uniformDistribution),this.G_()}O(){return this.Ps}X_(t){p(this.xo,t),this.Z_(),this.K_()}lr(t,i){p(this.Ps,t),this.Ps.fixLeftEdge&&this.J_(),this.Ps.fixRightEdge&&this.Q_(),void 0!==t.barSpacing&&this.ss.ce(t.barSpacing),void 0!==t.rightOffset&&this.ss.de(t.rightOffset),this.j_(t),void 0===t.minBarSpacing&&void 0===t.maxBarSpacing||this.ss.ce(t.barSpacing??this.Y_),void 0!==t.ignoreWhitespaceIndices&&t.ignoreWhitespaceIndices!==this.Ps.ignoreWhitespaceIndices&&this.G_(),this.Z_(),this.K_(),this.E_.p()}Is(t){return this.V_[t]?.time??null}es(t){return this.V_[t]??null}tu(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=Pt(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}Gi(){return 0===this.Ma||0===this.V_.length||null===this.I_}iu(){return this.V_.length>0}Pn(){return this.su(),this.L_.T_()}eu(){return this.su(),this.L_.k_()}nu(){const t=this.Pn();if(null===t)return null;const i={from:t.Uh(),to:t.yi()};return this.ru(i)}ru(t){const i=Math.round(t.from),s=Math.round(t.to),e=u(this.hu()),n=u(this.lu());return{from:u(this.es(Math.max(e,i))),to:u(this.es(Math.min(n,s)))}}ou(t){return{from:u(this.tu(t.from,!0)),to:u(this.tu(t.to,!0))}}ts(){return this.Ma}Aa(t){if(!isFinite(t)||t<=0)return;if(this.Ma===t)return;const i=this.eu(),s=this.Ma;if(this.Ma=t,this.A_=!0,this.Ps.lockVisibleTimeRangeOnResize&&0!==s){const i=this.Y_*t/s;this.Y_=i}if(this.Ps.fixLeftEdge&&null!==i&&i.Uh()<=0){const i=s-t;this.q_-=Math.round(i/this.Y_)+1,this.A_=!0}this.au(),this._u()}Yt(t){if(this.Gi()||!v(t))return 0;const i=this.uu()+this.q_-t;return this.Ma-(i+.5)*this.Y_-1}cu(t,i){const s=this.uu(),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].gt,n=s+this.q_-e,r=this.Ma-(n+.5)*this.Y_-1;t[i].ut=r}}du(t,i){const s=Math.ceil(this.pu(t));return i&&this.Ps.ignoreWhitespaceIndices&&!this.fu(s)?this.vu(s):s}de(t){this.A_=!0,this.q_=t,this._u(),this.ss.mu(),this.ss.ar()}wu(){return this.Y_}ce(t){const i=this.Y_;if(this.gu(t),void 0!==this.Ps.rightOffsetPixels&&0!==i){const t=this.q_*i/this.Y_;this.q_=t}this._u(),this.ss.mu(),this.ss.ar()}bu(){return this.q_}Vl(){if(this.Gi())return null;if(null!==this.z_)return this.z_;const t=this.Y_,i=5*(this.ss.O().layout.fontSize+4)/8*(this.Ps.tickMarkMaxCharacterLength||8),s=Math.round(i/t),e=u(this.Pn()),n=Math.max(e.Uh(),e.Uh()-s),r=Math.max(e.yi(),e.yi()-s),h=this.R_.M_(t,i,this.Ps.ignoreWhitespaceIndices,this.H_,this.N_),l=this.hu()+s,o=this.lu()-s,a=this.Mu(),_=this.Ps.fixLeftEdge||a,c=this.Ps.fixRightEdge||a;let d=0;for(const t of h){if(!(n<=t.index&&t.index<=r))continue;let s;d<this.U_.length?(s=this.U_[d],s.coord=this.Yt(t.index),s.label=this.yu(t),s.weight=t.weight):(s={needAlignCoordinate:!1,coord:this.Yt(t.index),label:this.yu(t),weight:t.weight},this.U_.push(s)),this.Y_>i/2&&!a?s.needAlignCoordinate=!1:s.needAlignCoordinate=_&&t.index<=l||c&&t.index>=o,d++}return this.U_.length=d,this.z_=this.U_,this.U_}Su(){let t;this.A_=!0,this.ce(this.Ps.barSpacing),t=void 0!==this.Ps.rightOffsetPixels?this.Ps.rightOffsetPixels/this.wu():this.Ps.rightOffset,this.de(t)}xu(t){this.A_=!0,this.I_=t,this._u(),this.J_()}Cu(t,i){const s=this.pu(t),e=this.wu(),n=e+i*(e/10);this.ce(n),this.Ps.rightBarStaysOnScroll||this.de(this.bu()+(s-this.pu(t)))}ra(t){this.bo&&this._a(),null===this.wo&&null===this.O_&&(this.Gi()||(this.wo=t,this.Pu()))}ha(t){if(null===this.O_)return;const i=Jt(this.Ma-t,0,this.Ma),s=Jt(this.Ma-u(this.wo),0,this.Ma);0!==i&&0!==s&&this.ce(this.O_.wu*i/s)}la(){null!==this.wo&&(this.wo=null,this.Tu())}oa(t){null===this.bo&&null===this.O_&&(this.Gi()||(this.bo=t,this.Pu()))}aa(t){if(null===this.bo)return;const i=(this.bo-t)/this.wu();this.q_=u(this.O_).bu+i,this.A_=!0,this._u()}_a(){null!==this.bo&&(this.bo=null,this.Tu())}ku(){this.Du(this.Ps.rightOffset)}Du(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.ae({Iu:t=>(t-e)/i>=1,Vu:n=>{const r=(n-e)/i;return r>=1?t:s+(t-s)*r}})}Tt(t,i){this.A_=!0,this.V_=t,this.R_.g_(t,i),this._u()}Ru(){return this.B_}Fu(){return this.W_}Lu(){return this.E_}uu(){return this.I_||0}Au(t,i){const s=t.f_(),e=i&&this.Ps.rightOffsetPixels||0;this.gu((this.Ma-e)/s),this.q_=t.yi()-this.uu(),i&&(this.q_=e?e/this.wu():this.Ps.rightOffset),this._u(),this.A_=!0,this.ss.mu(),this.ss.ar()}Bu(){const t=this.hu(),i=this.lu();null!==t&&null!==i&&this.Au(new Di(t,i),!0)}Wu(t){const i=new Di(t.from,t.to);this.Au(i)}ns(t){return void 0!==this.xo.timeFormatter?this.xo.timeFormatter(t.originalTime):this.__.formatHorzItem(t.time)}G_(){if(!this.Ps.ignoreWhitespaceIndices)return;this.H_.clear();const t=this.ss.Ks();for(const i of t)for(const t of i.ml())this.H_.set(t,!0);this.N_++}Mu(){const t=this.ss.O().handleScroll,i=this.ss.O().handleScale;return!(t.horzTouchDrag||t.mouseWheel||t.pressedMouseMove||t.vertTouchDrag||i.axisDoubleClickReset.time||i.axisPressedMouseMove.time||i.mouseWheel||i.pinch)}hu(){return 0===this.V_.length?null:0}lu(){return 0===this.V_.length?null:this.V_.length-1}Eu(t){return(this.Ma-1-t)/this.Y_}pu(t){const i=this.Eu(t),s=this.uu()+this.q_-i;return Math.round(1e6*s)/1e6}gu(t){const i=this.Y_;this.Y_=t,this.au(),i!==this.Y_&&(this.A_=!0,this.Ou())}su(){if(!this.A_)return;if(this.A_=!1,this.Gi())return void this.zu(Ri.D_());const t=this.uu(),i=this.Ma/this.Y_,s=this.q_+t,e=new Di(s-i+1,s);this.zu(new Ri(e))}au(){const t=Jt(this.Y_,this.$u(),this.Hu());this.Y_!==t&&(this.Y_=t,this.A_=!0)}Hu(){return this.Ps.maxBarSpacing>0?this.Ps.maxBarSpacing:.5*this.Ma}$u(){return this.Ps.fixLeftEdge&&this.Ps.fixRightEdge&&0!==this.V_.length?this.Ma/this.V_.length:this.Ps.minBarSpacing}_u(){const t=this.Nu();null!==t&&this.q_<t&&(this.q_=t,this.A_=!0);const i=this.Uu();this.q_>i&&(this.q_=i,this.A_=!0)}Nu(){const t=this.hu(),i=this.I_;if(null===t||null===i)return null;return t-i-1+(this.Ps.fixLeftEdge?this.Ma/this.Y_:Math.min(2,this.V_.length))}Uu(){return this.Ps.fixRightEdge?0:this.Ma/this.Y_-Math.min(2,this.V_.length)}Pu(){this.O_={wu:this.wu(),bu:this.bu()}}Tu(){this.O_=null}yu(t){let i=this.F_.get(t.weight);return void 0===i&&(i=new ki(t=>this.qu(t),this.__),this.F_.set(t.weight,i)),i.u_(t)}qu(t){return this.__.formatTickmark(t,this.xo)}zu(t){const i=this.L_;this.L_=t,Ii(i.T_(),this.L_.T_())||this.B_.p(),Ii(i.k_(),this.L_.k_())||this.W_.p(),this.Ou()}Ou(){this.z_=null}Z_(){this.Ou(),this.F_.clear()}K_(){this.__.updateFormatter(this.xo)}J_(){if(!this.Ps.fixLeftEdge)return;const t=this.hu();if(null===t)return;const i=this.Pn();if(null===i)return;const s=i.Uh()-t;if(s<0){const t=this.q_-s-1;this.de(t)}this.au()}Q_(){this._u(),this.au()}fu(t){return!this.Ps.ignoreWhitespaceIndices||(this.H_.get(t)||!1)}vu(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.lu();for(;s;){const t=i.next().value;if(this.H_.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 Ai,Bi,Wi,Ei,Oi;!function(t){t[t.OnTouchEnd=0]="OnTouchEnd",t[t.OnNextTap=1]="OnNextTap"}(Ai||(Ai={}));class zi{constructor(t,i,s){this.Yu=[],this.ju=[],this.Ma=0,this.Ku=null,this.Gu=new d,this.Xu=new d,this.Zu=null,this.Ju=t,this.Ps=i,this.__=s,this.Co=new T(this.Ps.layout.colorParsers),this.Qu=new x(this),this.dh=new Li(this,i.timeScale,this.Ps.localization,s),this.Ct=new G(this,i.crosshair),this.tc=new Zt(i.crosshair),i.addDefaultPane&&(this.sc(0),this.Yu[0].La(2)),this.ec=this.nc(0),this.rc=this.nc(1)}Lh(){this.hc(Z.we())}ar(){this.hc(Z.me())}Zh(){this.hc(new Z(1))}Ah(t){const i=this.lc(t);this.hc(i)}oc(){return this.Ku}ac(t){if(this.Ku?.n_===t?.n_&&this.Ku?.r_?.je===t?.r_?.je)return;const i=this.Ku;this.Ku=t,null!==i&&this.Ah(i.n_),null!==t&&t.n_!==i?.n_&&this.Ah(t.n_)}O(){return this.Ps}lr(t){p(this.Ps,t),this.Yu.forEach(i=>i.Ia(t)),void 0!==t.timeScale&&this.dh.lr(t.timeScale),void 0!==t.localization&&this.dh.X_(t.localization),(t.leftPriceScale||t.rightPriceScale)&&this.Gu.p(),this.ec=this.nc(0),this.rc=this.nc(1),this.Lh()}_c(t,i,s=0){const e=this.Yu[s];if(void 0===e)return;if("left"===t)return p(this.Ps,{leftPriceScale:i}),e.Ia({leftPriceScale:i}),this.Gu.p(),void this.Lh();if("right"===t)return p(this.Ps,{rightPriceScale:i}),e.Ia({rightPriceScale:i}),this.Gu.p(),void this.Lh();const n=this.uc(t,s);null!==n&&(n.$t.lr(i),this.Gu.p())}uc(t,i){const s=this.Yu[i];if(void 0===s)return null;const e=s.Va(t);return null!==e?{Us:s,$t:e}:null}At(){return this.dh}qs(){return this.Yu}cc(){return this.Ct}dc(){return this.Xu}fc(t,i){t.Eo(i),this.mu()}Aa(t){this.Ma=t,this.dh.Aa(this.Ma),this.Yu.forEach(i=>i.Aa(t)),this.mu()}vc(t){1!==this.Yu.length&&(a(t>=0&&t<this.Yu.length,"Invalid pane index"),this.Yu.splice(t,1),this.Lh())}mc(t,i){if(this.Yu.length<2)return;a(t>=0&&t<this.Yu.length,"Invalid pane index");const s=this.Yu[t],e=this.Yu.reduce((t,i)=>t+i.Fa(),0),n=this.Yu.reduce((t,i)=>t+i.qt(),0),r=n-30*(this.Yu.length-1);i=Math.min(r,Math.max(30,i));const h=e/n,l=s.qt();s.La(i*h);let o=i-l,_=this.Yu.length-1;for(const t of this.Yu)if(t!==s){const i=Math.min(r,Math.max(30,t.qt()-o/_));o-=t.qt()-i,_-=1;const s=i*h;t.La(s)}this.Lh()}wc(t,i){a(t>=0&&t<this.Yu.length&&i>=0&&i<this.Yu.length,"Invalid pane index");const s=this.Yu[t],e=this.Yu[i];this.Yu[t]=e,this.Yu[i]=s,this.Lh()}gc(t,i){if(a(t>=0&&t<this.Yu.length&&i>=0&&i<this.Yu.length,"Invalid pane index"),t===i)return;const[s]=this.Yu.splice(t,1);this.Yu.splice(i,0,s),this.Lh()}Ua(t,i,s){t.Ua(i,s)}qa(t,i,s){t.qa(i,s),this.Bh(),this.hc(this.bc(t,2))}Ya(t,i){t.Ya(i),this.hc(this.bc(t,2))}ja(t,i,s){i.Vo()||t.ja(i,s)}Ka(t,i,s){i.Vo()||(t.Ka(i,s),this.Bh(),this.hc(this.bc(t,2)))}Ga(t,i){i.Vo()||(t.Ga(i),this.hc(this.bc(t,2)))}Za(t,i){t.Za(i),this.hc(this.bc(t,2))}Mc(t){this.dh.ra(t)}yc(t,i){const s=this.At();if(s.Gi()||0===i)return;const e=s.ts();t=Math.max(1,Math.min(t,e)),s.Cu(t,i),this.mu()}Sc(t){this.xc(0),this.Cc(t),this.Pc()}Tc(t){this.dh.ha(t),this.mu()}kc(){this.dh.la(),this.ar()}xc(t){this.dh.oa(t)}Cc(t){this.dh.aa(t),this.mu()}Pc(){this.dh._a(),this.ar()}Ks(){return this.ju}Dc(t,i,s,e,n){this.Ct.Rs(t,i);let r=NaN,h=this.dh.du(t,!0);const l=this.dh.Pn();null!==l&&(h=Math.min(Math.max(l.Uh(),h),l.yi()));const o=e.ks(),a=o.Wt();if(null!==a&&(r=o.Ds(i,a)),r=this.tc.bl(r,h,e),this.Ct.Bs(h,r,e),this.Zh(),!n){const n=Ti(e,t,i);this.ac(n&&{n_:n.n_,r_:n.r_,l_:n.l_||null}),this.Xu.p(this.Ct.Lt(),{x:t,y:i},s)}}Ic(t,i,s){const e=s.ks(),n=e.Wt(),r=e.zt(t,u(n)),h=this.dh.tu(i,!0),l=this.dh.Yt(u(h));this.Dc(l,r,null,s,!0)}Vc(t){this.cc().Es(),this.Zh(),t||this.Xu.p(null,null,null)}Bh(){const t=this.Ct.Us();if(null!==t){const i=this.Ct.Ls(),s=this.Ct.As();this.Dc(i,s,null,t)}this.Ct.zs()}Rc(t,i,s){const e=this.dh.Is(0);void 0!==i&&void 0!==s&&this.dh.Tt(i,s);const n=this.dh.Is(0),r=this.dh.uu(),h=this.dh.Pn();if(null!==h&&null!==e&&null!==n){const i=h.Dn(r),l=this.__.key(e)>this.__.key(n),o=null!==t&&t>r&&!l,a=this.dh.O().allowShiftVisibleRangeOnWhitespaceReplacement,_=i&&(!(void 0===s)||a)&&this.dh.O().shiftVisibleRangeOnNewBar;if(o&&!_){const i=t-r;this.dh.de(this.dh.bu()-i)}}this.dh.xu(t)}Eh(t){null!==t&&t.Qa()}$e(t){if(function(t){return t instanceof yi}(t))return t;const i=this.Yu.find(i=>i.Vt().includes(t));return void 0===i?null:i}mu(){this.Yu.forEach(t=>t.Qa()),this.Bh()}m(){this.Yu.forEach(t=>t.m()),this.Yu.length=0,this.Ps.localization.priceFormatter=void 0,this.Ps.localization.percentageFormatter=void 0,this.Ps.localization.timeFormatter=void 0}Fc(){return this.Qu}qe(){return this.Qu.O()}Ra(){return this.Gu}Lc(t,i){const s=this.sc(i);this.Ac(t,s),this.ju.push(t),1===this.ju.length?this.Lh():this.ar()}Bc(t){const i=this.$e(t),s=this.ju.indexOf(t);a(-1!==s,"Series not found");const e=u(i);this.ju.splice(s,1),e.sa(t),t.m&&t.m(),this.dh.G_();const n=this.Yu.length;this.Wc(e),this.Yu.length<n&&this.Lh()}Fh(t,i){const s=u(this.$e(t));s.sa(t,!0),s.ta(t,i,!0)}Bu(){const t=Z.me();t.re(),this.hc(t)}Ec(t){const i=Z.me();i.oe(t),this.hc(i)}ue(){const t=Z.me();t.ue(),this.hc(t)}ce(t){const i=Z.me();i.ce(t),this.hc(i)}de(t){const i=Z.me();i.de(t),this.hc(i)}ae(t){const i=Z.me();i.ae(t),this.hc(i)}he(){const t=Z.me();t.he(),this.hc(t)}Oc(){return this.Ps.rightPriceScale.visible?"right":"left"}zc(t,i){a(i>=0,"Index should be greater or equal to 0");if(i===this.$c(t))return;const s=u(this.$e(t));s.sa(t);const e=this.sc(i);this.Ac(t,e),0===s.Ml().length&&this.Wc(s),this.Lh()}Hc(){return this.rc}q(){return this.ec}Ut(t){const i=this.rc,s=this.ec;if(i===s)return i;if(t=Math.max(0,Math.min(100,Math.round(100*t))),null===this.Zu||this.Zu.wr!==s||this.Zu.gr!==i)this.Zu={wr:s,gr:i,Nc:new Map};else{const i=this.Zu.Nc.get(t);if(void 0!==i)return i}const e=this.Co.it(s,i,t/100);return this.Zu.Nc.set(t,e),e}Uc(t){return this.Yu.indexOf(t)}Xi(){return this.Co}qc(){return this.Yc()}Yc(t){const i=new yi(this.dh,this);this.Yu.push(i);const s=t??this.Yu.length-1,e=Z.we();return e.te(s,{ie:0,se:!0}),this.hc(e),i}sc(t){return a(t>=0,"Index should be greater or equal to 0"),(t=Math.min(this.Yu.length,t))<this.Yu.length?this.Yu[t]:this.Yc(t)}$c(t){return this.Yu.findIndex(i=>i.Oa().includes(t))}bc(t,i){const s=new Z(i);if(null!==t){const e=this.Yu.indexOf(t);s.te(e,{ie:i})}return s}lc(t,i){return void 0===i&&(i=2),this.bc(this.$e(t),i)}hc(t){this.Ju&&this.Ju(t),this.Yu.forEach(t=>t.s_()._r().Tt())}Ac(t,i){const s=t.O().priceScaleId,e=void 0!==s?s:this.Oc();i.ta(t,e),X(e)||t.lr(t.O())}nc(t){const i=this.Ps.layout;return"gradient"===i.background.type?0===t?i.background.topColor:i.background.bottomColor:i.background.color}Wc(t){!t.Ea()&&0===t.Ml().length&&this.Yu.length>1&&this.Yu.splice(this.Uc(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 Hi(t){return!f(t)&&!m(t)}function Ni(t){return f(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"}(Wi||(Wi={})),function(t){t.Solid="solid",t.VerticalGradient="gradient"}(Ei||(Ei={})),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.jc=t,this.Kc=i}u_(t){return qi(t,this.jc,this.Kc)}}class ji{constructor(t){this.Gc=t||"%h:%m:%s"}u_(t){return this.Gc.replace("%h",tt(t.getUTCHours(),2)).replace("%m",tt(t.getUTCMinutes(),2)).replace("%s",tt(t.getUTCSeconds(),2))}}const Ki={Xc:"yyyy-MM-dd",Zc:"%h:%m:%s",Jc:" ",Qc:"default"};class Gi{constructor(t={}){const i={...Ki,...t};this.td=new Yi(i.Xc,i.Qc),this.sd=new ji(i.Zc),this.ed=i.Jc}u_(t){return`${this.td.u_(t)}${this.ed}${this.sd.u_(t)}`}}function Xi(t){return 60*t*60*1e3}function Zi(t){return 60*t*1e3}const Ji=[{nd:(Qi=1,1e3*Qi),rd:10},{nd:Zi(1),rd:20},{nd:Zi(5),rd:21},{nd:Zi(30),rd:22},{nd:Xi(1),rd:30},{nd:Xi(3),rd:31},{nd:Xi(6),rd:32},{nd:Xi(12),rd: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].rd;return 0}function is(t){return t}function ss(t){let i=t;if(m(t)&&(i=ns(t)),!Hi(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{hd:Math.round(s.getTime()/1e3),ld:i}}function es(t){if(!Ni(t))throw new Error("time must be of type isUTCTimestamp");return{hd: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 rs(t){m(t.time)&&(t.time=ns(t.time))}class hs{options(){return this.Ps}setOptions(t){this.Ps=t,this.updateFormatter(t.localization)}preprocessData(t){Array.isArray(t)?function(t){t.forEach(rs)}(t):rs(t)}createConverterToInternalObj(t){return u(function(t){return 0===t.length?null:Hi(t[0].time)||m(t[0].time)?ss:es}(t))}key(t){return"object"==typeof t&&"hd"in t?t.hd:this.key(this.convertHorzItemToInternal(t))}cacheKey(t){const i=t;return void 0===i.ld?new Date(1e3*i.hd).getTime():new Date(Date.UTC(i.ld.year,i.ld.month-1,i.ld.day)).getTime()}convertHorzItemToInternal(t){return Ni(i=t)?es(i):Hi(i)?ss(i):ss(ns(i));var i}updateFormatter(t){if(!this.Ps)return;const i=t.dateFormat;this.Ps.timeScale.timeVisible?this.od=new Gi({Xc:i,Zc:this.Ps.timeScale.secondsVisible?"%h:%m:%s":"%h:%m",Jc:" ",Qc:t.locale}):this.od=new Yi(i,t.locale)}formatHorzItem(t){const i=t;return this.od.u_(new Date(1e3*i.hd))}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.Ps.timeScale.timeVisible,this.Ps.timeScale.secondsVisible),e=this.Ps.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.ld?new Date(1e3*t.hd):new Date(Date.UTC(t.ld.year,t.ld.month-1,t.ld.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(Fi,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.hd,e=null!==s?new Date(1e3*s):null,n=0;for(let r=i;r<t.length;++r){const i=t[r],h=new Date(1e3*is(i.time).hd);null!==e&&(i.timeWeight=ts(h,e)),n+=is(i.time).hd-(s||is(i.time).hd),s=is(i.time).hd,e=h}if(0===i&&t.length>1){const i=Math.ceil(n/(t.length-1)),s=new Date(1e3*(t[0].time.hd-i));t[0].timeWeight=ts(new Date(1e3*t[0].time.hd),s)}}(t,i)}static ad(t){return p({localization:{dateFormat:"dd MMM 'yy"}},t??{})}}const ls="undefined"!=typeof window;function os(){return!!ls&&window.navigator.userAgent.toLowerCase().indexOf("firefox")>-1}function as(){return!!ls&&/iPhone|iPad|iPod/.test(window.navigator.platform)}function _s(t){return t+t%2}function us(t){ls&&void 0!==window.chrome&&t.addEventListener("mousedown",t=>{if(1===t.button)return t.preventDefault(),!1})}class cs{constructor(t,i,s){this._d=0,this.ud=null,this.dd={ut:Number.NEGATIVE_INFINITY,ct:Number.POSITIVE_INFINITY},this.pd=0,this.fd=null,this.vd={ut:Number.NEGATIVE_INFINITY,ct:Number.POSITIVE_INFINITY},this.md=null,this.wd=!1,this.gd=null,this.bd=null,this.Md=!1,this.yd=!1,this.Sd=!1,this.xd=null,this.Cd=null,this.Pd=null,this.Td=null,this.kd=null,this.Dd=null,this.Id=null,this.Vd=0,this.Rd=!1,this.Fd=!1,this.Ld=!1,this.Ad=0,this.Bd=null,this.Wd=!as(),this.Ed=t=>{this.Od(t)},this.zd=t=>{if(this.$d(t)){const i=this.Hd(t);if(++this.pd,this.fd&&this.pd>1){const{Nd:s}=this.Ud(fs(t),this.vd);s<30&&!this.Sd&&this.qd(i,this.jd.Yd),this.Kd()}}else{const i=this.Hd(t);if(++this._d,this.ud&&this._d>1){const{Nd:s}=this.Ud(fs(t),this.dd);s<5&&!this.yd&&this.Gd(i,this.jd.Xd),this.Zd()}}},this.Jd=t,this.jd=i,this.Ps=s,this.Qd()}m(){null!==this.xd&&(this.xd(),this.xd=null),null!==this.Cd&&(this.Cd(),this.Cd=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.Pd&&(this.Pd(),this.Pd=null),this.tp(),this.Zd()}ip(t){this.Td&&this.Td();const i=this.sp.bind(this);if(this.Td=()=>{this.Jd.removeEventListener("mousemove",i)},this.Jd.addEventListener("mousemove",i),this.$d(t))return;const s=this.Hd(t);this.Gd(s,this.jd.ep),this.Wd=!0}Zd(){null!==this.ud&&clearTimeout(this.ud),this._d=0,this.ud=null,this.dd={ut:Number.NEGATIVE_INFINITY,ct:Number.POSITIVE_INFINITY}}Kd(){null!==this.fd&&clearTimeout(this.fd),this.pd=0,this.fd=null,this.vd={ut:Number.NEGATIVE_INFINITY,ct:Number.POSITIVE_INFINITY}}sp(t){if(this.Ld||null!==this.bd)return;if(this.$d(t))return;const i=this.Hd(t);this.Gd(i,this.jd.np),this.Wd=!0}rp(t){const i=ms(t.changedTouches,u(this.Bd));if(null===i)return;if(this.Ad=vs(t),null!==this.Id)return;if(this.Fd)return;this.Rd=!0;const s=this.Ud(fs(i),u(this.bd)),{hp:e,lp:n,Nd:r}=s;if(this.Md||!(r<5)){if(!this.Md){const t=.5*e,i=n>=t&&!this.Ps.op(),s=t>n&&!this.Ps.ap();i||s||(this.Fd=!0),this.Md=!0,this.Sd=!0,this.tp(),this.Kd()}if(!this.Fd){const s=this.Hd(t,i);this.qd(s,this.jd._p),ps(t)}}}up(t){if(0!==t.button)return;const i=this.Ud(fs(t),u(this.gd)),{Nd:s}=i;if(s>=5&&(this.yd=!0,this.Zd()),this.yd){const i=this.Hd(t);this.Gd(i,this.jd.cp)}}Ud(t,i){const s=Math.abs(i.ut-t.ut),e=Math.abs(i.ct-t.ct);return{hp:s,lp:e,Nd:s+e}}dp(t){let i=ms(t.changedTouches,u(this.Bd));if(null===i&&0===t.touches.length&&(i=t.changedTouches[0]),null===i)return;this.Bd=null,this.Ad=vs(t),this.tp(),this.bd=null,this.Dd&&(this.Dd(),this.Dd=null);const s=this.Hd(t,i);if(this.qd(s,this.jd.pp),++this.pd,this.fd&&this.pd>1){const{Nd:t}=this.Ud(fs(i),this.vd);t<30&&!this.Sd&&this.qd(s,this.jd.Yd),this.Kd()}else this.Sd||(this.qd(s,this.jd.fp),this.jd.fp&&ps(t));0===this.pd&&ps(t),0===t.touches.length&&this.wd&&(this.wd=!1,ps(t))}Od(t){if(0!==t.button)return;const i=this.Hd(t);if(this.gd=null,this.Ld=!1,this.kd&&(this.kd(),this.kd=null),os()){this.Jd.ownerDocument.documentElement.removeEventListener("mouseleave",this.Ed)}if(!this.$d(t))if(this.Gd(i,this.jd.vp),++this._d,this.ud&&this._d>1){const{Nd:s}=this.Ud(fs(t),this.dd);s<5&&!this.yd&&this.Gd(i,this.jd.Xd),this.Zd()}else this.yd||this.Gd(i,this.jd.mp)}tp(){null!==this.md&&(clearTimeout(this.md),this.md=null)}wp(t){if(null!==this.Bd)return;const i=t.changedTouches[0];this.Bd=i.identifier,this.Ad=vs(t);const s=this.Jd.ownerDocument.documentElement;this.Sd=!1,this.Md=!1,this.Fd=!1,this.bd=fs(i),this.Dd&&(this.Dd(),this.Dd=null);{const i=this.rp.bind(this),e=this.dp.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.tp(),this.md=setTimeout(this.gp.bind(this,t),240)}const e=this.Hd(t,i);this.qd(e,this.jd.bp),this.fd||(this.pd=0,this.fd=setTimeout(this.Kd.bind(this),500),this.vd=fs(i))}Mp(t){if(0!==t.button)return;const i=this.Jd.ownerDocument.documentElement;os()&&i.addEventListener("mouseleave",this.Ed),this.yd=!1,this.gd=fs(t),this.kd&&(this.kd(),this.kd=null);{const t=this.up.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.Ld=!0,this.$d(t))return;const s=this.Hd(t);this.Gd(s,this.jd.yp),this.ud||(this._d=0,this.ud=setTimeout(this.Zd.bind(this),500),this.dd=fs(t))}Qd(){this.Jd.addEventListener("mouseenter",this.ip.bind(this)),this.Jd.addEventListener("touchcancel",this.tp.bind(this));{const t=this.Jd.ownerDocument,i=t=>{this.jd.Sp&&(t.composed&&this.Jd.contains(t.composedPath()[0])||t.target&&this.Jd.contains(t.target)||this.jd.Sp())};this.Cd=()=>{t.removeEventListener("touchstart",i)},this.xd=()=>{t.removeEventListener("mousedown",i)},t.addEventListener("mousedown",i),t.addEventListener("touchstart",i,{passive:!0})}as()&&(this.Pd=()=>{this.Jd.removeEventListener("dblclick",this.zd)},this.Jd.addEventListener("dblclick",this.zd)),this.Jd.addEventListener("mouseleave",this.xp.bind(this)),this.Jd.addEventListener("touchstart",this.wp.bind(this),{passive:!0}),us(this.Jd),this.Jd.addEventListener("mousedown",this.Mp.bind(this)),this.Cp(),this.Jd.addEventListener("touchmove",()=>{},{passive:!1})}Cp(){void 0===this.jd.Pp&&void 0===this.jd.Tp&&void 0===this.jd.kp||(this.Jd.addEventListener("touchstart",t=>this.Dp(t.touches),{passive:!0}),this.Jd.addEventListener("touchmove",t=>{if(2===t.touches.length&&null!==this.Id&&void 0!==this.jd.Tp){const i=ds(t.touches[0],t.touches[1])/this.Vd;this.jd.Tp(this.Id,i),ps(t)}},{passive:!1}),this.Jd.addEventListener("touchend",t=>{this.Dp(t.touches)}))}Dp(t){1===t.length&&(this.Rd=!1),2!==t.length||this.Rd||this.wd?this.Ip():this.Vp(t)}Vp(t){const i=this.Jd.getBoundingClientRect()||{left:0,top:0};this.Id={ut:(t[0].clientX-i.left+(t[1].clientX-i.left))/2,ct:(t[0].clientY-i.top+(t[1].clientY-i.top))/2},this.Vd=ds(t[0],t[1]),void 0!==this.jd.Pp&&this.jd.Pp(),this.tp()}Ip(){null!==this.Id&&(this.Id=null,void 0!==this.jd.kp&&this.jd.kp())}xp(t){if(this.Td&&this.Td(),this.$d(t))return;if(!this.Wd)return;const i=this.Hd(t);this.Gd(i,this.jd.Rp),this.Wd=!as()}gp(t){const i=ms(t.touches,u(this.Bd));if(null===i)return;const s=this.Hd(t,i);this.qd(s,this.jd.Fp),this.Sd=!0,this.wd=!0}$d(t){return t.sourceCapabilities&&void 0!==t.sourceCapabilities.firesTouchEvents?t.sourceCapabilities.firesTouchEvents:vs(t)<this.Ad+500}qd(t,i){i&&i.call(this.jd,t)}Gd(t,i){i&&i.call(this.jd,t)}Hd(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,Lp:!t.type.startsWith("mouse")&&"contextmenu"!==t.type&&"click"!==t.type,Ap:t.type,Bp:s.target,o_:t.view,Wp:()=>{"touchstart"!==t.type&&ps(t)}}}}function ds(t,i){const s=t.clientX-i.clientX,e=t.clientY-i.clientY;return Math.sqrt(s*s+e*e)}function ps(t){t.cancelable&&t.preventDefault()}function fs(t){return{ut:t.pageX,ct: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 ws{constructor(t,i,s){this.Ep=null,this.Op=null,this.zp=!0,this.$p=null,this.Hp=t,this.Np=t.Up()[i],this.qp=t.Up()[s],this.Yp=document.createElement("tr"),this.Yp.style.height="1px",this.jp=document.createElement("td"),this.jp.style.position="relative",this.jp.style.padding="0",this.jp.style.margin="0",this.jp.setAttribute("colspan","3"),this.Kp(),this.Yp.appendChild(this.jp),this.zp=this.Hp.O().layout.panes.enableResize,this.zp?this.Gp():(this.Ep=null,this.Op=null)}m(){null!==this.Op&&this.Op.m()}Xp(){return this.Yp}Zp(){return t({width:this.Np.Zp().width,height:1})}Jp(){return t({width:this.Np.Jp().width,height:1*window.devicePixelRatio})}Qp(t,i,s){const e=this.Jp();t.fillStyle=this.Hp.O().layout.panes.separatorColor,t.fillRect(i,s,e.width,e.height)}Tt(){this.Kp(),this.Hp.O().layout.panes.enableResize!==this.zp&&(this.zp=this.Hp.O().layout.panes.enableResize,this.zp?this.Gp():(null!==this.Ep&&(this.jp.removeChild(this.Ep.tf),this.jp.removeChild(this.Ep.if),this.Ep=null),null!==this.Op&&(this.Op.m(),this.Op=null)))}Gp(){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.jp.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.jp.appendChild(s);const n={ep:this.sf.bind(this),Rp:this.ef.bind(this),yp:this.nf.bind(this),bp:this.nf.bind(this),cp:this.rf.bind(this),_p:this.rf.bind(this),vp:this.hf.bind(this),pp:this.hf.bind(this)};this.Op=new cs(s,n,{op:()=>!1,ap:()=>!0}),this.Ep={if:s,tf:t}}Kp(){this.jp.style.background=this.Hp.O().layout.panes.separatorColor}sf(t){null!==this.Ep&&(this.Ep.if.style.backgroundColor=this.Hp.O().layout.panes.separatorHoverColor)}ef(t){null!==this.Ep&&null===this.$p&&(this.Ep.if.style.backgroundColor="")}nf(t){if(null===this.Ep)return;const i=this.Np.lf().Fa()+this.qp.lf().Fa(),s=i/(this.Np.Zp().height+this.qp.Zp().height),e=30*s;i<=2*e||(this.$p={af:t.pageY,_f:this.Np.lf().Fa(),uf:i-e,cf:i,df:s,pf:e},this.Ep.tf.style.display="block")}rf(t){const i=this.$p;if(null===i)return;const s=(t.pageY-i.af)*i.df,e=Jt(i._f+s,i.pf,i.uf);this.Np.lf().La(e),this.qp.lf().La(i.cf-e),this.Hp.ti().Lh()}hf(t){null!==this.$p&&null!==this.Ep&&(this.$p=null,this.Ep.tf.style.display="none")}}function gs(t,i){return t.ff-i.ff}function bs(t,i,s){const e=(t.ff-i.ff)/(t.gt-i.gt);return Math.sign(e)*Math.min(Math.abs(e),s)}class Ms{constructor(t,i,s,e){this.vf=null,this.mf=null,this.wf=null,this.gf=null,this.bf=null,this.Mf=0,this.yf=0,this.Sf=t,this.xf=i,this.Cf=s,this.ge=e}Pf(t,i){if(null!==this.vf){if(this.vf.gt===i)return void(this.vf.ff=t);if(Math.abs(this.vf.ff-t)<this.ge)return}this.gf=this.wf,this.wf=this.mf,this.mf=this.vf,this.vf={gt:i,ff:t}}an(t,i){if(null===this.vf||null===this.mf)return;if(i-this.vf.gt>50)return;let s=0;const e=bs(this.vf,this.mf,this.xf),n=gs(this.vf,this.mf),r=[e],h=[n];if(s+=n,null!==this.wf){const t=bs(this.mf,this.wf,this.xf);if(Math.sign(t)===Math.sign(e)){const i=gs(this.mf,this.wf);if(r.push(t),h.push(i),s+=i,null!==this.gf){const t=bs(this.wf,this.gf,this.xf);if(Math.sign(t)===Math.sign(e)){const i=gs(this.wf,this.gf);r.push(t),h.push(i),s+=i}}}}let l=0;for(let t=0;t<r.length;++t)l+=h[t]/s*r[t];Math.abs(l)<this.Sf||(this.bf={ff:t,gt:i},this.yf=l,this.Mf=function(t,i){const s=Math.log(i);return Math.log(1*s/-t)/s}(Math.abs(l),this.Cf))}Vu(t){const i=u(this.bf),s=t-i.gt;return i.ff+this.yf*(Math.pow(this.Cf,s)-1)/Math.log(this.Cf)}Iu(t){return null===this.bf||this.Tf(t)===this.Mf}Tf(t){const i=t-u(this.bf).gt;return Math.min(i,this.Mf)}}class ys{constructor(t,i){this.kf=void 0,this.Df=void 0,this.If=void 0,this.vs=!1,this.Vf=t,this.Rf=i,this.Ff()}Tt(){this.Ff()}Lf(){this.kf&&this.Vf.removeChild(this.kf),this.Df&&this.Vf.removeChild(this.Df),this.kf=void 0,this.Df=void 0}Af(){return this.vs!==this.Bf()||this.If!==this.Wf()}Wf(){return this.Rf.ti().Xi().tt(this.Rf.O().layout.textColor)>160?"dark":"light"}Bf(){return this.Rf.O().layout.attributionLogo}Ef(){const t=new URL(location.href);return t.hostname?"&utm_source="+t.hostname+t.pathname:""}Ff(){this.Af()&&(this.Lf(),this.vs=this.Bf(),this.vs&&(this.If=this.Wf(),this.Df=document.createElement("style"),this.Df.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.kf=document.createElement("a"),this.kf.href=`https://pipsend.com${this.Ef()}`,this.kf.title="Powered by Pipsend Charts",this.kf.id="pipsend-attr-logo",this.kf.target="_blank",this.kf.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.kf.toggleAttribute("data-dark","dark"===this.If),this.Vf.appendChild(this.Df),this.Vf.appendChild(this.kf)))}}function Ss(t,s){const e=u(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 xs(t){t.width=1,t.height=1,t.getContext("2d")?.clearRect(0,0,1,1)}function Cs(t,i,s,e){t.sh&&t.sh(i,s,e)}function Ps(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()?.wl()??"")!==i?[]:s.il?.(t)??[]}}function Ds(t,i,s,e){if(!t.length)return;let n=0;const r=t[0].qt(e,!0);let h=1===i?s/2-(t[0].$i()-r/2):t[0].$i()-r/2-s/2;h=Math.max(0,h);for(let r=1;r<t.length;r++){const l=t[r],o=t[r-1],a=o.qt(e,!1),_=l.$i(),u=o.$i();if(1===i?_>u-a:_<u+a){const e=u-a*i;l.Hi(e);const r=e-i*a/2;if((1===i?r<0:r>s)&&h>0){const e=1===i?-1-r:r-s,l=Math.min(e,h);for(let s=n;s<t.length;s++)t[s].Hi(t[s].$i()+i*l);h-=l}}else n=r,h=1===i?u-a-_:_-(u+a)}}class Is{constructor(i,s,e,n){this.ji=null,this.Of=null,this.zf=!1,this.$f=new rt(200),this.Hf=null,this.Nf=0,this.Uf=!1,this.qf=()=>{this.Uf||this.Pt.Yf().ti().ar()},this.jf=()=>{this.Uf||this.Pt.Yf().ti().ar()},this.Pt=i,this.Ps=s,this.So=s.layout,this.Qu=e,this.Kf="left"===n,this.Gf=ks("normal",n),this.Xf=ks("top",n),this.Zf=ks("bottom",n),this.jp=document.createElement("div"),this.jp.style.height="100%",this.jp.style.overflow="hidden",this.jp.style.width="25px",this.jp.style.left="0",this.jp.style.position="relative",this.Jf=Ss(this.jp,t({width:16,height:16})),this.Jf.subscribeSuggestedBitmapSizeChanged(this.qf);const r=this.Jf.canvasElement;r.style.position="absolute",r.style.zIndex="1",r.style.left="0",r.style.top="0",this.Qf=Ss(this.jp,t({width:16,height:16})),this.Qf.subscribeSuggestedBitmapSizeChanged(this.jf);const h=this.Qf.canvasElement;h.style.position="absolute",h.style.zIndex="2",h.style.left="0",h.style.top="0";const l={yp:this.nf.bind(this),bp:this.nf.bind(this),cp:this.rf.bind(this),_p:this.rf.bind(this),Sp:this.tv.bind(this),vp:this.hf.bind(this),pp:this.hf.bind(this),Xd:this.iv.bind(this),Yd:this.iv.bind(this),ep:this.sv.bind(this),Rp:this.ef.bind(this)};this.Op=new cs(this.Qf.canvasElement,l,{op:()=>!this.Ps.handleScroll.vertTouchDrag,ap:()=>!0})}m(){this.Op.m(),this.Qf.unsubscribeSuggestedBitmapSizeChanged(this.jf),xs(this.Qf.canvasElement),this.Qf.dispose(),this.Jf.unsubscribeSuggestedBitmapSizeChanged(this.qf),xs(this.Jf.canvasElement),this.Jf.dispose(),null!==this.ji&&this.ji.na().u(this),this.ji=null}Xp(){return this.jp}P(){return this.So.fontSize}ev(){const t=this.Qu.O();return this.Hf!==t.T&&(this.$f.Ve(),this.Hf=t.T),t}nv(){if(null===this.ji)return 0;let t=0;const i=this.ev(),s=u(this.Jf.canvasElement.getContext("2d",{colorSpace:this.Pt.Yf().O().layout.colorSpace}));s.save();const e=this.ji.Vl();s.font=this.rv(),e.length>0&&(t=Math.max(this.$f.Ri(s,e[0].Zl),this.$f.Ri(s,e[e.length-1].Zl)));const n=this.hv();for(let i=n.length;i--;){const e=this.$f.Ri(s,n[i].hi());e>t&&(t=e)}const r=this.ji.Wt();if(null!==r&&null!==this.Of&&(2!==(h=this.Ps.crosshair).mode&&h.horzLine.visible&&h.horzLine.labelVisible)){const i=this.ji.Ds(1,r),e=this.ji.Ds(this.Of.height-2,r);t=Math.max(t,this.$f.Ri(s,this.ji.Zi(Math.floor(Math.min(i,e))+.11111111111111,r)),this.$f.Ri(s,this.ji.Zi(Math.ceil(Math.max(i,e))-.11111111111111,r)))}var h;s.restore();const l=t||34;return _s(Math.ceil(i.S+i.C+i.F+i.L+5+l))}lv(t){null!==this.Of&&s(this.Of,t)||(this.Of=t,this.Uf=!0,this.Jf.resizeCanvasElement(t),this.Qf.resizeCanvasElement(t),this.Uf=!1,this.jp.style.width=`${t.width}px`,this.jp.style.height=`${t.height}px`)}ov(){return u(this.Of).width}us(t){this.ji!==t&&(null!==this.ji&&this.ji.na().u(this),this.ji=t,t.na().i(this.co.bind(this),this))}$t(){return this.ji}Ve(){const t=this.Pt.lf();this.Pt.Yf().ti().Za(t,u(this.$t()))}av(t){if(null===this.Of)return;const i={colorSpace:this.Pt.Yf().O().layout.colorSpace};if(1!==t){this._v(),this.Jf.applySuggestedBitmapSize();const t=e(this.Jf,i);null!==t&&(t.useBitmapCoordinateSpace(t=>{this.uv(t),this.cv(t)}),this.Pt.dv(t,this.Zf),this.pv(t),this.Pt.dv(t,this.Gf),this.fv(t))}this.Qf.applySuggestedBitmapSize();const s=e(this.Qf,i);null!==s&&(s.useBitmapCoordinateSpace(({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)}),this.vv(s),this.Pt.dv(s,this.Xf))}Jp(){return this.Jf.bitmapSize}Qp(t,i,s,e){const n=this.Jp();if(n.width>0&&n.height>0&&(t.drawImage(this.Jf.canvasElement,i,s),e)){const e=this.Qf.canvasElement;t.drawImage(e,i,s)}}Tt(){this.ji?.Vl()}nf(t){if(null===this.ji||this.ji.Gi()||!this.Ps.handleScale.axisPressedMouseMove.price)return;const i=this.Pt.Yf().ti(),s=this.Pt.lf();this.zf=!0,i.Ua(s,this.ji,t.localY)}rf(t){if(null===this.ji||!this.Ps.handleScale.axisPressedMouseMove.price)return;const i=this.Pt.Yf().ti(),s=this.Pt.lf(),e=this.ji;i.qa(s,e,t.localY)}tv(){if(null===this.ji||!this.Ps.handleScale.axisPressedMouseMove.price)return;const t=this.Pt.Yf().ti(),i=this.Pt.lf(),s=this.ji;this.zf&&(this.zf=!1,t.Ya(i,s))}hf(t){if(null===this.ji||!this.Ps.handleScale.axisPressedMouseMove.price)return;const i=this.Pt.Yf().ti(),s=this.Pt.lf();this.zf=!1,i.Ya(s,this.ji)}iv(t){this.Ps.handleScale.axisDoubleClickReset.price&&this.Ve()}sv(t){if(null===this.ji)return;!this.Pt.Yf().ti().O().handleScale.axisPressedMouseMove.price||this.ji.En()||this.ji.Fo()||this.mv(1)}ef(t){this.mv(0)}hv(){const t=[],i=null===this.ji?void 0:this.ji;return(s=>{for(let e=0;e<s.length;++e){const n=s[e].Hs(this.Pt.lf(),i);for(let i=0;i<n.length;i++)t.push(n[i])}})(this.Pt.lf().Vt()),t}uv({context:t,bitmapSize:i}){const{width:s,height:e}=i,n=this.Pt.lf().ti(),r=n.q(),h=n.Hc();r===h?W(t,0,0,s,e,r):z(t,0,0,s,e,r,h)}cv({context:t,bitmapSize:i,horizontalPixelRatio:s}){if(null===this.Of||null===this.ji||!this.ji.O().borderVisible)return;t.fillStyle=this.ji.O().borderColor;const e=Math.max(1,Math.floor(this.ev().S*s));let n;n=this.Kf?i.width-e:0,t.fillRect(n,0,e,i.height)}pv(t){if(null===this.Of||null===this.ji)return;const i=this.ji.Vl(),s=this.ji.O(),e=this.ev(),n=this.Kf?this.Of.width-e.C:0;s.borderVisible&&s.ticksVisible&&t.useBitmapCoordinateSpace(({context:t,horizontalPixelRatio:r,verticalPixelRatio:h})=>{t.fillStyle=s.borderColor;const l=Math.max(1,Math.floor(h)),o=Math.floor(.5*h),a=Math.round(e.C*r);t.beginPath();for(const s of i)t.rect(Math.floor(n*r),Math.round(s.Pl*h)-o,a,l);t.fill()}),t.useMediaCoordinateSpace(({context:t})=>{t.font=this.rv(),t.fillStyle=s.textColor??this.So.textColor,t.textAlign=this.Kf?"right":"left",t.textBaseline="middle";const r=this.Kf?Math.round(n-e.F):Math.round(n+e.C+e.F),h=i.map(i=>this.$f.Vi(t,i.Zl));for(let s=i.length;s--;){const e=i[s];t.fillText(e.Zl,r,e.Pl+h[s])}})}_v(){if(null===this.Of||null===this.ji)return;let t=this.Of.height/2;const i=[],s=this.ji.Vt().slice(),e=this.Pt.lf(),n=this.ev();this.ji===e.Ne()&&this.Pt.lf().Vt().forEach(t=>{e.He(t)&&s.push(t)});const r=this.ji.Ml()[0],h=this.ji;s.forEach(s=>{const n=s.Hs(e,h);n.forEach(t=>{t.Hi(null),t.Ni()&&i.push(t)}),r===s&&n.length>0&&(t=n[0].Li())}),i.forEach(t=>t.Hi(t.Li()));this.ji.O().alignLabels&&this.wv(i,n,t)}wv(t,i,s){if(null===this.Of)return;const e=t.filter(t=>t.Li()<=s),n=t.filter(t=>t.Li()>s);e.sort((t,i)=>i.Li()-t.Li()),e.length&&n.length&&n.push(e[0]),n.sort((t,i)=>t.Li()-i.Li());for(const s of t){const t=Math.floor(s.qt(i)/2),e=s.Li();e>-t&&e<t&&s.Hi(t),e>this.Of.height-t&&e<this.Of.height+t&&s.Hi(this.Of.height-t)}Ds(e,1,this.Of.height,i),Ds(n,-1,this.Of.height,i)}fv(t){if(null===this.Of)return;const i=this.hv(),s=this.ev(),e=this.Kf?"right":"left";i.forEach(i=>{if(i.Ui()){i.Dt(u(this.ji)).nt(t,s,this.$f,e)}})}vv(t){if(null===this.Of||null===this.ji)return;const i=this.Pt.Yf().ti(),s=[],e=this.Pt.lf(),n=i.cc().Hs(e,this.ji);n.length&&s.push(n);const r=this.ev(),h=this.Kf?"right":"left";s.forEach(i=>{i.forEach(i=>{i.Dt(u(this.ji)).nt(t,r,this.$f,h)})})}mv(t){this.jp.style.cursor=1===t?"ns-resize":"default"}co(){const t=this.nv();this.Nf<t&&this.Pt.Yf().ti().Lh(),this.Nf=t}rv(){return S(this.So.fontSize,this.So.fontFamily)}}function Vs(t,i){return t.Qh?.(i)??[]}function Rs(t,i){return t.$s?.(i)??[]}function Fs(t,i){return t.cs?.(i)??[]}function Ls(t,i){return t.Xh?.(i)??[]}class As{constructor(i,s){this.Of=t({width:0,height:0}),this.gv=null,this.bv=null,this.Mv=null,this.yv=null,this.Sv=!1,this.xv=new d,this.Cv=new d,this.Pv=0,this.Tv=!1,this.kv=null,this.Dv=!1,this.Iv=null,this.Vv=null,this.Uf=!1,this.qf=()=>{this.Uf||null===this.Rv||this.ss().ar()},this.jf=()=>{this.Uf||null===this.Rv||this.ss().ar()},this.Rf=i,this.Rv=s,this.Rv.i_().i(this.Fv.bind(this),this,!0),this.Lv=document.createElement("td"),this.Lv.style.padding="0",this.Lv.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.Av=document.createElement("td"),this.Av.style.padding="0",this.Bv=document.createElement("td"),this.Bv.style.padding="0",this.Lv.appendChild(e),this.Jf=Ss(e,t({width:16,height:16})),this.Jf.subscribeSuggestedBitmapSizeChanged(this.qf);const n=this.Jf.canvasElement;n.style.position="absolute",n.style.zIndex="1",n.style.left="0",n.style.top="0",this.Qf=Ss(e,t({width:16,height:16})),this.Qf.subscribeSuggestedBitmapSizeChanged(this.jf);const r=this.Qf.canvasElement;r.style.position="absolute",r.style.zIndex="2",r.style.left="0",r.style.top="0",this.Yp=document.createElement("tr"),this.Yp.appendChild(this.Av),this.Yp.appendChild(this.Lv),this.Yp.appendChild(this.Bv),this.Wv(),this.Op=new cs(this.Qf.canvasElement,this,{op:()=>null===this.kv&&!this.Rf.O().handleScroll.vertTouchDrag,ap:()=>null===this.kv&&!this.Rf.O().handleScroll.horzTouchDrag})}m(){null!==this.gv&&this.gv.m(),null!==this.bv&&this.bv.m(),this.Mv=null,this.Qf.unsubscribeSuggestedBitmapSizeChanged(this.jf),xs(this.Qf.canvasElement),this.Qf.dispose(),this.Jf.unsubscribeSuggestedBitmapSizeChanged(this.qf),xs(this.Jf.canvasElement),this.Jf.dispose(),null!==this.Rv&&(this.Rv.i_().u(this),this.Rv.m()),this.Op.m()}lf(){return u(this.Rv)}Ev(t){null!==this.Rv&&this.Rv.i_().u(this),this.Rv=t,null!==this.Rv&&this.Rv.i_().i(As.prototype.Fv.bind(this),this,!0),this.Wv(),this.Rf.Up().indexOf(this)===this.Rf.Up().length-1?(this.Mv=this.Mv??new ys(this.Lv,this.Rf),this.Mv.Tt()):(this.Mv?.Lf(),this.Mv=null)}Yf(){return this.Rf}Xp(){return this.Yp}Wv(){if(null!==this.Rv&&(this.Ov(),0!==this.ss().Ks().length)){if(null!==this.gv){const t=this.Rv.Ha();this.gv.us(u(t))}if(null!==this.bv){const t=this.Rv.Na();this.bv.us(u(t))}}}zv(){null!==this.gv&&this.gv.Tt(),null!==this.bv&&this.bv.Tt()}Fa(){return null!==this.Rv?this.Rv.Fa():0}La(t){this.Rv&&this.Rv.La(t)}ep(t){if(!this.Rv)return;this.$v();const i=t.localX,s=t.localY;this.Hv(i,s,t)}yp(t){this.$v(),this.Nv(),this.Hv(t.localX,t.localY,t)}np(t){if(!this.Rv)return;this.$v();const i=t.localX,s=t.localY;this.Hv(i,s,t)}mp(t){null!==this.Rv&&(this.$v(),this.Uv(t))}Xd(t){null!==this.Rv&&this.qv(this.Cv,t)}Yd(t){this.Xd(t)}cp(t){this.$v(),this.Yv(t),this.Hv(t.localX,t.localY,t)}vp(t){null!==this.Rv&&(this.$v(),this.Tv=!1,this.jv(t))}fp(t){null!==this.Rv&&this.Uv(t)}Fp(t){if(this.Tv=!0,null===this.kv){const i={x:t.localX,y:t.localY};this.Kv(i,i,t)}}Rp(t){null!==this.Rv&&(this.$v(),this.Rv.ti().ac(null),this.Gv())}Xv(){return this.xv}Zv(){return this.Cv}Pp(){this.Pv=1,this.ss().he()}Tp(t,i){if(!this.Rf.O().handleScale.pinch)return;const s=5*(i-this.Pv);this.Pv=i,this.ss().yc(t.ut,s)}bp(t){this.Tv=!1,this.Dv=null!==this.kv,this.Nv();const i=this.ss().cc();null!==this.kv&&i.Rt()&&(this.Iv={x:i.ei(),y:i.ni()},this.kv={x:t.localX,y:t.localY})}_p(t){if(null===this.Rv)return;const i=t.localX,s=t.localY;if(null!==this.kv){this.Dv=!1;const e=u(this.Iv),n=e.x+(i-this.kv.x),r=e.y+(s-this.kv.y);return void this.Hv(n,r,t)}this.Yv(t)}pp(t){0===this.Yf().O().trackingMode.exitMode&&(this.Dv=!0),this.Jv(),this.jv(t)}Ye(t,i){const s=this.Rv;return null===s?null:Ti(s,t,i)}Qv(i,s){u("left"===s?this.gv:this.bv).lv(t({width:i,height:this.Of.height}))}Zp(){return this.Of}lv(t){s(this.Of,t)||(this.Of=t,this.Uf=!0,this.Jf.resizeCanvasElement(t),this.Qf.resizeCanvasElement(t),this.Uf=!1,this.Lv.style.width=t.width+"px",this.Lv.style.height=t.height+"px")}tm(){const t=u(this.Rv);t.$a(t.Ha()),t.$a(t.Na());for(const i of t.Ml())if(t.He(i)){const s=i.$t();null!==s&&t.$a(s),i.zs()}for(const i of t.e_())i.zs()}Jp(){return this.Jf.bitmapSize}Qp(t,i,s,e){const n=this.Jp();if(n.width>0&&n.height>0&&(t.drawImage(this.Jf.canvasElement,i,s),e)){const e=this.Qf.canvasElement;null!==t&&t.drawImage(e,i,s)}}av(t){if(0===t)return;if(null===this.Rv)return;t>1&&this.tm(),null!==this.gv&&this.gv.av(t),null!==this.bv&&this.bv.av(t);const i={colorSpace:this.Rf.O().layout.colorSpace};if(1!==t){this.Jf.applySuggestedBitmapSize();const t=e(this.Jf,i);null!==t&&(t.useBitmapCoordinateSpace(t=>{this.uv(t)}),this.Rv&&(this.im(t,Vs),this.sm(t),this.im(t,Rs),this.im(t,Fs)))}this.Qf.applySuggestedBitmapSize();const s=e(this.Qf,i);null!==s&&(s.useBitmapCoordinateSpace(({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)}),this.nm(s),this.im(s,Ls),this.im(s,Fs))}rm(){return this.gv}hm(){return this.bv}dv(t,i){this.im(t,i)}Fv(){null!==this.Rv&&this.Rv.i_().u(this),this.Rv=null}Uv(t){this.qv(this.xv,t)}qv(t,i){const s=i.localX,e=i.localY;t.v()&&t.p(this.ss().At().du(s),{x:s,y:e},i)}uv({context:t,bitmapSize:i}){const{width:s,height:e}=i,n=this.ss(),r=n.q(),h=n.Hc();r===h?W(t,0,0,s,e,h):z(t,0,0,s,e,r,h)}sm(t){const i=u(this.Rv),s=i.s_()._r().Dt(i);null!==s&&s.nt(t,!1)}nm(t){this.lm(t,Rs,Ps,this.ss().cc())}im(t,i){const s=u(this.Rv),e=s.Vt(),n=s.e_();for(const s of n)this.lm(t,i,Cs,s);for(const s of e)this.lm(t,i,Cs,s);for(const s of n)this.lm(t,i,Ps,s);for(const s of e)this.lm(t,i,Ps,s)}lm(t,i,s,e){const n=u(this.Rv),r=n.ti().oc(),h=null!==r&&r.n_===e,l=null!==r&&h&&void 0!==r.r_?r.r_.Ke:void 0;Ts(i,i=>s(i,t,h,l),e,n)}Ov(){if(null===this.Rv)return;const t=this.Rf,i=this.Rv.Ha().O().visible,s=this.Rv.Na().O().visible;i||null===this.gv||(this.Av.removeChild(this.gv.Xp()),this.gv.m(),this.gv=null),s||null===this.bv||(this.Bv.removeChild(this.bv.Xp()),this.bv.m(),this.bv=null);const e=t.ti().Fc();i&&null===this.gv&&(this.gv=new Is(this,t.O(),e,"left"),this.Av.appendChild(this.gv.Xp())),s&&null===this.bv&&(this.bv=new Is(this,t.O(),e,"right"),this.Bv.appendChild(this.bv.Xp()))}om(t){return t.Lp&&this.Tv||null!==this.kv}am(t){return Math.max(0,Math.min(t,this.Of.width-1))}_m(t){return Math.max(0,Math.min(t,this.Of.height-1))}Hv(t,i,s){this.ss().Dc(this.am(t),this._m(i),s,u(this.Rv))}Gv(){this.ss().Vc()}Jv(){this.Dv&&(this.kv=null,this.Gv())}Kv(t,i,s){this.kv=t,this.Dv=!1,this.Hv(i.x,i.y,s);const e=this.ss().cc();this.Iv={x:e.ei(),y:e.ni()}}ss(){return this.Rf.ti()}jv(t){if(!this.Sv)return;const i=this.ss(),s=this.lf();if(i.Ga(s,s.ks()),this.yv=null,this.Sv=!1,i.Pc(),null!==this.Vv){const t=performance.now(),s=i.At();this.Vv.an(s.bu(),t),this.Vv.Iu(t)||i.ae(this.Vv)}}$v(){this.kv=null}Nv(){if(!this.Rv)return;if(this.ss().he(),document.activeElement!==document.body&&document.activeElement!==document.documentElement)u(document.activeElement).blur();else{const t=document.getSelection();null!==t&&t.removeAllRanges()}!this.Rv.ks().Gi()&&this.ss().At().Gi()}Yv(t){if(null===this.Rv)return;const i=this.ss(),s=i.At();if(s.Gi())return;const e=this.Rf.O(),n=e.handleScroll,r=e.kineticScroll;if((!n.pressedMouseMove||t.Lp)&&(!n.horzTouchDrag&&!n.vertTouchDrag||!t.Lp))return;const h=this.Rv.ks(),l=performance.now();if(null!==this.yv||this.om(t)||(this.yv={x:t.clientX,y:t.clientY,hd:l,um:t.localX,dm:t.localY}),null!==this.yv&&!this.Sv&&(this.yv.x!==t.clientX||this.yv.y!==t.clientY)){if(t.Lp&&r.touch||!t.Lp&&r.mouse){const t=s.wu();this.Vv=new Ms(.2/t,7/t,.997,15/t),this.Vv.Pf(s.bu(),this.yv.hd)}else this.Vv=null;h.Gi()||i.ja(this.Rv,h,t.localY),i.xc(t.localX),this.Sv=!0}this.Sv&&(h.Gi()||i.Ka(this.Rv,h,t.localY),i.Cc(t.localX),null!==this.Vv&&this.Vv.Pf(s.bu(),l))}}class Bs{constructor(i,s,e,n,r){this.xt=!0,this.Of=t({width:0,height:0}),this.qf=()=>this.av(3),this.Kf="left"===i,this.Qu=e.Fc,this.Ps=s,this.pm=n,this.fm=r,this.jp=document.createElement("div"),this.jp.style.width="25px",this.jp.style.height="100%",this.jp.style.overflow="hidden",this.Jf=Ss(this.jp,t({width:16,height:16})),this.Jf.subscribeSuggestedBitmapSizeChanged(this.qf)}m(){this.Jf.unsubscribeSuggestedBitmapSizeChanged(this.qf),xs(this.Jf.canvasElement),this.Jf.dispose()}Xp(){return this.jp}Zp(){return this.Of}lv(t){s(this.Of,t)||(this.Of=t,this.Jf.resizeCanvasElement(t),this.jp.style.width=`${t.width}px`,this.jp.style.height=`${t.height}px`,this.xt=!0)}av(t){if(t<3&&!this.xt)return;if(0===this.Of.width||0===this.Of.height)return;this.xt=!1,this.Jf.applySuggestedBitmapSize();const i=e(this.Jf,{colorSpace:this.Ps.layout.colorSpace});null!==i&&i.useBitmapCoordinateSpace(t=>{this.uv(t),this.cv(t)})}Jp(){return this.Jf.bitmapSize}Qp(t,i,s){const e=this.Jp();e.width>0&&e.height>0&&t.drawImage(this.Jf.canvasElement,i,s)}cv({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:e}){if(!this.pm())return;t.fillStyle=this.Ps.timeScale.borderColor;const n=Math.floor(this.Qu.O().S*s),r=Math.floor(this.Qu.O().S*e),h=this.Kf?i.width-n:0;t.fillRect(h,0,n,r)}uv({context:t,bitmapSize:i}){W(t,0,0,i.width,i.height,this.fm())}}function Ws(t){return i=>i.sl?.(t)??[]}const Es=Ws("normal"),Os=Ws("top"),zs=Ws("bottom");class $s{constructor(i,s){this.vm=null,this.wm=null,this.M=null,this.gm=!1,this.Of=t({width:0,height:0}),this.bm=new d,this.$f=new rt(5),this.Uf=!1,this.qf=()=>{this.Uf||this.Rf.ti().ar()},this.jf=()=>{this.Uf||this.Rf.ti().ar()},this.Rf=i,this.__=s,this.Ps=i.O().layout,this.kf=document.createElement("tr"),this.Mm=document.createElement("td"),this.Mm.style.padding="0",this.ym=document.createElement("td"),this.ym.style.padding="0",this.jp=document.createElement("td"),this.jp.style.height="25px",this.jp.style.padding="0",this.Sm=document.createElement("div"),this.Sm.style.width="100%",this.Sm.style.height="100%",this.Sm.style.position="relative",this.Sm.style.overflow="hidden",this.jp.appendChild(this.Sm),this.Jf=Ss(this.Sm,t({width:16,height:16})),this.Jf.subscribeSuggestedBitmapSizeChanged(this.qf);const e=this.Jf.canvasElement;e.style.position="absolute",e.style.zIndex="1",e.style.left="0",e.style.top="0",this.Qf=Ss(this.Sm,t({width:16,height:16})),this.Qf.subscribeSuggestedBitmapSizeChanged(this.jf);const n=this.Qf.canvasElement;n.style.position="absolute",n.style.zIndex="2",n.style.left="0",n.style.top="0",this.kf.appendChild(this.Mm),this.kf.appendChild(this.jp),this.kf.appendChild(this.ym),this.xm(),this.Rf.ti().Ra().i(this.xm.bind(this),this),this.Op=new cs(this.Qf.canvasElement,this,{op:()=>!0,ap:()=>!this.Rf.O().handleScroll.horzTouchDrag})}m(){this.Op.m(),null!==this.vm&&this.vm.m(),null!==this.wm&&this.wm.m(),this.Qf.unsubscribeSuggestedBitmapSizeChanged(this.jf),xs(this.Qf.canvasElement),this.Qf.dispose(),this.Jf.unsubscribeSuggestedBitmapSizeChanged(this.qf),xs(this.Jf.canvasElement),this.Jf.dispose()}Xp(){return this.kf}Cm(){return this.vm}Pm(){return this.wm}yp(t){if(this.gm)return;this.gm=!0;const i=this.Rf.ti();!i.At().Gi()&&this.Rf.O().handleScale.axisPressedMouseMove.time&&i.Mc(t.localX)}bp(t){this.yp(t)}Sp(){const t=this.Rf.ti();!t.At().Gi()&&this.gm&&(this.gm=!1,this.Rf.O().handleScale.axisPressedMouseMove.time&&t.kc())}cp(t){const i=this.Rf.ti();!i.At().Gi()&&this.Rf.O().handleScale.axisPressedMouseMove.time&&i.Tc(t.localX)}_p(t){this.cp(t)}vp(){this.gm=!1;const t=this.Rf.ti();t.At().Gi()&&!this.Rf.O().handleScale.axisPressedMouseMove.time||t.kc()}pp(){this.vp()}Xd(){this.Rf.O().handleScale.axisDoubleClickReset.time&&this.Rf.ti().ue()}Yd(){this.Xd()}ep(){this.Rf.ti().O().handleScale.axisPressedMouseMove.time&&this.mv(1)}Rp(){this.mv(0)}Zp(){return this.Of}Tm(){return this.bm}km(i,e,n){s(this.Of,i)||(this.Of=i,this.Uf=!0,this.Jf.resizeCanvasElement(i),this.Qf.resizeCanvasElement(i),this.Uf=!1,this.jp.style.width=`${i.width}px`,this.jp.style.height=`${i.height}px`,this.bm.p(i)),null!==this.vm&&this.vm.lv(t({width:e,height:i.height})),null!==this.wm&&this.wm.lv(t({width:n,height:i.height}))}Dm(){const t=this.Im();return Math.ceil(t.S+t.C+t.P+t.A+t.R+t.Vm)}Tt(){this.Rf.ti().At().Vl()}Jp(){return this.Jf.bitmapSize}Qp(t,i,s,e){const n=this.Jp();if(n.width>0&&n.height>0&&(t.drawImage(this.Jf.canvasElement,i,s),e)){const e=this.Qf.canvasElement;t.drawImage(e,i,s)}}av(t){if(0===t)return;const i={colorSpace:this.Ps.colorSpace};if(1!==t){this.Jf.applySuggestedBitmapSize();const s=e(this.Jf,i);null!==s&&(s.useBitmapCoordinateSpace(t=>{this.uv(t),this.cv(t),this.Rm(s,zs)}),this.pv(s),this.Rm(s,Es)),null!==this.vm&&this.vm.av(t),null!==this.wm&&this.wm.av(t)}this.Qf.applySuggestedBitmapSize();const s=e(this.Qf,i);null!==s&&(s.useBitmapCoordinateSpace(({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)}),this.Fm([...this.Rf.ti().Ks(),this.Rf.ti().cc()],s),this.Rm(s,Os))}Rm(t,i){const s=this.Rf.ti().Ks();for(const e of s)Ts(i,i=>Cs(i,t,!1,void 0),e,void 0);for(const e of s)Ts(i,i=>Ps(i,t,!1,void 0),e,void 0)}uv({context:t,bitmapSize:i}){W(t,0,0,i.width,i.height,this.Rf.ti().Hc())}cv({context:t,bitmapSize:i,verticalPixelRatio:s}){if(this.Rf.O().timeScale.borderVisible){t.fillStyle=this.Lm();const e=Math.max(1,Math.floor(this.Im().S*s));t.fillRect(0,0,i.width,e)}}pv(t){const i=this.Rf.ti().At(),s=i.Vl();if(!s||0===s.length)return;const e=this.__.maxTickMarkWeight(s),n=this.Im(),r=i.O();r.borderVisible&&r.ticksVisible&&t.useBitmapCoordinateSpace(({context:t,horizontalPixelRatio:i,verticalPixelRatio:e})=>{t.strokeStyle=this.Lm(),t.fillStyle=this.Lm();const r=Math.max(1,Math.floor(i)),h=Math.floor(.5*i);t.beginPath();const l=Math.round(n.C*e);for(let e=s.length;e--;){const n=Math.round(s[e].coord*i);t.rect(n-h,0,r,l)}t.fill()}),t.useMediaCoordinateSpace(({context:t})=>{const i=n.S+n.C+n.A+n.P/2;t.textAlign="center",t.textBaseline="middle",t.fillStyle=this.N(),t.font=this.rv();for(const n of s)if(n.weight<e){const s=n.needAlignCoordinate?this.Am(t,n.coord,n.label):n.coord;t.fillText(n.label,s,i)}this.Rf.O().timeScale.allowBoldLabels&&(t.font=this.Bm());for(const n of s)if(n.weight>=e){const s=n.needAlignCoordinate?this.Am(t,n.coord,n.label):n.coord;t.fillText(n.label,s,i)}})}Am(t,i,s){const e=this.$f.Ri(t,s),n=e/2,r=Math.floor(i-n)+.5;return r<0?i+=Math.abs(0-r):r+e>this.Of.width&&(i-=Math.abs(this.Of.width-(r+e))),i}Fm(t,i){const s=this.Im();for(const e of t)for(const t of e.ds())t.Dt().nt(i,s)}Lm(){return this.Rf.O().timeScale.borderColor}N(){return this.Ps.textColor}$(){return this.Ps.fontSize}rv(){return S(this.$(),this.Ps.fontFamily)}Bm(){return S(this.$(),this.Ps.fontFamily,"bold")}Im(){null===this.M&&(this.M={S:1,B:NaN,A:NaN,R:NaN,Qi:NaN,C:5,P:NaN,T:"",Ji:new rt,Vm:0});const t=this.M,i=this.rv();if(t.T!==i){const s=this.$();t.P=s,t.T=i,t.A=3*s/12,t.R=3*s/12,t.Qi=9*s/12,t.B=0,t.Vm=4*s/12,t.Ji.Ve()}return this.M}mv(t){this.jp.style.cursor=1===t?"ew-resize":"default"}xm(){const t=this.Rf.ti(),i=t.O();i.leftPriceScale.visible||null===this.vm||(this.Mm.removeChild(this.vm.Xp()),this.vm.m(),this.vm=null),i.rightPriceScale.visible||null===this.wm||(this.ym.removeChild(this.wm.Xp()),this.wm.m(),this.wm=null);const s={Fc:this.Rf.ti().Fc()},e=()=>i.leftPriceScale.borderVisible&&t.At().O().borderVisible,n=()=>t.Hc();i.leftPriceScale.visible&&null===this.vm&&(this.vm=new Bs("left",i,s,e,n),this.Mm.appendChild(this.vm.Xp())),i.rightPriceScale.visible&&null===this.wm&&(this.wm=new Bs("right",i,s,e,n),this.ym.appendChild(this.wm.Xp()))}}const Hs=!!ls&&!!navigator.userAgentData&&navigator.userAgentData.brands.some(t=>t.brand.includes("Chromium"))&&!!ls&&(navigator?.userAgentData?.platform?"Windows"===navigator.userAgentData.platform:navigator.userAgent.toLowerCase().indexOf("win")>=0);class Ns{constructor(t,i,s){var e;this.Wm=[],this.Em=[],this.Om=0,this.eo=0,this.Ma=0,this.zm=0,this.$m=0,this.Hm=null,this.Nm=!1,this.xv=new d,this.Cv=new d,this.Xu=new d,this.Um=null,this.qm=null,this.Vf=t,this.Ps=i,this.__=s,this.kf=document.createElement("div"),this.kf.classList.add("tv-lightweight-charts"),this.kf.style.overflow="hidden",this.kf.style.direction="ltr",this.kf.style.width="100%",this.kf.style.height="100%",(e=this.kf).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.kf.appendChild(this.Ym),this.jm=this.Km.bind(this),Us(this.Ps)&&this.Gm(!0),this.ss=new zi(this.Ju.bind(this),this.Ps,s),this.ti().dc().i(this.Xm.bind(this),this),this.Zm=new $s(this,this.__),this.Ym.appendChild(this.Zm.Xp());const n=i.autoSize&&this.Jm();let r=this.Ps.width,h=this.Ps.height;if(n||0===r||0===h){const i=t.getBoundingClientRect();r=r||i.width,h=h||i.height}this.Qm(r,h),this.tw(),t.appendChild(this.kf),this.iw(),this.ss.At().Lu().i(this.ss.Lh.bind(this.ss),this),this.ss.Ra().i(this.ss.Lh.bind(this.ss),this)}ti(){return this.ss}O(){return this.Ps}Up(){return this.Wm}sw(){return this.Zm}m(){this.Gm(!1),0!==this.Om&&window.cancelAnimationFrame(this.Om),this.ss.dc().u(this),this.ss.At().Lu().u(this),this.ss.Ra().u(this),this.ss.m();for(const t of this.Wm)this.Ym.removeChild(t.Xp()),t.Xv().u(this),t.Zv().u(this),t.m();this.Wm=[];for(const t of this.Em)this.ew(t);this.Em=[],u(this.Zm).m(),null!==this.kf.parentElement&&this.kf.parentElement.removeChild(this.kf),this.Xu.m(),this.xv.m(),this.Cv.m(),this.nw()}Qm(i,s,e=!1){if(this.eo===s&&this.Ma===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.eo=n.height,this.Ma=n.width;const r=this.eo+"px",h=this.Ma+"px";u(this.kf).style.height=r,u(this.kf).style.width=h,this.Ym.style.height=r,this.Ym.style.width=h,e?this.rw(Z.we(),performance.now()):this.ss.Lh()}av(t){void 0===t&&(t=Z.we());for(let i=0;i<this.Wm.length;i++)this.Wm[i].av(t.ne(i).ie);this.Ps.timeScale.visible&&this.Zm.av(t.ee())}lr(t){const i=Us(this.Ps);this.ss.lr(t);const s=Us(this.Ps);s!==i&&this.Gm(s),t.layout?.panes&&this.hw(),this.iw(),this.lw(t)}Xv(){return this.xv}Zv(){return this.Cv}dc(){return this.Xu}ow(t=!1){null!==this.Hm&&(this.rw(this.Hm,performance.now()),this.Hm=null);const i=this.aw(null),s=document.createElement("canvas");s.width=i.width,s.height=i.height;const e=u(s.getContext("2d"));return this.aw(e,t),s}_w(t){if("left"===t&&!this.uw())return 0;if("right"===t&&!this.cw())return 0;if(0===this.Wm.length)return 0;return u("left"===t?this.Wm[0].rm():this.Wm[0].hm()).ov()}dw(){return this.Ps.autoSize&&null!==this.Um}if(){return this.kf}pw(t){this.qm=t,this.qm?this.if().style.setProperty("cursor",t):this.if().style.removeProperty("cursor")}fw(){return this.qm}mw(t){return _(this.Wm[t]).Zp()}hw(){this.Em.forEach(t=>{t.Tt()})}lw(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.nw(),t.autoSize||void 0===t.width&&void 0===t.height||this.Qm(t.width||this.Ma,t.height||this.eo))}aw(i,s){let e=0,n=0;const r=this.Wm[0],h=(t,e)=>{let n=0;for(let r=0;r<this.Wm.length;r++){const h=this.Wm[r],l=u("left"===t?h.rm():h.hm()),o=l.Jp();if(null!==i&&l.Qp(i,e,n,s),n+=o.height,r<this.Wm.length-1){const t=this.Em[r],s=t.Jp();null!==i&&t.Qp(i,e,n),n+=s.height}}};if(this.uw()){h("left",0);e+=u(r.rm()).Jp().width}for(let t=0;t<this.Wm.length;t++){const r=this.Wm[t],h=r.Jp();if(null!==i&&r.Qp(i,e,n,s),n+=h.height,t<this.Wm.length-1){const s=this.Em[t],r=s.Jp();null!==i&&s.Qp(i,e,n),n+=r.height}}if(e+=r.Jp().width,this.cw()){h("right",e);e+=u(r.hm()).Jp().width}const l=(t,s,e)=>{u("left"===t?this.Zm.Cm():this.Zm.Pm()).Qp(u(i),s,e)};if(this.Ps.timeScale.visible){const t=this.Zm.Jp();if(null!==i){let e=0;this.uw()&&(l("left",e,n),e=u(r.rm()).Jp().width),this.Zm.Qp(i,e,n,s),e+=t.width,this.cw()&&l("right",e,n)}n+=t.height}return t({width:e,height:n})}ww(){let i=0,s=0,e=0;for(const t of this.Wm)this.uw()&&(s=Math.max(s,u(t.rm()).nv(),this.Ps.leftPriceScale.minimumWidth)),this.cw()&&(e=Math.max(e,u(t.hm()).nv(),this.Ps.rightPriceScale.minimumWidth)),i+=t.Fa();s=_s(s),e=_s(e);const n=this.Ma,r=this.eo,h=Math.max(n-s-e,0),l=1*this.Em.length,o=this.Ps.timeScale.visible;let a=o?Math.max(this.Zm.Dm(),this.Ps.timeScale.minimumHeight):0;var _;a=(_=a)+_%2;const c=l+a,d=r<c?0:r-c,p=d/i;let f=0;const v=window.devicePixelRatio||1;for(let i=0;i<this.Wm.length;++i){const n=this.Wm[i];n.Ev(this.ss.qs()[i]);let r=0,l=0;l=i===this.Wm.length-1?Math.ceil((d-f)*v)/v:Math.round(n.Fa()*p*v)/v,r=Math.max(l,2),f+=r,n.lv(t({width:h,height:r})),this.uw()&&n.Qv(s,"left"),this.cw()&&n.Qv(e,"right"),n.lf()&&this.ss.fc(n.lf(),r)}this.Zm.km(t({width:o?h:0,height:a}),o?s:0,o?e:0),this.ss.Aa(h),this.zm!==s&&(this.zm=s),this.$m!==e&&(this.$m=e)}Gm(t){t?this.kf.addEventListener("wheel",this.jm,{passive:!1}):this.kf.removeEventListener("wheel",this.jm)}gw(t){switch(t.deltaMode){case t.DOM_DELTA_PAGE:return 120;case t.DOM_DELTA_LINE:return 32}return Hs?1/window.devicePixelRatio:1}Km(t){if(!(0!==t.deltaX&&this.Ps.handleScroll.mouseWheel||0!==t.deltaY&&this.Ps.handleScale.mouseWheel))return;const i=this.gw(t),s=i*t.deltaX/100,e=-i*t.deltaY/100;if(t.cancelable&&t.preventDefault(),0!==e&&this.Ps.handleScale.mouseWheel){const i=Math.sign(e)*Math.min(1,Math.abs(e)),s=t.clientX-this.kf.getBoundingClientRect().left;this.ti().yc(s,i)}0!==s&&this.Ps.handleScroll.mouseWheel&&this.ti().Sc(-80*s)}rw(t,i){const s=t.ee();3===s&&this.bw(),3!==s&&2!==s||(this.Mw(t),this.yw(t,i),this.Zm.Tt(),this.Wm.forEach(t=>{t.zv()}),3===this.Hm?.ee()&&(this.Hm.fe(t),this.bw(),this.Mw(this.Hm),this.yw(this.Hm,i),t=this.Hm,this.Hm=null)),this.av(t)}yw(t,i){for(const s of t.pe())this.ve(s,i)}Mw(t){const i=this.ss.qs();for(let s=0;s<i.length;s++)t.ne(s).se&&i[s].Ja()}ve(t,i){const s=this.ss.At();switch(t.le){case 0:s.Bu();break;case 1:s.Wu(t.Ht);break;case 2:s.ce(t.Ht);break;case 3:s.de(t.Ht);break;case 4:s.Su();break;case 5:t.Ht.Iu(i)||s.de(t.Ht.Vu(i))}}Ju(t){null!==this.Hm?this.Hm.fe(t):this.Hm=t,this.Nm||(this.Nm=!0,this.Om=window.requestAnimationFrame(t=>{if(this.Nm=!1,this.Om=0,null!==this.Hm){const i=this.Hm;this.Hm=null,this.rw(i,t);for(const s of i.pe())if(5===s.le&&!s.Ht.Iu(t)){this.ti().ae(s.Ht);break}}}))}bw(){this.tw()}ew(t){this.Ym.removeChild(t.Xp()),t.m()}tw(){const t=this.ss.qs(),i=t.length,s=this.Wm.length;for(let t=i;t<s;t++){const t=_(this.Wm.pop());this.Ym.removeChild(t.Xp()),t.Xv().u(this),t.Zv().u(this),t.m();const i=this.Em.pop();void 0!==i&&this.ew(i)}for(let e=s;e<i;e++){const i=new As(this,t[e]);if(i.Xv().i(this.Sw.bind(this,i),this),i.Zv().i(this.xw.bind(this,i),this),this.Wm.push(i),e>0){const t=new ws(this,e-1,e);this.Em.push(t),this.Ym.insertBefore(t.Xp(),this.Zm.Xp())}this.Ym.insertBefore(i.Xp(),this.Zm.Xp())}for(let s=0;s<i;s++){const i=t[s],e=this.Wm[s];e.lf()!==i?e.Ev(i):e.Wv()}this.iw(),this.ww()}Cw(t,i,s,e){const n=new Map;if(null!==t){this.ss.Ks().forEach(i=>{const s=i.Xs().$r(t);null!==s&&n.set(i,s)})}let r;if(null!==t){const i=this.ss.At().es(t)?.originalTime;void 0!==i&&(r=i)}const h=this.ti().oc(),l=null!==h&&h.n_ instanceof Kt?h.n_:void 0,o=null!==h&&void 0!==h.r_?h.r_.je:void 0,a=this.Pw(e);return{Tw:r,In:t??void 0,kw:i??void 0,Dw:-1!==a?a:void 0,Iw:l,Vw:n,Rw:o,Fw:s??void 0}}Pw(t){let i=-1;if(t)i=this.Wm.indexOf(t);else{const t=this.ti().cc().Us();null!==t&&(i=this.ti().qs().indexOf(t))}return i}Sw(t,i,s,e){this.xv.p(()=>this.Cw(i,s,e,t))}xw(t,i,s,e){this.Cv.p(()=>this.Cw(i,s,e,t))}Xm(t,i,s){this.pw(this.ti().oc()?.l_??null),this.Xu.p(()=>this.Cw(t,i,s))}iw(){const t=this.Ps.timeScale.visible?"":"none";this.Zm.Xp().style.display=t}uw(){return this.Wm[0].lf().Ha().O().visible}cw(){return this.Wm[0].lf().Na().O().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.Vf,{box:"border-box"}),!0)}nw(){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,r={In:i,gt:t,Ht:[n,n,n,n],Tw:e};return void 0!==s.color&&(r.I=s.color),r}function Ks(t,i,s,e){const n=s.value,r={In:i,gt:t,Ht:[n,n,n,n],Tw:e};return void 0!==s.lineColor&&(r.wt=s.lineColor),void 0!==s.topColor&&(r.wr=s.topColor),void 0!==s.bottomColor&&(r.gr=s.bottomColor),r}function Gs(t,i,s,e){const n=s.value,r={In:i,gt:t,Ht:[n,n,n,n],Tw:e};return void 0!==s.topLineColor&&(r.br=s.topLineColor),void 0!==s.bottomLineColor&&(r.Mr=s.bottomLineColor),void 0!==s.topFillColor1&&(r.yr=s.topFillColor1),void 0!==s.topFillColor2&&(r.Sr=s.topFillColor2),void 0!==s.bottomFillColor1&&(r.Cr=s.bottomFillColor1),void 0!==s.bottomFillColor2&&(r.Pr=s.bottomFillColor2),r}function Xs(t,i,s,e){const n={In:i,gt:t,Ht:[s.open,s.high,s.low,s.close],Tw:e};return void 0!==s.color&&(n.I=s.color),n}function Zs(t,i,s,e){const n={In:i,gt:t,Ht:[s.open,s.high,s.low,s.close],Tw:e};return void 0!==s.color&&(n.I=s.color),void 0!==s.borderColor&&(n.Nt=s.borderColor),void 0!==s.wickColor&&(n.mr=s.wickColor),n}function Js(t,i,s,e,n){const r=_(n)(s),h=Math.max(...r),l=Math.min(...r),o=r[r.length-1],a=[o,h,l,o],{time:u,color:c,...d}=s;return{In:i,gt:t,Ht:a,Tw:e,sn:d,I:c}}function Qs(t){return void 0!==t.Ht}function te(t,i){return void 0!==i.customValues&&(t.Lw=i.customValues),t}function ie(t){return(i,s,e,n,r,h)=>function(t,i){return i?i(t):qs(t)}(e,h)?te({gt:i,In:s,Tw:n},e):te(t(i,s,e,n,r),e)}function se(t){return{Candlestick:ie(Zs),Bar:ie(Xs),Area:ie(Ks),Baseline:ie(Gs),Histogram:ie(js),Line:ie(js),Custom:ie(Js)}[t]}function ee(t){return{In:0,Aw:new Map,Nh:t}}function ne(t,i){if(void 0!==t&&0!==t.length)return{Bw:i.key(t[0].gt),Ww:i.key(t[t.length-1].gt)}}function re(t){let i;return t.forEach(t=>{void 0===i&&(i=t.Tw)}),_(i)}class he{constructor(t){this.Ew=new Map,this.Ow=new Map,this.zw=new Map,this.$w=[],this.__=t}m(){this.Ew.clear(),this.Ow.clear(),this.zw.clear(),this.$w=[]}Hw(t,i){let s=0!==this.Ew.size,e=!1;const n=this.Ow.get(t);if(void 0!==n)if(1===this.Ow.size)s=!1,e=!0,this.Ew.clear();else for(const i of this.$w)i.pointData.Aw.delete(t)&&(e=!0);let r=[];if(0!==i.length){const s=i.map(t=>t.time),n=this.__.createConverterToInternalObj(i),h=se(t.Ir()),l=t.dl(),o=t.fl();r=i.map((i,r)=>{const a=n(i.time),_=this.__.key(a);let u=this.Ew.get(_);void 0===u&&(u=ee(a),this.Ew.set(_,u),e=!0);const c=h(a,u.In,i,s[r],l,o);return u.Aw.set(t,c),c})}s&&this.Nw(),this.Uw(t,r);let h=-1;if(e){const t=[];this.Ew.forEach(i=>{t.push({timeWeight:0,time:i.Nh,pointData:i,originalTime:re(i.Aw)})}),t.sort((t,i)=>this.__.key(t.time)-this.__.key(i.time)),h=this.qw(t)}return this.Yw(t,h,function(t,i,s){const e=ne(t,s),n=ne(i,s);if(void 0!==e&&void 0!==n)return{jw:!1,Wh:e.Ww>=n.Ww&&e.Bw>=n.Bw}}(this.Ow.get(t),n,this.__))}Bc(t){return this.Hw(t,[])}Kw(t,i,s){const e=i;!function(t){void 0===t.Tw&&(t.Tw=t.time)}(e),this.__.preprocessData(i);const n=this.__.createConverterToInternalObj([i])(i.time),r=this.zw.get(t);if(!s&&void 0!==r&&this.__.key(n)<this.__.key(r))throw new Error(`Cannot update oldest data, last time=${r}, new time=${n}`);let h=this.Ew.get(this.__.key(n));if(s&&void 0===h)throw new Error("Cannot update non-existing data point when historicalUpdate is true");const l=void 0===h;void 0===h&&(h=ee(n),this.Ew.set(this.__.key(n),h));const o=se(t.Ir()),a=t.dl(),_=t.fl(),u=o(n,h.In,i,e.Tw,a,_);h.Aw.set(t,u),s?this.Gw(t,u,h.In):this.Xw(t,u);const c={Wh:Qs(u),jw:s};if(!l)return this.Yw(t,-1,c);const d={timeWeight:0,time:h.Nh,pointData:h,originalTime:re(h.Aw)},p=Pt(this.$w,this.__.key(d.time),(t,i)=>this.__.key(t.time)<i);this.$w.splice(p,0,d);for(let t=p;t<this.$w.length;++t)le(this.$w[t].pointData,t);return this.__.fillWeightsForPoints(this.$w,p),this.Yw(t,p,c)}Zw(t,i){const s=this.Ow.get(t);if(void 0===s||i<=0)return[[],this.Jw()];i=Math.min(i,s.length);const e=s.splice(-i).reverse();0===s.length?this.zw.delete(t):this.zw.set(t,s[s.length-1].gt);for(const i of e){const s=this.Ew.get(this.__.key(i.gt));if(s&&(s.Aw.delete(t),0===s.Aw.size)){this.Ew.delete(this.__.key(s.Nh)),this.$w.splice(s.In,1);for(let t=s.In;t<this.$w.length;++t)le(this.$w[t].pointData,t)}}return[e,this.Yw(t,this.$w.length-1,{jw:!1,Wh:!1})]}Xw(t,i){let s=this.Ow.get(t);void 0===s&&(s=[],this.Ow.set(t,s));const e=0!==s.length?s[s.length-1]:null;null===e||this.__.key(i.gt)>this.__.key(e.gt)?Qs(i)&&s.push(i):Qs(i)?s[s.length-1]=i:s.splice(-1,1),this.zw.set(t,i.gt)}Gw(t,i,s){const e=this.Ow.get(t);if(void 0===e)return;const n=Pt(e,s,(t,i)=>t.In<i);Qs(i)?e[n]=i:e.splice(n,1)}Uw(t,i){0!==i.length?(this.Ow.set(t,i.filter(Qs)),this.zw.set(t,i[i.length-1].gt)):(this.Ow.delete(t),this.zw.delete(t))}Nw(){for(const t of this.$w)0===t.pointData.Aw.size&&this.Ew.delete(this.__.key(t.time))}qw(t){let i=-1;for(let s=0;s<this.$w.length&&s<t.length;++s){const e=this.$w[s],n=t[s];if(this.__.key(e.time)!==this.__.key(n.time)){i=s;break}n.timeWeight=e.timeWeight,le(n.pointData,s)}if(-1===i&&this.$w.length!==t.length&&(i=Math.min(this.$w.length,t.length)),-1===i)return-1;for(let s=i;s<t.length;++s)le(t[s].pointData,s);return this.__.fillWeightsForPoints(t,i),this.$w=t,i}Qw(){if(0===this.Ow.size)return null;let t=0;return this.Ow.forEach(i=>{0!==i.length&&(t=Math.max(t,i[i.length-1].In))}),t}Yw(t,i,s){const e=this.Jw();if(-1!==i)this.Ow.forEach((i,n)=>{e.Oa.set(n,{sn:i,tg:n===t?s:void 0})}),this.Ow.has(t)||e.Oa.set(t,{sn:[],tg:s}),e.At.ig=this.$w,e.At.sg=i;else{const i=this.Ow.get(t);e.Oa.set(t,{sn:i||[],tg:s})}return e}Jw(){return{Oa:new Map,At:{uu:this.Qw()}}}}function le(t,i){t.In=i,t.Aw.forEach(t=>{t.In=i})}function oe(t,i){return t.gt<i}function ae(t,i){return i<t.gt}function _e(t,i,s){const e=i.Uh(),n=i.yi(),r=Pt(t,e,oe),h=Tt(t,n,ae);if(!s)return{from:r,to:h};let l=r,o=h;return r>0&&r<t.length&&t[r].gt>=e&&(l=r-1),h>0&&h<t.length&&t[h-1].gt<=n&&(o=h+1),{from:l,to:o}}class ue{constructor(t,i,s){this.eg=!0,this.ng=!0,this.rg=!0,this.hg=[],this.lg=null,this.Ze=t,this.Je=i,this.og=s}Tt(t){this.eg=!0,"data"===t&&(this.ng=!0),"options"===t&&(this.rg=!0)}Dt(){return this.Ze.Rt()?(this.ag(),null===this.lg?null:this._g):null}ug(){this.hg=this.hg.map(t=>({...t,...this.Ze.Ih().Vr(t.gt)}))}cg(){this.lg=null}ag(){this.ng&&(this.dg(),this.ng=!1),this.rg&&(this.ug(),this.rg=!1),this.eg&&(this.pg(),this.eg=!1)}pg(){const t=this.Ze.$t(),i=this.Je.At();if(this.cg(),i.Gi()||t.Gi())return;const s=i.Pn();if(null===s)return;if(0===this.Ze.Xs().Wr())return;const e=this.Ze.Wt();null!==e&&(this.lg=_e(this.hg,s,this.og),this.fg(t,i,e.Ht),this.vg())}}class ce{constructor(t,i){this.mg=t,this.ji=i}nt(t,i,s){this.mg.draw(t,this.ji,i,s)}}class de extends ue{constructor(t,i,s){super(t,i,!1),this.eh=s,this._g=new ce(this.eh.renderer(),i=>{const s=t.Wt();return null===s?null:t.$t().zt(i,s.Ht)})}pl(t){return this.eh.priceValueBuilder(t)}vl(t){return this.eh.isWhitespace(t)}dg(){const t=this.Ze.Ih();this.hg=this.Ze.Xs().Nr().map(i=>({gt:i.In,ut:NaN,...t.Vr(i.In),wg:i.sn}))}fg(t,i){i.cu(this.hg,M(this.lg))}vg(){this.eh.update({bars:this.hg.map(pe),barSpacing:this.Je.At().wu(),visibleRange:this.lg},this.Ze.O())}}function pe(t){return{x:t.ut,time:t.gt,originalData:t.wg,barColor:t.dr}}const fe={color:"#2196f3"},ve=(t,i,s)=>{const e=c(s);return new de(t,i,e)};function me(t){const i={value:t.Ht[3],time:t.Tw};return void 0!==t.Lw&&(i.customValues=t.Lw),i}function we(t){const i=me(t);return void 0!==t.I&&(i.color=t.I),i}function ge(t){const i=me(t);return void 0!==t.wt&&(i.lineColor=t.wt),void 0!==t.wr&&(i.topColor=t.wr),void 0!==t.gr&&(i.bottomColor=t.gr),i}function be(t){const i=me(t);return void 0!==t.br&&(i.topLineColor=t.br),void 0!==t.Mr&&(i.bottomLineColor=t.Mr),void 0!==t.yr&&(i.topFillColor1=t.yr),void 0!==t.Sr&&(i.topFillColor2=t.Sr),void 0!==t.Cr&&(i.bottomFillColor1=t.Cr),void 0!==t.Pr&&(i.bottomFillColor2=t.Pr),i}function Me(t){const i={open:t.Ht[0],high:t.Ht[1],low:t.Ht[2],close:t.Ht[3],time:t.Tw};return void 0!==t.Lw&&(i.customValues=t.Lw),i}function ye(t){const i=Me(t);return void 0!==t.I&&(i.color=t.I),i}function Se(t){const i=Me(t),{I:s,Nt:e,mr:n}=t;return void 0!==s&&(i.color=s),void 0!==e&&(i.borderColor=e),void 0!==n&&(i.wickColor=n),i}function xe(t){return{Area:ge,Line:we,Baseline:be,Histogram:we,Bar:ye,Candlestick:Se,Custom:Ce}[t]}function Ce(t){const i=t.Tw;return{...t.sn,time:i}}const Pe={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:y,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},Ie={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:Pe,grid:Te,overlayPriceScales:{...De},leftPriceScale:{...De,visible:!1},rightPriceScale:{...De,visible:!0},timeScale:Ie,localization:{locale:ls?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 Re{constructor(t,i,s){this.Hp=t,this.gg=i,this.bg=s??0}applyOptions(t){this.Hp.ti()._c(this.gg,t,this.bg)}options(){return this.ji().O()}width(){return X(this.gg)?this.Hp._w(this.gg):0}setVisibleRange(t){this.setAutoScale(!1),this.ji().No(new mt(t.from,t.to))}getVisibleRange(){let t,i,s=this.ji().tr();if(null===s)return null;if(this.ji().Ql()){const e=this.ji().va(),n=$i(e);s=ci(s,this.ji().so()),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 u(this.Hp.ti().uc(this.gg,this.bg)).$t}}class Fe{constructor(t,i,s,e){this.Hp=t,this.Pt=s,this.Mg=i,this.yg=e}getHeight(){return this.Pt.qt()}setHeight(t){const i=this.Hp.ti(),s=i.Uc(this.Pt);i.mc(s,t)}getStretchFactor(){return this.Pt.Fa()}setStretchFactor(t){this.Pt.La(t),this.Hp.ti().Lh()}paneIndex(){return this.Hp.ti().Uc(this.Pt)}moveTo(t){const i=this.paneIndex();i!==t&&(a(t>=0&&t<this.Hp.Up().length,"Invalid pane index"),this.Hp.ti().gc(i,t))}getSeries(){return this.Pt.Oa().map(t=>this.Mg(t))??[]}getHTMLElement(){const t=this.Hp.Up();return t&&0!==t.length&&t[this.paneIndex()]?t[this.paneIndex()].Xp():null}attachPrimitive(t){this.Pt.ul(t),t.attached&&t.attached({chart:this.yg,requestUpdate:()=>this.Pt.ti().Lh()})}detachPrimitive(t){this.Pt.cl(t)}priceScale(t){if(null===this.Pt.Va(t))throw new Error(`Cannot find price scale with id: ${t}`);return new Re(this.Hp,t,this.paneIndex())}setPreserveEmptyPane(t){this.Pt.Wa(t)}preserveEmptyPane(){return this.Pt.Ea()}addCustomSeries(t,i={},s=0){return this.yg.addCustomSeries(t,i,s)}addSeries(t,i={}){return this.yg.addSeries(t,i,this.paneIndex())}}const Le={color:"#FF0000",price:0,lineStyle:2,lineWidth:1,lineVisible:!0,axisLabelVisible:!0,title:"",axisLabelColor:"",axisLabelTextColor:""};class Ae{constructor(t){this.sr=t}applyOptions(t){this.sr.lr(t)}options(){return this.sr.O()}Sg(){return this.sr}}class Be{constructor(t,i,s,e,n,r){this.xg=new d,this.Ze=t,this.Cg=i,this.Pg=s,this.__=n,this.yg=e,this.Tg=r}m(){this.xg.m()}priceFormatter(){return this.Ze.rl()}priceToCoordinate(t){const i=this.Ze.Wt();return null===i?null:this.Ze.$t().zt(t,i.Ht)}coordinateToPrice(t){const i=this.Ze.Wt();return null===i?null:this.Ze.$t().Ds(t,i.Ht)}barsInLogicalRange(t){if(null===t)return null;const i=new Ri(new Di(t.from,t.to)).T_(),s=this.Ze.Xs();if(s.Gi())return null;const e=s.$r(i.Uh(),1),n=s.$r(i.yi(),-1),r=u(s.Er()),h=u(s.Gs());if(null!==e&&null!==n&&e.In>n.In)return{barsBefore:t.from-r,barsAfter:h-t.to};const l={barsBefore:null===e||e.In===r?t.from-r:e.In-r,barsAfter:null===n||n.In===h?h-t.to:h-n.In};return null!==e&&null!==n&&(l.from=e.Tw,l.to=n.Tw),l}setData(t){this.__,this.Ze.Ir(),this.Cg.kg(this.Ze,t),this.Dg("full")}update(t,i=!1){this.Ze.Ir(),this.Cg.Ig(this.Ze,t,i),this.Dg("update")}pop(t=1){const i=this.Cg.Vg(this.Ze,t);0!==i.length&&this.Dg("update");const s=xe(this.seriesType());return i.map(t=>s(t))}dataByIndex(t,i){const s=this.Ze.Xs().$r(t,i);if(null===s)return null;return xe(this.seriesType())(s)}data(){const t=xe(this.seriesType());return this.Ze.Xs().Nr().map(i=>t(i))}subscribeDataChanged(t){this.xg.i(t)}unsubscribeDataChanged(t){this.xg._(t)}applyOptions(t){this.Ze.lr(t)}options(){return g(this.Ze.O())}priceScale(){return this.Pg.priceScale(this.Ze.$t().wl(),this.getPane().paneIndex())}createPriceLine(t){const i=p(g(Le),t),s=this.Ze.Oh(i);return new Ae(s)}removePriceLine(t){this.Ze.zh(t.Sg())}priceLines(){return this.Ze.$h().map(t=>new Ae(t))}seriesType(){return this.Ze.Ir()}lastValueData(t){const i=this.Ze.Tn(t);return i.kn?{noData:!0}:{noData:!1,price:i.bt,color:i.I}}attachPrimitive(t){this.Ze.ul(t),t.attached&&t.attached({chart:this.yg,series:this,requestUpdate:()=>this.Ze.ti().Lh(),horzScaleBehavior:this.__})}detachPrimitive(t){this.Ze.cl(t),t.detached&&t.detached(),this.Ze.ti().Lh()}getPane(){const t=this.Ze,i=u(this.Ze.ti().$e(t));return this.Tg(i)}moveToPane(t){this.Ze.ti().zc(this.Ze,t)}seriesOrder(){const t=this.Ze.ti().$e(this.Ze);return null===t?-1:t.Oa().indexOf(this.Ze)}setSeriesOrder(t){const i=this.Ze.ti().$e(this.Ze);null!==i&&i.t_(this.Ze,t)}Dg(t){this.xg.v()&&this.xg.p(t)}}class We{constructor(t,i,s){this.Rg=new d,this.W_=new d,this.bm=new d,this.ss=t,this.dh=t.At(),this.Zm=i,this.dh.Ru().i(this.Fg.bind(this)),this.dh.Fu().i(this.Lg.bind(this)),this.Zm.Tm().i(this.Ag.bind(this)),this.__=s}m(){this.dh.Ru().u(this),this.dh.Fu().u(this),this.Zm.Tm().u(this),this.Rg.m(),this.W_.m(),this.bm.m()}scrollPosition(){return this.dh.bu()}scrollToPosition(t,i){i?this.dh.Du(t,1e3):this.ss.de(t)}scrollToRealTime(){this.dh.ku()}getVisibleRange(){const t=this.dh.nu();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.dh.ou(i);this.ss.Ec(s)}getVisibleLogicalRange(){const t=this.dh.eu();return null===t?null:{from:t.Uh(),to:t.yi()}}setVisibleLogicalRange(t){a(t.from<=t.to,"The from index cannot be after the to index."),this.ss.Ec(t)}resetTimeScale(){this.ss.ue()}fitContent(){this.ss.Bu()}logicalToCoordinate(t){const i=this.ss.At();return i.Gi()?null:i.Yt(t)}coordinateToLogical(t){return this.dh.Gi()?null:this.dh.du(t)}timeToIndex(t,i){const s=this.__.convertHorzItemToInternal(t);return this.dh.tu(s,i)}timeToCoordinate(t){const i=this.timeToIndex(t,!1);return null===i?null:this.dh.Yt(i)}coordinateToTime(t){const i=this.ss.At(),s=i.du(t),e=i.es(s);return null===e?null:e.originalTime}width(){return this.Zm.Zp().width}height(){return this.Zm.Zp().height}subscribeVisibleTimeRangeChange(t){this.Rg.i(t)}unsubscribeVisibleTimeRangeChange(t){this.Rg._(t)}subscribeVisibleLogicalRangeChange(t){this.W_.i(t)}unsubscribeVisibleLogicalRangeChange(t){this.W_._(t)}subscribeSizeChange(t){this.bm.i(t)}unsubscribeSizeChange(t){this.bm._(t)}applyOptions(t){this.dh.lr(t)}options(){return{...g(this.dh.O()),barSpacing:this.dh.wu()}}Fg(){this.Rg.v()&&this.Rg.p(this.getVisibleRange())}Lg(){this.W_.v()&&this.W_.p(this.getVisibleLogicalRange())}Ag(t){this.bm.p(t.width,t.height)}}function Ee(t){return function(t){if(w(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;w(i)&&(t.handleScale.axisPressedMouseMove={time:i,price:i}),w(s)&&(t.handleScale.axisDoubleClickReset={time:s,price:s})}const i=t.handleScroll;w(i)&&(t.handleScroll={horzTouchDrag:i,vertTouchDrag:i,mouseWheel:i,pressedMouseMove:i})}(t),t}class Oe{constructor(t,i,s){this.Bg=new Map,this.Wg=new Map,this.Eg=new d,this.Og=new d,this.zg=new d,this.Yu=new WeakMap,this.$g=new he(i);const e=void 0===s?g(Ve()):p(g(Ve()),Ee(s));this.Hg=i,this.Hp=new Ns(t,e,i),this.Hp.Xv().i(t=>{this.Eg.v()&&this.Eg.p(this.Ng(t()))},this),this.Hp.Zv().i(t=>{this.Og.v()&&this.Og.p(this.Ng(t()))},this),this.Hp.dc().i(t=>{this.zg.v()&&this.zg.p(this.Ng(t()))},this);const n=this.Hp.ti();this.Ug=new We(n,this.Hp.sw(),this.Hg)}remove(){this.Hp.Xv().u(this),this.Hp.Zv().u(this),this.Hp.dc().u(this),this.Ug.m(),this.Hp.m(),this.Bg.clear(),this.Wg.clear(),this.Eg.m(),this.Og.m(),this.zg.m(),this.$g.m()}resize(t,i,s){this.autoSizeActive()||this.Hp.Qm(t,i,s)}addCustomSeries(t,i={},s=0){const e=(t=>({type:"Custom",isBuiltIn:!1,defaultOptions:{...fe,...t.defaultOptions()},qg:ve,Yg:t}))(c(t));return this.jg(e,i,s)}addSeries(t,i={},s=0){return this.jg(t,i,s)}removeSeries(t){const i=_(this.Bg.get(t)),s=this.$g.Bc(i);this.Hp.ti().Bc(i),this.Kg(s),this.Bg.delete(t),this.Wg.delete(i)}kg(t,i){this.Kg(this.$g.Hw(t,i))}Ig(t,i,s){this.Kg(this.$g.Kw(t,i,s))}Vg(t,i){const[s,e]=this.$g.Zw(t,i);return 0!==s.length&&this.Kg(e),s}subscribeClick(t){this.Eg.i(t)}unsubscribeClick(t){this.Eg._(t)}subscribeCrosshairMove(t){this.zg.i(t)}unsubscribeCrosshairMove(t){this.zg._(t)}subscribeDblClick(t){this.Og.i(t)}unsubscribeDblClick(t){this.Og._(t)}priceScale(t,i=0){return new Re(this.Hp,t,i)}timeScale(){return this.Ug}applyOptions(t){this.Hp.lr(Ee(t))}options(){return this.Hp.O()}takeScreenshot(t=!1,i=!1){let s,e;try{i||(s=this.Hp.ti().O().crosshair.mode,this.Hp.lr({crosshair:{mode:2}})),e=this.Hp.ow(t)}finally{i||void 0===s||this.Hp.ti().lr({crosshair:{mode:s}})}return e}addPane(t=!1){const i=this.Hp.ti().qc();return i.Wa(t),this.Gg(i)}removePane(t){this.Hp.ti().vc(t)}swapPanes(t,i){this.Hp.ti().wc(t,i)}autoSizeActive(){return this.Hp.dw()}chartElement(){return this.Hp.if()}panes(){return this.Hp.ti().qs().map(t=>this.Gg(t))}paneSize(t=0){const i=this.Hp.mw(t);return{height:i.height,width:i.width}}setCrosshairPosition(t,i,s){const e=this.Bg.get(s);if(void 0===e)return;const n=this.Hp.ti().$e(e);null!==n&&this.Hp.ti().Ic(t,i,n)}clearCrosshairPosition(){this.Hp.ti().Vc(!0)}horzBehaviour(){return this.Hg}jg(t,i={},s=0){a(void 0!==t.qg),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=p(g(n),g(t.defaultOptions),i),r=t.qg,h=new Kt(this.Hp.ti(),t.type,e,r,t.Yg);this.Hp.ti().Lc(h,s);const l=new Be(h,this,this,this,this.Hg,t=>this.Gg(t));return this.Bg.set(l,h),this.Wg.set(h,l),l}Kg(t){const i=this.Hp.ti();i.Rc(t.At.uu,t.At.ig,t.At.sg),t.Oa.forEach((t,i)=>i.lt(t.sn,t.tg)),i.At().G_(),i.mu()}Xg(t){return _(this.Wg.get(t))}Ng(t){const i=new Map;t.Vw.forEach((t,s)=>{const e=s.Ir(),n=xe(e)(t);if("Custom"!==e)a(Ys(n));else{const t=s.fl();a(!t||!1===t(n))}i.set(this.Xg(s),n)});const s=void 0!==t.Iw&&this.Wg.has(t.Iw)?this.Xg(t.Iw):void 0;return{time:t.Tw,logical:t.In,point:t.kw,paneIndex:t.Dw,hoveredSeries:s,hoveredObjectId:t.Rw,seriesData:i,sourceEvent:t.Fw}}Gg(t){let i=this.Yu.get(t);return i||(i=new Fe(this.Hp,t=>this.Xg(t),t,this),this.Yu.set(t,i)),i}}function ze(t){if(m(t)){const i=document.getElementById(t);return a(null!==i,`Cannot find element in DOM with id=${t}`),i}return t}function $e(t,i,s){const e=ze(t),n=new Oe(e,i,s);return i.setOptions(n.options()),n}function He(t,i){return $e(t,new hs,hs.ad(i))}function Ne(){return hs}function Ue(t,i){const s=t.timeScale(),e=i.dataByIndex(Number.MAX_SAFE_INTEGER,-1);if(!e||"number"!=typeof e.time)return null;const n=s.timeToCoordinate(e.time);if(null===n)return null;const r=s.coordinateToLogical(n);if(null===r)return null;const h=i.dataByIndex(r-1,-1);return!h||"number"!=typeof h.time||h.time>=e.time?null:{gt:e.time,Gl:r,Zg:e.time-h.time}}function qe(t,i,s){const e=t.timeScale(),n=e.coordinateToTime(s);if(null!==n)return n;const r=e.coordinateToLogical(s);if(null===r)return null;const h=Ue(t,i);if(null===h)return null;const l=r-h.Gl;return Math.round(h.gt+l*h.Zg)}function Ye(t,i,s){if(null==s)return null;const e=t.timeScale(),n=e.timeToCoordinate(s);if(null!==n)return n;if("number"!=typeof s)return null;const r=Ue(t,i);if(null===r)return null;const h=r.Gl+(s-r.gt)/r.Zg,l=e.logicalToCoordinate(h);return null===l?null:l}class je extends ue{constructor(t,i){super(t,i,!0)}fg(t,i,s){i.cu(this.hg,M(this.lg)),t.Yo(this.hg,s,M(this.lg))}Jg(t,i){return{gt:t,bt:i,ut:NaN,ct:NaN}}dg(){const t=this.Ze.Ih();this.hg=this.Ze.Xs().Nr().map(i=>{const s=i.Ht[3];return this.Qg(i.In,s,t)})}}function Ke(t,i,s,e,n,r,h){if(0===i.length||e.from>=i.length||e.to<=0)return;const{context:l,horizontalPixelRatio:o,verticalPixelRatio:a}=t,_=i[e.from];let u=r(t,_),c=_;if(e.to-e.from<2){const i=n/2;l.beginPath();const s={ut:_.ut-i,ct:_.ct},e={ut:_.ut+i,ct:_.ct};l.moveTo(s.ut*o,s.ct*a),l.lineTo(e.ut*o,e.ct*a),h(t,u,s,e)}else{const n=(i,s)=>{h(t,u,c,s),l.beginPath(),u=i,c=s};let d=c;l.beginPath(),l.moveTo(_.ut*o,_.ct*a);for(let h=e.from+1;h<e.to;++h){d=i[h];const e=r(t,d);switch(s){case 0:l.lineTo(d.ut*o,d.ct*a);break;case 1:l.lineTo(d.ut*o,i[h-1].ct*a),e!==u&&(n(e,d),l.lineTo(d.ut*o,i[h-1].ct*a)),l.lineTo(d.ut*o,d.ct*a);break;case 2:{const[t,s]=Je(i,h-1,h);l.bezierCurveTo(t.ut*o,t.ct*a,s.ut*o,s.ct*a,d.ut*o,d.ct*a);break}}1!==s&&e!==u&&(n(e,d),l.moveTo(d.ut*o,d.ct*a))}(c!==d||c===d&&1===s)&&h(t,u,c,d)}}const Ge=6;function Xe(t,i){return{ut:t.ut-i.ut,ct:t.ct-i.ct}}function Ze(t,i){return{ut:t.ut/i,ct:t.ct/i}}function Je(t,i,s){const e=Math.max(0,i-1),n=Math.min(t.length-1,s+1);var r,h;return[(r=t[i],h=Ze(Xe(t[s],t[e]),Ge),{ut:r.ut+h.ut,ct:r.ct+h.ct}),Xe(t[s],Ze(Xe(t[n],t[i]),Ge))]}function Qe(t,i){const s=t.context;s.strokeStyle=i,s.stroke()}class tn extends D{constructor(){super(...arguments),this.ht=null}lt(t){this.ht=t}rt(t){if(null===this.ht)return;const{_t:i,ot:s,tb:e,ib:n,dt:r,Xt:h,sb:o}=this.ht;if(null===s)return;const a=t.context;a.lineCap="butt",a.lineWidth=r*t.verticalPixelRatio,l(a,h),a.lineJoin="round";const _=this.eb.bind(this);void 0!==n&&Ke(t,i,n,s,e,_,Qe),o&&function(t,i,s,e,n){if(e.to-e.from<=0)return;const{horizontalPixelRatio:r,verticalPixelRatio:h,context:l}=t;let o=null;const a=Math.max(1,Math.floor(r))%2/2,_=s*h+a;for(let s=e.to-1;s>=e.from;--s){const e=i[s];if(e){const i=n(t,e);i!==o&&(l.beginPath(),null!==o&&l.fill(),l.fillStyle=i,o=i);const s=Math.round(e.ut*r)+a,u=e.ct*h;l.moveTo(s,u),l.arc(s,u,_,0,2*Math.PI)}}l.fill()}(t,i,o,s,_)}}class sn extends tn{eb(t,i){return i.wt}}class en extends je{constructor(){super(...arguments),this._g=new sn}Qg(t,i,s){return{...this.Jg(t,i),...s.Vr(t)}}vg(){const t=this.Ze.O(),i={_t:this.hg,Xt:t.lineStyle,ib:t.lineVisible?t.lineType:void 0,dt:t.lineWidth,sb:t.pointMarkersVisible?t.pointMarkersRadius||t.lineWidth/2+2:void 0,ot:this.lg,tb:this.Je.At().wu()};this._g.lt(i)}}const nn={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},qg:(t,i)=>new en(t,i)};function rn(t,i){return t.weight>i.weight?t:i}function hn(t){return t}class ln{constructor(){this.nb=new d,this.rb=function(t){let i=!1;return function(...s){i||(i=!0,queueMicrotask(()=>{t(...s),i=!1}))}}(()=>this.nb.p(this.hb)),this.hb=0}lb(){return this.nb}m(){this.nb.m()}options(){return this.Ps}setOptions(t){this.Ps=t}preprocessData(t){}updateFormatter(t){this.Ps&&(this.Ps.localization=t)}createConverterToInternalObj(t){return this.rb(),t=>(t>this.hb&&(this.hb=t),t)}key(t){return t}cacheKey(t){return t}convertHorzItemToInternal(t){return t}formatHorzItem(t){return this.ob(t)}formatTickmark(t){return this.ob(t.time)}maxTickMarkWeight(t){return t.reduce(rn,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(hn(t[e].time));this.hb=t[t.length-1].time,this.rb()}ob(t){if(this.Ps.localization?.timeFormatter)return this.Ps.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 on={yieldCurve:{baseResolution:1,minimumTimeRange:120,startTimeRange:0},timeScale:{ignoreWhitespaceIndices:!0},leftPriceScale:{visible:!0},rightPriceScale:{visible:!1},localization:{priceFormatter:t=>t.toFixed(3)+"%"}},an={lastValueVisible:!1,priceLineVisible:!1};class _n extends Oe{constructor(t,i){const s=p(on,i||{}),e=new ln;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={...an,...i};return super.addSeries(t,e,s)}_initWhitespaceSeries(){const t=this.horzBehaviour(),i=this.addSeries(nn);let s;function e(e){const n=function(t,i){return{an:Math.max(0,t.startTimeRange),_n:Math.max(0,t.minimumTimeRange,i||0),ab:Math.max(1,t.baseResolution)}}(t.options().yieldCurve,e),r=(({an:t,_n:i,ab:s})=>`${t}~${i}~${s}`)(n);r!==s&&(s=r,i.setData(function({an:t,_n:i,ab:s}){return Array.from({length:Math.floor((i-t)/s)+1},(i,e)=>({time:t+e*s}))}(n)))}e(0),t.lb().i(e)}}function un(t,i){const s=ze(t);return new _n(s,i)}function cn(t,i){return t.weight>i.weight?t:i}class dn{options(){return this.Ps}setOptions(t){this.Ps=t}preprocessData(t){}updateFormatter(t){this.Ps&&(this.Ps.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.Se())}formatTickmark(t,i){return t.time.toFixed(this.Se())}maxTickMarkWeight(t){return t.reduce(cn,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)}Se(){return this.Ps.localization.precision}}function pn(t,i){return $e(t,new dn,i)}function fn(t,i,s,e,n){const{context:r,horizontalPixelRatio:h,verticalPixelRatio:l}=i;r.lineTo(n.ut*h,t*l),r.lineTo(e.ut*h,t*l),r.closePath(),r.fillStyle=s,r.fill()}class vn extends D{constructor(){super(...arguments),this.ht=null}lt(t){this.ht=t}rt(t){if(null===this.ht)return;const{_t:i,ot:s,tb:e,dt:n,Xt:r,ib:h}=this.ht,o=this.ht._b??(this.ht.ub?0:t.mediaSize.height);if(null===s)return;const a=t.context;a.lineCap="butt",a.lineJoin="round",a.lineWidth=n,l(a,r),a.lineWidth=1,Ke(t,i,h,s,e,this.cb.bind(this),fn.bind(null,o))}}class mn{pb(t,i){const s=this.fb,{mb:e,wb:n,gb:r,bb:h,_b:l,Mb:o,yb:a}=i;if(void 0===this.Sb||void 0===s||s.mb!==e||s.wb!==n||s.gb!==r||s.bb!==h||s._b!==l||s.Mb!==o||s.yb!==a){const{verticalPixelRatio:s}=t,_=l||o>0?s:1,u=o*_,c=a===t.bitmapSize.height?a:a*_,d=(l??0)*_,p=t.context.createLinearGradient(0,u,0,c);if(p.addColorStop(0,e),null!=l){const t=Jt((d-u)/(c-u),0,1);p.addColorStop(t,n),p.addColorStop(t,r)}p.addColorStop(1,h),this.Sb=p,this.fb=i}return this.Sb}}class wn extends vn{constructor(){super(...arguments),this.xb=new mn}cb(t,i){const s=this.ht;return this.xb.pb(t,{mb:i.yr,wb:i.Sr,gb:i.Cr,bb:i.Pr,_b:s._b,Mb:s.Mb??0,yb:s.yb??t.bitmapSize.height})}}class gn extends tn{constructor(){super(...arguments),this.Cb=new mn}eb(t,i){const s=this.ht;return this.Cb.pb(t,{mb:i.br,wb:i.br,gb:i.Mr,bb:i.Mr,_b:s._b,Mb:s.Mb??0,yb:s.yb??t.bitmapSize.height})}}class bn extends je{constructor(t,i){super(t,i),this._g=new k,this.Pb=new wn,this.Tb=new gn,this._g.et([this.Pb,this.Tb])}Qg(t,i,s){return{...this.Jg(t,i),...s.Vr(t)}}vg(){const t=this.Ze.Wt();if(null===t)return;const i=this.Ze.O(),s=this.Ze.$t().zt(i.baseValue.price,t.Ht),e=this.Je.At().wu();if(null===this.lg||0===this.hg.length)return;let n,r;if(i.relativeGradient){n=this.hg[this.lg.from].ct,r=this.hg[this.lg.from].ct;for(let t=this.lg.from;t<this.lg.to;t++){const i=this.hg[t];i.ct<n&&(n=i.ct),i.ct>r&&(r=i.ct)}}this.Pb.lt({_t:this.hg,dt:i.lineWidth,Xt:i.lineStyle,ib:i.lineType,_b:s,Mb:n,yb:r,ub:!1,ot:this.lg,tb:e}),this.Tb.lt({_t:this.hg,dt:i.lineWidth,Xt:i.lineStyle,ib:i.lineVisible?i.lineType:void 0,sb:i.pointMarkersVisible?i.pointMarkersRadius||i.lineWidth/2+2:void 0,_b:s,Mb:n,yb:r,ot:this.lg,tb:e})}}const Mn={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},qg:(t,i)=>new bn(t,i)};class yn extends vn{constructor(){super(...arguments),this.xb=new mn}cb(t,i){return this.xb.pb(t,{mb:i.wr,wb:"",gb:"",bb:i.gr,Mb:this.ht?.Mb??0,yb:t.bitmapSize.height})}}class Sn extends je{constructor(t,i){super(t,i),this._g=new k,this.kb=new yn,this.Db=new sn,this._g.et([this.kb,this.Db])}Qg(t,i,s){return{...this.Jg(t,i),...s.Vr(t)}}vg(){const t=this.Ze.O();if(null===this.lg||0===this.hg.length)return;let i;if(t.relativeGradient){i=this.hg[this.lg.from].ct;for(let t=this.lg.from;t<this.lg.to;t++){const s=this.hg[t];s.ct<i&&(i=s.ct)}}this.kb.lt({ib:t.lineType,_t:this.hg,Xt:t.lineStyle,dt:t.lineWidth,_b:null,Mb:i,ub:t.invertFilledArea,ot:this.lg,tb:this.Je.At().wu()}),this.Db.lt({ib:t.lineVisible?t.lineType:void 0,_t:this.hg,Xt:t.lineStyle,dt:t.lineWidth,ot:this.lg,tb:this.Je.At().wu(),sb:t.pointMarkersVisible?t.pointMarkersRadius||t.lineWidth/2+2:void 0})}}const xn={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},qg:(t,i)=>new Sn(t,i)};class Cn extends D{constructor(){super(...arguments),this.jt=null,this.Ib=0,this.Vb=0}lt(t){this.jt=t}rt({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.jt||0===this.jt.Xs.length||null===this.jt.ot)return;if(this.Ib=this.Rb(i),this.Ib>=2){Math.max(1,Math.floor(i))%2!=this.Ib%2&&this.Ib--}this.Vb=this.jt.Fb?Math.min(this.Ib,Math.floor(i)):this.Ib;let e=null;const n=this.Vb<=this.Ib&&this.jt.wu>=Math.floor(1.5*i);for(let r=this.jt.ot.from;r<this.jt.ot.to;++r){const h=this.jt.Xs[r];e!==h.dr&&(t.fillStyle=h.dr,e=h.dr);const l=Math.floor(.5*this.Vb),o=Math.round(h.ut*i),a=o-l,_=this.Vb,u=a+_-1,c=Math.min(h.Xo,h.Zo),d=Math.max(h.Xo,h.Zo),p=Math.round(c*s)-l,f=Math.round(d*s)+l,v=Math.max(f-p,this.Vb);t.fillRect(a,p,_,v);const m=Math.ceil(1.5*this.Ib);if(n){if(this.jt.Lb){const i=o-m;let e=Math.max(p,Math.round(h.Go*s)-l),n=e+_-1;n>p+v-1&&(n=p+v-1,e=n-_+1),t.fillRect(i,e,a-i,n-e+1)}const i=o+m;let e=Math.max(p,Math.round(h.Jo*s)-l),n=e+_-1;n>p+v-1&&(n=p+v-1,e=n-_+1),t.fillRect(u+1,e,i-u,n-e+1)}}}Rb(t){const i=Math.floor(t);return Math.max(i,Math.floor(function(t,i){return Math.floor(.3*t*i)}(u(this.jt).wu,t)))}}class Pn extends ue{constructor(t,i){super(t,i,!1)}fg(t,i,s){i.cu(this.hg,M(this.lg)),t.Ko(this.hg,s,M(this.lg))}Ab(t,i,s){return{gt:t,Yh:i.Ht[0],jh:i.Ht[1],Kh:i.Ht[2],Gh:i.Ht[3],ut:NaN,Go:NaN,Xo:NaN,Zo:NaN,Jo:NaN}}dg(){const t=this.Ze.Ih();this.hg=this.Ze.Xs().Nr().map(i=>this.Qg(i.In,i,t))}}class Tn extends Pn{constructor(){super(...arguments),this._g=new Cn}Qg(t,i,s){return{...this.Ab(t,i,s),...s.Vr(t)}}vg(){const t=this.Ze.O();this._g.lt({Xs:this.hg,wu:this.Je.At().wu(),Lb:t.openVisible,Fb:t.thinBars,ot:this.lg})}}const kn={type:"Bar",isBuiltIn:!0,defaultOptions:{upColor:"#26a69a",downColor:"#ef5350",openVisible:!0,thinBars:!0},qg:(t,i)=>new Tn(t,i)};class Dn extends D{constructor(){super(...arguments),this.jt=null,this.Ib=0}lt(t){this.jt=t}rt(t){if(null===this.jt||0===this.jt.Xs.length||null===this.jt.ot)return;const{horizontalPixelRatio:i}=t;if(this.Ib=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),r=Math.min(e,n);return Math.max(Math.floor(i),r)}(this.jt.wu,i),this.Ib>=2){Math.floor(i)%2!=this.Ib%2&&this.Ib--}const s=this.jt.Xs;this.jt.Bb&&this.Wb(t,s,this.jt.ot),this.jt.Mi&&this.cv(t,s,this.jt.ot);const e=this.Eb(i);(!this.jt.Mi||this.Ib>2*e)&&this.Ob(t,s,this.jt.ot)}Wb(t,i,s){if(null===this.jt)return;const{context:e,horizontalPixelRatio:n,verticalPixelRatio:r}=t;let h="",l=Math.min(Math.floor(n),Math.floor(this.jt.wu*n));l=Math.max(Math.floor(n),Math.min(l,this.Ib));const o=Math.floor(.5*l);let a=null;for(let t=s.from;t<s.to;t++){const s=i[t];s.vr!==h&&(e.fillStyle=s.vr,h=s.vr);const _=Math.round(Math.min(s.Go,s.Jo)*r),u=Math.round(Math.max(s.Go,s.Jo)*r),c=Math.round(s.Xo*r),d=Math.round(s.Zo*r);let p=Math.round(n*s.ut)-o;const f=p+l-1;null!==a&&(p=Math.max(a+1,p),p=Math.min(p,f));const v=f-p+1;e.fillRect(p,c,v,_-c),e.fillRect(p,u+1,v,d-u),a=f}}Eb(t){let i=Math.floor(1*t);this.Ib<=2*i&&(i=Math.floor(.5*(this.Ib-1)));const s=Math.max(Math.floor(t),i);return this.Ib<=2*s?Math.max(Math.floor(t),Math.floor(1*t)):s}cv(t,i,s){if(null===this.jt)return;const{context:e,horizontalPixelRatio:n,verticalPixelRatio:r}=t;let h="";const l=this.Eb(n);let o=null;for(let t=s.from;t<s.to;t++){const s=i[t];s.pr!==h&&(e.fillStyle=s.pr,h=s.pr);let a=Math.round(s.ut*n)-Math.floor(.5*this.Ib);const _=a+this.Ib-1,u=Math.round(Math.min(s.Go,s.Jo)*r),c=Math.round(Math.max(s.Go,s.Jo)*r);if(null!==o&&(a=Math.max(o+1,a),a=Math.min(a,_)),this.jt.wu*n>2*l)B(e,a,u,_-a+1,c-u+1,l);else{const t=_-a+1;e.fillRect(a,u,t,c-u+1)}o=_}}Ob(t,i,s){if(null===this.jt)return;const{context:e,horizontalPixelRatio:n,verticalPixelRatio:r}=t;let h="";const l=this.Eb(n);for(let t=s.from;t<s.to;t++){const s=i[t];let o=Math.round(Math.min(s.Go,s.Jo)*r),a=Math.round(Math.max(s.Go,s.Jo)*r),_=Math.round(s.ut*n)-Math.floor(.5*this.Ib),u=_+this.Ib-1;if(s.dr!==h){const t=s.dr;e.fillStyle=t,h=t}this.jt.Mi&&(_+=l,o+=l,u-=l,a-=l),o>a||e.fillRect(_,o,u-_+1,a-o+1)}}}class In extends Pn{constructor(){super(...arguments),this._g=new Dn}Qg(t,i,s){return{...this.Ab(t,i,s),...s.Vr(t)}}vg(){const t=this.Ze.O();this._g.lt({Xs:this.hg,wu:this.Je.At().wu(),Bb:t.wickVisible,Mi:t.borderVisible,ot:this.lg})}}const Vn={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"},qg:(t,i)=>new In(t,i)};class Rn extends D{constructor(){super(...arguments),this.jt=null,this.zb=[]}lt(t){this.jt=t,this.zb=[]}rt({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.jt||0===this.jt._t.length||null===this.jt.ot)return;this.zb.length||this.$b(i);const e=Math.max(1,Math.floor(s)),n=Math.round(this.jt.Hb*s)-Math.floor(e/2),r=n+e;for(let i=this.jt.ot.from;i<this.jt.ot.to;i++){const h=this.jt._t[i],l=this.zb[i-this.jt.ot.from],o=Math.round(h.ct*s);let a,_;t.fillStyle=h.dr,o<=n?(a=o,_=r):(a=n,_=o-Math.floor(e/2)+e),t.fillRect(l.Uh,a,l.yi-l.Uh+1,_-a)}}$b(t){if(null===this.jt||0===this.jt._t.length||null===this.jt.ot)return void(this.zb=[]);const i=Math.ceil(this.jt.wu*t)<=1?0:Math.max(1,Math.floor(t)),s=Math.round(this.jt.wu*t)-i;this.zb=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.ut*t);let r,h;if(s%2){const t=(s-1)/2;r=n-t,h=n+t}else{const t=s/2;r=n-t,h=n+t-1}this.zb[i-this.jt.ot.from]={Uh:r,yi:h,Nb:n,en:e.ut*t,gt:e.gt}}for(let t=this.jt.ot.from+1;t<this.jt.ot.to;t++){const s=this.zb[t-this.jt.ot.from],e=this.zb[t-this.jt.ot.from-1];s.gt===e.gt+1&&(s.Uh-e.yi!==i+1&&(e.Nb>e.en?e.yi=s.Uh-i-1:s.Uh=e.yi+i+1))}let e=Math.ceil(this.jt.wu*t);for(let t=this.jt.ot.from;t<this.jt.ot.to;t++){const i=this.zb[t-this.jt.ot.from];i.yi<i.Uh&&(i.yi=i.Uh);const s=i.yi-i.Uh+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.zb[t-this.jt.ot.from];i.yi-i.Uh+1>e&&(i.Nb>i.en?i.yi-=1:i.Uh+=1)}}}class Fn extends je{constructor(){super(...arguments),this._g=new Rn}Qg(t,i,s){return{...this.Jg(t,i),...s.Vr(t)}}vg(){const t={_t:this.hg,wu:this.Je.At().wu(),ot:this.lg,Hb:this.Ze.$t().zt(this.Ze.O().base,u(this.Ze.Wt()).Ht)};this._g.lt(t)}}const Ln={type:"Histogram",isBuiltIn:!0,defaultOptions:{color:"#26a69a",base:0},qg:(t,i)=>new Fn(t,i)};class An{constructor(t,i){this.Pt=t,this.Ub=i,this.qb()}detach(){this.Pt.detachPrimitive(this.Ub)}getPane(){return this.Pt}applyOptions(t){this.Ub.lr?.(t)}qb(){this.Pt.attachPrimitive(this.Ub)}}const Bn={visible:!0,horzAlign:"center",vertAlign:"center",lines:[]},Wn={color:"rgba(0, 0, 0, 0.5)",fontSize:48,fontFamily:y,fontStyle:"",text:""};class En{constructor(t){this.Yb=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.jb(i,t.text);n>s.width?t.Cu=s.width/n:t.Cu=1,e+=t.lineHeight*t.Cu}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.Cu,t.Cu),i.fillText(t.text,0,t.Kb),i.restore(),n+=t.lineHeight*t.Cu}})}jb(t,i){const s=this.Gb(t.font);let e=s.get(i);return void 0===e&&(e=t.measureText(i).width,s.set(i,e)),e}Gb(t){let i=this.Yb.get(t);return void 0===i&&(i=new Map,this.Yb.set(t,i)),i}}class On{constructor(t){this.Ps=$n(t)}Tt(t){this.Ps=$n(t)}renderer(){return new En(this.Ps)}}function zn(t){return{...t,T:S(t.fontSize,t.fontFamily,t.fontStyle),lineHeight:t.lineHeight||1.2*t.fontSize,Kb:0,Cu:0}}function $n(t){return{...t,lines:t.lines.map(zn)}}function Hn(t){return{...Wn,...t}}function Nn(t){return{...Bn,...t,lines:t.lines?.map(Hn)??[]}}class Un{constructor(t){this.Ps=Nn(t),this.Xb=[new On(this.Ps)]}updateAllViews(){this.Xb.forEach(t=>t.Tt(this.Ps))}paneViews(){return this.Xb}attached({requestUpdate:t}){this.Zb=t}detached(){this.Zb=void 0}lr(t){this.Ps=Nn({...this.Ps,...t}),this.Zb&&this.Zb()}}function qn(t,i){return new An(t,new Un(i))}const Yn={alpha:1,padding:0};class jn{constructor(t){this.jt=t}draw(t){t.useMediaCoordinateSpace(t=>{const i=t.context,s=this.Jb(this.jt,t.mediaSize);s&&this.jt.Qb&&(i.globalAlpha=this.jt.alpha??1,i.drawImage(this.jt.Qb,s.ut,s.ct,s.ts,s.qt))})}Jb(t,i){const{maxHeight:s,maxWidth:e,tM:n,iM:r,padding:h}=t,l=Math.round(i.width/2),o=Math.round(i.height/2),a=h??0;let _=i.width-2*a,u=i.height-2*a;s&&(u=Math.min(u,s)),e&&(_=Math.min(_,e));const c=_/r,d=u/n,p=Math.min(c,d),f=r*p,v=n*p;return{ut:l-.5*f,ct:o-.5*v,qt:v,ts:f}}}class Kn{constructor(t){this.sM=null,this.eM=0,this.nM=0,this.Ps=t,this.M=Gn(this.Ps,this.sM,this.eM,this.nM)}rM(t){void 0!==t.hM&&(this.eM=t.hM),void 0!==t.lM&&(this.nM=t.lM),void 0!==t.oM&&(this.sM=t.oM),this.Tt()}aM(t){this.Ps=t,this.Tt()}zOrder(){return"bottom"}Tt(){this.M=Gn(this.Ps,this.sM,this.eM,this.nM)}renderer(){return new jn(this.M)}}function Gn(t,i,s,e){return{...t,Qb:i,iM:s,tM:e}}function Xn(t){return{...Yn,...t}}class Zn{constructor(t,i){this._M=null,this.uM=t,this.Ps=Xn(i),this.Xb=[new Kn(this.Ps)]}updateAllViews(){this.Xb.forEach(t=>t.Tt())}paneViews(){return this.Xb}attached(t){const{requestUpdate:i}=t;this.cM=i,this._M=new Image,this._M.onload=()=>{const t=this._M?.naturalHeight??1,i=this._M?.naturalWidth??1;this.Xb.forEach(s=>s.rM({lM:t,hM:i,oM:this._M})),this.cM&&this.cM()},this._M.src=this.uM}detached(){this.cM=void 0,this._M=null}lr(t){this.Ps=Xn({...this.Ps,...t}),this.dM(),this.Zb&&this.Zb()}Zb(){this.cM&&this.cM()}dM(){this.Xb.forEach(t=>t.aM(this.Ps))}}function Jn(t,i,s){return new An(t,new Zn(i,s))}class Qn{constructor(t,i){this.Ze=t,this.ah=i,this.qb()}detach(){this.Ze.detachPrimitive(this.ah)}getSeries(){return this.Ze}applyOptions(t){this.ah&&this.ah.lr&&this.ah.lr(t)}qb(){this.Ze.attachPrimitive(this.ah)}}const tr={autoScale:!0,zOrder:"normal"};function ir(t,i){return ti(Math.min(Math.max(t,12),30)*i)}function sr(t,i){switch(t){case"arrowDown":case"arrowUp":return ir(i,1);case"circle":return ir(i,.8);case"square":return ir(i,.7)}}function er(t){return function(t){const i=Math.ceil(t);return i%2!=0?i-1:i}(ir(t,1))}function nr(t){return Math.max(ir(t,.1),3)}function rr(t,i,s){return i?t:s?Math.ceil(t/2):0}function hr(t,i,s,e){const n=(sr("arrowUp",e)-1)/2*s.pM,r=(ti(e/2)-1)/2*s.pM;i.beginPath(),t?(i.moveTo(s.ut-n,s.ct),i.lineTo(s.ut,s.ct-n),i.lineTo(s.ut+n,s.ct),i.lineTo(s.ut+r,s.ct),i.lineTo(s.ut+r,s.ct+n),i.lineTo(s.ut-r,s.ct+n),i.lineTo(s.ut-r,s.ct)):(i.moveTo(s.ut-n,s.ct),i.lineTo(s.ut,s.ct+n),i.lineTo(s.ut+n,s.ct),i.lineTo(s.ut+r,s.ct),i.lineTo(s.ut+r,s.ct-n),i.lineTo(s.ut-r,s.ct-n),i.lineTo(s.ut-r,s.ct)),i.fill()}function lr(t,i,s,e,n,r){const h=(sr("arrowUp",e)-1)/2,l=(ti(e/2)-1)/2;if(n>=i-l-2&&n<=i+l+2&&r>=(t?s:s-h)-2&&r<=(t?s+h:s)+2)return!0;return(()=>{if(n<i-h-3||n>i+h+3||r<(t?s-h-3:s)||r>(t?s:s+h+3))return!1;const e=Math.abs(n-i);return Math.abs(r-s)+3>=e/2})()}class or{constructor(){this.jt=null,this.We=new rt,this.$=-1,this.H="",this.Hf="",this.fM="normal"}lt(t){this.jt=t}Ee(t,i,s){this.$===t&&this.H===i||(this.$=t,this.H=i,this.Hf=S(t,i),this.We.Ve()),this.fM=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&&_r(e,t,i))return{zOrder:"normal",externalId:e.je??""}}return null}draw(t){"aboveSeries"!==this.fM&&t.useBitmapCoordinateSpace(t=>{this.rt(t)})}drawBackground(t){"aboveSeries"===this.fM&&t.useBitmapCoordinateSpace(t=>{this.rt(t)})}rt({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null!==this.jt&&null!==this.jt.ot){t.textBaseline="middle",t.font=this.Hf;for(let e=this.jt.ot.from;e<this.jt.ot.to;e++){const n=this.jt._t[e];void 0!==n.hi&&(n.hi.ts=this.We.Ri(t,n.hi.vM),n.hi.qt=this.$,n.hi.ut=n.ut-n.hi.ts/2),ar(n,t,i,s)}}}}function ar(t,i,s,e){i.fillStyle=t.I,void 0!==t.hi&&function(t,i,s,e,n,r){t.save(),t.scale(n,r),t.fillText(i,s,e),t.restore()}(i,t.hi.vM,t.hi.ut,t.hi.ct,s,e),function(t,i,s){if(0===t.Wr)return;switch(t.mM){case"arrowDown":return void hr(!1,i,s,t.Wr);case"arrowUp":return void hr(!0,i,s,t.Wr);case"circle":return void function(t,i,s){const e=(sr("circle",s)-1)/2;t.beginPath(),t.arc(i.ut,i.ct,e*i.pM,0,2*Math.PI,!1),t.fill()}(i,s,t.Wr);case"square":return void function(t,i,s){const e=sr("square",s),n=(e-1)*i.pM/2,r=i.ut-n,h=i.ct-n;t.fillRect(r,h,e*i.pM,e*i.pM)}(i,s,t.Wr)}t.mM}(t,i,function(t,i,s){const e=Math.max(1,Math.floor(i))%2/2;return{ut:Math.round(t.ut*i)+e,ct:t.ct*s,pM:i}}(t,s,e))}function _r(t,i,s){return!(void 0===t.hi||!function(t,i,s,e,n,r){const h=e/2;return n>=t&&n<=t+s&&r>=i-h&&r<=i+h}(t.hi.ut,t.hi.ct,t.hi.ts,t.hi.qt,i,s))||function(t,i,s){if(0===t.Wr)return!1;switch(t.mM){case"arrowDown":return lr(!0,t.ut,t.ct,t.Wr,i,s);case"arrowUp":return lr(!1,t.ut,t.ct,t.Wr,i,s);case"circle":return function(t,i,s,e,n){const r=2+sr("circle",s)/2,h=t-e,l=i-n;return Math.sqrt(h*h+l*l)<=r}(t.ut,t.ct,t.Wr,i,s);case"square":return function(t,i,s,e,n){const r=sr("square",s),h=(r-1)/2,l=t-h,o=i-h;return e>=l&&e<=l+r&&n>=o&&n<=o+r}(t.ut,t.ct,t.Wr,i,s)}}(t,i,s)}function ur(t){return"atPriceTop"===t||"atPriceBottom"===t||"atPriceMiddle"===t}function cr(t,i,s,e,n,r,h,l){const o=function(t,i,s){if(ur(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,h.priceScale().options().invertScale);if(void 0===o)return;const a=ur(i.position),_=l.timeScale(),c=f(i.size)?Math.max(i.size,0):1,d=er(_.options().barSpacing)*c,p=d/2;t.Wr=d;switch(i.position){case"inBar":case"atPriceMiddle":return t.ct=u(h.priceToCoordinate(o)),void(void 0!==t.hi&&(t.hi.ct=t.ct+p+r+.6*n));case"aboveBar":case"atPriceTop":{const i=a?0:e.wM;return t.ct=u(h.priceToCoordinate(o))-p-i,void 0!==t.hi&&(t.hi.ct=t.ct-p-.6*n,e.wM+=1.2*n),void(a||(e.wM+=d+r))}case"belowBar":case"atPriceBottom":{const i=a?0:e.gM;return t.ct=u(h.priceToCoordinate(o))+p+i,void 0!==t.hi&&(t.hi.ct=t.ct+p+r+.6*n,e.gM+=1.2*n),void(a||(e.gM+=d+r))}}}class dr{constructor(t,i,s){this.bM=[],this.xt=!0,this.MM=!0,this.Jt=new or,this.bn=t,this.Rf=i,this.jt={_t:[],ot:null},this.Ps=s}renderer(){if(!this.bn.options().visible)return null;this.xt&&this.yM();const t=this.Rf.options().layout;return this.Jt.Ee(t.fontSize,t.fontFamily,this.Ps.zOrder),this.Jt.lt(this.jt),this.Jt}SM(t){this.bM=t,this.Tt("data")}Tt(t){this.xt=!0,"data"===t&&(this.MM=!0)}xM(t){this.xt=!0,this.Ps=t}zOrder(){return"aboveSeries"===this.Ps.zOrder?"top":this.Ps.zOrder}yM(){const t=this.Rf.timeScale(),i=this.bM;this.MM&&(this.jt._t=i.map(t=>({gt:t.time,ut:0,ct:0,Wr:0,mM:t.shape,I:t.color,je:t.id,CM:t.CM,hi:void 0})),this.MM=!1);const s=this.Rf.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.bn.data()[0])return;if(0===this.jt._t.length)return;let r=NaN;const h=nr(t.options().barSpacing),l={wM:h,gM:h};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!==r&&(l.wM=h,l.gM=h,r=n.time);const o=this.jt._t[e];o.ut=u(t.logicalToCoordinate(n.time)),void 0!==n.text&&n.text.length>0&&(o.hi={vM:n.text,ut:0,ct:0,ts:0,qt:0});const a=this.bn.dataByIndex(n.time,0);null!==a&&cr(o,n,a,l,s.fontSize,h,this.bn,this.Rf)}this.xt=!1}}function pr(t){return{...tr,...t}}class fr{constructor(t){this.eh=null,this.bM=[],this.PM=[],this.TM=null,this.bn=null,this.Rf=null,this.kM=!0,this.DM=null,this.IM=null,this.VM=null,this.RM=!0,this.Ps=pr(t)}attached(t){this.FM(),this.Rf=t.chart,this.bn=t.series,this.eh=new dr(this.bn,u(this.Rf),this.Ps),this.cM=t.requestUpdate,this.bn.subscribeDataChanged(t=>this.Dg(t)),this.RM=!0,this.Zb()}Zb(){this.cM&&this.cM()}detached(){this.bn&&this.TM&&this.bn.unsubscribeDataChanged(this.TM),this.Rf=null,this.bn=null,this.eh=null,this.TM=null}SM(t){this.RM=!0,this.bM=t,this.FM(),this.kM=!0,this.IM=null,this.Zb()}LM(){return this.bM}paneViews(){return this.eh?[this.eh]:[]}updateAllViews(){this.AM()}hitTest(t,i){return this.eh?this.eh.renderer()?.Ye(t,i)??null:null}autoscaleInfo(t,i){if(this.Ps.autoScale&&this.eh){const t=this.BM();if(t)return{priceRange:null,margins:t}}return null}lr(t){this.Ps=pr({...this.Ps,...t}),this.Zb&&this.Zb()}BM(){const t=u(this.Rf).timeScale().options().barSpacing;if(this.kM||t!==this.VM){if(this.VM=t,this.bM.length>0){const i=nr(t),s=1.5*er(t)+2*i,e=this.WM();this.DM={above:rr(s,e.aboveBar,e.inBar),below:rr(s,e.belowBar,e.inBar)}}else this.DM=null;this.kM=!1}return this.DM}WM(){return null===this.IM&&(this.IM=this.bM.reduce((t,i)=>(t[i.position]||(t[i.position]=!0),t),{inBar:!1,aboveBar:!1,belowBar:!1,atPriceTop:!1,atPriceBottom:!1,atPriceMiddle:!1})),this.IM}FM(){if(!this.RM||!this.Rf||!this.bn)return;const t=this.Rf.timeScale(),i=this.bn?.data();if(null==t.getVisibleLogicalRange()||!this.bn||0===i.length)return void(this.PM=[]);const s=t.timeToIndex(u(i[0].time),!0);this.PM=this.bM.map((i,e)=>{const n=t.timeToIndex(i.time,!0),r=n<s?1:-1,h=u(this.bn).dataByIndex(n,r),l={time:t.timeToIndex(u(h).time,!1),position:i.position,shape:i.shape,color:i.color,id:i.id,CM:e,text:i.text,size:i.size,price:i.price,Tw: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{...l,position:i.position,price:i.price}}return{...l,position:i.position,price:i.price}}),this.RM=!1}AM(t){this.eh&&(this.FM(),this.eh.SM(this.PM),this.eh.xM(this.Ps),this.eh.Tt(t))}Dg(t){this.RM=!0,this.Zb()}}class vr extends Qn{constructor(t,i,s){super(t,i),s&&this.setMarkers(s)}setMarkers(t){this.ah.SM(t)}markers(){return this.ah.LM()}}function mr(t,i,s){const e=new vr(t,new fr(s??{}));return i&&e.setMarkers(i),e}class wr{constructor(t){this.bM=new Map,this.EM=t}OM(t,i,s){if(this.zM(i),void 0!==s){const e=window.setTimeout(()=>{this.bM.delete(i),this.$M()},s),n={...t,HM:e,NM:Date.now()+s};this.bM.set(i,n)}else this.bM.set(i,{...t,HM:void 0,NM:void 0});this.$M()}zM(t){const i=this.bM.get(t);i&&void 0!==i.HM&&window.clearTimeout(i.HM),this.bM.delete(t),this.$M()}UM(){for(const[t]of this.bM)this.zM(t)}qM(){const t=Date.now(),i=[];for(const[s,e]of this.bM)!e.NM||e.NM>t?i.push({time:e.time,sign:e.sign,value:e.value}):this.zM(s);return i}YM(t){this.EM=t}$M(){this.EM&&this.EM()}}const gr={positiveColor:"#22AB94",negativeColor:"#F7525F",updateVisibilityDuration:5e3};class br{constructor(t,i,s,e){this.jt=t,this.jM=i,this.KM=s,this.GM=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 r=Math.round(n.ut*t.horizontalPixelRatio)+s;i.beginPath();const h=this.XM(n.ZM);i.fillStyle=h,i.arc(r,n.ct*t.verticalPixelRatio,e,0,2*Math.PI,!1),i.fill(),n.ZM&&(i.strokeStyle=h,i.lineWidth=Math.floor(2*t.horizontalPixelRatio),i.beginPath(),i.moveTo((n.ut-4.7)*t.horizontalPixelRatio+s,(n.ct-7*n.ZM)*t.verticalPixelRatio),i.lineTo(n.ut*t.horizontalPixelRatio+s,(n.ct-7*n.ZM-7*n.ZM*.5)*t.verticalPixelRatio),i.lineTo((n.ut+4.7)*t.horizontalPixelRatio+s,(n.ct-7*n.ZM)*t.verticalPixelRatio),i.stroke())})})}XM(t){return 0===t?this.jM:t>0?this.GM:this.KM}}class Mr{constructor(t,i,s){this.jt=[],this.bn=t,this.dh=i,this.Ps=s}Tt(t){this.jt=t.map(t=>{const i=this.bn.priceToCoordinate(t.value);if(null===i)return null;return{ut:u(this.dh.timeToCoordinate(t.time)),ct:i,ZM:t.sign}}).filter(b)}renderer(){const t=function(t,i){return function(t,i){return"Area"===i}(0,i)?t.lineColor:t.color}(this.bn.options(),this.bn.seriesType());return new br(this.jt,t,this.Ps.negativeColor,this.Ps.positiveColor)}}function yr(t,i){return"Line"===i||"Area"===i}class Sr{constructor(t){this.Rf=void 0,this.bn=void 0,this.Xb=[],this.__=null,this.JM=new Map,this.QM=new wr(()=>this.Zb()),this.Ps={...gr,...t}}lr(t){this.Ps={...this.Ps,...t},this.Zb()}SM(t){this.QM.UM();const i=this.__;i&&t.forEach(t=>{this.QM.OM(t,i.key(t.time))})}LM(){return this.QM.qM()}Zb(){this.cM?.()}attached(t){const{chart:i,series:s,requestUpdate:e,horzScaleBehavior:n}=t;this.Rf=i,this.bn=s,this.__=n;const r=this.bn.seriesType();if("Area"!==r&&"Line"!==r)throw new Error("UpDownMarkersPrimitive is only supported for Area and Line series types");this.Xb=[new Mr(this.bn,this.Rf.timeScale(),this.Ps)],this.cM=e,this.Zb()}detached(){this.Rf=void 0,this.bn=void 0,this.cM=void 0}Yf(){return _(this.Rf)}Oa(){return _(this.bn)}updateAllViews(){this.Xb.forEach(t=>t.Tt(this.LM()))}paneViews(){return this.Xb}lt(t){if(!this.bn)throw new Error("Primitive not attached to series");const i=this.bn.seriesType();this.JM.clear();const s=this.__;s&&t.forEach(t=>{Ys(t)&&yr(0,i)&&this.JM.set(s.key(t.time),t.value)}),_(this.bn).setData(t)}Tt(t,i){if(!this.bn||!this.__)throw new Error("Primitive not attached to series");const s=this.bn.seriesType(),e=this.__.key(t.time);if(qs(t)&&this.JM.delete(e),Ys(t)&&yr(0,s)){const i=this.JM.get(e);i&&this.QM.OM({time:t.time,value:t.value,sign:xr(t.value,i)},e,this.Ps.updateVisibilityDuration)}_(this.bn).update(t,i)}ty(){this.QM.UM()}}function xr(t,i){return t===i?0:t-i>0?1:-1}class Cr extends Qn{setData(t){return this.ah.lt(t)}update(t,i){return this.ah.Tt(t,i)}markers(){return this.ah.LM()}setMarkers(t){return this.ah.SM(t)}clearMarkers(){return this.ah.ty()}}function Pr(t,i={}){return new Cr(t,new Sr(i))}class Tr{constructor(t,i){this.iy=null,this.sy=[],this.Ps={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.iy=mr(t)}addPosition(t){this.sy.push(t),this.ey()}addPositions(t){this.sy.push(...t),this.ey()}setPositions(t){this.sy=[...t],this.ey()}closePosition(t,i,s){const e=this.sy.find(i=>i.id===t);e&&(e.exit=i,s&&e.text?e.text.exit=s:s&&(e.text={exit:s}),this.ey())}removePosition(t){this.sy=this.sy.filter(i=>i.id!==t),this.ey()}clearPositions(){this.sy=[],this.ey()}getPositions(){return this.sy}applyOptions(t){t.longColors&&(this.Ps.longColors={...this.Ps.longColors,...t.longColors}),t.shortColors&&(this.Ps.shortColors={...this.Ps.shortColors,...t.shortColors}),void 0!==t.defaultSize&&(this.Ps.defaultSize=t.defaultSize),void 0!==t.entryOffset&&(this.Ps.entryOffset=t.entryOffset),void 0!==t.exitOffset&&(this.Ps.exitOffset=t.exitOffset),this.ey()}ny(){const t=[];for(const i of this.sy){const s="long"===i.type,e=i.size??this.Ps.defaultSize,n=i.color?.entry??(s?this.Ps.longColors.entry:this.Ps.shortColors.entry),r=i.color?.exit??(s?this.Ps.longColors.exit:this.Ps.shortColors.exit),h={time:i.entry.time,position:"atPriceMiddle",price:i.entry.price+this.Ps.entryOffset,shape:s?"arrowUp":"arrowDown",color:n,size:e};if(i.text?.entry&&(h.text=i.text.entry),i.id&&(h.id=`${i.id}-entry`),t.push(h),i.exit){const n={time:i.exit.time,position:"atPriceMiddle",price:i.exit.price+this.Ps.exitOffset,shape:s?"arrowDown":"arrowUp",color:r,size:e};i.text?.exit&&(n.text=i.text.exit),i.id&&(n.id=`${i.id}-exit`),t.push(n)}}return t}ey(){if(this.iy){const t=this.ny();this.iy.setMarkers(t)}}detach(){this.iy&&(this.iy.detach(),this.iy=null),this.sy=[]}}function kr(t,i,s){const e=new Tr(t,s);return i&&i.length>0&&e.setPositions(i),e}const Dr=new WeakMap;function Ir(t){return"string"==typeof t?t:String(t)}function Vr(t,i){const s=new Map;for(const t of i)null!=t&&"time"in t&&"volume"in t&&s.set(Ir(t.time),t.volume);Dr.set(t,s)}function Rr(t,i){return Dr.get(t)?.get(Ir(i))}function Fr(t){const i=Dr.get(t);return void 0!==i&&i.size>0}const Lr="rgba(0, 0, 0, 0)";function Ar(t){switch(t.seriesType()){case"Candlestick":return Br(t,{upColor:Lr,downColor:Lr,borderVisible:!1,wickVisible:!1});case"Bar":return Br(t,{upColor:Lr,downColor:Lr});case"Line":return Br(t,{color:Lr,crosshairMarkerVisible:!1,pointMarkersVisible:!1});case"Area":return Br(t,{lineColor:Lr,topColor:Lr,bottomColor:Lr,crosshairMarkerVisible:!1,pointMarkersVisible:!1});case"Baseline":return Br(t,{topLineColor:Lr,topFillColor1:Lr,topFillColor2:Lr,bottomLineColor:Lr,bottomFillColor1:Lr,bottomFillColor2:Lr,crosshairMarkerVisible:!1,pointMarkersVisible:!1});case"Histogram":return Br(t,{color:Lr});default:return Br(t,{visible:!1})}}function Br(t,i){const s={...i,lastValueVisible:!1,priceLineVisible:!1},e=t.options(),n={};for(const t of Object.keys(s))n[t]=e[t];return t.applyOptions(s),()=>{t.applyOptions(n)}}function Wr(t,i){return()=>{const s={};s.minValue=t,s.maxValue=i;const e={};return e.priceRange=s,e}}function Er(t,i,s){const e=t.panes();for(const t of e)if(-1!==t.getSeries().indexOf(i))return t.paneIndex();return Math.min(s,Math.max(e.length-1,0))}function Or(t,i="close"){const s=[];for(const e of t)if(null!=e)if("close"in e)switch(i){case"open":s.push(e.open);break;case"high":s.push(e.high);break;case"low":s.push(e.low);break;case"hl2":s.push((e.high+e.low)/2);break;case"hlc3":s.push((e.high+e.low+e.close)/3);break;case"ohlc4":s.push((e.open+e.high+e.low+e.close)/4);break;default:s.push(e.close)}else s.push("value"in e?e.value:0);else s.push(0);return s}function zr(t,i){let s=[];return e=>{for(const i of s)try{t.removePriceLine(i)}catch(t){}s=e.filter(t=>null!=t).map(s=>{const e={price:s,color:i,lineWidth:1,lineStyle:2,axisLabelVisible:!1,title:""};return t.createPriceLine(e)})}}function $r(t){return null==t?void 0:t.time}function Hr(t){const{n_:i,Yf:s,hy:e,ly:n,oy:r,Zl:h}=t,l=t._y??[];let o=t.O,a=[],_=new Map,u=!1;const c=(t,i)=>{if(0===i.length)return;const s=_.get(t),e=i[i.length-1];if(void 0!==s&&s.length>0){const n=i.length===s.length+1,r=i.length===s.length,h=$r(s[s.length-1])===$r(e);if(n||r&&h)return t.update(e),void _.set(t,i)}t.setData(i),_.set(t,i)},d=t=>{if(!u)try{if("full"===t||0===a.length)a=i.data();else{const t=function(t){return t.dataByIndex(Number.MAX_SAFE_INTEGER,-1)}(i);if(null===t)return;a.length>0&&$r(a[a.length-1])===$r(t)?a[a.length-1]=t:a.push(t)}if(0===a.length)return;const s=n(a,o);for(const[t,i]of s)c(t,i);s.every(([,t])=>0===t.length)&&a.length}catch(t){console.error(`Error calculating ${h}:`,t)}},p=t=>d(t);i.subscribeDataChanged(p),void 0!==r&&r(o),d("full");const f={applyOptions:t=>{if(u||null==t)return;const i=o;o={...o,...t},void 0!==r&&r(o),l.some(t=>i[t]!==o[t])&&(_=new Map,d("full"))},options:()=>({...o}),remove:()=>{if(!u){u=!0,i.unsubscribeDataChanged(p);for(const t of e)try{s.removeSeries(t)}catch(t){}_=new Map,a=[]}},recalculate:()=>d("full")};return f}function Nr(t,i,s={}){const e={paneIndex:s.paneIndex??0,period:s.period??20,color:s.color??"#2196F3",lineWidth:s.lineWidth??2,source:s.source??"close",lineStyle:s.lineStyle??0},n=i.addSeries(nn,{color:e.color,lineWidth:e.lineWidth,priceFormat:{type:"price",precision:2,minMove:.01}},e.paneIndex),r=(t,i,s)=>{if(!t||t.length<i)return[];const e=Or(t,s),n=[];for(let s=i-1;s<e.length;s++){let r=0;for(let t=0;t<i;t++)r+=e[s-t];const h=r/i;t[s]&&t[s].time&&n.push({time:t[s].time,value:h})}return n},h=Hr({n_:t,Yf:i,hy:[n],Zl:"SMA",O:e,_y:["period","source"],ly:(t,i)=>[[n,r(t,i.period??20,i.source??"close")]],oy:t=>{n.applyOptions({color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle})}});return{series:n,...h}}function Ur(t,i,s={}){const e={paneIndex:s.paneIndex??0,period:s.period??12,color:s.color??"#FF9800",lineWidth:s.lineWidth??2,source:s.source??"close",lineStyle:s.lineStyle??0},n=i.addSeries(nn,{color:e.color,lineWidth:e.lineWidth,priceFormat:{type:"price",precision:2,minMove:.01}},e.paneIndex),r=(t,i,s)=>{if(!t||t.length<i)return[];const e=Or(t,s),n=[],r=2/(i+1);let h=0;for(let t=0;t<i;t++)h+=e[t];h/=i,t[i-1]&&t[i-1].time&&n.push({time:t[i-1].time,value:h});for(let s=i;s<e.length;s++)h=(e[s]-h)*r+h,t[s]&&t[s].time&&n.push({time:t[s].time,value:h});return n},h=Hr({n_:t,Yf:i,hy:[n],Zl:"EMA",O:e,_y:["period","source"],ly:(t,i)=>[[n,r(t,i.period??12,i.source??"close")]],oy:t=>{n.applyOptions({color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle})}});return{series:n,...h}}function qr(t,i,s={}){const e={paneIndex:s.paneIndex??0,period:s.period??20,color:s.color??"#4CAF50",lineWidth:s.lineWidth??2,source:s.source??"close",lineStyle:s.lineStyle??0},n=i.addSeries(nn,{color:e.color,lineWidth:e.lineWidth,priceFormat:{type:"price",precision:2,minMove:.01}},e.paneIndex),r=(t,i,s)=>{if(!t||t.length<i)return[];const e=Or(t,s),n=[],r=i*(i+1)/2;for(let s=i-1;s<e.length;s++){let h=0;for(let t=0;t<i;t++){const n=t+1;h+=e[s-i+1+t]*n}const l=h/r;t[s]&&t[s].time&&n.push({time:t[s].time,value:l})}return n},h=Hr({n_:t,Yf:i,hy:[n],Zl:"WMA",O:e,_y:["period","source"],ly:(t,i)=>[[n,r(t,i.period??20,i.source??"close")]],oy:t=>{n.applyOptions({color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle})}});return{series:n,...h}}function Yr(t,i,s={}){const e={paneIndex:s.paneIndex??0,period:s.period??20,stdDev:s.stdDev??2,colorUpper:s.colorUpper??"#3F51B5",colorMiddle:s.colorMiddle??"#2196F3",colorLower:s.colorLower??"#3F51B5",lineWidth:s.lineWidth??1},n=e.paneIndex,r=i.addSeries(nn,{color:e.colorUpper},n),h=i.addSeries(nn,{color:e.colorMiddle},n),l=i.addSeries(nn,{color:e.colorLower},n),o=Hr({n_:t,Yf:i,hy:[r,h,l],Zl:"Bollinger Bands",O:e,_y:["period","stdDev"],ly:(t,i)=>{const s=((t,i,s)=>{if(!t||t.length<i)return{uy:[],py:[],vy:[]};const e=[];for(const i of t)"close"in i?e.push(i.close):"value"in i?e.push(i.value):e.push(0);const n=[],r=[],h=[];for(let l=i-1;l<e.length;l++){let o=0;for(let t=0;t<i;t++)o+=e[l-t];const a=o/i;let _=0;for(let t=0;t<i;t++)_+=Math.pow(e[l-t]-a,2);const u=Math.sqrt(_/i),c=a+u*s,d=a-u*s;if(t[l]&&t[l].time){const i=t[l].time;n.push({time:i,value:c}),r.push({time:i,value:a}),h.push({time:i,value:d})}}return{uy:n,py:r,vy:h}})(t,i.period??20,i.stdDev??2);return[[r,s.uy],[h,s.py],[l,s.vy]]},oy:t=>{const i=t.lineWidth??1;r.applyOptions({color:t.colorUpper,lineWidth:i}),h.applyOptions({color:t.colorMiddle,lineWidth:Math.min(i+1,4)}),l.applyOptions({color:t.colorLower,lineWidth:i})}});return{upper:r,middle:h,lower:l,...o}}function jr(t,i,s={}){const e={paneIndex:s.paneIndex??0,period:s.period??20,atrPeriod:s.atrPeriod??10,multiplier:s.multiplier??2,source:s.source??"close",colorUpper:s.colorUpper??"#787B86",colorMiddle:s.colorMiddle??"#2962FF",colorLower:s.colorLower??"#787B86",lineWidth:s.lineWidth??1,lineStyle:s.lineStyle??0},n=e.paneIndex,r=i.addSeries(nn,{color:e.colorUpper},n),h=i.addSeries(nn,{color:e.colorMiddle},n),l=i.addSeries(nn,{color:e.colorLower},n),o=Hr({n_:t,Yf:i,hy:[r,h,l],Zl:"Keltner Channels",O:e,_y:["period","atrPeriod","multiplier","source"],ly:(t,i)=>{const s=((t,i)=>{const s=i.period??20,e=i.atrPeriod??10,n=i.multiplier??2;if(!t||t.length<Math.max(s,e+1))return{uy:[],py:[],vy:[]};const r=Or(t,i.source??"close"),h=[],l=2/(s+1);let o=0;for(let t=0;t<s;t++)o+=r[t];h.push(o/s);for(let t=s;t<r.length;t++)h.push((r[t]-h[h.length-1])*l+h[h.length-1]);const a=[];for(let i=1;i<t.length;i++){const s=t[i],e=t[i-1];"high"in s&&"low"in s&&"close"in e?a.push(Math.max(s.high-s.low,Math.abs(s.high-e.close),Math.abs(s.low-e.close))):a.push(0)}const _=[];let u=0;for(let t=0;t<e;t++)u+=a[t];_[e-1]=u/e;for(let t=e;t<a.length;t++)_[t]=(_[t-1]*(e-1)+a[t])/e;const c=[],d=[],p=[];for(let i=0;i<h.length;i++){const e=s-1+i,r=t[e],l=_[e-1];if(!r||void 0===r.time||void 0===l)continue;const o=h[i],a=l*n;d.push({time:r.time,value:o}),c.push({time:r.time,value:o+a}),p.push({time:r.time,value:o-a})}return{uy:c,py:d,vy:p}})(t,i);return[[r,s.uy],[h,s.py],[l,s.vy]]},oy:t=>{const i=t.lineWidth??1,s=t.lineStyle;r.applyOptions({color:t.colorUpper,lineWidth:i,lineStyle:s}),h.applyOptions({color:t.colorMiddle,lineWidth:Math.min((t.lineWidth??1)+1,4),lineStyle:s}),l.applyOptions({color:t.colorLower,lineWidth:i,lineStyle:s})}});return{upper:r,middle:h,lower:l,...o}}function Kr(t,i,s={}){const e={paneIndex:s.paneIndex??0,period:s.period??20,colorUpper:s.colorUpper??"#089981",colorMiddle:s.colorMiddle??"#787B86",colorLower:s.colorLower??"#F23645",lineWidth:s.lineWidth??1,lineStyle:s.lineStyle??0,showMiddle:s.showMiddle??!0},n=e.paneIndex,r=i.addSeries(nn,{color:e.colorUpper},n),h=i.addSeries(nn,{color:e.colorMiddle},n),l=i.addSeries(nn,{color:e.colorLower},n),o=Hr({n_:t,Yf:i,hy:[r,h,l],Zl:"Donchian Channels",O:e,_y:["period"],ly:(t,i)=>{const s=((t,i)=>{if(!t||t.length<i)return{uy:[],py:[],vy:[]};const s=[],e=[],n=[];for(let r=i-1;r<t.length;r++){let h=-1/0,l=1/0;for(let s=0;s<i;s++){const i=t[r-s],e="high"in i?i.high:i.value,n="low"in i?i.low:i.value;e>h&&(h=e),n<l&&(l=n)}const o=t[r];void 0!==o.time&&h!==-1/0&&l!==1/0&&(s.push({time:o.time,value:h}),n.push({time:o.time,value:l}),e.push({time:o.time,value:(h+l)/2}))}return{uy:s,py:e,vy:n}})(t,i.period??20);return[[r,s.uy],[h,s.py],[l,s.vy]]},oy:t=>{const i=t.lineWidth??1,s=t.lineStyle;r.applyOptions({color:t.colorUpper,lineWidth:i,lineStyle:s}),h.applyOptions({color:t.colorMiddle,lineWidth:i,lineStyle:s,visible:t.showMiddle??!0}),l.applyOptions({color:t.colorLower,lineWidth:i,lineStyle:s})}});return{upper:r,middle:h,lower:l,...o}}function Gr(t,i,s={}){const e={paneIndex:s.paneIndex??0,step:s.step??.02,maxStep:s.maxStep??.2,colorUp:s.colorUp??"#089981",colorDown:s.colorDown??"#F23645",dotSize:s.dotSize??2},n=i.addSeries(nn,{color:e.colorUp,lineVisible:!1,pointMarkersVisible:!0,pointMarkersRadius:e.dotSize},e.paneIndex),r=(t,i,s,e,n)=>{if(!t||t.length<3)return[];const r=t[0],h=t[1];if(!("high"in r)||!("low"in r))return[];const l=[];let o=h.close>=r.close,a=o?r.low:r.high,_=o?h.high:h.low,u=i;for(let r=1;r<t.length;r++){const h=t[r],c=t[r-1];if("high"in h&&"low"in h&&(a+=u*(_-a),o?(a=Math.min(a,c.low,t[r-2]?t[r-2].low:c.low),h.low<a?(o=!1,a=_,_=h.low,u=i):h.high>_&&(_=h.high,u=Math.min(u+i,s))):(a=Math.max(a,c.high,t[r-2]?t[r-2].high:c.high),h.high>a?(o=!0,a=_,_=h.high,u=i):h.low<_&&(_=h.low,u=Math.min(u+i,s))),void 0!==h.time)){const t={};t.time=h.time,t.value=a,t.color=o?e:n,l.push(t)}}return l},h=Hr({n_:t,Yf:i,hy:[n],Zl:"Parabolic SAR",O:e,_y:["step","maxStep","colorUp","colorDown"],ly:(t,i)=>[[n,r(t,i.step??.02,i.maxStep??.2,i.colorUp??"#089981",i.colorDown??"#F23645")]],oy:t=>{n.applyOptions({pointMarkersRadius:t.dotSize})}});return{series:n,...h}}function Xr(t,i){let s;if("number"==typeof t)s=new Date(1e3*t);else if("string"==typeof t)s=new Date(`${t}T00:00:00Z`);else{if(null===t||"object"!=typeof t||!("year"in t))return null;{const i=t;s=new Date(Date.UTC(i.my,i.wy-1,i.gy))}}if(Number.isNaN(s.getTime()))return null;const e=s.getUTCFullYear();if("monthly"===i)return`${e}-${s.getUTCMonth()}`;if("weekly"===i){const t=new Date(s.getTime()),i=(t.getUTCDay()+6)%7;return t.setUTCDate(t.getUTCDate()-i),`${t.getUTCFullYear()}-${t.getUTCMonth()}-${t.getUTCDate()}`}return`${e}-${s.getUTCMonth()}-${s.getUTCDate()}`}function Zr(t,i,s={}){const e={paneIndex:s.paneIndex??0,anchorPeriod:s.anchorPeriod??"daily",color:s.color??"#2962FF",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??0,bandMultiplier:s.bandMultiplier??0,bandColor:s.bandColor??"#787B86"},n=e.paneIndex,r=i.addSeries(nn,{color:e.color},n),h=i.addSeries(nn,{color:e.bandColor},n),l=i.addSeries(nn,{color:e.bandColor},n),o=Hr({n_:t,Yf:i,hy:[r,h,l],Zl:"VWAP",O:e,_y:["anchorPeriod","bandMultiplier"],ly:(i,s)=>{const e=((i,s,e)=>{const n=[],r=[],h=[];if(!i||0===i.length||!Fr(t))return{by:n,uy:r,vy:h};let l=null,o=0,a=0,_=0;for(const u of i){const i=Xr(u.time,s);if(null===i||void 0===u.time)continue;i!==l&&(l=i,o=0,a=0,_=0);const c="high"in u&&"low"in u&&"close"in u?(u.high+u.low+u.close)/3:u.value,d=Rr(t,u.time)??0;if(o+=d,a+=c*d,_+=c*c*d,0===o)continue;const p=a/o;if(n.push({time:u.time,value:p}),e>0){const t=Math.max(_/o-p*p,0),i=Math.sqrt(t)*e;r.push({time:u.time,value:p+i}),h.push({time:u.time,value:p-i})}}return{by:n,uy:r,vy:h}})(i,s.anchorPeriod??"daily",s.bandMultiplier??0);return[[r,e.by],[h,e.uy],[l,e.vy]]},oy:t=>{const i=t.lineWidth??2,s=t.lineStyle,e=(t.bandMultiplier??0)>0;r.applyOptions({color:t.color,lineWidth:i,lineStyle:s}),h.applyOptions({color:t.bandColor,lineWidth:1,lineStyle:s,visible:e}),l.applyOptions({color:t.bandColor,lineWidth:1,lineStyle:s,visible:e})}});return{series:r,upper:h,lower:l,...o}}function Jr(t,i,s={}){const e={paneIndex:s.paneIndex??0,period:s.period??10,multiplier:s.multiplier??3,colorUp:s.colorUp??"#089981",colorDown:s.colorDown??"#F23645",lineWidth:s.lineWidth??2},n=i.addSeries(nn,{color:e.colorUp,lineWidth:e.lineWidth},e.paneIndex),r=(t,i,s,e,n)=>{if(!t||t.length<i+1)return[];const r=[];for(let i=1;i<t.length;i++){const s=t[i],e=t[i-1];"high"in s&&"low"in s&&"close"in e?r.push(Math.max(s.high-s.low,Math.abs(s.high-e.close),Math.abs(s.low-e.close))):r.push(0)}const h=[];let l=0;for(let t=0;t<i;t++)l+=r[t];h[i-1]=l/i;for(let t=i;t<r.length;t++)h[t]=(h[t-1]*(i-1)+r[t])/i;const o=[];let a=0,_=0,u=!0,c=!1;for(let r=i;r<t.length;r++){const i=t[r],l=t[r-1],d=h[r-1];if(!("high"in i)||!("low"in i)||void 0===d)continue;const p=(i.high+i.low)/2,f=p+s*d,v=p-s*d;if(c?(a=f<a||l.close>a?f:a,_=v>_||l.close<_?v:_,u&&i.close<_?u=!1:!u&&i.close>a&&(u=!0)):(a=f,_=v,u=i.close>=p,c=!0),void 0===i.time)continue;const m={};m.time=i.time,m.value=u?_:a,m.color=u?e:n,o.push(m)}return o},h=Hr({n_:t,Yf:i,hy:[n],Zl:"SuperTrend",_y:["period","multiplier","colorUp","colorDown"],O:e,ly:(t,i)=>[[n,r(t,i.period??10,i.multiplier??3,i.colorUp??"#089981",i.colorDown??"#F23645")]],oy:t=>{n.applyOptions({lineWidth:t.lineWidth})}});return{series:n,...h}}class Qr{constructor(t,i,s,e){this.Rf=t,this.bn=i,this.V_=s,this.My=e}draw(t){const i=this.My();if(!i.Rt||i.yy<=0)return;const s=this.V_();s.length<2||t.useBitmapCoordinateSpace(t=>{const e=t.context,n=this.Rf.timeScale();for(let r=1;r<s.length;r++){const h=s[r-1],l=s[r],o=n.timeToCoordinate(h.gt),a=n.timeToCoordinate(l.gt);if(null===o||null===a)continue;const _=this.bn.priceToCoordinate(h.Sy),u=this.bn.priceToCoordinate(h.xy),c=this.bn.priceToCoordinate(l.Sy),d=this.bn.priceToCoordinate(l.xy);if(null===_||null===u||null===c||null===d)continue;const p=h.Sy>=h.xy;e.fillStyle=this.Cy(p?i.Py:i.Ty,i.yy),e.beginPath(),e.moveTo(o*t.horizontalPixelRatio,_*t.verticalPixelRatio),e.lineTo(a*t.horizontalPixelRatio,c*t.verticalPixelRatio),e.lineTo(a*t.horizontalPixelRatio,d*t.verticalPixelRatio),e.lineTo(o*t.horizontalPixelRatio,u*t.verticalPixelRatio),e.closePath(),e.fill()}})}Cy(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}}class th{constructor(t,i,s,e){this.Jt=new Qr(t,i,s,e)}renderer(){return this.Jt}zOrder(){return"bottom"}}function ih(t,i,s){if(i<s-1)return null;let e=-1/0,n=1/0;for(let r=0;r<s;r++){const s=t[i-r],h="high"in s?s.high:s.value,l="low"in s?s.low:s.value;h>e&&(e=h),l<n&&(n=l)}return e===-1/0?null:(e+n)/2}function sh(t,i,s={}){const e={paneIndex:s.paneIndex??0,conversionPeriod:s.conversionPeriod??9,basePeriod:s.basePeriod??26,spanBPeriod:s.spanBPeriod??52,displacement:s.displacement??26,colorConversion:s.colorConversion??"#2962FF",colorBase:s.colorBase??"#F23645",colorSpanA:s.colorSpanA??"#089981",colorSpanB:s.colorSpanB??"#F23645",colorLagging:s.colorLagging??"#787B86",cloudBullishColor:s.cloudBullishColor??"#089981",cloudBearishColor:s.cloudBearishColor??"#F23645",cloudOpacity:s.cloudOpacity??.15,showCloud:s.showCloud??!0,showLagging:s.showLagging??!0,lineWidth:s.lineWidth??1},n=e.paneIndex,r=t=>i.addSeries(nn,{color:t},n),h=r(e.colorConversion),l=r(e.colorBase),o=r(e.colorSpanA),a=r(e.colorSpanB),_=r(e.colorLagging);let u=[],c=e;const d=new th(i,t,()=>u,()=>({Py:c.cloudBullishColor??"#089981",Ty:c.cloudBearishColor??"#F23645",yy:c.cloudOpacity??.15,Rt:c.showCloud??!0})),p={attached:t=>{},detached:()=>{},paneViews:()=>[d],updateAllViews:()=>{}};t.attachPrimitive(p);const f=(t,i)=>{const s=i.conversionPeriod??9,e=i.basePeriod??26,n=i.spanBPeriod??52,r=i.displacement??26,h=[],l=[],o=[],a=[],_=[],u=[];if(!t||t.length<n)return{ky:h,nh:l,Sy:o,xy:a,Dy:_,Iy:u};const c=function(t){if(t.length<3)return null;const i=new Map;let s=null,e=0;for(let n=1;n<t.length;n++){const r=t[n-1].time,h=t[n].time;if("number"!=typeof r||"number"!=typeof h)return null;const l=h-r;if(l<=0)continue;const o=(i.get(l)??0)+1;i.set(l,o),o>e&&(e=o,s=l)}return s}(t),d=i=>{if(i<t.length)return t[i].time;if(null===c)return null;return t[t.length-1].time+c*(i-t.length+1)},p=new Map,f=new Map;for(let i=0;i<t.length;i++){const o=t[i];if(void 0===o.time)continue;const a=ih(t,i,s),u=ih(t,i,e);null!==a&&h.push({time:o.time,value:a}),null!==u&&l.push({time:o.time,value:u}),null!==a&&null!==u&&p.set(i+r,(a+u)/2);const c=ih(t,i,n);null!==c&&f.set(i+r,c);const d=i-r;if(d>=0&&void 0!==t[d].time){const i="close"in o?o.close:o.value;_.push({time:t[d].time,value:i})}}const v=t.length-1+r;for(let t=0;t<=v;t++){const i=d(t);if(null==i)continue;const s=p.get(t),e=f.get(t);if(void 0!==s&&o.push({time:i,value:s}),void 0!==e&&a.push({time:i,value:e}),void 0!==s&&void 0!==e){const t={gt:i,Sy:s,xy:e};u.push(t)}}return{ky:h,nh:l,Sy:o,xy:a,Dy:_,Iy:u}},v=Hr({n_:t,Yf:i,hy:[h,l,o,a,_],Zl:"Ichimoku",O:e,_y:["conversionPeriod","basePeriod","spanBPeriod","displacement"],ly:(t,i)=>{c=i;const s=f(t,i);return u=s.Iy,[[h,s.ky],[l,s.nh],[o,s.Sy],[a,s.xy],[_,i.showLagging??1?s.Dy:[]]]},oy:t=>{c=t;const s=t.lineWidth??1;h.applyOptions({color:t.colorConversion,lineWidth:s}),l.applyOptions({color:t.colorBase,lineWidth:s}),o.applyOptions({color:t.colorSpanA,lineWidth:s}),a.applyOptions({color:t.colorSpanB,lineWidth:s}),_.applyOptions({color:t.colorLagging,lineWidth:s,visible:t.showLagging??!0}),i.timeScale().applyOptions({})}}),m=v.remove;return{conversion:h,base:l,spanA:o,spanB:a,lagging:_,...v,remove:()=>{try{t.detachPrimitive(p)}catch(t){}u=[],m()}}}function eh(t,i,s={}){const e={paneIndex:s.paneIndex??0,pivotPeriod:s.pivotPeriod??"daily",levels:s.levels??3,colorPivot:s.colorPivot??"#FF6D00",colorResistance:s.colorResistance??"#F23645",colorSupport:s.colorSupport??"#089981",lineWidth:s.lineWidth??1,lineStyle:s.lineStyle??2},n=e.paneIndex,r=t=>i.addSeries(nn,{color:t},n),h=r(e.colorPivot),l=[r(e.colorResistance),r(e.colorResistance),r(e.colorResistance)],o=[r(e.colorSupport),r(e.colorSupport),r(e.colorSupport)],a=Hr({n_:t,Yf:i,hy:[h,...l,...o],Zl:"Pivot Points",O:e,_y:["pivotPeriod"],ly:(t,i)=>{const s=((t,i)=>{const s=[],e=[[],[],[]],n=[[],[],[]];if(!t||0===t.length)return{Vy:s,Ry:e,Fy:n};let r=null,h=-1/0,l=1/0,o=0,a=null;for(const _ of t){const t=Xr(_.time,i);if(null===t)continue;if(null===r)r=t;else if(t!==r){const i=(h+l+o)/3,s=h-l;a={Ly:i,Ay:[2*i-l,i+s,h+2*(i-l)],By:[2*i-h,i-s,l-2*(h-i)]},r=t,h=-1/0,l=1/0}const u="high"in _?_.high:_.value,c="low"in _?_.low:_.value;if(u>h&&(h=u),c<l&&(l=c),o="close"in _?_.close:_.value,null!==a&&void 0!==_.time){s.push({time:_.time,value:a.Ly});for(let t=0;t<3;t++)e[t].push({time:_.time,value:a.Ay[t]}),n[t].push({time:_.time,value:a.By[t]})}}return{Vy:s,Ry:e,Fy:n}})(t,i.pivotPeriod??"daily"),e=Math.max(1,Math.min(i.levels??3,3)),n=[[h,s.Vy]];for(let t=0;t<3;t++)n.push([l[t],t<e?s.Ry[t]:[]]),n.push([o[t],t<e?s.Fy[t]:[]]);return n},oy:t=>{const i=t.lineWidth??1,s=t.lineStyle,e=Math.max(1,Math.min(t.levels??3,3));h.applyOptions({color:t.colorPivot,lineWidth:i,lineStyle:s});for(let n=0;n<3;n++)l[n].applyOptions({color:t.colorResistance,lineWidth:i,lineStyle:s,visible:n<e}),o[n].applyOptions({color:t.colorSupport,lineWidth:i,lineStyle:s,visible:n<e})}});return{pivot:h,resistances:l,supports:o,...a}}function nh(t){return null!=t&&"number"==typeof t.close}function rh(t){const i=[];let s=null,e=null;for(const n of t){if(!nh(n)){null!=n&&i.push({time:n.time,customValues:n.customValues});continue}const t=(n.open+n.high+n.low+n.close)/4,r=null===s||null===e?(n.open+n.close)/2:(s+e)/2;i.push({time:n.time,open:r,high:Math.max(n.high,r,t),low:Math.min(n.low,r,t),close:t,customValues:n.customValues}),s=r,e=t}return i}function hh(t,i,s={}){const e={paneIndex:s.paneIndex??0,upColor:s.upColor??"#26a69a",downColor:s.downColor??"#ef5350",borderVisible:s.borderVisible??!0,borderUpColor:s.borderUpColor??"#26a69a",borderDownColor:s.borderDownColor??"#ef5350",wickVisible:s.wickVisible??!0,wickUpColor:s.wickUpColor??"#26a69a",wickDownColor:s.wickDownColor??"#ef5350",hideSource:s.hideSource??!0},n=t.options(),r=i.addSeries(Vn,{upColor:e.upColor,downColor:e.downColor,borderVisible:e.borderVisible,borderUpColor:e.borderUpColor,borderDownColor:e.borderDownColor,wickVisible:e.wickVisible,wickUpColor:e.wickUpColor,wickDownColor:e.wickDownColor,priceScaleId:n.priceScaleId,priceFormat:n.priceFormat},e.paneIndex);let h=null;const l=i=>{i&&null===h?h=Ar(t):i||null===h||(h(),h=null)},o=Hr({n_:t,Yf:i,hy:[r],Zl:"Heikin Ashi",O:e,_y:[],ly:t=>[[r,rh(t)]],oy:t=>{r.applyOptions({upColor:t.upColor,downColor:t.downColor,borderVisible:t.borderVisible,borderUpColor:t.borderUpColor,borderDownColor:t.borderDownColor,wickVisible:t.wickVisible,wickUpColor:t.wickUpColor,wickDownColor:t.wickDownColor}),l(!0===t.hideSource)}});return{Oa:r,options:o.options,applyOptions:o.applyOptions,recalculate:o.recalculate,remove:()=>{o.remove();try{l(!1)}catch(t){}}}}function lh(t,i,s={}){const e={paneIndex:s.paneIndex??1,period:s.period??14,color:s.color??"#9C27B0",lineWidth:s.lineWidth??2,source:s.source??"close",lineStyle:s.lineStyle??0,overbought:void 0===s.overbought?70:s.overbought,oversold:void 0===s.oversold?30:s.oversold,levelColor:s.levelColor??"#787B86"},n=e.paneIndex,r=i.addSeries(nn,{color:e.color,lineWidth:e.lineWidth,priceFormat:{type:"price",precision:2,minMove:.01},autoscaleInfoProvider:Wr(0,100)},n),h=Er(i,r,n);i.priceScale(r.options().priceScaleId??"right",h).applyOptions({scaleMargins:{top:.1,bottom:.1},borderVisible:!1});const l=zr(r,e.levelColor),o=(t,i,s)=>{if(!t||t.length<i+1)return[];const e=Or(t,s),n=[],r=[];for(let t=1;t<e.length;t++)r.push(e[t]-e[t-1]);let h=0,l=0;for(let t=0;t<i;t++)r[t]>0?h+=r[t]:l+=Math.abs(r[t]);h/=i,l/=i;let o=0===l?100:h/l,a=100-100/(1+o);t[i]&&t[i].time&&n.push({time:t[i].time,value:a});for(let s=i;s<r.length;s++){const e=r[s];h=(h*(i-1)+(e>0?e:0))/i,l=(l*(i-1)+(e<0?Math.abs(e):0))/i,o=0===l?100:h/l,a=100-100/(1+o),t[s+1]&&t[s+1].time&&n.push({time:t[s+1].time,value:a})}return n},a=Hr({n_:t,Yf:i,hy:[r],Zl:"RSI",O:e,_y:["period","source"],ly:(t,i)=>[[r,o(t,i.period??14,i.source??"close")]],oy:t=>{r.applyOptions({color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle}),l([t.overbought,t.oversold].filter(t=>"number"==typeof t))}});return{series:r,...a}}function oh(t,i,s={}){const e={paneIndex:s.paneIndex??2,fastPeriod:s.fastPeriod??12,slowPeriod:s.slowPeriod??26,signalPeriod:s.signalPeriod??9,colorMACD:s.colorMACD??"#2196F3",colorSignal:s.colorSignal??"#FF6D00",colorHistogramUp:s.colorHistogramUp??"#26a69a",colorHistogramDown:s.colorHistogramDown??"#ef5350",lineWidth:s.lineWidth??2},n=e.paneIndex,r=i.addSeries(nn,{color:e.colorMACD},n),h=i.addSeries(nn,{color:e.colorSignal},n),l=i.addSeries(Ln,{color:e.colorHistogramUp},n),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},a=Hr({n_:t,Yf:i,hy:[r,h,l],Zl:"MACD",O:e,_y:["fastPeriod","slowPeriod","signalPeriod","colorHistogramUp","colorHistogramDown"],ly:(t,i)=>{const s=((t,i)=>{const s=i.fastPeriod??12,e=i.slowPeriod??26,n=i.signalPeriod??9;if(!t||t.length<e+n)return{Wy:[],Ey:[],Oy:[]};const r=[];for(const i of t)"close"in i?r.push(i.close):"value"in i?r.push(i.value):r.push(0);const h=o(r,s),l=o(r,e),a=[],_=e-s;for(let t=0;t<l.length;t++)a.push(h[t+_]-l[t]);const u=o(a,n),c=[],d=[],p=[],f=e-1;for(let s=n-1;s<u.length;s++){const e=f+s;if(t[e]&&t[e].time){const n=t[e].time,r=a[s],h=u[s],l=r-h;c.push({time:n,value:r}),d.push({time:n,value:h}),p.push({time:n,value:l,color:l>=0?i.colorHistogramUp:i.colorHistogramDown})}}return{Wy:c,Ey:d,Oy:p}})(t,i);return[[r,s.Wy],[h,s.Ey],[l,s.Oy]]},oy:t=>{const i=t.lineWidth??2;r.applyOptions({color:t.colorMACD,lineWidth:i}),h.applyOptions({color:t.colorSignal,lineWidth:i})}});return{macd:r,signal:h,histogram:l,...a}}function ah(t,i,s={}){const e={paneIndex:s.paneIndex??4,kPeriod:s.kPeriod??14,dPeriod:s.dPeriod??3,colorK:s.colorK??"#2196F3",colorD:s.colorD??"#FF6D00",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??0,overbought:void 0===s.overbought?80:s.overbought,oversold:void 0===s.oversold?20:s.oversold,levelColor:s.levelColor??"#787B86"},n=e.paneIndex,r=Wr(0,100),h=i.addSeries(nn,{color:e.colorK,autoscaleInfoProvider:r},n),l=i.addSeries(nn,{color:e.colorD,autoscaleInfoProvider:r},n),o=Er(i,h,n);i.priceScale(h.options().priceScaleId??"right",o).applyOptions({scaleMargins:{top:.1,bottom:.1}});const a=zr(h,e.levelColor),_=Hr({n_:t,Yf:i,hy:[h,l],Zl:"Stochastic",O:e,_y:["kPeriod","dPeriod"],ly:(t,i)=>{const s=((t,i,s)=>{if(!t||t.length<i)return{zy:[],$y:[]};const e=[];for(let s=i-1;s<t.length;s++){let n=-1/0,r=1/0;for(let e=0;e<i;e++){const i=t[s-e];"high"in i&&"low"in i&&(n=Math.max(n,i.high),r=Math.min(r,i.low))}const h=t[s];if("close"in h){const t=(h.close-r)/(n-r)*100;e.push(t)}}const n=[];for(let s=0;s<e.length;s++){const r=i-1+s;t[r]&&t[r].time&&n.push({time:t[r].time,value:e[s]})}const r=[];if(e.length>=s)for(let n=s-1;n<e.length;n++){let h=0;for(let t=0;t<s;t++)h+=e[n-t];const l=h/s,o=i-1+n;t[o]&&t[o].time&&r.push({time:t[o].time,value:l})}return{zy:n,$y:r}})(t,i.kPeriod??14,i.dPeriod??3);return[[h,s.zy],[l,s.$y]]},oy:t=>{const i=t.lineWidth??2,s=t.lineStyle;h.applyOptions({color:t.colorK,lineWidth:i,lineStyle:s}),l.applyOptions({color:t.colorD,lineWidth:i,lineStyle:s}),a([t.overbought,t.oversold].filter(t=>"number"==typeof t))}});return{k:h,d:l,..._}}function _h(t,i,s={}){const e={paneIndex:s.paneIndex??6,period:s.period??14,color:s.color??"#FF9800",lineWidth:s.lineWidth??2},n=i.addSeries(nn,{color:e.color,lineWidth:e.lineWidth},e.paneIndex),r=(t,i)=>{if(!t||t.length<i+1)return[];const s=[];for(let i=1;i<t.length;i++){const e=t[i],n=t[i-1];if("high"in e&&"low"in e&&"close"in n){const t=e.high-e.low,i=Math.abs(e.high-n.close),r=Math.abs(e.low-n.close),h=Math.max(t,i,r);s.push(h)}}if(s.length<i)return[];const e=[];let n=0;for(let t=0;t<i;t++)n+=s[t];n/=i,t[i]&&t[i].time&&e.push({time:t[i].time,value:n});for(let r=i;r<s.length;r++)n=(n*(i-1)+s[r])/i,t[r+1]&&t[r+1].time&&e.push({time:t[r+1].time,value:n});return e},h=Hr({n_:t,Yf:i,hy:[n],Zl:"ATR",O:e,_y:["period"],ly:(t,i)=>[[n,r(t,i.period??14)]],oy:t=>{n.applyOptions({color:t.color,lineWidth:t.lineWidth})}});return{series:n,...h}}function uh(t,i,s={}){const e={paneIndex:s.paneIndex??3,colorUp:s.colorUp??"#26a69a",colorDown:s.colorDown??"#ef5350"},n=e.paneIndex,r=i.addSeries(Ln,{color:e.colorUp,priceFormat:{type:"volume"},priceScaleId:""},n),h=Er(i,r,n);i.priceScale(r.options().priceScaleId??"right",h).applyOptions({scaleMargins:{top:.8,bottom:0}});const l=(i,s)=>{const e=t.data();if(!e||0===e.length||!Fr(t))return[];const n=[];for(const r of e){const e=Rr(t,r.time);e&&"close"in r&&"open"in r&&n.push({time:r.time,value:e,color:r.close>=r.open?i:s})}return n},o=Hr({n_:t,Yf:i,hy:[r],Zl:"Volume",O:e,_y:["colorUp","colorDown"],ly:(t,i)=>[[r,l(i.colorUp??"#26a69a",i.colorDown??"#ef5350")]]});return{series:r,...o}}function ch(t,i,s={}){const e={paneIndex:s.paneIndex??5,color:s.color??"#2196F3",lineWidth:s.lineWidth??2,data:s.data},n=i.addSeries(nn,{color:e.color,lineWidth:e.lineWidth},e.paneIndex),r=()=>{const i=t.data();if(!i||i.length<2||!Fr(t))return[];const s=[];let e=0;s.push({time:i[0].time,value:e});for(let n=1;n<i.length;n++){const r=i[n],h=i[n-1],l=Rr(t,r.time);l&&"close"in r&&"close"in h&&(r.close>h.close?e+=l:r.close<h.close&&(e-=l),s.push({time:r.time,value:e}))}return s},h=Hr({n_:t,Yf:i,hy:[n],Zl:"OBV",O:e,ly:()=>[[n,r()]],oy:t=>{n.applyOptions({color:t.color,lineWidth:t.lineWidth})}});return{series:n,...h}}function dh(t,i,s={}){const e={paneIndex:s.paneIndex??7,period:s.period??14,colorADX:s.colorADX??"#F23645",colorPlusDI:s.colorPlusDI??"#089981",colorMinusDI:s.colorMinusDI??"#2962FF",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??0,threshold:void 0===s.threshold?25:s.threshold,levelColor:s.levelColor??"#787B86",showDI:s.showDI??!0},n=e.paneIndex,r=Wr(0,100),h=i.addSeries(nn,{color:e.colorADX,autoscaleInfoProvider:r},n),l=i.addSeries(nn,{color:e.colorPlusDI,autoscaleInfoProvider:r},n),o=i.addSeries(nn,{color:e.colorMinusDI,autoscaleInfoProvider:r},n),a=Er(i,h,n);i.priceScale(h.options().priceScaleId??"right",a).applyOptions({scaleMargins:{top:.1,bottom:.1}});const _=zr(h,e.levelColor),u=Hr({n_:t,Yf:i,hy:[h,l,o],Zl:"ADX",O:e,_y:["period"],ly:(t,i)=>{const s=((t,i)=>{if(!t||t.length<2*i)return{Hy:[],Ny:[],Uy:[]};const s=[],e=[],n=[];for(let i=1;i<t.length;i++){const r=t[i],h=t[i-1];if(!("high"in r)||!("low"in r)||!("close"in h)){s.push(0),e.push(0),n.push(0);continue}s.push(Math.max(r.high-r.low,Math.abs(r.high-h.close),Math.abs(r.low-h.close)));const l=r.high-h.high,o=h.low-r.low;e.push(l>o&&l>0?l:0),n.push(o>l&&o>0?o:0)}let r=0,h=0,l=0;for(let t=0;t<i;t++)r+=s[t],h+=e[t],l+=n[t];const o=[],a=[],_=[],u=[];for(let c=i;c<s.length;c++){r=r-r/i+s[c],h=h-h/i+e[c],l=l-l/i+n[c];const d=0===r?0:h/r*100,p=0===r?0:l/r*100,f=d+p,v=0===f?0:Math.abs(d-p)/f*100;u.push(v);const m=t[c+1];if(m&&void 0!==m.time)if(a.push({time:m.time,value:d}),_.push({time:m.time,value:p}),u.length===i){let t=0;for(const i of u)t+=i;o.push({time:m.time,value:t/i})}else if(u.length>i){const t=o[o.length-1].value;o.push({time:m.time,value:(t*(i-1)+v)/i})}}return{Hy:o,Ny:a,Uy:_}})(t,i.period??14),e=i.showDI??!0;return[[h,s.Hy],[l,e?s.Ny:[]],[o,e?s.Uy:[]]]},oy:t=>{const i=t.lineWidth??2,s=t.lineStyle;h.applyOptions({color:t.colorADX,lineWidth:i,lineStyle:s}),l.applyOptions({color:t.colorPlusDI,lineWidth:i,lineStyle:s,visible:t.showDI??!0}),o.applyOptions({color:t.colorMinusDI,lineWidth:i,lineStyle:s,visible:t.showDI??!0}),_("number"==typeof t.threshold?[t.threshold]:[])}});return{adx:h,plusDI:l,minusDI:o,...u}}function ph(t,i,s={}){const e={paneIndex:s.paneIndex??8,period:s.period??20,color:s.color??"#2962FF",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??0,overbought:void 0===s.overbought?100:s.overbought,oversold:void 0===s.oversold?-100:s.oversold,levelColor:s.levelColor??"#787B86"},n=e.paneIndex,r=i.addSeries(nn,{color:e.color,lineWidth:e.lineWidth},n),h=Er(i,r,n);i.priceScale(r.options().priceScaleId??"right",h).applyOptions({scaleMargins:{top:.1,bottom:.1}});const l=zr(r,e.levelColor),o=(t,i)=>{if(!t||t.length<i)return[];const s=[];for(const i of t)"high"in i&&"low"in i&&"close"in i?s.push((i.high+i.low+i.close)/3):s.push("value"in i?i.value:0);const e=[];for(let n=i-1;n<s.length;n++){let r=0;for(let t=0;t<i;t++)r+=s[n-t];const h=r/i;let l=0;for(let t=0;t<i;t++)l+=Math.abs(s[n-t]-h);const o=l/i,a=0===o?0:(s[n]-h)/(.015*o);t[n]&&void 0!==t[n].time&&e.push({time:t[n].time,value:a})}return e},a=Hr({n_:t,Yf:i,hy:[r],Zl:"CCI",O:e,_y:["period"],ly:(t,i)=>[[r,o(t,i.period??20)]],oy:t=>{r.applyOptions({color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle}),l([t.overbought,t.oversold].filter(t=>"number"==typeof t))}});return{series:r,...a}}function fh(t,i,s={}){const e={paneIndex:s.paneIndex??9,period:s.period??14,color:s.color??"#FF6D00",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??0,overbought:void 0===s.overbought?-20:s.overbought,oversold:void 0===s.oversold?-80:s.oversold,levelColor:s.levelColor??"#787B86"},n=e.paneIndex,r=i.addSeries(nn,{color:e.color,lineWidth:e.lineWidth,autoscaleInfoProvider:Wr(-100,0)},n),h=Er(i,r,n);i.priceScale(r.options().priceScaleId??"right",h).applyOptions({scaleMargins:{top:.1,bottom:.1}});const l=zr(r,e.levelColor),o=(t,i)=>{if(!t||t.length<i)return[];const s=[];for(let e=i-1;e<t.length;e++){let n=-1/0,r=1/0;for(let s=0;s<i;s++){const i=t[e-s];"high"in i&&"low"in i&&(n=Math.max(n,i.high),r=Math.min(r,i.low))}const h=t[e];if(!("close"in h)||void 0===h.time)continue;const l=n-r,o=0===l?0:(n-h.close)/l*-100;s.push({time:h.time,value:o})}return s},a=Hr({n_:t,Yf:i,hy:[r],Zl:"Williams %R",O:e,_y:["period"],ly:(t,i)=>[[r,o(t,i.period??14)]],oy:t=>{r.applyOptions({color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle}),l([t.overbought,t.oversold].filter(t=>"number"==typeof t))}});return{series:r,...a}}function vh(t,i,s={}){const e={paneIndex:s.paneIndex??10,period:s.period??14,color:s.color??"#9C27B0",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??0,overbought:void 0===s.overbought?80:s.overbought,oversold:void 0===s.oversold?20:s.oversold,levelColor:s.levelColor??"#787B86"},n=e.paneIndex,r=i.addSeries(nn,{color:e.color,lineWidth:e.lineWidth,autoscaleInfoProvider:Wr(0,100)},n),h=Er(i,r,n);i.priceScale(r.options().priceScaleId??"right",h).applyOptions({scaleMargins:{top:.1,bottom:.1}});const l=zr(r,e.levelColor),o=(i,s)=>{if(!i||i.length<s+1||!Fr(t))return[];const e=[],n=[];for(let s=1;s<i.length;s++){const r=i[s],h=i[s-1];if(!("high"in r)||!("low"in r)||!("close"in r)){e.push(0),n.push(0);continue}const l=(r.high+r.low+r.close)/3,o=(h.high+h.low+h.close)/3,a=l*(Rr(t,r.time)??0);e.push(l>o?a:0),n.push(l<o?a:0)}const r=[];for(let t=s-1;t<e.length;t++){let h=0,l=0;for(let i=0;i<s;i++)h+=e[t-i],l+=n[t-i];const o=0===l?100:100-100/(1+h/l),a=i[t+1];a&&void 0!==a.time&&r.push({time:a.time,value:o})}return r},a=Hr({n_:t,Yf:i,hy:[r],Zl:"MFI",O:e,_y:["period"],ly:(t,i)=>[[r,o(t,i.period??14)]],oy:t=>{r.applyOptions({color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle}),l([t.overbought,t.oversold].filter(t=>"number"==typeof t))}});return{series:r,...a}}class mh{constructor(t){this.qy=t}draw(t){t.useBitmapCoordinateSpace(t=>{const i=t.context,s=this.qy.getSessionBoxes();if(s&&0!==s.length)for(const e of s)this.Yy(i,e,t.horizontalPixelRatio,t.verticalPixelRatio)})}Yy(t,i,s,e){const n=i.jy||i.startTime,r=i.Ky||i.endTime,h=i.I||i.color,l=i.yy||i.opacity;if(!i||!n||!r)return;const o=this.qy.getChart().timeScale(),a=o.timeToCoordinate(n),_=o.timeToCoordinate(r);if(null===a||null===_)return;const u=a*s,c=_*s,d=0*e,p=t.canvas.height/e*e;t.fillStyle=this.Gy(h,l),t.fillRect(u,d,c-u,p-d)}Gy(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}}class wh{constructor(t){this.Jt=new mh(t)}renderer(){return this.Jt}zOrder(){return"bottom"}}const gh=[{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 bh{constructor(t,i,s={}){this.Xy=[],this.Ub=null,this.eh=null,this.Rf=t,this.bn=i,this.Ps={sessions:s.sessions||gh,showOverlaps:s.showOverlaps??!0,overlapColor:s.overlapColor||"#9C27B0",overlapOpacity:s.overlapOpacity||.15,enabled:s.enabled??!0},this.Zy(),this.Ps.enabled&&this.Jy()}Zy(){this.eh=new wh(this);const t={attached:t=>{},detached:()=>{},paneViews:()=>this.eh?[this.eh]:[],updateAllViews:()=>{this.eh}};this.Ub=t,this.bn.attachPrimitive(t)}Jy(){this.Rf.timeScale().subscribeVisibleLogicalRangeChange(()=>{this.Qy()}),this.Qy()}Qy(){this.tS();const t=this.Rf.timeScale().getVisibleLogicalRange();if(!t)return;const i=this.bn.data();if(!i||0===i.length)return;const s=i.filter((i,s)=>s>=t.from&&s<=t.to);this.iS(s),this.cM()}iS(t){if(0!==t.length){for(const i of this.Ps.sessions)this.sS(i,t);this.Ps.showOverlaps&&this.eS(t)}}sS(t,i){let s=null,e=[];for(const n of i){const i=n.time,r=this.nS(i);this.rS(r,t.startHour,t.endHour)?(s||(s=i),e.push(n)):s&&e.length>0&&(this.hS(s,e[e.length-1].time,t),s=null,e=[])}s&&e.length>0&&this.hS(s,e[e.length-1].time,t)}eS(t){const i=this.Ps.sessions;for(let s=0;s<i.length;s++)for(let e=s+1;e<i.length;e++){const n=i[s],r=i[e],h=this.lS(n,r);h&&this.oS(h,t)}}lS(t,i){const s=Math.max(t.startHour,i.startHour),e=Math.min(t.endHour,i.endHour);return s<e?{an:s,_n:e}:null}oS(t,i){let s=null,e=[];for(const n of i){const i=n.time,r=this.nS(i);r>=t.an&&r<t._n?(s||(s=i),e.push(n)):s&&e.length>0&&(this.aS(s,e[e.length-1].time),s=null,e=[])}s&&e.length>0&&this.aS(s,e[e.length-1].time)}hS(t,i,s){if(!t||!i)return void console.warn("Invalid session box times:",{startTime:t,endTime:i,session:s.name});const e={le:"session",jy:t,Ky:i,I:s.color,yy:s.opacity,_S:s.name};this.Xy.push(e)}aS(t,i){const s={le:"overlap",jy:t,Ky:i,I:this.Ps.overlapColor,yy:this.Ps.overlapOpacity,_S:"Overlap"};this.Xy.push(s)}rS(t,i,s){return i<s?t>=i&&t<s:t>=i||t<s}nS(t){if("number"==typeof t){return new Date(1e3*t).getUTCHours()}if("string"==typeof t){return new Date(t).getUTCHours()}return 0}tS(){this.Xy=[]}applyOptions(t){this.Ps={...this.Ps,...t},this.Ps.enabled?this.Qy():this.tS(),this.cM()}options(){return{...this.Ps}}enable(){this.Ps.enabled=!0,this.Qy(),this.cM()}disable(){this.Ps.enabled=!1,this.tS(),this.cM()}remove(){this.Ub&&this.bn&&this.bn.detachPrimitive(this.Ub),this.tS(),this.cM()}getSessionBoxes(){return this.Xy}getChart(){return this.Rf}getSeries(){return this.bn}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rf.timeScale().applyOptions({})}}function Mh(t,i,s){return new bh(t,i,s)}class yh{constructor(t){this.qy=t}draw(t){t.useBitmapCoordinateSpace(t=>{const i=t.context,s=this.qy.getProfileData();if(!s||0===s.bins.length)return;const e=this.qy.options(),n=this.qy.getSeries(),r=i.canvas.width/t.horizontalPixelRatio,h=Math.min(e.width||100,.2*r),l="right"===e.position?r-h:0;let o=0;for(const t of s.bins)t.volume>o&&(o=t.volume);if(0!==o){for(const r of s.bins)this.uS(i,r,l,h,o,s,e,n,t.horizontalPixelRatio,t.verticalPixelRatio);e.showPOC&&this.cS(i,s.poc,e.pocColor||"#FF6B00",n,r,t.horizontalPixelRatio,t.verticalPixelRatio),e.showValueArea&&this.dS(i,s.valueAreaHigh,s.valueAreaLow,e.valueAreaColor||"#089981",n,r,t.horizontalPixelRatio,t.verticalPixelRatio)}})}uS(t,i,s,e,n,r,h,l,o,a){const _=i.volume/n*e,u=r.binSize/2,c=l.priceToCoordinate(i.priceLevel+u),d=l.priceToCoordinate(i.priceLevel-u);if(null===c||null===d)return;const p=Math.max(Math.abs(d-c)-1,1),f=s*o,v=Math.min(c,d)*a,m=_*o,w=p*a,g=i.priceLevel>=r.valueAreaLow&&i.priceLevel<=r.valueAreaHigh,b=Math.abs(i.priceLevel-r.poc)<1e-5;let M=h.profileColor||"#2962FF",y=h.opacity||.3;b?(M=h.pocColor||"#FF6B00",y=.6):g&&h.showValueArea&&(M=h.valueAreaColor||"#089981",y=.4),t.fillStyle=this.Gy(M,y),t.fillRect(f,v,m,w)}cS(t,i,s,e,n,r,h){const l=e.priceToCoordinate(i);if(null===l)return;const o=l*h;t.strokeStyle=s,t.lineWidth=2*Math.min(r,h),t.setLineDash([5*r,3*r]),t.beginPath(),t.moveTo(0,o),t.lineTo(n*r,o),t.stroke(),t.setLineDash([])}dS(t,i,s,e,n,r,h,l){const o=n.priceToCoordinate(i);if(null!==o){const i=o*l;t.strokeStyle=this.Gy(e,.5),t.lineWidth=1*Math.min(h,l),t.setLineDash([3*h,2*h]),t.beginPath(),t.moveTo(0,i),t.lineTo(r*h,i),t.stroke()}const a=n.priceToCoordinate(s);if(null!==a){const i=a*l;t.strokeStyle=this.Gy(e,.5),t.lineWidth=1*Math.min(h,l),t.setLineDash([3*h,2*h]),t.beginPath(),t.moveTo(0,i),t.lineTo(r*h,i),t.stroke()}t.setLineDash([])}Gy(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}}class Sh{constructor(t){this.Jt=new yh(t)}renderer(){return this.Jt}zOrder(){return"normal"}}class xh{constructor(t,i,s={}){this.pS=null,this.fS=new Map,this.Ub=null,this.eh=null,this.Rf=t,this.bn=i,this.Ps={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.Zy(),this.Jy()}Zy(){this.eh=new Sh(this);const t={attached:t=>{},detached:()=>{},paneViews:()=>this.eh?[this.eh]:[],updateAllViews:()=>{this.eh}};this.Ub=t,this.bn.attachPrimitive(t)}Jy(){this.Rf.timeScale().subscribeVisibleLogicalRangeChange(()=>{this.vS()}),this.vS()}setVolumeData(t){this.fS=t,this.vS()}addVolumeData(t,i){this.fS.set(t,i),this.vS()}vS(){const t=this.Rf.timeScale().getVisibleLogicalRange();if(!t)return;const i=this.bn.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 r=(n-e)/this.Ps.numberOfBins,h=[];for(let t=0;t<this.Ps.numberOfBins;t++)h.push({priceLevel:e+(t+.5)*r,volume:0,percentage:0});let l=0;for(const t of s){const i=t.close||t.value,s=this.fS.get(t.time)||1,n=Math.floor((i-e)/r);h[Math.max(0,Math.min(this.Ps.numberOfBins-1,n))].volume+=s,l+=s}for(const t of h)t.percentage=l>0?t.volume/l*100:0;let o=h[0];for(const t of h)t.volume>o.volume&&(o=t);const a=l*this.Ps.valueAreaPercentage,_=[...h].sort((t,i)=>i.volume-t.volume);let u=0;const c=[];for(const t of _){if(!(u<a))break;c.push(t),u+=t.volume}let d=-1/0,p=1/0;for(const t of c)t.priceLevel>d&&(d=t.priceLevel),t.priceLevel<p&&(p=t.priceLevel);this.pS={bins:h,binSize:r,poc:o.priceLevel,valueAreaHigh:d,valueAreaLow:p,totalVolume:l},this.cM()}getProfileData(){return this.pS}applyOptions(t){this.Ps={...this.Ps,...t},this.vS(),this.cM()}remove(){this.Ub&&this.bn&&this.bn.detachPrimitive(this.Ub),this.pS=null,this.fS.clear(),this.cM()}getChart(){return this.Rf}getSeries(){return this.bn}options(){return this.Ps}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rf.timeScale().applyOptions({})}}function Ch(t,i,s){return new xh(t,i,s)}function Ph(t,i){const s=new Map;for(const t of i)s.set(t.time,t.volume);t.setVolumeData(s)}class Th{constructor(t,i){this.mS=new Map,this.wS=null,this.gS=null,this.bS=null,this.MS=null,this.yS=null,this.SS=null,this.bg=void 0,this.Rf=t,this.kf=i,this.xS=t=>this.CS(t),this.PS=t=>this.TS(t),this.kS=t=>this.DS(t),this.IS=t=>this.VS(t),this.RS=()=>this.FS(),this.LS=t=>{"Escape"===t.key&&this.FS()},this.Rf.subscribeCrosshairMove(this.xS),this.kf.addEventListener("pointerdown",this.PS),this.kf.addEventListener("pointermove",this.kS),this.kf.addEventListener("pointerup",this.IS),this.kf.addEventListener("pointercancel",this.RS),document.addEventListener("keydown",this.LS)}AS(t){this.mS.set(t.id(),t)}BS(t){const i=t.id();this.wS===i&&this.WS(null),this.gS===t&&this.FS(),this.mS.delete(i)}Gi(){return 0===this.mS.size}m(){this.Rf.unsubscribeCrosshairMove(this.xS),this.kf.removeEventListener("pointerdown",this.PS),this.kf.removeEventListener("pointermove",this.kS),this.kf.removeEventListener("pointerup",this.IS),this.kf.removeEventListener("pointercancel",this.RS),document.removeEventListener("keydown",this.LS),this.mS.clear()}CS(t){if(this.SS=t.point?{ut:t.point.x,ct:t.point.y}:null,this.bg=t.paneIndex,null!==this.gS)return;const i=this.ES(t.hoveredObjectId);this.WS(i?i.id():null),this.OS()}TS(t){const i=null===this.wS?null:this.mS.get(this.wS)??null;i&&(this.MS={ut:t.clientX,ct:t.clientY},this.yS=i,i.isDraggable()&&(this.gS=i,this.bS=t.pointerId,this.kf.setPointerCapture(t.pointerId),i.beginDrag(),this.OS(),t.preventDefault(),t.stopPropagation()))}DS(t){if(null===this.gS)return;if(!this.zS(t))return void this.FS();const i=this.$S(t);null!==i&&this.gS.dragTo(i),t.preventDefault(),t.stopPropagation()}VS(t){const i=this.gS,s=this.yS,e=this.MS;this.HS(),this.yS=null,this.MS=null;const n=null!==e&&(Math.abs(t.clientX-e.ut)>4||Math.abs(t.clientY-e.ct)>4);if(null!==i)return this.gS=null,n?i.commitDrag():(i.cancelDrag(),i.isClickable()&&i.click()),void this.OS();null!==s&&!n&&s.isClickable()&&s.click()}FS(){if(null===this.gS)return;const t=this.gS;this.gS=null,this.HS(),t.cancelDrag(),this.OS()}zS(t){const i=this.kf.getBoundingClientRect();return t.clientX>=i.left&&t.clientX<=i.right&&t.clientY>=i.top&&t.clientY<=i.bottom}HS(){null!==this.bS&&(this.kf.hasPointerCapture(this.bS)&&this.kf.releasePointerCapture(this.bS),this.bS=null)}$S(t){const i=this.gS;if(null===i)return null;if(null!==this.SS&&this.bg===i.paneIndex())return i.priceAt(this.SS.ct);const s=this.Rf.panes()[i.paneIndex()],e=s?s.getHTMLElement():null;return e?i.priceAt(t.clientY-e.getBoundingClientRect().top):null}ES(t){return"string"!=typeof t?null:this.mS.get(t)??null}WS(t){this.wS!==t&&(null!==this.wS&&this.mS.get(this.wS)?.setHovered(!1),this.wS=t,null!==t&&this.mS.get(t)?.setHovered(!0))}OS(){if(null!==this.gS)return void this.Rf.chartElement().style.setProperty("cursor","ns-resize");const t=null===this.wS?null:this.mS.get(this.wS);t?this.Rf.chartElement().style.setProperty("cursor",t.isDraggable()?"ns-resize":"pointer"):this.Rf.chartElement().style.removeProperty("cursor")}}const kh=new WeakMap;let Dh=0;class Ih{constructor(t,i,s){this.sr=null,this.NS=!1,this.US="",this.qS=null,this.Rf=t,this.bn=i,this.yo="pipsend-trading-line-"+Dh++,this.Ps={lineWidth:2,lineStyle:0,axisLabelVisible:!0,draggable:!0,hoverColor:"#000000",...s},this.YS(),(this.Ps.draggable||this.Ps.onClick)&&function(t){const i=t.chartElement();if(!i)return null;let s=kh.get(t);return s||(s=new Th(t,i),kh.set(t,s)),s}(this.Rf)?.AS(this)}id(){return this.yo}paneIndex(){try{return this.bn.getPane().paneIndex()}catch(t){return 0}}isDraggable(){return!0===this.Ps.draggable}isClickable(){return void 0!==this.Ps.onClick}setHovered(t){this.NS!==t&&this.sr&&(this.NS=t,this.sr.applyOptions({color:t?this.Ps.hoverColor:this.US}))}priceAt(t){const i=this.bn.coordinateToPrice(t);return null===i?null:i}beginDrag(){this.qS=this.Ps.price,this.Ps.onDragStart&&this.Ps.onDragStart(this.Ps.price)}dragTo(t){this.jS(t),this.Ps.onDragMove&&this.Ps.onDragMove(t)}commitDrag(){this.qS=null,this.Ps.onDragEnd&&this.Ps.onDragEnd(this.Ps.price)}cancelDrag(){const t=this.qS;this.qS=null,null!==t&&t!==this.Ps.price&&(this.jS(t),this.Ps.onDragMove&&this.Ps.onDragMove(t))}click(){this.Ps.onClick&&this.Ps.onClick(this.Ps.price)}applyOptions(t){if(this.Ps={...this.Ps,...t},t.color&&(this.US=t.color),!this.sr)return;const i={title:this.KS()};void 0!==t.price&&(i.price=t.price),void 0===t.color||this.NS||(i.color=t.color),void 0!==t.lineWidth&&(i.lineWidth=t.lineWidth),void 0!==t.lineStyle&&(i.lineStyle=t.lineStyle),this.sr.applyOptions(i)}setTitle(t){this.Ps.title=t,this.sr&&this.sr.applyOptions({title:t})}getPrice(){return this.Ps.price}setPrice(t){this.jS(t)}remove(){!function(t,i){const s=kh.get(t);s&&(s.BS(i),s.Gi()&&(s.m(),kh.delete(t)))}(this.Rf,this),this.sr&&(this.bn.removePriceLine(this.sr),this.sr=null)}getPriceLine(){return this.sr}KS(){if(this.Ps.formatTitle)try{return this.Ps.formatTitle(this.Ps.price)}catch(t){console.error("Error in formatTitle:",t)}return this.Ps.title||""}YS(){this.US=this.Ps.color,this.sr=this.bn.createPriceLine({id:this.yo,price:this.Ps.price,color:this.Ps.color,lineWidth:this.Ps.lineWidth,lineStyle:this.Ps.lineStyle,axisLabelVisible:this.Ps.axisLabelVisible,title:this.KS()})}jS(t){this.Ps.price=t,this.sr&&this.sr.applyOptions({price:t,title:this.KS()})}}function Vh(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,r={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,onClick:s.onClick,formatTitle:s.formatTitle};return new Ih(i,t,r)}class Rh{constructor(t,i){this.Vf=null,this.GS=null,this.XS=null,this.ZS={},this.Rf=t,this.bn=i,this.JS()}JS(){this.Vf=this.Rf.chartElement()}QS(t){const i=this.bn.getPane().getHTMLElement();if(!i)return 0;const s=t.clientY-i.getBoundingClientRect().top,e=this.bn.coordinateToPrice(s);return null===e?0:e}enableClickToCreate(t,i){return this.Vf?(this.GS=t,this.ZS=i||{},new Promise(t=>{this.Vf.style.cursor="crosshair",this.XS=i=>{const s=this.QS(i),e=this.tx(s);this.disableClickToCreate(),t(e)},this.Vf.addEventListener("click",this.XS)})):Promise.resolve(null)}disableClickToCreate(){this.Vf&&this.XS&&(this.Vf.removeEventListener("click",this.XS),this.Vf.style.cursor="default"),this.GS=null,this.XS=null,this.ZS={}}tx(t){if(!this.GS)return null;let i;switch(this.GS){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 Ih(this.Rf,this.bn,i)}getCreationMode(){return this.GS}isCreating(){return null!==this.GS}}function Fh(t,i){return new Rh(t,i)}const Lh=new Set(["line","body","stroke","center","move"]);function Ah(t,i,s){if(null===i)return null;const e=String(i);return{externalId:`${t}#${e}`,zOrder:"normal",cursorStyle:s?Lh.has(e)?"move":"grab":void 0}}function Bh(t,i,s){return t?{bt:s-t.price,gt:null===t.time?0:i-t.time}:{bt:0,gt:0}}var Wh;function Eh(t){if(null==t)return null;if("number"==typeof t||"string"==typeof t)return t;const i=t,s=i.year??i.my;if(void 0!==s){const t={};return t.year=s,t.month=i.month??i.wy,t.day=i.day??i.gy,t}return t}function Oh(t,i){const s={};return s.price=t,s.time=i,s}function zh(t){if(!t)return Oh(0,null);return Oh(t.price??t.bt??0,Eh(t.time??t.gt??null))}function $h(t,i="time"){return t?t[i]??null:null}function Hh(t,i){if(t)return t[i]??void 0}!function(t){t.Idle="idle",t.Creating="creating",t.Editing="editing",t.Dragging="dragging",t.Hovering="hovering"}(Wh||(Wh={}));class Nh{constructor(t,i,s={}){this._state=Wh.Idle,this._visible=!0,this._locked=!1,this._ownOptions=null,this._chart=t.chart,this._series=t.series,this._type=i,this._id=this.ix(),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}ix(){return`${this._type}_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}get id(){return this._id}get type(){return this._type}_registerOptions(t){this._ownOptions=t}options(){return{...this._ownOptions??this._options}}applyOptions(t){null!==this._ownOptions&&Object.assign(this._ownOptions,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}series(){return this._series}getState(){return this._state}serialize(){const t=this._serializeShape();return t.id=this._id,t.visible=this._visible,t.locked=this._locked,t}applySerializedState(t){"string"==typeof t.id&&t.id.length>0&&(this._id=t.id),"boolean"==typeof t.visible&&(this._visible=t.visible),"boolean"==typeof t.locked&&(this._locked=t.locked),this._update()}}const Uh=new WeakMap;function qh(t,i){Uh.set(t,i)}function Yh(t){const i=!0===Uh.get(t);return i&&Uh.set(t,!1),i}function jh(t,i,s,e,n){const r=t.canvas.width/s,h=t.canvas.height/e;if(n.ct<0||n.ct>h)return;let l;try{l=i.priceFormatter().format(n.bt)}catch(t){l=String(n.bt)}t.save(),t.font=11*s+'px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif';const o=t.measureText(l).width/s+10,a=r-o,_=n.ct-8.5;t.fillStyle=n.Et,t.beginPath(),t.rect(a*s,_*e,o*s,17*e),t.fill(),t.fillStyle=n.sx??"#ffffff",t.textAlign="left",t.textBaseline="middle",t.fillText(l,(a+5)*s,n.ct*e),t.restore()}var Kh;!function(t){t.nx="idle",t.hx="waiting_first_point",t.lx="waiting_second_point",t.ox="completed"}(Kh||(Kh={}));class Gh{constructor(t,i,s={}){this.Rv=Kh.nx,this._x=null,this.XS=null,this.sp=null,this.Rf=t,this.bn=i,this.ux=s}vx(){this.Rv===Kh.nx&&(this.Rv=Kh.hx,this._x=null,this.mx(),this.wx())}gx(){this.Rv=Kh.nx,this._x=null,this.bx(),this.Mx(),this.ux.yx&&this.ux.yx()}Sx(){return this.Rv}xx(){return this.Rv===Kh.hx||this.Rv===Kh.lx}mx(){this.XS=t=>{this.Cx(t)},this.Rf.subscribeClick(this.XS)}wx(){this.sp=t=>{this.Px(t)},this.Rf.subscribeCrosshairMove(this.sp)}bx(){this.XS&&(this.Rf.unsubscribeClick(this.XS),this.XS=null)}Mx(){this.sp&&(this.Rf.unsubscribeCrosshairMove(this.sp),this.sp=null)}Cx(t){if(!t.point)return;if(Yh(this.Rf))return;const i=this.bn.coordinateToPrice(t.point.y),s=qe(this.Rf,this.bn,t.point.x);if(null===i||null===s)return;const e={gt:s,bt:i};this.Rv===Kh.hx?(this._x=e,this.Rv=Kh.lx,this.ux.Tx&&this.ux.Tx(e)):this.Rv===Kh.lx&&this._x&&(this.Rv=Kh.ox,this.ux.kx&&this.ux.kx(e),this.ux.Dx&&this.ux.Dx(this._x,e),this.bx(),this.Mx(),this.Rv=Kh.nx,this._x=null)}Px(t){if(!t.point)return;if(this.Rv!==Kh.lx)return;const i=this.bn.coordinateToPrice(t.point.y),s=qe(this.Rf,this.bn,t.point.x);if(null===i||null===s)return;const e={gt:s,bt:i};this.ux.Ix&&this.ux.Ix(e)}m(){this.gx()}}class Xh{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Zh{constructor(t){this.Vx=t,this.Jt=new Xh(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class Jh extends Nh{constructor(t,i){super(t,"trend-line",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Bx=null,this.Wx=null,this.Ex=null,this.Ox=null,this.zx=!1,this.$x=null,this.Hx={lineColor:"#2962ff",lineWidth:2,lineStyle:"solid",extendLeft:!1,extendRight:!1,showPriceLabel:!0,interactive:!1,...i},this._registerOptions(this.Hx),this.Zy(),this.Hx.interactive?this.Nx():this.zx=!0}Nx(){new Gh(this._chart,this._series,{Tx:t=>{this.Hx.point1Time=t.gt,this.Hx.point1Price=t.bt,this.cM()},kx:t=>{this.Hx.point2Time=t.gt,this.Hx.point2Price=t.bt,this.zx=!0,this.cM(),this.Hx.onUpdate&&this.Hx.onUpdate()},Ix:t=>{this.Hx.point1Time&&!this.zx&&(this.$x=t,this.cM())},Dx:()=>{this.zx=!0}}).vx()}Zy(){this.eh=this.Ux();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new Zh(this)}Yx(){if(!this.Hx.point1Time||!this.Hx.point2Time)return null;const t=Ye(this._chart,this._series,this.Hx.point1Time)??0,i=this._series.priceToCoordinate(this.Hx.point1Price)??0,s=Ye(this._chart,this._series,this.Hx.point2Time)??0,e=this._series.priceToCoordinate(this.Hx.point2Price)??0;if(!this.Hx.extendLeft&&!this.Hx.extendRight)return{jx:t,Kx:i,Gx:s,Xx:e};if(s===t)return{jx:t,Kx:i,Gx:s,Xx:e};const n=this._chart.chartElement().clientWidth,r=(e-i)/(s-t);return{jx:this.Hx.extendLeft?0:t,Kx:this.Hx.extendLeft?i-r*t:i,Gx:this.Hx.extendRight?n:s,Xx:this.Hx.extendRight?i+r*(n-t):e}}Zx(){const t=this.Yx();if(null===t)return null;const i=t.Gx>=t.jx?t.Xx:t.Kx,s=this._chart.chartElement().clientHeight;return i>=0&&i<=s?this._series.coordinateToPrice(i):this.Hx.point2Price??this.Hx.point1Price??null}drawToCanvas(t,i,s){if(!this.zx&&this.Hx.point1Time&&this.$x)return void this.Jx(t,i,s);if(!this.Hx.point1Time||!this.Hx.point2Time)return;const e=(Ye(this._chart,this._series,this.Hx.point1Time)??0)*i,n=(this._series.priceToCoordinate(this.Hx.point1Price)??0)*s,r=(Ye(this._chart,this._series,this.Hx.point2Time)??0)*i,h=(this._series.priceToCoordinate(this.Hx.point2Price)??0)*s,l=this.Hx.lineColor,o=this.Fx?this.Hx.lineWidth+1:this.Hx.lineWidth;t.strokeStyle=l,t.lineWidth=o*i,"dashed"===this.Hx.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.Hx.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath();const a=this.Yx();if(null===a)return;t.moveTo(a.jx*i,a.Kx*s),t.lineTo(a.Gx*i,a.Xx*s),t.stroke(),t.setLineDash([]),!this.Fx&&!this.Lx||this.isLocked()||(this.Qx(t,e,n,i,l),this.Qx(t,r,h,i,l));const _=this.Zx();if(!1!==this.Hx.showPriceLabel&&null!==_){const e=this._series.priceToCoordinate(_);null!==e&&jh(t,this._series,i,s,{bt:_,ct:e,Et:l})}}Jx(t,i,s){if(!this.Hx.point1Time||!this.$x)return;const e=(Ye(this._chart,this._series,this.Hx.point1Time)??0)*i,n=(this._series.priceToCoordinate(this.Hx.point1Price)??0)*s,r=(Ye(this._chart,this._series,this.$x.gt)??0)*i,h=(this._series.priceToCoordinate(this.$x.bt)??0)*s;t.strokeStyle=this.Hx.lineColor,t.lineWidth=this.Hx.lineWidth*i,t.globalAlpha=.7,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(e,n),t.lineTo(r,h),t.stroke(),t.setLineDash([]),t.globalAlpha=1,this.Qx(t,e,n,i,this.Hx.lineColor),t.globalAlpha=.5,this.Qx(t,r,h,i,this.Hx.lineColor),t.globalAlpha=1}Qx(t,i,s,e,n){const r=5*e;t.fillStyle=n,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.beginPath(),t.arc(i,s,r,0,2*Math.PI),t.fill(),t.stroke()}setColor(t){this.Hx.lineColor=t,this.cM()}color(){return this.Hx.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}isHovered(){return this.Lx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){const s=this.Yx();if(null===s)return!1;return this.tC(t,i,s.jx,s.Kx,s.Gx,s.Xx)<=8}tC(t,i,s,e,n,r){const h=n-s,l=r-e,o=h*h+l*l;if(0===o)return Math.sqrt((t-s)*(t-s)+(i-e)*(i-e));let a=((t-s)*h+(i-e)*l)/o;a=Math.max(0,Math.min(1,a));const _=s+a*h,u=e+a*l;return Math.sqrt((t-_)*(t-_)+(i-u)*(i-u))}hitTestEndpoint(t,i){if(!this.Hx.point1Time||!this.Hx.point2Time)return null;const s=Ye(this._chart,this._series,this.Hx.point1Time)??0,e=this._series.priceToCoordinate(this.Hx.point1Price)??0,n=Ye(this._chart,this._series,this.Hx.point2Time)??0,r=this._series.priceToCoordinate(this.Hx.point2Price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2))<=10)return"point1";if(Math.sqrt(Math.pow(t-n,2)+Math.pow(i-r,2))<=10)return"point2";return this.tC(t,i,s,e,n,r)<=10?"line":null}startDrag(t,i){this.Ax=!0,this.Bx=t,this.Wx=i,"line"===t&&(this.Ex={gt:this.Hx.point1Time,bt:this.Hx.point1Price},this.Ox={gt:this.Hx.point2Time,bt:this.Hx.point2Price})}stopDrag(){this.Ax=!1,this.Bx=null,this.Wx=null,this.Ex=null,this.Ox=null}updateDrag(t,i){if(this.Ax&&this.Bx){if("point1"===this.Bx)this.Hx.point1Time=t,this.Hx.point1Price=i;else if("point2"===this.Bx)this.Hx.point2Time=t,this.Hx.point2Price=i;else if("line"===this.Bx&&this.Ex&&this.Ox){const s=Bh(this.Wx,t,i);this.Hx.point1Time=this.Ex.gt+s.gt,this.Hx.point1Price=this.Ex.bt+s.bt,this.Hx.point2Time=this.Ox.gt+s.gt,this.Hx.point2Price=this.Ox.bt+s.bt}this.cM(),this.Hx.onUpdate&&this.Hx.onUpdate()}}isVisible(){return this._visible}_serializeShape(){return{type:"trendLine",points:[Oh(this.Hx.point1Price??0,Eh(this.Hx.point1Time)),Oh(this.Hx.point2Price??0,Eh(this.Hx.point2Time))],style:{lineColor:this.Hx.lineColor,lineWidth:this.Hx.lineWidth,lineStyle:this.Hx.lineStyle,extendLeft:this.Hx.extendLeft,extendRight:this.Hx.extendRight}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}remove(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.Hx.onRemove&&this.Hx.onRemove()}}function Qh(t,i){return new Jh(t,i)}class tl{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class il{constructor(t){this.Vx=t,this.Jt=new tl(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class sl extends Nh{constructor(t,i){super(t,"horizontal-line",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Wx=null,this.iC=0,this.sC={lineColor:"#2962ff",lineWidth:2,lineStyle:"solid",showLabel:!0,showPriceLabel:!0,labelText:"",interactive:!1,...i},this._registerOptions(this.sC),this.Zy()}Zy(){this.eh=this.Ux();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new il(this)}eC(){return void 0===this.sC.startTime?0:Ye(this._chart,this._series,this.sC.startTime)??0}drawToCanvas(t,i,s){if(void 0===this.sC.price)return;const e=(this._series.priceToCoordinate(this.sC.price)??0)*s,n=this._chart.chartElement().clientWidth*i,r=this.eC()*i,h=this.sC.lineColor,l=this.Fx?this.sC.lineWidth+1:this.sC.lineWidth;t.strokeStyle=h,t.lineWidth=l*i,"dashed"===this.sC.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.sC.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.moveTo(r,e),t.lineTo(n,e),t.stroke(),t.setLineDash([]),!1!==this.sC.showPriceLabel&&jh(t,this._series,i,s,{bt:this.sC.price,ct:e/s,Et:h}),this.sC.showLabel&&(this.Fx||this.Lx)&&this.nC(t,e,i,s,h)}nC(t,i,s,e,n){const r=this.sC.labelText||this.sC.price.toFixed(4),h=6*s,l=12*s;t.font=`${l}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const o=t.measureText(r).width,a=l,_=10*s,u=i-a/2-h;t.fillStyle=n,t.fillRect(_,u,o+2*h,a+2*h),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(r,_+h,u+h)}setColor(t){this.sC.lineColor=t,this.cM()}color(){return this.sC.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){if(void 0===this.sC.price)return!1;const s=this._series.priceToCoordinate(this.sC.price)??0;return!(t<this.eC()-8)&&Math.abs(i-s)<=8}hitTestEndpoint(t,i){return this.hitTest(t,i)?"line":null}startDrag(t,i){this.Ax=!0,this.Wx=i,this.iC=this.sC.price??0}stopDrag(){this.Ax=!1,this.Wx=null}updateDrag(t,i){this.Ax&&(this.sC.price=this.iC+Bh(this.Wx,t,i).bt,this.cM(),this.sC.onUpdate&&this.sC.onUpdate())}getPrice(){return this.sC.price}setPrice(t){this.sC.price=t,this.cM()}setLabel(t){this.sC.labelText=t,this.cM()}isVisible(){return this._visible}_serializeShape(){return{type:"horizontalLine",points:[Oh(this.sC.price??0,Eh(this.sC.startTime))],style:{lineColor:this.sC.lineColor,lineWidth:this.sC.lineWidth,lineStyle:this.sC.lineStyle,showLabel:this.sC.showLabel,labelText:this.sC.labelText}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}remove(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.sC.onRemove&&this.sC.onRemove()}}function el(t,i){return new sl(t,i)}class nl{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class rl{constructor(t){this.Vx=t,this.Jt=new nl(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class hl extends Nh{constructor(t,i){super(t,"cross-line",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Wx=null,this.rC=0,this.iC=0,this.hC={lineColor:"#787b86",lineWidth:1,lineStyle:"dashed",showPriceLabel:!0,...i},this._registerOptions(this.hC),this.Zy()}Zy(){this.eh=new rl(this);const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}cM(){this.Rx&&this.Rx()}_update(){this.cM()}lC(){if(void 0===this.hC.time||void 0===this.hC.price)return null;const t=Ye(this._chart,this._series,this.hC.time),i=this._series.priceToCoordinate(this.hC.price);return null===t||null===i?null:{ut:t,ct:i}}drawToCanvas(t,i,s){const e=this.lC();if(null===e)return;const n=this._chart.chartElement(),r=n.clientWidth*i,h=n.clientHeight*s,l=e.ut*i,o=e.ct*s,a=this.hC.lineColor,_=this.Fx||this.Lx&&!this.isLocked(),u=_?this.hC.lineWidth+1:this.hC.lineWidth;t.strokeStyle=a,t.lineWidth=u*i,"dashed"===this.hC.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.hC.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.moveTo(0,o),t.lineTo(r,o),t.moveTo(l,0),t.lineTo(l,h),t.stroke(),t.setLineDash([]),!1!==this.hC.showPriceLabel&&void 0!==this.hC.price&&jh(t,this._series,i,s,{bt:this.hC.price,ct:e.ct,Et:a}),_&&!this.isLocked()&&(t.fillStyle=a,t.strokeStyle="#ffffff",t.lineWidth=2*i,t.beginPath(),t.arc(l,o,5*i,0,2*Math.PI),t.fill(),t.stroke())}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){const s=this.lC();if(null===s)return!1;return Math.abs(i-s.ct)<=8||Math.abs(t-s.ut)<=8}hitTestEndpoint(t,i){return this.hitTest(t,i)?"line":null}startDrag(t,i){this.Ax=!0,this.Wx=i,this.rC=this.hC.time,this.iC=this.hC.price??0}updateDrag(t,i){if(!this.Ax)return;const s=Bh(this.Wx,t,i);this.hC.time=this.rC+s.gt,this.hC.price=this.iC+s.bt,this.cM(),this.hC.onUpdate&&this.hC.onUpdate()}stopDrag(){this.Ax=!1,this.Wx=null}setColor(t){this.hC.lineColor=t,this.cM()}color(){return this.hC.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}remove(){if(this.Ub){try{this._series.detachPrimitive(this.Ub)}catch(t){}this.Ub=null}this.Rx=null,this.hC.onRemove&&this.hC.onRemove()}_serializeShape(){return{type:"crossLine",points:[Oh(this.hC.price??0,Eh(this.hC.time))],style:{lineColor:this.hC.lineColor,lineWidth:this.hC.lineWidth,lineStyle:this.hC.lineStyle}}}}function ll(t,i){return new hl(t,i)}class ol{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class al{constructor(t){this.Vx=t,this.Jt=new ol(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class _l extends Nh{constructor(t,i){super(t,"polygon",i),this.V_=[],this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Bx=null,this.Wx=null,this.oC=null,this.zx=!1,this.$x=null,this.XS=null,this.aC=null,this._C=null,this.uC={fillColor:"#2962FF",fillOpacity:.15,borderColor:"#2962FF",borderWidth:2,borderStyle:"solid",interactive:!1,...i},this._registerOptions(this.uC),this.V_=[...i.points??[]],this.Zy(),this.uC.interactive?this.cC():this.zx=this.V_.length>=3}Zy(){this.eh=new al(this);const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}cM(){this.Rx&&this.Rx()}_update(){this.cM()}cC(){this.XS=t=>{if(!t.point||Yh(this._chart))return;const i=this._series.coordinateToPrice(t.point.y),s=qe(this._chart,this._series,t.point.x);null!==i&&null!==s&&(this.V_.length>=3&&this.dC(t.point.x,t.point.y)?this.pC():(this.V_.push({time:s,price:i}),this.cM()))},this.aC=t=>{if(!t.point||this.zx)return;const i=this._series.coordinateToPrice(t.point.y),s=qe(this._chart,this._series,t.point.x);null!==i&&null!==s&&(this.$x={time:s,price:i},this.cM())},this._C=t=>{"Enter"===t.key&&this.V_.length>=3?this.pC():"Escape"===t.key&&(this.V_=[],this.pC())},this._chart.subscribeClick(this.XS),this._chart.subscribeCrosshairMove(this.aC),document.addEventListener("keydown",this._C)}dC(t,i){const s=this.V_[0],e=Ye(this._chart,this._series,s.time),n=this._series.priceToCoordinate(s.price);return null!==e&&null!==n&&(Math.abs(t-e)<=_l.fC&&Math.abs(i-n)<=_l.fC)}pC(){this.zx=!0,this.$x=null,this.vC(),this.cM(),this.uC.onComplete&&this.uC.onComplete(),this.uC.onUpdate&&this.uC.onUpdate()}vC(){this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.aC&&(this._chart.unsubscribeCrosshairMove(this.aC),this.aC=null),this._C&&(document.removeEventListener("keydown",this._C),this._C=null)}mC(){const t=[...this.V_];return this.zx||null===this.$x||t.push(this.$x),this.wC(t)}wC(t){const i=[];for(const s of t){const t=Ye(this._chart,this._series,s.time),e=this._series.priceToCoordinate(s.price);null!==t&&null!==e&&i.push({ut:t,ct:e})}return i}drawToCanvas(t,i,s){const e=this.mC();if(e.length<2)return;const n=this.uC.borderColor,r=this.Fx?this.uC.borderWidth+1:this.uC.borderWidth;t.beginPath(),t.moveTo(e[0].ut*i,e[0].ct*s);for(let n=1;n<e.length;n++)t.lineTo(e[n].ut*i,e[n].ct*s);this.zx&&(t.closePath(),this.uC.fillOpacity>0&&(t.fillStyle=this.Cy(this.uC.fillColor,this.uC.fillOpacity),t.fill())),t.strokeStyle=n,t.lineWidth=r*i,this.zx?"dashed"===this.uC.borderStyle?t.setLineDash([10*i,5*i]):"dotted"===this.uC.borderStyle&&t.setLineDash([2*i,3*i]):t.setLineDash([6*i,4*i]),t.stroke(),t.setLineDash([]);if((this.Fx||this.Lx||!this.zx)&&!this.isLocked())for(const e of this.gC())this.bC(t,e.ut*i,e.ct*s,i,n)}gC(){return this.wC(this.V_)}bC(t,i,s,e,n){t.fillStyle=n,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.beginPath(),t.arc(i,s,5*e,0,2*Math.PI),t.fill(),t.stroke()}Cy(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}qx(t,i){if(!this.isVisible()||!this.zx)return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,`corner-${s}`,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){const s=this.gC();if(s.length<3)return!1;let e=!1;for(let n=0,r=s.length-1;n<s.length;r=n++){s[n].ct>i!=s[r].ct>i&&t<(s[r].ut-s[n].ut)*(i-s[n].ct)/(s[r].ct-s[n].ct)+s[n].ut&&(e=!e)}return e}hitTestEndpoint(t,i){const s=this.gC();for(let e=0;e<s.length;e++)if(Math.abs(t-s[e].ut)<=10&&Math.abs(i-s[e].ct)<=10)return e;return null}startDrag(t,i){this.Ax=!0,this.Bx=t,this.Wx=i,this.oC=this.V_.map(t=>({gt:t.time,bt:t.price}))}updateDrag(t,i){if(this.Ax&&null!==this.Bx&&null!==this.oC){if("shape"===this.Bx){const s=Bh(this.Wx,t,i);this.V_=this.oC.map(t=>({gt:t.time+s.gt,bt:t.price+s.bt}))}else{const s=this.Bx;this.V_[s]&&(this.V_[s]={time:t,price:i})}this.cM(),this.uC.onUpdate&&this.uC.onUpdate()}}stopDrag(){this.Ax=!1,this.Bx=null,this.Wx=null,this.oC=null}setColor(t){this.uC.borderColor=t,this.uC.fillColor=t,this.cM()}color(){return this.uC.borderColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}points(){return this.V_}remove(){if(this.vC(),this.Ub){try{this._series.detachPrimitive(this.Ub)}catch(t){}this.Ub=null}this.Rx=null,this.uC.onRemove&&this.uC.onRemove()}_serializeShape(){return{type:"polygon",points:this.V_.map(t=>Oh(t.price,Eh(t.time))),style:{fillColor:this.uC.fillColor,fillOpacity:this.uC.fillOpacity,borderColor:this.uC.borderColor,borderWidth:this.uC.borderWidth,borderStyle:this.uC.borderStyle}}}}function ul(t,i){return new _l(t,i)}_l.fC=12;class cl{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class dl{constructor(t){this.Vx=t,this.Jt=new cl(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class pl extends Nh{constructor(t,i){super(t,"parallel-channel",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Bx=null,this.Wx=null,this.MC=null,this.zx=!1,this._d=0,this.$x=null,this.XS=null,this.aC=null,this.yC={lineColor:"#2962FF",lineWidth:2,lineStyle:"solid",fillColor:"#2962FF",fillOpacity:.1,channelWidth:0,extendRight:!1,showPriceLabel:!0,interactive:!1,...i},this._registerOptions(this.yC),this.Zy(),this.yC.interactive?this.cC():this.zx=!0}Zy(){this.eh=new dl(this);const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}cM(){this.Rx&&this.Rx()}_update(){this.cM()}cC(){this.XS=t=>{if(!t.point||Yh(this._chart))return;const i=this._series.coordinateToPrice(t.point.y),s=qe(this._chart,this._series,t.point.x);if(null!==i&&null!==s){if(0===this._d)this.yC.point1Time=s,this.yC.point1Price=i;else{if(1!==this._d)return this.yC.channelWidth=i-this.SC(s),void this.pC();this.yC.point2Time=s,this.yC.point2Price=i}this._d++,this.cM()}},this.aC=t=>{if(!t.point||this.zx)return;const i=this._series.coordinateToPrice(t.point.y),s=qe(this._chart,this._series,t.point.x);null!==i&&null!==s&&(this.$x={gt:s,bt:i},2===this._d&&(this.yC.channelWidth=i-this.SC(s)),this.cM())},this._chart.subscribeClick(this.XS),this._chart.subscribeCrosshairMove(this.aC)}pC(){this.zx=!0,this.$x=null,this.vC(),this.cM(),this.yC.onComplete&&this.yC.onComplete(),this.yC.onUpdate&&this.yC.onUpdate()}vC(){this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.aC&&(this._chart.unsubscribeCrosshairMove(this.aC),this.aC=null)}SC(t){const i=this.yC.point1Time,s=this.yC.point2Time,e=this.yC.point1Price,n=this.yC.point2Price;if(void 0===i||void 0===e)return 0;if(void 0===s||void 0===n||s===i)return e;return e+(n-e)/(s-i)*(t-i)}mS(){const t=this.yC,i=this.zx?t.point2Time:t.point2Time??this.$x?.gt,s=this.zx?t.point2Price:t.point2Price??this.$x?.bt;if(void 0===t.point1Time||void 0===t.point1Price||void 0===i||void 0===s)return null;const e=Ye(this._chart,this._series,t.point1Time),n=Ye(this._chart,this._series,i),r=this._series.priceToCoordinate(t.point1Price),h=this._series.priceToCoordinate(s);if(null===e||null===n||null===r||null===h)return null;let l=n,o=h;if(t.extendRight&&l!==e){const t=this._chart.chartElement().clientWidth;l=t,o=r+(h-r)/(n-e)*(t-e)}const a=t.channelWidth??0,_=this._series.priceToCoordinate(t.point1Price+a),u=this._series.priceToCoordinate(this._series.coordinateToPrice(o)+a);return null===_||null===u?null:{jx:e,Gx:l,xC:r,CC:o,PC:_,TC:u}}drawToCanvas(t,i,s){const e=this.mS();if(null===e)return;const n=this.yC,r=n.lineColor,h=this.Fx?n.lineWidth+1:n.lineWidth,l=i,o=s;n.fillOpacity>0&&0!==(n.channelWidth??0)&&(t.fillStyle=this.Cy(n.fillColor,n.fillOpacity),t.beginPath(),t.moveTo(e.jx*l,e.xC*o),t.lineTo(e.Gx*l,e.CC*o),t.lineTo(e.Gx*l,e.TC*o),t.lineTo(e.jx*l,e.PC*o),t.closePath(),t.fill()),t.strokeStyle=r,t.lineWidth=h*l,this.zx?"dashed"===n.lineStyle?t.setLineDash([10*l,5*l]):"dotted"===n.lineStyle&&t.setLineDash([2*l,3*l]):t.setLineDash([6*l,4*l]),t.beginPath(),t.moveTo(e.jx*l,e.xC*o),t.lineTo(e.Gx*l,e.CC*o),0!==(n.channelWidth??0)&&(t.moveTo(e.jx*l,e.PC*o),t.lineTo(e.Gx*l,e.TC*o)),t.stroke(),t.setLineDash([]);if((this.Fx||this.Lx||!this.zx)&&!this.isLocked()&&(this.bC(t,e.jx*l,e.xC*o,l,r),this.bC(t,e.Gx*l,e.CC*o,l,r),0!==(n.channelWidth??0))){const i=(e.jx+e.Gx)/2,s=(e.PC+e.TC)/2;this.bC(t,i*l,s*o,l,r)}if(!1!==n.showPriceLabel&&this.zx){const i=this._series.coordinateToPrice(e.CC);null!==i&&jh(t,this._series,l,o,{bt:i,ct:e.CC,Et:r})}}bC(t,i,s,e,n){t.fillStyle=n,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.beginPath(),t.arc(i,s,5*e,0,2*Math.PI),t.fill(),t.stroke()}Cy(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}qx(t,i){if(!this.isVisible()||!this.zx)return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}kC(t,i,s,e,n,r){const h=n-s,l=r-e,o=h*h+l*l;if(0===o)return Math.hypot(t-s,i-e);let a=((t-s)*h+(i-e)*l)/o;return a=Math.max(0,Math.min(1,a)),Math.hypot(t-(s+a*h),i-(e+a*l))}hitTest(t,i){const s=this.mS();if(null===s)return!1;return this.kC(t,i,s.jx,s.xC,s.Gx,s.CC)<=8||this.kC(t,i,s.jx,s.PC,s.Gx,s.TC)<=8}hitTestEndpoint(t,i){const s=this.mS();if(null===s)return null;const e=(s,e)=>Math.abs(t-s)<=10&&Math.abs(i-e)<=10;if(e(s.jx,s.xC))return"point1";if(e(s.Gx,s.CC))return"point2";if(0!==(this.yC.channelWidth??0)){if(e((s.jx+s.Gx)/2,(s.PC+s.TC)/2))return"width"}return null}startDrag(t,i){this.Ax=!0,this.Bx=t,this.Wx=i,this.MC={DC:{gt:this.yC.point1Time,bt:this.yC.point1Price},IC:{gt:this.yC.point2Time,bt:this.yC.point2Price},ts:this.yC.channelWidth??0}}updateDrag(t,i){if(!this.Ax||null===this.Bx||null===this.MC)return;const s=this.yC;if("point1"===this.Bx)s.point1Time=t,s.point1Price=i;else if("point2"===this.Bx)s.point2Time=t,s.point2Price=i;else if("width"===this.Bx)s.channelWidth=i-this.SC(t);else{const e=Bh(this.Wx,t,i);s.point1Time=this.MC.DC.gt+e.gt,s.point1Price=this.MC.DC.bt+e.bt,s.point2Time=this.MC.IC.gt+e.gt,s.point2Price=this.MC.IC.bt+e.bt,s.channelWidth=this.MC.ts}this.cM(),s.onUpdate&&s.onUpdate()}stopDrag(){this.Ax=!1,this.Bx=null,this.Wx=null,this.MC=null}setColor(t){this.yC.lineColor=t,this.yC.fillColor=t,this.cM()}color(){return this.yC.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}remove(){if(this.vC(),this.Ub){try{this._series.detachPrimitive(this.Ub)}catch(t){}this.Ub=null}this.Rx=null,this.yC.onRemove&&this.yC.onRemove()}_serializeShape(){return{type:"parallelChannel",points:[Oh(this.yC.point1Price??0,Eh(this.yC.point1Time)),Oh(this.yC.point2Price??0,Eh(this.yC.point2Time))],style:{lineColor:this.yC.lineColor,lineWidth:this.yC.lineWidth,lineStyle:this.yC.lineStyle,fillColor:this.yC.fillColor,fillOpacity:this.yC.fillOpacity,extendRight:this.yC.extendRight},extra:{channelWidth:this.yC.channelWidth}}}}function fl(t,i){return new pl(t,i)}class vl{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class ml{constructor(t){this.Vx=t,this.Jt=new vl(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class wl extends Nh{constructor(t,i){super(t,"pitchfork",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Bx=null,this.Wx=null,this.MC=null,this.zx=!1,this._d=0,this.$x=null,this.XS=null,this.aC=null,this.VC={lineColor:"#9C27B0",lineWidth:2,lineStyle:"solid",fillColor:"#9C27B0",fillOpacity:.08,interactive:!1,...i},this._registerOptions(this.VC),this.Zy(),this.VC.interactive?this.cC():this.zx=!0}Zy(){this.eh=new ml(this);const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}cM(){this.Rx&&this.Rx()}_update(){this.cM()}cC(){this.XS=t=>{if(!t.point||Yh(this._chart))return;const i=this._series.coordinateToPrice(t.point.y),s=qe(this._chart,this._series,t.point.x);if(null!==i&&null!==s){if(0===this._d)this.VC.pivotTime=s,this.VC.pivotPrice=i;else{if(1!==this._d)return this.VC.lowerTime=s,this.VC.lowerPrice=i,this._d++,void this.pC();this.VC.upperTime=s,this.VC.upperPrice=i}this._d++,this.cM()}},this.aC=t=>{if(!t.point||this.zx)return;const i=this._series.coordinateToPrice(t.point.y),s=qe(this._chart,this._series,t.point.x);null!==i&&null!==s&&(this.$x={gt:s,bt:i},this.cM())},this._chart.subscribeClick(this.XS),this._chart.subscribeCrosshairMove(this.aC)}pC(){this.zx=!0,this.$x=null,this.vC(),this.cM(),this.VC.onComplete&&this.VC.onComplete(),this.VC.onUpdate&&this.VC.onUpdate()}vC(){this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.aC&&(this._chart.unsubscribeCrosshairMove(this.aC),this.aC=null)}RC(t,i){if(void 0===t||void 0===i)return null;const s=Ye(this._chart,this._series,t),e=this._series.priceToCoordinate(i);return null===s||null===e?null:{ut:s,ct:e}}FC(){const t=this.VC,i=this.RC(t.pivotTime,t.pivotPrice),s=this.RC(t.upperTime,t.upperPrice),e=this.zx?this.RC(t.lowerTime,t.lowerPrice):this.RC(t.lowerTime,t.lowerPrice)??(null!==this.$x&&this._d>=2?this.RC(this.$x.gt,this.$x.bt):null);if(null===i||null===s||null===e)return null;const n={ut:(s.ut+e.ut)/2,ct:(s.ct+e.ct)/2};if(n.ut===i.ut)return null;const r=this._chart.chartElement().clientWidth,h=(n.ct-i.ct)/(n.ut-i.ut),l=t=>({ut:r,ct:t.ct+h*(r-t.ut)});return{Vy:i,LC:n,uy:s,vy:e,AC:l(i),BC:l(s),WC:l(e)}}drawToCanvas(t,i,s){const e=this.FC();if(null===e)return void this.EC(t,i,s);const n=this.VC,r=n.lineColor,h=i,l=s;n.fillOpacity>0&&(t.fillStyle=this.Cy(n.fillColor,n.fillOpacity),t.beginPath(),t.moveTo(e.uy.ut*h,e.uy.ct*l),t.lineTo(e.BC.ut*h,e.BC.ct*l),t.lineTo(e.WC.ut*h,e.WC.ct*l),t.lineTo(e.vy.ut*h,e.vy.ct*l),t.closePath(),t.fill()),t.strokeStyle=r,t.lineWidth=(this.Fx?n.lineWidth+1:n.lineWidth)*h,"dashed"===n.lineStyle?t.setLineDash([10*h,5*h]):"dotted"===n.lineStyle&&t.setLineDash([2*h,3*h]),t.beginPath(),t.moveTo(e.uy.ut*h,e.uy.ct*l),t.lineTo(e.vy.ut*h,e.vy.ct*l),t.moveTo(e.Vy.ut*h,e.Vy.ct*l),t.lineTo(e.AC.ut*h,e.AC.ct*l),t.moveTo(e.uy.ut*h,e.uy.ct*l),t.lineTo(e.BC.ut*h,e.BC.ct*l),t.moveTo(e.vy.ut*h,e.vy.ct*l),t.lineTo(e.WC.ut*h,e.WC.ct*l),t.stroke(),t.setLineDash([]);if((this.Fx||this.Lx||!this.zx)&&!this.isLocked())for(const i of[e.Vy,e.uy,e.vy])this.bC(t,i.ut*h,i.ct*l,h,r)}EC(t,i,s){const e=this.VC,n=this.RC(e.pivotTime,e.pivotPrice);if(null===n)return;const r=this.RC(e.upperTime,e.upperPrice)??(null!==this.$x?this.RC(this.$x.gt,this.$x.bt):null),h=e.lineColor;t.strokeStyle=h,t.lineWidth=e.lineWidth*i,t.setLineDash([6*i,4*i]),null!==r&&(t.beginPath(),t.moveTo(n.ut*i,n.ct*s),t.lineTo(r.ut*i,r.ct*s),t.stroke()),t.setLineDash([]),this.bC(t,n.ut*i,n.ct*s,i,h)}bC(t,i,s,e,n){t.fillStyle=n,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.beginPath(),t.arc(i,s,5*e,0,2*Math.PI),t.fill(),t.stroke()}Cy(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}qx(t,i){if(!this.isVisible()||!this.zx)return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}kC(t,i,s,e,n,r){const h=n-s,l=r-e,o=h*h+l*l;if(0===o)return Math.hypot(t-s,i-e);let a=((t-s)*h+(i-e)*l)/o;return a=Math.max(0,Math.min(1,a)),Math.hypot(t-(s+a*h),i-(e+a*l))}hitTest(t,i){const s=this.FC();if(null===s)return!1;return[[s.Vy,s.AC],[s.uy,s.BC],[s.vy,s.WC],[s.uy,s.vy]].some(([s,e])=>this.kC(t,i,s.ut,s.ct,e.ut,e.ct)<=8)}hitTestEndpoint(t,i){const s=this.FC();if(null===s)return null;const e=s=>Math.abs(t-s.ut)<=10&&Math.abs(i-s.ct)<=10;return e(s.Vy)?"pivot":e(s.uy)?"upper":e(s.vy)?"lower":null}startDrag(t,i){this.Ax=!0,this.Bx=t,this.Wx=i,this.MC=[{gt:this.VC.pivotTime,bt:this.VC.pivotPrice},{gt:this.VC.upperTime,bt:this.VC.upperPrice},{gt:this.VC.lowerTime,bt:this.VC.lowerPrice}]}updateDrag(t,i){if(!this.Ax||null===this.Bx||null===this.MC)return;const s=this.VC;if("pivot"===this.Bx)s.pivotTime=t,s.pivotPrice=i;else if("upper"===this.Bx)s.upperTime=t,s.upperPrice=i;else if("lower"===this.Bx)s.lowerTime=t,s.lowerPrice=i;else{const e=Bh(this.Wx,t,i),[n,r,h]=this.MC;s.pivotTime=n.gt+e.gt,s.pivotPrice=n.bt+e.bt,s.upperTime=r.gt+e.gt,s.upperPrice=r.bt+e.bt,s.lowerTime=h.gt+e.gt,s.lowerPrice=h.bt+e.bt}this.cM(),s.onUpdate&&s.onUpdate()}stopDrag(){this.Ax=!1,this.Bx=null,this.Wx=null,this.MC=null}setColor(t){this.VC.lineColor=t,this.VC.fillColor=t,this.cM()}color(){return this.VC.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}remove(){if(this.vC(),this.Ub){try{this._series.detachPrimitive(this.Ub)}catch(t){}this.Ub=null}this.Rx=null,this.VC.onRemove&&this.VC.onRemove()}_serializeShape(){return{type:"pitchfork",points:[Oh(this.VC.pivotPrice??0,Eh(this.VC.pivotTime)),Oh(this.VC.upperPrice??0,Eh(this.VC.upperTime)),Oh(this.VC.lowerPrice??0,Eh(this.VC.lowerTime))],style:{lineColor:this.VC.lineColor,lineWidth:this.VC.lineWidth,lineStyle:this.VC.lineStyle,fillColor:this.VC.fillColor,fillOpacity:this.VC.fillOpacity}}}}function gl(t,i){return new wl(t,i)}class bl{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Ml{constructor(t){this.Vx=t,this.Jt=new bl(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class yl extends Nh{constructor(t,i){super(t,"vertical-line",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Wx=null,this.rC=0,this.OC={lineColor:"#787b86",lineWidth:1,lineStyle:"dashed",showLabel:!0,labelText:"",interactive:!1,...i},this._registerOptions(this.OC),this.Zy()}Zy(){this.eh=this.Ux();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new Ml(this)}drawToCanvas(t,i,s){if(void 0===this.OC.time)return;const e=(Ye(this._chart,this._series,this.OC.time)??0)*i,n=this._chart.chartElement().clientHeight*s,r=this.OC.lineColor,h=this.Fx||this.Lx&&!this.isLocked()?this.OC.lineWidth+1:this.OC.lineWidth;t.strokeStyle=r,t.lineWidth=h*i,"dashed"===this.OC.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.OC.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.moveTo(e,0),t.lineTo(e,n),t.stroke(),t.setLineDash([]),this.OC.showLabel&&(this.Fx||this.Lx)&&this.OC.labelText&&this.nC(t,e,i,s,r)}nC(t,i,s,e,n){const r=this.OC.labelText,h=6*s,l=12*s;t.font=`${l}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const o=t.measureText(r).width,a=l,_=i-o/2-h,u=10*e;t.fillStyle=n,t.fillRect(_,u,o+2*h,a+2*h),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(r,_+h,u+h)}setColor(t){this.OC.lineColor=t,this.cM()}color(){return this.OC.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){if(void 0===this.OC.time)return!1;const s=Ye(this._chart,this._series,this.OC.time)??0;return Math.abs(t-s)<=8}hitTestEndpoint(t,i){return this.hitTest(t,i)?"line":null}startDrag(t,i){this.Ax=!0,this.Wx=i,this.rC=this.OC.time}stopDrag(){this.Ax=!1,this.Wx=null}updateDrag(t,i){this.Ax&&(this.OC.time=this.rC+Bh(this.Wx,t,i).gt,this.cM(),this.OC.onUpdate&&this.OC.onUpdate())}getTime(){return this.OC.time}setTime(t){this.OC.time=t,this.cM()}setLabel(t){this.OC.labelText=t,this.cM()}isVisible(){return this._visible}_serializeShape(){return{type:"verticalLine",points:[Oh(0,Eh(this.OC.time))],style:{lineColor:this.OC.lineColor,lineWidth:this.OC.lineWidth,lineStyle:this.OC.lineStyle,showLabel:this.OC.showLabel,labelText:this.OC.labelText}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}remove(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.OC.onRemove&&this.OC.onRemove()}}function Sl(t,i){return new yl(t,i)}const xl=[{zC:0,Zl:"0.0%"},{zC:.236,Zl:"23.6%"},{zC:.382,Zl:"38.2%"},{zC:.5,Zl:"50.0%"},{zC:.618,Zl:"61.8%"},{zC:.786,Zl:"78.6%"},{zC:1,Zl:"100.0%"}],Cl=[...xl,{zC:1.272,Zl:"127.2%"},{zC:1.414,Zl:"141.4%"},{zC:1.618,Zl:"161.8%"},{zC:2,Zl:"200.0%"},{zC:2.618,Zl:"261.8%"}];class Pl{constructor(t=!1){this.$C=t?Cl:xl}calculateLevels(t,i,s,e){const n=Math.abs(e-i),r=n/i*100,h=e>i,l=this.$C.map(({zC:t,Zl:i})=>{let s;return s=h?e-n*t:e+n*t,{zC:t,bt:s,Zl:i}});return{point1:{time:t,price:i},point2:{time:s,price:e},priceRange:n,priceRangePercent:r,levels:l,isUptrend:h}}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.$C=t}getRatios(){return[...this.$C]}getRatioValues(){return this.$C.map(t=>t.zC)}useStandardRatios(){this.$C=xl}useExtendedRatios(){this.$C=Cl}}class Tl{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class kl{constructor(t){this.Vx=t,this.Jt=new Tl(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}}function Dl(t){return{zC:t,Zl:`${(100*t).toFixed(1)}%`}}class Il extends Nh{constructor(t,i){super(t,"fibonacci-tool",i),this.Ub=null,this.Rx=null,this.jb=null,this.eh=null,this.HC=null,this.zx=!1,this.Fx=!1,this.Lx=!1,this.$x=null,this.Ax=!1,this.NC=null,this.sp=null,this.UC={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._registerOptions(this.UC),this.qC=new Pl(this.UC.useExtended),void 0!==this.UC.levels&&this.UC.levels.length>0&&this.qC.updateRatios(this.UC.levels.map(Dl)),this.Zy(),this.UC.interactive?this.Nx():(this.zx=!0,this.YC())}Zy(){this.eh=this.Ux();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new kl(this)}drawToCanvas(t,i,s){if(!this.zx&&this.UC.point1Time&&this.$x)return void this.Jx(t,i,s);if(!this.jb||!this.UC.point1Time||!this.UC.point2Time)return;const e=(Ye(this._chart,this._series,this.UC.point1Time)??0)*i,n=(Ye(this._chart,this._series,this.UC.point2Time)??0)*i,r=Math.min(e,n),h=Math.max(e,n),l=this.Fx?2:this.UC.lineWidth;this.jb.levels.forEach(e=>{this.jC(t,e,r,h,i,s,l)}),!this.Fx&&!this.Lx||this.isLocked()||(this.Qx(t,e,(this._series.priceToCoordinate(this.UC.point1Price)??0)*s,i),this.Qx(t,n,(this._series.priceToCoordinate(this.UC.point2Price)??0)*s,i))}jC(t,i,s,e,n,r,h=1){const l=i.ratio??i.zC,o=i.price??i.bt;if(void 0===l||void 0===o)return;const a=(this._series.priceToCoordinate(o)??0)*r;let _=this.UC.levelColors?.[l.toString()]||this.UC.lineColor;t.strokeStyle=_,t.lineWidth=h*n,t.beginPath(),t.moveTo(s,a),t.lineTo(e,a),t.stroke(),this.UC.showLabels&&this.nC(t,i,s,e,a,n,_)}nC(t,i,s,e,n,r,h){const l=i.label??i.Zl,o=i.price??i.bt,a=`${l} ${this.qC.formatPrice(o)}`;t.font=11*r+"px sans-serif";const _=t.measureText(a),u=4*r,c="right"===this.UC.labelPosition?e+u:s-_.width-u,d=n;t.fillStyle="rgba(255, 255, 255, 0.9)",t.fillRect(c-u/2,d-11*r/2-u/2,_.width+u,11*r+u),t.fillStyle=h,t.textAlign="right"===this.UC.labelPosition?"left":"right",t.textBaseline="middle",t.fillText(a,c,d)}YC(){this.UC.point1Time&&this.UC.point1Price&&this.UC.point2Time&&this.UC.point2Price&&(this.jb=this.qC.calculateLevels(this.UC.point1Time,this.UC.point1Price,this.UC.point2Time,this.UC.point2Price),this.UC.onUpdate&&this.jb&&this.UC.onUpdate(this.jb))}updatePoints(t,i,s,e){this.UC.point1Time=t,this.UC.point1Price=i,this.UC.point2Time=s,this.UC.point2Price=e,this.YC(),this.cM()}getMetrics(){return this.jb}getLevels(){return this.jb?.levels||[]}isVisible(){return this._visible}_serializeShape(){const t=this.qC.getRatioValues();return{type:"fibRetracement",points:[Oh(this.UC.point1Price??0,Eh(this.UC.point1Time)),Oh(this.UC.point2Price??0,Eh(this.UC.point2Time))],style:{lineColor:this.UC.lineColor,lineWidth:this.UC.lineWidth,showLabels:this.UC.showLabels,labelPosition:this.UC.labelPosition,levelColors:this.UC.levelColors},extra:{levels:t,useExtended:this.UC.useExtended}}}useExtendedLevels(t){this.UC.useExtended=t,t?this.qC.useExtendedRatios():this.qC.useStandardRatios(),this.YC(),this.cM()}Nx(){this.HC=new Gh(this._chart,this._series,{Tx:t=>{this.UC.point1Time=t.gt,this.UC.point1Price=t.bt,this.cM()},kx:t=>{this.UC.point2Time=t.gt,this.UC.point2Price=t.bt},Dx:(t,i)=>{this.UC.point1Time=t.gt,this.UC.point1Price=t.bt,this.UC.point2Time=i.gt,this.UC.point2Price=i.bt,this.zx=!0,this.$x=null,this.YC(),this.KC(),this.cM()},Ix:t=>{this.$x=t,this.cM()}}),this.HC.vx()}Jx(t,i,s){if(!this.UC.point1Time||!this.$x)return;const e=(Ye(this._chart,this._series,this.UC.point1Time)??0)*i,n=(this._series.priceToCoordinate(this.UC.point1Price)??0)*s,r=(Ye(this._chart,this._series,this.$x.gt)??0)*i,h=(this._series.priceToCoordinate(this.$x.bt)??0)*s,l=this.qC.calculateLevels(this.UC.point1Time,this.UC.point1Price,this.$x.gt,this.$x.bt),o=Math.min(e,r),a=Math.max(e,r);t.setLineDash([5*i,5*i]),t.globalAlpha=.7,l.levels.forEach(e=>{const n=e.ratio??e.zC,r=e.price??e.bt;if(void 0===n||void 0===r)return;const h=(this._series.priceToCoordinate(r)??0)*s,l=this.UC.levelColors?.[n.toString()]||this.UC.lineColor;if(t.strokeStyle=l,t.lineWidth=this.UC.lineWidth*i,t.beginPath(),t.moveTo(o,h),t.lineTo(a,h),t.stroke(),this.UC.showLabels){const s=`${e.label??e.Zl} ${this.qC.formatPrice(r)}`;t.font=11*i+"px sans-serif";const n=t.measureText(s),_=4*i,u="right"===this.UC.labelPosition?a+_:o-n.width-_,c=h;t.fillStyle="rgba(255, 255, 255, 0.8)",t.fillRect(u-_/2,c-11*i/2-_/2,n.width+_,11*i+_),t.fillStyle=l,t.textAlign="right"===this.UC.labelPosition?"left":"right",t.textBaseline="middle",t.fillText(s,u,c)}}),t.setLineDash([]),t.globalAlpha=1,this.Qx(t,e,n,i),t.globalAlpha=.6,this.Qx(t,r,h,i),t.globalAlpha=1}Qx(t,i,s,e){const n=this.UC.lineColor,r=this.Fx?5*e:4*e;t.fillStyle=n,t.beginPath(),t.arc(i,s,r,0,2*Math.PI),t.fill(),this.Fx&&(t.strokeStyle="#ffffff",t.lineWidth=2*e,t.stroke())}KC(){this.sp=t=>{this.GC(t)},this._chart.subscribeCrosshairMove(this.sp)}XC(){this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null)}GC(t){if(!t.point)return;const i=qe(this._chart,this._series,t.point.x);if(null===i)return;if(!this.Fx||!this.Ax)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&("point1"===this.NC?(this.UC.point1Time=i,this.UC.point1Price=s):"point2"===this.NC&&(this.UC.point2Time=i,this.UC.point2Price=s),this.YC(),this.cM())}startDrag(t){this.Ax=!0,this.NC=t}stopDrag(){this.Ax=!1,this.NC=null}updateDrag(t,i){this.Ax&&this.NC&&("point1"===this.NC?(this.UC.point1Time=t,this.UC.point1Price=i):(this.UC.point2Time=t,this.UC.point2Price=i),this.YC(),this.cM())}hitTestEndpoint(t,i){if(!this.zx||!this.UC.point1Time||!this.UC.point2Time)return null;const s=Ye(this._chart,this._series,this.UC.point1Time)??0,e=this._series.priceToCoordinate(this.UC.point1Price)??0,n=Ye(this._chart,this._series,this.UC.point2Time)??0,r=this._series.priceToCoordinate(this.UC.point2Price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2))<=10)return"point1";return Math.sqrt(Math.pow(t-n,2)+Math.pow(i-r,2))<=10?"point2":null}applyOptions(t){this.UC={...this.UC,...t},void 0!==t.levels&&t.levels.length>0?this.qC.updateRatios(t.levels.map(Dl)):void 0!==t.useExtended&&(t.useExtended?this.qC.useExtendedRatios():this.qC.useStandardRatios()),super.applyOptions(t),this.YC(),this.cM()}options(){return{...this.UC,levels:this.qC.getRatioValues()}}setColor(t){this.UC.lineColor=t,this.cM()}color(){return this.UC.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}isSelected(){return this.Fx}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){if(!this.zx||!this.UC.point1Time||!this.UC.point2Time)return!1;const s=Ye(this._chart,this._series,this.UC.point1Time)??0,e=Ye(this._chart,this._series,this.UC.point2Time)??0;if(t<Math.min(s,e)||t>Math.max(s,e))return!1;if(!this.jb)return!1;for(const t of this.jb.levels){const s=t.price??t.bt;if(void 0===s)continue;const e=this._series.priceToCoordinate(s)??0;if(Math.abs(i-e)<=8)return!0}return!1}remove(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.HC&&(this.HC.m(),this.HC=null),this.XC(),this.UC.onRemove&&this.UC.onRemove()}destroy(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.UC.onRemove&&this.UC.onRemove()}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.YC(),this.cM()}}function Vl(t,i){return new Il(t,i)}class Rl{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Fl{constructor(t){this.Vx=t,this.Jt=new Rl(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}}class Ll extends Nh{constructor(t,i){super(t,"fibonacci-extension",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Bx=null,this.UC={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.Zy()}Zy(){this.eh=this.Ux();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new Fl(this)}getPoint1(){return this.UC.point1}getPoint2(){return this.UC.point2}getPoint3(){return this.UC.point3}getLevels(){return this.UC.levels||[]}getOptions(){return this.UC}setPoint1(t){this.UC.point1=t,this.cM()}setPoint2(t){this.UC.point2=t,this.cM()}setPoint3(t){this.UC.point3=t,this.cM()}isComplete(){return!!(this.UC.point1&&this.UC.point2&&this.UC.point3)}setColor(t){this.UC.lineColor=t,this.cM()}color(){return this.UC.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){if(!this.isComplete())return!1;const s=[this.UC.point1,this.UC.point2,this.UC.point3];for(const e of s){const s=Ye(this._chart,this._series,e.time)??0,n=this._series.priceToCoordinate(e.price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-n,2))<=10)return!0}const e=this.ZC();for(const t of e){const s=this._series.priceToCoordinate(t.bt)??0;if(Math.abs(i-s)<=10)return!0}return!1}hitTestEndpoint(t,i){if(!this.isComplete())return null;const s=this.UC.point1,e=this.UC.point2,n=this.UC.point3;if(!s||!e||!n)return null;if(s&&s.time&&void 0!==s.price){const e=Ye(this._chart,this._series,s.time)??0,n=this._series.priceToCoordinate(s.price)??0;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-n,2))<=20)return"point1"}if(e&&e.time&&void 0!==e.price){const s=Ye(this._chart,this._series,e.time)??0,n=this._series.priceToCoordinate(e.price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-n,2))<=20)return"point2"}if(n&&n.time&&void 0!==n.price){const s=Ye(this._chart,this._series,n.time)??0,e=this._series.priceToCoordinate(n.price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2))<=20)return"point3"}return null}startDrag(t){this.Ax=!0,this.Bx=t}stopDrag(){this.Ax=!1,this.Bx=null}updateDrag(t,i){if(!this.Ax||!this.Bx)return;const s={time:t,price:i};switch(this.Bx){case"point1":this.setPoint1(s);break;case"point2":this.setPoint2(s);break;case"point3":this.setPoint3(s)}this.UC.onUpdate&&this.UC.onUpdate()}ZC(){if(!this.isComplete())return[];const t=this.UC.point1,i=this.UC.point2,s=this.UC.point3,e=i.price-t.price;return(this.UC.levels||[]).map(t=>({ie:t.level,bt:s.price+e*t.level,Zl:t.label,I:t.color}))}getExtensionLevels(){return this.ZC()}drawToCanvas(t,i,s){if(!this.isComplete())return;const e=this.UC.point1,n=this.UC.point2,r=this.UC.point3,h=this.Fx||this.Lx&&!this.isLocked(),l=(Ye(this._chart,this._series,e.time)??0)*i,o=(this._series.priceToCoordinate(e.price)??0)*s,a=(Ye(this._chart,this._series,n.time)??0)*i,_=(this._series.priceToCoordinate(n.price)??0)*s,u=(Ye(this._chart,this._series,r.time)??0)*i,c=(this._series.priceToCoordinate(r.price)??0)*s;t.strokeStyle=this.UC.lineColor||"#787B86",t.lineWidth=(this.UC.lineWidth||1)*i*(h?1.5:1),t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(l,o),t.lineTo(a,_),t.stroke(),t.beginPath(),t.moveTo(a,_),t.lineTo(u,c),t.stroke(),t.setLineDash([]);const d=this.getExtensionLevels(),p=t.canvas.width;for(const e of d){const n=e.bt??e.price,r=e.I??e.color,l=e.Zl??e.label;if(null==n)continue;const o=(this._series.priceToCoordinate(n)??0)*s;if(t.strokeStyle=r,t.lineWidth=(this.UC.lineWidth||1)*i*(h?1.5:1),t.beginPath(),this.UC.extendLines?(t.moveTo(0,o),t.lineTo(p,o)):(t.moveTo(u,o),t.lineTo(p,o)),t.stroke(),this.UC.showLabels){const s=`${l} (${n.toFixed(5)})`;t.font=12*i+"px Arial",t.fillStyle=r,t.textAlign="left",t.textBaseline="middle";const e=5*i,h=Math.max(u,10*i)+e;t.fillText(s,h,o)}}const f=(h?6:4)*i,v=[{ut:l,ct:o,Zl:"A"},{ut:a,ct:_,Zl:"B"},{ut:u,ct:c,Zl:"C"}];for(const s of v)t.fillStyle="#2962FF",t.beginPath(),t.arc(s.ut,s.ct,f,0,2*Math.PI),t.fill(),t.fillStyle="#ffffff",t.beginPath(),t.arc(s.ut,s.ct,f-2*i,0,2*Math.PI),t.fill(),h&&(t.fillStyle="#2962FF",t.font=`bold ${10*i}px Arial`,t.textAlign="center",t.textBaseline="middle",t.fillText(s.Zl,s.ut,s.ct))}isVisible(){return this._visible}_serializeShape(){return{type:"fibExtension",points:[zh(this.UC.point1),zh(this.UC.point2),zh(this.UC.point3)],style:{lineColor:this.UC.lineColor,lineWidth:this.UC.lineWidth,showLabels:this.UC.showLabels,extendLines:this.UC.extendLines},extra:{levels:(this.UC.levels||[]).map(t=>({ie:t.level,I:t.color,Zl:t.label}))}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}remove(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}}}function Al(t,i){return new Ll(t,i)}class Bl{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Wl{constructor(t){this.Vx=t,this.Jt=new Bl(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}const El=[{level:.382,color:"#787B86",label:"38.2%"},{level:.5,color:"#9598A1",label:"50%"},{level:.618,color:"#787B86",label:"61.8%"}];class Ol extends Nh{constructor(t,i){super(t,"fibonacci-fan",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Bx=null,this.JC=!1,this.XS=null,this.sp=null,this.$x=null,this.QC={levels:El,lineWidth:1,showLabels:!0,extendLines:!0,interactive:!1,...i},this.Zy(),this.QC.interactive&&!this.QC.point1Time&&this.Nx()}Nx(){this.JC=!0,this.XS=t=>{if(!t.point)return;if(Yh(this._chart))return;const i=qe(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.QC.point1Time?(this.QC.point2Time=i,this.QC.point2Price=s,this.JC=!1,this.$x=null,this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.cM(),this.QC.onUpdate&&this.QC.onUpdate()):(this.QC.point1Time=i,this.QC.point1Price=s,this.cM()))},this.sp=t=>{if(this.JC&&this.QC.point1Time)if(t.point){const i=qe(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.$x={gt:i,bt:s},this.cM())}else this.$x=null,this.cM()},this._chart.subscribeClick(this.XS),this._chart.subscribeCrosshairMove(this.sp)}Zy(){this.eh=this.Ux();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new Wl(this)}drawToCanvas(t,i,s){const e=this.QC.point1Time,n=this.QC.point1Price,r=this.JC&&this.$x?this.$x.gt:this.QC.point2Time,h=this.JC&&this.$x?this.$x.bt:this.QC.point2Price;if(!e||void 0===n||!r||void 0===h)return;const l=(Ye(this._chart,this._series,e)??0)*i,o=(this._series.priceToCoordinate(n)??0)*s,a=(Ye(this._chart,this._series,r)??0)*i,_=(this._series.priceToCoordinate(h)??0)*s,u=this.Fx?this.QC.lineWidth+1:this.QC.lineWidth;if(this.tP(t,l,o,a,_,"#2962FF",u*i),this.QC.levels)for(const e of this.QC.levels)this.iP(t,l,o,a,_,e,i,s,undefined,u);!this.Fx&&!this.Lx||this.JC||this.isLocked()||(this.Qx(t,l,o,i,"#2962ff"),this.Qx(t,a,_,i,"#2962ff"))}iP(t,i,s,e,n,r,h,l,o,a){const _=e,u=s+(n-s)*r.level;let c=_,d=u;if(this.QC.extendLines){const t=this._chart.chartElement().clientWidth*h,e=_-i,n=u-s,r=Math.sqrt(e*e+n*n);if(r>0){const h=2*t;c=i+e/r*h,d=s+n/r*h}}const p=o||r.color;this.tP(t,i,s,c,d,p,a*h),this.QC.showLabels&&!this.JC&&this.nC(t,_,u,r.label,h,p)}tP(t,i,s,e,n,r,h){t.strokeStyle=r,t.lineWidth=h,t.beginPath(),t.moveTo(i,s),t.lineTo(e,n),t.stroke()}Qx(t,i,s,e,n){const r=5*e;t.fillStyle=n,t.beginPath(),t.arc(i,s,r,0,2*Math.PI),t.fill(),t.strokeStyle="#ffffff",t.lineWidth=2*e,t.stroke()}nC(t,i,s,e,n,r){const h=11*n,l=4*n;t.font=`${h}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const o=t.measureText(e).width,a=h;t.fillStyle=r,t.fillRect(i+l,s-a-l,o+2*l,a+2*l),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(e,i+2*l,s-a-l+l)}setColor(t){const i=this.QC.levels??[];for(const s of i)s.color=t;this.cM()}color(){const t=this.QC.levels??[];return t.length>0?t[0].color:""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){if(!this.QC.point1Time||!this.QC.point2Time)return!1;const s=Ye(this._chart,this._series,this.QC.point1Time)??0,e=this._series.priceToCoordinate(this.QC.point1Price)??0,n=Ye(this._chart,this._series,this.QC.point2Time)??0,r=this._series.priceToCoordinate(this.QC.point2Price)??0;if(this.tC(t,i,s,e,n,r)<=8)return!0;if(this.QC.levels)for(const h of this.QC.levels){const l=e+(r-e)*h.level,o=n;if(this.tC(t,i,s,e,o,l)<=8)return!0}return!1}tC(t,i,s,e,n,r){const h=n-s,l=r-e,o=h*h+l*l;if(0===o)return Math.sqrt((t-s)*(t-s)+(i-e)*(i-e));let a=((t-s)*h+(i-e)*l)/o;a=Math.max(0,Math.min(1,a));const _=s+a*h,u=e+a*l;return Math.sqrt((t-_)*(t-_)+(i-u)*(i-u))}hitTestEndpoint(t,i){if(!this.QC.point1Time||!this.QC.point2Time)return null;const s=Ye(this._chart,this._series,this.QC.point1Time)??0,e=this._series.priceToCoordinate(this.QC.point1Price)??0,n=Ye(this._chart,this._series,this.QC.point2Time)??0,r=this._series.priceToCoordinate(this.QC.point2Price)??0;return Math.abs(t-s)<=10&&Math.abs(i-e)<=10?"point1":Math.abs(t-n)<=10&&Math.abs(i-r)<=10?"point2":null}startDrag(t){this.Ax=!0,this.Bx=t}stopDrag(){this.Ax=!1,this.Bx=null}updateDrag(t,i){this.Ax&&this.Bx&&("point1"===this.Bx?(this.QC.point1Time=t,this.QC.point1Price=i):"point2"===this.Bx&&(this.QC.point2Time=t,this.QC.point2Price=i),this.cM(),this.QC.onUpdate&&this.QC.onUpdate())}isVisible(){return this._visible}_serializeShape(){return{type:"fibFan",points:[Oh(this.QC.point1Price??0,Eh(this.QC.point1Time)),Oh(this.QC.point2Price??0,Eh(this.QC.point2Time))],style:{lineWidth:this.QC.lineWidth,showLabels:this.QC.showLabels,extendLines:this.QC.extendLines},extra:{levels:(this.QC.levels||[]).map(t=>({ie:t.level,I:t.color,Zl:t.label}))}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}remove(){if(this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.QC.onRemove&&this.QC.onRemove()}}function zl(t,i){return new Ol(t,i)}class $l{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Hl{constructor(t){this.Vx=t,this.Jt=new $l(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class Nl extends Nh{constructor(t,i){super(t,"rectangle",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Bx=null,this.Wx=null,this.Ex=null,this.Ox=null,this.JC=!1,this.XS=null,this.sp=null,this.$x=null,this.sP={fillColor:"#2962ff",fillOpacity:.2,borderColor:"#2962ff",borderWidth:2,borderStyle:"solid",showLabel:!0,labelText:"",labelPosition:"top-left",interactive:!1,...i},this._registerOptions(this.sP),this.Zy(),!this.sP.interactive||this.sP.time1&&this.sP.time2||this.Nx()}Nx(){this.JC=!0,this.XS=t=>{if(!t.point)return;if(Yh(this._chart))return;const i=qe(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.sP.time1?(this.sP.time2=i,this.sP.price2=s,this.JC=!1,this.$x=null,this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.cM(),this.sP.onUpdate&&this.sP.onUpdate()):(this.sP.time1=i,this.sP.price1=s,this.cM()))},this.sp=t=>{if(this.JC&&this.sP.time1)if(t.point){const i=qe(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.$x={gt:i,bt:s},this.cM())}else this.$x=null,this.cM()},this._chart.subscribeClick(this.XS),this._chart.subscribeCrosshairMove(this.sp)}Zy(){this.eh=this.Ux();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new Hl(this)}drawToCanvas(t,i,s){const e=this.sP.time1,n=this.sP.price1,r=this.JC&&this.$x?this.$x.gt:this.sP.time2,h=this.JC&&this.$x?this.$x.bt:this.sP.price2;if(!e||void 0===n||!r||void 0===h)return;const l=(Ye(this._chart,this._series,e)??0)*i,o=(this._series.priceToCoordinate(n)??0)*s,a=(Ye(this._chart,this._series,r)??0)*i,_=(this._series.priceToCoordinate(h)??0)*s,u=Math.min(l,a),c=Math.max(l,a),d=Math.min(o,_),p=Math.max(o,_),f=c-u,v=p-d;if(this.sP.fillOpacity>0){const i=this.Gy(this.sP.fillColor,this.JC?.1:this.sP.fillOpacity);t.fillStyle=i,t.fillRect(u,d,f,v)}const m=this.sP.borderColor,w=this.Fx?this.sP.borderWidth+1:this.sP.borderWidth;t.strokeStyle=m,t.lineWidth=w*i,"dashed"===this.sP.borderStyle?t.setLineDash([10*i,5*i]):"dotted"===this.sP.borderStyle&&t.setLineDash([2*i,3*i]),t.strokeRect(u,d,f,v),t.setLineDash([]),!this.Fx&&!this.Lx||this.JC||this.isLocked()||this.eP(t,u,d,c,p,i,m),this.sP.showLabel&&this.sP.labelText&&!this.JC&&this.nC(t,u,d,c,p,i,s,m)}eP(t,i,s,e,n,r,h){const l=8*r,o=[{ut:i,ct:s},{ut:e,ct:s},{ut:i,ct:n},{ut:e,ct:n}];t.fillStyle=h,t.strokeStyle="#ffffff",t.lineWidth=2*r;for(const i of o)t.fillRect(i.ut-l/2,i.ct-l/2,l,l),t.strokeRect(i.ut-l/2,i.ct-l/2,l,l)}nC(t,i,s,e,n,r,h,l){const o=6*r,a=12*r;t.font=`${a}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const _=t.measureText(this.sP.labelText).width,u=a;let c=i+o,d=s+o;switch(this.sP.labelPosition){case"top-right":c=e-_-2*o,d=s+o;break;case"bottom-left":c=i+o,d=n-u-2*o;break;case"bottom-right":c=e-_-2*o,d=n-u-2*o;break;case"center":c=(i+e)/2-_/2-o,d=(s+n)/2-u/2-o}t.fillStyle=l,t.fillRect(c,d,_+2*o,u+2*o),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(this.sP.labelText,c+o,d+o)}Gy(t,i){if(!/^#[0-9a-f]{6}$/i.test(t))return t;return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}setColor(t){this.sP.borderColor=t,this.sP.fillColor=t,this.cM()}color(){return this.sP.borderColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){if(!this.sP.time1||!this.sP.time2)return!1;const s=Ye(this._chart,this._series,this.sP.time1)??0,e=this._series.priceToCoordinate(this.sP.price1)??0,n=Ye(this._chart,this._series,this.sP.time2)??0,r=this._series.priceToCoordinate(this.sP.price2)??0,h=Math.min(s,n),l=Math.max(s,n),o=Math.min(e,r),a=Math.max(e,r);return t>=h&&t<=l&&i>=o&&i<=a}hitTestEndpoint(t,i){if(!this.sP.time1||!this.sP.time2)return null;const s=Ye(this._chart,this._series,this.sP.time1)??0,e=this._series.priceToCoordinate(this.sP.price1)??0,n=Ye(this._chart,this._series,this.sP.time2)??0,r=this._series.priceToCoordinate(this.sP.price2)??0,h=Math.min(s,n),l=Math.max(s,n),o=Math.min(e,r),a=Math.max(e,r),_=10;return Math.abs(t-h)<=_&&Math.abs(i-o)<=_?"corner1":Math.abs(t-l)<=_&&Math.abs(i-o)<=_?"corner2":Math.abs(t-h)<=_&&Math.abs(i-a)<=_?"corner3":Math.abs(t-l)<=_&&Math.abs(i-a)<=_?"corner4":t>=h&&t<=l&&i>=o&&i<=a?"body":null}startDrag(t,i){this.Ax=!0,this.Bx=t,this.Wx=i,"body"===t&&(this.Ex={gt:this.sP.time1,bt:this.sP.price1},this.Ox={gt:this.sP.time2,bt:this.sP.price2})}stopDrag(){this.Ax=!1,this.Bx=null,this.Wx=null,this.Ex=null,this.Ox=null}updateDrag(t,i){if(!this.Ax||!this.Bx)return;const s=Ye(this._chart,this._series,this.sP.time1)??0,e=this._series.priceToCoordinate(this.sP.price1)??0,n=s<(Ye(this._chart,this._series,this.sP.time2)??0),r=e<(this._series.priceToCoordinate(this.sP.price2)??0);if("body"===this.Bx&&this.Ex&&this.Ox){const s=Bh(this.Wx,t,i);this.sP.time1=this.Ex.gt+s.gt,this.sP.price1=this.Ex.bt+s.bt,this.sP.time2=this.Ox.gt+s.gt,this.sP.price2=this.Ox.bt+s.bt}else switch(this.Bx){case"corner1":n&&r?(this.sP.time1=t,this.sP.price1=i):!n&&r?(this.sP.time2=t,this.sP.price1=i):n&&!r?(this.sP.time1=t,this.sP.price2=i):(this.sP.time2=t,this.sP.price2=i);break;case"corner2":n&&r?(this.sP.time2=t,this.sP.price1=i):!n&&r?(this.sP.time1=t,this.sP.price1=i):n&&!r?(this.sP.time2=t,this.sP.price2=i):(this.sP.time1=t,this.sP.price2=i);break;case"corner3":n&&r?(this.sP.time1=t,this.sP.price2=i):!n&&r?(this.sP.time2=t,this.sP.price2=i):n&&!r?(this.sP.time1=t,this.sP.price1=i):(this.sP.time2=t,this.sP.price1=i);break;case"corner4":n&&r?(this.sP.time2=t,this.sP.price2=i):!n&&r?(this.sP.time1=t,this.sP.price2=i):n&&!r?(this.sP.time2=t,this.sP.price1=i):(this.sP.time1=t,this.sP.price1=i)}this.cM(),this.sP.onUpdate&&this.sP.onUpdate()}isVisible(){return this._visible}_serializeShape(){return{type:"rectangle",points:[Oh(this.sP.price1??0,Eh(this.sP.time1)),Oh(this.sP.price2??0,Eh(this.sP.time2))],style:{fillColor:this.sP.fillColor,fillOpacity:this.sP.fillOpacity,borderColor:this.sP.borderColor,borderWidth:this.sP.borderWidth,borderStyle:this.sP.borderStyle,showLabel:this.sP.showLabel,labelText:this.sP.labelText,labelPosition:this.sP.labelPosition}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}remove(){if(this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.sP.onRemove&&this.sP.onRemove()}}function Ul(t,i){return new Nl(t,i)}class ql{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Yl{constructor(t){this.Vx=t,this.Jt=new ql(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class jl extends Nh{constructor(t,i){super(t,"circle",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Bx=null,this.Wx=null,this.MC=null,this.JC=!1,this.XS=null,this.sp=null,this.$x=null,this.nP={fillColor:"#2962ff",fillOpacity:.1,borderColor:"#2962ff",borderWidth:2,borderStyle:"solid",showLabel:!1,labelText:"",interactive:!1,...i},this._registerOptions(this.nP),this.Zy(),this.nP.interactive&&!this.nP.centerTime&&this.Nx()}Nx(){this.JC=!0,this.XS=t=>{if(!t.point)return;if(Yh(this._chart))return;const i=qe(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);if(null!==s)if(this.nP.centerTime){const t=this._chart.timeScale().timeToCoordinate(this.nP.centerTime)??0,e=this._series.priceToCoordinate(this.nP.centerPrice)??0,n=Ye(this._chart,this._series,i)??0,r=this._series.priceToCoordinate(s)??0;this.nP.radiusTime=Math.abs(n-t),this.nP.radiusPrice=Math.abs(r-e),this.JC=!1,this.$x=null,this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.cM(),this.nP.onUpdate&&this.nP.onUpdate()}else this.nP.centerTime=i,this.nP.centerPrice=s,this.cM()},this.sp=t=>{if(this.JC&&this.nP.centerTime)if(t.point){const i=qe(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.$x={gt:i,bt:s},this.cM())}else this.$x=null,this.cM()},this._chart.subscribeClick(this.XS),this._chart.subscribeCrosshairMove(this.sp)}Zy(){this.eh=this.Ux();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new Yl(this)}drawToCanvas(t,i,s){if(!this.nP.centerTime||void 0===this.nP.centerPrice)return;const e=(Ye(this._chart,this._series,this.nP.centerTime)??0)*i,n=(this._series.priceToCoordinate(this.nP.centerPrice)??0)*s;let r,h;if(this.JC&&this.$x){const t=(Ye(this._chart,this._series,this.$x.gt)??0)*i,l=(this._series.priceToCoordinate(this.$x.bt)??0)*s;r=Math.abs(t-e),h=Math.abs(l-n)}else{if(void 0===this.nP.radiusTime||void 0===this.nP.radiusPrice)return;r=this.nP.radiusTime*i,h=this.nP.radiusPrice*s}if(this.nP.fillOpacity>0){const i=this.Gy(this.nP.fillColor,this.JC?.05:this.nP.fillOpacity);t.fillStyle=i,t.beginPath(),t.ellipse(e,n,r,h,0,0,2*Math.PI),t.fill()}const l=this.nP.borderColor,o=this.Fx?this.nP.borderWidth+1:this.nP.borderWidth;t.strokeStyle=l,t.lineWidth=o*i,"dashed"===this.nP.borderStyle?t.setLineDash([10*i,5*i]):"dotted"===this.nP.borderStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.ellipse(e,n,r,h,0,0,2*Math.PI),t.stroke(),t.setLineDash([]),!this.Fx&&!this.Lx||this.JC||this.isLocked()||this.rP(t,e,n,i,l),!this.Fx&&!this.Lx||this.JC||this.isLocked()||this.hP(t,e,n,r,h,i,l),this.nP.showLabel&&this.nP.labelText&&!this.JC&&this.nC(t,e,n,i,l)}rP(t,i,s,e,n){const r=8*e;t.fillStyle=n,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.beginPath(),t.arc(i,s,r/2,0,2*Math.PI),t.fill(),t.stroke()}hP(t,i,s,e,n,r,h){const l=8*r,o=[{ut:i,ct:s-n},{ut:i+e,ct:s},{ut:i,ct:s+n},{ut:i-e,ct:s}];t.fillStyle=h,t.strokeStyle="#ffffff",t.lineWidth=2*r;for(const i of o)t.fillRect(i.ut-l/2,i.ct-l/2,l,l),t.strokeRect(i.ut-l/2,i.ct-l/2,l,l)}nC(t,i,s,e,n){const r=6*e,h=12*e;t.font=`${h}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const l=t.measureText(this.nP.labelText).width,o=h,a=i-l/2-r,_=s-o/2-r;t.fillStyle=n,t.fillRect(a,_,l+2*r,o+2*r),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(this.nP.labelText,a+r,_+r)}Gy(t,i){if(!/^#[0-9a-f]{6}$/i.test(t))return t;return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}setColor(t){this.nP.borderColor=t,this.nP.fillColor=t,this.cM()}color(){return this.nP.borderColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){if(!this.nP.centerTime||void 0===this.nP.radiusTime)return!1;const s=Ye(this._chart,this._series,this.nP.centerTime)??0,e=this._series.priceToCoordinate(this.nP.centerPrice)??0,n=(t-s)/this.nP.radiusTime,r=(i-e)/this.nP.radiusPrice;return n*n+r*r<=1}hitTestEndpoint(t,i){if(!this.nP.centerTime||void 0===this.nP.radiusTime)return null;const s=Ye(this._chart,this._series,this.nP.centerTime)??0,e=this._series.priceToCoordinate(this.nP.centerPrice)??0,n=this.nP.radiusTime,r=this.nP.radiusPrice;if(Math.abs(t-s)<=10&&Math.abs(i-e)<=10)return"center";const h=[{ut:s,ct:e-r},{ut:s+n,ct:e},{ut:s,ct:e+r},{ut:s-n,ct:e}];for(const s of h)if(Math.abs(t-s.ut)<=10&&Math.abs(i-s.ct)<=10)return"edge";return null}startDrag(t,i){this.Ax=!0,this.Bx=t,this.Wx=i,this.MC="center"===t?{gt:this.nP.centerTime,bt:this.nP.centerPrice}:null}stopDrag(){this.Ax=!1,this.Bx=null,this.Wx=null,this.MC=null}updateDrag(t,i){if(this.Ax&&this.Bx){if("center"===this.Bx&&this.MC){const s=Bh(this.Wx,t,i);this.nP.centerTime=this.MC.gt+s.gt,this.nP.centerPrice=this.MC.bt+s.bt}else if("edge"===this.Bx){const s=Ye(this._chart,this._series,this.nP.centerTime)??0,e=this._series.priceToCoordinate(this.nP.centerPrice)??0,n=Ye(this._chart,this._series,t)??0,r=this._series.priceToCoordinate(i)??0;this.nP.radiusTime=Math.abs(n-s),this.nP.radiusPrice=Math.abs(r-e)}this.cM(),this.nP.onUpdate&&this.nP.onUpdate()}}isVisible(){return this._visible}_serializeShape(){return{type:"circle",points:[Oh(this.nP.centerPrice??0,Eh(this.nP.centerTime))],style:{fillColor:this.nP.fillColor,fillOpacity:this.nP.fillOpacity,borderColor:this.nP.borderColor,borderWidth:this.nP.borderWidth,borderStyle:this.nP.borderStyle,showLabel:this.nP.showLabel,labelText:this.nP.labelText},extra:{radiusTime:this.nP.radiusTime,radiusPrice:this.nP.radiusPrice}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}remove(){if(this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.nP.onRemove&&this.nP.onRemove()}}function Kl(t,i){return new jl(t,i)}class Gl{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Xl{constructor(t){this.Vx=t,this.Jt=new Gl(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class Zl extends Nh{constructor(t,i){super(t,"arrow",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.lP=-1,this.JC=!1,this.XS=null,this.oP=null,this.sp=null,this.$x=null,this.aP={points:[],lineColor:"#2962ff",lineWidth:2,showArrowHead:!0,showCircles:!0,circleRadius:4,interactive:!1,...i},this._registerOptions(this.aP),this.Zy(),!this.aP.interactive||this.aP.points&&0!==this.aP.points.length||this.Nx()}Nx(){this.JC=!0,this.XS=t=>{if(!t.point)return;if(Yh(this._chart))return;const i=qe(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.aP.points||(this.aP.points=[]),this.aP.points.push({time:i,price:s}),this.cM(),this.aP.onUpdate&&this.aP.onUpdate())},this.sp=t=>{if(this.JC)if(t.point){const i=qe(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.$x={gt:i,bt:s},this.cM())}else this.$x=null,this.cM()},this.oP=t=>{this.JC&&(t.preventDefault(),t.stopPropagation(),this.finishDrawing())},this._chart.subscribeClick(this.XS),this._chart.subscribeCrosshairMove(this.sp);const t=this._chart.chartElement?.();t&&t.addEventListener("contextmenu",this.oP)}finishDrawing(){if(this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.oP){const t=this._chart.chartElement?.();t&&t.removeEventListener("contextmenu",this.oP),this.oP=null}this.JC=!1,this.$x=null,this.cM(),this.aP.onComplete&&this.aP.onComplete()}isDrawing(){return this.JC}Zy(){this.eh=this.Ux();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new Xl(this)}drawToCanvas(t,i,s){if(!this.aP.points||0===this.aP.points.length)return;const e=this.aP.lineColor,n=this.Fx||this.Lx&&!this.isLocked()?this.aP.lineWidth+1:this.aP.lineWidth,r=[];for(const t of this.aP.points)try{let e=Ye(this._chart,this._series,t.time);if(null===e){const i=this._chart.timeScale(),s=i.timeToIndex(t.time,!0);null!=s&&(e=i.logicalToCoordinate(s))}if(null==e)continue;const n=this._series.priceToCoordinate(t.price);if(null===n)continue;r.push({ut:e*i,ct:n*s})}catch{continue}if(0===r.length&&!this.JC)return;let h=null;if(this.JC&&this.$x&&this.aP.points.length>0){h={ut:(Ye(this._chart,this._series,this.$x.gt)??0)*i,ct:(this._series.priceToCoordinate(this.$x.bt)??0)*s}}if(r.length>1){t.strokeStyle=e,t.lineWidth=n*i,t.beginPath(),t.moveTo(r[0].ut,r[0].ct);for(let i=1;i<r.length;i++)t.lineTo(r[i].ut,r[i].ct);t.stroke()}if(h&&r.length>0){const s=r[r.length-1];t.strokeStyle=e,t.lineWidth=n*i,t.globalAlpha=.5,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(s.ut,s.ct),t.lineTo(h.ut,h.ct),t.stroke(),t.setLineDash([]),t.globalAlpha=1}if(this.aP.showArrowHead&&r.length>1&&this._P(t,r[r.length-2],r[r.length-1],i,e),this.aP.showCircles)for(let s=0;s<r.length;s++)this.uP(t,r[s].ut,r[s].ct,i,e,0===s)}_P(t,i,s,e,n){const r=12*e,h=Math.atan2(s.ct-i.ct,s.ut-i.ut),l={ut:s.ut-r*Math.cos(h-Math.PI/6),ct:s.ct-r*Math.sin(h-Math.PI/6)},o={ut:s.ut-r*Math.cos(h+Math.PI/6),ct:s.ct-r*Math.sin(h+Math.PI/6)};t.fillStyle=n,t.beginPath(),t.moveTo(s.ut,s.ct),t.lineTo(l.ut,l.ct),t.lineTo(o.ut,o.ct),t.closePath(),t.fill()}uP(t,i,s,e,n,r){const h=this.aP.circleRadius*e;t.beginPath(),t.arc(i,s,h,0,2*Math.PI),r?(t.fillStyle=n,t.fill()):(t.strokeStyle=n,t.lineWidth=2*e,t.stroke(),t.fillStyle="#ffffff",t.fill(),t.strokeStyle=n,t.stroke())}setColor(t){this.aP.lineColor=t,this.cM()}color(){return this.aP.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){if(!this.aP.points||0===this.aP.points.length)return!1;for(let s=0;s<this.aP.points.length-1;s++)try{const e=this.aP.points[s],n=this.aP.points[s+1];let r=Ye(this._chart,this._series,e.time);if(null===r){const t=this._chart.timeScale(),i=t.timeToIndex(e.time,!0);null!=i&&(r=t.logicalToCoordinate(i))}let h=Ye(this._chart,this._series,n.time);if(null===h){const t=this._chart.timeScale(),i=t.timeToIndex(n.time,!0);null!=i&&(h=t.logicalToCoordinate(i))}const l=this._series.priceToCoordinate(e.price),o=this._series.priceToCoordinate(n.price);if(null==r||null===l||null==h||null===o)continue;if(this.tC(t,i,r,l,h,o)<=8)return!0}catch{continue}for(const s of this.aP.points)try{let e=Ye(this._chart,this._series,s.time);if(null===e){const t=this._chart.timeScale(),i=t.timeToIndex(s.time,!0);null!=i&&(e=t.logicalToCoordinate(i))}const n=this._series.priceToCoordinate(s.price);if(null==e||null===n)continue;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-n,2))<=8)return!0}catch{continue}return!1}tC(t,i,s,e,n,r){const h=n-s,l=r-e,o=h*h+l*l;if(0===o)return Math.sqrt((t-s)*(t-s)+(i-e)*(i-e));let a=((t-s)*h+(i-e)*l)/o;a=Math.max(0,Math.min(1,a));const _=s+a*h,u=e+a*l;return Math.sqrt((t-_)*(t-_)+(i-u)*(i-u))}hitTestEndpoint(t,i){if(!this.aP.points||0===this.aP.points.length)return null;for(let s=0;s<this.aP.points.length;s++)try{const e=this.aP.points[s];let n=Ye(this._chart,this._series,e.time);if(null===n){const t=this._chart.timeScale(),i=t.timeToIndex(e.time,!0);null!=i&&(n=t.logicalToCoordinate(i))}const r=this._series.priceToCoordinate(e.price);if(null==n||null===r)continue;if(Math.sqrt(Math.pow(t-n,2)+Math.pow(i-r,2))<=10)return s}catch{continue}return null}startDrag(t){this.Ax=!0,this.lP=t}stopDrag(){this.Ax=!1,this.lP=-1}updateDrag(t,i){this.Ax&&-1!==this.lP&&this.aP.points&&this.lP>=0&&this.lP<this.aP.points.length&&(this.aP.points[this.lP]={time:t,price:i},this.cM(),this.aP.onUpdate&&this.aP.onUpdate())}getPoints(){return this.aP.points||[]}addPoint(t){this.aP.points||(this.aP.points=[]),this.aP.points.push(t),this.cM()}isVisible(){return this._visible}_serializeShape(){return{type:"arrow",points:(this.aP.points||[]).map(t=>zh(t)),style:{lineColor:this.aP.lineColor,lineWidth:this.aP.lineWidth,showArrowHead:this.aP.showArrowHead,showCircles:this.aP.showCircles,circleRadius:this.aP.circleRadius}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}remove(){if(this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.oP){const t=this._chart.chartElement?.();t&&t.removeEventListener("contextmenu",this.oP),this.oP=null}if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.aP.onRemove&&this.aP.onRemove()}}function Jl(t,i){return new Zl(t,i)}class Ql{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class to{constructor(t){this.Vx=t,this.Jt=new Ql(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class io extends Nh{constructor(t,i){super(t,"brush",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.cP=!1,this.JC=!1,this.dP=[],this.pP=!1,this.kf=null,this.bS=null,this.PS=null,this.kS=null,this.IS=null,this.fP=void 0,this.xS=null,this.Ax=!1,this.Wx=null,this.oC=null,this.vP={points:[],color:"#2962ff",lineWidth:2,smoothing:!0,sampleDistance:4,...i},this._registerOptions(this.vP),this.Zy(),0===(this.vP.points??[]).length&&this.startDrawingMode()}startDrawingMode(){if(this.cP)return;const t=this._chart.chartElement();t&&(this.kf=t,this.cP=!0,this.PS=t=>this.TS(t),this.kS=t=>this.DS(t),this.IS=()=>this.VS(),this.xS=t=>{this.fP=t.hoveredObjectId},this._chart.subscribeCrosshairMove(this.xS),t.addEventListener("pointerdown",this.PS,!0),t.addEventListener("pointermove",this.kS,!0),t.addEventListener("pointerup",this.IS,!0),t.addEventListener("pointercancel",this.IS,!0))}stopDrawingMode(){if(!this.cP)return;this.mP(),this.cP=!1;const t=this.kf;t&&(this.PS&&t.removeEventListener("pointerdown",this.PS,!0),this.kS&&t.removeEventListener("pointermove",this.kS,!0),this.IS&&(t.removeEventListener("pointerup",this.IS,!0),t.removeEventListener("pointercancel",this.IS,!0))),this.xS&&(this._chart.unsubscribeCrosshairMove(this.xS),this.xS=null),this.PS=null,this.kS=null,this.IS=null,this.kf=null}isDrawingModeActive(){return this.cP}TS(t){if(this.wP())return;const i=this.gP(t);null!==i&&(this.JC=!0,this.dP=[i],this.bS=t.pointerId,qh(this._chart,!0),this.kf?.setPointerCapture(t.pointerId),t.preventDefault(),t.stopPropagation(),this.bP())}DS(t){if(!this.JC)return;const i=this.gP(t);if(null===i)return;const s=this.dP[this.dP.length-1];Math.hypot(i.ut-s.ut,i.ct-s.ct)<(this.vP.sampleDistance??4)||(this.dP.push(i),t.preventDefault(),t.stopPropagation(),this.bP())}VS(){this.JC&&this.mP()}mP(){if(!this.JC)return;this.JC=!1,this.HS();const t=[];for(const i of this.dP){const s=qe(this._chart,this._series,i.ut),e=this._series.coordinateToPrice(i.ct);null!==s&&null!==e&&t.push({time:s,price:e})}this.dP=[],t.length<2?this.cM():(this.vP.points=t,this.stopDrawingMode(),this.cM(),this.vP.onUpdate&&this.vP.onUpdate(),this.vP.onComplete&&this.vP.onComplete())}wP(){const t=this.fP;return"string"==typeof t&&t.split("#")[0]!==this.id}HS(){null!==this.bS&&(this.kf&&this.kf.hasPointerCapture(this.bS)&&this.kf.releasePointerCapture(this.bS),this.bS=null)}gP(t){const i=this.MP();if(null===i)return null;const s=i.getBoundingClientRect();return{ut:t.clientX-s.left,ct:t.clientY-s.top}}MP(){try{return this._series.getPane().getHTMLElement()}catch(t){return null}}bP(){this.pP||(this.pP=!0,requestAnimationFrame(()=>{this.pP=!1,this.cM()}))}drawToCanvas(t,i,s){const e=this.JC?this.dP.map(t=>({ut:t.ut*i,ct:t.ct*s})):this.yP(i,s);if(0===e.length)return;const n=this.Fx;if(t.strokeStyle=this.vP.color,t.lineWidth=(this.vP.lineWidth+(n?1:0))*i,t.lineCap="round",t.lineJoin="round",t.beginPath(),t.moveTo(e[0].ut,e[0].ct),this.vP.smoothing&&e.length>2){for(let i=1;i<e.length-1;i++){const s=(e[i].ut+e[i+1].ut)/2,n=(e[i].ct+e[i+1].ct)/2;t.quadraticCurveTo(e[i].ut,e[i].ct,s,n)}t.lineTo(e[e.length-1].ut,e[e.length-1].ct)}else for(let i=1;i<e.length;i++)t.lineTo(e[i].ut,e[i].ct);t.stroke(),!n&&!this.Lx||this.isLocked()||(this.Qx(t,e[0],i),this.Qx(t,e[e.length-1],i))}Qx(t,i,s){t.fillStyle=this.vP.color,t.strokeStyle="#ffffff",t.lineWidth=2*s,t.beginPath(),t.arc(i.ut,i.ct,5*s,0,2*Math.PI),t.fill(),t.stroke()}yP(t,i){const s=this.vP.points??[],e=[];for(const n of s){const s=Ye(this._chart,this._series,n.time),r=this._series.priceToCoordinate(n.price);null!==s&&null!==r&&e.push({ut:s*t,ct:r*i})}return e}hitTest(t,i){const s=this.yP(1,1);for(let e=1;e<s.length;e++)if(so(t,i,s[e-1],s[e])<=8)return!0;return!1}hitTestEndpoint(t,i){return this.hitTest(t,i)?"stroke":null}startDrag(t,i){this.Ax=!0,this.Wx=i,this.oC=(this.vP.points??[]).map(t=>({time:t.time,price:t.price}))}updateDrag(t,i){const s=this.oC;if(!this.Ax||null===s||!this.vP.points)return;const e=Bh(this.Wx,t,i);this.vP.points.forEach((t,i)=>{const n=s[i];n&&(t.time=n.time+e.gt,t.price=n.price+e.bt)}),this.cM(),this.vP.onUpdate&&this.vP.onUpdate()}stopDrag(){this.Ax=!1,this.Wx=null,this.oC=null}setColor(t){this.vP.color=t,this.cM()}color(){return this.vP.color??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}Zy(){this.eh=new to(this);const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):null}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}remove(){this.stopDrawingMode(),this.Ub&&(this._series.detachPrimitive(this.Ub),this.Ub=null),this.eh=null,this.vP.onRemove&&this.vP.onRemove()}_serializeShape(){return{type:"brush",points:(this.vP.points??[]).map(zh),style:{color:this.vP.color,lineWidth:this.vP.lineWidth,smoothing:this.vP.smoothing}}}getPoints(){return this.vP.points??[]}}function so(t,i,s,e){const n=e.ut-s.ut,r=e.ct-s.ct,h=n*n+r*r;if(0===h)return Math.hypot(t-s.ut,i-s.ct);let l=((t-s.ut)*n+(i-s.ct)*r)/h;return l=Math.max(0,Math.min(1,l)),Math.hypot(t-(s.ut+l*n),i-(s.ct+l*r))}function eo(t,i={}){return new io(t,i)}class no{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class ro{constructor(t){this.Vx=t,this.Jt=new no(t)}renderer(){return this.Vx.isComplete()?this.Jt:null}}class ho extends Nh{constructor(t,i){super(t,"text-tool",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Bx=null,this.Wx=null,this.MC=null,this.SP=!1,this.xP=null,this.CP={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._registerOptions(this.CP),this.Zy(),this.PP()}PP(){this.xP=this._chart.subscribeClick(t=>{if(!this.SP)return;const i=t.point?.x||0,s=t.point?.y||0;this.hitTest(i,s)||(this.setEditing(!1),this.CP.text&&""!==this.CP.text.trim()&&"Type here..."!==this.CP.text||this.remove())})}Zy(){this.eh=this.Ux();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new ro(this)}getTime(){return this.CP.time}getPrice(){return this.CP.price}getText(){return this.CP.text||""}getOptions(){return this.CP}setPosition(t,i){this.CP.time=t,this.CP.price=i,this._update()}setText(t){this.CP.text=t,this._update(),this.CP.onTextChange&&this.CP.onTextChange(t)}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}isComplete(){return!(!this.CP.time||void 0===this.CP.price)}setColor(t){this.CP.textColor=t,this.CP.borderColor=t,this.cM()}color(){return this.CP.textColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this._update())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this._update())}isHovered(){return this.Lx}setEditing(t){this.SP!==t&&(this.SP=t,this._update())}isEditing(){return this.SP}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){if(!this.isComplete())return!1;const s=this.CP.time,e=this.CP.price,n=Ye(this._chart,this._series,s)??0,r=this._series.priceToCoordinate(e)??0,h=this.CP.fontSize||14,l=this.CP.padding||8,o=this.CP.text||"",a=.6*h,_=Math.min(o.length*a,this.CP.maxWidth||200);return t>=n&&t<=n+_+2*l&&i>=r&&i<=r+(h+2*l)}hitTestEndpoint(t,i){if(!this.isComplete())return null;const s=this.CP.time,e=this.CP.price,n=Ye(this._chart,this._series,s)??0,r=this._series.priceToCoordinate(e)??0;return Math.sqrt(Math.pow(t-n,2)+Math.pow(i-r,2))<=10?"anchor":null}startDrag(t,i){this.Ax=!0,this.Bx=t,this.Wx=i,this.MC={gt:this.CP.time,bt:this.CP.price}}stopDrag(){this.Ax=!1,this.Bx=null,this.Wx=null,this.MC=null}updateDrag(t,i){if(this.Ax){if("body"===this.Bx&&this.MC){const s=Bh(this.Wx,t,i);this.setPosition(this.MC.gt+s.gt,this.MC.bt+s.bt)}else this.setPosition(t,i);this.CP.onUpdate&&this.CP.onUpdate()}}drawToCanvas(t,i,s){if(!this.isComplete())return;const e=this.CP.time,n=this.CP.price,r=this.CP.text||"",h=(Ye(this._chart,this._series,e)??0)*i,l=(this._series.priceToCoordinate(n)??0)*s,o=(this.CP.fontSize||14)*i,a=(this.CP.padding||8)*i,_=(this.CP.maxWidth||200)*i;t.font=`${o}px ${this.CP.fontFamily||"Arial"}`,t.textBaseline="top";const u=r.split(" "),c=[];let d="";for(const i of u){const s=d?`${d} ${i}`:i;t.measureText(s).width>_&&d?(c.push(d),d=i):d=s}d&&c.push(d);let p=0;for(const i of c){const s=t.measureText(i);p=Math.max(p,s.width)}const f=p+2*a,v=1.2*o,m=c.length*v+2*a,w=this.CP.backgroundOpacity||.8,g=this.CP.backgroundColor||"#2962FF";t.fillStyle=this.Gy(g,w),t.fillRect(h,l,f,m),(this.Fx||this.Lx)&&(t.strokeStyle=this.CP.borderColor??"#FFFFFF",t.lineWidth=(this.CP.borderWidth||1)*i*(this.Fx?2:1),t.strokeRect(h,l,f,m)),t.fillStyle=this.CP.textColor||"#FFFFFF";for(let i=0;i<c.length;i++){const s=c[i];let e=h+a;if("center"===this.CP.textAlign){e=h+(f-t.measureText(s).width)/2}else if("right"===this.CP.textAlign){e=h+f-t.measureText(s).width-a}const n=l+a+i*v;t.fillText(s,e,n)}if((this.Fx||this.Lx)&&!this.isLocked()){const s=4*i;t.fillStyle=this.CP.textColor??"#2962ff",t.beginPath(),t.arc(h,l,s,0,2*Math.PI),t.fill(),t.fillStyle="#FFFFFF",t.beginPath(),t.arc(h,l,s-2*i,0,2*Math.PI),t.fill()}}Gy(t,i){if(!/^#[0-9a-f]{6}$/i.test(t))return t;return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}_serializeShape(){return{type:"text",points:[Oh(this.CP.price??0,Eh(this.CP.time))],style:{fontSize:this.CP.fontSize,fontFamily:this.CP.fontFamily,textColor:this.CP.textColor,backgroundColor:this.CP.backgroundColor,backgroundOpacity:this.CP.backgroundOpacity,padding:this.CP.padding,borderColor:this.CP.borderColor,borderWidth:this.CP.borderWidth,textAlign:this.CP.textAlign,maxWidth:this.CP.maxWidth},extra:{text:this.CP.text}}}remove(){if(this.xP&&(this._chart.unsubscribeClick(this.xP),this.xP=null),this.Ub&&this._series){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.CP.onRemove&&this.CP.onRemove()}}function lo(t,i){return new ho(t,i)}class oo{constructor(t){this.TP=t}calculatePips(t,i){return Math.abs(i-t)/this.TP.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 r=Math.abs(t-i),h=Math.abs(s-t);n.stopLossAmount=r*e,n.takeProfitAmount=h*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.TP={...this.TP,...t}}getPipConfig(){return{...this.TP}}}function ao(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 _o(t,i){return"number"==typeof t?ao(t):void 0!==i?ao(i):{pipValue:.1,decimals:1}}class uo{constructor(t){this.TP=t}calculateMetrics(t,i,s,e,n){const r=e-i;return{point1:{time:t,price:i},point2:{time:s,price:e},priceDifference:r,pricePercent:r/i*100,pips:Math.abs(r)/this.TP.pipValue,timeDifference:this.kP(t,s),barCount:n}}kP(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.TP={...this.TP,...t}}getPipConfig(){return{...this.TP}}}class co{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class po{constructor(t){this.Vx=t,this.Jt=new co(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}}class fo extends Nh{constructor(t,i){super(t,"ruler-tool",i),this.Ub=null,this.Rx=null,this.jb=null,this.eh=null,this.HC=null,this.zx=!1,this.Fx=!1,this.Lx=!1,this.$x=null,this.Ax=!1,this.NC=null,this.sp=null,this.DP={lineColor:"#2962ff",lineWidth:2,showLabel:!0,labelBackgroundColor:"#2962ff",labelTextColor:"#ffffff",selectionColor:"#2962ff",selectionLineWidth:3,symbol:"DEFAULT",...i},this._registerOptions(this.DP);const s=this.DP.pipConfig||_o(this.DP.symbol||"DEFAULT");this.qC=new uo(s),this.Zy(),this.DP.interactive?this.Nx():this.DP.point1Time&&this.DP.point2Time&&(this.zx=!0,this.YC())}Zy(){this.eh=this.Ux();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new po(this)}Nx(){this.HC=new Gh(this._chart,this._series,{Tx:t=>{this.DP.point1Time=t.gt,this.DP.point1Price=t.bt,this.cM()},kx:t=>{this.DP.point2Time=t.gt,this.DP.point2Price=t.bt},Dx:(t,i)=>{this.DP.point1Time=t.gt,this.DP.point1Price=t.bt,this.DP.point2Time=i.gt,this.DP.point2Price=i.bt,this.zx=!0,this.$x=null,this.YC(),this.KC(),this.cM()},Ix:t=>{this.$x=t,this.cM()}}),this.HC.vx()}drawToCanvas(t,i,s){if(!this.zx&&this.DP.point1Time&&this.$x)return void this.Jx(t,i,s);if(!this.zx||!this.DP.point1Time||!this.DP.point2Time)return;const e=(Ye(this._chart,this._series,this.DP.point1Time)??0)*i,n=(this._series.priceToCoordinate(this.DP.point1Price)??0)*s,r=(Ye(this._chart,this._series,this.DP.point2Time)??0)*i,h=(this._series.priceToCoordinate(this.DP.point2Price)??0)*s;(this.Fx||this.Lx&&!this.isLocked())&&(t.strokeStyle=this.DP.selectionColor,t.lineWidth=this.DP.selectionLineWidth*i,t.beginPath(),t.moveTo(e,n),t.lineTo(r,h),t.stroke()),t.strokeStyle=this.DP.lineColor,t.lineWidth=this.DP.lineWidth*i,t.beginPath(),t.moveTo(e,n),t.lineTo(r,h),t.stroke(),this.IP(t,e,n,r,h,i),this.Qx(t,e,n,i),this.Qx(t,r,h,i),this.DP.showLabel&&this.jb&&this.nC(t,e,n,r,h,i,s)}IP(t,i,s,e,n,r){const h=this.DP.measure??"both";if("both"===h)return;const l=14*r;if(t.strokeStyle=this.DP.lineColor,t.lineWidth=this.DP.lineWidth*r,t.beginPath(),"price"===h)for(const r of[s,n])t.moveTo(Math.min(i,e)-l/2,r),t.lineTo(Math.max(i,e)+l/2,r);else for(const r of[i,e])t.moveTo(r,Math.min(s,n)-l/2),t.lineTo(r,Math.max(s,n)+l/2);t.stroke()}Qx(t,i,s,e){const n=this.Fx?this.DP.selectionColor:this.DP.lineColor,r=this.Fx?5*e:4*e;t.fillStyle=n,t.beginPath(),t.arc(i,s,r,0,2*Math.PI),t.fill(),this.Fx&&(t.strokeStyle="#ffffff",t.lineWidth=2*e,t.stroke())}Jx(t,i,s){if(!this.DP.point1Time||!this.$x)return;const e=(Ye(this._chart,this._series,this.DP.point1Time)??0)*i,n=(this._series.priceToCoordinate(this.DP.point1Price)??0)*s,r=(Ye(this._chart,this._series,this.$x.gt)??0)*i,h=(this._series.priceToCoordinate(this.$x.bt)??0)*s;t.strokeStyle=this.DP.lineColor,t.lineWidth=this.DP.lineWidth*i,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(e,n),t.lineTo(r,h),t.stroke(),t.setLineDash([]),this.Qx(t,e,n,i),t.globalAlpha=.5,this.Qx(t,r,h,i),t.globalAlpha=1}nC(t,i,s,e,n,r,h){if(!this.jb)return;const l=(i+e)/2,o=(s+n)/2,a=this.DP.measure??"both",_=[];"time"!==a&&(_.push(this.qC.formatPips(this.jb.pips)),_.push(this.qC.formatPercent(this.jb.pricePercent))),"price"!==a&&_.push(this.qC.formatBarCount(this.jb.barCount));const u=_.join(" | ");t.font=12*r+"px sans-serif";const c=6*r,d=t.measureText(u).width+2*c,p=12*r+2*c;t.fillStyle=this.DP.labelBackgroundColor,t.fillRect(l-d/2,o-p/2,d,p),t.fillStyle=this.DP.labelTextColor,t.textAlign="center",t.textBaseline="middle",t.fillText(u,l,o)}YC(){if(!this.DP.point1Time||!this.DP.point2Time||void 0===this.DP.point1Price||void 0===this.DP.point2Price)return;const t=this.VP();this.jb=this.qC.calculateMetrics(this.DP.point1Time,this.DP.point1Price,this.DP.point2Time,this.DP.point2Price,t),this.DP.onUpdate&&this.jb&&this.DP.onUpdate(this.jb)}VP(){if(!this.DP.point1Time||!this.DP.point2Time)return 0;const t=Ye(this._chart,this._series,this.DP.point1Time),i=Ye(this._chart,this._series,this.DP.point2Time);if(null===t||null===i)return 0;return Math.abs(Math.round((i-t)/6))}updatePoints(t,i,s,e){this.DP.point1Time=t,this.DP.point1Price=i,this.DP.point2Time=s,this.DP.point2Price=e,this.YC(),this.cM()}getMetrics(){return this.jb}remove(){this.destroy()}destroy(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.HC&&(this.HC.m(),this.HC=null),this.XC(),this.DP.onRemove&&this.DP.onRemove()}KC(){this.sp=t=>{this.GC(t)},this._chart.subscribeCrosshairMove(this.sp)}XC(){this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null)}GC(t){if(!t.point)return;const i=qe(this._chart,this._series,t.point.x);if(null===i)return;if(!this.Fx||!this.Ax)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&("point1"===this.NC?(this.DP.point1Time=i,this.DP.point1Price=s):"point2"===this.NC&&(this.DP.point2Time=i,this.DP.point2Price=s),this.YC(),this.cM())}startDrag(t){this.Ax=!0,this.NC=t}stopDrag(){this.Ax=!1,this.NC=null}updateDrag(t,i){this.Ax&&this.NC&&("point1"===this.NC?(this.DP.point1Time=t,this.DP.point1Price=i):(this.DP.point2Time=t,this.DP.point2Price=i),this.YC(),this.cM())}hitTestEndpoint(t,i){if(!this.zx||!this.DP.point1Time||!this.DP.point2Time)return null;const s=Ye(this._chart,this._series,this.DP.point1Time)??0,e=this._series.priceToCoordinate(this.DP.point1Price)??0,n=Ye(this._chart,this._series,this.DP.point2Time)??0,r=this._series.priceToCoordinate(this.DP.point2Price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2))<=10)return"point1";return Math.sqrt(Math.pow(t-n,2)+Math.pow(i-r,2))<=10?"point2":null}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.YC(),this.cM()}_serializeShape(){return{type:"ruler",points:[Oh(this.DP.point1Price??0,Eh(this.DP.point1Time)),Oh(this.DP.point2Price??0,Eh(this.DP.point2Time))],style:{lineColor:this.DP.lineColor,lineWidth:this.DP.lineWidth,showLabel:this.DP.showLabel,labelBackgroundColor:this.DP.labelBackgroundColor,labelTextColor:this.DP.labelTextColor,selectionColor:this.DP.selectionColor,selectionLineWidth:this.DP.selectionLineWidth},extra:{symbol:this.DP.symbol,pipConfig:this.DP.pipConfig,measure:this.DP.measure}}}setColor(t){this.DP.lineColor=t,this.cM()}color(){return this.DP.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}isSelected(){return this.Fx}isComplete(){return this.zx}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){if(!this.zx||!this.DP.point1Time||!this.DP.point2Time)return!1;const s=Ye(this._chart,this._series,this.DP.point1Time)??0,e=this._series.priceToCoordinate(this.DP.point1Price)??0,n=Ye(this._chart,this._series,this.DP.point2Time)??0,r=this._series.priceToCoordinate(this.DP.point2Price)??0;return this.RP(t,i,s,e,n,r)<=(this.Fx?12:8)}RP(t,i,s,e,n,r){const h=n-s,l=r-e,o=h*h+l*l;let a,_,u=-1;0!==o&&(u=((t-s)*h+(i-e)*l)/o),u<0?(a=s,_=e):u>1?(a=n,_=r):(a=s+u*h,_=e+u*l);const c=t-a,d=i-_;return Math.sqrt(c*c+d*d)}}function vo(t,i){return new fo(t,i)}class mo{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class wo{constructor(t){this.Vx=t,this.Jt=new mo(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}}class go extends Nh{constructor(t,i){super(t,"position-tool",i),this.Ub=null,this.Rx=null,this.jb=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Bx=null,this.Wx=null,this.MC=null,this.FP=null,this.LP=null,this.AP={profitColor:"#26a69a",lossColor:"#ef5350",entryLineColor:"#ffffff",opacity:.3,showTooltips:!0,...i},this._registerOptions(this.AP);const s=this.AP.pipConfig||_o(this.AP.entryPrice);this.qC=new oo(s),this.Zy(),this.YC()}Zy(){this.eh=this.Ux();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new wo(this)}drawToCanvas(t,i,s){if(this.FP&&this.AP.takeProfit){const e=this._chart.timeScale();this.BP(t,this.FP,i,s,e),(this.Lx||this.Fx)&&this.nC(t,this.FP,"profit",i,s,e)}if(this.LP&&this.AP.stopLoss){const e=this._chart.timeScale();if(this.BP(t,this.LP,i,s,e),this.Lx||this.Fx){const e=this._chart.timeScale();this.nC(t,this.LP,"loss",i,s,e)}}const e=this._chart.timeScale();if(this.WP(t,i,s,e),this.AP.takeProfit){const e=this._chart.timeScale();this.Qx(t,this.AP.takeProfit,this.AP.profitColor,i,s,e)}if(this.AP.stopLoss){const e=this._chart.timeScale();this.Qx(t,this.AP.stopLoss,this.AP.lossColor,i,s,e)}}BP(t,i,s,e,n){const r=(Ye(this._chart,this._series,this.AP.entryTime)??0)*s;let h;if(this.AP.endTime)h=(Ye(this._chart,this._series,this.AP.endTime)??0)*s;else{h=this._chart.chartElement().clientWidth*s}const l=(this._series.priceToCoordinate(i.EP)??0)*e,o=(this._series.priceToCoordinate(i.OP)??0)*e;t.fillStyle=this.Gy(i.I,.15),t.fillRect(r,Math.min(l,o),h-r,Math.abs(o-l)),t.strokeStyle=i.I,t.lineWidth=2*s,t.beginPath(),t.moveTo(r,o),t.lineTo(h,o),t.stroke()}WP(t,i,s,e){const n=(Ye(this._chart,this._series,this.AP.entryTime)??0)*i,r=(this._series.priceToCoordinate(this.AP.entryPrice)??0)*s;let h;if(this.AP.endTime)h=(Ye(this._chart,this._series,this.AP.endTime)??0)*i;else{h=this._chart.chartElement().clientWidth*i}const l=this.AP.entryLineColor;t.strokeStyle=l,t.lineWidth=2*i,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(n,r),t.lineTo(h,r),t.stroke(),t.setLineDash([]),t.strokeStyle=this.AP.entryLineColor,t.lineWidth=1*i,t.setLineDash([5*i,5*i]);const o=this._chart.chartElement().clientHeight*s;if(t.beginPath(),t.moveTo(n,0),t.lineTo(n,o),t.stroke(),t.setLineDash([]),!this.Fx&&!this.Lx||this.isLocked())t.fillStyle=this.AP.entryLineColor,t.beginPath(),t.arc(n,r,4*i,0,2*Math.PI),t.fill();else{t.fillStyle=l,t.strokeStyle="#ffffff",t.lineWidth=2*i,t.beginPath(),t.arc(n,r,5*i,0,2*Math.PI),t.fill(),t.stroke();const s=8*i;t.fillStyle=l,t.strokeStyle="#ffffff",t.lineWidth=2*i,t.fillRect(h-s/2,r-s/2,s,s),t.strokeRect(h-s/2,r-s/2,s,s)}}YC(){this.AP.stopLoss&&this.AP.takeProfit&&(this.jb=this.qC.calculateMetrics(this.AP.entryPrice,this.AP.stopLoss,this.AP.takeProfit,this.AP.quantity),this.zP(),this.AP.onUpdate&&this.jb&&this.AP.onUpdate(this.jb))}zP(){const t=this.$P();this.AP.takeProfit&&(this.FP={HP:this.AP.entryTime,NP:t,EP:this.AP.entryPrice,OP:this.AP.takeProfit,I:this.AP.profitColor,yy:this.AP.opacity}),this.AP.stopLoss&&(this.LP={HP:this.AP.entryTime,NP:t,EP:this.AP.entryPrice,OP:this.AP.stopLoss,I:this.AP.lossColor,yy:this.AP.opacity})}$P(){this._chart.timeScale().getVisibleLogicalRange();return this.AP.entryTime}nC(t,i,s,e,n,r){if(!this.jb)return;const h=(Ye(this._chart,this._series,this.AP.entryTime)??0)*e,l=(this._series.priceToCoordinate(i.OP)??0)*n,o="profit"===s,a=o?this.jb.takeProfitPips:this.jb.stopLossPips,_=o?this.AP.takeProfit:this.AP.stopLoss,u=this.jb.riskRewardRatio,c=o?`Objetivo: ${_?.toFixed(5)} (${a.toFixed(1)} pips) 1:${u.toFixed(2)}`:`P/G Abertura: ${_?.toFixed(5)} (${a.toFixed(1)} pips)`;t.font=11*e+'px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif';const d=6*e,p=t.measureText(c).width+2*d,f=20*e,v=h+8*e,m=l-f/2;t.fillStyle=i.I,t.fillRect(v,m,p,f),t.fillStyle="#ffffff",t.textAlign="left",t.textBaseline="middle",t.fillText(c,v+d,l)}Qx(t,i,s,e,n,r){const h=(Ye(this._chart,this._series,this.AP.entryTime)??0)*e,l=(this._series.priceToCoordinate(i)??0)*n,o=s;let a;if(t.fillStyle=o,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.beginPath(),t.arc(h,l,5*e,0,2*Math.PI),t.fill(),t.stroke(),this.AP.endTime)a=(Ye(this._chart,this._series,this.AP.endTime)??0)*e;else{a=this._chart.chartElement().clientWidth*e-10*e}const _=8*e,u=s;t.fillStyle=u,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.fillRect(a-_/2,l-_/2,_,_),t.strokeRect(a-_/2,l-_/2,_,_)}Gy(t,i){if(!/^#[0-9a-f]{6}$/i.test(t))return t;return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}updatePosition(t){this.AP={...this.AP,...t},this.YC(),this._update()}getMetrics(){return this.jb}setStopLoss(t){this.AP.stopLoss=t,this.YC(),this._update()}setTakeProfit(t){this.AP.takeProfit=t,this.YC(),this._update()}setEntryPrice(t){this.AP.entryPrice=t,this.YC(),this._update()}_serializeShape(){return{type:"position",points:[Oh(this.AP.entryPrice,Eh(this.AP.entryTime))],style:{profitColor:this.AP.profitColor,lossColor:this.AP.lossColor,entryLineColor:this.AP.entryLineColor,opacity:this.AP.opacity,showTooltips:this.AP.showTooltips},extra:{endTime:Eh(this.AP.endTime),stopLoss:this.AP.stopLoss,takeProfit:this.AP.takeProfit,quantity:this.AP.quantity,pipConfig:this.AP.pipConfig}}}setColor(t){this.AP.entryLineColor=t,this.cM()}color(){return this.AP.entryLineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){if(!this.AP.stopLoss&&!this.AP.takeProfit)return!1;const s=Ye(this._chart,this._series,this.AP.entryTime)??0;let e;if(this.AP.endTime)e=Ye(this._chart,this._series,this.AP.endTime)??0;else{e=this._chart.chartElement().clientWidth}if(this.AP.takeProfit&&this.AP.stopLoss){const n=this._series.priceToCoordinate(this.AP.takeProfit)??0,r=this._series.priceToCoordinate(this.AP.stopLoss)??0,h=Math.min(n,r),l=Math.max(n,r);if(t>=s&&t<=e&&i>=h&&i<=l)return!0;const o=8;if(Math.abs(t-s)<=o&&i>=h&&i<=l)return!0}return!1}hitTestEndpoint(t,i){const s=Ye(this._chart,this._series,this.AP.entryTime)??0;let e;if(this.AP.endTime)e=Ye(this._chart,this._series,this.AP.endTime)??0;else{e=this._chart.chartElement().clientWidth}if(this.AP.takeProfit){const e=this._series.priceToCoordinate(this.AP.takeProfit)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2))<=10)return"tp"}if(this.AP.stopLoss){const e=this._series.priceToCoordinate(this.AP.stopLoss)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2))<=10)return"sl"}if(this.AP.takeProfit){const s=this._series.priceToCoordinate(this.AP.takeProfit)??0;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-s,2))<=10)return"tp-right"}if(this.AP.stopLoss){const s=this._series.priceToCoordinate(this.AP.stopLoss)??0;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-s,2))<=10)return"sl-right"}const n=this._series.priceToCoordinate(this.AP.entryPrice)??0;if(t>=s&&t<=e&&Math.abs(i-n)<=8)return"entry";if(this.AP.takeProfit&&this.AP.stopLoss){const n=this._series.priceToCoordinate(this.AP.takeProfit)??0,r=this._series.priceToCoordinate(this.AP.stopLoss)??0,h=Math.min(n,r),l=Math.max(n,r);if(t>=s&&t<=e&&i>=h&&i<=l)return"move"}return null}startDrag(t,i){this.Ax=!0,this.Bx=t,this.Wx=i,"move"===t&&(this.MC={UP:this.AP.entryPrice,qP:this.AP.entryTime??null,Ky:this.AP.endTime??null,YP:this.AP.takeProfit??null,jP:this.AP.stopLoss??null})}stopDrag(){this.Ax=!1,this.Bx=null,this.Wx=null,this.MC=null}updateDrag(t,i){if(this.Ax&&this.Bx){if("entry"===this.Bx)this.AP.entryPrice=i;else if("move"===this.Bx){if(this.MC){const s=Bh(this.Wx,t,i),e=this.MC;this.AP.entryPrice=e.UP+s.bt,null!==e.YP&&(this.AP.takeProfit=e.YP+s.bt),null!==e.jP&&(this.AP.stopLoss=e.jP+s.bt),null!==e.qP&&(this.AP.entryTime=this.KP(e.qP,s.gt)),null!==e.Ky&&(this.AP.endTime=this.KP(e.Ky,s.gt))}}else"tp"===this.Bx||"tp-right"===this.Bx?(this.AP.takeProfit=i,"tp-right"===this.Bx?this.AP.endTime=t:this.AP.entryTime=t):"sl"!==this.Bx&&"sl-right"!==this.Bx||(this.AP.stopLoss=i,"sl-right"===this.Bx?this.AP.endTime=t:this.AP.entryTime=t);this.YC(),this.cM()}}KP(t,i){return t+i}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}remove(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.AP.onRemove&&this.AP.onRemove()}}function bo(t,i){return new go(t,i)}class Mo{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class yo{constructor(t){this.Vx=t,this.Jt=new Mo(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class So extends Nh{constructor(t,i){super(t,"gantt",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.GP=-1,this.Wx=null,this.MC=null,this.XP=-1,this.ZP={segments:[],rowHeight:40,rowSpacing:5,fillOpacity:.7,borderWidth:2,showLabels:!0,showGrid:!0,...i},this._registerOptions(this.ZP),this.Zy()}Zy(){this.eh=this.Ux();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new yo(this)}drawToCanvas(t,i,s){if(!this.ZP.segments||0===this.ZP.segments.length)return;const e=50*s,n=this.ZP.rowHeight*s,r=this.ZP.rowSpacing*s;this.ZP.showGrid&&this.sm(t,e,n,r,i,s),this.ZP.segments.forEach((s,h)=>{const l=(Ye(this._chart,this._series,s.startTime)??0)*i,o=(Ye(this._chart,this._series,s.endTime)??0)*i,a=e+s.level*(n+r),_=h===this.XP||this.Lx&&!this.isLocked();this.JP(t,l,o,a,n,s,_,i)})}sm(t,i,s,e,n,r){if(!this.ZP.segments)return;const h=Math.max(...this.ZP.segments.map(t=>t.level),0),l=this._chart.chartElement().clientWidth*n;t.strokeStyle="rgba(200, 200, 200, 0.3)",t.lineWidth=1*n;for(let n=0;n<=h+1;n++){const r=i+n*(s+e);t.beginPath(),t.moveTo(0,r),t.lineTo(l,r),t.stroke()}}JP(t,i,s,e,n,r,h,l){const o=s-i,a=this.Gy(r.color,h?this.ZP.fillOpacity+.2:this.ZP.fillOpacity);t.fillStyle=a,t.fillRect(i,e,o,n),t.strokeStyle=r.color;const _=this.ZP.borderWidth+(this.Fx?2:0);t.lineWidth=_*l,t.strokeRect(i,e,o,n),this.ZP.showLabels&&r.label&&this.nC(t,i,e,o,n,r.label,l)}nC(t,i,s,e,n,r,h){const l=11*h,o=6*h;t.font=`${l}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,t.fillStyle="#ffffff",t.textBaseline="middle";let a=r;const _=e-2*o;let u=t.measureText(a).width;if(u>_&&_>0){for(;u>_&&a.length>0;)a=a.slice(0,-1),u=t.measureText(a+"...").width;a+="..."}t.fillText(a,i+o,s+n/2)}Gy(t,i){if(!/^#[0-9a-f]{6}$/i.test(t))return t;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.ZP.segments||(this.ZP.segments=[]),this.ZP.segments.push(t),this.cM(),this.ZP.onUpdate&&this.ZP.onUpdate()}removeSegment(t){this.ZP.segments&&t>=0&&t<this.ZP.segments.length&&(this.ZP.segments.splice(t,1),this.cM(),this.ZP.onUpdate&&this.ZP.onUpdate())}getSegments(){return this.ZP.segments||[]}setColor(t){const i=this.ZP.segments??[];for(const s of i)s.color=t;this.cM()}color(){const t=this.ZP.segments??[];return t.length>0?t[0].color:""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):null}hitTestEndpoint(t,i){return this.hitTest(t,i)?"move":null}startDrag(t,i){const s=this.ZP.segments?.[this.XP];s&&(this.Ax=!0,this.GP=this.XP,this.Wx=i,this.MC={jy:s.startTime,Ky:s.endTime})}updateDrag(t,i){const s=this.ZP.segments?.[this.GP];if(!this.Ax||!this.MC||!s)return;const e=Bh(this.Wx,t,i);s.startTime=this.MC.jy+e.gt,s.endTime=this.MC.Ky+e.gt,this.cM(),this.ZP.onUpdate&&this.ZP.onUpdate()}stopDrag(){this.Ax=!1,this.GP=-1,this.Wx=null,this.MC=null}hitTest(t,i){if(!this.ZP.segments||0===this.ZP.segments.length)return!1;const s=this.ZP.rowHeight,e=this.ZP.rowSpacing;for(let n=0;n<this.ZP.segments.length;n++){const r=this.ZP.segments[n],h=Ye(this._chart,this._series,r.startTime)??0,l=Ye(this._chart,this._series,r.endTime)??0,o=50+r.level*(s+e);if(t>=h&&t<=l&&i>=o&&i<=o+s)return this.XP=n,!0}return this.XP=-1,!1}isVisible(){return this._visible}_serializeShape(){return{type:"gantt",points:[],style:{rowHeight:this.ZP.rowHeight,rowSpacing:this.ZP.rowSpacing,fillOpacity:this.ZP.fillOpacity,borderWidth:this.ZP.borderWidth,showLabels:this.ZP.showLabels,showGrid:this.ZP.showGrid},extra:{segments:(this.ZP.segments||[]).map(t=>({jy:Eh(t.startTime),Ky:Eh(t.endTime),ie:t.level,Zl:t.label,I:t.color,QP:t.category}))}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}remove(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.ZP.onRemove&&this.ZP.onRemove()}}function xo(t,i){return new So(t,i)}class Co{constructor(t,i,s={}){this.tT=[],this.iT=[],this.sT=[],this.eT=!1,this.nT=new Map,this.rT=null,this.hT=null,this.lT=null,this.XS=null,this.oT=null,this.sp=null,this.aT=null,this._T=null,this.uT=null,this.bS=null,this.cT=!1,this.dT=null,this.pT=null,this.fT=new d,this.Ax=!1,this.vT=null,this.Rf=t,this.bn=i,this.Ps={enableKeyboardShortcuts:!0,selectionColor:"#2962ff",selectionLineWidth:3,...s},this.mT()}startDrawing(t){this.lT=t,this.wT()}activeDrawingType(){return this.lT}stopDrawing(){this.lT=null}addTool(t,i){const s=i??t.id;return this.nT.set(s,t),this.recordChange(),s}removeTool(t){const i=this.nT.get(t);return!!i&&(this.rT===t&&this.gT(null),i.remove(),this.nT.delete(t),this.recordChange(),!0)}selectTool(t){return!!this.nT.has(t)&&(this.gT(t),!0)}gT(t){if(this.rT===t)return;const i=null===this.rT?void 0:this.nT.get(this.rT);i&&i.setSelected(!1),this.rT=t;const s=null===t?void 0:this.nT.get(t);s&&s.setSelected(!0),this.bT()}recordChange(){this.eT||(this.tT.push(this.sT),this.iT=[],this.sT=this.serializeAll())}canUndo(){return this.tT.length>0}canRedo(){return this.iT.length>0}undo(){const t=this.tT.pop();return void 0!==t&&(this.iT.push(this.sT),this.MT(t),!0)}redo(){const t=this.iT.pop();return void 0!==t&&(this.tT.push(this.sT),this.MT(t),!0)}MT(t){this.eT=!0;try{this.restoreAll({chart:this.Rf,series:this.bn},t,!0),this.sT=t}finally{this.eT=!1}}subscribeSelectionChanged(t){this.fT.i(t)}unsubscribeSelectionChanged(t){this.fT._(t)}selectionBounds(){if(null===this.rT)return null;const t=this.nT.get(this.rT);return t?this.yT(t):null}yT(t){const i=t.series(),s=t.serialize().points;let e=Number.POSITIVE_INFINITY,n=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,h=Number.NEGATIVE_INFINITY,l=!1;for(const t of s){const s=Ye(this.Rf,i,t.time),o=i.priceToCoordinate(t.price);null!==s&&null!==o&&(l=!0,e=Math.min(e,s),r=Math.max(r,s),n=Math.min(n,o),h=Math.max(h,o))}if(!l)return null;const o=this.ST(t);return{left:e+o.ut,right:r+o.ut,top:n+o.ct,bottom:h+o.ct}}ST(t){const i=this.Rf.chartElement(),s=this.xT(t);if(!i||!s)return{ut:0,ct:0};const e=i.getBoundingClientRect(),n=s.getBoundingClientRect();return{ut:n.left-e.left,ct:n.top-e.top}}bT(){this.fT.p({id:this.rT,bounds:this.selectionBounds()})}deselectAll(){this.wT()}deleteSelected(){if(this.rT){const t=this.nT.get(this.rT);return(!t||!t.isLocked())&&this.removeTool(this.rT)}return!1}getSelectedToolId(){return this.rT}getAllTools(){return new Map(this.nT)}getTool(t){return this.nT.get(t)}clearAll(){this.gT(null),this.nT.forEach(t=>t.remove()),this.nT.clear(),this.recordChange()}getToolCount(){return this.nT.size}isToolSelected(t){return this.rT===t}serializeAll(){const t=[];for(const i of this.nT.values())t.push(i.serialize());return t}restoreTool(t,i){const s=Co.CT(t,i);return s.applySerializedState(i),this.addTool(s,s.id),s}restoreAll(t,i,s=!0){s&&this.clearAll();for(const s of i)this.restoreTool(t,s)}static CT(t,i){const{type:s,points:e,style:n,extra:r}=i,h=t=>({PT:$h(e[t]),TT:Hh(e[t],"price")??0});switch(s){case"trendLine":return Qh(t,{point1Time:h(0).PT,point1Price:h(0).TT,point2Time:h(1).PT,point2Price:h(1).TT,...n});case"horizontalLine":return el(t,{price:h(0).TT,startTime:h(0).PT??void 0,...n});case"parallelChannel":return fl(t,{point1Time:h(0).PT,point1Price:h(0).TT,point2Time:h(1).PT,point2Price:h(1).TT,channelWidth:r?.channelWidth,...n});case"pitchfork":return gl(t,{pivotTime:h(0).PT,pivotPrice:h(0).TT,upperTime:h(1).PT,upperPrice:h(1).TT,lowerTime:h(2).PT,lowerPrice:h(2).TT,...n});case"polygon":return ul(t,{points:e.map((t,i)=>{const s={};return s.time=h(i).PT,s.price=h(i).TT,s}),...n});case"crossLine":return ll(t,{time:h(0).PT,price:h(0).TT,...n});case"verticalLine":return Sl(t,{time:h(0).PT,...n});case"fibRetracement":return Vl(t,{point1Time:h(0).PT,point1Price:h(0).TT,point2Time:h(1).PT,point2Price:h(1).TT,useExtended:r?.useExtended,levels:r?.levels,levelColors:n?.levelColors,...n});case"fibExtension":{const i=h(0),s=h(1),e=h(2);return Al(t,{point1:i.PT?{time:i.PT,price:i.TT}:void 0,point2:s.PT?{time:s.PT,price:s.TT}:void 0,point3:e.PT?{time:e.PT,price:e.TT}:void 0,levels:r?.levels,...n})}case"fibFan":return zl(t,{point1Time:h(0).PT,point1Price:h(0).TT,point2Time:h(1).PT,point2Price:h(1).TT,levels:r?.levels,...n});case"rectangle":return Ul(t,{time1:h(0).PT,price1:h(0).TT,time2:h(1).PT,price2:h(1).TT,...n});case"circle":return Kl(t,{centerTime:h(0).PT,centerPrice:h(0).TT,radiusTime:r?.radiusTime,radiusPrice:r?.radiusPrice,...n});case"arrow":return Jl(t,{points:e.map(t=>({gt:t.time,bt:t.price})),...n});case"brush":return eo(t,{points:e.map(t=>({gt:t.time,bt:t.price})),...n});case"text":return lo(t,{time:h(0).PT,price:h(0).TT,text:r?.text,...n});case"ruler":return vo(t,{point1Time:h(0).PT,point1Price:h(0).TT,point2Time:h(1).PT,point2Price:h(1).TT,symbol:r?.symbol,pipConfig:r?.pipConfig,measure:r?.measure,...n});case"position":return bo(t,{entryPrice:h(0).TT,entryTime:h(0).PT,endTime:r?.endTime,stopLoss:r?.stopLoss,takeProfit:r?.takeProfit,quantity:r?.quantity,pipConfig:r?.pipConfig,...n});case"gantt":return xo(t,{segments:r?.segments,...n});default:throw new Error(`Unknown drawing tool type: ${s}`)}}destroy(){this.clearAll(),this.kT()}mT(){this.XS=t=>{this.Cx(t)},this.Rf.subscribeClick(this.XS),this.sp=t=>{this.Px(t)},this.Rf.subscribeCrosshairMove(this.sp);const t=this.Rf.chartElement();t&&(this.aT=t=>this.DT(t),this._T=t=>this.IT(),this.uT=t=>this.IT(),t.addEventListener("pointerdown",this.aT),t.addEventListener("pointerup",this._T),t.addEventListener("pointercancel",this.uT)),this.Ps.enableKeyboardShortcuts&&(this.oT=t=>{this.VT(t)},document.addEventListener("keydown",this.oT))}kT(){this.XS&&(this.Rf.unsubscribeClick(this.XS),this.XS=null),this.sp&&(this.Rf.unsubscribeCrosshairMove(this.sp),this.sp=null);const t=this.Rf.chartElement();t&&(this.aT&&(t.removeEventListener("pointerdown",this.aT),this.aT=null),this._T&&(t.removeEventListener("pointerup",this._T),this._T=null),this.uT&&(t.removeEventListener("pointercancel",this.uT),this.uT=null)),this.oT&&(document.removeEventListener("keydown",this.oT),this.oT=null)}Cx(t){if(!t.point)return;if(this.cT)return void(this.cT=!1);if(this.Ax)return;const i=this.RT(t.hoveredObjectId);i?this.selectTool(i):this.wT()}Px(t){if(this.dT=t.point?{ut:t.point.x,ct:t.point.y}:null,!t.point)return;if(this.Ax&&this.vT){const i=this.nT.get(this.vT);if(i){const s=i.series(),e=s.coordinateToPrice(t.point.y),n=s?qe(this.Rf,s,t.point.x):null;null!==e&&null!==n&&i.updateDrag(n,e)}return}const i=this.RT(t.hoveredObjectId);if(this.hT&&this.hT!==i){const t=this.nT.get(this.hT);t&&t.setHovered(!1)}if(i){const t=this.nT.get(i);t&&t.setHovered(!0)}this.hT=i}RT(t){if("string"!=typeof t)return null;const i=t.split("#")[0];for(const[t,s]of this.nT)if(s.id===i)return t;return null}DT(t){qh(this.Rf,!1);const i=this.Rf.chartElement();if(!i)return;const s=null!==this.hT&&null!==this.dT?{FT:this.hT,kw:this.dT}:this.LT(t);if(null===s)return;const{FT:e,kw:n}=s,r=this.nT.get(e);if(!r||r.isLocked())return;const h=r.hitTestEndpoint(n.ut,n.ct),l=this.AT(r,n.ut,n.ct);null!==h&&null!==l&&(qh(this.Rf,!0),this.selectTool(e),this.Ax=!0,this.cT=!0,this.vT=e,this.bS=t.pointerId,i.setPointerCapture(t.pointerId),r.startDrag(h,l),this.BT())}IT(){if(!this.Ax||null===this.vT)return;const t=this.nT.get(this.vT);t&&t.stopDrag(),this.HS(),this.WT(),this.Ax=!1,this.vT=null,this.recordChange()}xT(t){try{return t.series().getPane().getHTMLElement()}catch(t){return null}}LT(t){for(const[i,s]of this.nT){if(!s.isVisible()||s.isLocked())continue;const e=this.xT(s);if(null===e)continue;const n=e.getBoundingClientRect(),r={ut:t.clientX-n.left,ct:t.clientY-n.top};if(s.hitTest(r.ut,r.ct))return{FT:i,kw:r}}return null}HS(){if(null===this.bS)return;const t=this.Rf.chartElement();t&&t.hasPointerCapture(this.bS)&&t.releasePointerCapture(this.bS),this.bS=null}BT(){const t=this.Rf.options();this.pT={ET:t.handleScroll,OT:t.handleScale},this.Rf.applyOptions({handleScroll:!1,handleScale:!1})}WT(){const t=this.pT;this.pT=null,null!==t&&this.Rf.applyOptions({handleScroll:t.ET,handleScale:t.OT})}VT(t){"Delete"!==t.key&&"Backspace"!==t.key||this.deleteSelected()&&t.preventDefault();const i=t.metaKey||t.ctrlKey;if(i&&"z"===t.key.toLowerCase()){return void((t.shiftKey?this.redo():this.undo())&&t.preventDefault())}i&&"y"===t.key.toLowerCase()?this.redo()&&t.preventDefault():"Escape"===t.key&&(this.IT(),this.wT(),this.stopDrawing(),t.preventDefault())}AT(t,i,s){const e=t.series().coordinateToPrice(s);return null==e?null:{price:e,time:qe(this.Rf,t.series(),i)}}wT(){this.gT(null)}}const Po={...n,color:"#2196f3"};function To(){return"2.2.0"}export{xn as AreaSeries,Zl as ArrowTool,kn as BarSeries,Mn as BaselineSeries,io as BrushTool,Vn as CandlestickSeries,jl as CircleTool,Ei as ColorType,hl as CrossLineTool,K as CrosshairMode,gh as DEFAULT_SESSIONS,Ih as DraggablePriceLine,Co as DrawingToolsManager,Cl as EXTENDED_FIBONACCI_RATIOS,Pl as FibonacciCalculator,Ll as FibonacciExtensionTool,Ol as FibonacciFanTool,Il as FibonacciTool,So as GanttTool,Ln as HistogramSeries,sl as HorizontalLineTool,Rh as InteractiveLineManager,Bi as LastPriceAnimationMode,nn as LineSeries,h as LineStyle,r as LineType,kt as MismatchDirection,pl as ParallelChannelTool,wl as PitchforkTool,_l as PolygonTool,oo as PositionCalculator,Tr as PositionMarkersManager,go as PositionTool,Wi as PriceLineSource,mi as PriceScaleMode,Nl as RectangleTool,uo as RulerCalculator,fo as RulerTool,xl as STANDARD_FIBONACCI_RATIOS,ho as TextTool,Oi as TickMarkType,Ai as TrackingModeExitMode,bh as TradingSessionsIndicator,Jh as TrendLineTool,yl as VerticalLineTool,xh as VolumeProfileIndicator,dh as applyADX,_h as applyATR,Yr as applyBollingerBands,ph as applyCCI,Kr as applyDonchianChannels,Ur as applyEMA,hh as applyHeikinAshi,sh as applyIchimoku,jr as applyKeltnerChannels,oh as applyMACD,vh as applyMFI,ch as applyOBV,Gr as applyParabolicSAR,eh as applyPivotPoints,lh as applyRSI,Nr as applySMA,ah as applyStochastic,Jr as applySuperTrend,Zr as applyVWAP,uh as applyVolume,qr as applyWMA,fh as applyWilliamsR,rh as calculateHeikinAshi,ao as calculatePipConfig,Ye as coordinateFromTime,Jl as createArrowTool,eo as createBrushTool,He as createChart,$e as createChartEx,Kl as createCircleTool,ll as createCrossLineTool,Al as createFibonacciExtensionTool,zl as createFibonacciFanTool,Vl as createFibonacciTool,xo as createGanttTool,el as createHorizontalLineTool,Jn as createImageWatermark,Fh as createInteractiveLineManager,pn as createOptionsChart,fl as createParallelChannelTool,gl as createPitchforkTool,ul as createPolygonTool,kr as createPositionMarkers,bo as createPositionTool,Ul as createRectangleTool,vo as createRulerTool,mr as createSeriesMarkers,lo as createTextTool,qn as createTextWatermark,Vh as createTradingLine,Mh as createTradingSessionsIndicator,Qh as createTrendLineTool,Pr as createUpDownMarkers,Sl as createVerticalLineTool,Ch as createVolumeProfileIndicator,un as createYieldCurveChart,Po as customSeriesDefaultOptions,Ne as defaultHorzScaleBehavior,_o as getPipConfig,Ar as hideSeriesPaint,Hi as isBusinessDay,Ni as isUTCTimestamp,Vr as setSeriesVolumes,Ph as setVolumeProfileData,qe as timeFromCoordinate,To 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 r,h;function l(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 o(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 a(t,i){if(!t)throw new Error("Assertion failed"+(i?": "+i:""))}function _(t){if(void 0===t)throw new Error("Value is undefined");return t}function u(t){if(null===t)throw new Error("Value is null");return t}function c(t){return u(_(t))}!function(t){t[t.Simple=0]="Simple",t[t.WithSteps=1]="WithSteps",t[t.Curved=2]="Curved"}(r||(r={})),function(t){t[t.Solid=0]="Solid",t[t.Dotted=1]="Dotted",t[t.Dashed=2]="Dashed",t[t.LargeDashed=3]="LargeDashed",t[t.SparseDotted=4]="SparseDotted"}(h||(h={}));class d{constructor(){this.t=[]}i(t,i,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 p(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]:p(t[i],s[i]));return t}function f(t){return"number"==typeof t&&isFinite(t)}function v(t){return"number"==typeof t&&t%1==0}function m(t){return"string"==typeof t}function w(t){return"boolean"==typeof t}function g(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?g(n):n);return s}function b(t){return null!==t}function M(t){return null===t?void 0:t}const y="-apple-system, BlinkMacSystemFont, 'Trebuchet MS', Roboto, Ubuntu, sans-serif";function S(t,i,s){return void 0===i&&(i=y),`${s=void 0!==s?`${s} `:""}${t}px ${i}`}class x{constructor(t){this.M={S:1,C:5,P:NaN,T:"",D:"",I:"",V:"",R:0,F:0,L:0,A:0,B:0},this.W=t}O(){const t=this.M,i=this.$(),s=this.H();return t.P===i&&t.D===s||(t.P=i,t.D=s,t.T=S(i,s),t.A=2.5/12*i,t.R=t.A,t.F=i/12*t.C,t.L=i/12*t.C,t.B=0),t.I=this.N(),t.V=this.U(),this.M}N(){return this.W.O().layout.textColor}U(){return this.W.q()}$(){return this.W.O().layout.fontSize}H(){return this.W.O().layout.fontFamily}}function C(t){return t<0?0:t>255?255:Math.round(t)||0}function P(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)}K(t,i){if("transparent"===t)return t;const s=this.X(t),e=s[3];return`rgba(${s[0]}, ${s[1]}, ${s[2]}, ${i*e})`}G(t){const i=this.X(t);return{Z:`rgb(${i[0]}, ${i[1]}, ${i[2]})`,J:P(i)>160?"black":"white"}}tt(t){return P(this.X(t))}it(t,i,s){const[e,n,r,h]=this.X(t),[l,o,a,_]=this.X(i),u=[C(e+s*(l-e)),C(n+s*(o-n)),C(r+s*(a-r)),(c=h+s*(_-h),c<=0||c>1?Math.min(Math.max(c,0),1):Math.round(1e4*c)/1e4)];var c;return`rgba(${u[0]}, ${u[1]}, ${u[2]}, ${u[3]})`}X(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.rt(t,i,s))}}class I extends D{constructor(){super(...arguments),this.ht=null}lt(t){this.ht=t}rt({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.ht||null===this.ht.ot)return;const e=this.ht.ot,n=this.ht,r=Math.max(1,Math.floor(i))%2/2,h=h=>{t.beginPath();for(let l=e.to-1;l>=e.from;--l){const e=n._t[l],o=Math.round(e.ut*i)+r,a=e.ct*s,_=h*s+r;t.moveTo(o,a),t.arc(o,a,_,0,2*Math.PI)}t.fill()};n.dt>0&&(t.fillStyle=n.ft,h(n.vt+n.dt)),t.fillStyle=n.wt,h(n.vt)}}function V(){return{_t:[{ut:0,ct:0,gt:0,bt:0}],wt:"",ft:"",vt:0,dt:0,ot:null}}const R={from:0,to:1};class F{constructor(t,i,s){this.Mt=new k,this.yt=[],this.St=[],this.xt=!0,this.W=t,this.Ct=i,this.Pt=s,this.Mt.et(this.yt)}Tt(t){this.kt(),this.xt=!0}Dt(){return this.xt&&(this.It(),this.xt=!1),this.Mt}kt(){const t=this.Pt.Vt();t.length!==this.yt.length&&(this.St=t.map(V),this.yt=this.St.map(t=>{const i=new I;return i.lt(t),i}),this.Mt.et(this.yt))}It(){const t=2===this.Ct.O().mode||!this.Ct.Rt(),i=this.Pt.Ft(),s=this.Ct.Lt(),e=this.W.At();this.kt(),i.forEach((i,n)=>{const r=this.St[n],h=i.Bt(s),l=i.Et();!t&&null!==h&&i.Rt()&&null!==l?(r.wt=h.Wt,r.vt=h.vt,r.dt=h.Ot,r._t[0].bt=h.bt,r._t[0].ct=i.$t().zt(h.bt,l.Ht),r.ft=h.Nt??this.W.Ut(r._t[0].ct/i.$t().qt()),r._t[0].gt=s,r._t[0].ut=e.Yt(s),r.ot=R):r.ot=null})}}class L extends D{constructor(t){super(),this.jt=t}rt({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:e}){if(null===this.jt)return;const n=this.jt.Kt.Rt,r=this.jt.Xt.Rt;if(!n&&!r)return;const h=Math.round(this.jt.ut*s),a=Math.round(this.jt.ct*e);t.lineCap="butt",n&&h>=0&&(t.lineWidth=Math.floor(this.jt.Kt.dt*s),t.strokeStyle=this.jt.Kt.I,t.fillStyle=this.jt.Kt.I,l(t,this.jt.Kt.Gt),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,h,0,i.height)),r&&a>=0&&(t.lineWidth=Math.floor(this.jt.Xt.dt*e),t.strokeStyle=this.jt.Xt.I,t.fillStyle=this.jt.Xt.I,l(t,this.jt.Xt.Gt),o(t,a,0,i.width))}}class A{constructor(t,i){this.xt=!0,this.Zt={Kt:{dt:1,Gt:0,I:"",Rt:!1},Xt:{dt:1,Gt:0,I:"",Rt:!1},ut:0,ct:0},this.Jt=new L(this.Zt),this.Qt=t,this.Pt=i}Tt(){this.xt=!0}Dt(t){return this.xt&&(this.It(),this.xt=!1),this.Jt}It(){const t=this.Qt.Rt(),i=this.Pt.ti().O().crosshair,s=this.Zt;if(2===i.mode)return s.Xt.Rt=!1,void(s.Kt.Rt=!1);s.Xt.Rt=t&&this.Qt.ii(this.Pt),s.Kt.Rt=t&&this.Qt.si(),s.Xt.dt=i.horzLine.width,s.Xt.Gt=i.horzLine.style,s.Xt.I=i.horzLine.color,s.Kt.dt=i.vertLine.width,s.Kt.Gt=i.vertLine.style,s.Kt.I=i.vertLine.color,s.ut=this.Qt.ei(),s.ct=this.Qt.ni()}}function B(t,i,s,e,n,r){t.fillRect(i+r,s,e-2*r,r),t.fillRect(i+r,s+n-r,e-2*r,r),t.fillRect(i,s,r,n),t.fillRect(i+e-r,s,r,n)}function E(t,i,s,e,n,r){t.save(),t.globalCompositeOperation="copy",t.fillStyle=r,t.fillRect(i,s,e,n),t.restore()}function W(t,i,s,e,n,r){t.beginPath(),t.roundRect?t.roundRect(i,s,e,n,r):(t.lineTo(i+e-r[1],s),0!==r[1]&&t.arcTo(i+e,s,i+e,s+r[1],r[1]),t.lineTo(i+e,s+n-r[2]),0!==r[2]&&t.arcTo(i+e,s+n,i+e-r[2],s+n,r[2]),t.lineTo(i+r[3],s+n),0!==r[3]&&t.arcTo(i,s+n,i,s+n-r[3],r[3]),t.lineTo(i,s+r[0]),0!==r[0]&&t.arcTo(i,s,i+r[0],s,r[0]))}function O(t,i,s,e,n,r,h=0,l=[0,0,0,0],o=""){if(t.save(),!h||!o||o===r)return W(t,i,s,e,n,l),t.fillStyle=r,t.fill(),void t.restore();const a=h/2;var _;W(t,i+a,s+a,e-h,n-h,(_=-a,l.map(t=>0===t?t:t+_))),"transparent"!==r&&(t.fillStyle=r,t.fill()),"transparent"!==o&&(t.lineWidth=h,t.strokeStyle=o,t.closePath(),t.stroke()),t.restore()}function z(t,i,s,e,n,r,h){t.save(),t.globalCompositeOperation="copy";const l=t.createLinearGradient(0,0,0,n);l.addColorStop(0,r),l.addColorStop(1,h),t.fillStyle=l,t.fillRect(i,s,e,n),t.restore()}class ${constructor(t,i){this.lt(t,i)}lt(t,i){this.jt=t,this.ri=i}qt(t,i){return this.jt.Rt?t.P+t.A+t.R:0}nt(t,i,s,e){if(!this.jt.Rt||0===this.jt.hi.length)return;const n=this.jt.I,r=this.ri.Z,h=t.useBitmapCoordinateSpace(t=>{const h=t.context;h.font=i.T;const l=this.li(t,i,s,e),o=l.oi;return l.ai?O(h,o._i,o.ui,o.ci,o.di,r,o.pi,[o.vt,0,0,o.vt],r):O(h,o.fi,o.ui,o.ci,o.di,r,o.pi,[0,o.vt,o.vt,0],r),this.jt.mi&&(h.fillStyle=n,h.fillRect(o.fi,o.wi,o.gi-o.fi,o.bi)),this.jt.Mi&&(h.fillStyle=i.V,h.fillRect(l.ai?o.yi-o.pi:0,o.ui,o.pi,o.Si-o.ui)),l});t.useMediaCoordinateSpace(({context:t})=>{const s=h.xi;t.font=i.T,t.textAlign=h.ai?"right":"left",t.textBaseline="middle",t.fillStyle=n,t.fillText(this.jt.hi,s.Ci,(s.ui+s.Si)/2+s.Pi)})}li(t,i,s,e){const{context:n,bitmapSize:r,mediaSize:h,horizontalPixelRatio:l,verticalPixelRatio:o}=t,a=this.jt.mi||!this.jt.Ti?i.C:0,_=this.jt.ki?i.S:0,u=i.A+this.ri.Di,c=i.R+this.ri.Ii,d=i.F,p=i.L,f=this.jt.hi,v=i.P,m=s.Vi(n,f),w=Math.ceil(s.Ri(n,f)),g=v+u+c,b=i.S+d+p+w+a,M=Math.max(1,Math.floor(o));let y=Math.round(g*o);y%2!=M%2&&(y+=1);const S=_>0?Math.max(1,Math.floor(_*l)):0,x=Math.round(b*l),C=Math.round(a*l),P=this.ri.Fi??this.ri.Li,T=Math.round(P*o)-Math.floor(.5*o),k=Math.floor(T+M/2-y/2),D=k+y,I="right"===e,V=I?h.width-_:_,R=I?r.width-S:S;let F,L,A;return I?(F=R-x,L=R-C,A=V-a-d-_):(F=R+x,L=R+C,A=V+a+d),{ai:I,oi:{ui:k,wi:T,Si:D,ci:x,di:y,vt:2*l,pi:S,_i:F,fi:R,gi:L,bi:M,yi:r.width},xi:{ui:k/o,Si:D/o,Ci:A,Pi:m}}}}class H{constructor(t){this.Ai={Li:0,Z:"#000",Ii:0,Di:0},this.Bi={hi:"",Rt:!1,mi:!0,Ti:!1,Nt:"",I:"#FFF",Mi:!1,ki:!1},this.Ei={hi:"",Rt:!1,mi:!1,Ti:!0,Nt:"",I:"#FFF",Mi:!0,ki:!0},this.xt=!0,this.Wi=new(t||$)(this.Bi,this.Ai),this.Oi=new(t||$)(this.Ei,this.Ai)}hi(){return this.zi(),this.Bi.hi}Li(){return this.zi(),this.Ai.Li}Tt(){this.xt=!0}qt(t,i=!1){return Math.max(this.Wi.qt(t,i),this.Oi.qt(t,i))}$i(){return this.Ai.Fi||0}Hi(t){this.Ai.Fi=t}Ni(){return this.zi(),this.Bi.Rt||this.Ei.Rt}Ui(){return this.zi(),this.Bi.Rt}Dt(t){return this.zi(),this.Bi.mi=this.Bi.mi&&t.O().ticksVisible,this.Ei.mi=this.Ei.mi&&t.O().ticksVisible,this.Wi.lt(this.Bi,this.Ai),this.Oi.lt(this.Ei,this.Ai),this.Wi}qi(){return this.zi(),this.Wi.lt(this.Bi,this.Ai),this.Oi.lt(this.Ei,this.Ai),this.Oi}zi(){this.xt&&(this.Bi.mi=!0,this.Ei.mi=!1,this.Yi(this.Bi,this.Ei,this.Ai))}}class N extends H{constructor(t,i,s){super(),this.Qt=t,this.ji=i,this.Ki=s}Yi(t,i,s){if(t.Rt=!1,2===this.Qt.O().mode)return;const e=this.Qt.O().horzLine;if(!e.labelVisible)return;const n=this.ji.Et();if(!this.Qt.Rt()||this.ji.Xi()||null===n)return;const r=this.ji.Gi().G(e.labelBackgroundColor);s.Z=r.Z,t.I=r.J;const h=2/12*this.ji.P();s.Di=h,s.Ii=h;const l=this.Ki(this.ji);s.Li=l.Li,t.hi=this.ji.Zi(l.bt,n),t.Rt=!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.Rt||0===this.jt.hi.length)return;const s=t.useMediaCoordinateSpace(({context:t})=>(t.font=i.T,Math.round(i.Ji.Ri(t,u(this.jt).hi,U))));if(s<=0)return;const e=i.Qi,n=s+2*e,r=n/2,h=this.jt.ts;let l=this.jt.Li,o=Math.floor(l-r)+.5;o<0?(l+=Math.abs(0-o),o=Math.floor(l-r)+.5):o+n>h&&(l-=Math.abs(h-(o+n)),o=Math.floor(l-r)+.5);const a=o+n,_=Math.ceil(0+i.S+i.C+i.A+i.P+i.R);t.useBitmapCoordinateSpace(({context:t,horizontalPixelRatio:s,verticalPixelRatio:e})=>{const n=u(this.jt);t.fillStyle=n.Z;const r=Math.round(o*s),h=Math.round(0*e),l=Math.round(a*s),c=Math.round(_*e),d=Math.round(2*s);if(t.beginPath(),t.moveTo(r,h),t.lineTo(r,c-d),t.arcTo(r,c,r+d,c,d),t.lineTo(l-d,c),t.arcTo(l,c,l,c-d,d),t.lineTo(l,h),t.fill(),n.mi){const r=Math.round(n.Li*s),l=h,o=Math.round((l+i.C)*e);t.fillStyle=n.I;const a=Math.max(1,Math.floor(s)),_=Math.floor(.5*s);t.fillRect(r-_,l,a,o-l)}}),t.useMediaCoordinateSpace(({context:t})=>{const s=u(this.jt),n=0+i.S+i.C+i.A+i.P/2;t.font=i.T,t.textAlign="left",t.textBaseline="middle",t.fillStyle=s.I;const r=i.Ji.Vi(t,"Apr0");t.translate(o+e,n+r),t.fillText(s.hi,0,0)})}}class Y{constructor(t,i,s){this.xt=!0,this.Jt=new q,this.Zt={Rt:!1,Z:"#4c525e",I:"white",hi:"",ts:0,Li:NaN,mi:!0},this.Ct=t,this.ss=i,this.Ki=s}Tt(){this.xt=!0}Dt(){return this.xt&&(this.It(),this.xt=!1),this.Jt.lt(this.Zt),this.Jt}It(){const t=this.Zt;if(t.Rt=!1,2===this.Ct.O().mode)return;const i=this.Ct.O().vertLine;if(!i.labelVisible)return;const s=this.ss.At();if(s.Xi())return;t.ts=s.ts();const e=this.Ki();if(null===e)return;t.Li=e.Li;const n=s.es(this.Ct.Lt());t.hi=s.ns(u(n)),t.Rt=!0;const r=this.ss.Gi().G(i.labelBackgroundColor);t.Z=r.Z,t.I=r.J,t.mi=s.O().ticksVisible}}class j{constructor(){this.rs=null,this.hs=0}ls(){return this.hs}_s(t){this.hs=t}$t(){return this.rs}us(t){this.rs=t}cs(t){return[]}ds(){return[]}Rt(){return!0}}var K;!function(t){t[t.Normal=0]="Normal",t[t.Magnet=1]="Magnet",t[t.Hidden=2]="Hidden",t[t.MagnetOHLC=3]="MagnetOHLC"}(K||(K={}));class X extends j{constructor(t,i){super(),this.Pt=null,this.ps=NaN,this.fs=0,this.vs=!1,this.ws=new Map,this.gs=!1,this.bs=new WeakMap,this.Ms=new WeakMap,this.ys=NaN,this.Ss=NaN,this.xs=NaN,this.Cs=NaN,this.ss=t,this.Ps=i;this.Ts=((t,i)=>s=>{const e=i(),n=t();if(s===u(this.Pt).ks())return{bt:n,Li:e};{const t=u(s.Et());return{bt:s.Ds(e,t),Li:e}}})(()=>this.ps,()=>this.Ss);const s=((t,i)=>()=>{const s=this.ss.At().Is(t()),e=i();return s&&Number.isFinite(e)?{gt:s,Li:e}:null})(()=>this.fs,()=>this.ei());this.Vs=new Y(this,t,s)}O(){return this.Ps}Rs(t,i){this.xs=t,this.Cs=i}Fs(){this.xs=NaN,this.Cs=NaN}Ls(){return this.xs}As(){return this.Cs}Bs(t,i,s){this.gs||(this.gs=!0),this.vs=!0,this.Es(t,i,s)}Lt(){return this.fs}ei(){return this.ys}ni(){return this.Ss}Rt(){return this.vs}Ws(){this.vs=!1,this.Os(),this.ps=NaN,this.ys=NaN,this.Ss=NaN,this.Pt=null,this.Fs(),this.zs()}$s(t){let i=this.bs.get(t);i||(i=new A(this,t),this.bs.set(t,i));let s=this.Ms.get(t);return s||(s=new F(this.ss,this,t),this.Ms.set(t,s)),[i,s]}ii(t){return t===this.Pt&&this.Ps.horzLine.visible}si(){return this.Ps.vertLine.visible}Hs(t,i){this.vs&&this.Pt===t||this.ws.clear();const s=[];return this.Pt===t&&s.push(this.Ns(this.ws,i,this.Ts)),s}ds(){return this.vs?[this.Vs]:[]}Us(){return this.Pt}zs(){this.ss.qs().forEach(t=>{this.bs.get(t)?.Tt(),this.Ms.get(t)?.Tt()}),this.ws.forEach(t=>t.Tt()),this.Vs.Tt()}Ys(t){return t&&!t.ks().Xi()?t.ks():null}Es(t,i,s){this.js(t,i,s)&&this.zs()}js(t,i,s){const e=this.ys,n=this.Ss,r=this.ps,h=this.fs,l=this.Pt,o=this.Ys(s);this.fs=t,this.ys=isNaN(t)?NaN:this.ss.At().Yt(t),this.Pt=s;const a=null!==o?o.Et():null;return null!==o&&null!==a?(this.ps=i,this.Ss=o.zt(i,a)):(this.ps=NaN,this.Ss=NaN),e!==this.ys||n!==this.Ss||h!==this.fs||r!==this.ps||l!==this.Pt}Os(){const t=this.ss.Ks().map(t=>t.Gs().Xs()).filter(b),i=0===t.length?null:Math.max(...t);this.fs=null!==i?i:NaN}Ns(t,i,s){let e=t.get(i);return void 0===e&&(e=new N(this,i,s),t.set(i,e)),e}}function G(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}}re(){this.he(),this.Js=[{le:0}]}oe(t){this.he(),this.Js=[{le:1,Ht:t}]}ae(t){this._e(),this.Js.push({le:5,Ht:t})}he(){this._e(),this.Js.push({le:6})}ue(){this.he(),this.Js=[{le:4}]}ce(t){this.he(),this.Js.push({le:2,Ht:t})}de(t){this.he(),this.Js.push({le:3,Ht:t})}pe(){return this.Js}fe(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 we(){return new Z(3)}ve(t){switch(t.le){case 0:this.re();break;case 1:this.oe(t.Ht);break;case 2:this.ce(t.Ht);break;case 3:this.de(t.Ht);break;case 4:this.ue();break;case 5:this.ae(t.Ht);break;case 6:this._e()}}_e(){const t=this.Js.findIndex(t=>5===t.le);-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(!f(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),f(t)&&v(t)||(t=100),t<0)throw new TypeError("invalid base");this.ji=t,this.ge=i,this.be()}format(t){const i=t<0?"−":"";return t=Math.abs(t),i+this.Me(t)}be(){if(this.ye=0,this.ji>0&&this.ge>0){let t=this.ji;for(;t>1;)t/=10,this.ye++}}Me(t){const i=this.ji/this.ge;let s=Math.floor(t),e="";const n=void 0!==this.ye?this.ye:NaN;if(i>1){let r=+(Math.round(t*i)-s*i).toFixed(this.ye);r>=i&&(r-=i,s+=1),e=Q+tt(+r.toFixed(this.ye)*this.ge,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.Se=t}format(t){let i="";return t<0&&(i="-",t=-t),t<995?i+this.xe(t):t<999995?i+this.xe(t/1e3)+"K":t<999999995?(t=1e3*Math.round(t/1e3),i+this.xe(t/1e6)+"M"):(t=1e6*Math.round(t/1e6),i+this.xe(t/1e9)+"B")}xe(t){let i;const s=Math.pow(10,this.Se);return i=(t=Math.round(t*s)/s)>=1e-15&&t<1?t.toFixed(this.Se).replace(/\.?0+$/,""):String(t),i.replace(/(\.[1-9]*)0+$/,(t,i)=>i)}}const nt=/[2-9]/g;class rt{constructor(t=50){this.Ce=0,this.Pe=1,this.Te=1,this.ke={},this.De=new Map,this.Ie=t}Ve(){this.Ce=0,this.De.clear(),this.Pe=1,this.Te=1,this.ke={}}Ri(t,i,s){return this.Re(t,i,s).width}Vi(t,i,s){const e=this.Re(t,i,s);return((e.actualBoundingBoxAscent||0)-(e.actualBoundingBoxDescent||0))/2}Re(t,i,s){const e=s||nt,n=String(i).replace(e,"0");if(this.De.has(n))return _(this.De.get(n)).Fe;if(this.Ce===this.Ie){const t=this.ke[this.Te];delete this.ke[this.Te],this.De.delete(t),this.Te++,this.Ce--}t.save(),t.textBaseline="middle";const r=t.measureText(n);return t.restore(),0===r.width&&i.length||(this.De.set(n,{Fe:r,Le:this.Pe}),this.ke[this.Pe]=n,this.Ce++,this.Pe++),r}}class ht{constructor(t){this.Ae=null,this.M=null,this.Be="right",this.Ee=t}We(t,i,s){this.Ae=t,this.M=i,this.Be=s}nt(t){null!==this.M&&null!==this.Ae&&this.Ae.nt(t,this.M,this.Ee,this.Be)}}class lt{constructor(t,i,s){this.Oe=t,this.Ee=new rt(50),this.ze=i,this.W=s,this.$=-1,this.Jt=new ht(this.Ee)}Dt(){const t=this.W.$e(this.ze);if(null===t)return null;const i=t.He(this.ze)?t.Ne():this.ze.$t();if(null===i)return null;const s=t.Ue(i);if("overlay"===s)return null;const e=this.W.qe();return e.P!==this.$&&(this.$=e.P,this.Ee.Ve()),this.Jt.We(this.Oe.qi(),e,s),this.Jt}}class ot extends D{constructor(){super(...arguments),this.jt=null}lt(t){this.jt=t}Ye(t,i){if(!this.jt?.Rt)return null;const{ct:s,dt:e,je:n}=this.jt;return i>=s-e-7&&i<=s+e+7?{Ke:this.jt,je:n}:null}rt({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:e}){if(null===this.jt)return;if(!1===this.jt.Rt)return;const n=Math.round(this.jt.ct*e);n<0||n>i.height||(t.lineCap="butt",t.strokeStyle=this.jt.I,t.lineWidth=Math.floor(this.jt.dt*s),l(t,this.jt.Gt),o(t,n,0,i.width))}}class at{constructor(t){this.Xe={ct:0,I:"rgba(0, 0, 0, 0)",dt:1,Gt:0,Rt:!1},this.Ge=new ot,this.xt=!0,this.Ze=t,this.Je=t.ti(),this.Ge.lt(this.Xe)}Tt(){this.xt=!0}Dt(){return this.Ze.Rt()?(this.xt&&(this.Qe(),this.xt=!1),this.Ge):null}}class _t extends at{constructor(t){super(t)}Qe(){this.Xe.Rt=!1;const t=this.Ze.$t(),i=t.tn().tn;if(2!==i&&3!==i)return;const s=this.Ze.O();if(!s.baseLineVisible||!this.Ze.Rt())return;const e=this.Ze.Et();null!==e&&(this.Xe.Rt=!0,this.Xe.ct=t.zt(e.Ht,e.Ht),this.Xe.I=s.baseLineColor,this.Xe.dt=s.baseLineWidth,this.Xe.Gt=s.baseLineStyle)}}class ut extends D{constructor(){super(...arguments),this.jt=null}lt(t){this.jt=t}sn(){return this.jt}rt({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){const e=this.jt;if(null===e)return;const n=Math.max(1,Math.floor(i)),r=n%2/2,h=Math.round(e.en.x*i)+r,l=e.en.y*s;t.fillStyle=e.nn,t.beginPath();const o=Math.max(2,1.5*e.rn)*i;t.arc(h,l,o,0,2*Math.PI,!1),t.fill(),t.fillStyle=e.hn,t.beginPath(),t.arc(h,l,e.vt*i,0,2*Math.PI,!1),t.fill(),t.lineWidth=n,t.strokeStyle=e.ln,t.beginPath(),t.arc(h,l,e.vt*i+n/2,0,2*Math.PI,!1),t.stroke()}}const ct=[{an:0,_n:.25,un:4,cn:10,dn:.25,pn:0,fn:.4,vn:.8},{an:.25,_n:.525,un:10,cn:14,dn:0,pn:0,fn:.8,vn:0},{an:.525,_n:1,un:14,cn:14,dn:0,pn:0,fn:0,vn:0}];class dt{constructor(t){this.Jt=new ut,this.xt=!0,this.mn=!0,this.wn=performance.now(),this.gn=this.wn-1,this.bn=t}Mn(){this.gn=this.wn-1,this.Tt()}yn(){if(this.Tt(),2===this.bn.O().lastPriceAnimation){const t=performance.now(),i=this.gn-t;if(i>0)return void(i<650&&(this.gn+=2600));this.wn=t,this.gn=t+2600}}Tt(){this.xt=!0}Sn(){this.mn=!0}Rt(){return 0!==this.bn.O().lastPriceAnimation}xn(){switch(this.bn.O().lastPriceAnimation){case 0:return!1;case 1:return!0;case 2:return performance.now()<=this.gn}}Dt(){return this.xt?(this.It(),this.xt=!1,this.mn=!1):this.mn&&(this.Cn(),this.mn=!1),this.Jt}It(){this.Jt.lt(null);const t=this.bn.ti().At(),i=t.Pn(),s=this.bn.Et();if(null===i||null===s)return;const e=this.bn.Tn(!0);if(e.kn||!i.Dn(e.In))return;const n={x:t.Yt(e.In),y:this.bn.$t().zt(e.bt,s.Ht)},r=e.I,h=this.bn.O().lineWidth,l=this.Vn(this.Rn(),r);this.Jt.lt({nn:r,rn:h,hn:l.hn,ln:l.ln,vt:l.vt,en:n})}Cn(){const t=this.Jt.sn();if(null!==t){const i=this.Vn(this.Rn(),t.nn);t.hn=i.hn,t.ln=i.ln,t.vt=i.vt}}Rn(){return this.xn()?performance.now()-this.wn:2599}Fn(t,i,s,e){const n=s+(e-s)*i;return this.bn.ti().Gi().K(t,n)}Vn(t,i){const s=t%2600/2600;let e;for(const t of ct)if(s>=t.an&&s<=t._n){e=t;break}a(void 0!==e,"Last price animation internal logic error");const n=(s-e.an)/(e._n-e.an);return{hn:this.Fn(i,n,e.dn,e.pn),ln:this.Fn(i,n,e.fn,e.vn),vt:(r=n,h=e.un,l=e.cn,h+(l-h)*r)};var r,h,l}}class pt extends at{constructor(t){super(t)}Qe(){const t=this.Xe;t.Rt=!1;const i=this.Ze.O();if(!i.priceLineVisible||!this.Ze.Rt())return;const s=this.Ze.Tn(0===i.priceLineSource);s.kn||(t.Rt=!0,t.ct=s.Li,t.I=this.Ze.Ln(s.I),t.dt=i.priceLineWidth,t.Gt=i.priceLineStyle)}}class ft extends H{constructor(t){super(),this.Qt=t}Yi(t,i,s){t.Rt=!1,i.Rt=!1;const e=this.Qt;if(!e.Rt())return;const n=e.O(),r=n.lastValueVisible,h=""!==e.An(),l=0===n.seriesLastValueMode,o=e.Tn(!1);if(o.kn)return;r&&(t.hi=this.Bn(o,r,l),t.Rt=0!==t.hi.length),(h||l)&&(i.hi=this.En(o,r,h,l),i.Rt=i.hi.length>0);const a=e.Ln(o.I),_=this.Qt.ti().Gi().G(a);s.Z=_.Z,s.Li=o.Li,i.Nt=e.ti().Ut(o.Li/e.$t().qt()),t.Nt=a,t.I=_.J,i.I=_.J}En(t,i,s,e){let n="";const r=this.Qt.An();return s&&0!==r.length&&(n+=`${r} `),i&&e&&(n+=this.Qt.$t().Wn()?t.On:t.zn),n.trim()}Bn(t,i,s){return i?s?this.Qt.$t().Wn()?t.zn:t.On:t.hi:""}}function vt(t,i,s,e){const n=Number.isFinite(i),r=Number.isFinite(s);return n&&r?t(i,s):n||r?n?i:s:e}class mt{constructor(t,i){this.$n=t,this.Hn=i}Nn(t){return null!==t&&(this.$n===t.$n&&this.Hn===t.Hn)}Un(){return new mt(this.$n,this.Hn)}qn(){return this.$n}Yn(){return this.Hn}jn(){return this.Hn-this.$n}Xi(){return this.Hn===this.$n||Number.isNaN(this.Hn)||Number.isNaN(this.$n)}fe(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))}Kn(t){if(!f(t))return;if(0===this.Hn-this.$n)return;const i=.5*(this.Hn+this.$n);let s=this.Hn-i,e=this.$n-i;s*=t,e*=t,this.Hn=i+s,this.$n=i+e}Xn(t){f(t)&&(this.Hn+=t,this.$n+=t)}Gn(){return{minValue:this.$n,maxValue:this.Hn}}static Zn(t){return null===t?null:new mt(t.minValue,t.maxValue)}}class wt{constructor(t,i){this.Jn=t,this.Qn=i||null}tr(){return this.Jn}ir(){return this.Qn}Gn(){return{priceRange:null===this.Jn?null:this.Jn.Gn(),margins:this.Qn||void 0}}static Zn(t){return null===t?null:new wt(mt.Zn(t.priceRange),t.margins)}}class gt extends at{constructor(t,i){super(t),this.sr=i}Qe(){const t=this.Xe;t.Rt=!1;const i=this.sr.O();if(!this.Ze.Rt()||!i.lineVisible)return;const s=this.sr.er();null!==s&&(t.Rt=!0,t.ct=s,t.I=i.color,t.dt=i.lineWidth,t.Gt=i.lineStyle,t.je=this.sr.O().id)}}class bt extends H{constructor(t,i){super(),this.bn=t,this.sr=i}Yi(t,i,s){t.Rt=!1,i.Rt=!1;const e=this.sr.O(),n=e.axisLabelVisible,r=""!==e.title,h=this.bn;if(!n||!h.Rt())return;const l=this.sr.er();if(null===l)return;r&&(i.hi=e.title,i.Rt=!0),i.Nt=h.ti().Ut(l/h.$t().qt()),t.hi=this.nr(e.price),t.Rt=!0;const o=this.bn.ti().Gi().G(e.axisLabelColor||e.color);s.Z=o.Z;const a=e.axisLabelTextColor||o.J;t.I=a,i.I=a,s.Li=l}nr(t){const i=this.bn.Et();return null===i?"":this.bn.$t().Zi(t,i.Ht)}}class Mt{constructor(t,i){this.bn=t,this.Ps=i,this.rr=new gt(t,this),this.Oe=new bt(t,this),this.hr=new lt(this.Oe,t,t.ti())}lr(t){p(this.Ps,t),this.Tt(),this.bn.ti().ar()}O(){return this.Ps}_r(){return this.rr}ur(){return this.hr}cr(){return this.Oe}Tt(){this.rr.Tt(),this.Oe.Tt()}er(){const t=this.bn,i=t.$t();if(t.ti().At().Xi()||i.Xi())return null;const s=t.Et();return null===s?null:i.zt(this.Ps.price,s.Ht)}}class yt extends j{constructor(t){super(),this.ss=t}ti(){return this.ss}}const St={Bar:(t,i,s,e)=>{const n=i.upColor,r=i.downColor,h=u(t(s,e)),l=c(h.Ht[0])<=c(h.Ht[3]);return{dr:h.I??(l?n:r)}},Candlestick:(t,i,s,e)=>{const n=i.upColor,r=i.downColor,h=i.borderUpColor,l=i.borderDownColor,o=i.wickUpColor,a=i.wickDownColor,_=u(t(s,e)),d=c(_.Ht[0])<=c(_.Ht[3]);return{dr:_.I??(d?n:r),pr:_.Nt??(d?h:l),vr:_.mr??(d?o:a)}},Custom:(t,i,s,e)=>({dr:u(t(s,e)).I??i.color}),Area:(t,i,s,e)=>{const n=u(t(s,e));return{dr:n.wt??i.lineColor,wt:n.wt??i.lineColor,wr:n.wr??i.topColor,gr:n.gr??i.bottomColor}},Baseline:(t,i,s,e)=>{const n=u(t(s,e));return{dr:n.Ht[3]>=i.baseValue.price?i.topLineColor:i.bottomLineColor,br:n.br??i.topLineColor,Mr:n.Mr??i.bottomLineColor,yr:n.yr??i.topFillColor1,Sr:n.Sr??i.topFillColor2,Cr:n.Cr??i.bottomFillColor1,Pr:n.Pr??i.bottomFillColor2}},Line:(t,i,s,e)=>{const n=u(t(s,e));return{dr:n.I??i.color,wt:n.I??i.color}},Histogram:(t,i,s,e)=>({dr:u(t(s,e)).I??i.color})};class xt{constructor(t){this.Tr=(t,i)=>void 0!==i?i.Ht:this.bn.Gs().kr(t),this.bn=t,this.Dr=St[t.Ir()]}Vr(t,i){return this.Dr(this.Tr,this.bn.O(),t,i)}}function Ct(t,i,s,e,n=0,r=i.length){let h=r-n;for(;0<h;){const r=h>>1,l=n+r;e(i[l],s)===t?(n=l+1,h-=r+1):h=r}return n}const Pt=Ct.bind(null,!0),Tt=Ct.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 It{constructor(){this.Rr=[],this.Fr=new Map,this.Lr=new Map,this.Ar=[]}Br(){return this.Er()>0?this.Rr[this.Rr.length-1]:null}Wr(){return this.Er()>0?this.Or(0):null}Xs(){return this.Er()>0?this.Or(this.Rr.length-1):null}Er(){return this.Rr.length}Xi(){return 0===this.Er()}Dn(t){return null!==this.zr(t,0)}kr(t){return this.$r(t)}$r(t,i=0){const s=this.zr(t,i);return null===s?null:{...this.Hr(s),In:this.Or(s)}}Nr(){return this.Rr}Ur(t,i,s){if(this.Xi())return null;let e=null;for(const n of s){e=Vt(e,this.qr(t,i,n))}return e}lt(t){this.Lr.clear(),this.Fr.clear(),this.Rr=t,this.Ar=t.map(t=>t.In)}Yr(){return this.Ar}Or(t){return this.Rr[t].In}Hr(t){return this.Rr[t]}zr(t,i){const s=this.jr(t);if(null===s&&0!==i)switch(i){case-1:return this.Kr(t);case 1:return this.Xr(t);default:throw new TypeError("Unknown search mode")}return s}Kr(t){let i=this.Gr(t);return i>0&&(i-=1),i!==this.Rr.length&&this.Or(i)<t?i:null}Xr(t){const i=this.Zr(t);return i!==this.Rr.length&&t<this.Or(i)?i:null}jr(t){const i=this.Gr(t);return i===this.Rr.length||t<this.Rr[i].In?null:i}Gr(t){return Pt(this.Rr,t,(t,i)=>t.In<i)}Zr(t){return Tt(this.Rr,t,(t,i)=>t.In>i)}Jr(t,i,s){let e=null;for(let n=t;n<i;n++){const t=this.Rr[n].Ht[s];Number.isNaN(t)||(null===e?e={Qr:t,th:t}:(t<e.Qr&&(e.Qr=t),t>e.th&&(e.th=t)))}return e}qr(t,i,s){if(this.Xi())return null;let e=null;const n=u(this.Wr()),r=u(this.Xs()),h=Math.max(t,n),l=Math.min(i,r),o=Math.ceil(h/Dt)*Dt,a=Math.max(o,Math.floor(l/Dt)*Dt);{const t=this.Gr(h),n=this.Zr(Math.min(l,o,i));e=Vt(e,this.Jr(t,n,s))}let _=this.Fr.get(s);void 0===_&&(_=new Map,this.Fr.set(s,_));for(let t=Math.max(o+1,h);t<a;t+=Dt){const i=Math.floor(t/Dt);let n=_.get(i);if(void 0===n){const t=this.Gr(i*Dt),e=this.Zr((i+1)*Dt-1);n=this.Jr(t,e,s),_.set(i,n)}e=Vt(e,n)}{const t=this.Gr(a),i=this.Zr(l);e=Vt(e,this.Jr(t,i,s))}return e}}function Vt(t,i){if(null===t)return i;if(null===i)return t;return{Qr:Math.min(t.Qr,i.Qr),th:Math.max(t.th,i.th)}}const Rt={setLineStyle:l};class Ft{constructor(t){this.ih=t}nt(t,i,s){this.ih.draw(t,Rt)}sh(t,i,s){this.ih.drawBackground?.(t,Rt)}}class Lt{constructor(t){this.De=null,this.eh=t}Dt(){const t=this.eh.renderer();if(null===t)return null;if(this.De?.nh===t)return this.De.rh;const i=new Ft(t);return this.De={nh:t,rh:i},i}hh(){return this.eh.zOrder?.()??"normal"}}class At{constructor(t){this.oh=null,this.ah=t}_h(){return this.ah}zs(){this.ah.updateAllViews?.()}$s(){const t=this.ah.paneViews?.()??[];if(this.oh?.nh===t)return this.oh.rh;const i=t.map(t=>new Lt(t));return this.oh={nh:t,rh:i},i}Ye(t,i){return this.ah.hitTest?.(t,i)??null}}let Bt=class extends At{cs(){return[]}};class Et{constructor(t){this.ih=t}nt(t,i,s){this.ih.draw(t,Rt)}sh(t,i,s){this.ih.drawBackground?.(t,Rt)}}class Wt{constructor(t){this.De=null,this.eh=t}Dt(){const t=this.eh.renderer();if(null===t)return null;if(this.De?.nh===t)return this.De.rh;const i=new Et(t);return this.De={nh:t,rh:i},i}hh(){return this.eh.zOrder?.()??"normal"}}function Ot(t){return{hi:t.text(),Li:t.coordinate(),Fi:t.fixedCoordinate?.(),I:t.textColor(),Z:t.backColor(),Rt:t.visible?.()??!0,mi:t.tickVisible?.()??!0}}class zt{constructor(t,i){this.Jt=new q,this.uh=t,this.dh=i}Dt(){return this.Jt.lt({ts:this.dh.ts(),...Ot(this.uh)}),this.Jt}}class $t extends H{constructor(t,i){super(),this.uh=t,this.ji=i}Yi(t,i,s){const e=Ot(this.uh);s.Z=e.Z,t.I=e.I;const n=2/12*this.ji.P();s.Di=n,s.Ii=n,s.Li=e.Li,s.Fi=e.Fi,t.hi=e.hi,t.Rt=e.Rt,t.mi=e.mi}}class Ht extends At{constructor(t,i){super(t),this.ph=null,this.fh=null,this.mh=null,this.wh=null,this.bn=i}ds(){const t=this.ah.timeAxisViews?.()??[];if(this.ph?.nh===t)return this.ph.rh;const i=this.bn.ti().At(),s=t.map(t=>new zt(t,i));return this.ph={nh:t,rh:s},s}Hs(){const t=this.ah.priceAxisViews?.()??[];if(this.fh?.nh===t)return this.fh.rh;const i=this.bn.$t(),s=t.map(t=>new $t(t,i));return this.fh={nh:t,rh:s},s}gh(){const t=this.ah.priceAxisPaneViews?.()??[];if(this.mh?.nh===t)return this.mh.rh;const i=t.map(t=>new Wt(t));return this.mh={nh:t,rh:i},i}bh(){const t=this.ah.timeAxisPaneViews?.()??[];if(this.wh?.nh===t)return this.wh.rh;const i=t.map(t=>new Wt(t));return this.wh={nh:t,rh:i},i}Mh(t,i){return this.ah.autoscaleInfo?.(t,i)??null}}function Nt(t,i,s,e){t.forEach(t=>{i(t).forEach(t=>{t.hh()===s&&e.push(t)})})}function Ut(t){return t.$s()}function qt(t){return t.gh()}function Yt(t){return t.bh()}const jt=["Area","Line","Baseline"];class Kt extends yt{constructor(t,i,s,e,n){super(t),this.jt=new It,this.rr=new pt(this),this.yh=[],this.Sh=new _t(this),this.xh=null,this.Ch=null,this.Ph=null,this.Th=[],this.Ps=s,this.kh=i;const r=new ft(this);this.ws=[r],this.hr=new lt(r,this,t),jt.includes(this.kh)&&(this.xh=new dt(this)),this.Dh(),this.eh=e(this,this.ti(),n)}m(){null!==this.Ph&&clearTimeout(this.Ph)}Ln(t){return this.Ps.priceLineColor||t}Tn(t){const i={kn:!0},s=this.$t();if(this.ti().At().Xi()||s.Xi()||this.jt.Xi())return i;const e=this.ti().At().Pn(),n=this.Et();if(null===e||null===n)return i;let r,h;if(t){const t=this.jt.Br();if(null===t)return i;r=t,h=t.In}else{const t=this.jt.$r(e.yi(),-1);if(null===t)return i;if(r=this.jt.kr(t.In),null===r)return i;h=t.In}const l=r.Ht[3],o=this.Ih().Vr(h,{Ht:r}),a=s.zt(l,n.Ht);return{kn:!1,bt:l,hi:s.Zi(l,n.Ht),On:s.Vh(l),zn:s.Rh(l,n.Ht),I:o.dr,Li:a,In:h}}Ih(){return null!==this.Ch||(this.Ch=new xt(this)),this.Ch}O(){return this.Ps}lr(t){const i=t.priceScaleId;void 0!==i&&i!==this.Ps.priceScaleId&&this.ti().Fh(this,i),p(this.Ps,t),void 0!==t.priceFormat&&(this.Dh(),this.ti().Lh()),this.ti().Ah(this),this.ti().Bh(),this.eh.Tt("options")}lt(t,i){this.jt.lt(t),this.eh.Tt("data"),null!==this.xh&&(i&&i.Eh?this.xh.yn():0===t.length&&this.xh.Mn());const s=this.ti().$e(this);this.ti().Wh(s),this.ti().Ah(this),this.ti().Bh(),this.ti().ar()}Oh(t){const i=new Mt(this,t);return this.yh.push(i),this.ti().Ah(this),i}zh(t){const i=this.yh.indexOf(t);-1!==i&&this.yh.splice(i,1),this.ti().Ah(this)}$h(){return this.yh}Ir(){return this.kh}Et(){const t=this.Hh();return null===t?null:{Ht:t.Ht[3],Nh:t.gt}}Hh(){const t=this.ti().At().Pn();if(null===t)return null;const i=t.Uh();return this.jt.$r(i,1)}Gs(){return this.jt}qh(t){const i=this.jt.kr(t);return null===i?null:"Bar"===this.kh||"Candlestick"===this.kh||"Custom"===this.kh?{Yh:i.Ht[0],jh:i.Ht[1],Kh:i.Ht[2],Xh:i.Ht[3]}:i.Ht[3]}Gh(t){const i=[];Nt(this.Th,Ut,"top",i);const s=this.xh;return null!==s&&s.Rt()?(null===this.Ph&&s.xn()&&(this.Ph=setTimeout(()=>{this.Ph=null,this.ti().Zh()},0)),s.Sn(),i.unshift(s),i):i}$s(){const t=[];this.Jh()||t.push(this.Sh),t.push(this.eh,this.rr);const i=this.yh.map(t=>t._r());return t.push(...i),Nt(this.Th,Ut,"normal",t),t}Qh(){return this.tl(Ut,"bottom")}il(t){return this.tl(qt,t)}sl(t){return this.tl(Yt,t)}el(t,i){return this.Th.map(s=>s.Ye(t,i)).filter(t=>null!==t)}cs(){return[this.hr,...this.yh.map(t=>t.ur())]}Hs(t,i){if(i!==this.rs&&!this.Jh())return[];const s=[...this.ws];for(const t of this.yh)s.push(t.cr());return this.Th.forEach(t=>{s.push(...t.Hs())}),s}ds(){const t=[];return this.Th.forEach(i=>{t.push(...i.ds())}),t}Mh(t,i){if(void 0!==this.Ps.autoscaleInfoProvider){const s=this.Ps.autoscaleInfoProvider(()=>{const s=this.nl(t,i);return null===s?null:s.Gn()});return wt.Zn(s)}return this.nl(t,i)}nh(){const t=this.Ps.priceFormat;return t.base??1/t.minMove}rl(){return this.hl}zs(){this.eh.Tt();for(const t of this.ws)t.Tt();for(const t of this.yh)t.Tt();this.rr.Tt(),this.Sh.Tt(),this.xh?.Tt(),this.Th.forEach(t=>t.zs())}$t(){return u(super.$t())}Bt(t){if(!(("Line"===this.kh||"Area"===this.kh||"Baseline"===this.kh)&&this.Ps.crosshairMarkerVisible))return null;const i=this.jt.kr(t);if(null===i)return null;return{bt:i.Ht[3],vt:this.ll(),Nt:this.ol(),Ot:this.al(),Wt:this._l(t)}}An(){return this.Ps.title}Rt(){return this.Ps.visible}ul(t){this.Th.push(new Ht(t,this))}cl(t){this.Th=this.Th.filter(i=>i._h()!==t)}dl(){if("Custom"===this.kh)return t=>this.eh.pl(t)}fl(){if("Custom"===this.kh)return t=>this.eh.vl(t)}ml(){return this.jt.Yr()}Jh(){return!G(this.$t().wl())}nl(t,i){if(!v(t)||!v(i)||this.jt.Xi())return null;const s="Line"===this.kh||"Area"===this.kh||"Baseline"===this.kh||"Histogram"===this.kh?[3]:[2,1],e=this.jt.Ur(t,i,s);let n=null!==e?new mt(e.Qr,e.th):null,r=null;if("Histogram"===this.Ir()){const t=this.Ps.base,i=new mt(t,t);n=null!==n?n.fe(i):i}return this.Th.forEach(s=>{const e=s.Mh(t,i);if(e?.priceRange){const t=new mt(e.priceRange.minValue,e.priceRange.maxValue);n=null!==n?n.fe(t):t}e?.margins&&(r=e.margins)}),new wt(n,r)}ll(){switch(this.kh){case"Line":case"Area":case"Baseline":return this.Ps.crosshairMarkerRadius}return 0}ol(){switch(this.kh){case"Line":case"Area":case"Baseline":{const t=this.Ps.crosshairMarkerBorderColor;if(0!==t.length)return t}}return null}al(){switch(this.kh){case"Line":case"Area":case"Baseline":return this.Ps.crosshairMarkerBorderWidth}return 0}_l(t){switch(this.kh){case"Line":case"Area":case"Baseline":{const t=this.Ps.crosshairMarkerBackgroundColor;if(0!==t.length)return t}}return this.Ih().Vr(t).dr}Dh(){switch(this.Ps.priceFormat.type){case"custom":{const t=this.Ps.priceFormat.formatter;this.hl={format:t,formatTickmarks:this.Ps.priceFormat.tickmarksFormatter??(i=>i.map(t))};break}case"volume":this.hl=new et(this.Ps.priceFormat.precision);break;case"percent":this.hl=new st(this.Ps.priceFormat.precision);break;default:{const t=Math.pow(10,this.Ps.priceFormat.precision);this.hl=new it(t,this.Ps.priceFormat.minMove*t)}}null!==this.rs&&this.rs.gl()}tl(t,i){const s=[];return Nt(this.Th,t,i,s),s}}const Xt=[3],Gt=[0,1,2,3];class Zt{constructor(t){this.Ps=t}bl(t,i,s){let e=t;if(0===this.Ps.mode)return e;const n=s.ks(),r=n.Et();if(null===r)return e;const h=n.zt(t,r),l=s.Ml().filter(t=>t instanceof Kt).reduce((t,e)=>{if(s.He(e)||!e.Rt())return t;const n=e.$t(),r=e.Gs();if(n.Xi()||!r.Dn(i))return t;const h=r.kr(i);if(null===h)return t;const l=c(e.Et()),o=3===this.Ps.mode?Gt:Xt;return t.concat(o.map(t=>n.zt(h.Ht[t],l.Ht)))},[]);if(0===l.length)return e;l.sort((t,i)=>Math.abs(t-h)-Math.abs(i-h));const o=l[0];return e=n.Ds(o,r),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}rt({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 r=u(this.jt);if(r.yl){t.strokeStyle=r.Sl,l(t,r.xl),t.beginPath();for(const e of r.Cl){const r=Math.round(e.Pl*s);t.moveTo(r,-n),t.lineTo(r,i.height+n)}t.stroke()}if(r.Tl){t.strokeStyle=r.kl,l(t,r.Dl),t.beginPath();for(const s of r.Il){const r=Math.round(s.Pl*e);t.moveTo(-n,r),t.lineTo(i.width+n,r)}t.stroke()}})}}class si{constructor(t){this.Jt=new ii,this.xt=!0,this.Pt=t}Tt(){this.xt=!0}Dt(){if(this.xt){const t=this.Pt.ti().O().grid,i={Tl:t.horzLines.visible,yl:t.vertLines.visible,kl:t.horzLines.color,Sl:t.vertLines.color,Dl:t.horzLines.style,xl:t.vertLines.style,Il:this.Pt.ks().Vl(),Cl:(this.Pt.ti().At().Vl()||[]).map(t=>({Pl:t.coord}))};this.Jt.lt(i),this.xt=!1}return this.Jt}}class ei{constructor(t){this.eh=new si(t)}_r(){return this.eh}}const ni={Rl:4,Fl:1e-4};function ri(t,i){const s=100*(t-i)/i;return i<0?-s:s}function hi(t,i){const s=ri(t.qn(),i),e=ri(t.Yn(),i);return new mt(s,e)}function li(t,i){const s=100*(t-i)/i+100;return i<0?-s:s}function oi(t,i){const s=li(t.qn(),i),e=li(t.Yn(),i);return new mt(s,e)}function ai(t,i){const s=Math.abs(t);if(s<1e-15)return 0;const e=Math.log10(s+i.Fl)+i.Rl;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.Rl)-i.Fl;return t<0?-e:e}function ui(t,i){if(null===t)return null;const s=ai(t.qn(),i),e=ai(t.Yn(),i);return new mt(s,e)}function ci(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.Rl+s;return{Rl:e,Fl:1/Math.pow(10,e)}}class pi{constructor(t,i){if(this.Ll=t,this.Al=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.Ll))this.Bl=[2,2.5,2];else{this.Bl=[];for(let t=this.Ll;1!==t;){if(t%2==0)this.Bl.push(2),t/=2;else{if(t%5!=0)throw new Error("unexpected base");this.Bl.push(2,2.5),t/=5}if(this.Bl.length>100)throw new Error("something wrong with base")}}}El(t,i,s){const e=0===this.Ll?0:1/this.Ll;let n=Math.pow(10,Math.max(0,Math.ceil(Math.log10(t-i)))),r=0,h=this.Al[0];for(;;){const t=Qt(n,e,1e-14)&&n>e+1e-14,i=Qt(n,s*h,1e-14),l=Qt(n,1,1e-14);if(!(t&&i&&l))break;n/=h,h=this.Al[++r%this.Al.length]}if(n<=e+1e-14&&(n=e),n=Math.max(1,n),this.Bl.length>0&&(l=n,o=1,a=1e-14,Math.abs(l-o)<a))for(r=0,h=this.Bl[0];Qt(n,s*h,1e-14)&&n>e+1e-14;)n/=h,h=this.Bl[++r%this.Bl.length];var l,o,a;return n}}class fi{constructor(t,i,s,e){this.Wl=[],this.ji=t,this.Ll=i,this.Ol=s,this.zl=e}El(t,i){if(t<i)throw new Error("high < low");const s=this.ji.qt(),e=(t-i)*this.$l()/s,n=new pi(this.Ll,[2,2.5,2]),r=new pi(this.Ll,[2,2,2.5]),h=new pi(this.Ll,[2.5,2,2]),l=[];return l.push(n.El(t,i,e),r.El(t,i,e),h.El(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}(l)}Hl(){const t=this.ji,i=t.Et();if(null===i)return void(this.Wl=[]);const s=t.qt(),e=this.Ol(s-1,i),n=this.Ol(0,i),r=this.ji.O().entireTextOnly?this.Nl()/2:0,h=r,l=s-1-r,o=Math.max(e,n),a=Math.min(e,n);if(o===a)return void(this.Wl=[]);const _=this.El(o,a);if(this.Ul(i,_,o,a,h,l),t.ql()&&this.Yl(_,a,o)){const t=this.ji.jl();this.Kl(i,_,h,l,t,2*t)}const u=this.Wl.map(t=>t.Xl),c=this.ji.Gl(u);for(let t=0;t<this.Wl.length;t++)this.Wl[t].Zl=c[t]}Vl(){return this.Wl}Nl(){return this.ji.P()}$l(){return Math.ceil(2.5*this.Nl())}Ul(t,i,s,e,n,r){const h=this.Wl,l=this.ji;let o=s%i;o+=o<0?i:0;const a=s>=e?1:-1;let _=null,u=0;for(let c=s-o;c>e;c-=i){const s=this.zl(c,t,!0);null!==_&&Math.abs(s-_)<this.$l()||(s<n||s>r||(u<h.length?(h[u].Pl=s,h[u].Zl=l.Jl(c),h[u].Xl=c):h.push({Pl:s,Zl:l.Jl(c),Xl:c}),u++,_=s,l.Ql()&&(i=this.El(c*a,e))))}h.length=u}Kl(t,i,s,e,n,r){const h=this.Wl,l=this.io(t,s,n,r),o=this.io(t,e,-r,-n),a=this.zl(0,t,!0)-this.zl(i,t,!0);h.length>0&&h[0].Pl-l.Pl<a/2&&h.shift(),h.length>0&&o.Pl-h[h.length-1].Pl<a/2&&h.pop(),h.unshift(l),h.push(o)}io(t,i,s,e){const n=(s+e)/2,r=this.Ol(i+s,t),h=this.Ol(i+e,t),l=Math.min(r,h),o=Math.max(r,h),a=Math.max(.1,this.El(o,l)),_=this.Ol(i+n,t),u=_-_%a,c=this.zl(u,t,!0);return{Zl:this.ji.Jl(u),Pl:c,Xl:u}}Yl(t,i,s){let e=c(this.ji.tr());return this.ji.Ql()&&(e=ci(e,this.ji.so())),e.qn()-i<t&&s-e.Yn()<t}}function vi(t){return t.slice().sort((t,i)=>u(t.ls())-u(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 wi=new st,gi=new it(100,1);class bi{constructor(t,i,s,e,n){this.eo=0,this.no=null,this.Jn=null,this.ro=null,this.ho={lo:!1,oo:null},this.ao=!1,this._o=0,this.uo=0,this.co=new d,this.do=new d,this.po=[],this.fo=null,this.vo=null,this.mo=null,this.wo=null,this.bo=null,this.hl=gi,this.Mo=di(null),this.yo=t,this.Ps=i,this.So=s,this.xo=e,this.Co=n,this.Po=new fi(this,100,this.To.bind(this),this.ko.bind(this))}wl(){return this.yo}O(){return this.Ps}lr(t){if(p(this.Ps,t),this.gl(),void 0!==t.mode&&this.Do({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.Io(),this.mo=null}}Vo(){return this.Ps.autoScale}Ro(){return this.ao}Ql(){return 1===this.Ps.mode}Wn(){return 2===this.Ps.mode}Fo(){return 3===this.Ps.mode}so(){return this.Mo}tn(){return{se:this.Ps.autoScale,Lo:this.Ps.invertScale,tn:this.Ps.mode}}Do(t){const i=this.tn();let s=null;void 0!==t.se&&(this.Ps.autoScale=t.se),void 0!==t.tn&&(this.Ps.mode=t.tn,2!==t.tn&&3!==t.tn||(this.Ps.autoScale=!0),this.ho.lo=!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.Mo)?this.Ps.autoScale=!0:(s=ci(this.Jn,this.Mo),null!==s&&this.Ao(s))),1===t.tn&&t.tn!==i.tn&&(s=ui(this.Jn,this.Mo),null!==s&&this.Ao(s));const e=i.tn!==this.Ps.mode;e&&(2===i.tn||this.Wn())&&this.gl(),e&&(3===i.tn||this.Fo())&&this.gl(),void 0!==t.Lo&&i.Lo!==t.Lo&&(this.Ps.invertScale=t.Lo,this.Bo()),this.do.p(i,this.tn())}Eo(){return this.do}P(){return this.So.fontSize}qt(){return this.eo}Wo(t){this.eo!==t&&(this.eo=t,this.Io(),this.mo=null)}Oo(){if(this.no)return this.no;const t=this.qt()-this.zo()-this.$o();return this.no=t,t}tr(){return this.Ho(),this.Jn}Ao(t,i){const s=this.Jn;(i||null===s&&null!==t||null!==s&&!s.Nn(t))&&(this.mo=null,this.Jn=t)}No(t){this.Ao(t),this.Uo(null!==t)}Xi(){return this.Ho(),0===this.eo||!this.Jn||this.Jn.Xi()}qo(t){return this.Lo()?t:this.qt()-1-t}zt(t,i){return this.Wn()?t=ri(t,i):this.Fo()&&(t=li(t,i)),this.ko(t,i)}Yo(t,i,s){this.Ho();const e=this.$o(),n=u(this.tr()),r=n.qn(),h=n.Yn(),l=this.Oo()-1,o=this.Lo(),a=l/(h-r),_=void 0===s?0:s.from,c=void 0===s?t.length:s.to,d=this.jo();for(let s=_;s<c;s++){const n=t[s],h=n.bt;if(isNaN(h))continue;let l=h;null!==d&&(l=d(n.bt,i));const _=e+a*(l-r),u=o?_:this.eo-1-_;n.ct=u}}Ko(t,i,s){this.Ho();const e=this.$o(),n=u(this.tr()),r=n.qn(),h=n.Yn(),l=this.Oo()-1,o=this.Lo(),a=l/(h-r),_=void 0===s?0:s.from,c=void 0===s?t.length:s.to,d=this.jo();for(let s=_;s<c;s++){const n=t[s];let h=n.Yh,l=n.jh,_=n.Kh,u=n.Xh;null!==d&&(h=d(n.Yh,i),l=d(n.jh,i),_=d(n.Kh,i),u=d(n.Xh,i));let c=e+a*(h-r),p=o?c:this.eo-1-c;n.Xo=p,c=e+a*(l-r),p=o?c:this.eo-1-c,n.Go=p,c=e+a*(_-r),p=o?c:this.eo-1-c,n.Zo=p,c=e+a*(u-r),p=o?c:this.eo-1-c,n.Jo=p}}Ds(t,i){const s=this.To(t,i);return this.Qo(s,i)}Qo(t,i){let s=t;return this.Wn()?s=function(t,i){return i<0&&(t=-t),t/100*i+i}(s,i):this.Fo()&&(s=function(t,i){return t-=100,i<0&&(t=-t),t/100*i+i}(s,i)),s}Ml(){return this.po}Vt(){return this.vo||(this.vo=vi(this.po)),this.vo}ta(t){-1===this.po.indexOf(t)&&(this.po.push(t),this.gl(),this.ia())}sa(t){const i=this.po.indexOf(t);if(-1===i)throw new Error("source is not attached to scale");this.po.splice(i,1),0===this.po.length&&(this.Do({se:!0}),this.Ao(null)),this.gl(),this.ia()}Et(){let t=null;for(const i of this.po){const s=i.Et();null!==s&&((null===t||s.Nh<t.Nh)&&(t=s))}return null===t?null:t.Ht}Lo(){return this.Ps.invertScale}Vl(){const t=null===this.Et();if(null!==this.mo&&(t||this.mo.ea===t))return this.mo.Vl;this.Po.Hl();const i=this.Po.Vl();return this.mo={Vl:i,ea:t},this.co.p(),i}na(){return this.co}ra(t){this.Wn()||this.Fo()||null===this.wo&&null===this.ro&&(this.Xi()||(this.wo=this.eo-t,this.ro=u(this.tr()).Un()))}ha(t){if(this.Wn()||this.Fo())return;if(null===this.wo)return;this.Do({se:!1}),(t=this.eo-t)<0&&(t=0);let i=(this.wo+.2*(this.eo-1))/(t+.2*(this.eo-1));const s=u(this.ro).Un();i=Math.max(i,.1),s.Kn(i),this.Ao(s)}la(){this.Wn()||this.Fo()||(this.wo=null,this.ro=null)}oa(t){this.Vo()||null===this.bo&&null===this.ro&&(this.Xi()||(this.bo=t,this.ro=u(this.tr()).Un()))}aa(t){if(this.Vo())return;if(null===this.bo)return;const i=u(this.tr()).jn()/(this.Oo()-1);let s=t-this.bo;this.Lo()&&(s*=-1);const e=s*i,n=u(this.ro).Un();n.Xn(e),this.Ao(n,!0),this.mo=null}_a(){this.Vo()||null!==this.bo&&(this.bo=null,this.ro=null)}rl(){return this.hl||this.gl(),this.hl}Zi(t,i){switch(this.Ps.mode){case 2:return this.ua(ri(t,i));case 3:return this.rl().format(li(t,i));default:return this.nr(t)}}Jl(t){switch(this.Ps.mode){case 2:return this.ua(t);case 3:return this.rl().format(t);default:return this.nr(t)}}Gl(t){switch(this.Ps.mode){case 2:return this.ca(t);case 3:return this.rl().formatTickmarks(t);default:return this.da(t)}}Vh(t){return this.nr(t,u(this.fo).rl())}Rh(t,i){return t=ri(t,i),this.ua(t,wi)}pa(){return this.po}fa(t){this.ho={oo:t,lo:!1}}zs(){this.po.forEach(t=>t.zs())}ql(){return this.Ps.ensureEdgeTickMarksVisible&&this.Vo()}jl(){return this.P()/2}gl(){this.mo=null;let t=1/0;this.fo=null;for(const i of this.po)i.ls()<t&&(t=i.ls(),this.fo=i);let i=100;null!==this.fo&&(i=Math.round(this.fo.nh())),this.hl=gi,this.Wn()?(this.hl=wi,i=100):this.Fo()?(this.hl=new it(100,1),i=100):null!==this.fo&&(this.hl=this.fo.rl()),this.Po=new fi(this,i,this.To.bind(this),this.ko.bind(this)),this.Po.Hl()}ia(){this.vo=null}va(){return null===this.fo||this.Wn()||this.Fo()?1:1/this.fo.nh()}Gi(){return this.Co}Uo(t){this.ao=t}zo(){return this.Lo()?this.Ps.scaleMargins.bottom*this.qt()+this.uo:this.Ps.scaleMargins.top*this.qt()+this._o}$o(){return this.Lo()?this.Ps.scaleMargins.top*this.qt()+this._o:this.Ps.scaleMargins.bottom*this.qt()+this.uo}Ho(){this.ho.lo||(this.ho.lo=!0,this.ma())}Io(){this.no=null}ko(t,i){if(this.Ho(),this.Xi())return 0;t=this.Ql()&&t?ai(t,this.Mo):t;const s=u(this.tr()),e=this.$o()+(this.Oo()-1)*(t-s.qn())/s.jn();return this.qo(e)}To(t,i){if(this.Ho(),this.Xi())return 0;const s=this.qo(t),e=u(this.tr()),n=e.qn()+e.jn()*((s-this.$o())/(this.Oo()-1));return this.Ql()?_i(n,this.Mo):n}Bo(){this.mo=null,this.Po.Hl()}ma(){if(this.Ro()&&!this.Vo())return;const t=this.ho.oo;if(null===t)return;let i=null;const s=this.pa();let e=0,n=0;for(const r of s){if(!r.Rt())continue;const s=r.Et();if(null===s)continue;const h=r.Mh(t.Uh(),t.yi());let l=h&&h.tr();if(null!==l){switch(this.Ps.mode){case 1:l=ui(l,this.Mo);break;case 2:l=hi(l,s.Ht);break;case 3:l=oi(l,s.Ht)}if(i=null===i?l:i.fe(u(l)),null!==h){const t=h.ir();null!==t&&(e=Math.max(e,t.above),n=Math.max(n,t.below))}}}if(this.ql()&&(e=Math.max(e,this.jl()),n=Math.max(n,this.jl())),e===this._o&&n===this.uo||(this._o=e,this.uo=n,this.mo=null,this.Io()),null!==i){if(i.qn()===i.Yn()){const t=5*this.va();this.Ql()&&(i=ci(i,this.Mo)),i=new mt(i.qn()-t,i.Yn()+t),this.Ql()&&(i=ui(i,this.Mo))}if(this.Ql()){const t=ci(i,this.Mo),s=di(t);if(r=s,h=this.Mo,r.Rl!==h.Rl||r.Fl!==h.Fl){const e=null!==this.ro?ci(this.ro,this.Mo):null;this.Mo=s,i=ui(t,s),null!==e&&(this.ro=ui(e,s))}}this.Ao(i)}else null===this.Jn&&(this.Ao(new mt(-.5,.5)),this.Mo=di(null));var r,h}jo(){return this.Wn()?ri:this.Fo()?li:this.Ql()?t=>ai(t,this.Mo):null}wa(t,i,s){return void 0===i?(void 0===s&&(s=this.rl()),s.format(t)):i(t)}ga(t,i,s){return void 0===i?(void 0===s&&(s=this.rl()),s.formatTickmarks(t)):i(t)}nr(t,i){return this.wa(t,this.xo.priceFormatter,i)}da(t,i){const s=this.xo.priceFormatter;return this.ga(t,this.xo.tickmarksPriceFormatter??(s?t=>t.map(s):void 0),i)}ua(t,i){return this.wa(t,this.xo.percentageFormatter,i)}ca(t,i){const s=this.xo.percentageFormatter;return this.ga(t,this.xo.tickmarksPercentageFormatter??(s?t=>t.map(s):void 0),i)}}function Mi(t){return t instanceof Kt}class yi{constructor(t,i){this.po=[],this.ba=new Map,this.eo=0,this.Ma=0,this.ya=1,this.vo=null,this.Sa=!1,this.xa=new d,this.Th=[],this.dh=t,this.ss=i,this.Ca=new ei(this);const s=i.O();this.Pa=this.Ta("left",s.leftPriceScale),this.ka=this.Ta("right",s.rightPriceScale),this.Pa.Eo().i(this.Da.bind(this,this.Pa),this),this.ka.Eo().i(this.Da.bind(this,this.ka),this),this.Ia(s)}Ia(t){if(t.leftPriceScale&&this.Pa.lr(t.leftPriceScale),t.rightPriceScale&&this.ka.lr(t.rightPriceScale),t.localization&&(this.Pa.gl(),this.ka.gl()),t.overlayPriceScales){const i=Array.from(this.ba.values());for(const s of i){const i=u(s[0].$t());i.lr(t.overlayPriceScales),t.localization&&i.gl()}}}Va(t){switch(t){case"left":return this.Pa;case"right":return this.ka}return this.ba.has(t)?_(this.ba.get(t))[0].$t():null}m(){this.ti().Ra().u(this),this.Pa.Eo().u(this),this.ka.Eo().u(this),this.po.forEach(t=>{t.m&&t.m()}),this.Th=this.Th.filter(t=>{const i=t._h();return i.detached&&i.detached(),!1}),this.xa.p()}Fa(){return this.ya}La(t){this.ya=t}ti(){return this.ss}ts(){return this.Ma}qt(){return this.eo}Aa(t){this.Ma=t,this.Ba()}Wo(t){this.eo=t,this.Pa.Wo(t),this.ka.Wo(t),this.po.forEach(i=>{if(this.He(i)){const s=i.$t();null!==s&&s.Wo(t)}}),this.Ba()}Ea(t){this.Sa=t}Wa(){return this.Sa}Oa(){return this.po.filter(Mi)}Ml(){return this.po}He(t){const i=t.$t();return null===i||this.Pa!==i&&this.ka!==i}ta(t,i,s){this.za(t,i,s?t.ls():this.po.length)}sa(t,i){const s=this.po.indexOf(t);a(-1!==s,"removeDataSource: invalid data source"),this.po.splice(s,1),i||this.po.forEach((t,i)=>t._s(i));const e=u(t.$t()).wl();if(this.ba.has(e)){const i=_(this.ba.get(e)),s=i.indexOf(t);-1!==s&&(i.splice(s,1),0===i.length&&this.ba.delete(e))}const n=t.$t();n&&n.Ml().indexOf(t)>=0&&(n.sa(t),this.$a(n)),this.vo=null}Ue(t){return t===this.Pa?"left":t===this.ka?"right":"overlay"}Ha(){return this.Pa}Na(){return this.ka}Ua(t,i){t.ra(i)}qa(t,i){t.ha(i),this.Ba()}Ya(t){t.la()}ja(t,i){t.oa(i)}Ka(t,i){t.aa(i),this.Ba()}Xa(t){t._a()}Ba(){this.po.forEach(t=>{t.zs()})}ks(){let t=null;return this.ss.O().rightPriceScale.visible&&0!==this.ka.Ml().length?t=this.ka:this.ss.O().leftPriceScale.visible&&0!==this.Pa.Ml().length?t=this.Pa:0!==this.po.length&&(t=this.po[0].$t()),null===t&&(t=this.ka),t}Ne(){let t=null;return this.ss.O().rightPriceScale.visible?t=this.ka:this.ss.O().leftPriceScale.visible&&(t=this.Pa),t}$a(t){null!==t&&t.Vo()&&this.Ga(t)}Za(t){const i=this.dh.Pn();t.Do({se:!0}),null!==i&&t.fa(i),this.Ba()}Ja(){this.Ga(this.Pa),this.Ga(this.ka)}Qa(){this.$a(this.Pa),this.$a(this.ka),this.po.forEach(t=>{this.He(t)&&this.$a(t.$t())}),this.Ba(),this.ss.ar()}Vt(){return null===this.vo&&(this.vo=vi(this.po)),this.vo}t_(t,i){i=Jt(i,0,this.po.length-1);const s=this.po.indexOf(t);a(-1!==s,"setSeriesOrder: invalid data source"),this.po.splice(s,1),this.po.splice(i,0,t),this.po.forEach((t,i)=>t._s(i)),this.vo=null;for(const t of[this.Pa,this.ka])t.ia(),t.gl();this.ss.ar()}Ft(){return this.Vt().filter(Mi)}i_(){return this.xa}s_(){return this.Ca}ul(t){this.Th.push(new Bt(t))}cl(t){this.Th=this.Th.filter(i=>i._h()!==t),t.detached&&t.detached(),this.ss.ar()}e_(){return this.Th}el(t,i){return this.Th.map(s=>s.Ye(t,i)).filter(t=>null!==t)}Ga(t){const i=t.pa();if(i&&i.length>0&&!this.dh.Xi()){const i=this.dh.Pn();null!==i&&t.fa(i)}t.zs()}za(t,i,s){let e=this.Va(i);if(null===e&&(e=this.Ta(i,this.ss.O().overlayPriceScales)),this.po.splice(s,0,t),!G(i)){const s=this.ba.get(i)||[];s.push(t),this.ba.set(i,s)}t._s(s),e.ta(t),t.us(e),this.$a(e),this.vo=null}Da(t,i,s){i.tn!==s.tn&&this.Ga(t)}Ta(t,i){const s={visible:!0,autoScale:!0,...g(i)},e=new bi(t,s,this.ss.O().layout,this.ss.O().localization,this.ss.Gi());return e.Wo(this.qt()),e}}function Si(t,i){return!i||"top"===t&&"top"!==i||"normal"===t&&"bottom"===i}function xi(t){return{n_:t.n_,r_:{je:t.h_.externalId},l_:t.h_.cursorStyle}}function Ci(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{o_:n,r_:e}}}return null}function Pi(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 r of t){const t=r.el?.(i,s)??[];for(const i of t)Si(i.zOrder,e?.zOrder)&&(e=i,n=r)}return e&&n?{h_:e,n_:n}:null}(e,i,s);if("top"===n?.h_.zOrder)return xi(n);for(const r of e){if(n&&n.n_===r&&"bottom"!==n.h_.zOrder&&!n.h_.isBackground)return xi(n);if(Pi(r)){const e=Ci(r.$s(t),i,s,t);if(null!==e)return{n_:r,o_:e.o_,r_:e.r_}}if(n&&n.n_===r&&"bottom"!==n.h_.zOrder&&n.h_.isBackground)return xi(n)}return n?.h_?xi(n):null}class ki{constructor(t,i,s=50){this.Ce=0,this.Pe=1,this.Te=1,this.De=new Map,this.ke=new Map,this.a_=t,this.__=i,this.Ie=s}u_(t){const i=t.time,s=this.__.cacheKey(i),e=this.De.get(s);if(void 0!==e)return e.c_;if(this.Ce===this.Ie){const t=this.ke.get(this.Te);this.ke.delete(this.Te),this.De.delete(_(t)),this.Te++,this.Ce--}const n=this.a_(t);return this.De.set(s,{c_:n,Le:this.Pe}),this.ke.set(this.Pe,s),this.Ce++,this.Pe++,n}}class Di{constructor(t,i){a(t<=i,"right should be >= left"),this.d_=t,this.p_=i}Uh(){return this.d_}yi(){return this.p_}f_(){return this.p_-this.d_+1}Dn(t){return this.d_<=t&&t<=this.p_}Nn(t){return this.d_===t.Uh()&&this.p_===t.yi()}}function Ii(t,i){return null===t||null===i?t===i:t.Nn(i)}class Vi{constructor(){this.v_=new Map,this.De=null,this.m_=!1}w_(t){this.m_=t,this.De=null}g_(t,i){this.b_(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})}}M_(t,i,s,e,n){const r=Math.ceil(i/t);return null!==this.De&&this.De.y_===r&&n===this.De.S_&&s===this.De.x_||(this.De={S_:n,x_:s,Vl:this.C_(r,s,e),y_:r}),this.De.Vl}b_(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(Pt(s,t,i=>i.index<t),1/0)});for(const t of i)this.v_.delete(t)}C_(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 r=s.length;let h=0;const l=_(this.v_.get(i)),o=l.length;let a=1/0,u=-1/0;for(let i=0;i<o;i++){const o=l[i],_=o.index;for(;h<r;){const t=s[h],i=t.index;if(!(i<_&&n(t))){a=i;break}h++,e.push(t),u=i,a=1/0}if(a-_>=t&&_-u>=t&&n(o))e.push(o),u=_;else if(this.m_)return s}for(;h<r;h++)n(s[h])&&e.push(s[h])}return e}}class Ri{constructor(t){this.P_=t}T_(){return null===this.P_?null:new Di(Math.floor(this.P_.Uh()),Math.ceil(this.P_.yi()))}k_(){return this.P_}static D_(){return new Ri(null)}}function Fi(t,i){return t.weight>i.weight?t:i}class Li{constructor(t,i,s,e){this.Ma=0,this.I_=null,this.V_=[],this.bo=null,this.wo=null,this.R_=new Vi,this.F_=new Map,this.L_=Ri.D_(),this.A_=!0,this.B_=new d,this.E_=new d,this.W_=new d,this.O_=null,this.z_=null,this.H_=new Map,this.N_=-1,this.U_=[],this.Ps=i,this.xo=s,this.q_=i.rightOffset,this.Y_=i.barSpacing,this.ss=t,this.j_(i),this.__=e,this.K_(),this.R_.w_(i.uniformDistribution),this.X_()}O(){return this.Ps}G_(t){p(this.xo,t),this.Z_(),this.K_()}lr(t,i){p(this.Ps,t),this.Ps.fixLeftEdge&&this.J_(),this.Ps.fixRightEdge&&this.Q_(),void 0!==t.barSpacing&&this.ss.ce(t.barSpacing),void 0!==t.rightOffset&&this.ss.de(t.rightOffset),this.j_(t),void 0===t.minBarSpacing&&void 0===t.maxBarSpacing||this.ss.ce(t.barSpacing??this.Y_),void 0!==t.ignoreWhitespaceIndices&&t.ignoreWhitespaceIndices!==this.Ps.ignoreWhitespaceIndices&&this.X_(),this.Z_(),this.K_(),this.W_.p()}Is(t){return this.V_[t]?.time??null}es(t){return this.V_[t]??null}tu(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=Pt(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}Xi(){return 0===this.Ma||0===this.V_.length||null===this.I_}iu(){return this.V_.length>0}Pn(){return this.su(),this.L_.T_()}eu(){return this.su(),this.L_.k_()}nu(){const t=this.Pn();if(null===t)return null;const i={from:t.Uh(),to:t.yi()};return this.ru(i)}ru(t){const i=Math.round(t.from),s=Math.round(t.to),e=u(this.hu()),n=u(this.lu());return{from:u(this.es(Math.max(e,i))),to:u(this.es(Math.min(n,s)))}}ou(t){return{from:u(this.tu(t.from,!0)),to:u(this.tu(t.to,!0))}}ts(){return this.Ma}Aa(t){if(!isFinite(t)||t<=0)return;if(this.Ma===t)return;const i=this.eu(),s=this.Ma;if(this.Ma=t,this.A_=!0,this.Ps.lockVisibleTimeRangeOnResize&&0!==s){const i=this.Y_*t/s;this.Y_=i}if(this.Ps.fixLeftEdge&&null!==i&&i.Uh()<=0){const i=s-t;this.q_-=Math.round(i/this.Y_)+1,this.A_=!0}this.au(),this._u()}Yt(t){if(this.Xi()||!v(t))return 0;const i=this.uu()+this.q_-t;return this.Ma-(i+.5)*this.Y_-1}cu(t,i){const s=this.uu(),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].gt,n=s+this.q_-e,r=this.Ma-(n+.5)*this.Y_-1;t[i].ut=r}}du(t,i){const s=Math.ceil(this.pu(t));return i&&this.Ps.ignoreWhitespaceIndices&&!this.fu(s)?this.vu(s):s}de(t){this.A_=!0,this.q_=t,this._u(),this.ss.mu(),this.ss.ar()}wu(){return this.Y_}ce(t){const i=this.Y_;if(this.gu(t),void 0!==this.Ps.rightOffsetPixels&&0!==i){const t=this.q_*i/this.Y_;this.q_=t}this._u(),this.ss.mu(),this.ss.ar()}bu(){return this.q_}Vl(){if(this.Xi())return null;if(null!==this.z_)return this.z_;const t=this.Y_,i=5*(this.ss.O().layout.fontSize+4)/8*(this.Ps.tickMarkMaxCharacterLength||8),s=Math.round(i/t),e=u(this.Pn()),n=Math.max(e.Uh(),e.Uh()-s),r=Math.max(e.yi(),e.yi()-s),h=this.R_.M_(t,i,this.Ps.ignoreWhitespaceIndices,this.H_,this.N_),l=this.hu()+s,o=this.lu()-s,a=this.Mu(),_=this.Ps.fixLeftEdge||a,c=this.Ps.fixRightEdge||a;let d=0;for(const t of h){if(!(n<=t.index&&t.index<=r))continue;let s;d<this.U_.length?(s=this.U_[d],s.coord=this.Yt(t.index),s.label=this.yu(t),s.weight=t.weight):(s={needAlignCoordinate:!1,coord:this.Yt(t.index),label:this.yu(t),weight:t.weight},this.U_.push(s)),this.Y_>i/2&&!a?s.needAlignCoordinate=!1:s.needAlignCoordinate=_&&t.index<=l||c&&t.index>=o,d++}return this.U_.length=d,this.z_=this.U_,this.U_}Su(){let t;this.A_=!0,this.ce(this.Ps.barSpacing),t=void 0!==this.Ps.rightOffsetPixels?this.Ps.rightOffsetPixels/this.wu():this.Ps.rightOffset,this.de(t)}xu(t){this.A_=!0,this.I_=t,this._u(),this.J_()}Cu(t,i){const s=this.pu(t),e=this.wu(),n=e+i*(e/10);this.ce(n),this.Ps.rightBarStaysOnScroll||this.de(this.bu()+(s-this.pu(t)))}ra(t){this.bo&&this._a(),null===this.wo&&null===this.O_&&(this.Xi()||(this.wo=t,this.Pu()))}ha(t){if(null===this.O_)return;const i=Jt(this.Ma-t,0,this.Ma),s=Jt(this.Ma-u(this.wo),0,this.Ma);0!==i&&0!==s&&this.ce(this.O_.wu*i/s)}la(){null!==this.wo&&(this.wo=null,this.Tu())}oa(t){null===this.bo&&null===this.O_&&(this.Xi()||(this.bo=t,this.Pu()))}aa(t){if(null===this.bo)return;const i=(this.bo-t)/this.wu();this.q_=u(this.O_).bu+i,this.A_=!0,this._u()}_a(){null!==this.bo&&(this.bo=null,this.Tu())}ku(){this.Du(this.Ps.rightOffset)}Du(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.ae({Iu:t=>(t-e)/i>=1,Vu:n=>{const r=(n-e)/i;return r>=1?t:s+(t-s)*r}})}Tt(t,i){this.A_=!0,this.V_=t,this.R_.g_(t,i),this._u()}Ru(){return this.B_}Fu(){return this.E_}Lu(){return this.W_}uu(){return this.I_||0}Au(t,i){const s=t.f_(),e=i&&this.Ps.rightOffsetPixels||0;this.gu((this.Ma-e)/s),this.q_=t.yi()-this.uu(),i&&(this.q_=e?e/this.wu():this.Ps.rightOffset),this._u(),this.A_=!0,this.ss.mu(),this.ss.ar()}Bu(){const t=this.hu(),i=this.lu();null!==t&&null!==i&&this.Au(new Di(t,i),!0)}Eu(t){const i=new Di(t.from,t.to);this.Au(i)}ns(t){return void 0!==this.xo.timeFormatter?this.xo.timeFormatter(t.originalTime):this.__.formatHorzItem(t.time)}X_(){if(!this.Ps.ignoreWhitespaceIndices)return;this.H_.clear();const t=this.ss.Ks();for(const i of t)for(const t of i.ml())this.H_.set(t,!0);this.N_++}Mu(){const t=this.ss.O().handleScroll,i=this.ss.O().handleScale;return!(t.horzTouchDrag||t.mouseWheel||t.pressedMouseMove||t.vertTouchDrag||i.axisDoubleClickReset.time||i.axisPressedMouseMove.time||i.mouseWheel||i.pinch)}hu(){return 0===this.V_.length?null:0}lu(){return 0===this.V_.length?null:this.V_.length-1}Wu(t){return(this.Ma-1-t)/this.Y_}pu(t){const i=this.Wu(t),s=this.uu()+this.q_-i;return Math.round(1e6*s)/1e6}gu(t){const i=this.Y_;this.Y_=t,this.au(),i!==this.Y_&&(this.A_=!0,this.Ou())}su(){if(!this.A_)return;if(this.A_=!1,this.Xi())return void this.zu(Ri.D_());const t=this.uu(),i=this.Ma/this.Y_,s=this.q_+t,e=new Di(s-i+1,s);this.zu(new Ri(e))}au(){const t=Jt(this.Y_,this.$u(),this.Hu());this.Y_!==t&&(this.Y_=t,this.A_=!0)}Hu(){return this.Ps.maxBarSpacing>0?this.Ps.maxBarSpacing:.5*this.Ma}$u(){return this.Ps.fixLeftEdge&&this.Ps.fixRightEdge&&0!==this.V_.length?this.Ma/this.V_.length:this.Ps.minBarSpacing}_u(){const t=this.Nu();null!==t&&this.q_<t&&(this.q_=t,this.A_=!0);const i=this.Uu();this.q_>i&&(this.q_=i,this.A_=!0)}Nu(){const t=this.hu(),i=this.I_;if(null===t||null===i)return null;return t-i-1+(this.Ps.fixLeftEdge?this.Ma/this.Y_:Math.min(2,this.V_.length))}Uu(){return this.Ps.fixRightEdge?0:this.Ma/this.Y_-Math.min(2,this.V_.length)}Pu(){this.O_={wu:this.wu(),bu:this.bu()}}Tu(){this.O_=null}yu(t){let i=this.F_.get(t.weight);return void 0===i&&(i=new ki(t=>this.qu(t),this.__),this.F_.set(t.weight,i)),i.u_(t)}qu(t){return this.__.formatTickmark(t,this.xo)}zu(t){const i=this.L_;this.L_=t,Ii(i.T_(),this.L_.T_())||this.B_.p(),Ii(i.k_(),this.L_.k_())||this.E_.p(),this.Ou()}Ou(){this.z_=null}Z_(){this.Ou(),this.F_.clear()}K_(){this.__.updateFormatter(this.xo)}J_(){if(!this.Ps.fixLeftEdge)return;const t=this.hu();if(null===t)return;const i=this.Pn();if(null===i)return;const s=i.Uh()-t;if(s<0){const t=this.q_-s-1;this.de(t)}this.au()}Q_(){this._u(),this.au()}fu(t){return!this.Ps.ignoreWhitespaceIndices||(this.H_.get(t)||!1)}vu(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.lu();for(;s;){const t=i.next().value;if(this.H_.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 Ai,Bi,Ei,Wi,Oi;!function(t){t[t.OnTouchEnd=0]="OnTouchEnd",t[t.OnNextTap=1]="OnNextTap"}(Ai||(Ai={}));class zi{constructor(t,i,s){this.Yu=[],this.ju=[],this.Ma=0,this.Ku=null,this.Xu=new d,this.Gu=new d,this.Zu=null,this.Ju=t,this.Ps=i,this.__=s,this.Co=new T(this.Ps.layout.colorParsers),this.Qu=new x(this),this.dh=new Li(this,i.timeScale,this.Ps.localization,s),this.Ct=new X(this,i.crosshair),this.tc=new Zt(i.crosshair),i.addDefaultPane&&(this.sc(0),this.Yu[0].La(2)),this.ec=this.nc(0),this.rc=this.nc(1)}Lh(){this.hc(Z.we())}ar(){this.hc(Z.me())}Zh(){this.hc(new Z(1))}Ah(t){const i=this.lc(t);this.hc(i)}oc(){return this.Ku}ac(t){if(this.Ku?.n_===t?.n_&&this.Ku?.r_?.je===t?.r_?.je)return;const i=this.Ku;this.Ku=t,null!==i&&this.Ah(i.n_),null!==t&&t.n_!==i?.n_&&this.Ah(t.n_)}O(){return this.Ps}lr(t){p(this.Ps,t),this.Yu.forEach(i=>i.Ia(t)),void 0!==t.timeScale&&this.dh.lr(t.timeScale),void 0!==t.localization&&this.dh.G_(t.localization),(t.leftPriceScale||t.rightPriceScale)&&this.Xu.p(),this.ec=this.nc(0),this.rc=this.nc(1),this.Lh()}_c(t,i,s=0){const e=this.Yu[s];if(void 0===e)return;if("left"===t)return p(this.Ps,{leftPriceScale:i}),e.Ia({leftPriceScale:i}),this.Xu.p(),void this.Lh();if("right"===t)return p(this.Ps,{rightPriceScale:i}),e.Ia({rightPriceScale:i}),this.Xu.p(),void this.Lh();const n=this.uc(t,s);null!==n&&(n.$t.lr(i),this.Xu.p())}uc(t,i){const s=this.Yu[i];if(void 0===s)return null;const e=s.Va(t);return null!==e?{Us:s,$t:e}:null}At(){return this.dh}qs(){return this.Yu}cc(){return this.Ct}dc(){return this.Gu}fc(t,i){t.Wo(i),this.mu()}Aa(t){this.Ma=t,this.dh.Aa(this.Ma),this.Yu.forEach(i=>i.Aa(t)),this.mu()}vc(t){1!==this.Yu.length&&(a(t>=0&&t<this.Yu.length,"Invalid pane index"),this.Yu.splice(t,1),this.Lh())}mc(t,i){if(this.Yu.length<2)return;a(t>=0&&t<this.Yu.length,"Invalid pane index");const s=this.Yu[t],e=this.Yu.reduce((t,i)=>t+i.Fa(),0),n=this.Yu.reduce((t,i)=>t+i.qt(),0),r=n-30*(this.Yu.length-1);i=Math.min(r,Math.max(30,i));const h=e/n,l=s.qt();s.La(i*h);let o=i-l,_=this.Yu.length-1;for(const t of this.Yu)if(t!==s){const i=Math.min(r,Math.max(30,t.qt()-o/_));o-=t.qt()-i,_-=1;const s=i*h;t.La(s)}this.Lh()}wc(t,i){a(t>=0&&t<this.Yu.length&&i>=0&&i<this.Yu.length,"Invalid pane index");const s=this.Yu[t],e=this.Yu[i];this.Yu[t]=e,this.Yu[i]=s,this.Lh()}gc(t,i){if(a(t>=0&&t<this.Yu.length&&i>=0&&i<this.Yu.length,"Invalid pane index"),t===i)return;const[s]=this.Yu.splice(t,1);this.Yu.splice(i,0,s),this.Lh()}Ua(t,i,s){t.Ua(i,s)}qa(t,i,s){t.qa(i,s),this.Bh(),this.hc(this.bc(t,2))}Ya(t,i){t.Ya(i),this.hc(this.bc(t,2))}ja(t,i,s){i.Vo()||t.ja(i,s)}Ka(t,i,s){i.Vo()||(t.Ka(i,s),this.Bh(),this.hc(this.bc(t,2)))}Xa(t,i){i.Vo()||(t.Xa(i),this.hc(this.bc(t,2)))}Za(t,i){t.Za(i),this.hc(this.bc(t,2))}Mc(t){this.dh.ra(t)}yc(t,i){const s=this.At();if(s.Xi()||0===i)return;const e=s.ts();t=Math.max(1,Math.min(t,e)),s.Cu(t,i),this.mu()}Sc(t){this.xc(0),this.Cc(t),this.Pc()}Tc(t){this.dh.ha(t),this.mu()}kc(){this.dh.la(),this.ar()}xc(t){this.dh.oa(t)}Cc(t){this.dh.aa(t),this.mu()}Pc(){this.dh._a(),this.ar()}Ks(){return this.ju}Dc(t,i,s,e,n){this.Ct.Rs(t,i);let r=NaN,h=this.dh.du(t,!0);const l=this.dh.Pn();null!==l&&(h=Math.min(Math.max(l.Uh(),h),l.yi()));const o=e.ks(),a=o.Et();if(null!==a&&(r=o.Ds(i,a)),r=this.tc.bl(r,h,e),this.Ct.Bs(h,r,e),this.Zh(),!n){const n=Ti(e,t,i);this.ac(n&&{n_:n.n_,r_:n.r_,l_:n.l_||null}),this.Gu.p(this.Ct.Lt(),{x:t,y:i},s)}}Ic(t,i,s){const e=s.ks(),n=e.Et(),r=e.zt(t,u(n)),h=this.dh.tu(i,!0),l=this.dh.Yt(u(h));this.Dc(l,r,null,s,!0)}Vc(t){this.cc().Ws(),this.Zh(),t||this.Gu.p(null,null,null)}Bh(){const t=this.Ct.Us();if(null!==t){const i=this.Ct.Ls(),s=this.Ct.As();this.Dc(i,s,null,t)}this.Ct.zs()}Rc(t,i,s){const e=this.dh.Is(0);void 0!==i&&void 0!==s&&this.dh.Tt(i,s);const n=this.dh.Is(0),r=this.dh.uu(),h=this.dh.Pn();if(null!==h&&null!==e&&null!==n){const i=h.Dn(r),l=this.__.key(e)>this.__.key(n),o=null!==t&&t>r&&!l,a=this.dh.O().allowShiftVisibleRangeOnWhitespaceReplacement,_=i&&(!(void 0===s)||a)&&this.dh.O().shiftVisibleRangeOnNewBar;if(o&&!_){const i=t-r;this.dh.de(this.dh.bu()-i)}}this.dh.xu(t)}Wh(t){null!==t&&t.Qa()}$e(t){if(function(t){return t instanceof yi}(t))return t;const i=this.Yu.find(i=>i.Vt().includes(t));return void 0===i?null:i}mu(){this.Yu.forEach(t=>t.Qa()),this.Bh()}m(){this.Yu.forEach(t=>t.m()),this.Yu.length=0,this.Ps.localization.priceFormatter=void 0,this.Ps.localization.percentageFormatter=void 0,this.Ps.localization.timeFormatter=void 0}Fc(){return this.Qu}qe(){return this.Qu.O()}Ra(){return this.Xu}Lc(t,i){const s=this.sc(i);this.Ac(t,s),this.ju.push(t),1===this.ju.length?this.Lh():this.ar()}Bc(t){const i=this.$e(t),s=this.ju.indexOf(t);a(-1!==s,"Series not found");const e=u(i);this.ju.splice(s,1),e.sa(t),t.m&&t.m(),this.dh.X_();const n=this.Yu.length;this.Ec(e),this.Yu.length<n&&this.Lh()}Fh(t,i){const s=u(this.$e(t));s.sa(t,!0),s.ta(t,i,!0)}Bu(){const t=Z.me();t.re(),this.hc(t)}Wc(t){const i=Z.me();i.oe(t),this.hc(i)}ue(){const t=Z.me();t.ue(),this.hc(t)}ce(t){const i=Z.me();i.ce(t),this.hc(i)}de(t){const i=Z.me();i.de(t),this.hc(i)}ae(t){const i=Z.me();i.ae(t),this.hc(i)}he(){const t=Z.me();t.he(),this.hc(t)}Oc(){return this.Ps.rightPriceScale.visible?"right":"left"}zc(t,i){a(i>=0,"Index should be greater or equal to 0");if(i===this.$c(t))return;const s=u(this.$e(t));s.sa(t);const e=this.sc(i);this.Ac(t,e),0===s.Ml().length&&this.Ec(s),this.Lh()}Hc(){return this.rc}q(){return this.ec}Ut(t){const i=this.rc,s=this.ec;if(i===s)return i;if(t=Math.max(0,Math.min(100,Math.round(100*t))),null===this.Zu||this.Zu.wr!==s||this.Zu.gr!==i)this.Zu={wr:s,gr:i,Nc:new Map};else{const i=this.Zu.Nc.get(t);if(void 0!==i)return i}const e=this.Co.it(s,i,t/100);return this.Zu.Nc.set(t,e),e}Uc(t){return this.Yu.indexOf(t)}Gi(){return this.Co}qc(){return this.Yc()}Yc(t){const i=new yi(this.dh,this);this.Yu.push(i);const s=t??this.Yu.length-1,e=Z.we();return e.te(s,{ie:0,se:!0}),this.hc(e),i}sc(t){return a(t>=0,"Index should be greater or equal to 0"),(t=Math.min(this.Yu.length,t))<this.Yu.length?this.Yu[t]:this.Yc(t)}$c(t){return this.Yu.findIndex(i=>i.Oa().includes(t))}bc(t,i){const s=new Z(i);if(null!==t){const e=this.Yu.indexOf(t);s.te(e,{ie:i})}return s}lc(t,i){return void 0===i&&(i=2),this.bc(this.$e(t),i)}hc(t){this.Ju&&this.Ju(t),this.Yu.forEach(t=>t.s_()._r().Tt())}Ac(t,i){const s=t.O().priceScaleId,e=void 0!==s?s:this.Oc();i.ta(t,e),G(e)||t.lr(t.O())}nc(t){const i=this.Ps.layout;return"gradient"===i.background.type?0===t?i.background.topColor:i.background.bottomColor:i.background.color}Ec(t){!t.Wa()&&0===t.Ml().length&&this.Yu.length>1&&this.Yu.splice(this.Uc(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 Hi(t){return!f(t)&&!m(t)}function Ni(t){return f(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"}(Ei||(Ei={})),function(t){t.Solid="solid",t.VerticalGradient="gradient"}(Wi||(Wi={})),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.jc=t,this.Kc=i}u_(t){return qi(t,this.jc,this.Kc)}}class ji{constructor(t){this.Xc=t||"%h:%m:%s"}u_(t){return this.Xc.replace("%h",tt(t.getUTCHours(),2)).replace("%m",tt(t.getUTCMinutes(),2)).replace("%s",tt(t.getUTCSeconds(),2))}}const Ki={Gc:"yyyy-MM-dd",Zc:"%h:%m:%s",Jc:" ",Qc:"default"};class Xi{constructor(t={}){const i={...Ki,...t};this.td=new Yi(i.Gc,i.Qc),this.sd=new ji(i.Zc),this.ed=i.Jc}u_(t){return`${this.td.u_(t)}${this.ed}${this.sd.u_(t)}`}}function Gi(t){return 60*t*60*1e3}function Zi(t){return 60*t*1e3}const Ji=[{nd:(Qi=1,1e3*Qi),rd:10},{nd:Zi(1),rd:20},{nd:Zi(5),rd:21},{nd:Zi(30),rd:22},{nd:Gi(1),rd:30},{nd:Gi(3),rd:31},{nd:Gi(6),rd:32},{nd:Gi(12),rd: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].rd;return 0}function is(t){return t}function ss(t){let i=t;if(m(t)&&(i=ns(t)),!Hi(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{hd:Math.round(s.getTime()/1e3),ld:i}}function es(t){if(!Ni(t))throw new Error("time must be of type isUTCTimestamp");return{hd: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 rs(t){m(t.time)&&(t.time=ns(t.time))}class hs{options(){return this.Ps}setOptions(t){this.Ps=t,this.updateFormatter(t.localization)}preprocessData(t){Array.isArray(t)?function(t){t.forEach(rs)}(t):rs(t)}createConverterToInternalObj(t){return u(function(t){return 0===t.length?null:Hi(t[0].time)||m(t[0].time)?ss:es}(t))}key(t){return"object"==typeof t&&"hd"in t?t.hd:this.key(this.convertHorzItemToInternal(t))}cacheKey(t){const i=t;return void 0===i.ld?new Date(1e3*i.hd).getTime():new Date(Date.UTC(i.ld.year,i.ld.month-1,i.ld.day)).getTime()}convertHorzItemToInternal(t){return Ni(i=t)?es(i):Hi(i)?ss(i):ss(ns(i));var i}updateFormatter(t){if(!this.Ps)return;const i=t.dateFormat;this.Ps.timeScale.timeVisible?this.od=new Xi({Gc:i,Zc:this.Ps.timeScale.secondsVisible?"%h:%m:%s":"%h:%m",Jc:" ",Qc:t.locale}):this.od=new Yi(i,t.locale)}formatHorzItem(t){const i=t;return this.od.u_(new Date(1e3*i.hd))}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.Ps.timeScale.timeVisible,this.Ps.timeScale.secondsVisible),e=this.Ps.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.ld?new Date(1e3*t.hd):new Date(Date.UTC(t.ld.year,t.ld.month-1,t.ld.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(Fi,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.hd,e=null!==s?new Date(1e3*s):null,n=0;for(let r=i;r<t.length;++r){const i=t[r],h=new Date(1e3*is(i.time).hd);null!==e&&(i.timeWeight=ts(h,e)),n+=is(i.time).hd-(s||is(i.time).hd),s=is(i.time).hd,e=h}if(0===i&&t.length>1){const i=Math.ceil(n/(t.length-1)),s=new Date(1e3*(t[0].time.hd-i));t[0].timeWeight=ts(new Date(1e3*t[0].time.hd),s)}}(t,i)}static ad(t){return p({localization:{dateFormat:"dd MMM 'yy"}},t??{})}}const ls="undefined"!=typeof window;function os(){return!!ls&&window.navigator.userAgent.toLowerCase().indexOf("firefox")>-1}function as(){return!!ls&&/iPhone|iPad|iPod/.test(window.navigator.platform)}function _s(t){return t+t%2}function us(t){ls&&void 0!==window.chrome&&t.addEventListener("mousedown",t=>{if(1===t.button)return t.preventDefault(),!1})}class cs{constructor(t,i,s){this._d=0,this.ud=null,this.dd={ut:Number.NEGATIVE_INFINITY,ct:Number.POSITIVE_INFINITY},this.pd=0,this.fd=null,this.vd={ut:Number.NEGATIVE_INFINITY,ct:Number.POSITIVE_INFINITY},this.md=null,this.wd=!1,this.gd=null,this.bd=null,this.Md=!1,this.yd=!1,this.Sd=!1,this.xd=null,this.Cd=null,this.Pd=null,this.Td=null,this.kd=null,this.Dd=null,this.Id=null,this.Vd=0,this.Rd=!1,this.Fd=!1,this.Ld=!1,this.Ad=0,this.Bd=null,this.Ed=!as(),this.Wd=t=>{this.Od(t)},this.zd=t=>{if(this.$d(t)){const i=this.Hd(t);if(++this.pd,this.fd&&this.pd>1){const{Nd:s}=this.Ud(fs(t),this.vd);s<30&&!this.Sd&&this.qd(i,this.jd.Yd),this.Kd()}}else{const i=this.Hd(t);if(++this._d,this.ud&&this._d>1){const{Nd:s}=this.Ud(fs(t),this.dd);s<5&&!this.yd&&this.Xd(i,this.jd.Gd),this.Zd()}}},this.Jd=t,this.jd=i,this.Ps=s,this.Qd()}m(){null!==this.xd&&(this.xd(),this.xd=null),null!==this.Cd&&(this.Cd(),this.Cd=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.Pd&&(this.Pd(),this.Pd=null),this.tp(),this.Zd()}ip(t){this.Td&&this.Td();const i=this.sp.bind(this);if(this.Td=()=>{this.Jd.removeEventListener("mousemove",i)},this.Jd.addEventListener("mousemove",i),this.$d(t))return;const s=this.Hd(t);this.Xd(s,this.jd.ep),this.Ed=!0}Zd(){null!==this.ud&&clearTimeout(this.ud),this._d=0,this.ud=null,this.dd={ut:Number.NEGATIVE_INFINITY,ct:Number.POSITIVE_INFINITY}}Kd(){null!==this.fd&&clearTimeout(this.fd),this.pd=0,this.fd=null,this.vd={ut:Number.NEGATIVE_INFINITY,ct:Number.POSITIVE_INFINITY}}sp(t){if(this.Ld||null!==this.bd)return;if(this.$d(t))return;const i=this.Hd(t);this.Xd(i,this.jd.np),this.Ed=!0}rp(t){const i=ms(t.changedTouches,u(this.Bd));if(null===i)return;if(this.Ad=vs(t),null!==this.Id)return;if(this.Fd)return;this.Rd=!0;const s=this.Ud(fs(i),u(this.bd)),{hp:e,lp:n,Nd:r}=s;if(this.Md||!(r<5)){if(!this.Md){const t=.5*e,i=n>=t&&!this.Ps.op(),s=t>n&&!this.Ps.ap();i||s||(this.Fd=!0),this.Md=!0,this.Sd=!0,this.tp(),this.Kd()}if(!this.Fd){const s=this.Hd(t,i);this.qd(s,this.jd._p),ps(t)}}}up(t){if(0!==t.button)return;const i=this.Ud(fs(t),u(this.gd)),{Nd:s}=i;if(s>=5&&(this.yd=!0,this.Zd()),this.yd){const i=this.Hd(t);this.Xd(i,this.jd.cp)}}Ud(t,i){const s=Math.abs(i.ut-t.ut),e=Math.abs(i.ct-t.ct);return{hp:s,lp:e,Nd:s+e}}dp(t){let i=ms(t.changedTouches,u(this.Bd));if(null===i&&0===t.touches.length&&(i=t.changedTouches[0]),null===i)return;this.Bd=null,this.Ad=vs(t),this.tp(),this.bd=null,this.Dd&&(this.Dd(),this.Dd=null);const s=this.Hd(t,i);if(this.qd(s,this.jd.pp),++this.pd,this.fd&&this.pd>1){const{Nd:t}=this.Ud(fs(i),this.vd);t<30&&!this.Sd&&this.qd(s,this.jd.Yd),this.Kd()}else this.Sd||(this.qd(s,this.jd.fp),this.jd.fp&&ps(t));0===this.pd&&ps(t),0===t.touches.length&&this.wd&&(this.wd=!1,ps(t))}Od(t){if(0!==t.button)return;const i=this.Hd(t);if(this.gd=null,this.Ld=!1,this.kd&&(this.kd(),this.kd=null),os()){this.Jd.ownerDocument.documentElement.removeEventListener("mouseleave",this.Wd)}if(!this.$d(t))if(this.Xd(i,this.jd.vp),++this._d,this.ud&&this._d>1){const{Nd:s}=this.Ud(fs(t),this.dd);s<5&&!this.yd&&this.Xd(i,this.jd.Gd),this.Zd()}else this.yd||this.Xd(i,this.jd.mp)}tp(){null!==this.md&&(clearTimeout(this.md),this.md=null)}wp(t){if(null!==this.Bd)return;const i=t.changedTouches[0];this.Bd=i.identifier,this.Ad=vs(t);const s=this.Jd.ownerDocument.documentElement;this.Sd=!1,this.Md=!1,this.Fd=!1,this.bd=fs(i),this.Dd&&(this.Dd(),this.Dd=null);{const i=this.rp.bind(this),e=this.dp.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.tp(),this.md=setTimeout(this.gp.bind(this,t),240)}const e=this.Hd(t,i);this.qd(e,this.jd.bp),this.fd||(this.pd=0,this.fd=setTimeout(this.Kd.bind(this),500),this.vd=fs(i))}Mp(t){if(0!==t.button)return;const i=this.Jd.ownerDocument.documentElement;os()&&i.addEventListener("mouseleave",this.Wd),this.yd=!1,this.gd=fs(t),this.kd&&(this.kd(),this.kd=null);{const t=this.up.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.Ld=!0,this.$d(t))return;const s=this.Hd(t);this.Xd(s,this.jd.yp),this.ud||(this._d=0,this.ud=setTimeout(this.Zd.bind(this),500),this.dd=fs(t))}Qd(){this.Jd.addEventListener("mouseenter",this.ip.bind(this)),this.Jd.addEventListener("touchcancel",this.tp.bind(this));{const t=this.Jd.ownerDocument,i=t=>{this.jd.Sp&&(t.composed&&this.Jd.contains(t.composedPath()[0])||t.target&&this.Jd.contains(t.target)||this.jd.Sp())};this.Cd=()=>{t.removeEventListener("touchstart",i)},this.xd=()=>{t.removeEventListener("mousedown",i)},t.addEventListener("mousedown",i),t.addEventListener("touchstart",i,{passive:!0})}as()&&(this.Pd=()=>{this.Jd.removeEventListener("dblclick",this.zd)},this.Jd.addEventListener("dblclick",this.zd)),this.Jd.addEventListener("mouseleave",this.xp.bind(this)),this.Jd.addEventListener("touchstart",this.wp.bind(this),{passive:!0}),us(this.Jd),this.Jd.addEventListener("mousedown",this.Mp.bind(this)),this.Cp(),this.Jd.addEventListener("touchmove",()=>{},{passive:!1})}Cp(){void 0===this.jd.Pp&&void 0===this.jd.Tp&&void 0===this.jd.kp||(this.Jd.addEventListener("touchstart",t=>this.Dp(t.touches),{passive:!0}),this.Jd.addEventListener("touchmove",t=>{if(2===t.touches.length&&null!==this.Id&&void 0!==this.jd.Tp){const i=ds(t.touches[0],t.touches[1])/this.Vd;this.jd.Tp(this.Id,i),ps(t)}},{passive:!1}),this.Jd.addEventListener("touchend",t=>{this.Dp(t.touches)}))}Dp(t){1===t.length&&(this.Rd=!1),2!==t.length||this.Rd||this.wd?this.Ip():this.Vp(t)}Vp(t){const i=this.Jd.getBoundingClientRect()||{left:0,top:0};this.Id={ut:(t[0].clientX-i.left+(t[1].clientX-i.left))/2,ct:(t[0].clientY-i.top+(t[1].clientY-i.top))/2},this.Vd=ds(t[0],t[1]),void 0!==this.jd.Pp&&this.jd.Pp(),this.tp()}Ip(){null!==this.Id&&(this.Id=null,void 0!==this.jd.kp&&this.jd.kp())}xp(t){if(this.Td&&this.Td(),this.$d(t))return;if(!this.Ed)return;const i=this.Hd(t);this.Xd(i,this.jd.Rp),this.Ed=!as()}gp(t){const i=ms(t.touches,u(this.Bd));if(null===i)return;const s=this.Hd(t,i);this.qd(s,this.jd.Fp),this.Sd=!0,this.wd=!0}$d(t){return t.sourceCapabilities&&void 0!==t.sourceCapabilities.firesTouchEvents?t.sourceCapabilities.firesTouchEvents:vs(t)<this.Ad+500}qd(t,i){i&&i.call(this.jd,t)}Xd(t,i){i&&i.call(this.jd,t)}Hd(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,Lp:!t.type.startsWith("mouse")&&"contextmenu"!==t.type&&"click"!==t.type,Ap:t.type,Bp:s.target,o_:t.view,Ep:()=>{"touchstart"!==t.type&&ps(t)}}}}function ds(t,i){const s=t.clientX-i.clientX,e=t.clientY-i.clientY;return Math.sqrt(s*s+e*e)}function ps(t){t.cancelable&&t.preventDefault()}function fs(t){return{ut:t.pageX,ct: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 ws{constructor(t,i,s){this.Wp=null,this.Op=null,this.zp=!0,this.$p=null,this.Hp=t,this.Np=t.Up()[i],this.qp=t.Up()[s],this.Yp=document.createElement("tr"),this.Yp.style.height="1px",this.jp=document.createElement("td"),this.jp.style.position="relative",this.jp.style.padding="0",this.jp.style.margin="0",this.jp.setAttribute("colspan","3"),this.Kp(),this.Yp.appendChild(this.jp),this.zp=this.Hp.O().layout.panes.enableResize,this.zp?this.Xp():(this.Wp=null,this.Op=null)}m(){null!==this.Op&&this.Op.m()}Gp(){return this.Yp}Zp(){return t({width:this.Np.Zp().width,height:1})}Jp(){return t({width:this.Np.Jp().width,height:1*window.devicePixelRatio})}Qp(t,i,s){const e=this.Jp();t.fillStyle=this.Hp.O().layout.panes.separatorColor,t.fillRect(i,s,e.width,e.height)}Tt(){this.Kp(),this.Hp.O().layout.panes.enableResize!==this.zp&&(this.zp=this.Hp.O().layout.panes.enableResize,this.zp?this.Xp():(null!==this.Wp&&(this.jp.removeChild(this.Wp.tf),this.jp.removeChild(this.Wp.if),this.Wp=null),null!==this.Op&&(this.Op.m(),this.Op=null)))}Xp(){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.jp.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.jp.appendChild(s);const n={ep:this.sf.bind(this),Rp:this.ef.bind(this),yp:this.nf.bind(this),bp:this.nf.bind(this),cp:this.rf.bind(this),_p:this.rf.bind(this),vp:this.hf.bind(this),pp:this.hf.bind(this)};this.Op=new cs(s,n,{op:()=>!1,ap:()=>!0}),this.Wp={if:s,tf:t}}Kp(){this.jp.style.background=this.Hp.O().layout.panes.separatorColor}sf(t){null!==this.Wp&&(this.Wp.if.style.backgroundColor=this.Hp.O().layout.panes.separatorHoverColor)}ef(t){null!==this.Wp&&null===this.$p&&(this.Wp.if.style.backgroundColor="")}nf(t){if(null===this.Wp)return;const i=this.Np.lf().Fa()+this.qp.lf().Fa(),s=i/(this.Np.Zp().height+this.qp.Zp().height),e=30*s;i<=2*e||(this.$p={af:t.pageY,_f:this.Np.lf().Fa(),uf:i-e,cf:i,df:s,pf:e},this.Wp.tf.style.display="block")}rf(t){const i=this.$p;if(null===i)return;const s=(t.pageY-i.af)*i.df,e=Jt(i._f+s,i.pf,i.uf);this.Np.lf().La(e),this.qp.lf().La(i.cf-e),this.Hp.ti().Lh()}hf(t){null!==this.$p&&null!==this.Wp&&(this.$p=null,this.Wp.tf.style.display="none")}}function gs(t,i){return t.ff-i.ff}function bs(t,i,s){const e=(t.ff-i.ff)/(t.gt-i.gt);return Math.sign(e)*Math.min(Math.abs(e),s)}class Ms{constructor(t,i,s,e){this.vf=null,this.mf=null,this.wf=null,this.gf=null,this.bf=null,this.Mf=0,this.yf=0,this.Sf=t,this.xf=i,this.Cf=s,this.ge=e}Pf(t,i){if(null!==this.vf){if(this.vf.gt===i)return void(this.vf.ff=t);if(Math.abs(this.vf.ff-t)<this.ge)return}this.gf=this.wf,this.wf=this.mf,this.mf=this.vf,this.vf={gt:i,ff:t}}an(t,i){if(null===this.vf||null===this.mf)return;if(i-this.vf.gt>50)return;let s=0;const e=bs(this.vf,this.mf,this.xf),n=gs(this.vf,this.mf),r=[e],h=[n];if(s+=n,null!==this.wf){const t=bs(this.mf,this.wf,this.xf);if(Math.sign(t)===Math.sign(e)){const i=gs(this.mf,this.wf);if(r.push(t),h.push(i),s+=i,null!==this.gf){const t=bs(this.wf,this.gf,this.xf);if(Math.sign(t)===Math.sign(e)){const i=gs(this.wf,this.gf);r.push(t),h.push(i),s+=i}}}}let l=0;for(let t=0;t<r.length;++t)l+=h[t]/s*r[t];Math.abs(l)<this.Sf||(this.bf={ff:t,gt:i},this.yf=l,this.Mf=function(t,i){const s=Math.log(i);return Math.log(1*s/-t)/s}(Math.abs(l),this.Cf))}Vu(t){const i=u(this.bf),s=t-i.gt;return i.ff+this.yf*(Math.pow(this.Cf,s)-1)/Math.log(this.Cf)}Iu(t){return null===this.bf||this.Tf(t)===this.Mf}Tf(t){const i=t-u(this.bf).gt;return Math.min(i,this.Mf)}}class ys{constructor(t,i){this.kf=void 0,this.Df=void 0,this.If=void 0,this.vs=!1,this.Vf=t,this.Rf=i,this.Ff()}Tt(){this.Ff()}Lf(){this.kf&&this.Vf.removeChild(this.kf),this.Df&&this.Vf.removeChild(this.Df),this.kf=void 0,this.Df=void 0}Af(){return this.vs!==this.Bf()||this.If!==this.Ef()}Ef(){return this.Rf.ti().Gi().tt(this.Rf.O().layout.textColor)>160?"dark":"light"}Bf(){return this.Rf.O().layout.attributionLogo}Wf(){const t=new URL(location.href);return t.hostname?"&utm_source="+t.hostname+t.pathname:""}Ff(){this.Af()&&(this.Lf(),this.vs=this.Bf(),this.vs&&(this.If=this.Ef(),this.Df=document.createElement("style"),this.Df.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.kf=document.createElement("a"),this.kf.href=`https://pipsend.com${this.Wf()}`,this.kf.title="Powered by Pipsend Charts",this.kf.id="pipsend-attr-logo",this.kf.target="_blank",this.kf.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.kf.toggleAttribute("data-dark","dark"===this.If),this.Vf.appendChild(this.Df),this.Vf.appendChild(this.kf)))}}function Ss(t,s){const e=u(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 xs(t){t.width=1,t.height=1,t.getContext("2d")?.clearRect(0,0,1,1)}function Cs(t,i,s,e){t.sh&&t.sh(i,s,e)}function Ps(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()?.wl()??"")!==i?[]:s.il?.(t)??[]}}function Ds(t,i,s,e){if(!t.length)return;let n=0;const r=t[0].qt(e,!0);let h=1===i?s/2-(t[0].$i()-r/2):t[0].$i()-r/2-s/2;h=Math.max(0,h);for(let r=1;r<t.length;r++){const l=t[r],o=t[r-1],a=o.qt(e,!1),_=l.$i(),u=o.$i();if(1===i?_>u-a:_<u+a){const e=u-a*i;l.Hi(e);const r=e-i*a/2;if((1===i?r<0:r>s)&&h>0){const e=1===i?-1-r:r-s,l=Math.min(e,h);for(let s=n;s<t.length;s++)t[s].Hi(t[s].$i()+i*l);h-=l}}else n=r,h=1===i?u-a-_:_-(u+a)}}class Is{constructor(i,s,e,n){this.ji=null,this.Of=null,this.zf=!1,this.$f=new rt(200),this.Hf=null,this.Nf=0,this.Uf=!1,this.qf=()=>{this.Uf||this.Pt.Yf().ti().ar()},this.jf=()=>{this.Uf||this.Pt.Yf().ti().ar()},this.Pt=i,this.Ps=s,this.So=s.layout,this.Qu=e,this.Kf="left"===n,this.Xf=ks("normal",n),this.Gf=ks("top",n),this.Zf=ks("bottom",n),this.jp=document.createElement("div"),this.jp.style.height="100%",this.jp.style.overflow="hidden",this.jp.style.width="25px",this.jp.style.left="0",this.jp.style.position="relative",this.Jf=Ss(this.jp,t({width:16,height:16})),this.Jf.subscribeSuggestedBitmapSizeChanged(this.qf);const r=this.Jf.canvasElement;r.style.position="absolute",r.style.zIndex="1",r.style.left="0",r.style.top="0",this.Qf=Ss(this.jp,t({width:16,height:16})),this.Qf.subscribeSuggestedBitmapSizeChanged(this.jf);const h=this.Qf.canvasElement;h.style.position="absolute",h.style.zIndex="2",h.style.left="0",h.style.top="0";const l={yp:this.nf.bind(this),bp:this.nf.bind(this),cp:this.rf.bind(this),_p:this.rf.bind(this),Sp:this.tv.bind(this),vp:this.hf.bind(this),pp:this.hf.bind(this),Gd:this.iv.bind(this),Yd:this.iv.bind(this),ep:this.sv.bind(this),Rp:this.ef.bind(this)};this.Op=new cs(this.Qf.canvasElement,l,{op:()=>!this.Ps.handleScroll.vertTouchDrag,ap:()=>!0})}m(){this.Op.m(),this.Qf.unsubscribeSuggestedBitmapSizeChanged(this.jf),xs(this.Qf.canvasElement),this.Qf.dispose(),this.Jf.unsubscribeSuggestedBitmapSizeChanged(this.qf),xs(this.Jf.canvasElement),this.Jf.dispose(),null!==this.ji&&this.ji.na().u(this),this.ji=null}Gp(){return this.jp}P(){return this.So.fontSize}ev(){const t=this.Qu.O();return this.Hf!==t.T&&(this.$f.Ve(),this.Hf=t.T),t}nv(){if(null===this.ji)return 0;let t=0;const i=this.ev(),s=u(this.Jf.canvasElement.getContext("2d",{colorSpace:this.Pt.Yf().O().layout.colorSpace}));s.save();const e=this.ji.Vl();s.font=this.rv(),e.length>0&&(t=Math.max(this.$f.Ri(s,e[0].Zl),this.$f.Ri(s,e[e.length-1].Zl)));const n=this.hv();for(let i=n.length;i--;){const e=this.$f.Ri(s,n[i].hi());e>t&&(t=e)}const r=this.ji.Et();if(null!==r&&null!==this.Of&&(2!==(h=this.Ps.crosshair).mode&&h.horzLine.visible&&h.horzLine.labelVisible)){const i=this.ji.Ds(1,r),e=this.ji.Ds(this.Of.height-2,r);t=Math.max(t,this.$f.Ri(s,this.ji.Zi(Math.floor(Math.min(i,e))+.11111111111111,r)),this.$f.Ri(s,this.ji.Zi(Math.ceil(Math.max(i,e))-.11111111111111,r)))}var h;s.restore();const l=t||34;return _s(Math.ceil(i.S+i.C+i.F+i.L+5+l))}lv(t){null!==this.Of&&s(this.Of,t)||(this.Of=t,this.Uf=!0,this.Jf.resizeCanvasElement(t),this.Qf.resizeCanvasElement(t),this.Uf=!1,this.jp.style.width=`${t.width}px`,this.jp.style.height=`${t.height}px`)}ov(){return u(this.Of).width}us(t){this.ji!==t&&(null!==this.ji&&this.ji.na().u(this),this.ji=t,t.na().i(this.co.bind(this),this))}$t(){return this.ji}Ve(){const t=this.Pt.lf();this.Pt.Yf().ti().Za(t,u(this.$t()))}av(t){if(null===this.Of)return;const i={colorSpace:this.Pt.Yf().O().layout.colorSpace};if(1!==t){this._v(),this.Jf.applySuggestedBitmapSize();const t=e(this.Jf,i);null!==t&&(t.useBitmapCoordinateSpace(t=>{this.uv(t),this.cv(t)}),this.Pt.dv(t,this.Zf),this.pv(t),this.Pt.dv(t,this.Xf),this.fv(t))}this.Qf.applySuggestedBitmapSize();const s=e(this.Qf,i);null!==s&&(s.useBitmapCoordinateSpace(({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)}),this.vv(s),this.Pt.dv(s,this.Gf))}Jp(){return this.Jf.bitmapSize}Qp(t,i,s,e){const n=this.Jp();if(n.width>0&&n.height>0&&(t.drawImage(this.Jf.canvasElement,i,s),e)){const e=this.Qf.canvasElement;t.drawImage(e,i,s)}}Tt(){this.ji?.Vl()}nf(t){if(null===this.ji||this.ji.Xi()||!this.Ps.handleScale.axisPressedMouseMove.price)return;const i=this.Pt.Yf().ti(),s=this.Pt.lf();this.zf=!0,i.Ua(s,this.ji,t.localY)}rf(t){if(null===this.ji||!this.Ps.handleScale.axisPressedMouseMove.price)return;const i=this.Pt.Yf().ti(),s=this.Pt.lf(),e=this.ji;i.qa(s,e,t.localY)}tv(){if(null===this.ji||!this.Ps.handleScale.axisPressedMouseMove.price)return;const t=this.Pt.Yf().ti(),i=this.Pt.lf(),s=this.ji;this.zf&&(this.zf=!1,t.Ya(i,s))}hf(t){if(null===this.ji||!this.Ps.handleScale.axisPressedMouseMove.price)return;const i=this.Pt.Yf().ti(),s=this.Pt.lf();this.zf=!1,i.Ya(s,this.ji)}iv(t){this.Ps.handleScale.axisDoubleClickReset.price&&this.Ve()}sv(t){if(null===this.ji)return;!this.Pt.Yf().ti().O().handleScale.axisPressedMouseMove.price||this.ji.Wn()||this.ji.Fo()||this.mv(1)}ef(t){this.mv(0)}hv(){const t=[],i=null===this.ji?void 0:this.ji;return(s=>{for(let e=0;e<s.length;++e){const n=s[e].Hs(this.Pt.lf(),i);for(let i=0;i<n.length;i++)t.push(n[i])}})(this.Pt.lf().Vt()),t}uv({context:t,bitmapSize:i}){const{width:s,height:e}=i,n=this.Pt.lf().ti(),r=n.q(),h=n.Hc();r===h?E(t,0,0,s,e,r):z(t,0,0,s,e,r,h)}cv({context:t,bitmapSize:i,horizontalPixelRatio:s}){if(null===this.Of||null===this.ji||!this.ji.O().borderVisible)return;t.fillStyle=this.ji.O().borderColor;const e=Math.max(1,Math.floor(this.ev().S*s));let n;n=this.Kf?i.width-e:0,t.fillRect(n,0,e,i.height)}pv(t){if(null===this.Of||null===this.ji)return;const i=this.ji.Vl(),s=this.ji.O(),e=this.ev(),n=this.Kf?this.Of.width-e.C:0;s.borderVisible&&s.ticksVisible&&t.useBitmapCoordinateSpace(({context:t,horizontalPixelRatio:r,verticalPixelRatio:h})=>{t.fillStyle=s.borderColor;const l=Math.max(1,Math.floor(h)),o=Math.floor(.5*h),a=Math.round(e.C*r);t.beginPath();for(const s of i)t.rect(Math.floor(n*r),Math.round(s.Pl*h)-o,a,l);t.fill()}),t.useMediaCoordinateSpace(({context:t})=>{t.font=this.rv(),t.fillStyle=s.textColor??this.So.textColor,t.textAlign=this.Kf?"right":"left",t.textBaseline="middle";const r=this.Kf?Math.round(n-e.F):Math.round(n+e.C+e.F),h=i.map(i=>this.$f.Vi(t,i.Zl));for(let s=i.length;s--;){const e=i[s];t.fillText(e.Zl,r,e.Pl+h[s])}})}_v(){if(null===this.Of||null===this.ji)return;let t=this.Of.height/2;const i=[],s=this.ji.Vt().slice(),e=this.Pt.lf(),n=this.ev();this.ji===e.Ne()&&this.Pt.lf().Vt().forEach(t=>{e.He(t)&&s.push(t)});const r=this.ji.Ml()[0],h=this.ji;s.forEach(s=>{const n=s.Hs(e,h);n.forEach(t=>{t.Hi(null),t.Ni()&&i.push(t)}),r===s&&n.length>0&&(t=n[0].Li())}),i.forEach(t=>t.Hi(t.Li()));this.ji.O().alignLabels&&this.wv(i,n,t)}wv(t,i,s){if(null===this.Of)return;const e=t.filter(t=>t.Li()<=s),n=t.filter(t=>t.Li()>s);e.sort((t,i)=>i.Li()-t.Li()),e.length&&n.length&&n.push(e[0]),n.sort((t,i)=>t.Li()-i.Li());for(const s of t){const t=Math.floor(s.qt(i)/2),e=s.Li();e>-t&&e<t&&s.Hi(t),e>this.Of.height-t&&e<this.Of.height+t&&s.Hi(this.Of.height-t)}Ds(e,1,this.Of.height,i),Ds(n,-1,this.Of.height,i)}fv(t){if(null===this.Of)return;const i=this.hv(),s=this.ev(),e=this.Kf?"right":"left";i.forEach(i=>{if(i.Ui()){i.Dt(u(this.ji)).nt(t,s,this.$f,e)}})}vv(t){if(null===this.Of||null===this.ji)return;const i=this.Pt.Yf().ti(),s=[],e=this.Pt.lf(),n=i.cc().Hs(e,this.ji);n.length&&s.push(n);const r=this.ev(),h=this.Kf?"right":"left";s.forEach(i=>{i.forEach(i=>{i.Dt(u(this.ji)).nt(t,r,this.$f,h)})})}mv(t){this.jp.style.cursor=1===t?"ns-resize":"default"}co(){const t=this.nv();this.Nf<t&&this.Pt.Yf().ti().Lh(),this.Nf=t}rv(){return S(this.So.fontSize,this.So.fontFamily)}}function Vs(t,i){return t.Qh?.(i)??[]}function Rs(t,i){return t.$s?.(i)??[]}function Fs(t,i){return t.cs?.(i)??[]}function Ls(t,i){return t.Gh?.(i)??[]}class As{constructor(i,s){this.Of=t({width:0,height:0}),this.gv=null,this.bv=null,this.Mv=null,this.yv=null,this.Sv=!1,this.xv=new d,this.Cv=new d,this.Pv=0,this.Tv=!1,this.kv=null,this.Dv=!1,this.Iv=null,this.Vv=null,this.Uf=!1,this.qf=()=>{this.Uf||null===this.Rv||this.ss().ar()},this.jf=()=>{this.Uf||null===this.Rv||this.ss().ar()},this.Rf=i,this.Rv=s,this.Rv.i_().i(this.Fv.bind(this),this,!0),this.Lv=document.createElement("td"),this.Lv.style.padding="0",this.Lv.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.Av=document.createElement("td"),this.Av.style.padding="0",this.Bv=document.createElement("td"),this.Bv.style.padding="0",this.Lv.appendChild(e),this.Jf=Ss(e,t({width:16,height:16})),this.Jf.subscribeSuggestedBitmapSizeChanged(this.qf);const n=this.Jf.canvasElement;n.style.position="absolute",n.style.zIndex="1",n.style.left="0",n.style.top="0",this.Qf=Ss(e,t({width:16,height:16})),this.Qf.subscribeSuggestedBitmapSizeChanged(this.jf);const r=this.Qf.canvasElement;r.style.position="absolute",r.style.zIndex="2",r.style.left="0",r.style.top="0",this.Yp=document.createElement("tr"),this.Yp.appendChild(this.Av),this.Yp.appendChild(this.Lv),this.Yp.appendChild(this.Bv),this.Ev(),this.Op=new cs(this.Qf.canvasElement,this,{op:()=>null===this.kv&&!this.Rf.O().handleScroll.vertTouchDrag,ap:()=>null===this.kv&&!this.Rf.O().handleScroll.horzTouchDrag})}m(){null!==this.gv&&this.gv.m(),null!==this.bv&&this.bv.m(),this.Mv=null,this.Qf.unsubscribeSuggestedBitmapSizeChanged(this.jf),xs(this.Qf.canvasElement),this.Qf.dispose(),this.Jf.unsubscribeSuggestedBitmapSizeChanged(this.qf),xs(this.Jf.canvasElement),this.Jf.dispose(),null!==this.Rv&&(this.Rv.i_().u(this),this.Rv.m()),this.Op.m()}lf(){return u(this.Rv)}Wv(t){null!==this.Rv&&this.Rv.i_().u(this),this.Rv=t,null!==this.Rv&&this.Rv.i_().i(As.prototype.Fv.bind(this),this,!0),this.Ev(),this.Rf.Up().indexOf(this)===this.Rf.Up().length-1?(this.Mv=this.Mv??new ys(this.Lv,this.Rf),this.Mv.Tt()):(this.Mv?.Lf(),this.Mv=null)}Yf(){return this.Rf}Gp(){return this.Yp}Ev(){if(null!==this.Rv&&(this.Ov(),0!==this.ss().Ks().length)){if(null!==this.gv){const t=this.Rv.Ha();this.gv.us(u(t))}if(null!==this.bv){const t=this.Rv.Na();this.bv.us(u(t))}}}zv(){null!==this.gv&&this.gv.Tt(),null!==this.bv&&this.bv.Tt()}Fa(){return null!==this.Rv?this.Rv.Fa():0}La(t){this.Rv&&this.Rv.La(t)}ep(t){if(!this.Rv)return;this.$v();const i=t.localX,s=t.localY;this.Hv(i,s,t)}yp(t){this.$v(),this.Nv(),this.Hv(t.localX,t.localY,t)}np(t){if(!this.Rv)return;this.$v();const i=t.localX,s=t.localY;this.Hv(i,s,t)}mp(t){null!==this.Rv&&(this.$v(),this.Uv(t))}Gd(t){null!==this.Rv&&this.qv(this.Cv,t)}Yd(t){this.Gd(t)}cp(t){this.$v(),this.Yv(t),this.Hv(t.localX,t.localY,t)}vp(t){null!==this.Rv&&(this.$v(),this.Tv=!1,this.jv(t))}fp(t){null!==this.Rv&&this.Uv(t)}Fp(t){if(this.Tv=!0,null===this.kv){const i={x:t.localX,y:t.localY};this.Kv(i,i,t)}}Rp(t){null!==this.Rv&&(this.$v(),this.Rv.ti().ac(null),this.Xv())}Gv(){return this.xv}Zv(){return this.Cv}Pp(){this.Pv=1,this.ss().he()}Tp(t,i){if(!this.Rf.O().handleScale.pinch)return;const s=5*(i-this.Pv);this.Pv=i,this.ss().yc(t.ut,s)}bp(t){this.Tv=!1,this.Dv=null!==this.kv,this.Nv();const i=this.ss().cc();null!==this.kv&&i.Rt()&&(this.Iv={x:i.ei(),y:i.ni()},this.kv={x:t.localX,y:t.localY})}_p(t){if(null===this.Rv)return;const i=t.localX,s=t.localY;if(null!==this.kv){this.Dv=!1;const e=u(this.Iv),n=e.x+(i-this.kv.x),r=e.y+(s-this.kv.y);return void this.Hv(n,r,t)}this.Yv(t)}pp(t){0===this.Yf().O().trackingMode.exitMode&&(this.Dv=!0),this.Jv(),this.jv(t)}Ye(t,i){const s=this.Rv;return null===s?null:Ti(s,t,i)}Qv(i,s){u("left"===s?this.gv:this.bv).lv(t({width:i,height:this.Of.height}))}Zp(){return this.Of}lv(t){s(this.Of,t)||(this.Of=t,this.Uf=!0,this.Jf.resizeCanvasElement(t),this.Qf.resizeCanvasElement(t),this.Uf=!1,this.Lv.style.width=t.width+"px",this.Lv.style.height=t.height+"px")}tm(){const t=u(this.Rv);t.$a(t.Ha()),t.$a(t.Na());for(const i of t.Ml())if(t.He(i)){const s=i.$t();null!==s&&t.$a(s),i.zs()}for(const i of t.e_())i.zs()}Jp(){return this.Jf.bitmapSize}Qp(t,i,s,e){const n=this.Jp();if(n.width>0&&n.height>0&&(t.drawImage(this.Jf.canvasElement,i,s),e)){const e=this.Qf.canvasElement;null!==t&&t.drawImage(e,i,s)}}av(t){if(0===t)return;if(null===this.Rv)return;t>1&&this.tm(),null!==this.gv&&this.gv.av(t),null!==this.bv&&this.bv.av(t);const i={colorSpace:this.Rf.O().layout.colorSpace};if(1!==t){this.Jf.applySuggestedBitmapSize();const t=e(this.Jf,i);null!==t&&(t.useBitmapCoordinateSpace(t=>{this.uv(t)}),this.Rv&&(this.im(t,Vs),this.sm(t),this.im(t,Rs),this.im(t,Fs)))}this.Qf.applySuggestedBitmapSize();const s=e(this.Qf,i);null!==s&&(s.useBitmapCoordinateSpace(({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)}),this.nm(s),this.im(s,Ls),this.im(s,Fs))}rm(){return this.gv}hm(){return this.bv}dv(t,i){this.im(t,i)}Fv(){null!==this.Rv&&this.Rv.i_().u(this),this.Rv=null}Uv(t){this.qv(this.xv,t)}qv(t,i){const s=i.localX,e=i.localY;t.v()&&t.p(this.ss().At().du(s),{x:s,y:e},i)}uv({context:t,bitmapSize:i}){const{width:s,height:e}=i,n=this.ss(),r=n.q(),h=n.Hc();r===h?E(t,0,0,s,e,h):z(t,0,0,s,e,r,h)}sm(t){const i=u(this.Rv),s=i.s_()._r().Dt(i);null!==s&&s.nt(t,!1)}nm(t){this.lm(t,Rs,Ps,this.ss().cc())}im(t,i){const s=u(this.Rv),e=s.Vt(),n=s.e_();for(const s of n)this.lm(t,i,Cs,s);for(const s of e)this.lm(t,i,Cs,s);for(const s of n)this.lm(t,i,Ps,s);for(const s of e)this.lm(t,i,Ps,s)}lm(t,i,s,e){const n=u(this.Rv),r=n.ti().oc(),h=null!==r&&r.n_===e,l=null!==r&&h&&void 0!==r.r_?r.r_.Ke:void 0;Ts(i,i=>s(i,t,h,l),e,n)}Ov(){if(null===this.Rv)return;const t=this.Rf,i=this.Rv.Ha().O().visible,s=this.Rv.Na().O().visible;i||null===this.gv||(this.Av.removeChild(this.gv.Gp()),this.gv.m(),this.gv=null),s||null===this.bv||(this.Bv.removeChild(this.bv.Gp()),this.bv.m(),this.bv=null);const e=t.ti().Fc();i&&null===this.gv&&(this.gv=new Is(this,t.O(),e,"left"),this.Av.appendChild(this.gv.Gp())),s&&null===this.bv&&(this.bv=new Is(this,t.O(),e,"right"),this.Bv.appendChild(this.bv.Gp()))}om(t){return t.Lp&&this.Tv||null!==this.kv}am(t){return Math.max(0,Math.min(t,this.Of.width-1))}_m(t){return Math.max(0,Math.min(t,this.Of.height-1))}Hv(t,i,s){this.ss().Dc(this.am(t),this._m(i),s,u(this.Rv))}Xv(){this.ss().Vc()}Jv(){this.Dv&&(this.kv=null,this.Xv())}Kv(t,i,s){this.kv=t,this.Dv=!1,this.Hv(i.x,i.y,s);const e=this.ss().cc();this.Iv={x:e.ei(),y:e.ni()}}ss(){return this.Rf.ti()}jv(t){if(!this.Sv)return;const i=this.ss(),s=this.lf();if(i.Xa(s,s.ks()),this.yv=null,this.Sv=!1,i.Pc(),null!==this.Vv){const t=performance.now(),s=i.At();this.Vv.an(s.bu(),t),this.Vv.Iu(t)||i.ae(this.Vv)}}$v(){this.kv=null}Nv(){if(!this.Rv)return;if(this.ss().he(),document.activeElement!==document.body&&document.activeElement!==document.documentElement)u(document.activeElement).blur();else{const t=document.getSelection();null!==t&&t.removeAllRanges()}!this.Rv.ks().Xi()&&this.ss().At().Xi()}Yv(t){if(null===this.Rv)return;const i=this.ss(),s=i.At();if(s.Xi())return;const e=this.Rf.O(),n=e.handleScroll,r=e.kineticScroll;if((!n.pressedMouseMove||t.Lp)&&(!n.horzTouchDrag&&!n.vertTouchDrag||!t.Lp))return;const h=this.Rv.ks(),l=performance.now();if(null!==this.yv||this.om(t)||(this.yv={x:t.clientX,y:t.clientY,hd:l,um:t.localX,dm:t.localY}),null!==this.yv&&!this.Sv&&(this.yv.x!==t.clientX||this.yv.y!==t.clientY)){if(t.Lp&&r.touch||!t.Lp&&r.mouse){const t=s.wu();this.Vv=new Ms(.2/t,7/t,.997,15/t),this.Vv.Pf(s.bu(),this.yv.hd)}else this.Vv=null;h.Xi()||i.ja(this.Rv,h,t.localY),i.xc(t.localX),this.Sv=!0}this.Sv&&(h.Xi()||i.Ka(this.Rv,h,t.localY),i.Cc(t.localX),null!==this.Vv&&this.Vv.Pf(s.bu(),l))}}class Bs{constructor(i,s,e,n,r){this.xt=!0,this.Of=t({width:0,height:0}),this.qf=()=>this.av(3),this.Kf="left"===i,this.Qu=e.Fc,this.Ps=s,this.pm=n,this.fm=r,this.jp=document.createElement("div"),this.jp.style.width="25px",this.jp.style.height="100%",this.jp.style.overflow="hidden",this.Jf=Ss(this.jp,t({width:16,height:16})),this.Jf.subscribeSuggestedBitmapSizeChanged(this.qf)}m(){this.Jf.unsubscribeSuggestedBitmapSizeChanged(this.qf),xs(this.Jf.canvasElement),this.Jf.dispose()}Gp(){return this.jp}Zp(){return this.Of}lv(t){s(this.Of,t)||(this.Of=t,this.Jf.resizeCanvasElement(t),this.jp.style.width=`${t.width}px`,this.jp.style.height=`${t.height}px`,this.xt=!0)}av(t){if(t<3&&!this.xt)return;if(0===this.Of.width||0===this.Of.height)return;this.xt=!1,this.Jf.applySuggestedBitmapSize();const i=e(this.Jf,{colorSpace:this.Ps.layout.colorSpace});null!==i&&i.useBitmapCoordinateSpace(t=>{this.uv(t),this.cv(t)})}Jp(){return this.Jf.bitmapSize}Qp(t,i,s){const e=this.Jp();e.width>0&&e.height>0&&t.drawImage(this.Jf.canvasElement,i,s)}cv({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:e}){if(!this.pm())return;t.fillStyle=this.Ps.timeScale.borderColor;const n=Math.floor(this.Qu.O().S*s),r=Math.floor(this.Qu.O().S*e),h=this.Kf?i.width-n:0;t.fillRect(h,0,n,r)}uv({context:t,bitmapSize:i}){E(t,0,0,i.width,i.height,this.fm())}}function Es(t){return i=>i.sl?.(t)??[]}const Ws=Es("normal"),Os=Es("top"),zs=Es("bottom");class $s{constructor(i,s){this.vm=null,this.wm=null,this.M=null,this.gm=!1,this.Of=t({width:0,height:0}),this.bm=new d,this.$f=new rt(5),this.Uf=!1,this.qf=()=>{this.Uf||this.Rf.ti().ar()},this.jf=()=>{this.Uf||this.Rf.ti().ar()},this.Rf=i,this.__=s,this.Ps=i.O().layout,this.kf=document.createElement("tr"),this.Mm=document.createElement("td"),this.Mm.style.padding="0",this.ym=document.createElement("td"),this.ym.style.padding="0",this.jp=document.createElement("td"),this.jp.style.height="25px",this.jp.style.padding="0",this.Sm=document.createElement("div"),this.Sm.style.width="100%",this.Sm.style.height="100%",this.Sm.style.position="relative",this.Sm.style.overflow="hidden",this.jp.appendChild(this.Sm),this.Jf=Ss(this.Sm,t({width:16,height:16})),this.Jf.subscribeSuggestedBitmapSizeChanged(this.qf);const e=this.Jf.canvasElement;e.style.position="absolute",e.style.zIndex="1",e.style.left="0",e.style.top="0",this.Qf=Ss(this.Sm,t({width:16,height:16})),this.Qf.subscribeSuggestedBitmapSizeChanged(this.jf);const n=this.Qf.canvasElement;n.style.position="absolute",n.style.zIndex="2",n.style.left="0",n.style.top="0",this.kf.appendChild(this.Mm),this.kf.appendChild(this.jp),this.kf.appendChild(this.ym),this.xm(),this.Rf.ti().Ra().i(this.xm.bind(this),this),this.Op=new cs(this.Qf.canvasElement,this,{op:()=>!0,ap:()=>!this.Rf.O().handleScroll.horzTouchDrag})}m(){this.Op.m(),null!==this.vm&&this.vm.m(),null!==this.wm&&this.wm.m(),this.Qf.unsubscribeSuggestedBitmapSizeChanged(this.jf),xs(this.Qf.canvasElement),this.Qf.dispose(),this.Jf.unsubscribeSuggestedBitmapSizeChanged(this.qf),xs(this.Jf.canvasElement),this.Jf.dispose()}Gp(){return this.kf}Cm(){return this.vm}Pm(){return this.wm}yp(t){if(this.gm)return;this.gm=!0;const i=this.Rf.ti();!i.At().Xi()&&this.Rf.O().handleScale.axisPressedMouseMove.time&&i.Mc(t.localX)}bp(t){this.yp(t)}Sp(){const t=this.Rf.ti();!t.At().Xi()&&this.gm&&(this.gm=!1,this.Rf.O().handleScale.axisPressedMouseMove.time&&t.kc())}cp(t){const i=this.Rf.ti();!i.At().Xi()&&this.Rf.O().handleScale.axisPressedMouseMove.time&&i.Tc(t.localX)}_p(t){this.cp(t)}vp(){this.gm=!1;const t=this.Rf.ti();t.At().Xi()&&!this.Rf.O().handleScale.axisPressedMouseMove.time||t.kc()}pp(){this.vp()}Gd(){this.Rf.O().handleScale.axisDoubleClickReset.time&&this.Rf.ti().ue()}Yd(){this.Gd()}ep(){this.Rf.ti().O().handleScale.axisPressedMouseMove.time&&this.mv(1)}Rp(){this.mv(0)}Zp(){return this.Of}Tm(){return this.bm}km(i,e,n){s(this.Of,i)||(this.Of=i,this.Uf=!0,this.Jf.resizeCanvasElement(i),this.Qf.resizeCanvasElement(i),this.Uf=!1,this.jp.style.width=`${i.width}px`,this.jp.style.height=`${i.height}px`,this.bm.p(i)),null!==this.vm&&this.vm.lv(t({width:e,height:i.height})),null!==this.wm&&this.wm.lv(t({width:n,height:i.height}))}Dm(){const t=this.Im();return Math.ceil(t.S+t.C+t.P+t.A+t.R+t.Vm)}Tt(){this.Rf.ti().At().Vl()}Jp(){return this.Jf.bitmapSize}Qp(t,i,s,e){const n=this.Jp();if(n.width>0&&n.height>0&&(t.drawImage(this.Jf.canvasElement,i,s),e)){const e=this.Qf.canvasElement;t.drawImage(e,i,s)}}av(t){if(0===t)return;const i={colorSpace:this.Ps.colorSpace};if(1!==t){this.Jf.applySuggestedBitmapSize();const s=e(this.Jf,i);null!==s&&(s.useBitmapCoordinateSpace(t=>{this.uv(t),this.cv(t),this.Rm(s,zs)}),this.pv(s),this.Rm(s,Ws)),null!==this.vm&&this.vm.av(t),null!==this.wm&&this.wm.av(t)}this.Qf.applySuggestedBitmapSize();const s=e(this.Qf,i);null!==s&&(s.useBitmapCoordinateSpace(({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)}),this.Fm([...this.Rf.ti().Ks(),this.Rf.ti().cc()],s),this.Rm(s,Os))}Rm(t,i){const s=this.Rf.ti().Ks();for(const e of s)Ts(i,i=>Cs(i,t,!1,void 0),e,void 0);for(const e of s)Ts(i,i=>Ps(i,t,!1,void 0),e,void 0)}uv({context:t,bitmapSize:i}){E(t,0,0,i.width,i.height,this.Rf.ti().Hc())}cv({context:t,bitmapSize:i,verticalPixelRatio:s}){if(this.Rf.O().timeScale.borderVisible){t.fillStyle=this.Lm();const e=Math.max(1,Math.floor(this.Im().S*s));t.fillRect(0,0,i.width,e)}}pv(t){const i=this.Rf.ti().At(),s=i.Vl();if(!s||0===s.length)return;const e=this.__.maxTickMarkWeight(s),n=this.Im(),r=i.O();r.borderVisible&&r.ticksVisible&&t.useBitmapCoordinateSpace(({context:t,horizontalPixelRatio:i,verticalPixelRatio:e})=>{t.strokeStyle=this.Lm(),t.fillStyle=this.Lm();const r=Math.max(1,Math.floor(i)),h=Math.floor(.5*i);t.beginPath();const l=Math.round(n.C*e);for(let e=s.length;e--;){const n=Math.round(s[e].coord*i);t.rect(n-h,0,r,l)}t.fill()}),t.useMediaCoordinateSpace(({context:t})=>{const i=n.S+n.C+n.A+n.P/2;t.textAlign="center",t.textBaseline="middle",t.fillStyle=this.N(),t.font=this.rv();for(const n of s)if(n.weight<e){const s=n.needAlignCoordinate?this.Am(t,n.coord,n.label):n.coord;t.fillText(n.label,s,i)}this.Rf.O().timeScale.allowBoldLabels&&(t.font=this.Bm());for(const n of s)if(n.weight>=e){const s=n.needAlignCoordinate?this.Am(t,n.coord,n.label):n.coord;t.fillText(n.label,s,i)}})}Am(t,i,s){const e=this.$f.Ri(t,s),n=e/2,r=Math.floor(i-n)+.5;return r<0?i+=Math.abs(0-r):r+e>this.Of.width&&(i-=Math.abs(this.Of.width-(r+e))),i}Fm(t,i){const s=this.Im();for(const e of t)for(const t of e.ds())t.Dt().nt(i,s)}Lm(){return this.Rf.O().timeScale.borderColor}N(){return this.Ps.textColor}$(){return this.Ps.fontSize}rv(){return S(this.$(),this.Ps.fontFamily)}Bm(){return S(this.$(),this.Ps.fontFamily,"bold")}Im(){null===this.M&&(this.M={S:1,B:NaN,A:NaN,R:NaN,Qi:NaN,C:5,P:NaN,T:"",Ji:new rt,Vm:0});const t=this.M,i=this.rv();if(t.T!==i){const s=this.$();t.P=s,t.T=i,t.A=3*s/12,t.R=3*s/12,t.Qi=9*s/12,t.B=0,t.Vm=4*s/12,t.Ji.Ve()}return this.M}mv(t){this.jp.style.cursor=1===t?"ew-resize":"default"}xm(){const t=this.Rf.ti(),i=t.O();i.leftPriceScale.visible||null===this.vm||(this.Mm.removeChild(this.vm.Gp()),this.vm.m(),this.vm=null),i.rightPriceScale.visible||null===this.wm||(this.ym.removeChild(this.wm.Gp()),this.wm.m(),this.wm=null);const s={Fc:this.Rf.ti().Fc()},e=()=>i.leftPriceScale.borderVisible&&t.At().O().borderVisible,n=()=>t.Hc();i.leftPriceScale.visible&&null===this.vm&&(this.vm=new Bs("left",i,s,e,n),this.Mm.appendChild(this.vm.Gp())),i.rightPriceScale.visible&&null===this.wm&&(this.wm=new Bs("right",i,s,e,n),this.ym.appendChild(this.wm.Gp()))}}const Hs=!!ls&&!!navigator.userAgentData&&navigator.userAgentData.brands.some(t=>t.brand.includes("Chromium"))&&!!ls&&(navigator?.userAgentData?.platform?"Windows"===navigator.userAgentData.platform:navigator.userAgent.toLowerCase().indexOf("win")>=0);class Ns{constructor(t,i,s){var e;this.Em=[],this.Wm=[],this.Om=0,this.eo=0,this.Ma=0,this.zm=0,this.$m=0,this.Hm=null,this.Nm=!1,this.xv=new d,this.Cv=new d,this.Gu=new d,this.Um=null,this.qm=null,this.Vf=t,this.Ps=i,this.__=s,this.kf=document.createElement("div"),this.kf.classList.add("tv-lightweight-charts"),this.kf.style.overflow="hidden",this.kf.style.direction="ltr",this.kf.style.width="100%",this.kf.style.height="100%",(e=this.kf).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.kf.appendChild(this.Ym),this.jm=this.Km.bind(this),Us(this.Ps)&&this.Xm(!0),this.ss=new zi(this.Ju.bind(this),this.Ps,s),this.ti().dc().i(this.Gm.bind(this),this),this.Zm=new $s(this,this.__),this.Ym.appendChild(this.Zm.Gp());const n=i.autoSize&&this.Jm();let r=this.Ps.width,h=this.Ps.height;if(n||0===r||0===h){const i=t.getBoundingClientRect();r=r||i.width,h=h||i.height}this.Qm(r,h),this.tw(),t.appendChild(this.kf),this.iw(),this.ss.At().Lu().i(this.ss.Lh.bind(this.ss),this),this.ss.Ra().i(this.ss.Lh.bind(this.ss),this)}ti(){return this.ss}O(){return this.Ps}Up(){return this.Em}sw(){return this.Zm}m(){this.Xm(!1),0!==this.Om&&window.cancelAnimationFrame(this.Om),this.ss.dc().u(this),this.ss.At().Lu().u(this),this.ss.Ra().u(this),this.ss.m();for(const t of this.Em)this.Ym.removeChild(t.Gp()),t.Gv().u(this),t.Zv().u(this),t.m();this.Em=[];for(const t of this.Wm)this.ew(t);this.Wm=[],u(this.Zm).m(),null!==this.kf.parentElement&&this.kf.parentElement.removeChild(this.kf),this.Gu.m(),this.xv.m(),this.Cv.m(),this.nw()}Qm(i,s,e=!1){if(this.eo===s&&this.Ma===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.eo=n.height,this.Ma=n.width;const r=this.eo+"px",h=this.Ma+"px";u(this.kf).style.height=r,u(this.kf).style.width=h,this.Ym.style.height=r,this.Ym.style.width=h,e?this.rw(Z.we(),performance.now()):this.ss.Lh()}av(t){void 0===t&&(t=Z.we());for(let i=0;i<this.Em.length;i++)this.Em[i].av(t.ne(i).ie);this.Ps.timeScale.visible&&this.Zm.av(t.ee())}lr(t){const i=Us(this.Ps);this.ss.lr(t);const s=Us(this.Ps);s!==i&&this.Xm(s),t.layout?.panes&&this.hw(),this.iw(),this.lw(t)}Gv(){return this.xv}Zv(){return this.Cv}dc(){return this.Gu}ow(t=!1){null!==this.Hm&&(this.rw(this.Hm,performance.now()),this.Hm=null);const i=this.aw(null),s=document.createElement("canvas");s.width=i.width,s.height=i.height;const e=u(s.getContext("2d"));return this.aw(e,t),s}_w(t){if("left"===t&&!this.uw())return 0;if("right"===t&&!this.cw())return 0;if(0===this.Em.length)return 0;return u("left"===t?this.Em[0].rm():this.Em[0].hm()).ov()}dw(){return this.Ps.autoSize&&null!==this.Um}if(){return this.kf}pw(t){this.qm=t,this.qm?this.if().style.setProperty("cursor",t):this.if().style.removeProperty("cursor")}fw(){return this.qm}mw(t){return _(this.Em[t]).Zp()}hw(){this.Wm.forEach(t=>{t.Tt()})}lw(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.nw(),t.autoSize||void 0===t.width&&void 0===t.height||this.Qm(t.width||this.Ma,t.height||this.eo))}aw(i,s){let e=0,n=0;const r=this.Em[0],h=(t,e)=>{let n=0;for(let r=0;r<this.Em.length;r++){const h=this.Em[r],l=u("left"===t?h.rm():h.hm()),o=l.Jp();if(null!==i&&l.Qp(i,e,n,s),n+=o.height,r<this.Em.length-1){const t=this.Wm[r],s=t.Jp();null!==i&&t.Qp(i,e,n),n+=s.height}}};if(this.uw()){h("left",0);e+=u(r.rm()).Jp().width}for(let t=0;t<this.Em.length;t++){const r=this.Em[t],h=r.Jp();if(null!==i&&r.Qp(i,e,n,s),n+=h.height,t<this.Em.length-1){const s=this.Wm[t],r=s.Jp();null!==i&&s.Qp(i,e,n),n+=r.height}}if(e+=r.Jp().width,this.cw()){h("right",e);e+=u(r.hm()).Jp().width}const l=(t,s,e)=>{u("left"===t?this.Zm.Cm():this.Zm.Pm()).Qp(u(i),s,e)};if(this.Ps.timeScale.visible){const t=this.Zm.Jp();if(null!==i){let e=0;this.uw()&&(l("left",e,n),e=u(r.rm()).Jp().width),this.Zm.Qp(i,e,n,s),e+=t.width,this.cw()&&l("right",e,n)}n+=t.height}return t({width:e,height:n})}ww(){let i=0,s=0,e=0;for(const t of this.Em)this.uw()&&(s=Math.max(s,u(t.rm()).nv(),this.Ps.leftPriceScale.minimumWidth)),this.cw()&&(e=Math.max(e,u(t.hm()).nv(),this.Ps.rightPriceScale.minimumWidth)),i+=t.Fa();s=_s(s),e=_s(e);const n=this.Ma,r=this.eo,h=Math.max(n-s-e,0),l=1*this.Wm.length,o=this.Ps.timeScale.visible;let a=o?Math.max(this.Zm.Dm(),this.Ps.timeScale.minimumHeight):0;var _;a=(_=a)+_%2;const c=l+a,d=r<c?0:r-c,p=d/i;let f=0;const v=window.devicePixelRatio||1;for(let i=0;i<this.Em.length;++i){const n=this.Em[i];n.Wv(this.ss.qs()[i]);let r=0,l=0;l=i===this.Em.length-1?Math.ceil((d-f)*v)/v:Math.round(n.Fa()*p*v)/v,r=Math.max(l,2),f+=r,n.lv(t({width:h,height:r})),this.uw()&&n.Qv(s,"left"),this.cw()&&n.Qv(e,"right"),n.lf()&&this.ss.fc(n.lf(),r)}this.Zm.km(t({width:o?h:0,height:a}),o?s:0,o?e:0),this.ss.Aa(h),this.zm!==s&&(this.zm=s),this.$m!==e&&(this.$m=e)}Xm(t){t?this.kf.addEventListener("wheel",this.jm,{passive:!1}):this.kf.removeEventListener("wheel",this.jm)}gw(t){switch(t.deltaMode){case t.DOM_DELTA_PAGE:return 120;case t.DOM_DELTA_LINE:return 32}return Hs?1/window.devicePixelRatio:1}Km(t){if(!(0!==t.deltaX&&this.Ps.handleScroll.mouseWheel||0!==t.deltaY&&this.Ps.handleScale.mouseWheel))return;const i=this.gw(t),s=i*t.deltaX/100,e=-i*t.deltaY/100;if(t.cancelable&&t.preventDefault(),0!==e&&this.Ps.handleScale.mouseWheel){const i=Math.sign(e)*Math.min(1,Math.abs(e)),s=t.clientX-this.kf.getBoundingClientRect().left;this.ti().yc(s,i)}0!==s&&this.Ps.handleScroll.mouseWheel&&this.ti().Sc(-80*s)}rw(t,i){const s=t.ee();3===s&&this.bw(),3!==s&&2!==s||(this.Mw(t),this.yw(t,i),this.Zm.Tt(),this.Em.forEach(t=>{t.zv()}),3===this.Hm?.ee()&&(this.Hm.fe(t),this.bw(),this.Mw(this.Hm),this.yw(this.Hm,i),t=this.Hm,this.Hm=null)),this.av(t)}yw(t,i){for(const s of t.pe())this.ve(s,i)}Mw(t){const i=this.ss.qs();for(let s=0;s<i.length;s++)t.ne(s).se&&i[s].Ja()}ve(t,i){const s=this.ss.At();switch(t.le){case 0:s.Bu();break;case 1:s.Eu(t.Ht);break;case 2:s.ce(t.Ht);break;case 3:s.de(t.Ht);break;case 4:s.Su();break;case 5:t.Ht.Iu(i)||s.de(t.Ht.Vu(i))}}Ju(t){null!==this.Hm?this.Hm.fe(t):this.Hm=t,this.Nm||(this.Nm=!0,this.Om=window.requestAnimationFrame(t=>{if(this.Nm=!1,this.Om=0,null!==this.Hm){const i=this.Hm;this.Hm=null,this.rw(i,t);for(const s of i.pe())if(5===s.le&&!s.Ht.Iu(t)){this.ti().ae(s.Ht);break}}}))}bw(){this.tw()}ew(t){this.Ym.removeChild(t.Gp()),t.m()}tw(){const t=this.ss.qs(),i=t.length,s=this.Em.length;for(let t=i;t<s;t++){const t=_(this.Em.pop());this.Ym.removeChild(t.Gp()),t.Gv().u(this),t.Zv().u(this),t.m();const i=this.Wm.pop();void 0!==i&&this.ew(i)}for(let e=s;e<i;e++){const i=new As(this,t[e]);if(i.Gv().i(this.Sw.bind(this,i),this),i.Zv().i(this.xw.bind(this,i),this),this.Em.push(i),e>0){const t=new ws(this,e-1,e);this.Wm.push(t),this.Ym.insertBefore(t.Gp(),this.Zm.Gp())}this.Ym.insertBefore(i.Gp(),this.Zm.Gp())}for(let s=0;s<i;s++){const i=t[s],e=this.Em[s];e.lf()!==i?e.Wv(i):e.Ev()}this.iw(),this.ww()}Cw(t,i,s,e){const n=new Map;if(null!==t){this.ss.Ks().forEach(i=>{const s=i.Gs().$r(t);null!==s&&n.set(i,s)})}let r;if(null!==t){const i=this.ss.At().es(t)?.originalTime;void 0!==i&&(r=i)}const h=this.ti().oc(),l=null!==h&&h.n_ instanceof Kt?h.n_:void 0,o=null!==h&&void 0!==h.r_?h.r_.je:void 0,a=this.Pw(e);return{Tw:r,In:t??void 0,kw:i??void 0,Dw:-1!==a?a:void 0,Iw:l,Vw:n,Rw:o,Fw:s??void 0}}Pw(t){let i=-1;if(t)i=this.Em.indexOf(t);else{const t=this.ti().cc().Us();null!==t&&(i=this.ti().qs().indexOf(t))}return i}Sw(t,i,s,e){this.xv.p(()=>this.Cw(i,s,e,t))}xw(t,i,s,e){this.Cv.p(()=>this.Cw(i,s,e,t))}Gm(t,i,s){this.pw(this.ti().oc()?.l_??null),this.Gu.p(()=>this.Cw(t,i,s))}iw(){const t=this.Ps.timeScale.visible?"":"none";this.Zm.Gp().style.display=t}uw(){return this.Em[0].lf().Ha().O().visible}cw(){return this.Em[0].lf().Na().O().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.Vf,{box:"border-box"}),!0)}nw(){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,r={In:i,gt:t,Ht:[n,n,n,n],Tw:e};return void 0!==s.color&&(r.I=s.color),r}function Ks(t,i,s,e){const n=s.value,r={In:i,gt:t,Ht:[n,n,n,n],Tw:e};return void 0!==s.lineColor&&(r.wt=s.lineColor),void 0!==s.topColor&&(r.wr=s.topColor),void 0!==s.bottomColor&&(r.gr=s.bottomColor),r}function Xs(t,i,s,e){const n=s.value,r={In:i,gt:t,Ht:[n,n,n,n],Tw:e};return void 0!==s.topLineColor&&(r.br=s.topLineColor),void 0!==s.bottomLineColor&&(r.Mr=s.bottomLineColor),void 0!==s.topFillColor1&&(r.yr=s.topFillColor1),void 0!==s.topFillColor2&&(r.Sr=s.topFillColor2),void 0!==s.bottomFillColor1&&(r.Cr=s.bottomFillColor1),void 0!==s.bottomFillColor2&&(r.Pr=s.bottomFillColor2),r}function Gs(t,i,s,e){const n={In:i,gt:t,Ht:[s.open,s.high,s.low,s.close],Tw:e};return void 0!==s.color&&(n.I=s.color),n}function Zs(t,i,s,e){const n={In:i,gt:t,Ht:[s.open,s.high,s.low,s.close],Tw:e};return void 0!==s.color&&(n.I=s.color),void 0!==s.borderColor&&(n.Nt=s.borderColor),void 0!==s.wickColor&&(n.mr=s.wickColor),n}function Js(t,i,s,e,n){const r=_(n)(s),h=Math.max(...r),l=Math.min(...r),o=r[r.length-1],a=[o,h,l,o],{time:u,color:c,...d}=s;return{In:i,gt:t,Ht:a,Tw:e,sn:d,I:c}}function Qs(t){return void 0!==t.Ht}function te(t,i){return void 0!==i.customValues&&(t.Lw=i.customValues),t}function ie(t){return(i,s,e,n,r,h)=>function(t,i){return i?i(t):qs(t)}(e,h)?te({gt:i,In:s,Tw:n},e):te(t(i,s,e,n,r),e)}function se(t){return{Candlestick:ie(Zs),Bar:ie(Gs),Area:ie(Ks),Baseline:ie(Xs),Histogram:ie(js),Line:ie(js),Custom:ie(Js)}[t]}function ee(t){return{In:0,Aw:new Map,Nh:t}}function ne(t,i){if(void 0!==t&&0!==t.length)return{Bw:i.key(t[0].gt),Ew:i.key(t[t.length-1].gt)}}function re(t){let i;return t.forEach(t=>{void 0===i&&(i=t.Tw)}),_(i)}class he{constructor(t){this.Ww=new Map,this.Ow=new Map,this.zw=new Map,this.$w=[],this.__=t}m(){this.Ww.clear(),this.Ow.clear(),this.zw.clear(),this.$w=[]}Hw(t,i){let s=0!==this.Ww.size,e=!1;const n=this.Ow.get(t);if(void 0!==n)if(1===this.Ow.size)s=!1,e=!0,this.Ww.clear();else for(const i of this.$w)i.pointData.Aw.delete(t)&&(e=!0);let r=[];if(0!==i.length){const s=i.map(t=>t.time),n=this.__.createConverterToInternalObj(i),h=se(t.Ir()),l=t.dl(),o=t.fl();r=i.map((i,r)=>{const a=n(i.time),_=this.__.key(a);let u=this.Ww.get(_);void 0===u&&(u=ee(a),this.Ww.set(_,u),e=!0);const c=h(a,u.In,i,s[r],l,o);return u.Aw.set(t,c),c})}s&&this.Nw(),this.Uw(t,r);let h=-1;if(e){const t=[];this.Ww.forEach(i=>{t.push({timeWeight:0,time:i.Nh,pointData:i,originalTime:re(i.Aw)})}),t.sort((t,i)=>this.__.key(t.time)-this.__.key(i.time)),h=this.qw(t)}return this.Yw(t,h,function(t,i,s){const e=ne(t,s),n=ne(i,s);if(void 0!==e&&void 0!==n)return{jw:!1,Eh:e.Ew>=n.Ew&&e.Bw>=n.Bw}}(this.Ow.get(t),n,this.__))}Bc(t){return this.Hw(t,[])}Kw(t,i,s){const e=i;!function(t){void 0===t.Tw&&(t.Tw=t.time)}(e),this.__.preprocessData(i);const n=this.__.createConverterToInternalObj([i])(i.time),r=this.zw.get(t);if(!s&&void 0!==r&&this.__.key(n)<this.__.key(r))throw new Error(`Cannot update oldest data, last time=${r}, new time=${n}`);let h=this.Ww.get(this.__.key(n));if(s&&void 0===h)throw new Error("Cannot update non-existing data point when historicalUpdate is true");const l=void 0===h;void 0===h&&(h=ee(n),this.Ww.set(this.__.key(n),h));const o=se(t.Ir()),a=t.dl(),_=t.fl(),u=o(n,h.In,i,e.Tw,a,_);h.Aw.set(t,u),s?this.Xw(t,u,h.In):this.Gw(t,u);const c={Eh:Qs(u),jw:s};if(!l)return this.Yw(t,-1,c);const d={timeWeight:0,time:h.Nh,pointData:h,originalTime:re(h.Aw)},p=Pt(this.$w,this.__.key(d.time),(t,i)=>this.__.key(t.time)<i);this.$w.splice(p,0,d);for(let t=p;t<this.$w.length;++t)le(this.$w[t].pointData,t);return this.__.fillWeightsForPoints(this.$w,p),this.Yw(t,p,c)}Zw(t,i){const s=this.Ow.get(t);if(void 0===s||i<=0)return[[],this.Jw()];i=Math.min(i,s.length);const e=s.splice(-i).reverse();0===s.length?this.zw.delete(t):this.zw.set(t,s[s.length-1].gt);for(const i of e){const s=this.Ww.get(this.__.key(i.gt));if(s&&(s.Aw.delete(t),0===s.Aw.size)){this.Ww.delete(this.__.key(s.Nh)),this.$w.splice(s.In,1);for(let t=s.In;t<this.$w.length;++t)le(this.$w[t].pointData,t)}}return[e,this.Yw(t,this.$w.length-1,{jw:!1,Eh:!1})]}Gw(t,i){let s=this.Ow.get(t);void 0===s&&(s=[],this.Ow.set(t,s));const e=0!==s.length?s[s.length-1]:null;null===e||this.__.key(i.gt)>this.__.key(e.gt)?Qs(i)&&s.push(i):Qs(i)?s[s.length-1]=i:s.splice(-1,1),this.zw.set(t,i.gt)}Xw(t,i,s){const e=this.Ow.get(t);if(void 0===e)return;const n=Pt(e,s,(t,i)=>t.In<i);Qs(i)?e[n]=i:e.splice(n,1)}Uw(t,i){0!==i.length?(this.Ow.set(t,i.filter(Qs)),this.zw.set(t,i[i.length-1].gt)):(this.Ow.delete(t),this.zw.delete(t))}Nw(){for(const t of this.$w)0===t.pointData.Aw.size&&this.Ww.delete(this.__.key(t.time))}qw(t){let i=-1;for(let s=0;s<this.$w.length&&s<t.length;++s){const e=this.$w[s],n=t[s];if(this.__.key(e.time)!==this.__.key(n.time)){i=s;break}n.timeWeight=e.timeWeight,le(n.pointData,s)}if(-1===i&&this.$w.length!==t.length&&(i=Math.min(this.$w.length,t.length)),-1===i)return-1;for(let s=i;s<t.length;++s)le(t[s].pointData,s);return this.__.fillWeightsForPoints(t,i),this.$w=t,i}Qw(){if(0===this.Ow.size)return null;let t=0;return this.Ow.forEach(i=>{0!==i.length&&(t=Math.max(t,i[i.length-1].In))}),t}Yw(t,i,s){const e=this.Jw();if(-1!==i)this.Ow.forEach((i,n)=>{e.Oa.set(n,{sn:i,tg:n===t?s:void 0})}),this.Ow.has(t)||e.Oa.set(t,{sn:[],tg:s}),e.At.ig=this.$w,e.At.sg=i;else{const i=this.Ow.get(t);e.Oa.set(t,{sn:i||[],tg:s})}return e}Jw(){return{Oa:new Map,At:{uu:this.Qw()}}}}function le(t,i){t.In=i,t.Aw.forEach(t=>{t.In=i})}function oe(t,i){return t.gt<i}function ae(t,i){return i<t.gt}function _e(t,i,s){const e=i.Uh(),n=i.yi(),r=Pt(t,e,oe),h=Tt(t,n,ae);if(!s)return{from:r,to:h};let l=r,o=h;return r>0&&r<t.length&&t[r].gt>=e&&(l=r-1),h>0&&h<t.length&&t[h-1].gt<=n&&(o=h+1),{from:l,to:o}}class ue{constructor(t,i,s){this.eg=!0,this.ng=!0,this.rg=!0,this.hg=[],this.lg=null,this.Ze=t,this.Je=i,this.og=s}Tt(t){this.eg=!0,"data"===t&&(this.ng=!0),"options"===t&&(this.rg=!0)}Dt(){return this.Ze.Rt()?(this.ag(),null===this.lg?null:this._g):null}ug(){this.hg=this.hg.map(t=>({...t,...this.Ze.Ih().Vr(t.gt)}))}cg(){this.lg=null}ag(){this.ng&&(this.dg(),this.ng=!1),this.rg&&(this.ug(),this.rg=!1),this.eg&&(this.pg(),this.eg=!1)}pg(){const t=this.Ze.$t(),i=this.Je.At();if(this.cg(),i.Xi()||t.Xi())return;const s=i.Pn();if(null===s)return;if(0===this.Ze.Gs().Er())return;const e=this.Ze.Et();null!==e&&(this.lg=_e(this.hg,s,this.og),this.fg(t,i,e.Ht),this.vg())}}class ce{constructor(t,i){this.mg=t,this.ji=i}nt(t,i,s){this.mg.draw(t,this.ji,i,s)}}class de extends ue{constructor(t,i,s){super(t,i,!1),this.eh=s,this._g=new ce(this.eh.renderer(),i=>{const s=t.Et();return null===s?null:t.$t().zt(i,s.Ht)})}pl(t){return this.eh.priceValueBuilder(t)}vl(t){return this.eh.isWhitespace(t)}dg(){const t=this.Ze.Ih();this.hg=this.Ze.Gs().Nr().map(i=>({gt:i.In,ut:NaN,...t.Vr(i.In),wg:i.sn}))}fg(t,i){i.cu(this.hg,M(this.lg))}vg(){this.eh.update({bars:this.hg.map(pe),barSpacing:this.Je.At().wu(),visibleRange:this.lg},this.Ze.O())}}function pe(t){return{x:t.ut,time:t.gt,originalData:t.wg,barColor:t.dr}}const fe={color:"#2196f3"},ve=(t,i,s)=>{const e=c(s);return new de(t,i,e)};function me(t){const i={value:t.Ht[3],time:t.Tw};return void 0!==t.Lw&&(i.customValues=t.Lw),i}function we(t){const i=me(t);return void 0!==t.I&&(i.color=t.I),i}function ge(t){const i=me(t);return void 0!==t.wt&&(i.lineColor=t.wt),void 0!==t.wr&&(i.topColor=t.wr),void 0!==t.gr&&(i.bottomColor=t.gr),i}function be(t){const i=me(t);return void 0!==t.br&&(i.topLineColor=t.br),void 0!==t.Mr&&(i.bottomLineColor=t.Mr),void 0!==t.yr&&(i.topFillColor1=t.yr),void 0!==t.Sr&&(i.topFillColor2=t.Sr),void 0!==t.Cr&&(i.bottomFillColor1=t.Cr),void 0!==t.Pr&&(i.bottomFillColor2=t.Pr),i}function Me(t){const i={open:t.Ht[0],high:t.Ht[1],low:t.Ht[2],close:t.Ht[3],time:t.Tw};return void 0!==t.Lw&&(i.customValues=t.Lw),i}function ye(t){const i=Me(t);return void 0!==t.I&&(i.color=t.I),i}function Se(t){const i=Me(t),{I:s,Nt:e,mr:n}=t;return void 0!==s&&(i.color=s),void 0!==e&&(i.borderColor=e),void 0!==n&&(i.wickColor=n),i}function xe(t){return{Area:ge,Line:we,Baseline:be,Histogram:we,Bar:ye,Candlestick:Se,Custom:Ce}[t]}function Ce(t){const i=t.Tw;return{...t.sn,time:i}}const Pe={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:y,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},Ie={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:Pe,grid:Te,overlayPriceScales:{...De},leftPriceScale:{...De,visible:!1},rightPriceScale:{...De,visible:!0},timeScale:Ie,localization:{locale:ls?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 Re{constructor(t,i,s){this.Hp=t,this.gg=i,this.bg=s??0}applyOptions(t){this.Hp.ti()._c(this.gg,t,this.bg)}options(){return this.ji().O()}width(){return G(this.gg)?this.Hp._w(this.gg):0}setVisibleRange(t){this.setAutoScale(!1),this.ji().No(new mt(t.from,t.to))}getVisibleRange(){let t,i,s=this.ji().tr();if(null===s)return null;if(this.ji().Ql()){const e=this.ji().va(),n=$i(e);s=ci(s,this.ji().so()),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 u(this.Hp.ti().uc(this.gg,this.bg)).$t}}class Fe{constructor(t,i,s,e){this.Hp=t,this.Pt=s,this.Mg=i,this.yg=e}getHeight(){return this.Pt.qt()}setHeight(t){const i=this.Hp.ti(),s=i.Uc(this.Pt);i.mc(s,t)}getStretchFactor(){return this.Pt.Fa()}setStretchFactor(t){this.Pt.La(t),this.Hp.ti().Lh()}paneIndex(){return this.Hp.ti().Uc(this.Pt)}moveTo(t){const i=this.paneIndex();i!==t&&(a(t>=0&&t<this.Hp.Up().length,"Invalid pane index"),this.Hp.ti().gc(i,t))}getSeries(){return this.Pt.Oa().map(t=>this.Mg(t))??[]}getHTMLElement(){const t=this.Hp.Up();return t&&0!==t.length&&t[this.paneIndex()]?t[this.paneIndex()].Gp():null}attachPrimitive(t){this.Pt.ul(t),t.attached&&t.attached({chart:this.yg,requestUpdate:()=>this.Pt.ti().Lh()})}detachPrimitive(t){this.Pt.cl(t)}priceScale(t){if(null===this.Pt.Va(t))throw new Error(`Cannot find price scale with id: ${t}`);return new Re(this.Hp,t,this.paneIndex())}setPreserveEmptyPane(t){this.Pt.Ea(t)}preserveEmptyPane(){return this.Pt.Wa()}addCustomSeries(t,i={},s=0){return this.yg.addCustomSeries(t,i,s)}addSeries(t,i={}){return this.yg.addSeries(t,i,this.paneIndex())}}const Le={color:"#FF0000",price:0,lineStyle:2,lineWidth:1,lineVisible:!0,axisLabelVisible:!0,title:"",axisLabelColor:"",axisLabelTextColor:""};class Ae{constructor(t){this.sr=t}applyOptions(t){this.sr.lr(t)}options(){return this.sr.O()}Sg(){return this.sr}}class Be{constructor(t,i,s,e,n,r){this.xg=new d,this.Ze=t,this.Cg=i,this.Pg=s,this.__=n,this.yg=e,this.Tg=r}m(){this.xg.m()}priceFormatter(){return this.Ze.rl()}priceToCoordinate(t){const i=this.Ze.Et();return null===i?null:this.Ze.$t().zt(t,i.Ht)}coordinateToPrice(t){const i=this.Ze.Et();return null===i?null:this.Ze.$t().Ds(t,i.Ht)}barsInLogicalRange(t){if(null===t)return null;const i=new Ri(new Di(t.from,t.to)).T_(),s=this.Ze.Gs();if(s.Xi())return null;const e=s.$r(i.Uh(),1),n=s.$r(i.yi(),-1),r=u(s.Wr()),h=u(s.Xs());if(null!==e&&null!==n&&e.In>n.In)return{barsBefore:t.from-r,barsAfter:h-t.to};const l={barsBefore:null===e||e.In===r?t.from-r:e.In-r,barsAfter:null===n||n.In===h?h-t.to:h-n.In};return null!==e&&null!==n&&(l.from=e.Tw,l.to=n.Tw),l}setData(t){this.__,this.Ze.Ir(),this.Cg.kg(this.Ze,t),this.Dg("full")}update(t,i=!1){this.Ze.Ir(),this.Cg.Ig(this.Ze,t,i),this.Dg("update")}pop(t=1){const i=this.Cg.Vg(this.Ze,t);0!==i.length&&this.Dg("update");const s=xe(this.seriesType());return i.map(t=>s(t))}dataByIndex(t,i){const s=this.Ze.Gs().$r(t,i);if(null===s)return null;return xe(this.seriesType())(s)}data(){const t=xe(this.seriesType());return this.Ze.Gs().Nr().map(i=>t(i))}subscribeDataChanged(t){this.xg.i(t)}unsubscribeDataChanged(t){this.xg._(t)}applyOptions(t){this.Ze.lr(t)}options(){return g(this.Ze.O())}priceScale(){return this.Pg.priceScale(this.Ze.$t().wl(),this.getPane().paneIndex())}createPriceLine(t){const i=p(g(Le),t),s=this.Ze.Oh(i);return new Ae(s)}removePriceLine(t){this.Ze.zh(t.Sg())}priceLines(){return this.Ze.$h().map(t=>new Ae(t))}seriesType(){return this.Ze.Ir()}lastValueData(t){const i=this.Ze.Tn(t);return i.kn?{noData:!0}:{noData:!1,price:i.bt,color:i.I}}attachPrimitive(t){this.Ze.ul(t),t.attached&&t.attached({chart:this.yg,series:this,requestUpdate:()=>this.Ze.ti().Lh(),horzScaleBehavior:this.__})}detachPrimitive(t){this.Ze.cl(t),t.detached&&t.detached(),this.Ze.ti().Lh()}getPane(){const t=this.Ze,i=u(this.Ze.ti().$e(t));return this.Tg(i)}moveToPane(t){this.Ze.ti().zc(this.Ze,t)}seriesOrder(){const t=this.Ze.ti().$e(this.Ze);return null===t?-1:t.Oa().indexOf(this.Ze)}setSeriesOrder(t){const i=this.Ze.ti().$e(this.Ze);null!==i&&i.t_(this.Ze,t)}Dg(t){this.xg.v()&&this.xg.p(t)}}class Ee{constructor(t,i,s){this.Rg=new d,this.E_=new d,this.bm=new d,this.ss=t,this.dh=t.At(),this.Zm=i,this.dh.Ru().i(this.Fg.bind(this)),this.dh.Fu().i(this.Lg.bind(this)),this.Zm.Tm().i(this.Ag.bind(this)),this.__=s}m(){this.dh.Ru().u(this),this.dh.Fu().u(this),this.Zm.Tm().u(this),this.Rg.m(),this.E_.m(),this.bm.m()}scrollPosition(){return this.dh.bu()}scrollToPosition(t,i){i?this.dh.Du(t,1e3):this.ss.de(t)}scrollToRealTime(){this.dh.ku()}getVisibleRange(){const t=this.dh.nu();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.dh.ou(i);this.ss.Wc(s)}getVisibleLogicalRange(){const t=this.dh.eu();return null===t?null:{from:t.Uh(),to:t.yi()}}setVisibleLogicalRange(t){a(t.from<=t.to,"The from index cannot be after the to index."),this.ss.Wc(t)}resetTimeScale(){this.ss.ue()}fitContent(){this.ss.Bu()}logicalToCoordinate(t){const i=this.ss.At();return i.Xi()?null:i.Yt(t)}coordinateToLogical(t){return this.dh.Xi()?null:this.dh.du(t)}timeToIndex(t,i){const s=this.__.convertHorzItemToInternal(t);return this.dh.tu(s,i)}timeToCoordinate(t){const i=this.timeToIndex(t,!1);return null===i?null:this.dh.Yt(i)}coordinateToTime(t){const i=this.ss.At(),s=i.du(t),e=i.es(s);return null===e?null:e.originalTime}width(){return this.Zm.Zp().width}height(){return this.Zm.Zp().height}subscribeVisibleTimeRangeChange(t){this.Rg.i(t)}unsubscribeVisibleTimeRangeChange(t){this.Rg._(t)}subscribeVisibleLogicalRangeChange(t){this.E_.i(t)}unsubscribeVisibleLogicalRangeChange(t){this.E_._(t)}subscribeSizeChange(t){this.bm.i(t)}unsubscribeSizeChange(t){this.bm._(t)}applyOptions(t){this.dh.lr(t)}options(){return{...g(this.dh.O()),barSpacing:this.dh.wu()}}Fg(){this.Rg.v()&&this.Rg.p(this.getVisibleRange())}Lg(){this.E_.v()&&this.E_.p(this.getVisibleLogicalRange())}Ag(t){this.bm.p(t.width,t.height)}}function We(t){return function(t){if(w(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;w(i)&&(t.handleScale.axisPressedMouseMove={time:i,price:i}),w(s)&&(t.handleScale.axisDoubleClickReset={time:s,price:s})}const i=t.handleScroll;w(i)&&(t.handleScroll={horzTouchDrag:i,vertTouchDrag:i,mouseWheel:i,pressedMouseMove:i})}(t),t}class Oe{constructor(t,i,s){this.Bg=new Map,this.Eg=new Map,this.Wg=new d,this.Og=new d,this.zg=new d,this.Yu=new WeakMap,this.$g=new he(i);const e=void 0===s?g(Ve()):p(g(Ve()),We(s));this.Hg=i,this.Hp=new Ns(t,e,i),this.Hp.Gv().i(t=>{this.Wg.v()&&this.Wg.p(this.Ng(t()))},this),this.Hp.Zv().i(t=>{this.Og.v()&&this.Og.p(this.Ng(t()))},this),this.Hp.dc().i(t=>{this.zg.v()&&this.zg.p(this.Ng(t()))},this);const n=this.Hp.ti();this.Ug=new Ee(n,this.Hp.sw(),this.Hg)}remove(){this.Hp.Gv().u(this),this.Hp.Zv().u(this),this.Hp.dc().u(this),this.Ug.m(),this.Hp.m(),this.Bg.clear(),this.Eg.clear(),this.Wg.m(),this.Og.m(),this.zg.m(),this.$g.m()}resize(t,i,s){this.autoSizeActive()||this.Hp.Qm(t,i,s)}addCustomSeries(t,i={},s=0){const e=(t=>({type:"Custom",isBuiltIn:!1,defaultOptions:{...fe,...t.defaultOptions()},qg:ve,Yg:t}))(c(t));return this.jg(e,i,s)}addSeries(t,i={},s=0){return this.jg(t,i,s)}removeSeries(t){const i=_(this.Bg.get(t)),s=this.$g.Bc(i);this.Hp.ti().Bc(i),this.Kg(s),this.Bg.delete(t),this.Eg.delete(i)}kg(t,i){this.Kg(this.$g.Hw(t,i))}Ig(t,i,s){this.Kg(this.$g.Kw(t,i,s))}Vg(t,i){const[s,e]=this.$g.Zw(t,i);return 0!==s.length&&this.Kg(e),s}subscribeClick(t){this.Wg.i(t)}unsubscribeClick(t){this.Wg._(t)}subscribeCrosshairMove(t){this.zg.i(t)}unsubscribeCrosshairMove(t){this.zg._(t)}subscribeDblClick(t){this.Og.i(t)}unsubscribeDblClick(t){this.Og._(t)}priceScale(t,i=0){return new Re(this.Hp,t,i)}timeScale(){return this.Ug}applyOptions(t){this.Hp.lr(We(t))}options(){return this.Hp.O()}takeScreenshot(t=!1,i=!1){let s,e;try{i||(s=this.Hp.ti().O().crosshair.mode,this.Hp.lr({crosshair:{mode:2}})),e=this.Hp.ow(t)}finally{i||void 0===s||this.Hp.ti().lr({crosshair:{mode:s}})}return e}addPane(t=!1){const i=this.Hp.ti().qc();return i.Ea(t),this.Xg(i)}removePane(t){this.Hp.ti().vc(t)}swapPanes(t,i){this.Hp.ti().wc(t,i)}autoSizeActive(){return this.Hp.dw()}chartElement(){return this.Hp.if()}panes(){return this.Hp.ti().qs().map(t=>this.Xg(t))}paneSize(t=0){const i=this.Hp.mw(t);return{height:i.height,width:i.width}}setCrosshairPosition(t,i,s){const e=this.Bg.get(s);if(void 0===e)return;const n=this.Hp.ti().$e(e);null!==n&&this.Hp.ti().Ic(t,i,n)}clearCrosshairPosition(){this.Hp.ti().Vc(!0)}horzBehaviour(){return this.Hg}jg(t,i={},s=0){a(void 0!==t.qg),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=p(g(n),g(t.defaultOptions),i),r=t.qg,h=new Kt(this.Hp.ti(),t.type,e,r,t.Yg);this.Hp.ti().Lc(h,s);const l=new Be(h,this,this,this,this.Hg,t=>this.Xg(t));return this.Bg.set(l,h),this.Eg.set(h,l),l}Kg(t){const i=this.Hp.ti();i.Rc(t.At.uu,t.At.ig,t.At.sg),t.Oa.forEach((t,i)=>i.lt(t.sn,t.tg)),i.At().X_(),i.mu()}Gg(t){return _(this.Eg.get(t))}Ng(t){const i=new Map;t.Vw.forEach((t,s)=>{const e=s.Ir(),n=xe(e)(t);if("Custom"!==e)a(Ys(n));else{const t=s.fl();a(!t||!1===t(n))}i.set(this.Gg(s),n)});const s=void 0!==t.Iw&&this.Eg.has(t.Iw)?this.Gg(t.Iw):void 0;return{time:t.Tw,logical:t.In,point:t.kw,paneIndex:t.Dw,hoveredSeries:s,hoveredObjectId:t.Rw,seriesData:i,sourceEvent:t.Fw}}Xg(t){let i=this.Yu.get(t);return i||(i=new Fe(this.Hp,t=>this.Gg(t),t,this),this.Yu.set(t,i)),i}}function ze(t){if(m(t)){const i=document.getElementById(t);return a(null!==i,`Cannot find element in DOM with id=${t}`),i}return t}function $e(t,i,s){const e=ze(t),n=new Oe(e,i,s);return i.setOptions(n.options()),n}function He(t,i){return $e(t,new hs,hs.ad(i))}function Ne(){return hs}function Ue(t,i){const s=t.timeScale(),e=i.dataByIndex(Number.MAX_SAFE_INTEGER,-1);if(!e||"number"!=typeof e.time)return null;const n=s.timeToCoordinate(e.time);if(null===n)return null;const r=s.coordinateToLogical(n);if(null===r)return null;const h=i.dataByIndex(r-1,-1);return!h||"number"!=typeof h.time||h.time>=e.time?null:{gt:e.time,Xl:r,Zg:e.time-h.time}}function qe(t,i,s){const e=t.timeScale(),n=e.coordinateToTime(s);if(null!==n)return n;const r=e.coordinateToLogical(s);if(null===r)return null;const h=Ue(t,i);if(null===h)return null;const l=r-h.Xl;return Math.round(h.gt+l*h.Zg)}function Ye(t,i,s){if(null==s)return null;const e=t.timeScale(),n=e.timeToCoordinate(s);if(null!==n)return n;if("number"!=typeof s)return null;const r=Ue(t,i);if(null===r)return null;const h=r.Xl+(s-r.gt)/r.Zg,l=e.logicalToCoordinate(h);return null===l?null:l}class je extends ue{constructor(t,i){super(t,i,!0)}fg(t,i,s){i.cu(this.hg,M(this.lg)),t.Yo(this.hg,s,M(this.lg))}Jg(t,i){return{gt:t,bt:i,ut:NaN,ct:NaN}}dg(){const t=this.Ze.Ih();this.hg=this.Ze.Gs().Nr().map(i=>{const s=i.Ht[3];return this.Qg(i.In,s,t)})}}function Ke(t,i,s,e,n,r,h){if(0===i.length||e.from>=i.length||e.to<=0)return;const{context:l,horizontalPixelRatio:o,verticalPixelRatio:a}=t,_=i[e.from];let u=r(t,_),c=_;if(e.to-e.from<2){const i=n/2;l.beginPath();const s={ut:_.ut-i,ct:_.ct},e={ut:_.ut+i,ct:_.ct};l.moveTo(s.ut*o,s.ct*a),l.lineTo(e.ut*o,e.ct*a),h(t,u,s,e)}else{const n=(i,s)=>{h(t,u,c,s),l.beginPath(),u=i,c=s};let d=c;l.beginPath(),l.moveTo(_.ut*o,_.ct*a);for(let h=e.from+1;h<e.to;++h){d=i[h];const e=r(t,d);switch(s){case 0:l.lineTo(d.ut*o,d.ct*a);break;case 1:l.lineTo(d.ut*o,i[h-1].ct*a),e!==u&&(n(e,d),l.lineTo(d.ut*o,i[h-1].ct*a)),l.lineTo(d.ut*o,d.ct*a);break;case 2:{const[t,s]=Je(i,h-1,h);l.bezierCurveTo(t.ut*o,t.ct*a,s.ut*o,s.ct*a,d.ut*o,d.ct*a);break}}1!==s&&e!==u&&(n(e,d),l.moveTo(d.ut*o,d.ct*a))}(c!==d||c===d&&1===s)&&h(t,u,c,d)}}const Xe=6;function Ge(t,i){return{ut:t.ut-i.ut,ct:t.ct-i.ct}}function Ze(t,i){return{ut:t.ut/i,ct:t.ct/i}}function Je(t,i,s){const e=Math.max(0,i-1),n=Math.min(t.length-1,s+1);var r,h;return[(r=t[i],h=Ze(Ge(t[s],t[e]),Xe),{ut:r.ut+h.ut,ct:r.ct+h.ct}),Ge(t[s],Ze(Ge(t[n],t[i]),Xe))]}function Qe(t,i){const s=t.context;s.strokeStyle=i,s.stroke()}class tn extends D{constructor(){super(...arguments),this.ht=null}lt(t){this.ht=t}rt(t){if(null===this.ht)return;const{_t:i,ot:s,tb:e,ib:n,dt:r,Gt:h,sb:o}=this.ht;if(null===s)return;const a=t.context;a.lineCap="butt",a.lineWidth=r*t.verticalPixelRatio,l(a,h),a.lineJoin="round";const _=this.eb.bind(this);void 0!==n&&Ke(t,i,n,s,e,_,Qe),o&&function(t,i,s,e,n){if(e.to-e.from<=0)return;const{horizontalPixelRatio:r,verticalPixelRatio:h,context:l}=t;let o=null;const a=Math.max(1,Math.floor(r))%2/2,_=s*h+a;for(let s=e.to-1;s>=e.from;--s){const e=i[s];if(e){const i=n(t,e);i!==o&&(l.beginPath(),null!==o&&l.fill(),l.fillStyle=i,o=i);const s=Math.round(e.ut*r)+a,u=e.ct*h;l.moveTo(s,u),l.arc(s,u,_,0,2*Math.PI)}}l.fill()}(t,i,o,s,_)}}class sn extends tn{eb(t,i){return i.wt}}class en extends je{constructor(){super(...arguments),this._g=new sn}Qg(t,i,s){return{...this.Jg(t,i),...s.Vr(t)}}vg(){const t=this.Ze.O(),i={_t:this.hg,Gt:t.lineStyle,ib:t.lineVisible?t.lineType:void 0,dt:t.lineWidth,sb:t.pointMarkersVisible?t.pointMarkersRadius||t.lineWidth/2+2:void 0,ot:this.lg,tb:this.Je.At().wu()};this._g.lt(i)}}const nn={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},qg:(t,i)=>new en(t,i)};function rn(t,i){return t.weight>i.weight?t:i}function hn(t){return t}class ln{constructor(){this.nb=new d,this.rb=function(t){let i=!1;return function(...s){i||(i=!0,queueMicrotask(()=>{t(...s),i=!1}))}}(()=>this.nb.p(this.hb)),this.hb=0}lb(){return this.nb}m(){this.nb.m()}options(){return this.Ps}setOptions(t){this.Ps=t}preprocessData(t){}updateFormatter(t){this.Ps&&(this.Ps.localization=t)}createConverterToInternalObj(t){return this.rb(),t=>(t>this.hb&&(this.hb=t),t)}key(t){return t}cacheKey(t){return t}convertHorzItemToInternal(t){return t}formatHorzItem(t){return this.ob(t)}formatTickmark(t){return this.ob(t.time)}maxTickMarkWeight(t){return t.reduce(rn,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(hn(t[e].time));this.hb=t[t.length-1].time,this.rb()}ob(t){if(this.Ps.localization?.timeFormatter)return this.Ps.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 on={yieldCurve:{baseResolution:1,minimumTimeRange:120,startTimeRange:0},timeScale:{ignoreWhitespaceIndices:!0},leftPriceScale:{visible:!0},rightPriceScale:{visible:!1},localization:{priceFormatter:t=>t.toFixed(3)+"%"}},an={lastValueVisible:!1,priceLineVisible:!1};class _n extends Oe{constructor(t,i){const s=p(on,i||{}),e=new ln;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={...an,...i};return super.addSeries(t,e,s)}_initWhitespaceSeries(){const t=this.horzBehaviour(),i=this.addSeries(nn);let s;function e(e){const n=function(t,i){return{an:Math.max(0,t.startTimeRange),_n:Math.max(0,t.minimumTimeRange,i||0),ab:Math.max(1,t.baseResolution)}}(t.options().yieldCurve,e),r=(({an:t,_n:i,ab:s})=>`${t}~${i}~${s}`)(n);r!==s&&(s=r,i.setData(function({an:t,_n:i,ab:s}){return Array.from({length:Math.floor((i-t)/s)+1},(i,e)=>({time:t+e*s}))}(n)))}e(0),t.lb().i(e)}}function un(t,i){const s=ze(t);return new _n(s,i)}function cn(t,i){return t.weight>i.weight?t:i}class dn{options(){return this.Ps}setOptions(t){this.Ps=t}preprocessData(t){}updateFormatter(t){this.Ps&&(this.Ps.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.Se())}formatTickmark(t,i){return t.time.toFixed(this.Se())}maxTickMarkWeight(t){return t.reduce(cn,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)}Se(){return this.Ps.localization.precision}}function pn(t,i){return $e(t,new dn,i)}function fn(t,i,s,e,n){const{context:r,horizontalPixelRatio:h,verticalPixelRatio:l}=i;r.lineTo(n.ut*h,t*l),r.lineTo(e.ut*h,t*l),r.closePath(),r.fillStyle=s,r.fill()}class vn extends D{constructor(){super(...arguments),this.ht=null}lt(t){this.ht=t}rt(t){if(null===this.ht)return;const{_t:i,ot:s,tb:e,dt:n,Gt:r,ib:h}=this.ht,o=this.ht._b??(this.ht.ub?0:t.mediaSize.height);if(null===s)return;const a=t.context;a.lineCap="butt",a.lineJoin="round",a.lineWidth=n,l(a,r),a.lineWidth=1,Ke(t,i,h,s,e,this.cb.bind(this),fn.bind(null,o))}}class mn{pb(t,i){const s=this.fb,{mb:e,wb:n,gb:r,bb:h,_b:l,Mb:o,yb:a}=i;if(void 0===this.Sb||void 0===s||s.mb!==e||s.wb!==n||s.gb!==r||s.bb!==h||s._b!==l||s.Mb!==o||s.yb!==a){const{verticalPixelRatio:s}=t,_=l||o>0?s:1,u=o*_,c=a===t.bitmapSize.height?a:a*_,d=(l??0)*_,p=t.context.createLinearGradient(0,u,0,c);if(p.addColorStop(0,e),null!=l){const t=Jt((d-u)/(c-u),0,1);p.addColorStop(t,n),p.addColorStop(t,r)}p.addColorStop(1,h),this.Sb=p,this.fb=i}return this.Sb}}class wn extends vn{constructor(){super(...arguments),this.xb=new mn}cb(t,i){const s=this.ht;return this.xb.pb(t,{mb:i.yr,wb:i.Sr,gb:i.Cr,bb:i.Pr,_b:s._b,Mb:s.Mb??0,yb:s.yb??t.bitmapSize.height})}}class gn extends tn{constructor(){super(...arguments),this.Cb=new mn}eb(t,i){const s=this.ht;return this.Cb.pb(t,{mb:i.br,wb:i.br,gb:i.Mr,bb:i.Mr,_b:s._b,Mb:s.Mb??0,yb:s.yb??t.bitmapSize.height})}}class bn extends je{constructor(t,i){super(t,i),this._g=new k,this.Pb=new wn,this.Tb=new gn,this._g.et([this.Pb,this.Tb])}Qg(t,i,s){return{...this.Jg(t,i),...s.Vr(t)}}vg(){const t=this.Ze.Et();if(null===t)return;const i=this.Ze.O(),s=this.Ze.$t().zt(i.baseValue.price,t.Ht),e=this.Je.At().wu();if(null===this.lg||0===this.hg.length)return;let n,r;if(i.relativeGradient){n=this.hg[this.lg.from].ct,r=this.hg[this.lg.from].ct;for(let t=this.lg.from;t<this.lg.to;t++){const i=this.hg[t];i.ct<n&&(n=i.ct),i.ct>r&&(r=i.ct)}}this.Pb.lt({_t:this.hg,dt:i.lineWidth,Gt:i.lineStyle,ib:i.lineType,_b:s,Mb:n,yb:r,ub:!1,ot:this.lg,tb:e}),this.Tb.lt({_t:this.hg,dt:i.lineWidth,Gt:i.lineStyle,ib:i.lineVisible?i.lineType:void 0,sb:i.pointMarkersVisible?i.pointMarkersRadius||i.lineWidth/2+2:void 0,_b:s,Mb:n,yb:r,ot:this.lg,tb:e})}}const Mn={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},qg:(t,i)=>new bn(t,i)};class yn extends vn{constructor(){super(...arguments),this.xb=new mn}cb(t,i){return this.xb.pb(t,{mb:i.wr,wb:"",gb:"",bb:i.gr,Mb:this.ht?.Mb??0,yb:t.bitmapSize.height})}}class Sn extends je{constructor(t,i){super(t,i),this._g=new k,this.kb=new yn,this.Db=new sn,this._g.et([this.kb,this.Db])}Qg(t,i,s){return{...this.Jg(t,i),...s.Vr(t)}}vg(){const t=this.Ze.O();if(null===this.lg||0===this.hg.length)return;let i;if(t.relativeGradient){i=this.hg[this.lg.from].ct;for(let t=this.lg.from;t<this.lg.to;t++){const s=this.hg[t];s.ct<i&&(i=s.ct)}}this.kb.lt({ib:t.lineType,_t:this.hg,Gt:t.lineStyle,dt:t.lineWidth,_b:null,Mb:i,ub:t.invertFilledArea,ot:this.lg,tb:this.Je.At().wu()}),this.Db.lt({ib:t.lineVisible?t.lineType:void 0,_t:this.hg,Gt:t.lineStyle,dt:t.lineWidth,ot:this.lg,tb:this.Je.At().wu(),sb:t.pointMarkersVisible?t.pointMarkersRadius||t.lineWidth/2+2:void 0})}}const xn={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},qg:(t,i)=>new Sn(t,i)};class Cn extends D{constructor(){super(...arguments),this.jt=null,this.Ib=0,this.Vb=0}lt(t){this.jt=t}rt({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.jt||0===this.jt.Gs.length||null===this.jt.ot)return;if(this.Ib=this.Rb(i),this.Ib>=2){Math.max(1,Math.floor(i))%2!=this.Ib%2&&this.Ib--}this.Vb=this.jt.Fb?Math.min(this.Ib,Math.floor(i)):this.Ib;let e=null;const n=this.Vb<=this.Ib&&this.jt.wu>=Math.floor(1.5*i);for(let r=this.jt.ot.from;r<this.jt.ot.to;++r){const h=this.jt.Gs[r];e!==h.dr&&(t.fillStyle=h.dr,e=h.dr);const l=Math.floor(.5*this.Vb),o=Math.round(h.ut*i),a=o-l,_=this.Vb,u=a+_-1,c=Math.min(h.Go,h.Zo),d=Math.max(h.Go,h.Zo),p=Math.round(c*s)-l,f=Math.round(d*s)+l,v=Math.max(f-p,this.Vb);t.fillRect(a,p,_,v);const m=Math.ceil(1.5*this.Ib);if(n){if(this.jt.Lb){const i=o-m;let e=Math.max(p,Math.round(h.Xo*s)-l),n=e+_-1;n>p+v-1&&(n=p+v-1,e=n-_+1),t.fillRect(i,e,a-i,n-e+1)}const i=o+m;let e=Math.max(p,Math.round(h.Jo*s)-l),n=e+_-1;n>p+v-1&&(n=p+v-1,e=n-_+1),t.fillRect(u+1,e,i-u,n-e+1)}}}Rb(t){const i=Math.floor(t);return Math.max(i,Math.floor(function(t,i){return Math.floor(.3*t*i)}(u(this.jt).wu,t)))}}class Pn extends ue{constructor(t,i){super(t,i,!1)}fg(t,i,s){i.cu(this.hg,M(this.lg)),t.Ko(this.hg,s,M(this.lg))}Ab(t,i,s){return{gt:t,Yh:i.Ht[0],jh:i.Ht[1],Kh:i.Ht[2],Xh:i.Ht[3],ut:NaN,Xo:NaN,Go:NaN,Zo:NaN,Jo:NaN}}dg(){const t=this.Ze.Ih();this.hg=this.Ze.Gs().Nr().map(i=>this.Qg(i.In,i,t))}}class Tn extends Pn{constructor(){super(...arguments),this._g=new Cn}Qg(t,i,s){return{...this.Ab(t,i,s),...s.Vr(t)}}vg(){const t=this.Ze.O();this._g.lt({Gs:this.hg,wu:this.Je.At().wu(),Lb:t.openVisible,Fb:t.thinBars,ot:this.lg})}}const kn={type:"Bar",isBuiltIn:!0,defaultOptions:{upColor:"#26a69a",downColor:"#ef5350",openVisible:!0,thinBars:!0},qg:(t,i)=>new Tn(t,i)};class Dn extends D{constructor(){super(...arguments),this.jt=null,this.Ib=0}lt(t){this.jt=t}rt(t){if(null===this.jt||0===this.jt.Gs.length||null===this.jt.ot)return;const{horizontalPixelRatio:i}=t;if(this.Ib=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),r=Math.min(e,n);return Math.max(Math.floor(i),r)}(this.jt.wu,i),this.Ib>=2){Math.floor(i)%2!=this.Ib%2&&this.Ib--}const s=this.jt.Gs;this.jt.Bb&&this.Eb(t,s,this.jt.ot),this.jt.Mi&&this.cv(t,s,this.jt.ot);const e=this.Wb(i);(!this.jt.Mi||this.Ib>2*e)&&this.Ob(t,s,this.jt.ot)}Eb(t,i,s){if(null===this.jt)return;const{context:e,horizontalPixelRatio:n,verticalPixelRatio:r}=t;let h="",l=Math.min(Math.floor(n),Math.floor(this.jt.wu*n));l=Math.max(Math.floor(n),Math.min(l,this.Ib));const o=Math.floor(.5*l);let a=null;for(let t=s.from;t<s.to;t++){const s=i[t];s.vr!==h&&(e.fillStyle=s.vr,h=s.vr);const _=Math.round(Math.min(s.Xo,s.Jo)*r),u=Math.round(Math.max(s.Xo,s.Jo)*r),c=Math.round(s.Go*r),d=Math.round(s.Zo*r);let p=Math.round(n*s.ut)-o;const f=p+l-1;null!==a&&(p=Math.max(a+1,p),p=Math.min(p,f));const v=f-p+1;e.fillRect(p,c,v,_-c),e.fillRect(p,u+1,v,d-u),a=f}}Wb(t){let i=Math.floor(1*t);this.Ib<=2*i&&(i=Math.floor(.5*(this.Ib-1)));const s=Math.max(Math.floor(t),i);return this.Ib<=2*s?Math.max(Math.floor(t),Math.floor(1*t)):s}cv(t,i,s){if(null===this.jt)return;const{context:e,horizontalPixelRatio:n,verticalPixelRatio:r}=t;let h="";const l=this.Wb(n);let o=null;for(let t=s.from;t<s.to;t++){const s=i[t];s.pr!==h&&(e.fillStyle=s.pr,h=s.pr);let a=Math.round(s.ut*n)-Math.floor(.5*this.Ib);const _=a+this.Ib-1,u=Math.round(Math.min(s.Xo,s.Jo)*r),c=Math.round(Math.max(s.Xo,s.Jo)*r);if(null!==o&&(a=Math.max(o+1,a),a=Math.min(a,_)),this.jt.wu*n>2*l)B(e,a,u,_-a+1,c-u+1,l);else{const t=_-a+1;e.fillRect(a,u,t,c-u+1)}o=_}}Ob(t,i,s){if(null===this.jt)return;const{context:e,horizontalPixelRatio:n,verticalPixelRatio:r}=t;let h="";const l=this.Wb(n);for(let t=s.from;t<s.to;t++){const s=i[t];let o=Math.round(Math.min(s.Xo,s.Jo)*r),a=Math.round(Math.max(s.Xo,s.Jo)*r),_=Math.round(s.ut*n)-Math.floor(.5*this.Ib),u=_+this.Ib-1;if(s.dr!==h){const t=s.dr;e.fillStyle=t,h=t}this.jt.Mi&&(_+=l,o+=l,u-=l,a-=l),o>a||e.fillRect(_,o,u-_+1,a-o+1)}}}class In extends Pn{constructor(){super(...arguments),this._g=new Dn}Qg(t,i,s){return{...this.Ab(t,i,s),...s.Vr(t)}}vg(){const t=this.Ze.O();this._g.lt({Gs:this.hg,wu:this.Je.At().wu(),Bb:t.wickVisible,Mi:t.borderVisible,ot:this.lg})}}const Vn={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"},qg:(t,i)=>new In(t,i)};class Rn extends D{constructor(){super(...arguments),this.jt=null,this.zb=[]}lt(t){this.jt=t,this.zb=[]}rt({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.jt||0===this.jt._t.length||null===this.jt.ot)return;this.zb.length||this.$b(i);const e=Math.max(1,Math.floor(s)),n=Math.round(this.jt.Hb*s)-Math.floor(e/2),r=n+e;for(let i=this.jt.ot.from;i<this.jt.ot.to;i++){const h=this.jt._t[i],l=this.zb[i-this.jt.ot.from],o=Math.round(h.ct*s);let a,_;t.fillStyle=h.dr,o<=n?(a=o,_=r):(a=n,_=o-Math.floor(e/2)+e),t.fillRect(l.Uh,a,l.yi-l.Uh+1,_-a)}}$b(t){if(null===this.jt||0===this.jt._t.length||null===this.jt.ot)return void(this.zb=[]);const i=Math.ceil(this.jt.wu*t)<=1?0:Math.max(1,Math.floor(t)),s=Math.round(this.jt.wu*t)-i;this.zb=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.ut*t);let r,h;if(s%2){const t=(s-1)/2;r=n-t,h=n+t}else{const t=s/2;r=n-t,h=n+t-1}this.zb[i-this.jt.ot.from]={Uh:r,yi:h,Nb:n,en:e.ut*t,gt:e.gt}}for(let t=this.jt.ot.from+1;t<this.jt.ot.to;t++){const s=this.zb[t-this.jt.ot.from],e=this.zb[t-this.jt.ot.from-1];s.gt===e.gt+1&&(s.Uh-e.yi!==i+1&&(e.Nb>e.en?e.yi=s.Uh-i-1:s.Uh=e.yi+i+1))}let e=Math.ceil(this.jt.wu*t);for(let t=this.jt.ot.from;t<this.jt.ot.to;t++){const i=this.zb[t-this.jt.ot.from];i.yi<i.Uh&&(i.yi=i.Uh);const s=i.yi-i.Uh+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.zb[t-this.jt.ot.from];i.yi-i.Uh+1>e&&(i.Nb>i.en?i.yi-=1:i.Uh+=1)}}}class Fn extends je{constructor(){super(...arguments),this._g=new Rn}Qg(t,i,s){return{...this.Jg(t,i),...s.Vr(t)}}vg(){const t={_t:this.hg,wu:this.Je.At().wu(),ot:this.lg,Hb:this.Ze.$t().zt(this.Ze.O().base,u(this.Ze.Et()).Ht)};this._g.lt(t)}}const Ln={type:"Histogram",isBuiltIn:!0,defaultOptions:{color:"#26a69a",base:0},qg:(t,i)=>new Fn(t,i)};class An{constructor(t,i){this.Pt=t,this.Ub=i,this.qb()}detach(){this.Pt.detachPrimitive(this.Ub)}getPane(){return this.Pt}applyOptions(t){this.Ub.lr?.(t)}qb(){this.Pt.attachPrimitive(this.Ub)}}const Bn={visible:!0,horzAlign:"center",vertAlign:"center",lines:[]},En={color:"rgba(0, 0, 0, 0.5)",fontSize:48,fontFamily:y,fontStyle:"",text:""};class Wn{constructor(t){this.Yb=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.jb(i,t.text);n>s.width?t.Cu=s.width/n:t.Cu=1,e+=t.lineHeight*t.Cu}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.Cu,t.Cu),i.fillText(t.text,0,t.Kb),i.restore(),n+=t.lineHeight*t.Cu}})}jb(t,i){const s=this.Xb(t.font);let e=s.get(i);return void 0===e&&(e=t.measureText(i).width,s.set(i,e)),e}Xb(t){let i=this.Yb.get(t);return void 0===i&&(i=new Map,this.Yb.set(t,i)),i}}class On{constructor(t){this.Ps=$n(t)}Tt(t){this.Ps=$n(t)}renderer(){return new Wn(this.Ps)}}function zn(t){return{...t,T:S(t.fontSize,t.fontFamily,t.fontStyle),lineHeight:t.lineHeight||1.2*t.fontSize,Kb:0,Cu:0}}function $n(t){return{...t,lines:t.lines.map(zn)}}function Hn(t){return{...En,...t}}function Nn(t){return{...Bn,...t,lines:t.lines?.map(Hn)??[]}}class Un{constructor(t){this.Ps=Nn(t),this.Gb=[new On(this.Ps)]}updateAllViews(){this.Gb.forEach(t=>t.Tt(this.Ps))}paneViews(){return this.Gb}attached({requestUpdate:t}){this.Zb=t}detached(){this.Zb=void 0}lr(t){this.Ps=Nn({...this.Ps,...t}),this.Zb&&this.Zb()}}function qn(t,i){return new An(t,new Un(i))}const Yn={alpha:1,padding:0};class jn{constructor(t){this.jt=t}draw(t){t.useMediaCoordinateSpace(t=>{const i=t.context,s=this.Jb(this.jt,t.mediaSize);s&&this.jt.Qb&&(i.globalAlpha=this.jt.alpha??1,i.drawImage(this.jt.Qb,s.ut,s.ct,s.ts,s.qt))})}Jb(t,i){const{maxHeight:s,maxWidth:e,tM:n,iM:r,padding:h}=t,l=Math.round(i.width/2),o=Math.round(i.height/2),a=h??0;let _=i.width-2*a,u=i.height-2*a;s&&(u=Math.min(u,s)),e&&(_=Math.min(_,e));const c=_/r,d=u/n,p=Math.min(c,d),f=r*p,v=n*p;return{ut:l-.5*f,ct:o-.5*v,qt:v,ts:f}}}class Kn{constructor(t){this.sM=null,this.eM=0,this.nM=0,this.Ps=t,this.M=Xn(this.Ps,this.sM,this.eM,this.nM)}rM(t){void 0!==t.hM&&(this.eM=t.hM),void 0!==t.lM&&(this.nM=t.lM),void 0!==t.oM&&(this.sM=t.oM),this.Tt()}aM(t){this.Ps=t,this.Tt()}zOrder(){return"bottom"}Tt(){this.M=Xn(this.Ps,this.sM,this.eM,this.nM)}renderer(){return new jn(this.M)}}function Xn(t,i,s,e){return{...t,Qb:i,iM:s,tM:e}}function Gn(t){return{...Yn,...t}}class Zn{constructor(t,i){this._M=null,this.uM=t,this.Ps=Gn(i),this.Gb=[new Kn(this.Ps)]}updateAllViews(){this.Gb.forEach(t=>t.Tt())}paneViews(){return this.Gb}attached(t){const{requestUpdate:i}=t;this.cM=i,this._M=new Image,this._M.onload=()=>{const t=this._M?.naturalHeight??1,i=this._M?.naturalWidth??1;this.Gb.forEach(s=>s.rM({lM:t,hM:i,oM:this._M})),this.cM&&this.cM()},this._M.src=this.uM}detached(){this.cM=void 0,this._M=null}lr(t){this.Ps=Gn({...this.Ps,...t}),this.dM(),this.Zb&&this.Zb()}Zb(){this.cM&&this.cM()}dM(){this.Gb.forEach(t=>t.aM(this.Ps))}}function Jn(t,i,s){return new An(t,new Zn(i,s))}class Qn{constructor(t,i){this.Ze=t,this.ah=i,this.qb()}detach(){this.Ze.detachPrimitive(this.ah)}getSeries(){return this.Ze}applyOptions(t){this.ah&&this.ah.lr&&this.ah.lr(t)}qb(){this.Ze.attachPrimitive(this.ah)}}const tr={autoScale:!0,zOrder:"normal"};function ir(t,i){return ti(Math.min(Math.max(t,12),30)*i)}function sr(t,i){switch(t){case"arrowDown":case"arrowUp":return ir(i,1);case"circle":return ir(i,.8);case"square":return ir(i,.7)}}function er(t){return function(t){const i=Math.ceil(t);return i%2!=0?i-1:i}(ir(t,1))}function nr(t){return Math.max(ir(t,.1),3)}function rr(t,i,s){return i?t:s?Math.ceil(t/2):0}function hr(t,i,s,e){const n=(sr("arrowUp",e)-1)/2*s.pM,r=(ti(e/2)-1)/2*s.pM;i.beginPath(),t?(i.moveTo(s.ut-n,s.ct),i.lineTo(s.ut,s.ct-n),i.lineTo(s.ut+n,s.ct),i.lineTo(s.ut+r,s.ct),i.lineTo(s.ut+r,s.ct+n),i.lineTo(s.ut-r,s.ct+n),i.lineTo(s.ut-r,s.ct)):(i.moveTo(s.ut-n,s.ct),i.lineTo(s.ut,s.ct+n),i.lineTo(s.ut+n,s.ct),i.lineTo(s.ut+r,s.ct),i.lineTo(s.ut+r,s.ct-n),i.lineTo(s.ut-r,s.ct-n),i.lineTo(s.ut-r,s.ct)),i.fill()}function lr(t,i,s,e,n,r){const h=(sr("arrowUp",e)-1)/2,l=(ti(e/2)-1)/2;if(n>=i-l-2&&n<=i+l+2&&r>=(t?s:s-h)-2&&r<=(t?s+h:s)+2)return!0;return(()=>{if(n<i-h-3||n>i+h+3||r<(t?s-h-3:s)||r>(t?s:s+h+3))return!1;const e=Math.abs(n-i);return Math.abs(r-s)+3>=e/2})()}class or{constructor(){this.jt=null,this.Ee=new rt,this.$=-1,this.H="",this.Hf="",this.fM="normal"}lt(t){this.jt=t}We(t,i,s){this.$===t&&this.H===i||(this.$=t,this.H=i,this.Hf=S(t,i),this.Ee.Ve()),this.fM=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&&_r(e,t,i))return{zOrder:"normal",externalId:e.je??""}}return null}draw(t){"aboveSeries"!==this.fM&&t.useBitmapCoordinateSpace(t=>{this.rt(t)})}drawBackground(t){"aboveSeries"===this.fM&&t.useBitmapCoordinateSpace(t=>{this.rt(t)})}rt({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null!==this.jt&&null!==this.jt.ot){t.textBaseline="middle",t.font=this.Hf;for(let e=this.jt.ot.from;e<this.jt.ot.to;e++){const n=this.jt._t[e];void 0!==n.hi&&(n.hi.ts=this.Ee.Ri(t,n.hi.vM),n.hi.qt=this.$,n.hi.ut=n.ut-n.hi.ts/2),ar(n,t,i,s)}}}}function ar(t,i,s,e){i.fillStyle=t.I,void 0!==t.hi&&function(t,i,s,e,n,r){t.save(),t.scale(n,r),t.fillText(i,s,e),t.restore()}(i,t.hi.vM,t.hi.ut,t.hi.ct,s,e),function(t,i,s){if(0===t.Er)return;switch(t.mM){case"arrowDown":return void hr(!1,i,s,t.Er);case"arrowUp":return void hr(!0,i,s,t.Er);case"circle":return void function(t,i,s){const e=(sr("circle",s)-1)/2;t.beginPath(),t.arc(i.ut,i.ct,e*i.pM,0,2*Math.PI,!1),t.fill()}(i,s,t.Er);case"square":return void function(t,i,s){const e=sr("square",s),n=(e-1)*i.pM/2,r=i.ut-n,h=i.ct-n;t.fillRect(r,h,e*i.pM,e*i.pM)}(i,s,t.Er)}t.mM}(t,i,function(t,i,s){const e=Math.max(1,Math.floor(i))%2/2;return{ut:Math.round(t.ut*i)+e,ct:t.ct*s,pM:i}}(t,s,e))}function _r(t,i,s){return!(void 0===t.hi||!function(t,i,s,e,n,r){const h=e/2;return n>=t&&n<=t+s&&r>=i-h&&r<=i+h}(t.hi.ut,t.hi.ct,t.hi.ts,t.hi.qt,i,s))||function(t,i,s){if(0===t.Er)return!1;switch(t.mM){case"arrowDown":return lr(!0,t.ut,t.ct,t.Er,i,s);case"arrowUp":return lr(!1,t.ut,t.ct,t.Er,i,s);case"circle":return function(t,i,s,e,n){const r=2+sr("circle",s)/2,h=t-e,l=i-n;return Math.sqrt(h*h+l*l)<=r}(t.ut,t.ct,t.Er,i,s);case"square":return function(t,i,s,e,n){const r=sr("square",s),h=(r-1)/2,l=t-h,o=i-h;return e>=l&&e<=l+r&&n>=o&&n<=o+r}(t.ut,t.ct,t.Er,i,s)}}(t,i,s)}function ur(t){return"atPriceTop"===t||"atPriceBottom"===t||"atPriceMiddle"===t}function cr(t,i,s,e,n,r,h,l){const o=function(t,i,s){if(ur(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,h.priceScale().options().invertScale);if(void 0===o)return;const a=ur(i.position),_=l.timeScale(),c=f(i.size)?Math.max(i.size,0):1,d=er(_.options().barSpacing)*c,p=d/2;t.Er=d;switch(i.position){case"inBar":case"atPriceMiddle":return t.ct=u(h.priceToCoordinate(o)),void(void 0!==t.hi&&(t.hi.ct=t.ct+p+r+.6*n));case"aboveBar":case"atPriceTop":{const i=a?0:e.wM;return t.ct=u(h.priceToCoordinate(o))-p-i,void 0!==t.hi&&(t.hi.ct=t.ct-p-.6*n,e.wM+=1.2*n),void(a||(e.wM+=d+r))}case"belowBar":case"atPriceBottom":{const i=a?0:e.gM;return t.ct=u(h.priceToCoordinate(o))+p+i,void 0!==t.hi&&(t.hi.ct=t.ct+p+r+.6*n,e.gM+=1.2*n),void(a||(e.gM+=d+r))}}}class dr{constructor(t,i,s){this.bM=[],this.xt=!0,this.MM=!0,this.Jt=new or,this.bn=t,this.Rf=i,this.jt={_t:[],ot:null},this.Ps=s}renderer(){if(!this.bn.options().visible)return null;this.xt&&this.yM();const t=this.Rf.options().layout;return this.Jt.We(t.fontSize,t.fontFamily,this.Ps.zOrder),this.Jt.lt(this.jt),this.Jt}SM(t){this.bM=t,this.Tt("data")}Tt(t){this.xt=!0,"data"===t&&(this.MM=!0)}xM(t){this.xt=!0,this.Ps=t}zOrder(){return"aboveSeries"===this.Ps.zOrder?"top":this.Ps.zOrder}yM(){const t=this.Rf.timeScale(),i=this.bM;this.MM&&(this.jt._t=i.map(t=>({gt:t.time,ut:0,ct:0,Er:0,mM:t.shape,I:t.color,je:t.id,CM:t.CM,hi:void 0})),this.MM=!1);const s=this.Rf.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.bn.data()[0])return;if(0===this.jt._t.length)return;let r=NaN;const h=nr(t.options().barSpacing),l={wM:h,gM:h};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!==r&&(l.wM=h,l.gM=h,r=n.time);const o=this.jt._t[e];o.ut=u(t.logicalToCoordinate(n.time)),void 0!==n.text&&n.text.length>0&&(o.hi={vM:n.text,ut:0,ct:0,ts:0,qt:0});const a=this.bn.dataByIndex(n.time,0);null!==a&&cr(o,n,a,l,s.fontSize,h,this.bn,this.Rf)}this.xt=!1}}function pr(t){return{...tr,...t}}class fr{constructor(t){this.eh=null,this.bM=[],this.PM=[],this.TM=null,this.bn=null,this.Rf=null,this.kM=!0,this.DM=null,this.IM=null,this.VM=null,this.RM=!0,this.Ps=pr(t)}attached(t){this.FM(),this.Rf=t.chart,this.bn=t.series,this.eh=new dr(this.bn,u(this.Rf),this.Ps),this.cM=t.requestUpdate,this.bn.subscribeDataChanged(t=>this.Dg(t)),this.RM=!0,this.Zb()}Zb(){this.cM&&this.cM()}detached(){this.bn&&this.TM&&this.bn.unsubscribeDataChanged(this.TM),this.Rf=null,this.bn=null,this.eh=null,this.TM=null}SM(t){this.RM=!0,this.bM=t,this.FM(),this.kM=!0,this.IM=null,this.Zb()}LM(){return this.bM}paneViews(){return this.eh?[this.eh]:[]}updateAllViews(){this.AM()}hitTest(t,i){return this.eh?this.eh.renderer()?.Ye(t,i)??null:null}autoscaleInfo(t,i){if(this.Ps.autoScale&&this.eh){const t=this.BM();if(t)return{priceRange:null,margins:t}}return null}lr(t){this.Ps=pr({...this.Ps,...t}),this.Zb&&this.Zb()}BM(){const t=u(this.Rf).timeScale().options().barSpacing;if(this.kM||t!==this.VM){if(this.VM=t,this.bM.length>0){const i=nr(t),s=1.5*er(t)+2*i,e=this.EM();this.DM={above:rr(s,e.aboveBar,e.inBar),below:rr(s,e.belowBar,e.inBar)}}else this.DM=null;this.kM=!1}return this.DM}EM(){return null===this.IM&&(this.IM=this.bM.reduce((t,i)=>(t[i.position]||(t[i.position]=!0),t),{inBar:!1,aboveBar:!1,belowBar:!1,atPriceTop:!1,atPriceBottom:!1,atPriceMiddle:!1})),this.IM}FM(){if(!this.RM||!this.Rf||!this.bn)return;const t=this.Rf.timeScale(),i=this.bn?.data();if(null==t.getVisibleLogicalRange()||!this.bn||0===i.length)return void(this.PM=[]);const s=t.timeToIndex(u(i[0].time),!0);this.PM=this.bM.map((i,e)=>{const n=t.timeToIndex(i.time,!0),r=n<s?1:-1,h=u(this.bn).dataByIndex(n,r),l={time:t.timeToIndex(u(h).time,!1),position:i.position,shape:i.shape,color:i.color,id:i.id,CM:e,text:i.text,size:i.size,price:i.price,Tw: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{...l,position:i.position,price:i.price}}return{...l,position:i.position,price:i.price}}),this.RM=!1}AM(t){this.eh&&(this.FM(),this.eh.SM(this.PM),this.eh.xM(this.Ps),this.eh.Tt(t))}Dg(t){this.RM=!0,this.Zb()}}class vr extends Qn{constructor(t,i,s){super(t,i),s&&this.setMarkers(s)}setMarkers(t){this.ah.SM(t)}markers(){return this.ah.LM()}}function mr(t,i,s){const e=new vr(t,new fr(s??{}));return i&&e.setMarkers(i),e}class wr{constructor(t){this.bM=new Map,this.WM=t}OM(t,i,s){if(this.zM(i),void 0!==s){const e=window.setTimeout(()=>{this.bM.delete(i),this.$M()},s),n={...t,HM:e,NM:Date.now()+s};this.bM.set(i,n)}else this.bM.set(i,{...t,HM:void 0,NM:void 0});this.$M()}zM(t){const i=this.bM.get(t);i&&void 0!==i.HM&&window.clearTimeout(i.HM),this.bM.delete(t),this.$M()}UM(){for(const[t]of this.bM)this.zM(t)}qM(){const t=Date.now(),i=[];for(const[s,e]of this.bM)!e.NM||e.NM>t?i.push({time:e.time,sign:e.sign,value:e.value}):this.zM(s);return i}YM(t){this.WM=t}$M(){this.WM&&this.WM()}}const gr={positiveColor:"#22AB94",negativeColor:"#F7525F",updateVisibilityDuration:5e3};class br{constructor(t,i,s,e){this.jt=t,this.jM=i,this.KM=s,this.XM=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 r=Math.round(n.ut*t.horizontalPixelRatio)+s;i.beginPath();const h=this.GM(n.ZM);i.fillStyle=h,i.arc(r,n.ct*t.verticalPixelRatio,e,0,2*Math.PI,!1),i.fill(),n.ZM&&(i.strokeStyle=h,i.lineWidth=Math.floor(2*t.horizontalPixelRatio),i.beginPath(),i.moveTo((n.ut-4.7)*t.horizontalPixelRatio+s,(n.ct-7*n.ZM)*t.verticalPixelRatio),i.lineTo(n.ut*t.horizontalPixelRatio+s,(n.ct-7*n.ZM-7*n.ZM*.5)*t.verticalPixelRatio),i.lineTo((n.ut+4.7)*t.horizontalPixelRatio+s,(n.ct-7*n.ZM)*t.verticalPixelRatio),i.stroke())})})}GM(t){return 0===t?this.jM:t>0?this.XM:this.KM}}class Mr{constructor(t,i,s){this.jt=[],this.bn=t,this.dh=i,this.Ps=s}Tt(t){this.jt=t.map(t=>{const i=this.bn.priceToCoordinate(t.value);if(null===i)return null;return{ut:u(this.dh.timeToCoordinate(t.time)),ct:i,ZM:t.sign}}).filter(b)}renderer(){const t=function(t,i){return function(t,i){return"Area"===i}(0,i)?t.lineColor:t.color}(this.bn.options(),this.bn.seriesType());return new br(this.jt,t,this.Ps.negativeColor,this.Ps.positiveColor)}}function yr(t,i){return"Line"===i||"Area"===i}class Sr{constructor(t){this.Rf=void 0,this.bn=void 0,this.Gb=[],this.__=null,this.JM=new Map,this.QM=new wr(()=>this.Zb()),this.Ps={...gr,...t}}lr(t){this.Ps={...this.Ps,...t},this.Zb()}SM(t){this.QM.UM();const i=this.__;i&&t.forEach(t=>{this.QM.OM(t,i.key(t.time))})}LM(){return this.QM.qM()}Zb(){this.cM?.()}attached(t){const{chart:i,series:s,requestUpdate:e,horzScaleBehavior:n}=t;this.Rf=i,this.bn=s,this.__=n;const r=this.bn.seriesType();if("Area"!==r&&"Line"!==r)throw new Error("UpDownMarkersPrimitive is only supported for Area and Line series types");this.Gb=[new Mr(this.bn,this.Rf.timeScale(),this.Ps)],this.cM=e,this.Zb()}detached(){this.Rf=void 0,this.bn=void 0,this.cM=void 0}Yf(){return _(this.Rf)}Oa(){return _(this.bn)}updateAllViews(){this.Gb.forEach(t=>t.Tt(this.LM()))}paneViews(){return this.Gb}lt(t){if(!this.bn)throw new Error("Primitive not attached to series");const i=this.bn.seriesType();this.JM.clear();const s=this.__;s&&t.forEach(t=>{Ys(t)&&yr(0,i)&&this.JM.set(s.key(t.time),t.value)}),_(this.bn).setData(t)}Tt(t,i){if(!this.bn||!this.__)throw new Error("Primitive not attached to series");const s=this.bn.seriesType(),e=this.__.key(t.time);if(qs(t)&&this.JM.delete(e),Ys(t)&&yr(0,s)){const i=this.JM.get(e);i&&this.QM.OM({time:t.time,value:t.value,sign:xr(t.value,i)},e,this.Ps.updateVisibilityDuration)}_(this.bn).update(t,i)}ty(){this.QM.UM()}}function xr(t,i){return t===i?0:t-i>0?1:-1}class Cr extends Qn{setData(t){return this.ah.lt(t)}update(t,i){return this.ah.Tt(t,i)}markers(){return this.ah.LM()}setMarkers(t){return this.ah.SM(t)}clearMarkers(){return this.ah.ty()}}function Pr(t,i={}){return new Cr(t,new Sr(i))}class Tr{constructor(t,i){this.iy=null,this.sy=[],this.Ps={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.iy=mr(t)}addPosition(t){this.sy.push(t),this.ey()}addPositions(t){this.sy.push(...t),this.ey()}setPositions(t){this.sy=[...t],this.ey()}closePosition(t,i,s){const e=this.sy.find(i=>i.id===t);e&&(e.exit=i,s&&e.text?e.text.exit=s:s&&(e.text={exit:s}),this.ey())}removePosition(t){this.sy=this.sy.filter(i=>i.id!==t),this.ey()}clearPositions(){this.sy=[],this.ey()}getPositions(){return this.sy}applyOptions(t){t.longColors&&(this.Ps.longColors={...this.Ps.longColors,...t.longColors}),t.shortColors&&(this.Ps.shortColors={...this.Ps.shortColors,...t.shortColors}),void 0!==t.defaultSize&&(this.Ps.defaultSize=t.defaultSize),void 0!==t.entryOffset&&(this.Ps.entryOffset=t.entryOffset),void 0!==t.exitOffset&&(this.Ps.exitOffset=t.exitOffset),this.ey()}ny(){const t=[];for(const i of this.sy){const s="long"===i.type,e=i.size??this.Ps.defaultSize,n=i.color?.entry??(s?this.Ps.longColors.entry:this.Ps.shortColors.entry),r=i.color?.exit??(s?this.Ps.longColors.exit:this.Ps.shortColors.exit),h={time:i.entry.time,position:"atPriceMiddle",price:i.entry.price+this.Ps.entryOffset,shape:s?"arrowUp":"arrowDown",color:n,size:e};if(i.text?.entry&&(h.text=i.text.entry),i.id&&(h.id=`${i.id}-entry`),t.push(h),i.exit){const n={time:i.exit.time,position:"atPriceMiddle",price:i.exit.price+this.Ps.exitOffset,shape:s?"arrowDown":"arrowUp",color:r,size:e};i.text?.exit&&(n.text=i.text.exit),i.id&&(n.id=`${i.id}-exit`),t.push(n)}}return t}ey(){if(this.iy){const t=this.ny();this.iy.setMarkers(t)}}detach(){this.iy&&(this.iy.detach(),this.iy=null),this.sy=[]}}function kr(t,i,s){const e=new Tr(t,s);return i&&i.length>0&&e.setPositions(i),e}const Dr=new WeakMap;function Ir(t){return"string"==typeof t?t:String(t)}function Vr(t,i){const s=new Map;for(const t of i)null!=t&&"time"in t&&"volume"in t&&s.set(Ir(t.time),t.volume);Dr.set(t,s)}function Rr(t,i){return Dr.get(t)?.get(Ir(i))}function Fr(t){const i=Dr.get(t);return void 0!==i&&i.size>0}const Lr="rgba(0, 0, 0, 0)";function Ar(t){switch(t.seriesType()){case"Candlestick":return Br(t,{upColor:Lr,downColor:Lr,borderVisible:!1,wickVisible:!1});case"Bar":return Br(t,{upColor:Lr,downColor:Lr});case"Line":return Br(t,{color:Lr,crosshairMarkerVisible:!1,pointMarkersVisible:!1});case"Area":return Br(t,{lineColor:Lr,topColor:Lr,bottomColor:Lr,crosshairMarkerVisible:!1,pointMarkersVisible:!1});case"Baseline":return Br(t,{topLineColor:Lr,topFillColor1:Lr,topFillColor2:Lr,bottomLineColor:Lr,bottomFillColor1:Lr,bottomFillColor2:Lr,crosshairMarkerVisible:!1,pointMarkersVisible:!1});case"Histogram":return Br(t,{color:Lr});default:return Br(t,{visible:!1})}}function Br(t,i){const s={...i,lastValueVisible:!1,priceLineVisible:!1},e=t.options(),n={};for(const t of Object.keys(s))n[t]=e[t];return t.applyOptions(s),()=>{t.applyOptions(n)}}function Er(t,i){return()=>{const s={};s.minValue=t,s.maxValue=i;const e={};return e.priceRange=s,e}}function Wr(t,i,s){const e=t.panes();for(const t of e)if(-1!==t.getSeries().indexOf(i))return t.paneIndex();return Math.min(s,Math.max(e.length-1,0))}function Or(t,i="close"){const s=[];for(const e of t)if(null!=e)if("close"in e)switch(i){case"open":s.push(e.open);break;case"high":s.push(e.high);break;case"low":s.push(e.low);break;case"hl2":s.push((e.high+e.low)/2);break;case"hlc3":s.push((e.high+e.low+e.close)/3);break;case"ohlc4":s.push((e.open+e.high+e.low+e.close)/4);break;default:s.push(e.close)}else s.push("value"in e?e.value:0);else s.push(0);return s}function zr(t,i){let s=[];return e=>{for(const i of s)try{t.removePriceLine(i)}catch(t){}s=e.filter(t=>null!=t).map(s=>{const e={price:s,color:i,lineWidth:1,lineStyle:2,axisLabelVisible:!1,title:""};return t.createPriceLine(e)})}}function $r(t){return null==t?void 0:t.time}function Hr(t){const{n_:i,Yf:s,hy:e,ly:n,oy:r,Zl:h}=t,l=t._y??[];let o=t.O,a=[],_=new Map,u=!1;const c=(t,i)=>{if(0===i.length)return;const s=_.get(t),e=i[i.length-1];if(void 0!==s&&s.length>0){const n=i.length===s.length+1,r=i.length===s.length,h=$r(s[s.length-1])===$r(e);if(n||r&&h)return t.update(e),void _.set(t,i)}t.setData(i),_.set(t,i)},d=t=>{if(!u)try{if("full"===t||0===a.length)a=i.data();else{const t=function(t){return t.dataByIndex(Number.MAX_SAFE_INTEGER,-1)}(i);if(null===t)return;a.length>0&&$r(a[a.length-1])===$r(t)?a[a.length-1]=t:a.push(t)}if(0===a.length)return;const s=n(a,o);for(const[t,i]of s)c(t,i);s.every(([,t])=>0===t.length)&&a.length}catch(t){console.error(`Error calculating ${h}:`,t)}},p=t=>d(t);i.subscribeDataChanged(p),void 0!==r&&r(o),d("full");const f={applyOptions:t=>{if(u||null==t)return;const i=o;o={...o,...t},void 0!==r&&r(o),l.some(t=>i[t]!==o[t])&&(_=new Map,d("full"))},options:()=>({...o}),remove:()=>{if(!u){u=!0,i.unsubscribeDataChanged(p);for(const t of e)try{s.removeSeries(t)}catch(t){}_=new Map,a=[]}},recalculate:()=>d("full")};return f}function Nr(t,i,s={}){const e={paneIndex:s.paneIndex??0,period:s.period??20,color:s.color??"#2196F3",lineWidth:s.lineWidth??2,source:s.source??"close",lineStyle:s.lineStyle??0},n=i.addSeries(nn,{color:e.color,lineWidth:e.lineWidth,priceFormat:{type:"price",precision:2,minMove:.01}},e.paneIndex),r=(t,i,s)=>{if(!t||t.length<i)return[];const e=Or(t,s),n=[];for(let s=i-1;s<e.length;s++){let r=0;for(let t=0;t<i;t++)r+=e[s-t];const h=r/i;t[s]&&t[s].time&&n.push({time:t[s].time,value:h})}return n},h=Hr({n_:t,Yf:i,hy:[n],Zl:"SMA",O:e,_y:["period","source"],ly:(t,i)=>[[n,r(t,i.period??20,i.source??"close")]],oy:t=>{n.applyOptions({color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle})}});return{series:n,...h}}function Ur(t,i,s={}){const e={paneIndex:s.paneIndex??0,period:s.period??12,color:s.color??"#FF9800",lineWidth:s.lineWidth??2,source:s.source??"close",lineStyle:s.lineStyle??0},n=i.addSeries(nn,{color:e.color,lineWidth:e.lineWidth,priceFormat:{type:"price",precision:2,minMove:.01}},e.paneIndex),r=(t,i,s)=>{if(!t||t.length<i)return[];const e=Or(t,s),n=[],r=2/(i+1);let h=0;for(let t=0;t<i;t++)h+=e[t];h/=i,t[i-1]&&t[i-1].time&&n.push({time:t[i-1].time,value:h});for(let s=i;s<e.length;s++)h=(e[s]-h)*r+h,t[s]&&t[s].time&&n.push({time:t[s].time,value:h});return n},h=Hr({n_:t,Yf:i,hy:[n],Zl:"EMA",O:e,_y:["period","source"],ly:(t,i)=>[[n,r(t,i.period??12,i.source??"close")]],oy:t=>{n.applyOptions({color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle})}});return{series:n,...h}}function qr(t,i,s={}){const e={paneIndex:s.paneIndex??0,period:s.period??20,color:s.color??"#4CAF50",lineWidth:s.lineWidth??2,source:s.source??"close",lineStyle:s.lineStyle??0},n=i.addSeries(nn,{color:e.color,lineWidth:e.lineWidth,priceFormat:{type:"price",precision:2,minMove:.01}},e.paneIndex),r=(t,i,s)=>{if(!t||t.length<i)return[];const e=Or(t,s),n=[],r=i*(i+1)/2;for(let s=i-1;s<e.length;s++){let h=0;for(let t=0;t<i;t++){const n=t+1;h+=e[s-i+1+t]*n}const l=h/r;t[s]&&t[s].time&&n.push({time:t[s].time,value:l})}return n},h=Hr({n_:t,Yf:i,hy:[n],Zl:"WMA",O:e,_y:["period","source"],ly:(t,i)=>[[n,r(t,i.period??20,i.source??"close")]],oy:t=>{n.applyOptions({color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle})}});return{series:n,...h}}function Yr(t,i,s={}){const e={paneIndex:s.paneIndex??0,period:s.period??20,stdDev:s.stdDev??2,colorUpper:s.colorUpper??"#3F51B5",colorMiddle:s.colorMiddle??"#2196F3",colorLower:s.colorLower??"#3F51B5",lineWidth:s.lineWidth??1},n=e.paneIndex,r=i.addSeries(nn,{color:e.colorUpper},n),h=i.addSeries(nn,{color:e.colorMiddle},n),l=i.addSeries(nn,{color:e.colorLower},n),o=Hr({n_:t,Yf:i,hy:[r,h,l],Zl:"Bollinger Bands",O:e,_y:["period","stdDev"],ly:(t,i)=>{const s=((t,i,s)=>{if(!t||t.length<i)return{uy:[],py:[],vy:[]};const e=[];for(const i of t)"close"in i?e.push(i.close):"value"in i?e.push(i.value):e.push(0);const n=[],r=[],h=[];for(let l=i-1;l<e.length;l++){let o=0;for(let t=0;t<i;t++)o+=e[l-t];const a=o/i;let _=0;for(let t=0;t<i;t++)_+=Math.pow(e[l-t]-a,2);const u=Math.sqrt(_/i),c=a+u*s,d=a-u*s;if(t[l]&&t[l].time){const i=t[l].time;n.push({time:i,value:c}),r.push({time:i,value:a}),h.push({time:i,value:d})}}return{uy:n,py:r,vy:h}})(t,i.period??20,i.stdDev??2);return[[r,s.uy],[h,s.py],[l,s.vy]]},oy:t=>{const i=t.lineWidth??1;r.applyOptions({color:t.colorUpper,lineWidth:i}),h.applyOptions({color:t.colorMiddle,lineWidth:Math.min(i+1,4)}),l.applyOptions({color:t.colorLower,lineWidth:i})}});return{upper:r,middle:h,lower:l,...o}}function jr(t,i,s={}){const e={paneIndex:s.paneIndex??0,period:s.period??20,atrPeriod:s.atrPeriod??10,multiplier:s.multiplier??2,source:s.source??"close",colorUpper:s.colorUpper??"#787B86",colorMiddle:s.colorMiddle??"#2962FF",colorLower:s.colorLower??"#787B86",lineWidth:s.lineWidth??1,lineStyle:s.lineStyle??0},n=e.paneIndex,r=i.addSeries(nn,{color:e.colorUpper},n),h=i.addSeries(nn,{color:e.colorMiddle},n),l=i.addSeries(nn,{color:e.colorLower},n),o=Hr({n_:t,Yf:i,hy:[r,h,l],Zl:"Keltner Channels",O:e,_y:["period","atrPeriod","multiplier","source"],ly:(t,i)=>{const s=((t,i)=>{const s=i.period??20,e=i.atrPeriod??10,n=i.multiplier??2;if(!t||t.length<Math.max(s,e+1))return{uy:[],py:[],vy:[]};const r=Or(t,i.source??"close"),h=[],l=2/(s+1);let o=0;for(let t=0;t<s;t++)o+=r[t];h.push(o/s);for(let t=s;t<r.length;t++)h.push((r[t]-h[h.length-1])*l+h[h.length-1]);const a=[];for(let i=1;i<t.length;i++){const s=t[i],e=t[i-1];"high"in s&&"low"in s&&"close"in e?a.push(Math.max(s.high-s.low,Math.abs(s.high-e.close),Math.abs(s.low-e.close))):a.push(0)}const _=[];let u=0;for(let t=0;t<e;t++)u+=a[t];_[e-1]=u/e;for(let t=e;t<a.length;t++)_[t]=(_[t-1]*(e-1)+a[t])/e;const c=[],d=[],p=[];for(let i=0;i<h.length;i++){const e=s-1+i,r=t[e],l=_[e-1];if(!r||void 0===r.time||void 0===l)continue;const o=h[i],a=l*n;d.push({time:r.time,value:o}),c.push({time:r.time,value:o+a}),p.push({time:r.time,value:o-a})}return{uy:c,py:d,vy:p}})(t,i);return[[r,s.uy],[h,s.py],[l,s.vy]]},oy:t=>{const i=t.lineWidth??1,s=t.lineStyle;r.applyOptions({color:t.colorUpper,lineWidth:i,lineStyle:s}),h.applyOptions({color:t.colorMiddle,lineWidth:Math.min((t.lineWidth??1)+1,4),lineStyle:s}),l.applyOptions({color:t.colorLower,lineWidth:i,lineStyle:s})}});return{upper:r,middle:h,lower:l,...o}}function Kr(t,i,s={}){const e={paneIndex:s.paneIndex??0,period:s.period??20,colorUpper:s.colorUpper??"#089981",colorMiddle:s.colorMiddle??"#787B86",colorLower:s.colorLower??"#F23645",lineWidth:s.lineWidth??1,lineStyle:s.lineStyle??0,showMiddle:s.showMiddle??!0},n=e.paneIndex,r=i.addSeries(nn,{color:e.colorUpper},n),h=i.addSeries(nn,{color:e.colorMiddle},n),l=i.addSeries(nn,{color:e.colorLower},n),o=Hr({n_:t,Yf:i,hy:[r,h,l],Zl:"Donchian Channels",O:e,_y:["period"],ly:(t,i)=>{const s=((t,i)=>{if(!t||t.length<i)return{uy:[],py:[],vy:[]};const s=[],e=[],n=[];for(let r=i-1;r<t.length;r++){let h=-1/0,l=1/0;for(let s=0;s<i;s++){const i=t[r-s],e="high"in i?i.high:i.value,n="low"in i?i.low:i.value;e>h&&(h=e),n<l&&(l=n)}const o=t[r];void 0!==o.time&&h!==-1/0&&l!==1/0&&(s.push({time:o.time,value:h}),n.push({time:o.time,value:l}),e.push({time:o.time,value:(h+l)/2}))}return{uy:s,py:e,vy:n}})(t,i.period??20);return[[r,s.uy],[h,s.py],[l,s.vy]]},oy:t=>{const i=t.lineWidth??1,s=t.lineStyle;r.applyOptions({color:t.colorUpper,lineWidth:i,lineStyle:s}),h.applyOptions({color:t.colorMiddle,lineWidth:i,lineStyle:s,visible:t.showMiddle??!0}),l.applyOptions({color:t.colorLower,lineWidth:i,lineStyle:s})}});return{upper:r,middle:h,lower:l,...o}}function Xr(t,i,s={}){const e={paneIndex:s.paneIndex??0,step:s.step??.02,maxStep:s.maxStep??.2,colorUp:s.colorUp??"#089981",colorDown:s.colorDown??"#F23645",dotSize:s.dotSize??2},n=i.addSeries(nn,{color:e.colorUp,lineVisible:!1,pointMarkersVisible:!0,pointMarkersRadius:e.dotSize},e.paneIndex),r=(t,i,s,e,n)=>{if(!t||t.length<3)return[];const r=t[0],h=t[1];if(!("high"in r)||!("low"in r))return[];const l=[];let o=h.close>=r.close,a=o?r.low:r.high,_=o?h.high:h.low,u=i;for(let r=1;r<t.length;r++){const h=t[r],c=t[r-1];if("high"in h&&"low"in h&&(a+=u*(_-a),o?(a=Math.min(a,c.low,t[r-2]?t[r-2].low:c.low),h.low<a?(o=!1,a=_,_=h.low,u=i):h.high>_&&(_=h.high,u=Math.min(u+i,s))):(a=Math.max(a,c.high,t[r-2]?t[r-2].high:c.high),h.high>a?(o=!0,a=_,_=h.high,u=i):h.low<_&&(_=h.low,u=Math.min(u+i,s))),void 0!==h.time)){const t={};t.time=h.time,t.value=a,t.color=o?e:n,l.push(t)}}return l},h=Hr({n_:t,Yf:i,hy:[n],Zl:"Parabolic SAR",O:e,_y:["step","maxStep","colorUp","colorDown"],ly:(t,i)=>[[n,r(t,i.step??.02,i.maxStep??.2,i.colorUp??"#089981",i.colorDown??"#F23645")]],oy:t=>{n.applyOptions({pointMarkersRadius:t.dotSize})}});return{series:n,...h}}function Gr(t,i){let s;if("number"==typeof t)s=new Date(1e3*t);else if("string"==typeof t)s=new Date(`${t}T00:00:00Z`);else{if(null===t||"object"!=typeof t||!("year"in t))return null;{const i=t;s=new Date(Date.UTC(i.my,i.wy-1,i.gy))}}if(Number.isNaN(s.getTime()))return null;const e=s.getUTCFullYear();if("monthly"===i)return`${e}-${s.getUTCMonth()}`;if("weekly"===i){const t=new Date(s.getTime()),i=(t.getUTCDay()+6)%7;return t.setUTCDate(t.getUTCDate()-i),`${t.getUTCFullYear()}-${t.getUTCMonth()}-${t.getUTCDate()}`}return`${e}-${s.getUTCMonth()}-${s.getUTCDate()}`}function Zr(t,i,s={}){const e={paneIndex:s.paneIndex??0,anchorPeriod:s.anchorPeriod??"daily",color:s.color??"#2962FF",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??0,bandMultiplier:s.bandMultiplier??0,bandColor:s.bandColor??"#787B86"},n=e.paneIndex,r=i.addSeries(nn,{color:e.color},n),h=i.addSeries(nn,{color:e.bandColor},n),l=i.addSeries(nn,{color:e.bandColor},n),o=Hr({n_:t,Yf:i,hy:[r,h,l],Zl:"VWAP",O:e,_y:["anchorPeriod","bandMultiplier"],ly:(i,s)=>{const e=((i,s,e)=>{const n=[],r=[],h=[];if(!i||0===i.length||!Fr(t))return{by:n,uy:r,vy:h};let l=null,o=0,a=0,_=0;for(const u of i){const i=Gr(u.time,s);if(null===i||void 0===u.time)continue;i!==l&&(l=i,o=0,a=0,_=0);const c="high"in u&&"low"in u&&"close"in u?(u.high+u.low+u.close)/3:u.value,d=Rr(t,u.time)??0;if(o+=d,a+=c*d,_+=c*c*d,0===o)continue;const p=a/o;if(n.push({time:u.time,value:p}),e>0){const t=Math.max(_/o-p*p,0),i=Math.sqrt(t)*e;r.push({time:u.time,value:p+i}),h.push({time:u.time,value:p-i})}}return{by:n,uy:r,vy:h}})(i,s.anchorPeriod??"daily",s.bandMultiplier??0);return[[r,e.by],[h,e.uy],[l,e.vy]]},oy:t=>{const i=t.lineWidth??2,s=t.lineStyle,e=(t.bandMultiplier??0)>0;r.applyOptions({color:t.color,lineWidth:i,lineStyle:s}),h.applyOptions({color:t.bandColor,lineWidth:1,lineStyle:s,visible:e}),l.applyOptions({color:t.bandColor,lineWidth:1,lineStyle:s,visible:e})}});return{series:r,upper:h,lower:l,...o}}function Jr(t,i,s={}){const e={paneIndex:s.paneIndex??0,period:s.period??10,multiplier:s.multiplier??3,colorUp:s.colorUp??"#089981",colorDown:s.colorDown??"#F23645",lineWidth:s.lineWidth??2},n=i.addSeries(nn,{color:e.colorUp,lineWidth:e.lineWidth},e.paneIndex),r=(t,i,s,e,n)=>{if(!t||t.length<i+1)return[];const r=[];for(let i=1;i<t.length;i++){const s=t[i],e=t[i-1];"high"in s&&"low"in s&&"close"in e?r.push(Math.max(s.high-s.low,Math.abs(s.high-e.close),Math.abs(s.low-e.close))):r.push(0)}const h=[];let l=0;for(let t=0;t<i;t++)l+=r[t];h[i-1]=l/i;for(let t=i;t<r.length;t++)h[t]=(h[t-1]*(i-1)+r[t])/i;const o=[];let a=0,_=0,u=!0,c=!1;for(let r=i;r<t.length;r++){const i=t[r],l=t[r-1],d=h[r-1];if(!("high"in i)||!("low"in i)||void 0===d)continue;const p=(i.high+i.low)/2,f=p+s*d,v=p-s*d;if(c?(a=f<a||l.close>a?f:a,_=v>_||l.close<_?v:_,u&&i.close<_?u=!1:!u&&i.close>a&&(u=!0)):(a=f,_=v,u=i.close>=p,c=!0),void 0===i.time)continue;const m={};m.time=i.time,m.value=u?_:a,m.color=u?e:n,o.push(m)}return o},h=Hr({n_:t,Yf:i,hy:[n],Zl:"SuperTrend",_y:["period","multiplier","colorUp","colorDown"],O:e,ly:(t,i)=>[[n,r(t,i.period??10,i.multiplier??3,i.colorUp??"#089981",i.colorDown??"#F23645")]],oy:t=>{n.applyOptions({lineWidth:t.lineWidth})}});return{series:n,...h}}class Qr{constructor(t,i,s,e){this.Rf=t,this.bn=i,this.V_=s,this.My=e}draw(t){const i=this.My();if(!i.Rt||i.yy<=0)return;const s=this.V_();s.length<2||t.useBitmapCoordinateSpace(t=>{const e=t.context,n=this.Rf.timeScale();for(let r=1;r<s.length;r++){const h=s[r-1],l=s[r],o=n.timeToCoordinate(h.gt),a=n.timeToCoordinate(l.gt);if(null===o||null===a)continue;const _=this.bn.priceToCoordinate(h.Sy),u=this.bn.priceToCoordinate(h.xy),c=this.bn.priceToCoordinate(l.Sy),d=this.bn.priceToCoordinate(l.xy);if(null===_||null===u||null===c||null===d)continue;const p=h.Sy>=h.xy;e.fillStyle=this.Cy(p?i.Py:i.Ty,i.yy),e.beginPath(),e.moveTo(o*t.horizontalPixelRatio,_*t.verticalPixelRatio),e.lineTo(a*t.horizontalPixelRatio,c*t.verticalPixelRatio),e.lineTo(a*t.horizontalPixelRatio,d*t.verticalPixelRatio),e.lineTo(o*t.horizontalPixelRatio,u*t.verticalPixelRatio),e.closePath(),e.fill()}})}Cy(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}}class th{constructor(t,i,s,e){this.Jt=new Qr(t,i,s,e)}renderer(){return this.Jt}zOrder(){return"bottom"}}function ih(t,i,s){if(i<s-1)return null;let e=-1/0,n=1/0;for(let r=0;r<s;r++){const s=t[i-r],h="high"in s?s.high:s.value,l="low"in s?s.low:s.value;h>e&&(e=h),l<n&&(n=l)}return e===-1/0?null:(e+n)/2}function sh(t,i,s={}){const e={paneIndex:s.paneIndex??0,conversionPeriod:s.conversionPeriod??9,basePeriod:s.basePeriod??26,spanBPeriod:s.spanBPeriod??52,displacement:s.displacement??26,colorConversion:s.colorConversion??"#2962FF",colorBase:s.colorBase??"#F23645",colorSpanA:s.colorSpanA??"#089981",colorSpanB:s.colorSpanB??"#F23645",colorLagging:s.colorLagging??"#787B86",cloudBullishColor:s.cloudBullishColor??"#089981",cloudBearishColor:s.cloudBearishColor??"#F23645",cloudOpacity:s.cloudOpacity??.15,showCloud:s.showCloud??!0,showLagging:s.showLagging??!0,lineWidth:s.lineWidth??1},n=e.paneIndex,r=t=>i.addSeries(nn,{color:t},n),h=r(e.colorConversion),l=r(e.colorBase),o=r(e.colorSpanA),a=r(e.colorSpanB),_=r(e.colorLagging);let u=[],c=e;const d=new th(i,t,()=>u,()=>({Py:c.cloudBullishColor??"#089981",Ty:c.cloudBearishColor??"#F23645",yy:c.cloudOpacity??.15,Rt:c.showCloud??!0})),p={attached:t=>{},detached:()=>{},paneViews:()=>[d],updateAllViews:()=>{}};t.attachPrimitive(p);const f=(t,i)=>{const s=i.conversionPeriod??9,e=i.basePeriod??26,n=i.spanBPeriod??52,r=i.displacement??26,h=[],l=[],o=[],a=[],_=[],u=[];if(!t||t.length<n)return{ky:h,nh:l,Sy:o,xy:a,Dy:_,Iy:u};const c=function(t){if(t.length<3)return null;const i=new Map;let s=null,e=0;for(let n=1;n<t.length;n++){const r=t[n-1].time,h=t[n].time;if("number"!=typeof r||"number"!=typeof h)return null;const l=h-r;if(l<=0)continue;const o=(i.get(l)??0)+1;i.set(l,o),o>e&&(e=o,s=l)}return s}(t),d=i=>{if(i<t.length)return t[i].time;if(null===c)return null;return t[t.length-1].time+c*(i-t.length+1)},p=new Map,f=new Map;for(let i=0;i<t.length;i++){const o=t[i];if(void 0===o.time)continue;const a=ih(t,i,s),u=ih(t,i,e);null!==a&&h.push({time:o.time,value:a}),null!==u&&l.push({time:o.time,value:u}),null!==a&&null!==u&&p.set(i+r,(a+u)/2);const c=ih(t,i,n);null!==c&&f.set(i+r,c);const d=i-r;if(d>=0&&void 0!==t[d].time){const i="close"in o?o.close:o.value;_.push({time:t[d].time,value:i})}}const v=t.length-1+r;for(let t=0;t<=v;t++){const i=d(t);if(null==i)continue;const s=p.get(t),e=f.get(t);if(void 0!==s&&o.push({time:i,value:s}),void 0!==e&&a.push({time:i,value:e}),void 0!==s&&void 0!==e){const t={gt:i,Sy:s,xy:e};u.push(t)}}return{ky:h,nh:l,Sy:o,xy:a,Dy:_,Iy:u}},v=Hr({n_:t,Yf:i,hy:[h,l,o,a,_],Zl:"Ichimoku",O:e,_y:["conversionPeriod","basePeriod","spanBPeriod","displacement"],ly:(t,i)=>{c=i;const s=f(t,i);return u=s.Iy,[[h,s.ky],[l,s.nh],[o,s.Sy],[a,s.xy],[_,i.showLagging??1?s.Dy:[]]]},oy:t=>{c=t;const s=t.lineWidth??1;h.applyOptions({color:t.colorConversion,lineWidth:s}),l.applyOptions({color:t.colorBase,lineWidth:s}),o.applyOptions({color:t.colorSpanA,lineWidth:s}),a.applyOptions({color:t.colorSpanB,lineWidth:s}),_.applyOptions({color:t.colorLagging,lineWidth:s,visible:t.showLagging??!0}),i.timeScale().applyOptions({})}}),m=v.remove;return{conversion:h,base:l,spanA:o,spanB:a,lagging:_,...v,remove:()=>{try{t.detachPrimitive(p)}catch(t){}u=[],m()}}}function eh(t,i,s={}){const e={paneIndex:s.paneIndex??0,pivotPeriod:s.pivotPeriod??"daily",levels:s.levels??3,colorPivot:s.colorPivot??"#FF6D00",colorResistance:s.colorResistance??"#F23645",colorSupport:s.colorSupport??"#089981",lineWidth:s.lineWidth??1,lineStyle:s.lineStyle??2},n=e.paneIndex,r=t=>i.addSeries(nn,{color:t},n),h=r(e.colorPivot),l=[r(e.colorResistance),r(e.colorResistance),r(e.colorResistance)],o=[r(e.colorSupport),r(e.colorSupport),r(e.colorSupport)],a=Hr({n_:t,Yf:i,hy:[h,...l,...o],Zl:"Pivot Points",O:e,_y:["pivotPeriod"],ly:(t,i)=>{const s=((t,i)=>{const s=[],e=[[],[],[]],n=[[],[],[]];if(!t||0===t.length)return{Vy:s,Ry:e,Fy:n};let r=null,h=-1/0,l=1/0,o=0,a=null;for(const _ of t){const t=Gr(_.time,i);if(null===t)continue;if(null===r)r=t;else if(t!==r){const i=(h+l+o)/3,s=h-l;a={Ly:i,Ay:[2*i-l,i+s,h+2*(i-l)],By:[2*i-h,i-s,l-2*(h-i)]},r=t,h=-1/0,l=1/0}const u="high"in _?_.high:_.value,c="low"in _?_.low:_.value;if(u>h&&(h=u),c<l&&(l=c),o="close"in _?_.close:_.value,null!==a&&void 0!==_.time){s.push({time:_.time,value:a.Ly});for(let t=0;t<3;t++)e[t].push({time:_.time,value:a.Ay[t]}),n[t].push({time:_.time,value:a.By[t]})}}return{Vy:s,Ry:e,Fy:n}})(t,i.pivotPeriod??"daily"),e=Math.max(1,Math.min(i.levels??3,3)),n=[[h,s.Vy]];for(let t=0;t<3;t++)n.push([l[t],t<e?s.Ry[t]:[]]),n.push([o[t],t<e?s.Fy[t]:[]]);return n},oy:t=>{const i=t.lineWidth??1,s=t.lineStyle,e=Math.max(1,Math.min(t.levels??3,3));h.applyOptions({color:t.colorPivot,lineWidth:i,lineStyle:s});for(let n=0;n<3;n++)l[n].applyOptions({color:t.colorResistance,lineWidth:i,lineStyle:s,visible:n<e}),o[n].applyOptions({color:t.colorSupport,lineWidth:i,lineStyle:s,visible:n<e})}});return{pivot:h,resistances:l,supports:o,...a}}function nh(t){return null!=t&&"number"==typeof t.close}function rh(t){const i=[];let s=null,e=null;for(const n of t){if(!nh(n)){null!=n&&i.push({time:n.time,customValues:n.customValues});continue}const t=(n.open+n.high+n.low+n.close)/4,r=null===s||null===e?(n.open+n.close)/2:(s+e)/2;i.push({time:n.time,open:r,high:Math.max(n.high,r,t),low:Math.min(n.low,r,t),close:t,customValues:n.customValues}),s=r,e=t}return i}function hh(t,i,s={}){const e={paneIndex:s.paneIndex??0,upColor:s.upColor??"#26a69a",downColor:s.downColor??"#ef5350",borderVisible:s.borderVisible??!0,borderUpColor:s.borderUpColor??"#26a69a",borderDownColor:s.borderDownColor??"#ef5350",wickVisible:s.wickVisible??!0,wickUpColor:s.wickUpColor??"#26a69a",wickDownColor:s.wickDownColor??"#ef5350",hideSource:s.hideSource??!0},n=t.options(),r=i.addSeries(Vn,{upColor:e.upColor,downColor:e.downColor,borderVisible:e.borderVisible,borderUpColor:e.borderUpColor,borderDownColor:e.borderDownColor,wickVisible:e.wickVisible,wickUpColor:e.wickUpColor,wickDownColor:e.wickDownColor,priceScaleId:n.priceScaleId,priceFormat:n.priceFormat},e.paneIndex);let h=null;const l=i=>{i&&null===h?h=Ar(t):i||null===h||(h(),h=null)},o=Hr({n_:t,Yf:i,hy:[r],Zl:"Heikin Ashi",O:e,_y:[],ly:t=>[[r,rh(t)]],oy:t=>{r.applyOptions({upColor:t.upColor,downColor:t.downColor,borderVisible:t.borderVisible,borderUpColor:t.borderUpColor,borderDownColor:t.borderDownColor,wickVisible:t.wickVisible,wickUpColor:t.wickUpColor,wickDownColor:t.wickDownColor}),l(!0===t.hideSource)}});return{Oa:r,options:o.options,applyOptions:o.applyOptions,recalculate:o.recalculate,remove:()=>{o.remove();try{l(!1)}catch(t){}}}}function lh(t,i,s={}){const e={paneIndex:s.paneIndex??1,period:s.period??14,color:s.color??"#9C27B0",lineWidth:s.lineWidth??2,source:s.source??"close",lineStyle:s.lineStyle??0,overbought:void 0===s.overbought?70:s.overbought,oversold:void 0===s.oversold?30:s.oversold,levelColor:s.levelColor??"#787B86"},n=e.paneIndex,r=i.addSeries(nn,{color:e.color,lineWidth:e.lineWidth,priceFormat:{type:"price",precision:2,minMove:.01},autoscaleInfoProvider:Er(0,100)},n),h=Wr(i,r,n);i.priceScale(r.options().priceScaleId??"right",h).applyOptions({scaleMargins:{top:.1,bottom:.1},borderVisible:!1});const l=zr(r,e.levelColor),o=(t,i,s)=>{if(!t||t.length<i+1)return[];const e=Or(t,s),n=[],r=[];for(let t=1;t<e.length;t++)r.push(e[t]-e[t-1]);let h=0,l=0;for(let t=0;t<i;t++)r[t]>0?h+=r[t]:l+=Math.abs(r[t]);h/=i,l/=i;let o=0===l?100:h/l,a=100-100/(1+o);t[i]&&t[i].time&&n.push({time:t[i].time,value:a});for(let s=i;s<r.length;s++){const e=r[s];h=(h*(i-1)+(e>0?e:0))/i,l=(l*(i-1)+(e<0?Math.abs(e):0))/i,o=0===l?100:h/l,a=100-100/(1+o),t[s+1]&&t[s+1].time&&n.push({time:t[s+1].time,value:a})}return n},a=Hr({n_:t,Yf:i,hy:[r],Zl:"RSI",O:e,_y:["period","source"],ly:(t,i)=>[[r,o(t,i.period??14,i.source??"close")]],oy:t=>{r.applyOptions({color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle}),l([t.overbought,t.oversold].filter(t=>"number"==typeof t))}});return{series:r,...a}}function oh(t,i,s={}){const e={paneIndex:s.paneIndex??2,fastPeriod:s.fastPeriod??12,slowPeriod:s.slowPeriod??26,signalPeriod:s.signalPeriod??9,colorMACD:s.colorMACD??"#2196F3",colorSignal:s.colorSignal??"#FF6D00",colorHistogramUp:s.colorHistogramUp??"#26a69a",colorHistogramDown:s.colorHistogramDown??"#ef5350",lineWidth:s.lineWidth??2},n=e.paneIndex,r=i.addSeries(nn,{color:e.colorMACD},n),h=i.addSeries(nn,{color:e.colorSignal},n),l=i.addSeries(Ln,{color:e.colorHistogramUp},n),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},a=Hr({n_:t,Yf:i,hy:[r,h,l],Zl:"MACD",O:e,_y:["fastPeriod","slowPeriod","signalPeriod","colorHistogramUp","colorHistogramDown"],ly:(t,i)=>{const s=((t,i)=>{const s=i.fastPeriod??12,e=i.slowPeriod??26,n=i.signalPeriod??9;if(!t||t.length<e+n)return{Ey:[],Wy:[],Oy:[]};const r=[];for(const i of t)"close"in i?r.push(i.close):"value"in i?r.push(i.value):r.push(0);const h=o(r,s),l=o(r,e),a=[],_=e-s;for(let t=0;t<l.length;t++)a.push(h[t+_]-l[t]);const u=o(a,n),c=[],d=[],p=[],f=e-1;for(let s=n-1;s<u.length;s++){const e=f+s;if(t[e]&&t[e].time){const n=t[e].time,r=a[s],h=u[s],l=r-h;c.push({time:n,value:r}),d.push({time:n,value:h}),p.push({time:n,value:l,color:l>=0?i.colorHistogramUp:i.colorHistogramDown})}}return{Ey:c,Wy:d,Oy:p}})(t,i);return[[r,s.Ey],[h,s.Wy],[l,s.Oy]]},oy:t=>{const i=t.lineWidth??2;r.applyOptions({color:t.colorMACD,lineWidth:i}),h.applyOptions({color:t.colorSignal,lineWidth:i})}});return{macd:r,signal:h,histogram:l,...a}}function ah(t,i,s={}){const e={paneIndex:s.paneIndex??4,kPeriod:s.kPeriod??14,dPeriod:s.dPeriod??3,colorK:s.colorK??"#2196F3",colorD:s.colorD??"#FF6D00",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??0,overbought:void 0===s.overbought?80:s.overbought,oversold:void 0===s.oversold?20:s.oversold,levelColor:s.levelColor??"#787B86"},n=e.paneIndex,r=Er(0,100),h=i.addSeries(nn,{color:e.colorK,autoscaleInfoProvider:r},n),l=i.addSeries(nn,{color:e.colorD,autoscaleInfoProvider:r},n),o=Wr(i,h,n);i.priceScale(h.options().priceScaleId??"right",o).applyOptions({scaleMargins:{top:.1,bottom:.1}});const a=zr(h,e.levelColor),_=Hr({n_:t,Yf:i,hy:[h,l],Zl:"Stochastic",O:e,_y:["kPeriod","dPeriod"],ly:(t,i)=>{const s=((t,i,s)=>{if(!t||t.length<i)return{zy:[],$y:[]};const e=[];for(let s=i-1;s<t.length;s++){let n=-1/0,r=1/0;for(let e=0;e<i;e++){const i=t[s-e];"high"in i&&"low"in i&&(n=Math.max(n,i.high),r=Math.min(r,i.low))}const h=t[s];if("close"in h){const t=(h.close-r)/(n-r)*100;e.push(t)}}const n=[];for(let s=0;s<e.length;s++){const r=i-1+s;t[r]&&t[r].time&&n.push({time:t[r].time,value:e[s]})}const r=[];if(e.length>=s)for(let n=s-1;n<e.length;n++){let h=0;for(let t=0;t<s;t++)h+=e[n-t];const l=h/s,o=i-1+n;t[o]&&t[o].time&&r.push({time:t[o].time,value:l})}return{zy:n,$y:r}})(t,i.kPeriod??14,i.dPeriod??3);return[[h,s.zy],[l,s.$y]]},oy:t=>{const i=t.lineWidth??2,s=t.lineStyle;h.applyOptions({color:t.colorK,lineWidth:i,lineStyle:s}),l.applyOptions({color:t.colorD,lineWidth:i,lineStyle:s}),a([t.overbought,t.oversold].filter(t=>"number"==typeof t))}});return{k:h,d:l,..._}}function _h(t,i,s={}){const e={paneIndex:s.paneIndex??6,period:s.period??14,color:s.color??"#FF9800",lineWidth:s.lineWidth??2},n=i.addSeries(nn,{color:e.color,lineWidth:e.lineWidth},e.paneIndex),r=(t,i)=>{if(!t||t.length<i+1)return[];const s=[];for(let i=1;i<t.length;i++){const e=t[i],n=t[i-1];if("high"in e&&"low"in e&&"close"in n){const t=e.high-e.low,i=Math.abs(e.high-n.close),r=Math.abs(e.low-n.close),h=Math.max(t,i,r);s.push(h)}}if(s.length<i)return[];const e=[];let n=0;for(let t=0;t<i;t++)n+=s[t];n/=i,t[i]&&t[i].time&&e.push({time:t[i].time,value:n});for(let r=i;r<s.length;r++)n=(n*(i-1)+s[r])/i,t[r+1]&&t[r+1].time&&e.push({time:t[r+1].time,value:n});return e},h=Hr({n_:t,Yf:i,hy:[n],Zl:"ATR",O:e,_y:["period"],ly:(t,i)=>[[n,r(t,i.period??14)]],oy:t=>{n.applyOptions({color:t.color,lineWidth:t.lineWidth})}});return{series:n,...h}}function uh(t,i,s={}){const e={paneIndex:s.paneIndex??3,colorUp:s.colorUp??"#26a69a",colorDown:s.colorDown??"#ef5350"},n=e.paneIndex,r=i.addSeries(Ln,{color:e.colorUp,priceFormat:{type:"volume"},priceScaleId:""},n),h=Wr(i,r,n);i.priceScale(r.options().priceScaleId??"right",h).applyOptions({scaleMargins:{top:.8,bottom:0}});const l=(i,s)=>{const e=t.data();if(!e||0===e.length||!Fr(t))return[];const n=[];for(const r of e){const e=Rr(t,r.time);e&&"close"in r&&"open"in r&&n.push({time:r.time,value:e,color:r.close>=r.open?i:s})}return n},o=Hr({n_:t,Yf:i,hy:[r],Zl:"Volume",O:e,_y:["colorUp","colorDown"],ly:(t,i)=>[[r,l(i.colorUp??"#26a69a",i.colorDown??"#ef5350")]]});return{series:r,...o}}function ch(t,i,s={}){const e={paneIndex:s.paneIndex??5,color:s.color??"#2196F3",lineWidth:s.lineWidth??2,data:s.data},n=i.addSeries(nn,{color:e.color,lineWidth:e.lineWidth},e.paneIndex),r=()=>{const i=t.data();if(!i||i.length<2||!Fr(t))return[];const s=[];let e=0;s.push({time:i[0].time,value:e});for(let n=1;n<i.length;n++){const r=i[n],h=i[n-1],l=Rr(t,r.time);l&&"close"in r&&"close"in h&&(r.close>h.close?e+=l:r.close<h.close&&(e-=l),s.push({time:r.time,value:e}))}return s},h=Hr({n_:t,Yf:i,hy:[n],Zl:"OBV",O:e,ly:()=>[[n,r()]],oy:t=>{n.applyOptions({color:t.color,lineWidth:t.lineWidth})}});return{series:n,...h}}function dh(t,i,s={}){const e={paneIndex:s.paneIndex??7,period:s.period??14,colorADX:s.colorADX??"#F23645",colorPlusDI:s.colorPlusDI??"#089981",colorMinusDI:s.colorMinusDI??"#2962FF",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??0,threshold:void 0===s.threshold?25:s.threshold,levelColor:s.levelColor??"#787B86",showDI:s.showDI??!0},n=e.paneIndex,r=Er(0,100),h=i.addSeries(nn,{color:e.colorADX,autoscaleInfoProvider:r},n),l=i.addSeries(nn,{color:e.colorPlusDI,autoscaleInfoProvider:r},n),o=i.addSeries(nn,{color:e.colorMinusDI,autoscaleInfoProvider:r},n),a=Wr(i,h,n);i.priceScale(h.options().priceScaleId??"right",a).applyOptions({scaleMargins:{top:.1,bottom:.1}});const _=zr(h,e.levelColor),u=Hr({n_:t,Yf:i,hy:[h,l,o],Zl:"ADX",O:e,_y:["period"],ly:(t,i)=>{const s=((t,i)=>{if(!t||t.length<2*i)return{Hy:[],Ny:[],Uy:[]};const s=[],e=[],n=[];for(let i=1;i<t.length;i++){const r=t[i],h=t[i-1];if(!("high"in r)||!("low"in r)||!("close"in h)){s.push(0),e.push(0),n.push(0);continue}s.push(Math.max(r.high-r.low,Math.abs(r.high-h.close),Math.abs(r.low-h.close)));const l=r.high-h.high,o=h.low-r.low;e.push(l>o&&l>0?l:0),n.push(o>l&&o>0?o:0)}let r=0,h=0,l=0;for(let t=0;t<i;t++)r+=s[t],h+=e[t],l+=n[t];const o=[],a=[],_=[],u=[];for(let c=i;c<s.length;c++){r=r-r/i+s[c],h=h-h/i+e[c],l=l-l/i+n[c];const d=0===r?0:h/r*100,p=0===r?0:l/r*100,f=d+p,v=0===f?0:Math.abs(d-p)/f*100;u.push(v);const m=t[c+1];if(m&&void 0!==m.time)if(a.push({time:m.time,value:d}),_.push({time:m.time,value:p}),u.length===i){let t=0;for(const i of u)t+=i;o.push({time:m.time,value:t/i})}else if(u.length>i){const t=o[o.length-1].value;o.push({time:m.time,value:(t*(i-1)+v)/i})}}return{Hy:o,Ny:a,Uy:_}})(t,i.period??14),e=i.showDI??!0;return[[h,s.Hy],[l,e?s.Ny:[]],[o,e?s.Uy:[]]]},oy:t=>{const i=t.lineWidth??2,s=t.lineStyle;h.applyOptions({color:t.colorADX,lineWidth:i,lineStyle:s}),l.applyOptions({color:t.colorPlusDI,lineWidth:i,lineStyle:s,visible:t.showDI??!0}),o.applyOptions({color:t.colorMinusDI,lineWidth:i,lineStyle:s,visible:t.showDI??!0}),_("number"==typeof t.threshold?[t.threshold]:[])}});return{adx:h,plusDI:l,minusDI:o,...u}}function ph(t,i,s={}){const e={paneIndex:s.paneIndex??8,period:s.period??20,color:s.color??"#2962FF",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??0,overbought:void 0===s.overbought?100:s.overbought,oversold:void 0===s.oversold?-100:s.oversold,levelColor:s.levelColor??"#787B86"},n=e.paneIndex,r=i.addSeries(nn,{color:e.color,lineWidth:e.lineWidth},n),h=Wr(i,r,n);i.priceScale(r.options().priceScaleId??"right",h).applyOptions({scaleMargins:{top:.1,bottom:.1}});const l=zr(r,e.levelColor),o=(t,i)=>{if(!t||t.length<i)return[];const s=[];for(const i of t)"high"in i&&"low"in i&&"close"in i?s.push((i.high+i.low+i.close)/3):s.push("value"in i?i.value:0);const e=[];for(let n=i-1;n<s.length;n++){let r=0;for(let t=0;t<i;t++)r+=s[n-t];const h=r/i;let l=0;for(let t=0;t<i;t++)l+=Math.abs(s[n-t]-h);const o=l/i,a=0===o?0:(s[n]-h)/(.015*o);t[n]&&void 0!==t[n].time&&e.push({time:t[n].time,value:a})}return e},a=Hr({n_:t,Yf:i,hy:[r],Zl:"CCI",O:e,_y:["period"],ly:(t,i)=>[[r,o(t,i.period??20)]],oy:t=>{r.applyOptions({color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle}),l([t.overbought,t.oversold].filter(t=>"number"==typeof t))}});return{series:r,...a}}function fh(t,i,s={}){const e={paneIndex:s.paneIndex??9,period:s.period??14,color:s.color??"#FF6D00",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??0,overbought:void 0===s.overbought?-20:s.overbought,oversold:void 0===s.oversold?-80:s.oversold,levelColor:s.levelColor??"#787B86"},n=e.paneIndex,r=i.addSeries(nn,{color:e.color,lineWidth:e.lineWidth,autoscaleInfoProvider:Er(-100,0)},n),h=Wr(i,r,n);i.priceScale(r.options().priceScaleId??"right",h).applyOptions({scaleMargins:{top:.1,bottom:.1}});const l=zr(r,e.levelColor),o=(t,i)=>{if(!t||t.length<i)return[];const s=[];for(let e=i-1;e<t.length;e++){let n=-1/0,r=1/0;for(let s=0;s<i;s++){const i=t[e-s];"high"in i&&"low"in i&&(n=Math.max(n,i.high),r=Math.min(r,i.low))}const h=t[e];if(!("close"in h)||void 0===h.time)continue;const l=n-r,o=0===l?0:(n-h.close)/l*-100;s.push({time:h.time,value:o})}return s},a=Hr({n_:t,Yf:i,hy:[r],Zl:"Williams %R",O:e,_y:["period"],ly:(t,i)=>[[r,o(t,i.period??14)]],oy:t=>{r.applyOptions({color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle}),l([t.overbought,t.oversold].filter(t=>"number"==typeof t))}});return{series:r,...a}}function vh(t,i,s={}){const e={paneIndex:s.paneIndex??10,period:s.period??14,color:s.color??"#9C27B0",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??0,overbought:void 0===s.overbought?80:s.overbought,oversold:void 0===s.oversold?20:s.oversold,levelColor:s.levelColor??"#787B86"},n=e.paneIndex,r=i.addSeries(nn,{color:e.color,lineWidth:e.lineWidth,autoscaleInfoProvider:Er(0,100)},n),h=Wr(i,r,n);i.priceScale(r.options().priceScaleId??"right",h).applyOptions({scaleMargins:{top:.1,bottom:.1}});const l=zr(r,e.levelColor),o=(i,s)=>{if(!i||i.length<s+1||!Fr(t))return[];const e=[],n=[];for(let s=1;s<i.length;s++){const r=i[s],h=i[s-1];if(!("high"in r)||!("low"in r)||!("close"in r)){e.push(0),n.push(0);continue}const l=(r.high+r.low+r.close)/3,o=(h.high+h.low+h.close)/3,a=l*(Rr(t,r.time)??0);e.push(l>o?a:0),n.push(l<o?a:0)}const r=[];for(let t=s-1;t<e.length;t++){let h=0,l=0;for(let i=0;i<s;i++)h+=e[t-i],l+=n[t-i];const o=0===l?100:100-100/(1+h/l),a=i[t+1];a&&void 0!==a.time&&r.push({time:a.time,value:o})}return r},a=Hr({n_:t,Yf:i,hy:[r],Zl:"MFI",O:e,_y:["period"],ly:(t,i)=>[[r,o(t,i.period??14)]],oy:t=>{r.applyOptions({color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle}),l([t.overbought,t.oversold].filter(t=>"number"==typeof t))}});return{series:r,...a}}class mh{constructor(t){this.qy=t}draw(t){t.useBitmapCoordinateSpace(t=>{const i=t.context,s=this.qy.getSessionBoxes();if(s&&0!==s.length)for(const e of s)this.Yy(i,e,t.horizontalPixelRatio,t.verticalPixelRatio)})}Yy(t,i,s,e){const n=i.jy||i.startTime,r=i.Ky||i.endTime,h=i.I||i.color,l=i.yy||i.opacity;if(!i||!n||!r)return;const o=this.qy.getChart().timeScale(),a=o.timeToCoordinate(n),_=o.timeToCoordinate(r);if(null===a||null===_)return;const u=a*s,c=_*s,d=0*e,p=t.canvas.height/e*e;t.fillStyle=this.Xy(h,l),t.fillRect(u,d,c-u,p-d)}Xy(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}}class wh{constructor(t){this.Jt=new mh(t)}renderer(){return this.Jt}zOrder(){return"bottom"}}const gh=[{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 bh{constructor(t,i,s={}){this.Gy=[],this.Ub=null,this.eh=null,this.Rf=t,this.bn=i,this.Ps={sessions:s.sessions||gh,showOverlaps:s.showOverlaps??!0,overlapColor:s.overlapColor||"#9C27B0",overlapOpacity:s.overlapOpacity||.15,enabled:s.enabled??!0},this.Zy(),this.Ps.enabled&&this.Jy()}Zy(){this.eh=new wh(this);const t={attached:t=>{},detached:()=>{},paneViews:()=>this.eh?[this.eh]:[],updateAllViews:()=>{this.eh}};this.Ub=t,this.bn.attachPrimitive(t)}Jy(){this.Rf.timeScale().subscribeVisibleLogicalRangeChange(()=>{this.Qy()}),this.Qy()}Qy(){this.tS();const t=this.Rf.timeScale().getVisibleLogicalRange();if(!t)return;const i=this.bn.data();if(!i||0===i.length)return;const s=i.filter((i,s)=>s>=t.from&&s<=t.to);this.iS(s),this.cM()}iS(t){if(0!==t.length){for(const i of this.Ps.sessions)this.sS(i,t);this.Ps.showOverlaps&&this.eS(t)}}sS(t,i){let s=null,e=[];for(const n of i){const i=n.time,r=this.nS(i);this.rS(r,t.startHour,t.endHour)?(s||(s=i),e.push(n)):s&&e.length>0&&(this.hS(s,e[e.length-1].time,t),s=null,e=[])}s&&e.length>0&&this.hS(s,e[e.length-1].time,t)}eS(t){const i=this.Ps.sessions;for(let s=0;s<i.length;s++)for(let e=s+1;e<i.length;e++){const n=i[s],r=i[e],h=this.lS(n,r);h&&this.oS(h,t)}}lS(t,i){const s=Math.max(t.startHour,i.startHour),e=Math.min(t.endHour,i.endHour);return s<e?{an:s,_n:e}:null}oS(t,i){let s=null,e=[];for(const n of i){const i=n.time,r=this.nS(i);r>=t.an&&r<t._n?(s||(s=i),e.push(n)):s&&e.length>0&&(this.aS(s,e[e.length-1].time),s=null,e=[])}s&&e.length>0&&this.aS(s,e[e.length-1].time)}hS(t,i,s){if(!t||!i)return void console.warn("Invalid session box times:",{startTime:t,endTime:i,session:s.name});const e={le:"session",jy:t,Ky:i,I:s.color,yy:s.opacity,_S:s.name};this.Gy.push(e)}aS(t,i){const s={le:"overlap",jy:t,Ky:i,I:this.Ps.overlapColor,yy:this.Ps.overlapOpacity,_S:"Overlap"};this.Gy.push(s)}rS(t,i,s){return i<s?t>=i&&t<s:t>=i||t<s}nS(t){if("number"==typeof t){return new Date(1e3*t).getUTCHours()}if("string"==typeof t){return new Date(t).getUTCHours()}return 0}tS(){this.Gy=[]}applyOptions(t){this.Ps={...this.Ps,...t},this.Ps.enabled?this.Qy():this.tS(),this.cM()}options(){return{...this.Ps}}enable(){this.Ps.enabled=!0,this.Qy(),this.cM()}disable(){this.Ps.enabled=!1,this.tS(),this.cM()}remove(){this.Ub&&this.bn&&this.bn.detachPrimitive(this.Ub),this.tS(),this.cM()}getSessionBoxes(){return this.Gy}getChart(){return this.Rf}getSeries(){return this.bn}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rf.timeScale().applyOptions({})}}function Mh(t,i,s){return new bh(t,i,s)}class yh{constructor(t){this.qy=t}draw(t){t.useBitmapCoordinateSpace(t=>{const i=t.context,s=this.qy.getProfileData();if(!s||0===s.bins.length)return;const e=this.qy.options(),n=this.qy.getSeries(),r=i.canvas.width/t.horizontalPixelRatio,h=Math.min(e.width||100,.2*r),l="right"===e.position?r-h:0;let o=0;for(const t of s.bins)t.volume>o&&(o=t.volume);if(0!==o){for(const r of s.bins)this.uS(i,r,l,h,o,s,e,n,t.horizontalPixelRatio,t.verticalPixelRatio);e.showPOC&&this.cS(i,s.poc,e.pocColor||"#FF6B00",n,r,t.horizontalPixelRatio,t.verticalPixelRatio),e.showValueArea&&this.dS(i,s.valueAreaHigh,s.valueAreaLow,e.valueAreaColor||"#089981",n,r,t.horizontalPixelRatio,t.verticalPixelRatio)}})}uS(t,i,s,e,n,r,h,l,o,a){const _=i.volume/n*e,u=r.binSize/2,c=l.priceToCoordinate(i.priceLevel+u),d=l.priceToCoordinate(i.priceLevel-u);if(null===c||null===d)return;const p=Math.max(Math.abs(d-c)-1,1),f=s*o,v=Math.min(c,d)*a,m=_*o,w=p*a,g=i.priceLevel>=r.valueAreaLow&&i.priceLevel<=r.valueAreaHigh,b=Math.abs(i.priceLevel-r.poc)<1e-5;let M=h.profileColor||"#2962FF",y=h.opacity||.3;b?(M=h.pocColor||"#FF6B00",y=.6):g&&h.showValueArea&&(M=h.valueAreaColor||"#089981",y=.4),t.fillStyle=this.Xy(M,y),t.fillRect(f,v,m,w)}cS(t,i,s,e,n,r,h){const l=e.priceToCoordinate(i);if(null===l)return;const o=l*h;t.strokeStyle=s,t.lineWidth=2*Math.min(r,h),t.setLineDash([5*r,3*r]),t.beginPath(),t.moveTo(0,o),t.lineTo(n*r,o),t.stroke(),t.setLineDash([])}dS(t,i,s,e,n,r,h,l){const o=n.priceToCoordinate(i);if(null!==o){const i=o*l;t.strokeStyle=this.Xy(e,.5),t.lineWidth=1*Math.min(h,l),t.setLineDash([3*h,2*h]),t.beginPath(),t.moveTo(0,i),t.lineTo(r*h,i),t.stroke()}const a=n.priceToCoordinate(s);if(null!==a){const i=a*l;t.strokeStyle=this.Xy(e,.5),t.lineWidth=1*Math.min(h,l),t.setLineDash([3*h,2*h]),t.beginPath(),t.moveTo(0,i),t.lineTo(r*h,i),t.stroke()}t.setLineDash([])}Xy(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}}class Sh{constructor(t){this.Jt=new yh(t)}renderer(){return this.Jt}zOrder(){return"normal"}}class xh{constructor(t,i,s={}){this.pS=null,this.fS=new Map,this.Ub=null,this.eh=null,this.Rf=t,this.bn=i,this.Ps={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.Zy(),this.Jy()}Zy(){this.eh=new Sh(this);const t={attached:t=>{},detached:()=>{},paneViews:()=>this.eh?[this.eh]:[],updateAllViews:()=>{this.eh}};this.Ub=t,this.bn.attachPrimitive(t)}Jy(){this.Rf.timeScale().subscribeVisibleLogicalRangeChange(()=>{this.vS()}),this.vS()}setVolumeData(t){this.fS=t,this.vS()}addVolumeData(t,i){this.fS.set(t,i),this.vS()}vS(){const t=this.Rf.timeScale().getVisibleLogicalRange();if(!t)return;const i=this.bn.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 r=(n-e)/this.Ps.numberOfBins,h=[];for(let t=0;t<this.Ps.numberOfBins;t++)h.push({priceLevel:e+(t+.5)*r,volume:0,percentage:0});let l=0;for(const t of s){const i=t.close||t.value,s=this.fS.get(t.time)||1,n=Math.floor((i-e)/r);h[Math.max(0,Math.min(this.Ps.numberOfBins-1,n))].volume+=s,l+=s}for(const t of h)t.percentage=l>0?t.volume/l*100:0;let o=h[0];for(const t of h)t.volume>o.volume&&(o=t);const a=l*this.Ps.valueAreaPercentage,_=[...h].sort((t,i)=>i.volume-t.volume);let u=0;const c=[];for(const t of _){if(!(u<a))break;c.push(t),u+=t.volume}let d=-1/0,p=1/0;for(const t of c)t.priceLevel>d&&(d=t.priceLevel),t.priceLevel<p&&(p=t.priceLevel);this.pS={bins:h,binSize:r,poc:o.priceLevel,valueAreaHigh:d,valueAreaLow:p,totalVolume:l},this.cM()}getProfileData(){return this.pS}applyOptions(t){this.Ps={...this.Ps,...t},this.vS(),this.cM()}remove(){this.Ub&&this.bn&&this.bn.detachPrimitive(this.Ub),this.pS=null,this.fS.clear(),this.cM()}getChart(){return this.Rf}getSeries(){return this.bn}options(){return this.Ps}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rf.timeScale().applyOptions({})}}function Ch(t,i,s){return new xh(t,i,s)}function Ph(t,i){const s=new Map;for(const t of i)s.set(t.time,t.volume);t.setVolumeData(s)}class Th{constructor(t,i){this.mS=new Map,this.wS=null,this.gS=null,this.bS=null,this.MS=null,this.yS=null,this.SS=null,this.bg=void 0,this.Rf=t,this.kf=i,this.xS=t=>this.CS(t),this.PS=t=>this.TS(t),this.kS=t=>this.DS(t),this.IS=t=>this.VS(t),this.RS=()=>this.FS(),this.LS=t=>{"Escape"===t.key&&this.FS()},this.Rf.subscribeCrosshairMove(this.xS),this.kf.addEventListener("pointerdown",this.PS),this.kf.addEventListener("pointermove",this.kS),this.kf.addEventListener("pointerup",this.IS),this.kf.addEventListener("pointercancel",this.RS),document.addEventListener("keydown",this.LS)}AS(t){this.mS.set(t.id(),t)}BS(t){const i=t.id();this.wS===i&&this.ES(null),this.gS===t&&this.FS(),this.mS.delete(i)}Xi(){return 0===this.mS.size}m(){this.Rf.unsubscribeCrosshairMove(this.xS),this.kf.removeEventListener("pointerdown",this.PS),this.kf.removeEventListener("pointermove",this.kS),this.kf.removeEventListener("pointerup",this.IS),this.kf.removeEventListener("pointercancel",this.RS),document.removeEventListener("keydown",this.LS),this.mS.clear()}CS(t){if(this.SS=t.point?{ut:t.point.x,ct:t.point.y}:null,this.bg=t.paneIndex,null!==this.gS)return;const i=this.WS(t.hoveredObjectId);this.ES(i?i.id():null),this.OS()}TS(t){const i=null===this.wS?null:this.mS.get(this.wS)??null;i&&(this.MS={ut:t.clientX,ct:t.clientY},this.yS=i,i.isDraggable()&&(this.gS=i,this.bS=t.pointerId,this.kf.setPointerCapture(t.pointerId),i.beginDrag(),this.OS(),t.preventDefault(),t.stopPropagation()))}DS(t){if(null===this.gS)return;if(!this.zS(t))return void this.FS();const i=this.$S(t);null!==i&&this.gS.dragTo(i),t.preventDefault(),t.stopPropagation()}VS(t){const i=this.gS,s=this.yS,e=this.MS;this.HS(),this.yS=null,this.MS=null;const n=null!==e&&(Math.abs(t.clientX-e.ut)>4||Math.abs(t.clientY-e.ct)>4);if(null!==i)return this.gS=null,n?i.commitDrag():(i.cancelDrag(),i.isClickable()&&i.click()),void this.OS();null!==s&&!n&&s.isClickable()&&s.click()}FS(){if(null===this.gS)return;const t=this.gS;this.gS=null,this.HS(),t.cancelDrag(),this.OS()}zS(t){const i=this.kf.getBoundingClientRect();return t.clientX>=i.left&&t.clientX<=i.right&&t.clientY>=i.top&&t.clientY<=i.bottom}HS(){null!==this.bS&&(this.kf.hasPointerCapture(this.bS)&&this.kf.releasePointerCapture(this.bS),this.bS=null)}$S(t){const i=this.gS;if(null===i)return null;if(null!==this.SS&&this.bg===i.paneIndex())return i.priceAt(this.SS.ct);const s=this.Rf.panes()[i.paneIndex()],e=s?s.getHTMLElement():null;return e?i.priceAt(t.clientY-e.getBoundingClientRect().top):null}WS(t){return"string"!=typeof t?null:this.mS.get(t)??null}ES(t){this.wS!==t&&(null!==this.wS&&this.mS.get(this.wS)?.setHovered(!1),this.wS=t,null!==t&&this.mS.get(t)?.setHovered(!0))}OS(){if(null!==this.gS)return void this.Rf.chartElement().style.setProperty("cursor","ns-resize");const t=null===this.wS?null:this.mS.get(this.wS);t?this.Rf.chartElement().style.setProperty("cursor",t.isDraggable()?"ns-resize":"pointer"):this.Rf.chartElement().style.removeProperty("cursor")}}const kh=new WeakMap;let Dh=0;class Ih{constructor(t,i,s){this.sr=null,this.NS=!1,this.US="",this.qS=null,this.Rf=t,this.bn=i,this.yo="pipsend-trading-line-"+Dh++,this.Ps={lineWidth:2,lineStyle:0,axisLabelVisible:!0,draggable:!0,hoverColor:"#000000",...s},this.YS(),(this.Ps.draggable||this.Ps.onClick)&&function(t){const i=t.chartElement();if(!i)return null;let s=kh.get(t);return s||(s=new Th(t,i),kh.set(t,s)),s}(this.Rf)?.AS(this)}id(){return this.yo}paneIndex(){try{return this.bn.getPane().paneIndex()}catch(t){return 0}}isDraggable(){return!0===this.Ps.draggable}isClickable(){return void 0!==this.Ps.onClick}setHovered(t){this.NS!==t&&this.sr&&(this.NS=t,this.sr.applyOptions({color:t?this.Ps.hoverColor:this.US}))}priceAt(t){const i=this.bn.coordinateToPrice(t);return null===i?null:i}beginDrag(){this.qS=this.Ps.price,this.Ps.onDragStart&&this.Ps.onDragStart(this.Ps.price)}dragTo(t){this.jS(t),this.Ps.onDragMove&&this.Ps.onDragMove(t)}commitDrag(){this.qS=null,this.Ps.onDragEnd&&this.Ps.onDragEnd(this.Ps.price)}cancelDrag(){const t=this.qS;this.qS=null,null!==t&&t!==this.Ps.price&&(this.jS(t),this.Ps.onDragMove&&this.Ps.onDragMove(t))}click(){this.Ps.onClick&&this.Ps.onClick(this.Ps.price)}applyOptions(t){if(this.Ps={...this.Ps,...t},t.color&&(this.US=t.color),!this.sr)return;const i={title:this.KS()};void 0!==t.price&&(i.price=t.price),void 0===t.color||this.NS||(i.color=t.color),void 0!==t.lineWidth&&(i.lineWidth=t.lineWidth),void 0!==t.lineStyle&&(i.lineStyle=t.lineStyle),this.sr.applyOptions(i)}setTitle(t){this.Ps.title=t,this.sr&&this.sr.applyOptions({title:t})}getPrice(){return this.Ps.price}setPrice(t){this.jS(t)}remove(){!function(t,i){const s=kh.get(t);s&&(s.BS(i),s.Xi()&&(s.m(),kh.delete(t)))}(this.Rf,this),this.sr&&(this.bn.removePriceLine(this.sr),this.sr=null)}getPriceLine(){return this.sr}KS(){if(this.Ps.formatTitle)try{return this.Ps.formatTitle(this.Ps.price)}catch(t){console.error("Error in formatTitle:",t)}return this.Ps.title||""}YS(){this.US=this.Ps.color,this.sr=this.bn.createPriceLine({id:this.yo,price:this.Ps.price,color:this.Ps.color,lineWidth:this.Ps.lineWidth,lineStyle:this.Ps.lineStyle,axisLabelVisible:this.Ps.axisLabelVisible,title:this.KS()})}jS(t){this.Ps.price=t,this.sr&&this.sr.applyOptions({price:t,title:this.KS()})}}function Vh(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,r={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,onClick:s.onClick,formatTitle:s.formatTitle};return new Ih(i,t,r)}class Rh{constructor(t,i){this.Vf=null,this.XS=null,this.GS=null,this.ZS={},this.Rf=t,this.bn=i,this.JS()}JS(){this.Vf=this.Rf.chartElement()}QS(t){const i=this.bn.getPane().getHTMLElement();if(!i)return 0;const s=t.clientY-i.getBoundingClientRect().top,e=this.bn.coordinateToPrice(s);return null===e?0:e}enableClickToCreate(t,i){return this.Vf?(this.XS=t,this.ZS=i||{},new Promise(t=>{this.Vf.style.cursor="crosshair",this.GS=i=>{const s=this.QS(i),e=this.tx(s);this.disableClickToCreate(),t(e)},this.Vf.addEventListener("click",this.GS)})):Promise.resolve(null)}disableClickToCreate(){this.Vf&&this.GS&&(this.Vf.removeEventListener("click",this.GS),this.Vf.style.cursor="default"),this.XS=null,this.GS=null,this.ZS={}}tx(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.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 Ih(this.Rf,this.bn,i)}getCreationMode(){return this.XS}isCreating(){return null!==this.XS}}function Fh(t,i){return new Rh(t,i)}const Lh=new Set(["line","body","stroke","center","move"]);function Ah(t,i,s){if(null===i)return null;const e=String(i);return{externalId:`${t}#${e}`,zOrder:"normal",cursorStyle:s?Lh.has(e)?"move":"grab":void 0}}function Bh(t,i,s){return t?{bt:s-t.price,gt:null===t.time?0:i-t.time}:{bt:0,gt:0}}var Eh;function Wh(t){if(null==t)return null;if("number"==typeof t||"string"==typeof t)return t;const i=t,s=i.year??i.my;if(void 0!==s){const t={};return t.year=s,t.month=i.month??i.wy,t.day=i.day??i.gy,t}return t}function Oh(t,i){const s={};return s.price=t,s.time=i,s}function zh(t){if(!t)return Oh(0,null);return Oh(t.price??t.bt??0,Wh(t.time??t.gt??null))}function $h(t,i="time"){return t?t[i]??null:null}function Hh(t,i){if(t)return t[i]??void 0}!function(t){t.Idle="idle",t.Creating="creating",t.Editing="editing",t.Dragging="dragging",t.Hovering="hovering"}(Eh||(Eh={}));class Nh{constructor(t,i,s={}){this._state=Eh.Idle,this._visible=!0,this._locked=!1,this._ownOptions=null,this._chart=t.chart,this._series=t.series,this._type=i,this._id=this.ix(),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}ix(){return`${this._type}_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}get id(){return this._id}get type(){return this._type}isComplete(){return!0}_registerOptions(t){this._ownOptions=t}options(){return{...this._ownOptions??this._options}}applyOptions(t){null!==this._ownOptions&&Object.assign(this._ownOptions,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}series(){return this._series}getState(){return this._state}serialize(){const t=this._serializeShape();return t.id=this._id,t.visible=this._visible,t.locked=this._locked,t}applySerializedState(t){"string"==typeof t.id&&t.id.length>0&&(this._id=t.id),"boolean"==typeof t.visible&&(this._visible=t.visible),"boolean"==typeof t.locked&&(this._locked=t.locked),this._update()}}const Uh=new WeakMap;function qh(t,i){Uh.set(t,i)}function Yh(t){const i=!0===Uh.get(t);return i&&Uh.set(t,!1),i}function jh(t,i,s,e,n){const r=t.canvas.width/s,h=t.canvas.height/e;if(n.ct<0||n.ct>h)return;let l;try{l=i.priceFormatter().format(n.bt)}catch(t){l=String(n.bt)}t.save(),t.font=11*s+'px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif';const o=t.measureText(l).width/s+10,a=r-o,_=n.ct-8.5;t.fillStyle=n.Wt,t.beginPath(),t.rect(a*s,_*e,o*s,17*e),t.fill(),t.fillStyle=n.sx??"#ffffff",t.textAlign="left",t.textBaseline="middle",t.fillText(l,(a+5)*s,n.ct*e),t.restore()}var Kh;!function(t){t.nx="idle",t.hx="waiting_first_point",t.lx="waiting_second_point",t.ox="completed"}(Kh||(Kh={}));class Xh{constructor(t,i,s={}){this.Rv=Kh.nx,this._x=null,this.GS=null,this.sp=null,this.Rf=t,this.bn=i,this.ux=s}vx(){this.Rv===Kh.nx&&(this.Rv=Kh.hx,this._x=null,this.mx(),this.wx())}gx(){this.Rv=Kh.nx,this._x=null,this.bx(),this.Mx(),this.ux.yx&&this.ux.yx()}Sx(){return this.Rv}xx(){return this.Rv===Kh.hx||this.Rv===Kh.lx}mx(){this.GS=t=>{this.Cx(t)},this.Rf.subscribeClick(this.GS)}wx(){this.sp=t=>{this.Px(t)},this.Rf.subscribeCrosshairMove(this.sp)}bx(){this.GS&&(this.Rf.unsubscribeClick(this.GS),this.GS=null)}Mx(){this.sp&&(this.Rf.unsubscribeCrosshairMove(this.sp),this.sp=null)}Cx(t){if(!t.point)return;if(Yh(this.Rf))return;const i=this.bn.coordinateToPrice(t.point.y),s=qe(this.Rf,this.bn,t.point.x);if(null===i||null===s)return;const e={gt:s,bt:i};this.Rv===Kh.hx?(this._x=e,this.Rv=Kh.lx,this.ux.Tx&&this.ux.Tx(e)):this.Rv===Kh.lx&&this._x&&(this.Rv=Kh.ox,this.ux.kx&&this.ux.kx(e),this.ux.Dx&&this.ux.Dx(this._x,e),this.bx(),this.Mx(),this.Rv=Kh.nx,this._x=null)}Px(t){if(!t.point)return;if(this.Rv!==Kh.lx)return;const i=this.bn.coordinateToPrice(t.point.y),s=qe(this.Rf,this.bn,t.point.x);if(null===i||null===s)return;const e={gt:s,bt:i};this.ux.Ix&&this.ux.Ix(e)}m(){this.gx()}}class Gh{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Zh{constructor(t){this.Vx=t,this.Jt=new Gh(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class Jh extends Nh{constructor(t,i){super(t,"trend-line",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Bx=null,this.Ex=null,this.Wx=null,this.Ox=null,this.zx=!1,this.$x=null,this.Hx=null,this.Nx={lineColor:"#2962ff",lineWidth:2,lineStyle:"solid",extendLeft:!1,extendRight:!1,showPriceLabel:!0,interactive:!1,...i},this._registerOptions(this.Nx),this.Zy(),this.Nx.interactive?this.Ux():this.zx=!0}Ux(){const t=new Xh(this._chart,this._series,{Tx:t=>{this.Nx.point1Time=t.gt,this.Nx.point1Price=t.bt,this.cM()},kx:t=>{this.Nx.point2Time=t.gt,this.Nx.point2Price=t.bt,this.zx=!0,this.cM(),this.Nx.onUpdate&&this.Nx.onUpdate()},Ix:t=>{this.Nx.point1Time&&!this.zx&&(this.Hx=t,this.cM())},Dx:()=>{this.zx=!0}});this.$x=t,t.vx()}Zy(){this.eh=this.qx();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.Yx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}qx(){return new Zh(this)}jx(){if(!this.Nx.point1Time||!this.Nx.point2Time)return null;const t=Ye(this._chart,this._series,this.Nx.point1Time)??0,i=this._series.priceToCoordinate(this.Nx.point1Price)??0,s=Ye(this._chart,this._series,this.Nx.point2Time)??0,e=this._series.priceToCoordinate(this.Nx.point2Price)??0;if(!this.Nx.extendLeft&&!this.Nx.extendRight)return{Kx:t,Xx:i,Gx:s,Zx:e};if(s===t)return{Kx:t,Xx:i,Gx:s,Zx:e};const n=this._chart.chartElement().clientWidth,r=(e-i)/(s-t);return{Kx:this.Nx.extendLeft?0:t,Xx:this.Nx.extendLeft?i-r*t:i,Gx:this.Nx.extendRight?n:s,Zx:this.Nx.extendRight?i+r*(n-t):e}}Jx(){const t=this.jx();if(null===t)return null;const i=t.Gx>=t.Kx?t.Zx:t.Xx,s=this._chart.chartElement().clientHeight;return i>=0&&i<=s?this._series.coordinateToPrice(i):this.Nx.point2Price??this.Nx.point1Price??null}drawToCanvas(t,i,s){if(!this.zx&&this.Nx.point1Time&&this.Hx)return void this.Qx(t,i,s);if(!this.Nx.point1Time||!this.Nx.point2Time)return;const e=(Ye(this._chart,this._series,this.Nx.point1Time)??0)*i,n=(this._series.priceToCoordinate(this.Nx.point1Price)??0)*s,r=(Ye(this._chart,this._series,this.Nx.point2Time)??0)*i,h=(this._series.priceToCoordinate(this.Nx.point2Price)??0)*s,l=this.Nx.lineColor,o=this.Fx?this.Nx.lineWidth+1:this.Nx.lineWidth;t.strokeStyle=l,t.lineWidth=o*i,"dashed"===this.Nx.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.Nx.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath();const a=this.jx();if(null===a)return;t.moveTo(a.Kx*i,a.Xx*s),t.lineTo(a.Gx*i,a.Zx*s),t.stroke(),t.setLineDash([]),!this.Fx&&!this.Lx||this.isLocked()||(this.tC(t,e,n,i,l),this.tC(t,r,h,i,l));const _=this.Jx();if(!1!==this.Nx.showPriceLabel&&null!==_){const e=this._series.priceToCoordinate(_);null!==e&&jh(t,this._series,i,s,{bt:_,ct:e,Wt:l})}}Qx(t,i,s){if(!this.Nx.point1Time||!this.Hx)return;const e=(Ye(this._chart,this._series,this.Nx.point1Time)??0)*i,n=(this._series.priceToCoordinate(this.Nx.point1Price)??0)*s,r=(Ye(this._chart,this._series,this.Hx.gt)??0)*i,h=(this._series.priceToCoordinate(this.Hx.bt)??0)*s;t.strokeStyle=this.Nx.lineColor,t.lineWidth=this.Nx.lineWidth*i,t.globalAlpha=.7,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(e,n),t.lineTo(r,h),t.stroke(),t.setLineDash([]),t.globalAlpha=1,this.tC(t,e,n,i,this.Nx.lineColor),t.globalAlpha=.5,this.tC(t,r,h,i,this.Nx.lineColor),t.globalAlpha=1}tC(t,i,s,e,n){const r=5*e;t.fillStyle=n,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.beginPath(),t.arc(i,s,r,0,2*Math.PI),t.fill(),t.stroke()}setColor(t){this.Nx.lineColor=t,this.cM()}color(){return this.Nx.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}isHovered(){return this.Lx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}Yx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){const s=this.jx();if(null===s)return!1;return this.iC(t,i,s.Kx,s.Xx,s.Gx,s.Zx)<=8}iC(t,i,s,e,n,r){const h=n-s,l=r-e,o=h*h+l*l;if(0===o)return Math.sqrt((t-s)*(t-s)+(i-e)*(i-e));let a=((t-s)*h+(i-e)*l)/o;a=Math.max(0,Math.min(1,a));const _=s+a*h,u=e+a*l;return Math.sqrt((t-_)*(t-_)+(i-u)*(i-u))}hitTestEndpoint(t,i){if(!this.Nx.point1Time||!this.Nx.point2Time)return null;const s=Ye(this._chart,this._series,this.Nx.point1Time)??0,e=this._series.priceToCoordinate(this.Nx.point1Price)??0,n=Ye(this._chart,this._series,this.Nx.point2Time)??0,r=this._series.priceToCoordinate(this.Nx.point2Price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2))<=10)return"point1";if(Math.sqrt(Math.pow(t-n,2)+Math.pow(i-r,2))<=10)return"point2";return this.iC(t,i,s,e,n,r)<=10?"line":null}startDrag(t,i){this.Ax=!0,this.Bx=t,this.Ex=i,"line"===t&&(this.Wx={gt:this.Nx.point1Time,bt:this.Nx.point1Price},this.Ox={gt:this.Nx.point2Time,bt:this.Nx.point2Price})}stopDrag(){this.Ax=!1,this.Bx=null,this.Ex=null,this.Wx=null,this.Ox=null}updateDrag(t,i){if(this.Ax&&this.Bx){if("point1"===this.Bx)this.Nx.point1Time=t,this.Nx.point1Price=i;else if("point2"===this.Bx)this.Nx.point2Time=t,this.Nx.point2Price=i;else if("line"===this.Bx&&this.Wx&&this.Ox){const s=Bh(this.Ex,t,i);this.Nx.point1Time=this.Wx.gt+s.gt,this.Nx.point1Price=this.Wx.bt+s.bt,this.Nx.point2Time=this.Ox.gt+s.gt,this.Nx.point2Price=this.Ox.bt+s.bt}this.cM(),this.Nx.onUpdate&&this.Nx.onUpdate()}}isVisible(){return this._visible}_serializeShape(){return{type:"trendLine",points:[Oh(this.Nx.point1Price??0,Wh(this.Nx.point1Time)),Oh(this.Nx.point2Price??0,Wh(this.Nx.point2Time))],style:{lineColor:this.Nx.lineColor,lineWidth:this.Nx.lineWidth,lineStyle:this.Nx.lineStyle,extendLeft:this.Nx.extendLeft,extendRight:this.Nx.extendRight}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}isComplete(){return this.zx}remove(){if(this.$x&&(this.$x.m(),this.$x=null),this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.Nx.onRemove&&this.Nx.onRemove()}}function Qh(t,i){return new Jh(t,i)}class tl{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class il{constructor(t){this.Vx=t,this.Jt=new tl(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class sl extends Nh{constructor(t,i){super(t,"horizontal-line",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Ex=null,this.sC=0,this.eC={lineColor:"#2962ff",lineWidth:2,lineStyle:"solid",showLabel:!0,showPriceLabel:!0,labelText:"",interactive:!1,...i},this._registerOptions(this.eC),this.Zy()}Zy(){this.eh=this.qx();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.Yx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}qx(){return new il(this)}nC(){return void 0===this.eC.startTime?0:Ye(this._chart,this._series,this.eC.startTime)??0}drawToCanvas(t,i,s){if(void 0===this.eC.price)return;const e=(this._series.priceToCoordinate(this.eC.price)??0)*s,n=this._chart.chartElement().clientWidth*i,r=this.nC()*i,h=this.eC.lineColor,l=this.Fx?this.eC.lineWidth+1:this.eC.lineWidth;t.strokeStyle=h,t.lineWidth=l*i,"dashed"===this.eC.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.eC.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.moveTo(r,e),t.lineTo(n,e),t.stroke(),t.setLineDash([]),!1!==this.eC.showPriceLabel&&jh(t,this._series,i,s,{bt:this.eC.price,ct:e/s,Wt:h}),this.eC.showLabel&&(this.Fx||this.Lx)&&this.rC(t,e,i,s,h)}rC(t,i,s,e,n){const r=this.eC.labelText||this.eC.price.toFixed(4),h=6*s,l=12*s;t.font=`${l}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const o=t.measureText(r).width,a=l,_=10*s,u=i-a/2-h;t.fillStyle=n,t.fillRect(_,u,o+2*h,a+2*h),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(r,_+h,u+h)}setColor(t){this.eC.lineColor=t,this.cM()}color(){return this.eC.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}Yx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){if(void 0===this.eC.price)return!1;const s=this._series.priceToCoordinate(this.eC.price)??0;return!(t<this.nC()-8)&&Math.abs(i-s)<=8}hitTestEndpoint(t,i){return this.hitTest(t,i)?"line":null}startDrag(t,i){this.Ax=!0,this.Ex=i,this.sC=this.eC.price??0}stopDrag(){this.Ax=!1,this.Ex=null}updateDrag(t,i){this.Ax&&(this.eC.price=this.sC+Bh(this.Ex,t,i).bt,this.cM(),this.eC.onUpdate&&this.eC.onUpdate())}getPrice(){return this.eC.price}setPrice(t){this.eC.price=t,this.cM()}setLabel(t){this.eC.labelText=t,this.cM()}isVisible(){return this._visible}_serializeShape(){return{type:"horizontalLine",points:[Oh(this.eC.price??0,Wh(this.eC.startTime))],style:{lineColor:this.eC.lineColor,lineWidth:this.eC.lineWidth,lineStyle:this.eC.lineStyle,showLabel:this.eC.showLabel,labelText:this.eC.labelText}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}remove(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.eC.onRemove&&this.eC.onRemove()}}function el(t,i){return new sl(t,i)}class nl{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class rl{constructor(t){this.Vx=t,this.Jt=new nl(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class hl extends Nh{constructor(t,i){super(t,"cross-line",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Ex=null,this.hC=0,this.sC=0,this.lC={lineColor:"#787b86",lineWidth:1,lineStyle:"dashed",showPriceLabel:!0,...i},this._registerOptions(this.lC),this.Zy()}Zy(){this.eh=new rl(this);const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.Yx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}cM(){this.Rx&&this.Rx()}_update(){this.cM()}oC(){if(void 0===this.lC.time||void 0===this.lC.price)return null;const t=Ye(this._chart,this._series,this.lC.time),i=this._series.priceToCoordinate(this.lC.price);return null===t||null===i?null:{ut:t,ct:i}}drawToCanvas(t,i,s){const e=this.oC();if(null===e)return;const n=this._chart.chartElement(),r=n.clientWidth*i,h=n.clientHeight*s,l=e.ut*i,o=e.ct*s,a=this.lC.lineColor,_=this.Fx||this.Lx&&!this.isLocked(),u=_?this.lC.lineWidth+1:this.lC.lineWidth;t.strokeStyle=a,t.lineWidth=u*i,"dashed"===this.lC.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.lC.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.moveTo(0,o),t.lineTo(r,o),t.moveTo(l,0),t.lineTo(l,h),t.stroke(),t.setLineDash([]),!1!==this.lC.showPriceLabel&&void 0!==this.lC.price&&jh(t,this._series,i,s,{bt:this.lC.price,ct:e.ct,Wt:a}),_&&!this.isLocked()&&(t.fillStyle=a,t.strokeStyle="#ffffff",t.lineWidth=2*i,t.beginPath(),t.arc(l,o,5*i,0,2*Math.PI),t.fill(),t.stroke())}Yx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){const s=this.oC();if(null===s)return!1;return Math.abs(i-s.ct)<=8||Math.abs(t-s.ut)<=8}hitTestEndpoint(t,i){return this.hitTest(t,i)?"line":null}startDrag(t,i){this.Ax=!0,this.Ex=i,this.hC=this.lC.time,this.sC=this.lC.price??0}updateDrag(t,i){if(!this.Ax)return;const s=Bh(this.Ex,t,i);this.lC.time=this.hC+s.gt,this.lC.price=this.sC+s.bt,this.cM(),this.lC.onUpdate&&this.lC.onUpdate()}stopDrag(){this.Ax=!1,this.Ex=null}setColor(t){this.lC.lineColor=t,this.cM()}color(){return this.lC.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}remove(){if(this.Ub){try{this._series.detachPrimitive(this.Ub)}catch(t){}this.Ub=null}this.Rx=null,this.lC.onRemove&&this.lC.onRemove()}_serializeShape(){return{type:"crossLine",points:[Oh(this.lC.price??0,Wh(this.lC.time))],style:{lineColor:this.lC.lineColor,lineWidth:this.lC.lineWidth,lineStyle:this.lC.lineStyle}}}}function ll(t,i){return new hl(t,i)}class ol{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class al{constructor(t){this.Vx=t,this.Jt=new ol(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class _l extends Nh{constructor(t,i){super(t,"polygon",i),this.V_=[],this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Bx=null,this.Ex=null,this.aC=null,this.zx=!1,this.Hx=null,this.GS=null,this._C=null,this.uC=null,this.cC={fillColor:"#2962FF",fillOpacity:.15,borderColor:"#2962FF",borderWidth:2,borderStyle:"solid",interactive:!1,...i},this._registerOptions(this.cC),this.V_=[...i.points??[]],this.Zy(),this.cC.interactive?this.dC():this.zx=this.V_.length>=3}Zy(){this.eh=new al(this);const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.Yx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}cM(){this.Rx&&this.Rx()}_update(){this.cM()}dC(){this.GS=t=>{if(!t.point||Yh(this._chart))return;const i=this._series.coordinateToPrice(t.point.y),s=qe(this._chart,this._series,t.point.x);null!==i&&null!==s&&(this.V_.length>=3&&this.pC(t.point.x,t.point.y)?this.fC():(this.V_.push({time:s,price:i}),this.cM()))},this._C=t=>{if(!t.point||this.zx)return;const i=this._series.coordinateToPrice(t.point.y),s=qe(this._chart,this._series,t.point.x);null!==i&&null!==s&&(this.Hx={time:s,price:i},this.cM())},this.uC=t=>{"Enter"===t.key&&this.V_.length>=3?this.fC():"Escape"===t.key&&(this.V_=[],this.fC())},this._chart.subscribeClick(this.GS),this._chart.subscribeCrosshairMove(this._C),document.addEventListener("keydown",this.uC)}pC(t,i){const s=this.V_[0],e=Ye(this._chart,this._series,s.time),n=this._series.priceToCoordinate(s.price);return null!==e&&null!==n&&(Math.abs(t-e)<=_l.vC&&Math.abs(i-n)<=_l.vC)}fC(){this.zx=!0,this.Hx=null,this.mC(),this.cM(),this.cC.onComplete&&this.cC.onComplete(),this.cC.onUpdate&&this.cC.onUpdate()}mC(){this.GS&&(this._chart.unsubscribeClick(this.GS),this.GS=null),this._C&&(this._chart.unsubscribeCrosshairMove(this._C),this._C=null),this.uC&&(document.removeEventListener("keydown",this.uC),this.uC=null)}wC(){const t=[...this.V_];return this.zx||null===this.Hx||t.push(this.Hx),this.gC(t)}gC(t){const i=[];for(const s of t){const t=Ye(this._chart,this._series,s.time),e=this._series.priceToCoordinate(s.price);null!==t&&null!==e&&i.push({ut:t,ct:e})}return i}drawToCanvas(t,i,s){const e=this.wC();if(e.length<2)return;const n=this.cC.borderColor,r=this.Fx?this.cC.borderWidth+1:this.cC.borderWidth;t.beginPath(),t.moveTo(e[0].ut*i,e[0].ct*s);for(let n=1;n<e.length;n++)t.lineTo(e[n].ut*i,e[n].ct*s);this.zx&&(t.closePath(),this.cC.fillOpacity>0&&(t.fillStyle=this.Cy(this.cC.fillColor,this.cC.fillOpacity),t.fill())),t.strokeStyle=n,t.lineWidth=r*i,this.zx?"dashed"===this.cC.borderStyle?t.setLineDash([10*i,5*i]):"dotted"===this.cC.borderStyle&&t.setLineDash([2*i,3*i]):t.setLineDash([6*i,4*i]),t.stroke(),t.setLineDash([]);if((this.Fx||this.Lx||!this.zx)&&!this.isLocked())for(const e of this.bC())this.MC(t,e.ut*i,e.ct*s,i,n)}bC(){return this.gC(this.V_)}MC(t,i,s,e,n){t.fillStyle=n,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.beginPath(),t.arc(i,s,5*e,0,2*Math.PI),t.fill(),t.stroke()}Cy(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}Yx(t,i){if(!this.isVisible()||!this.zx)return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,`corner-${s}`,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){const s=this.bC();if(s.length<3)return!1;let e=!1;for(let n=0,r=s.length-1;n<s.length;r=n++){s[n].ct>i!=s[r].ct>i&&t<(s[r].ut-s[n].ut)*(i-s[n].ct)/(s[r].ct-s[n].ct)+s[n].ut&&(e=!e)}return e}hitTestEndpoint(t,i){const s=this.bC();for(let e=0;e<s.length;e++)if(Math.abs(t-s[e].ut)<=10&&Math.abs(i-s[e].ct)<=10)return e;return null}startDrag(t,i){this.Ax=!0,this.Bx=t,this.Ex=i,this.aC=this.V_.map(t=>({gt:t.time,bt:t.price}))}updateDrag(t,i){if(this.Ax&&null!==this.Bx&&null!==this.aC){if("shape"===this.Bx){const s=Bh(this.Ex,t,i);this.V_=this.aC.map(t=>({gt:t.time+s.gt,bt:t.price+s.bt}))}else{const s=this.Bx;this.V_[s]&&(this.V_[s]={time:t,price:i})}this.cM(),this.cC.onUpdate&&this.cC.onUpdate()}}stopDrag(){this.Ax=!1,this.Bx=null,this.Ex=null,this.aC=null}setColor(t){this.cC.borderColor=t,this.cC.fillColor=t,this.cM()}color(){return this.cC.borderColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}points(){return this.V_}isComplete(){return this.zx}remove(){if(this.mC(),this.Ub){try{this._series.detachPrimitive(this.Ub)}catch(t){}this.Ub=null}this.Rx=null,this.cC.onRemove&&this.cC.onRemove()}_serializeShape(){return{type:"polygon",points:this.V_.map(t=>Oh(t.price,Wh(t.time))),style:{fillColor:this.cC.fillColor,fillOpacity:this.cC.fillOpacity,borderColor:this.cC.borderColor,borderWidth:this.cC.borderWidth,borderStyle:this.cC.borderStyle}}}}function ul(t,i){return new _l(t,i)}_l.vC=12;class cl{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class dl{constructor(t){this.Vx=t,this.Jt=new cl(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class pl extends Nh{constructor(t,i){super(t,"parallel-channel",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Bx=null,this.Ex=null,this.yC=null,this.zx=!1,this._d=0,this.Hx=null,this.GS=null,this._C=null,this.SC={lineColor:"#2962FF",lineWidth:2,lineStyle:"solid",fillColor:"#2962FF",fillOpacity:.1,channelWidth:0,extendRight:!1,showPriceLabel:!0,interactive:!1,...i},this._registerOptions(this.SC),this.Zy(),this.SC.interactive?this.dC():this.zx=!0}Zy(){this.eh=new dl(this);const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.Yx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}cM(){this.Rx&&this.Rx()}_update(){this.cM()}dC(){this.GS=t=>{if(!t.point||Yh(this._chart))return;const i=this._series.coordinateToPrice(t.point.y),s=qe(this._chart,this._series,t.point.x);if(null!==i&&null!==s){if(0===this._d)this.SC.point1Time=s,this.SC.point1Price=i;else{if(1!==this._d)return this.SC.channelWidth=i-this.xC(s),void this.fC();this.SC.point2Time=s,this.SC.point2Price=i}this._d++,this.cM()}},this._C=t=>{if(!t.point||this.zx)return;const i=this._series.coordinateToPrice(t.point.y),s=qe(this._chart,this._series,t.point.x);null!==i&&null!==s&&(this.Hx={gt:s,bt:i},2===this._d&&(this.SC.channelWidth=i-this.xC(s)),this.cM())},this._chart.subscribeClick(this.GS),this._chart.subscribeCrosshairMove(this._C)}fC(){this.zx=!0,this.Hx=null,this.mC(),this.cM(),this.SC.onComplete&&this.SC.onComplete(),this.SC.onUpdate&&this.SC.onUpdate()}mC(){this.GS&&(this._chart.unsubscribeClick(this.GS),this.GS=null),this._C&&(this._chart.unsubscribeCrosshairMove(this._C),this._C=null)}xC(t){const i=this.SC.point1Time,s=this.SC.point2Time,e=this.SC.point1Price,n=this.SC.point2Price;if(void 0===i||void 0===e)return 0;if(void 0===s||void 0===n||s===i)return e;return e+(n-e)/(s-i)*(t-i)}mS(){const t=this.SC,i=this.zx?t.point2Time:t.point2Time??this.Hx?.gt,s=this.zx?t.point2Price:t.point2Price??this.Hx?.bt;if(void 0===t.point1Time||void 0===t.point1Price||void 0===i||void 0===s)return null;const e=Ye(this._chart,this._series,t.point1Time),n=Ye(this._chart,this._series,i),r=this._series.priceToCoordinate(t.point1Price),h=this._series.priceToCoordinate(s);if(null===e||null===n||null===r||null===h)return null;let l=n,o=h;if(t.extendRight&&l!==e){const t=this._chart.chartElement().clientWidth;l=t,o=r+(h-r)/(n-e)*(t-e)}const a=t.channelWidth??0,_=this._series.priceToCoordinate(t.point1Price+a),u=this._series.priceToCoordinate(this._series.coordinateToPrice(o)+a);return null===_||null===u?null:{Kx:e,Gx:l,CC:r,PC:o,TC:_,kC:u}}drawToCanvas(t,i,s){const e=this.mS();if(null===e)return;const n=this.SC,r=n.lineColor,h=this.Fx?n.lineWidth+1:n.lineWidth,l=i,o=s;n.fillOpacity>0&&0!==(n.channelWidth??0)&&(t.fillStyle=this.Cy(n.fillColor,n.fillOpacity),t.beginPath(),t.moveTo(e.Kx*l,e.CC*o),t.lineTo(e.Gx*l,e.PC*o),t.lineTo(e.Gx*l,e.kC*o),t.lineTo(e.Kx*l,e.TC*o),t.closePath(),t.fill()),t.strokeStyle=r,t.lineWidth=h*l,this.zx?"dashed"===n.lineStyle?t.setLineDash([10*l,5*l]):"dotted"===n.lineStyle&&t.setLineDash([2*l,3*l]):t.setLineDash([6*l,4*l]),t.beginPath(),t.moveTo(e.Kx*l,e.CC*o),t.lineTo(e.Gx*l,e.PC*o),0!==(n.channelWidth??0)&&(t.moveTo(e.Kx*l,e.TC*o),t.lineTo(e.Gx*l,e.kC*o)),t.stroke(),t.setLineDash([]);if((this.Fx||this.Lx||!this.zx)&&!this.isLocked()&&(this.MC(t,e.Kx*l,e.CC*o,l,r),this.MC(t,e.Gx*l,e.PC*o,l,r),0!==(n.channelWidth??0))){const i=(e.Kx+e.Gx)/2,s=(e.TC+e.kC)/2;this.MC(t,i*l,s*o,l,r)}if(!1!==n.showPriceLabel&&this.zx){const i=this._series.coordinateToPrice(e.PC);null!==i&&jh(t,this._series,l,o,{bt:i,ct:e.PC,Wt:r})}}MC(t,i,s,e,n){t.fillStyle=n,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.beginPath(),t.arc(i,s,5*e,0,2*Math.PI),t.fill(),t.stroke()}Cy(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}Yx(t,i){if(!this.isVisible()||!this.zx)return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}DC(t,i,s,e,n,r){const h=n-s,l=r-e,o=h*h+l*l;if(0===o)return Math.hypot(t-s,i-e);let a=((t-s)*h+(i-e)*l)/o;return a=Math.max(0,Math.min(1,a)),Math.hypot(t-(s+a*h),i-(e+a*l))}hitTest(t,i){const s=this.mS();if(null===s)return!1;return this.DC(t,i,s.Kx,s.CC,s.Gx,s.PC)<=8||this.DC(t,i,s.Kx,s.TC,s.Gx,s.kC)<=8}hitTestEndpoint(t,i){const s=this.mS();if(null===s)return null;const e=(s,e)=>Math.abs(t-s)<=10&&Math.abs(i-e)<=10;if(e(s.Kx,s.CC))return"point1";if(e(s.Gx,s.PC))return"point2";if(0!==(this.SC.channelWidth??0)){if(e((s.Kx+s.Gx)/2,(s.TC+s.kC)/2))return"width"}return null}startDrag(t,i){this.Ax=!0,this.Bx=t,this.Ex=i,this.yC={IC:{gt:this.SC.point1Time,bt:this.SC.point1Price},VC:{gt:this.SC.point2Time,bt:this.SC.point2Price},ts:this.SC.channelWidth??0}}updateDrag(t,i){if(!this.Ax||null===this.Bx||null===this.yC)return;const s=this.SC;if("point1"===this.Bx)s.point1Time=t,s.point1Price=i;else if("point2"===this.Bx)s.point2Time=t,s.point2Price=i;else if("width"===this.Bx)s.channelWidth=i-this.xC(t);else{const e=Bh(this.Ex,t,i);s.point1Time=this.yC.IC.gt+e.gt,s.point1Price=this.yC.IC.bt+e.bt,s.point2Time=this.yC.VC.gt+e.gt,s.point2Price=this.yC.VC.bt+e.bt,s.channelWidth=this.yC.ts}this.cM(),s.onUpdate&&s.onUpdate()}stopDrag(){this.Ax=!1,this.Bx=null,this.Ex=null,this.yC=null}setColor(t){this.SC.lineColor=t,this.SC.fillColor=t,this.cM()}color(){return this.SC.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}isComplete(){return this.zx}remove(){if(this.mC(),this.Ub){try{this._series.detachPrimitive(this.Ub)}catch(t){}this.Ub=null}this.Rx=null,this.SC.onRemove&&this.SC.onRemove()}_serializeShape(){return{type:"parallelChannel",points:[Oh(this.SC.point1Price??0,Wh(this.SC.point1Time)),Oh(this.SC.point2Price??0,Wh(this.SC.point2Time))],style:{lineColor:this.SC.lineColor,lineWidth:this.SC.lineWidth,lineStyle:this.SC.lineStyle,fillColor:this.SC.fillColor,fillOpacity:this.SC.fillOpacity,extendRight:this.SC.extendRight},extra:{channelWidth:this.SC.channelWidth}}}}function fl(t,i){return new pl(t,i)}class vl{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class ml{constructor(t){this.Vx=t,this.Jt=new vl(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class wl extends Nh{constructor(t,i){super(t,"pitchfork",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Bx=null,this.Ex=null,this.yC=null,this.zx=!1,this._d=0,this.Hx=null,this.GS=null,this._C=null,this.RC={lineColor:"#9C27B0",lineWidth:2,lineStyle:"solid",fillColor:"#9C27B0",fillOpacity:.08,interactive:!1,...i},this._registerOptions(this.RC),this.Zy(),this.RC.interactive?this.dC():this.zx=!0}Zy(){this.eh=new ml(this);const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.Yx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}cM(){this.Rx&&this.Rx()}_update(){this.cM()}dC(){this.GS=t=>{if(!t.point||Yh(this._chart))return;const i=this._series.coordinateToPrice(t.point.y),s=qe(this._chart,this._series,t.point.x);if(null!==i&&null!==s){if(0===this._d)this.RC.pivotTime=s,this.RC.pivotPrice=i;else{if(1!==this._d)return this.RC.lowerTime=s,this.RC.lowerPrice=i,this._d++,void this.fC();this.RC.upperTime=s,this.RC.upperPrice=i}this._d++,this.cM()}},this._C=t=>{if(!t.point||this.zx)return;const i=this._series.coordinateToPrice(t.point.y),s=qe(this._chart,this._series,t.point.x);null!==i&&null!==s&&(this.Hx={gt:s,bt:i},this.cM())},this._chart.subscribeClick(this.GS),this._chart.subscribeCrosshairMove(this._C)}fC(){this.zx=!0,this.Hx=null,this.mC(),this.cM(),this.RC.onComplete&&this.RC.onComplete(),this.RC.onUpdate&&this.RC.onUpdate()}mC(){this.GS&&(this._chart.unsubscribeClick(this.GS),this.GS=null),this._C&&(this._chart.unsubscribeCrosshairMove(this._C),this._C=null)}FC(t,i){if(void 0===t||void 0===i)return null;const s=Ye(this._chart,this._series,t),e=this._series.priceToCoordinate(i);return null===s||null===e?null:{ut:s,ct:e}}LC(){const t=this.RC,i=this.FC(t.pivotTime,t.pivotPrice),s=this.FC(t.upperTime,t.upperPrice),e=this.zx?this.FC(t.lowerTime,t.lowerPrice):this.FC(t.lowerTime,t.lowerPrice)??(null!==this.Hx&&this._d>=2?this.FC(this.Hx.gt,this.Hx.bt):null);if(null===i||null===s||null===e)return null;const n={ut:(s.ut+e.ut)/2,ct:(s.ct+e.ct)/2};if(n.ut===i.ut)return null;const r=this._chart.chartElement().clientWidth,h=(n.ct-i.ct)/(n.ut-i.ut),l=t=>({ut:r,ct:t.ct+h*(r-t.ut)});return{Vy:i,AC:n,uy:s,vy:e,BC:l(i),EC:l(s),WC:l(e)}}drawToCanvas(t,i,s){const e=this.LC();if(null===e)return void this.OC(t,i,s);const n=this.RC,r=n.lineColor,h=i,l=s;n.fillOpacity>0&&(t.fillStyle=this.Cy(n.fillColor,n.fillOpacity),t.beginPath(),t.moveTo(e.uy.ut*h,e.uy.ct*l),t.lineTo(e.EC.ut*h,e.EC.ct*l),t.lineTo(e.WC.ut*h,e.WC.ct*l),t.lineTo(e.vy.ut*h,e.vy.ct*l),t.closePath(),t.fill()),t.strokeStyle=r,t.lineWidth=(this.Fx?n.lineWidth+1:n.lineWidth)*h,"dashed"===n.lineStyle?t.setLineDash([10*h,5*h]):"dotted"===n.lineStyle&&t.setLineDash([2*h,3*h]),t.beginPath(),t.moveTo(e.uy.ut*h,e.uy.ct*l),t.lineTo(e.vy.ut*h,e.vy.ct*l),t.moveTo(e.Vy.ut*h,e.Vy.ct*l),t.lineTo(e.BC.ut*h,e.BC.ct*l),t.moveTo(e.uy.ut*h,e.uy.ct*l),t.lineTo(e.EC.ut*h,e.EC.ct*l),t.moveTo(e.vy.ut*h,e.vy.ct*l),t.lineTo(e.WC.ut*h,e.WC.ct*l),t.stroke(),t.setLineDash([]);if((this.Fx||this.Lx||!this.zx)&&!this.isLocked())for(const i of[e.Vy,e.uy,e.vy])this.MC(t,i.ut*h,i.ct*l,h,r)}OC(t,i,s){const e=this.RC,n=this.FC(e.pivotTime,e.pivotPrice);if(null===n)return;const r=this.FC(e.upperTime,e.upperPrice)??(null!==this.Hx?this.FC(this.Hx.gt,this.Hx.bt):null),h=e.lineColor;t.strokeStyle=h,t.lineWidth=e.lineWidth*i,t.setLineDash([6*i,4*i]),null!==r&&(t.beginPath(),t.moveTo(n.ut*i,n.ct*s),t.lineTo(r.ut*i,r.ct*s),t.stroke()),t.setLineDash([]),this.MC(t,n.ut*i,n.ct*s,i,h)}MC(t,i,s,e,n){t.fillStyle=n,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.beginPath(),t.arc(i,s,5*e,0,2*Math.PI),t.fill(),t.stroke()}Cy(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}Yx(t,i){if(!this.isVisible()||!this.zx)return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}DC(t,i,s,e,n,r){const h=n-s,l=r-e,o=h*h+l*l;if(0===o)return Math.hypot(t-s,i-e);let a=((t-s)*h+(i-e)*l)/o;return a=Math.max(0,Math.min(1,a)),Math.hypot(t-(s+a*h),i-(e+a*l))}hitTest(t,i){const s=this.LC();if(null===s)return!1;return[[s.Vy,s.BC],[s.uy,s.EC],[s.vy,s.WC],[s.uy,s.vy]].some(([s,e])=>this.DC(t,i,s.ut,s.ct,e.ut,e.ct)<=8)}hitTestEndpoint(t,i){const s=this.LC();if(null===s)return null;const e=s=>Math.abs(t-s.ut)<=10&&Math.abs(i-s.ct)<=10;return e(s.Vy)?"pivot":e(s.uy)?"upper":e(s.vy)?"lower":null}startDrag(t,i){this.Ax=!0,this.Bx=t,this.Ex=i,this.yC=[{gt:this.RC.pivotTime,bt:this.RC.pivotPrice},{gt:this.RC.upperTime,bt:this.RC.upperPrice},{gt:this.RC.lowerTime,bt:this.RC.lowerPrice}]}updateDrag(t,i){if(!this.Ax||null===this.Bx||null===this.yC)return;const s=this.RC;if("pivot"===this.Bx)s.pivotTime=t,s.pivotPrice=i;else if("upper"===this.Bx)s.upperTime=t,s.upperPrice=i;else if("lower"===this.Bx)s.lowerTime=t,s.lowerPrice=i;else{const e=Bh(this.Ex,t,i),[n,r,h]=this.yC;s.pivotTime=n.gt+e.gt,s.pivotPrice=n.bt+e.bt,s.upperTime=r.gt+e.gt,s.upperPrice=r.bt+e.bt,s.lowerTime=h.gt+e.gt,s.lowerPrice=h.bt+e.bt}this.cM(),s.onUpdate&&s.onUpdate()}stopDrag(){this.Ax=!1,this.Bx=null,this.Ex=null,this.yC=null}setColor(t){this.RC.lineColor=t,this.RC.fillColor=t,this.cM()}color(){return this.RC.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}isComplete(){return this.zx}remove(){if(this.mC(),this.Ub){try{this._series.detachPrimitive(this.Ub)}catch(t){}this.Ub=null}this.Rx=null,this.RC.onRemove&&this.RC.onRemove()}_serializeShape(){return{type:"pitchfork",points:[Oh(this.RC.pivotPrice??0,Wh(this.RC.pivotTime)),Oh(this.RC.upperPrice??0,Wh(this.RC.upperTime)),Oh(this.RC.lowerPrice??0,Wh(this.RC.lowerTime))],style:{lineColor:this.RC.lineColor,lineWidth:this.RC.lineWidth,lineStyle:this.RC.lineStyle,fillColor:this.RC.fillColor,fillOpacity:this.RC.fillOpacity}}}}function gl(t,i){return new wl(t,i)}class bl{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Ml{constructor(t){this.Vx=t,this.Jt=new bl(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class yl extends Nh{constructor(t,i){super(t,"vertical-line",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Ex=null,this.hC=0,this.zC={lineColor:"#787b86",lineWidth:1,lineStyle:"dashed",showLabel:!0,labelText:"",interactive:!1,...i},this._registerOptions(this.zC),this.Zy()}Zy(){this.eh=this.qx();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.Yx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}qx(){return new Ml(this)}drawToCanvas(t,i,s){if(void 0===this.zC.time)return;const e=(Ye(this._chart,this._series,this.zC.time)??0)*i,n=this._chart.chartElement().clientHeight*s,r=this.zC.lineColor,h=this.Fx||this.Lx&&!this.isLocked()?this.zC.lineWidth+1:this.zC.lineWidth;t.strokeStyle=r,t.lineWidth=h*i,"dashed"===this.zC.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.zC.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.moveTo(e,0),t.lineTo(e,n),t.stroke(),t.setLineDash([]),this.zC.showLabel&&(this.Fx||this.Lx)&&this.zC.labelText&&this.rC(t,e,i,s,r)}rC(t,i,s,e,n){const r=this.zC.labelText,h=6*s,l=12*s;t.font=`${l}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const o=t.measureText(r).width,a=l,_=i-o/2-h,u=10*e;t.fillStyle=n,t.fillRect(_,u,o+2*h,a+2*h),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(r,_+h,u+h)}setColor(t){this.zC.lineColor=t,this.cM()}color(){return this.zC.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}Yx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){if(void 0===this.zC.time)return!1;const s=Ye(this._chart,this._series,this.zC.time)??0;return Math.abs(t-s)<=8}hitTestEndpoint(t,i){return this.hitTest(t,i)?"line":null}startDrag(t,i){this.Ax=!0,this.Ex=i,this.hC=this.zC.time}stopDrag(){this.Ax=!1,this.Ex=null}updateDrag(t,i){this.Ax&&(this.zC.time=this.hC+Bh(this.Ex,t,i).gt,this.cM(),this.zC.onUpdate&&this.zC.onUpdate())}getTime(){return this.zC.time}setTime(t){this.zC.time=t,this.cM()}setLabel(t){this.zC.labelText=t,this.cM()}isVisible(){return this._visible}_serializeShape(){return{type:"verticalLine",points:[Oh(0,Wh(this.zC.time))],style:{lineColor:this.zC.lineColor,lineWidth:this.zC.lineWidth,lineStyle:this.zC.lineStyle,showLabel:this.zC.showLabel,labelText:this.zC.labelText}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}remove(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.zC.onRemove&&this.zC.onRemove()}}function Sl(t,i){return new yl(t,i)}const xl=[{$C:0,Zl:"0.0%"},{$C:.236,Zl:"23.6%"},{$C:.382,Zl:"38.2%"},{$C:.5,Zl:"50.0%"},{$C:.618,Zl:"61.8%"},{$C:.786,Zl:"78.6%"},{$C:1,Zl:"100.0%"}],Cl=[...xl,{$C:1.272,Zl:"127.2%"},{$C:1.414,Zl:"141.4%"},{$C:1.618,Zl:"161.8%"},{$C:2,Zl:"200.0%"},{$C:2.618,Zl:"261.8%"}];class Pl{constructor(t=!1){this.HC=t?Cl:xl}calculateLevels(t,i,s,e){const n=Math.abs(e-i),r=n/i*100,h=e>i,l=this.HC.map(({$C:t,Zl:i})=>{let s;return s=h?e-n*t:e+n*t,{$C:t,bt:s,Zl:i}});return{point1:{time:t,price:i},point2:{time:s,price:e},priceRange:n,priceRangePercent:r,levels:l,isUptrend:h}}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.HC=t}getRatios(){return[...this.HC]}getRatioValues(){return this.HC.map(t=>t.$C)}useStandardRatios(){this.HC=xl}useExtendedRatios(){this.HC=Cl}}class Tl{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class kl{constructor(t){this.Vx=t,this.Jt=new Tl(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}}function Dl(t){return{$C:t,Zl:`${(100*t).toFixed(1)}%`}}class Il extends Nh{constructor(t,i){super(t,"fibonacci-tool",i),this.Ub=null,this.Rx=null,this.jb=null,this.eh=null,this.NC=null,this.zx=!1,this.Fx=!1,this.Lx=!1,this.Hx=null,this.Ax=!1,this.UC=null,this.sp=null,this.qC={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._registerOptions(this.qC),this.YC=new Pl(this.qC.useExtended),void 0!==this.qC.levels&&this.qC.levels.length>0&&this.YC.updateRatios(this.qC.levels.map(Dl)),this.Zy(),this.qC.interactive?this.Ux():(this.zx=!0,this.jC())}Zy(){this.eh=this.qx();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.Yx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}qx(){return new kl(this)}drawToCanvas(t,i,s){if(!this.zx&&this.qC.point1Time&&this.Hx)return void this.Qx(t,i,s);if(!this.jb||!this.qC.point1Time||!this.qC.point2Time)return;const e=(Ye(this._chart,this._series,this.qC.point1Time)??0)*i,n=(Ye(this._chart,this._series,this.qC.point2Time)??0)*i,r=Math.min(e,n),h=Math.max(e,n),l=this.Fx?2:this.qC.lineWidth;this.jb.levels.forEach(e=>{this.KC(t,e,r,h,i,s,l)}),!this.Fx&&!this.Lx||this.isLocked()||(this.tC(t,e,(this._series.priceToCoordinate(this.qC.point1Price)??0)*s,i),this.tC(t,n,(this._series.priceToCoordinate(this.qC.point2Price)??0)*s,i))}KC(t,i,s,e,n,r,h=1){const l=i.ratio??i.$C,o=i.price??i.bt;if(void 0===l||void 0===o)return;const a=(this._series.priceToCoordinate(o)??0)*r;let _=this.qC.levelColors?.[l.toString()]||this.qC.lineColor;t.strokeStyle=_,t.lineWidth=h*n,t.beginPath(),t.moveTo(s,a),t.lineTo(e,a),t.stroke(),this.qC.showLabels&&this.rC(t,i,s,e,a,n,_)}rC(t,i,s,e,n,r,h){const l=i.label??i.Zl,o=i.price??i.bt,a=`${l} ${this.YC.formatPrice(o)}`;t.font=11*r+"px sans-serif";const _=t.measureText(a),u=4*r,c="right"===this.qC.labelPosition?e+u:s-_.width-u,d=n;t.fillStyle="rgba(255, 255, 255, 0.9)",t.fillRect(c-u/2,d-11*r/2-u/2,_.width+u,11*r+u),t.fillStyle=h,t.textAlign="right"===this.qC.labelPosition?"left":"right",t.textBaseline="middle",t.fillText(a,c,d)}jC(){this.qC.point1Time&&this.qC.point1Price&&this.qC.point2Time&&this.qC.point2Price&&(this.jb=this.YC.calculateLevels(this.qC.point1Time,this.qC.point1Price,this.qC.point2Time,this.qC.point2Price),this.qC.onUpdate&&this.jb&&this.qC.onUpdate(this.jb))}updatePoints(t,i,s,e){this.qC.point1Time=t,this.qC.point1Price=i,this.qC.point2Time=s,this.qC.point2Price=e,this.jC(),this.cM()}getMetrics(){return this.jb}getLevels(){return this.jb?.levels||[]}isVisible(){return this._visible}_serializeShape(){const t=this.YC.getRatioValues();return{type:"fibRetracement",points:[Oh(this.qC.point1Price??0,Wh(this.qC.point1Time)),Oh(this.qC.point2Price??0,Wh(this.qC.point2Time))],style:{lineColor:this.qC.lineColor,lineWidth:this.qC.lineWidth,showLabels:this.qC.showLabels,labelPosition:this.qC.labelPosition,levelColors:this.qC.levelColors},extra:{levels:t,useExtended:this.qC.useExtended}}}useExtendedLevels(t){this.qC.useExtended=t,t?this.YC.useExtendedRatios():this.YC.useStandardRatios(),this.jC(),this.cM()}Ux(){this.NC=new Xh(this._chart,this._series,{Tx:t=>{this.qC.point1Time=t.gt,this.qC.point1Price=t.bt,this.cM()},kx:t=>{this.qC.point2Time=t.gt,this.qC.point2Price=t.bt},Dx:(t,i)=>{this.qC.point1Time=t.gt,this.qC.point1Price=t.bt,this.qC.point2Time=i.gt,this.qC.point2Price=i.bt,this.zx=!0,this.Hx=null,this.jC(),this.XC(),this.cM()},Ix:t=>{this.Hx=t,this.cM()}}),this.NC.vx()}Qx(t,i,s){if(!this.qC.point1Time||!this.Hx)return;const e=(Ye(this._chart,this._series,this.qC.point1Time)??0)*i,n=(this._series.priceToCoordinate(this.qC.point1Price)??0)*s,r=(Ye(this._chart,this._series,this.Hx.gt)??0)*i,h=(this._series.priceToCoordinate(this.Hx.bt)??0)*s,l=this.YC.calculateLevels(this.qC.point1Time,this.qC.point1Price,this.Hx.gt,this.Hx.bt),o=Math.min(e,r),a=Math.max(e,r);t.setLineDash([5*i,5*i]),t.globalAlpha=.7,l.levels.forEach(e=>{const n=e.ratio??e.$C,r=e.price??e.bt;if(void 0===n||void 0===r)return;const h=(this._series.priceToCoordinate(r)??0)*s,l=this.qC.levelColors?.[n.toString()]||this.qC.lineColor;if(t.strokeStyle=l,t.lineWidth=this.qC.lineWidth*i,t.beginPath(),t.moveTo(o,h),t.lineTo(a,h),t.stroke(),this.qC.showLabels){const s=`${e.label??e.Zl} ${this.YC.formatPrice(r)}`;t.font=11*i+"px sans-serif";const n=t.measureText(s),_=4*i,u="right"===this.qC.labelPosition?a+_:o-n.width-_,c=h;t.fillStyle="rgba(255, 255, 255, 0.8)",t.fillRect(u-_/2,c-11*i/2-_/2,n.width+_,11*i+_),t.fillStyle=l,t.textAlign="right"===this.qC.labelPosition?"left":"right",t.textBaseline="middle",t.fillText(s,u,c)}}),t.setLineDash([]),t.globalAlpha=1,this.tC(t,e,n,i),t.globalAlpha=.6,this.tC(t,r,h,i),t.globalAlpha=1}tC(t,i,s,e){const n=this.qC.lineColor,r=this.Fx?5*e:4*e;t.fillStyle=n,t.beginPath(),t.arc(i,s,r,0,2*Math.PI),t.fill(),this.Fx&&(t.strokeStyle="#ffffff",t.lineWidth=2*e,t.stroke())}XC(){this.sp=t=>{this.GC(t)},this._chart.subscribeCrosshairMove(this.sp)}ZC(){this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null)}GC(t){if(!t.point)return;const i=qe(this._chart,this._series,t.point.x);if(null===i)return;if(!this.Fx||!this.Ax)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&("point1"===this.UC?(this.qC.point1Time=i,this.qC.point1Price=s):"point2"===this.UC&&(this.qC.point2Time=i,this.qC.point2Price=s),this.jC(),this.cM())}startDrag(t){this.Ax=!0,this.UC=t}stopDrag(){this.Ax=!1,this.UC=null}updateDrag(t,i){this.Ax&&this.UC&&("point1"===this.UC?(this.qC.point1Time=t,this.qC.point1Price=i):(this.qC.point2Time=t,this.qC.point2Price=i),this.jC(),this.cM())}hitTestEndpoint(t,i){if(!this.zx||!this.qC.point1Time||!this.qC.point2Time)return null;const s=Ye(this._chart,this._series,this.qC.point1Time)??0,e=this._series.priceToCoordinate(this.qC.point1Price)??0,n=Ye(this._chart,this._series,this.qC.point2Time)??0,r=this._series.priceToCoordinate(this.qC.point2Price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2))<=10)return"point1";return Math.sqrt(Math.pow(t-n,2)+Math.pow(i-r,2))<=10?"point2":null}applyOptions(t){this.qC={...this.qC,...t},void 0!==t.levels&&t.levels.length>0?this.YC.updateRatios(t.levels.map(Dl)):void 0!==t.useExtended&&(t.useExtended?this.YC.useExtendedRatios():this.YC.useStandardRatios()),super.applyOptions(t),this.jC(),this.cM()}options(){return{...this.qC,levels:this.YC.getRatioValues()}}setColor(t){this.qC.lineColor=t,this.cM()}color(){return this.qC.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}isSelected(){return this.Fx}Yx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){if(!this.zx||!this.qC.point1Time||!this.qC.point2Time)return!1;const s=Ye(this._chart,this._series,this.qC.point1Time)??0,e=Ye(this._chart,this._series,this.qC.point2Time)??0;if(t<Math.min(s,e)||t>Math.max(s,e))return!1;if(!this.jb)return!1;for(const t of this.jb.levels){const s=t.price??t.bt;if(void 0===s)continue;const e=this._series.priceToCoordinate(s)??0;if(Math.abs(i-e)<=8)return!0}return!1}isComplete(){return this.zx}remove(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.NC&&(this.NC.m(),this.NC=null),this.ZC(),this.qC.onRemove&&this.qC.onRemove()}destroy(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.qC.onRemove&&this.qC.onRemove()}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.jC(),this.cM()}}function Vl(t,i){return new Il(t,i)}class Rl{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Fl{constructor(t){this.Vx=t,this.Jt=new Rl(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}}class Ll extends Nh{constructor(t,i){super(t,"fibonacci-extension",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Bx=null,this.qC={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.Zy()}Zy(){this.eh=this.qx();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.Yx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}qx(){return new Fl(this)}getPoint1(){return this.qC.point1}getPoint2(){return this.qC.point2}getPoint3(){return this.qC.point3}getLevels(){return this.qC.levels||[]}getOptions(){return this.qC}setPoint1(t){this.qC.point1=t,this.cM()}setPoint2(t){this.qC.point2=t,this.cM()}setPoint3(t){this.qC.point3=t,this.cM()}isComplete(){return!!(this.qC.point1&&this.qC.point2&&this.qC.point3)}setColor(t){this.qC.lineColor=t,this.cM()}color(){return this.qC.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}Yx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){if(!this.isComplete())return!1;const s=[this.qC.point1,this.qC.point2,this.qC.point3];for(const e of s){const s=Ye(this._chart,this._series,e.time)??0,n=this._series.priceToCoordinate(e.price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-n,2))<=10)return!0}const e=this.JC();for(const t of e){const s=this._series.priceToCoordinate(t.bt)??0;if(Math.abs(i-s)<=10)return!0}return!1}hitTestEndpoint(t,i){if(!this.isComplete())return null;const s=this.qC.point1,e=this.qC.point2,n=this.qC.point3;if(!s||!e||!n)return null;if(s&&s.time&&void 0!==s.price){const e=Ye(this._chart,this._series,s.time)??0,n=this._series.priceToCoordinate(s.price)??0;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-n,2))<=20)return"point1"}if(e&&e.time&&void 0!==e.price){const s=Ye(this._chart,this._series,e.time)??0,n=this._series.priceToCoordinate(e.price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-n,2))<=20)return"point2"}if(n&&n.time&&void 0!==n.price){const s=Ye(this._chart,this._series,n.time)??0,e=this._series.priceToCoordinate(n.price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2))<=20)return"point3"}return null}startDrag(t){this.Ax=!0,this.Bx=t}stopDrag(){this.Ax=!1,this.Bx=null}updateDrag(t,i){if(!this.Ax||!this.Bx)return;const s={time:t,price:i};switch(this.Bx){case"point1":this.setPoint1(s);break;case"point2":this.setPoint2(s);break;case"point3":this.setPoint3(s)}this.qC.onUpdate&&this.qC.onUpdate()}JC(){if(!this.isComplete())return[];const t=this.qC.point1,i=this.qC.point2,s=this.qC.point3,e=i.price-t.price;return(this.qC.levels||[]).map(t=>({ie:t.level,bt:s.price+e*t.level,Zl:t.label,I:t.color}))}getExtensionLevels(){return this.JC()}drawToCanvas(t,i,s){if(!this.isComplete())return;const e=this.qC.point1,n=this.qC.point2,r=this.qC.point3,h=this.Fx||this.Lx&&!this.isLocked(),l=(Ye(this._chart,this._series,e.time)??0)*i,o=(this._series.priceToCoordinate(e.price)??0)*s,a=(Ye(this._chart,this._series,n.time)??0)*i,_=(this._series.priceToCoordinate(n.price)??0)*s,u=(Ye(this._chart,this._series,r.time)??0)*i,c=(this._series.priceToCoordinate(r.price)??0)*s;t.strokeStyle=this.qC.lineColor||"#787B86",t.lineWidth=(this.qC.lineWidth||1)*i*(h?1.5:1),t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(l,o),t.lineTo(a,_),t.stroke(),t.beginPath(),t.moveTo(a,_),t.lineTo(u,c),t.stroke(),t.setLineDash([]);const d=this.getExtensionLevels(),p=t.canvas.width;for(const e of d){const n=e.bt??e.price,r=e.I??e.color,l=e.Zl??e.label;if(null==n)continue;const o=(this._series.priceToCoordinate(n)??0)*s;if(t.strokeStyle=r,t.lineWidth=(this.qC.lineWidth||1)*i*(h?1.5:1),t.beginPath(),this.qC.extendLines?(t.moveTo(0,o),t.lineTo(p,o)):(t.moveTo(u,o),t.lineTo(p,o)),t.stroke(),this.qC.showLabels){const s=`${l} (${n.toFixed(5)})`;t.font=12*i+"px Arial",t.fillStyle=r,t.textAlign="left",t.textBaseline="middle";const e=5*i,h=Math.max(u,10*i)+e;t.fillText(s,h,o)}}const f=(h?6:4)*i,v=[{ut:l,ct:o,Zl:"A"},{ut:a,ct:_,Zl:"B"},{ut:u,ct:c,Zl:"C"}];for(const s of v)t.fillStyle="#2962FF",t.beginPath(),t.arc(s.ut,s.ct,f,0,2*Math.PI),t.fill(),t.fillStyle="#ffffff",t.beginPath(),t.arc(s.ut,s.ct,f-2*i,0,2*Math.PI),t.fill(),h&&(t.fillStyle="#2962FF",t.font=`bold ${10*i}px Arial`,t.textAlign="center",t.textBaseline="middle",t.fillText(s.Zl,s.ut,s.ct))}isVisible(){return this._visible}_serializeShape(){return{type:"fibExtension",points:[zh(this.qC.point1),zh(this.qC.point2),zh(this.qC.point3)],style:{lineColor:this.qC.lineColor,lineWidth:this.qC.lineWidth,showLabels:this.qC.showLabels,extendLines:this.qC.extendLines},extra:{levels:(this.qC.levels||[]).map(t=>({ie:t.level,I:t.color,Zl:t.label}))}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}remove(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}}}function Al(t,i){return new Ll(t,i)}class Bl{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class El{constructor(t){this.Vx=t,this.Jt=new Bl(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}const Wl=[{level:.382,color:"#787B86",label:"38.2%"},{level:.5,color:"#9598A1",label:"50%"},{level:.618,color:"#787B86",label:"61.8%"}];class Ol extends Nh{constructor(t,i){super(t,"fibonacci-fan",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Bx=null,this.QC=!1,this.GS=null,this.sp=null,this.Hx=null,this.tP={levels:Wl,lineWidth:1,showLabels:!0,extendLines:!0,interactive:!1,...i},this.Zy(),this.tP.interactive&&!this.tP.point1Time&&this.Ux()}Ux(){this.QC=!0,this.GS=t=>{if(!t.point)return;if(Yh(this._chart))return;const i=qe(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.tP.point1Time?(this.tP.point2Time=i,this.tP.point2Price=s,this.QC=!1,this.Hx=null,this.GS&&(this._chart.unsubscribeClick(this.GS),this.GS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.cM(),this.tP.onUpdate&&this.tP.onUpdate()):(this.tP.point1Time=i,this.tP.point1Price=s,this.cM()))},this.sp=t=>{if(this.QC&&this.tP.point1Time)if(t.point){const i=qe(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.Hx={gt:i,bt:s},this.cM())}else this.Hx=null,this.cM()},this._chart.subscribeClick(this.GS),this._chart.subscribeCrosshairMove(this.sp)}Zy(){this.eh=this.qx();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.Yx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}qx(){return new El(this)}drawToCanvas(t,i,s){const e=this.tP.point1Time,n=this.tP.point1Price,r=this.QC&&this.Hx?this.Hx.gt:this.tP.point2Time,h=this.QC&&this.Hx?this.Hx.bt:this.tP.point2Price;if(!e||void 0===n||!r||void 0===h)return;const l=(Ye(this._chart,this._series,e)??0)*i,o=(this._series.priceToCoordinate(n)??0)*s,a=(Ye(this._chart,this._series,r)??0)*i,_=(this._series.priceToCoordinate(h)??0)*s,u=this.Fx?this.tP.lineWidth+1:this.tP.lineWidth;if(this.iP(t,l,o,a,_,"#2962FF",u*i),this.tP.levels)for(const e of this.tP.levels)this.sP(t,l,o,a,_,e,i,s,undefined,u);!this.Fx&&!this.Lx||this.QC||this.isLocked()||(this.tC(t,l,o,i,"#2962ff"),this.tC(t,a,_,i,"#2962ff"))}sP(t,i,s,e,n,r,h,l,o,a){const _=e,u=s+(n-s)*r.level;let c=_,d=u;if(this.tP.extendLines){const t=this._chart.chartElement().clientWidth*h,e=_-i,n=u-s,r=Math.sqrt(e*e+n*n);if(r>0){const h=2*t;c=i+e/r*h,d=s+n/r*h}}const p=o||r.color;this.iP(t,i,s,c,d,p,a*h),this.tP.showLabels&&!this.QC&&this.rC(t,_,u,r.label,h,p)}iP(t,i,s,e,n,r,h){t.strokeStyle=r,t.lineWidth=h,t.beginPath(),t.moveTo(i,s),t.lineTo(e,n),t.stroke()}tC(t,i,s,e,n){const r=5*e;t.fillStyle=n,t.beginPath(),t.arc(i,s,r,0,2*Math.PI),t.fill(),t.strokeStyle="#ffffff",t.lineWidth=2*e,t.stroke()}rC(t,i,s,e,n,r){const h=11*n,l=4*n;t.font=`${h}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const o=t.measureText(e).width,a=h;t.fillStyle=r,t.fillRect(i+l,s-a-l,o+2*l,a+2*l),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(e,i+2*l,s-a-l+l)}setColor(t){const i=this.tP.levels??[];for(const s of i)s.color=t;this.cM()}color(){const t=this.tP.levels??[];return t.length>0?t[0].color:""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}Yx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){if(!this.tP.point1Time||!this.tP.point2Time)return!1;const s=Ye(this._chart,this._series,this.tP.point1Time)??0,e=this._series.priceToCoordinate(this.tP.point1Price)??0,n=Ye(this._chart,this._series,this.tP.point2Time)??0,r=this._series.priceToCoordinate(this.tP.point2Price)??0;if(this.iC(t,i,s,e,n,r)<=8)return!0;if(this.tP.levels)for(const h of this.tP.levels){const l=e+(r-e)*h.level,o=n;if(this.iC(t,i,s,e,o,l)<=8)return!0}return!1}iC(t,i,s,e,n,r){const h=n-s,l=r-e,o=h*h+l*l;if(0===o)return Math.sqrt((t-s)*(t-s)+(i-e)*(i-e));let a=((t-s)*h+(i-e)*l)/o;a=Math.max(0,Math.min(1,a));const _=s+a*h,u=e+a*l;return Math.sqrt((t-_)*(t-_)+(i-u)*(i-u))}hitTestEndpoint(t,i){if(!this.tP.point1Time||!this.tP.point2Time)return null;const s=Ye(this._chart,this._series,this.tP.point1Time)??0,e=this._series.priceToCoordinate(this.tP.point1Price)??0,n=Ye(this._chart,this._series,this.tP.point2Time)??0,r=this._series.priceToCoordinate(this.tP.point2Price)??0;return Math.abs(t-s)<=10&&Math.abs(i-e)<=10?"point1":Math.abs(t-n)<=10&&Math.abs(i-r)<=10?"point2":null}startDrag(t){this.Ax=!0,this.Bx=t}stopDrag(){this.Ax=!1,this.Bx=null}updateDrag(t,i){this.Ax&&this.Bx&&("point1"===this.Bx?(this.tP.point1Time=t,this.tP.point1Price=i):"point2"===this.Bx&&(this.tP.point2Time=t,this.tP.point2Price=i),this.cM(),this.tP.onUpdate&&this.tP.onUpdate())}isVisible(){return this._visible}_serializeShape(){return{type:"fibFan",points:[Oh(this.tP.point1Price??0,Wh(this.tP.point1Time)),Oh(this.tP.point2Price??0,Wh(this.tP.point2Time))],style:{lineWidth:this.tP.lineWidth,showLabels:this.tP.showLabels,extendLines:this.tP.extendLines},extra:{levels:(this.tP.levels||[]).map(t=>({ie:t.level,I:t.color,Zl:t.label}))}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}isComplete(){return!this.QC}remove(){if(this.GS&&(this._chart.unsubscribeClick(this.GS),this.GS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.tP.onRemove&&this.tP.onRemove()}}function zl(t,i){return new Ol(t,i)}class $l{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Hl{constructor(t){this.Vx=t,this.Jt=new $l(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class Nl extends Nh{constructor(t,i){super(t,"rectangle",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Bx=null,this.Ex=null,this.Wx=null,this.Ox=null,this.QC=!1,this.GS=null,this.sp=null,this.Hx=null,this.eP={fillColor:"#2962ff",fillOpacity:.2,borderColor:"#2962ff",borderWidth:2,borderStyle:"solid",showLabel:!0,labelText:"",labelPosition:"top-left",interactive:!1,...i},this._registerOptions(this.eP),this.Zy(),!this.eP.interactive||this.eP.time1&&this.eP.time2||this.Ux()}Ux(){this.QC=!0,this.GS=t=>{if(!t.point)return;if(Yh(this._chart))return;const i=qe(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.eP.time1?(this.eP.time2=i,this.eP.price2=s,this.QC=!1,this.Hx=null,this.GS&&(this._chart.unsubscribeClick(this.GS),this.GS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.cM(),this.eP.onUpdate&&this.eP.onUpdate()):(this.eP.time1=i,this.eP.price1=s,this.cM()))},this.sp=t=>{if(this.QC&&this.eP.time1)if(t.point){const i=qe(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.Hx={gt:i,bt:s},this.cM())}else this.Hx=null,this.cM()},this._chart.subscribeClick(this.GS),this._chart.subscribeCrosshairMove(this.sp)}Zy(){this.eh=this.qx();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.Yx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}qx(){return new Hl(this)}drawToCanvas(t,i,s){const e=this.eP.time1,n=this.eP.price1,r=this.QC&&this.Hx?this.Hx.gt:this.eP.time2,h=this.QC&&this.Hx?this.Hx.bt:this.eP.price2;if(!e||void 0===n||!r||void 0===h)return;const l=(Ye(this._chart,this._series,e)??0)*i,o=(this._series.priceToCoordinate(n)??0)*s,a=(Ye(this._chart,this._series,r)??0)*i,_=(this._series.priceToCoordinate(h)??0)*s,u=Math.min(l,a),c=Math.max(l,a),d=Math.min(o,_),p=Math.max(o,_),f=c-u,v=p-d;if(this.eP.fillOpacity>0){const i=this.Xy(this.eP.fillColor,this.QC?.1:this.eP.fillOpacity);t.fillStyle=i,t.fillRect(u,d,f,v)}const m=this.eP.borderColor,w=this.Fx?this.eP.borderWidth+1:this.eP.borderWidth;t.strokeStyle=m,t.lineWidth=w*i,"dashed"===this.eP.borderStyle?t.setLineDash([10*i,5*i]):"dotted"===this.eP.borderStyle&&t.setLineDash([2*i,3*i]),t.strokeRect(u,d,f,v),t.setLineDash([]),!this.Fx&&!this.Lx||this.QC||this.isLocked()||this.nP(t,u,d,c,p,i,m),this.eP.showLabel&&this.eP.labelText&&!this.QC&&this.rC(t,u,d,c,p,i,s,m)}nP(t,i,s,e,n,r,h){const l=8*r,o=[{ut:i,ct:s},{ut:e,ct:s},{ut:i,ct:n},{ut:e,ct:n}];t.fillStyle=h,t.strokeStyle="#ffffff",t.lineWidth=2*r;for(const i of o)t.fillRect(i.ut-l/2,i.ct-l/2,l,l),t.strokeRect(i.ut-l/2,i.ct-l/2,l,l)}rC(t,i,s,e,n,r,h,l){const o=6*r,a=12*r;t.font=`${a}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const _=t.measureText(this.eP.labelText).width,u=a;let c=i+o,d=s+o;switch(this.eP.labelPosition){case"top-right":c=e-_-2*o,d=s+o;break;case"bottom-left":c=i+o,d=n-u-2*o;break;case"bottom-right":c=e-_-2*o,d=n-u-2*o;break;case"center":c=(i+e)/2-_/2-o,d=(s+n)/2-u/2-o}t.fillStyle=l,t.fillRect(c,d,_+2*o,u+2*o),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(this.eP.labelText,c+o,d+o)}Xy(t,i){if(!/^#[0-9a-f]{6}$/i.test(t))return t;return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}setColor(t){this.eP.borderColor=t,this.eP.fillColor=t,this.cM()}color(){return this.eP.borderColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}Yx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){if(!this.eP.time1||!this.eP.time2)return!1;const s=Ye(this._chart,this._series,this.eP.time1)??0,e=this._series.priceToCoordinate(this.eP.price1)??0,n=Ye(this._chart,this._series,this.eP.time2)??0,r=this._series.priceToCoordinate(this.eP.price2)??0,h=Math.min(s,n),l=Math.max(s,n),o=Math.min(e,r),a=Math.max(e,r);return t>=h&&t<=l&&i>=o&&i<=a}hitTestEndpoint(t,i){if(!this.eP.time1||!this.eP.time2)return null;const s=Ye(this._chart,this._series,this.eP.time1)??0,e=this._series.priceToCoordinate(this.eP.price1)??0,n=Ye(this._chart,this._series,this.eP.time2)??0,r=this._series.priceToCoordinate(this.eP.price2)??0,h=Math.min(s,n),l=Math.max(s,n),o=Math.min(e,r),a=Math.max(e,r),_=10;return Math.abs(t-h)<=_&&Math.abs(i-o)<=_?"corner1":Math.abs(t-l)<=_&&Math.abs(i-o)<=_?"corner2":Math.abs(t-h)<=_&&Math.abs(i-a)<=_?"corner3":Math.abs(t-l)<=_&&Math.abs(i-a)<=_?"corner4":t>=h&&t<=l&&i>=o&&i<=a?"body":null}startDrag(t,i){this.Ax=!0,this.Bx=t,this.Ex=i,"body"===t&&(this.Wx={gt:this.eP.time1,bt:this.eP.price1},this.Ox={gt:this.eP.time2,bt:this.eP.price2})}stopDrag(){this.Ax=!1,this.Bx=null,this.Ex=null,this.Wx=null,this.Ox=null}updateDrag(t,i){if(!this.Ax||!this.Bx)return;const s=Ye(this._chart,this._series,this.eP.time1)??0,e=this._series.priceToCoordinate(this.eP.price1)??0,n=s<(Ye(this._chart,this._series,this.eP.time2)??0),r=e<(this._series.priceToCoordinate(this.eP.price2)??0);if("body"===this.Bx&&this.Wx&&this.Ox){const s=Bh(this.Ex,t,i);this.eP.time1=this.Wx.gt+s.gt,this.eP.price1=this.Wx.bt+s.bt,this.eP.time2=this.Ox.gt+s.gt,this.eP.price2=this.Ox.bt+s.bt}else switch(this.Bx){case"corner1":n&&r?(this.eP.time1=t,this.eP.price1=i):!n&&r?(this.eP.time2=t,this.eP.price1=i):n&&!r?(this.eP.time1=t,this.eP.price2=i):(this.eP.time2=t,this.eP.price2=i);break;case"corner2":n&&r?(this.eP.time2=t,this.eP.price1=i):!n&&r?(this.eP.time1=t,this.eP.price1=i):n&&!r?(this.eP.time2=t,this.eP.price2=i):(this.eP.time1=t,this.eP.price2=i);break;case"corner3":n&&r?(this.eP.time1=t,this.eP.price2=i):!n&&r?(this.eP.time2=t,this.eP.price2=i):n&&!r?(this.eP.time1=t,this.eP.price1=i):(this.eP.time2=t,this.eP.price1=i);break;case"corner4":n&&r?(this.eP.time2=t,this.eP.price2=i):!n&&r?(this.eP.time1=t,this.eP.price2=i):n&&!r?(this.eP.time2=t,this.eP.price1=i):(this.eP.time1=t,this.eP.price1=i)}this.cM(),this.eP.onUpdate&&this.eP.onUpdate()}isVisible(){return this._visible}_serializeShape(){return{type:"rectangle",points:[Oh(this.eP.price1??0,Wh(this.eP.time1)),Oh(this.eP.price2??0,Wh(this.eP.time2))],style:{fillColor:this.eP.fillColor,fillOpacity:this.eP.fillOpacity,borderColor:this.eP.borderColor,borderWidth:this.eP.borderWidth,borderStyle:this.eP.borderStyle,showLabel:this.eP.showLabel,labelText:this.eP.labelText,labelPosition:this.eP.labelPosition}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}isComplete(){return!this.QC}remove(){if(this.GS&&(this._chart.unsubscribeClick(this.GS),this.GS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.eP.onRemove&&this.eP.onRemove()}}function Ul(t,i){return new Nl(t,i)}class ql{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Yl{constructor(t){this.Vx=t,this.Jt=new ql(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class jl extends Nh{constructor(t,i){super(t,"circle",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Bx=null,this.Ex=null,this.yC=null,this.QC=!1,this.GS=null,this.sp=null,this.Hx=null,this.rP={fillColor:"#2962ff",fillOpacity:.1,borderColor:"#2962ff",borderWidth:2,borderStyle:"solid",showLabel:!1,labelText:"",interactive:!1,...i},this._registerOptions(this.rP),this.Zy(),this.rP.interactive&&!this.rP.centerTime&&this.Ux()}Ux(){this.QC=!0,this.GS=t=>{if(!t.point)return;if(Yh(this._chart))return;const i=qe(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);if(null!==s)if(this.rP.centerTime){const t=this._chart.timeScale().timeToCoordinate(this.rP.centerTime)??0,e=this._series.priceToCoordinate(this.rP.centerPrice)??0,n=Ye(this._chart,this._series,i)??0,r=this._series.priceToCoordinate(s)??0;this.rP.radiusTime=Math.abs(n-t),this.rP.radiusPrice=Math.abs(r-e),this.QC=!1,this.Hx=null,this.GS&&(this._chart.unsubscribeClick(this.GS),this.GS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.cM(),this.rP.onUpdate&&this.rP.onUpdate()}else this.rP.centerTime=i,this.rP.centerPrice=s,this.cM()},this.sp=t=>{if(this.QC&&this.rP.centerTime)if(t.point){const i=qe(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.Hx={gt:i,bt:s},this.cM())}else this.Hx=null,this.cM()},this._chart.subscribeClick(this.GS),this._chart.subscribeCrosshairMove(this.sp)}Zy(){this.eh=this.qx();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.Yx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}qx(){return new Yl(this)}drawToCanvas(t,i,s){if(!this.rP.centerTime||void 0===this.rP.centerPrice)return;const e=(Ye(this._chart,this._series,this.rP.centerTime)??0)*i,n=(this._series.priceToCoordinate(this.rP.centerPrice)??0)*s;let r,h;if(this.QC&&this.Hx){const t=(Ye(this._chart,this._series,this.Hx.gt)??0)*i,l=(this._series.priceToCoordinate(this.Hx.bt)??0)*s;r=Math.abs(t-e),h=Math.abs(l-n)}else{if(void 0===this.rP.radiusTime||void 0===this.rP.radiusPrice)return;r=this.rP.radiusTime*i,h=this.rP.radiusPrice*s}if(this.rP.fillOpacity>0){const i=this.Xy(this.rP.fillColor,this.QC?.05:this.rP.fillOpacity);t.fillStyle=i,t.beginPath(),t.ellipse(e,n,r,h,0,0,2*Math.PI),t.fill()}const l=this.rP.borderColor,o=this.Fx?this.rP.borderWidth+1:this.rP.borderWidth;t.strokeStyle=l,t.lineWidth=o*i,"dashed"===this.rP.borderStyle?t.setLineDash([10*i,5*i]):"dotted"===this.rP.borderStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.ellipse(e,n,r,h,0,0,2*Math.PI),t.stroke(),t.setLineDash([]),!this.Fx&&!this.Lx||this.QC||this.isLocked()||this.hP(t,e,n,i,l),!this.Fx&&!this.Lx||this.QC||this.isLocked()||this.lP(t,e,n,r,h,i,l),this.rP.showLabel&&this.rP.labelText&&!this.QC&&this.rC(t,e,n,i,l)}hP(t,i,s,e,n){const r=8*e;t.fillStyle=n,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.beginPath(),t.arc(i,s,r/2,0,2*Math.PI),t.fill(),t.stroke()}lP(t,i,s,e,n,r,h){const l=8*r,o=[{ut:i,ct:s-n},{ut:i+e,ct:s},{ut:i,ct:s+n},{ut:i-e,ct:s}];t.fillStyle=h,t.strokeStyle="#ffffff",t.lineWidth=2*r;for(const i of o)t.fillRect(i.ut-l/2,i.ct-l/2,l,l),t.strokeRect(i.ut-l/2,i.ct-l/2,l,l)}rC(t,i,s,e,n){const r=6*e,h=12*e;t.font=`${h}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const l=t.measureText(this.rP.labelText).width,o=h,a=i-l/2-r,_=s-o/2-r;t.fillStyle=n,t.fillRect(a,_,l+2*r,o+2*r),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(this.rP.labelText,a+r,_+r)}Xy(t,i){if(!/^#[0-9a-f]{6}$/i.test(t))return t;return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}setColor(t){this.rP.borderColor=t,this.rP.fillColor=t,this.cM()}color(){return this.rP.borderColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}Yx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){if(!this.rP.centerTime||void 0===this.rP.radiusTime)return!1;const s=Ye(this._chart,this._series,this.rP.centerTime)??0,e=this._series.priceToCoordinate(this.rP.centerPrice)??0,n=(t-s)/this.rP.radiusTime,r=(i-e)/this.rP.radiusPrice;return n*n+r*r<=1}hitTestEndpoint(t,i){if(!this.rP.centerTime||void 0===this.rP.radiusTime)return null;const s=Ye(this._chart,this._series,this.rP.centerTime)??0,e=this._series.priceToCoordinate(this.rP.centerPrice)??0,n=this.rP.radiusTime,r=this.rP.radiusPrice;if(Math.abs(t-s)<=10&&Math.abs(i-e)<=10)return"center";const h=[{ut:s,ct:e-r},{ut:s+n,ct:e},{ut:s,ct:e+r},{ut:s-n,ct:e}];for(const s of h)if(Math.abs(t-s.ut)<=10&&Math.abs(i-s.ct)<=10)return"edge";return null}startDrag(t,i){this.Ax=!0,this.Bx=t,this.Ex=i,this.yC="center"===t?{gt:this.rP.centerTime,bt:this.rP.centerPrice}:null}stopDrag(){this.Ax=!1,this.Bx=null,this.Ex=null,this.yC=null}updateDrag(t,i){if(this.Ax&&this.Bx){if("center"===this.Bx&&this.yC){const s=Bh(this.Ex,t,i);this.rP.centerTime=this.yC.gt+s.gt,this.rP.centerPrice=this.yC.bt+s.bt}else if("edge"===this.Bx){const s=Ye(this._chart,this._series,this.rP.centerTime)??0,e=this._series.priceToCoordinate(this.rP.centerPrice)??0,n=Ye(this._chart,this._series,t)??0,r=this._series.priceToCoordinate(i)??0;this.rP.radiusTime=Math.abs(n-s),this.rP.radiusPrice=Math.abs(r-e)}this.cM(),this.rP.onUpdate&&this.rP.onUpdate()}}isVisible(){return this._visible}_serializeShape(){return{type:"circle",points:[Oh(this.rP.centerPrice??0,Wh(this.rP.centerTime))],style:{fillColor:this.rP.fillColor,fillOpacity:this.rP.fillOpacity,borderColor:this.rP.borderColor,borderWidth:this.rP.borderWidth,borderStyle:this.rP.borderStyle,showLabel:this.rP.showLabel,labelText:this.rP.labelText},extra:{radiusTime:this.rP.radiusTime,radiusPrice:this.rP.radiusPrice}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}isComplete(){return!this.QC}remove(){if(this.GS&&(this._chart.unsubscribeClick(this.GS),this.GS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.rP.onRemove&&this.rP.onRemove()}}function Kl(t,i){return new jl(t,i)}class Xl{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Gl{constructor(t){this.Vx=t,this.Jt=new Xl(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class Zl extends Nh{constructor(t,i){super(t,"arrow",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.oP=-1,this.QC=!1,this.GS=null,this.aP=null,this.sp=null,this.Hx=null,this._P={points:[],lineColor:"#2962ff",lineWidth:2,showArrowHead:!0,showCircles:!0,circleRadius:4,interactive:!1,...i},this._registerOptions(this._P),this.Zy(),!this._P.interactive||this._P.points&&0!==this._P.points.length||this.Ux()}Ux(){this.QC=!0,this.GS=t=>{if(!t.point)return;if(Yh(this._chart))return;const i=qe(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this._P.points||(this._P.points=[]),this._P.points.push({time:i,price:s}),this.cM(),this._P.onUpdate&&this._P.onUpdate())},this.sp=t=>{if(this.QC)if(t.point){const i=qe(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.Hx={gt:i,bt:s},this.cM())}else this.Hx=null,this.cM()},this.aP=t=>{this.QC&&(t.preventDefault(),t.stopPropagation(),this.finishDrawing())},this._chart.subscribeClick(this.GS),this._chart.subscribeCrosshairMove(this.sp);const t=this._chart.chartElement?.();t&&t.addEventListener("contextmenu",this.aP)}finishDrawing(){if(this.GS&&(this._chart.unsubscribeClick(this.GS),this.GS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.aP){const t=this._chart.chartElement?.();t&&t.removeEventListener("contextmenu",this.aP),this.aP=null}this.QC=!1,this.Hx=null,this.cM(),this._P.onComplete&&this._P.onComplete()}isDrawing(){return this.QC}Zy(){this.eh=this.qx();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.Yx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}qx(){return new Gl(this)}drawToCanvas(t,i,s){if(!this._P.points||0===this._P.points.length)return;const e=this._P.lineColor,n=this.Fx||this.Lx&&!this.isLocked()?this._P.lineWidth+1:this._P.lineWidth,r=[];for(const t of this._P.points)try{let e=Ye(this._chart,this._series,t.time);if(null===e){const i=this._chart.timeScale(),s=i.timeToIndex(t.time,!0);null!=s&&(e=i.logicalToCoordinate(s))}if(null==e)continue;const n=this._series.priceToCoordinate(t.price);if(null===n)continue;r.push({ut:e*i,ct:n*s})}catch{continue}if(0===r.length&&!this.QC)return;let h=null;if(this.QC&&this.Hx&&this._P.points.length>0){h={ut:(Ye(this._chart,this._series,this.Hx.gt)??0)*i,ct:(this._series.priceToCoordinate(this.Hx.bt)??0)*s}}if(r.length>1){t.strokeStyle=e,t.lineWidth=n*i,t.beginPath(),t.moveTo(r[0].ut,r[0].ct);for(let i=1;i<r.length;i++)t.lineTo(r[i].ut,r[i].ct);t.stroke()}if(h&&r.length>0){const s=r[r.length-1];t.strokeStyle=e,t.lineWidth=n*i,t.globalAlpha=.5,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(s.ut,s.ct),t.lineTo(h.ut,h.ct),t.stroke(),t.setLineDash([]),t.globalAlpha=1}if(this._P.showArrowHead&&r.length>1&&this.uP(t,r[r.length-2],r[r.length-1],i,e),this._P.showCircles)for(let s=0;s<r.length;s++)this.cP(t,r[s].ut,r[s].ct,i,e,0===s)}uP(t,i,s,e,n){const r=12*e,h=Math.atan2(s.ct-i.ct,s.ut-i.ut),l={ut:s.ut-r*Math.cos(h-Math.PI/6),ct:s.ct-r*Math.sin(h-Math.PI/6)},o={ut:s.ut-r*Math.cos(h+Math.PI/6),ct:s.ct-r*Math.sin(h+Math.PI/6)};t.fillStyle=n,t.beginPath(),t.moveTo(s.ut,s.ct),t.lineTo(l.ut,l.ct),t.lineTo(o.ut,o.ct),t.closePath(),t.fill()}cP(t,i,s,e,n,r){const h=this._P.circleRadius*e;t.beginPath(),t.arc(i,s,h,0,2*Math.PI),r?(t.fillStyle=n,t.fill()):(t.strokeStyle=n,t.lineWidth=2*e,t.stroke(),t.fillStyle="#ffffff",t.fill(),t.strokeStyle=n,t.stroke())}setColor(t){this._P.lineColor=t,this.cM()}color(){return this._P.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}Yx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){if(!this._P.points||0===this._P.points.length)return!1;for(let s=0;s<this._P.points.length-1;s++)try{const e=this._P.points[s],n=this._P.points[s+1];let r=Ye(this._chart,this._series,e.time);if(null===r){const t=this._chart.timeScale(),i=t.timeToIndex(e.time,!0);null!=i&&(r=t.logicalToCoordinate(i))}let h=Ye(this._chart,this._series,n.time);if(null===h){const t=this._chart.timeScale(),i=t.timeToIndex(n.time,!0);null!=i&&(h=t.logicalToCoordinate(i))}const l=this._series.priceToCoordinate(e.price),o=this._series.priceToCoordinate(n.price);if(null==r||null===l||null==h||null===o)continue;if(this.iC(t,i,r,l,h,o)<=8)return!0}catch{continue}for(const s of this._P.points)try{let e=Ye(this._chart,this._series,s.time);if(null===e){const t=this._chart.timeScale(),i=t.timeToIndex(s.time,!0);null!=i&&(e=t.logicalToCoordinate(i))}const n=this._series.priceToCoordinate(s.price);if(null==e||null===n)continue;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-n,2))<=8)return!0}catch{continue}return!1}iC(t,i,s,e,n,r){const h=n-s,l=r-e,o=h*h+l*l;if(0===o)return Math.sqrt((t-s)*(t-s)+(i-e)*(i-e));let a=((t-s)*h+(i-e)*l)/o;a=Math.max(0,Math.min(1,a));const _=s+a*h,u=e+a*l;return Math.sqrt((t-_)*(t-_)+(i-u)*(i-u))}hitTestEndpoint(t,i){if(!this._P.points||0===this._P.points.length)return null;for(let s=0;s<this._P.points.length;s++)try{const e=this._P.points[s];let n=Ye(this._chart,this._series,e.time);if(null===n){const t=this._chart.timeScale(),i=t.timeToIndex(e.time,!0);null!=i&&(n=t.logicalToCoordinate(i))}const r=this._series.priceToCoordinate(e.price);if(null==n||null===r)continue;if(Math.sqrt(Math.pow(t-n,2)+Math.pow(i-r,2))<=10)return s}catch{continue}return null}startDrag(t){this.Ax=!0,this.oP=t}stopDrag(){this.Ax=!1,this.oP=-1}updateDrag(t,i){this.Ax&&-1!==this.oP&&this._P.points&&this.oP>=0&&this.oP<this._P.points.length&&(this._P.points[this.oP]={time:t,price:i},this.cM(),this._P.onUpdate&&this._P.onUpdate())}getPoints(){return this._P.points||[]}addPoint(t){this._P.points||(this._P.points=[]),this._P.points.push(t),this.cM()}isVisible(){return this._visible}_serializeShape(){return{type:"arrow",points:(this._P.points||[]).map(t=>zh(t)),style:{lineColor:this._P.lineColor,lineWidth:this._P.lineWidth,showArrowHead:this._P.showArrowHead,showCircles:this._P.showCircles,circleRadius:this._P.circleRadius}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}isComplete(){return!this.QC}remove(){if(this.GS&&(this._chart.unsubscribeClick(this.GS),this.GS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.aP){const t=this._chart.chartElement?.();t&&t.removeEventListener("contextmenu",this.aP),this.aP=null}if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this._P.onRemove&&this._P.onRemove()}}function Jl(t,i){return new Zl(t,i)}class Ql{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class to{constructor(t){this.Vx=t,this.Jt=new Ql(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class io extends Nh{constructor(t,i){super(t,"brush",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.dP=!1,this.QC=!1,this.pP=[],this.fP=!1,this.kf=null,this.bS=null,this.PS=null,this.kS=null,this.IS=null,this.vP=void 0,this.xS=null,this.Ax=!1,this.Ex=null,this.aC=null,this.mP={points:[],color:"#2962ff",lineWidth:2,smoothing:!0,sampleDistance:4,...i},this._registerOptions(this.mP),this.Zy(),0===(this.mP.points??[]).length&&this.startDrawingMode()}startDrawingMode(){if(this.dP)return;const t=this._chart.chartElement();t&&(this.kf=t,this.dP=!0,this.PS=t=>this.TS(t),this.kS=t=>this.DS(t),this.IS=()=>this.VS(),this.xS=t=>{this.vP=t.hoveredObjectId},this._chart.subscribeCrosshairMove(this.xS),t.addEventListener("pointerdown",this.PS,!0),t.addEventListener("pointermove",this.kS,!0),t.addEventListener("pointerup",this.IS,!0),t.addEventListener("pointercancel",this.IS,!0))}stopDrawingMode(){if(!this.dP)return;this.wP(),this.dP=!1;const t=this.kf;t&&(this.PS&&t.removeEventListener("pointerdown",this.PS,!0),this.kS&&t.removeEventListener("pointermove",this.kS,!0),this.IS&&(t.removeEventListener("pointerup",this.IS,!0),t.removeEventListener("pointercancel",this.IS,!0))),this.xS&&(this._chart.unsubscribeCrosshairMove(this.xS),this.xS=null),this.PS=null,this.kS=null,this.IS=null,this.kf=null}isDrawingModeActive(){return this.dP}TS(t){if(this.gP())return;const i=this.bP(t);null!==i&&(this.QC=!0,this.pP=[i],this.bS=t.pointerId,qh(this._chart,!0),this.kf?.setPointerCapture(t.pointerId),t.preventDefault(),t.stopPropagation(),this.MP())}DS(t){if(!this.QC)return;const i=this.bP(t);if(null===i)return;const s=this.pP[this.pP.length-1];Math.hypot(i.ut-s.ut,i.ct-s.ct)<(this.mP.sampleDistance??4)||(this.pP.push(i),t.preventDefault(),t.stopPropagation(),this.MP())}VS(){this.QC&&this.wP()}wP(){if(!this.QC)return;this.QC=!1,this.HS();const t=[];for(const i of this.pP){const s=qe(this._chart,this._series,i.ut),e=this._series.coordinateToPrice(i.ct);null!==s&&null!==e&&t.push({time:s,price:e})}this.pP=[],t.length<2?this.cM():(this.mP.points=t,this.stopDrawingMode(),this.cM(),this.mP.onUpdate&&this.mP.onUpdate(),this.mP.onComplete&&this.mP.onComplete())}gP(){const t=this.vP;return"string"==typeof t&&t.split("#")[0]!==this.id}HS(){null!==this.bS&&(this.kf&&this.kf.hasPointerCapture(this.bS)&&this.kf.releasePointerCapture(this.bS),this.bS=null)}bP(t){const i=this.yP();if(null===i)return null;const s=i.getBoundingClientRect();return{ut:t.clientX-s.left,ct:t.clientY-s.top}}yP(){try{return this._series.getPane().getHTMLElement()}catch(t){return null}}MP(){this.fP||(this.fP=!0,requestAnimationFrame(()=>{this.fP=!1,this.cM()}))}drawToCanvas(t,i,s){const e=this.QC?this.pP.map(t=>({ut:t.ut*i,ct:t.ct*s})):this.SP(i,s);if(0===e.length)return;const n=this.Fx;if(t.strokeStyle=this.mP.color,t.lineWidth=(this.mP.lineWidth+(n?1:0))*i,t.lineCap="round",t.lineJoin="round",t.beginPath(),t.moveTo(e[0].ut,e[0].ct),this.mP.smoothing&&e.length>2){for(let i=1;i<e.length-1;i++){const s=(e[i].ut+e[i+1].ut)/2,n=(e[i].ct+e[i+1].ct)/2;t.quadraticCurveTo(e[i].ut,e[i].ct,s,n)}t.lineTo(e[e.length-1].ut,e[e.length-1].ct)}else for(let i=1;i<e.length;i++)t.lineTo(e[i].ut,e[i].ct);t.stroke(),!n&&!this.Lx||this.isLocked()||(this.tC(t,e[0],i),this.tC(t,e[e.length-1],i))}tC(t,i,s){t.fillStyle=this.mP.color,t.strokeStyle="#ffffff",t.lineWidth=2*s,t.beginPath(),t.arc(i.ut,i.ct,5*s,0,2*Math.PI),t.fill(),t.stroke()}SP(t,i){const s=this.mP.points??[],e=[];for(const n of s){const s=Ye(this._chart,this._series,n.time),r=this._series.priceToCoordinate(n.price);null!==s&&null!==r&&e.push({ut:s*t,ct:r*i})}return e}hitTest(t,i){const s=this.SP(1,1);for(let e=1;e<s.length;e++)if(so(t,i,s[e-1],s[e])<=8)return!0;return!1}hitTestEndpoint(t,i){return this.hitTest(t,i)?"stroke":null}startDrag(t,i){this.Ax=!0,this.Ex=i,this.aC=(this.mP.points??[]).map(t=>({time:t.time,price:t.price}))}updateDrag(t,i){const s=this.aC;if(!this.Ax||null===s||!this.mP.points)return;const e=Bh(this.Ex,t,i);this.mP.points.forEach((t,i)=>{const n=s[i];n&&(t.time=n.time+e.gt,t.price=n.price+e.bt)}),this.cM(),this.mP.onUpdate&&this.mP.onUpdate()}stopDrag(){this.Ax=!1,this.Ex=null,this.aC=null}setColor(t){this.mP.color=t,this.cM()}color(){return this.mP.color??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}Zy(){this.eh=new to(this);const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.Yx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Yx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):null}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}remove(){this.stopDrawingMode(),this.Ub&&(this._series.detachPrimitive(this.Ub),this.Ub=null),this.eh=null,this.mP.onRemove&&this.mP.onRemove()}_serializeShape(){return{type:"brush",points:(this.mP.points??[]).map(zh),style:{color:this.mP.color,lineWidth:this.mP.lineWidth,smoothing:this.mP.smoothing}}}getPoints(){return this.mP.points??[]}}function so(t,i,s,e){const n=e.ut-s.ut,r=e.ct-s.ct,h=n*n+r*r;if(0===h)return Math.hypot(t-s.ut,i-s.ct);let l=((t-s.ut)*n+(i-s.ct)*r)/h;return l=Math.max(0,Math.min(1,l)),Math.hypot(t-(s.ut+l*n),i-(s.ct+l*r))}function eo(t,i={}){return new io(t,i)}class no{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class ro{constructor(t){this.Vx=t,this.Jt=new no(t)}renderer(){return this.Vx.isComplete()?this.Jt:null}}class ho extends Nh{constructor(t,i){super(t,"text-tool",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Bx=null,this.Ex=null,this.yC=null,this.xP=!1,this.CP=null,this.PP={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._registerOptions(this.PP),this.Zy(),this.TP()}TP(){const t=t=>{if(!this.xP)return;const i=t.point?.x||0,s=t.point?.y||0;this.hitTest(i,s)||(this.setEditing(!1),this.PP.text&&""!==this.PP.text.trim()&&"Type here..."!==this.PP.text||this.remove())};this.CP=t,this._chart.subscribeClick(t)}Zy(){this.eh=this.qx();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.Yx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}qx(){return new ro(this)}getTime(){return this.PP.time}getPrice(){return this.PP.price}getText(){return this.PP.text||""}getOptions(){return this.PP}setPosition(t,i){this.PP.time=t,this.PP.price=i,this._update()}setText(t){this.PP.text=t,this._update(),this.PP.onTextChange&&this.PP.onTextChange(t)}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}isComplete(){return!(!this.PP.time||void 0===this.PP.price)}setColor(t){this.PP.textColor=t,this.PP.borderColor=t,this.cM()}color(){return this.PP.textColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this._update())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this._update())}isHovered(){return this.Lx}setEditing(t){this.xP!==t&&(this.xP=t,this._update())}isEditing(){return this.xP}Yx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){if(!this.isComplete())return!1;const s=this.PP.time,e=this.PP.price,n=Ye(this._chart,this._series,s)??0,r=this._series.priceToCoordinate(e)??0,h=this.PP.fontSize||14,l=this.PP.padding||8,o=this.PP.text||"",a=.6*h,_=Math.min(o.length*a,this.PP.maxWidth||200);return t>=n&&t<=n+_+2*l&&i>=r&&i<=r+(h+2*l)}hitTestEndpoint(t,i){if(!this.isComplete())return null;const s=this.PP.time,e=this.PP.price,n=Ye(this._chart,this._series,s)??0,r=this._series.priceToCoordinate(e)??0;return Math.sqrt(Math.pow(t-n,2)+Math.pow(i-r,2))<=10?"anchor":null}startDrag(t,i){this.Ax=!0,this.Bx=t,this.Ex=i,this.yC={gt:this.PP.time,bt:this.PP.price}}stopDrag(){this.Ax=!1,this.Bx=null,this.Ex=null,this.yC=null}updateDrag(t,i){if(this.Ax){if("body"===this.Bx&&this.yC){const s=Bh(this.Ex,t,i);this.setPosition(this.yC.gt+s.gt,this.yC.bt+s.bt)}else this.setPosition(t,i);this.PP.onUpdate&&this.PP.onUpdate()}}drawToCanvas(t,i,s){if(!this.isComplete())return;const e=this.PP.time,n=this.PP.price,r=this.PP.text||"",h=(Ye(this._chart,this._series,e)??0)*i,l=(this._series.priceToCoordinate(n)??0)*s,o=(this.PP.fontSize||14)*i,a=(this.PP.padding||8)*i,_=(this.PP.maxWidth||200)*i;t.font=`${o}px ${this.PP.fontFamily||"Arial"}`,t.textBaseline="top";const u=r.split(" "),c=[];let d="";for(const i of u){const s=d?`${d} ${i}`:i;t.measureText(s).width>_&&d?(c.push(d),d=i):d=s}d&&c.push(d);let p=0;for(const i of c){const s=t.measureText(i);p=Math.max(p,s.width)}const f=p+2*a,v=1.2*o,m=c.length*v+2*a,w=this.PP.backgroundOpacity||.8,g=this.PP.backgroundColor||"#2962FF";t.fillStyle=this.Xy(g,w),t.fillRect(h,l,f,m),(this.Fx||this.Lx)&&(t.strokeStyle=this.PP.borderColor??"#FFFFFF",t.lineWidth=(this.PP.borderWidth||1)*i*(this.Fx?2:1),t.strokeRect(h,l,f,m)),t.fillStyle=this.PP.textColor||"#FFFFFF";for(let i=0;i<c.length;i++){const s=c[i];let e=h+a;if("center"===this.PP.textAlign){e=h+(f-t.measureText(s).width)/2}else if("right"===this.PP.textAlign){e=h+f-t.measureText(s).width-a}const n=l+a+i*v;t.fillText(s,e,n)}if((this.Fx||this.Lx)&&!this.isLocked()){const s=4*i;t.fillStyle=this.PP.textColor??"#2962ff",t.beginPath(),t.arc(h,l,s,0,2*Math.PI),t.fill(),t.fillStyle="#FFFFFF",t.beginPath(),t.arc(h,l,s-2*i,0,2*Math.PI),t.fill()}}Xy(t,i){if(!/^#[0-9a-f]{6}$/i.test(t))return t;return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}_serializeShape(){return{type:"text",points:[Oh(this.PP.price??0,Wh(this.PP.time))],style:{fontSize:this.PP.fontSize,fontFamily:this.PP.fontFamily,textColor:this.PP.textColor,backgroundColor:this.PP.backgroundColor,backgroundOpacity:this.PP.backgroundOpacity,padding:this.PP.padding,borderColor:this.PP.borderColor,borderWidth:this.PP.borderWidth,textAlign:this.PP.textAlign,maxWidth:this.PP.maxWidth},extra:{text:this.PP.text}}}remove(){if(this.CP&&(this._chart.unsubscribeClick(this.CP),this.CP=null),this.Ub&&this._series){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.PP.onRemove&&this.PP.onRemove()}}function lo(t,i){return new ho(t,i)}class oo{constructor(t){this.kP=t}calculatePips(t,i){return Math.abs(i-t)/this.kP.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 r=Math.abs(t-i),h=Math.abs(s-t);n.stopLossAmount=r*e,n.takeProfitAmount=h*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.kP={...this.kP,...t}}getPipConfig(){return{...this.kP}}}function ao(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 _o(t,i){return"number"==typeof t?ao(t):void 0!==i?ao(i):{pipValue:.1,decimals:1}}class uo{constructor(t){this.kP=t}calculateMetrics(t,i,s,e,n){const r=e-i;return{point1:{time:t,price:i},point2:{time:s,price:e},priceDifference:r,pricePercent:r/i*100,pips:Math.abs(r)/this.kP.pipValue,timeDifference:this.DP(t,s),barCount:n}}DP(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.kP={...this.kP,...t}}getPipConfig(){return{...this.kP}}}class co{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class po{constructor(t){this.Vx=t,this.Jt=new co(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}}class fo extends Nh{constructor(t,i){super(t,"ruler-tool",i),this.Ub=null,this.Rx=null,this.jb=null,this.eh=null,this.NC=null,this.zx=!1,this.Fx=!1,this.Lx=!1,this.Hx=null,this.Ax=!1,this.UC=null,this.sp=null,this.IP={lineColor:"#2962ff",lineWidth:2,showLabel:!0,labelBackgroundColor:"#2962ff",labelTextColor:"#ffffff",selectionColor:"#2962ff",selectionLineWidth:3,symbol:"DEFAULT",...i},this._registerOptions(this.IP);const s=this.IP.pipConfig||_o(this.IP.symbol||"DEFAULT");this.YC=new uo(s),this.Zy(),this.IP.interactive?this.Ux():this.IP.point1Time&&this.IP.point2Time&&(this.zx=!0,this.jC())}Zy(){this.eh=this.qx();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.Yx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}qx(){return new po(this)}Ux(){this.NC=new Xh(this._chart,this._series,{Tx:t=>{this.IP.point1Time=t.gt,this.IP.point1Price=t.bt,this.cM()},kx:t=>{this.IP.point2Time=t.gt,this.IP.point2Price=t.bt},Dx:(t,i)=>{this.IP.point1Time=t.gt,this.IP.point1Price=t.bt,this.IP.point2Time=i.gt,this.IP.point2Price=i.bt,this.zx=!0,this.Hx=null,this.jC(),this.XC(),this.cM()},Ix:t=>{this.Hx=t,this.cM()}}),this.NC.vx()}drawToCanvas(t,i,s){if(!this.zx&&this.IP.point1Time&&this.Hx)return void this.Qx(t,i,s);if(!this.zx||!this.IP.point1Time||!this.IP.point2Time)return;const e=(Ye(this._chart,this._series,this.IP.point1Time)??0)*i,n=(this._series.priceToCoordinate(this.IP.point1Price)??0)*s,r=(Ye(this._chart,this._series,this.IP.point2Time)??0)*i,h=(this._series.priceToCoordinate(this.IP.point2Price)??0)*s;(this.Fx||this.Lx&&!this.isLocked())&&(t.strokeStyle=this.IP.selectionColor,t.lineWidth=this.IP.selectionLineWidth*i,t.beginPath(),t.moveTo(e,n),t.lineTo(r,h),t.stroke()),t.strokeStyle=this.IP.lineColor,t.lineWidth=this.IP.lineWidth*i,t.beginPath(),t.moveTo(e,n),t.lineTo(r,h),t.stroke(),this.VP(t,e,n,r,h,i),this.tC(t,e,n,i),this.tC(t,r,h,i),this.IP.showLabel&&this.jb&&this.rC(t,e,n,r,h,i,s)}VP(t,i,s,e,n,r){const h=this.IP.measure??"both";if("both"===h)return;const l=14*r;if(t.strokeStyle=this.IP.lineColor,t.lineWidth=this.IP.lineWidth*r,t.beginPath(),"price"===h)for(const r of[s,n])t.moveTo(Math.min(i,e)-l/2,r),t.lineTo(Math.max(i,e)+l/2,r);else for(const r of[i,e])t.moveTo(r,Math.min(s,n)-l/2),t.lineTo(r,Math.max(s,n)+l/2);t.stroke()}tC(t,i,s,e){const n=this.Fx?this.IP.selectionColor:this.IP.lineColor,r=this.Fx?5*e:4*e;t.fillStyle=n,t.beginPath(),t.arc(i,s,r,0,2*Math.PI),t.fill(),this.Fx&&(t.strokeStyle="#ffffff",t.lineWidth=2*e,t.stroke())}Qx(t,i,s){if(!this.IP.point1Time||!this.Hx)return;const e=(Ye(this._chart,this._series,this.IP.point1Time)??0)*i,n=(this._series.priceToCoordinate(this.IP.point1Price)??0)*s,r=(Ye(this._chart,this._series,this.Hx.gt)??0)*i,h=(this._series.priceToCoordinate(this.Hx.bt)??0)*s;t.strokeStyle=this.IP.lineColor,t.lineWidth=this.IP.lineWidth*i,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(e,n),t.lineTo(r,h),t.stroke(),t.setLineDash([]),this.tC(t,e,n,i),t.globalAlpha=.5,this.tC(t,r,h,i),t.globalAlpha=1}rC(t,i,s,e,n,r,h){if(!this.jb)return;const l=(i+e)/2,o=(s+n)/2,a=this.IP.measure??"both",_=[];"time"!==a&&(_.push(this.YC.formatPips(this.jb.pips)),_.push(this.YC.formatPercent(this.jb.pricePercent))),"price"!==a&&_.push(this.YC.formatBarCount(this.jb.barCount));const u=_.join(" | ");t.font=12*r+"px sans-serif";const c=6*r,d=t.measureText(u).width+2*c,p=12*r+2*c;t.fillStyle=this.IP.labelBackgroundColor,t.fillRect(l-d/2,o-p/2,d,p),t.fillStyle=this.IP.labelTextColor,t.textAlign="center",t.textBaseline="middle",t.fillText(u,l,o)}jC(){if(!this.IP.point1Time||!this.IP.point2Time||void 0===this.IP.point1Price||void 0===this.IP.point2Price)return;const t=this.RP();this.jb=this.YC.calculateMetrics(this.IP.point1Time,this.IP.point1Price,this.IP.point2Time,this.IP.point2Price,t),this.IP.onUpdate&&this.jb&&this.IP.onUpdate(this.jb)}RP(){if(!this.IP.point1Time||!this.IP.point2Time)return 0;const t=Ye(this._chart,this._series,this.IP.point1Time),i=Ye(this._chart,this._series,this.IP.point2Time);if(null===t||null===i)return 0;return Math.abs(Math.round((i-t)/6))}updatePoints(t,i,s,e){this.IP.point1Time=t,this.IP.point1Price=i,this.IP.point2Time=s,this.IP.point2Price=e,this.jC(),this.cM()}getMetrics(){return this.jb}remove(){this.destroy()}destroy(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.NC&&(this.NC.m(),this.NC=null),this.ZC(),this.IP.onRemove&&this.IP.onRemove()}XC(){this.sp=t=>{this.GC(t)},this._chart.subscribeCrosshairMove(this.sp)}ZC(){this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null)}GC(t){if(!t.point)return;const i=qe(this._chart,this._series,t.point.x);if(null===i)return;if(!this.Fx||!this.Ax)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&("point1"===this.UC?(this.IP.point1Time=i,this.IP.point1Price=s):"point2"===this.UC&&(this.IP.point2Time=i,this.IP.point2Price=s),this.jC(),this.cM())}startDrag(t){this.Ax=!0,this.UC=t}stopDrag(){this.Ax=!1,this.UC=null}updateDrag(t,i){this.Ax&&this.UC&&("point1"===this.UC?(this.IP.point1Time=t,this.IP.point1Price=i):(this.IP.point2Time=t,this.IP.point2Price=i),this.jC(),this.cM())}hitTestEndpoint(t,i){if(!this.zx||!this.IP.point1Time||!this.IP.point2Time)return null;const s=Ye(this._chart,this._series,this.IP.point1Time)??0,e=this._series.priceToCoordinate(this.IP.point1Price)??0,n=Ye(this._chart,this._series,this.IP.point2Time)??0,r=this._series.priceToCoordinate(this.IP.point2Price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2))<=10)return"point1";return Math.sqrt(Math.pow(t-n,2)+Math.pow(i-r,2))<=10?"point2":null}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.jC(),this.cM()}_serializeShape(){return{type:"ruler",points:[Oh(this.IP.point1Price??0,Wh(this.IP.point1Time)),Oh(this.IP.point2Price??0,Wh(this.IP.point2Time))],style:{lineColor:this.IP.lineColor,lineWidth:this.IP.lineWidth,showLabel:this.IP.showLabel,labelBackgroundColor:this.IP.labelBackgroundColor,labelTextColor:this.IP.labelTextColor,selectionColor:this.IP.selectionColor,selectionLineWidth:this.IP.selectionLineWidth},extra:{symbol:this.IP.symbol,pipConfig:this.IP.pipConfig,measure:this.IP.measure}}}setColor(t){this.IP.lineColor=t,this.cM()}color(){return this.IP.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}isSelected(){return this.Fx}isComplete(){return this.zx}Yx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){if(!this.zx||!this.IP.point1Time||!this.IP.point2Time)return!1;const s=Ye(this._chart,this._series,this.IP.point1Time)??0,e=this._series.priceToCoordinate(this.IP.point1Price)??0,n=Ye(this._chart,this._series,this.IP.point2Time)??0,r=this._series.priceToCoordinate(this.IP.point2Price)??0;return this.FP(t,i,s,e,n,r)<=(this.Fx?12:8)}FP(t,i,s,e,n,r){const h=n-s,l=r-e,o=h*h+l*l;let a,_,u=-1;0!==o&&(u=((t-s)*h+(i-e)*l)/o),u<0?(a=s,_=e):u>1?(a=n,_=r):(a=s+u*h,_=e+u*l);const c=t-a,d=i-_;return Math.sqrt(c*c+d*d)}}function vo(t,i){return new fo(t,i)}class mo{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class wo{constructor(t){this.Vx=t,this.Jt=new mo(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}}class go extends Nh{constructor(t,i){super(t,"position-tool",i),this.Ub=null,this.Rx=null,this.jb=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.Bx=null,this.Ex=null,this.yC=null,this.LP=null,this.AP=null,this.BP={profitColor:"#26a69a",lossColor:"#ef5350",entryLineColor:"#ffffff",opacity:.3,showTooltips:!0,...i},this._registerOptions(this.BP);const s=this.BP.pipConfig||_o(this.BP.entryPrice);this.YC=new oo(s),this.Zy(),this.jC()}Zy(){this.eh=this.qx();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.Yx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}qx(){return new wo(this)}drawToCanvas(t,i,s){if(this.LP&&this.BP.takeProfit){const e=this._chart.timeScale();this.EP(t,this.LP,i,s,e),(this.Lx||this.Fx)&&this.rC(t,this.LP,"profit",i,s,e)}if(this.AP&&this.BP.stopLoss){const e=this._chart.timeScale();if(this.EP(t,this.AP,i,s,e),this.Lx||this.Fx){const e=this._chart.timeScale();this.rC(t,this.AP,"loss",i,s,e)}}const e=this._chart.timeScale();if(this.WP(t,i,s,e),this.BP.takeProfit){const e=this._chart.timeScale();this.tC(t,this.BP.takeProfit,this.BP.profitColor,i,s,e)}if(this.BP.stopLoss){const e=this._chart.timeScale();this.tC(t,this.BP.stopLoss,this.BP.lossColor,i,s,e)}}EP(t,i,s,e,n){const r=(Ye(this._chart,this._series,this.BP.entryTime)??0)*s;let h;if(this.BP.endTime)h=(Ye(this._chart,this._series,this.BP.endTime)??0)*s;else{h=this._chart.chartElement().clientWidth*s}const l=(this._series.priceToCoordinate(i.OP)??0)*e,o=(this._series.priceToCoordinate(i.zP)??0)*e;t.fillStyle=this.Xy(i.I,.15),t.fillRect(r,Math.min(l,o),h-r,Math.abs(o-l)),t.strokeStyle=i.I,t.lineWidth=2*s,t.beginPath(),t.moveTo(r,o),t.lineTo(h,o),t.stroke()}WP(t,i,s,e){const n=(Ye(this._chart,this._series,this.BP.entryTime)??0)*i,r=(this._series.priceToCoordinate(this.BP.entryPrice)??0)*s;let h;if(this.BP.endTime)h=(Ye(this._chart,this._series,this.BP.endTime)??0)*i;else{h=this._chart.chartElement().clientWidth*i}const l=this.BP.entryLineColor;t.strokeStyle=l,t.lineWidth=2*i,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(n,r),t.lineTo(h,r),t.stroke(),t.setLineDash([]),t.strokeStyle=this.BP.entryLineColor,t.lineWidth=1*i,t.setLineDash([5*i,5*i]);const o=this._chart.chartElement().clientHeight*s;if(t.beginPath(),t.moveTo(n,0),t.lineTo(n,o),t.stroke(),t.setLineDash([]),!this.Fx&&!this.Lx||this.isLocked())t.fillStyle=this.BP.entryLineColor,t.beginPath(),t.arc(n,r,4*i,0,2*Math.PI),t.fill();else{t.fillStyle=l,t.strokeStyle="#ffffff",t.lineWidth=2*i,t.beginPath(),t.arc(n,r,5*i,0,2*Math.PI),t.fill(),t.stroke();const s=8*i;t.fillStyle=l,t.strokeStyle="#ffffff",t.lineWidth=2*i,t.fillRect(h-s/2,r-s/2,s,s),t.strokeRect(h-s/2,r-s/2,s,s)}}jC(){this.BP.stopLoss&&this.BP.takeProfit&&(this.jb=this.YC.calculateMetrics(this.BP.entryPrice,this.BP.stopLoss,this.BP.takeProfit,this.BP.quantity),this.$P(),this.BP.onUpdate&&this.jb&&this.BP.onUpdate(this.jb))}$P(){const t=this.HP();this.BP.takeProfit&&(this.LP={NP:this.BP.entryTime,UP:t,OP:this.BP.entryPrice,zP:this.BP.takeProfit,I:this.BP.profitColor,yy:this.BP.opacity}),this.BP.stopLoss&&(this.AP={NP:this.BP.entryTime,UP:t,OP:this.BP.entryPrice,zP:this.BP.stopLoss,I:this.BP.lossColor,yy:this.BP.opacity})}HP(){this._chart.timeScale().getVisibleLogicalRange();return this.BP.entryTime}rC(t,i,s,e,n,r){if(!this.jb)return;const h=(Ye(this._chart,this._series,this.BP.entryTime)??0)*e,l=(this._series.priceToCoordinate(i.zP)??0)*n,o="profit"===s,a=o?this.jb.takeProfitPips:this.jb.stopLossPips,_=o?this.BP.takeProfit:this.BP.stopLoss,u=this.jb.riskRewardRatio,c=o?`Objetivo: ${_?.toFixed(5)} (${a.toFixed(1)} pips) 1:${u.toFixed(2)}`:`P/G Abertura: ${_?.toFixed(5)} (${a.toFixed(1)} pips)`;t.font=11*e+'px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif';const d=6*e,p=t.measureText(c).width+2*d,f=20*e,v=h+8*e,m=l-f/2;t.fillStyle=i.I,t.fillRect(v,m,p,f),t.fillStyle="#ffffff",t.textAlign="left",t.textBaseline="middle",t.fillText(c,v+d,l)}tC(t,i,s,e,n,r){const h=(Ye(this._chart,this._series,this.BP.entryTime)??0)*e,l=(this._series.priceToCoordinate(i)??0)*n,o=s;let a;if(t.fillStyle=o,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.beginPath(),t.arc(h,l,5*e,0,2*Math.PI),t.fill(),t.stroke(),this.BP.endTime)a=(Ye(this._chart,this._series,this.BP.endTime)??0)*e;else{a=this._chart.chartElement().clientWidth*e-10*e}const _=8*e,u=s;t.fillStyle=u,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.fillRect(a-_/2,l-_/2,_,_),t.strokeRect(a-_/2,l-_/2,_,_)}Xy(t,i){if(!/^#[0-9a-f]{6}$/i.test(t))return t;return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}updatePosition(t){this.BP={...this.BP,...t},this.jC(),this._update()}getMetrics(){return this.jb}setStopLoss(t){this.BP.stopLoss=t,this.jC(),this._update()}setTakeProfit(t){this.BP.takeProfit=t,this.jC(),this._update()}setEntryPrice(t){this.BP.entryPrice=t,this.jC(),this._update()}_serializeShape(){return{type:"position",points:[Oh(this.BP.entryPrice,Wh(this.BP.entryTime))],style:{profitColor:this.BP.profitColor,lossColor:this.BP.lossColor,entryLineColor:this.BP.entryLineColor,opacity:this.BP.opacity,showTooltips:this.BP.showTooltips},extra:{endTime:Wh(this.BP.endTime),stopLoss:this.BP.stopLoss,takeProfit:this.BP.takeProfit,quantity:this.BP.quantity,pipConfig:this.BP.pipConfig}}}setColor(t){this.BP.entryLineColor=t,this.cM()}color(){return this.BP.entryLineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}Yx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):this.hitTest(t,i)?Ah(this.id,"body",!1):null}hitTest(t,i){if(!this.BP.stopLoss&&!this.BP.takeProfit)return!1;const s=Ye(this._chart,this._series,this.BP.entryTime)??0;let e;if(this.BP.endTime)e=Ye(this._chart,this._series,this.BP.endTime)??0;else{e=this._chart.chartElement().clientWidth}if(this.BP.takeProfit&&this.BP.stopLoss){const n=this._series.priceToCoordinate(this.BP.takeProfit)??0,r=this._series.priceToCoordinate(this.BP.stopLoss)??0,h=Math.min(n,r),l=Math.max(n,r);if(t>=s&&t<=e&&i>=h&&i<=l)return!0;const o=8;if(Math.abs(t-s)<=o&&i>=h&&i<=l)return!0}return!1}hitTestEndpoint(t,i){const s=Ye(this._chart,this._series,this.BP.entryTime)??0;let e;if(this.BP.endTime)e=Ye(this._chart,this._series,this.BP.endTime)??0;else{e=this._chart.chartElement().clientWidth}if(this.BP.takeProfit){const e=this._series.priceToCoordinate(this.BP.takeProfit)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2))<=10)return"tp"}if(this.BP.stopLoss){const e=this._series.priceToCoordinate(this.BP.stopLoss)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2))<=10)return"sl"}if(this.BP.takeProfit){const s=this._series.priceToCoordinate(this.BP.takeProfit)??0;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-s,2))<=10)return"tp-right"}if(this.BP.stopLoss){const s=this._series.priceToCoordinate(this.BP.stopLoss)??0;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-s,2))<=10)return"sl-right"}const n=this._series.priceToCoordinate(this.BP.entryPrice)??0;if(t>=s&&t<=e&&Math.abs(i-n)<=8)return"entry";if(this.BP.takeProfit&&this.BP.stopLoss){const n=this._series.priceToCoordinate(this.BP.takeProfit)??0,r=this._series.priceToCoordinate(this.BP.stopLoss)??0,h=Math.min(n,r),l=Math.max(n,r);if(t>=s&&t<=e&&i>=h&&i<=l)return"move"}return null}startDrag(t,i){this.Ax=!0,this.Bx=t,this.Ex=i,"move"===t&&(this.yC={qP:this.BP.entryPrice,YP:this.BP.entryTime??null,Ky:this.BP.endTime??null,jP:this.BP.takeProfit??null,KP:this.BP.stopLoss??null})}stopDrag(){this.Ax=!1,this.Bx=null,this.Ex=null,this.yC=null}updateDrag(t,i){if(this.Ax&&this.Bx){if("entry"===this.Bx)this.BP.entryPrice=i;else if("move"===this.Bx){if(this.yC){const s=Bh(this.Ex,t,i),e=this.yC;this.BP.entryPrice=e.qP+s.bt,null!==e.jP&&(this.BP.takeProfit=e.jP+s.bt),null!==e.KP&&(this.BP.stopLoss=e.KP+s.bt),null!==e.YP&&(this.BP.entryTime=this.XP(e.YP,s.gt)),null!==e.Ky&&(this.BP.endTime=this.XP(e.Ky,s.gt))}}else"tp"===this.Bx||"tp-right"===this.Bx?(this.BP.takeProfit=i,"tp-right"===this.Bx?this.BP.endTime=t:this.BP.entryTime=t):"sl"!==this.Bx&&"sl-right"!==this.Bx||(this.BP.stopLoss=i,"sl-right"===this.Bx?this.BP.endTime=t:this.BP.entryTime=t);this.jC(),this.cM()}}XP(t,i){return t+i}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}remove(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.BP.onRemove&&this.BP.onRemove()}}function bo(t,i){return new go(t,i)}class Mo{constructor(t){this.Vx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Vx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class yo{constructor(t){this.Vx=t,this.Jt=new Mo(t)}renderer(){return this.Vx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class So extends Nh{constructor(t,i){super(t,"gantt",i),this.Ub=null,this.Rx=null,this.eh=null,this.Fx=!1,this.Lx=!1,this.Ax=!1,this.GP=-1,this.Ex=null,this.yC=null,this.ZP=-1,this.JP={segments:[],rowHeight:40,rowSpacing:5,fillOpacity:.7,borderWidth:2,showLabels:!0,showGrid:!0,...i},this._registerOptions(this.JP),this.Zy()}Zy(){this.eh=this.qx();const t={attached:t=>{this.Rx=t.requestUpdate},detached:()=>{this.Rx=null},updateAllViews:()=>{},paneViews:()=>this.eh?[this.eh]:[],hitTest:(t,i)=>this.Yx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}qx(){return new yo(this)}drawToCanvas(t,i,s){if(!this.JP.segments||0===this.JP.segments.length)return;const e=50*s,n=this.JP.rowHeight*s,r=this.JP.rowSpacing*s;this.JP.showGrid&&this.sm(t,e,n,r,i,s),this.JP.segments.forEach((s,h)=>{const l=(Ye(this._chart,this._series,s.startTime)??0)*i,o=(Ye(this._chart,this._series,s.endTime)??0)*i,a=e+s.level*(n+r),_=h===this.ZP||this.Lx&&!this.isLocked();this.QP(t,l,o,a,n,s,_,i)})}sm(t,i,s,e,n,r){if(!this.JP.segments)return;const h=Math.max(...this.JP.segments.map(t=>t.level),0),l=this._chart.chartElement().clientWidth*n;t.strokeStyle="rgba(200, 200, 200, 0.3)",t.lineWidth=1*n;for(let n=0;n<=h+1;n++){const r=i+n*(s+e);t.beginPath(),t.moveTo(0,r),t.lineTo(l,r),t.stroke()}}QP(t,i,s,e,n,r,h,l){const o=s-i,a=this.Xy(r.color,h?this.JP.fillOpacity+.2:this.JP.fillOpacity);t.fillStyle=a,t.fillRect(i,e,o,n),t.strokeStyle=r.color;const _=this.JP.borderWidth+(this.Fx?2:0);t.lineWidth=_*l,t.strokeRect(i,e,o,n),this.JP.showLabels&&r.label&&this.rC(t,i,e,o,n,r.label,l)}rC(t,i,s,e,n,r,h){const l=11*h,o=6*h;t.font=`${l}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,t.fillStyle="#ffffff",t.textBaseline="middle";let a=r;const _=e-2*o;let u=t.measureText(a).width;if(u>_&&_>0){for(;u>_&&a.length>0;)a=a.slice(0,-1),u=t.measureText(a+"...").width;a+="..."}t.fillText(a,i+o,s+n/2)}Xy(t,i){if(!/^#[0-9a-f]{6}$/i.test(t))return t;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.JP.segments||(this.JP.segments=[]),this.JP.segments.push(t),this.cM(),this.JP.onUpdate&&this.JP.onUpdate()}removeSegment(t){this.JP.segments&&t>=0&&t<this.JP.segments.length&&(this.JP.segments.splice(t,1),this.cM(),this.JP.onUpdate&&this.JP.onUpdate())}getSegments(){return this.JP.segments||[]}setColor(t){const i=this.JP.segments??[];for(const s of i)s.color=t;this.cM()}color(){const t=this.JP.segments??[];return t.length>0?t[0].color:""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Lx!==t&&(this.Lx=t,this.cM())}isHovered(){return this.Lx}Yx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Ah(this.id,s,!this.isLocked()):null}hitTestEndpoint(t,i){return this.hitTest(t,i)?"move":null}startDrag(t,i){const s=this.JP.segments?.[this.ZP];s&&(this.Ax=!0,this.GP=this.ZP,this.Ex=i,this.yC={jy:s.startTime,Ky:s.endTime})}updateDrag(t,i){const s=this.JP.segments?.[this.GP];if(!this.Ax||!this.yC||!s)return;const e=Bh(this.Ex,t,i);s.startTime=this.yC.jy+e.gt,s.endTime=this.yC.Ky+e.gt,this.cM(),this.JP.onUpdate&&this.JP.onUpdate()}stopDrag(){this.Ax=!1,this.GP=-1,this.Ex=null,this.yC=null}hitTest(t,i){if(!this.JP.segments||0===this.JP.segments.length)return!1;const s=this.JP.rowHeight,e=this.JP.rowSpacing;for(let n=0;n<this.JP.segments.length;n++){const r=this.JP.segments[n],h=Ye(this._chart,this._series,r.startTime)??0,l=Ye(this._chart,this._series,r.endTime)??0,o=50+r.level*(s+e);if(t>=h&&t<=l&&i>=o&&i<=o+s)return this.ZP=n,!0}return this.ZP=-1,!1}isVisible(){return this._visible}_serializeShape(){return{type:"gantt",points:[],style:{rowHeight:this.JP.rowHeight,rowSpacing:this.JP.rowSpacing,fillOpacity:this.JP.fillOpacity,borderWidth:this.JP.borderWidth,showLabels:this.JP.showLabels,showGrid:this.JP.showGrid},extra:{segments:(this.JP.segments||[]).map(t=>({jy:Wh(t.startTime),Ky:Wh(t.endTime),ie:t.level,Zl:t.label,I:t.color,tT:t.category}))}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Rx?.()}_update(){this.cM()}remove(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.eh=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.JP.onRemove&&this.JP.onRemove()}}function xo(t,i){return new So(t,i)}class Co{constructor(t,i,s={}){this.iT=[],this.sT=[],this.eT=[],this.nT=!1,this.rT=new Map,this.hT=null,this.lT=null,this.oT=null,this.GS=null,this.aT=null,this.sp=null,this._T=null,this.uT=null,this.cT=null,this.bS=null,this.dT=!1,this.pT=null,this.fT=null,this.vT=new d,this.Ax=!1,this.mT=null,this.wT=new Set,this.gT=null,this.bT=new d,this.Rf=t,this.bn=i,this.Ps={enableKeyboardShortcuts:!0,selectionColor:"#2962ff",selectionLineWidth:3,...s},this.MT()}startDrawing(t){this.oT=t,this.yT()}activeDrawingType(){return this.oT}stopDrawing(){this.oT=null}addTool(t,i){const s=i??t.id;return this.rT.set(s,t),t.isComplete()||this.wT.add(s),this.recordChange(),s}hasPendingDrawing(){return this.wT.size>0}cancelPendingDrawings(){if(0===this.wT.size)return 0;let t=0;for(const i of Array.from(this.wT)){const s=this.rT.get(i);s&&(this.hT===i&&this.ST(null),s.remove(),this.rT.delete(i),t++)}return this.wT.clear(),t>0&&this.recordChange(),t}subscribeDrawingCompleted(t){this.bT.i(t)}unsubscribeDrawingCompleted(t){this.bT._(t)}xT(){0!==this.wT.size&&null===this.gT&&(this.gT=setTimeout(()=>{this.gT=null;for(const t of Array.from(this.wT)){const i=this.rT.get(t);i?i.isComplete()&&(this.wT.delete(t),this.bT.p(t)):this.wT.delete(t)}},0))}removeTool(t){const i=this.rT.get(t);return!!i&&(this.hT===t&&this.ST(null),i.remove(),this.rT.delete(t),this.wT.delete(t),this.recordChange(),!0)}selectTool(t){return!!this.rT.has(t)&&(this.ST(t),!0)}ST(t){if(this.hT===t)return;const i=null===this.hT?void 0:this.rT.get(this.hT);i&&i.setSelected(!1),this.hT=t;const s=null===t?void 0:this.rT.get(t);s&&s.setSelected(!0),this.CT()}recordChange(){this.nT||(this.iT.push(this.eT),this.sT=[],this.eT=this.serializeAll())}canUndo(){return this.iT.length>0}canRedo(){return this.sT.length>0}undo(){const t=this.iT.pop();return void 0!==t&&(this.sT.push(this.eT),this.PT(t),!0)}redo(){const t=this.sT.pop();return void 0!==t&&(this.iT.push(this.eT),this.PT(t),!0)}PT(t){this.nT=!0;try{this.restoreAll({chart:this.Rf,series:this.bn},t,!0),this.eT=t}finally{this.nT=!1}}subscribeSelectionChanged(t){this.vT.i(t)}unsubscribeSelectionChanged(t){this.vT._(t)}selectionBounds(){if(null===this.hT)return null;const t=this.rT.get(this.hT);return t?this.TT(t):null}TT(t){const i=t.series(),s=t.serialize().points;let e=Number.POSITIVE_INFINITY,n=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,h=Number.NEGATIVE_INFINITY,l=!1;for(const t of s){const s=Ye(this.Rf,i,t.time),o=i.priceToCoordinate(t.price);null!==s&&null!==o&&(l=!0,e=Math.min(e,s),r=Math.max(r,s),n=Math.min(n,o),h=Math.max(h,o))}if(!l)return null;const o=this.kT(t);return{left:e+o.ut,right:r+o.ut,top:n+o.ct,bottom:h+o.ct}}kT(t){const i=this.Rf.chartElement(),s=this.DT(t);if(!i||!s)return{ut:0,ct:0};const e=i.getBoundingClientRect(),n=s.getBoundingClientRect();return{ut:n.left-e.left,ct:n.top-e.top}}CT(){this.vT.p({id:this.hT,bounds:this.selectionBounds()})}deselectAll(){this.yT()}deleteSelected(){if(this.hT){const t=this.rT.get(this.hT);return(!t||!t.isLocked())&&this.removeTool(this.hT)}return!1}getSelectedToolId(){return this.hT}getAllTools(){return new Map(this.rT)}getTool(t){return this.rT.get(t)}clearAll(){this.ST(null),this.rT.forEach(t=>t.remove()),this.rT.clear(),this.wT.clear(),this.recordChange()}getToolCount(){return this.rT.size}isToolSelected(t){return this.hT===t}serializeAll(){const t=[];for(const i of this.rT.values())t.push(i.serialize());return t}restoreTool(t,i){const s=Co.IT(t,i);return s.applySerializedState(i),this.addTool(s,s.id),s}restoreAll(t,i,s=!0){s&&this.clearAll();for(const s of i)this.restoreTool(t,s)}static IT(t,i){const{type:s,points:e,style:n,extra:r}=i,h=t=>({VT:$h(e[t]),RT:Hh(e[t],"price")??0});switch(s){case"trendLine":return Qh(t,{point1Time:h(0).VT,point1Price:h(0).RT,point2Time:h(1).VT,point2Price:h(1).RT,...n});case"horizontalLine":return el(t,{price:h(0).RT,startTime:h(0).VT??void 0,...n});case"parallelChannel":return fl(t,{point1Time:h(0).VT,point1Price:h(0).RT,point2Time:h(1).VT,point2Price:h(1).RT,channelWidth:r?.channelWidth,...n});case"pitchfork":return gl(t,{pivotTime:h(0).VT,pivotPrice:h(0).RT,upperTime:h(1).VT,upperPrice:h(1).RT,lowerTime:h(2).VT,lowerPrice:h(2).RT,...n});case"polygon":return ul(t,{points:e.map((t,i)=>{const s={};return s.time=h(i).VT,s.price=h(i).RT,s}),...n});case"crossLine":return ll(t,{time:h(0).VT,price:h(0).RT,...n});case"verticalLine":return Sl(t,{time:h(0).VT,...n});case"fibRetracement":return Vl(t,{point1Time:h(0).VT,point1Price:h(0).RT,point2Time:h(1).VT,point2Price:h(1).RT,useExtended:r?.useExtended,levels:r?.levels,levelColors:n?.levelColors,...n});case"fibExtension":{const i=h(0),s=h(1),e=h(2);return Al(t,{point1:i.VT?{time:i.VT,price:i.RT}:void 0,point2:s.VT?{time:s.VT,price:s.RT}:void 0,point3:e.VT?{time:e.VT,price:e.RT}:void 0,levels:r?.levels,...n})}case"fibFan":return zl(t,{point1Time:h(0).VT,point1Price:h(0).RT,point2Time:h(1).VT,point2Price:h(1).RT,levels:r?.levels,...n});case"rectangle":return Ul(t,{time1:h(0).VT,price1:h(0).RT,time2:h(1).VT,price2:h(1).RT,...n});case"circle":return Kl(t,{centerTime:h(0).VT,centerPrice:h(0).RT,radiusTime:r?.radiusTime,radiusPrice:r?.radiusPrice,...n});case"arrow":return Jl(t,{points:e.map(t=>({gt:t.time,bt:t.price})),...n});case"brush":return eo(t,{points:e.map(t=>({gt:t.time,bt:t.price})),...n});case"text":return lo(t,{time:h(0).VT,price:h(0).RT,text:r?.text,...n});case"ruler":return vo(t,{point1Time:h(0).VT,point1Price:h(0).RT,point2Time:h(1).VT,point2Price:h(1).RT,symbol:r?.symbol,pipConfig:r?.pipConfig,measure:r?.measure,...n});case"position":return bo(t,{entryPrice:h(0).RT,entryTime:h(0).VT,endTime:r?.endTime,stopLoss:r?.stopLoss,takeProfit:r?.takeProfit,quantity:r?.quantity,pipConfig:r?.pipConfig,...n});case"gantt":return xo(t,{segments:r?.segments,...n});default:throw new Error(`Unknown drawing tool type: ${s}`)}}destroy(){null!==this.gT&&(clearTimeout(this.gT),this.gT=null),this.bT.m(),this.clearAll(),this.FT()}MT(){this.GS=t=>{this.Cx(t)},this.Rf.subscribeClick(this.GS),this.sp=t=>{this.Px(t)},this.Rf.subscribeCrosshairMove(this.sp);const t=this.Rf.chartElement();t&&(this._T=t=>this.LT(t),this.uT=t=>this.AT(t),this.cT=t=>this.AT(t),t.addEventListener("pointerdown",this._T),t.addEventListener("pointerup",this.uT),t.addEventListener("pointercancel",this.cT)),this.Ps.enableKeyboardShortcuts&&(this.aT=t=>{this.BT(t)},document.addEventListener("keydown",this.aT))}FT(){this.GS&&(this.Rf.unsubscribeClick(this.GS),this.GS=null),this.sp&&(this.Rf.unsubscribeCrosshairMove(this.sp),this.sp=null);const t=this.Rf.chartElement();t&&(this._T&&(t.removeEventListener("pointerdown",this._T),this._T=null),this.uT&&(t.removeEventListener("pointerup",this.uT),this.uT=null),this.cT&&(t.removeEventListener("pointercancel",this.cT),this.cT=null)),this.aT&&(document.removeEventListener("keydown",this.aT),this.aT=null)}Cx(t){if(this.xT(),!t.point)return;if(this.dT)return void(this.dT=!1);if(this.Ax)return;const i=this.ET(t.hoveredObjectId);i?this.selectTool(i):this.yT()}Px(t){if(this.pT=t.point?{ut:t.point.x,ct:t.point.y}:null,!t.point)return;if(this.Ax&&this.mT){const i=this.rT.get(this.mT);if(i){const s=i.series(),e=s.coordinateToPrice(t.point.y),n=s?qe(this.Rf,s,t.point.x):null;null!==e&&null!==n&&i.updateDrag(n,e)}return}const i=this.ET(t.hoveredObjectId);if(this.lT&&this.lT!==i){const t=this.rT.get(this.lT);t&&t.setHovered(!1)}if(i){const t=this.rT.get(i);t&&t.setHovered(!0)}this.lT=i}ET(t){if("string"!=typeof t)return null;const i=t.split("#")[0];for(const[t,s]of this.rT)if(s.id===i)return t;return null}LT(t){if(this.Ax)return;qh(this.Rf,!1);const i=this.Rf.chartElement();if(!i)return;const s=null!==this.lT&&null!==this.pT?{WT:this.lT,kw:this.pT}:this.OT(t);if(null===s)return;const{WT:e,kw:n}=s,r=this.rT.get(e);if(!r||r.isLocked())return;const h=r.hitTestEndpoint(n.ut,n.ct),l=this.zT(r,n.ut,n.ct);null!==h&&null!==l&&(qh(this.Rf,!0),this.selectTool(e),this.Ax=!0,this.dT=!0,this.mT=e,this.bS=t.pointerId,i.setPointerCapture(t.pointerId),r.startDrag(h,l),this.$T())}AT(t){if(!this.Ax||null===this.mT)return;if(t&&null!==this.bS&&t.pointerId!==this.bS)return;const i=this.rT.get(this.mT);i&&i.stopDrag(),this.HS(),this.HT(),this.Ax=!1,this.mT=null,this.recordChange()}DT(t){try{return t.series().getPane().getHTMLElement()}catch(t){return null}}OT(t){for(const[i,s]of this.rT){if(!s.isVisible()||s.isLocked())continue;const e=this.DT(s);if(null===e)continue;const n=e.getBoundingClientRect(),r={ut:t.clientX-n.left,ct:t.clientY-n.top};if(s.hitTest(r.ut,r.ct))return{WT:i,kw:r}}return null}HS(){if(null===this.bS)return;const t=this.Rf.chartElement();t&&t.hasPointerCapture(this.bS)&&t.releasePointerCapture(this.bS),this.bS=null}$T(){if(null!==this.fT)return;const t=this.Rf.options();this.fT={NT:t.handleScroll,UT:t.handleScale},this.Rf.applyOptions({handleScroll:!1,handleScale:!1})}HT(){const t=this.fT;this.fT=null,null!==t&&this.Rf.applyOptions({handleScroll:t.NT,handleScale:t.UT})}BT(t){const i=t.target;if(!!i&&("INPUT"===i.tagName||"TEXTAREA"===i.tagName||i.isContentEditable))return;"Enter"===t.key&&this.xT(),"Delete"!==t.key&&"Backspace"!==t.key||this.deleteSelected()&&t.preventDefault();const s=t.metaKey||t.ctrlKey;if(s&&"z"===t.key.toLowerCase()){return void((t.shiftKey?this.redo():this.undo())&&t.preventDefault())}s&&"y"===t.key.toLowerCase()?this.redo()&&t.preventDefault():"Escape"===t.key&&(this.cancelPendingDrawings(),this.AT(),this.yT(),this.stopDrawing(),t.preventDefault())}zT(t,i,s){const e=t.series().coordinateToPrice(s);return null==e?null:{price:e,time:qe(this.Rf,t.series(),i)}}yT(){this.ST(null)}}const Po={...n,color:"#2196f3"};function To(){return"2.2.1"}export{xn as AreaSeries,Zl as ArrowTool,kn as BarSeries,Mn as BaselineSeries,io as BrushTool,Vn as CandlestickSeries,jl as CircleTool,Wi as ColorType,hl as CrossLineTool,K as CrosshairMode,gh as DEFAULT_SESSIONS,Ih as DraggablePriceLine,Co as DrawingToolsManager,Cl as EXTENDED_FIBONACCI_RATIOS,Pl as FibonacciCalculator,Ll as FibonacciExtensionTool,Ol as FibonacciFanTool,Il as FibonacciTool,So as GanttTool,Ln as HistogramSeries,sl as HorizontalLineTool,Rh as InteractiveLineManager,Bi as LastPriceAnimationMode,nn as LineSeries,h as LineStyle,r as LineType,kt as MismatchDirection,pl as ParallelChannelTool,wl as PitchforkTool,_l as PolygonTool,oo as PositionCalculator,Tr as PositionMarkersManager,go as PositionTool,Ei as PriceLineSource,mi as PriceScaleMode,Nl as RectangleTool,uo as RulerCalculator,fo as RulerTool,xl as STANDARD_FIBONACCI_RATIOS,ho as TextTool,Oi as TickMarkType,Ai as TrackingModeExitMode,bh as TradingSessionsIndicator,Jh as TrendLineTool,yl as VerticalLineTool,xh as VolumeProfileIndicator,dh as applyADX,_h as applyATR,Yr as applyBollingerBands,ph as applyCCI,Kr as applyDonchianChannels,Ur as applyEMA,hh as applyHeikinAshi,sh as applyIchimoku,jr as applyKeltnerChannels,oh as applyMACD,vh as applyMFI,ch as applyOBV,Xr as applyParabolicSAR,eh as applyPivotPoints,lh as applyRSI,Nr as applySMA,ah as applyStochastic,Jr as applySuperTrend,Zr as applyVWAP,uh as applyVolume,qr as applyWMA,fh as applyWilliamsR,rh as calculateHeikinAshi,ao as calculatePipConfig,Ye as coordinateFromTime,Jl as createArrowTool,eo as createBrushTool,He as createChart,$e as createChartEx,Kl as createCircleTool,ll as createCrossLineTool,Al as createFibonacciExtensionTool,zl as createFibonacciFanTool,Vl as createFibonacciTool,xo as createGanttTool,el as createHorizontalLineTool,Jn as createImageWatermark,Fh as createInteractiveLineManager,pn as createOptionsChart,fl as createParallelChannelTool,gl as createPitchforkTool,ul as createPolygonTool,kr as createPositionMarkers,bo as createPositionTool,Ul as createRectangleTool,vo as createRulerTool,mr as createSeriesMarkers,lo as createTextTool,qn as createTextWatermark,Vh as createTradingLine,Mh as createTradingSessionsIndicator,Qh as createTrendLineTool,Pr as createUpDownMarkers,Sl as createVerticalLineTool,Ch as createVolumeProfileIndicator,un as createYieldCurveChart,Po as customSeriesDefaultOptions,Ne as defaultHorzScaleBehavior,_o as getPipConfig,Ar as hideSeriesPaint,Hi as isBusinessDay,Ni as isUTCTimestamp,Vr as setSeriesVolumes,Ph as setVolumeProfileData,qe as timeFromCoordinate,To as version};