{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack:///./node_modules/@popperjs/core/lib/enums.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack:///./node_modules/@popperjs/core/lib/utils/math.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack:///./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack:///./node_modules/chart.js/dist/chart.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack:///./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack:///./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack:///./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack:///./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack:///./node_modules/@popperjs/core/lib/createPopper.js","webpack:///./node_modules/@popperjs/core/lib/utils/debounce.js","webpack:///./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack:///./node_modules/@popperjs/core/lib/utils/within.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack:///./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/@kurkle/color/dist/color.esm.js","webpack:///./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/index.js","webpack:///./node_modules/@popperjs/core/lib/popper-lite.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack:///./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack:///./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack:///./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack:///./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack:///./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack:///./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack:///./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack:///./node_modules/@popperjs/core/lib/popper.js","webpack:///./node_modules/@popperjs/core/lib/index.js","webpack:///./node_modules/sweetalert2/dist/sweetalert2.all.js","webpack:///./node_modules/chartkick/dist/chartkick.esm.js","webpack:///./node_modules/chartjs-plugin-datalabels/dist/chartjs-plugin-datalabels.esm.js","webpack:///./app/javascript/packs/application.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./node_modules/turbolinks/dist/turbolinks.js","webpack:///./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js","webpack:///./app/javascript/channels/index.js","webpack:///./app/javascript/channels sync _channel\\.js$","webpack:///./node_modules/bootstrap/dist/js/bootstrap.esm.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","noop","uid","id","isNullOrUndef","isArray","Array","type","toString","slice","isObject","isNumberFinite","Number","isFinite","finiteOrDefault","defaultValue","valueOrDefault","toPercentage","dimension","endsWith","parseFloat","toDimension","callback","fn","args","thisArg","apply","each","loopable","reverse","len","keys","length","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","index","clone","source","map","target","klen","k","isValidKey","indexOf","_merger","options","tval","sval","merge","sources","merger","current","mergeIf","_mergerIf","keyResolvers","v","x","y","resolveObjectKey","obj","parts","split","tmp","part","push","_splitKey","_getKeyResolver","_capitalize","str","charAt","toUpperCase","defined","isFunction","setsEqual","a","b","size","item","has","_isClickEvent","e","PI","Math","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","almostEquals","epsilon","abs","niceNum","range","roundedRange","round","niceRange","pow","floor","fraction","_factorize","result","sqrt","sort","pop","isNumber","isNaN","almostWhole","rounded","_setMinAndMaxByKey","array","min","max","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","start","end","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","arguments","undefined","_lookup","table","cmp","mid","hi","lo","_lookupByKey","last","ti","_rlookupByKey","_filterBetween","values","arrayEvents","listenArrayEvents","listener","_chartjs","listeners","configurable","forEach","method","base","_len","_key","res","this","unlistenArrayEvents","stub","splice","_arrayUnique","items","set","Set","from","requestAnimFrame","window","requestAnimationFrame","throttled","argsToUse","ticking","_len2","_key2","debounce","delay","timeout","_len3","_key3","clearTimeout","setTimeout","_toLeftRightCenter","align","_alignStartEnd","_textX","left","right","rtl","_getStartAndCountOfVisiblePoints","meta","points","animationsDisabled","pointCount","count","_sorted","iScale","_parsed","axis","_iScale$getUserBounds","getUserBounds","minDefined","maxDefined","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","assign","atEdge","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInBounce","easeOutBounce","easeInOutBounce","isPatternOrGradient","color","getHoverColor","saturate","darken","hexString","numbers","colors","intlCache","Map","formatNumber","num","locale","cacheKey","JSON","stringify","formatter","Intl","NumberFormat","getNumberFormat","format","formatters","tickValue","ticks","chart","notation","delta","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","remain","significand","includes","numeric","Ticks","overrides","descriptors","getScope$1","node","root","scope","Defaults","_descriptors","_appliers","animation","backgroundColor","borderColor","datasets","devicePixelRatio","context","platform","getDevicePixelRatio","elements","events","font","family","style","lineHeight","weight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","intersect","includeInvisible","maintainAspectRatio","onHover","onClick","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","targetScope","targetName","scopeObject","targetScopeObject","privateName","defineProperties","writable","local","appliers","defaults","_scriptable","startsWith","_indexable","_fallback","duration","easing","loop","to","properties","active","resize","show","animations","visible","hide","autoPadding","padding","top","bottom","display","offset","beginAtZero","bounds","clip","grace","grid","lineWidth","drawOnChartArea","drawTicks","tickLength","tickWidth","_ctx","tickColor","border","dash","dashOffset","width","title","text","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","minor","major","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","route","_measureText","data","gc","longest","string","textWidth","measureText","_longestText","arrayOfThings","cache","garbageCollect","save","j","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","height","drawPoint","drawPointLegend","w","xOffset","yOffset","cornerRadius","xOffsetW","yOffsetW","pointStyle","rotation","radius","rad","translate","rotate","drawImage","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","rect","fill","borderWidth","stroke","_isPointInArea","point","area","margin","clipArea","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","setRenderOpts","opts","translation","fillStyle","textAlign","textBaseline","decorateText","line","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","strokeStyle","decorationWidth","drawBackdrop","oldColor","fillRect","renderText","lines","strokeWidth","strokeColor","backdrop","strokeText","maxWidth","fillText","addRoundedRectPath","h","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","matches","match","_readValueToProps","props","ret","objProps","read","prop","toTRBL","toTRBLCorners","toPadding","toFont","fallback","parseInt","console","warn","toFontString","resolve","inputs","info","cacheable","_addGrace","minmax","change","keepZero","add","createContext","parentContext","_createResolver","scopes","prefixes","rootScopes","getTarget","finalRootScopes","_resolve","_cacheable","_scopes","_rootScopes","_getTarget","override","Proxy","deleteProperty","_keys","_cached","_resolveWithPrefixes","getOwnPropertyDescriptor","Reflect","getPrototypeOf","getKeysFromAllScopes","ownKeys","storage","_storage","_attachContext","proxy","subProxy","descriptorDefaults","_proxy","_context","_subProxy","_stack","setContext","receiver","isScriptable","getValue","Error","join","delete","needsSubResolver","createSubResolver","_resolveScriptable","isIndexable","arr","filter","resolver","_resolveArray","_resolveWithContext","allKeys","scriptable","indexable","_proxy$_scriptable","_proxy$_indexable","_proxy$_allKeys","_allKeys","readKey","prefix","constructor","resolveFallback","getScope","parent","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_this$_parsing$key","_parsing","parsed","parse","EPSILON","getPoint","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","next","d01","d12","s01","s12","fa","fb","monotoneAdjust","deltaK","mK","pointsLen","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointAfter","monotoneCompute","valueAxis","pointBefore","iPixel","vPixel","capControlPoint","pt","_updateBezierControlPoints","controlPoints","spanGaps","cubicInterpolationMode","slopeDelta","splineCurveMonotone","prev","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","document","_getParentNode","domNode","parentNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","element","ownerDocument","defaultView","positions","getPositionedStyle","styles","suffix","pos","getRelativePosition","event","borderBox","boxSizing","paddings","borders","_getCanvasPosition","touches","offsetX","offsetY","box","shadowRoot","useOffsetPos","getBoundingClientRect","clientX","clientY","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","maxHeight","containerSize","container","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","getContainerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","addEventListener","removeEventListener","readUsedSize","el","getPropertyValue","getStyle","_pointInLine","p1","p2","_steppedInterpolation","_bezierInterpolation","cp1","cp2","getRtlAdapter","rectX","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","direction","original","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","_ref","_boundSegment","segment","startBound","endBound","_propertyFn2","_getSegment","_propertyFn","getSegment","prevValue","inside","subStart","shouldStart","shouldStop","_boundSegments","segments","sub","_computeSegments","segmentOptions","_loop","_findStartAndEnd","findStartAndEnd","splitByStyles","cur","stop","solidSegments","_fullLoop","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","dir","p0","p0DataIndex","p1DataIndex","styleChanged","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","replacer","auto","basePlacements","clippingParents","viewport","popper","reference","variationPlacements","reduce","acc","placement","concat","placements","beforeRead","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","isElement","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","getWindow","getBasePlacement","getNodeName","nodeName","toLowerCase","enumerableOnly","getOwnPropertySymbols","symbols","sym","_objectSpread","_defineProperty","getOwnPropertyDescriptors","arg","input","hint","prim","toPrimitive","TypeError","String","_toPrimitive","_toPropertyKey","_slicedToArray","_arrayWithHoles","_i","iterator","_s","_e","_x","_r","_arr","_n","_d","done","err","return","_iterableToArrayLimit","minLen","_arrayLikeToArray","test","_unsupportedIterableToArray","_nonIterableRest","arr2","Animator","_request","_charts","_running","_lastDate","anims","date","callbacks","numSteps","initial","currentStep","_update","_refresh","Date","now","remaining","running","draw","_active","_total","tick","_notify","charts","complete","progress","cb","_getAnims","_duration","cancel","animator","interpolators","boolean","factor","c0","c1","valid","mix","number","Animation","cfg","currentValue","_fn","_easing","_start","_target","_prop","_from","_to","_promises","elapsed","promises","Promise","rej","resolved","Animations","config","_properties","configure","animationOptions","animatedProps","getOwnPropertyNames","option","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","wait","all","awaitAll","then","_animateOptions","update","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","stack","dsIndex","singleMode","otherValue","isStacked","stacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","_cachedMeta","_stacks","iAxis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","_visualValues","getFirstScaleId","shift","clearStacks","isDirectUpdateMode","cloneIfNotShared","cached","shared","DatasetController","_cachedDataOpts","getMeta","_type","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","datasetElementType","dataElementType","initialize","linkScales","_stacked","addElements","isPluginEnabled","dataset","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","iAxisKey","vAxisKey","adata","convertObjectDataToArray","isExtensible","_dataCheck","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","_this$_parsing","_this$_parsing$xAxisK","xAxisKey","_this$_parsing$yAxisK","yAxisKey","parsedValue","NaN","canStack","otherScale","_getOtherScale","hidden","createStack","NEGATIVE_INFINITY","_getUserBounds","_scale$getUserBounds","otherMin","otherMax","_skip","updateRangeFromParsed","getParsed","label","getLabelForValue","_clip","disabled","toClip","defaultClip","getMaxOverflow","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","raw","createDataContext","createDatasetContext","_resolveElementOptions","elementType","sharing","datasetElementScopeKeys","names","resolveNamedOptions","freeze","transition","datasetAnimationScopeKeys","sharedOptions","_animationsDisabled","firstOpts","previouslySharedOptions","getSharedOptions","includeOptions","updateSharedOptions","_resolveAnimations","_setStyle","_ref2","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_args2","_dataChanges","_sync","newCount","computeMinSampleSize","_cache","$bar","visibleMetas","getAllParsedValues","getAllScaleValues","curr","_length","updateMinAndPrev","getPixelForTick","parseValue","entry","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","_borderProps","horizontal","borderProps","enableBorderRadius","parseEdge","orig","v2","startEnd","setInflateAmount","_ref3","ratio","inflateAmount","BarController","_this$_parsing2","_this$_parsing2$xAxis","_this$_parsing2$yAxis","super","bars","reset","getBasePixel","isHorizontal","ruler","_getRuler","_this$_getSharedOptio","_getSharedOptions","vpixels","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","updateElement","grouped","skipNull","val","_getStacks","pixels","barThickness","_startPixel","_endPixel","stackCount","_getStackCount","categoryPercentage","barPercentage","_this$_cachedMeta","_this$options","baseValue","minBarLength","actualBase","floating","getDataVisibility","barSign","startPixel","getPixelForDecimal","endPixel","getValueForPixel","halfGrid","getLineWidthForValue","maxBarThickness","Infinity","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","_getStackIndex","rects","_index_","_value_","BubbleController","_this$_cachedMeta2","_this$_getSharedOptio2","DoughnutController","innerRadius","outerRadius","circumference","isDatasetVisible","_getRotation","_getCircumference","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","cutout","chartWeight","_getRingWeight","_this$_getRotationExt","_getRotationExtents","_getRatioAndOffset","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","_this$_getSharedOptio3","_circumference","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","_chart$legend$options2","fontColor","legendItem","toggleDataVisibility","LineController","_meta$data","_dataset","_getStartAndCountOfVi","_decimated","animated","_this$_cachedMeta3","_this$_getSharedOptio4","_this$options2","maxGapLength","directUpdate","pointsCount","prevParsed","nullData","lastPoint","updateControlPoints","PolarAreaController","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","_chart$legend$options3","angleLines","circular","pointLabels","PieController","RadarController","pointPosition","getPointPositionForValue","ScatterController","_meta$data2","_getStartAndCountOfVi2","registry","getElement","_this$_cachedMeta4","_this$options3","abstract","DateAdapterBase","members","adapters","binarySearch","metaset","lookupMethod","_reversePixels","getRange","evaluateInteractionItems","position","handler","getSortedVisibleDatasetMetas","_metasets$i","_binarySearch","getIntersectItems","useFinalPosition","isPointInArea","inRange","getNearestCartesianItems","distanceMetric","useX","useY","deltaX","deltaY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestItems","_element$getProps","getProps","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","setLayoutDims","layouts","params","wrap","stackWeight","placed","buildStacks","vBoxMaxWidth","hBoxMaxHeight","layout","fullSize","availableWidth","availableHeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","other","getMargins","marginForPositions","fitBoxes","boxes","refitBoxes","refit","_updateDims","setBoxDims","placeBoxes","userPadding","_layers","z","layoutItem","minPadding","layoutBoxes","_box","_box$options","_box$options$stackWei","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","updatePos","handleMaxPadding","BasePlatform","BasicPlatform","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","passive","removeListener","nodeListContains","nodeList","contains","createAttachObserver","observer","MutationObserver","entries","trigger","addedNodes","removedNodes","observe","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","disconnect","unlistenDevicePixelRatioChanges","createProxyAndListen","_getRelativePosition","native","fromNativeEvent","addListener","DomPlatform","renderHeight","getAttribute","renderWidth","displayWidth","displayHeight","initCanvas","removeAttribute","setAttribute","proxies","$proxies","attach","detach","isConnected","_this$getProps","final","tickOpts","determinedMaxTicks","_tickSize","maxScale","maxChart","_maxLength","determineMaxTicks","ticksLimit","maxTicksLimit","majorIndices","enabled","getMajorIndices","numMajorIndices","first","newTicks","ceil","skipMajors","evenMajorSpacing","diff","getEvenSpacing","factors","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","defaultRoutes","offsetFromEdge","getTicksLimit","ticksLength","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","Scale","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","_this$getUserBounds","metas","getMinMax","xLabels","yLabels","_computeLabelItems","beforeUpdate","_this$options4","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","notifyPlugins","_callHooks","beforeTickToLabelConversion","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","_this$options5","titleOpts","gridOpts","titleHeight","_this$_getLabelSizes","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","_this$options6","_this$options6$ticks","isRotated","labelsBelowTicks","offsetLeft","offsetRight","_this$options7","generateTickLabels","_computeLabelSizes","caches","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","idx","decimal","getBaseValue","createTickContext","optionTicks","rot","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","positionAxisID","limit","step","optsAtIndex","optsAtIndexBorder","lineColor","tickBorderDash","tickBorderDashOffset","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","tickTextAlign","labelPadding","_this$options8","_this$options9","_this$options9$ticks","findIndex","_computeGridLineItems","drawLine","setLineDash","lineDashOffset","_this$options10","lastLineWidth","_computeLabelArea","getLabelItems","renderTextOptions","_this$options11","_titleArgs","titleX","titleY","titleArgs","drawBackground","drawGrid","drawBorder","drawTitle","drawLabels","tz","gz","bz","axisID","fontSize","TypedRegistry","isPrototypeOf","proto","parentScope","isIChartComponent","register","itemDefaults","routes","propertyParts","sourceName","sourceScope","routeDefaults","registerDefaults","Registry","controllers","_typedRegistries","_each","_len4","_key4","_len5","_key5","_len6","_key6","_get","_len7","_key7","_len8","_key8","_len9","_key9","_len10","_key10","typedRegistry","reg","_getRegistryForType","isForType","_exec","itemReg","component","camelMethod","PluginService","_init","hook","_createDescriptors","descriptor","plugin","cancelable","_oldCache","_notifyStateChanges","localIds","getPlugin","allPlugins","_ref4","getOpts","pluginOpts","createDescriptors","previousDescriptors","some","_ref5","pluginScopeKeys","getIndexAxis","datasetDefaults","idMatchesAxis","axisFromPosition","determineAxis","_len11","scaleOptions","_key11","getAxisFromDataset","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","scaleConf","error","boundDs","retrieveAxisFromDatasets","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","initOptions","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","_config","initConfig","_scopeCache","_resolverCache","clearCache","clear","datasetType","additionalOptionScopes","mainScope","resetCache","keyLists","_cachedScopes","_getResolver","getResolver","subPrefixes","_descriptors2","hasFunction","needContext","subResolver","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","intKey","getSizeForArea","field","Chart","invalidatePlugins","remove","userConfig","initialCanvas","existingChart","chartOptionScopes","OffscreenCanvas","_detectPlatform","updateConfig","acquireContext","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","resizeDelay","listen","_initialize","_this$options12","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","render","scalesOptions","axisOptions","scaleOpts","updated","isRadial","dposition","dtype","scaleType","getScale","init","hasUpdated","addBox","_destroyDatasetMeta","newControllers","_removeUnreferencedMetasets","order","updateIndex","ControllerClass","getController","_defaults$datasets$ty","_updateMetasets","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","invalidate","buildOrUpdateControllers","buildOrUpdateElements","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","removeBox","ensureScalesHaveIDs","buildOrUpdateScales","existingEvents","newEvents","unbindEvents","changes","_getUniformDataChanges","_ref6","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","_this$_resizeBeforeDr","layers","_drawDatasets","_drawDataset","useClip","getDatasetArea","setDatasetVisibility","_updateVisibility","_destroy","_stop","releaseContext","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","isAttached","activeElements","lastActive","_ref7","notify","pluginId","replay","hoverOptions","deactivated","activated","updateHoverStyle","inChartArea","eventFilter","_handleEvent","_this$_active","_getActiveElements","isClick","lastEvent","determineLastEvent","getElementsAtEventForMode","parseBorderRadius$1","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","pixelMargin","innerR","spacingOffset","alpha","avNogSpacingRadius","angleOffset","_parseBorderRadius$","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","outerMidAdjustedAngle","pCenter","p4","innerMidAdjustedAngle","p8","outerStartX","outerStartY","outerEndX","outerEndY","fullCircles","inner","lineJoin","angleMargin","clipArc","version","ArcElement","chartX","chartY","_getAngleFromPoint2","_this$getProps2","rAdjust","betweenAngles","withinRadius","_this$getProps3","_this$options13","halfAngle","halfRadius","radiusOffset","drawArc","setStyle","lineCap","pathVars","_params$start","paramsStart","_params$end","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","_pathVars","lineMethod","stepped","getLineMethod","_ref8","_ref8$move","fastPathSegment","_pathVars2","_ref9","_ref9$move","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","path","_path","strokePathWithCache","segmentMethod","strokePathDirect","LineElement","_points","_segments","_pointsUpdated","_interpolate","_getInterpolationMethod","_segments$i","interpolated","inRange$1","hitRadius","PointElement","mouseX","mouseY","_this$getProps4","_this$getProps5","hoverRadius","getBarBounds","bar","_bar$getProps","half","skipOrLimit","boundingRects","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","outer","skipX","skipY","addNormalRectPath","inflateRect","amount","refRect","BarElement","_this$options14","_boundingRects","addRectPath","_this$getProps6","getBoxSize","labelOpts","_labelOpts$boxHeight","boxHeight","_labelOpts$boxWidth","boxWidth","usePointStyle","pointStyleWidth","itemHeight","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","generateLabels","labelFont","_computeTitleHeight","_getBoxSize","_fitRows","_fitCols","hitboxes","totalHeight","row","_itemHeight","heightLimit","totalWidth","currentColWidth","currentColHeight","col","_calculateItemSize","legendItemText","calculateItemWidth","fontLineHeight","calculateLegendItemHeight","calculateItemHeight","calculateItemSize","_this$options15","rtlHelper","hitbox","_draw","defaultColor","halfFontSize","cursor","_getBoxSize2","textDirection","setWidth","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","titleFont","titlePadding","topPaddingPlusHalfFontSize","hitBox","lh","onLeave","isListened","hoveredItem","_getLegendItemAt","sameItem","plugin_legend","_element","_args","adjustHitBoxes","handleEvent","ci","_chart$legend$options","useBorderRadius","Title","_padding","textSize","fontOpts","_this$_drawArgs","_drawArgs","plugin_title","titleBlock","createTitle","WeakMap","positioners","xSet","hasValue","tooltipPosition","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","_controller$getLabelA","getLabelAndValue","formattedValue","getTooltipSize","tooltip","body","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","_chart$chartArea","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","_toTRBLCorners","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","defaultCallbacks","beforeTitle","tooltipItems","labelCount","afterTitle","beforeLabel","tooltipItem","bodyColor","afterLabel","beforeFooter","afterFooter","invokeCallbackWithFallback","Tooltip","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","bodyItems","scoped","itemSort","_createItems","getTitle","getBeforeBody","getBody","getAfterBody","getFooter","positionAndSize","backgroundPoint","external","tooltipPoint","caretPosition","getCaretPosition","x3","y3","_toTRBLCorners2","ptX","ptY","titleColor","labelColor","labelPointStyle","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","_drawColorBox","footerAlign","footerColor","tooltipSize","_toTRBLCorners3","drawCaret","quadraticCurveTo","animX","animY","_updateAnimationTarget","hasTooltipContent","globalAlpha","drawBody","drawFooter","_ref15","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","_willRender","findOrAddLabel","addedLabels","unshift","addIfString","lastIndexOf","_getLabelForValue","CategoryScale","_startValue","_valueRange","_addedLabels","added","_ref16","_this$getUserBounds2","_this$getMinMax","getDecimalForPixel","relativeLabelSize","minSpacing","_ref17","LinearScaleBase","_endValue","_this$getUserBounds3","setMin","setMax","minSign","maxSign","maxTicks","stepSize","computeTickLimit","getTickLimit","generationOptions","dataRange","precision","maxDigits","includeBounds","unit","maxSpaces","rmin","rmax","countDefined","niceMin","niceMax","numSpaces","decimalPlaces","generateTicks$1","_maxDigits","LinearScale","_this$getMinMax2","handleTickRangeOptions","log10Floor","changeExponent","isMajor","tickVal","steps","rangeExp","rangeStep","generateTicks","_ref18","minExp","exp","startExp","lastTick","LogarithmicScale","_zero","_this$getMinMax3","_this$getUserBounds4","getTickBackdropHeight","determineLimits","fitWithPointLabels","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","updateLimits","setCenterPoint","_pointLabelItems","_opts$pointLabels","itemOpts","extra","createPointLabelItem","isNotOverlapped","buildPointLabelItems","hLimits","vLimits","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","drawPointLabelBox","backdropLeft","backdropTop","backdropWidth","backdropHeight","pathRadiusLine","logarithmic","RadialLinearScale","_this$getMinMax4","leftMovement","rightMovement","topMovement","bottomMovement","angleMultiplier","scalingFactor","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","_this$_pointLabelItem","_this$options16","drawPointLabels","gridLineOpts","drawRadiusLine","animate","INTERVALS","millisecond","common","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","adapter","_adapter","_scale$_parseOpts","_parseOpts","parser","isoWeekday","startOf","determineUnitForAutoTicks","minUnit","capacity","interval","MAX_SAFE_INTEGER","addTick","time","timestamps","_lookup2","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","formats","normalized","_this$getUserBounds5","_applyBounds","_getLabelBounds","endOf","getLabelTimestamps","timeOpts","_generate","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","weekday","hasWeekday","getDataTimestamps","tooltipFormat","datetime","fmt","minorFormat","majorFormat","_tickFormatFunction","offsets","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","_getLabelSize","interpolate","prevSource","nextSource","prevTarget","nextTarget","_lookupByKey2","_table$lo","_table$hi","_lookupByKey3","_table$lo2","_table$hi2","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","getDocumentElement","documentElement","rectToClientRect","getClientRectFromMixedType","clippingParent","strategy","win","html","visualViewport","layoutViewport","isLayoutViewport","offsetTop","getWindowScrollBarX","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","_element$ownerDocumen","winScroll","getWindowScroll","scrollWidth","scrollHeight","scrollLeft","scrollTop","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","listScrollParents","getParentNode","clipperElement","getOffsetParent","getClippingParents","firstClippingParent","clippingRect","accRect","detectOverflow","state","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","paddingObject","mergePaddingObject","expandToHashMap","altContext","popperRect","clippingClientRect","contextElement","referenceClientRect","popperOffsets","computeOffsets","popperClientRect","elementClientRect","overflowOffsets","offsetData","modifiersData","multiply","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","offsetHeight","addVisualOffsets","getVariation","isTableElement","getTrueOffsetParent","offsetParent","isFirefox","currentNode","css","transform","perspective","contain","willChange","getContainingBlock","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","scroll","isScrollParent","modifiers","visited","modifier","requires","requiresIfExists","dep","depModifier","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","attributes","effectCleanupFns","isDestroyed","instance","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","phase","orderModifiers","merged","existing","mergeByName","_ref3$options","effect","cleanupFn","forceUpdate","_state$elements","getLayoutRect","_state$orderedModifie","_state$orderedModifie2","destroy","onFirstUpdate","assignedSlot","within","withinMaxClamp","initialStyles","arrow","attribute","unsetSides","mapToStyles","_Object$assign2","variation","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","roundOffsetsByDPR","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","_options$scroll","_options$resize","scrollParent","getMainAxisFromPlacement","pageXOffset","pageYOffset","_getComputedStyle","overflow","overflowX","overflowY","list","getScrollParent","isBody","updatedList","global","factory","noGlobal","getProto","flat","class2type","hasOwn","fnToString","ObjectFunctionString","support","nodeType","isWindow","preservedScriptAttributes","src","nonce","noModule","DOMEval","code","doc","script","createElement","appendChild","removeChild","toType","jQuery","selector","isArrayLike","jquery","toArray","pushStack","elems","prevObject","elem","eq","even","grep","_elem","odd","extend","copy","copyIsArray","deep","isPlainObject","expando","random","replace","isReady","msg","Ctor","isEmptyObject","globalEval","makeArray","results","inArray","invert","callbackExpect","guid","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pushNative","booleans","whitespace","identifier","pseudos","rwhitespace","RegExp","rtrim","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","childNodes","els","seed","nid","groups","newSelector","newContext","exec","getElementsByTagName","getElementsByClassName","qsa","testContext","toSelector","querySelectorAll","qsaError","cacheLength","markFunction","assert","addHandle","attrs","attrHandle","siblingCheck","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","hasCompare","subWindow","attachEvent","cssHas","querySelector","className","createComment","getById","getElementsByName","attrId","find","getAttributeNode","tag","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","sortDetached","aup","ap","bp","expr","attr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","what","_argument","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","matched","matcher","unmatched","lang","elemLang","hash","location","activeElement","hasFocus","href","tabIndex","checked","selected","selectedIndex","_matchIndexes","radio","checkbox","file","password","image","submit","tokens","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","_name","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","rneedsContext","needsContext","rsingleTag","winnow","qualifier","not","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","sibling","targets","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","rnothtmlwhite","Identity","Thrower","ex","adoptValue","reject","noValue","promise","fail","Callbacks","_","flag","createOptions","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","empty","disable","lock","fireWith","Deferred","func","tuples","always","deferred","pipe","fns","newDefer","tuple","returned","onFulfilled","onRejected","maxDepth","depth","special","that","mightThrow","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","message","readyException","readyList","completed","catch","readyWait","readyState","doScroll","access","chainable","emptyGet","bulk","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","acceptData","owner","Data","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","getData","removeData","_removeData","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","defer","pnum","rcssNum","cssExpand","composed","getRootNode","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","maxIterations","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","toggle","div","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","wrapMap","thead","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","selection","ignored","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","expectSync","safeActiveElement","on","types","one","origFn","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","Event","handleObjIn","eventHandle","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","button","addProp","originalEvent","load","noBubble","click","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","altKey","bubbles","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","charCode","keyCode","buttons","pointerId","pointerType","screenX","screenY","targetTouches","toElement","which","focus","blur","mouseenter","mouseleave","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","append","prepend","insertBefore","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","insert","rnumnonpx","rcustomProp","getStyles","opener","swap","old","rboxStyle","rtrimCSS","curCSS","computed","minWidth","isCustomProp","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","trChild","trStyle","borderTopWidth","borderBottomWidth","cssPrefixes","emptyStyle","vendorProps","finalPropName","cssProps","capName","vendorPropName","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","isBorderBox","computedVal","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","cssHooks","origName","scrollboxSizeBuggy","expand","expanded","propHooks","run","eased","fx","swing","fxNow","inProgress","rfxtypes","rrun","schedule","createFxNow","genFx","includeWidth","createTween","tweeners","stopped","prefilters","currentTime","startTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","timer","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","prefilter","speed","opt","speeds","fadeTo","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","bool","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","addClass","classNames","curValue","finalValue","removeClass","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","delegate","undelegate","fnOver","fnOut","holdReady","hold","parseJSON","isNumeric","trim","_jQuery","_$","$","noConflict","lim","p2b","n2b","b2n","n2p","map$1","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","f","hex","h1","h2","g","isShort","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb","rgb2hsl","hueValue","calln","hsl2rgb","hue","hueParse","hwb2rgb","hsv2rgb","Z","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","G","H","I","J","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","nameParse","unpacked","tkeys","ok","nk","unpack","transparent","RGB_RE","modHSL","fromObject","functionParse","rgbParse","Color","_rgb","_valid","hslString","c2","w2","w1","rgb1","rgb2","deg","getUAString","uaData","navigator","userAgentData","brands","brand","userAgent","createPopper","_state$modifiersData$","arrowElement","basePlacement","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","axisProp","centerOffset","_options$element","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","referenceRect","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","_options$offset","invertDistance","skidding","distanceAndSkiddingToXY","_data$state$placement","getOppositePlacement","getOppositeVariationPlacement","_options$mainAxis","mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allowedPlacements","overflows","computeAutoPlacement","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","fittingPlacement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","maxLen","arrowPaddingObject","getFreshSideObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","math","_offsetModifierState$2","_mainSide","_altSide","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","hashMap","child","rootNode","isSameNode","commonX","commonY","privateProps","awaitingPromise","innerParams","domCache","swalClasses","iconTypes","capitalizeFirstLetter","previousWarnOnceMessages","warnAboutDeprecation","deprecatedParam","useInstead","callIfFunction","hasToPromiseFn","toPromise","asPromise","isPromise","getContainer","elementBySelector","selectorString","elementByClass","getPopup","popup","getIcon","icon","getHtmlContainer","getImage","getProgressSteps","getValidationMessage","getConfirmButton","actions","confirm","getCancelButton","getDenyButton","deny","getLoader","loader","getActions","getTimerProgressBar","getCloseButton","close","getFocusableElements","focusableElementsWithTabindex","tabindexA","tabindexB","otherFocusableElements","uniqueArray","isVisible$1","isModal","shown","isToast","toast","states","previousBodyPadding","setInnerHtml","HTMLVideoElement","HTMLAudioElement","classList","applyCustomClass","showClass","removeCustomClasses","customClass","getInput$1","inputClass","focusInput","condition","Boolean","getDirectChildByClass","applyNumericalStyle","removeProperty","isScrollable","hasCssAnimation","animDuration","transDuration","animateTimerProgressBar","timerProgressBar","globalState","restoreActiveElement","returnFocus","scrollX","scrollY","restoreFocusTimeout","previousActiveElement","isNodeEnv","sweetHTML","textarea","resetValidationMessage$1","currentInstance","resetValidationMessage","oldContainerExisted","oldContainer","resetOldContainer","targetElement","setupAccessibility","setupRTL","rangeOutput","oninput","onchange","addInputChangeListeners","parseHtmlToContainer","handleObject","handleJqueryElem","animationEndEvent","testEl","transEndEventNames","WebkitAnimation","renderActions","showConfirmButton","showDenyButton","showCancelButton","confirmButton","denyButton","cancelButton","renderButton","buttonsStyling","styled","confirmButtonColor","denyButtonColor","cancelButtonColor","handleButtonsStyling","reverseButtons","renderButtons","loaderHtml","buttonType","renderContainer","background","handleBackdropParam","handlePositionParam","grow","growClass","handleGrowParam","inputClasses","showInput","renderInputType","inputContainer","getInputContainer","inputAutoFocus","setAttributes","inputAttributes","attrName","removeAttributes","setCustomClass","setInputPlaceholder","placeholder","inputPlaceholder","setInputLabel","inputLabel","labelClass","innerText","insertAdjacentElement","inputType","checkAndSetInputValue","inputValue","email","tel","rangeInput","checkboxContainer","initialPopupWidth","textareaWidth","marginRight","attributeFilter","renderContent","htmlContainer","rerender","renderInput","applyStyles","iconType","setColor","adjustSuccessIconBackgroundColor","popupBackgroundColor","successIconParts","setContent","newContent","oldContent","iconHtml","iconContent","question","warning","iconColor","addClasses$1","modal","createStepElement","stepEl","createLineElement","lineEl","progressStepsDistance","renderPopup","progressStepsContainer","progressSteps","currentProgressStep","renderProgressSteps","renderIcon","imageUrl","imageAlt","imageWidth","imageHeight","renderImage","titleText","renderTitle","closeButton","closeButtonHtml","showCloseButton","closeButtonAriaLabel","renderCloseButton","renderFooter","didRender","hideLoading","showRelatedButton","loading","buttonToReplace","clickConfirm","DismissReason","esc","removeKeydownHandler","keydownTarget","keydownHandlerAdded","keydownHandler","capture","keydownListenerCapture","setFocus","focusableElements","arrowKeysNextButton","arrowKeysPreviousButton","dismissWith","isComposing","stopKeydownPropagation","handleEnter","handleTab","handleArrows","handleEsc","allowEnterKey","getInput","outerHTML","btnIndex","buttonToFocus","HTMLButtonElement","allowEscapeKey","privateMethods","swalPromiseResolve","swalPromiseReject","unsetAriaHidden","hasAttribute","addBottomPaddingForTallPopups","ua","iOS","webkit","bottomPanelHeight","innerHeight","lockBodyScroll","preventTouchMove","ontouchstart","shouldPreventTouchMove","ontouchmove","isStylus","isZoom","tagName","touchType","fixScrollbar","scrollDiv","scrollbarWidth","measureScrollbar","removePopupAndResetState","didClose","triggerDidCloseAndDispose","iosfix","undoIOSfix","resolveValue","prepareResolveValue","triggerClosePopup","isAwaitingPromise","isDismissed","handleAwaitingPromise","hideClass","handlePopupAnimation","isConfirmed","isDenied","animationIsSupported","willClose","animatePopup","swalCloseEventFinishedCallback","setButtonsDisabled","setInputDisabled","radios","defaultParams","template","heightAuto","allowOutsideClick","preConfirm","preDeny","confirmButtonText","confirmButtonAriaLabel","denyButtonText","denyButtonAriaLabel","cancelButtonText","cancelButtonAriaLabel","focusConfirm","focusDeny","focusCancel","showLoaderOnConfirm","showLoaderOnDeny","inputOptions","inputAutoTrim","inputValidator","returnInputValueOnDeny","validationMessage","willOpen","didOpen","didDestroy","scrollbarPadding","updatableParams","deprecatedParams","toastIncompatibleParams","isValidParameter","paramName","isUpdatableParameter","isDeprecatedParameter","checkIfParamIsValid","checkIfToastParamIsValid","checkIfParamIsDeprecated","filterValidParams","validUpdatableParams","disposeSwal","disposeWeakMaps","unsetWeakMaps","instanceMethods","__proto__","closeModal","closePopup","closeToast","disableButtons","disableInput","disableLoading","enableButtons","enableInput","rejectPromise","inputerror","showValidationMessage","updatedParams","showLoading","Swal","replaceButton","getCheckboxValue","getRadioValue","getFileValue","files","handleInputOptions","processInputOptions","populateInputOptions","formatInputOptions","handleInputValue","renderOption","optionLabel","optionValue","isSelected","inputOption","radioLabel","radioInput","radioLabelElement","valueFormatted","handleConfirmOrDenyWithInput","getInputValue","handleInputValidator","checkValidity","preDenyValue","succeedWith","preConfirmValue","handleToastClick","onclick","isAnyButtonShown","ignoreOutsideClick","handleModalMousedown","onmousedown","onmouseup","handleContainerMousedown","handleModalClick","isJqueryElement","stopTimer","timerProgressBarWidth","timerProgressBarPercent","stopTimerProgressBar","resumeTimer","bodyClickListenerAdded","clickHandlers","bodyClickListener","staticMethods","argsToParams","bindClickHandler","clickCancel","clickDeny","enableLoading","getIconContent","getInputLabel","getTimerLeft","increaseTimer","increase","isLoading","isTimerRunning","isRunning","isVisible","mixin","mixinParams","priorityMixinParams","_main","toggleTimer","Timer","started","getTime","swalStringParams","getSwalParams","templateContent","showWarningsForAttributes","getSwalFunctionParams","Function","getSwalButtons","getSwalImage","getSwalIcon","getSwalInput","optionName","getSwalStringParams","paramNames","showWarningsForElements","allowedElements","allowedAttributes","openPopup","initialBodyOverflow","addClasses","setScrollingVisibility","fixScrollContainer","swalOpenAnimationFinished","MSStream","maxTouchPoints","iOSfix","defaultInputValidators","setParameters","setDefaultInputValidators","validateCustomTargetElement","SweetAlert","outerParams","userParams","showWarningsForParams","prepareParams","populateDomCache","swalPromise","onFinally","finally","dismiss","handleConfirmButtonClick","handleDenyButtonClick","handleCancelButtonClick","handlePopupClick","addKeydownHandler","handleInputOptionsAndValue","setupTimer","initFocus","templateParams","getTemplateParams","focusButton","blurActiveElement","language","initiationDate","localStorage","getItem","pointerEvents","ukrainianAnthem","play","setItem","default","Sweetalert2","swal","sweetAlert","styleSheet","variable","obj1","obj2","DATE_PATTERN","toStr","toFloat","toDate","toArr","jsOptionsFunc","hideLegend","setTitle","setStacked","setXtitle","setYtitle","chartOptions","series","singleSeriesFormat","negativeValues","xtitle","ytitle","library","sortByTime","sortByNumberSeries","sortByNumber","calculateTimeUnit","maxDay","getMilliseconds","getSeconds","getMinutes","getHours","getDate","dayOfWeek","getDay","getMonth","isDate","byteSuffixes","formatValue","pre","byteScale","suffixIdx","toPrecision","zeros","toFixed","thousands","seriesOption","baseOptions","defaultOptions$2","defaultColors","hideLegend$2","setTitle$2","setBarMin$1","setBarMax$1","setStacked$2","setXtitle$2","setYtitle$2","addOpacity","notnull","calculateScale","maxAbsY","setFormatOptions$1","chartType","numericOptions","formatOptions","bytes","dataPoint","valueLabel","xtype","jsOptions$2","prepareData","prepareBubbleData","prepareNumberData","rows","i$1","i$2","key$1","j$1","prepareDefaultData","createDataTable","ref","pointChart","pointBackgroundColor","pointHoverBackgroundColor","pointHitRadius","pointHoverBorderWidth","pointRadius","pointHoverRadius","timeUnit","minTime","maxTime","timeDiff","unitStepSize","defaultExport$2","renderLineChart","drawChart","renderPieChart","donut","renderColumnChart","barOptions","maxLabelSize","substring","setLabelSize","renderAreaChart","renderBarChart","renderScatterChart","renderBubbleChart","destroyed","log","defaultOptions$1","xAxis","yAxis","credits","plotOptions","areaspline","marker","useUTC","hideLegend$1","verticalAlign","setTitle$1","jsOptions$1","stackedValue","stacking","setFormatOptions","pointFormatter","pointFormat","defaultExport$1","curve","symbol","pie","innerSize","categories","newSeries","d$1","d2","renderTo","loaded","fontName","pointSize","textStyle","curveType","hAxis","titleTextStyle","gridlines","baselineColor","viewWindow","setBarMin","setBarMax","italic","jsOptions","defaultExport","this$1$1","waitForLoaded","pieHole","visualization","DataTable","addColumn","addRows","areaOpacity","renderGeoChart","colorAxis","rows2","renderTimeline","clearChart","toJSON","pack","runCallbacks","loadOptions","packages","__config","mapsApiKey","LineChart","Timeline","GeoChart","columnType","sortedLabels","isDay","i$3","addAdapter","adapterType","product","getAdapterType","callAdapter","fnName","adapterName","Highcharts","google","__adapterObject","Chartkick","setDefaultOptions","eachChart","chartId","destroyAll","use","formatSeriesData","keyType","formatSeriesBubble","keyFunc","detectXTypeWithFunction","processSeries","noDatetime","rawData","copySeries","discrete","dataEmpty","detectXType","processSimple","perfectData","pendingRequests","runningRequests","runNext","request","setText","chartError","noPrefix","errorCatcher","__render","fetchDataSource","dataSource","renderChart","messages","download","__downloadAttached","filename","link","zIndex","alt","__enterEvent","toImage","__leaveEvent","addDownloadButton","elementId","refresh","startRefresh","getDataSource","getOptions","getChartObject","getAdapter","updateData","__updateOptions","redraw","refreshData","sep","intervalId","setInterval","stopRefresh","clearInterval","tmpCanvas","tmpCtx","toBase64Image","updateRefresh","__processData","__chartName","PieChart","ColumnChart","BarChart","AreaChart","ScatterChart","BubbleChart","autoDestroy","dispatchEvent","screen","deviceXDPI","logicalXDPI","utils","updates","orient","origin","x0","y0","dx","dy","ln","region","compute$1","anchor","clamp","r0","r1","clipped","vx","vy","aligned","rx","ry","sx","sy","rasterize","getScaleOrigin","drawFrame","model","bgColor","drawRoundedRect","drawTextLine","shadow","shadowBlur","stroked","filled","Label","me","_index","_model","_rects","_el","_modelize","positioner","textShadowBlur","textShadowColor","tw","tx","ty","frame","geometry","textGeometry","shadowColor","drawText","MIN_INTEGER","MIN_SAFE_INTEGER","MAX_INTEGER","rotated","cx","cy","projected","dp","toAxis","HitBox","_rotation","_rect","coordinates","vs","intersects","pr0","pr1","axes","prepare","$layout","_hidable","_visible","_set","sa","sb","dirty","collider","s0","s1","collide","h0","compute","lookup","EXPANDO_KEY","callback$1","$groups","_dirty","handleMoveEvents","enter","leave","_labels","_hovered","dispatchMoveEvents","beforeInit","_actives","_listened","_datasets","afterDatasetUpdate","datalabels","configs","afterDatasetsDraw","beforeEvent","handleClickEvents","afterEvent","actives","getActiveElements","require","JQuery","ChartDataLabels","minutes","seconds","startTimer","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","loadCSPNonce","cspNonce","setData","csrfParam","csrfToken","CSRFProtection","refreshCSRFTokens","CustomEvent","createEvent","initCustomEvent","stopEverything","eventType","AcceptHeaders","createXHR","prepareOptions","processResponse","OPENED","accept","withCredentials","DONE","isCrossDomain","serializeElement","additionalParam","formElements","form","allowAction","handleConfirm","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","originalText","handleMethod","formContent","action","isRemote","handleRemote","enctype","FormData","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","rails","_rails_loaded","Turbolinks","supported","history","pushState","visit","setProgressBarDelay","copyObject","Node","ELEMENT_NODE","throttle","u","initEvent","uuid","Location","absoluteURL","requestURL","getOrigin","getPath","getPathComponents","getLastPathComponent","getExtension","isHTML","isPrefixedBy","isEqualTo","toCacheKey","valueOf","HttpRequest","requestCanceled","requestTimedOut","requestFailed","requestLoaded","requestProgressed","referrer","NETWORK_FAILURE","TIMEOUT_FAILURE","sent","notifyApplicationBeforeRequestStart","setProgress","requestStarted","lengthComputable","endRequest","requestCompletedWithResponse","failed","requestFailedWithStatusCode","notifyApplicationAfterRequestEnd","onprogress","requestFinished","ProgressBar","trickle","stylesheetElement","createStylesheetElement","progressElement","createProgressElement","defaultCSS","installStylesheetElement","installProgressElement","startTrickling","hiding","fadeProgressElement","uninstallProgressElement","stopTrickling","setValue","trickleInterval","BrowserAdapter","showProgressBar","progressBar","visitProposedToLocationWithAction","startVisitToLocationWithAction","visitStarted","issueRequest","changeHistory","loadCachedSnapshot","visitRequestStarted","hasCachedSnapshot","showProgressBarAfterDelay","visitRequestProgressed","visitRequestCompleted","loadResponse","visitRequestFailedWithStatusCode","reload","visitRequestFinished","hideProgressBar","visitCompleted","followRedirect","pageInvalidated","progressBarTimeout","progressBarDelay","History","onPageLoad","onPopState","shouldHandlePopState","turbolinks","restorationIdentifier","historyPoppedToLocationWithRestorationIdentifier","pageLoaded","pageIsLoaded","HeadDetails","tracked","fromHeadElement","hasElementWithKey","getTrackedElementSignature","getScriptElementsNotInDetails","getElementsMatchingTypeNotInDetails","getStylesheetElementsNotInDetails","getProvisionalElements","getMetaValue","findMetaElementByName","Snapshot","headDetails","bodyElement","fromHTMLString","fromHTMLElement","getRootLocation","getSetting","getCacheControlValue","getElementForAnchor","getPermanentElements","getPermanentElementById","getPermanentElementsPresentInSnapshot","findFirstAutofocusableElement","hasAnchor","isPreviewable","isCacheable","isVisitable","Renderer","renderView","viewWillRender","newBody","viewRendered","invalidateView","viewInvalidated","createScriptElement","__super__","SnapshotRenderer","currentSnapshot","newSnapshot","isPreview","currentHeadDetails","newHeadDetails","currentBody","shouldRender","mergeHead","replaceBody","focusFirstAutofocusableElement","copyNewHeadStylesheetElements","copyNewHeadScriptElements","removeCurrentHeadProvisionalElements","copyNewHeadProvisionalElements","relocateCurrentBodyPermanentElements","activateNewBodyScriptElements","assignNewBody","replacePlaceholderElementsWithClonedPermanentElements","trackedElementsAreIdentical","getNewHeadStylesheetElements","getNewHeadScriptElements","getCurrentHeadProvisionalElements","getNewHeadProvisionalElements","getCurrentBodyPermanentElements","permanentElement","getNewBodyScriptElements","ErrorRenderer","newHead","replaceHeadAndBody","activateBodyScriptElements","getScriptElements","View","htmlElement","getSnapshot","snapshot","markAsPreview","renderSnapshot","renderError","ScrollManager","onScroll","scrollToElement","scrollIntoView","scrollToPosition","updatePosition","scrollPositionChanged","SnapshotCache","snapshots","touch","put","Visit","performScroll","timingMetrics","recordTimingMetric","cancelRender","visitFailed","historyChanged","shouldIssueRequest","getCachedSnapshot","getCachedSnapshotForLocation","cacheSnapshot","visitRendered","redirectedToLocation","followedRedirect","replaceHistoryWithLocationAndRestorationIdentifier","scrolled","scrollToRestoredPosition","scrollToTop","scrollToAnchor","restorationData","scrollPosition","getTimingMetrics","snapshotCached","cancelAnimationFrame","Controller","clickBubbled","clickCaptured","scrollManager","startHistory","stopHistory","applicationAllowsVisitingLocation","locationIsVisitable","getRestorationDataForIdentifier","startVisit","pushHistoryWithLocationAndRestorationIdentifier","shouldCacheSnapshot","notifyApplicationBeforeCachingSnapshot","lastRenderedLocation","getCurrentRestorationData","notifyApplicationBeforeRender","currentVisit","notifyApplicationAfterRender","notifyApplicationAfterPageLoad","clickEventIsSignificant","getVisitableLinkForNode","getVisitableLocationForLink","applicationAllowsFollowingLinkToLocation","getActionForLink","notifyApplicationAfterClickingLinkToLocation","notifyApplicationBeforeVisitingLocation","notifyApplicationAfterVisitingLocation","timing","createVisit","isContentEditable","nodeIsVisitable","currentScript","sparkMd5","createCommonjsModule","hex_chr","md5cycle","md5blk","md5blks","md5blk_array","md51","tail","rhex","toUtf8","unescape","hexToBinaryString","substr","SparkMD5","ArrayBuffer","targetArray","sourceArray","byteLength","begin","Uint8Array","appendBinary","_buff","_hash","buff","_finish","getState","setState","hashBinary","returnUInt8Array","buffer","subarray","utf8Str2ArrayBuffer","md51_array","classCallCheck","Constructor","createClass","protoProps","staticProps","fileSlice","File","mozSlice","webkitSlice","FileChecksum","chunkSize","chunkCount","chunkIndex","_this","md5Buffer","fileReader","FileReader","fileReaderDidLoad","fileReaderDidError","readNextChunk","binaryDigest","base64digest","btoa","readAsArrayBuffer","findElement","eventInit","toArray$1","BlobRecord","checksum","content_type","byte_size","requestDidLoad","requestDidError","blob","direct_upload","directUploadData","_xhr","BlobUpload","_blob$directUploadDat","DirectUpload","upload","methodName","DirectUploadController","directUpload","hiddenInput","dispatchError","signed_id","alert","_this2","uploadRequestDidProgress","DirectUploadsController","createDirectUploadControllers","startNextController","submitButtonsByForm","didClick","didSubmitForm","didSubmitRemoteElement","handleFormSubmissionEvent","enable","submitForm","ActiveStorage","channels","webpackEmptyContext","req","getSelector","hrefAttribute","getSelectorFromElement","getElementFromSelector","getTransitionDurationFromElement","_window$getComputedSt","transitionDuration","transitionDelay","floatTransitionDuration","floatTransitionDelay","triggerTransitionEnd","elementIsVisible","closedDetails","summary","findShadowRoot","attachShadow","reflow","getjQuery","DOMContentLoadedCallbacks","isRTL","defineJQueryPlugin","NAME","JQUERY_NO_CONFLICT","jQueryInterface","execute","executeAfterTransition","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","getNextActiveElement","shouldGetNext","isCycleAllowed","listLength","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","nativeEvents","makeEventUid","getElementEvents","findHandler","callable","delegationSelector","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","oneOff","_normalizeParameters2","wrapFunction","previousFunction","domElements","domElement","hydrateObj","EventHandler","bootstrapDelegationHandler","bootstrapHandler","removeHandler","removeNamespacedHandlers","storeElementEvent","handlerKey","_normalizeParameters4","inNamespace","isNamespace","elementEvent","keyHandlers","jQueryEvent","nativeDispatch","_unused","elementMap","instanceMap","normalizeData","decodeURIComponent","normalizeDataKey","chr","Manipulator","bsKeys","pureKey","getDataAttribute","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","Default","getDataAttributes","configTypes","DefaultType","expectedTypes","valueType","BaseComponent","_getConfig","DATA_KEY","EVENT_KEY","propertyName","getInstance","enableDismissTrigger","clickEvent","getOrCreateInstance","Alert","isAnimated","_queueCallback","_destroyElement","dispose","Button","SelectorEngine","ancestor","previousElementSibling","nextElementSibling","focusables","Default$c","endCallback","leftCallback","rightCallback","DefaultType$c","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_eventIsPointerPenTouch","_handleSwipe","absDeltaX","_end","_move","KEY_TO_DIRECTION","Default$b","keyboard","pause","ride","DefaultType$b","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","findOne","_addEventListeners","cycle","_slide","_clearInterval","_updateInterval","nextWhenVisible","_getItems","activeIndex","_getItemIndex","_getActive","defaultInterval","_keydown","_maybeEnableCycle","_addTouchEventListeners","img","swipeConfig","_directionToOrder","activeIndicator","newActiveIndicator","elementInterval","isNext","nextElement","nextElementIndex","triggerEvent","eventName","_orderToDirection","isCycling","_setActiveIndicatorElement","directionalClassName","orderClassName","_isAnimated","SELECTOR_ACTIVE","carousel","slideIndex","carousels","Default$a","DefaultType$a","Collapse","_isTransitioning","_triggerArray","toggleList","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","activeChildren","_getFirstLevelChildren","activeInstance","_getDimension","scrollSize","triggerArray","isOpen","selectorElements","ARROW_UP_KEY$1","ARROW_DOWN_KEY$1","SELECTOR_DATA_TOGGLE$3","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","Default$9","autoClose","popperConfig","DefaultType$9","Dropdown","_popper","_parent","_menu","_inNavbar","_detectNavbar","_createPopper","_completeHide","removeDataAttribute","referenceElement","_getPopperConfig","parentDropdown","isEnd","popperData","defaultBsPopperConfig","_getPlacement","_getOffset","setDataAttribute","openToggles","composedPath","isMenuTarget","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","_selectMenuItem","dataApiKeydownHandler","clearMenus","ScrollBarHelper","documentWidth","innerWidth","getWidth","_disableOverFlow","_setElementAttributes","calculatedValue","_resetElementAttributes","_saveInitialAttribute","styleProperty","_applyManipulationCallback","actualValue","callBack","Default$8","clickCallback","rootElement","DefaultType$8","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","Default$7","autofocus","trapElement","DefaultType$7","FocusTrap","_isActive","_lastTabNavDirection","_handleFocusin","_handleKeydown","focusableChildren","Default$6","DefaultType$6","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_scrollBar","_adjustDialog","_showElement","deactivate","_hideModal","modalBody","activate","_triggerBackdropTransition","event2","_resetAdjustments","isModalOverflowing","initialOverflowY","isBodyOverflowing","showEvent","alreadyOpen","EVENT_KEY$3","EVENT_LOAD_DATA_API$2","EVENT_CLICK_DATA_API$1","Default$5","DefaultType$5","Offcanvas","uriAttributes","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","attributeName","attributeRegex","regex","DefaultAllowlist","br","em","hr","h3","h4","h5","h6","li","ol","small","sup","strong","ul","Default$4","allowList","extraClass","sanitize","sanitizeFn","DefaultType$4","DefaultContentType","TemplateFactory","_resolvePossibleFunction","getContent","_checkContent","templateWrapper","_maybeSanitize","_setContent","templateElement","_putElementInTemplate","unsafeHtml","sanitizeFunction","createdDocument","elementName","attributeList","sanitizeHtml","DISALLOWED_ATTRIBUTES","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$3","DefaultType$3","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","_leave","_enter","_hideModalHandler","_disposePopper","_isWithContent","isInTheDom","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","toHtml","tipId","getUID","changeContent","_getDelegateConfig","attachment","triggers","_initializeOnDelegatedTarget","eventIn","eventOut","_setTimeout","dataAttributes","dataAttribute","Default$2","DefaultType$2","Popover","_getContent","Default$1","rootMargin","smoothScroll","threshold","DefaultType$1","ScrollSpy","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","observableSection","behavior","IntersectionObserver","_observerCallback","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","_activateParents","listGroup","activeNodes","spy","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","SELECTOR_DATA_TOGGLE","SELECTOR_INNER_ELEM","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleDropDown","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","isInteracting","_onInteraction"],"mappings":"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","file":"js/application-8624b9d583af56d79cfa.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 48);\n","/*!\n * Chart.js v4.4.3\n * https://www.chartjs.org\n * (c) 2024 Chart.js Contributors\n * Released under the MIT License\n */\nimport { Color } from '@kurkle/color';\n\n/**\n * @namespace Chart.helpers\n */ /**\n * An empty function that can be used, for example, for optional callback.\n */\nfunction noop() {\n /* noop */}\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */\nconst uid = (() => {\n let id = 0;\n return () => id++;\n})();\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value - The value to test.\n */\nfunction isNumberFinite(value) {\n return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) => typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 : +value / dimension;\nconst toDimension = (value, dimension) => typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 * dimension : +value;\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */\nfunction clone(source) {\n if (isArray(source)) {\n return source.map(clone);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n merge(tval, sval, options);\n } else {\n target[key] = clone(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n let current;\n for (let i = 0; i < ilen; ++i) {\n current = sources[i];\n if (!isObject(current)) {\n continue;\n }\n const keys = Object.keys(current);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, current, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return merge(target, source, {\n merger: _mergerIf\n });\n}\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone(sval);\n }\n}\n/**\n * @private\n */\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous + '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n// resolveObjectKey resolver cache\nconst keyResolvers = {\n // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n '': v => v,\n // default resolvers\n x: o => o.x,\n y: o => o.y\n};\n/**\n * @private\n */\nfunction _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\n/**\n * @private\n */\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = value => typeof value !== 'undefined';\nconst isFunction = value => typeof value === 'function';\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\n/**\n * @param e - The event\n * @private\n */\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return rounded - epsilon <= x && rounded + epsilon >= x;\n}\n/**\n * @private\n */\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\n// Gets the angle from vertical upright to the point about a centre.\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < -0.5 * PI) {\n angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n }\n\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\n/**\n * @private\n */\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || sameAngleIsFullCircle && s === e || angleToStart > angleToEnd && startToAngle < endToAngle;\n}\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n/**\n * @param {number} value\n * @private\n */\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */\nfunction _isBetween(value, start, end) {\n let epsilon = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1e-6;\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\nfunction _lookup(table, value, cmp) {\n cmp = cmp || (index => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = lo + hi >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {\n lo,\n hi\n };\n}\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */\nconst _lookupByKey = (table, key, value, last) => _lookup(table, value, last ? index => {\n const ti = table[index][key];\n return ti < value || ti === value && table[index + 1][key] === value;\n} : index => table[index][key] < value);\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */\nconst _rlookupByKey = (table, key, value) => _lookup(table, value, index => table[index][key] >= value);\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length ? values.slice(start, end) : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach(key => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach(object => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach(key => {\n delete array[key];\n });\n delete array._chartjs;\n}\n/**\n * @param items\n */\nfunction _arrayUnique(items) {\n const set = new Set(items);\n if (set.size === items.length) {\n return items;\n }\n return Array.from(set);\n}\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n/**\n* Request animation polyfill\n*/\nconst requestAnimFrame = function () {\n if (typeof window === 'undefined') {\n return function (callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}();\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */\nfunction throttled(fn, thisArg) {\n let argsToUse = [];\n let ticking = false;\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n // Save the args for use later\n argsToUse = args;\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, argsToUse);\n });\n }\n };\n}\n/**\n * Debounces calling `fn` for `delay` ms\n */\nfunction debounce(fn, delay) {\n let timeout;\n return function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */\nconst _toLeftRightCenter = align => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n/**\n * Return start and count of visible points.\n * @private\n */\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const iScale = meta.iScale,\n _parsed = meta._parsed;\n const axis = iScale.axis;\n const _iScale$getUserBounds = iScale.getUserBounds(),\n min = _iScale$getUserBounds.min,\n max = _iScale$getUserBounds.max,\n minDefined = _iScale$getUserBounds.minDefined,\n maxDefined = _iScale$getUserBounds.maxDefined;\n if (minDefined) {\n start = _limitValue(Math.min(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, axis, min).lo,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo), 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1), start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {\n start,\n count\n };\n}\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */\nfunction _scaleRangesChanged(meta) {\n const xScale = meta.xScale,\n yScale = meta.yScale,\n _scaleRanges = meta._scaleRanges;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min || _scaleRanges.xmax !== xScale.max || _scaleRanges.ymin !== yScale.min || _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\nconst atEdge = t => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => (t /= 0.5) < 1 ? 0.5 * t * t : -0.5 * (--t * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => (t /= 0.5) < 1 ? 0.5 * t * t * t : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => (t /= 0.5) < 1 ? 0.5 * t * t * t * t : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => (t /= 0.5) < 1 ? 0.5 * t * t * t * t * t : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => t === 0 ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => t === 1 ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5 ? 0.5 * Math.pow(2, 10 * (t * 2 - 1)) : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => t >= 1 ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => (t /= 0.5) < 1 ? -0.5 * (Math.sqrt(1 - t * t) - 1) : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t : t < 0.5 ? 0.5 * elasticIn(t * 2, s, p) : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= 1.525) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < 1 / d) {\n return m * t * t;\n }\n if (t < 2 / d) {\n return m * (t -= 1.5 / d) * t + 0.75;\n }\n if (t < 2.5 / d) {\n return m * (t -= 2.25 / d) * t + 0.9375;\n }\n return m * (t -= 2.625 / d) * t + 0.984375;\n },\n easeInOutBounce: t => t < 0.5 ? effects.easeInBounce(t * 2) * 0.5 : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5\n};\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : new Color(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value) ? value : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\nfunction applyAnimationsDefaults(defaults) {\n defaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined\n });\n defaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: name => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn'\n });\n defaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n }\n });\n defaults.describe('animations', {\n _fallback: 'animation'\n });\n defaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n }\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\n }\n }\n }\n });\n}\nfunction applyLayoutsDefaults(defaults) {\n defaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n });\n}\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {\n notation,\n minimumFractionDigits: numDecimal,\n maximumFractionDigits: numDecimal\n };\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = ticks[index].significand || tickValue / Math.pow(10, Math.floor(log10(tickValue)));\n if ([1, 2, 3, 5, 10, 15].includes(remain) || index > 0.8 * ticks.length) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {\n formatters\n};\nfunction applyScaleDefaults(defaults) {\n defaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n clip: true,\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false\n },\n border: {\n display: true,\n dash: [],\n dashOffset: 0.0,\n width: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2\n }\n });\n defaults.route('scale.ticks', 'color', '', 'color');\n defaults.route('scale.grid', 'color', '', 'borderColor');\n defaults.route('scale.border', 'color', '', 'borderColor');\n defaults.route('scale.title', 'color', '', 'color');\n defaults.describe('scale', {\n _fallback: false,\n _scriptable: name => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: name => name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash'\n });\n defaults.describe('scales', {\n _fallback: 'scale'\n });\n defaults.describe('scale.ticks', {\n _scriptable: name => name !== 'backdropPadding' && name !== 'callback',\n _indexable: name => name !== 'backdropPadding'\n });\n}\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors, _appliers) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = context => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n this.apply(_appliers);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n apply(appliers) {\n appliers.forEach(apply => apply(this));\n }\n}\nvar defaults = /* #__PURE__ */new Defaults({\n _scriptable: name => !name.startsWith('on'),\n _indexable: name => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false\n }\n}, [applyAnimationsDefaults, applyLayoutsDefaults, applyScaleDefaults]);\n\n/**\n * Converts the given font object into a CSS font string.\n * @param font - A font object.\n * @return The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '') + (font.weight ? font.weight + ' ' : '') + font.size + 'px ' + font.family;\n}\n/**\n * @private\n */\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\n/**\n * @private\n */ // eslint-disable-next-line complexity\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n // Undefined strings and arrays should not be measured\n if (thing !== undefined && thing !== null && !isArray(thing)) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n // if it is an array lets measure each element\n // to do maybe simplify this function a bit so we can do this more recursively?\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n // Undefined strings and arrays should not be measured\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\n/**\n * Returns the aligned pixel value to avoid anti-aliasing blur\n * @param chart - The chart instance.\n * @param pixel - A pixel value.\n * @param width - The width of the element.\n * @returns The aligned pixel value.\n * @private\n */\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n/**\n * Clears the entire canvas.\n */\nfunction clearCanvas(canvas, ctx) {\n if (!ctx && !canvas) {\n return;\n }\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n // canvas.width and canvas.height do not consider the canvas transform,\n // while clearRect does\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n drawPointLegend(ctx, options, x, y, null);\n}\n// eslint-disable-next-line complexity\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width, xOffsetW, yOffsetW;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n // Default includes circle\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n width = w ? w / 2 : radius;\n ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n // NOTE: the rounded rect implementation changed to use `arc` instead of\n // `quadraticCurveTo` since it generates better results when rect is\n // almost a circle. 0.516 (instead of 0.5) produces results with visually\n // closer proportion to the previous impl and it is inscribed in the\n // circle with `radius`. For more details, see the following PRs:\n // https://github.com/chartjs/Chart.js/issues/5597\n // https://github.com/chartjs/Chart.js/issues/5858\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n /* falls through */\n case 'rectRot':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n /* falls through */\n case 'cross':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'star':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n rad += QUARTER_PI;\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n break;\n case false:\n ctx.closePath();\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n/**\n * Returns true if the point is inside the rectangle\n * @param point - The point to test\n * @param area - The rectangle\n * @param margin - allowed margin\n * @private\n */\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5; // margin - default is to match rounded decimals\n return !area || point && point.x > area.left - margin && point.x < area.right + margin && point.y > area.top - margin && point.y < area.bottom + margin;\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\n/**\n * @private\n */\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\n/**\n * @private\n */\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(flip ? previous.cp1x : previous.cp2x, flip ? previous.cp1y : previous.cp2y, flip ? target.cp2x : target.cp1x, flip ? target.cp2y : target.cp1y, target.x, target.y);\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n /**\n * Now that IE11 support has been dropped, we can use more\n * of the TextMetrics object. The actual bounding boxes\n * are unflagged in Chrome, Firefox, Edge, and Safari so they\n * can be safely used.\n * See https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics#Browser_compatibility\n */\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction drawBackdrop(ctx, opts) {\n const oldColor = ctx.fillStyle;\n ctx.fillStyle = opts.color;\n ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n ctx.fillStyle = oldColor;\n}\n/**\n * Render text onto the canvas\n */\nfunction renderText(ctx, text, x, y, font) {\n let opts = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (opts.backdrop) {\n drawBackdrop(ctx, opts.backdrop);\n }\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += Number(font.lineHeight);\n }\n ctx.restore();\n}\n/**\n * Add a path of a rectangle with rounded corners to the current sub-path\n * @param ctx - Context\n * @param rect - Bounding rect\n */\nfunction addRoundedRectPath(ctx, rect) {\n const x = rect.x,\n y = rect.y,\n w = rect.w,\n h = rect.h,\n radius = rect.radius;\n // top left arc\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, 1.5 * PI, PI, true);\n // line from top left to bottom left\n ctx.lineTo(x, y + h - radius.bottomLeft);\n // bottom left arc\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n // line from bottom left to bottom right\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n // bottom right arc\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n // line from bottom right to top right\n ctx.lineTo(x + w, y + radius.topRight);\n // top right arc\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n // line from top right to top left\n ctx.lineTo(x + radius.topLeft, y);\n}\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n/**\n * @alias Chart.helpers.options\n * @namespace\n */ /**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value) ? objProps ? prop => valueOrDefault(value[prop], value[props[prop]]) : prop => value[prop] : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */\nfunction toTRBL(value) {\n return _readValueToProps(value, {\n top: 'y',\n right: 'x',\n bottom: 'y',\n left: 'x'\n });\n}\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = undefined;\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */\nfunction _addGrace(minmax, grace, beginAtZero) {\n const min = minmax.min,\n max = minmax.max;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\n/**\n * Creates a Proxy for resolving raw values for options.\n * @param scopes - The option scopes to look for values, in resolution order\n * @param prefixes - The prefixes for values, in resolution order.\n * @param rootScopes - The root option scopes\n * @param fallback - Parent scopes fallback\n * @param getTarget - callback for getting the target for changed values\n * @returns Proxy\n * @private\n */\nfunction _createResolver(scopes) {\n let prefixes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [''];\n let rootScopes = arguments.length > 2 ? arguments[2] : undefined;\n let fallback = arguments.length > 3 ? arguments[3] : undefined;\n let getTarget = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : () => scopes[0];\n const finalRootScopes = rootScopes || scopes;\n if (typeof fallback === 'undefined') {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: finalRootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: scope => _createResolver([scope, ...scopes], prefixes, finalRootScopes, fallback)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */\n deleteProperty(target, prop) {\n delete target[prop]; // remove from cache\n delete target._keys; // remove cached keys\n delete scopes[0][prop]; // remove from top level scope\n return true;\n },\n /**\n * A trap for getting property values.\n */\n get(target, prop) {\n return _cached(target, prop, () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n /**\n * A trap for Object.getPrototypeOf.\n */\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n /**\n * A trap for the in operator.\n */\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n /**\n * A trap for setting property values.\n */\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value; // set to top level scope + cache\n delete target._keys; // remove cached keys\n return true;\n }\n });\n}\n/**\n * Returns an Proxy for resolving option values with context.\n * @param proxy - The Proxy returned by `_createResolver`\n * @param context - Context object for scriptable/indexable options\n * @param subProxy - The proxy provided for scriptable options\n * @param descriptorDefaults - Defaults for descriptors\n * @private\n */\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: ctx => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: scope => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */\n deleteProperty(target, prop) {\n delete target[prop]; // remove from cache\n delete proxy[prop]; // remove from proxy\n return true;\n },\n /**\n * A trap for getting property values.\n */\n get(target, prop, receiver) {\n return _cached(target, prop, () => _resolveWithContext(target, prop, receiver));\n },\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys ? Reflect.has(proxy, prop) ? {\n enumerable: true,\n configurable: true\n } : undefined : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n /**\n * A trap for Object.getPrototypeOf.\n */\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n /**\n * A trap for the in operator.\n */\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n /**\n * A trap for setting property values.\n */\n set(target, prop, value) {\n proxy[prop] = value; // set to proxy\n delete target[prop]; // remove from cache\n return true;\n }\n });\n}\n/**\n * @private\n */\nfunction _descriptors(proxy) {\n let defaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n scriptable: true,\n indexable: true\n };\n const _proxy$_scriptable = proxy._scriptable,\n _scriptable = _proxy$_scriptable === void 0 ? defaults.scriptable : _proxy$_scriptable,\n _proxy$_indexable = proxy._indexable,\n _indexable = _proxy$_indexable === void 0 ? defaults.indexable : _proxy$_indexable,\n _proxy$_allKeys = proxy._allKeys,\n _allKeys = _proxy$_allKeys === void 0 ? defaults.allKeys : _proxy$_allKeys;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' && (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop) || prop === 'constructor') {\n return target[prop];\n }\n const value = resolve();\n // cache the resolved value\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const _proxy = target._proxy,\n _context = target._context,\n _subProxy = target._subProxy,\n descriptors = target._descriptors;\n let value = _proxy[prop]; // resolve from proxy\n // resolve with context\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n // if the resolved value is an object, create a sub resolver for it\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, getValue, target, receiver) {\n const _proxy = target._proxy,\n _context = target._context,\n _subProxy = target._subProxy,\n _stack = target._stack;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n let value = getValue(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n // When scriptable option returns an object, create a resolver on that.\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const _proxy = target._proxy,\n _context = target._context,\n _subProxy = target._subProxy,\n descriptors = target._descriptors;\n if (typeof _context.index !== 'undefined' && isIndexable(prop)) {\n return value[_context.index % value.length];\n } else if (isObject(value[0])) {\n // Array of objects, return array or resolvers\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (typeof fallback !== 'undefined' && fallback !== key && fallback !== parentFallback) {\n // When we reach the descriptor that defines a new _fallback, return that.\n // The fallback will resume to that new scope.\n return fallback;\n }\n } else if (scope === false && typeof parentFallback !== 'undefined' && key !== parentFallback) {\n // Fallback to `false` results to `false`, when falling back to different key.\n // For example `interaction` from `hover` or `plugins.tooltip` and `animation` from `animations`\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (typeof fallback !== 'undefined' && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback, () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n // For array of objects, the object is used to store updated values\n return value;\n }\n return target || {};\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (typeof value !== 'undefined') {\n return needsSubResolver(prop, value) ? createSubResolver(scopes, proxy, prop, value) : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (typeof value !== 'undefined') {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const iScale = meta.iScale;\n const _this$_parsing$key = this._parsing.key,\n key = _this$_parsing$key === void 0 ? 'r' : _this$_parsing$key;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = indexAxis => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n // This function must also respect \"skipped\" points\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01; // scaling factor for triangle Ta\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n/**\n * Adjust tangents to ensure monotonic properties\n */\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK) {\n let indexAxis = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'x';\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */\nfunction splineCurveMonotone(points) {\n let indexAxis = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'x';\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n // Calculate slopes (deltaK) and initialize tangents (mK)\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i] : !pointAfter ? deltaK[i - 1] : sign(deltaK[i - 1]) !== sign(deltaK[i]) ? 0 : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n/**\n * @private\n */\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n // Only consider points that are drawn in case the spanGaps option is used\n if (options.spanGaps) {\n points = points.filter(pt => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(prev, point, points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen], options.tension);\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\n/**\n * Note: typedefs are auto-exported, so use a made-up `dom` namespace where\n * necessary to avoid duplicates with `export * from './helpers`; see\n * https://github.com/microsoft/TypeScript/issues/46011\n * @typedef { import('../core/core.controller.js').default } dom.Chart\n * @typedef { import('../../types').ChartEvent } ChartEvent\n */ /**\n * @private\n */\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * @private\n */\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = element => element.ownerDocument.defaultView.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */\nfunction getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const offsetX = source.offsetX,\n offsetY = source.offsetY;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {\n x,\n y,\n box\n };\n}\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */\nfunction getRelativePosition(event, chart) {\n if ('native' in event) {\n return event;\n }\n const canvas = chart.canvas,\n currentDevicePixelRatio = chart.currentDevicePixelRatio;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const _getCanvasPosition = getCanvasPosition(event, canvas),\n x = _getCanvasPosition.x,\n y = _getCanvasPosition.y,\n box = _getCanvasPosition.box;\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let width = chart.width,\n height = chart.height;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect(); // this is the border box of the container\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\n// eslint-disable-next-line complexity\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let width = containerSize.width,\n height = containerSize.height;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n // https://github.com/chartjs/Chart.js/issues/4659\n // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n height = round1(width / 2);\n }\n const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n height = containerSize.height;\n width = round1(Math.floor(height * aspectRatio));\n }\n return {\n width,\n height\n };\n}\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = Math.floor(chart.height);\n chart.width = Math.floor(chart.width);\n const canvas = chart.canvas;\n // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n if (canvas.style && (forceStyle || !canvas.style.height && !canvas.style.width)) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio || canvas.height !== deviceHeight || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nconst supportsEventListenerOptions = function () {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n if (_isDomSupported()) {\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n }\n } catch (e) {\n // continue regardless of error\n }\n return passiveSupported;\n}();\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\n/**\n * @private\n */\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n/**\n * @private\n */\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y : mode === 'after' ? t < 1 ? p1.y : p2.y : t > 0 ? p2.y : p1.y\n };\n}\n/**\n * @private\n */\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {\n x: p1.cp2x,\n y: p1.cp2y\n };\n const cp2 = {\n x: p2.cp1x,\n y: p2.cp1y\n };\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\nconst getRightToLeftAdapter = function (rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n }\n };\n};\nconst getLeftToRightAdapter = function () {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {},\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n }\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [style.getPropertyValue('direction'), style.getPropertyPriority('direction')];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment(_ref) {\n let start = _ref.start,\n end = _ref.end,\n count = _ref.count,\n loop = _ref.loop,\n style = _ref.style;\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const property = bounds.property,\n startBound = bounds.start,\n endBound = bounds.end;\n const _propertyFn = propertyFn(property),\n between = _propertyFn.between,\n normalize = _propertyFn.normalize;\n const count = points.length;\n let start = segment.start,\n end = segment.end,\n loop = segment.loop;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {\n start,\n end,\n loop,\n style: segment.style\n };\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const property = bounds.property,\n startBound = bounds.start,\n endBound = bounds.end;\n const count = points.length;\n const _propertyFn2 = propertyFn(property),\n compare = _propertyFn2.compare,\n between = _propertyFn2.between,\n normalize = _propertyFn2.normalize;\n const _getSegment = getSegment(segment, points, bounds),\n start = _getSegment.start,\n end = _getSegment.end,\n loop = _getSegment.loop,\n style = _getSegment.style;\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({\n start: subStart,\n end: i,\n loop,\n count,\n style\n }));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({\n start: subStart,\n end,\n loop,\n count,\n style\n }));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {\n start,\n end\n };\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({\n start: start % count,\n end: (end - 1) % count,\n loop\n });\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({\n start: start % count,\n end: last % count,\n loop\n });\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const _findStartAndEnd = findStartAndEnd(points, count, loop, spanGaps),\n start = _findStartAndEnd.start,\n end = _findStartAndEnd.end;\n if (spanGaps === true) {\n return splitByStyles(line, [{\n start,\n end,\n loop\n }], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const datasetIndex = line._datasetIndex,\n spanGaps = line.options.spanGaps;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({\n start: s % count,\n end: e % count,\n loop: l,\n style: st\n });\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n if (!prevStyle) {\n return false;\n }\n const cache = [];\n const replacer = function (key, value) {\n if (!isPatternOrGradient(value)) {\n return value;\n }\n if (!cache.includes(value)) {\n cache.push(value);\n }\n return cache.indexOf(value);\n };\n return JSON.stringify(style, replacer) !== JSON.stringify(prevStyle, replacer);\n}\nexport { unclipArea as $, _rlookupByKey as A, _lookupByKey as B, _isPointInArea as C, getAngleFromPoint as D, toPadding as E, each as F, getMaximumSize as G, HALF_PI as H, _getParentNode as I, readUsedSize as J, supportsEventListenerOptions as K, throttled as L, _isDomSupported as M, _factorize as N, finiteOrDefault as O, PI as P, callback as Q, _addGrace as R, _limitValue as S, TAU as T, toDegrees as U, _measureText as V, _int16Range as W, _alignPixel as X, clipArea as Y, renderText as Z, _arrayUnique as _, resolve as a, fontString as a$, toFont as a0, _toLeftRightCenter as a1, _alignStartEnd as a2, overrides as a3, merge as a4, _capitalize as a5, descriptors as a6, isFunction as a7, _attachContext as a8, _createResolver as a9, overrideTextDirection as aA, _textX as aB, restoreTextDirection as aC, drawPointLegend as aD, distanceBetweenPoints as aE, noop as aF, _setMinAndMaxByKey as aG, niceNum as aH, almostWhole as aI, almostEquals as aJ, _decimalPlaces as aK, Ticks as aL, log10 as aM, _longestText as aN, _filterBetween as aO, _lookup as aP, isPatternOrGradient as aQ, getHoverColor as aR, clone as aS, _merger as aT, _mergerIf as aU, _deprecated as aV, _splitKey as aW, toFontString as aX, splineCurve as aY, splineCurveMonotone as aZ, getStyle as a_, _descriptors as aa, mergeIf as ab, uid as ac, debounce as ad, retinaScale as ae, clearCanvas as af, setsEqual as ag, _elementsEqual as ah, _isClickEvent as ai, _isBetween as aj, _readValueToProps as ak, _updateBezierControlPoints as al, _computeSegments as am, _boundSegments as an, _steppedInterpolation as ao, _bezierInterpolation as ap, _pointInLine as aq, _steppedLineTo as ar, _bezierCurveTo as as, drawPoint as at, addRoundedRectPath as au, toTRBL as av, toTRBLCorners as aw, _boundSegment as ax, _normalizeAngle as ay, getRtlAdapter as az, isArray as b, toLineHeight as b0, PITAU as b1, INFINITY as b2, RAD_PER_DEG as b3, QUARTER_PI as b4, TWO_THIRDS_PI as b5, _angleDiff as b6, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, defined as h, isObject as i, createContext as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, getRelativePosition as z };","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import getWindow from \"./getWindow.js\";\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n return node;\n}","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/*!\n * Chart.js v4.4.3\n * https://www.chartjs.org\n * (c) 2024 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, i as isObject, d as defaults, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as defined, s as sign, j as createContext, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as getRelativePosition, A as _rlookupByKey, B as _lookupByKey, C as _isPointInArea, D as getAngleFromPoint, E as toPadding, F as each, G as getMaximumSize, I as _getParentNode, J as readUsedSize, K as supportsEventListenerOptions, L as throttled, M as _isDomSupported, N as _factorize, O as finiteOrDefault, Q as callback, R as _addGrace, S as _limitValue, U as toDegrees, V as _measureText, W as _int16Range, X as _alignPixel, Y as clipArea, Z as renderText, $ as unclipArea, a0 as toFont, a1 as _toLeftRightCenter, a2 as _alignStartEnd, a3 as overrides, a4 as merge, a5 as _capitalize, a6 as descriptors, a7 as isFunction, a8 as _attachContext, a9 as _createResolver, aa as _descriptors, ab as mergeIf, ac as uid, ad as debounce, ae as retinaScale, af as clearCanvas, ag as setsEqual, ah as _elementsEqual, ai as _isClickEvent, aj as _isBetween, ak as _readValueToProps, al as _updateBezierControlPoints, am as _computeSegments, an as _boundSegments, ao as _steppedInterpolation, ap as _bezierInterpolation, aq as _pointInLine, ar as _steppedLineTo, as as _bezierCurveTo, at as drawPoint, au as addRoundedRectPath, av as toTRBL, aw as toTRBLCorners, ax as _boundSegment, ay as _normalizeAngle, az as getRtlAdapter, aA as overrideTextDirection, aB as _textX, aC as restoreTextDirection, aD as drawPointLegend, aE as distanceBetweenPoints, aF as noop, aG as _setMinAndMaxByKey, aH as niceNum, aI as almostWhole, aJ as almostEquals, aK as _decimalPlaces, aL as Ticks, aM as log10, aN as _longestText, aO as _filterBetween, aP as _lookup } from './chunks/helpers.segment.js';\nimport '@kurkle/color';\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update() {\n let date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Date.now();\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = /* #__PURE__ */new Animator();\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid ? c1.mix(c0, factor).hexString() : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || elapsed < duration);\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = elapsed / duration % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({\n res,\n rej\n });\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animationOptions = Object.keys(defaults.animation);\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach(prop => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {});\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {\n $shared: false,\n $animations: {}\n });\n }\n return options;\n}\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || value === 0 || sign(value) === sign(otherValue))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data, meta) {\n const iScale = meta.iScale,\n vScale = meta.vScale;\n const iAxisKey = iScale.axis === 'x' ? 'x' : 'y';\n const vAxisKey = vScale.axis === 'x' ? 'x' : 'y';\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n [iAxisKey]: key,\n [vAxisKey]: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || stacked === undefined && meta.stack !== undefined;\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const _scale$getUserBounds = scale.getUserBounds(),\n min = _scale$getUserBounds.min,\n max = _scale$getUserBounds.max,\n minDefined = _scale$getUserBounds.minDefined,\n maxDefined = _scale$getUserBounds.maxDefined;\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if (positive && value > 0 || !positive && value < 0) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const chart = controller.chart,\n meta = controller._cachedMeta;\n const stacks = chart._stacks || (chart._stacks = {});\n const iScale = meta.iScale,\n vScale = meta.vScale,\n datasetIndex = meta.index;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const index = item[iAxis],\n value = item[vAxis];\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n const visualValues = stack._visualValues || (stack._visualValues = {});\n visualValues[datasetIndex] = value;\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent, {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n });\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n delete stacks[axis]._visualValues[datasetIndex];\n }\n }\n}\nconst isDirectUpdateMode = mode => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked && {\n keys: getSortedDatasetIndices(chart, true),\n values: null\n};\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.datasetElementType = new.target.datasetElementType;\n this.dataElementType = new.target.dataElementType;\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n }\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale ? meta.vScale : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n const meta = this._cachedMeta;\n this._data = convertObjectDataToArray(data, meta);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const meta = this._cachedMeta,\n data = this._data;\n const iScale = meta.iScale,\n _stacked = meta._stacked;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || prev && cur[iAxis] < prev[iAxis];\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const iScale = meta.iScale,\n vScale = meta.vScale;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const xScale = meta.xScale,\n yScale = meta.yScale;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const xScale = meta.xScale,\n yScale = meta.yScale;\n const _this$_parsing = this._parsing,\n _this$_parsing$xAxisK = _this$_parsing.xAxisKey,\n xAxisKey = _this$_parsing$xAxisK === void 0 ? 'x' : _this$_parsing$xAxisK,\n _this$_parsing$yAxisK = _this$_parsing.yAxisKey,\n yAxisKey = _this$_parsing$yAxisK === void 0 ? 'y' : _this$_parsing$yAxisK;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]._visualValues\n };\n return applyStack(stack, value, meta.index, {\n mode\n });\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n const _getUserBounds = getUserBounds(otherScale),\n otherMin = _getUserBounds.min,\n otherMax = _getUserBounds.max;\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || elements.length - start;\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset ? this.resolveDatasetElementOptions(mode) : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context || (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context || (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType) {\n let mode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default';\n let index = arguments.length > 2 ? arguments[2] : undefined;\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active, mode);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || sharedOptions !== previouslySharedOptions;\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {\n sharedOptions,\n includeOptions\n };\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: !active && this.getSharedOptions(options) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const _ref of this._syncList) {\n var _ref2 = _slicedToArray(_ref, 3);\n const method = _ref2[0];\n const arg1 = _ref2[1];\n const arg2 = _ref2[2];\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count) {\n let resetNewElements = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = arr => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const _args2 = _slicedToArray(args, 3),\n method = _args2[0],\n arg1 = _args2[1],\n arg2 = _args2[2];\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.datasetElementType = null;\nDatasetController.dataElementType = null;\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - size / 2\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {\n start,\n end,\n reverse,\n top,\n bottom\n };\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {\n top: true,\n right: true,\n bottom: true,\n left: true\n };\n return;\n }\n const _borderProps = borderProps(properties),\n start = _borderProps.start,\n end = _borderProps.end,\n reverse = _borderProps.reverse,\n top = _borderProps.top,\n bottom = _borderProps.bottom;\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, _ref3, ratio) {\n let inflateAmount = _ref3.inflateAmount;\n properties.inflateAmount = inflateAmount === 'auto' ? ratio === 1 ? 0.33 : 0 : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const iScale = meta.iScale,\n vScale = meta.vScale;\n const _this$_parsing2 = this._parsing,\n _this$_parsing2$xAxis = _this$_parsing2.xAxisKey,\n xAxisKey = _this$_parsing2$xAxis === void 0 ? 'x' : _this$_parsing2$xAxis,\n _this$_parsing2$yAxis = _this$_parsing2.yAxisKey,\n yAxisKey = _this$_parsing2$yAxis === void 0 ? 'y' : _this$_parsing2$yAxis;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale,\n vScale = meta.vScale;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom) ? '[' + custom.start + ', ' + custom.end + ']' : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const index = this.index,\n vScale = this._cachedMeta.vScale;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const _this$_getSharedOptio = this._getSharedOptions(start, mode),\n sharedOptions = _this$_getSharedOptio.sharedOptions,\n includeOptions = _this$_getSharedOptio.includeOptions;\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {\n base,\n head: base\n } : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || index === stack._top || index === stack._bottom,\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const iScale = this._cachedMeta.iScale;\n const metasets = iScale.getMatchingVisibleMetas(this._type).filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = meta => {\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 || stacked === undefined && meta.stack === undefined) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = name !== undefined ? stacks.indexOf(name) : -1;\n return index === -1 ? stacks.length - 1 : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const _this$_cachedMeta = this._cachedMeta,\n vScale = _this$_cachedMeta.vScale,\n _stacked = _this$_cachedMeta._stacked,\n datasetIndex = _this$_cachedMeta.index,\n _this$options = this.options,\n baseValue = _this$options.base,\n minBarLength = _this$options.minBarLength;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n if (_stacked && !floating) {\n parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n }\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex' ? computeFlexCategoryTraits(index, ruler, options, stackCount) : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + range.chunk * stackIndex + range.chunk / 2;\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null && !rects[i].hidden) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true\n }\n }\n};\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const xScale = meta.xScale,\n yScale = meta.yScale;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const _this$_cachedMeta2 = this._cachedMeta,\n iScale = _this$_cachedMeta2.iScale,\n vScale = _this$_cachedMeta2.vScale;\n const _this$_getSharedOptio2 = this._getSharedOptions(start, mode),\n sharedOptions = _this$_getSharedOptio2.sharedOptions,\n includeOptions = _this$_getSharedOptio2.includeOptions;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {\n $shared: false\n });\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {\n ratioX,\n ratioY,\n offsetX,\n offsetY\n };\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = i => +data[i];\n if (isObject(data[start])) {\n const _this$_parsing$key = this._parsing.key,\n key = _this$_parsing$key === void 0 ? 'value' : _this$_parsing$key;\n getter = i => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min\n };\n }\n update(mode) {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const _this$_getRotationExt = this._getRotationExtents(),\n circumference = _this$_getRotationExt.circumference,\n rotation = _this$_getRotationExt.rotation;\n const _getRatioAndOffset = getRatioAndOffset(rotation, circumference, cutout),\n ratioX = _getRatioAndOffset.ratioX,\n ratioY = _getRatioAndOffset.ratioY,\n offsetX = _getRatioAndOffset.offsetX,\n offsetY = _getRatioAndOffset.offsetY;\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if (reset && opts.animation.animateRotate || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const _this$_getSharedOptio3 = this._getSharedOptions(start, mode),\n sharedOptions = _this$_getSharedOptio3.sharedOptions,\n includeOptions = _this$_getSharedOptio3.includeOptions;\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n }\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r'\n};\nDoughnutController.descriptors = {\n _scriptable: name => name !== 'spacing',\n _indexable: name => name !== 'spacing' && !name.startsWith('borderDash') && !name.startsWith('hoverBorderDash')\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const _chart$legend$options2 = chart.legend.options.labels,\n pointStyle = _chart$legend$options2.pointStyle,\n color = _chart$legend$options2.color;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n }\n};\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset,\n _meta$data = meta.data,\n points = _meta$data === void 0 ? [] : _meta$data,\n _dataset = meta._dataset;\n const animationsDisabled = this.chart._animationsDisabled;\n let _getStartAndCountOfVi = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled),\n start = _getStartAndCountOfVi.start,\n count = _getStartAndCountOfVi.count;\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const _this$_cachedMeta3 = this._cachedMeta,\n iScale = _this$_cachedMeta3.iScale,\n vScale = _this$_cachedMeta3.vScale,\n _stacked = _this$_cachedMeta3._stacked,\n _dataset = _this$_cachedMeta3._dataset;\n const _this$_getSharedOptio4 = this._getSharedOptions(start, mode),\n sharedOptions = _this$_getSharedOptio4.sharedOptions,\n includeOptions = _this$_getSharedOptio4.includeOptions;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const _this$options2 = this.options,\n spanGaps = _this$options2.spanGaps,\n segment = _this$options2.segment;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n const end = start + count;\n const pointsCount = points.length;\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = 0; i < pointsCount; ++i) {\n const point = points[i];\n const properties = directUpdate ? point : {};\n if (i < start || i >= end) {\n properties.skip = true;\n continue;\n }\n const parsed = this.getParsed(i);\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category'\n },\n _value_: {\n type: 'linear'\n }\n }\n};\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? outerRadius / 100 * opts.cutoutPercentage : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - radiusLength * this.index;\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index) ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle) : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n }\n },\n indexAxis: 'r',\n startAngle: 0\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const _chart$legend$options3 = chart.legend.options.labels,\n pointStyle = _chart$legend$options3.pointStyle,\n color = _chart$legend$options3.color;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\nclass PieController extends DoughnutController {}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n }\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear'\n }\n }\n};\nclass ScatterController extends DatasetController {\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const xScale = meta.xScale,\n yScale = meta.yScale;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + ')'\n };\n }\n update(mode) {\n const meta = this._cachedMeta;\n const _meta$data2 = meta.data,\n points = _meta$data2 === void 0 ? [] : _meta$data2;\n const animationsDisabled = this.chart._animationsDisabled;\n let _getStartAndCountOfVi2 = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled),\n start = _getStartAndCountOfVi2.start,\n count = _getStartAndCountOfVi2.count;\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n if (!this.datasetElementType) {\n this.addElements();\n }\n const line = meta.dataset,\n _dataset = meta._dataset;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n } else if (this.datasetElementType) {\n delete meta.dataset;\n this.datasetElementType = false;\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const showLine = this.options.showLine;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = this.chart.registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const _this$_cachedMeta4 = this._cachedMeta,\n iScale = _this$_cachedMeta4.iScale,\n vScale = _this$_cachedMeta4.vScale,\n _stacked = _this$_cachedMeta4._stacked,\n _dataset = _this$_cachedMeta4._dataset;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const _this$options3 = this.options,\n spanGaps = _this$options3.spanGaps,\n segment = _this$options3.segment;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\nvar controllers = /*#__PURE__*/Object.freeze({\n __proto__: null,\n BarController: BarController,\n BubbleController: BubbleController,\n DoughnutController: DoughnutController,\n LineController: LineController,\n PieController: PieController,\n PolarAreaController: PolarAreaController,\n RadarController: RadarController,\n ScatterController: ScatterController\n});\n\n/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */\nclass DateAdapterBase {\n /**\n * Override default date adapter methods.\n * Accepts type parameter to define options type.\n * @example\n * Chart._adapters._date.override<{myAdapterOption: string}>({\n * init() {\n * console.log(this.options.myAdapterOption);\n * }\n * })\n */\n static override(members) {\n Object.assign(DateAdapterBase.prototype, members);\n }\n constructor(options) {\n this.options = void 0;\n this.options = options || {};\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n init() {}\n formats() {\n return abstract();\n }\n parse() {\n return abstract();\n }\n format() {\n return abstract();\n }\n add() {\n return abstract();\n }\n diff() {\n return abstract();\n }\n startOf() {\n return abstract();\n }\n endOf() {\n return abstract();\n }\n}\nvar adapters = {\n _date: DateAdapterBase\n};\nfunction binarySearch(metaset, axis, value, intersect) {\n const controller = metaset.controller,\n data = metaset.data,\n _sorted = metaset._sorted;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {\n lo: start.lo,\n hi: end.hi\n };\n }\n }\n }\n return {\n lo: 0,\n hi: data.length - 1\n };\n}\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const _metasets$i = metasets[i],\n index = _metasets$i.index,\n data = _metasets$i.data;\n const _binarySearch = binarySearch(metasets[i], axis, value, intersect),\n lo = _binarySearch.lo,\n hi = _binarySearch.hi;\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function (pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function (element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const _element$getProps = element.getProps(['startAngle', 'endAngle'], useFinalPosition),\n startAngle = _element$getProps.startAngle,\n endAngle = _element$getProps.endAngle;\n const _getAngleFromPoint = getAngleFromPoint(element, {\n x: position.x,\n y: position.y\n }),\n angle = _getAngleFromPoint.angle;\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{\n element,\n datasetIndex,\n index\n }];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect ? getNearestRadialItems(chart, position, axis, useFinalPosition) : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n evaluateInteractionItems,\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach(meta => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({\n element,\n datasetIndex: meta.index,\n index\n });\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({\n element: data[i],\n datasetIndex,\n index: i\n });\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n var _box = box;\n pos = _box.position;\n var _box$options = _box.options;\n stack = _box$options.stack;\n var _box$options$stackWei = _box$options.stackWeight;\n stackWeight = _box$options$stackWei === void 0 ? 1 : _box$options$stackWei;\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && pos + stack,\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const stack = wrap.stack,\n pos = wrap.pos,\n stackWeight = wrap.stackWeight;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {\n count: 0,\n placed: 0,\n weight: 0,\n size: 0\n });\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const vBoxMaxWidth = params.vBoxMaxWidth,\n hBoxMaxHeight = params.hBoxMaxHeight;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const fullSize = layout.box.fullSize;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const pos = layout.pos,\n box = layout.box;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {\n size: 0,\n count: 1\n };\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal ? {\n same: widthChanged,\n other: heightChanged\n } : {\n same: heightChanged,\n other: widthChanged\n };\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n positions.forEach(pos => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal ? marginForPositions(['left', 'right']) : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea));\n const _updateDims = updateDims(chartArea, params, layout, stacks),\n same = _updateDims.same,\n other = _updateDims.other;\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let x = chartArea.x,\n y = chartArea.y;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {\n count: 1,\n placed: 0,\n weight: 1\n };\n const weight = layout.stackWeight / stack.weight || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function () {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) => wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w\n };\n each(boxes.chartArea, layout => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n });\n });\n }\n};\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {}\n}\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {\n passive: true\n} : false;\nfunction addListener(node, type, listener) {\n if (node) {\n node.addEventListener(type, listener, eventListenerOptions);\n }\n}\nfunction removeListener(chart, type, listener) {\n if (chart && chart.canvas) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n }\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const _getRelativePosition = getRelativePosition(event, chart),\n x = _getRelativePosition.x,\n y = _getRelativePosition.y;\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled(event => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart);\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach(prop => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach(key => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = canvas && _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\nclass Element {\n constructor() {\n this.x = void 0;\n this.y = void 0;\n this.active = false;\n this.options = void 0;\n this.$animations = void 0;\n }\n tooltipPosition(useFinalPosition) {\n const _this$getProps = this.getProps(['x', 'y'], useFinalPosition),\n x = _this$getProps.x,\n y = _this$getProps.y;\n return {\n x,\n y\n };\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n // let's not create an object, if not needed\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const determinedMaxTicks = determineMaxTicks(scale);\n const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\nconst reverseAlign = align => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nconst getTicksLimit = (ticksLength, maxTicksLimit) => Math.min(maxTicksLimit || ticksLength, ticksLength);\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, cache => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return lines * font.lineHeight + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if (reverse && position !== 'right' || !reverse && position === 'right') {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const top = scale.top,\n left = scale.left,\n bottom = scale.bottom,\n right = scale.right,\n chart = scale.chart;\n const chartArea = chart.chartArea,\n scales = chart.scales;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let _userMin = this._userMin,\n _userMax = this._userMax,\n _suggestedMin = this._suggestedMin,\n _suggestedMax = this._suggestedMax;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let _this$getUserBounds = this.getUserBounds(),\n min = _this$getUserBounds.min,\n max = _this$getUserBounds.max,\n minDefined = _this$getUserBounds.minDefined,\n maxDefined = _this$getUserBounds.maxDefined;\n let range;\n if (minDefined && maxDefined) {\n return {\n min,\n max\n };\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n getLabelItems() {\n let chartArea = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.chart.chartArea;\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n return items;\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const _this$options4 = this.options,\n beginAtZero = _this$options4.beginAtZero,\n grace = _this$options4.grace,\n tickOpts = _this$options4.ticks;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal() ? this.width + margins.left + margins.right : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit);\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid) - tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)), Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const chart = this.chart,\n _this$options5 = this.options,\n tickOpts = _this$options5.ticks,\n titleOpts = _this$options5.title,\n gridOpts = _this$options5.grid;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const _this$_getLabelSizes = this._getLabelSizes(),\n first = _this$_getLabelSizes.first,\n last = _this$_getLabelSizes.last,\n widest = _this$_getLabelSizes.widest,\n highest = _this$_getLabelSizes.highest;\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const _this$options6 = this.options,\n _this$options6$ticks = _this$options6.ticks,\n align = _this$options6$ticks.align,\n padding = _this$options6$ticks.padding,\n position = _this$options6.position;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const _this$options7 = this.options,\n axis = _this$options7.axis,\n position = _this$options7.position;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length, maxTicksLimit) {\n const ctx = this.ctx,\n caches = this._longestTextCache;\n const widths = [];\n const heights = [];\n const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit));\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; i += increment) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {\n data: {},\n gc: []\n };\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = idx => ({\n width: widths[idx] || 0,\n height: heights[idx] || 0\n });\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const min = this.min,\n max = this.max;\n return min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context || (tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context || (this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal() ? h * cos > w * sin ? w / cos : h / sin : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const grid = options.grid,\n position = options.position,\n border = options.border;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = borderOpts.display ? borderOpts.width : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function (pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const context = this.getContext(i);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndexBorder.dash || [];\n const borderDashOffset = optsAtIndexBorder.dashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const position = options.position,\n optionTicks = options.ticks;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const align = optionTicks.align,\n crossAlign = optionTicks.crossAlign,\n padding = optionTicks.padding,\n mirror = optionTicks.mirror;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = (chartArea.top + chartArea.bottom) / 2 + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = (chartArea.left + chartArea.right) / 2 - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n x += lineHeight / 2 * Math.sin(rotation);\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = textOffset - labelPadding.top;\n let left = 0 - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n case 'inner':\n if (i === ilen - 1) {\n left -= width;\n } else if (i > 0) {\n left -= width / 2;\n }\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor\n };\n }\n items.push({\n label,\n font,\n textOffset,\n options: {\n rotation,\n color,\n strokeColor,\n strokeWidth,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop\n }\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const _this$options8 = this.options,\n position = _this$options8.position,\n ticks = _this$options8.ticks;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const _this$options9 = this.options,\n position = _this$options9.position,\n _this$options9$ticks = _this$options9.ticks,\n crossAlign = _this$options9$ticks.crossAlign,\n mirror = _this$options9$ticks.mirror,\n padding = _this$options9$ticks.padding;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {\n textAlign,\n x\n };\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {\n top: 0,\n left: this.left,\n bottom: chart.height,\n right: this.right\n };\n }\n if (position === 'top' || position === 'bottom') {\n return {\n top: this.top,\n left: 0,\n bottom: this.bottom,\n right: chart.width\n };\n }\n }\n drawBackground() {\n const ctx = this.ctx,\n backgroundColor = this.options.backgroundColor,\n left = this.left,\n top = this.top,\n width = this.width,\n height = this.height;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine({\n x: item.x1,\n y: item.y1\n }, {\n x: item.x2,\n y: item.y2\n }, item);\n }\n if (grid.drawTicks) {\n drawLine({\n x: item.tx1,\n y: item.ty1\n }, {\n x: item.tx2,\n y: item.ty2\n }, {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n });\n }\n }\n }\n }\n drawBorder() {\n const chart = this.chart,\n ctx = this.ctx,\n _this$options10 = this.options,\n border = _this$options10.border,\n grid = _this$options10.grid;\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = border.display ? borderOpts.width : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.width;\n ctx.strokeStyle = borderOpts.color;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this.getLabelItems(chartArea);\n for (const item of items) {\n const renderTextOptions = item.options;\n const tickFont = item.font;\n const label = item.label;\n const y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const ctx = this.ctx,\n _this$options11 = this.options,\n position = _this$options11.position,\n title = _this$options11.title,\n reverse = _this$options11.reverse;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const _titleArgs = titleArgs(this, offset, position, align),\n titleX = _titleArgs.titleX,\n titleY = _titleArgs.titleY,\n maxWidth = _titleArgs.maxWidth,\n rotation = _titleArgs.rotation;\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY]\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n const bz = valueOrDefault(opts.border && opts.border.z, 0);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: chartArea => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: chartArea => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: bz,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: chartArea => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [parentScope ? defaults.get(parentScope) : {}, defaults.get(scope), item.defaults]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n this._each('register', args);\n }\n remove() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n this._each('unregister', args);\n }\n addControllers() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n this._each('register', args, this.controllers);\n }\n addElements() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n this._each('register', args, this.elements);\n }\n addPlugins() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n this._each('register', args, this.plugins);\n }\n addScales() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers() {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n this._each('unregister', args, this.controllers);\n }\n removeElements() {\n for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n args[_key8] = arguments[_key8];\n }\n this._each('unregister', args, this.elements);\n }\n removePlugins() {\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n args[_key9] = arguments[_key9];\n }\n this._each('unregister', args, this.plugins);\n }\n removeScales() {\n for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n args[_key10] = arguments[_key10];\n }\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || reg === this.plugins && arg.id) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = /* #__PURE__ */new Registry();\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {\n plugins,\n localIds\n };\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, _ref4, options, all) {\n let plugins = _ref4.plugins,\n localIds = _ref4.localIds;\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {\n plugin,\n local: localIds[id]\n }, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, _ref5, opts, context) {\n let plugin = _ref5.plugin,\n local = _ref5.local;\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction idMatchesAxis(id) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id) {\n if (idMatchesAxis(id)) {\n return id;\n }\n for (var _len11 = arguments.length, scaleOptions = new Array(_len11 > 1 ? _len11 - 1 : 0), _key11 = 1; _key11 < _len11; _key11++) {\n scaleOptions[_key11 - 1] = arguments[_key11];\n }\n for (const opts of scaleOptions) {\n const axis = opts.axis || axisFromPosition(opts.position) || id.length > 1 && idMatchesAxis(id[0].toLowerCase());\n if (axis) {\n return axis;\n }\n }\n throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`);\n}\nfunction getAxisFromDataset(id, axis, dataset) {\n if (dataset[axis + 'AxisID'] === id) {\n return {\n axis\n };\n }\n}\nfunction retrieveAxisFromDatasets(id, config) {\n if (config.data && config.data.datasets) {\n const boundDs = config.data.datasets.filter(d => d.xAxisID === id || d.yAxisID === id);\n if (boundDs.length) {\n return getAxisFromDataset(id, 'x', boundDs[0]) || getAxisFromDataset(id, 'y', boundDs[0]);\n }\n }\n return {};\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {\n scales: {}\n };\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n scales[id] = mergeIf(Object.create(null), [{\n axis\n }, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{\n axis\n }, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType, () => [[`datasets.${datasetType}`, '']]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`, () => [[`datasets.${datasetType}.transitions.${transition}`, `transitions.${transition}`], [`datasets.${datasetType}`, '']]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`, () => [[`datasets.${datasetType}.elements.${elementType}`, `datasets.${datasetType}`, `elements.${elementType}`, '']]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`, () => [[`plugins.${id}`, ...(plugin.additionalOptionScopes || [])]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const options = this.options,\n type = this.type;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const options = this.options,\n type = this.type;\n return [options, overrides[type] || {}, defaults.datasets[type] || {}, {\n type\n }, defaults, descriptors];\n }\n resolveNamedOptions(scopes, names, context) {\n let prefixes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [''];\n const result = {\n $shared: true\n };\n const _getResolver = getResolver(this._resolverCache, scopes, prefixes),\n resolver = _getResolver.resolver,\n subPrefixes = _getResolver.subPrefixes;\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context) {\n let prefixes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [''];\n let descriptorDefaults = arguments.length > 3 ? arguments[3] : undefined;\n const _getResolver2 = getResolver(this._resolverCache, scopes, prefixes),\n resolver = _getResolver2.resolver;\n return isObject(context) ? _attachContext(resolver, context, undefined, descriptorDefaults) : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value) && Object.getOwnPropertyNames(value).some(key => isFunction(value[key]));\nfunction needContext(proxy, names) {\n const _descriptors2 = _descriptors(proxy),\n isScriptable = _descriptors2.isScriptable,\n isIndexable = _descriptors2.isIndexable;\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if (scriptable && (isFunction(value) || hasFunction(value)) || indexable && isArray(value)) {\n return true;\n }\n }\n return false;\n}\nvar version = \"4.4.3\";\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x';\n}\nfunction compare2Level(l1, l2) {\n return function (a, b) {\n return a[l1] === b[l1] ? a[l2] - b[l2] : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = key => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter(c => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nfunction getSizeForArea(scale, chartArea, field) {\n return scale.options.clip ? scale[field] : chartArea[field];\n}\nfunction getDatasetArea(meta, chartArea) {\n const xScale = meta.xScale,\n yScale = meta.yScale;\n if (xScale && yScale) {\n return {\n left: getSizeForArea(xScale, chartArea, 'left'),\n right: getSizeForArea(xScale, chartArea, 'right'),\n top: getSizeForArea(yScale, chartArea, 'top'),\n bottom: getSizeForArea(yScale, chartArea, 'bottom')\n };\n }\n return chartArea;\n}\nclass Chart {\n static register() {\n registry.add(...arguments);\n invalidatePlugins();\n }\n static unregister() {\n registry.remove(...arguments);\n invalidatePlugins();\n }\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error('Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' + ' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.');\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const _this$options12 = this.options,\n aspectRatio = _this$options12.aspectRatio,\n maintainAspectRatio = _this$options12.maintainAspectRatio,\n width = this.width,\n height = this.height,\n _aspectRatio = this._aspectRatio;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n get registry() {\n return registry;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {\n width,\n height\n };\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {\n size: newSize\n });\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(Object.keys(scaleOpts).map(id => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n }));\n }\n each(items, item => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, scale => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const metasets = this._metasets,\n datasets = this.data.datasets;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const _defaults$datasets$ty = defaults.datasets[type],\n datasetElementType = _defaults$datasets$ty.datasetElementType,\n dataElementType = _defaults$datasets$ty.dataElementType;\n Object.assign(ControllerClass, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const _this$getDatasetMeta = this.getDatasetMeta(i),\n controller = _this$getDatasetMeta.controller;\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, controller => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {\n mode\n });\n this._layers.sort(compare2Level('z', '_idx'));\n const _active = this._active,\n _lastEvent = this._lastEvent;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, scale => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const _hiddenIndices = this._hiddenIndices;\n const changes = this._getUniformDataChanges() || [];\n for (const _ref6 of changes) {\n const method = _ref6.method;\n const start = _ref6.start;\n const count = _ref6.count;\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = idx => new Set(_dataChanges.filter(c => c[0] === idx).map((c, i) => i + ',' + c.splice(1).join(',')));\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet).map(c => c.split(',')).map(a => ({\n method: a[1],\n start: +a[2],\n count: +a[3]\n }));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {\n cancelable: true\n }) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, box => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({\n datasetIndex: i\n }) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {\n mode\n });\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {\n meta,\n index,\n mode,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {\n cancelable: true\n }) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({\n chart: this\n });\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const _this$_resizeBeforeDr = this._resizeBeforeDraw,\n width = _this$_resizeBeforeDr.width,\n height = _this$_resizeBeforeDr.height;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = getDatasetArea(meta, this.chartArea);\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {\n chart: this,\n type: 'chart'\n }));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {\n visible\n });\n this.update(ctx => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const canvas = this.canvas,\n ctx = this.ctx;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image() {\n return this.canvas.toDataURL(...arguments);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, type => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(_ref7 => {\n let datasetIndex = _ref7.datasetIndex,\n index = _ref7.index;\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n isPluginEnabled(pluginId) {\n return this._plugins._cache.filter(p => p.plugin.id === pluginId).length === 1;\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = plugin => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const _this$_active = this._active,\n lastActive = _this$_active === void 0 ? [] : _this$_active,\n options = this.options;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nChart.defaults = defaults;\nChart.instances = instances;\nChart.overrides = overrides;\nChart.registry = registry;\nChart.version = version;\nChart.getChart = getChart;\nfunction invalidatePlugins() {\n return each(Chart.instances, chart => chart._plugins.invalidate());\n}\nfunction clipArc(ctx, element, endAngle) {\n const startAngle = element.startAngle,\n pixelMargin = element.pixelMargin,\n x = element.x,\n y = element.y,\n outerRadius = element.outerRadius,\n innerRadius = element.innerRadius;\n let angleMargin = pixelMargin / outerRadius;\n // Draw an inner border by clipping the arc and drawing a double-width border\n // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\n/**\n * Parse border radius from the provided options\n */\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n // Outer limits are complicated. We want to compute the available angular distance at\n // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n //\n // If the borderRadius is large, that value can become negative.\n // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n // we know that the thickness term will dominate and compute the limits at that point\n const computeOuterLimit = val => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit)\n };\n}\n/**\n * Convert (r, 𝜃) to (x, y)\n */\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta)\n };\n}\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n * Start End\n *\n * 1--->a--->2 Outer\n * / \\\n * 8 3\n * | |\n * | |\n * 7 4\n * \\ /\n * 6<---b<---5 Inner\n */\nfunction pathArc(ctx, element, offset, spacing, end, circular) {\n const x = element.x,\n y = element.y,\n start = element.startAngle,\n pixelMargin = element.pixelMargin,\n innerR = element.innerRadius;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n // When spacing is present, it is the same for all items\n // So we adjust the start and end angle of the arc such that\n // the distance is the same as it would be without the spacing\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? alpha * avNogSpacingRadius / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const _parseBorderRadius$ = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle),\n outerStart = _parseBorderRadius$.outerStart,\n outerEnd = _parseBorderRadius$.outerEnd,\n innerStart = _parseBorderRadius$.innerStart,\n innerEnd = _parseBorderRadius$.innerEnd;\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n // The first arc segments from point 1 to point a to point 2\n const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle);\n // The corner segment from point 2 to point 3\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n // The line from point 3 to point 4\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n // The corner segment from point 4 to point 5\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n // The inner arc from point 5 to point b to point 6\n const innerMidAdjustedAngle = (endAngle - innerEnd / innerRadius + (startAngle + innerStart / innerRadius)) / 2;\n ctx.arc(x, y, innerRadius, endAngle - innerEnd / innerRadius, innerMidAdjustedAngle, true);\n ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + innerStart / innerRadius, true);\n // The corner segment from point 6 to point 7\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n // The line from point 7 to point 8\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n // The corner segment from point 8 to point 1\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const fullCircles = element.fullCircles,\n startAngle = element.startAngle,\n circumference = element.circumference;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawBorder(ctx, element, offset, spacing, circular) {\n const fullCircles = element.fullCircles,\n startAngle = element.startAngle,\n circumference = element.circumference,\n options = element.options;\n const borderWidth = options.borderWidth,\n borderJoinStyle = options.borderJoinStyle,\n borderDash = options.borderDash,\n borderDashOffset = options.borderDashOffset;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n ctx.setLineDash(borderDash || []);\n ctx.lineDashOffset = borderDashOffset;\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n if (!fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n }\n}\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.circumference = void 0;\n this.endAngle = void 0;\n this.fullCircles = void 0;\n this.innerRadius = void 0;\n this.outerRadius = void 0;\n this.pixelMargin = void 0;\n this.startAngle = void 0;\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const _getAngleFromPoint2 = getAngleFromPoint(point, {\n x: chartX,\n y: chartY\n }),\n angle = _getAngleFromPoint2.angle,\n distance = _getAngleFromPoint2.distance;\n const _this$getProps2 = this.getProps(['startAngle', 'endAngle', 'innerRadius', 'outerRadius', 'circumference'], useFinalPosition),\n startAngle = _this$getProps2.startAngle,\n endAngle = _this$getProps2.endAngle,\n innerRadius = _this$getProps2.innerRadius,\n outerRadius = _this$getProps2.outerRadius,\n circumference = _this$getProps2.circumference;\n const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return betweenAngles && withinRadius;\n }\n getCenterPoint(useFinalPosition) {\n const _this$getProps3 = this.getProps(['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius'], useFinalPosition),\n x = _this$getProps3.x,\n y = _this$getProps3.y,\n startAngle = _this$getProps3.startAngle,\n endAngle = _this$getProps3.endAngle,\n innerRadius = _this$getProps3.innerRadius,\n outerRadius = _this$getProps3.outerRadius;\n const _this$options13 = this.options,\n offset = _this$options13.offset,\n spacing = _this$options13.spacing;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const options = this.options,\n circumference = this.circumference;\n const offset = (options.offset || 0) / 4;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = options.borderAlign === 'inner' ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n const fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n const radiusOffset = offset * fix;\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, circular);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\nArcElement.descriptors = {\n _scriptable: true,\n _indexable: name => name !== 'borderDash'\n};\nfunction setStyle(ctx, options) {\n let style = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : options;\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment) {\n let params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const count = points.length;\n const _params$start = params.start,\n paramsStart = _params$start === void 0 ? 0 : _params$start,\n _params$end = params.end,\n paramsEnd = _params$end === void 0 ? count - 1 : _params$end;\n const segmentStart = segment.start,\n segmentEnd = segment.end;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const points = line.points,\n options = line.options;\n const _pathVars = pathVars(points, segment, params),\n count = _pathVars.count,\n start = _pathVars.start,\n loop = _pathVars.loop,\n ilen = _pathVars.ilen;\n const lineMethod = getLineMethod(options);\n let _ref8 = params || {},\n _ref8$move = _ref8.move,\n move = _ref8$move === void 0 ? true : _ref8$move,\n reverse = _ref8.reverse;\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const _pathVars2 = pathVars(points, segment, params),\n count = _pathVars2.count,\n start = _pathVars2.start,\n ilen = _pathVars2.ilen;\n const _ref9 = params || {},\n _ref9$move = _ref9.move,\n move = _ref9$move === void 0 ? true : _ref9$move,\n reverse = _ref9.reverse;\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = index => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const segments = line.segments,\n options = line.options;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {\n start,\n end: start + count - 1\n })) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {\n property,\n start: value,\n end: value\n });\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const _segments$i = segments[i],\n start = _segments$i.start,\n end = _segments$i.end;\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || this.points.length - start;\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {\n start,\n end: start + count - 1\n });\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: name => name !== 'borderDash' && name !== 'fill'\n};\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const _el$getProps = el.getProps([axis], useFinalPosition),\n value = _el$getProps[axis];\n return Math.abs(pos - value) < options.radius + options.hitRadius;\n}\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.parsed = void 0;\n this.skip = void 0;\n this.stop = void 0;\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const _this$getProps4 = this.getProps(['x', 'y'], useFinalPosition),\n x = _this$getProps4.x,\n y = _this$getProps4.y;\n return Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2) < Math.pow(options.hitRadius + options.radius, 2);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const _this$getProps5 = this.getProps(['x', 'y'], useFinalPosition),\n x = _this$getProps5.x,\n y = _this$getProps5.y;\n return {\n x,\n y\n };\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n // @ts-expect-error Fallbacks should never be hit in practice\n return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\n/**\n* @type {any}\n*/\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\n/**\n* @type {any}\n*/\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nfunction getBarBounds(bar, useFinalPosition) {\n const _bar$getProps = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition),\n x = _bar$getProps.x,\n y = _bar$getProps.y,\n base = _bar$getProps.base,\n width = _bar$getProps.width,\n height = _bar$getProps.height;\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {\n left,\n top,\n right,\n bottom\n };\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const _bar$getProps2 = bar.getProps(['enableBorderRadius']),\n enableBorderRadius = _bar$getProps2.enableBorderRadius;\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r))\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds && (skipX || _isBetween(x, bounds.left, bounds.right)) && (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount) {\n let refRect = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const inflateAmount = this.inflateAmount,\n _this$options14 = this.options,\n borderColor = _this$options14.borderColor,\n backgroundColor = _this$options14.backgroundColor;\n const _boundingRects = boundingRects(this),\n inner = _boundingRects.inner,\n outer = _boundingRects.outer;\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const _this$getProps6 = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition),\n x = _this$getProps6.x,\n y = _this$getProps6.y,\n base = _this$getProps6.base,\n horizontal = _this$getProps6.horizontal;\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nvar elements = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ArcElement: ArcElement,\n BarElement: BarElement,\n LineElement: LineElement,\n PointElement: PointElement\n});\nconst BORDER_COLORS = ['rgb(54, 162, 235)', 'rgb(255, 99, 132)', 'rgb(255, 159, 64)', 'rgb(255, 205, 86)', 'rgb(75, 192, 192)', 'rgb(153, 102, 255)', 'rgb(201, 203, 207)' // grey\n];\n// Border colors with 50% transparency\nconst BACKGROUND_COLORS = /* #__PURE__ */BORDER_COLORS.map(color => color.replace('rgb(', 'rgba(').replace(')', ', 0.5)'));\nfunction getBorderColor(i) {\n return BORDER_COLORS[i % BORDER_COLORS.length];\n}\nfunction getBackgroundColor(i) {\n return BACKGROUND_COLORS[i % BACKGROUND_COLORS.length];\n}\nfunction colorizeDefaultDataset(dataset, i) {\n dataset.borderColor = getBorderColor(i);\n dataset.backgroundColor = getBackgroundColor(i);\n return ++i;\n}\nfunction colorizeDoughnutDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(() => getBorderColor(i++));\n return i;\n}\nfunction colorizePolarAreaDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(() => getBackgroundColor(i++));\n return i;\n}\nfunction getColorizer(chart) {\n let i = 0;\n return (dataset, datasetIndex) => {\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n if (controller instanceof DoughnutController) {\n i = colorizeDoughnutDataset(dataset, i);\n } else if (controller instanceof PolarAreaController) {\n i = colorizePolarAreaDataset(dataset, i);\n } else if (controller) {\n i = colorizeDefaultDataset(dataset, i);\n }\n };\n}\nfunction containsColorsDefinitions(descriptors) {\n let k;\n for (k in descriptors) {\n if (descriptors[k].borderColor || descriptors[k].backgroundColor) {\n return true;\n }\n }\n return false;\n}\nfunction containsColorsDefinition(descriptor) {\n return descriptor && (descriptor.borderColor || descriptor.backgroundColor);\n}\nvar plugin_colors = {\n id: 'colors',\n defaults: {\n enabled: true,\n forceOverride: false\n },\n beforeLayout(chart, _args, options) {\n if (!options.enabled) {\n return;\n }\n const _chart$config = chart.config,\n datasets = _chart$config.data.datasets,\n chartOptions = _chart$config.options;\n const elements = chartOptions.elements;\n if (!options.forceOverride && (containsColorsDefinitions(datasets) || containsColorsDefinition(chartOptions) || elements && containsColorsDefinitions(elements))) {\n return;\n }\n const colorizer = getColorizer(chart);\n datasets.forEach(colorizer);\n }\n};\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const _data$a = data[a],\n pointAx = _data$a.x,\n pointAy = _data$a.y;\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs((pointAx - avgX) * (data[j].y - pointAy) - (pointAx - data[j].x) * (avgY - pointAy));\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push(_objectSpread(_objectSpread({}, data[intermediateIndex1]), {}, {\n x: avgX\n }));\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push(_objectSpread(_objectSpread({}, data[intermediateIndex2]), {}, {\n x: avgX\n }));\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: data\n });\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach(dataset => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const iScale = meta.iScale;\n const _iScale$getUserBounds = iScale.getUserBounds(),\n min = _iScale$getUserBounds.min,\n max = _iScale$getUserBounds.max,\n minDefined = _iScale$getUserBounds.minDefined,\n maxDefined = _iScale$getUserBounds.maxDefined;\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {\n start,\n count\n };\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const _data = dataset._data,\n indexAxis = dataset.indexAxis;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let _getStartAndCountOfVi3 = getStartAndCountOfVisiblePointsSimplified(meta, data),\n start = _getStartAndCountOfVi3.start,\n count = _getStartAndCountOfVi3.count;\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function () {\n return this._decimated;\n },\n set: function (d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let start = segment.start,\n end = segment.end;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {\n property,\n start,\n end\n };\n}\nfunction _pointsFromSegments(boundary, line) {\n const _ref10 = boundary || {},\n _ref10$x = _ref10.x,\n x = _ref10$x === void 0 ? null : _ref10$x,\n _ref10$y = _ref10.y,\n y = _ref10$y === void 0 ? null : _ref10$y;\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(_ref11 => {\n let start = _ref11.start,\n end = _ref11.end;\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({\n x: first.x,\n y\n });\n points.push({\n x: last.x,\n y\n });\n } else if (x !== null) {\n points.push({\n x,\n y: first.y\n });\n points.push({\n x,\n y: last.y\n });\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for (; end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {\n tension: 0\n },\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\nfunction _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\nfunction _buildStackLine(source) {\n const scale = source.scale,\n index = source.index,\n line = source.line;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({\n x: null,\n y: scale.bottom\n }, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({\n points,\n options: {}\n });\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const _findPoint = findPoint(line, sourcePoint, 'x'),\n first = _findPoint.first,\n last = _findPoint.last,\n point = _findPoint.point;\n if (!point || first && last) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {\n first,\n last,\n point\n };\n}\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const x = this.x,\n y = this.y,\n radius = this.radius;\n bounds = bounds || {\n start: 0,\n end: TAU\n };\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const x = this.x,\n y = this.y,\n radius = this.radius;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\nfunction _getTarget(source) {\n const chart = source.chart,\n fill = source.fill,\n line = source.line;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const _source$scale = source.scale,\n scale = _source$scale === void 0 ? {} : _source$scale,\n fill = source.fill;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const scale = source.scale,\n fill = source.fill;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const line = source.line,\n scale = source.scale,\n axis = source.axis;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const _ref12 = fillOption || {},\n _ref12$above = _ref12.above,\n above = _ref12$above === void 0 ? color : _ref12$above,\n _ref12$below = _ref12.below,\n below = _ref12$below === void 0 ? color : _ref12$below;\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {\n line,\n target,\n above,\n below,\n area,\n scale,\n axis\n });\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const line = cfg.line,\n target = cfg.target,\n above = cfg.above,\n below = cfg.below,\n area = cfg.area,\n scale = cfg.scale;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {\n line,\n target,\n color: above,\n scale,\n property\n });\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {\n line,\n target,\n color: below,\n scale,\n property\n });\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const segments = target.segments,\n points = target.points;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments) {\n const start = segment.start,\n end = segment.end;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {\n move: lineLoop\n });\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const line = cfg.line,\n target = cfg.target,\n property = cfg.property,\n color = cfg.color,\n scale = cfg.scale;\n const segments = _segments(line, target, property);\n for (const _ref13 of segments) {\n const src = _ref13.source;\n const tgt = _ref13.target;\n const start = _ref13.start;\n const end = _ref13.end;\n const _src$style = src.style,\n _src$style2 = _src$style === void 0 ? {} : _src$style,\n _src$style2$backgroun = _src$style2.backgroundColor,\n backgroundColor = _src$style2$backgroun === void 0 ? color : _src$style2$backgroun;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {\n move: lineLoop,\n reverse: true\n });\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const _scale$chart$chartAre = scale.chart.chartArea,\n top = _scale$chart$chartAre.top,\n bottom = _scale$chart$chartAre.bottom;\n const _ref14 = bounds || {},\n property = _ref14.property,\n start = _ref14.start,\n end = _ref14.end;\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\nvar index = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\nconst getBoxSize = (labelOpts, fontSize) => {\n let _labelOpts$boxHeight = labelOpts.boxHeight,\n boxHeight = _labelOpts$boxHeight === void 0 ? fontSize : _labelOpts$boxHeight,\n _labelOpts$boxWidth = labelOpts.boxWidth,\n boxWidth = _labelOpts$boxWidth === void 0 ? fontSize : _labelOpts$boxWidth;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter(item => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const options = this.options,\n ctx = this.ctx;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const _getBoxSize = getBoxSize(labelOpts, fontSize),\n boxWidth = _getBoxSize.boxWidth,\n itemHeight = _getBoxSize.itemHeight;\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const ctx = this.ctx,\n maxWidth = this.maxWidth,\n padding = this.options.labels.padding;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {\n left: 0,\n top,\n row,\n width: itemWidth,\n height: itemHeight\n };\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n const ctx = this.ctx,\n maxHeight = this.maxHeight,\n padding = this.options.labels.padding;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const _calculateItemSize = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight),\n itemWidth = _calculateItemSize.itemWidth,\n itemHeight = _calculateItemSize.itemHeight;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {\n left,\n top: currentColHeight,\n col,\n width: itemWidth,\n height: itemHeight\n };\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const hitboxes = this.legendHitBoxes,\n _this$options15 = this.options,\n align = _this$options15.align,\n padding = _this$options15.labels.padding,\n rtl = _this$options15.rtl;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const opts = this.options,\n columnSizes = this.columnSizes,\n lineWidths = this.lineWidths,\n ctx = this.ctx;\n const align = opts.align,\n labelOpts = opts.labels;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const padding = labelOpts.padding;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const _getBoxSize2 = getBoxSize(labelOpts, fontSize),\n boxWidth = _getBoxSize2.boxWidth,\n boxHeight = _getBoxSize2.boxHeight,\n itemHeight = _getBoxSize2.itemHeight;\n const drawLegendBox = function (x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function (x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + itemHeight / 2, labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor;\n ctx.fillStyle = legendItem.fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else if (typeof legendItem.text !== 'string') {\n const fontLineHeight = labelFont.lineHeight;\n cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight) + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right) && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width) && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n return {\n itemWidth,\n itemHeight\n };\n}\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n let legendItemText = legendItem.text;\n if (legendItemText && typeof legendItemText !== 'string') {\n legendItemText = legendItemText.reduce((a, b) => a.length > b.length ? a : b);\n }\n return boxWidth + labelFont.size / 2 + ctx.measureText(legendItemText).width;\n}\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n let itemHeight = _itemHeight;\n if (typeof legendItem.text !== 'string') {\n itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n }\n return itemHeight;\n}\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n const labelHeight = legendItem.text ? legendItem.text.length : 0;\n return fontLineHeight * labelHeight;\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: ctx => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const _chart$legend$options = chart.legend.options.labels,\n usePointStyle = _chart$legend$options.usePointStyle,\n pointStyle = _chart$legend$options.pointStyle,\n textAlign = _chart$legend$options.textAlign,\n color = _chart$legend$options.color,\n useBorderRadius = _chart$legend$options.useBorderRadius,\n borderRadius = _chart$legend$options.borderRadius;\n return chart._getSortedDatasetMetas().map(meta => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: ctx => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: ''\n }\n },\n descriptors: {\n _scriptable: name => !name.startsWith('on'),\n labels: {\n _scriptable: name => !['generateLabels', 'filter', 'sort'].includes(name)\n }\n }\n};\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const top = this.top,\n left = this.left,\n bottom = this.bottom,\n right = this.right,\n options = this.options;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const _this$_drawArgs = this._drawArgs(offset),\n titleX = _this$_drawArgs.titleX,\n titleY = _this$_drawArgs.titleY,\n maxWidth = _this$_drawArgs.maxWidth,\n rotation = _this$_drawArgs.rotation;\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY]\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold'\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal'\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let xSet = new Set();\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n xSet.add(pos.x);\n y += pos.y;\n ++count;\n }\n }\n const xAverage = [...xSet].reduce((a, b) => a + b) / xSet.size;\n return {\n x: xAverage,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const element = item.element,\n datasetIndex = item.datasetIndex,\n index = item.index;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const _controller$getLabelA = controller.getLabelAndValue(index),\n label = _controller$getLabelA.label,\n value = _controller$getLabelA.value;\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const body = tooltip.body,\n footer = tooltip.footer,\n title = tooltip.title;\n const boxWidth = options.boxWidth,\n boxHeight = options.boxHeight;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight + (titleLineCount - 1) * options.titleSpacing + options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight + (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight + (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop + footerLineCount * footerFont.lineHeight + (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function (line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? boxWidth + 2 + options.boxPadding : 0;\n each(body, bodyItem => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {\n width,\n height\n };\n}\nfunction determineYAlign(chart, size) {\n const y = size.y,\n height = size.height;\n if (y < height / 2) {\n return 'top';\n } else if (y > chart.height - height / 2) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const x = size.x,\n width = size.width;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const x = size.x,\n width = size.width;\n const chartWidth = chart.width,\n _chart$chartArea = chart.chartArea,\n left = _chart$chartArea.left,\n right = _chart$chartArea.right;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let x = size.x,\n width = size.width;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= width / 2;\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let y = size.y,\n height = size.height;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= height / 2;\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const caretSize = options.caretSize,\n caretPadding = options.caretPadding,\n cornerRadius = options.cornerRadius;\n const xAlign = alignment.xAlign,\n yAlign = alignment.yAlign;\n const paddingAndSize = caretSize + caretPadding;\n const _toTRBLCorners = toTRBLCorners(cornerRadius),\n topLeft = _toTRBLCorners.topLeft,\n topRight = _toTRBLCorners.topRight,\n bottomLeft = _toTRBLCorners.bottomLeft,\n bottomRight = _toTRBLCorners.bottomRight;\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center' ? tooltip.x + tooltip.width / 2 : align === 'right' ? tooltip.x + tooltip.width - padding.right : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nconst defaultCallbacks = {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n};\nfunction invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n const result = callbacks[name].call(ctx, arg);\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n return result;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context || (this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const callbacks = options.callbacks;\n const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems));\n }\n getBody(tooltipItems, options) {\n const callbacks = options.callbacks;\n const bodyItems = [];\n each(tooltipItems, context => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems));\n }\n getFooter(tooltipItems, options) {\n const callbacks = options.callbacks;\n const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, context => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {\n chart: this.chart,\n tooltip: this,\n replay\n });\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const xAlign = this.xAlign,\n yAlign = this.yAlign;\n const caretSize = options.caretSize,\n cornerRadius = options.cornerRadius;\n const _toTRBLCorners2 = toTRBLCorners(cornerRadius),\n topLeft = _toTRBLCorners2.topLeft,\n topRight = _toTRBLCorners2.topRight,\n bottomLeft = _toTRBLCorners2.bottomLeft,\n bottomRight = _toTRBLCorners2.bottomRight;\n const ptX = tooltipPoint.x,\n ptY = tooltipPoint.y;\n const width = size.width,\n height = size.height;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + height / 2;\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {\n x1,\n x2,\n x3,\n y1,\n y2,\n y3\n };\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColor = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const boxHeight = options.boxHeight,\n boxWidth = options.boxWidth;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColor.borderColor;\n ctx.fillStyle = labelColor.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : labelColor.borderWidth || 1;\n ctx.strokeStyle = labelColor.borderColor;\n ctx.setLineDash(labelColor.borderDash || []);\n ctx.lineDashOffset = labelColor.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n const borderRadius = toTRBLCorners(labelColor.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const body = this.body;\n const bodySpacing = options.bodySpacing,\n bodyAlign = options.bodyAlign,\n displayColors = options.displayColors,\n boxHeight = options.boxHeight,\n boxWidth = options.boxWidth,\n boxPadding = options.boxPadding;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function (line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right' ? bodyAlign === 'center' ? boxWidth / 2 + boxPadding : boxWidth + 2 + boxPadding : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const xAlign = this.xAlign,\n yAlign = this.yAlign;\n const x = pt.x,\n y = pt.y;\n const width = tooltipSize.width,\n height = tooltipSize.height;\n const _toTRBLCorners3 = toTRBLCorners(options.cornerRadius),\n topLeft = _toTRBLCorners3.topLeft,\n topRight = _toTRBLCorners3.topRight,\n bottomLeft = _toTRBLCorners3.bottomLeft,\n bottomRight = _toTRBLCorners3.bottomRight;\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(_ref15 => {\n let datasetIndex = _ref15.datasetIndex,\n index = _ref15.index;\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay) {\n let inChartArea = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive.filter(i => this.chart.data.datasets[i.datasetIndex] && this.chart.getDatasetMeta(i.datasetIndex).controller.getParsed(i.index) !== undefined);\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const caretX = this.caretX,\n caretY = this.caretY,\n options = this.options;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({\n chart,\n options\n });\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', _objectSpread(_objectSpread({}, args), {}, {\n cancelable: true\n })) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold'\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {},\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold'\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart'\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY']\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: defaultCallbacks\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: name => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\nvar plugins = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Colors: plugin_colors,\n Decimation: plugin_decimation,\n Filler: index,\n Legend: plugin_legend,\n SubTitle: plugin_subtitle,\n Title: plugin_title,\n Tooltip: plugin_tooltip\n});\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({\n index,\n label: raw\n });\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nfunction _getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n}\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const _ref16 of added) {\n const index = _ref16.index;\n const label = _ref16.label;\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const _this$getUserBounds2 = this.getUserBounds(),\n minDefined = _this$getUserBounds2.minDefined,\n maxDefined = _this$getUserBounds2.maxDefined;\n let _this$getMinMax = this.getMinMax(true),\n min = _this$getMinMax.min,\n max = _this$getMinMax.max;\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = min === 0 && max === labels.length - 1 ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({\n value\n });\n }\n return ticks;\n }\n getLabelForValue(value) {\n return _getLabelForValue.call(this, value);\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: _getLabelForValue\n }\n};\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const bounds = generationOptions.bounds,\n step = generationOptions.step,\n min = generationOptions.min,\n max = generationOptions.max,\n precision = generationOptions.precision,\n count = generationOptions.count,\n maxTicks = generationOptions.maxTicks,\n maxDigits = generationOptions.maxDigits,\n includeBounds = generationOptions.includeBounds;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const rmin = dataRange.min,\n rmax = dataRange.max;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{\n value: rmin\n }, {\n value: rmax\n }];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(_decimalPlaces(spacing), _decimalPlaces(niceMin));\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({\n value: min\n });\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n const tickValue = Math.round((niceMin + j * spacing) * factor) / factor;\n if (maxDefined && tickValue > max) {\n break;\n }\n ticks.push({\n value: tickValue\n });\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({\n value: max\n });\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({\n value: niceMax\n });\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, _ref17) {\n let horizontal = _ref17.horizontal,\n minRotation = _ref17.minRotation;\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const beginAtZero = this.options.beginAtZero;\n const _this$getUserBounds3 = this.getUserBounds(),\n minDefined = _this$getUserBounds3.minDefined,\n maxDefined = _this$getUserBounds3.maxDefined;\n let min = this.min,\n max = this.max;\n const setMin = v => min = minDefined ? min : v;\n const setMax = v => max = maxDefined ? max : v;\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let maxTicksLimit = tickOpts.maxTicksLimit,\n stepSize = tickOpts.stepSize;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const _this$getMinMax2 = this.getMinMax(true),\n min = _this$getMinMax2.min,\n max = _this$getMinMax2.max;\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\nconst log10Floor = v => Math.floor(log10(v));\nconst changeExponent = (v, m) => Math.pow(10, log10Floor(v) + m);\nfunction isMajor(tickVal) {\n const remain = tickVal / Math.pow(10, log10Floor(tickVal));\n return remain === 1;\n}\nfunction steps(min, max, rangeExp) {\n const rangeStep = Math.pow(10, rangeExp);\n const start = Math.floor(min / rangeStep);\n const end = Math.ceil(max / rangeStep);\n return end - start;\n}\nfunction startExp(min, max) {\n const range = max - min;\n let rangeExp = log10Floor(range);\n while (steps(min, max, rangeExp) > 10) {\n rangeExp++;\n }\n while (steps(min, max, rangeExp) < 10) {\n rangeExp--;\n }\n return Math.min(rangeExp, log10Floor(min));\n}\nfunction generateTicks(generationOptions, _ref18) {\n let min = _ref18.min,\n max = _ref18.max;\n min = finiteOrDefault(generationOptions.min, min);\n const ticks = [];\n const minExp = log10Floor(min);\n let exp = startExp(min, max);\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n const stepSize = Math.pow(10, exp);\n const base = minExp > exp ? Math.pow(10, minExp) : 0;\n const start = Math.round((min - base) * precision) / precision;\n const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n let significand = Math.floor((start - offset) / Math.pow(10, exp));\n let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n while (value < max) {\n ticks.push({\n value,\n major: isMajor(value),\n significand\n });\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n }\n const lastTick = finiteOrDefault(generationOptions.max, value);\n ticks.push({\n value: lastTick,\n major: isMajor(lastTick),\n significand\n });\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const _this$getMinMax3 = this.getMinMax(true),\n min = _this$getMinMax3.min,\n max = _this$getMinMax3.max;\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n if (this._zero && this.min !== this._suggestedMin && !isNumberFinite(this._userMin)) {\n this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const _this$getUserBounds4 = this.getUserBounds(),\n minDefined = _this$getUserBounds4.minDefined,\n maxDefined = _this$getUserBounds4.maxDefined;\n let min = this.min;\n let max = this.max;\n const setMin = v => min = minDefined ? min : v;\n const setMax = v => max = maxDefined ? max : v;\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(changeExponent(min, -1));\n setMax(changeExponent(max, +1));\n }\n }\n if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n if (max <= 0) {\n setMax(changeExponent(min, +1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined ? '0' : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min ? 0 : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - size / 2,\n end: pos + size / 2\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(orig.l - limits.l, limits.r - orig.r, orig.t - limits.t, limits.b - orig.b);\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction createPointLabelItem(scale, index, itemOpts) {\n const outerDistance = scale.drawingArea;\n const extra = itemOpts.extra,\n additionalAngle = itemOpts.additionalAngle,\n padding = itemOpts.padding,\n size = itemOpts.size;\n const pointLabelPosition = scale.getPointPosition(index, outerDistance + extra + padding, additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n return {\n visible: true,\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n };\n}\nfunction isNotOverlapped(item, area) {\n if (!area) {\n return true;\n }\n const left = item.left,\n top = item.top,\n right = item.right,\n bottom = item.bottom;\n const apexesInArea = _isPointInArea({\n x: left,\n y: top\n }, area) || _isPointInArea({\n x: left,\n y: bottom\n }, area) || _isPointInArea({\n x: right,\n y: top\n }, area) || _isPointInArea({\n x: right,\n y: bottom\n }, area);\n return !apexesInArea;\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const _opts$pointLabels = opts.pointLabels,\n centerPointLabels = _opts$pointLabels.centerPointLabels,\n display = _opts$pointLabels.display;\n const itemOpts = {\n extra: getTickBackdropHeight(opts) / 2,\n additionalAngle: centerPointLabels ? PI / valueCount : 0\n };\n let area;\n for (let i = 0; i < valueCount; i++) {\n itemOpts.padding = padding[i];\n itemOpts.size = labelSizes[i];\n const item = createPointLabelItem(scale, i, itemOpts);\n items.push(item);\n if (display === 'auto') {\n item.visible = isNotOverlapped(item, area);\n if (item.visible) {\n area = item;\n }\n }\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= w / 2;\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= h / 2;\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabelBox(ctx, opts, item) {\n const left = item.left,\n top = item.top,\n right = item.right,\n bottom = item.bottom;\n const backdropColor = opts.backdropColor;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(opts.borderRadius);\n const padding = toPadding(opts.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n}\nfunction drawPointLabels(scale, labelCount) {\n const ctx = scale.ctx,\n pointLabels = scale.options.pointLabels;\n for (let i = labelCount - 1; i >= 0; i--) {\n const item = scale._pointLabelItems[i];\n if (!item.visible) {\n continue;\n }\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n drawPointLabelBox(ctx, optsAtIndex, item);\n const plFont = toFont(optsAtIndex.font);\n const x = item.x,\n y = item.y,\n textAlign = item.textAlign;\n renderText(ctx, scale._pointLabels[i], x, y + plFont.lineHeight / 2, plFont, {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n });\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const ctx = scale.ctx;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const color = gridLineOpts.color,\n lineWidth = gridLineOpts.lineWidth;\n if (!circular && !labelCount || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(borderOpts.dash);\n ctx.lineDashOffset = borderOpts.dashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const _this$getMinMax4 = this.getMinMax(false),\n min = _this$getMinMax4.min,\n max = _this$getMinMax4.max;\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels().map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n }).filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter) {\n let additionalAngle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const _this$_pointLabelItem = this._pointLabelItems[index],\n left = _this$_pointLabelItem.left,\n top = _this$_pointLabelItem.top,\n right = _this$_pointLabelItem.right,\n bottom = _this$_pointLabelItem.bottom;\n return {\n left,\n top,\n right,\n bottom\n };\n }\n drawBackground() {\n const _this$options16 = this.options,\n backgroundColor = _this$options16.backgroundColor,\n circular = _this$options16.grid.circular;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const angleLines = opts.angleLines,\n grid = opts.grid,\n border = opts.border;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0 || index === 0 && this.min < 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const context = this.getContext(index);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const color = optsAtIndex.color,\n lineWidth = optsAtIndex.lineWidth;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && this.min >= 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(-width / 2 - padding.left, -offset - tickFont.size / 2 - padding.top, width + padding.width, tickFont.size + padding.height);\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n strokeColor: optsAtIndex.textStrokeColor,\n strokeWidth: optsAtIndex.textStrokeWidth\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\nconst INTERVALS = {\n millisecond: {\n common: true,\n size: 1,\n steps: 1000\n },\n second: {\n common: true,\n size: 1000,\n steps: 60\n },\n minute: {\n common: true,\n size: 60000,\n steps: 60\n },\n hour: {\n common: true,\n size: 3600000,\n steps: 24\n },\n day: {\n common: true,\n size: 86400000,\n steps: 30\n },\n week: {\n common: false,\n size: 604800000,\n steps: 4\n },\n month: {\n common: true,\n size: 2.628e9,\n steps: 12\n },\n quarter: {\n common: false,\n size: 7.884e9,\n steps: 4\n },\n year: {\n common: true,\n size: 3.154e10\n }\n};\nconst UNITS = /* #__PURE__ */Object.keys(INTERVALS);\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const _scale$_parseOpts = scale._parseOpts,\n parser = _scale$_parseOpts.parser,\n round = _scale$_parseOpts.round,\n isoWeekday = _scale$_parseOpts.isoWeekday;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string' ? adapter.parse(value, parser) : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true) ? adapter.startOf(value, 'isoWeek', isoWeekday) : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const _lookup2 = _lookup(timestamps, time),\n lo = _lookup2.lo,\n hi = _lookup2.hi;\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts) {\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let _this$getUserBounds5 = this.getUserBounds(),\n min = _this$getUserBounds5.min,\n max = _this$getUserBounds5.max,\n minDefined = _this$getUserBounds5.minDefined,\n maxDefined = _this$getUserBounds5.maxDefined;\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {\n min,\n max\n };\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min)) : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n initOffsets() {\n let timestamps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {\n start,\n end,\n factor: 1 / (start + 1 + end)\n };\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort(sorter).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n format(value, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const fmt = format || formats[unit];\n return this._adapter.format(value, fmt);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formatter = options.ticks.callback;\n if (formatter) {\n return callback(formatter, [time, index, ticks], this);\n }\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: tickLabelWidth * cosRotation + tickFontSize * sinRotation,\n h: tickLabelWidth * sinRotation + tickFontSize * cosRotation\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return this._cache.data = metas[0].controller.getAllParsedValues(this);\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return this._cache.data = this.normalize(timestamps);\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps);\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n callback: false,\n major: {\n enabled: false\n }\n }\n};\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n var _lookupByKey2 = _lookupByKey(table, 'pos', val);\n lo = _lookupByKey2.lo;\n hi = _lookupByKey2.hi;\n }\n var _table$lo = table[lo];\n prevSource = _table$lo.pos;\n prevTarget = _table$lo.time;\n var _table$hi = table[hi];\n nextSource = _table$hi.pos;\n nextTarget = _table$hi.time;\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n var _lookupByKey3 = _lookupByKey(table, 'time', val);\n lo = _lookupByKey3.lo;\n hi = _lookupByKey3.hi;\n }\n var _table$lo2 = table[lo];\n prevSource = _table$lo2.time;\n prevTarget = _table$lo2.pos;\n var _table$hi2 = table[hi];\n nextSource = _table$hi2.time;\n nextTarget = _table$hi2.pos;\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const min = this.min,\n max = this.max;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [{\n time: min,\n pos: 0\n }, {\n time: max,\n pos: 1\n }];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({\n time: curr,\n pos: i / (ilen - 1)\n });\n }\n }\n return table;\n }\n _generate() {\n const min = this.min;\n const max = this.max;\n let timestamps = super.getDataTimestamps();\n if (!timestamps.includes(min) || !timestamps.length) {\n timestamps.splice(0, 0, min);\n }\n if (!timestamps.includes(max) || timestamps.length === 1) {\n timestamps.push(max);\n }\n return timestamps.sort((a, b) => a - b);\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\nvar scales = /*#__PURE__*/Object.freeze({\n __proto__: null,\n CategoryScale: CategoryScale,\n LinearScale: LinearScale,\n LogarithmicScale: LogarithmicScale,\n RadialLinearScale: RadialLinearScale,\n TimeScale: TimeScale,\n TimeSeriesScale: TimeSeriesScale\n});\nconst registerables = [controllers, elements, plugins, scales];\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, plugin_colors as Colors, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, defaults, elements, layouts, plugins, registerables, registry, scales };","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument :\n // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n return overflowOffsets;\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) ||\n // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n var currentNode = getParentNode(element);\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' ||\n // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n return instance;\n }\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n var noopFn = function noopFn() {};\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n return (\n // this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot ||\n // step into the shadow DOM of the parent of a slotted node\n element.parentNode || (\n // DOM Element detected\n isShadowRoot(element) ? element.host : null) ||\n // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n );\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n offsetParent = offsetParent;\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height :\n // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width :\n // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n x = _ref4.x;\n y = _ref4.y;\n if (gpuAcceleration) {\n var _Object$assign;\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import computeOffsets from \"../utils/computeOffsets.js\";\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n if (list === void 0) {\n list = [];\n }\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList :\n // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n return getScrollParent(getParentNode(node));\n}","/*!\n * jQuery JavaScript Library v3.6.4\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-03-08T15:28Z\n */\n(function (global, factory) {\n \"use strict\";\n\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\n // For CommonJS and CommonJS-like environments where a proper `window`\n // is present, execute the factory and get jQuery.\n // For environments that do not have a `window` with a `document`\n // (such as Node.js), expose a factory as module.exports.\n // This accentuates the need for the creation of a real `window`.\n // e.g. var jQuery = require(\"jquery\")(window);\n // See ticket trac-14549 for more info.\n module.exports = global.document ? factory(global, true) : function (w) {\n if (!w.document) {\n throw new Error(\"jQuery requires a window with a document\");\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n\n // Pass this if window is not defined yet\n})(typeof window !== \"undefined\" ? window : this, function (window, noGlobal) {\n // Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n // arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n // enough that all such attempts are guarded in a try block.\n \"use strict\";\n\n var arr = [];\n var getProto = Object.getPrototypeOf;\n var slice = arr.slice;\n var flat = arr.flat ? function (array) {\n return arr.flat.call(array);\n } : function (array) {\n return arr.concat.apply([], array);\n };\n var push = arr.push;\n var indexOf = arr.indexOf;\n var class2type = {};\n var toString = class2type.toString;\n var hasOwn = class2type.hasOwnProperty;\n var fnToString = hasOwn.toString;\n var ObjectFunctionString = fnToString.call(Object);\n var support = {};\n var isFunction = function isFunction(obj) {\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n // Plus for old WebKit, typeof returns \"function\" for HTML collections\n // (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\" && typeof obj.item !== \"function\";\n };\n var isWindow = function isWindow(obj) {\n return obj != null && obj === obj.window;\n };\n var document = window.document;\n var preservedScriptAttributes = {\n type: true,\n src: true,\n nonce: true,\n noModule: true\n };\n function DOMEval(code, node, doc) {\n doc = doc || document;\n var i,\n val,\n script = doc.createElement(\"script\");\n script.text = code;\n if (node) {\n for (i in preservedScriptAttributes) {\n // Support: Firefox 64+, Edge 18+\n // Some browsers don't support the \"nonce\" property on scripts.\n // On the other hand, just using `getAttribute` is not enough as\n // the `nonce` attribute is reset to an empty string whenever it\n // becomes browsing-context connected.\n // See https://github.com/whatwg/html/issues/2369\n // See https://html.spec.whatwg.org/#nonce-attributes\n // The `node.getAttribute` check was added for the sake of\n // `jQuery.globalEval` so that it can fake a nonce-containing node\n // via an object.\n val = node[i] || node.getAttribute && node.getAttribute(i);\n if (val) {\n script.setAttribute(i, val);\n }\n }\n }\n doc.head.appendChild(script).parentNode.removeChild(script);\n }\n function toType(obj) {\n if (obj == null) {\n return obj + \"\";\n }\n\n // Support: Android <=2.3 only (functionish RegExp)\n return typeof obj === \"object\" || typeof obj === \"function\" ? class2type[toString.call(obj)] || \"object\" : typeof obj;\n }\n /* global Symbol */\n // Defining this global in .eslintrc.json would create a danger of using the global\n // unguarded in another place, it seems safer to define global only for this module\n\n var version = \"3.6.4\",\n // Define a local copy of jQuery\n jQuery = function (selector, context) {\n // The jQuery object is actually just the init constructor 'enhanced'\n // Need init if jQuery is called (just allow error to be thrown if not included)\n return new jQuery.fn.init(selector, context);\n };\n jQuery.fn = jQuery.prototype = {\n // The current version of jQuery being used\n jquery: version,\n constructor: jQuery,\n // The default length of a jQuery object is 0\n length: 0,\n toArray: function () {\n return slice.call(this);\n },\n // Get the Nth element in the matched element set OR\n // Get the whole matched element set as a clean array\n get: function (num) {\n // Return all the elements in a clean array\n if (num == null) {\n return slice.call(this);\n }\n\n // Return just the one element from the set\n return num < 0 ? this[num + this.length] : this[num];\n },\n // Take an array of elements and push it onto the stack\n // (returning the new matched element set)\n pushStack: function (elems) {\n // Build a new jQuery matched element set\n var ret = jQuery.merge(this.constructor(), elems);\n\n // Add the old object onto the stack (as a reference)\n ret.prevObject = this;\n\n // Return the newly-formed element set\n return ret;\n },\n // Execute a callback for every element in the matched set.\n each: function (callback) {\n return jQuery.each(this, callback);\n },\n map: function (callback) {\n return this.pushStack(jQuery.map(this, function (elem, i) {\n return callback.call(elem, i, elem);\n }));\n },\n slice: function () {\n return this.pushStack(slice.apply(this, arguments));\n },\n first: function () {\n return this.eq(0);\n },\n last: function () {\n return this.eq(-1);\n },\n even: function () {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return (i + 1) % 2;\n }));\n },\n odd: function () {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return i % 2;\n }));\n },\n eq: function (i) {\n var len = this.length,\n j = +i + (i < 0 ? len : 0);\n return this.pushStack(j >= 0 && j < len ? [this[j]] : []);\n },\n end: function () {\n return this.prevObject || this.constructor();\n },\n // For internal use only.\n // Behaves like an Array's method, not like a jQuery method.\n push: push,\n sort: arr.sort,\n splice: arr.splice\n };\n jQuery.extend = jQuery.fn.extend = function () {\n var options,\n name,\n src,\n copy,\n copyIsArray,\n clone,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length,\n deep = false;\n\n // Handle a deep copy situation\n if (typeof target === \"boolean\") {\n deep = target;\n\n // Skip the boolean and the target\n target = arguments[i] || {};\n i++;\n }\n\n // Handle case when target is a string or something (possible in deep copy)\n if (typeof target !== \"object\" && !isFunction(target)) {\n target = {};\n }\n\n // Extend jQuery itself if only one argument is passed\n if (i === length) {\n target = this;\n i--;\n }\n for (; i < length; i++) {\n // Only deal with non-null/undefined values\n if ((options = arguments[i]) != null) {\n // Extend the base object\n for (name in options) {\n copy = options[name];\n\n // Prevent Object.prototype pollution\n // Prevent never-ending loop\n if (name === \"__proto__\" || target === copy) {\n continue;\n }\n\n // Recurse if we're merging plain objects or arrays\n if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {\n src = target[name];\n\n // Ensure proper type for the source value\n if (copyIsArray && !Array.isArray(src)) {\n clone = [];\n } else if (!copyIsArray && !jQuery.isPlainObject(src)) {\n clone = {};\n } else {\n clone = src;\n }\n copyIsArray = false;\n\n // Never move original objects, clone them\n target[name] = jQuery.extend(deep, clone, copy);\n\n // Don't bring in undefined values\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n\n // Return the modified object\n return target;\n };\n jQuery.extend({\n // Unique for each copy of jQuery on the page\n expando: \"jQuery\" + (version + Math.random()).replace(/\\D/g, \"\"),\n // Assume jQuery is ready without the ready module\n isReady: true,\n error: function (msg) {\n throw new Error(msg);\n },\n noop: function () {},\n isPlainObject: function (obj) {\n var proto, Ctor;\n\n // Detect obvious negatives\n // Use toString instead of jQuery.type to catch host objects\n if (!obj || toString.call(obj) !== \"[object Object]\") {\n return false;\n }\n proto = getProto(obj);\n\n // Objects with no prototype (e.g., `Object.create( null )`) are plain\n if (!proto) {\n return true;\n }\n\n // Objects with prototype are plain iff they were constructed by a global Object function\n Ctor = hasOwn.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && fnToString.call(Ctor) === ObjectFunctionString;\n },\n isEmptyObject: function (obj) {\n var name;\n for (name in obj) {\n return false;\n }\n return true;\n },\n // Evaluates a script in a provided context; falls back to the global one\n // if not specified.\n globalEval: function (code, options, doc) {\n DOMEval(code, {\n nonce: options && options.nonce\n }, doc);\n },\n each: function (obj, callback) {\n var length,\n i = 0;\n if (isArrayLike(obj)) {\n length = obj.length;\n for (; i < length; i++) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n } else {\n for (i in obj) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n }\n return obj;\n },\n // results is for internal usage only\n makeArray: function (arr, results) {\n var ret = results || [];\n if (arr != null) {\n if (isArrayLike(Object(arr))) {\n jQuery.merge(ret, typeof arr === \"string\" ? [arr] : arr);\n } else {\n push.call(ret, arr);\n }\n }\n return ret;\n },\n inArray: function (elem, arr, i) {\n return arr == null ? -1 : indexOf.call(arr, elem, i);\n },\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n merge: function (first, second) {\n var len = +second.length,\n j = 0,\n i = first.length;\n for (; j < len; j++) {\n first[i++] = second[j];\n }\n first.length = i;\n return first;\n },\n grep: function (elems, callback, invert) {\n var callbackInverse,\n matches = [],\n i = 0,\n length = elems.length,\n callbackExpect = !invert;\n\n // Go through the array, only saving the items\n // that pass the validator function\n for (; i < length; i++) {\n callbackInverse = !callback(elems[i], i);\n if (callbackInverse !== callbackExpect) {\n matches.push(elems[i]);\n }\n }\n return matches;\n },\n // arg is for internal usage only\n map: function (elems, callback, arg) {\n var length,\n value,\n i = 0,\n ret = [];\n\n // Go through the array, translating each of the items to their new values\n if (isArrayLike(elems)) {\n length = elems.length;\n for (; i < length; i++) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret.push(value);\n }\n }\n\n // Go through every key on the object,\n } else {\n for (i in elems) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret.push(value);\n }\n }\n }\n\n // Flatten any nested arrays\n return flat(ret);\n },\n // A global GUID counter for objects\n guid: 1,\n // jQuery.support is not used in Core but other projects attach their\n // properties to it so it needs to exist.\n support: support\n });\n if (typeof Symbol === \"function\") {\n jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];\n }\n\n // Populate the class2type map\n jQuery.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"), function (_i, name) {\n class2type[\"[object \" + name + \"]\"] = name.toLowerCase();\n });\n function isArrayLike(obj) {\n // Support: real iOS 8.2 only (not reproducible in simulator)\n // `in` check used to prevent JIT error (gh-2145)\n // hasOwn isn't used here due to false negatives\n // regarding Nodelist length in IE\n var length = !!obj && \"length\" in obj && obj.length,\n type = toType(obj);\n if (isFunction(obj) || isWindow(obj)) {\n return false;\n }\n return type === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && length - 1 in obj;\n }\n var Sizzle =\n /*!\n * Sizzle CSS Selector Engine v2.3.10\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2023-02-14\n */\n function (window) {\n var i,\n support,\n Expr,\n getText,\n isXML,\n tokenize,\n compile,\n select,\n outermostContext,\n sortInput,\n hasDuplicate,\n // Local document vars\n setDocument,\n document,\n docElem,\n documentIsHTML,\n rbuggyQSA,\n rbuggyMatches,\n matches,\n contains,\n // Instance-specific data\n expando = \"sizzle\" + 1 * new Date(),\n preferredDoc = window.document,\n dirruns = 0,\n done = 0,\n classCache = createCache(),\n tokenCache = createCache(),\n compilerCache = createCache(),\n nonnativeSelectorCache = createCache(),\n sortOrder = function (a, b) {\n if (a === b) {\n hasDuplicate = true;\n }\n return 0;\n },\n // Instance methods\n hasOwn = {}.hasOwnProperty,\n arr = [],\n pop = arr.pop,\n pushNative = arr.push,\n push = arr.push,\n slice = arr.slice,\n // Use a stripped-down indexOf as it's faster than native\n // https://jsperf.com/thor-indexof-vs-for/5\n indexOf = function (list, elem) {\n var i = 0,\n len = list.length;\n for (; i < len; i++) {\n if (list[i] === elem) {\n return i;\n }\n }\n return -1;\n },\n booleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" + \"ismap|loop|multiple|open|readonly|required|scoped\",\n // Regular expressions\n\n // http://www.w3.org/TR/css3-selectors/#whitespace\n whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n identifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n attributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n // Operator (capture 2)\n \"*([*^$|!~]?=)\" + whitespace +\n // \"Attribute values must be CSS identifiers [capture 5]\n // or strings [capture 3 or capture 4]\"\n \"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace + \"*\\\\]\",\n pseudos = \":(\" + identifier + \")(?:\\\\((\" +\n // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n // 1. quoted (capture 3; capture 4 or capture 5)\n \"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n // 2. simple (capture 6)\n \"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n // 3. anything else (capture 2)\n \".*\" + \")\\\\)|)\",\n // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n rwhitespace = new RegExp(whitespace + \"+\", \"g\"),\n rtrim = new RegExp(\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\"),\n rcomma = new RegExp(\"^\" + whitespace + \"*,\" + whitespace + \"*\"),\n rleadingCombinator = new RegExp(\"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\"),\n rdescend = new RegExp(whitespace + \"|>\"),\n rpseudo = new RegExp(pseudos),\n ridentifier = new RegExp(\"^\" + identifier + \"$\"),\n matchExpr = {\n \"ID\": new RegExp(\"^#(\" + identifier + \")\"),\n \"CLASS\": new RegExp(\"^\\\\.(\" + identifier + \")\"),\n \"TAG\": new RegExp(\"^(\" + identifier + \"|[*])\"),\n \"ATTR\": new RegExp(\"^\" + attributes),\n \"PSEUDO\": new RegExp(\"^\" + pseudos),\n \"CHILD\": new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\"),\n \"bool\": new RegExp(\"^(?:\" + booleans + \")$\", \"i\"),\n // For use in libraries implementing .is()\n // We use this for POS matching in `select`\n \"needsContext\": new RegExp(\"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\")\n },\n rhtml = /HTML$/i,\n rinputs = /^(?:input|select|textarea|button)$/i,\n rheader = /^h\\d$/i,\n rnative = /^[^{]+\\{\\s*\\[native \\w/,\n // Easily-parseable/retrievable ID or TAG or CLASS selectors\n rquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n rsibling = /[+~]/,\n // CSS escapes\n // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n runescape = new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\"),\n funescape = function (escape, nonHex) {\n var high = \"0x\" + escape.slice(1) - 0x10000;\n return nonHex ?\n // Strip the backslash prefix from a non-hex escape sequence\n nonHex :\n // Replace a hexadecimal escape sequence with the encoded Unicode code point\n // Support: IE <=11+\n // For values outside the Basic Multilingual Plane (BMP), manually construct a\n // surrogate pair\n high < 0 ? String.fromCharCode(high + 0x10000) : String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);\n },\n // CSS string/identifier serialization\n // https://drafts.csswg.org/cssom/#common-serializing-idioms\n rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n fcssescape = function (ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === \"\\0\") {\n return \"\\uFFFD\";\n }\n\n // Control characters and (dependent upon position) numbers get escaped as code points\n return ch.slice(0, -1) + \"\\\\\" + ch.charCodeAt(ch.length - 1).toString(16) + \" \";\n }\n\n // Other potentially-special ASCII characters get backslash-escaped\n return \"\\\\\" + ch;\n },\n // Used for iframes\n // See setDocument()\n // Removing the function wrapper causes a \"Permission Denied\"\n // error in IE\n unloadHandler = function () {\n setDocument();\n },\n inDisabledFieldset = addCombinator(function (elem) {\n return elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n }, {\n dir: \"parentNode\",\n next: \"legend\"\n });\n\n // Optimize for push.apply( _, NodeList )\n try {\n push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes);\n\n // Support: Android<4.0\n // Detect silently failing push.apply\n // eslint-disable-next-line no-unused-expressions\n arr[preferredDoc.childNodes.length].nodeType;\n } catch (e) {\n push = {\n apply: arr.length ?\n // Leverage slice if possible\n function (target, els) {\n pushNative.apply(target, slice.call(els));\n } :\n // Support: IE<9\n // Otherwise append directly\n function (target, els) {\n var j = target.length,\n i = 0;\n\n // Can't trust NodeList.length\n while (target[j++] = els[i++]) {}\n target.length = j - 1;\n }\n };\n }\n function Sizzle(selector, context, results, seed) {\n var m,\n i,\n elem,\n nid,\n match,\n groups,\n newSelector,\n newContext = context && context.ownerDocument,\n // nodeType defaults to 9, since context defaults to document\n nodeType = context ? context.nodeType : 9;\n results = results || [];\n\n // Return early from calls with invalid selector or context\n if (typeof selector !== \"string\" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {\n return results;\n }\n\n // Try to shortcut find operations (as opposed to filters) in HTML documents\n if (!seed) {\n setDocument(context);\n context = context || document;\n if (documentIsHTML) {\n // If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n // (excepting DocumentFragment context, where the methods don't exist)\n if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {\n // ID selector\n if (m = match[1]) {\n // Document context\n if (nodeType === 9) {\n if (elem = context.getElementById(m)) {\n // Support: IE, Opera, Webkit\n // TODO: identify versions\n // getElementById can match elements by name instead of ID\n if (elem.id === m) {\n results.push(elem);\n return results;\n }\n } else {\n return results;\n }\n\n // Element context\n } else {\n // Support: IE, Opera, Webkit\n // TODO: identify versions\n // getElementById can match elements by name instead of ID\n if (newContext && (elem = newContext.getElementById(m)) && contains(context, elem) && elem.id === m) {\n results.push(elem);\n return results;\n }\n }\n\n // Type selector\n } else if (match[2]) {\n push.apply(results, context.getElementsByTagName(selector));\n return results;\n\n // Class selector\n } else if ((m = match[3]) && support.getElementsByClassName && context.getElementsByClassName) {\n push.apply(results, context.getElementsByClassName(m));\n return results;\n }\n }\n\n // Take advantage of querySelectorAll\n if (support.qsa && !nonnativeSelectorCache[selector + \" \"] && (!rbuggyQSA || !rbuggyQSA.test(selector)) && (\n // Support: IE 8 only\n // Exclude object elements\n nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\")) {\n newSelector = selector;\n newContext = context;\n\n // qSA considers elements outside a scoping root when evaluating child or\n // descendant combinators, which is not what we want.\n // In such cases, we work around the behavior by prefixing every selector in the\n // list with an ID selector referencing the scope context.\n // The technique has to be used as well when a leading combinator is used\n // as such selectors are not recognized by querySelectorAll.\n // Thanks to Andrew Dupont for this technique.\n if (nodeType === 1 && (rdescend.test(selector) || rleadingCombinator.test(selector))) {\n // Expand context for sibling selectors\n newContext = rsibling.test(selector) && testContext(context.parentNode) || context;\n\n // We can use :scope instead of the ID hack if the browser\n // supports it & if we're not changing the context.\n if (newContext !== context || !support.scope) {\n // Capture the context ID, setting it first if necessary\n if (nid = context.getAttribute(\"id\")) {\n nid = nid.replace(rcssescape, fcssescape);\n } else {\n context.setAttribute(\"id\", nid = expando);\n }\n }\n\n // Prefix every selector in the list\n groups = tokenize(selector);\n i = groups.length;\n while (i--) {\n groups[i] = (nid ? \"#\" + nid : \":scope\") + \" \" + toSelector(groups[i]);\n }\n newSelector = groups.join(\",\");\n }\n try {\n push.apply(results, newContext.querySelectorAll(newSelector));\n return results;\n } catch (qsaError) {\n nonnativeSelectorCache(selector, true);\n } finally {\n if (nid === expando) {\n context.removeAttribute(\"id\");\n }\n }\n }\n }\n }\n\n // All others\n return select(selector.replace(rtrim, \"$1\"), context, results, seed);\n }\n\n /**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\n function createCache() {\n var keys = [];\n function cache(key, value) {\n // Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n if (keys.push(key + \" \") > Expr.cacheLength) {\n // Only keep the most recent entries\n delete cache[keys.shift()];\n }\n return cache[key + \" \"] = value;\n }\n return cache;\n }\n\n /**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\n function markFunction(fn) {\n fn[expando] = true;\n return fn;\n }\n\n /**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\n function assert(fn) {\n var el = document.createElement(\"fieldset\");\n try {\n return !!fn(el);\n } catch (e) {\n return false;\n } finally {\n // Remove from its parent by default\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // release memory in IE\n el = null;\n }\n }\n\n /**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\n function addHandle(attrs, handler) {\n var arr = attrs.split(\"|\"),\n i = arr.length;\n while (i--) {\n Expr.attrHandle[arr[i]] = handler;\n }\n }\n\n /**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\n function siblingCheck(a, b) {\n var cur = b && a,\n diff = cur && a.nodeType === 1 && b.nodeType === 1 && a.sourceIndex - b.sourceIndex;\n\n // Use IE sourceIndex if available on both nodes\n if (diff) {\n return diff;\n }\n\n // Check if b follows a\n if (cur) {\n while (cur = cur.nextSibling) {\n if (cur === b) {\n return -1;\n }\n }\n }\n return a ? 1 : -1;\n }\n\n /**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\n function createInputPseudo(type) {\n return function (elem) {\n var name = elem.nodeName.toLowerCase();\n return name === \"input\" && elem.type === type;\n };\n }\n\n /**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\n function createButtonPseudo(type) {\n return function (elem) {\n var name = elem.nodeName.toLowerCase();\n return (name === \"input\" || name === \"button\") && elem.type === type;\n };\n }\n\n /**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\n function createDisabledPseudo(disabled) {\n // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n return function (elem) {\n // Only certain elements can match :enabled or :disabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n if (\"form\" in elem) {\n // Check for inherited disabledness on relevant non-disabled elements:\n // * listed form-associated elements in a disabled fieldset\n // https://html.spec.whatwg.org/multipage/forms.html#category-listed\n // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n // * option elements in a disabled optgroup\n // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n // All such elements have a \"form\" property.\n if (elem.parentNode && elem.disabled === false) {\n // Option elements defer to a parent optgroup if present\n if (\"label\" in elem) {\n if (\"label\" in elem.parentNode) {\n return elem.parentNode.disabled === disabled;\n } else {\n return elem.disabled === disabled;\n }\n }\n\n // Support: IE 6 - 11\n // Use the isDisabled shortcut property to check for disabled fieldset ancestors\n return elem.isDisabled === disabled ||\n // Where there is no isDisabled, check manually\n /* jshint -W018 */\n elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled;\n }\n return elem.disabled === disabled;\n\n // Try to winnow out elements that can't be disabled before trusting the disabled property.\n // Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n // even exist on them, let alone have a boolean value.\n } else if (\"label\" in elem) {\n return elem.disabled === disabled;\n }\n\n // Remaining elements are neither :enabled nor :disabled\n return false;\n };\n }\n\n /**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\n function createPositionalPseudo(fn) {\n return markFunction(function (argument) {\n argument = +argument;\n return markFunction(function (seed, matches) {\n var j,\n matchIndexes = fn([], seed.length, argument),\n i = matchIndexes.length;\n\n // Match elements found at the specified indexes\n while (i--) {\n if (seed[j = matchIndexes[i]]) {\n seed[j] = !(matches[j] = seed[j]);\n }\n }\n });\n });\n }\n\n /**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\n function testContext(context) {\n return context && typeof context.getElementsByTagName !== \"undefined\" && context;\n }\n\n // Expose support vars for convenience\n support = Sizzle.support = {};\n\n /**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\n isXML = Sizzle.isXML = function (elem) {\n var namespace = elem && elem.namespaceURI,\n docElem = elem && (elem.ownerDocument || elem).documentElement;\n\n // Support: IE <=8\n // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n // https://bugs.jquery.com/ticket/4833\n return !rhtml.test(namespace || docElem && docElem.nodeName || \"HTML\");\n };\n\n /**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\n setDocument = Sizzle.setDocument = function (node) {\n var hasCompare,\n subWindow,\n doc = node ? node.ownerDocument || node : preferredDoc;\n\n // Return early if doc is invalid or already selected\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (doc == document || doc.nodeType !== 9 || !doc.documentElement) {\n return document;\n }\n\n // Update global variables\n document = doc;\n docElem = document.documentElement;\n documentIsHTML = !isXML(document);\n\n // Support: IE 9 - 11+, Edge 12 - 18+\n // Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (preferredDoc != document && (subWindow = document.defaultView) && subWindow.top !== subWindow) {\n // Support: IE 11, Edge\n if (subWindow.addEventListener) {\n subWindow.addEventListener(\"unload\", unloadHandler, false);\n\n // Support: IE 9 - 10 only\n } else if (subWindow.attachEvent) {\n subWindow.attachEvent(\"onunload\", unloadHandler);\n }\n }\n\n // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n // Safari 4 - 5 only, Opera <=11.6 - 12.x only\n // IE/Edge & older browsers don't support the :scope pseudo-class.\n // Support: Safari 6.0 only\n // Safari 6.0 supports :scope but it's an alias of :root there.\n support.scope = assert(function (el) {\n docElem.appendChild(el).appendChild(document.createElement(\"div\"));\n return typeof el.querySelectorAll !== \"undefined\" && !el.querySelectorAll(\":scope fieldset div\").length;\n });\n\n // Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n // Make sure the the `:has()` argument is parsed unforgivingly.\n // We include `*` in the test to detect buggy implementations that are\n // _selectively_ forgiving (specifically when the list includes at least\n // one valid selector).\n // Note that we treat complete lack of support for `:has()` as if it were\n // spec-compliant support, which is fine because use of `:has()` in such\n // environments will fail in the qSA path and fall back to jQuery traversal\n // anyway.\n support.cssHas = assert(function () {\n try {\n document.querySelector(\":has(*,:jqfake)\");\n return false;\n } catch (e) {\n return true;\n }\n });\n\n /* Attributes\n ---------------------------------------------------------------------- */\n\n // Support: IE<8\n // Verify that getAttribute really returns attributes and not properties\n // (excepting IE8 booleans)\n support.attributes = assert(function (el) {\n el.className = \"i\";\n return !el.getAttribute(\"className\");\n });\n\n /* getElement(s)By*\n ---------------------------------------------------------------------- */\n\n // Check if getElementsByTagName(\"*\") returns only elements\n support.getElementsByTagName = assert(function (el) {\n el.appendChild(document.createComment(\"\"));\n return !el.getElementsByTagName(\"*\").length;\n });\n\n // Support: IE<9\n support.getElementsByClassName = rnative.test(document.getElementsByClassName);\n\n // Support: IE<10\n // Check if getElementById returns elements by name\n // The broken getElementById methods don't pick up programmatically-set names,\n // so use a roundabout getElementsByName test\n support.getById = assert(function (el) {\n docElem.appendChild(el).id = expando;\n return !document.getElementsByName || !document.getElementsByName(expando).length;\n });\n\n // ID filter and find\n if (support.getById) {\n Expr.filter[\"ID\"] = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n return elem.getAttribute(\"id\") === attrId;\n };\n };\n Expr.find[\"ID\"] = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var elem = context.getElementById(id);\n return elem ? [elem] : [];\n }\n };\n } else {\n Expr.filter[\"ID\"] = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n var node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n return node && node.value === attrId;\n };\n };\n\n // Support: IE 6 - 7 only\n // getElementById is not reliable as a find shortcut\n Expr.find[\"ID\"] = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var node,\n i,\n elems,\n elem = context.getElementById(id);\n if (elem) {\n // Verify the id attribute\n node = elem.getAttributeNode(\"id\");\n if (node && node.value === id) {\n return [elem];\n }\n\n // Fall back on getElementsByName\n elems = context.getElementsByName(id);\n i = 0;\n while (elem = elems[i++]) {\n node = elem.getAttributeNode(\"id\");\n if (node && node.value === id) {\n return [elem];\n }\n }\n }\n return [];\n }\n };\n }\n\n // Tag\n Expr.find[\"TAG\"] = support.getElementsByTagName ? function (tag, context) {\n if (typeof context.getElementsByTagName !== \"undefined\") {\n return context.getElementsByTagName(tag);\n\n // DocumentFragment nodes don't have gEBTN\n } else if (support.qsa) {\n return context.querySelectorAll(tag);\n }\n } : function (tag, context) {\n var elem,\n tmp = [],\n i = 0,\n // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n results = context.getElementsByTagName(tag);\n\n // Filter out possible comments\n if (tag === \"*\") {\n while (elem = results[i++]) {\n if (elem.nodeType === 1) {\n tmp.push(elem);\n }\n }\n return tmp;\n }\n return results;\n };\n\n // Class\n Expr.find[\"CLASS\"] = support.getElementsByClassName && function (className, context) {\n if (typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML) {\n return context.getElementsByClassName(className);\n }\n };\n\n /* QSA/matchesSelector\n ---------------------------------------------------------------------- */\n\n // QSA and matchesSelector support\n\n // matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n rbuggyMatches = [];\n\n // qSa(:focus) reports false when true (Chrome 21)\n // We allow this because of a bug in IE8/9 that throws an error\n // whenever `document.activeElement` is accessed on an iframe\n // So, we allow :focus to pass through QSA all the time to avoid the IE error\n // See https://bugs.jquery.com/ticket/13378\n rbuggyQSA = [];\n if (support.qsa = rnative.test(document.querySelectorAll)) {\n // Build QSA regex\n // Regex strategy adopted from Diego Perini\n assert(function (el) {\n var input;\n\n // Select is set to empty string on purpose\n // This is to test IE's treatment of not explicitly\n // setting a boolean content attribute,\n // since its presence should be enough\n // https://bugs.jquery.com/ticket/12359\n docElem.appendChild(el).innerHTML = \"\" + \"\";\n\n // Support: IE8, Opera 11-12.16\n // Nothing should be selected when empty strings follow ^= or $= or *=\n // The test attribute must be unknown in Opera but \"safe\" for WinRT\n // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n if (el.querySelectorAll(\"[msallowcapture^='']\").length) {\n rbuggyQSA.push(\"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\");\n }\n\n // Support: IE8\n // Boolean attributes and \"value\" are not treated correctly\n if (!el.querySelectorAll(\"[selected]\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\");\n }\n\n // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n if (!el.querySelectorAll(\"[id~=\" + expando + \"-]\").length) {\n rbuggyQSA.push(\"~=\");\n }\n\n // Support: IE 11+, Edge 15 - 18+\n // IE 11/Edge don't find elements on a `[name='']` query in some cases.\n // Adding a temporary attribute to the document before the selection works\n // around the issue.\n // Interestingly, IE 10 & older don't seem to have the issue.\n input = document.createElement(\"input\");\n input.setAttribute(\"name\", \"\");\n el.appendChild(input);\n if (!el.querySelectorAll(\"[name='']\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" + whitespace + \"*(?:''|\\\"\\\")\");\n }\n\n // Webkit/Opera - :checked should return selected option elements\n // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n // IE8 throws error here and will not see later tests\n if (!el.querySelectorAll(\":checked\").length) {\n rbuggyQSA.push(\":checked\");\n }\n\n // Support: Safari 8+, iOS 8+\n // https://bugs.webkit.org/show_bug.cgi?id=136851\n // In-page `selector#id sibling-combinator selector` fails\n if (!el.querySelectorAll(\"a#\" + expando + \"+*\").length) {\n rbuggyQSA.push(\".#.+[+~]\");\n }\n\n // Support: Firefox <=3.6 - 5 only\n // Old Firefox doesn't throw on a badly-escaped identifier.\n el.querySelectorAll(\"\\\\\\f\");\n rbuggyQSA.push(\"[\\\\r\\\\n\\\\f]\");\n });\n assert(function (el) {\n el.innerHTML = \"\" + \"\";\n\n // Support: Windows 8 Native Apps\n // The type and name attributes are restricted during .innerHTML assignment\n var input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n el.appendChild(input).setAttribute(\"name\", \"D\");\n\n // Support: IE8\n // Enforce case-sensitivity of name attribute\n if (el.querySelectorAll(\"[name=d]\").length) {\n rbuggyQSA.push(\"name\" + whitespace + \"*[*^$|!~]?=\");\n }\n\n // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n // IE8 throws error here and will not see later tests\n if (el.querySelectorAll(\":enabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n }\n\n // Support: IE9-11+\n // IE's :disabled selector does not pick up the children of disabled fieldsets\n docElem.appendChild(el).disabled = true;\n if (el.querySelectorAll(\":disabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n }\n\n // Support: Opera 10 - 11 only\n // Opera 10-11 does not throw on post-comma invalid pseudos\n el.querySelectorAll(\"*,:x\");\n rbuggyQSA.push(\",.*:\");\n });\n }\n if (support.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) {\n assert(function (el) {\n // Check to see if it's possible to do matchesSelector\n // on a disconnected node (IE 9)\n support.disconnectedMatch = matches.call(el, \"*\");\n\n // This should fail with an exception\n // Gecko does not error, returns false instead\n matches.call(el, \"[s!='']:x\");\n rbuggyMatches.push(\"!=\", pseudos);\n });\n }\n if (!support.cssHas) {\n // Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n // Our regular `try-catch` mechanism fails to detect natively-unsupported\n // pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n // in browsers that parse the `:has()` argument as a forgiving selector list.\n // https://drafts.csswg.org/selectors/#relational now requires the argument\n // to be parsed unforgivingly, but browsers have not yet fully adjusted.\n rbuggyQSA.push(\":has\");\n }\n rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join(\"|\"));\n rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join(\"|\"));\n\n /* Contains\n ---------------------------------------------------------------------- */\n hasCompare = rnative.test(docElem.compareDocumentPosition);\n\n // Element contains another\n // Purposefully self-exclusive\n // As in, an element does not contain itself\n contains = hasCompare || rnative.test(docElem.contains) ? function (a, b) {\n // Support: IE <9 only\n // IE doesn't have `contains` on `document` so we need to check for\n // `documentElement` presence.\n // We need to fall back to `a` when `documentElement` is missing\n // as `ownerDocument` of elements within `