UNPKG

highcharts

Version:
9 lines 104 kB
/** * Highstock JS v11.3.0 (2024-01-10) * * Highcharts Stock as a plugin for Highcharts * * (c) 2010-2024 Torstein Honsi * * License: www.highcharts.com/license */!function(t){"object"==typeof module&&module.exports?(t.default=t,module.exports=t):"function"==typeof define&&define.amd?define("highcharts/modules/stock",["highcharts"],function(e){return t(e),t.Highcharts=e,t}):t("undefined"!=typeof Highcharts?Highcharts:void 0)}(function(t){"use strict";var e=t?t._modules:{};function i(t,e,i,s){t.hasOwnProperty(e)||(t[e]=s.apply(null,i),"function"==typeof CustomEvent&&window.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:e,module:t[e]}})))}i(e,"Core/Axis/BrokenAxis.js",[e["Core/Globals.js"],e["Core/Axis/Stacking/StackItem.js"],e["Core/Utilities.js"]],function(t,e,i){var s;let{composed:o}=t,{addEvent:r,find:a,fireEvent:n,isArray:l,isNumber:h,pick:d,pushUnique:p}=i;return function(t){function i(){void 0!==this.brokenAxis&&this.brokenAxis.setBreaks(this.options.breaks,!1)}function s(){this.brokenAxis?.hasBreaks&&(this.options.ordinal=!1)}function c(){let t=this.brokenAxis;if(t?.hasBreaks){let e=this.tickPositions,i=this.tickPositions.info,s=[];for(let i=0;i<e.length;i++)t.isInAnyBreak(e[i])||s.push(e[i]);this.tickPositions=s,this.tickPositions.info=i}}function u(){this.brokenAxis||(this.brokenAxis=new b(this))}function g(){let{isDirty:t,options:{connectNulls:e},points:i,xAxis:s,yAxis:o}=this;if(t){let t=i.length;for(;t--;){let r=i[t],a=null===r.y&&!1===e,n=!a&&(s?.brokenAxis?.isInAnyBreak(r.x,!0)||o?.brokenAxis?.isInAnyBreak(r.y,!0));r.visible=!n&&!1!==r.options.visible}}}function f(){this.drawBreaks(this.xAxis,["x"]),this.drawBreaks(this.yAxis,d(this.pointArrayMap,["y"]))}function x(t,e){let i,s,o;let r=this,a=r.points;if(t?.brokenAxis?.hasBreaks){let l=t.brokenAxis;e.forEach(function(e){i=l?.breakArray||[],s=t.isXAxis?t.min:d(r.options.threshold,t.min);let p=t?.options?.breaks?.filter(function(t){let e=!0;for(let s=0;s<i.length;s++){let o=i[s];if(o.from===t.from&&o.to===t.to){e=!1;break}}return e});a.forEach(function(r){o=d(r["stack"+e.toUpperCase()],r[e]),i.forEach(function(e){if(h(s)&&h(o)){let i="";s<e.from&&o>e.to||s>e.from&&o<e.from?i="pointBreak":(s<e.from&&o>e.from&&o<e.to||s>e.from&&o>e.to&&o<e.from)&&(i="pointInBreak"),i&&n(t,i,{point:r,brk:e})}}),p?.forEach(function(e){n(t,"pointOutsideOfBreak",{point:r,brk:e})})})})}}function m(){let t=this.currentDataGrouping,i=t?.gapSize,s=this.points.slice(),o=this.yAxis,r=this.options.gapSize,a=s.length-1;if(r&&a>0){let t,n;for("value"!==this.options.gapUnit&&(r*=this.basePointRange),i&&i>r&&i>=this.basePointRange&&(r=i);a--;)if(n&&!1!==n.visible||(n=s[a+1]),t=s[a],!1!==n.visible&&!1!==t.visible){if(n.x-t.x>r){let i=(t.x+n.x)/2;s.splice(a+1,0,{isNull:!0,x:i}),o.stacking&&this.options.stacking&&((o.stacking.stacks[this.stackKey][i]=new e(o,o.options.stackLabels,!1,i,this.stack)).total=0)}n=t}}return this.getGraphPath(s)}t.compose=function t(e,a){if(p(o,t)){e.keepProps.push("brokenAxis"),r(e,"init",u),r(e,"afterInit",i),r(e,"afterSetTickPositions",c),r(e,"afterSetOptions",s);let t=a.prototype;t.drawBreaks=x,t.gappedPath=m,r(a,"afterGeneratePoints",g),r(a,"afterRender",f)}return e};class b{static isInBreak(t,e){let i=t.repeat||1/0,s=t.from,o=t.to-t.from,r=e>=s?(e-s)%i:i-(s-e)%i;return t.inclusive?r<=o:r<o&&0!==r}static lin2Val(t){let e=this.brokenAxis,i=e&&e.breakArray;if(!i||!h(t))return t;let s=t,o,r;for(r=0;r<i.length&&!((o=i[r]).from>=s);r++)o.to<s?s+=o.len:b.isInBreak(o,s)&&(s+=o.len);return s}static val2Lin(t){let e=this.brokenAxis,i=e&&e.breakArray;if(!i||!h(t))return t;let s=t,o,r;for(r=0;r<i.length;r++)if((o=i[r]).to<=t)s-=o.len;else if(o.from>=t)break;else if(b.isInBreak(o,t)){s-=t-o.from;break}return s}constructor(t){this.hasBreaks=!1,this.axis=t}findBreakAt(t,e){return a(e,function(e){return e.from<t&&t<e.to})}isInAnyBreak(t,e){let i=this.axis,s=i.options.breaks||[],o=s.length,r,a,n;if(o&&h(t)){for(;o--;)b.isInBreak(s[o],t)&&(r=!0,a||(a=d(s[o].showPoints,!i.isXAxis)));n=r&&e?r&&!a:r}return n}setBreaks(t,e){let i=this,s=i.axis,o=l(t)&&!!t.length&&!!Object.keys(t[0]).length;s.isDirty=i.hasBreaks!==o,i.hasBreaks=o,t!==s.options.breaks&&(s.options.breaks=s.userOptions.breaks=t),s.forceRedraw=!0,s.series.forEach(function(t){t.isDirty=!0}),o||s.val2lin!==b.val2Lin||(delete s.val2lin,delete s.lin2val),o&&(s.userOptions.ordinal=!1,s.lin2val=b.lin2Val,s.val2lin=b.val2Lin,s.setExtremes=function(t,e,o,r,a){if(i.hasBreaks){let s;let o=this.options.breaks||[];for(;s=i.findBreakAt(t,o);)t=s.to;for(;s=i.findBreakAt(e,o);)e=s.from;e<t&&(e=t)}s.constructor.prototype.setExtremes.call(this,t,e,o,r,a)},s.setAxisTranslation=function(){if(s.constructor.prototype.setAxisTranslation.call(this),i.unitLength=void 0,i.hasBreaks){let t=s.options.breaks||[],e=[],o=[],r=d(s.pointRangePadding,0),a=0,l,p,c=s.userMin||s.min,u=s.userMax||s.max,g,f;t.forEach(function(t){p=t.repeat||1/0,h(c)&&h(u)&&(b.isInBreak(t,c)&&(c+=t.to%p-c%p),b.isInBreak(t,u)&&(u-=u%p-t.from%p))}),t.forEach(function(t){if(g=t.from,p=t.repeat||1/0,h(c)&&h(u)){for(;g-p>c;)g-=p;for(;g<c;)g+=p;for(f=g;f<u;f+=p)e.push({value:f,move:"in"}),e.push({value:f+t.to-t.from,move:"out",size:t.breakSize})}}),e.sort(function(t,e){return t.value===e.value?("in"===t.move?0:1)-("in"===e.move?0:1):t.value-e.value}),l=0,g=c,e.forEach(function(t){1===(l+="in"===t.move?1:-1)&&"in"===t.move&&(g=t.value),0===l&&h(g)&&(o.push({from:g,to:t.value,len:t.value-g-(t.size||0)}),a+=t.value-g-(t.size||0))}),i.breakArray=o,h(c)&&h(u)&&h(s.min)&&(i.unitLength=u-c-a+r,n(s,"afterBreaks"),s.staticScale?s.transA=s.staticScale:i.unitLength&&(s.transA*=(u-s.min+r)/i.unitLength),r&&(s.minPixelPadding=s.transA*(s.minPointOffset||0)),s.min=c,s.max=u)}}),d(e,!0)&&s.chart.redraw()}}t.Additions=b}(s||(s={})),s}),i(e,"masters/modules/broken-axis.src.js",[e["Core/Globals.js"],e["Core/Axis/BrokenAxis.js"]],function(t,e){e.compose(t.Axis,t.Series)}),i(e,"Extensions/DataGrouping/ApproximationRegistry.js",[],function(){return{}}),i(e,"Extensions/DataGrouping/ApproximationDefaults.js",[e["Extensions/DataGrouping/ApproximationRegistry.js"],e["Core/Utilities.js"]],function(t,e){let{arrayMax:i,arrayMin:s,correctFloat:o,extend:r,isNumber:a}=e;function n(t){let e=t.length,i=l(t);return a(i)&&e&&(i=o(i/e)),i}function l(t){let e=t.length,i;if(!e&&t.hasNulls)i=null;else if(e)for(i=0;e--;)i+=t[e];return i}let h={average:n,averages:function(){let t=[];return[].forEach.call(arguments,function(e){t.push(n(e))}),void 0===t[0]?void 0:t},close:function(t){return t.length?t[t.length-1]:t.hasNulls?null:void 0},high:function(t){return t.length?i(t):t.hasNulls?null:void 0},hlc:function(e,i,s){if(e=t.high(e),i=t.low(i),s=t.close(s),a(e)||a(i)||a(s))return[e,i,s]},low:function(t){return t.length?s(t):t.hasNulls?null:void 0},ohlc:function(e,i,s,o){if(e=t.open(e),i=t.high(i),s=t.low(s),o=t.close(o),a(e)||a(i)||a(s)||a(o))return[e,i,s,o]},open:function(t){return t.length?t[0]:t.hasNulls?null:void 0},range:function(e,i){return(e=t.low(e),i=t.high(i),a(e)||a(i))?[e,i]:null===e&&null===i?null:void 0},sum:l};return r(t,h),h}),i(e,"Extensions/DataGrouping/DataGroupingDefaults.js",[],function(){return{common:{groupPixelWidth:2,dateTimeLabelFormats:{millisecond:["%A, %e %b, %H:%M:%S.%L","%A, %e %b, %H:%M:%S.%L","-%H:%M:%S.%L"],second:["%A, %e %b, %H:%M:%S","%A, %e %b, %H:%M:%S","-%H:%M:%S"],minute:["%A, %e %b, %H:%M","%A, %e %b, %H:%M","-%H:%M"],hour:["%A, %e %b, %H:%M","%A, %e %b, %H:%M","-%H:%M"],day:["%A, %e %b %Y","%A, %e %b","-%A, %e %b %Y"],week:["Week from %A, %e %b %Y","%A, %e %b","-%A, %e %b %Y"],month:["%B %Y","%B","-%B %Y"],year:["%Y","%Y","-%Y"]}},seriesSpecific:{line:{},spline:{},area:{},areaspline:{},arearange:{},column:{groupPixelWidth:10},columnrange:{groupPixelWidth:10},candlestick:{groupPixelWidth:10},ohlc:{groupPixelWidth:5},hlc:{groupPixelWidth:5},heikinashi:{groupPixelWidth:10}},units:[["millisecond",[1,2,5,10,20,25,50,100,200,500]],["second",[1,2,5,10,15,30]],["minute",[1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1]],["week",[1]],["month",[1,3,6]],["year",null]]}}),i(e,"Extensions/DataGrouping/DataGroupingAxisComposition.js",[e["Extensions/DataGrouping/DataGroupingDefaults.js"],e["Core/Globals.js"],e["Core/Utilities.js"]],function(t,e,i){let s;let{composed:o}=e,{addEvent:r,extend:a,merge:n,pick:l,pushUnique:h}=i;function d(t){let e=this,i=e.series;i.forEach(function(t){t.groupPixelWidth=void 0}),i.forEach(function(i){i.groupPixelWidth=e.getGroupPixelWidth&&e.getGroupPixelWidth(),i.groupPixelWidth&&(i.hasProcessed=!0),i.applyGrouping(!!t.hasExtremesChanged)})}function p(){let e=this.series,i=e.length,s=0,o=!1,r,a;for(;i--;)(a=e[i].options.dataGrouping)&&(s=Math.max(s,l(a.groupPixelWidth,t.common.groupPixelWidth)),r=(e[i].processedXData||e[i].data).length,(e[i].groupPixelWidth||r>this.chart.plotSizeX/s||r&&a.forced)&&(o=!0));return o?s:0}function c(){this.series.forEach(function(t){t.hasProcessed=!1})}function u(t,e){let i;if(e=l(e,!0),t||(t={forced:!1,units:null}),this instanceof s)for(i=this.series.length;i--;)this.series[i].update({dataGrouping:t},!1);else this.chart.options.series.forEach(function(e){e.dataGrouping="boolean"==typeof t?t:n(t,e.dataGrouping)});this.ordinal&&(this.ordinal.slope=void 0),e&&this.chart.redraw()}return{compose:function t(e){s=e,h(o,t)&&(r(e,"afterSetScale",c),r(e,"postProcessData",d),a(e.prototype,{applyGrouping:d,getGroupPixelWidth:p,setDataGrouping:u}))}}}),i(e,"Extensions/DataGrouping/DataGroupingSeriesComposition.js",[e["Extensions/DataGrouping/ApproximationRegistry.js"],e["Extensions/DataGrouping/DataGroupingDefaults.js"],e["Core/Axis/DateTimeAxis.js"],e["Core/Defaults.js"],e["Core/Globals.js"],e["Core/Series/SeriesRegistry.js"],e["Core/Utilities.js"]],function(t,e,i,s,o,r,a){let{composed:n}=o,{series:{prototype:l}}=r,{addEvent:h,defined:d,error:p,extend:c,isNumber:u,merge:g,pick:f,pushUnique:x}=a,m=l.generatePoints;function b(t){var s;let o,r;let a=this.chart,n=this.options,h=n.dataGrouping,c=!1!==this.allowDG&&h&&f(h.enabled,a.options.isStock),g=this.reserveSpace(),x=this.currentDataGrouping,m,b,v=!1;c&&!this.requireSorting&&(this.requireSorting=v=!0);let y=!1==!(this.isCartesian&&!this.isDirty&&!this.xAxis.isDirty&&!this.yAxis.isDirty&&!t)||!c;if(v&&(this.requireSorting=!1),y)return;this.destroyGroupedData();let M=h.groupAll?this.xData:this.processedXData,S=h.groupAll?this.yData:this.processedYData,A=a.plotSizeX,k=this.xAxis,C=k.options.ordinal,D=this.groupPixelWidth;if(D&&M&&M.length&&A){r=!0,this.isDirty=!0,this.points=null;let t=k.getExtremes(),n=t.min,c=t.max,f=C&&k.ordinal&&k.ordinal.getGroupIntervalFactor(n,c,this)||1,x=D*(c-n)/A*f,v=k.getTimeTicks(i.Additions.prototype.normalizeTimeTickInterval(x,h.units||e.units),Math.min(n,M[0]),Math.max(c,M[M.length-1]),k.options.startOfWeek,M,this.closestPointRange),y=l.groupData.apply(this,[M,S,v,h.approximation]),w=y.groupedXData,E=y.groupedYData,B=0;for(h&&h.smoothed&&w.length&&(h.firstAnchor="firstPoint",h.anchor="middle",h.lastAnchor="lastPoint",p(32,!1,a,{"dataGrouping.smoothed":"use dataGrouping.anchor"})),o=1;o<v.length;o++)v.info.segmentStarts&&-1!==v.info.segmentStarts.indexOf(o)||(B=Math.max(v[o]-v[o-1],B));(m=v.info).gapSize=B,this.closestPointRange=v.info.totalRange,this.groupMap=y.groupMap,this.currentDataGrouping=m,function(t,e,i){let s=t.options,o=s.dataGrouping,r=t.currentDataGrouping&&t.currentDataGrouping.gapSize;if(!(o&&t.xData&&r&&t.groupMap))return;let a=e.length-1,n=o.anchor,l=o.firstAnchor,h=o.lastAnchor,d=e.length-1,p=0;if(l&&t.xData[0]>=e[0]){let i;p++;let s=t.groupMap[0].start,o=t.groupMap[0].length;u(s)&&u(o)&&(i=s+(o-1)),e[0]=({start:e[0],middle:e[0]+.5*r,end:e[0]+r,firstPoint:t.xData[0],lastPoint:i&&t.xData[i]})[l]}if(a>0&&h&&r&&e[a]>=i-r){d--;let i=t.groupMap[t.groupMap.length-1].start;e[a]=({start:e[a],middle:e[a]+.5*r,end:e[a]+r,firstPoint:i&&t.xData[i],lastPoint:t.xData[t.xData.length-1]})[h]}if(n&&"start"!==n){let t=r*({middle:.5,end:1})[n];for(;d>=p;)e[d]+=t,d--}}(this,w,c),g&&(d((s=w)[0])&&u(k.min)&&u(k.dataMin)&&s[0]<k.min&&((!d(k.options.min)&&k.min<=k.dataMin||k.min===k.dataMin)&&(k.min=Math.min(s[0],k.min)),k.dataMin=Math.min(s[0],k.dataMin)),d(s[s.length-1])&&u(k.max)&&u(k.dataMax)&&s[s.length-1]>k.max&&((!d(k.options.max)&&u(k.dataMax)&&k.max>=k.dataMax||k.max===k.dataMax)&&(k.max=Math.max(s[s.length-1],k.max)),k.dataMax=Math.max(s[s.length-1],k.dataMax))),h.groupAll&&(this.allGroupedData=E,w=(b=this.cropData(w,E,k.min,k.max)).xData,E=b.yData,this.cropStart=b.start),this.processedXData=w,this.processedYData=E}else this.groupMap=null;this.hasGroupedData=r,this.preventGraphAnimation=(x&&x.totalRange)!==(m&&m.totalRange)}function v(){this.groupedData&&(this.groupedData.forEach(function(t,e){t&&(this.groupedData[e]=t.destroy?t.destroy():null)},this),this.groupedData.length=0,delete this.allGroupedData)}function y(){m.apply(this),this.destroyGroupedData(),this.groupedData=this.hasGroupedData?this.points:null}function M(){return this.is("arearange")?"range":this.is("ohlc")?"ohlc":this.is("hlc")?"hlc":this.is("column")||this.options.cumulative?"sum":"average"}function S(e,i,s,o){let r=this,a=r.data,n=r.options&&r.options.data,l=[],h=[],p=[],c=e.length,f=!!i,x=[],m=r.pointArrayMap,b=m&&m.length,v=["x"].concat(m||["y"]),y=this.options.dataGrouping&&this.options.dataGrouping.groupAll,M,S,A,k=0,C=0,D="function"==typeof o?o:o&&t[o]?t[o]:t[r.getDGApproximation&&r.getDGApproximation()||"average"];if(b){let t=m.length;for(;t--;)x.push([])}else x.push([]);let w=b||1;for(let t=0;t<=c;t++)if(!(e[t]<s[0])){for(;void 0!==s[k+1]&&e[t]>=s[k+1]||t===c;){M=s[k],r.dataGroupInfo={start:y?C:r.cropStart+C,length:x[0].length,groupStart:M},A=D.apply(r,x),r.pointClass&&!d(r.dataGroupInfo.options)&&(r.dataGroupInfo.options=g(r.pointClass.prototype.optionsToObject.call({series:r},r.options.data[r.cropStart+C])),v.forEach(function(t){delete r.dataGroupInfo.options[t]})),void 0!==A&&(l.push(M),h.push(A),p.push(r.dataGroupInfo)),C=t;for(let t=0;t<w;t++)x[t].length=0,x[t].hasNulls=!1;if(k+=1,t===c)break}if(t===c)break;if(m){let e;let i=r.options.dataGrouping&&r.options.dataGrouping.groupAll?t:r.cropStart+t,s=a&&a[i]||r.pointClass.prototype.applyOptions.apply({series:r},[n[i]]);for(let t=0;t<b;t++)u(e=s[m[t]])?x[t].push(e):null===e&&(x[t].hasNulls=!0)}else u(S=f?i[t]:null)?x[0].push(S):null===S&&(x[0].hasNulls=!0)}return{groupedXData:l,groupedYData:h,groupMap:p}}function A(t){let i=t.options,o=this.type,r=this.chart.options.plotOptions,a=this.useCommonDataGrouping&&e.common,n=e.seriesSpecific,l=s.defaultOptions.plotOptions[o].dataGrouping;if(r&&(n[o]||a)){let t=this.chart.rangeSelector;l||(l=g(e.common,n[o])),i.dataGrouping=g(a,l,r.series&&r.series.dataGrouping,r[o].dataGrouping,this.userOptions.dataGrouping,!i.isInternal&&t&&u(t.selected)&&t.buttonOptions[t.selected].dataGrouping)}}return{compose:function t(e){let i=e.prototype.pointClass;x(n,t)&&(h(i,"update",function(){if(this.dataGroup)return p(24,!1,this.series.chart),!1}),h(e,"afterSetOptions",A),h(e,"destroy",v),c(e.prototype,{applyGrouping:b,destroyGroupedData:v,generatePoints:y,getDGApproximation:M,groupData:S}))},groupData:S}}),i(e,"Extensions/DataGrouping/DataGrouping.js",[e["Extensions/DataGrouping/DataGroupingAxisComposition.js"],e["Extensions/DataGrouping/DataGroupingDefaults.js"],e["Extensions/DataGrouping/DataGroupingSeriesComposition.js"],e["Core/Templating.js"],e["Core/Globals.js"],e["Core/Utilities.js"]],function(t,e,i,s,o,r){let{format:a}=s,{composed:n}=o,{addEvent:l,extend:h,isNumber:d,pick:p,pushUnique:c}=r;function u(t){let i=this.chart,s=i.time,o=t.labelConfig,r=o.series,n=o.point,l=r.options,c=r.tooltipOptions,u=l.dataGrouping,g=r.xAxis,f=c.xDateFormat,x,m,b,v,y,M=c[t.isFooter?"footerFormat":"headerFormat"];if(g&&"datetime"===g.options.type&&u&&d(o.key)){m=r.currentDataGrouping,b=u.dateTimeLabelFormats||e.common.dateTimeLabelFormats,m?(v=b[m.unitName],1===m.count?f=v[0]:(f=v[1],x=v[2])):!f&&b&&g.dateTime&&(f=g.dateTime.getXDateFormat(o.x,c.dateTimeLabelFormats));let l=p(r.groupMap?.[n.index].groupStart,o.key),d=l+m?.totalRange-1;y=s.dateFormat(f,l),x&&(y+=s.dateFormat(x,d)),r.chart.styledMode&&(M=this.styledModeFormat(M)),t.text=a(M,{point:h(o.point,{key:y}),series:r},i),t.preventDefault()}}let g={compose:function e(s,o,r){t.compose(s),i.compose(o),r&&c(n,e)&&l(r,"headerFormatter",u)},groupData:i.groupData};return g}),i(e,"masters/modules/datagrouping.src.js",[e["Core/Globals.js"],e["Extensions/DataGrouping/ApproximationDefaults.js"],e["Extensions/DataGrouping/ApproximationRegistry.js"],e["Extensions/DataGrouping/DataGrouping.js"]],function(t,e,i,s){t.dataGrouping={approximationDefaults:e,approximations:i},s.compose(t.Axis,t.Series,t.Tooltip)}),i(e,"Extensions/Annotations/NavigationBindingsUtilities.js",[e["Core/Utilities.js"]],function(t){let{defined:e,isNumber:i,pick:s}=t,o={backgroundColor:"string",borderColor:"string",borderRadius:"string",color:"string",fill:"string",fontSize:"string",labels:"string",name:"string",stroke:"string",title:"string"};return{annotationsFieldsTypes:o,getAssignedAxis:function(t){return t.filter(t=>{let e=t.axis.getExtremes(),o=e.min,r=e.max,a=s(t.axis.minPointOffset,0);return i(o)&&i(r)&&t.value>=o-a&&t.value<=r+a&&!t.axis.options.isInternal})[0]},getFieldType:function(t,i){let s=o[t],r=typeof i;return e(s)&&(r=s),({string:"text",number:"number",boolean:"checkbox"})[r]}}}),i(e,"Extensions/MouseWheelZoom/MouseWheelZoom.js",[e["Core/Utilities.js"],e["Extensions/Annotations/NavigationBindingsUtilities.js"]],function(t,e){let i,s,o;let{addEvent:r,isObject:a,pick:n,defined:l,merge:h,isNumber:d}=t,{getAssignedAxis:p}=e,c=[],u={enabled:!0,sensitivity:1.1},g=t=>a(t)?h(u,t):h(u,{enabled:!l(t)||t}),f=(t,e,i,s)=>(i+s>t+e&&(s>e?(s=e,i=t):i=t+e-s),s>e&&(s=e),i<t&&(i=t),{rangeStart:i,rangeWidth:s}),x=function(t){let e=t.options;l(i)&&clearTimeout(i),l(s)||(s=e.startOnTick,o=e.endOnTick),(s||o)&&(e.startOnTick=!1,e.endOnTick=!1),i=setTimeout(()=>{if(l(s)&&l(o)){e.startOnTick=s,e.endOnTick=o;let{min:i,max:r}=t.getExtremes();t.forceRedraw=!0,t.setExtremes(i,r),s=o=void 0}},400)},m=function(t,e,i){if(!l(i))return .5;let s=(i-e.minPixelPadding-e.pos)/(e.len-2*e.minPixelPadding),o=e.isXAxis;return o&&!e.reversed!=!t.inverted||!o&&e.reversed?1-s:s},b=function(t,e,i,s,o){let r=e.isXAxis,a=!1;if(l(e.max)&&l(e.min)&&l(e.dataMax)&&l(e.dataMin)){r||x(e);let h=e.max-e.min,p=d(o)?o:e.min+h/2,c=m(t,e,i),u=h*s,g=p-u*c,b=n(e.options.max,e.dataMax)-n(e.options.min,e.dataMin),v=e.options.min?0:b*e.options.minPadding,y=e.options.max?0:b*e.options.maxPadding,M=n(e.options.min,e.dataMin)-v,S=b+y+v,A=f(M,S,g,u),k=A.rangeStart<n(e.options.min,M)||A.rangeStart===e.min&&A.rangeWidth>S&&A.rangeStart+A.rangeWidth<n(e.options.max,Number.MIN_VALUE)||A.rangeWidth===e.max-e.min;l(s)&&!k?(e.setExtremes(A.rangeStart,A.rangeStart+A.rangeWidth,!1),a=!0):e.setExtremes(void 0,void 0,!1)}return a},v=function(t,e,i,s,o,r,a){let l=n(a.type,t.zooming.type,""),h=/x/.test(l),d=/y/.test(l),p=i.toValue(o),c=s.toValue(r);if(t.inverted){let t=s.pos+s.len;p=i.toValue(r),c=s.toValue(o);let e=o;o=r,r=t-e+s.pos}let u=h&&b(t,i,o,e,p),g=d&&b(t,s,r,e,c),f=u||g;return f&&t.redraw(!1),f};function y(){let t=this,e=g(t.zooming.mouseWheel);e.enabled&&r(this.container,"wheel",i=>{i=this.pointer.normalize(i);let s=!t.pointer.inClass(i.target,"highcharts-no-mousewheel");if(t.isInsidePlot(i.chartX-t.plotLeft,i.chartY-t.plotTop)&&s){let s=e.sensitivity||1.1,o=i.detail||(i.deltaY||0)/120,r=p(this.pointer.getCoordinates(i).xAxis),a=p(this.pointer.getCoordinates(i).yAxis),n=v(t,Math.pow(s,o),r?r.axis:t.xAxis[0],a?a.axis:t.yAxis[0],i.chartX,i.chartY,e);n&&i.preventDefault&&i.preventDefault()}})}return{compose:function(t){-1===c.indexOf(t)&&(c.push(t),r(t,"afterGetContainer",y))}}}),i(e,"masters/modules/mouse-wheel-zoom.src.js",[e["Core/Globals.js"],e["Extensions/MouseWheelZoom/MouseWheelZoom.js"]],function(t,e){e.compose(t.Chart)}),i(e,"Series/DataModifyComposition.js",[e["Core/Axis/Axis.js"],e["Core/Globals.js"],e["Core/Series/Point.js"],e["Core/Series/Series.js"],e["Core/Utilities.js"]],function(t,e,i,s,o){var r;let{composed:a}=e,{tooltipFormatter:n}=i.prototype,{addEvent:l,arrayMax:h,arrayMin:d,correctFloat:p,defined:c,isArray:u,isNumber:g,isString:f,pick:x,pushUnique:m}=o;return function(t){function e(t,e,i){!this.isXAxis&&(this.series.forEach(function(i){"compare"===t&&"boolean"!=typeof e?i.setCompare(e,!1):"cumulative"!==t||f(e)||i.setCumulative(e,!1)}),x(i,!0)&&this.chart.redraw())}function i(t){let e=this,{numberFormatter:i}=e.series.chart,s=function(s){t=t.replace("{point."+s+"}",(e[s]>0&&"change"===s?"+":"")+i(e[s],x(e.series.tooltipOptions.changeDecimals,2)))};return c(e.change)&&s("change"),c(e.cumulativeSum)&&s("cumulativeSum"),n.apply(this,[t])}function s(){let t;let e=this.options.compare;("percent"===e||"value"===e||this.options.cumulative)&&(t=new S(this),"percent"===e||"value"===e?t.initCompare(e):t.initCumulative()),this.dataModify=t}function o(t){let e=t.dataExtremes,i=e.activeYData;if(this.dataModify&&e){let t;this.options.compare?t=[this.dataModify.modifyValue(e.dataMin),this.dataModify.modifyValue(e.dataMax)]:this.options.cumulative&&u(i)&&i.length>=2&&(t=S.getCumulativeExtremes(i)),t&&(e.dataMin=d(t),e.dataMax=h(t))}}function r(t,e){this.options.compare=this.userOptions.compare=t,this.update({},x(e,!0)),this.dataModify&&("value"===t||"percent"===t)?this.dataModify.initCompare(t):this.points.forEach(t=>{delete t.change})}function b(){if(this.xAxis&&this.processedYData&&this.dataModify){let t=this.processedXData,e=this.processedYData,i=e.length,s=!0===this.options.compareStart?0:1,o=-1,r;for(this.pointArrayMap&&(o=this.pointArrayMap.indexOf(this.options.pointValKey||this.pointValKey||"y")),r=0;r<i-s;r++){let i=e[r]&&o>-1?e[r][o]:e[r];if(g(i)&&0!==i&&t[r+s]>=(this.xAxis.min||0)){this.dataModify.compareValue=i;break}}}}function v(t,e){this.setModifier("compare",t,e)}function y(t,e){t=x(t,!1),this.options.cumulative=this.userOptions.cumulative=t,this.update({},x(e,!0)),this.dataModify?this.dataModify.initCumulative():this.points.forEach(t=>{delete t.cumulativeSum})}function M(t,e){this.setModifier("cumulative",t,e)}t.compose=function t(n,h,d){if(m(a,t)){let t=h.prototype,a=d.prototype,p=n.prototype;p.setCompare=r,p.setCumulative=y,l(n,"afterInit",s),l(n,"afterGetExtremes",o),l(n,"afterProcessData",b),t.setCompare=v,t.setModifier=e,t.setCumulative=M,a.tooltipFormatter=i}return n};class S{constructor(t){this.series=t}modifyValue(){return 0}static getCumulativeExtremes(t){let e=1/0,i=-1/0;return t.reduce((t,s)=>{let o=t+s;return e=Math.min(e,o,t),i=Math.max(i,o,t),o}),[e,i]}initCompare(t){this.modifyValue=function(e,i){null===e&&(e=0);let s=this.compareValue;if(void 0!==e&&void 0!==s){if("value"===t)e-=s;else{let t=this.series.options.compareBase;e=100*(e/s)-(100===t?0:100)}if(void 0!==i){let t=this.series.points[i];t&&(t.change=e)}return e}return 0}}initCumulative(){this.modifyValue=function(t,e){if(null===t&&(t=0),void 0!==t&&void 0!==e){let i=e>0?this.series.points[e-1]:null;i&&i.cumulativeSum&&(t=p(i.cumulativeSum+t));let s=this.series.points[e];return s&&(s.cumulativeSum=t),t}return 0}}}t.Additions=S}(r||(r={})),r}),i(e,"Core/Axis/NavigatorAxisComposition.js",[e["Core/Globals.js"],e["Core/Utilities.js"]],function(t,e){let{composed:i,isTouchDevice:s}=t,{addEvent:o,correctFloat:r,defined:a,isNumber:n,pick:l,pushUnique:h}=e;function d(){this.navigatorAxis||(this.navigatorAxis=new c(this))}function p(t){let e=this.chart,i=e.options,o=i.navigator,r=this.navigatorAxis,n=e.zooming.pinchType,l=i.rangeSelector,h=e.zooming.type;if(this.isXAxis&&(o&&o.enabled||l&&l.enabled)){if("y"===h)t.zoomed=!1;else if((!s&&"xy"===h||s&&"xy"===n)&&this.options.range){let e=r.previousZoom;a(t.newMin)?r.previousZoom=[this.min,this.max]:e&&(t.newMin=e[0],t.newMax=e[1],r.previousZoom=void 0)}}void 0!==t.zoomed&&t.preventDefault()}class c{static compose(t){h(i,this.compose)&&(t.keepProps.push("navigatorAxis"),o(t,"init",d),o(t,"zoom",p))}constructor(t){this.axis=t}destroy(){this.axis=void 0}toFixedRange(t,e,i,s){let o=this.axis,h=o.chart,d=l(i,o.translate(t,!0,!o.horiz)),p=l(s,o.translate(e,!0,!o.horiz)),c=h&&h.fixedRange,u=(o.pointRange||0)/2;return a(i)||(d=r(d+u)),a(s)||(p=r(p-u)),c&&o.dataMin&&o.dataMax&&(p>=o.dataMax&&(d=r(o.dataMax-c)),d<=o.dataMin&&(p=r(o.dataMin+c))),n(d)&&n(p)||(d=p=void 0),{min:d,max:p}}}return c}),i(e,"Stock/Navigator/NavigatorDefaults.js",[e["Core/Color/Color.js"],e["Core/Series/SeriesRegistry.js"]],function(t,e){let{parse:i}=t,{seriesTypes:s}=e,o={height:40,margin:25,maskInside:!0,handles:{width:7,height:15,symbols:["navigator-handle","navigator-handle"],enabled:!0,lineWidth:1,backgroundColor:"#f2f2f2",borderColor:"#999999"},maskFill:i("#667aff").setOpacity(.3).get(),outlineColor:"#999999",outlineWidth:1,series:{type:void 0===s.areaspline?"line":"areaspline",fillOpacity:.05,lineWidth:1,compare:null,sonification:{enabled:!1},dataGrouping:{approximation:"average",enabled:!0,groupPixelWidth:2,firstAnchor:"firstPoint",anchor:"middle",lastAnchor:"lastPoint",units:[["millisecond",[1,2,5,10,20,25,50,100,200,500]],["second",[1,2,5,10,15,30]],["minute",[1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1,2,3,4]],["week",[1,2,3]],["month",[1,3,6]],["year",null]]},dataLabels:{enabled:!1,zIndex:2},id:"highcharts-navigator-series",className:"highcharts-navigator-series",lineColor:null,marker:{enabled:!1},threshold:null},xAxis:{overscroll:0,className:"highcharts-navigator-xaxis",tickLength:0,lineWidth:0,gridLineColor:"#e6e6e6",gridLineWidth:1,tickPixelInterval:200,labels:{align:"left",style:{color:"#000000",fontSize:"0.7em",opacity:.6,textOutline:"2px contrast"},x:3,y:-4},crosshair:!1},yAxis:{className:"highcharts-navigator-yaxis",gridLineWidth:0,startOnTick:!1,endOnTick:!1,minPadding:.1,maxPadding:.1,labels:{enabled:!1},crosshair:!1,title:{text:null},tickLength:0,tickWidth:0}};return o}),i(e,"Stock/Navigator/NavigatorSymbols.js",[],function(){return{"navigator-handle":function(t,e,i,s,o={}){let r=o.width?o.width/2:i,a=Math.round(r/3)+.5;return[["M",-r-1,.5],["L",r,.5],["L",r,(s=o.height||s)+.5],["L",-r-1,s+.5],["L",-r-1,.5],["M",-a,4],["L",-a,s-3],["M",a-1,4],["L",a-1,s-3]]}}}),i(e,"Stock/Navigator/NavigatorComposition.js",[e["Core/Defaults.js"],e["Core/Globals.js"],e["Core/Axis/NavigatorAxisComposition.js"],e["Stock/Navigator/NavigatorDefaults.js"],e["Stock/Navigator/NavigatorSymbols.js"],e["Core/Renderer/RendererRegistry.js"],e["Core/Utilities.js"]],function(t,e,i,s,o,r,a){let n;let{defaultOptions:l,setOptions:h}=t,{composed:d,isTouchDevice:p}=e,{getRendererType:c}=r,{addEvent:u,extend:g,merge:f,pick:x,pushUnique:m}=a;function b(){this.navigator&&this.navigator.setBaseSeries(null,!1)}function v(){let t,e,i;let s=this.legend,o=this.navigator;if(o){t=s&&s.options,e=o.xAxis,i=o.yAxis;let{scrollbarHeight:r,scrollButtonSize:a}=o;this.inverted?(o.left=o.opposite?this.chartWidth-r-o.height:this.spacing[3]+r,o.top=this.plotTop+a):(o.left=x(e.left,this.plotLeft+a),o.top=o.navigatorOptions.top||this.chartHeight-o.height-r-(this.scrollbar?.options.margin||0)-this.spacing[2]-(this.rangeSelector&&this.extraBottomMargin?this.rangeSelector.getHeight():0)-(t&&"bottom"===t.verticalAlign&&"proximate"!==t.layout&&t.enabled&&!t.floating?s.legendHeight+x(t.margin,10):0)-(this.titleOffset?this.titleOffset[2]:0)),e&&i&&(this.inverted?e.options.left=i.options.left=o.left:e.options.top=i.options.top=o.top,e.setAxisSize(),i.setAxisSize())}}function y(t){!this.navigator&&!this.scroller&&(this.options.navigator.enabled||this.options.scrollbar.enabled)&&(this.scroller=this.navigator=new n(this),x(t.redraw,!0)&&this.redraw(t.animation))}function M(){let t=this.options;(t.navigator.enabled||t.scrollbar.enabled)&&(this.scroller=this.navigator=new n(this))}function S(){let t=this.options,e=t.navigator,i=t.rangeSelector;if((e&&e.enabled||i&&i.enabled)&&(!p&&"x"===this.zooming.type||p&&"x"===this.zooming.pinchType))return!1}function A(t){let e=t.navigator;if(e&&t.xAxis[0]){let i=t.xAxis[0].getExtremes();e.render(i.min,i.max)}}function k(t){let e=t.options.navigator||{},i=t.options.scrollbar||{};!this.navigator&&!this.scroller&&(e.enabled||i.enabled)&&(f(!0,this.options.navigator,e),f(!0,this.options.scrollbar,i),delete t.options.navigator,delete t.options.scrollbar)}function C(){this.chart.navigator&&!this.options.isInternal&&this.chart.navigator.setBaseSeries(null,!1)}return{compose:function t(e,r,a,h){if(i.compose(e),n=a,m(d,t)){let t=r.prototype;t.callbacks.push(A),u(r,"afterAddSeries",b),u(r,"afterSetChartSize",v),u(r,"afterUpdate",y),u(r,"beforeRender",M),u(r,"beforeShowResetZoom",S),u(r,"update",k),u(h,"afterUpdate",C),g(c().prototype.symbols,o),g(l,{navigator:s})}}}}),i(e,"Core/Axis/ScrollbarAxis.js",[e["Core/Globals.js"],e["Core/Utilities.js"]],function(t,e){var i;let{composed:s}=t,{addEvent:o,defined:r,pick:a,pushUnique:n}=e;return function(t){let e;function i(t){let e=a(t.options&&t.options.min,t.min),i=a(t.options&&t.options.max,t.max);return{axisMin:e,axisMax:i,scrollMin:r(t.dataMin)?Math.min(e,t.min,t.dataMin,a(t.threshold,1/0)):e,scrollMax:r(t.dataMax)?Math.max(i,t.max,t.dataMax,a(t.threshold,-1/0)):i}}function l(){let t=this.scrollbar,e=t&&!t.options.opposite,i=this.horiz?2:e?3:1;t&&(this.chart.scrollbarsOffsets=[0,0],this.chart.axisOffset[i]+=t.size+(t.options.margin||0))}function h(){let t=this;t.options&&t.options.scrollbar&&t.options.scrollbar.enabled&&(t.options.scrollbar.vertical=!t.horiz,t.options.startOnTick=t.options.endOnTick=!1,t.scrollbar=new e(t.chart.renderer,t.options.scrollbar,t.chart),o(t.scrollbar,"changed",function(e){let s,o;let{axisMin:a,axisMax:n,scrollMin:l,scrollMax:h}=i(t),d=h-l;if(r(a)&&r(n)){if(t.horiz&&!t.reversed||!t.horiz&&t.reversed?(s=l+d*this.to,o=l+d*this.from):(s=l+d*(1-this.from),o=l+d*(1-this.to)),this.shouldUpdateExtremes(e.DOMType)){let i="mousemove"!==e.DOMType&&"touchmove"!==e.DOMType&&void 0;t.setExtremes(o,s,!0,i,e)}else this.setRange(this.from,this.to)}}))}function d(){let t,e,s;let{scrollMin:o,scrollMax:a}=i(this),n=this.scrollbar,l=this.axisTitleMargin+(this.titleOffset||0),h=this.chart.scrollbarsOffsets,d=this.options.margin||0;if(n&&h){if(this.horiz)this.opposite||(h[1]+=l),n.position(this.left,this.top+this.height+2+h[1]-(this.opposite?d:0),this.width,this.height),this.opposite||(h[1]+=d),t=1;else{let e;this.opposite&&(h[0]+=l),e=n.options.opposite?this.left+this.width+2+h[0]-(this.opposite?0:d):this.opposite?0:d,n.position(e,this.top,this.width,this.height),this.opposite&&(h[0]+=d),t=0}h[t]+=n.size+(n.options.margin||0),isNaN(o)||isNaN(a)||!r(this.min)||!r(this.max)||this.min===this.max?n.setRange(0,1):(e=(this.min-o)/(a-o),s=(this.max-o)/(a-o),this.horiz&&!this.reversed||!this.horiz&&this.reversed?n.setRange(e,s):n.setRange(1-s,1-e))}}t.compose=function t(i,r){n(s,t)&&(e=r,o(i,"afterGetOffset",l),o(i,"afterInit",h),o(i,"afterRender",d))}}(i||(i={})),i}),i(e,"Stock/Scrollbar/ScrollbarDefaults.js",[e["Core/Globals.js"]],function(t){let{isTouchDevice:e}=t;return{height:10,barBorderRadius:5,buttonBorderRadius:0,buttonsEnabled:!1,liveRedraw:void 0,margin:void 0,minWidth:6,opposite:!0,step:.2,zIndex:3,barBackgroundColor:"#cccccc",barBorderWidth:0,barBorderColor:"#cccccc",buttonArrowColor:"#333333",buttonBackgroundColor:"#e6e6e6",buttonBorderColor:"#cccccc",buttonBorderWidth:1,rifleColor:"none",trackBackgroundColor:"rgba(255, 255, 255, 0.001)",trackBorderColor:"#cccccc",trackBorderRadius:5,trackBorderWidth:1}}),i(e,"Stock/Scrollbar/Scrollbar.js",[e["Core/Defaults.js"],e["Core/Globals.js"],e["Core/Axis/ScrollbarAxis.js"],e["Stock/Scrollbar/ScrollbarDefaults.js"],e["Core/Utilities.js"]],function(t,e,i,s,o){let{defaultOptions:r}=t,{addEvent:a,correctFloat:n,defined:l,destroyObjectProperties:h,fireEvent:d,merge:p,pick:c,removeEvent:u}=o;class g{static compose(t){i.compose(t,g)}static swapXY(t,e){return e&&t.forEach(t=>{let e;let i=t.length;for(let s=0;s<i;s+=2)"number"==typeof(e=t[s+1])&&(t[s+1]=t[s+2],t[s+2]=e)}),t}constructor(t,e,i){this._events=[],this.chartX=0,this.chartY=0,this.from=0,this.scrollbarButtons=[],this.scrollbarLeft=0,this.scrollbarStrokeWidth=1,this.scrollbarTop=0,this.size=0,this.to=0,this.trackBorderWidth=1,this.x=0,this.y=0,this.init(t,e,i)}addEvents(){let t=this.options.inverted?[1,0]:[0,1],i=this.scrollbarButtons,s=this.scrollbarGroup.element,o=this.track.element,r=this.mouseDownHandler.bind(this),n=this.mouseMoveHandler.bind(this),l=this.mouseUpHandler.bind(this),h=[[i[t[0]].element,"click",this.buttonToMinClick.bind(this)],[i[t[1]].element,"click",this.buttonToMaxClick.bind(this)],[o,"click",this.trackClick.bind(this)],[s,"mousedown",r],[s.ownerDocument,"mousemove",n],[s.ownerDocument,"mouseup",l]];e.hasTouch&&h.push([s,"touchstart",r],[s.ownerDocument,"touchmove",n],[s.ownerDocument,"touchend",l]),h.forEach(function(t){a.apply(null,t)}),this._events=h}buttonToMaxClick(t){let e=(this.to-this.from)*c(this.options.step,.2);this.updatePosition(this.from+e,this.to+e),d(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMEvent:t})}buttonToMinClick(t){let e=n(this.to-this.from)*c(this.options.step,.2);this.updatePosition(n(this.from-e),n(this.to-e)),d(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMEvent:t})}cursorToScrollbarPosition(t){let e=this.options,i=e.minWidth>this.calculatedWidth?e.minWidth:0;return{chartX:(t.chartX-this.x-this.xOffset)/(this.barWidth-i),chartY:(t.chartY-this.y-this.yOffset)/(this.barWidth-i)}}destroy(){let t=this,e=t.chart.scroller;t.removeEvents(),["track","scrollbarRifles","scrollbar","scrollbarGroup","group"].forEach(function(e){t[e]&&t[e].destroy&&(t[e]=t[e].destroy())}),e&&t===e.scrollbar&&(e.scrollbar=null,h(e.scrollbarButtons))}drawScrollbarButton(t){let e=this.renderer,i=this.scrollbarButtons,s=this.options,o=this.size,r=e.g().add(this.group);if(i.push(r),s.buttonsEnabled){let a=e.rect().addClass("highcharts-scrollbar-button").add(r);this.chart.styledMode||a.attr({stroke:s.buttonBorderColor,"stroke-width":s.buttonBorderWidth,fill:s.buttonBackgroundColor}),a.attr(a.crisp({x:-.5,y:-.5,width:o+1,height:o+1,r:s.buttonBorderRadius},a.strokeWidth()));let n=e.path(g.swapXY([["M",o/2+(t?-1:1),o/2-3],["L",o/2+(t?-1:1),o/2+3],["L",o/2+(t?2:-2),o/2]],s.vertical)).addClass("highcharts-scrollbar-arrow").add(i[t]);this.chart.styledMode||n.attr({fill:s.buttonArrowColor})}}init(t,e,i){this.scrollbarButtons=[],this.renderer=t,this.userOptions=e,this.options=p(s,r.scrollbar,e),this.options.margin=c(this.options.margin,10),this.chart=i,this.size=c(this.options.size,this.options.height),e.enabled&&(this.render(),this.addEvents())}mouseDownHandler(t){let e=this.chart.pointer.normalize(t),i=this.cursorToScrollbarPosition(e);this.chartX=i.chartX,this.chartY=i.chartY,this.initPositions=[this.from,this.to],this.grabbedCenter=!0}mouseMoveHandler(t){let e;let i=this.chart.pointer.normalize(t),s=this.options,o=s.vertical?"chartY":"chartX",r=this.initPositions||[];this.grabbedCenter&&(!t.touches||0!==t.touches[0][o])&&(e=this.cursorToScrollbarPosition(i)[o]-this[o],this.hasDragged=!0,this.updatePosition(r[0]+e,r[1]+e),this.hasDragged&&d(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMType:t.type,DOMEvent:t}))}mouseUpHandler(t){this.hasDragged&&d(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMType:t.type,DOMEvent:t}),this.grabbedCenter=this.hasDragged=this.chartX=this.chartY=null}position(t,e,i,s){let o=this.options,{buttonsEnabled:r,margin:a=0,vertical:n}=o,l=this.rendered?"animate":"attr",h=s,d=0;this.group.show(),this.x=t,this.y=e+this.trackBorderWidth,this.width=i,this.height=s,this.xOffset=h,this.yOffset=d,n?(this.width=this.yOffset=i=d=this.size,this.xOffset=h=0,this.yOffset=d=r?this.size:0,this.barWidth=s-(r?2*i:0),this.x=t+=a):(this.height=s=this.size,this.xOffset=h=r?this.size:0,this.barWidth=i-(r?2*s:0),this.y=this.y+a),this.group[l]({translateX:t,translateY:this.y}),this.track[l]({width:i,height:s}),this.scrollbarButtons[1][l]({translateX:n?0:i-h,translateY:n?s-d:0})}removeEvents(){this._events.forEach(function(t){u.apply(null,t)}),this._events.length=0}render(){let t=this.renderer,e=this.options,i=this.size,s=this.chart.styledMode,o=t.g("scrollbar").attr({zIndex:e.zIndex}).hide().add();this.group=o,this.track=t.rect().addClass("highcharts-scrollbar-track").attr({r:e.trackBorderRadius||0,height:i,width:i}).add(o),s||this.track.attr({fill:e.trackBackgroundColor,stroke:e.trackBorderColor,"stroke-width":e.trackBorderWidth});let r=this.trackBorderWidth=this.track.strokeWidth();this.track.attr({x:-r%2/2,y:-r%2/2}),this.scrollbarGroup=t.g().add(o),this.scrollbar=t.rect().addClass("highcharts-scrollbar-thumb").attr({height:i-r,width:i-r,r:e.barBorderRadius||0}).add(this.scrollbarGroup),this.scrollbarRifles=t.path(g.swapXY([["M",-3,i/4],["L",-3,2*i/3],["M",0,i/4],["L",0,2*i/3],["M",3,i/4],["L",3,2*i/3]],e.vertical)).addClass("highcharts-scrollbar-rifles").add(this.scrollbarGroup),s||(this.scrollbar.attr({fill:e.barBackgroundColor,stroke:e.barBorderColor,"stroke-width":e.barBorderWidth}),this.scrollbarRifles.attr({stroke:e.rifleColor,"stroke-width":1})),this.scrollbarStrokeWidth=this.scrollbar.strokeWidth(),this.scrollbarGroup.translate(-this.scrollbarStrokeWidth%2/2,-this.scrollbarStrokeWidth%2/2),this.drawScrollbarButton(0),this.drawScrollbarButton(1)}setRange(t,e){let i,s;let o=this.options,r=o.vertical,a=o.minWidth,h=this.barWidth,d=!this.rendered||this.hasDragged||this.chart.navigator&&this.chart.navigator.hasDragged?"attr":"animate";if(!l(h))return;let p=h*Math.min(e,1);i=Math.ceil(h*(t=Math.max(t,0))),this.calculatedWidth=s=n(p-i),s<a&&(i=(h-a+s)*t,s=a);let c=Math.floor(i+this.xOffset+this.yOffset),u=s/2-.5;this.from=t,this.to=e,r?(this.scrollbarGroup[d]({translateY:c}),this.scrollbar[d]({height:s}),this.scrollbarRifles[d]({translateY:u}),this.scrollbarTop=c,this.scrollbarLeft=0):(this.scrollbarGroup[d]({translateX:c}),this.scrollbar[d]({width:s}),this.scrollbarRifles[d]({translateX:u}),this.scrollbarLeft=c,this.scrollbarTop=0),s<=12?this.scrollbarRifles.hide():this.scrollbarRifles.show(),!1===o.showFull&&(t<=0&&e>=1?this.group.hide():this.group.show()),this.rendered=!0}shouldUpdateExtremes(t){return c(this.options.liveRedraw,e.svg&&!e.isTouchDevice&&!this.chart.boosted)||"mouseup"===t||"touchend"===t||!l(t)}trackClick(t){let e=this.chart.pointer.normalize(t),i=this.to-this.from,s=this.y+this.scrollbarTop,o=this.x+this.scrollbarLeft;this.options.vertical&&e.chartY>s||!this.options.vertical&&e.chartX>o?this.updatePosition(this.from+i,this.to+i):this.updatePosition(this.from-i,this.to-i),d(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMEvent:t})}update(t){this.destroy(),this.init(this.chart.renderer,p(!0,this.options,t),this.chart)}updatePosition(t,e){e>1&&(t=n(1-n(e-t)),e=1),t<0&&(e=n(e-t),t=0),this.from=t,this.to=e}}return g.defaultOptions=s,r.scrollbar=p(!0,g.defaultOptions,r.scrollbar),g}),i(e,"Stock/Navigator/Navigator.js",[e["Core/Axis/Axis.js"],e["Core/Defaults.js"],e["Core/Globals.js"],e["Core/Axis/NavigatorAxisComposition.js"],e["Stock/Navigator/NavigatorComposition.js"],e["Stock/Scrollbar/Scrollbar.js"],e["Core/Utilities.js"]],function(t,e,i,s,o,r,a){let{defaultOptions:n}=e,{hasTouch:l,isTouchDevice:h}=i,{addEvent:d,clamp:p,correctFloat:c,defined:u,destroyObjectProperties:g,erase:f,extend:x,find:m,fireEvent:b,isArray:v,isNumber:y,merge:M,pick:S,removeEvent:A,splat:k}=a;function C(t,...e){let i=[].filter.call(e,y);if(i.length)return Math[t].apply(0,i)}class D{static compose(t,e,i){o.compose(t,e,D,i)}constructor(t){this.scrollbarHeight=0,this.init(t)}drawHandle(t,e,i,s){let o=this.navigatorOptions.handles.height;this.handles[e][s](i?{translateX:Math.round(this.left+this.height/2),translateY:Math.round(this.top+parseInt(t,10)+.5-o)}:{translateX:Math.round(this.left+parseInt(t,10)),translateY:Math.round(this.top+this.height/2-o/2-1)})}drawOutline(t,e,i,s){let o=this.navigatorOptions.maskInside,r=this.outline.strokeWidth(),a=r/2,n=r%2/2,l=this.scrollButtonSize,h=this.size,d=this.top,p=this.height,c=d-a,u=d+p,g=this.left,f,x;i?(f=d+e+n,e=d+t+n,x=[["M",g+p,d-l-n],["L",g+p,f],["L",g,f],["M",g,e],["L",g+p,e],["L",g+p,d+h+l]],o&&x.push(["M",g+p,f-a],["L",g+p,e+a])):(g-=l,t+=g+l-n,e+=g+l-n,x=[["M",g,c],["L",t,c],["L",t,u],["M",e,u],["L",e,c],["L",g+h+2*l,d+a]],o&&x.push(["M",t-a,c],["L",e+a,c])),this.outline[s]({d:x})}drawMasks(t,e,i,s){let o,r,a,n;let l=this.left,h=this.top,d=this.height;i?(a=[l,l,l],n=[h,h+t,h+e],r=[d,d,d],o=[t,e-t,this.size-e]):(a=[l,l+t,l+e],n=[h,h,h],r=[t,e-t,this.size-e],o=[d,d,d]),this.shades.forEach((t,e)=>{t[s]({x:a[e],y:n[e],width:r[e],height:o[e]})})}renderElements(){let t=this,e=t.navigatorOptions,i=e.maskInside,s=t.chart,o=s.inverted,r=s.renderer,a={cursor:o?"ns-resize":"ew-resize"},n=t.navigatorGroup=r.g("navigator").attr({zIndex:8,visibility:"hidden"}).add();if([!i,i,!i].forEach((i,o)=>{let l=r.rect().addClass("highcharts-navigator-mask"+(1===o?"-inside":"-outside")).add(n);s.styledMode||(l.attr({fill:i?e.maskFill:"rgba(0,0,0,0)"}),1===o&&l.css(a)),t.shades[o]=l}),t.outline=r.path().addClass("highcharts-navigator-outline").add(n),s.styledMode||t.outline.attr({"stroke-width":e.outlineWidth,stroke:e.outlineColor}),e.handles&&e.handles.enabled){let i=e.handles,{height:o,width:l}=i;[0,1].forEach(e=>{t.handles[e]=r.symbol(i.symbols[e],-l/2-1,0,l,o,i),s.inverted&&t.handles[e].attr({rotation:90,rotationOriginX:Math.floor(-l/2),rotationOriginY:(o+l)/2}),t.handles[e].attr({zIndex:7-e}).addClass("highcharts-navigator-handle highcharts-navigator-handle-"+["left","right"][e]).add(n),s.styledMode||t.handles[e].attr({fill:i.backgroundColor,stroke:i.borderColor,"stroke-width":i.lineWidth}).css(a)})}}update(t){(this.series||[]).forEach(t=>{t.baseSeries&&delete t.baseSeries.navigatorSeries}),this.destroy();let e=this.chart.options;M(!0,e.navigator,t),this.init(this.chart)}render(t,e,i,s){let o=this.chart,r=this.xAxis,a=r.pointRange||0,n=r.navigatorAxis.fake?o.xAxis[0]:r,l=this.navigatorEnabled,h=this.rendered,d=o.inverted,g=o.xAxis[0].minRange,f=o.xAxis[0].options.maxRange,x=this.scrollButtonSize,m,v,M,A=this.scrollbarHeight,k,C;if(this.hasDragged&&!u(i))return;if(t=c(t-a/2),e=c(e+a/2),!y(t)||!y(e)){if(!h)return;i=0,s=S(r.width,n.width)}this.left=S(r.left,o.plotLeft+x+(d?o.plotWidth:0));let D=this.size=k=S(r.len,(d?o.plotHeight:o.plotWidth)-2*x);m=d?A:k+2*x,i=S(i,r.toPixels(t,!0)),s=S(s,r.toPixels(e,!0)),y(i)&&Math.abs(i)!==1/0||(i=0,s=m);let w=r.toValue(i,!0),E=r.toValue(s,!0),B=Math.abs(c(E-w));B<g?this.grabbedLeft?i=r.toPixels(E-g-a,!0):this.grabbedRight&&(s=r.toPixels(w+g+a,!0)):u(f)&&c(B-a)>f&&(this.grabbedLeft?i=r.toPixels(E-f-a,!0):this.grabbedRight&&(s=r.toPixels(w+f+a,!0))),this.zoomedMax=p(Math.max(i,s),0,D),this.zoomedMin=p(this.fixedWidth?this.zoomedMax-this.fixedWidth:Math.min(i,s),0,D),this.range=this.zoomedMax-this.zoomedMin,D=Math.round(this.zoomedMax);let O=Math.round(this.zoomedMin);l&&(this.navigatorGroup.attr({visibility:"inherit"}),C=h&&!this.hasDragged?"animate":"attr",this.drawMasks(O,D,d,C),this.drawOutline(O,D,d,C),this.navigatorOptions.handles.enabled&&(this.drawHandle(O,0,d,C),this.drawHandle(D,1,d,C))),this.scrollbar&&(d?(M=this.top-x,v=this.left-A+(l||!n.opposite?0:(n.titleOffset||0)+n.axisTitleMargin),A=k+2*x):(M=this.top+(l?this.height:-A),v=this.left-x),this.scrollbar.position(v,M,m,A),this.scrollbar.setRange(this.zoomedMin/(k||1),this.zoomedMax/(k||1))),this.rendered=!0,b(this,"afterRender")}addMouseEvents(){let t=this,e=t.chart,i=e.container,s=[],o,r;t.mouseMoveHandler=o=function(e){t.onMouseMove(e)},t.mouseUpHandler=r=function(e){t.onMouseUp(e)},(s=t.getPartsEvents("mousedown")).push(d(e.renderTo,"mousemove",o),d(i.ownerDocument,"mouseup",r)),l&&(s.push(d(e.renderTo,"touchmove",o),d(i.ownerDocument,"touchend",r)),s.concat(t.getPartsEvents("touchstart"))),t.eventsToUnbind=s,t.series&&t.series[0]&&s.push(d(t.series[0].xAxis,"foundExtremes",function(){e.navigator.modifyNavigatorAxisExtremes()}))}getPartsEvents(t){let e=this,i=[];return["shades","handles"].forEach(function(s){e[s].forEach(function(o,r){i.push(d(o.element,t,function(t){e[s+"Mousedown"](t,r)}))})}),i}shadesMousedown(t,e){t=this.chart.pointer.normalize(t);let i=this.chart,s=this.xAxis,o=this.zoomedMin,r=this.size,a=this.range,n=this.left,l=t.chartX,h,d,p,c;i.inverted&&(l=t.chartY,n=this.top),1===e?(this.grabbedCenter=l,this.fixedWidth=a,this.dragOffset=l-o):(c=l-n-a/2,0===e?c=Math.max(0,c):2===e&&c+a>=r&&(c=r-a,this.reversedExtremes?(c-=a,d=this.getUnionExtremes().dataMin):h=this.getUnionExtremes().dataMax),c!==o&&(this.fixedWidth=a,u((p=s.navigatorAxis.toFixedRange(c,c+a,d,h)).min)&&i.xAxis[0].setExtremes(Math.min(p.min,p.max),Math.max(p.min,p.max),!0,null,{trigger:"navigator"})))}handlesMousedown(t,e){t=this.chart.pointer.normalize(t);let i=this.chart,s=i.xAxis[0],o=this.reversedExtremes;0===e?(this.grabbedLeft=!0,this.otherHandlePos=this.zoomedMax,this.fixedExtreme=o?s.min:s.max):(this.grabbedRight=!0,this.otherHandlePos=this.zoomedMin,this.fixedExtreme=o?s.max:s.min),i.fixedRange=null}onMouseMove(t){let e=this,i=e.chart,s=e.navigatorSize,o=e.range,r=e.dragOffset,a=i.inverted,n=e.left,l;(!t.touches||0!==t.touches[0].pageX)&&(l=(t=i.pointer.normalize(t)).chartX,a&&(n=e.top,l=t.chartY),e.grabbedLeft?(e.hasDragged=!0,e.render(0,0,l-n,e.otherHandlePos)):e.grabbedRight?(e.hasDragged=!0,e.render(0,0,e.otherHandlePos,l-n)):e.grabbedCenter&&(e.hasDragged=!0,l<r?l=r:l>s+r-o&&(l=s+r-o),e.render(0,0,l-r,l-r+o)),e.hasDragged&&e.scrollbar&&S(e.scrollbar.options.liveRedraw,!h&&!this.chart.boosted)&&(t.DOMType=t.type,setTimeout(function(){e.onMouseUp(t)},0)))}onMouseUp(t){let e,i,s,o,r,a;let n=this.chart,l=this.xAxis,h=this.scrollbar,d=t.DOMEvent||t,p=n.inverted,c=this.rendered&&!this.hasDragged?"animate":"attr";(this.hasDragged&&(!h||!h.hasDragged)||"scrollbar"===t.trigger)&&(s=this.getUnionExtremes(),this.zoomedMin===this.otherHandlePos?o=this.fixedExtreme:this.zoomedMax===this.otherHandlePos&&(r=this.fixedExtreme),this.zoomedMax===this.size&&(r=this.reversedExtremes?s.dataMin:s.dataMax),0===this.zoomedMin&&(o=this.reversedExtremes?s.dataMax:s.dataMin),u((a=l.navigatorAxis.toFixedRange(this.zoomedMin,this.zoomedMax,o,r)).min)&&n.xAxis[0].setExtremes(Math.min(a.min,a.max),Math.max(a.min,a.max),!0,!this.hasDragged&&null,{trigger:"navigator",triggerOp:"navigator-drag",DOMEvent:d})),"mousemove"!==t.DOMType&&"touchmove"!==t.DOMType&&(this.grabbedLeft=this.grabbedRight=this.grabbedCenter=this.fixedWidth=this.fixedExtreme=this.otherHandlePos=this.hasDragged=this.dragOffset=null),this.navigatorEnabled&&y(this.zoomedMin)&&y(this.zoomedMax)&&(i=Math.round(this.zoomedMin),e=Math.round(this.zoomedMax),this.shades&&this.drawMasks(i,e,p,c),this.outline&&this.drawOutline(i,e,p,c),this.navigatorOptions.handles.enabled&&Object.keys(this.handles).length===this.handles.length&&(this.drawHandle(i,0,p,c),this.drawHandle(e,1,p,c)))}removeEvents(){this.eventsToUnbind&&(this.eventsToUnbind.forEach(function(t){t()}),this.eventsToUnbind=void 0),this.removeBaseSeriesEvents()}removeBaseSeriesEvents(){let t=this.baseSeries||[];this.navigatorEnabled&&t[0]&&(!1!==this.navigatorOptions.adaptToUpdatedData&&t.forEach(function(t){A(t,"updatedData",this.updatedDataHandler)},this),t[0].xAxis&&A(t[0].xAxis,"foundExtremes",this.modifyBaseAxisExtremes))}init(e){let i=e.options,o=i.navigator||{},a=o.enabled,n=i.scrollbar||{},l=n.enabled,h=a&&o.height||0,p=l&&n.height||0,c=n.buttonsEnabled&&p||0;this.handles=[],this.shades=[],this.chart=e,this.setBaseSeries(),this.height=h,this.scrollbarHeight=p,this.scrollButtonSize=c,this.scrollbarEnabled=l,this.navigatorEnabled=a,this.navigatorOptions=o,this.scrollbarOptions=n,this.opposite=S(o.opposite,!!(!a&&e.inverted));let u=this,g=u.baseSeries,f=e.xAxis.length,x=e.yAxis.length,m=g&&g[0]&&g[0].xAxis||e.xAxis[0]||{options:{}};if(e.isDirtyBox=!0,u.navigatorEnabled?(u.xAxis=new t(e,M({breaks:m.options.breaks,ordinal:m.options.ordinal},o.xAxis,{id:"navigator-x-axis",yAxis:"navigator-y-axis",type:"datetime",index:f,isInternal:!0,offset:0,keepOrdinalPadding:!0,startOnTick:!1,endOnTick:!1,minPadding:0,maxPadding:0,zoomEnabled:!1},e.inverted?{offsets:[c,0,-c,0],width:h}:{offsets:[0,-c,0,c],height:h}),"xAxis"),u.yAxis=new t(e,M(o.yAxis,{id:"navigator-y-axis",alignTicks:!1,offset:0,index:x,isInternal:!0,reversed:S(o.yAxis&&o.yAxis.reversed,e.yAxis[0]&&e.yAxis[0].reversed,!1),zoomEnabled:!1},e.inverted?{width:h}:{height:h}),"yAxis"),g||o.series.data?u.updateNavigatorSeries(!1):0===e.series.length&&(u.unbindRedraw=d(e,"beforeRedraw",function(){e.series.length>0&&!u.series&&(u.setBaseSeries(),u.unbindRedraw())})),u.reversedExtremes=e.inverted&&!u.xAxis.reversed||!e.inverted&&u.xAxis.reversed,u.renderElements(),u.addMouseEvents()):(u.xAxis={chart:e,navigatorAxis:{fake:!0},translate:function(t,i){let s=e.xAxis[0],o=s.getExtremes(),r=s.len-2*c,a=C("min",s.options.min,o.dataMin),n=C("max",s.options.max,o.dataMax)-a;return i?t*n/r+a:r*(t-a)/n},toPixels:function(t){return this.translate(t)},toValue:function(t){return this.translate(t,!0)}},u.xAxis.navigatorAxis.axis=u.xAxis,u.xAxis.navigatorAxis.toFixedRange=s.prototype.toFixedRange.bind(u.xAxis.navigatorAxis)),e.options.scrollbar.enabled){let t=M(e.options.scrollbar,{vertical:e.inverted});!y(t.margin)&&u.navigatorEnabled&&(t.margin=e.inverted?-3:3),e.scrollbar=u.scrollbar=new r(e.renderer,t,e),d(u.scrollbar,"changed",function(t){let e=u.size,i=e*this.to,s=e*this.from;u.hasDragged=u.scrollbar.hasDragged,u.render(0,0,s,i),this.shouldUpdateExtremes(t.DOMType)&&setTimeout(function(){u.onMouseUp(t)})})}u.addBaseSeriesEvents(),u.addChartEvents()}getUnionExtremes(t){let e;let i=this.chart.xAxis[0],s=this.xAxis,o=s.options,r=i.options;return t&&null===i.dataMin||(e={dataMin:S(o&&o.min,C("min",r.min,i.dataMin,s.dataMin,s.min)),dataMax:S(o&&o.max,C("max",r.max,i.dataMax,s.dataMax,s.max))}),e}setBaseSeries(t,e){let i=this.chart,s=this.baseSeries=[];t=t||i.options&&i.options.navigator.baseSeries||(i.series.length?m(i.series,t=>!t.options.isInternal).index:0),(i.series||[]).forEach((e,i)=>{!e