@tradecanvas/commons 1.11.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=function(e){return e[e.Background=0]=`Background`,e[e.Main=1]=`Main`,e[e.Panel=2]=`Panel`,e[e.Overlay=3]=`Overlay`,e[e.UI=4]=`UI`,e[e.Hover=5]=`Hover`,e}({}),t={color:`#4c8dff`,lineWidth:1,lineStyle:`solid`,fillColor:`rgba(76, 141, 255, 0.1)`,fillOpacity:.1,fontSize:12},n={enabled:!0,orderColors:{buy:`#1fa874`,sell:`#e8505b`},positionColors:{profit:`#1fa874`,loss:`#e8505b`,entry:`#4c8dff`},depthOverlay:{enabled:!1,bidColor:`rgba(31, 168, 116,0.15)`,askColor:`rgba(232, 80, 91,0.15)`,maxWidth:100},contextMenu:{enabled:!0},lineButtons:{cancel:!0,close:!0,reverse:!0,removeStops:!0},fillMarks:!0,pricePrecision:2,dragThreshold:3},r={longColor:`#1fa874`,shortColor:`#e8505b`,neutralColor:`#9E9E9E`,arrowSize:12,showLabel:!0,showConfidence:!0},i={profitColor:`#1fa874`,lossColor:`#e8505b`,activeColor:`#4c8dff`,fillOpacity:.12,borderWidth:1,showLabel:!0,showPnl:!0},a={enabled:!0,maxRetries:1/0,baseDelay:1e3,maxDelay:3e4,backoffMultiplier:2},o={historyLimit:500,autoScroll:!0,showCurrentPriceLine:!0,aggregateTicks:!1},s=[`change`,`changePercent`,`open`,`high`,`low`,`prevClose`,`volume`,`bid`,`ask`,`time`];function c(e){if(!e||typeof e!=`object`)return null;let t=e,n=typeof t.symbol==`string`?t.symbol.trim():``;if(!n||n.length>64||!l(t.last))return null;let r={symbol:n,last:t.last};for(let e of s){let n=t[e];l(n)&&(r[e]=n)}let i=r.prevClose??r.open;if(r.change===void 0&&i!==void 0&&(r.change=r.last-i),r.changePercent===void 0&&r.change!==void 0){let e=r.last-r.change;e!==0&&(r.changePercent=r.change/e*100)}return r}function l(e){return typeof e==`number`&&Number.isFinite(e)}var u=300,d=1e3,f=(e,t)=>{if(typeof e!=`string`)return;let n=e.trim();return n?n.slice(0,t):void 0},ee=e=>{if(typeof e==`string`)try{let t=new URL(e);return t.protocol===`https:`||t.protocol===`http:`?t.href:void 0}catch{return}};function te(e,t=20){if(!Array.isArray(e))return[];let n=[];for(let t of e){if(!t||typeof t!=`object`)continue;let e=t,r=f(e.title,u);if(!r||typeof e.time!=`number`||!Number.isFinite(e.time))continue;let i={title:r,time:e.time},a=ee(e.url);a&&(i.url=a);let o=f(e.source,u);o&&(i.source=o);let s=f(e.summary,d);s&&(i.summary=s);let c=f(e.id,u);c&&(i.id=c),n.push(i)}return n.sort((e,t)=>t.time-e.time).slice(0,Math.max(0,t))}function ne(e,t,n){return Math.max(t,Math.min(n,e))}function re(e,t,n){return e+(t-e)*n}function ie(e,t,n){return e===t?0:(n-e)/(t-e)}function ae(e,t){return Math.round(e/t)*t}function p(e,t){let n=Math.floor(Math.log10(e)),r=e/10**n,i;return i=t?r<1.5?1:r<3?2:r<7?5:10:r<=1?1:r<=2?2:r<=5?5:10,i*10**n}function oe(e,t,n){return p(p(t-e,!1)/(n-1),!0)}function se(e){return e>0xe8d4a51000?e:e*1e3}function ce(e){return{time:se(e.time??e.t??0),open:e.open??e.o??0,high:e.high??e.h??0,low:e.low??e.l??0,close:e.close??e.c??0,volume:e.volume??e.v??0}}function le(e,t,n){let r=Math.max(0,t),i=Math.min(e.length,n+1);return e.slice(r,i)}function ue(e,t){let n=0,r=e.length-1;for(;n<=r;){let i=n+r>>>1;if(e[i].time<t)n=i+1;else if(e[i].time>t)r=i-1;else return i}return n}function de(e,t,n,r=.05){if(e.length===0)return{min:0,max:1};let i=Math.max(0,t),a=Math.min(e.length-1,n),o=1/0,s=-1/0;for(let t=i;t<=a;t++)e[t].low<o&&(o=e[t].low),e[t].high>s&&(s=e[t].high);if(o===1/0)return{min:0,max:1};let c=s-o||1;return{min:o-c*r,max:s+c*r}}function fe(e,t){return{...e,high:Math.max(e.high,t.price),low:Math.min(e.low,t.price),close:t.price,volume:e.volume+(t.volume??0),time:t.time}}function pe(e,t=1){let n=e.slice(1);return(n.length===3||n.length===4)&&(n=[...n.slice(0,3)].map(e=>e+e).join(``)),`rgba(${parseInt(n.slice(0,2),16)}, ${parseInt(n.slice(2,4),16)}, ${parseInt(n.slice(4,6),16)}, ${t})`}function me(e,t){let n=e.trim();if(/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(n))return pe(n,t);let r=n.match(/^rgba?\(\s*(\d+(?:\.\d+)?)[\s,]+(\d+(?:\.\d+)?)[\s,]+(\d+(?:\.\d+)?)/i);return r?`rgba(${r[1]}, ${r[2]}, ${r[3]}, ${t})`:e}function he(e,t,n){let r=e=>(e=e.replace(`#`,``),e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),{r:parseInt(e.slice(0,2),16),g:parseInt(e.slice(2,4),16),b:parseInt(e.slice(4,6),16)}),i=r(e),a=r(t);return`rgb(${Math.round(i.r+(a.r-i.r)*n)},${Math.round(i.g+(a.g-i.g)*n)},${Math.round(i.b+(a.b-i.b)*n)})`}var m=6e4,h=1440*m,g=15*m,ge=8192,_=7*h,_e=4096,ve=new Set([`UTC`,`Etc/UTC`,`GMT`,`Etc/GMT`,`UCT`,`Etc/UCT`,`Universal`,`Etc/Universal`,`Zulu`,`Etc/Zulu`]),ye=new Map,v=new Map,y=new Map;function be(e){let t=ye.get(e);return t||(t=new Intl.DateTimeFormat(`en-US`,{timeZone:e,hourCycle:`h23`,year:`numeric`,month:`numeric`,day:`numeric`,hour:`numeric`,minute:`numeric`,second:`numeric`}),ye.set(e,t)),t}function xe(e){if(!e)return!1;try{return be(e),!0}catch{return!1}}function b(e,t){if(!Number.isFinite(t)||ve.has(e))return 0;let n=y.get(e);n||(n=new Map,y.set(e,n));let r=Math.floor(t/_),i=n.get(r);return i||(i=Se(e,r*_),n.size>=_e&&n.clear(),n.set(r,i)),t<i.change?i.before:i.after}function Se(e,t){let n=x(e,t),r=t+_-g,i=x(e,r);if(i===n)return{before:n,change:1/0,after:i};let a=t;for(;r-a>g;){let t=a+Math.floor((r-a)/g/2)*g;x(e,t)===n?a=t:r=t}return{before:n,change:r,after:i}}function x(e,t){let n=Math.floor(t/g),r=`${e}|${n}`,i=v.get(r);if(i!==void 0)return i;let a=n*g,o=1970,s=1,c=1,l=0,u=0,d=0;for(let t of be(e).formatToParts(new Date(a))){let e=Number(t.value);switch(t.type){case`year`:o=e;break;case`month`:s=e;break;case`day`:c=e;break;case`hour`:l=e%24;break;case`minute`:u=e;break;case`second`:d=e;break}}let f=Math.round((Date.UTC(o,s-1,c,l,u,d)-a)/m);return v.size>=ge&&v.clear(),v.set(r,f),f}function S(e,t){return e===null?-new Date(t).getTimezoneOffset():typeof e==`number`?e:b(e,t)}function Ce(e,t){let n=e-S(t,e-h)*m;if(n+S(t,n)*m===e)return n;let r=e-S(t,e+h)*m;return r+S(t,r)*m===e?r:n}var C=new Map;function we(e,t,n){let r=`${e}|${JSON.stringify(t)}|${n===null?`local`:typeof n==`number`?`fixed:${n}`:n}`,i=C.get(r);if(i)return i;let a=n===null?void 0:typeof n==`number`?`UTC`:n,o;try{o=new Intl.DateTimeFormat(e,{...t,timeZone:a})}catch{o=new Intl.DateTimeFormat(`en-US`,{...t,timeZone:a})}let s=typeof n==`number`?n*m:0;return i=e=>o.format(new Date(e+s)),C.set(r,i),i}var Te={"1s":1e3,"5s":5e3,"15s":15e3,"30s":3e4,"1m":6e4,"3m":18e4,"5m":3e5,"15m":9e5,"30m":18e5,"45m":27e5,"1h":36e5,"2h":72e5,"3h":108e5,"4h":144e5,"6h":216e5,"8h":288e5,"12h":432e5,"1d":864e5,"2d":1728e5,"3d":2592e5,"1w":6048e5,"2w":12096e5,"1M":2592e6,"3M":7776e6,"6M":15552e6,"12M":31536e6},w={s:1e3,m:6e4,h:36e5,d:864e5,w:6048e5,M:2592e6},Ee=/^([1-9]\d*)([smhdwM])$/;function T(e){let t=Ee.exec(e);if(!t)return null;let n=Number(t[1]);return Number.isSafeInteger(n)?{count:n,unit:t[2]}:null}var De=1e6;function Oe(e){let t=/^([1-9]\d*)T$/.exec(e);if(!t)return null;let n=Number(t[1]);return Number.isSafeInteger(n)&&n<=De?n:null}function ke(e){return T(e)!==null}function E(e){let t=Te[e];if(t!==void 0)return t;let n=T(e);return n?n.count*w[n.unit]:NaN}function Ae(e,t){let n=new Date(e),r=E(t);return r>=864e5?n.toLocaleDateString(void 0,{month:`short`,day:`numeric`}):r>=36e5?n.toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`}):n.toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}function je(e,t){let n=E(t);return Math.floor(e/n)*n}function Me(e,t){if(t===null){let t=new Date(e);return{year:t.getFullYear(),month:t.getMonth()+1,day:t.getDate(),hours:t.getHours(),minutes:t.getMinutes()}}let n=new Date(e+S(t,e)*6e4);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hours:n.getUTCHours(),minutes:n.getUTCMinutes()}}function Ne(e){return e.hours===0&&e.minutes===0}var Pe=20*36e5;function Fe(e){let t=Math.min(e.length,64);if(t<2)return;let n=e=>e>0xe8d4a51000?e:e*1e3,r=1/0;for(let i=1;i<t;i++){let t=Math.abs(n(e[i].time)-n(e[i-1].time));t>0&&t<r&&(r=t)}return r===1/0?void 0:r>=Pe}function Ie(e,t=Date.now()){let n=S(e,t),r=n>=0?`+`:`-`,i=Math.abs(n),a=Math.floor(i/60),o=i%60;return o===0?`UTC${r}${a}`:`UTC${r}${a}:${String(o).padStart(2,`0`)}`}var D=Date.UTC(1970,0,5);function O(e,t,n=1){let{count:r,unit:i}=T(t)??{count:1,unit:`m`};if(i===`s`||i===`m`||i===`h`||i===`d`){let t=r*w[i];return Math.floor(e/t)*t}let a=new Date(e);if(i===`w`){let e=w.d,t=(a.getUTCDay()-n+7)%7,i=Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate()-t);if(r<=1)return i;let o=Math.floor((i-D)/(7*e));return D+Math.floor(o/r)*r*7*e}let o=a.getUTCFullYear()*12+a.getUTCMonth(),s=Math.floor(o/r)*r;return Date.UTC(Math.floor(s/12),s%12,1)}var Le=64,k=new Map;function Re(e,t){let n=`${e}|${t}`,r=k.get(n);return r||(k.size>=Le&&k.clear(),r=new Intl.NumberFormat(e,{minimumFractionDigits:t,maximumFractionDigits:t}),k.set(n,r)),r}function A(e,t=2,n=`en-US`){return Re(n,t).format(e)}function ze(e,t){if(!(t>e)||!Number.isFinite(e)||!Number.isFinite(t))return 2;let n=oe(e,t,8);return n>0&&n<1?Math.ceil(-Math.log10(n))+1:2}function Be(e,t,n,r=2,i=`en-US`){if((t===`percentage`||t===`indexedTo100`)&&n&&n!==0){if(t===`percentage`){let t=(e/n-1)*100;return`${t>0?`+`:``}${t.toFixed(2)}%`}return A(e/n*100,2,i)}return A(e,r,i)}function Ve(e,t,n=1){let r=Number.isInteger(n)&&n>1?n:1;if(!Number.isFinite(e)||!Number.isInteger(t)||t<2)return String(e);let i=t*r,a=Math.round(Math.abs(e)*i),o=Math.floor(a/i),s=a-o*i,c=Math.floor(s/r),l=String(t-1).length,u=r>1?String(Math.floor((s-c*r)/r*10)):``;return`${e<0&&a>0?`-`:``}${o}'${String(c).padStart(l,`0`)}${u}`}function He(e){if(!Number.isInteger(e.denominator)||e.denominator<2)return null;let t=Number.isInteger(e.subDenominator)&&(e.subDenominator??0)>1?e.subDenominator:1;return 1/(e.denominator*t)}function Ue(e){return e?typeof e==`function`?e:He(e)===null?null:t=>Ve(t,e.denominator,e.subDenominator):null}function We(e){return e>=1e9?(e/1e9).toFixed(2)+`B`:e>=1e6?(e/1e6).toFixed(2)+`M`:e>=1e3?(e/1e3).toFixed(2)+`K`:e.toFixed(0)}function Ge(e){let t=0;for(let n of e){let e=n.toString(),r=e.indexOf(`.`);r>=0&&(t=Math.max(t,e.length-r-1))}return Math.min(t,8)}var Ke=[`close`,`open`,`high`,`low`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`];function qe(e){return typeof e==`string`&&Ke.includes(e)}function Je(e,t){switch(t){case`open`:return e.open;case`high`:return e.high;case`low`:return e.low;case`hl2`:return(e.high+e.low)/2;case`hlc3`:return(e.high+e.low+e.close)/3;case`ohlc4`:return(e.open+e.high+e.low+e.close)/4;case`hlcc4`:return(e.high+e.low+2*e.close)/4;default:return e.close}}var Ye=/^ind:([^:]+):(.+)$/;function Xe(e,t){return`ind:${e}:${t}`}function Ze(e){if(typeof e!=`string`)return null;let t=Ye.exec(e);return t?{instanceId:t[1],key:t[2]}:null}var Qe=864e5;function $e(e,t,n=1){let r=[],i=null;for(let a of e){let e=O(a.time,t,n);i===null||e!==i.time?(i={time:e,open:a.open,high:a.high,low:a.low,close:a.close,volume:a.volume},r.push(i)):(a.high>i.high&&(i.high=a.high),a.low<i.low&&(i.low=a.low),i.close=a.close,i.volume+=a.volume)}return r}var j=e=>e===`s`||e===`m`||e===`h`||e===`d`;function et(e,t){let n=T(e),r=T(t);if(!n||!r)return!1;let i=E(e);return n.unit===`d`&&n.count>1?!1:j(r.unit)?j(n.unit)&&E(t)%i===0:n.unit===r.unit?r.count%n.count===0:j(n.unit)&&Qe%i===0}function tt(e,t){let n=null,r=0;for(let i of t){if(!et(i,e))continue;let t=E(i);t>r&&(n=i,r=t)}return n}function nt(e,t){if(!e)return 0;if(e===t)return 1e3;if(e.startsWith(t))return 600-Math.min(100,e.length-t.length);let n=e.indexOf(t);return n>=0?300-Math.min(100,n):0}function rt(e,t,n=50,r){let i=t.trim().toUpperCase();if(!i)return e.slice(0,n);let a=[];for(let t of e){let e=Math.max(nt(t.symbol.toUpperCase(),i),nt((t.description??``).toUpperCase(),i)*.8);e>0&&a.push({info:t,score:e+(r?.(t)??0)})}return a.sort((e,t)=>t.score-e.score||e.info.symbol.localeCompare(t.info.symbol)),a.slice(0,n).map(e=>e.info)}function it(e){let t=typeof e==`number`?e:Number(e);if(!Number.isFinite(t)||t<=0)return 0;for(let e=0;e<=12;e++){let n=t*10**e;if(Math.abs(n-Math.round(n))<1e-9*Math.max(1,n))return e}return 12}function M(e){let t=/^(\d{1,2}):(\d{2})$/.exec(e.trim());if(!t)return null;let n=Number(t[1]),r=Number(t[2]);return n===24&&r===0?1440:n<24&&r<60?n*60+r:null}var N=864e5,P=6e4,at=8;function ot(e,t){let n=e?.timezone,r=(e?.sessions??[]).flatMap(e=>{let t=M(e.start),n=M(e.end);return t===null||n===null||t===n?[]:[{start:t,end:n,days:Array.isArray(e.days)?e.days:null}]});if(!n||!xe(n)||r.length===0||!Number.isFinite(t))return{state:`always`,next:null};let i=b(n,t)*P,a=Math.floor((t+i)/N)*N,o=e=>e-b(n,e-b(n,e-i)*P)*P,s=[];for(let e=-1;e<=at;e++){let t=a+e*N,n=(Math.floor(t/N)+4)%7;for(let e of r){if(e.days&&!e.days.includes(n))continue;let r=t+e.start*P,i=(e.end>e.start?t:t+N)+e.end*P;s.push([o(r),o(i)])}}s.sort((e,t)=>e[0]-t[0]);let c=[];for(let[e,t]of s){let n=c[c.length-1];n&&e<=n[1]?c[c.length-1]=[n[0],Math.max(n[1],t)]:c.push([e,t])}let l=c.find(([e,n])=>e<=t&&t<n);if(l)return{state:`open`,next:l[1]};let u=c.find(([e])=>e>t);return{state:`closed`,next:u?u[0]:null}}var st=48,ct=2e3,lt=1e4;function ut(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(t.length>=st)break;if(typeof n!=`object`||!n)continue;let{value:e,visible:r,color:i}=n;if(typeof e!=`number`||!Number.isFinite(e)||Math.abs(e)>lt||r!==void 0&&typeof r!=`boolean`)continue;let a={value:e,visible:r??!0};typeof i==`string`&&i&&(a.color=i),t.push(a)}return t}function dt(e,t){switch(e.kind){case`boolean`:return typeof t==`boolean`?t:void 0;case`number`:return typeof t!=`number`||!Number.isFinite(t)?void 0:Math.min(e.max??1/0,Math.max(e.min??-1/0,t));case`choice`:return typeof t==`string`&&e.choices.some(e=>e.value===t)?t:void 0;case`levels`:return ut(t);case`text`:return typeof t==`string`?t.slice(0,ct):void 0}}function ft(e,t){if(!e||typeof t!=`object`||!t)return{};let n={};for(let[r,i]of Object.entries(t)){let t=e[r];if(!t)continue;let a=dt(t,i);a!==void 0&&(n[r]=a)}return n}function pt(e){return Array.isArray(e)?e.map(e=>({...e})):e}function mt(e,t,n){let r=e?.[n];return r?pt((t&&n in t?dt(r,t[n]):void 0)??r.default):t?.[n]}function ht(e,t){let n={};for(let r of Object.keys(e??{}))n[r]=mt(e,t,r);return n}var gt=[`solid`,`dashed`,`dotted`],_t=64,vt=2e3,yt=20,bt=200;function F(e,t,n){return typeof e==`number`&&Number.isFinite(e)?Math.min(n,Math.max(t,e)):void 0}function xt(e){return typeof e==`string`&&e.length>0&&e.length<=_t?e:void 0}function St(e){if(typeof e!=`object`||!e)return{};let t=e,n={},r=xt(t.color);r!==void 0&&(n.color=r);let i=F(t.lineWidth,.5,yt);i!==void 0&&(n.lineWidth=i),gt.includes(t.lineStyle)&&(n.lineStyle=t.lineStyle);let a=xt(t.fillColor);a!==void 0&&(n.fillColor=a);let o=F(t.fillOpacity,0,1);o!==void 0&&(n.fillOpacity=o);let s=F(t.fontSize,6,bt);return s!==void 0&&(n.fontSize=s),typeof t.text==`string`&&(n.text=t.text.slice(0,vt)),n}var I=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,L=(e,t,n)=>typeof e==`number`&&Number.isInteger(e)&&e>=t&&e<=n,R=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function Ct(e){if(!R(e))return{};let t={};if(R(e.renko)){let{boxSize:n,atrPeriod:r}=e.renko;t.renko={...I(n)||n===`atr`?{boxSize:n}:{},...L(r,1,500)?{atrPeriod:r}:{}}}if(R(e.lineBreak)){let{lines:n}=e.lineBreak;t.lineBreak=L(n,1,10)?{lines:n}:{}}if(R(e.kagi)){let{reversal:n,reversalType:r}=e.kagi;t.kagi={...I(n)?{reversal:n}:{},...r===`percent`||r===`price`?{reversalType:r}:{}}}if(R(e.pointAndFigure)){let{boxSize:n,reversal:r}=e.pointAndFigure;t.pointAndFigure={...I(n)||n===`auto`?{boxSize:n}:{},...L(r,1,10)?{reversal:r}:{}}}if(R(e.rangeBars)){let{range:n}=e.rangeBars;t.rangeBars=I(n)||n===`auto`?{range:n}:{}}return t}var wt={autoScale:!0,rightMargin:5,minBarSpacing:2,maxBarSpacing:30,grid:{visible:!0,hLineStyle:`solid`,vLineStyle:`solid`},crosshair:{mode:`magnet`}},Tt=[`1s`,`1m`,`3m`,`5m`,`15m`,`30m`,`1h`,`2h`,`4h`,`6h`,`8h`,`12h`,`1d`,`3d`,`1w`,`1M`],Et=[`1m`,`5m`,`15m`,`30m`,`1h`,`2h`,`4h`,`1d`,`1w`,`1M`,`3M`,`6M`,`12M`],Dt=[`1m`,`5m`,`15m`,`30m`,`1h`,`4h`,`1d`,`1w`,`1M`],Ot=[`1m`,`5m`,`15m`,`1h`,`4h`,`1d`,`1w`],kt=8,At=2,jt=70,Mt=30,Nt=60,Pt=120,z=`-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,B={family:z,sizeSmall:10,sizeMedium:12,sizeLarge:14},V={amber:`#f2a93b`,up:`#1fa874`,down:`#e8505b`,ochre:`#c98316`,blue:`#4c8dff`,violet:`#a57cff`,cyan:`#1398a8`,rose:`#e25592`,neutral:`#7d8696`,ink:`#0c1016`},Ft=.22;function H(e){return me(e,Ft)}var U=`#2eb88a`,W=`#e85a67`,It=[V.blue,V.ochre,V.violet,V.cyan,V.rose],G={name:`dark`,background:V.ink,text:`#d9dde4`,textSecondary:`#7d8696`,grid:`#161b23`,crosshair:`#8a93a3`,candleUp:U,candleDown:W,candleUpWick:U,candleDownWick:W,lineColor:V.amber,areaTopColor:`rgba(242, 169, 59, 0.32)`,areaBottomColor:`rgba(242, 169, 59, 0.0)`,volumeUp:H(U),volumeDown:H(W),axisLine:`#1f2630`,axisLabel:`#9aa3b2`,axisLabelBackground:`#1f2630`,font:B},K={name:`light`,background:`#ffffff`,text:`#0f131a`,textSecondary:`#6b7380`,grid:`#eef0f3`,crosshair:`#8a93a3`,candleUp:`#16a36a`,candleDown:`#d9414f`,candleUpWick:`#16a36a`,candleDownWick:`#d9414f`,lineColor:`#c77a0a`,areaTopColor:`rgba(199, 122, 10, 0.24)`,areaBottomColor:`rgba(199, 122, 10, 0.0)`,volumeUp:H(`#16a36a`),volumeDown:H(`#d9414f`),axisLine:`#dde1e7`,axisLabel:`#5b6472`,axisLabelBackground:`#eef0f3`,font:B},q={name:`terminal`,background:`#0E0E0E`,text:`#C0C0C0`,textSecondary:`#8A8A8A`,grid:`#1A1A1A`,crosshair:`#666666`,candleUp:`#00FF87`,candleDown:`#FF3B4D`,candleUpWick:`#00FF87`,candleDownWick:`#FF3B4D`,lineColor:`#3D8BFD`,areaTopColor:`rgba(61, 139, 253, 0.3)`,areaBottomColor:`rgba(61, 139, 253, 0.0)`,volumeUp:`rgba(0, 255, 135, 0.2)`,volumeDown:`rgba(255, 59, 77, 0.2)`,axisLine:`#1A1A1A`,axisLabel:`#8A8A8A`,axisLabelBackground:`#1A1A1A`,font:{family:`'Roboto Mono', 'JetBrains Mono', 'SF Mono', Consolas, monospace`,sizeSmall:10,sizeMedium:12,sizeLarge:14}},Lt=new Set([G.volumeUp,G.volumeDown,K.volumeUp,K.volumeDown,q.volumeUp,q.volumeDown]);function Rt(e){let t=(e,t)=>{if(!Lt.has(e))return e;let n=H(t);return n===t?e:n};return{up:t(e.volumeUp,e.candleUp),down:t(e.volumeDown,e.candleDown)}}var J={candlestick:`Candlestick`,line:`Line`,area:`Area`,bar:`OHLC Bar`,price:`Price`,volume:`Volume`,time:`Time`,open:`Open`,high:`High`,low:`Low`,close:`Close`,sma:`SMA`,ema:`EMA`,bollingerBands:`Bollinger Bands`,vwap:`VWAP`,ichimoku:`Ichimoku Cloud`,parabolicSAR:`Parabolic SAR`,supertrend:`Supertrend`,keltnerChannel:`Keltner Channel`,donchianChannel:`Donchian Channel`,rsi:`RSI`,macd:`MACD`,stochastic:`Stochastic`,atr:`ATR`,adx:`ADX`,obv:`OBV`,williamsR:`Williams %R`,cci:`CCI`,mfi:`MFI`,aroon:`Aroon`,roc:`ROC`,tsi:`TSI`,cmf:`CMF`,stddev:`Std Dev`,volumeProfile:`Volume Profile`,accumulationDistribution:`A/D Line`,vroc:`VROC`,trendLine:`Trend Line`,horizontalLine:`Horizontal Line`,verticalLine:`Vertical Line`,ray:`Ray`,extendedLine:`Extended Line`,parallelChannel:`Parallel Channel`,regressionChannel:`Regression Channel`,fibRetracement:`Fibonacci Retracement`,fibExtension:`Fibonacci Extension`,rectangle:`Rectangle`,ellipse:`Ellipse`,triangle:`Triangle`,pitchfork:`Andrews' Pitchfork`,elliottWave:`Elliott Wave`,priceRange:`Price Range`,dateRange:`Date Range`,measure:`Measure`,textTool:`Text`,arrow:`Arrow`,clearAll:`Clear All`,buy:`Buy`,sell:`Sell`,buyLimit:`Buy Limit`,sellLimit:`Sell Limit`,buyStop:`Buy Stop`,sellStop:`Sell Stop`,stopLoss:`Stop Loss`,takeProfit:`Take Profit`,market:`Market`,limit:`Limit`,stop:`Stop`,cancel:`Cancel`,modify:`Modify`,quantity:`Qty`,pnl:`P&L`,activeOrders:`Active Orders`,positions:`Positions`,noOrders:`No active orders`,noPositions:`No open positions`,placeOrder:`Place Order`,rightClickToTrade:`Right-click chart to place orders`,ceiling:`Ceiling`,floor:`Floor`,reference:`Reference`,session:`Session`,preOpen:`Pre-Open`,continuous:`Continuous`,preClose:`Pre-Close`,closed:`Closed`,settings:`Settings`,theme:`Theme`,darkTheme:`Dark`,lightTheme:`Light`,tools:`Tools`,indicators:`Indicators`,overlays:`Overlays`,panels:`Panels`,orders:`Orders`,autoScale:`Auto Scale`,crosshair:`Crosshair`,grid:`Grid`,loading:`Loading...`,error:`Error`,numberDecimalSeparator:`.`,numberGroupSeparator:`,`},zt={candlestick:`Nến`,line:`Đường`,area:`Vùng`,bar:`Thanh OHLC`,price:`Giá`,volume:`Khối lượng`,time:`Thời gian`,open:`Mở`,high:`Cao`,low:`Thấp`,close:`Đóng`,sma:`SMA`,ema:`EMA`,bollingerBands:`Dải Bollinger`,vwap:`VWAP`,ichimoku:`Mây Ichimoku`,parabolicSAR:`Parabolic SAR`,supertrend:`Supertrend`,keltnerChannel:`Kênh Keltner`,donchianChannel:`Kênh Donchian`,rsi:`RSI`,macd:`MACD`,stochastic:`Stochastic`,atr:`ATR`,adx:`ADX`,obv:`OBV`,williamsR:`Williams %R`,cci:`CCI`,mfi:`MFI`,aroon:`Aroon`,roc:`ROC`,tsi:`TSI`,cmf:`CMF`,stddev:`Độ lệch chuẩn`,volumeProfile:`Phân bổ KL`,accumulationDistribution:`Tích lũy/Phân phối`,vroc:`VROC`,trendLine:`Đường xu hướng`,horizontalLine:`Đường ngang`,verticalLine:`Đường dọc`,ray:`Tia`,extendedLine:`Đường kéo dài`,parallelChannel:`Kênh song song`,regressionChannel:`Kênh hồi quy`,fibRetracement:`Fibonacci thoái lui`,fibExtension:`Fibonacci mở rộng`,rectangle:`Hình chữ nhật`,ellipse:`Hình elip`,triangle:`Tam giác`,pitchfork:`Chĩa ba Andrews`,elliottWave:`Sóng Elliott`,priceRange:`Khoảng giá`,dateRange:`Khoảng thời gian`,measure:`Đo lường`,textTool:`Chữ`,arrow:`Mũi tên`,clearAll:`Xóa tất cả`,buy:`Mua`,sell:`Bán`,buyLimit:`Mua giới hạn`,sellLimit:`Bán giới hạn`,buyStop:`Mua chặn`,sellStop:`Bán chặn`,stopLoss:`Cắt lỗ`,takeProfit:`Chốt lời`,market:`Thị trường`,limit:`Giới hạn`,stop:`Dừng`,cancel:`Hủy`,modify:`Sửa`,quantity:`KL`,pnl:`Lãi/Lỗ`,activeOrders:`Lệnh chờ`,positions:`Vị thế`,noOrders:`Không có lệnh chờ`,noPositions:`Không có vị thế mở`,placeOrder:`Đặt lệnh`,rightClickToTrade:`Nhấp chuột phải để đặt lệnh`,ceiling:`Trần`,floor:`Sàn`,reference:`Tham chiếu`,session:`Phiên`,preOpen:`Trước giờ mở`,continuous:`Liên tục`,preClose:`Trước giờ đóng`,closed:`Đóng cửa`,settings:`Cài đặt`,theme:`Giao diện`,darkTheme:`Tối`,lightTheme:`Sáng`,tools:`Công cụ`,indicators:`Chỉ báo`,overlays:`Phủ lên`,panels:`Bảng`,orders:`Lệnh`,autoScale:`Tự co giãn`,crosshair:`Chữ thập`,grid:`Lưới`,loading:`Đang tải...`,error:`Lỗi`,numberDecimalSeparator:`,`,numberGroupSeparator:`.`},Y=new Map([[`en`,J],[`vi`,zt]]),X=`en`,Bt=J;function Vt(e){X=e,Bt=Y.get(e)??J}function Ht(){return X}function Ut(e){return Bt[e]??J[e]??e}function Wt(e,t){Y.set(e,t)}function Gt(e){return Y.get(e??X)??J}function Z(e,t=2,n){let r=Y.get(n??X)??J,i=r.numberDecimalSeparator,a=r.numberGroupSeparator,[o,s]=e.toFixed(t).split(`.`),c=o.startsWith(`-`),l=c?o.slice(1):o,u=``;for(let e=l.length-1,t=0;e>=0;e--,t++)t>0&&t%3==0&&(u=a+u),u=l[e]+u;return c&&(u=`-`+u),s?u+i+s:u}function Kt(e){return Z(e,0,`vi`)}function qt(e,t){return e>=1e9?Z(e/1e9,2,t??X)+`B`:e>=1e6?Z(e/1e6,2,t??X)+`M`:e>=1e3?Z(e/1e3,2,t??X)+`K`:Z(e,0,t??X)}var Q={up:`#FF0000`,down:`#0000FF`,unchanged:`#FFD700`,ceiling:`#FF00FF`,floor:`#00FFFF`,reference:`#FFD700`},Jt=[{name:`ATO`,startTime:`09:00`,endTime:`09:15`,type:`preOpen`},{name:`Phiên 1`,startTime:`09:15`,endTime:`11:30`,type:`continuous`},{name:`Nghỉ trưa`,startTime:`11:30`,endTime:`13:00`,type:`closed`},{name:`Phiên 2`,startTime:`13:00`,endTime:`14:30`,type:`continuous`},{name:`ATC`,startTime:`14:30`,endTime:`14:45`,type:`preClose`}],$=[{name:`Phiên 1`,startTime:`09:00`,endTime:`11:30`,type:`continuous`},{name:`Nghỉ trưa`,startTime:`11:30`,endTime:`13:00`,type:`closed`},{name:`Phiên 2`,startTime:`13:00`,endTime:`14:30`,type:`continuous`},{name:`ATC`,startTime:`14:30`,endTime:`14:45`,type:`preClose`}],Yt={type:`stock`,exchange:`HOSE`,currency:`VND`,pricePrecision:2,volumeUnit:10,priceStep:.05,priceLimits:{enabled:!0,ceilingPercent:7,floorPercent:7},sessions:Jt,colorScheme:Q},Xt={type:`stock`,exchange:`HNX`,currency:`VND`,pricePrecision:1,volumeUnit:100,priceStep:.1,priceLimits:{enabled:!0,ceilingPercent:10,floorPercent:10},sessions:$,colorScheme:Q},Zt={type:`stock`,exchange:`UPCOM`,currency:`VND`,pricePrecision:1,volumeUnit:100,priceStep:.1,priceLimits:{enabled:!0,ceilingPercent:15,floorPercent:15},sessions:$,colorScheme:Q},Qt={type:`crypto`,currency:`USDT`,pricePrecision:2,priceLimits:{enabled:!1}},$t={type:`stock`,exchange:`NYSE`,currency:`USD`,pricePrecision:2,priceStep:.01,priceLimits:{enabled:!1},sessions:[{name:`Pre-Market`,startTime:`04:00`,endTime:`09:30`,type:`preOpen`},{name:`Regular`,startTime:`09:30`,endTime:`16:00`,type:`continuous`},{name:`After-Hours`,startTime:`16:00`,endTime:`20:00`,type:`preClose`}]};function en(e){return{...e,candleUp:Q.up,candleDown:Q.down,candleUpWick:Q.up,candleDownWick:Q.down,volumeUp:`rgba(255, 0, 0, 0.3)`,volumeDown:`rgba(0, 0, 255, 0.3)`}}function tn(e,t){if(!t.priceLimits?.enabled||!t.priceLimits.ceilingPercent)return null;let n=t.priceLimits.ceilingPercent/100,r=(t.priceLimits.floorPercent??t.priceLimits.ceilingPercent)/100;return{ceiling:e*(1+n),floor:e*(1-r),reference:e}}function nn(e){let t=new Date,n=`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`;for(let t of e)if(n>=t.startTime&&n<t.endTime)return t;return null}exports.DARK_TERMINAL=q,exports.DARK_THEME=G,exports.DEFAULT_BAR_SPACING=At,exports.DEFAULT_BAR_WIDTH=kt,exports.DEFAULT_CHART_OPTIONS=wt,exports.DEFAULT_DRAWING_STYLE=t,exports.DEFAULT_FONT_FAMILY=z,exports.DEFAULT_PANEL_HEIGHT=Pt,exports.DEFAULT_RECONNECT=a,exports.DEFAULT_SIGNAL_STYLE=r,exports.DEFAULT_STREAM_CONFIG=o,exports.DEFAULT_TIMEFRAME_FAVORITES=Ot,exports.DEFAULT_TRADE_ZONE_STYLE=i,exports.DEFAULT_TRADING_CONFIG=n,exports.HNX_SESSIONS=$,exports.HOSE_SESSIONS=Jt,exports.LIGHT_THEME=K,exports.LayerType=e,exports.MARKET_CRYPTO=Qt,exports.MARKET_HNX=Xt,exports.MARKET_HOSE=Yt,exports.MARKET_NYSE=$t,exports.MARKET_UPCOM=Zt,exports.MIN_PANEL_HEIGHT=Nt,exports.PRICE_AXIS_WIDTH=jt,exports.PRICE_SOURCES=Ke,exports.TC_PALETTE=V,exports.TC_SERIES_COLORS=It,exports.TIMEFRAMES_CRYPTO=Tt,exports.TIMEFRAMES_FOREX=Dt,exports.TIMEFRAMES_STOCK=Et,exports.TIME_AXIS_HEIGHT=Mt,exports.VN_COLORS=Q,exports.VOLUME_ALPHA=Ft,exports.alignToTimeframe=je,exports.autoPricePrecision=ze,exports.barsAreDaily=Fe,exports.clamp=ne,exports.computePriceLimits=tn,exports.computePriceRange=de,exports.computeTickStep=oe,exports.createVNTheme=en,exports.detectPrecision=Ge,exports.drawingOption=mt,exports.en=J,exports.findBarIndex=ue,exports.formatFraction=Ve,exports.formatNumber=Z,exports.formatPrice=A,exports.formatPriceScaleLabel=Be,exports.formatTimestamp=Ae,exports.formatVND=Kt,exports.formatVolume=We,exports.formatVolumeLoc=qt,exports.fractionTick=He,exports.getCurrentSession=nn,exports.getLocale=Ht,exports.getLocaleStrings=Gt,exports.hexToRgba=pe,exports.indicatorSource=Xe,exports.inverseLerp=ie,exports.isDateOnly=Ne,exports.isPriceSource=qe,exports.isTimeFrame=ke,exports.isValidTimeZone=xe,exports.lerp=re,exports.lerpColor=he,exports.marketStatus=ot,exports.mergeBar=fe,exports.niceNumber=p,exports.normalizeBar=ce,exports.normalizeBarTime=se,exports.offsetAt=S,exports.parseIndicatorSource=Ze,exports.parseTimeframe=T,exports.pickBaseTimeframe=tt,exports.priceFormatterFor=Ue,exports.rankSymbols=rt,exports.readChartTypeOptions=Ct,exports.readNews=te,exports.readQuote=c,exports.registerLocale=Wt,exports.resampleBars=$e,exports.resolveDrawingOptions=ht,exports.resolveVolumeColors=Rt,exports.roundToStep=ae,exports.sanitizeDrawingOptions=ft,exports.sanitizeDrawingStyle=St,exports.sessionMinute=M,exports.setLocale=Vt,exports.sliceVisibleData=le,exports.sourcePrice=Je,exports.stepDecimals=it,exports.t=Ut,exports.tickBarCount=Oe,exports.timeParts=Me,exports.timeframeBucketStart=O,exports.timeframeToMs=E,exports.tzLabel=Ie,exports.vi=zt,exports.volumeColor=H,exports.wallToUtc=Ce,exports.withAlpha=me,exports.zoneOffsetMinutes=b,exports.zonedDateFormatter=we;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=function(e){return e[e.Background=0]=`Background`,e[e.Main=1]=`Main`,e[e.Panel=2]=`Panel`,e[e.Overlay=3]=`Overlay`,e[e.UI=4]=`UI`,e[e.Hover=5]=`Hover`,e}({}),t={"background.color":`color`,"panes.background":`color`,"panes.separatorColor":`color`,"panes.titleColor":`color`,"grid.horizontal.visible":`boolean`,"grid.horizontal.color":`color`,"grid.horizontal.style":`lineStyle`,"grid.horizontal.width":`width`,"grid.vertical.visible":`boolean`,"grid.vertical.color":`color`,"grid.vertical.style":`lineStyle`,"grid.vertical.width":`width`,"crosshair.horizontal.visible":`boolean`,"crosshair.horizontal.color":`color`,"crosshair.horizontal.style":`lineStyle`,"crosshair.horizontal.width":`width`,"crosshair.vertical.visible":`boolean`,"crosshair.vertical.color":`color`,"crosshair.vertical.style":`lineStyle`,"crosshair.vertical.width":`width`,"crosshair.labelBackground":`color`,"crosshair.labelTextColor":`color`,"axis.price.lineColor":`color`,"axis.price.textColor":`color`,"axis.time.lineColor":`color`,"axis.time.textColor":`color`,"legend.textColor":`color`,"legend.labelColor":`color`,"watermark.color":`color`,"lastPrice.visible":`boolean`,"lastPrice.upColor":`color`,"lastPrice.downColor":`color`,"lastPrice.style":`lineStyle`,"lastPrice.width":`width`,"volume.upColor":`color`,"volume.downColor":`color`,"sessionBreaks.color":`color`,"sessionBreaks.style":`lineStyle`,"sessionBreaks.width":`width`,"highLow.color":`color`,"series.candlestick.upColor":`color`,"series.candlestick.downColor":`color`,"series.candlestick.wickUpColor":`color`,"series.candlestick.wickDownColor":`color`,"series.heikinAshi.upColor":`color`,"series.heikinAshi.downColor":`color`,"series.heikinAshi.wickUpColor":`color`,"series.heikinAshi.wickDownColor":`color`,"series.hollowCandle.upColor":`color`,"series.hollowCandle.downColor":`color`,"series.volumeCandles.upColor":`color`,"series.volumeCandles.downColor":`color`,"series.volumeCandles.wickUpColor":`color`,"series.volumeCandles.wickDownColor":`color`,"series.equivolume.upColor":`color`,"series.equivolume.downColor":`color`,"series.equivolume.wickUpColor":`color`,"series.equivolume.wickDownColor":`color`,"series.bar.upColor":`color`,"series.bar.downColor":`color`,"series.hiLo.upColor":`color`,"series.hiLo.downColor":`color`,"series.renko.upColor":`color`,"series.renko.downColor":`color`,"series.lineBreak.upColor":`color`,"series.lineBreak.downColor":`color`,"series.rangeBars.upColor":`color`,"series.rangeBars.downColor":`color`,"series.kagi.upColor":`color`,"series.kagi.downColor":`color`,"series.pointAndFigure.upColor":`color`,"series.pointAndFigure.downColor":`color`,"series.baseline.upColor":`color`,"series.baseline.downColor":`color`,"series.baseline.lineWidth":`width`,"series.line.color":`color`,"series.line.lineWidth":`width`,"series.stepLine.color":`color`,"series.stepLine.lineWidth":`width`,"series.lineWithMarkers.color":`color`,"series.lineWithMarkers.lineWidth":`width`,"series.area.lineColor":`color`,"series.area.lineWidth":`width`,"series.area.topColor":`color`,"series.area.bottomColor":`color`,"series.hlcArea.lineColor":`color`,"series.hlcArea.lineWidth":`width`,"series.hlcArea.topColor":`color`,"series.hlcArea.bottomColor":`color`},n={color:`#4c8dff`,lineWidth:1,lineStyle:`solid`,fillColor:`rgba(76, 141, 255, 0.1)`,fillOpacity:.1,fontSize:12},r={enabled:!0,orderColors:{buy:`#1fa874`,sell:`#e8505b`},positionColors:{profit:`#1fa874`,loss:`#e8505b`,entry:`#4c8dff`},depthOverlay:{enabled:!1,bidColor:`rgba(31, 168, 116,0.15)`,askColor:`rgba(232, 80, 91,0.15)`,maxWidth:100},contextMenu:{enabled:!0},lineButtons:{cancel:!0,close:!0,reverse:!0,removeStops:!0},fillMarks:!0,pricePrecision:2,dragThreshold:3},i={longColor:`#1fa874`,shortColor:`#e8505b`,neutralColor:`#9E9E9E`,arrowSize:12,showLabel:!0,showConfidence:!0},a={profitColor:`#1fa874`,lossColor:`#e8505b`,activeColor:`#4c8dff`,fillOpacity:.12,borderWidth:1,showLabel:!0,showPnl:!0},o={enabled:!0,maxRetries:1/0,baseDelay:1e3,maxDelay:3e4,backoffMultiplier:2},s={historyLimit:500,autoScroll:!0,showCurrentPriceLine:!0,aggregateTicks:!1},c=[`change`,`changePercent`,`open`,`high`,`low`,`prevClose`,`volume`,`bid`,`ask`,`time`];function l(e){if(!e||typeof e!=`object`)return null;let t=e,n=typeof t.symbol==`string`?t.symbol.trim():``;if(!n||n.length>64||!u(t.last))return null;let r={symbol:n,last:t.last};for(let e of c){let n=t[e];u(n)&&(r[e]=n)}let i=r.prevClose??r.open;if(r.change===void 0&&i!==void 0&&(r.change=r.last-i),r.changePercent===void 0&&r.change!==void 0){let e=r.last-r.change;e!==0&&(r.changePercent=r.change/e*100)}return r}function u(e){return typeof e==`number`&&Number.isFinite(e)}var d=300,f=1e3,p=(e,t)=>{if(typeof e!=`string`)return;let n=e.trim();return n?n.slice(0,t):void 0},ee=e=>{if(typeof e==`string`)try{let t=new URL(e);return t.protocol===`https:`||t.protocol===`http:`?t.href:void 0}catch{return}};function te(e,t=20){if(!Array.isArray(e))return[];let n=[];for(let t of e){if(!t||typeof t!=`object`)continue;let e=t,r=p(e.title,d);if(!r||typeof e.time!=`number`||!Number.isFinite(e.time))continue;let i={title:r,time:e.time},a=ee(e.url);a&&(i.url=a);let o=p(e.source,d);o&&(i.source=o);let s=p(e.summary,f);s&&(i.summary=s);let c=p(e.id,d);c&&(i.id=c),n.push(i)}return n.sort((e,t)=>t.time-e.time).slice(0,Math.max(0,t))}function ne(e,t,n){return Math.max(t,Math.min(n,e))}function re(e,t,n){return e+(t-e)*n}function ie(e,t,n){return e===t?0:(n-e)/(t-e)}function ae(e,t){return Math.round(e/t)*t}function m(e,t){let n=Math.floor(Math.log10(e)),r=e/10**n,i;return i=t?r<1.5?1:r<3?2:r<7?5:10:r<=1?1:r<=2?2:r<=5?5:10,i*10**n}function oe(e,t,n){return m(m(t-e,!1)/(n-1),!0)}function se(e){return e>0xe8d4a51000?e:e*1e3}function ce(e){return{time:se(e.time??e.t??0),open:e.open??e.o??0,high:e.high??e.h??0,low:e.low??e.l??0,close:e.close??e.c??0,volume:e.volume??e.v??0}}function le(e,t,n){let r=Math.max(0,t),i=Math.min(e.length,n+1);return e.slice(r,i)}function ue(e,t){let n=0,r=e.length-1;for(;n<=r;){let i=n+r>>>1;if(e[i].time<t)n=i+1;else if(e[i].time>t)r=i-1;else return i}return n}function de(e,t,n,r=.05){if(e.length===0)return{min:0,max:1};let i=Math.max(0,t),a=Math.min(e.length-1,n),o=1/0,s=-1/0;for(let t=i;t<=a;t++)e[t].low<o&&(o=e[t].low),e[t].high>s&&(s=e[t].high);if(o===1/0)return{min:0,max:1};let c=s-o||1;return{min:o-c*r,max:s+c*r}}function fe(e,t){return{...e,high:Math.max(e.high,t.price),low:Math.min(e.low,t.price),close:t.price,volume:e.volume+(t.volume??0),time:t.time}}function pe(e,t=1){let n=e.slice(1);return(n.length===3||n.length===4)&&(n=[...n.slice(0,3)].map(e=>e+e).join(``)),`rgba(${parseInt(n.slice(0,2),16)}, ${parseInt(n.slice(2,4),16)}, ${parseInt(n.slice(4,6),16)}, ${t})`}function me(e,t){let n=e.trim();if(/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(n))return pe(n,t);let r=n.match(/^rgba?\(\s*(\d+(?:\.\d+)?)[\s,]+(\d+(?:\.\d+)?)[\s,]+(\d+(?:\.\d+)?)/i);return r?`rgba(${r[1]}, ${r[2]}, ${r[3]}, ${t})`:e}function he(e,t,n){let r=e=>(e=e.replace(`#`,``),e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),{r:parseInt(e.slice(0,2),16),g:parseInt(e.slice(2,4),16),b:parseInt(e.slice(4,6),16)}),i=r(e),a=r(t);return`rgb(${Math.round(i.r+(a.r-i.r)*n)},${Math.round(i.g+(a.g-i.g)*n)},${Math.round(i.b+(a.b-i.b)*n)})`}var h=6e4,g=1440*h,_=15*h,ge=8192,v=7*g,_e=4096,ve=new Set([`UTC`,`Etc/UTC`,`GMT`,`Etc/GMT`,`UCT`,`Etc/UCT`,`Universal`,`Etc/Universal`,`Zulu`,`Etc/Zulu`]),ye=new Map,y=new Map,be=new Map;function xe(e){let t=ye.get(e);return t||(t=new Intl.DateTimeFormat(`en-US`,{timeZone:e,hourCycle:`h23`,year:`numeric`,month:`numeric`,day:`numeric`,hour:`numeric`,minute:`numeric`,second:`numeric`}),ye.set(e,t)),t}function Se(e){if(!e)return!1;try{return xe(e),!0}catch{return!1}}function b(e,t){if(!Number.isFinite(t)||ve.has(e))return 0;let n=be.get(e);n||(n=new Map,be.set(e,n));let r=Math.floor(t/v),i=n.get(r);return i||(i=Ce(e,r*v),n.size>=_e&&n.clear(),n.set(r,i)),t<i.change?i.before:i.after}function Ce(e,t){let n=x(e,t),r=t+v-_,i=x(e,r);if(i===n)return{before:n,change:1/0,after:i};let a=t;for(;r-a>_;){let t=a+Math.floor((r-a)/_/2)*_;x(e,t)===n?a=t:r=t}return{before:n,change:r,after:i}}function x(e,t){let n=Math.floor(t/_),r=`${e}|${n}`,i=y.get(r);if(i!==void 0)return i;let a=n*_,o=1970,s=1,c=1,l=0,u=0,d=0;for(let t of xe(e).formatToParts(new Date(a))){let e=Number(t.value);switch(t.type){case`year`:o=e;break;case`month`:s=e;break;case`day`:c=e;break;case`hour`:l=e%24;break;case`minute`:u=e;break;case`second`:d=e;break}}let f=Math.round((Date.UTC(o,s-1,c,l,u,d)-a)/h);return y.size>=ge&&y.clear(),y.set(r,f),f}function S(e,t){return e===null?-new Date(t).getTimezoneOffset():typeof e==`number`?e:b(e,t)}function we(e,t){let n=e-S(t,e-g)*h;if(n+S(t,n)*h===e)return n;let r=e-S(t,e+g)*h;return r+S(t,r)*h===e?r:n}var Te=new Map;function Ee(e,t,n){let r=`${e}|${JSON.stringify(t)}|${n===null?`local`:typeof n==`number`?`fixed:${n}`:n}`,i=Te.get(r);if(i)return i;let a=n===null?void 0:typeof n==`number`?`UTC`:n,o;try{o=new Intl.DateTimeFormat(e,{...t,timeZone:a})}catch{o=new Intl.DateTimeFormat(`en-US`,{...t,timeZone:a})}let s=typeof n==`number`?n*h:0;return i=e=>o.format(new Date(e+s)),Te.set(r,i),i}var De={"1s":1e3,"5s":5e3,"15s":15e3,"30s":3e4,"1m":6e4,"3m":18e4,"5m":3e5,"15m":9e5,"30m":18e5,"45m":27e5,"1h":36e5,"2h":72e5,"3h":108e5,"4h":144e5,"6h":216e5,"8h":288e5,"12h":432e5,"1d":864e5,"2d":1728e5,"3d":2592e5,"1w":6048e5,"2w":12096e5,"1M":2592e6,"3M":7776e6,"6M":15552e6,"12M":31536e6},C={s:1e3,m:6e4,h:36e5,d:864e5,w:6048e5,M:2592e6},Oe=/^([1-9]\d*)([smhdwM])$/;function w(e){let t=Oe.exec(e);if(!t)return null;let n=Number(t[1]);return Number.isSafeInteger(n)?{count:n,unit:t[2]}:null}var ke=1e6;function Ae(e){let t=/^([1-9]\d*)T$/.exec(e);if(!t)return null;let n=Number(t[1]);return Number.isSafeInteger(n)&&n<=ke?n:null}function je(e){return w(e)!==null}function T(e){let t=De[e];if(t!==void 0)return t;let n=w(e);return n?n.count*C[n.unit]:NaN}function Me(e,t){let n=new Date(e),r=T(t);return r>=864e5?n.toLocaleDateString(void 0,{month:`short`,day:`numeric`}):r>=36e5?n.toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`}):n.toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}function Ne(e,t){let n=T(t);return Math.floor(e/n)*n}function Pe(e,t){if(t===null){let t=new Date(e);return{year:t.getFullYear(),month:t.getMonth()+1,day:t.getDate(),hours:t.getHours(),minutes:t.getMinutes()}}let n=new Date(e+S(t,e)*6e4);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hours:n.getUTCHours(),minutes:n.getUTCMinutes()}}function Fe(e){return e.hours===0&&e.minutes===0}var Ie=20*36e5;function Le(e){let t=Math.min(e.length,64);if(t<2)return;let n=e=>e>0xe8d4a51000?e:e*1e3,r=1/0;for(let i=1;i<t;i++){let t=Math.abs(n(e[i].time)-n(e[i-1].time));t>0&&t<r&&(r=t)}return r===1/0?void 0:r>=Ie}function Re(e,t=Date.now()){let n=S(e,t),r=n>=0?`+`:`-`,i=Math.abs(n),a=Math.floor(i/60),o=i%60;return o===0?`UTC${r}${a}`:`UTC${r}${a}:${String(o).padStart(2,`0`)}`}var ze=Date.UTC(1970,0,5);function Be(e,t,n=1){let{count:r,unit:i}=w(t)??{count:1,unit:`m`};if(i===`s`||i===`m`||i===`h`||i===`d`){let t=r*C[i];return Math.floor(e/t)*t}let a=new Date(e);if(i===`w`){let e=C.d,t=(a.getUTCDay()-n+7)%7,i=Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate()-t);if(r<=1)return i;let o=Math.floor((i-ze)/(7*e));return ze+Math.floor(o/r)*r*7*e}let o=a.getUTCFullYear()*12+a.getUTCMonth(),s=Math.floor(o/r)*r;return Date.UTC(Math.floor(s/12),s%12,1)}var Ve=64,E=new Map;function He(e,t){let n=`${e}|${t}`,r=E.get(n);return r||(E.size>=Ve&&E.clear(),r=new Intl.NumberFormat(e,{minimumFractionDigits:t,maximumFractionDigits:t}),E.set(n,r)),r}function D(e,t=2,n=`en-US`){return He(n,t).format(e)}function Ue(e,t){if(!(t>e)||!Number.isFinite(e)||!Number.isFinite(t))return 2;let n=oe(e,t,8);return n>0&&n<1?Math.ceil(-Math.log10(n))+1:2}function We(e,t,n,r=2,i=`en-US`){if((t===`percentage`||t===`indexedTo100`)&&n&&n!==0){if(t===`percentage`){let t=(e/n-1)*100;return`${t>0?`+`:``}${t.toFixed(2)}%`}return D(e/n*100,2,i)}return D(e,r,i)}function Ge(e,t,n=1){let r=Number.isInteger(n)&&n>1?n:1;if(!Number.isFinite(e)||!Number.isInteger(t)||t<2)return String(e);let i=t*r,a=Math.round(Math.abs(e)*i),o=Math.floor(a/i),s=a-o*i,c=Math.floor(s/r),l=String(t-1).length,u=r>1?String(Math.floor((s-c*r)/r*10)):``;return`${e<0&&a>0?`-`:``}${o}'${String(c).padStart(l,`0`)}${u}`}function Ke(e){if(!Number.isInteger(e.denominator)||e.denominator<2)return null;let t=Number.isInteger(e.subDenominator)&&(e.subDenominator??0)>1?e.subDenominator:1;return 1/(e.denominator*t)}function qe(e){return e?typeof e==`function`?e:Ke(e)===null?null:t=>Ge(t,e.denominator,e.subDenominator):null}function Je(e){return e>=1e9?(e/1e9).toFixed(2)+`B`:e>=1e6?(e/1e6).toFixed(2)+`M`:e>=1e3?(e/1e3).toFixed(2)+`K`:e.toFixed(0)}function Ye(e){let t=0;for(let n of e){let e=n.toString(),r=e.indexOf(`.`);r>=0&&(t=Math.max(t,e.length-r-1))}return Math.min(t,8)}var Xe=[`close`,`open`,`high`,`low`,`hl2`,`hlc3`,`ohlc4`,`hlcc4`];function Ze(e){return typeof e==`string`&&Xe.includes(e)}function Qe(e,t){switch(t){case`open`:return e.open;case`high`:return e.high;case`low`:return e.low;case`hl2`:return(e.high+e.low)/2;case`hlc3`:return(e.high+e.low+e.close)/3;case`ohlc4`:return(e.open+e.high+e.low+e.close)/4;case`hlcc4`:return(e.high+e.low+2*e.close)/4;default:return e.close}}var $e=/^ind:([^:]+):(.+)$/;function et(e,t){return`ind:${e}:${t}`}function tt(e){if(typeof e!=`string`)return null;let t=$e.exec(e);return t?{instanceId:t[1],key:t[2]}:null}var nt=864e5;function rt(e,t,n=1){let r=[],i=null;for(let a of e){let e=Be(a.time,t,n);i===null||e!==i.time?(i={time:e,open:a.open,high:a.high,low:a.low,close:a.close,volume:a.volume},r.push(i)):(a.high>i.high&&(i.high=a.high),a.low<i.low&&(i.low=a.low),i.close=a.close,i.volume+=a.volume)}return r}var O=e=>e===`s`||e===`m`||e===`h`||e===`d`;function it(e,t){let n=w(e),r=w(t);if(!n||!r)return!1;let i=T(e);return n.unit===`d`&&n.count>1?!1:O(r.unit)?O(n.unit)&&T(t)%i===0:n.unit===r.unit?r.count%n.count===0:O(n.unit)&&nt%i===0}function at(e,t){let n=null,r=0;for(let i of t){if(!it(i,e))continue;let t=T(i);t>r&&(n=i,r=t)}return n}function ot(e,t){if(!e)return 0;if(e===t)return 1e3;if(e.startsWith(t))return 600-Math.min(100,e.length-t.length);let n=e.indexOf(t);return n>=0?300-Math.min(100,n):0}function st(e,t,n=50,r){let i=t.trim().toUpperCase();if(!i)return e.slice(0,n);let a=[];for(let t of e){let e=Math.max(ot(t.symbol.toUpperCase(),i),ot((t.description??``).toUpperCase(),i)*.8);e>0&&a.push({info:t,score:e+(r?.(t)??0)})}return a.sort((e,t)=>t.score-e.score||e.info.symbol.localeCompare(t.info.symbol)),a.slice(0,n).map(e=>e.info)}function ct(e){let t=typeof e==`number`?e:Number(e);if(!Number.isFinite(t)||t<=0)return 0;for(let e=0;e<=12;e++){let n=t*10**e;if(Math.abs(n-Math.round(n))<1e-9*Math.max(1,n))return e}return 12}function k(e){let t=/^(\d{1,2}):(\d{2})$/.exec(e.trim());if(!t)return null;let n=Number(t[1]),r=Number(t[2]);return n===24&&r===0?1440:n<24&&r<60?n*60+r:null}var A=864e5,j=6e4,lt=8;function ut(e,t){let n=e?.timezone,r=(e?.sessions??[]).flatMap(e=>{let t=k(e.start),n=k(e.end);return t===null||n===null||t===n?[]:[{start:t,end:n,days:Array.isArray(e.days)?e.days:null}]});if(!n||!Se(n)||r.length===0||!Number.isFinite(t))return{state:`always`,next:null};let i=b(n,t)*j,a=Math.floor((t+i)/A)*A,o=e=>e-b(n,e-b(n,e-i)*j)*j,s=[];for(let e=-1;e<=lt;e++){let t=a+e*A,n=(Math.floor(t/A)+4)%7;for(let e of r){if(e.days&&!e.days.includes(n))continue;let r=t+e.start*j,i=(e.end>e.start?t:t+A)+e.end*j;s.push([o(r),o(i)])}}s.sort((e,t)=>e[0]-t[0]);let c=[];for(let[e,t]of s){let n=c[c.length-1];n&&e<=n[1]?c[c.length-1]=[n[0],Math.max(n[1],t)]:c.push([e,t])}let l=c.find(([e,n])=>e<=t&&t<n);if(l)return{state:`open`,next:l[1]};let u=c.find(([e])=>e>t);return{state:`closed`,next:u?u[0]:null}}var dt=48,ft=2e3,pt=1e4;function mt(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(t.length>=dt)break;if(typeof n!=`object`||!n)continue;let{value:e,visible:r,color:i}=n;if(typeof e!=`number`||!Number.isFinite(e)||Math.abs(e)>pt||r!==void 0&&typeof r!=`boolean`)continue;let a={value:e,visible:r??!0};typeof i==`string`&&i&&(a.color=i),t.push(a)}return t}function ht(e,t){switch(e.kind){case`boolean`:return typeof t==`boolean`?t:void 0;case`number`:return typeof t!=`number`||!Number.isFinite(t)?void 0:Math.min(e.max??1/0,Math.max(e.min??-1/0,t));case`choice`:return typeof t==`string`&&e.choices.some(e=>e.value===t)?t:void 0;case`levels`:return mt(t);case`text`:return typeof t==`string`?t.slice(0,ft):void 0}}function gt(e,t){if(!e||typeof t!=`object`||!t)return{};let n={};for(let[r,i]of Object.entries(t)){let t=e[r];if(!t)continue;let a=ht(t,i);a!==void 0&&(n[r]=a)}return n}function _t(e){return Array.isArray(e)?e.map(e=>({...e})):e}function vt(e,t,n){let r=e?.[n];return r?_t((t&&n in t?ht(r,t[n]):void 0)??r.default):t?.[n]}function yt(e,t){let n={};for(let r of Object.keys(e??{}))n[r]=vt(e,t,r);return n}var bt=[`solid`,`dashed`,`dotted`],xt=64,St=2e3,Ct=20,wt=200;function M(e,t,n){return typeof e==`number`&&Number.isFinite(e)?Math.min(n,Math.max(t,e)):void 0}function Tt(e){return typeof e==`string`&&e.length>0&&e.length<=xt?e:void 0}function Et(e){if(typeof e!=`object`||!e)return{};let t=e,n={},r=Tt(t.color);r!==void 0&&(n.color=r);let i=M(t.lineWidth,.5,Ct);i!==void 0&&(n.lineWidth=i),bt.includes(t.lineStyle)&&(n.lineStyle=t.lineStyle);let a=Tt(t.fillColor);a!==void 0&&(n.fillColor=a);let o=M(t.fillOpacity,0,1);o!==void 0&&(n.fillOpacity=o);let s=M(t.fontSize,6,wt);return s!==void 0&&(n.fontSize=s),typeof t.text==`string`&&(n.text=t.text.slice(0,St)),n}var N=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,P=(e,t,n)=>typeof e==`number`&&Number.isInteger(e)&&e>=t&&e<=n,F=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function Dt(e){if(!F(e))return{};let t={};if(F(e.renko)){let{boxSize:n,atrPeriod:r}=e.renko;t.renko={...N(n)||n===`atr`?{boxSize:n}:{},...P(r,1,500)?{atrPeriod:r}:{}}}if(F(e.lineBreak)){let{lines:n}=e.lineBreak;t.lineBreak=P(n,1,10)?{lines:n}:{}}if(F(e.kagi)){let{reversal:n,reversalType:r}=e.kagi;t.kagi={...N(n)?{reversal:n}:{},...r===`percent`||r===`price`?{reversalType:r}:{}}}if(F(e.pointAndFigure)){let{boxSize:n,reversal:r}=e.pointAndFigure;t.pointAndFigure={...N(n)||n===`auto`?{boxSize:n}:{},...P(r,1,10)?{reversal:r}:{}}}if(F(e.rangeBars)){let{range:n}=e.rangeBars;t.rangeBars=N(n)||n===`auto`?{range:n}:{}}return t}var Ot=`-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,kt={family:Ot,sizeSmall:10,sizeMedium:12,sizeLarge:14},I={amber:`#f2a93b`,up:`#1fa874`,down:`#e8505b`,ochre:`#c98316`,blue:`#4c8dff`,violet:`#a57cff`,cyan:`#1398a8`,rose:`#e25592`,neutral:`#7d8696`,ink:`#0c1016`},At=.22;function L(e){return me(e,At)}var R=`#2eb88a`,z=`#e85a67`,jt=[I.blue,I.ochre,I.violet,I.cyan,I.rose],B={name:`dark`,background:I.ink,text:`#d9dde4`,textSecondary:`#7d8696`,grid:`#161b23`,crosshair:`#8a93a3`,candleUp:R,candleDown:z,candleUpWick:R,candleDownWick:z,lineColor:I.amber,areaTopColor:`rgba(242, 169, 59, 0.32)`,areaBottomColor:`rgba(242, 169, 59, 0.0)`,volumeUp:L(R),volumeDown:L(z),axisLine:`#1f2630`,axisLabel:`#9aa3b2`,axisLabelBackground:`#1f2630`,font:kt},V={name:`light`,background:`#ffffff`,text:`#0f131a`,textSecondary:`#6b7380`,grid:`#eef0f3`,crosshair:`#8a93a3`,candleUp:`#16a36a`,candleDown:`#d9414f`,candleUpWick:`#16a36a`,candleDownWick:`#d9414f`,lineColor:`#c77a0a`,areaTopColor:`rgba(199, 122, 10, 0.24)`,areaBottomColor:`rgba(199, 122, 10, 0.0)`,volumeUp:L(`#16a36a`),volumeDown:L(`#d9414f`),axisLine:`#dde1e7`,axisLabel:`#5b6472`,axisLabelBackground:`#eef0f3`,font:kt},H={name:`terminal`,background:`#0E0E0E`,text:`#C0C0C0`,textSecondary:`#8A8A8A`,grid:`#1A1A1A`,crosshair:`#666666`,candleUp:`#00FF87`,candleDown:`#FF3B4D`,candleUpWick:`#00FF87`,candleDownWick:`#FF3B4D`,lineColor:`#3D8BFD`,areaTopColor:`rgba(61, 139, 253, 0.3)`,areaBottomColor:`rgba(61, 139, 253, 0.0)`,volumeUp:`rgba(0, 255, 135, 0.2)`,volumeDown:`rgba(255, 59, 77, 0.2)`,axisLine:`#1A1A1A`,axisLabel:`#8A8A8A`,axisLabelBackground:`#1A1A1A`,font:{family:`'Roboto Mono', 'JetBrains Mono', 'SF Mono', Consolas, monospace`,sizeSmall:10,sizeMedium:12,sizeLarge:14}},Mt=new Set([B.volumeUp,B.volumeDown,V.volumeUp,V.volumeDown,H.volumeUp,H.volumeDown]);function U(e){let t=(e,t)=>{if(!Mt.has(e))return e;let n=L(t);return n===t?e:n};return{up:t(e.volumeUp,e.candleUp),down:t(e.volumeDown,e.candleDown)}}var Nt=[`solid`,`dashed`,`dotted`],Pt=20,Ft=64,It=2,Lt=[/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,/^[a-z]{3,30}$/i,/^(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color)\([0-9a-z.,%/\s-]*\)$/i];function W(e){return typeof e==`string`&&e.length<=Ft&&Lt.some(t=>t.test(e.trim()))}function Rt(e,t){switch(e){case`color`:return W(t);case`lineStyle`:return Nt.includes(t);case`width`:return typeof t==`number`&&Number.isFinite(t)&&t>0&&t<=Pt;case`boolean`:return typeof t==`boolean`}}function zt(e){return Object.prototype.hasOwnProperty.call(t,e)}function Bt(e){let n={},r=[];if(typeof e!=`object`||!e||Array.isArray(e))return{overrides:{},rejected:r};for(let[i,a]of Object.entries(e))zt(i)?a===null?n[i]=null:Rt(t[i],a)?n[i]=a:r.push(i):r.push(i);return{overrides:n,rejected:r}}function Vt(e){if(typeof e!=`object`||!e||Array.isArray(e))return null;let{background:t,separator:n}=e,r={...W(t)?{background:t}:{},...W(n)?{separator:n}:{}};return Object.keys(r).length>0?r:null}var Ht=/^[A-Za-z0-9_]{1,32}$/;function Ut(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let t={};for(let[n,r]of Object.entries(e)){if(!Ht.test(n)||typeof r!=`object`||!r)continue;let{lineStyle:e,visible:i}=r,a={...Nt.includes(e)?{lineStyle:e}:{},...typeof i==`boolean`?{visible:i}:{}};Object.keys(a).length>0&&(t[n]=a)}return Object.keys(t).length>0?t:void 0}function Wt(e,t,n=1){return e===`solid`?[]:e===`dotted`?[n,n*2]:[...t]}function Gt(e,t,n){let r=e=>t(`series.${n}.${e}`),i=r(`upColor`)??t(`series.candlestick.upColor`),a=r(`downColor`)??t(`series.candlestick.downColor`),o=i??e.candleUp,s=a??e.candleDown;return{up:o,down:s,wickUp:r(`wickUpColor`)??t(`series.candlestick.wickUpColor`)??(i===void 0?e.candleUpWick:o),wickDown:r(`wickDownColor`)??t(`series.candlestick.wickDownColor`)??(a===void 0?e.candleDownWick:s),line:r(`color`)??r(`lineColor`)??t(`series.line.color`)??e.lineColor,lineWidth:r(`lineWidth`)??t(`series.line.lineWidth`)??It,top:r(`topColor`)??t(`series.area.topColor`)??e.areaTopColor,bottom:r(`bottomColor`)??t(`series.area.bottomColor`)??e.areaBottomColor}}function G(e,t,n){return{visible:e(`${t}.visible`)??n.visible,color:e(`${t}.color`)??n.color,style:e(`${t}.style`)??n.style,width:e(`${t}.width`)??n.width}}function Kt(e,t,n){let{style:r,...i}=e,a=n,o=e=>a[e],s=Gt(i,o,t),c=o(`background.color`)??i.background,l=(e,t)=>o(e)??t,u={panes:{background:l(`panes.background`,c),separator:l(`panes.separatorColor`,i.axisLine),title:l(`panes.titleColor`,i.textSecondary)},grid:{horizontal:G(o,`grid.horizontal`,{visible:!0,color:i.grid,style:`solid`,width:1}),vertical:G(o,`grid.vertical`,{visible:!0,color:i.grid,style:`solid`,width:1})},crosshair:{horizontal:G(o,`crosshair.horizontal`,{visible:!0,color:i.crosshair,style:`dashed`,width:1}),vertical:G(o,`crosshair.vertical`,{visible:!0,color:i.crosshair,style:`dashed`,width:1}),labelBackground:l(`crosshair.labelBackground`,i.text),labelText:l(`crosshair.labelTextColor`,c)},axis:{price:{line:l(`axis.price.lineColor`,i.axisLine),text:l(`axis.price.textColor`,i.axisLabel)},time:{line:l(`axis.time.lineColor`,i.axisLine),text:l(`axis.time.textColor`,i.axisLabel)}},legend:{text:l(`legend.textColor`,i.text),label:l(`legend.labelColor`,i.textSecondary)},watermark:{color:o(`watermark.color`)??null},lastPrice:{visible:o(`lastPrice.visible`)??!0,up:l(`lastPrice.upColor`,s.up),down:l(`lastPrice.downColor`,s.down),style:o(`lastPrice.style`)??`dashed`,width:o(`lastPrice.width`)??1},sessionBreaks:{color:o(`sessionBreaks.color`)??null,style:o(`sessionBreaks.style`)??null,width:o(`sessionBreaks.width`)??null},highLow:{color:o(`highLow.color`)??null},series:{lineWidth:s.lineWidth}};return{...i,background:c,candleUp:s.up,candleDown:s.down,candleUpWick:s.wickUp,candleDownWick:s.wickDown,lineColor:s.line,areaTopColor:s.top,areaBottomColor:s.bottom,volumeUp:l(`volume.upColor`,i.volumeUp),volumeDown:l(`volume.downColor`,i.volumeDown),style:u}}var qt={"background.color":e=>e.background,"panes.background":(e,t)=>t.panes.background,"panes.separatorColor":(e,t)=>t.panes.separator,"panes.titleColor":(e,t)=>t.panes.title,"crosshair.labelBackground":(e,t)=>t.crosshair.labelBackground,"crosshair.labelTextColor":(e,t)=>t.crosshair.labelText,"axis.price.lineColor":(e,t)=>t.axis.price.line,"axis.price.textColor":(e,t)=>t.axis.price.text,"axis.time.lineColor":(e,t)=>t.axis.time.line,"axis.time.textColor":(e,t)=>t.axis.time.text,"legend.textColor":(e,t)=>t.legend.text,"legend.labelColor":(e,t)=>t.legend.label,"watermark.color":(e,t)=>t.watermark.color,"lastPrice.visible":(e,t)=>t.lastPrice.visible,"lastPrice.upColor":(e,t)=>t.lastPrice.up,"lastPrice.downColor":(e,t)=>t.lastPrice.down,"lastPrice.style":(e,t)=>t.lastPrice.style,"lastPrice.width":(e,t)=>t.lastPrice.width,"volume.upColor":e=>U(e).up,"volume.downColor":e=>U(e).down,"sessionBreaks.color":(e,t)=>t.sessionBreaks.color,"sessionBreaks.style":(e,t)=>t.sessionBreaks.style,"sessionBreaks.width":(e,t)=>t.sessionBreaks.width,"highLow.color":(e,t)=>t.highLow.color},Jt={visible:`visible`,color:`color`,style:`style`,width:`width`};function Yt(e,t,n,r=`candlestick`){let i=n.split(`.`);if(i[0]===`series`){let n=Gt(e,e=>t[e],i[1]);switch(i[2]){case`upColor`:return n.up;case`downColor`:return n.down;case`wickUpColor`:return n.wickUp;case`wickDownColor`:return n.wickDown;case`color`:case`lineColor`:return n.line;case`lineWidth`:return n.lineWidth;case`topColor`:return n.top;case`bottomColor`:return n.bottom}}let a=Kt(e,r,t),o=a.style;return i[0]===`grid`||i[0]===`crosshair`&&(i[1]===`horizontal`||i[1]===`vertical`)?(i[0]===`grid`?o.grid:o.crosshair)[i[1]][Jt[i[2]]]:qt[n]?.(a,o)??null}var Xt={autoScale:!0,rightMargin:5,minBarSpacing:2,maxBarSpacing:30,grid:{visible:!0,hLineStyle:`solid`,vLineStyle:`solid`},crosshair:{mode:`magnet`}},Zt=[`1s`,`1m`,`3m`,`5m`,`15m`,`30m`,`1h`,`2h`,`4h`,`6h`,`8h`,`12h`,`1d`,`3d`,`1w`,`1M`],Qt=[`1m`,`5m`,`15m`,`30m`,`1h`,`2h`,`4h`,`1d`,`1w`,`1M`,`3M`,`6M`,`12M`],$t=[`1m`,`5m`,`15m`,`30m`,`1h`,`4h`,`1d`,`1w`,`1M`],en=[`1m`,`5m`,`15m`,`1h`,`4h`,`1d`,`1w`],tn=8,nn=2,rn=70,an=30,on=60,sn=120,K={candlestick:`Candlestick`,line:`Line`,area:`Area`,bar:`OHLC Bar`,price:`Price`,volume:`Volume`,time:`Time`,open:`Open`,high:`High`,low:`Low`,close:`Close`,sma:`SMA`,ema:`EMA`,bollingerBands:`Bollinger Bands`,vwap:`VWAP`,ichimoku:`Ichimoku Cloud`,parabolicSAR:`Parabolic SAR`,supertrend:`Supertrend`,keltnerChannel:`Keltner Channel`,donchianChannel:`Donchian Channel`,rsi:`RSI`,macd:`MACD`,stochastic:`Stochastic`,atr:`ATR`,adx:`ADX`,obv:`OBV`,williamsR:`Williams %R`,cci:`CCI`,mfi:`MFI`,aroon:`Aroon`,roc:`ROC`,tsi:`TSI`,cmf:`CMF`,stddev:`Std Dev`,volumeProfile:`Volume Profile`,accumulationDistribution:`A/D Line`,vroc:`VROC`,trendLine:`Trend Line`,horizontalLine:`Horizontal Line`,verticalLine:`Vertical Line`,ray:`Ray`,extendedLine:`Extended Line`,parallelChannel:`Parallel Channel`,regressionChannel:`Regression Channel`,fibRetracement:`Fibonacci Retracement`,fibExtension:`Fibonacci Extension`,rectangle:`Rectangle`,ellipse:`Ellipse`,triangle:`Triangle`,pitchfork:`Andrews' Pitchfork`,elliottWave:`Elliott Wave`,priceRange:`Price Range`,dateRange:`Date Range`,measure:`Measure`,textTool:`Text`,arrow:`Arrow`,clearAll:`Clear All`,buy:`Buy`,sell:`Sell`,buyLimit:`Buy Limit`,sellLimit:`Sell Limit`,buyStop:`Buy Stop`,sellStop:`Sell Stop`,stopLoss:`Stop Loss`,takeProfit:`Take Profit`,market:`Market`,limit:`Limit`,stop:`Stop`,cancel:`Cancel`,modify:`Modify`,quantity:`Qty`,pnl:`P&L`,activeOrders:`Active Orders`,positions:`Positions`,noOrders:`No active orders`,noPositions:`No open positions`,placeOrder:`Place Order`,rightClickToTrade:`Right-click chart to place orders`,ceiling:`Ceiling`,floor:`Floor`,reference:`Reference`,session:`Session`,preOpen:`Pre-Open`,continuous:`Continuous`,preClose:`Pre-Close`,closed:`Closed`,settings:`Settings`,theme:`Theme`,darkTheme:`Dark`,lightTheme:`Light`,tools:`Tools`,indicators:`Indicators`,overlays:`Overlays`,panels:`Panels`,orders:`Orders`,autoScale:`Auto Scale`,crosshair:`Crosshair`,grid:`Grid`,loading:`Loading...`,error:`Error`,numberDecimalSeparator:`.`,numberGroupSeparator:`,`},cn={candlestick:`Nến`,line:`Đường`,area:`Vùng`,bar:`Thanh OHLC`,price:`Giá`,volume:`Khối lượng`,time:`Thời gian`,open:`Mở`,high:`Cao`,low:`Thấp`,close:`Đóng`,sma:`SMA`,ema:`EMA`,bollingerBands:`Dải Bollinger`,vwap:`VWAP`,ichimoku:`Mây Ichimoku`,parabolicSAR:`Parabolic SAR`,supertrend:`Supertrend`,keltnerChannel:`Kênh Keltner`,donchianChannel:`Kênh Donchian`,rsi:`RSI`,macd:`MACD`,stochastic:`Stochastic`,atr:`ATR`,adx:`ADX`,obv:`OBV`,williamsR:`Williams %R`,cci:`CCI`,mfi:`MFI`,aroon:`Aroon`,roc:`ROC`,tsi:`TSI`,cmf:`CMF`,stddev:`Độ lệch chuẩn`,volumeProfile:`Phân bổ KL`,accumulationDistribution:`Tích lũy/Phân phối`,vroc:`VROC`,trendLine:`Đường xu hướng`,horizontalLine:`Đường ngang`,verticalLine:`Đường dọc`,ray:`Tia`,extendedLine:`Đường kéo dài`,parallelChannel:`Kênh song song`,regressionChannel:`Kênh hồi quy`,fibRetracement:`Fibonacci thoái lui`,fibExtension:`Fibonacci mở rộng`,rectangle:`Hình chữ nhật`,ellipse:`Hình elip`,triangle:`Tam giác`,pitchfork:`Chĩa ba Andrews`,elliottWave:`Sóng Elliott`,priceRange:`Khoảng giá`,dateRange:`Khoảng thời gian`,measure:`Đo lường`,textTool:`Chữ`,arrow:`Mũi tên`,clearAll:`Xóa tất cả`,buy:`Mua`,sell:`Bán`,buyLimit:`Mua giới hạn`,sellLimit:`Bán giới hạn`,buyStop:`Mua chặn`,sellStop:`Bán chặn`,stopLoss:`Cắt lỗ`,takeProfit:`Chốt lời`,market:`Thị trường`,limit:`Giới hạn`,stop:`Dừng`,cancel:`Hủy`,modify:`Sửa`,quantity:`KL`,pnl:`Lãi/Lỗ`,activeOrders:`Lệnh chờ`,positions:`Vị thế`,noOrders:`Không có lệnh chờ`,noPositions:`Không có vị thế mở`,placeOrder:`Đặt lệnh`,rightClickToTrade:`Nhấp chuột phải để đặt lệnh`,ceiling:`Trần`,floor:`Sàn`,reference:`Tham chiếu`,session:`Phiên`,preOpen:`Trước giờ mở`,continuous:`Liên tục`,preClose:`Trước giờ đóng`,closed:`Đóng cửa`,settings:`Cài đặt`,theme:`Giao diện`,darkTheme:`Tối`,lightTheme:`Sáng`,tools:`Công cụ`,indicators:`Chỉ báo`,overlays:`Phủ lên`,panels:`Bảng`,orders:`Lệnh`,autoScale:`Tự co giãn`,crosshair:`Chữ thập`,grid:`Lưới`,loading:`Đang tải...`,error:`Lỗi`,numberDecimalSeparator:`,`,numberGroupSeparator:`.`},q=new Map([[`en`,K],[`vi`,cn]]),J=`en`,Y=K;function ln(e){J=e,Y=q.get(e)??K}function un(){return J}function dn(e){return Y[e]??K[e]??e}function fn(e,t){q.set(e,t)}function pn(e){return q.get(e??J)??K}function X(e,t=2,n){let r=q.get(n??J)??K,i=r.numberDecimalSeparator,a=r.numberGroupSeparator,[o,s]=e.toFixed(t).split(`.`),c=o.startsWith(`-`),l=c?o.slice(1):o,u=``;for(let e=l.length-1,t=0;e>=0;e--,t++)t>0&&t%3==0&&(u=a+u),u=l[e]+u;return c&&(u=`-`+u),s?u+i+s:u}function mn(e){return X(e,0,`vi`)}function hn(e,t){return e>=1e9?X(e/1e9,2,t??J)+`B`:e>=1e6?X(e/1e6,2,t??J)+`M`:e>=1e3?X(e/1e3,2,t??J)+`K`:X(e,0,t??J)}var Z={up:`#FF0000`,down:`#0000FF`,unchanged:`#FFD700`,ceiling:`#FF00FF`,floor:`#00FFFF`,reference:`#FFD700`},Q=[{name:`ATO`,startTime:`09:00`,endTime:`09:15`,type:`preOpen`},{name:`Phiên 1`,startTime:`09:15`,endTime:`11:30`,type:`continuous`},{name:`Nghỉ trưa`,startTime:`11:30`,endTime:`13:00`,type:`closed`},{name:`Phiên 2`,startTime:`13:00`,endTime:`14:30`,type:`continuous`},{name:`ATC`,startTime:`14:30`,endTime:`14:45`,type:`preClose`}],$=[{name:`Phiên 1`,startTime:`09:00`,endTime:`11:30`,type:`continuous`},{name:`Nghỉ trưa`,startTime:`11:30`,endTime:`13:00`,type:`closed`},{name:`Phiên 2`,startTime:`13:00`,endTime:`14:30`,type:`continuous`},{name:`ATC`,startTime:`14:30`,endTime:`14:45`,type:`preClose`}],gn={type:`stock`,exchange:`HOSE`,currency:`VND`,pricePrecision:2,volumeUnit:10,priceStep:.05,priceLimits:{enabled:!0,ceilingPercent:7,floorPercent:7},sessions:Q,colorScheme:Z},_n={type:`stock`,exchange:`HNX`,currency:`VND`,pricePrecision:1,volumeUnit:100,priceStep:.1,priceLimits:{enabled:!0,ceilingPercent:10,floorPercent:10},sessions:$,colorScheme:Z},vn={type:`stock`,exchange:`UPCOM`,currency:`VND`,pricePrecision:1,volumeUnit:100,priceStep:.1,priceLimits:{enabled:!0,ceilingPercent:15,floorPercent:15},sessions:$,colorScheme:Z},yn={type:`crypto`,currency:`USDT`,pricePrecision:2,priceLimits:{enabled:!1}},bn={type:`stock`,exchange:`NYSE`,currency:`USD`,pricePrecision:2,priceStep:.01,priceLimits:{enabled:!1},sessions:[{name:`Pre-Market`,startTime:`04:00`,endTime:`09:30`,type:`preOpen`},{name:`Regular`,startTime:`09:30`,endTime:`16:00`,type:`continuous`},{name:`After-Hours`,startTime:`16:00`,endTime:`20:00`,type:`preClose`}]};function xn(e){return{...e,candleUp:Z.up,candleDown:Z.down,candleUpWick:Z.up,candleDownWick:Z.down,volumeUp:`rgba(255, 0, 0, 0.3)`,volumeDown:`rgba(0, 0, 255, 0.3)`}}function Sn(e,t){if(!t.priceLimits?.enabled||!t.priceLimits.ceilingPercent)return null;let n=t.priceLimits.ceilingPercent/100,r=(t.priceLimits.floorPercent??t.priceLimits.ceilingPercent)/100;return{ceiling:e*(1+n),floor:e*(1-r),reference:e}}function Cn(e){let t=new Date,n=`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`;for(let t of e)if(n>=t.startTime&&n<t.endTime)return t;return null}exports.CHART_STYLE_KEYS=t,exports.DARK_TERMINAL=H,exports.DARK_THEME=B,exports.DEFAULT_BAR_SPACING=nn,exports.DEFAULT_BAR_WIDTH=tn,exports.DEFAULT_CHART_OPTIONS=Xt,exports.DEFAULT_DRAWING_STYLE=n,exports.DEFAULT_FONT_FAMILY=Ot,exports.DEFAULT_PANEL_HEIGHT=sn,exports.DEFAULT_RECONNECT=o,exports.DEFAULT_SIGNAL_STYLE=i,exports.DEFAULT_STREAM_CONFIG=s,exports.DEFAULT_TIMEFRAME_FAVORITES=en,exports.DEFAULT_TRADE_ZONE_STYLE=a,exports.DEFAULT_TRADING_CONFIG=r,exports.HNX_SESSIONS=$,exports.HOSE_SESSIONS=Q,exports.LIGHT_THEME=V,exports.LayerType=e,exports.MARKET_CRYPTO=yn,exports.MARKET_HNX=_n,exports.MARKET_HOSE=gn,exports.MARKET_NYSE=bn,exports.MARKET_UPCOM=vn,exports.MIN_PANEL_HEIGHT=on,exports.PRICE_AXIS_WIDTH=rn,exports.PRICE_SOURCES=Xe,exports.TC_PALETTE=I,exports.TC_SERIES_COLORS=jt,exports.TIMEFRAMES_CRYPTO=Zt,exports.TIMEFRAMES_FOREX=$t,exports.TIMEFRAMES_STOCK=Qt,exports.TIME_AXIS_HEIGHT=an,exports.VN_COLORS=Z,exports.VOLUME_ALPHA=At,exports.alignToTimeframe=Ne,exports.autoPricePrecision=Ue,exports.barsAreDaily=Le,exports.chartStyleValue=Yt,exports.clamp=ne,exports.computePriceLimits=Sn,exports.computePriceRange=de,exports.computeTickStep=oe,exports.createVNTheme=xn,exports.detectPrecision=Ye,exports.drawingOption=vt,exports.en=K,exports.findBarIndex=ue,exports.formatFraction=Ge,exports.formatNumber=X,exports.formatPrice=D,exports.formatPriceScaleLabel=We,exports.formatTimestamp=Me,exports.formatVND=mn,exports.formatVolume=Je,exports.formatVolumeLoc=hn,exports.fractionTick=Ke,exports.getCurrentSession=Cn,exports.getLocale=un,exports.getLocaleStrings=pn,exports.hexToRgba=pe,exports.indicatorSource=et,exports.inverseLerp=ie,exports.isDateOnly=Fe,exports.isPriceSource=Ze,exports.isTimeFrame=je,exports.isValidTimeZone=Se,exports.lerp=re,exports.lerpColor=he,exports.lineDash=Wt,exports.marketStatus=ut,exports.mergeBar=fe,exports.niceNumber=m,exports.normalizeBar=ce,exports.normalizeBarTime=se,exports.offsetAt=S,exports.parseIndicatorSource=tt,exports.parseTimeframe=w,exports.pickBaseTimeframe=at,exports.priceFormatterFor=qe,exports.rankSymbols=st,exports.readChartStyleOverrides=Bt,exports.readChartTypeOptions=Dt,exports.readIndicatorPlotStyles=Ut,exports.readNews=te,exports.readPaneStyle=Vt,exports.readQuote=l,exports.registerLocale=fn,exports.resampleBars=rt,exports.resolveChartTheme=Kt,exports.resolveDrawingOptions=yt,exports.resolveVolumeColors=U,exports.roundToStep=ae,exports.sanitizeDrawingOptions=gt,exports.sanitizeDrawingStyle=Et,exports.sessionMinute=k,exports.setLocale=ln,exports.sliceVisibleData=le,exports.sourcePrice=Qe,exports.stepDecimals=ct,exports.t=dn,exports.tickBarCount=Ae,exports.timeParts=Pe,exports.timeframeBucketStart=Be,exports.timeframeToMs=T,exports.tzLabel=Re,exports.vi=cn,exports.volumeColor=L,exports.wallToUtc=we,exports.withAlpha=me,exports.zoneOffsetMinutes=b,exports.zonedDateFormatter=Ee;
2
2
  //# sourceMappingURL=index.cjs.map