{"version":3,"sources":["webpack:///./node_modules/core-js/modules/_object-gopd.js","webpack:///./src/library/DebounceInput.vue?53b8","webpack:///src/library/DebounceInput.vue","webpack:///./src/library/DebounceInput.vue?9b51","webpack:///./src/library/DebounceInput.vue","webpack:///./node_modules/vue-chartjs/es/mixins/index.js","webpack:///./node_modules/vue-chartjs/es/BaseCharts.js","webpack:///./node_modules/chart.js/dist/Chart.js","webpack:///./node_modules/core-js/modules/_inherit-if-required.js","webpack:///./node_modules/core-js/modules/_set-proto.js","webpack:///./node_modules/core-js/modules/_object-gopn.js","webpack:///./node_modules/core-js/modules/es6.number.constructor.js","webpack:///./src/library/SubmitButton.vue?71e1","webpack:///src/library/SubmitButton.vue","webpack:///./src/library/SubmitButton.vue?8e85","webpack:///./src/library/SubmitButton.vue"],"names":["pIE","createDesc","toIObject","toPrimitive","has","IE8_DOM_DEFINE","gOPD","Object","getOwnPropertyDescriptor","exports","f","O","P","e","call","render","_vm","this","_h","$createElement","_c","_self","class","dirty","error","attrs","value","size","format","lazyFormatter","placeholder","on","handleInput","nativeOn","$event","handleBlur","type","indexOf","_k","keyCode","key","handleEnter","staticRenderFns","props","String","Number","default","Boolean","fieldRequired","autocomplete","methods","$emit","srcElement","component","dataHandler","newData","oldData","chart","$data","_chart","newDatasetLabels","datasets","map","dataset","label","oldDatasetLabels","oldLabels","JSON","stringify","newLabels","length","forEach","i","oldDatasetKeys","keys","newDatasetKeys","deletionKeys","filter","attribute","deletionKey","data","hasOwnProperty","labels","xLabels","yLabels","update","destroy","renderChart","chartData","options","reactiveData","watch","reactiveProp","required","generateChart","chartId","chartType","createElement","style","styles","cssClasses","id","width","height","ref","plugins","Array","_plugins","addPlugin","plugin","push","generateLegend","$refs","canvas","getContext","beforeDestroy","HorizontalBar","Line","global","factory","module","moment","createCommonjsModule","fn","getCjsExportFromNamespace","n","colorName","conversions","reverseKeywords","convert","rgb","channels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","keyword","ansi16","ansi256","hcg","apple","gray","model","Error","defineProperty","comparativeDistance","x","y","Math","pow","h","s","l","r","g","b","min","max","delta","rdif","gdif","bdif","v","diff","diffc","c","w","m","k","reversed","currentClosestKeyword","currentClosestDistance","Infinity","distance","z","a","t1","t2","t3","val","sv","smin","lmin","hi","floor","p","q","t","sl","vmin","wh","bl","ratio","y2","x2","z2","hr","atan2","PI","sqrt","cos","sin","args","arguments","round","ansi","color","mult","rem","integer","string","toString","toUpperCase","substring","match","colorString","split","char","join","parseInt","grayscale","hue","chroma","pure","mg","buildGraph","graph","models","len","parent","deriveBFS","fromModel","queue","current","pop","adjacents","adjacent","node","unshift","link","from","to","wrapConversion","toModel","path","cur","conversion","route","wrapRaw","wrappedFn","undefined","prototype","slice","wrapRounded","result","routes","routeModels","raw","colorConvert","colorName$1","getRgba","getHsla","getRgb","getHsl","getHwb","getAlpha","hexString","rgbString","rgbaString","percentString","percentaString","hslString","hslaString","hwbString","abbr","rgba","per","hexAlpha","parseFloat","scale","alpha","isNaN","hsla","vals","hexDouble","reverseNames","num","str","name","Color","obj","valid","values","setValues","red","lightness","whiteness","cyan","isValid","setSpace","rgbArray","hslArray","hsvArray","hwbArray","concat","cmykArray","rgbaArray","hslaArray","setChannel","green","blue","saturation","saturationv","blackness","magenta","yellow","black","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","dark","yiq","light","negate","lighten","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","rotate","degrees","mix","mixinColor","weight","color1","w1","w2","toJSON","clone","source","target","prop","console","spaces","maxes","getValues","space","charAt","capped","chans","sname","index","svalues","window","chartjsColor","helpers","noop","uid","isNullOrUndef","isArray","substr","isObject","isFinite","valueOrDefault","defaultValue","valueAtIndexOrDefault","callback","thisArg","apply","each","loopable","reverse","arrayEquals","a0","a1","ilen","v0","v1","klen","_merger","tval","sval","merge","_mergerIf","mergeIf","sources","merger","extend","assign","dst","src","inherits","extensions","me","ChartElement","constructor","Surrogate","__super__","_deprecated","scope","previous","warn","helpers_core","callCallback","array","item","fromIndex","getValueOrDefault","getValueAtIndexOrDefault","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","helpers_easing","easingEffects","RAD_PER_DEG","DOUBLE_PI","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","exports$1","clear","ctx","clearRect","roundedRect","radius","left","top","right","bottom","moveTo","arc","closePath","rect","drawPoint","rotation","xOffset","yOffset","cornerRadius","rad","save","translate","drawImage","restore","beginPath","lineTo","SQRT1_2","fill","stroke","_isPointInArea","point","area","epsilon","clipArea","clip","unclipArea","flip","stepped","steppedLine","midpoint","tension","bezierCurveTo","controlPointPreviousX","controlPointNextX","controlPointPreviousY","controlPointNextY","helpers_canvas","drawRoundedRectangle","defaults","_set","defaultColor","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","defaultLineHeight","showLines","core_defaults","toFontString","font","family","helpers_options","toLineHeight","matches","toPadding","_parseFont","globalDefaults","fontSize","fontFamily","lineHeight","fontStyle","resolve","inputs","context","info","cacheable","exports$2","_factorize","sort","log10","exponent","log","LOG10E","powerOf10","isPowerOf10","helpers_math","getRtlAdapter","rectX","setWidth","textAlign","align","xPlus","leftForLtr","itemWidth","getLtrAdapter","_itemWidth","getAdapter","rtl","overrideTextDirection","direction","original","getPropertyValue","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","helpers_rtl","helpers$1","easing","math","interpolate","start","view","ease","actual","origin","c0","c1","Element","configuration","initialize","_type","hidden","pivot","_view","_model","_start","transition","tooltipPosition","hasValue","isNumber","core_element","exports$3","currentStep","numSteps","onAnimationProgress","onAnimationComplete","core_animation","get","set","animation","duration","onProgress","onComplete","core_animations","animations","request","addAnimation","lazy","startTime","Date","now","animating","requestAnimationFrame","cancelAnimation","findIndex","splice","requestAnimFrame","startDigest","advance","nextStep","arrayEvents","listenArrayEvents","listener","_chartjs","listeners","configurable","enumerable","method","base","res","object","unlistenArrayEvents","stub","DatasetController","datasetIndex","datasetElementType","dataElementType","_datasetElementOptions","_dataElementOptions","linkScales","addElements","getMeta","updateIndex","meta","scales","getDataset","scalesOpts","xAxisID","xAxes","yAxisID","yAxes","getDatasetMeta","getScaleForId","scaleID","_getValueScaleId","_getIndexScaleId","_getValueScale","_getIndexScale","reset","_update","_data","createMetaDataset","_datasetIndex","createMetaData","_index","metaData","addElementAndReset","element","updateElement","buildOrUpdateElements","isExtensible","resyncElements","_configure","_config","_cachedDataOpts","easingValue","elements","draw","getStyle","_resolveDatasetElementOptions","_resolveDataElementOptions","backgroundColor","borderColor","hover","readKey","datasetOpts","custom","elementOptions","cached","dataIndex","freeze","removeHoverStyle","$previousStyle","setHoverStyle","getHoverColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","_removeDatasetHoverStyle","_setDatasetHoverStyle","hoverOptions","prev","numMeta","numData","insertElements","count","onDataPush","onDataPop","onDataShift","shift","onDataSplice","onDataUnshift","core_datasetController","TAU","clipArc","startAngle","endAngle","pixelMargin","angleMargin","outerRadius","innerRadius","drawFullCircleBorders","vm","inner","fullCircles","drawBorder","borderAlign","lineWidth","lineJoin","element_arc","inLabelRange","mouseX","hoverRadius","inRange","chartX","chartY","pointRelativePosition","getAngleFromPoint","angle","betweenAngles","withinRadius","getCenterPoint","halfAngle","halfRadius","getArea","centreAngle","rangeFromCentre","circumference","fillStyle","strokeStyle","valueOrDefault$1","line","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","capBezierPoints","element_line","currentVM","spanGaps","points","_children","globalOptionLineElements","lastDrawnIndex","_loop","previousItem","skip","lineCap","setLineDash","lineDashOffset","valueOrDefault$2","defaultColor$1","xRange","abs","hitRadius","yRange","mouseY","pointStyle","element_point","inXRange","inYRange","padding","chartArea","defaultColor$2","isVertical","getBarBounds","x1","y1","half","swap","orig","v2","parseBorderSkipped","edge","borderSkipped","horizontal","parseBorderWidth","maxW","maxH","boundingRects","bounds","border","outer","skipX","skipY","rectangle","element_rectangle","rects","fillRect","Arc","Point","Rectangle","deprecated","valueOrDefault$3","computeMinSampleSize","pixels","curr","_length","getTicks","getPixelForTick","computeFitCategoryTraits","ruler","thickness","barThickness","stackCount","categoryPercentage","barPercentage","chunk","computeFlexCategoryTraits","next","percent","end","mode","offset","gridLines","offsetGridLines","bar","controller_bar","scaleOpts","stack","minBarLength","maxBarThickness","_ruler","getRuler","_xScale","_yScale","datasetLabel","_updateElementGeometry","vscale","getBasePixel","isHorizontal","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","head","center","_getStacks","last","metasets","_getMatchingVisibleMetas","stacked","stacks","getStackCount","getStackIndex","getPixelForValue","_startPixel","_endPixel","imeta","ivalue","stackLength","_parseValue","range","stackIndex","indexOpts","valueOpts","valueOrDefault$4","resolve$1","position","tooltips","callbacks","title","dataPoint","xLabel","yLabel","controller_bubble","xScale","yScale","dsIndex","getPixelForDecimal","NaN","_options","valueOrDefault$5","PI$1","DOUBLE_PI$1","HALF_PI$1","animateRotate","animateScale","legendCallback","listItem","listItemSpan","list","document","setAttribute","appendChild","createTextNode","outerHTML","legend","generateLabels","controller","text","onClick","legendItem","cutoutPercentage","tooltipItem","dataLabel","controller_doughnut","getRingIndex","ringIndex","j","isDatasetVisible","maxWidth","maxHeight","opts","ratioX","ratioY","offsetX","offsetY","arcs","cutout","chartWeight","_getRingWeight","startX","startY","endX","endY","contains0","contains90","contains180","contains270","minX","minY","maxX","maxY","getMaxBorderWidth","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","animationOpts","centerX","centerY","calculateCircumference","hoverWidth","ringWeightOffset","dataSetIndex","axis","horizontalBar","controller_horizontalBar","valueOrDefault$6","resolve$2","isPointInArea","scaleClip","halfBorderWidth","tickOpts","ticks","defaultClip","toClip","controller_line","config","showLine","_showLine","lineTension","_scale","updateBezierControlPoints","lineModel","calculatePointY","lineOptions","ds","dsMeta","stackedRightValue","rightValue","sumPos","sumNeg","getRightValue","_getSortedVisibleDatasetMetas","controlPoints","capControlPoint","pt","cubicInterpolationMode","splineCurveMonotone","splineCurve","nextItem","resolve$3","angleLines","display","circular","pointLabels","beginAtZero","controller_polarArea","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","minSize","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getDistanceFromCenterForValue","resetRadius","doughnut","controller_pie","valueOrDefault$7","controller_radar","pointPosition","getPointPositionForValue","scatter","controller_scatter","controllers","bubble","polarArea","pie","radar","getRelativePosition","native","parseVisibleItems","handler","metadata","jlen","getIntersectItems","getNearestItems","intersect","distanceMetric","minDistance","POSITIVE_INFINITY","nearestItems","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","deltaY","indexMode","items","core_interaction","modes","single","nearest","intersectsItem","filterByPosition","where","pos","sortByWeight","wrapBoxes","boxes","box","layoutBoxes","setLayoutDims","layouts","params","layout","fullWidth","availableWidth","vBoxMaxWidth","hBoxMaxHeight","buildLayoutBoxes","leftAndTop","rightAndBottom","vertical","getCombinedMax","maxPadding","updateDims","newWidth","newHeight","getPadding","boxPadding","outerWidth","outerHeight","handleMaxPadding","updatePos","change","getMargins","marginForPositions","positions","margin","fitBoxes","refit","changed","refitBoxes","placeBoxes","userPadding","core_layouts","addBox","_layers","removeBox","layoutItem","configure","layoutOptions","availableHeight","verticalBoxes","horizontalBoxes","platform_basic","acquireContext","platform_dom","platform_dom$1","__proto__","stylesheet","EXPANDO_KEY","CSS_PREFIX","CSS_SIZE_MONITOR","CSS_RENDER_MONITOR","CSS_RENDER_ANIMATION","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","property","initCanvas","renderHeight","getAttribute","renderWidth","initial","displayWidth","aspectRatio","displayHeight","supportsEventListenerOptions","supports","addEventListener","eventListenerOptions","passive","addListener","removeListener","removeEventListener","createEvent","nativeEvent","fromNativeEvent","event","throttled","ticking","createDiv","cls","el","className","createResizer","maxSize","resizer","expand","shrink","_reset","scrollLeft","scrollTop","onScroll","bind","watchForRender","expando","proxy","renderProxy","animationName","reflow","offsetParent","classList","add","unwatchForRender","remove","addResizeListener","container","maintainAspectRatio","parentNode","clientWidth","insertBefore","firstChild","removeResizeListener","removeChild","injectCSS","rootNode","css","containsStyles","platform_dom$2","disableCSSInjection","_enabled","_ensureLoaded","root","getRootNode","targetNode","host","getElementById","releaseContext","removeAttribute","proxies","addEvent","removeEvent","implementation","platform","core_plugins","_cacheId","register","unregister","idx","getAll","notify","hook","descriptor","descriptors","cache","$plugins","_invalidate","core_scaleService","constructors","registerScaleType","scaleConstructor","scaleDefaults","getScaleConstructor","getScaleDefaults","updateScaleDefaults","additions","addScalesToLayout","valueOrDefault$8","getRtlHelper","enabled","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","activeElement","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","positioners","average","eventPosition","nearestElement","d","distanceBetweenPoints","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","indexScale","valueScale","getLabelForIndex","getBaseModel","tooltipOpts","xAlign","yAlign","textDirection","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","opacity","legendColorBackground","getTooltipSize","tooltip","body","combinedBodyLength","reduce","bodyItem","before","lines","after","titleLineCount","footerLineCount","widthPadding","maxLineWidth","measureText","fontString","determineAlignment","lf","rf","olf","orf","yf","midX","midY","getBackgroundPoint","alignment","paddingAndSize","radiusAndPadding","getAlignedX","getBeforeAfterBodyLines","exports$4","_lastActive","getTitle","getBeforeBody","getBody","bodyItems","getAfterBody","getFooter","existingModel","active","_active","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","itemSort","dataPoints","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","tmp","drawTitle","rtlHelper","textBaseline","fillText","drawBody","textColor","drawColorBoxes","xLinePadding","colorX","fillLineOfText","bodyAlignForCalculation","rtlColorX","strokeRect","drawFooter","drawBackground","quadraticCurveTo","hasTooltipContent","globalAlpha","handleEvent","getElementsAtEventForMode","positioners_1","core_tooltip","valueOrDefault$9","mergeScaleConfig","slen","mergeConfig","initConfig","updateConfig","newOptions","ensureScalesHaveIDs","buildOrUpdateScales","nextAvailableScaleId","axesOpts","prefix","hasId","positionIsHorizontal","compare2Level","l1","l2","events","onHover","animationDuration","responsive","responsiveAnimationDuration","Chart","construct","_bufferedRender","instances","retinaScale","devicePixelRatio","bindEvents","resize","initToolTip","stop","silent","getMaximumWidth","getMaximumHeight","newSize","onResize","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","updated","dtype","dposition","isDefault","scaleType","scaleClass","mergeTicksOptions","hasUpdated","buildOrUpdateControllers","newControllers","destroyDatasetMeta","order","ControllerClass","resetElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","_idx","updateDataset","animationOptions","animationObject","easingFunction","stepDecimal","layers","drawDatasets","_drawTooltip","_getSortedDatasetMetas","filterVisible","drawDataset","getElementAtEvent","getElementsAtEvent","getElementsAtXAxis","getDatasetAtEvent","_meta","unbindEvents","toBase64Image","toDataURL","_chartInstance","_listeners","eventHandler","updateHoverStyle","bufferedRequest","core_controller","Controller","types","configMerge","scaleMerge","core_helpers","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","defaultView","_getParentNode","constrainedNode","getComputedStyle","constrainedContainer","hasCNode","hasCContainer","infinity","collection","filterCallback","filtered","findNextWhere","arrayToSearch","startIndex","currentItem","findPreviousWhere","almostEquals","almostWhole","rounded","NEGATIVE_INFINITY","sign","toRadians","toDegrees","radians","_decimalPlaces","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","aliasPixel","pixelWidth","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","loop","niceNum","niceFraction","fraction","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","setTimeout","evt","originalEvent","boundingRect","getBoundingClientRect","touches","clientX","clientY","paddingLeft","paddingTop","paddingRight","paddingBottom","getConstraintWidth","getConstraintHeight","_calculatePadding","parentDimension","cw","clientHeight","ch","currentStyle","forceRatio","pixelRatio","pixelSize","longestText","arrayOfThings","gc","garbageCollect","thing","nestedThing","longest","gcLen","textWidth","numberOfLabelLines","numberOfLines","CanvasGradient","colorValue","CanvasPattern","abstract","DateAdapter","formats","parse","startOf","endOf","_create","override","members","_date","core_adapters","core_ticks","formatters","tickValue","logDelta","tickString","maxTick","logTick","numExponential","toExponential","numDecimal","toFixed","logarithmic","remain","valueOrDefault$a","sample","arr","numItems","increment","getPixelForGridLine","validIndex","lineValue","caches","computeLabelSizes","tickFonts","tickFont","nestedLabel","widest","highest","widths","heights","offsets","major","minor","valueAt","first","getTickMarkLength","drawTicks","tickMarkLength","getScaleLabelHeight","parseFontOptions","nestedOpts","fontColor","parseTickFontOptions","nonSkipped","ticksToFilter","getEvenSpacing","calculateSpacing","majorIndices","axisLength","ticksLimit","factors","factor","evenMajorSpacing","spacing","getMajorIndices","skipMajors","tick","ceil","majorStart","majorEnd","drawOnChartArea","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","Scale","zeroLineIndex","_ticks","_getLabels","beforeUpdate","margins","samplingEnabled","sampleSize","_labelSizes","_maxLabelLines","longestLabelWidth","longestTextCache","_gridLineItems","_labelItems","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","_convertTicksToLabels","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","_ticksToDraw","_autoSkip","afterUpdate","startPixel","endPixel","reversePixels","_reversePixels","beforeTickToLabelConversion","convertTicksToLabels","userCallback","afterTickToLabelConversion","labelSizes","maxLabelWidth","maxLabelHeight","tickWidth","maxLabelDiagonal","numTicks","labelRotation","_isVisible","_getLabelSizes","scaleLabelOpts","gridLineOpts","isBottom","firstLabelSize","lastLabelSize","widestLabelSize","highestLabelSize","lineSpace","tickPadding","isRotated","angleRadians","cosRotation","sinRotation","labelHeight","offsetLeft","offsetRight","labelWidth","handleMargins","isFullWidth","rawValue","_getScaleLabel","getValueForPixel","decimal","getDecimalForPixel","getBaseValue","avgMajorSpacing","maxTicksLimit","_tickSize","numMajorIndices","optionTicks","rot","_computeGridLineItems","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","lineColor","ticksLength","tl","axisWidth","axisHalfWidth","alignPixel","alignBorderValue","_computeLabelItems","lineCount","textOffset","isMirrored","fonts","_drawGrid","firstLineWidth","lastLineWidth","_drawLabels","_drawTitle","scaleLabelX","scaleLabelY","scaleLabelFontColor","scaleLabelFont","scaleLabelPadding","halfLineHeight","isLeft","tz","gz","_draw","core_scale","isNullOrUndef$1","defaultConfig","scale_category","ticksOpts","minIndex","maxIndex","_startValue","_valueRange","valueCategory","_defaults","isNullOrUndef$2","generateTicks","generationOptions","dataRange","niceMin","niceMax","numSpaces","MIN_SPACING","stepSize","unit","maxNumSpaces","maxTicks","precision","rmin","rmax","scale_linearbase","handleTickRangeOptions","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","getTickLimit","_computeTickLimit","handleDirectionalChanges","numericGeneratorOptions","fixedStepSize","ticksAsNumbers","_endValue","defaultConfig$1","DEFAULT_MIN","DEFAULT_MAX","getOrCreateStack","neg","stackData","relativePoints","updateMinMax","scale_linear","hasStacks","stackValues","_defaults$1","valueOrDefault$b","generateTicks$1","exp","significand","tickVal","endExp","endSignificand","minNotZero","lastTick","defaultConfig$2","nonNegativeOrDefault","scale_logarithmic","IDMatches","valuesPerStack","valuesForType","minVal","maxVal","tickValues","_getFirstTickValue","_valueOffset","_defaults$2","valueOrDefault$c","valueAtIndexOrDefault$1","resolve$4","defaultConfig$3","animate","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","textSize","plFont","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","drawingArea","getIndexAngle","hLimits","vLimits","setReductions","getTextAlignForAngle","adjustPointPositionForLabelHeight","drawPointLabels","pointLabelOpts","tickBackdropHeight","outerDistance","extra","pointLabelPosition","pointLabelFontColor","drawRadiusLine","numberOrZero","param","scale_radialLinear","setCenterPoint","largestPossibleRadius","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","angleMultiplier","scalingFactor","distanceFromCenter","thisAngle","getBasePosition","angleLineOpts","tickFontColor","_defaults$3","deprecated$1","resolve$5","valueOrDefault$d","MIN_INTEGER","MIN_SAFE_INTEGER","MAX_INTEGER","MAX_SAFE_INTEGER","INTERVALS","millisecond","common","steps","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","arrayUnique","hash","out","getMin","time","getMax","buildLookupTable","timestamps","distribution","table","lookup","mid","i0","i1","lo","interpolate$1","skey","tkey","span","toTimestamp","input","adapter","_adapter","parser","determineUnitForAutoTicks","minUnit","capacity","interval","determineUnitForFormatting","determineMajorUnit","generate","timeOpts","unitStepSize","weekday","isoWeekday","computeOffsets","setMajorTicks","majorUnit","ticksFromTimestamps","defaultConfig$4","adapters","displayFormat","displayFormats","scale_time","date","timestamp","labelsAdded","dataLabels","_table","_timestamps","getLabelCapacity","_unit","_majorUnit","_offsets","tooltipFormat","datetime","tickFormatFunction","minorFormat","majorFormat","nestedTickOpts","formatter","getPixelForOffset","_getLabelSize","tickLabelWidth","tickFontSize","getLabelWidth","exampleTime","exampleLabel","_defaults$4","category","radialLinear","FORMATS","_id","valueOf","amount","filler","propagate","mappers","visible","boundary","decodeFill","computeLinearBoundary","scaleBottom","scaleTop","scaleZero","computeCircularBoundary","cx","cy","computeBoundary","resolveTarget","visited","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","doFill","mapper","p0","p1","d0","d1","loopOffset","plugin_filler","afterDatasetsUpdate","$filler","beforeDatasetsDraw","getRtlHelper$1","noop$1","valueOrDefault$e","getBoxWidth","labelOpts","usePointStyle","boxWidth","ci","onLeave","lineDash","Legend","legendHitBoxes","_hoveredItem","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","labelFont","hitboxes","lineWidths","totalHeight","vPadding","columnWidths","columnHeights","totalWidth","currentColWidth","currentColHeight","lineDefault","legendHeight","legendWidth","cursor","drawLegendBox","SQRT2","halfFontSize","xLeft","yMiddle","alignmentOffset","dimension","blockSize","itemHeight","realX","_getLegendItemAt","hitBox","lh","hoveredItem","createNewLegendAndAttach","legendOpts","plugin_legend","_element","beforeInit","afterEvent","noop$2","Title","titleX","titleY","fontOpts","createNewTitleBlockAndAttach","titleOpts","titleBlock","plugin_title","_adapters","Animation","animationService","Interaction","scaleService","Ticks","Tooltip","pluginService","PluginBase","canvasHelpers","layoutService","LinearScaleBase","klass","cfg","toLowerCase","setPrototypeOf","that","C","S","anObject","check","proto","TypeError","test","buggy","Function","$keys","hiddenKeys","getOwnPropertyNames","cof","inheritIfRequired","fails","gOPN","dP","$trim","trim","NUMBER","$Number","Base","BROKEN_COF","TRIM","toNumber","argument","it","third","radix","maxCode","charCodeAt","code","digits","isModal","loading","_e","icon","staticClass","_v","_s","variant","handleClick","highlight"],"mappings":"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","file":"js/chunk-7bb10469.133343f4.js","sourcesContent":["var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-form-input',{class:{ 'is-invalid': _vm.dirty == true && _vm.error == true, 'is-valid': _vm.dirty == true && _vm.error == false },attrs:{\"value\":_vm.value,\"size\":_vm.size,\"formatter\":_vm.format,\"lazy-formatter\":_vm.lazyFormatter,\"placeholder\":_vm.placeholder},on:{\"input\":_vm.handleInput},nativeOn:{\"blur\":function($event){return _vm.handleBlur($event)},\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.handleEnter($event)}}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n b-form-input(\r\n :value=\"value\"\r\n :size=\"size\"\r\n :class=\"{ 'is-invalid': dirty == true && error == true, 'is-valid': dirty == true && error == false }\"\r\n @input=\"handleInput\"\r\n @blur.native=\"handleBlur\"\r\n @keyup.enter.native=\"handleEnter\"\r\n :formatter=\"format\"\r\n :lazy-formatter=\"lazyFormatter\"\r\n :placeholder=\"placeholder\"\r\n )\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DebounceInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DebounceInput.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DebounceInput.vue?vue&type=template&id=fa9d1048&lang=pug&\"\nimport script from \"./DebounceInput.vue?vue&type=script&lang=js&\"\nexport * from \"./DebounceInput.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","function dataHandler(newData, oldData) {\n if (oldData) {\n var chart = this.$data._chart;\n var newDatasetLabels = newData.datasets.map(function (dataset) {\n return dataset.label;\n });\n var oldDatasetLabels = oldData.datasets.map(function (dataset) {\n return dataset.label;\n });\n var oldLabels = JSON.stringify(oldDatasetLabels);\n var newLabels = JSON.stringify(newDatasetLabels);\n\n if (newLabels === oldLabels && oldData.datasets.length === newData.datasets.length) {\n newData.datasets.forEach(function (dataset, i) {\n var oldDatasetKeys = Object.keys(oldData.datasets[i]);\n var newDatasetKeys = Object.keys(dataset);\n var deletionKeys = oldDatasetKeys.filter(function (key) {\n return key !== '_meta' && newDatasetKeys.indexOf(key) === -1;\n });\n deletionKeys.forEach(function (deletionKey) {\n delete chart.data.datasets[i][deletionKey];\n });\n\n for (var attribute in dataset) {\n if (dataset.hasOwnProperty(attribute)) {\n chart.data.datasets[i][attribute] = dataset[attribute];\n }\n }\n });\n\n if (newData.hasOwnProperty('labels')) {\n chart.data.labels = newData.labels;\n this.$emit('labels:update');\n }\n\n if (newData.hasOwnProperty('xLabels')) {\n chart.data.xLabels = newData.xLabels;\n this.$emit('xlabels:update');\n }\n\n if (newData.hasOwnProperty('yLabels')) {\n chart.data.yLabels = newData.yLabels;\n this.$emit('ylabels:update');\n }\n\n chart.update();\n this.$emit('chart:update');\n } else {\n if (chart) {\n chart.destroy();\n this.$emit('chart:destroy');\n }\n\n this.renderChart(this.chartData, this.options);\n this.$emit('chart:render');\n }\n } else {\n if (this.$data._chart) {\n this.$data._chart.destroy();\n\n this.$emit('chart:destroy');\n }\n\n this.renderChart(this.chartData, this.options);\n this.$emit('chart:render');\n }\n}\n\nexport var reactiveData = {\n data: function data() {\n return {\n chartData: null\n };\n },\n watch: {\n 'chartData': dataHandler\n }\n};\nexport var reactiveProp = {\n props: {\n chartData: {\n type: Object,\n required: true,\n default: function _default() {}\n }\n },\n watch: {\n 'chartData': dataHandler\n }\n};\nexport default {\n reactiveData: reactiveData,\n reactiveProp: reactiveProp\n};","import Chart from 'chart.js';\nexport function generateChart(chartId, chartType) {\n return {\n render: function render(createElement) {\n return createElement('div', {\n style: this.styles,\n class: this.cssClasses\n }, [createElement('canvas', {\n attrs: {\n id: this.chartId,\n width: this.width,\n height: this.height\n },\n ref: 'canvas'\n })]);\n },\n props: {\n chartId: {\n default: chartId,\n type: String\n },\n width: {\n default: 400,\n type: Number\n },\n height: {\n default: 400,\n type: Number\n },\n cssClasses: {\n type: String,\n default: ''\n },\n styles: {\n type: Object\n },\n plugins: {\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n data: function data() {\n return {\n _chart: null,\n _plugins: this.plugins\n };\n },\n methods: {\n addPlugin: function addPlugin(plugin) {\n this.$data._plugins.push(plugin);\n },\n generateLegend: function generateLegend() {\n if (this.$data._chart) {\n return this.$data._chart.generateLegend();\n }\n },\n renderChart: function renderChart(data, options) {\n if (this.$data._chart) this.$data._chart.destroy();\n this.$data._chart = new Chart(this.$refs.canvas.getContext('2d'), {\n type: chartType,\n data: data,\n options: options,\n plugins: this.$data._plugins\n });\n }\n },\n beforeDestroy: function beforeDestroy() {\n if (this.$data._chart) {\n this.$data._chart.destroy();\n }\n }\n };\n}\nexport var Bar = generateChart('bar-chart', 'bar');\nexport var HorizontalBar = generateChart('horizontalbar-chart', 'horizontalBar');\nexport var Doughnut = generateChart('doughnut-chart', 'doughnut');\nexport var Line = generateChart('line-chart', 'line');\nexport var Pie = generateChart('pie-chart', 'pie');\nexport var PolarArea = generateChart('polar-chart', 'polarArea');\nexport var Radar = generateChart('radar-chart', 'radar');\nexport var Bubble = generateChart('bubble-chart', 'bubble');\nexport var Scatter = generateChart('scatter-chart', 'scatter');\nexport default {\n Bar: Bar,\n HorizontalBar: HorizontalBar,\n Doughnut: Doughnut,\n Line: Line,\n Pie: Pie,\n PolarArea: PolarArea,\n Radar: Radar,\n Bubble: Bubble,\n Scatter: Scatter\n};","/*!\n * Chart.js v2.9.3\n * https://www.chartjs.org\n * (c) 2019 Chart.js Contributors\n * Released under the MIT License\n */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(function() { try { return require('moment'); } catch(e) { } }()) :\ntypeof define === 'function' && define.amd ? define(['require'], function(require) { return factory(function() { try { return require('moment'); } catch(e) { } }()); }) :\n(global = global || self, global.Chart = factory(global.moment));\n}(this, (function (moment) { 'use strict';\n\nmoment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment;\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nfunction getCjsExportFromNamespace (n) {\n\treturn n && n['default'] || n;\n}\n\nvar colorName = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\nvar conversions = createCommonjsModule(function (module) {\n/* MIT license */\n\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in colorName) {\n\tif (colorName.hasOwnProperty(key)) {\n\t\treverseKeywords[colorName[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in colorName) {\n\t\tif (colorName.hasOwnProperty(keyword)) {\n\t\t\tvar value = colorName[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn colorName[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n});\nvar conversions_1 = conversions.rgb;\nvar conversions_2 = conversions.hsl;\nvar conversions_3 = conversions.hsv;\nvar conversions_4 = conversions.hwb;\nvar conversions_5 = conversions.cmyk;\nvar conversions_6 = conversions.xyz;\nvar conversions_7 = conversions.lab;\nvar conversions_8 = conversions.lch;\nvar conversions_9 = conversions.hex;\nvar conversions_10 = conversions.keyword;\nvar conversions_11 = conversions.ansi16;\nvar conversions_12 = conversions.ansi256;\nvar conversions_13 = conversions.hcg;\nvar conversions_14 = conversions.apple;\nvar conversions_15 = conversions.gray;\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nvar route = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nvar colorConvert = convert;\n\nvar colorName$1 = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\n/* MIT license */\n\n\nvar colorString = {\n getRgba: getRgba,\n getHsla: getHsla,\n getRgb: getRgb,\n getHsl: getHsl,\n getHwb: getHwb,\n getAlpha: getAlpha,\n\n hexString: hexString,\n rgbString: rgbString,\n rgbaString: rgbaString,\n percentString: percentString,\n percentaString: percentaString,\n hslString: hslString,\n hslaString: hslaString,\n hwbString: hwbString,\n keyword: keyword\n};\n\nfunction getRgba(string) {\n if (!string) {\n return;\n }\n var abbr = /^#([a-fA-F0-9]{3,4})$/i,\n hex = /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i,\n rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n keyword = /(\\w+)/;\n\n var rgb = [0, 0, 0],\n a = 1,\n match = string.match(abbr),\n hexAlpha = \"\";\n if (match) {\n match = match[1];\n hexAlpha = match[3];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16);\n }\n if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n }\n }\n else if (match = string.match(hex)) {\n hexAlpha = match[2];\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n }\n if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\n }\n }\n else if (match = string.match(rgba)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i + 1]);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(per)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(keyword)) {\n if (match[1] == \"transparent\") {\n return [0, 0, 0, 0];\n }\n rgb = colorName$1[match[1]];\n if (!rgb) {\n return;\n }\n }\n\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = scale(rgb[i], 0, 255);\n }\n if (!a && a != 0) {\n a = 1;\n }\n else {\n a = scale(a, 0, 1);\n }\n rgb[3] = a;\n return rgb;\n}\n\nfunction getHsla(string) {\n if (!string) {\n return;\n }\n var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hsl);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n s = scale(parseFloat(match[2]), 0, 100),\n l = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, s, l, a];\n }\n}\n\nfunction getHwb(string) {\n if (!string) {\n return;\n }\n var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hwb);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n w = scale(parseFloat(match[2]), 0, 100),\n b = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, w, b, a];\n }\n}\n\nfunction getRgb(string) {\n var rgba = getRgba(string);\n return rgba && rgba.slice(0, 3);\n}\n\nfunction getHsl(string) {\n var hsla = getHsla(string);\n return hsla && hsla.slice(0, 3);\n}\n\nfunction getAlpha(string) {\n var vals = getRgba(string);\n if (vals) {\n return vals[3];\n }\n else if (vals = getHsla(string)) {\n return vals[3];\n }\n else if (vals = getHwb(string)) {\n return vals[3];\n }\n}\n\n// generators\nfunction hexString(rgba, a) {\n var a = (a !== undefined && rgba.length === 3) ? a : rgba[3];\n return \"#\" + hexDouble(rgba[0]) \n + hexDouble(rgba[1])\n + hexDouble(rgba[2])\n + (\n (a >= 0 && a < 1)\n ? hexDouble(Math.round(a * 255))\n : \"\"\n );\n}\n\nfunction rgbString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return rgbaString(rgba, alpha);\n }\n return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n}\n\nfunction rgbaString(rgba, alpha) {\n if (alpha === undefined) {\n alpha = (rgba[3] !== undefined ? rgba[3] : 1);\n }\n return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2]\n + \", \" + alpha + \")\";\n}\n\nfunction percentString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return percentaString(rgba, alpha);\n }\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n\n return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n}\n\nfunction percentaString(rgba, alpha) {\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n}\n\nfunction hslString(hsla, alpha) {\n if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {\n return hslaString(hsla, alpha);\n }\n return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n}\n\nfunction hslaString(hsla, alpha) {\n if (alpha === undefined) {\n alpha = (hsla[3] !== undefined ? hsla[3] : 1);\n }\n return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \"\n + alpha + \")\";\n}\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\nfunction hwbString(hwb, alpha) {\n if (alpha === undefined) {\n alpha = (hwb[3] !== undefined ? hwb[3] : 1);\n }\n return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\"\n + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n}\n\nfunction keyword(rgb) {\n return reverseNames[rgb.slice(0, 3)];\n}\n\n// helpers\nfunction scale(num, min, max) {\n return Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n var str = num.toString(16).toUpperCase();\n return (str.length < 2) ? \"0\" + str : str;\n}\n\n\n//create a list of reverse color names\nvar reverseNames = {};\nfor (var name in colorName$1) {\n reverseNames[colorName$1[name]] = name;\n}\n\n/* MIT license */\n\n\n\nvar Color = function (obj) {\n\tif (obj instanceof Color) {\n\t\treturn obj;\n\t}\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj);\n\t}\n\n\tthis.valid = false;\n\tthis.values = {\n\t\trgb: [0, 0, 0],\n\t\thsl: [0, 0, 0],\n\t\thsv: [0, 0, 0],\n\t\thwb: [0, 0, 0],\n\t\tcmyk: [0, 0, 0, 0],\n\t\talpha: 1\n\t};\n\n\t// parse Color() argument\n\tvar vals;\n\tif (typeof obj === 'string') {\n\t\tvals = colorString.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = colorString.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = colorString.getHwb(obj)) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t}\n\t} else if (typeof obj === 'object') {\n\t\tvals = obj;\n\t\tif (vals.r !== undefined || vals.red !== undefined) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals.l !== undefined || vals.lightness !== undefined) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals.v !== undefined || vals.value !== undefined) {\n\t\t\tthis.setValues('hsv', vals);\n\t\t} else if (vals.w !== undefined || vals.whiteness !== undefined) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else if (vals.c !== undefined || vals.cyan !== undefined) {\n\t\t\tthis.setValues('cmyk', vals);\n\t\t}\n\t}\n};\n\nColor.prototype = {\n\tisValid: function () {\n\t\treturn this.valid;\n\t},\n\trgb: function () {\n\t\treturn this.setSpace('rgb', arguments);\n\t},\n\thsl: function () {\n\t\treturn this.setSpace('hsl', arguments);\n\t},\n\thsv: function () {\n\t\treturn this.setSpace('hsv', arguments);\n\t},\n\thwb: function () {\n\t\treturn this.setSpace('hwb', arguments);\n\t},\n\tcmyk: function () {\n\t\treturn this.setSpace('cmyk', arguments);\n\t},\n\n\trgbArray: function () {\n\t\treturn this.values.rgb;\n\t},\n\thslArray: function () {\n\t\treturn this.values.hsl;\n\t},\n\thsvArray: function () {\n\t\treturn this.values.hsv;\n\t},\n\thwbArray: function () {\n\t\tvar values = this.values;\n\t\tif (values.alpha !== 1) {\n\t\t\treturn values.hwb.concat([values.alpha]);\n\t\t}\n\t\treturn values.hwb;\n\t},\n\tcmykArray: function () {\n\t\treturn this.values.cmyk;\n\t},\n\trgbaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.rgb.concat([values.alpha]);\n\t},\n\thslaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.hsl.concat([values.alpha]);\n\t},\n\talpha: function (val) {\n\t\tif (val === undefined) {\n\t\t\treturn this.values.alpha;\n\t\t}\n\t\tthis.setValues('alpha', val);\n\t\treturn this;\n\t},\n\n\tred: function (val) {\n\t\treturn this.setChannel('rgb', 0, val);\n\t},\n\tgreen: function (val) {\n\t\treturn this.setChannel('rgb', 1, val);\n\t},\n\tblue: function (val) {\n\t\treturn this.setChannel('rgb', 2, val);\n\t},\n\thue: function (val) {\n\t\tif (val) {\n\t\t\tval %= 360;\n\t\t\tval = val < 0 ? 360 + val : val;\n\t\t}\n\t\treturn this.setChannel('hsl', 0, val);\n\t},\n\tsaturation: function (val) {\n\t\treturn this.setChannel('hsl', 1, val);\n\t},\n\tlightness: function (val) {\n\t\treturn this.setChannel('hsl', 2, val);\n\t},\n\tsaturationv: function (val) {\n\t\treturn this.setChannel('hsv', 1, val);\n\t},\n\twhiteness: function (val) {\n\t\treturn this.setChannel('hwb', 1, val);\n\t},\n\tblackness: function (val) {\n\t\treturn this.setChannel('hwb', 2, val);\n\t},\n\tvalue: function (val) {\n\t\treturn this.setChannel('hsv', 2, val);\n\t},\n\tcyan: function (val) {\n\t\treturn this.setChannel('cmyk', 0, val);\n\t},\n\tmagenta: function (val) {\n\t\treturn this.setChannel('cmyk', 1, val);\n\t},\n\tyellow: function (val) {\n\t\treturn this.setChannel('cmyk', 2, val);\n\t},\n\tblack: function (val) {\n\t\treturn this.setChannel('cmyk', 3, val);\n\t},\n\n\thexString: function () {\n\t\treturn colorString.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn colorString.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn colorString.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn colorString.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn colorString.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn colorString.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn colorString.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn colorString.keyword(this.values.rgb, this.values.alpha);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.values.rgb;\n\t\treturn (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.values.rgb;\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tthis.valid = true;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = colorConvert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nvar chartjsColor = Color;\n\n/**\n * @namespace Chart.helpers\n */\nvar helpers = {\n\t/**\n\t * An empty function that can be used, for example, for optional callback.\n\t */\n\tnoop: function() {},\n\n\t/**\n\t * Returns a unique id, sequentially generated from a global variable.\n\t * @returns {number}\n\t * @function\n\t */\n\tuid: (function() {\n\t\tvar id = 0;\n\t\treturn function() {\n\t\t\treturn id++;\n\t\t};\n\t}()),\n\n\t/**\n\t * Returns true if `value` is neither null nor undefined, else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {boolean}\n\t * @since 2.7.0\n\t */\n\tisNullOrUndef: function(value) {\n\t\treturn value === null || typeof value === 'undefined';\n\t},\n\n\t/**\n\t * Returns true if `value` is an array (including typed arrays), else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {boolean}\n\t * @function\n\t */\n\tisArray: function(value) {\n\t\tif (Array.isArray && Array.isArray(value)) {\n\t\t\treturn true;\n\t\t}\n\t\tvar type = Object.prototype.toString.call(value);\n\t\tif (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\n\t/**\n\t * Returns true if `value` is an object (excluding null), else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {boolean}\n\t * @since 2.7.0\n\t */\n\tisObject: function(value) {\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\n\t},\n\n\t/**\n\t * Returns true if `value` is a finite number, else returns false\n\t * @param {*} value - The value to test.\n\t * @returns {boolean}\n\t */\n\tisFinite: function(value) {\n\t\treturn (typeof value === 'number' || value instanceof Number) && isFinite(value);\n\t},\n\n\t/**\n\t * Returns `value` if defined, else returns `defaultValue`.\n\t * @param {*} value - The value to return if defined.\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\n\t * @returns {*}\n\t */\n\tvalueOrDefault: function(value, defaultValue) {\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\n\t},\n\n\t/**\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\n\t * @param {Array} value - The array to lookup for value at `index`.\n\t * @param {number} index - The index in `value` to lookup for value.\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\n\t * @returns {*}\n\t */\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\n\t},\n\n\t/**\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n\t * @param {function} fn - The function to call.\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @returns {*}\n\t */\n\tcallback: function(fn, args, thisArg) {\n\t\tif (fn && typeof fn.call === 'function') {\n\t\t\treturn fn.apply(thisArg, args);\n\t\t}\n\t},\n\n\t/**\n\t * Note(SB) for performance sake, this method should only be used when loopable type\n\t * is unknown or in none intensive code (not called often and small loopable). Else\n\t * it's preferable to use a regular for() loop and save extra function calls.\n\t * @param {object|Array} loopable - The object or array to be iterated.\n\t * @param {function} fn - The function to call for each item.\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @param {boolean} [reverse] - If true, iterates backward on the loopable.\n\t */\n\teach: function(loopable, fn, thisArg, reverse) {\n\t\tvar i, len, keys;\n\t\tif (helpers.isArray(loopable)) {\n\t\t\tlen = loopable.length;\n\t\t\tif (reverse) {\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (helpers.isObject(loopable)) {\n\t\t\tkeys = Object.keys(loopable);\n\t\t\tlen = keys.length;\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n\t * @see https://stackoverflow.com/a/14853974\n\t * @param {Array} a0 - The array to compare\n\t * @param {Array} a1 - The array to compare\n\t * @returns {boolean}\n\t */\n\tarrayEquals: function(a0, a1) {\n\t\tvar i, ilen, v0, v1;\n\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\n\t\t\tv0 = a0[i];\n\t\t\tv1 = a1[i];\n\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if (v0 !== v1) {\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\n\t * @param {*} source - The value to clone.\n\t * @returns {*}\n\t */\n\tclone: function(source) {\n\t\tif (helpers.isArray(source)) {\n\t\t\treturn source.map(helpers.clone);\n\t\t}\n\n\t\tif (helpers.isObject(source)) {\n\t\t\tvar target = {};\n\t\t\tvar keys = Object.keys(source);\n\t\t\tvar klen = keys.length;\n\t\t\tvar k = 0;\n\n\t\t\tfor (; k < klen; ++k) {\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\n\t\t\t}\n\n\t\t\treturn target;\n\t\t}\n\n\t\treturn source;\n\t},\n\n\t/**\n\t * The default merger when Chart.helpers.merge is called without merger option.\n\t * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n\t * @private\n\t */\n\t_merger: function(key, target, source, options) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.merge(tval, sval, options);\n\t\t} else {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Merges source[key] in target[key] only if target[key] is undefined.\n\t * @private\n\t */\n\t_mergerIf: function(key, target, source) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.mergeIf(tval, sval);\n\t\t} else if (!target.hasOwnProperty(key)) {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {object} target - The target object in which all sources are merged into.\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\n\t * @param {object} [options] - Merging options:\n\t * @param {function} [options.merger] - The merge method (key, target, source, options)\n\t * @returns {object} The `target` object.\n\t */\n\tmerge: function(target, source, options) {\n\t\tvar sources = helpers.isArray(source) ? source : [source];\n\t\tvar ilen = sources.length;\n\t\tvar merge, i, keys, klen, k;\n\n\t\tif (!helpers.isObject(target)) {\n\t\t\treturn target;\n\t\t}\n\n\t\toptions = options || {};\n\t\tmerge = options.merger || helpers._merger;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!helpers.isObject(source)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tkeys = Object.keys(source);\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\n\t\t\t\tmerge(keys[k], target, source, options);\n\t\t\t}\n\t\t}\n\n\t\treturn target;\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {object} target - The target object in which all sources are merged into.\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\n\t * @returns {object} The `target` object.\n\t */\n\tmergeIf: function(target, source) {\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\n\t},\n\n\t/**\n\t * Applies the contents of two or more objects together into the first object.\n\t * @param {object} target - The target object in which all objects are merged into.\n\t * @param {object} arg1 - Object containing additional properties to merge in target.\n\t * @param {object} argN - Additional objects containing properties to merge in target.\n\t * @returns {object} The `target` object.\n\t */\n\textend: Object.assign || function(target) {\n\t\treturn helpers.merge(target, [].slice.call(arguments, 1), {\n\t\t\tmerger: function(key, dst, src) {\n\t\t\t\tdst[key] = src[key];\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n\t * Basic javascript inheritance based on the model created in Backbone.js\n\t */\n\tinherits: function(extensions) {\n\t\tvar me = this;\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\n\t\t\treturn me.apply(this, arguments);\n\t\t};\n\n\t\tvar Surrogate = function() {\n\t\t\tthis.constructor = ChartElement;\n\t\t};\n\n\t\tSurrogate.prototype = me.prototype;\n\t\tChartElement.prototype = new Surrogate();\n\t\tChartElement.extend = helpers.inherits;\n\n\t\tif (extensions) {\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\n\t\t}\n\n\t\tChartElement.__super__ = me.prototype;\n\t\treturn ChartElement;\n\t},\n\n\t_deprecated: function(scope, value, previous, current) {\n\t\tif (value !== undefined) {\n\t\t\tconsole.warn(scope + ': \"' + previous +\n\t\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n\t\t}\n\t}\n};\n\nvar helpers_core = helpers;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.callback instead.\n * @function Chart.helpers.callCallback\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\nhelpers.callCallback = helpers.callback;\n\n/**\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\n * @function Chart.helpers.indexOf\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.indexOf = function(array, item, fromIndex) {\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\n};\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\n * @function Chart.helpers.getValueOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueOrDefault = helpers.valueOrDefault;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\n * @function Chart.helpers.getValueAtIndexOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easingEffects\n * @see http://www.robertpenner.com/easing/\n */\nvar effects = {\n\tlinear: function(t) {\n\t\treturn t;\n\t},\n\n\teaseInQuad: function(t) {\n\t\treturn t * t;\n\t},\n\n\teaseOutQuad: function(t) {\n\t\treturn -t * (t - 2);\n\t},\n\n\teaseInOutQuad: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t;\n\t\t}\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\n\t},\n\n\teaseInCubic: function(t) {\n\t\treturn t * t * t;\n\t},\n\n\teaseOutCubic: function(t) {\n\t\treturn (t = t - 1) * t * t + 1;\n\t},\n\n\teaseInOutCubic: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\n\t},\n\n\teaseInQuart: function(t) {\n\t\treturn t * t * t * t;\n\t},\n\n\teaseOutQuart: function(t) {\n\t\treturn -((t = t - 1) * t * t * t - 1);\n\t},\n\n\teaseInOutQuart: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t;\n\t\t}\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\n\t},\n\n\teaseInQuint: function(t) {\n\t\treturn t * t * t * t * t;\n\t},\n\n\teaseOutQuint: function(t) {\n\t\treturn (t = t - 1) * t * t * t * t + 1;\n\t},\n\n\teaseInOutQuint: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\n\t},\n\n\teaseInSine: function(t) {\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\n\t},\n\n\teaseOutSine: function(t) {\n\t\treturn Math.sin(t * (Math.PI / 2));\n\t},\n\n\teaseInOutSine: function(t) {\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\n\t},\n\n\teaseInExpo: function(t) {\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\n\t},\n\n\teaseOutExpo: function(t) {\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\n\t},\n\n\teaseInOutExpo: function(t) {\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\n\t\t}\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\n\t},\n\n\teaseInCirc: function(t) {\n\t\tif (t >= 1) {\n\t\t\treturn t;\n\t\t}\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\n\t},\n\n\teaseOutCirc: function(t) {\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\n\t},\n\n\teaseInOutCirc: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\n\t\t}\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n\t},\n\n\teaseInElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t},\n\n\teaseOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\n\t},\n\n\teaseInOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif ((t /= 0.5) === 2) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.45;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\tif (t < 1) {\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t\t}\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\n\t},\n\teaseInBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn t * t * ((s + 1) * t - s);\n\t},\n\n\teaseOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\n\t},\n\n\teaseInOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n\t},\n\n\teaseInBounce: function(t) {\n\t\treturn 1 - effects.easeOutBounce(1 - t);\n\t},\n\n\teaseOutBounce: function(t) {\n\t\tif (t < (1 / 2.75)) {\n\t\t\treturn 7.5625 * t * t;\n\t\t}\n\t\tif (t < (2 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\n\t\t}\n\t\tif (t < (2.5 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\n\t\t}\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\n\t},\n\n\teaseInOutBounce: function(t) {\n\t\tif (t < 0.5) {\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\n\t\t}\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\n\t}\n};\n\nvar helpers_easing = {\n\teffects: effects\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\n * @function Chart.helpers.easingEffects\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers_core.easingEffects = effects;\n\nvar PI = Math.PI;\nvar RAD_PER_DEG = PI / 180;\nvar DOUBLE_PI = PI * 2;\nvar HALF_PI = PI / 2;\nvar QUARTER_PI = PI / 4;\nvar TWO_THIRDS_PI = PI * 2 / 3;\n\n/**\n * @namespace Chart.helpers.canvas\n */\nvar exports$1 = {\n\t/**\n\t * Clears the entire canvas associated to the given `chart`.\n\t * @param {Chart} chart - The chart for which to clear the canvas.\n\t */\n\tclear: function(chart) {\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\n\t},\n\n\t/**\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\n\t * given size (width, height) and the same `radius` for all corners.\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\n\t * @param {number} x - The x axis of the coordinate for the rectangle starting point.\n\t * @param {number} y - The y axis of the coordinate for the rectangle starting point.\n\t * @param {number} width - The rectangle's width.\n\t * @param {number} height - The rectangle's height.\n\t * @param {number} radius - The rounded amount (in pixels) for the four corners.\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\n\t */\n\troundedRect: function(ctx, x, y, width, height, radius) {\n\t\tif (radius) {\n\t\t\tvar r = Math.min(radius, height / 2, width / 2);\n\t\t\tvar left = x + r;\n\t\t\tvar top = y + r;\n\t\t\tvar right = x + width - r;\n\t\t\tvar bottom = y + height - r;\n\n\t\t\tctx.moveTo(x, top);\n\t\t\tif (left < right && top < bottom) {\n\t\t\t\tctx.arc(left, top, r, -PI, -HALF_PI);\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, 0);\n\t\t\t\tctx.arc(right, bottom, r, 0, HALF_PI);\n\t\t\t\tctx.arc(left, bottom, r, HALF_PI, PI);\n\t\t\t} else if (left < right) {\n\t\t\t\tctx.moveTo(left, y);\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, HALF_PI);\n\t\t\t\tctx.arc(left, top, r, HALF_PI, PI + HALF_PI);\n\t\t\t} else if (top < bottom) {\n\t\t\t\tctx.arc(left, top, r, -PI, 0);\n\t\t\t\tctx.arc(left, bottom, r, 0, PI);\n\t\t\t} else {\n\t\t\t\tctx.arc(left, top, r, -PI, PI);\n\t\t\t}\n\t\t\tctx.closePath();\n\t\t\tctx.moveTo(x, y);\n\t\t} else {\n\t\t\tctx.rect(x, y, width, height);\n\t\t}\n\t},\n\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\n\t\tvar type, xOffset, yOffset, size, cornerRadius;\n\t\tvar rad = (rotation || 0) * RAD_PER_DEG;\n\n\t\tif (style && typeof style === 'object') {\n\t\t\ttype = style.toString();\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(x, y);\n\t\t\t\tctx.rotate(rad);\n\t\t\t\tctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n\t\t\t\tctx.restore();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (isNaN(radius) || radius <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.beginPath();\n\n\t\tswitch (style) {\n\t\t// Default includes circle\n\t\tdefault:\n\t\t\tctx.arc(x, y, radius, 0, DOUBLE_PI);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'triangle':\n\t\t\tctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n\t\t\trad += TWO_THIRDS_PI;\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n\t\t\trad += TWO_THIRDS_PI;\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'rectRounded':\n\t\t\t// NOTE: the rounded rect implementation changed to use `arc` instead of\n\t\t\t// `quadraticCurveTo` since it generates better results when rect is\n\t\t\t// almost a circle. 0.516 (instead of 0.5) produces results with visually\n\t\t\t// closer proportion to the previous impl and it is inscribed in the\n\t\t\t// circle with `radius`. For more details, see the following PRs:\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5597\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5858\n\t\t\tcornerRadius = radius * 0.516;\n\t\t\tsize = radius - cornerRadius;\n\t\t\txOffset = Math.cos(rad + QUARTER_PI) * size;\n\t\t\tyOffset = Math.sin(rad + QUARTER_PI) * size;\n\t\t\tctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n\t\t\tctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n\t\t\tctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n\t\t\tctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'rect':\n\t\t\tif (!rotation) {\n\t\t\t\tsize = Math.SQRT1_2 * radius;\n\t\t\t\tctx.rect(x - size, y - size, 2 * size, 2 * size);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\trad += QUARTER_PI;\n\t\t\t/* falls through */\n\t\tcase 'rectRot':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'crossRot':\n\t\t\trad += QUARTER_PI;\n\t\t\t/* falls through */\n\t\tcase 'cross':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\tbreak;\n\t\tcase 'star':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\trad += QUARTER_PI;\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\tbreak;\n\t\tcase 'line':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tbreak;\n\t\tcase 'dash':\n\t\t\tctx.moveTo(x, y);\n\t\t\tctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n\t\t\tbreak;\n\t\t}\n\n\t\tctx.fill();\n\t\tctx.stroke();\n\t},\n\n\t/**\n\t * Returns true if the point is inside the rectangle\n\t * @param {object} point - The point to test\n\t * @param {object} area - The rectangle\n\t * @returns {boolean}\n\t * @private\n\t */\n\t_isPointInArea: function(point, area) {\n\t\tvar epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n\n\t\treturn point.x > area.left - epsilon && point.x < area.right + epsilon &&\n\t\t\tpoint.y > area.top - epsilon && point.y < area.bottom + epsilon;\n\t},\n\n\tclipArea: function(ctx, area) {\n\t\tctx.save();\n\t\tctx.beginPath();\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n\t\tctx.clip();\n\t},\n\n\tunclipArea: function(ctx) {\n\t\tctx.restore();\n\t},\n\n\tlineTo: function(ctx, previous, target, flip) {\n\t\tvar stepped = target.steppedLine;\n\t\tif (stepped) {\n\t\t\tif (stepped === 'middle') {\n\t\t\t\tvar midpoint = (previous.x + target.x) / 2.0;\n\t\t\t\tctx.lineTo(midpoint, flip ? target.y : previous.y);\n\t\t\t\tctx.lineTo(midpoint, flip ? previous.y : target.y);\n\t\t\t} else if ((stepped === 'after' && !flip) || (stepped !== 'after' && flip)) {\n\t\t\t\tctx.lineTo(previous.x, target.y);\n\t\t\t} else {\n\t\t\t\tctx.lineTo(target.x, previous.y);\n\t\t\t}\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!target.tension) {\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tctx.bezierCurveTo(\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\n\t\t\ttarget.x,\n\t\t\ttarget.y);\n\t}\n};\n\nvar helpers_canvas = exports$1;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\n * @namespace Chart.helpers.clear\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers_core.clear = exports$1.clear;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\n * @namespace Chart.helpers.drawRoundedRectangle\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers_core.drawRoundedRectangle = function(ctx) {\n\tctx.beginPath();\n\texports$1.roundedRect.apply(exports$1, arguments);\n};\n\nvar defaults = {\n\t/**\n\t * @private\n\t */\n\t_set: function(scope, values) {\n\t\treturn helpers_core.merge(this[scope] || (this[scope] = {}), values);\n\t}\n};\n\n// TODO(v3): remove 'global' from namespace. all default are global and\n// there's inconsistency around which options are under 'global'\ndefaults._set('global', {\n\tdefaultColor: 'rgba(0,0,0,0.1)',\n\tdefaultFontColor: '#666',\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n\tdefaultFontSize: 12,\n\tdefaultFontStyle: 'normal',\n\tdefaultLineHeight: 1.2,\n\tshowLines: true\n});\n\nvar core_defaults = defaults;\n\nvar valueOrDefault = helpers_core.valueOrDefault;\n\n/**\n * Converts the given font object into a CSS font string.\n * @param {object} font - A font object.\n * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */\nfunction toFontString(font) {\n\tif (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) {\n\t\treturn null;\n\t}\n\n\treturn (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\nvar helpers_options = {\n\t/**\n\t * Converts the given line height `value` in pixels for a specific font `size`.\n\t * @param {number|string} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n\t * @param {number} size - The font size (in pixels) used to resolve relative `value`.\n\t * @returns {number} The effective line height in pixels (size * 1.2 if value is invalid).\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n\t * @since 2.7.0\n\t */\n\ttoLineHeight: function(value, size) {\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\n\t\tif (!matches || matches[1] === 'normal') {\n\t\t\treturn size * 1.2;\n\t\t}\n\n\t\tvalue = +matches[2];\n\n\t\tswitch (matches[3]) {\n\t\tcase 'px':\n\t\t\treturn value;\n\t\tcase '%':\n\t\t\tvalue /= 100;\n\t\t\tbreak;\n\t\t}\n\n\t\treturn size * value;\n\t},\n\n\t/**\n\t * Converts the given value into a padding object with pre-computed width/height.\n\t * @param {number|object} value - If a number, set the value to all TRBL component,\n\t * else, if and object, use defined properties and sets undefined ones to 0.\n\t * @returns {object} The padding values (top, right, bottom, left, width, height)\n\t * @since 2.7.0\n\t */\n\ttoPadding: function(value) {\n\t\tvar t, r, b, l;\n\n\t\tif (helpers_core.isObject(value)) {\n\t\t\tt = +value.top || 0;\n\t\t\tr = +value.right || 0;\n\t\t\tb = +value.bottom || 0;\n\t\t\tl = +value.left || 0;\n\t\t} else {\n\t\t\tt = r = b = l = +value || 0;\n\t\t}\n\n\t\treturn {\n\t\t\ttop: t,\n\t\t\tright: r,\n\t\t\tbottom: b,\n\t\t\tleft: l,\n\t\t\theight: t + b,\n\t\t\twidth: l + r\n\t\t};\n\t},\n\n\t/**\n\t * Parses font options and returns the font object.\n\t * @param {object} options - A object that contains font options to be parsed.\n\t * @return {object} The font object.\n\t * @todo Support font.* options and renamed to toFont().\n\t * @private\n\t */\n\t_parseFont: function(options) {\n\t\tvar globalDefaults = core_defaults.global;\n\t\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\n\t\tvar font = {\n\t\t\tfamily: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily),\n\t\t\tlineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size),\n\t\t\tsize: size,\n\t\t\tstyle: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle),\n\t\t\tweight: null,\n\t\t\tstring: ''\n\t\t};\n\n\t\tfont.string = toFontString(font);\n\t\treturn font;\n\t},\n\n\t/**\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\n\t * @param {Array} inputs - An array of values, falling back to the last value.\n\t * @param {object} [context] - If defined and the current value is a function, the value\n\t * is called with `context` as first argument and the result becomes the new input.\n\t * @param {number} [index] - If defined and the current value is an array, the value\n\t * at `index` become the new input.\n\t * @param {object} [info] - object to return information about resolution in\n\t * @param {boolean} [info.cacheable] - Will be set to `false` if option is not cacheable.\n\t * @since 2.7.0\n\t */\n\tresolve: function(inputs, context, index, info) {\n\t\tvar cacheable = true;\n\t\tvar i, ilen, value;\n\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\n\t\t\tvalue = inputs[i];\n\t\t\tif (value === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (context !== undefined && typeof value === 'function') {\n\t\t\t\tvalue = value(context);\n\t\t\t\tcacheable = false;\n\t\t\t}\n\t\t\tif (index !== undefined && helpers_core.isArray(value)) {\n\t\t\t\tvalue = value[index];\n\t\t\t\tcacheable = false;\n\t\t\t}\n\t\t\tif (value !== undefined) {\n\t\t\t\tif (info && !cacheable) {\n\t\t\t\t\tinfo.cacheable = false;\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t}\n};\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */\nvar exports$2 = {\n\t/**\n\t * Returns an array of factors sorted from 1 to sqrt(value)\n\t * @private\n\t */\n\t_factorize: function(value) {\n\t\tvar result = [];\n\t\tvar sqrt = Math.sqrt(value);\n\t\tvar i;\n\n\t\tfor (i = 1; i < sqrt; i++) {\n\t\t\tif (value % i === 0) {\n\t\t\t\tresult.push(i);\n\t\t\t\tresult.push(value / i);\n\t\t\t}\n\t\t}\n\t\tif (sqrt === (sqrt | 0)) { // if value is a square number\n\t\t\tresult.push(sqrt);\n\t\t}\n\n\t\tresult.sort(function(a, b) {\n\t\t\treturn a - b;\n\t\t}).pop();\n\t\treturn result;\n\t},\n\n\tlog10: Math.log10 || function(x) {\n\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\n\t\t// Check for whole powers of 10,\n\t\t// which due to floating point rounding error should be corrected.\n\t\tvar powerOf10 = Math.round(exponent);\n\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\n\n\t\treturn isPowerOf10 ? powerOf10 : exponent;\n\t}\n};\n\nvar helpers_math = exports$2;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.math.log10 instead.\n * @namespace Chart.helpers.log10\n * @deprecated since version 2.9.0\n * @todo remove at version 3\n * @private\n */\nhelpers_core.log10 = exports$2.log10;\n\nvar getRtlAdapter = function(rectX, width) {\n\treturn {\n\t\tx: function(x) {\n\t\t\treturn rectX + rectX + width - x;\n\t\t},\n\t\tsetWidth: function(w) {\n\t\t\twidth = w;\n\t\t},\n\t\ttextAlign: function(align) {\n\t\t\tif (align === 'center') {\n\t\t\t\treturn align;\n\t\t\t}\n\t\t\treturn align === 'right' ? 'left' : 'right';\n\t\t},\n\t\txPlus: function(x, value) {\n\t\t\treturn x - value;\n\t\t},\n\t\tleftForLtr: function(x, itemWidth) {\n\t\t\treturn x - itemWidth;\n\t\t},\n\t};\n};\n\nvar getLtrAdapter = function() {\n\treturn {\n\t\tx: function(x) {\n\t\t\treturn x;\n\t\t},\n\t\tsetWidth: function(w) { // eslint-disable-line no-unused-vars\n\t\t},\n\t\ttextAlign: function(align) {\n\t\t\treturn align;\n\t\t},\n\t\txPlus: function(x, value) {\n\t\t\treturn x + value;\n\t\t},\n\t\tleftForLtr: function(x, _itemWidth) { // eslint-disable-line no-unused-vars\n\t\t\treturn x;\n\t\t},\n\t};\n};\n\nvar getAdapter = function(rtl, rectX, width) {\n\treturn rtl ? getRtlAdapter(rectX, width) : getLtrAdapter();\n};\n\nvar overrideTextDirection = function(ctx, direction) {\n\tvar style, original;\n\tif (direction === 'ltr' || direction === 'rtl') {\n\t\tstyle = ctx.canvas.style;\n\t\toriginal = [\n\t\t\tstyle.getPropertyValue('direction'),\n\t\t\tstyle.getPropertyPriority('direction'),\n\t\t];\n\n\t\tstyle.setProperty('direction', direction, 'important');\n\t\tctx.prevTextDirection = original;\n\t}\n};\n\nvar restoreTextDirection = function(ctx) {\n\tvar original = ctx.prevTextDirection;\n\tif (original !== undefined) {\n\t\tdelete ctx.prevTextDirection;\n\t\tctx.canvas.style.setProperty('direction', original[0], original[1]);\n\t}\n};\n\nvar helpers_rtl = {\n\tgetRtlAdapter: getAdapter,\n\toverrideTextDirection: overrideTextDirection,\n\trestoreTextDirection: restoreTextDirection,\n};\n\nvar helpers$1 = helpers_core;\nvar easing = helpers_easing;\nvar canvas = helpers_canvas;\nvar options = helpers_options;\nvar math = helpers_math;\nvar rtl = helpers_rtl;\nhelpers$1.easing = easing;\nhelpers$1.canvas = canvas;\nhelpers$1.options = options;\nhelpers$1.math = math;\nhelpers$1.rtl = rtl;\n\nfunction interpolate(start, view, model, ease) {\n\tvar keys = Object.keys(model);\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\n\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\tkey = keys[i];\n\n\t\ttarget = model[key];\n\n\t\t// if a value is added to the model after pivot() has been called, the view\n\t\t// doesn't contain it, so let's initialize the view to the target value.\n\t\tif (!view.hasOwnProperty(key)) {\n\t\t\tview[key] = target;\n\t\t}\n\n\t\tactual = view[key];\n\n\t\tif (actual === target || key[0] === '_') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!start.hasOwnProperty(key)) {\n\t\t\tstart[key] = actual;\n\t\t}\n\n\t\torigin = start[key];\n\n\t\ttype = typeof target;\n\n\t\tif (type === typeof origin) {\n\t\t\tif (type === 'string') {\n\t\t\t\tc0 = chartjsColor(origin);\n\t\t\t\tif (c0.valid) {\n\t\t\t\t\tc1 = chartjsColor(target);\n\t\t\t\t\tif (c1.valid) {\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (helpers$1.isFinite(origin) && helpers$1.isFinite(target)) {\n\t\t\t\tview[key] = origin + (target - origin) * ease;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tview[key] = target;\n\t}\n}\n\nvar Element = function(configuration) {\n\thelpers$1.extend(this, configuration);\n\tthis.initialize.apply(this, arguments);\n};\n\nhelpers$1.extend(Element.prototype, {\n\t_type: undefined,\n\n\tinitialize: function() {\n\t\tthis.hidden = false;\n\t},\n\n\tpivot: function() {\n\t\tvar me = this;\n\t\tif (!me._view) {\n\t\t\tme._view = helpers$1.extend({}, me._model);\n\t\t}\n\t\tme._start = {};\n\t\treturn me;\n\t},\n\n\ttransition: function(ease) {\n\t\tvar me = this;\n\t\tvar model = me._model;\n\t\tvar start = me._start;\n\t\tvar view = me._view;\n\n\t\t// No animation -> No Transition\n\t\tif (!model || ease === 1) {\n\t\t\tme._view = helpers$1.extend({}, model);\n\t\t\tme._start = null;\n\t\t\treturn me;\n\t\t}\n\n\t\tif (!view) {\n\t\t\tview = me._view = {};\n\t\t}\n\n\t\tif (!start) {\n\t\t\tstart = me._start = {};\n\t\t}\n\n\t\tinterpolate(start, view, model, ease);\n\n\t\treturn me;\n\t},\n\n\ttooltipPosition: function() {\n\t\treturn {\n\t\t\tx: this._model.x,\n\t\t\ty: this._model.y\n\t\t};\n\t},\n\n\thasValue: function() {\n\t\treturn helpers$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y);\n\t}\n});\n\nElement.extend = helpers$1.inherits;\n\nvar core_element = Element;\n\nvar exports$3 = core_element.extend({\n\tchart: null, // the animation associated chart instance\n\tcurrentStep: 0, // the current animation step\n\tnumSteps: 60, // default number of steps\n\teasing: '', // the easing to use for this animation\n\trender: null, // render function used by the animation service\n\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\n});\n\nvar core_animation = exports$3;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.Animation instead\n * @prop Chart.Animation#animationObject\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\nObject.defineProperty(exports$3.prototype, 'animationObject', {\n\tget: function() {\n\t\treturn this;\n\t}\n});\n\n/**\n * Provided for backward compatibility, use Chart.Animation#chart instead\n * @prop Chart.Animation#chartInstance\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\nObject.defineProperty(exports$3.prototype, 'chartInstance', {\n\tget: function() {\n\t\treturn this.chart;\n\t},\n\tset: function(value) {\n\t\tthis.chart = value;\n\t}\n});\n\ncore_defaults._set('global', {\n\tanimation: {\n\t\tduration: 1000,\n\t\teasing: 'easeOutQuart',\n\t\tonProgress: helpers$1.noop,\n\t\tonComplete: helpers$1.noop\n\t}\n});\n\nvar core_animations = {\n\tanimations: [],\n\trequest: null,\n\n\t/**\n\t * @param {Chart} chart - The chart to animate.\n\t * @param {Chart.Animation} animation - The animation that we will animate.\n\t * @param {number} duration - The animation duration in ms.\n\t * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\n\t */\n\taddAnimation: function(chart, animation, duration, lazy) {\n\t\tvar animations = this.animations;\n\t\tvar i, ilen;\n\n\t\tanimation.chart = chart;\n\t\tanimation.startTime = Date.now();\n\t\tanimation.duration = duration;\n\n\t\tif (!lazy) {\n\t\t\tchart.animating = true;\n\t\t}\n\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\n\t\t\tif (animations[i].chart === chart) {\n\t\t\t\tanimations[i] = animation;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tanimations.push(animation);\n\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\n\t\tif (animations.length === 1) {\n\t\t\tthis.requestAnimationFrame();\n\t\t}\n\t},\n\n\tcancelAnimation: function(chart) {\n\t\tvar index = helpers$1.findIndex(this.animations, function(animation) {\n\t\t\treturn animation.chart === chart;\n\t\t});\n\n\t\tif (index !== -1) {\n\t\t\tthis.animations.splice(index, 1);\n\t\t\tchart.animating = false;\n\t\t}\n\t},\n\n\trequestAnimationFrame: function() {\n\t\tvar me = this;\n\t\tif (me.request === null) {\n\t\t\t// Skip animation frame requests until the active one is executed.\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\n\t\t\t// and 'mouseout' events will trigger multiple renders.\n\t\t\tme.request = helpers$1.requestAnimFrame.call(window, function() {\n\t\t\t\tme.request = null;\n\t\t\t\tme.startDigest();\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tstartDigest: function() {\n\t\tvar me = this;\n\n\t\tme.advance();\n\n\t\t// Do we have more stuff to animate?\n\t\tif (me.animations.length > 0) {\n\t\t\tme.requestAnimationFrame();\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tadvance: function() {\n\t\tvar animations = this.animations;\n\t\tvar animation, chart, numSteps, nextStep;\n\t\tvar i = 0;\n\n\t\t// 1 animation per chart, so we are looping charts here\n\t\twhile (i < animations.length) {\n\t\t\tanimation = animations[i];\n\t\t\tchart = animation.chart;\n\t\t\tnumSteps = animation.numSteps;\n\n\t\t\t// Make sure that currentStep starts at 1\n\t\t\t// https://github.com/chartjs/Chart.js/issues/6104\n\t\t\tnextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1;\n\t\t\tanimation.currentStep = Math.min(nextStep, numSteps);\n\n\t\t\thelpers$1.callback(animation.render, [chart, animation], chart);\n\t\t\thelpers$1.callback(animation.onAnimationProgress, [animation], chart);\n\n\t\t\tif (animation.currentStep >= numSteps) {\n\t\t\t\thelpers$1.callback(animation.onAnimationComplete, [animation], chart);\n\t\t\t\tchart.animating = false;\n\t\t\t\tanimations.splice(i, 1);\n\t\t\t} else {\n\t\t\t\t++i;\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar resolve = helpers$1.options.resolve;\n\nvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n\n/**\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\n */\nfunction listenArrayEvents(array, listener) {\n\tif (array._chartjs) {\n\t\tarray._chartjs.listeners.push(listener);\n\t\treturn;\n\t}\n\n\tObject.defineProperty(array, '_chartjs', {\n\t\tconfigurable: true,\n\t\tenumerable: false,\n\t\tvalue: {\n\t\t\tlisteners: [listener]\n\t\t}\n\t});\n\n\tarrayEvents.forEach(function(key) {\n\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\n\t\tvar base = array[key];\n\n\t\tObject.defineProperty(array, key, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: function() {\n\t\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\t\t\tvar res = base.apply(this, args);\n\n\t\t\t\thelpers$1.each(array._chartjs.listeners, function(object) {\n\t\t\t\t\tif (typeof object[method] === 'function') {\n\t\t\t\t\t\tobject[method].apply(object, args);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn res;\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Removes the given array event listener and cleanup extra attached properties (such as\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n */\nfunction unlistenArrayEvents(array, listener) {\n\tvar stub = array._chartjs;\n\tif (!stub) {\n\t\treturn;\n\t}\n\n\tvar listeners = stub.listeners;\n\tvar index = listeners.indexOf(listener);\n\tif (index !== -1) {\n\t\tlisteners.splice(index, 1);\n\t}\n\n\tif (listeners.length > 0) {\n\t\treturn;\n\t}\n\n\tarrayEvents.forEach(function(key) {\n\t\tdelete array[key];\n\t});\n\n\tdelete array._chartjs;\n}\n\n// Base class for all dataset controllers (line, bar, etc)\nvar DatasetController = function(chart, datasetIndex) {\n\tthis.initialize(chart, datasetIndex);\n};\n\nhelpers$1.extend(DatasetController.prototype, {\n\n\t/**\n\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\n\t * @type {Chart.core.element}\n\t */\n\tdatasetElementType: null,\n\n\t/**\n\t * Element type used to generate a meta data (e.g. Chart.element.Point).\n\t * @type {Chart.core.element}\n\t */\n\tdataElementType: null,\n\n\t/**\n\t * Dataset element option keys to be resolved in _resolveDatasetElementOptions.\n\t * A derived controller may override this to resolve controller-specific options.\n\t * The keys defined here are for backward compatibility for legend styles.\n\t * @private\n\t */\n\t_datasetElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderCapStyle',\n\t\t'borderColor',\n\t\t'borderDash',\n\t\t'borderDashOffset',\n\t\t'borderJoinStyle',\n\t\t'borderWidth'\n\t],\n\n\t/**\n\t * Data element option keys to be resolved in _resolveDataElementOptions.\n\t * A derived controller may override this to resolve controller-specific options.\n\t * The keys defined here are for backward compatibility for legend styles.\n\t * @private\n\t */\n\t_dataElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderColor',\n\t\t'borderWidth',\n\t\t'pointStyle'\n\t],\n\n\tinitialize: function(chart, datasetIndex) {\n\t\tvar me = this;\n\t\tme.chart = chart;\n\t\tme.index = datasetIndex;\n\t\tme.linkScales();\n\t\tme.addElements();\n\t\tme._type = me.getMeta().type;\n\t},\n\n\tupdateIndex: function(datasetIndex) {\n\t\tthis.index = datasetIndex;\n\t},\n\n\tlinkScales: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar chart = me.chart;\n\t\tvar scales = chart.scales;\n\t\tvar dataset = me.getDataset();\n\t\tvar scalesOpts = chart.options.scales;\n\n\t\tif (meta.xAxisID === null || !(meta.xAxisID in scales) || dataset.xAxisID) {\n\t\t\tmeta.xAxisID = dataset.xAxisID || scalesOpts.xAxes[0].id;\n\t\t}\n\t\tif (meta.yAxisID === null || !(meta.yAxisID in scales) || dataset.yAxisID) {\n\t\t\tmeta.yAxisID = dataset.yAxisID || scalesOpts.yAxes[0].id;\n\t\t}\n\t},\n\n\tgetDataset: function() {\n\t\treturn this.chart.data.datasets[this.index];\n\t},\n\n\tgetMeta: function() {\n\t\treturn this.chart.getDatasetMeta(this.index);\n\t},\n\n\tgetScaleForId: function(scaleID) {\n\t\treturn this.chart.scales[scaleID];\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getValueScaleId: function() {\n\t\treturn this.getMeta().yAxisID;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScaleId: function() {\n\t\treturn this.getMeta().xAxisID;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getValueScale: function() {\n\t\treturn this.getScaleForId(this._getValueScaleId());\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScale: function() {\n\t\treturn this.getScaleForId(this._getIndexScaleId());\n\t},\n\n\treset: function() {\n\t\tthis._update(true);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tdestroy: function() {\n\t\tif (this._data) {\n\t\t\tunlistenArrayEvents(this._data, this);\n\t\t}\n\t},\n\n\tcreateMetaDataset: function() {\n\t\tvar me = this;\n\t\tvar type = me.datasetElementType;\n\t\treturn type && new type({\n\t\t\t_chart: me.chart,\n\t\t\t_datasetIndex: me.index\n\t\t});\n\t},\n\n\tcreateMetaData: function(index) {\n\t\tvar me = this;\n\t\tvar type = me.dataElementType;\n\t\treturn type && new type({\n\t\t\t_chart: me.chart,\n\t\t\t_datasetIndex: me.index,\n\t\t\t_index: index\n\t\t});\n\t},\n\n\taddElements: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar data = me.getDataset().data || [];\n\t\tvar metaData = meta.data;\n\t\tvar i, ilen;\n\n\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\n\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\n\t\t}\n\n\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\n\t},\n\n\taddElementAndReset: function(index) {\n\t\tvar element = this.createMetaData(index);\n\t\tthis.getMeta().data.splice(index, 0, element);\n\t\tthis.updateElement(element, index, true);\n\t},\n\n\tbuildOrUpdateElements: function() {\n\t\tvar me = this;\n\t\tvar dataset = me.getDataset();\n\t\tvar data = dataset.data || (dataset.data = []);\n\n\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\n\t\t// real-time charts), we need to monitor these data modifications and synchronize\n\t\t// the internal meta data accordingly.\n\t\tif (me._data !== data) {\n\t\t\tif (me._data) {\n\t\t\t\t// This case happens when the user replaced the data array instance.\n\t\t\t\tunlistenArrayEvents(me._data, me);\n\t\t\t}\n\n\t\t\tif (data && Object.isExtensible(data)) {\n\t\t\t\tlistenArrayEvents(data, me);\n\t\t\t}\n\t\t\tme._data = data;\n\t\t}\n\n\t\t// Re-sync meta data in case the user replaced the data array or if we missed\n\t\t// any updates and so make sure that we handle number of datapoints changing.\n\t\tme.resyncElements();\n\t},\n\n\t/**\n\t * Returns the merged user-supplied and default dataset-level options\n\t * @private\n\t */\n\t_configure: function() {\n\t\tvar me = this;\n\t\tme._config = helpers$1.merge({}, [\n\t\t\tme.chart.options.datasets[me._type],\n\t\t\tme.getDataset(),\n\t\t], {\n\t\t\tmerger: function(key, target, source) {\n\t\t\t\tif (key !== '_meta' && key !== 'data') {\n\t\t\t\t\thelpers$1._merger(key, target, source);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\t_update: function(reset) {\n\t\tvar me = this;\n\t\tme._configure();\n\t\tme._cachedDataOpts = null;\n\t\tme.update(reset);\n\t},\n\n\tupdate: helpers$1.noop,\n\n\ttransition: function(easingValue) {\n\t\tvar meta = this.getMeta();\n\t\tvar elements = meta.data || [];\n\t\tvar ilen = elements.length;\n\t\tvar i = 0;\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\telements[i].transition(easingValue);\n\t\t}\n\n\t\tif (meta.dataset) {\n\t\t\tmeta.dataset.transition(easingValue);\n\t\t}\n\t},\n\n\tdraw: function() {\n\t\tvar meta = this.getMeta();\n\t\tvar elements = meta.data || [];\n\t\tvar ilen = elements.length;\n\t\tvar i = 0;\n\n\t\tif (meta.dataset) {\n\t\t\tmeta.dataset.draw();\n\t\t}\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\telements[i].draw();\n\t\t}\n\t},\n\n\t/**\n\t * Returns a set of predefined style properties that should be used to represent the dataset\n\t * or the data if the index is specified\n\t * @param {number} index - data index\n\t * @return {IStyleInterface} style object\n\t */\n\tgetStyle: function(index) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar dataset = meta.dataset;\n\t\tvar style;\n\n\t\tme._configure();\n\t\tif (dataset && index === undefined) {\n\t\t\tstyle = me._resolveDatasetElementOptions(dataset || {});\n\t\t} else {\n\t\t\tindex = index || 0;\n\t\t\tstyle = me._resolveDataElementOptions(meta.data[index] || {}, index);\n\t\t}\n\n\t\tif (style.fill === false || style.fill === null) {\n\t\t\tstyle.backgroundColor = style.borderColor;\n\t\t}\n\n\t\treturn style;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDatasetElementOptions: function(element, hover) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar datasetOpts = me._config;\n\t\tvar custom = element.custom || {};\n\t\tvar options = chart.options.elements[me.datasetElementType.prototype._type] || {};\n\t\tvar elementOptions = me._datasetElementOptions;\n\t\tvar values = {};\n\t\tvar i, ilen, key, readKey;\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataset: me.getDataset(),\n\t\t\tdatasetIndex: me.index,\n\t\t\thover: hover\n\t\t};\n\n\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\n\t\t\tkey = elementOptions[i];\n\t\t\treadKey = hover ? 'hover' + key.charAt(0).toUpperCase() + key.slice(1) : key;\n\t\t\tvalues[key] = resolve([\n\t\t\t\tcustom[readKey],\n\t\t\t\tdatasetOpts[readKey],\n\t\t\t\toptions[readKey]\n\t\t\t], context);\n\t\t}\n\n\t\treturn values;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDataElementOptions: function(element, index) {\n\t\tvar me = this;\n\t\tvar custom = element && element.custom;\n\t\tvar cached = me._cachedDataOpts;\n\t\tif (cached && !custom) {\n\t\t\treturn cached;\n\t\t}\n\t\tvar chart = me.chart;\n\t\tvar datasetOpts = me._config;\n\t\tvar options = chart.options.elements[me.dataElementType.prototype._type] || {};\n\t\tvar elementOptions = me._dataElementOptions;\n\t\tvar values = {};\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: me.getDataset(),\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\t// `resolve` sets cacheable to `false` if any option is indexed or scripted\n\t\tvar info = {cacheable: !custom};\n\n\t\tvar keys, i, ilen, key;\n\n\t\tcustom = custom || {};\n\n\t\tif (helpers$1.isArray(elementOptions)) {\n\t\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\n\t\t\t\tkey = elementOptions[i];\n\t\t\t\tvalues[key] = resolve([\n\t\t\t\t\tcustom[key],\n\t\t\t\t\tdatasetOpts[key],\n\t\t\t\t\toptions[key]\n\t\t\t\t], context, index, info);\n\t\t\t}\n\t\t} else {\n\t\t\tkeys = Object.keys(elementOptions);\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\t\tkey = keys[i];\n\t\t\t\tvalues[key] = resolve([\n\t\t\t\t\tcustom[key],\n\t\t\t\t\tdatasetOpts[elementOptions[key]],\n\t\t\t\t\tdatasetOpts[key],\n\t\t\t\t\toptions[key]\n\t\t\t\t], context, index, info);\n\t\t\t}\n\t\t}\n\n\t\tif (info.cacheable) {\n\t\t\tme._cachedDataOpts = Object.freeze(values);\n\t\t}\n\n\t\treturn values;\n\t},\n\n\tremoveHoverStyle: function(element) {\n\t\thelpers$1.merge(element._model, element.$previousStyle || {});\n\t\tdelete element.$previousStyle;\n\t},\n\n\tsetHoverStyle: function(element) {\n\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\n\t\tvar index = element._index;\n\t\tvar custom = element.custom || {};\n\t\tvar model = element._model;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\telement.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth\n\t\t};\n\n\t\tmodel.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);\n\t\tmodel.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index);\n\t\tmodel.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_removeDatasetHoverStyle: function() {\n\t\tvar element = this.getMeta().dataset;\n\n\t\tif (element) {\n\t\t\tthis.removeHoverStyle(element);\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_setDatasetHoverStyle: function() {\n\t\tvar element = this.getMeta().dataset;\n\t\tvar prev = {};\n\t\tvar i, ilen, key, keys, hoverOptions, model;\n\n\t\tif (!element) {\n\t\t\treturn;\n\t\t}\n\n\t\tmodel = element._model;\n\t\thoverOptions = this._resolveDatasetElementOptions(element, true);\n\n\t\tkeys = Object.keys(hoverOptions);\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\tkey = keys[i];\n\t\t\tprev[key] = model[key];\n\t\t\tmodel[key] = hoverOptions[key];\n\t\t}\n\n\t\telement.$previousStyle = prev;\n\t},\n\n\t/**\n\t * @private\n\t */\n\tresyncElements: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar data = me.getDataset().data;\n\t\tvar numMeta = meta.data.length;\n\t\tvar numData = data.length;\n\n\t\tif (numData < numMeta) {\n\t\t\tmeta.data.splice(numData, numMeta - numData);\n\t\t} else if (numData > numMeta) {\n\t\t\tme.insertElements(numMeta, numData - numMeta);\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tinsertElements: function(start, count) {\n\t\tfor (var i = 0; i < count; ++i) {\n\t\t\tthis.addElementAndReset(start + i);\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataPush: function() {\n\t\tvar count = arguments.length;\n\t\tthis.insertElements(this.getDataset().data.length - count, count);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataPop: function() {\n\t\tthis.getMeta().data.pop();\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataShift: function() {\n\t\tthis.getMeta().data.shift();\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataSplice: function(start, count) {\n\t\tthis.getMeta().data.splice(start, count);\n\t\tthis.insertElements(start, arguments.length - 2);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataUnshift: function() {\n\t\tthis.insertElements(0, arguments.length);\n\t}\n});\n\nDatasetController.extend = helpers$1.inherits;\n\nvar core_datasetController = DatasetController;\n\nvar TAU = Math.PI * 2;\n\ncore_defaults._set('global', {\n\telements: {\n\t\tarc: {\n\t\t\tbackgroundColor: core_defaults.global.defaultColor,\n\t\t\tborderColor: '#fff',\n\t\t\tborderWidth: 2,\n\t\t\tborderAlign: 'center'\n\t\t}\n\t}\n});\n\nfunction clipArc(ctx, arc) {\n\tvar startAngle = arc.startAngle;\n\tvar endAngle = arc.endAngle;\n\tvar pixelMargin = arc.pixelMargin;\n\tvar angleMargin = pixelMargin / arc.outerRadius;\n\tvar x = arc.x;\n\tvar y = arc.y;\n\n\t// Draw an inner border by cliping the arc and drawing a double-width border\n\t// Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n\tctx.beginPath();\n\tctx.arc(x, y, arc.outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n\tif (arc.innerRadius > pixelMargin) {\n\t\tangleMargin = pixelMargin / arc.innerRadius;\n\t\tctx.arc(x, y, arc.innerRadius - pixelMargin, endAngle + angleMargin, startAngle - angleMargin, true);\n\t} else {\n\t\tctx.arc(x, y, pixelMargin, endAngle + Math.PI / 2, startAngle - Math.PI / 2);\n\t}\n\tctx.closePath();\n\tctx.clip();\n}\n\nfunction drawFullCircleBorders(ctx, vm, arc, inner) {\n\tvar endAngle = arc.endAngle;\n\tvar i;\n\n\tif (inner) {\n\t\tarc.endAngle = arc.startAngle + TAU;\n\t\tclipArc(ctx, arc);\n\t\tarc.endAngle = endAngle;\n\t\tif (arc.endAngle === arc.startAngle && arc.fullCircles) {\n\t\t\tarc.endAngle += TAU;\n\t\t\tarc.fullCircles--;\n\t\t}\n\t}\n\n\tctx.beginPath();\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.startAngle + TAU, arc.startAngle, true);\n\tfor (i = 0; i < arc.fullCircles; ++i) {\n\t\tctx.stroke();\n\t}\n\n\tctx.beginPath();\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.startAngle + TAU);\n\tfor (i = 0; i < arc.fullCircles; ++i) {\n\t\tctx.stroke();\n\t}\n}\n\nfunction drawBorder(ctx, vm, arc) {\n\tvar inner = vm.borderAlign === 'inner';\n\n\tif (inner) {\n\t\tctx.lineWidth = vm.borderWidth * 2;\n\t\tctx.lineJoin = 'round';\n\t} else {\n\t\tctx.lineWidth = vm.borderWidth;\n\t\tctx.lineJoin = 'bevel';\n\t}\n\n\tif (arc.fullCircles) {\n\t\tdrawFullCircleBorders(ctx, vm, arc, inner);\n\t}\n\n\tif (inner) {\n\t\tclipArc(ctx, arc);\n\t}\n\n\tctx.beginPath();\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.endAngle);\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n\tctx.closePath();\n\tctx.stroke();\n}\n\nvar element_arc = core_element.extend({\n\t_type: 'arc',\n\n\tinLabelRange: function(mouseX) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\n\t\t}\n\t\treturn false;\n\t},\n\n\tinRange: function(chartX, chartY) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\tvar pointRelativePosition = helpers$1.getAngleFromPoint(vm, {x: chartX, y: chartY});\n\t\t\tvar angle = pointRelativePosition.angle;\n\t\t\tvar distance = pointRelativePosition.distance;\n\n\t\t\t// Sanitise angle range\n\t\t\tvar startAngle = vm.startAngle;\n\t\t\tvar endAngle = vm.endAngle;\n\t\t\twhile (endAngle < startAngle) {\n\t\t\t\tendAngle += TAU;\n\t\t\t}\n\t\t\twhile (angle > endAngle) {\n\t\t\t\tangle -= TAU;\n\t\t\t}\n\t\t\twhile (angle < startAngle) {\n\t\t\t\tangle += TAU;\n\t\t\t}\n\n\t\t\t// Check if within the range of the open/close angle\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\n\n\t\t\treturn (betweenAngles && withinRadius);\n\t\t}\n\t\treturn false;\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\n\t\treturn {\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\n\n\t\treturn {\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\n\t\t};\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0;\n\t\tvar arc = {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y,\n\t\t\tinnerRadius: vm.innerRadius,\n\t\t\touterRadius: Math.max(vm.outerRadius - pixelMargin, 0),\n\t\t\tpixelMargin: pixelMargin,\n\t\t\tstartAngle: vm.startAngle,\n\t\t\tendAngle: vm.endAngle,\n\t\t\tfullCircles: Math.floor(vm.circumference / TAU)\n\t\t};\n\t\tvar i;\n\n\t\tctx.save();\n\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.strokeStyle = vm.borderColor;\n\n\t\tif (arc.fullCircles) {\n\t\t\tarc.endAngle = arc.startAngle + TAU;\n\t\t\tctx.beginPath();\n\t\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\n\t\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n\t\t\tctx.closePath();\n\t\t\tfor (i = 0; i < arc.fullCircles; ++i) {\n\t\t\t\tctx.fill();\n\t\t\t}\n\t\t\tarc.endAngle = arc.startAngle + vm.circumference % TAU;\n\t\t}\n\n\t\tctx.beginPath();\n\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\n\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n\t\tctx.closePath();\n\t\tctx.fill();\n\n\t\tif (vm.borderWidth) {\n\t\t\tdrawBorder(ctx, vm, arc);\n\t\t}\n\n\t\tctx.restore();\n\t}\n});\n\nvar valueOrDefault$1 = helpers$1.valueOrDefault;\n\nvar defaultColor = core_defaults.global.defaultColor;\n\ncore_defaults._set('global', {\n\telements: {\n\t\tline: {\n\t\t\ttension: 0.4,\n\t\t\tbackgroundColor: defaultColor,\n\t\t\tborderWidth: 3,\n\t\t\tborderColor: defaultColor,\n\t\t\tborderCapStyle: 'butt',\n\t\t\tborderDash: [],\n\t\t\tborderDashOffset: 0.0,\n\t\t\tborderJoinStyle: 'miter',\n\t\t\tcapBezierPoints: true,\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\n\t\t}\n\t}\n});\n\nvar element_line = core_element.extend({\n\t_type: 'line',\n\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar vm = me._view;\n\t\tvar ctx = me._chart.ctx;\n\t\tvar spanGaps = vm.spanGaps;\n\t\tvar points = me._children.slice(); // clone array\n\t\tvar globalDefaults = core_defaults.global;\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\n\t\tvar lastDrawnIndex = -1;\n\t\tvar closePath = me._loop;\n\t\tvar index, previous, currentVM;\n\n\t\tif (!points.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (me._loop) {\n\t\t\tfor (index = 0; index < points.length; ++index) {\n\t\t\t\tprevious = helpers$1.previousItem(points, index);\n\t\t\t\t// If the line has an open path, shift the point array\n\t\t\t\tif (!points[index]._view.skip && previous._view.skip) {\n\t\t\t\t\tpoints = points.slice(index).concat(points.slice(0, index));\n\t\t\t\t\tclosePath = spanGaps;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If the line has a close path, add the first point again\n\t\t\tif (closePath) {\n\t\t\t\tpoints.push(points[0]);\n\t\t\t}\n\t\t}\n\n\t\tctx.save();\n\n\t\t// Stroke Line Options\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\n\n\t\t// IE 9 and 10 do not support line dash\n\t\tif (ctx.setLineDash) {\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\n\t\t}\n\n\t\tctx.lineDashOffset = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset);\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\n\t\tctx.lineWidth = valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth);\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\n\n\t\t// Stroke Line\n\t\tctx.beginPath();\n\n\t\t// First point moves to it's starting position no matter what\n\t\tcurrentVM = points[0]._view;\n\t\tif (!currentVM.skip) {\n\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\tlastDrawnIndex = 0;\n\t\t}\n\n\t\tfor (index = 1; index < points.length; ++index) {\n\t\t\tcurrentVM = points[index]._view;\n\t\t\tprevious = lastDrawnIndex === -1 ? helpers$1.previousItem(points, index) : points[lastDrawnIndex];\n\n\t\t\tif (!currentVM.skip) {\n\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\n\t\t\t\t\t// There was a gap and this is the first point after the gap\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t} else {\n\t\t\t\t\t// Line to next point\n\t\t\t\t\thelpers$1.canvas.lineTo(ctx, previous._view, currentVM);\n\t\t\t\t}\n\t\t\t\tlastDrawnIndex = index;\n\t\t\t}\n\t\t}\n\n\t\tif (closePath) {\n\t\t\tctx.closePath();\n\t\t}\n\n\t\tctx.stroke();\n\t\tctx.restore();\n\t}\n});\n\nvar valueOrDefault$2 = helpers$1.valueOrDefault;\n\nvar defaultColor$1 = core_defaults.global.defaultColor;\n\ncore_defaults._set('global', {\n\telements: {\n\t\tpoint: {\n\t\t\tradius: 3,\n\t\t\tpointStyle: 'circle',\n\t\t\tbackgroundColor: defaultColor$1,\n\t\t\tborderColor: defaultColor$1,\n\t\t\tborderWidth: 1,\n\t\t\t// Hover\n\t\t\thitRadius: 1,\n\t\t\thoverRadius: 4,\n\t\t\thoverBorderWidth: 1\n\t\t}\n\t}\n});\n\nfunction xRange(mouseX) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\n}\n\nfunction yRange(mouseY) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\n}\n\nvar element_point = core_element.extend({\n\t_type: 'point',\n\n\tinRange: function(mouseX, mouseY) {\n\t\tvar vm = this._view;\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\n\t},\n\n\tinLabelRange: xRange,\n\tinXRange: xRange,\n\tinYRange: yRange,\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y,\n\t\t\tpadding: vm.radius + vm.borderWidth\n\t\t};\n\t},\n\n\tdraw: function(chartArea) {\n\t\tvar vm = this._view;\n\t\tvar ctx = this._chart.ctx;\n\t\tvar pointStyle = vm.pointStyle;\n\t\tvar rotation = vm.rotation;\n\t\tvar radius = vm.radius;\n\t\tvar x = vm.x;\n\t\tvar y = vm.y;\n\t\tvar globalDefaults = core_defaults.global;\n\t\tvar defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow\n\n\t\tif (vm.skip) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clipping for Points.\n\t\tif (chartArea === undefined || helpers$1.canvas._isPointInArea(vm, chartArea)) {\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\n\t\t\tctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth);\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\n\t\t\thelpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\n\t\t}\n\t}\n});\n\nvar defaultColor$2 = core_defaults.global.defaultColor;\n\ncore_defaults._set('global', {\n\telements: {\n\t\trectangle: {\n\t\t\tbackgroundColor: defaultColor$2,\n\t\t\tborderColor: defaultColor$2,\n\t\t\tborderSkipped: 'bottom',\n\t\t\tborderWidth: 0\n\t\t}\n\t}\n});\n\nfunction isVertical(vm) {\n\treturn vm && vm.width !== undefined;\n}\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param bar {Chart.Element.Rectangle} the bar\n * @return {Bounds} bounds of the bar\n * @private\n */\nfunction getBarBounds(vm) {\n\tvar x1, x2, y1, y2, half;\n\n\tif (isVertical(vm)) {\n\t\thalf = vm.width / 2;\n\t\tx1 = vm.x - half;\n\t\tx2 = vm.x + half;\n\t\ty1 = Math.min(vm.y, vm.base);\n\t\ty2 = Math.max(vm.y, vm.base);\n\t} else {\n\t\thalf = vm.height / 2;\n\t\tx1 = Math.min(vm.x, vm.base);\n\t\tx2 = Math.max(vm.x, vm.base);\n\t\ty1 = vm.y - half;\n\t\ty2 = vm.y + half;\n\t}\n\n\treturn {\n\t\tleft: x1,\n\t\ttop: y1,\n\t\tright: x2,\n\t\tbottom: y2\n\t};\n}\n\nfunction swap(orig, v1, v2) {\n\treturn orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\n\nfunction parseBorderSkipped(vm) {\n\tvar edge = vm.borderSkipped;\n\tvar res = {};\n\n\tif (!edge) {\n\t\treturn res;\n\t}\n\n\tif (vm.horizontal) {\n\t\tif (vm.base > vm.x) {\n\t\t\tedge = swap(edge, 'left', 'right');\n\t\t}\n\t} else if (vm.base < vm.y) {\n\t\tedge = swap(edge, 'bottom', 'top');\n\t}\n\n\tres[edge] = true;\n\treturn res;\n}\n\nfunction parseBorderWidth(vm, maxW, maxH) {\n\tvar value = vm.borderWidth;\n\tvar skip = parseBorderSkipped(vm);\n\tvar t, r, b, l;\n\n\tif (helpers$1.isObject(value)) {\n\t\tt = +value.top || 0;\n\t\tr = +value.right || 0;\n\t\tb = +value.bottom || 0;\n\t\tl = +value.left || 0;\n\t} else {\n\t\tt = r = b = l = +value || 0;\n\t}\n\n\treturn {\n\t\tt: skip.top || (t < 0) ? 0 : t > maxH ? maxH : t,\n\t\tr: skip.right || (r < 0) ? 0 : r > maxW ? maxW : r,\n\t\tb: skip.bottom || (b < 0) ? 0 : b > maxH ? maxH : b,\n\t\tl: skip.left || (l < 0) ? 0 : l > maxW ? maxW : l\n\t};\n}\n\nfunction boundingRects(vm) {\n\tvar bounds = getBarBounds(vm);\n\tvar width = bounds.right - bounds.left;\n\tvar height = bounds.bottom - bounds.top;\n\tvar border = parseBorderWidth(vm, width / 2, height / 2);\n\n\treturn {\n\t\touter: {\n\t\t\tx: bounds.left,\n\t\t\ty: bounds.top,\n\t\t\tw: width,\n\t\t\th: height\n\t\t},\n\t\tinner: {\n\t\t\tx: bounds.left + border.l,\n\t\t\ty: bounds.top + border.t,\n\t\t\tw: width - border.l - border.r,\n\t\t\th: height - border.t - border.b\n\t\t}\n\t};\n}\n\nfunction inRange(vm, x, y) {\n\tvar skipX = x === null;\n\tvar skipY = y === null;\n\tvar bounds = !vm || (skipX && skipY) ? false : getBarBounds(vm);\n\n\treturn bounds\n\t\t&& (skipX || x >= bounds.left && x <= bounds.right)\n\t\t&& (skipY || y >= bounds.top && y <= bounds.bottom);\n}\n\nvar element_rectangle = core_element.extend({\n\t_type: 'rectangle',\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar rects = boundingRects(vm);\n\t\tvar outer = rects.outer;\n\t\tvar inner = rects.inner;\n\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.fillRect(outer.x, outer.y, outer.w, outer.h);\n\n\t\tif (outer.w === inner.w && outer.h === inner.h) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.save();\n\t\tctx.beginPath();\n\t\tctx.rect(outer.x, outer.y, outer.w, outer.h);\n\t\tctx.clip();\n\t\tctx.fillStyle = vm.borderColor;\n\t\tctx.rect(inner.x, inner.y, inner.w, inner.h);\n\t\tctx.fill('evenodd');\n\t\tctx.restore();\n\t},\n\n\theight: function() {\n\t\tvar vm = this._view;\n\t\treturn vm.base - vm.y;\n\t},\n\n\tinRange: function(mouseX, mouseY) {\n\t\treturn inRange(this._view, mouseX, mouseY);\n\t},\n\n\tinLabelRange: function(mouseX, mouseY) {\n\t\tvar vm = this._view;\n\t\treturn isVertical(vm)\n\t\t\t? inRange(vm, mouseX, null)\n\t\t\t: inRange(vm, null, mouseY);\n\t},\n\n\tinXRange: function(mouseX) {\n\t\treturn inRange(this._view, mouseX, null);\n\t},\n\n\tinYRange: function(mouseY) {\n\t\treturn inRange(this._view, null, mouseY);\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar x, y;\n\t\tif (isVertical(vm)) {\n\t\t\tx = vm.x;\n\t\t\ty = (vm.y + vm.base) / 2;\n\t\t} else {\n\t\t\tx = (vm.x + vm.base) / 2;\n\t\t\ty = vm.y;\n\t\t}\n\n\t\treturn {x: x, y: y};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\n\t\treturn isVertical(vm)\n\t\t\t? vm.width * Math.abs(vm.y - vm.base)\n\t\t\t: vm.height * Math.abs(vm.x - vm.base);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t}\n});\n\nvar elements = {};\nvar Arc = element_arc;\nvar Line = element_line;\nvar Point = element_point;\nvar Rectangle = element_rectangle;\nelements.Arc = Arc;\nelements.Line = Line;\nelements.Point = Point;\nelements.Rectangle = Rectangle;\n\nvar deprecated = helpers$1._deprecated;\nvar valueOrDefault$3 = helpers$1.valueOrDefault;\n\ncore_defaults._set('bar', {\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\t\t\toffset: true,\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\ttype: 'linear'\n\t\t}]\n\t}\n});\n\ncore_defaults._set('global', {\n\tdatasets: {\n\t\tbar: {\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9\n\t\t}\n\t}\n});\n\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(scale, pixels) {\n\tvar min = scale._length;\n\tvar prev, curr, i, ilen;\n\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\n\t\tmin = Math.min(min, Math.abs(pixels[i] - pixels[i - 1]));\n\t}\n\n\tfor (i = 0, ilen = scale.getTicks().length; i < ilen; ++i) {\n\t\tcurr = scale.getPixelForTick(i);\n\t\tmin = i > 0 ? Math.min(min, Math.abs(curr - prev)) : min;\n\t\tprev = curr;\n\t}\n\n\treturn min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options) {\n\tvar thickness = options.barThickness;\n\tvar count = ruler.stackCount;\n\tvar curr = ruler.pixels[index];\n\tvar min = helpers$1.isNullOrUndef(thickness)\n\t\t? computeMinSampleSize(ruler.scale, ruler.pixels)\n\t\t: -1;\n\tvar size, ratio;\n\n\tif (helpers$1.isNullOrUndef(thickness)) {\n\t\tsize = min * options.categoryPercentage;\n\t\tratio = options.barPercentage;\n\t} else {\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\n\t\tsize = thickness * count;\n\t\tratio = 1;\n\t}\n\n\treturn {\n\t\tchunk: size / count,\n\t\tratio: ratio,\n\t\tstart: curr - (size / 2)\n\t};\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options) {\n\tvar pixels = ruler.pixels;\n\tvar curr = pixels[index];\n\tvar prev = index > 0 ? pixels[index - 1] : null;\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\n\tvar percent = options.categoryPercentage;\n\tvar start, size;\n\n\tif (prev === null) {\n\t\t// first data: its size is double based on the next point or,\n\t\t// if it's also the last data, we use the scale size.\n\t\tprev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n\t}\n\n\tif (next === null) {\n\t\t// last data: its size is also double based on the previous point.\n\t\tnext = curr + curr - prev;\n\t}\n\n\tstart = curr - (curr - Math.min(prev, next)) / 2 * percent;\n\tsize = Math.abs(next - prev) / 2 * percent;\n\n\treturn {\n\t\tchunk: size / ruler.stackCount,\n\t\tratio: options.barPercentage,\n\t\tstart: start\n\t};\n}\n\nvar controller_bar = core_datasetController.extend({\n\n\tdataElementType: elements.Rectangle,\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderColor',\n\t\t'borderSkipped',\n\t\t'borderWidth',\n\t\t'barPercentage',\n\t\t'barThickness',\n\t\t'categoryPercentage',\n\t\t'maxBarThickness',\n\t\t'minBarLength'\n\t],\n\n\tinitialize: function() {\n\t\tvar me = this;\n\t\tvar meta, scaleOpts;\n\n\t\tcore_datasetController.prototype.initialize.apply(me, arguments);\n\n\t\tmeta = me.getMeta();\n\t\tmeta.stack = me.getDataset().stack;\n\t\tmeta.bar = true;\n\n\t\tscaleOpts = me._getIndexScale().options;\n\t\tdeprecated('bar chart', scaleOpts.barPercentage, 'scales.[x/y]Axes.barPercentage', 'dataset.barPercentage');\n\t\tdeprecated('bar chart', scaleOpts.barThickness, 'scales.[x/y]Axes.barThickness', 'dataset.barThickness');\n\t\tdeprecated('bar chart', scaleOpts.categoryPercentage, 'scales.[x/y]Axes.categoryPercentage', 'dataset.categoryPercentage');\n\t\tdeprecated('bar chart', me._getValueScale().options.minBarLength, 'scales.[x/y]Axes.minBarLength', 'dataset.minBarLength');\n\t\tdeprecated('bar chart', scaleOpts.maxBarThickness, 'scales.[x/y]Axes.maxBarThickness', 'dataset.maxBarThickness');\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar rects = me.getMeta().data;\n\t\tvar i, ilen;\n\n\t\tme._ruler = me.getRuler();\n\n\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\n\t\t\tme.updateElement(rects[i], i, reset);\n\t\t}\n\t},\n\n\tupdateElement: function(rectangle, index, reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar dataset = me.getDataset();\n\t\tvar options = me._resolveDataElementOptions(rectangle, index);\n\n\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\n\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\n\t\trectangle._datasetIndex = me.index;\n\t\trectangle._index = index;\n\t\trectangle._model = {\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderSkipped: options.borderSkipped,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\tdatasetLabel: dataset.label,\n\t\t\tlabel: me.chart.data.labels[index]\n\t\t};\n\n\t\tif (helpers$1.isArray(dataset.data[index])) {\n\t\t\trectangle._model.borderSkipped = null;\n\t\t}\n\n\t\tme._updateElementGeometry(rectangle, index, reset, options);\n\n\t\trectangle.pivot();\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_updateElementGeometry: function(rectangle, index, reset, options) {\n\t\tvar me = this;\n\t\tvar model = rectangle._model;\n\t\tvar vscale = me._getValueScale();\n\t\tvar base = vscale.getBasePixel();\n\t\tvar horizontal = vscale.isHorizontal();\n\t\tvar ruler = me._ruler || me.getRuler();\n\t\tvar vpixels = me.calculateBarValuePixels(me.index, index, options);\n\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler, options);\n\n\t\tmodel.horizontal = horizontal;\n\t\tmodel.base = reset ? base : vpixels.base;\n\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\n\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\n\t\tmodel.height = horizontal ? ipixels.size : undefined;\n\t\tmodel.width = horizontal ? undefined : ipixels.size;\n\t},\n\n\t/**\n\t * Returns the stacks based on groups and bar visibility.\n\t * @param {number} [last] - The dataset index\n\t * @returns {string[]} The list of stack IDs\n\t * @private\n\t */\n\t_getStacks: function(last) {\n\t\tvar me = this;\n\t\tvar scale = me._getIndexScale();\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\n\t\tvar stacked = scale.options.stacked;\n\t\tvar ilen = metasets.length;\n\t\tvar stacks = [];\n\t\tvar i, meta;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tmeta = metasets[i];\n\t\t\t// stacked | meta.stack\n\t\t\t// | found | not found | undefined\n\t\t\t// false | x | x | x\n\t\t\t// true | | x |\n\t\t\t// undefined | | x | x\n\t\t\tif (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n\t\t\t\tstacks.push(meta.stack);\n\t\t\t}\n\t\t\tif (meta.index === last) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn stacks;\n\t},\n\n\t/**\n\t * Returns the effective number of stacks based on groups and bar visibility.\n\t * @private\n\t */\n\tgetStackCount: function() {\n\t\treturn this._getStacks().length;\n\t},\n\n\t/**\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t * @param {number} [datasetIndex] - The dataset index\n\t * @param {string} [name] - The stack name to find\n\t * @returns {number} The stack index\n\t * @private\n\t */\n\tgetStackIndex: function(datasetIndex, name) {\n\t\tvar stacks = this._getStacks(datasetIndex);\n\t\tvar index = (name !== undefined)\n\t\t\t? stacks.indexOf(name)\n\t\t\t: -1; // indexOf returns -1 if element is not present\n\n\t\treturn (index === -1)\n\t\t\t? stacks.length - 1\n\t\t\t: index;\n\t},\n\n\t/**\n\t * @private\n\t */\n\tgetRuler: function() {\n\t\tvar me = this;\n\t\tvar scale = me._getIndexScale();\n\t\tvar pixels = [];\n\t\tvar i, ilen;\n\n\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\n\t\t\tpixels.push(scale.getPixelForValue(null, i, me.index));\n\t\t}\n\n\t\treturn {\n\t\t\tpixels: pixels,\n\t\t\tstart: scale._startPixel,\n\t\t\tend: scale._endPixel,\n\t\t\tstackCount: me.getStackCount(),\n\t\t\tscale: scale\n\t\t};\n\t},\n\n\t/**\n\t * Note: pixel values are not clamped to the scale area.\n\t * @private\n\t */\n\tcalculateBarValuePixels: function(datasetIndex, index, options) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar scale = me._getValueScale();\n\t\tvar isHorizontal = scale.isHorizontal();\n\t\tvar datasets = chart.data.datasets;\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\n\t\tvar value = scale._parseValue(datasets[datasetIndex].data[index]);\n\t\tvar minBarLength = options.minBarLength;\n\t\tvar stacked = scale.options.stacked;\n\t\tvar stack = me.getMeta().stack;\n\t\tvar start = value.start === undefined ? 0 : value.max >= 0 && value.min >= 0 ? value.min : value.max;\n\t\tvar length = value.start === undefined ? value.end : value.max >= 0 && value.min >= 0 ? value.max - value.min : value.min - value.max;\n\t\tvar ilen = metasets.length;\n\t\tvar i, imeta, ivalue, base, head, size, stackLength;\n\n\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\n\t\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\t\timeta = metasets[i];\n\n\t\t\t\tif (imeta.index === datasetIndex) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (imeta.stack === stack) {\n\t\t\t\t\tstackLength = scale._parseValue(datasets[imeta.index].data[index]);\n\t\t\t\t\tivalue = stackLength.start === undefined ? stackLength.end : stackLength.min >= 0 && stackLength.max >= 0 ? stackLength.max : stackLength.min;\n\n\t\t\t\t\tif ((value.min < 0 && ivalue < 0) || (value.max >= 0 && ivalue > 0)) {\n\t\t\t\t\t\tstart += ivalue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tbase = scale.getPixelForValue(start);\n\t\thead = scale.getPixelForValue(start + length);\n\t\tsize = head - base;\n\n\t\tif (minBarLength !== undefined && Math.abs(size) < minBarLength) {\n\t\t\tsize = minBarLength;\n\t\t\tif (length >= 0 && !isHorizontal || length < 0 && isHorizontal) {\n\t\t\t\thead = base - minBarLength;\n\t\t\t} else {\n\t\t\t\thead = base + minBarLength;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tsize: size,\n\t\t\tbase: base,\n\t\t\thead: head,\n\t\t\tcenter: head + size / 2\n\t\t};\n\t},\n\n\t/**\n\t * @private\n\t */\n\tcalculateBarIndexPixels: function(datasetIndex, index, ruler, options) {\n\t\tvar me = this;\n\t\tvar range = options.barThickness === 'flex'\n\t\t\t? computeFlexCategoryTraits(index, ruler, options)\n\t\t\t: computeFitCategoryTraits(index, ruler, options);\n\n\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\n\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n\t\tvar size = Math.min(\n\t\t\tvalueOrDefault$3(options.maxBarThickness, Infinity),\n\t\t\trange.chunk * range.ratio);\n\n\t\treturn {\n\t\t\tbase: center - size / 2,\n\t\t\thead: center + size / 2,\n\t\t\tcenter: center,\n\t\t\tsize: size\n\t\t};\n\t},\n\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar scale = me._getValueScale();\n\t\tvar rects = me.getMeta().data;\n\t\tvar dataset = me.getDataset();\n\t\tvar ilen = rects.length;\n\t\tvar i = 0;\n\n\t\thelpers$1.canvas.clipArea(chart.ctx, chart.chartArea);\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\tvar val = scale._parseValue(dataset.data[i]);\n\t\t\tif (!isNaN(val.min) && !isNaN(val.max)) {\n\t\t\t\trects[i].draw();\n\t\t\t}\n\t\t}\n\n\t\thelpers$1.canvas.unclipArea(chart.ctx);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDataElementOptions: function() {\n\t\tvar me = this;\n\t\tvar values = helpers$1.extend({}, core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments));\n\t\tvar indexOpts = me._getIndexScale().options;\n\t\tvar valueOpts = me._getValueScale().options;\n\n\t\tvalues.barPercentage = valueOrDefault$3(indexOpts.barPercentage, values.barPercentage);\n\t\tvalues.barThickness = valueOrDefault$3(indexOpts.barThickness, values.barThickness);\n\t\tvalues.categoryPercentage = valueOrDefault$3(indexOpts.categoryPercentage, values.categoryPercentage);\n\t\tvalues.maxBarThickness = valueOrDefault$3(indexOpts.maxBarThickness, values.maxBarThickness);\n\t\tvalues.minBarLength = valueOrDefault$3(valueOpts.minBarLength, values.minBarLength);\n\n\t\treturn values;\n\t}\n\n});\n\nvar valueOrDefault$4 = helpers$1.valueOrDefault;\nvar resolve$1 = helpers$1.options.resolve;\n\ncore_defaults._set('bubble', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\n\t\t\tposition: 'bottom',\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\nvar controller_bubble = core_datasetController.extend({\n\t/**\n\t * @protected\n\t */\n\tdataElementType: elements.Point,\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderColor',\n\t\t'borderWidth',\n\t\t'hoverBackgroundColor',\n\t\t'hoverBorderColor',\n\t\t'hoverBorderWidth',\n\t\t'hoverRadius',\n\t\t'hitRadius',\n\t\t'pointStyle',\n\t\t'rotation'\n\t],\n\n\t/**\n\t * @protected\n\t */\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar points = meta.data;\n\n\t\t// Update Points\n\t\thelpers$1.each(points, function(point, index) {\n\t\t\tme.updateElement(point, index, reset);\n\t\t});\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tupdateElement: function(point, index, reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar custom = point.custom || {};\n\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\tvar options = me._resolveDataElementOptions(point, index);\n\t\tvar data = me.getDataset().data[index];\n\t\tvar dsIndex = me.index;\n\n\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\n\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\n\n\t\tpoint._xScale = xScale;\n\t\tpoint._yScale = yScale;\n\t\tpoint._options = options;\n\t\tpoint._datasetIndex = dsIndex;\n\t\tpoint._index = index;\n\t\tpoint._model = {\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\thitRadius: options.hitRadius,\n\t\t\tpointStyle: options.pointStyle,\n\t\t\trotation: options.rotation,\n\t\t\tradius: reset ? 0 : options.radius,\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\tx: x,\n\t\t\ty: y,\n\t\t};\n\n\t\tpoint.pivot();\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(point) {\n\t\tvar model = point._model;\n\t\tvar options = point._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tpoint.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t\tradius: model.radius\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth);\n\t\tmodel.radius = options.radius + options.hoverRadius;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDataElementOptions: function(point, index) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar dataset = me.getDataset();\n\t\tvar custom = point.custom || {};\n\t\tvar data = dataset.data[index] || {};\n\t\tvar values = core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments);\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: dataset,\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\t// In case values were cached (and thus frozen), we need to clone the values\n\t\tif (me._cachedDataOpts === values) {\n\t\t\tvalues = helpers$1.extend({}, values);\n\t\t}\n\n\t\t// Custom radius resolution\n\t\tvalues.radius = resolve$1([\n\t\t\tcustom.radius,\n\t\t\tdata.r,\n\t\t\tme._config.radius,\n\t\t\tchart.options.elements.point.radius\n\t\t], context, index);\n\n\t\treturn values;\n\t}\n});\n\nvar valueOrDefault$5 = helpers$1.valueOrDefault;\n\nvar PI$1 = Math.PI;\nvar DOUBLE_PI$1 = PI$1 * 2;\nvar HALF_PI$1 = PI$1 / 2;\n\ncore_defaults._set('doughnut', {\n\tanimation: {\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\n\t\tanimateRotate: true,\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\n\t\tanimateScale: false\n\t},\n\thover: {\n\t\tmode: 'single'\n\t},\n\tlegendCallback: function(chart) {\n\t\tvar list = document.createElement('ul');\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\t\tvar i, ilen, listItem, listItemSpan;\n\n\t\tlist.setAttribute('class', chart.id + '-legend');\n\t\tif (datasets.length) {\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn list.outerHTML;\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar style = meta.controller.getStyle(i);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: style.backgroundColor,\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t// toggle visibility of index if exists\n\t\t\t\tif (meta.data[index]) {\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// The percentage of the chart that we cut out of the middle.\n\tcutoutPercentage: 50,\n\n\t// The rotation of the chart, where the first data arc begins.\n\trotation: -HALF_PI$1,\n\n\t// The total circumference of the chart.\n\tcircumference: DOUBLE_PI$1,\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n\n\t\t\t\tif (helpers$1.isArray(dataLabel)) {\n\t\t\t\t\t// show value on first line of multiline label\n\t\t\t\t\t// need to clone because we are changing the value\n\t\t\t\t\tdataLabel = dataLabel.slice();\n\t\t\t\t\tdataLabel[0] += value;\n\t\t\t\t} else {\n\t\t\t\t\tdataLabel += value;\n\t\t\t\t}\n\n\t\t\t\treturn dataLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\nvar controller_doughnut = core_datasetController.extend({\n\n\tdataElementType: elements.Arc,\n\n\tlinkScales: helpers$1.noop,\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderColor',\n\t\t'borderWidth',\n\t\t'borderAlign',\n\t\t'hoverBackgroundColor',\n\t\t'hoverBorderColor',\n\t\t'hoverBorderWidth',\n\t],\n\n\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\n\tgetRingIndex: function(datasetIndex) {\n\t\tvar ringIndex = 0;\n\n\t\tfor (var j = 0; j < datasetIndex; ++j) {\n\t\t\tif (this.chart.isDatasetVisible(j)) {\n\t\t\t\t++ringIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn ringIndex;\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar chartArea = chart.chartArea;\n\t\tvar opts = chart.options;\n\t\tvar ratioX = 1;\n\t\tvar ratioY = 1;\n\t\tvar offsetX = 0;\n\t\tvar offsetY = 0;\n\t\tvar meta = me.getMeta();\n\t\tvar arcs = meta.data;\n\t\tvar cutout = opts.cutoutPercentage / 100 || 0;\n\t\tvar circumference = opts.circumference;\n\t\tvar chartWeight = me._getRingWeight(me.index);\n\t\tvar maxWidth, maxHeight, i, ilen;\n\n\t\t// If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\n\t\tif (circumference < DOUBLE_PI$1) {\n\t\t\tvar startAngle = opts.rotation % DOUBLE_PI$1;\n\t\t\tstartAngle += startAngle >= PI$1 ? -DOUBLE_PI$1 : startAngle < -PI$1 ? DOUBLE_PI$1 : 0;\n\t\t\tvar endAngle = startAngle + circumference;\n\t\t\tvar startX = Math.cos(startAngle);\n\t\t\tvar startY = Math.sin(startAngle);\n\t\t\tvar endX = Math.cos(endAngle);\n\t\t\tvar endY = Math.sin(endAngle);\n\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || endAngle >= DOUBLE_PI$1;\n\t\t\tvar contains90 = (startAngle <= HALF_PI$1 && endAngle >= HALF_PI$1) || endAngle >= DOUBLE_PI$1 + HALF_PI$1;\n\t\t\tvar contains180 = startAngle === -PI$1 || endAngle >= PI$1;\n\t\t\tvar contains270 = (startAngle <= -HALF_PI$1 && endAngle >= -HALF_PI$1) || endAngle >= PI$1 + HALF_PI$1;\n\t\t\tvar minX = contains180 ? -1 : Math.min(startX, startX * cutout, endX, endX * cutout);\n\t\t\tvar minY = contains270 ? -1 : Math.min(startY, startY * cutout, endY, endY * cutout);\n\t\t\tvar maxX = contains0 ? 1 : Math.max(startX, startX * cutout, endX, endX * cutout);\n\t\t\tvar maxY = contains90 ? 1 : Math.max(startY, startY * cutout, endY, endY * cutout);\n\t\t\tratioX = (maxX - minX) / 2;\n\t\t\tratioY = (maxY - minY) / 2;\n\t\t\toffsetX = -(maxX + minX) / 2;\n\t\t\toffsetY = -(maxY + minY) / 2;\n\t\t}\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\n\t\t}\n\n\t\tchart.borderWidth = me.getMaxBorderWidth();\n\t\tmaxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / ratioX;\n\t\tmaxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / ratioY;\n\t\tchart.outerRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n\t\tchart.innerRadius = Math.max(chart.outerRadius * cutout, 0);\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1);\n\t\tchart.offsetX = offsetX * chart.outerRadius;\n\t\tchart.offsetY = offsetY * chart.outerRadius;\n\n\t\tmeta.total = me.calculateTotal();\n\n\t\tme.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index);\n\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0);\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tme.updateElement(arcs[i], i, reset);\n\t\t}\n\t},\n\n\tupdateElement: function(arc, index, reset) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar chartArea = chart.chartArea;\n\t\tvar opts = chart.options;\n\t\tvar animationOpts = opts.animation;\n\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\n\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\n\t\tvar startAngle = opts.rotation; // non reset case handled later\n\t\tvar endAngle = opts.rotation; // non reset case handled later\n\t\tvar dataset = me.getDataset();\n\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / DOUBLE_PI$1);\n\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\n\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\n\t\tvar options = arc._options || {};\n\n\t\thelpers$1.extend(arc, {\n\t\t\t// Utility\n\t\t\t_datasetIndex: me.index,\n\t\t\t_index: index,\n\n\t\t\t// Desired view properties\n\t\t\t_model: {\n\t\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\t\tborderColor: options.borderColor,\n\t\t\t\tborderWidth: options.borderWidth,\n\t\t\t\tborderAlign: options.borderAlign,\n\t\t\t\tx: centerX + chart.offsetX,\n\t\t\t\ty: centerY + chart.offsetY,\n\t\t\t\tstartAngle: startAngle,\n\t\t\t\tendAngle: endAngle,\n\t\t\t\tcircumference: circumference,\n\t\t\t\touterRadius: outerRadius,\n\t\t\t\tinnerRadius: innerRadius,\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\n\t\t\t}\n\t\t});\n\n\t\tvar model = arc._model;\n\n\t\t// Set correct angles if not resetting\n\t\tif (!reset || !animationOpts.animateRotate) {\n\t\t\tif (index === 0) {\n\t\t\t\tmodel.startAngle = opts.rotation;\n\t\t\t} else {\n\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\n\t\t\t}\n\n\t\t\tmodel.endAngle = model.startAngle + model.circumference;\n\t\t}\n\n\t\tarc.pivot();\n\t},\n\n\tcalculateTotal: function() {\n\t\tvar dataset = this.getDataset();\n\t\tvar meta = this.getMeta();\n\t\tvar total = 0;\n\t\tvar value;\n\n\t\thelpers$1.each(meta.data, function(element, index) {\n\t\t\tvalue = dataset.data[index];\n\t\t\tif (!isNaN(value) && !element.hidden) {\n\t\t\t\ttotal += Math.abs(value);\n\t\t\t}\n\t\t});\n\n\t\t/* if (total === 0) {\n\t\t\ttotal = NaN;\n\t\t}*/\n\n\t\treturn total;\n\t},\n\n\tcalculateCircumference: function(value) {\n\t\tvar total = this.getMeta().total;\n\t\tif (total > 0 && !isNaN(value)) {\n\t\t\treturn DOUBLE_PI$1 * (Math.abs(value) / total);\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// gets the max border or hover width to properly scale pie charts\n\tgetMaxBorderWidth: function(arcs) {\n\t\tvar me = this;\n\t\tvar max = 0;\n\t\tvar chart = me.chart;\n\t\tvar i, ilen, meta, arc, controller, options, borderWidth, hoverWidth;\n\n\t\tif (!arcs) {\n\t\t\t// Find the outmost visible dataset\n\t\t\tfor (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tif (chart.isDatasetVisible(i)) {\n\t\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t\tarcs = meta.data;\n\t\t\t\t\tif (i !== me.index) {\n\t\t\t\t\t\tcontroller = meta.controller;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!arcs) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tarc = arcs[i];\n\t\t\tif (controller) {\n\t\t\t\tcontroller._configure();\n\t\t\t\toptions = controller._resolveDataElementOptions(arc, i);\n\t\t\t} else {\n\t\t\t\toptions = arc._options;\n\t\t\t}\n\t\t\tif (options.borderAlign !== 'inner') {\n\t\t\t\tborderWidth = options.borderWidth;\n\t\t\t\thoverWidth = options.hoverBorderWidth;\n\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\n\t\t\t}\n\t\t}\n\t\treturn max;\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(arc) {\n\t\tvar model = arc._model;\n\t\tvar options = arc._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tarc.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth);\n\t},\n\n\t/**\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\n\t * @private\n\t */\n\t_getRingWeightOffset: function(datasetIndex) {\n\t\tvar ringWeightOffset = 0;\n\n\t\tfor (var i = 0; i < datasetIndex; ++i) {\n\t\t\tif (this.chart.isDatasetVisible(i)) {\n\t\t\t\tringWeightOffset += this._getRingWeight(i);\n\t\t\t}\n\t\t}\n\n\t\treturn ringWeightOffset;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getRingWeight: function(dataSetIndex) {\n\t\treturn Math.max(valueOrDefault$5(this.chart.data.datasets[dataSetIndex].weight, 1), 0);\n\t},\n\n\t/**\n\t * Returns the sum of all visibile data set weights. This value can be 0.\n\t * @private\n\t */\n\t_getVisibleDatasetWeightTotal: function() {\n\t\treturn this._getRingWeightOffset(this.chart.data.datasets.length);\n\t}\n});\n\ncore_defaults._set('horizontalBar', {\n\thover: {\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'bottom'\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\ttype: 'category',\n\t\t\tposition: 'left',\n\t\t\toffset: true,\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}]\n\t},\n\n\telements: {\n\t\trectangle: {\n\t\t\tborderSkipped: 'left'\n\t\t}\n\t},\n\n\ttooltips: {\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t}\n});\n\ncore_defaults._set('global', {\n\tdatasets: {\n\t\thorizontalBar: {\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9\n\t\t}\n\t}\n});\n\nvar controller_horizontalBar = controller_bar.extend({\n\t/**\n\t * @private\n\t */\n\t_getValueScaleId: function() {\n\t\treturn this.getMeta().xAxisID;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScaleId: function() {\n\t\treturn this.getMeta().yAxisID;\n\t}\n});\n\nvar valueOrDefault$6 = helpers$1.valueOrDefault;\nvar resolve$2 = helpers$1.options.resolve;\nvar isPointInArea = helpers$1.canvas._isPointInArea;\n\ncore_defaults._set('line', {\n\tshowLines: true,\n\tspanGaps: false,\n\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\t\t\tid: 'x-axis-0'\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t}\n});\n\nfunction scaleClip(scale, halfBorderWidth) {\n\tvar tickOpts = scale && scale.options.ticks || {};\n\tvar reverse = tickOpts.reverse;\n\tvar min = tickOpts.min === undefined ? halfBorderWidth : 0;\n\tvar max = tickOpts.max === undefined ? halfBorderWidth : 0;\n\treturn {\n\t\tstart: reverse ? max : min,\n\t\tend: reverse ? min : max\n\t};\n}\n\nfunction defaultClip(xScale, yScale, borderWidth) {\n\tvar halfBorderWidth = borderWidth / 2;\n\tvar x = scaleClip(xScale, halfBorderWidth);\n\tvar y = scaleClip(yScale, halfBorderWidth);\n\n\treturn {\n\t\ttop: y.end,\n\t\tright: x.end,\n\t\tbottom: y.start,\n\t\tleft: x.start\n\t};\n}\n\nfunction toClip(value) {\n\tvar t, r, b, l;\n\n\tif (helpers$1.isObject(value)) {\n\t\tt = value.top;\n\t\tr = value.right;\n\t\tb = value.bottom;\n\t\tl = value.left;\n\t} else {\n\t\tt = r = b = l = value;\n\t}\n\n\treturn {\n\t\ttop: t,\n\t\tright: r,\n\t\tbottom: b,\n\t\tleft: l\n\t};\n}\n\n\nvar controller_line = core_datasetController.extend({\n\n\tdatasetElementType: elements.Line,\n\n\tdataElementType: elements.Point,\n\n\t/**\n\t * @private\n\t */\n\t_datasetElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderCapStyle',\n\t\t'borderColor',\n\t\t'borderDash',\n\t\t'borderDashOffset',\n\t\t'borderJoinStyle',\n\t\t'borderWidth',\n\t\t'cubicInterpolationMode',\n\t\t'fill'\n\t],\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: {\n\t\tbackgroundColor: 'pointBackgroundColor',\n\t\tborderColor: 'pointBorderColor',\n\t\tborderWidth: 'pointBorderWidth',\n\t\thitRadius: 'pointHitRadius',\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\n\t\thoverBorderColor: 'pointHoverBorderColor',\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\n\t\thoverRadius: 'pointHoverRadius',\n\t\tpointStyle: 'pointStyle',\n\t\tradius: 'pointRadius',\n\t\trotation: 'pointRotation'\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar line = meta.dataset;\n\t\tvar points = meta.data || [];\n\t\tvar options = me.chart.options;\n\t\tvar config = me._config;\n\t\tvar showLine = me._showLine = valueOrDefault$6(config.showLine, options.showLines);\n\t\tvar i, ilen;\n\n\t\tme._xScale = me.getScaleForId(meta.xAxisID);\n\t\tme._yScale = me.getScaleForId(meta.yAxisID);\n\n\t\t// Update Line\n\t\tif (showLine) {\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif (config.tension !== undefined && config.lineTension === undefined) {\n\t\t\t\tconfig.lineTension = config.tension;\n\t\t\t}\n\n\t\t\t// Utility\n\t\t\tline._scale = me._yScale;\n\t\t\tline._datasetIndex = me.index;\n\t\t\t// Data\n\t\t\tline._children = points;\n\t\t\t// Model\n\t\t\tline._model = me._resolveDatasetElementOptions(line);\n\n\t\t\tline.pivot();\n\t\t}\n\n\t\t// Update Points\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tme.updateElement(points[i], i, reset);\n\t\t}\n\n\t\tif (showLine && line._model.tension !== 0) {\n\t\t\tme.updateBezierControlPoints();\n\t\t}\n\n\t\t// Now pivot the point for animation\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tpoints[i].pivot();\n\t\t}\n\t},\n\n\tupdateElement: function(point, index, reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar custom = point.custom || {};\n\t\tvar dataset = me.getDataset();\n\t\tvar datasetIndex = me.index;\n\t\tvar value = dataset.data[index];\n\t\tvar xScale = me._xScale;\n\t\tvar yScale = me._yScale;\n\t\tvar lineModel = meta.dataset._model;\n\t\tvar x, y;\n\n\t\tvar options = me._resolveDataElementOptions(point, index);\n\n\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\n\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\n\n\t\t// Utility\n\t\tpoint._xScale = xScale;\n\t\tpoint._yScale = yScale;\n\t\tpoint._options = options;\n\t\tpoint._datasetIndex = datasetIndex;\n\t\tpoint._index = index;\n\n\t\t// Desired view properties\n\t\tpoint._model = {\n\t\t\tx: x,\n\t\t\ty: y,\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t// Appearance\n\t\t\tradius: options.radius,\n\t\t\tpointStyle: options.pointStyle,\n\t\t\trotation: options.rotation,\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\ttension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0),\n\t\t\tsteppedLine: lineModel ? lineModel.steppedLine : false,\n\t\t\t// Tooltip\n\t\t\thitRadius: options.hitRadius\n\t\t};\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDatasetElementOptions: function(element) {\n\t\tvar me = this;\n\t\tvar config = me._config;\n\t\tvar custom = element.custom || {};\n\t\tvar options = me.chart.options;\n\t\tvar lineOptions = options.elements.line;\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\n\n\t\t// The default behavior of lines is to break at null values, according\n\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\n\t\t// This option gives lines the ability to span gaps\n\t\tvalues.spanGaps = valueOrDefault$6(config.spanGaps, options.spanGaps);\n\t\tvalues.tension = valueOrDefault$6(config.lineTension, lineOptions.tension);\n\t\tvalues.steppedLine = resolve$2([custom.steppedLine, config.steppedLine, lineOptions.stepped]);\n\t\tvalues.clip = toClip(valueOrDefault$6(config.clip, defaultClip(me._xScale, me._yScale, values.borderWidth)));\n\n\t\treturn values;\n\t},\n\n\tcalculatePointY: function(value, index, datasetIndex) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar yScale = me._yScale;\n\t\tvar sumPos = 0;\n\t\tvar sumNeg = 0;\n\t\tvar i, ds, dsMeta, stackedRightValue, rightValue, metasets, ilen;\n\n\t\tif (yScale.options.stacked) {\n\t\t\trightValue = +yScale.getRightValue(value);\n\t\t\tmetasets = chart._getSortedVisibleDatasetMetas();\n\t\t\tilen = metasets.length;\n\n\t\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\t\tdsMeta = metasets[i];\n\t\t\t\tif (dsMeta.index === datasetIndex) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tds = chart.data.datasets[dsMeta.index];\n\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id) {\n\t\t\t\t\tstackedRightValue = +yScale.getRightValue(ds.data[index]);\n\t\t\t\t\tif (stackedRightValue < 0) {\n\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsumPos += stackedRightValue || 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (rightValue < 0) {\n\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\n\t\t\t}\n\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\n\t\t}\n\t\treturn yScale.getPixelForValue(value);\n\t},\n\n\tupdateBezierControlPoints: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar meta = me.getMeta();\n\t\tvar lineModel = meta.dataset._model;\n\t\tvar area = chart.chartArea;\n\t\tvar points = meta.data || [];\n\t\tvar i, ilen, model, controlPoints;\n\n\t\t// Only consider points that are drawn in case the spanGaps option is used\n\t\tif (lineModel.spanGaps) {\n\t\t\tpoints = points.filter(function(pt) {\n\t\t\t\treturn !pt._model.skip;\n\t\t\t});\n\t\t}\n\n\t\tfunction capControlPoint(pt, min, max) {\n\t\t\treturn Math.max(Math.min(pt, max), min);\n\t\t}\n\n\t\tif (lineModel.cubicInterpolationMode === 'monotone') {\n\t\t\thelpers$1.splineCurveMonotone(points);\n\t\t} else {\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tmodel = points[i]._model;\n\t\t\t\tcontrolPoints = helpers$1.splineCurve(\n\t\t\t\t\thelpers$1.previousItem(points, i)._model,\n\t\t\t\t\tmodel,\n\t\t\t\t\thelpers$1.nextItem(points, i)._model,\n\t\t\t\t\tlineModel.tension\n\t\t\t\t);\n\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\n\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\n\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\n\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\n\t\t\t}\n\t\t}\n\n\t\tif (chart.options.elements.line.capBezierPoints) {\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tmodel = points[i]._model;\n\t\t\t\tif (isPointInArea(model, area)) {\n\t\t\t\t\tif (i > 0 && isPointInArea(points[i - 1]._model, area)) {\n\t\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\n\t\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\n\t\t\t\t\t}\n\t\t\t\t\tif (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) {\n\t\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\n\t\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar meta = me.getMeta();\n\t\tvar points = meta.data || [];\n\t\tvar area = chart.chartArea;\n\t\tvar canvas = chart.canvas;\n\t\tvar i = 0;\n\t\tvar ilen = points.length;\n\t\tvar clip;\n\n\t\tif (me._showLine) {\n\t\t\tclip = meta.dataset._model.clip;\n\n\t\t\thelpers$1.canvas.clipArea(chart.ctx, {\n\t\t\t\tleft: clip.left === false ? 0 : area.left - clip.left,\n\t\t\t\tright: clip.right === false ? canvas.width : area.right + clip.right,\n\t\t\t\ttop: clip.top === false ? 0 : area.top - clip.top,\n\t\t\t\tbottom: clip.bottom === false ? canvas.height : area.bottom + clip.bottom\n\t\t\t});\n\n\t\t\tmeta.dataset.draw();\n\n\t\t\thelpers$1.canvas.unclipArea(chart.ctx);\n\t\t}\n\n\t\t// Draw the points\n\t\tfor (; i < ilen; ++i) {\n\t\t\tpoints[i].draw(area);\n\t\t}\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(point) {\n\t\tvar model = point._model;\n\t\tvar options = point._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tpoint.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t\tradius: model.radius\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth);\n\t\tmodel.radius = valueOrDefault$6(options.hoverRadius, options.radius);\n\t},\n});\n\nvar resolve$3 = helpers$1.options.resolve;\n\ncore_defaults._set('polarArea', {\n\tscale: {\n\t\ttype: 'radialLinear',\n\t\tangleLines: {\n\t\t\tdisplay: false\n\t\t},\n\t\tgridLines: {\n\t\t\tcircular: true\n\t\t},\n\t\tpointLabels: {\n\t\t\tdisplay: false\n\t\t},\n\t\tticks: {\n\t\t\tbeginAtZero: true\n\t\t}\n\t},\n\n\t// Boolean - Whether to animate the rotation of the chart\n\tanimation: {\n\t\tanimateRotate: true,\n\t\tanimateScale: true\n\t},\n\n\tstartAngle: -0.5 * Math.PI,\n\tlegendCallback: function(chart) {\n\t\tvar list = document.createElement('ul');\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\t\tvar i, ilen, listItem, listItemSpan;\n\n\t\tlist.setAttribute('class', chart.id + '-legend');\n\t\tif (datasets.length) {\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn list.outerHTML;\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar style = meta.controller.getStyle(i);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: style.backgroundColor,\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\nvar controller_polarArea = core_datasetController.extend({\n\n\tdataElementType: elements.Arc,\n\n\tlinkScales: helpers$1.noop,\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderColor',\n\t\t'borderWidth',\n\t\t'borderAlign',\n\t\t'hoverBackgroundColor',\n\t\t'hoverBorderColor',\n\t\t'hoverBorderWidth',\n\t],\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScaleId: function() {\n\t\treturn this.chart.scale.id;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getValueScaleId: function() {\n\t\treturn this.chart.scale.id;\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar dataset = me.getDataset();\n\t\tvar meta = me.getMeta();\n\t\tvar start = me.chart.options.startAngle || 0;\n\t\tvar starts = me._starts = [];\n\t\tvar angles = me._angles = [];\n\t\tvar arcs = meta.data;\n\t\tvar i, ilen, angle;\n\n\t\tme._updateRadius();\n\n\t\tmeta.count = me.countVisibleElements();\n\n\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\n\t\t\tstarts[i] = start;\n\t\t\tangle = me._computeAngle(i);\n\t\t\tangles[i] = angle;\n\t\t\tstart += angle;\n\t\t}\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\n\t\t\tme.updateElement(arcs[i], i, reset);\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_updateRadius: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar chartArea = chart.chartArea;\n\t\tvar opts = chart.options;\n\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n\t\tchart.outerRadius = Math.max(minSize / 2, 0);\n\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\n\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\n\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\n\t},\n\n\tupdateElement: function(arc, index, reset) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar dataset = me.getDataset();\n\t\tvar opts = chart.options;\n\t\tvar animationOpts = opts.animation;\n\t\tvar scale = chart.scale;\n\t\tvar labels = chart.data.labels;\n\n\t\tvar centerX = scale.xCenter;\n\t\tvar centerY = scale.yCenter;\n\n\t\t// var negHalfPI = -0.5 * Math.PI;\n\t\tvar datasetStartAngle = opts.startAngle;\n\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\tvar startAngle = me._starts[index];\n\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\n\n\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\tvar options = arc._options || {};\n\n\t\thelpers$1.extend(arc, {\n\t\t\t// Utility\n\t\t\t_datasetIndex: me.index,\n\t\t\t_index: index,\n\t\t\t_scale: scale,\n\n\t\t\t// Desired view properties\n\t\t\t_model: {\n\t\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\t\tborderColor: options.borderColor,\n\t\t\t\tborderWidth: options.borderWidth,\n\t\t\t\tborderAlign: options.borderAlign,\n\t\t\t\tx: centerX,\n\t\t\t\ty: centerY,\n\t\t\t\tinnerRadius: 0,\n\t\t\t\touterRadius: reset ? resetRadius : distance,\n\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\n\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(labels, index, labels[index])\n\t\t\t}\n\t\t});\n\n\t\tarc.pivot();\n\t},\n\n\tcountVisibleElements: function() {\n\t\tvar dataset = this.getDataset();\n\t\tvar meta = this.getMeta();\n\t\tvar count = 0;\n\n\t\thelpers$1.each(meta.data, function(element, index) {\n\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\n\t\treturn count;\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(arc) {\n\t\tvar model = arc._model;\n\t\tvar options = arc._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\t\tvar valueOrDefault = helpers$1.valueOrDefault;\n\n\t\tarc.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_computeAngle: function(index) {\n\t\tvar me = this;\n\t\tvar count = this.getMeta().count;\n\t\tvar dataset = me.getDataset();\n\t\tvar meta = me.getMeta();\n\n\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: me.chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: dataset,\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\treturn resolve$3([\n\t\t\tme.chart.options.elements.arc.angle,\n\t\t\t(2 * Math.PI) / count\n\t\t], context, index);\n\t}\n});\n\ncore_defaults._set('pie', helpers$1.clone(core_defaults.doughnut));\ncore_defaults._set('pie', {\n\tcutoutPercentage: 0\n});\n\n// Pie charts are Doughnut chart with different defaults\nvar controller_pie = controller_doughnut;\n\nvar valueOrDefault$7 = helpers$1.valueOrDefault;\n\ncore_defaults._set('radar', {\n\tspanGaps: false,\n\tscale: {\n\t\ttype: 'radialLinear'\n\t},\n\telements: {\n\t\tline: {\n\t\t\tfill: 'start',\n\t\t\ttension: 0 // no bezier in radar\n\t\t}\n\t}\n});\n\nvar controller_radar = core_datasetController.extend({\n\tdatasetElementType: elements.Line,\n\n\tdataElementType: elements.Point,\n\n\tlinkScales: helpers$1.noop,\n\n\t/**\n\t * @private\n\t */\n\t_datasetElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderWidth',\n\t\t'borderColor',\n\t\t'borderCapStyle',\n\t\t'borderDash',\n\t\t'borderDashOffset',\n\t\t'borderJoinStyle',\n\t\t'fill'\n\t],\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: {\n\t\tbackgroundColor: 'pointBackgroundColor',\n\t\tborderColor: 'pointBorderColor',\n\t\tborderWidth: 'pointBorderWidth',\n\t\thitRadius: 'pointHitRadius',\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\n\t\thoverBorderColor: 'pointHoverBorderColor',\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\n\t\thoverRadius: 'pointHoverRadius',\n\t\tpointStyle: 'pointStyle',\n\t\tradius: 'pointRadius',\n\t\trotation: 'pointRotation'\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScaleId: function() {\n\t\treturn this.chart.scale.id;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getValueScaleId: function() {\n\t\treturn this.chart.scale.id;\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar line = meta.dataset;\n\t\tvar points = meta.data || [];\n\t\tvar scale = me.chart.scale;\n\t\tvar config = me._config;\n\t\tvar i, ilen;\n\n\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\tif (config.tension !== undefined && config.lineTension === undefined) {\n\t\t\tconfig.lineTension = config.tension;\n\t\t}\n\n\t\t// Utility\n\t\tline._scale = scale;\n\t\tline._datasetIndex = me.index;\n\t\t// Data\n\t\tline._children = points;\n\t\tline._loop = true;\n\t\t// Model\n\t\tline._model = me._resolveDatasetElementOptions(line);\n\n\t\tline.pivot();\n\n\t\t// Update Points\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tme.updateElement(points[i], i, reset);\n\t\t}\n\n\t\t// Update bezier control points\n\t\tme.updateBezierControlPoints();\n\n\t\t// Now pivot the point for animation\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tpoints[i].pivot();\n\t\t}\n\t},\n\n\tupdateElement: function(point, index, reset) {\n\t\tvar me = this;\n\t\tvar custom = point.custom || {};\n\t\tvar dataset = me.getDataset();\n\t\tvar scale = me.chart.scale;\n\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\n\t\tvar options = me._resolveDataElementOptions(point, index);\n\t\tvar lineModel = me.getMeta().dataset._model;\n\t\tvar x = reset ? scale.xCenter : pointPosition.x;\n\t\tvar y = reset ? scale.yCenter : pointPosition.y;\n\n\t\t// Utility\n\t\tpoint._scale = scale;\n\t\tpoint._options = options;\n\t\tpoint._datasetIndex = me.index;\n\t\tpoint._index = index;\n\n\t\t// Desired view properties\n\t\tpoint._model = {\n\t\t\tx: x, // value not used in dataset scale, but we want a consistent API between scales\n\t\t\ty: y,\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t// Appearance\n\t\t\tradius: options.radius,\n\t\t\tpointStyle: options.pointStyle,\n\t\t\trotation: options.rotation,\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\ttension: valueOrDefault$7(custom.tension, lineModel ? lineModel.tension : 0),\n\n\t\t\t// Tooltip\n\t\t\thitRadius: options.hitRadius\n\t\t};\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDatasetElementOptions: function() {\n\t\tvar me = this;\n\t\tvar config = me._config;\n\t\tvar options = me.chart.options;\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\n\n\t\tvalues.spanGaps = valueOrDefault$7(config.spanGaps, options.spanGaps);\n\t\tvalues.tension = valueOrDefault$7(config.lineTension, options.elements.line.tension);\n\n\t\treturn values;\n\t},\n\n\tupdateBezierControlPoints: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar area = me.chart.chartArea;\n\t\tvar points = meta.data || [];\n\t\tvar i, ilen, model, controlPoints;\n\n\t\t// Only consider points that are drawn in case the spanGaps option is used\n\t\tif (meta.dataset._model.spanGaps) {\n\t\t\tpoints = points.filter(function(pt) {\n\t\t\t\treturn !pt._model.skip;\n\t\t\t});\n\t\t}\n\n\t\tfunction capControlPoint(pt, min, max) {\n\t\t\treturn Math.max(Math.min(pt, max), min);\n\t\t}\n\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tmodel = points[i]._model;\n\t\t\tcontrolPoints = helpers$1.splineCurve(\n\t\t\t\thelpers$1.previousItem(points, i, true)._model,\n\t\t\t\tmodel,\n\t\t\t\thelpers$1.nextItem(points, i, true)._model,\n\t\t\t\tmodel.tension\n\t\t\t);\n\n\t\t\t// Prevent the bezier going outside of the bounds of the graph\n\t\t\tmodel.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right);\n\t\t\tmodel.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom);\n\t\t\tmodel.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right);\n\t\t\tmodel.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom);\n\t\t}\n\t},\n\n\tsetHoverStyle: function(point) {\n\t\tvar model = point._model;\n\t\tvar options = point._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tpoint.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t\tradius: model.radius\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$7(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$7(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$7(options.hoverBorderWidth, options.borderWidth);\n\t\tmodel.radius = valueOrDefault$7(options.hoverRadius, options.radius);\n\t}\n});\n\ncore_defaults._set('scatter', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\tid: 'x-axis-1', // need an ID so datasets can reference the scale\n\t\t\ttype: 'linear', // scatter should not use a category axis\n\t\t\tposition: 'bottom'\n\t\t}],\n\t\tyAxes: [{\n\t\t\tid: 'y-axis-1',\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left'\n\t\t}]\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn ''; // doesn't make sense for scatter since data are formatted as a point\n\t\t\t},\n\t\t\tlabel: function(item) {\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\ncore_defaults._set('global', {\n\tdatasets: {\n\t\tscatter: {\n\t\t\tshowLine: false\n\t\t}\n\t}\n});\n\n// Scatter charts use line controllers\nvar controller_scatter = controller_line;\n\n// NOTE export a map in which the key represents the controller type, not\n// the class, and so must be CamelCase in order to be correctly retrieved\n// by the controller in core.controller.js (`controllers[meta.type]`).\n\nvar controllers = {\n\tbar: controller_bar,\n\tbubble: controller_bubble,\n\tdoughnut: controller_doughnut,\n\thorizontalBar: controller_horizontalBar,\n\tline: controller_line,\n\tpolarArea: controller_polarArea,\n\tpie: controller_pie,\n\tradar: controller_radar,\n\tscatter: controller_scatter\n};\n\n/**\n * Helper function to get relative position for an event\n * @param {Event|IEvent} event - The event to get the position for\n * @param {Chart} chart - The chart\n * @returns {object} the event position\n */\nfunction getRelativePosition(e, chart) {\n\tif (e.native) {\n\t\treturn {\n\t\t\tx: e.x,\n\t\t\ty: e.y\n\t\t};\n\t}\n\n\treturn helpers$1.getRelativePosition(e, chart);\n}\n\n/**\n * Helper function to traverse all of the visible elements in the chart\n * @param {Chart} chart - the chart\n * @param {function} handler - the callback to execute for each visible item\n */\nfunction parseVisibleItems(chart, handler) {\n\tvar metasets = chart._getSortedVisibleDatasetMetas();\n\tvar metadata, i, j, ilen, jlen, element;\n\n\tfor (i = 0, ilen = metasets.length; i < ilen; ++i) {\n\t\tmetadata = metasets[i].data;\n\t\tfor (j = 0, jlen = metadata.length; j < jlen; ++j) {\n\t\t\telement = metadata[j];\n\t\t\tif (!element._view.skip) {\n\t\t\t\thandler(element);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param {ChartElement[]} items - elements to filter\n * @param {object} position - the point to be nearest to\n * @return {ChartElement[]} the nearest items\n */\nfunction getIntersectItems(chart, position) {\n\tvar elements = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (element.inRange(position.x, position.y)) {\n\t\t\telements.push(element);\n\t\t}\n\t});\n\n\treturn elements;\n}\n\n/**\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {object} position - the point to be nearest to\n * @param {boolean} intersect - if true, only consider items that intersect the position\n * @param {function} distanceMetric - function to provide the distance between points\n * @return {ChartElement[]} the nearest items\n */\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\n\tvar minDistance = Number.POSITIVE_INFINITY;\n\tvar nearestItems = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar center = element.getCenterPoint();\n\t\tvar distance = distanceMetric(position, center);\n\t\tif (distance < minDistance) {\n\t\t\tnearestItems = [element];\n\t\t\tminDistance = distance;\n\t\t} else if (distance === minDistance) {\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\n\t\t\tnearestItems.push(element);\n\t\t}\n\t});\n\n\treturn nearestItems;\n}\n\n/**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {string} axis - the axis mode. x|y|xy\n */\nfunction getDistanceMetricForAxis(axis) {\n\tvar useX = axis.indexOf('x') !== -1;\n\tvar useY = axis.indexOf('y') !== -1;\n\n\treturn function(pt1, pt2) {\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n\t};\n}\n\nfunction indexMode(chart, e, options) {\n\tvar position = getRelativePosition(e, chart);\n\t// Default axis for index mode is 'x' to match old behaviour\n\toptions.axis = options.axis || 'x';\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\tvar elements = [];\n\n\tif (!items.length) {\n\t\treturn [];\n\t}\n\n\tchart._getSortedVisibleDatasetMetas().forEach(function(meta) {\n\t\tvar element = meta.data[items[0]._index];\n\n\t\t// don't count items that are skipped (null data)\n\t\tif (element && !element._view.skip) {\n\t\t\telements.push(element);\n\t\t}\n\t});\n\n\treturn elements;\n}\n\n/**\n * @interface IInteractionOptions\n */\n/**\n * If true, only consider items that intersect the point\n * @name IInterfaceOptions#boolean\n * @type Boolean\n */\n\n/**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\nvar core_interaction = {\n\t// Helper function for different modes\n\tmodes: {\n\t\tsingle: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar elements = [];\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\telements.push(element);\n\t\t\t\t\treturn elements;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn elements.slice(0, 1);\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.label\n\t\t * @deprecated since version 2.4.0\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\tlabel: indexMode,\n\n\t\t/**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tindex: indexMode,\n\n\t\t/**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tdataset: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\n\t\t\tif (items.length > 0) {\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\n\t\t\t}\n\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.x-axis\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\t'x-axis': function(chart, e) {\n\t\t\treturn indexMode(chart, e, {intersect: false});\n\t\t},\n\n\t\t/**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tpoint: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\treturn getIntersectItems(chart, position);\n\t\t},\n\n\t\t/**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tnearest: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\treturn getNearestItems(chart, position, options.intersect, distanceMetric);\n\t\t},\n\n\t\t/**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tx: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inXRange(position.x)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\ty: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inYRange(position.y)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t}\n\t}\n};\n\nvar extend = helpers$1.extend;\n\nfunction filterByPosition(array, position) {\n\treturn helpers$1.where(array, function(v) {\n\t\treturn v.pos === position;\n\t});\n}\n\nfunction sortByWeight(array, reverse) {\n\treturn array.sort(function(a, b) {\n\t\tvar v0 = reverse ? b : a;\n\t\tvar v1 = reverse ? a : b;\n\t\treturn v0.weight === v1.weight ?\n\t\t\tv0.index - v1.index :\n\t\t\tv0.weight - v1.weight;\n\t});\n}\n\nfunction wrapBoxes(boxes) {\n\tvar layoutBoxes = [];\n\tvar i, ilen, box;\n\n\tfor (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n\t\tbox = boxes[i];\n\t\tlayoutBoxes.push({\n\t\t\tindex: i,\n\t\t\tbox: box,\n\t\t\tpos: box.position,\n\t\t\thorizontal: box.isHorizontal(),\n\t\t\tweight: box.weight\n\t\t});\n\t}\n\treturn layoutBoxes;\n}\n\nfunction setLayoutDims(layouts, params) {\n\tvar i, ilen, layout;\n\tfor (i = 0, ilen = layouts.length; i < ilen; ++i) {\n\t\tlayout = layouts[i];\n\t\t// store width used instead of chartArea.w in fitBoxes\n\t\tlayout.width = layout.horizontal\n\t\t\t? layout.box.fullWidth && params.availableWidth\n\t\t\t: params.vBoxMaxWidth;\n\t\t// store height used instead of chartArea.h in fitBoxes\n\t\tlayout.height = layout.horizontal && params.hBoxMaxHeight;\n\t}\n}\n\nfunction buildLayoutBoxes(boxes) {\n\tvar layoutBoxes = wrapBoxes(boxes);\n\tvar left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n\tvar right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n\tvar top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n\tvar bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n\n\treturn {\n\t\tleftAndTop: left.concat(top),\n\t\trightAndBottom: right.concat(bottom),\n\t\tchartArea: filterByPosition(layoutBoxes, 'chartArea'),\n\t\tvertical: left.concat(right),\n\t\thorizontal: top.concat(bottom)\n\t};\n}\n\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n\treturn Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\n\nfunction updateDims(chartArea, params, layout) {\n\tvar box = layout.box;\n\tvar maxPadding = chartArea.maxPadding;\n\tvar newWidth, newHeight;\n\n\tif (layout.size) {\n\t\t// this layout was already counted for, lets first reduce old size\n\t\tchartArea[layout.pos] -= layout.size;\n\t}\n\tlayout.size = layout.horizontal ? box.height : box.width;\n\tchartArea[layout.pos] += layout.size;\n\n\tif (box.getPadding) {\n\t\tvar boxPadding = box.getPadding();\n\t\tmaxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n\t\tmaxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n\t\tmaxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n\t\tmaxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n\t}\n\n\tnewWidth = params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right');\n\tnewHeight = params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom');\n\n\tif (newWidth !== chartArea.w || newHeight !== chartArea.h) {\n\t\tchartArea.w = newWidth;\n\t\tchartArea.h = newHeight;\n\n\t\t// return true if chart area changed in layout's direction\n\t\treturn layout.horizontal ? newWidth !== chartArea.w : newHeight !== chartArea.h;\n\t}\n}\n\nfunction handleMaxPadding(chartArea) {\n\tvar maxPadding = chartArea.maxPadding;\n\n\tfunction updatePos(pos) {\n\t\tvar change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n\t\tchartArea[pos] += change;\n\t\treturn change;\n\t}\n\tchartArea.y += updatePos('top');\n\tchartArea.x += updatePos('left');\n\tupdatePos('right');\n\tupdatePos('bottom');\n}\n\nfunction getMargins(horizontal, chartArea) {\n\tvar maxPadding = chartArea.maxPadding;\n\n\tfunction marginForPositions(positions) {\n\t\tvar margin = {left: 0, top: 0, right: 0, bottom: 0};\n\t\tpositions.forEach(function(pos) {\n\t\t\tmargin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n\t\t});\n\t\treturn margin;\n\t}\n\n\treturn horizontal\n\t\t? marginForPositions(['left', 'right'])\n\t\t: marginForPositions(['top', 'bottom']);\n}\n\nfunction fitBoxes(boxes, chartArea, params) {\n\tvar refitBoxes = [];\n\tvar i, ilen, layout, box, refit, changed;\n\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\n\t\tlayout = boxes[i];\n\t\tbox = layout.box;\n\n\t\tbox.update(\n\t\t\tlayout.width || chartArea.w,\n\t\t\tlayout.height || chartArea.h,\n\t\t\tgetMargins(layout.horizontal, chartArea)\n\t\t);\n\t\tif (updateDims(chartArea, params, layout)) {\n\t\t\tchanged = true;\n\t\t\tif (refitBoxes.length) {\n\t\t\t\t// Dimensions changed and there were non full width boxes before this\n\t\t\t\t// -> we have to refit those\n\t\t\t\trefit = true;\n\t\t\t}\n\t\t}\n\t\tif (!box.fullWidth) { // fullWidth boxes don't need to be re-fitted in any case\n\t\t\trefitBoxes.push(layout);\n\t\t}\n\t}\n\n\treturn refit ? fitBoxes(refitBoxes, chartArea, params) || changed : changed;\n}\n\nfunction placeBoxes(boxes, chartArea, params) {\n\tvar userPadding = params.padding;\n\tvar x = chartArea.x;\n\tvar y = chartArea.y;\n\tvar i, ilen, layout, box;\n\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\n\t\tlayout = boxes[i];\n\t\tbox = layout.box;\n\t\tif (layout.horizontal) {\n\t\t\tbox.left = box.fullWidth ? userPadding.left : chartArea.left;\n\t\t\tbox.right = box.fullWidth ? params.outerWidth - userPadding.right : chartArea.left + chartArea.w;\n\t\t\tbox.top = y;\n\t\t\tbox.bottom = y + box.height;\n\t\t\tbox.width = box.right - box.left;\n\t\t\ty = box.bottom;\n\t\t} else {\n\t\t\tbox.left = x;\n\t\t\tbox.right = x + box.width;\n\t\t\tbox.top = chartArea.top;\n\t\t\tbox.bottom = chartArea.top + chartArea.h;\n\t\t\tbox.height = box.bottom - box.top;\n\t\t\tx = box.right;\n\t\t}\n\t}\n\n\tchartArea.x = x;\n\tchartArea.y = y;\n}\n\ncore_defaults._set('global', {\n\tlayout: {\n\t\tpadding: {\n\t\t\ttop: 0,\n\t\t\tright: 0,\n\t\t\tbottom: 0,\n\t\t\tleft: 0\n\t\t}\n\t}\n});\n\n/**\n * @interface ILayoutItem\n * @prop {string} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\n * @prop {function} getPadding - Returns an object with padding on the edges\n * @prop {number} width - Width of item. Must be valid after update()\n * @prop {number} height - Height of item. Must be valid after update()\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n// It is this service's responsibility of carrying out that layout.\nvar core_layouts = {\n\tdefaults: {},\n\n\t/**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {ILayoutItem} item - the item to add to be layed out\n\t */\n\taddBox: function(chart, item) {\n\t\tif (!chart.boxes) {\n\t\t\tchart.boxes = [];\n\t\t}\n\n\t\t// initialize item with default values\n\t\titem.fullWidth = item.fullWidth || false;\n\t\titem.position = item.position || 'top';\n\t\titem.weight = item.weight || 0;\n\t\titem._layers = item._layers || function() {\n\t\t\treturn [{\n\t\t\t\tz: 0,\n\t\t\t\tdraw: function() {\n\t\t\t\t\titem.draw.apply(item, arguments);\n\t\t\t\t}\n\t\t\t}];\n\t\t};\n\n\t\tchart.boxes.push(item);\n\t},\n\n\t/**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {ILayoutItem} layoutItem - the item to remove from the layout\n\t */\n\tremoveBox: function(chart, layoutItem) {\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n\t\tif (index !== -1) {\n\t\t\tchart.boxes.splice(index, 1);\n\t\t}\n\t},\n\n\t/**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {ILayoutItem} item - the item to configure with the given options\n\t * @param {object} options - the new item options.\n\t */\n\tconfigure: function(chart, item, options) {\n\t\tvar props = ['fullWidth', 'position', 'weight'];\n\t\tvar ilen = props.length;\n\t\tvar i = 0;\n\t\tvar prop;\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\tprop = props[i];\n\t\t\tif (options.hasOwnProperty(prop)) {\n\t\t\t\titem[prop] = options[prop];\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {number} width - the width to fit into\n\t * @param {number} height - the height to fit into\n\t */\n\tupdate: function(chart, width, height) {\n\t\tif (!chart) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar layoutOptions = chart.options.layout || {};\n\t\tvar padding = helpers$1.options.toPadding(layoutOptions.padding);\n\n\t\tvar availableWidth = width - padding.width;\n\t\tvar availableHeight = height - padding.height;\n\t\tvar boxes = buildLayoutBoxes(chart.boxes);\n\t\tvar verticalBoxes = boxes.vertical;\n\t\tvar horizontalBoxes = boxes.horizontal;\n\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\n\t\t// Our canvas looks like the following.\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n\t\t// B1 is the bottom axis\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n\t\t// an error will be thrown.\n\t\t//\n\t\t// |----------------------------------------------------|\n\t\t// | T1 (Full Width) |\n\t\t// |----------------------------------------------------|\n\t\t// | | | T2 | |\n\t\t// | |----|-------------------------------------|----|\n\t\t// | | | C1 | | C2 | |\n\t\t// | | |----| |----| |\n\t\t// | | | | |\n\t\t// | L1 | L2 | ChartArea (C0) | R1 |\n\t\t// | | | | |\n\t\t// | | |----| |----| |\n\t\t// | | | C3 | | C4 | |\n\t\t// | |----|-------------------------------------|----|\n\t\t// | | | B1 | |\n\t\t// |----------------------------------------------------|\n\t\t// | B2 (Full Width) |\n\t\t// |----------------------------------------------------|\n\t\t//\n\n\t\tvar params = Object.freeze({\n\t\t\touterWidth: width,\n\t\t\touterHeight: height,\n\t\t\tpadding: padding,\n\t\t\tavailableWidth: availableWidth,\n\t\t\tvBoxMaxWidth: availableWidth / 2 / verticalBoxes.length,\n\t\t\thBoxMaxHeight: availableHeight / 2\n\t\t});\n\t\tvar chartArea = extend({\n\t\t\tmaxPadding: extend({}, padding),\n\t\t\tw: availableWidth,\n\t\t\th: availableHeight,\n\t\t\tx: padding.left,\n\t\t\ty: padding.top\n\t\t}, padding);\n\n\t\tsetLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n\n\t\t// First fit vertical boxes\n\t\tfitBoxes(verticalBoxes, chartArea, params);\n\n\t\t// Then fit horizontal boxes\n\t\tif (fitBoxes(horizontalBoxes, chartArea, params)) {\n\t\t\t// if the area changed, re-fit vertical boxes\n\t\t\tfitBoxes(verticalBoxes, chartArea, params);\n\t\t}\n\n\t\thandleMaxPadding(chartArea);\n\n\t\t// Finally place the boxes to correct coordinates\n\t\tplaceBoxes(boxes.leftAndTop, chartArea, params);\n\n\t\t// Move to opposite side of chart\n\t\tchartArea.x += chartArea.w;\n\t\tchartArea.y += chartArea.h;\n\n\t\tplaceBoxes(boxes.rightAndBottom, chartArea, params);\n\n\t\tchart.chartArea = {\n\t\t\tleft: chartArea.left,\n\t\t\ttop: chartArea.top,\n\t\t\tright: chartArea.left + chartArea.w,\n\t\t\tbottom: chartArea.top + chartArea.h\n\t\t};\n\n\t\t// Finally update boxes in chartArea (radial scale for example)\n\t\thelpers$1.each(boxes.chartArea, function(layout) {\n\t\t\tvar box = layout.box;\n\t\t\textend(box, chart.chartArea);\n\t\t\tbox.update(chartArea.w, chartArea.h);\n\t\t});\n\t}\n};\n\n/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nvar platform_basic = {\n\tacquireContext: function(item) {\n\t\tif (item && item.canvas) {\n\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\titem = item.canvas;\n\t\t}\n\n\t\treturn item && item.getContext('2d') || null;\n\t}\n};\n\nvar platform_dom = \"/*\\n * DOM element rendering detection\\n * https://davidwalsh.name/detect-node-insertion\\n */\\n@keyframes chartjs-render-animation {\\n\\tfrom { opacity: 0.99; }\\n\\tto { opacity: 1; }\\n}\\n\\n.chartjs-render-monitor {\\n\\tanimation: chartjs-render-animation 0.001s;\\n}\\n\\n/*\\n * DOM element resizing detection\\n * https://github.com/marcj/css-element-queries\\n */\\n.chartjs-size-monitor,\\n.chartjs-size-monitor-expand,\\n.chartjs-size-monitor-shrink {\\n\\tposition: absolute;\\n\\tdirection: ltr;\\n\\tleft: 0;\\n\\ttop: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\toverflow: hidden;\\n\\tpointer-events: none;\\n\\tvisibility: hidden;\\n\\tz-index: -1;\\n}\\n\\n.chartjs-size-monitor-expand > div {\\n\\tposition: absolute;\\n\\twidth: 1000000px;\\n\\theight: 1000000px;\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n\\n.chartjs-size-monitor-shrink > div {\\n\\tposition: absolute;\\n\\twidth: 200%;\\n\\theight: 200%;\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n\";\n\nvar platform_dom$1 = /*#__PURE__*/Object.freeze({\n__proto__: null,\n'default': platform_dom\n});\n\nvar stylesheet = getCjsExportFromNamespace(platform_dom$1);\n\nvar EXPANDO_KEY = '$chartjs';\nvar CSS_PREFIX = 'chartjs-';\nvar CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor';\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\n\n/**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\nvar EVENT_TYPES = {\n\ttouchstart: 'mousedown',\n\ttouchmove: 'mousemove',\n\ttouchend: 'mouseup',\n\tpointerenter: 'mouseenter',\n\tpointerdown: 'mousedown',\n\tpointermove: 'mousemove',\n\tpointerup: 'mouseup',\n\tpointerleave: 'mouseout',\n\tpointerout: 'mouseout'\n};\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 {number} Size in pixels or undefined if unknown.\n */\nfunction readUsedSize(element, property) {\n\tvar value = helpers$1.getStyle(element, property);\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n\treturn matches ? Number(matches[1]) : undefined;\n}\n\n/**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n */\nfunction initCanvas(canvas, config) {\n\tvar style = canvas.style;\n\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\n\tvar renderHeight = canvas.getAttribute('height');\n\tvar renderWidth = canvas.getAttribute('width');\n\n\t// Chart.js modifies some canvas values that we want to restore on destroy\n\tcanvas[EXPANDO_KEY] = {\n\t\tinitial: {\n\t\t\theight: renderHeight,\n\t\t\twidth: renderWidth,\n\t\t\tstyle: {\n\t\t\t\tdisplay: style.display,\n\t\t\t\theight: style.height,\n\t\t\t\twidth: style.width\n\t\t\t}\n\t\t}\n\t};\n\n\t// Force canvas to display as block to avoid extra space caused by inline\n\t// elements, which would interfere with the responsive resize process.\n\t// https://github.com/chartjs/Chart.js/issues/2538\n\tstyle.display = style.display || 'block';\n\n\tif (renderWidth === null || renderWidth === '') {\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\n\t\tif (displayWidth !== undefined) {\n\t\t\tcanvas.width = displayWidth;\n\t\t}\n\t}\n\n\tif (renderHeight === null || renderHeight === '') {\n\t\tif (canvas.style.height === '') {\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\n\t\t\t// which one can be specified by the user but also by charts as default option\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\n\t\t} else {\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\n\t\t\tif (displayWidth !== undefined) {\n\t\t\t\tcanvas.height = displayHeight;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn canvas;\n}\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 */\nvar supportsEventListenerOptions = (function() {\n\tvar supports = false;\n\ttry {\n\t\tvar options = Object.defineProperty({}, 'passive', {\n\t\t\t// eslint-disable-next-line getter-return\n\t\t\tget: function() {\n\t\t\t\tsupports = true;\n\t\t\t}\n\t\t});\n\t\twindow.addEventListener('e', null, options);\n\t} catch (e) {\n\t\t// continue regardless of error\n\t}\n\treturn supports;\n}());\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addListener(node, type, listener) {\n\tnode.addEventListener(type, listener, eventListenerOptions);\n}\n\nfunction removeListener(node, type, listener) {\n\tnode.removeEventListener(type, listener, eventListenerOptions);\n}\n\nfunction createEvent(type, chart, x, y, nativeEvent) {\n\treturn {\n\t\ttype: type,\n\t\tchart: chart,\n\t\tnative: nativeEvent || null,\n\t\tx: x !== undefined ? x : null,\n\t\ty: y !== undefined ? y : null,\n\t};\n}\n\nfunction fromNativeEvent(event, chart) {\n\tvar type = EVENT_TYPES[event.type] || event.type;\n\tvar pos = helpers$1.getRelativePosition(event, chart);\n\treturn createEvent(type, chart, pos.x, pos.y, event);\n}\n\nfunction throttled(fn, thisArg) {\n\tvar ticking = false;\n\tvar args = [];\n\n\treturn function() {\n\t\targs = Array.prototype.slice.call(arguments);\n\t\tthisArg = thisArg || this;\n\n\t\tif (!ticking) {\n\t\t\tticking = true;\n\t\t\thelpers$1.requestAnimFrame.call(window, function() {\n\t\t\t\tticking = false;\n\t\t\t\tfn.apply(thisArg, args);\n\t\t\t});\n\t\t}\n\t};\n}\n\nfunction createDiv(cls) {\n\tvar el = document.createElement('div');\n\tel.className = cls || '';\n\treturn el;\n}\n\n// Implementation based on https://github.com/marcj/css-element-queries\nfunction createResizer(handler) {\n\tvar maxSize = 1000000;\n\n\t// NOTE(SB) Don't use innerHTML because it could be considered unsafe.\n\t// https://github.com/chartjs/Chart.js/issues/5902\n\tvar resizer = createDiv(CSS_SIZE_MONITOR);\n\tvar expand = createDiv(CSS_SIZE_MONITOR + '-expand');\n\tvar shrink = createDiv(CSS_SIZE_MONITOR + '-shrink');\n\n\texpand.appendChild(createDiv());\n\tshrink.appendChild(createDiv());\n\n\tresizer.appendChild(expand);\n\tresizer.appendChild(shrink);\n\tresizer._reset = function() {\n\t\texpand.scrollLeft = maxSize;\n\t\texpand.scrollTop = maxSize;\n\t\tshrink.scrollLeft = maxSize;\n\t\tshrink.scrollTop = maxSize;\n\t};\n\n\tvar onScroll = function() {\n\t\tresizer._reset();\n\t\thandler();\n\t};\n\n\taddListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\n\taddListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\n\n\treturn resizer;\n}\n\n// https://davidwalsh.name/detect-node-insertion\nfunction watchForRender(node, handler) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\tvar proxy = expando.renderProxy = function(e) {\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\n\t\t\thandler();\n\t\t}\n\t};\n\n\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\n\t\taddListener(node, type, proxy);\n\t});\n\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\n\t// is removed then added back immediately (same animation frame?). Accessing the\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\n\t// https://github.com/chartjs/Chart.js/issues/4737\n\texpando.reflow = !!node.offsetParent;\n\n\tnode.classList.add(CSS_RENDER_MONITOR);\n}\n\nfunction unwatchForRender(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar proxy = expando.renderProxy;\n\n\tif (proxy) {\n\t\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\n\t\t\tremoveListener(node, type, proxy);\n\t\t});\n\n\t\tdelete expando.renderProxy;\n\t}\n\n\tnode.classList.remove(CSS_RENDER_MONITOR);\n}\n\nfunction addResizeListener(node, listener, chart) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\n\t\tif (expando.resizer) {\n\t\t\tvar container = chart.options.maintainAspectRatio && node.parentNode;\n\t\t\tvar w = container ? container.clientWidth : 0;\n\t\t\tlistener(createEvent('resize', chart));\n\t\t\tif (container && container.clientWidth < w && chart.canvas) {\n\t\t\t\t// If the container size shrank during chart resize, let's assume\n\t\t\t\t// scrollbar appeared. So we resize again with the scrollbar visible -\n\t\t\t\t// effectively making chart smaller and the scrollbar hidden again.\n\t\t\t\t// Because we are inside `throttled`, and currently `ticking`, scroll\n\t\t\t\t// events are ignored during this whole 2 resize process.\n\t\t\t\t// If we assumed wrong and something else happened, we are resizing\n\t\t\t\t// twice in a frame (potential performance issue)\n\t\t\t\tlistener(createEvent('resize', chart));\n\t\t\t}\n\t\t}\n\t}));\n\n\t// The resizer needs to be attached to the node parent, so we first need to be\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\n\twatchForRender(node, function() {\n\t\tif (expando.resizer) {\n\t\t\tvar container = node.parentNode;\n\t\t\tif (container && container !== resizer.parentNode) {\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\n\t\t\t}\n\n\t\t\t// The container size might have changed, let's reset the resizer state.\n\t\t\tresizer._reset();\n\t\t}\n\t});\n}\n\nfunction removeResizeListener(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar resizer = expando.resizer;\n\n\tdelete expando.resizer;\n\tunwatchForRender(node);\n\n\tif (resizer && resizer.parentNode) {\n\t\tresizer.parentNode.removeChild(resizer);\n\t}\n}\n\n/**\n * Injects CSS styles inline if the styles are not already present.\n * @param {HTMLDocument|ShadowRoot} rootNode - the node to contain the