{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/tslib/tslib.es6.js","webpack:///./app/webpacker/javascripts/utils/material_elements.coffee","webpack:///./node_modules/@material/list/constants.js","webpack:///./node_modules/@material/base/foundation.js","webpack:///./node_modules/@material/base/component.js","webpack:///./node_modules/@material/dom/keyboard.js","webpack:///./node_modules/@material/dom/events.js","webpack:///./app/webpacker/javascripts/utils/form_utils.coffee","webpack:///./node_modules/@material/dom/ponyfill.js","webpack:///./app/webpacker/javascripts/utils/money_format.coffee","webpack:///./app/webpacker/javascripts/utils/cookie_manager.coffee","webpack:///./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack:///./node_modules/chart.js/dist/chart.esm.js","webpack:///./node_modules/@material/ripple/component.js","webpack:///./app/webpacker/javascripts/utils/user.coffee","webpack:///./node_modules/@material/snackbar/constants.js","webpack:///./node_modules/@material/snackbar/foundation.js","webpack:///./node_modules/@material/snackbar/util.js","webpack:///./node_modules/@material/snackbar/component.js","webpack:///./app/webpacker/javascripts/components/flash.coffee","webpack:///./node_modules/@material/ripple/constants.js","webpack:///./node_modules/@material/ripple/foundation.js","webpack:///./app/webpacker/javascripts/utils/emoji_fallback.coffee","webpack:///./node_modules/@material/list/events.js","webpack:///./node_modules/@material/list/typeahead.js","webpack:///./node_modules/@material/list/foundation.js","webpack:///./node_modules/@material/textfield/character-counter/constants.js","webpack:///./node_modules/@material/textfield/character-counter/foundation.js","webpack:///./node_modules/@material/textfield/character-counter/component.js","webpack:///./node_modules/@material/textfield/constants.js","webpack:///./node_modules/@material/textfield/foundation.js","webpack:///./node_modules/@material/textfield/component.js","webpack:///./node_modules/@material/ripple/util.js","webpack:///./app/webpacker/javascripts/libs/autoComplete.js","webpack:///./node_modules/@material/textfield/helper-text/constants.js","webpack:///./node_modules/@material/textfield/helper-text/foundation.js","webpack:///./node_modules/@material/floating-label/constants.js","webpack:///./node_modules/@material/floating-label/foundation.js","webpack:///./node_modules/@material/notched-outline/constants.js","webpack:///./node_modules/@material/notched-outline/foundation.js","webpack:///./node_modules/@material/notched-outline/component.js","webpack:///./node_modules/@material/floating-label/component.js","webpack:///./node_modules/@material/line-ripple/constants.js","webpack:///./node_modules/@material/line-ripple/foundation.js","webpack:///./node_modules/@material/line-ripple/component.js","webpack:///./node_modules/@material/list/component.js","webpack:///./node_modules/@material/textfield/icon/constants.js","webpack:///./node_modules/@material/textfield/icon/foundation.js","webpack:///./node_modules/@material/textfield/icon/component.js","webpack:///./node_modules/@material/dom/focus-trap.js","webpack:///./app/webpacker/javascripts/utils/scroller.coffee","webpack:///./app/webpacker/javascripts/utils/amplitude.coffee","webpack:///./node_modules/@material/textfield/helper-text/component.js","webpack:///./node_modules/@material/tab-indicator/constants.js","webpack:///./node_modules/@material/tab-indicator/foundation.js","webpack:///./node_modules/@material/tab-indicator/fading-foundation.js","webpack:///./node_modules/@material/tab-indicator/sliding-foundation.js","webpack:///./node_modules/@material/tab-indicator/component.js","webpack:///./node_modules/luxon/build/cjs-browser/luxon.js","webpack:///(webpack)/buildin/global.js","webpack:///./app/webpacker/javascripts/utils/tooltips.coffee","webpack:///./app/webpacker/javascripts/navigation.js","webpack:///./node_modules/amplitude-js/amplitude.umd.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/isarray/index.js","webpack:///./app/webpacker/javascripts/site_search.js","webpack:///./app/webpacker/javascripts/components/lazy_load_images.coffee","webpack:///./node_modules/@material/top-app-bar/constants.js","webpack:///./node_modules/@material/top-app-bar/foundation.js","webpack:///./node_modules/@material/top-app-bar/standard/foundation.js","webpack:///./node_modules/@material/top-app-bar/fixed/foundation.js","webpack:///./node_modules/@material/top-app-bar/short/foundation.js","webpack:///./node_modules/@material/top-app-bar/component.js","webpack:///./node_modules/@material/drawer/constants.js","webpack:///./node_modules/@material/drawer/dismissible/foundation.js","webpack:///./node_modules/@material/drawer/modal/foundation.js","webpack:///./node_modules/@material/drawer/component.js","webpack:///./app/webpacker/javascripts/components/layout.coffee","webpack:///./node_modules/@material/drawer/util.js","webpack:///./app/webpacker/javascripts/components/gdpr_cookie_notice.coffee","webpack:///./app/webpacker/javascripts/libs/requests.coffee","webpack:///./app/webpacker/javascripts/utils/percent_format.coffee","webpack:///./app/webpacker/javascripts/components/dianomi.coffee","webpack:///./node_modules/@material/tab-scroller/util.js","webpack:///./node_modules/@material/tab-scroller/constants.js","webpack:///./node_modules/@material/tab-scroller/rtl-scroller.js","webpack:///./node_modules/@material/tab-scroller/rtl-default-scroller.js","webpack:///./node_modules/@material/tab-scroller/rtl-negative-scroller.js","webpack:///./node_modules/@material/tab-scroller/rtl-reverse-scroller.js","webpack:///./node_modules/@material/tab-scroller/foundation.js","webpack:///./node_modules/@material/tab-scroller/component.js","webpack:///./node_modules/@material/tab/constants.js","webpack:///./node_modules/@material/tab/foundation.js","webpack:///./node_modules/@material/tab/component.js","webpack:///./node_modules/@material/tab-bar/constants.js","webpack:///./node_modules/@material/tab-bar/foundation.js","webpack:///./node_modules/@material/tab-bar/component.js","webpack:///./app/webpacker/packs/security.coffee","webpack:///./app/webpacker/javascripts/securities_landing_page/payment_calculator.coffee","webpack:///./app/webpacker/javascripts/securities_landing_page/annual_dividends_graph.coffee","webpack:///./node_modules/chartjs-adapter-luxon/dist/chartjs-adapter-luxon.esm.js","webpack:///./node_modules/luxon/src/errors.js","webpack:///./node_modules/luxon/src/impl/formats.js","webpack:///./node_modules/luxon/src/impl/util.js","webpack:///./node_modules/luxon/src/impl/english.js","webpack:///./node_modules/luxon/src/impl/formatter.js","webpack:///./node_modules/luxon/src/impl/invalid.js","webpack:///./node_modules/luxon/src/zone.js","webpack:///./node_modules/luxon/src/zones/localZone.js","webpack:///./node_modules/luxon/src/zones/IANAZone.js","webpack:///./node_modules/luxon/src/zones/fixedOffsetZone.js","webpack:///./node_modules/luxon/src/zones/invalidZone.js","webpack:///./node_modules/luxon/src/impl/zoneUtil.js","webpack:///./node_modules/luxon/src/settings.js","webpack:///./node_modules/luxon/src/impl/locale.js","webpack:///./node_modules/luxon/src/impl/regexParser.js","webpack:///./node_modules/luxon/src/duration.js","webpack:///./node_modules/luxon/src/interval.js","webpack:///./node_modules/luxon/src/info.js","webpack:///./node_modules/luxon/src/impl/diff.js","webpack:///./node_modules/luxon/src/impl/digits.js","webpack:///./node_modules/luxon/src/impl/tokenParser.js","webpack:///./node_modules/luxon/src/impl/conversions.js","webpack:///./node_modules/luxon/src/datetime.js","webpack:///./app/webpacker/javascripts/securities_landing_page/optimized_yield_graph.coffee","webpack:///./app/webpacker/javascripts/securities_landing_page/index.coffee","webpack:///./app/webpacker/javascripts/securities_landing_page/notifications_signup_form.coffee"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","extendStatics","b","setPrototypeOf","__proto__","Array","__extends","__","this","constructor","__assign","assign","arguments","length","apply","__values","iterator","next","done","TypeError","__read","e","ar","push","error","__spread","concat","link_button","label","url","raised","secondary","outlined","a","element_with_class","setAttribute","classList","add","append","span","innerText","submit_button","button","element_with_content","text_field","el","extra_classes","input","money_input_field","symbol","floatingLabel","element","classes","document","createElement","toUpperCase","content","innerHTML","material_select_option","selected","li","dataset","material_select","select","select_anchor","menu","ul","anchor","dropdown_icon","svg","createElementNS","setAttributeNS","inactive_polygon","active_polygon","appendChild","cssClasses","LIST_ITEM_ACTIVATED_CLASS","LIST_ITEM_CLASS","LIST_ITEM_DISABLED_CLASS","LIST_ITEM_SELECTED_CLASS","LIST_ITEM_TEXT_CLASS","LIST_ITEM_PRIMARY_TEXT_CLASS","ROOT","strings","ACTION_EVENT","ARIA_CHECKED","ARIA_CHECKED_CHECKBOX_SELECTOR","ARIA_CHECKED_RADIO_SELECTOR","ARIA_CURRENT","ARIA_DISABLED","ARIA_ORIENTATION","ARIA_ORIENTATION_HORIZONTAL","ARIA_ROLE_CHECKBOX_SELECTOR","ARIA_SELECTED","CHECKBOX_RADIO_SELECTOR","CHECKBOX_SELECTOR","CHILD_ELEMENTS_TO_TOGGLE_TABINDEX","FOCUSABLE_CHILD_ELEMENTS","RADIO_SELECTOR","numbers","UNSET_INDEX","TYPEAHEAD_BUFFER_CLEAR_TIMEOUT_MS","MDCFoundation","adapter","configurable","init","destroy","MDCComponent","root","foundation","args","_i","initialize","undefined","getDefaultFoundation","initialSyncWithDOM","attachTo","_args","Error","listen","evtType","handler","options","addEventListener","unlisten","removeEventListener","emit","evtData","shouldBubble","evt","CustomEvent","bubbles","detail","createEvent","initCustomEvent","dispatchEvent","KEY","UNKNOWN","BACKSPACE","ENTER","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","ARROW_LEFT","ARROW_UP","ARROW_RIGHT","ARROW_DOWN","DELETE","ESCAPE","normalizedKeys","Set","KEY_CODE","mappedKeyCodes","Map","set","navigationKeys","normalizeKey","has","mappedKey","keyCode","isNavigationEvent","applyPassive","globalObj","window","passiveSupported","err","supportsPassiveOption","passive","generate_recaptcha_token","callback","grecaptcha","ready","execute","body","googleSiteKey","action","then","token","querySelector","form_params","selector","params","params_with_csrf_token","form","append_input_to_params","URLSearchParams","append_csrf_token","token_name","getAttribute","token_value","form_element","method","id","hidden_field","closest","matches","parentElement","webkitMatchesSelector","msMatchesSelector","estimateScrollWidth","htmlEl","offsetParent","scrollWidth","clone","cloneNode","style","setProperty","documentElement","removeChild","MoneyFormat","ONE_MILLION","formatFull","float","currency","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","format","digits","Math","abs","formatLargeAmount","minDigits","formatForInput","maxDigits","useGrouping","val","ltr","formatWithSymbol","amt","roundTo","round","poundAmount","floor","pennyAmount","penny","formatMinor","minorName","currencySymbol","toFloat","string","parseFloat","stripNonNumerics","replace","num","dp","mult","CookieManager","date","Date","setTime","getTime","cookie","toUTCString","trim","indexOf","substring","remove","requestAnimFrame","requestAnimationFrame","throttled","fn","thisArg","updateFn","updateArgs","slice","ticking","_len","rest","_key","_toLeftRightCenter","align","_alignStartEnd","start","end","noop","uid","isNullOrUndef","isArray","type","toString","substr","isObject","isNumberFinite","Number","isFinite","finiteOrDefault","defaultValue","valueOrDefault","toDimension","dimension","endsWith","each","loopable","reverse","len","keys","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","index","clone$1","source","map","target","klen","k","isValidKey","_merger","tval","sval","merge","sources","merger","mergeIf","_mergerIf","indexOfDotOrLength","idx","resolveObjectKey","obj","pos","_capitalize","str","charAt","defined","isFunction","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","niceNum","range","niceRange","pow","fraction","isNumber","isNaN","almostEquals","x","y","epsilon","_setMinAndMaxByKey","array","min","max","toRadians","degrees","toDegrees","radians","_decimalPlaces","distanceBetweenPoints","pt1","pt2","sqrt","_angleDiff","_normalizeAngle","_angleBetween","angle","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","atEdge","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInBounce","easeOutBounce","easeInOutBounce","0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","f","hex","h1","h2","eq","hexString","v","g","isShort","lim","h","p2b","n2b","b2n","n2p","RGB_RE","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","w","rgb","rgb2hsl","calln","hsl2rgb","hue","hueParse","exec","p1","p2","hwb2rgb","hsv2rgb","map$1","Z","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","G","H","I","J","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","names$1","nameParse","unpacked","tkeys","j","ok","nk","parseInt","unpack","transparent","toLowerCase","modHSL","ratio","tmp","proto","fromObject","functionParse","rgbParse","Color","ret","_rgb","_valid","hslString","color","weight","me","c1","c2","w2","w1","deg","rotate","index_esm","isPatternOrGradient","CanvasGradient","CanvasPattern","getHoverColor","saturate","darken","overrides","getScope$1","node","split","scope","values","defaults","_descriptors","animation","backgroundColor","borderColor","datasets","devicePixelRatio","context","chart","platform","getDevicePixelRatio","elements","events","font","family","size","lineHeight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","intersect","maintainAspectRatio","onHover","onClick","parsing","plugins","responsive","scale","scales","showLine","describe","targetScope","targetName","scopeObject","targetScopeObject","privateName","defineProperties","writable","local","_scriptable","startsWith","_indexable","_fallback","_measureText","data","gc","longest","textWidth","measureText","width","_longestText","arrayOfThings","cache","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","splice","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","height","drawPoint","xOffset","yOffset","cornerRadius","pointStyle","rotation","radius","rad","translate","drawImage","beginPath","arc","closePath","moveTo","lineTo","SQRT1_2","rect","fill","borderWidth","stroke","_isPointInArea","point","area","margin","left","right","top","bottom","clipArea","clip","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","text","opts","lines","strokeWidth","strokeColor","line","translation","fillStyle","textAlign","textBaseline","strokeStyle","lineWidth","strokeText","maxWidth","fillText","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","RegExp","FONT_STYLE","toLineHeight","match","_readValueToProps","props","objProps","read","prop","toTRBL","toTRBLCorners","toPadding","toFont","fallback","console","warn","toFontString","resolve","inputs","info","cacheable","_lookup","table","cmp","mid","hi","lo","_lookupByKey","_rlookupByKey","arrayEvents","unlistenArrayEvents","listener","stub","_chartjs","listeners","forEach","_arrayUnique","items","result","item","_createResolver","scopes","prefixes","rootScopes","getTarget","_resolve","_cacheable","_scopes","_rootScopes","_getTarget","override","Proxy","deleteProperty","_keys","_cached","_resolveWithPrefixes","getOwnPropertyDescriptor","Reflect","getPrototypeOf","getKeysFromAllScopes","includes","ownKeys","_storage","_attachContext","proxy","subProxy","descriptorDefaults","_proxy","_context","_subProxy","_stack","setContext","receiver","descriptors","isScriptable","join","delete","createSubResolver","_resolveScriptable","isIndexable","arr","filter","resolver","_resolveArray","needsSubResolver","_resolveWithContext","allKeys","scriptable","indexable","_proxy$_scriptable","_proxy$_indexable","_proxy$_allKeys","_allKeys","readKey","prefix","resolveFallback","getScope","parent","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","EPSILON","getPoint","points","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","current","d01","d12","s01","s12","fa","fb","monotoneAdjust","deltaK","mK","pointsLen","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointAfter","monotoneCompute","valueAxis","delta","pointBefore","iPixel","vPixel","capControlPoint","pt","_updateBezierControlPoints","loop","controlPoints","spanGaps","cubicInterpolationMode","slopeDelta","splineCurveMonotone","prev","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_getParentNode","domNode","parentNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","positions","getPositionedStyle","styles","suffix","getRelativePosition","borderBox","boxSizing","paddings","borders","_getCanvasPosition","native","touches","offsetX","offsetY","box","shadowRoot","useOffsetPos","getBoundingClientRect","clientX","clientY","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","maxHeight","containerSize","container","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","getContainerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","readUsedSize","getPropertyValue","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","formatNumber","locale","cacheKey","JSON","stringify","formatter","getNumberFormat","getRtlAdapter","rtl","rectX","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","direction","original","getPropertyPriority","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","_ref","count","_boundSegment","segment","bounds","startBound","endBound","_propertyFn2","_getSegment","_propertyFn","getSegment","prevValue","inside","subStart","shouldStart","shouldStop","_boundSegments","segments","sub","splitByStyles","segmentOptions","prevStyle","readStyle","p0","styleChanged","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","_slicedToArray","_arrayWithHoles","_s","_e","_arr","_n","_d","_iterableToArrayLimit","minLen","_arrayLikeToArray","from","test","_unsupportedIterableToArray","_nonIterableRest","arr2","animator","_request","_charts","_running","_lastDate","anims","callbacks","numSteps","duration","initial","currentStep","_update","_refresh","now","remaining","running","draw","_active","_total","tick","pop","_notify","charts","complete","progress","event","cb","_getAnims","reduce","acc","cur","_duration","cancel","interpolators","boolean","to","factor","c0","valid","mix","number","cfg","currentValue","_fn","_easing","easing","_start","delay","_loop","_target","_prop","_from","_to","_promises","elapsed","remain","promises","Promise","res","rej","resolved","colors","properties","active","resize","show","animations","visible","hide","config","_chart","_properties","configure","animatedProps","getOwnPropertyNames","option","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","wait","all","awaitAll","_animateOptions","update","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","stack","dsIndex","singleMode","otherValue","isStacked","meta","stacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","parsed","_cachedMeta","_stacks","iScale","iAxis","axis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","getFirstScaleId","shift","clearStacks","_parsed","isDirectUpdateMode","cloneIfNotShared","cached","shared","_ctx","_cachedDataOpts","getMeta","_type","_parsing","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","$context","_syncList","linkScales","_stacked","addElements","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","xScale","getScaleForId","yScale","rScale","getDatasetMeta","scaleID","adata","convertObjectDataToArray","isExtensible","base","_len2","_key2","_dataCheck","datasetElementType","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","_sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","parse","_this$_parsing","_this$_parsing$xAxisK","xAxisKey","_this$_parsing$yAxisK","yAxisKey","parsedValue","NaN","canStack","otherScale","_getOtherScale","NEGATIVE_INFINITY","_getUserBounds","_scale$getUserBounds","getUserBounds","minDefined","maxDefined","otherMin","otherMax","_skip","updateRangeFromParsed","getParsed","getLabelForValue","_clip","toClip","defaultClip","getMaxOverflow","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","raw","createDataContext","createDatasetContext","_resolveElementOptions","dataElementType","elementType","sharing","datasetElementScopeKeys","names","resolveNamedOptions","freeze","transition","datasetAnimationScopeKeys","sharedOptions","_animationsDisabled","_resolveAnimations","getSharedOptions","_setStyle","_ref2","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","computeMinSampleSize","_cache","$bar","metas","getAllParsedValues","sort","getAllScaleValues","curr","_length","updateMinAndPrev","getPixelForValue","ticks","getPixelForTick","parseValue","entry","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","_this$_parsing2","_this$_parsing2$xAxis","_this$_parsing2$yAxis","iAxisKey","vAxisKey","super","bars","reset","getBasePixel","horizontal","isHorizontal","ruler","_getRuler","firstOpts","includeOptions","updateSharedOptions","vpixels","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","enableBorderRadius","center","updateElement","last","_getStacks","pixels","barThickness","_startPixel","_endPixel","stackCount","_getStackCount","grouped","categoryPercentage","barPercentage","_me$_cachedMeta","_me$options","baseValue","minBarLength","floating","getDataVisibility","actualBase","halfGrid","getLineWidthForValue","skipNull","maxBarThickness","Infinity","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","_getStackIndex","rects","_index_","offset","grid","_value_","beginAtZero","_this$_parsing3","_this$_parsing3$xAxis","_this$_parsing3$yAxis","_this$_cachedMeta","_me$_cachedMeta2","getPixelForDecimal","tooltip","title","innerRadius","outerRadius","circumference","isDatasetVisible","_getRotation","_getCircumference","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","cutout","chartWeight","_getRingWeight","_me$_getRotationExten","_getRotationExtents","_getRatioAndOffset","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","_circumference","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","hidden","legendItem","toggleDataVisibility","tooltipItem","dataLabel","formattedValue","_meta$data","_dataset","animationsDisabled","_getStartAndCountOfVi","pointCount","_iScale$getUserBounds","getStartAndCountOfVisiblePoints","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","scaleRangesChanged","_decimated","animated","_me$_cachedMeta3","maxGapLength","directUpdate","prevParsed","nullData","stop","border","lastPoint","updateControlPoints","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","display","circular","pointLabels","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","ScatterController","DateAdapter","timestamp","amount","unit","weekday","members","adapters","_date","binarySearch","metaset","lookupMethod","_reversePixels","getRange","optimizedEvaluateItems","position","getSortedVisibleDatasetMetas","_metasets$i2","_binarySearch","getIntersectItems","useFinalPosition","_minPadding","inRange","getNearestItems","distanceMetric","useX","useY","deltaX","deltaY","getDistanceMetricForAxis","minDistance","getCenterPoint","distance","getAxisItems","rangeMethod","intersectsItem","_metasets$i","evaluateAllVisibleItems","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","layout","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","other","getMargins","marginForPositions","fitBoxes","boxes","refitBoxes","refit","_updateDims","fullSize","placeBoxes","userPadding","padding","layouts","_layers","z","layoutItem","minPadding","availableWidth","availableHeight","layoutBoxes","wrapBoxes","wrap","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","vBoxMaxWidth","hBoxMaxHeight","setLayoutDims","updatePos","change","handleMaxPadding","BasePlatform","BasicPlatform","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","removeListener","createAttachObserver","observer","MutationObserver","entries","addedNodes","added","observe","childList","subtree","createDetachObserver","removedNodes","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","disconnect","unlistenDevicePixelRatioChanges","createProxyAndListen","_getRelativePosition$","fromNativeEvent","addListener","renderHeight","renderWidth","displayWidth","displayHeight","initCanvas","removeAttribute","proxies","$proxies","attach","detach","_this$getProps","getProps","final","defaultRoutes","formatters","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","numeric","Ticks","autoSkip","tickOpts","ticksLimit","maxTicksLimit","tickLength","_tickSize","maxScale","maxChart","_maxLength","determineMaxTicks","majorIndices","major","enabled","getMajorIndices","numMajorIndices","first","newTicks","ceil","skipMajors","evenMajorSpacing","diff","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","grace","drawBorder","drawOnChartArea","drawTicks","tickWidth","tickColor","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkipPadding","labelOffset","minor","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","route","offsetFromEdge","edge","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","_me$getUserBounds","getMinMax","xLabels","yLabels","beforeUpdate","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","beforeFit","fit","afterFit","afterUpdate","startPixel","endPixel","reversePixels","_alignToPixels","alignToPixels","notifyPlugins","_callHooks","beforeTickToLabelConversion","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","_me$options2","titleOpts","gridOpts","titleHeight","_me$_getLabelSizes","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","_me$options3","_me$options3$ticks","isRotated","labelsBelowTicks","offsetLeft","offsetRight","_this$options","generateTickLabels","_computeLabelSizes","caches","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","decimal","getBaseValue","createTickContext","optionTicks","rot","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","positionAxisID","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","backdrop","labelPadding","_me$options4","_me$options5","_me$options5$ticks","fillRect","findIndex","_computeGridLineItems","drawLine","setLineDash","lineDashOffset","lastLineWidth","_computeLabelArea","_computeLabelItems","_this$options2","_titleArgs","titleX","titleY","titleArgs","drawBackground","drawGrid","drawTitle","drawLabels","tz","gz","axisID","fontSize","isPrototypeOf","parentScope","isIChartComponent","register","itemDefaults","routes","propertyParts","sourceName","sourceScope","parts","routeDefaults","registerDefaults","controllers","_typedRegistries","_each","_len3","_key3","_len4","_key4","_len5","_key5","_len6","_key6","_get","_len7","_key7","_len8","_key8","_len9","_key9","_len10","_key10","typedRegistry","arg","reg","_getRegistryForType","isForType","_exec","itemReg","registry","component","camelMethod","_init","hook","_createDescriptors","descriptor","plugin","cancelable","_oldCache","_notifyStateChanges","getPlugin","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","some","pluginScopeKeys","getIndexAxis","datasetDefaults","determineAxis","scaleOptions","initOptions","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","mergeScaleConfig","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","_config","initConfig","_scopeCache","_resolverCache","clearCache","clear","datasetType","additionalOptionScopes","mainScope","resetCache","keyLists","_cachedScopes","_getResolver","getResolver","subPrefixes","_descriptors2","needContext","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","animationOptions","onComplete","onAnimationProgress","onProgress","isDomSupported","getCanvas","getElementById","instances","getChart","initialCanvas","existingChart","chartOptionScopes","_initializePlatform","acquireContext","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","timeout","clearTimeout","setTimeout","debounce","resizeDelay","_initialize","_this$options3","bindEvents","OffscreenCanvas","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","render","axisOptions","scaleOpts","updated","isRadial","dposition","dtype","scaleType","getScale","hasUpdated","addBox","_destroyDatasetMeta","newControllers","_removeUnreferencedMetasets","order","updateIndex","ControllerClass","getController","_defaults$datasets$ty","getElement","_updateMetasets","_resetElements","removeBox","animsDisabled","ensureScalesHaveIDs","buildOrUpdateScales","setsEqual","unbindEvents","invalidate","buildOrUpdateControllers","buildOrUpdateElements","_updateLayout","_updateDatasets","_eventHandler","noArea","_idx","_updateDataset","_me$_resizeBeforeDraw","layers","_drawDatasets","_drawDataset","setDatasetVisibility","_updateDatasetVisibility","_destroy","releaseContext","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","isAttached","activeElements","lastActive","_ref3","_updateHoverStyles","notify","replay","hoverOptions","deactivated","activated","updateHoverStyle","eventFilter","_handleEvent","_me$_active","lastEvent","getElementsAtEventForMode","invalidatePlugins","clipArc","pixelMargin","angleMargin","parseBorderRadius$1","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","innerR","alpha","angleOffset","_parseBorderRadius$","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p4","p8","inner","lineJoin","fullCircles","drawFullCircleBorders","version","unregister","chartX","chartY","_getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","atan2","getAngleFromPoint","_this$getProps2","_this$getProps3","halfAngle","halfRadius","radiusOffset","drawArc","setStyle","lineCap","pathVars","_params$start","paramsStart","_params$end","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","_pathVars","lineMethod","stepped","getLineMethod","_ref4","_ref4$move","fastPathSegment","_pathVars2","_ref5","_ref5$move","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","path","_path","strokePathWithCache","segmentMethod","strokePathDirect","_points","_segments","_pointsUpdated","_findStartAndEnd","findStartAndEnd","solidSegments","_computeSegments","_interpolate","_getInterpolationMethod","_segments$i","interpolated","inRange$1","hitRadius","mouseX","mouseY","_this$getProps4","_this$getProps5","hoverRadius","getBarBounds","bar","_bar$getProps","half","parseBorderSkipped","borderSkipped","parseEdge","orig","v2","startEnd","skipOrLimit","boundingRects","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","outer","skipX","skipY","addNormalRectPath","_boundingRects","addRectPath","_this$getProps6","_padding","textSize","fontOpts","_me$_drawArgs","_drawArgs","plugin_title","_element","titleBlock","createTitle","positioners","hasValue","tooltipPosition","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","String","createTooltipItem","_controller$getLabelA","getLabelAndValue","getTooltipSize","footer","boxWidth","boxHeight","bodyFont","titleFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","_chart$chartArea","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","radiusAndPadding","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","tooltipItems","beforeTitle","afterTitle","bodyItems","scoped","beforeLabel","afterLabel","beforeFooter","afterFooter","itemSort","labelColor","labelPointStyle","labelTextColor","_createItems","getTitle","getBeforeBody","getBody","getAfterBody","getFooter","positionAndSize","backgroundPoint","external","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","rtlHelper","titleColor","colorX","rtlColorX","yOffSet","colorY","usePointStyle","drawOptions","multiKeyBackground","outerX","innerX","strokeRect","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","bodyColor","_drawColorBox","footerAlign","footerColor","tooltipSize","drawCaret","quadraticCurveTo","animX","animY","_updateAnimationTarget","hasTooltipContent","globalAlpha","textDirection","drawBody","drawFooter","_ref10","positionChanged","_positionChanged","plugin_tooltip","handleEvent","labelCount","findOrAddLabel","addIfString","lastIndexOf","_startValue","_valueRange","_me$getUserBounds2","_me$getMinMax","getDecimalForPixel","generateTicks$1","generationOptions","dataRange","step","precision","maxTicks","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","rounded","almostWhole","decimalPlaces","relativeLabelSize","_ref11","_endValue","_me$getUserBounds3","setMin","setMax","minSign","maxSign","stepSize","computeTickLimit","getTickLimit","_maxDigits","_me$getMinMax2","handleTickRangeOptions","isMajor","tickVal","_zero","_me$getMinMax3","_me$getUserBounds4","exp","endExp","endSignificand","significand","lastTick","generateTicks","getTickBackdropHeight","determineLimits","getTextAlignForAngle","adjustPointPositionForLabelHeight","pathRadiusLine","getPointPosition","param","logarithmic","drawingArea","_pointLabels","_pointLabelItems","_me$getMinMax4","furthestLimits","furthestAngles","valueCount","plFont","hLimits","vLimits","_setReductions","tickBackdropHeight","outerDistance","extra","pointLabelPosition","fitWithPointLabels","setCenterPoint","largestPossibleRadius","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","scalingFactor","scaledDistance","distanceFromCenter","_this$_pointLabelItem","_me$options7","_scale$_pointLabelIte","drawPointLabels","gridLineOpts","drawRadiusLine","animate","INTERVALS","millisecond","common","steps","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","_adapter","_scale$_parseOpts","_parseOpts","parser","isoWeekday","startOf","determineUnitForAutoTicks","minUnit","capacity","interval","MAX_SAFE_INTEGER","addTick","time","timestamps","_lookup2","ticksFromTimestamps","majorUnit","setMajorTicks","_unit","_majorUnit","_offsets","_normalized","displayFormats","formats","normalized","_me$getUserBounds5","_applyBounds","_getLabelBounds","endOf","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","getDecimalForValue","limit","hasWeekday","getDataTimestamps","tooltipFormat","datetime","minorFormat","majorFormat","_tickFormatFunction","offsets","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","_getLabelSize","interpolate","prevSource","nextSource","prevTarget","nextTarget","_table","_maxIndex","_getTimestampsForTable","buildLookupTable","MDCRipple","_super","_this","disabled","isUnbounded","ripple","unbounded","createAdapter","instance","addClass","className","browserSupportsCssVars","computeBoundingRect","containsEventTarget","contains","deregisterDocumentInteractionHandler","deregisterInteractionHandler","deregisterResizeHandler","getWindowPageOffset","pageXOffset","pageYOffset","isSurfaceActive","isSurfaceDisabled","Boolean","registerDocumentInteractionHandler","registerInteractionHandler","registerResizeHandler","removeClass","updateCssVariable","varName","unbounded_","setUnbounded_","activate","deactivate","setUnbounded","User","isLoggedIn","isEmailVerified","emailVerified","isFreeAccount","status","isPaidExpired","isFreeTrialActive","isFreeTrialExpired","isPaidActive","hasActiveSubscription","userType","isExpired","expired","userStatus","hasNotification","shareId","notificationShareIds","notificationCount","notificationQuantities","notifIds","notifCounts","CLOSING","OPEN","OPENING","ACTION_SELECTOR","ARIA_LIVE_LABEL_TEXT_ATTR","CLOSED_EVENT","CLOSING_EVENT","DISMISS_SELECTOR","LABEL_SELECTOR","OPENED_EVENT","OPENING_EVENT","REASON_ACTION","REASON_DISMISS","SURFACE_SELECTOR","DEFAULT_AUTO_DISMISS_TIMEOUT_MS","INDETERMINATE","MAX_AUTO_DISMISS_TIMEOUT_MS","MIN_AUTO_DISMISS_TIMEOUT_MS","SNACKBAR_ANIMATION_CLOSE_TIME_MS","SNACKBAR_ANIMATION_OPEN_TIME_MS","ARIA_LIVE_DELAY_MS","MDCSnackbarFoundation","defaultAdapter","isOpen_","animationFrame_","animationTimer_","autoDismissTimer_","autoDismissTimeoutMs_","closeOnEscape_","announce","notifyClosed","notifyClosing","notifyOpened","notifyOpening","clearAutoDismissTimer_","cancelAnimationFrame","open","runNextAnimationFrame_","timeoutMs","getTimeoutMs","handleAnimationTimerEnd_","close","reason","isOpen","setTimeoutMs","minValue","maxValue","getCloseOnEscape","setCloseOnEscape","closeOnEscape","handleKeyDown","handleActionButtonClick","_evt","handleActionIconClick","ariaEl","labelEl","priority","labelText","textContent","MDCSnackbar","announcerFactory","announce_","surfaceEl_","labelEl_","actionEl_","handleKeyDown_","handleSurfaceClick_","isActionButton_","isActionIcon_","registerKeyDownHandler_","registerSurfaceClickHandler_","deregisterKeyDownHandler_","deregisterSurfaceClickHandler_","actionButtonText","message","addFlashMessage","success","clazz","removeFlashMessage","div","buildFlashMessage","prepareFlashMessage","surface","existing","BG_FOCUSED","FG_ACTIVATION","FG_DEACTIVATION","UNBOUNDED","VAR_FG_SCALE","VAR_FG_SIZE","VAR_FG_TRANSLATE_END","VAR_FG_TRANSLATE_START","VAR_LEFT","VAR_TOP","DEACTIVATION_TIMEOUT_MS","FG_DEACTIVATION_MS","INITIAL_ORIGIN_SCALE","PADDING","TAP_DELAY_MS","ACTIVATION_EVENT_TYPES","POINTER_DEACTIVATION_EVENT_TYPES","activatedTargets","MDCRippleFoundation","activationAnimationHasEnded_","activationTimer_","fgDeactivationRemovalTimer_","fgScale_","frame_","initialSize_","layoutFrame_","maxRadius_","unboundedCoords_","activationState_","defaultActivationState_","activationTimerCallback_","runDeactivationUXLogicIfReady_","activateHandler_","activate_","deactivateHandler_","deactivate_","focusHandler_","handleFocus","blurHandler_","handleBlur","resizeHandler_","supportsPressRipple","supportsPressRipple_","registerRootHandlers_","_a","ROOT_1","UNBOUNDED_1","layoutInternal_","ROOT_2","UNBOUNDED_2","removeCssVars_","deregisterRootHandlers_","deregisterDeactivationHandlers_","activationEvent","hasDeactivationUXRun","isActivated","isProgrammatic","wasActivatedByPointer","wasElementMadeActive","registerDeactivationHandlers_","rippleStrings","activationState","previousActivationEvent","previousActivationEvent_","resetActivationState_","checkElementMadeActive_","animateActivation_","_b","translateStart","translateEnd","_c","getFgTranslationCoordinates_","startPoint","endPoint","rmBoundedActivationClasses_","state","animateDeactivation_","maxDim","initialSize","updateLayoutCssVars_","EmojiFallback","prepare_string","run","emoji_support","replace_emojis","tree_walker","nodes","createTreeWalker","NodeFilter","SHOW_TEXT","FILTER_SKIP","nodeName","nodeValue","FILTER_ACCEPT","FILTER_REJECT","text_nodes","walker","nextNode","currentNode","flag","fromCodePoint","getImageData","codePoint","units","fromCharCode","surrogatePairToCodepoint","lead","trail","getImageForCodepoint","img","verticalAlign","src","fragmentForString","htmlString","tmpDoc","fragment","createDocumentFragment","childNode","firstChild","replace_in_node","pattern","replacement","imageReplacement","replaceChild","replaceInElement","p3","point1","charCodeAt","point2","outerHTML","chars","ELEMENTS_KEY_ALLOWED_IN","preventDefaultEvent","tagName","preventDefault","matchItem","nextChar","focusItemAtIndex","sortedIndexByFirstChar","focusedItemIndex","skipFocus","isItemAtIndexDisabled","bufferClearTimeout","clearBuffer","typeaheadBuffer","firstChar","itemsMatchingFirstChar","currentFirstChar","sortedIndexCursor","newIndex","cursorPosition","newCursorPosition","matchFirstChar","startingItem","nextCursorPosition","currentItem","isEnabled","matchAllChars","isTypingInProgress","handleKeydown","isTargetListItem","isArrowLeft","isArrowUp","isArrowRight","isArrowDown","isHome","isEnd","isEnter","isSpace","MDCListFoundation","wrapFocus_","isVertical_","isSingleSelectionList_","selectedIndex_","useActivatedClass_","ariaCurrentAttrValue_","isCheckboxList_","isRadioList_","hasTypeahead","typeaheadState","addClassForElementIndex","getAttributeForElementIndex","getFocusedElementIndex","getListItemCount","hasCheckboxAtIndex","hasRadioAtIndex","isCheckboxCheckedAtIndex","isFocusInsideList","isRootFocused","listItemAtIndexHasClass","notifyAction","removeClassForElementIndex","setAttributeForElementIndex","setCheckedCheckboxOrRadioAtIndex","setTabIndexForListItemChildren","getPrimaryTextAtIndex","typeaheadInitSortedIndex","setWrapFocus","setVerticalOrientation","setSingleSelection","setHasTypeahead","isTypeaheadInProgress","setUseActivatedClass","useActivated","getSelectedIndex","setSelectedIndex","isIndexValid_","setCheckboxAtIndex_","setRadioAtIndex_","setSingleSelectionAtIndex_","handleFocusIn","_","listItemIndex","handleFocusOut","setTabindexToFirstSelectedItem_","isRootListItem","focusLastElement","focusFirstElement","currentIndex","focusNextElement","focusPrevElement","isSelectableList_","setSelectedIndexOnAction_","handleClick","toggleCheckbox","setTabindexAtIndex_","nextIndex","prevIndex","lastIndex","setEnabled","itemIndex","selectedClassName","setAriaForSingleSelectionAtIndex_","isAriaCurrent","ariaAttribute","ariaAttributeValue","isChecked","targetIndex","minIndex","isIndexInRange_","listSize","toggleCheckboxAtIndex_","selectedIndexes","typeaheadMatchItem","startingIndex","listItemCount","getPrimaryTextByItemIndex","primaryText","clearTypeaheadBuffer","ROOT_SELECTOR","MDCTextFieldCharacterCounterFoundation","setContent","setCounterValue","currentLength","maxLength","MDCTextFieldCharacterCounter","ARIA_CONTROLS","INPUT_SELECTOR","LEADING_ICON_SELECTOR","LINE_RIPPLE_SELECTOR","OUTLINE_SELECTOR","PREFIX_SELECTOR","SUFFIX_SELECTOR","TRAILING_ICON_SELECTOR","DISABLED","FOCUSED","FULLWIDTH","HELPER_LINE","INVALID","LABEL_FLOATING","NO_LABEL","OUTLINED","TEXTAREA","WITH_LEADING_ICON","WITH_TRAILING_ICON","LABEL_SCALE","VALIDATION_ATTR_WHITELIST","ALWAYS_FLOAT_TYPES","POINTERDOWN_EVENTS","INTERACTION_EVENTS","MDCTextFieldFoundation","foundationMap","isFocused_","receivedUserInput_","isValid_","useNativeValidation_","helperText_","helperText","characterCounter_","characterCounter","leadingIcon_","leadingIcon","trailingIcon_","trailingIcon","inputFocusHandler_","activateFocus","inputBlurHandler_","deactivateFocus","inputInputHandler_","handleInput","setPointerXOffset_","setTransformOrigin","textFieldInteractionHandler_","handleTextFieldInteraction","validationAttributeChangeHandler_","attributesList","handleValidationAttributeChange","getNativeInput_","shouldAlwaysFloat_","getValue","isBadInput_","isValid","hasClass","registerTextFieldInteractionHandler","deregisterTextFieldInteractionHandler","registerInputInteractionHandler","deregisterInputInteractionHandler","registerValidationAttributeChangeHandler","deregisterValidationAttributeChangeHandler","getNativeInput","isFocused","activateLineRipple","deactivateLineRipple","setLineRippleTransformOrigin","shakeLabel","floatLabel","setLabelRequired","hasLabel","getLabelWidth","hasOutline","notchOutline","closeOutline","required","shouldFloat","styleFloating_","validationObserver_","setCharacterCounter_","nativeInput","attributeName","styleValidity_","openNotch","styleFocused_","shouldShake","showToScreenReader","isDisabled","targetEvent","targetClientRect","normalizedX","autoCompleteFocus","setValue","isNativeInputValid_","setValid","setUseNativeValidation","useNativeValidation","setDisabled","styleDisabled_","setHelperTextContent","setLeadingIconAriaLabel","setAriaLabel","setLeadingIconContent","setTrailingIconAriaLabel","setTrailingIconContent","validity","badInput","setValidity","isFloating","MDCTextField","rippleFactory","lineRippleFactory","helperTextFactory","characterCounterFactory","iconFactory","labelFactory","outlineFactory","input_","labelElement","label_","lineRippleElement","lineRipple_","outlineElement","outline_","helperTextStrings","nextElementSibling","hasHelperLine","helperTextEl","characterCounterStrings","characterCounterEl","leadingIconEl","trailingIconEl","prefix_","suffix_","createRipple_","minLength","prefixText","suffixText","focus","getRootAdapterMethods_","getInputAdapterMethods_","getLabelAdapterMethods_","getLineRippleAdapterMethods_","getOutlineAdapterMethods_","getFoundationMap_","mutationsList","mutation","getAttributesList","attributes","activeElement","getWidth","shake","isRequired","setRequired","setRippleCenter","closeNotch","notch","foundationForTextField","isTextArea","isOutlined","ponyfill","supportsCssVariables_","supportsCssVariables","windowObj","forceRefresh","supportsCssVars","CSS","supports","explicitlySupportsCssVars","weAreFeatureDetectingSafari10plus","getNormalizedEventCoords","pageOffset","clientRect","normalizedY","documentX","documentY","touchEvent","changedTouches","pageX","pageY","mouseEvent","_classCallCheck","Constructor","_defineProperties","_createClass","protoProps","staticProps","_createForOfIteratorHelper","it","normalCompletion","didErr","dataAttribute","resultsList","highlight","selectedResult","getInput","createResultsList","renderResults","destination","insertAdjacentElement","addResultsToList","dataSrc","resultItem","record","resultIndex","clearResults","onSelection","field","feedback","resultsValues","selection","query","HTMLInputElement","results","list","find","currentTarget","navigation","childNodes","liLength","liSelected","removeSelection","nextSibling","previousSibling","highlightSelection","onkeydown","onmousedown","autoComplete","_config$selector","_config$data","_src","_config$data$cache","_config$trigger","trigger","_config$trigger$event","_config$trigger$condi","condition","_config$searchEngine","searchEngine","_config$threshold","threshold","_config$debounce","_config$resultsList","_config$resultsList$r","_config$resultsList$c","_config$resultsList$p","_config$resultsList$e","resultsListElement","_config$resultsList$n","navigation$$1","_config$sort","placeHolder","_config$maxResults","maxResults","_config$resultItem","_config$resultItem$co","_config$resultItem$el","resultItemElement","noResults","_config$highlight","highlight$$1","resultsListView","view","recordLowerCase","searchPosition","recordChar","resList","search","recordValue","queryValue","_step","_iterator","_this2","func","inDebounce","inputValue","HTMLTextAreaElement","manipulate","renderResultsList","triggerCondition","eventEmitter","listMatchedResults","dataStream","eventType","_this3","ignite","factory","HELPER_TEXT_PERSISTENT","HELPER_TEXT_VALIDATION_MSG","ARIA_HIDDEN","ROLE","MDCTextFieldHelperTextFoundation","setAttr","removeAttr","setPersistent","isPersistent","setValidation","isValidation","inputIsValid","helperTextIsPersistent","validationMsgNeedsDisplay","hide_","LABEL_FLOAT_ABOVE","LABEL_REQUIRED","LABEL_SHAKE","MDCFloatingLabelFoundation","shakeAnimationEndHandler_","handleShakeAnimationEnd_","NOTCH_ELEMENT_SELECTOR","NOTCH_ELEMENT_PADDING","OUTLINE_NOTCHED","OUTLINE_UPGRADED","MDCNotchedOutlineFoundation","setNotchWidthProperty","removeNotchWidthProperty","notchWidth","MDCNotchedOutline","notchElement_","transitionDuration","removeProperty","MDCFloatingLabel","LINE_RIPPLE_ACTIVE","LINE_RIPPLE_DEACTIVATING","MDCLineRippleFoundation","transitionEndHandler_","handleTransitionEnd","registerEventHandler","deregisterEventHandler","xCoordinate","isDeactivating","propertyName","MDCLineRipple","MDCList","querySelectorAll","isSingleSelectionList","handleClick_","handleClickEvent_","handleKeydown_","handleKeydownEvent_","focusInEventListener_","handleFocusInEvent_","focusOutEventListener_","handleFocusOutEvent_","initializeListType","getPrimaryText","singleLineText","checkboxListItems","singleSelectedListItem","radioSelectedListItem","preselectedItems","selectedIndex","listItem","listElements","singleSelection","attr","checked","toggleEl","initEvent","tabIndexValue","getListItemIndex_","eventTarget","nearestParent","ICON_EVENT","ICON_ROLE","MDCTextFieldIconFoundation","savedTabIndex_","interactionHandler_","handleInteraction","getAttr","notifyIconAction","isEnterKey","MDCTextFieldIcon","FOCUS_SENTINEL_CLASS","FocusTrap","elFocusedBeforeTrapFocus","trapFocus","focusableEls","getFocusableElements","HTMLElement","wrapTabFocus","skipInitialFocus","focusInitialElement","initialFocusEl","releaseFocus","sentinelEl","sentinelStart","createSentinel","sentinelEnd","insertBefore","children","focusIndex","isDisabledOrHidden","isTabbableAndVisible","tabIndex","isProgrammaticallyHidden","visibility","sentinel","scroll_to_element","scrollTop","clientTop","header","scroll","behavior","amplitude","getInstance","userId","setUserId","identify","Identify","userName","EventTracking","track","location","pathname","logEvent","MDCTextFieldHelperText","ACTIVE","FADE","NO_TRANSITION","CONTENT_SELECTOR","MDCTabIndicatorFoundation","computeContentClientRect","setContentStyleProperty","MDCFadingTabIndicatorFoundation","MDCSlidingTabIndicatorFoundation","previousIndicatorClientRect","currentClientRect","widthDelta","xPosition","MDCTabIndicator","content_","_inheritsLoose","subClass","superClass","_getPrototypeOf","_setPrototypeOf","_isNativeReflectConstruct","construct","sham","_construct","Parent","Class","Function","_wrapNativeSuper","Wrapper","_createForOfIteratorHelperLoose","LuxonError","_Error","InvalidDateTimeError","_LuxonError","toMessage","InvalidIntervalError","_LuxonError2","InvalidDurationError","_LuxonError3","ConflictingSpecificationError","_LuxonError4","InvalidUnitError","_LuxonError5","InvalidArgumentError","_LuxonError6","ZoneIsAbstractError","_LuxonError7","DATE_SHORT","DATE_MED","DATE_MED_WITH_WEEKDAY","DATE_FULL","DATE_HUGE","TIME_SIMPLE","TIME_WITH_SECONDS","TIME_WITH_SHORT_OFFSET","timeZoneName","TIME_WITH_LONG_OFFSET","TIME_24_SIMPLE","hour12","TIME_24_WITH_SECONDS","TIME_24_WITH_SHORT_OFFSET","TIME_24_WITH_LONG_OFFSET","DATETIME_SHORT","DATETIME_SHORT_WITH_SECONDS","DATETIME_MED","DATETIME_MED_WITH_SECONDS","DATETIME_MED_WITH_WEEKDAY","DATETIME_FULL","DATETIME_FULL_WITH_SECONDS","DATETIME_HUGE","DATETIME_HUGE_WITH_SECONDS","isUndefined","isInteger","hasIntl","DateTimeFormat","hasFormatToParts","formatToParts","hasRelative","RelativeTimeFormat","bestBy","by","best","pair","pick","integerBetween","padStart","minus","repeat","parseInteger","parseMillis","towardZero","trunc","isLeapYear","daysInYear","daysInMonth","modMonth","floorMod","objToLocalTS","UTC","setUTCFullYear","getUTCFullYear","weeksInWeekYear","weekYear","untruncateYear","parseZoneInfo","ts","offsetFormat","timeZone","intlOpts","modified","intl","without","signedOffset","offHourStr","offMinuteStr","offHour","offMin","is","asNumber","numericValue","normalizeObject","normalizer","nonUnitKeys","u","formatOffset","hours","minutes","RangeError","timeObject","ianaRegex","monthsLong","monthsShort","monthsNarrow","months","weekdaysLong","weekdaysShort","weekdaysNarrow","weekdays","meridiems","erasLong","erasShort","erasNarrow","eras","stringifyTokens","splits","tokenToString","literal","_macroTokenToFormatOpts","DD","DDD","DDDD","tt","ttt","tttt","TT","TTT","TTTT","ff","fff","ffff","FF","FFF","FFFF","Formatter","formatOpts","loc","systemLoc","parseFormat","fmt","currentFull","bracketed","macroTokenToFormatOpts","_proto","formatWithSystemDefault","dt","redefaultToSystem","dtFormatter","formatDateTime","formatDateTimeParts","resolvedOptions","forceSimple","padTo","numberFormatter","formatDateTimeFromString","knownEnglish","listingMode","useDateTimeFormatter","outputCalendar","extract","isOffsetFixed","allowZ","zone","meridiem","meridiemForDateTime","standalone","monthForDateTime","weekdayForDateTime","era","eraForDateTime","offsetName","zoneName","weekNumber","ordinal","maybeMacro","formatDurationFromString","dur","lildur","tokenToField","tokens","realTokens","found","collapsed","shiftTo","mapped","Invalid","explanation","Zone","equals","otherZone","singleton","LocalZone","_Zone","getTimezoneOffset","matchingRegex","dtfCache","typeToPos","ianaZoneCache","IANAZone","isValidZone","isValidSpecifier","parseGMTOffset","specifier","dtf","formatted","filled","_formatted$i","partsOffset","fMonth","fDay","hackyOffset","asTS","over","singleton$1","FixedOffsetZone","fixed","utcInstance","parseSpecifier","InvalidZone","normalizeZone","defaultZone","lowered","defaultLocale","defaultNumberingSystem","defaultOutputCalendar","throwOnInvalid","Settings","resetCaches","Locale","numberingSystem","intlDTCache","getCachedDTF","locString","intlNumCache","intlRelCache","getCachedRTF","_opts","cacheKeyOpts","excluded","sourceKeys","_objectWithoutPropertiesLoose","inf","sysLocaleCache","listStuff","defaultOK","englishFn","intlFn","PolyNumberFormatter","minimumIntegerDigits","getCachedINF","PolyDateFormatter","universal","gmtOffset","offsetZ","isOffsetZoneSupported","DateTime","fromMillis","_proto2","toJSDate","tokenFormat","knownFormat","dateTimeHuge","formatString","PolyRelFormatter","isEnglish","rtf","_proto3","narrow","years","quarters","weeks","days","seconds","lastable","isDay","isInPast","fmtValue","singular","lilUnits","fmtUnit","formatRelativeTime","numbering","specifiedLocale","_parseLocaleString","localeStr","uIndex","smaller","calendar","parseLocaleString","parsedLocale","parsedNumberingSystem","parsedOutputCalendar","intlConfigString","weekdaysCache","monthsCache","meridiemCache","eraCache","fastNumbersCached","fromOpts","defaultToEN","computedSys","systemLocale","_temp","_proto4","hasFTP","isActuallyEn","hasNoWeirdness","alts","redefaultToEN","formatStr","ms","utc","mapMonths","mapWeekdays","_this4","matching","fastNumbers","relFormatter","combineRegexes","regexes","full","combineExtractors","extractors","ex","mergedVals","mergedZone","cursor","_ex","patterns","_patterns","_patterns$_i","regex","extractor","simpleParse","offsetRegex","isoTimeBaseRegex","isoTimeRegex","isoTimeExtensionRegex","extractISOWeekData","extractISOOrdinalData","sqlTimeRegex","sqlTimeExtensionRegex","int","extractISOYmd","extractISOTime","milliseconds","extractISOOffset","fullOffset","extractIANAZone","isoTimeOnly","isoDuration","extractISODuration","yearStr","monthStr","weekStr","dayStr","hourStr","minuteStr","secondStr","millisecondsStr","hasNegativePrefix","negativeSeconds","maybeNegate","force","obsOffsets","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","fromStrings","weekdayStr","rfc2822","extractRFC2822","obsOffset","milOffset","rfc1123","rfc850","ascii","extractRFC1123Or850","extractASCII","isoYmdWithTimeExtensionRegex","isoWeekWithTimeExtensionRegex","isoOrdinalWithTimeExtensionRegex","isoTimeCombinedRegex","extractISOYmdTimeAndOffset","extractISOWeekTimeAndOffset","extractISOOrdinalDataAndTime","extractISOTimeAndOffset","extractISOTimeOnly","sqlYmdWithTimeExtensionRegex","sqlTimeCombinedRegex","extractISOYmdTimeOffsetAndIANAZone","extractISOTimeOffsetAndIANAZone","lowOrderMatrix","casualMatrix","daysInYearAccurate","daysInMonthAccurate","accurateMatrix","orderedUnits","reverseUnits","conf","conversionAccuracy","Duration","convert","matrix","fromMap","fromUnit","toMap","toUnit","conv","antiTrunc","accurate","invalid","isLuxonDuration","normalizeUnit","fromISO","parseISODuration","fromISOTime","parseISOTimeOnly","isDuration","toFormat","fmtOpts","toObject","includeConfig","toISO","toISOTime","millis","toMillis","suppressMilliseconds","suppressSeconds","includePrefix","toJSON","as","valueOf","plus","friendlyDuration","negate","mapUnits","_Object$keys","reconfigure","vals","normalizeValues","lastUnit","_step2","built","accumulated","_iterator2","own","ak","down","negated","_i2","_Object$keys2","_step3","_iterator3","durationish","INVALID$1","validateStartEnd","Interval","isLuxonInterval","fromDateTimes","builtStart","friendlyDateTime","builtEnd","validateError","_split","startIsValid","endIsValid","_dur","isInterval","toDuration","hasSame","isEmpty","isAfter","dateTime","isBefore","splitAt","dateTimes","splitBy","divideEqually","numberOfParts","overlaps","abutsStart","abutsEnd","engulfs","intersection","union","intervals","_intervals$sort$reduc","sofar","xor","_Array$prototype","currentCount","ends","difference","toISODate","dateFormat","_temp2","_ref3$separator","separator","invalidReason","mapEndpoints","mapFn","Info","hasDST","setZone","isValidIANAZone","_ref$locale","_ref$numberingSystem","_ref$locObj","locObj","_ref$outputCalendar","monthsFormat","_ref2$locale","_ref2$numberingSystem","_ref2$locObj","_ref2$outputCalendar","_temp3","_ref3$locale","_ref3$numberingSystem","_ref3$locObj","weekdaysFormat","_temp4","_ref4$locale","_ref4$numberingSystem","_ref4$locObj","_temp5","_ref5$locale","_temp6","_ref6$locale","features","intlTokens","zones","relative","dayDiff","earlier","later","utcDayStart","toUTC","keepLocalTime","_diff","_highOrderDiffs","lowestOrder","highWater","_differs","_differs$_i","differ","_cursor$plus","_cursor$plus2","highOrderDiffs","remainingMillis","lowerOrderUnits","_cursor$plus3","_Duration$fromMillis","numberingSystems","arab","arabext","bali","beng","deva","fullwide","gujr","hanidec","khmr","knda","laoo","limb","mlym","mong","mymr","orya","tamldec","telu","thai","tibt","latn","numberingSystemsUTF16","hanidecChars","digitRegex","intUnit","post","deser","code","_numberingSystemsUTF","parseDigits","spaceOrNBSP","spaceOrNBSPRegExp","fixListRegex","stripInsensitivities","oneOf","startIndex","groups","simple","partTypeStyleToTokenVal","short","long","dayperiod","dayPeriod","dummyDateTimeCache","maybeExpandMacroToken","part","tokenForPart","explainFromTokens","expandMacroTokens","one","two","three","four","six","oneOrTwo","oneToThree","oneToSix","oneToNine","twoToFour","fourToSix","unitate","disqualifyingUnit","_buildRegex","buildRegex","regexString","handlers","_match","matchIndex","rawMatches","_ref6","q","toField","dateTimeFromMatches","nonLeapLadder","leapLadder","unitOutOfRange","dayOfWeek","js","getUTCDay","computeOrdinal","uncomputeOrdinal","month0","gregorianToWeek","gregObj","weekToGregorian","weekData","weekdayOfJan4","yearInDays","_uncomputeOrdinal","gregorianToOrdinal","gregData","ordinalToGregorian","ordinalData","_uncomputeOrdinal2","hasInvalidGregorianData","validYear","validMonth","validDay","hasInvalidTimeData","validHour","validMinute","validSecond","validMillisecond","INVALID$2","MAX_DATE","unsupportedZone","possiblyCachedWeekData","inst","old","fixOffset","localTS","utcGuess","o2","o3","tsToObj","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","objToTS","adjustTime","oPre","millisToAdd","_fixOffset","parseDataToDateTime","parsedZone","interpretationZone","toTechFormat","toTechTimeFormat","_ref$suppressSeconds","_ref$suppressMillisec","includeOffset","_ref$includePrefix","_ref$includeZone","includeZone","_ref$spaceZone","spaceZone","_ref$format","defaultUnitValues","defaultWeekUnitValues","defaultOrdinalUnitValues","orderedUnits$1","orderedWeekUnits","orderedOrdinalUnits","weeknumber","weeksnumber","weeknumbers","weekyear","weekyears","quickDT","tsNow","_objToTS","diffRelative","calendary","ot","_zone","isLuxonDateTime","fromJSDate","zoneToUse","fromSeconds","offsetProvis","containsOrdinal","containsGregorYear","containsGregorMD","containsGregor","definiteWeekDef","defaultValues","useWeekData","objNow","foundFirst","validWeek","validWeekday","hasInvalidWeekData","validOrdinal","hasInvalidOrdinalData","_objToTS2","_parseISODate","parseISODate","fromRFC2822","_parseRFC2822Date","preprocessRFC2822","parseRFC2822Date","fromHTTP","_parseHTTPDate","parseHTTPDate","fromFormat","_opts$locale","_opts$numberingSystem","_parseFromTokens","_explainFromTokens","parseFromTokens","fromString","fromSQL","_parseSQL","parseSQL","isDateTime","resolvedLocaleOpts","_Formatter$create$res","toLocal","_ref3$keepLocalTime","_ref3$keepCalendarTim","keepCalendarTime","newTS","offsetGuess","setLocale","mixed","settingWeekStuff","_objToTS4","normalizedUnit","_this$plus","toLocaleString","toLocaleParts","_ref5$format","toISOWeekDate","_ref6$suppressMillise","_ref6$suppressSeconds","_ref6$includeOffset","_ref6$includePrefix","_ref6$format","toRFC2822","toHTTP","toSQLDate","toSQLTime","_ref7","_ref7$includeOffset","_ref7$includeZone","toSQL","toSeconds","toBSON","otherDateTime","durOpts","otherIsLater","diffed","diffNow","until","inputMs","otherZoneDateTime","toRelative","toRelativeCalendar","every","fromFormatExplain","_options$locale","_options$numberingSys","fromStringExplain","dateTimeish","VERSION","Tooltips","prepareTooltip","hideAll","shouldAnchorRight","onclick","prepareNagivateToOnClick","afterLogin","prepareRedirectAfterLogin","toggle","_typeof","_defineProperty","_objectSpread","getOwnPropertySymbols","sym","SpecialEventType","IdentifyOperation","LogLevel","Status","isBrowserEnv","fromHttpCode","Success","RateLimit","PayloadTooLarge","Failed","Unknown","Skipped","fallbackGlobalObject","getGlobalObject","process","versions","global","self","globalNamespace","__AMPLITUDE__","getGlobalAmplitudeNamespace","PREFIX","Logger","_logLevel","disable","enable","logLevel","Warn","log","Verbose","Constants","logger","UTF8","utftext","Base64","_keyStr","encode","btoa","atob","unescape","encodeURIComponent","_encode","chr1","chr2","chr3","enc1","enc2","enc3","enc4","output","decode","decodeURIComponent","escape","_decode","nodeType","Buffer","isBuffer","localStorage","logLevels","DISABLE","ERROR","WARN","INFO","_log","_truncateValue","validateProperties","propsType","copy","keyType","validatePropertyValue","invalidValueTypes","valueType","arrayCopy","elemType","validateGroupName","groupName","groupNameType","utils","logLevelName","truncate","groupsType","group","expectedType","getLocation","base64Id","random","ca","expires","expirationDays","domain","secure","sameSite","baseCookie","cookieName","_areCookiesEnabled","getHost","href","hostname","topDomain","levels","cname","_domainSpecific","get$1","nameEq","set$1","Cookie","stored","setRaw","getRaw","setItem","getItem","removeItem","windowLocalStorageAvailable","globalStorage","attrKey","getElementsByTagName","addBehavior","load","XMLDocument","_storageOptionExists","ampLocalStorage","cookieStorage","storage","getStorage","keyPrefix","storageOptionExists","MetadataStorage","storageKey","disableCookies","cookieDomain","writableTopDomain","disableCookieStorage","deviceId","optOut","sessionId","lastEventTime","eventId","identifyId","sequenceNumber","sessionStorage","getCookieStorageKey","AMP_OP_CLEAR_ALL","userPropertiesOperations","_addOperation","clearAll","prepend","setOnce","unset","operation","commonjsGlobal","createCommonjsModule","md5","$","safeAdd","lsw","md5cmn","cnt","md5ff","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","rstr2binl","length8","rstr2hex","hexTab","str2rstrUTF8","rawMD5","rstrMD5","rawHMACMD5","hash","bkey","ipad","opad","rstrHMACMD5","propIsEnumerable","propertyIsEnumerable","objectAssign","test1","test2","test3","letter","shouldUseNative","symbols","strict","queryString","arrayFormat","encoderForArrayFormat","val2","Request","send","XDomainRequest","xdr","onload","responseText","onerror","ontimeout","onprogress","xhr","XMLHttpRequest","onreadystatechange","readyState","setRequestHeader","Revenue","_price","_productId","_quantity","_revenueType","setProductId","productId","setQuantity","quantity","setPrice","price","setRevenueType","revenueType","setEventProperties","eventProperties","_isValidRevenue","_toJSONObject","AsyncStorage","uaParser","undefined$1","FUNC_TYPE","OBJ_TYPE","MODEL","NAME","TYPE","VENDOR","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","util","extend","extensions","mergedRegexes","str1","str2","lowerize","mapper","rgx","ua","arrays","maps","browser","oldsafari","device","amazon","model","sprint","vendor","os","windows","cpu","engine","UAParser","uastring","getResult","navigator","userAgent","rgxmap","getBrowser","getCPU","architecture","getDevice","getEngine","getOS","getUA","setUA","BROWSER","MAJOR","CPU","DEVICE","EMBEDDED","ENGINE","OS","jQuery","Zepto","uuid","DEFAULT_OPTIONS","apiEndpoint","batchEvents","cookieExpiration","sameSiteCookie","cookieForceUpgrade","deferInitialization","deviceIdFromUrlParam","eventUploadPeriodMillis","eventUploadThreshold","forceHttps","includeFbclid","includeGclid","includeReferrer","includeUtm","language","languages","userLanguage","logAttributionCapturedEvent","onError","savedMaxCount","saveEvents","saveParamsReferrerOncePerSession","secureCookie","sessionTimeout","trackingOptions","city","country","carrier","device_manufacturer","device_model","dma","ip_address","os_name","os_version","region","version_name","unsetParamsReferrerOnNewSession","unsentKey","unsentIdentifyKey","uploadBatchSize","AmplitudeClient","instanceName","_instanceName","_unsentEvents","_unsentIdentifys","_ua","_q","_sending","_updateScheduled","_onInit","_eventId","_identifyId","_lastEventTime","_newSession","_sequenceNumber","_sessionId","_isInitialized","_userAgent","apiKey","opt_userId","opt_config","opt_callback","_parseConfig","Prototype","augmentedWindow","augmentedArray","prototypeJsFix","_storageSuffix","_storageSuffixV5","_oldCookiename","_unsentKey","_unsentIdentifyKey","_cookieName","_metadataStorage","hasOldCookie","hasNewCookie","_useOldCookie","hasCookie","_deferInitialization","_generateApiPropertiesTrackingConfig","_apiPropertiesTrackingOptions","tracking_options","_upgradeCookieData","_loadCookieData","_pendingReadStorage","initFromStorage","storedDeviceId","_getInitialDeviceId","_unsetUTMParams","_trackParamsAndReferrer","_validateUnsentEventQueue","_saveCookieData","_sendEventsIfReady","_loadSavedUnsentEvents","runQueuedFunctions","deleteLowerLevelDomainCookies","cookieHost","hostParts","cookieHostParts","deleteDomain","configDeviceId","_getDeviceIdFromUrlParam","_getUrlParams","queue","userProperties","user_properties","event_properties","_migrateUnsentEvents","unsentEventsString","itemsToSet","itemsToRemove","catch","utmProperties","referrerProperties","gclidProperties","fbclidProperties","_initUtmData","_saveReferrer","_getReferrer","_saveGclid","_saveFbclid","attributionProperties","parseValidateAndLoad","_apiKeySet","methodName","savedUnsentEventsString","_getFromStorage","unsentEvents","_parseSavedUnsentEventsString","_setInStorage","isNewSession","onInit","getSessionId","nextEventId","nextIdentifyId","nextSequenceNumber","_unsentCount","sendEvents","cookieData","_loadCookieDataProps","queryParams","cookieParams","rawCookie","fetchParam","utmSource","utmMedium","utmCampaign","utmTerm","utmContent","utmData","addIfNotNull","queryName","_sendParamsReferrerUserProperties","referrer","urlParams","gclid","fbclid","_getReferringDomain","referrerInfo","referring_domain","serializedUnsentEvents","serializedIdentifys","unsentIdentify","setDomain","_shouldDeferCall","setGroup","groupType","_logEvent","setOptOut","setSessionId","resetSessionId","regenerateDeviceId","setDeviceId","setUserProperties","sanitized","clearUserProperties","_convertProxyObjectToRealObject","identify_obj","groupIdentify","group_type","group_name","setVersionName","versionName","apiProperties","groupProperties","eventTime","osName","osVersion","deviceModel","device_id","user_id","event_id","session_id","event_type","_shouldTrackField","api_properties","library","sequence_number","group_properties","user_agent","_limitEventsQueued","fields","logEventWithTimestamp","logEventWithGroups","_isNumber","logRevenueV2","revenue_obj","logRevenue","product","special","removeEvents","maxEventId","maxIdentifyId","response","_removeEvents","eventQueue","maxId","filteredEvents","unsentEvent","protocol","numEvents","mergedEvents","_mergeEventsAndIdentifys","eventsToSend","uploadTime","client","upload_time","checksum","eventIndex","identifyIndex","noIdentifys","noEvents","setGlobalUserProperties","__VERSION__","_initializationDeferred","enableTracking","Amplitude","_instances","newInstance","_iq","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","nextTick","env","argv","on","once","off","removeAllListeners","prependListener","prependOnceListener","binding","cwd","chdir","dir","umask","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","Uint8Array","encodingOrOffset","allocUnsafe","ArrayBuffer","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","write","buffer","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","inspect","thisStart","thisEnd","thisCopy","targetCopy","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","dst","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","LN2","emoji","fetch","json","placeholder","ticker","onsubmit","blur","prepare_header_search","set_lazy_image_url","image","prepare_lazy_load","images","IntersectionObserver","isIntersecting","unobserve","FIXED_CLASS","FIXED_SCROLLED_CLASS","SHORT_CLASS","SHORT_COLLAPSED_CLASS","SHORT_HAS_ACTION_ITEM_CLASS","DEBOUNCE_THROTTLE_RESIZE_TIME_MS","MAX_TOP_APP_BAR_HEIGHT","ACTION_ITEM_SELECTOR","NAVIGATION_EVENT","NAVIGATION_ICON_SELECTOR","TITLE_SELECTOR","MDCTopAppBarBaseFoundation","getTopAppBarHeight","notifyNavigationIconClicked","getViewportScrollY","getTotalActionItems","handleTargetScroll","handleWindowResize","handleNavigationClick","MDCTopAppBarFoundation","wasDocked_","isDockedShowing_","currentAppBarOffsetTop_","isCurrentlyBeingResized_","resizeThrottleId_","resizeDebounceId_","lastScrollPosition_","topAppBarHeight_","currentScrollPosition","moveTopAppBar_","throttledResizeHandler_","checkForUpdate_","offscreenBoundaryTop","hasAnyPixelsOffscreen","hasAnyPixelsOnscreen","partiallyShowing","currentHeight","MDCFixedTopAppBarFoundation","wasScrolled_","MDCShortTopAppBarFoundation","isCollapsed_","isAlwaysCollapsed_","setAlwaysCollapsed","collapse_","maybeCollapseBar_","getAlwaysCollapsed","uncollapse_","MDCTopAppBar","navIcon_","icons","iconRipples_","icon","scrollTarget_","handleNavigationClick_","handleWindowResize_","handleTargetScroll_","isFixed","iconRipple","setScrollTarget","win","ANIMATE","DISMISSIBLE","MODAL","APP_CONTENT_SELECTOR","CLOSE_EVENT","OPEN_EVENT","SCRIM_SELECTOR","MDCDismissibleDrawerFoundation","elementHasClass","notifyClose","notifyOpen","saveFocus","restoreFocus","focusActiveNavigationItem","isOpening","isClosing","isElement_","closed_","opened_","MDCModalDrawerFoundation","handleScrimClick","MDCDrawer","list_","focusTrapFactory","listFactory","listEl","wrapFocus","focusTrapFactory_","surfaceEl","scrim_","handleScrimClick_","focusTrap_","handleTransitionEnd_","previousFocus_","previousFocus","activeNavItemEl","drawer","topAppBar","headers","ok_clicked","dataLayer","gtag","append_quantcast","confirm_button","cookie_message","link_to_more","link","append_cookie_message","script","async","append_quantcast_if_verified","append_cookie_message_if_not_verified","PercentFormat","calculatePercentage","amnt","writeDianomiScript","contextId","dianomiContextId","renderAd","innerWidth","shouldRenderAd","horizontalScrollbarHeight_","ANIMATING","SCROLL_AREA_SCROLL","SCROLL_TEST","AREA_SELECTOR","MDCTabScrollerRTL","MDCTabScrollerRTLDefault","getScrollPositionRTL","currentScrollLeft","getScrollAreaScrollLeft","calculateScrollEdges_","scrollToRTL","scrollX","edges","clampedScrollLeft","clampScrollValue_","finalScrollPosition","scrollDelta","incrementScrollRTL","getAnimatingScrollPosition","getScrollContentOffsetWidth","getScrollAreaOffsetWidth","MDCTabScrollerRTLNegative","translateX","contentWidth","MDCTabScrollerRTLReverse","MDCTabScrollerFoundation","isAnimating_","eventTargetMatchesSelector","addScrollAreaClass","setScrollAreaStyleProperty","setScrollContentStyleProperty","getScrollContentStyleValue","setScrollAreaScrollLeft","computeScrollAreaClientRect","computeScrollContentClientRect","computeHorizontalScrollbarHeight","horizontalScrollbarHeight","getScrollPosition","isRTL_","computeCurrentScrollPositionRTL_","currentTranslateX","calculateCurrentTranslateX_","stopScrollAnimation_","evtTarget","incrementScroll","scrollXIncrement","animate_","getIncrementScrollOperation_","incrementScrollImmediate","scrollTo","scrollToRTL_","scrollTo_","getRTLScroller","rtlScrollerInstance_","rtlScrollerFactory_","transformValue","matrixParams","tx","currentScrollX","safeScrollX","targetScrollX","getAnimatingScrollPosition_","scrollLeft","initialScrollLeft","newScrollLeft","rootClientRect","contentClientRect","rightEdgeDelta","MDCTabScroller","area_","handleInteraction_","propName","offsetWidth","documentObj","shouldCacheResult","offsetHeight","getScrollContentWidth","INTERACTED_EVENT","RIPPLE_SELECTOR","TABINDEX","TAB_INDICATOR_SELECTOR","MDCTabFoundation","focusOnActivate_","activateIndicator","deactivateIndicator","notifyInteracted","getOffsetLeft","getOffsetWidth","getContentOffsetLeft","getContentOffsetWidth","isActive","setFocusOnActivate","focusOnActivate","computeDimensions","rootWidth","rootLeft","contentLeft","contentRight","rootRight","MDCTab","tabIndicatorFactory","rippleSurface","rippleAdapter","rippleFoundation","ripple_","tabIndicatorElement","tabIndicator_","tabId","computeIndicatorClientRect","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","END_KEY","ENTER_KEY","HOME_KEY","SPACE_KEY","TAB_ACTIVATED_EVENT","TAB_SCROLLER_SELECTOR","TAB_SELECTOR","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","END_KEYCODE","ENTER_KEYCODE","EXTRA_SCROLL_AMOUNT","HOME_KEYCODE","SPACE_KEYCODE","ACCEPTABLE_KEYS","KEYCODE_MAP","MDCTabBarFoundation","useAutomaticActivation_","isRTL","setActiveTab","activateTabAtIndex","deactivateTabAtIndex","focusTabAtIndex","getTabIndicatorClientRectAtIndex","getTabDimensionsAtIndex","getPreviousActiveTabIndex","getFocusedTabIndex","getIndexOfTabById","getTabListLength","notifyTabActivated","setUseAutomaticActivation","useAutomaticActivation","activateTab","previousClientRect","previousActiveIndex","indexIsInRange_","scrollIntoView","getKeyFromEvent_","isActivationKey_","determineTargetFromKey_","focusedTabIndex","handleTabInteraction","scrollIntoViewRTL_","scrollIntoView_","origin","maxIndex","calculateScrollIncrement_","scrollPosition","barWidth","nextTabDimensions","relativeContentLeft","leftIncrement","rightIncrement","calculateScrollIncrementRTL_","scrollContentWidth","findAdjacentTabIndexClosestToEdge_","tabDimensions","relativeRootLeft","relativeRootRight","relativeRootDelta","findAdjacentTabIndexClosestToEdgeRTL_","rootDelta","scrollIncrement","tabIdCounter","MDCTabBar","tabList_","tab","tabFactory","tabScrollerFactory","instantiateTabs_","tabScroller_","instantiateTabScroller_","handleTabInteraction_","tabElements","getTabElements_","tabScrollerElement","holdingInput","submitCalculatePayment","setNotificationQuantity","eventTrackingData","calculatePayment","dividend_declared","valuesDiv","qty","setPaymentCalculation","div_class","payment","formatMoney","local_amount","local_currency","buildGraph","graphCanvas","chartOptions","graphLabels","graphData","yAxes","textValues","FORMATS","_id","_create","rounder","_excluded","_objectWithoutProperties","sourceSymbolKeys","localeR","numberingSystemR","outputCalendarR","_parseLocaleString2","_ex2","_match2","_match3","_match4","_split2","_intervals$sort$reduc2","_ref4$separator","differs","_highOrderDiffs2","_ref9","unitForToken","_buildRegex2","_ref12","_fixOffset2","tsFinal","offsetFinal","_parseISODate2","_parseRFC2822Date2","_parseHTTPDate2","_parseFromTokens2","_parseSQL2","_objToTS8","renderGraph","downloadAndDrawChart","receiveResponse","dates","drawChart","dataUnavailable","graphOptions","prices","pointRadius","yields","scaleLabel","labelString","showReleventMessage","prepareForm","security","formSubmitted","setError","handleResponse","addNotificationResponse","signupResponse","addNotificationSuccess","addNotificationError","redirectToNotifications","redirectToCreateAccount","showLoginMessage","setBoxContent","email","emailInput","optimized_graph","annual_graph","prepareLandingPage","tabBar","securityTabClicked","loadYieldsTab","updateLinksForUser","updateLink","prepareTab","renderOptimizedYieldGraph","renderAnnualDividendsGraph"],"mappings":"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","file":"js/security-e574057a349c678eb378.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://cdn-staging.dividendmax.com/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 113);\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nexport var __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\nexport function __rest(s, e) {\n var t = {};\n\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nexport function __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n}\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nexport function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nexport function __createBinding(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}\nexport function __exportStar(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n\n return ar;\n}\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\n\n return r;\n}\n;\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n\n function fulfill(value) {\n resume(\"next\", value);\n }\n\n function reject(value) {\n resume(\"throw\", value);\n }\n\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n}\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: n === \"return\"\n } : f ? f(v) : v;\n } : f;\n }\n}\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n}\n;\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result.default = mod;\n return result;\n}\nexport function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n}\nexport function __classPrivateFieldGet(receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n\n return privateMap.get(receiver);\n}\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n\n privateMap.set(receiver, value);\n return value;\n}","import {MDCTextField} from '@material/textfield'\n\nexport link_button = (label, url, raised, secondary, outlined) ->\n a = element_with_class('A', 'mdc-button')\n a.setAttribute('href', url)\n a.classList.add 'mdc-button--raised' if raised\n a.classList.add 'mdc-button--outlined' if outlined\n a.classList.add 'mdc-theme--secondary-bg' if secondary\n a.append element_with_class('DIV', 'mdc-button__ripple')\n span = element_with_class('SPAN', 'mdc-button__label')\n span.innerText = label\n a.append span\n a\n\nexport submit_button = (label, raised, secondary, outlined) ->\n button = element_with_class('button', 'mdc-button')\n button.classList.add 'mdc-button--raised' if raised\n button.classList.add 'mdc-theme--secondary-bg' if secondary\n button.classList.add 'mdc-button--outlined' if outlined\n button.append element_with_class('div', 'mdc-button__ripple')\n button.append element_with_content('span', label, 'mdc-button__label')\n button\n\nexport text_field = (label, name, value, extra_classes...) ->\n el = element_with_class('label', 'mdc-text-field', 'mdc-text-field--filled', extra_classes...)\n el.append element_with_class('span', 'mdc-text-field__ripple')\n input = element_with_class('input', 'mdc-text-field__input')\n input.setAttribute('label', label)\n input.setAttribute('type', 'text')\n input.setAttribute('name', name)\n input.value = value\n el.append input\n el.append element_with_content('span', label, 'mdc-floating-label')\n el.append element_with_class('span', 'mdc-line-ripple')\n el\n\nexport money_input_field = (label, name, value, symbol, extra_classes...) ->\n el = element_with_class('label', 'mdc-text-field', 'mdc-text-field--filled', extra_classes...)\n el.append element_with_class('span', 'mdc-text-field__ripple')\n el.append element_with_content('span', symbol, 'mdc-text-field__affix', 'mdc-text-field__affix--prefix', 'currency-symbol')\n input = element_with_class('input', 'mdc-text-field__input')\n input.setAttribute('label', label)\n input.setAttribute('type', 'text')\n input.setAttribute('name', name)\n input.setAttribute 'pattern', \"[0-9\\\\.]*\"\n input.setAttribute 'inputmode', \"decimal\"\n input.value = value\n el.append input\n floatingLabel = element_with_content('span', label, 'mdc-floating-label')\n el.append floatingLabel\n el.append element_with_class('span', 'mdc-line-ripple')\n el\n\nexport element_with_class = (element, classes...) ->\n el = document.createElement(element.toUpperCase())\n el.classList.add c for c in classes when c isnt null\n el\n\nexport element_with_content = (element, content, classes...) ->\n el = element_with_class(element, classes...)\n if typeof(content) == 'string' and content[0] == '&'\n el.innerHTML = content\n else\n el.append content\n el\n\n\nexport material_select_option = (label, value, selected) ->\n li = element_with_class('li', \"mdc-list-item\")\n li.dataset.value = value\n li.setAttribute('role', 'option')\n li.setAttribute('aria-selected', 'true') if selected\n li.append element_with_class('span', \"mdc-list-item__ripple\")\n li.append element_with_content('span', label, \"mdc-list-item__text\")\n li\n\nexport material_select = (label) ->\n select = element_with_class('div', 'mdc-select', 'mdc-select--filled')\n select.append select_anchor(label)\n\n menu = element_with_class('div', \"mdc-select__menu\", \"mdc-menu\", \"mdc-menu-surface\")\n ul = element_with_class('ul', 'mdc-list')\n ul.setAttribute('role', 'listbox')\n ul.setAttribute('aria-label', label)\n menu.append ul\n select.append menu\n select\n\nselect_anchor = (label) ->\n anchor = element_with_class('div', 'mdc-select__anchor')\n anchor.setAttribute('role', 'button')\n anchor.setAttribute('aria-haspopup', 'listbox')\n anchor.setAttribute('aria-expanded', 'false')\n anchor.append element_with_class('span', 'mdc-select__ripple')\n anchor.append element_with_content('span', label, 'mdc-floating-label')\n anchor.append element_with_class('span', 'mdc-select__selected-text')\n anchor.append dropdown_icon()\n anchor.append element_with_class('span', 'mdc-line-ripple')\n anchor\n\ndropdown_icon = ->\n svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg')\n svg.classList.add \"mdc-select__dropdown-icon-graphic\"\n svg.setAttributeNS null, 'viewBox', \"7 10 10 5\"\n svg.setAttributeNS null, 'focusable', \"false\"\n inactive_polygon = document.createElementNS('http://www.w3.org/2000/svg', 'polygon')\n inactive_polygon.classList.add \"mdc-select__dropdown-icon-inactive\"\n inactive_polygon.setAttributeNS null, 'stroke', \"none\"\n inactive_polygon.setAttributeNS null, 'fill-rule', \"evenodd\"\n inactive_polygon.setAttributeNS null, 'points', \"7 10 12 15 17 10\"\n\n active_polygon = document.createElementNS('http://www.w3.org/2000/svg', 'polygon')\n active_polygon.classList.add \"mdc-select__dropdown-icon-active\"\n active_polygon.setAttributeNS null, 'stroke', \"none\"\n active_polygon.setAttributeNS null, 'fill-rule', \"evenodd\"\n active_polygon.setAttributeNS null, 'points', \"7 15 12 10 17 15\"\n\n svg.appendChild inactive_polygon\n svg.appendChild active_polygon\n element_with_content('span', svg, \"mdc-select__dropdown-icon\")","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nvar cssClasses = {\n LIST_ITEM_ACTIVATED_CLASS: 'mdc-list-item--activated',\n LIST_ITEM_CLASS: 'mdc-list-item',\n LIST_ITEM_DISABLED_CLASS: 'mdc-list-item--disabled',\n LIST_ITEM_SELECTED_CLASS: 'mdc-list-item--selected',\n LIST_ITEM_TEXT_CLASS: 'mdc-list-item__text',\n LIST_ITEM_PRIMARY_TEXT_CLASS: 'mdc-list-item__primary-text',\n ROOT: 'mdc-list'\n};\nvar strings = {\n ACTION_EVENT: 'MDCList:action',\n ARIA_CHECKED: 'aria-checked',\n ARIA_CHECKED_CHECKBOX_SELECTOR: '[role=\"checkbox\"][aria-checked=\"true\"]',\n ARIA_CHECKED_RADIO_SELECTOR: '[role=\"radio\"][aria-checked=\"true\"]',\n ARIA_CURRENT: 'aria-current',\n ARIA_DISABLED: 'aria-disabled',\n ARIA_ORIENTATION: 'aria-orientation',\n ARIA_ORIENTATION_HORIZONTAL: 'horizontal',\n ARIA_ROLE_CHECKBOX_SELECTOR: '[role=\"checkbox\"]',\n ARIA_SELECTED: 'aria-selected',\n CHECKBOX_RADIO_SELECTOR: 'input[type=\"checkbox\"], input[type=\"radio\"]',\n CHECKBOX_SELECTOR: 'input[type=\"checkbox\"]',\n CHILD_ELEMENTS_TO_TOGGLE_TABINDEX: \"\\n .\" + cssClasses.LIST_ITEM_CLASS + \" button:not(:disabled),\\n .\" + cssClasses.LIST_ITEM_CLASS + \" a\\n \",\n FOCUSABLE_CHILD_ELEMENTS: \"\\n .\" + cssClasses.LIST_ITEM_CLASS + \" button:not(:disabled),\\n .\" + cssClasses.LIST_ITEM_CLASS + \" a,\\n .\" + cssClasses.LIST_ITEM_CLASS + \" input[type=\\\"radio\\\"]:not(:disabled),\\n .\" + cssClasses.LIST_ITEM_CLASS + \" input[type=\\\"checkbox\\\"]:not(:disabled)\\n \",\n RADIO_SELECTOR: 'input[type=\"radio\"]'\n};\nvar numbers = {\n UNSET_INDEX: -1,\n TYPEAHEAD_BUFFER_CLEAR_TIMEOUT_MS: 300\n};\nexport { strings, cssClasses, numbers };","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nvar MDCFoundation =\n/** @class */\nfunction () {\n function MDCFoundation(adapter) {\n if (adapter === void 0) {\n adapter = {};\n }\n\n this.adapter = adapter;\n }\n\n Object.defineProperty(MDCFoundation, \"cssClasses\", {\n get: function () {\n // Classes extending MDCFoundation should implement this method to return an object which exports every\n // CSS class the foundation class needs as a property. e.g. {ACTIVE: 'mdc-component--active'}\n return {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCFoundation, \"strings\", {\n get: function () {\n // Classes extending MDCFoundation should implement this method to return an object which exports all\n // semantic strings as constants. e.g. {ARIA_ROLE: 'tablist'}\n return {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCFoundation, \"numbers\", {\n get: function () {\n // Classes extending MDCFoundation should implement this method to return an object which exports all\n // of its semantic numbers as constants. e.g. {ANIMATION_DELAY_MS: 350}\n return {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCFoundation, \"defaultAdapter\", {\n get: function () {\n // Classes extending MDCFoundation may choose to implement this getter in order to provide a convenient\n // way of viewing the necessary methods of an adapter. In the future, this could also be used for adapter\n // validation.\n return {};\n },\n enumerable: true,\n configurable: true\n });\n\n MDCFoundation.prototype.init = function () {// Subclasses should override this method to perform initialization routines (registering events, etc.)\n };\n\n MDCFoundation.prototype.destroy = function () {// Subclasses should override this method to perform de-initialization routines (de-registering events, etc.)\n };\n\n return MDCFoundation;\n}();\n\nexport { MDCFoundation }; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\n\nexport default MDCFoundation;","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __read, __spread } from \"tslib\";\nimport { MDCFoundation } from './foundation';\n\nvar MDCComponent =\n/** @class */\nfunction () {\n function MDCComponent(root, foundation) {\n var args = [];\n\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n\n this.root = root;\n this.initialize.apply(this, __spread(args)); // Note that we initialize foundation here and not within the constructor's default param so that\n // this.root_ is defined and can be used within the foundation class.\n\n this.foundation = foundation === undefined ? this.getDefaultFoundation() : foundation;\n this.foundation.init();\n this.initialSyncWithDOM();\n }\n\n MDCComponent.attachTo = function (root) {\n // Subclasses which extend MDCBase should provide an attachTo() method that takes a root element and\n // returns an instantiated component with its root set to that element. Also note that in the cases of\n // subclasses, an explicit foundation class will not have to be passed in; it will simply be initialized\n // from getDefaultFoundation().\n return new MDCComponent(root, new MDCFoundation({}));\n };\n /* istanbul ignore next: method param only exists for typing purposes; it does not need to be unit tested */\n\n\n MDCComponent.prototype.initialize = function () {\n var _args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n _args[_i] = arguments[_i];\n } // Subclasses can override this to do any additional setup work that would be considered part of a\n // \"constructor\". Essentially, it is a hook into the parent constructor before the foundation is\n // initialized. Any additional arguments besides root and foundation will be passed in here.\n\n };\n\n MDCComponent.prototype.getDefaultFoundation = function () {\n // Subclasses must override this method to return a properly configured foundation class for the\n // component.\n throw new Error('Subclasses must override getDefaultFoundation to return a properly configured ' + 'foundation class');\n };\n\n MDCComponent.prototype.initialSyncWithDOM = function () {// Subclasses should override this method if they need to perform work to synchronize with a host DOM\n // object. An example of this would be a form control wrapper that needs to synchronize its internal state\n // to some property or attribute of the host DOM. Please note: this is *not* the place to perform DOM\n // reads/writes that would cause layout / paint, as this is called synchronously from within the constructor.\n };\n\n MDCComponent.prototype.destroy = function () {\n // Subclasses may implement this method to release any resources / deregister any listeners they have\n // attached. An example of this might be deregistering a resize event from the window object.\n this.foundation.destroy();\n };\n\n MDCComponent.prototype.listen = function (evtType, handler, options) {\n this.root.addEventListener(evtType, handler, options);\n };\n\n MDCComponent.prototype.unlisten = function (evtType, handler, options) {\n this.root.removeEventListener(evtType, handler, options);\n };\n /**\n * Fires a cross-browser-compatible custom event from the component root of the given type, with the given data.\n */\n\n\n MDCComponent.prototype.emit = function (evtType, evtData, shouldBubble) {\n if (shouldBubble === void 0) {\n shouldBubble = false;\n }\n\n var evt;\n\n if (typeof CustomEvent === 'function') {\n evt = new CustomEvent(evtType, {\n bubbles: shouldBubble,\n detail: evtData\n });\n } else {\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(evtType, shouldBubble, false, evtData);\n }\n\n this.root.dispatchEvent(evt);\n };\n\n return MDCComponent;\n}();\n\nexport { MDCComponent }; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\n\nexport default MDCComponent;","/**\n * @license\n * Copyright 2020 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/**\n * KEY provides normalized string values for keys.\n */\nexport var KEY = {\n UNKNOWN: 'Unknown',\n BACKSPACE: 'Backspace',\n ENTER: 'Enter',\n SPACEBAR: 'Spacebar',\n PAGE_UP: 'PageUp',\n PAGE_DOWN: 'PageDown',\n END: 'End',\n HOME: 'Home',\n ARROW_LEFT: 'ArrowLeft',\n ARROW_UP: 'ArrowUp',\n ARROW_RIGHT: 'ArrowRight',\n ARROW_DOWN: 'ArrowDown',\n DELETE: 'Delete',\n ESCAPE: 'Escape'\n};\nvar normalizedKeys = new Set(); // IE11 has no support for new Map with iterable so we need to initialize this\n// by hand.\n\nnormalizedKeys.add(KEY.BACKSPACE);\nnormalizedKeys.add(KEY.ENTER);\nnormalizedKeys.add(KEY.SPACEBAR);\nnormalizedKeys.add(KEY.PAGE_UP);\nnormalizedKeys.add(KEY.PAGE_DOWN);\nnormalizedKeys.add(KEY.END);\nnormalizedKeys.add(KEY.HOME);\nnormalizedKeys.add(KEY.ARROW_LEFT);\nnormalizedKeys.add(KEY.ARROW_UP);\nnormalizedKeys.add(KEY.ARROW_RIGHT);\nnormalizedKeys.add(KEY.ARROW_DOWN);\nnormalizedKeys.add(KEY.DELETE);\nnormalizedKeys.add(KEY.ESCAPE);\nvar KEY_CODE = {\n BACKSPACE: 8,\n ENTER: 13,\n SPACEBAR: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n ARROW_LEFT: 37,\n ARROW_UP: 38,\n ARROW_RIGHT: 39,\n ARROW_DOWN: 40,\n DELETE: 46,\n ESCAPE: 27\n};\nvar mappedKeyCodes = new Map(); // IE11 has no support for new Map with iterable so we need to initialize this\n// by hand.\n\nmappedKeyCodes.set(KEY_CODE.BACKSPACE, KEY.BACKSPACE);\nmappedKeyCodes.set(KEY_CODE.ENTER, KEY.ENTER);\nmappedKeyCodes.set(KEY_CODE.SPACEBAR, KEY.SPACEBAR);\nmappedKeyCodes.set(KEY_CODE.PAGE_UP, KEY.PAGE_UP);\nmappedKeyCodes.set(KEY_CODE.PAGE_DOWN, KEY.PAGE_DOWN);\nmappedKeyCodes.set(KEY_CODE.END, KEY.END);\nmappedKeyCodes.set(KEY_CODE.HOME, KEY.HOME);\nmappedKeyCodes.set(KEY_CODE.ARROW_LEFT, KEY.ARROW_LEFT);\nmappedKeyCodes.set(KEY_CODE.ARROW_UP, KEY.ARROW_UP);\nmappedKeyCodes.set(KEY_CODE.ARROW_RIGHT, KEY.ARROW_RIGHT);\nmappedKeyCodes.set(KEY_CODE.ARROW_DOWN, KEY.ARROW_DOWN);\nmappedKeyCodes.set(KEY_CODE.DELETE, KEY.DELETE);\nmappedKeyCodes.set(KEY_CODE.ESCAPE, KEY.ESCAPE);\nvar navigationKeys = new Set(); // IE11 has no support for new Set with iterable so we need to initialize this\n// by hand.\n\nnavigationKeys.add(KEY.PAGE_UP);\nnavigationKeys.add(KEY.PAGE_DOWN);\nnavigationKeys.add(KEY.END);\nnavigationKeys.add(KEY.HOME);\nnavigationKeys.add(KEY.ARROW_LEFT);\nnavigationKeys.add(KEY.ARROW_UP);\nnavigationKeys.add(KEY.ARROW_RIGHT);\nnavigationKeys.add(KEY.ARROW_DOWN);\n/**\n * normalizeKey returns the normalized string for a navigational action.\n */\n\nexport function normalizeKey(evt) {\n var key = evt.key; // If the event already has a normalized key, return it\n\n if (normalizedKeys.has(key)) {\n return key;\n } // tslint:disable-next-line:deprecation\n\n\n var mappedKey = mappedKeyCodes.get(evt.keyCode);\n\n if (mappedKey) {\n return mappedKey;\n }\n\n return KEY.UNKNOWN;\n}\n/**\n * isNavigationEvent returns whether the event is a navigation event\n */\n\nexport function isNavigationEvent(evt) {\n return navigationKeys.has(normalizeKey(evt));\n}","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/**\n * Determine whether the current browser supports passive event listeners, and\n * if so, use them.\n */\nexport function applyPassive(globalObj) {\n if (globalObj === void 0) {\n globalObj = window;\n }\n\n return supportsPassiveOption(globalObj) ? {\n passive: true\n } : false;\n}\n\nfunction supportsPassiveOption(globalObj) {\n if (globalObj === void 0) {\n globalObj = window;\n } // See\n // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n\n\n var passiveSupported = false;\n\n try {\n var options = {\n // This function will be called when the browser\n // attempts to access the passive property.\n get passive() {\n passiveSupported = true;\n return false;\n }\n\n };\n\n var handler = function () {};\n\n globalObj.document.addEventListener('test', handler, options);\n globalObj.document.removeEventListener('test', handler, options);\n } catch (err) {\n passiveSupported = false;\n }\n\n return passiveSupported;\n}","export generate_recaptcha_token = (callback) ->\n grecaptcha.ready ->\n grecaptcha.execute(document.body.dataset.googleSiteKey, {action: 'submit'}).then (token) ->\n document.querySelector('#recaptcha_token').value = token\n callback()\n\nexport form_params = (selector) ->\n params = params_with_csrf_token()\n form = document.querySelector(selector)\n append_input_to_params(input, params) for input in form.querySelectorAll('input')\n append_input_to_params(select, params) for select in form.querySelectorAll('select')\n params\n\nexport params_with_csrf_token = ->\n params = new URLSearchParams()\n append_csrf_token(params)\n params\n\nappend_input_to_params = (input, params) ->\n params.append(input.name, input.value)\n\nappend_csrf_token = (params) ->\n token_name = document.querySelector('meta[name=csrf-param]').getAttribute('content')\n token_value = document.querySelector('meta[name=csrf-token]').getAttribute('content')\n params.append(token_name, token_value)\n\nexport form_element = (url, method, id) ->\n form = document.createElement('FORM')\n form.setAttribute('action', url)\n form.setAttribute('method', method or 'POST')\n form.setAttribute('id', id)\n form\n\nexport hidden_field = (name, value) ->\n input = document.createElement('INPUT')\n input.setAttribute('name', name)\n input.setAttribute('type', 'hidden')\n input.value = value\n input","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/**\n * @fileoverview A \"ponyfill\" is a polyfill that doesn't modify the global prototype chain.\n * This makes ponyfills safer than traditional polyfills, especially for libraries like MDC.\n */\nexport function closest(element, selector) {\n if (element.closest) {\n return element.closest(selector);\n }\n\n var el = element;\n\n while (el) {\n if (matches(el, selector)) {\n return el;\n }\n\n el = el.parentElement;\n }\n\n return null;\n}\nexport function matches(element, selector) {\n var nativeMatches = element.matches || element.webkitMatchesSelector || element.msMatchesSelector;\n return nativeMatches.call(element, selector);\n}\n/**\n * Used to compute the estimated scroll width of elements. When an element is\n * hidden due to display: none; being applied to a parent element, the width is\n * returned as 0. However, the element will have a true width once no longer\n * inside a display: none context. This method computes an estimated width when\n * the element is hidden or returns the true width when the element is visble.\n * @param {Element} element the element whose width to estimate\n */\n\nexport function estimateScrollWidth(element) {\n // Check the offsetParent. If the element inherits display: none from any\n // parent, the offsetParent property will be null (see\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent).\n // This check ensures we only clone the node when necessary.\n var htmlEl = element;\n\n if (htmlEl.offsetParent !== null) {\n return htmlEl.scrollWidth;\n }\n\n var clone = htmlEl.cloneNode(true);\n clone.style.setProperty('position', 'absolute');\n clone.style.setProperty('transform', 'translate(-9999px, -9999px)');\n document.documentElement.appendChild(clone);\n var scrollWidth = clone.scrollWidth;\n document.documentElement.removeChild(clone);\n return scrollWidth;\n}","export class MoneyFormat\n\n TEN_THOUSAND = 10000\n HUNDRED_THOUSAND = 100000\n ONE_MILLION = 1000000\n TEN_MILLION = 10000000\n HUNDRED_MILLION = 100000000\n\n @formatFull: (float, currency) ->\n currency or= 'GBP'\n new Intl.NumberFormat('en-US', {style: 'currency', currency: currency, minimumFractionDigits: 2, maximumFractionDigits: 2}).format(float)\n\n @format: (float, currency, digits) ->\n currency or= 'GBP'\n return @formatLargeAmount(float, currency) if Math.abs(float) >= HUNDRED_THOUSAND\n digits = if digits? then digits else 2\n digits = 0 if Math.abs(float) >= TEN_THOUSAND\n minDigits = if digits < 2 then digits else 2\n new Intl.NumberFormat('en-US', {style: 'currency', currency: currency, minimumFractionDigits: minDigits, maximumFractionDigits: digits}).format(float)\n\n @formatForInput: (float, maxDigits) ->\n return \"\" if float is null\n maxDigits or= 4\n new Intl.NumberFormat('en-US', {minimumFractionDigits: 2, maximumFractionDigits: maxDigits, useGrouping: false}).format(float)\n\n @formatLargeAmount: (float, currency) ->\n if Math.abs(float) >= HUNDRED_MILLION\n val = float / ONE_MILLION\n digits = 0\n ltr = 'm'\n else if Math.abs(float) >= TEN_MILLION\n val = float / ONE_MILLION\n digits = 1\n ltr = 'm'\n else if Math.abs(float) >= ONE_MILLION\n val = float / ONE_MILLION\n digits = 2\n ltr = 'm'\n else\n val = float / 1000.0\n ltr = 'k'\n digits = 1\n f = new Intl.NumberFormat('en-US', {style: 'currency', currency: currency, minimumFractionDigits: 0, maximumFractionDigits: digits}).format(val)\n \"#{f}#{ltr}\"\n\n @formatWithSymbol: (float, symbol) ->\n amt = @roundTo(float, 2)\n amt = if Math.round(amt) == amt then \"#{Math.round(amt)}.00\" else if Math.round(amt * 10) == amt * 10 then \"#{amt}0\" else amt\n \"#{symbol or '£'}#{amt}\"\n\n @poundAmount: (float) ->\n if float > -1 and float < 0 then \"-0\" else Math.floor(float)\n\n @pennyAmount: (float) ->\n penny = Math.abs(Math.round(float * 100) - (@poundAmount(float) * 100))\n if penny < 10 then \"0#{penny}\" else penny\n\n @formatMinor: (float, currency) ->\n num = if Math.round(float) == float then Math.round(float) else float\n \"#{num}#{@minorName(currency)}\"\n\n @minorName: (currency) ->\n return 'c' if currency is 'USD'\n return 'c' if currency is 'HKD'\n return '¢' if currency is 'EUR'\n return '¢' if currency is 'CHF'\n return 'öre' if currency is 'DKK'\n return 'öre' if currency is 'NOK'\n return 'öre' if currency is 'SEK'\n 'p'\n\n @currencySymbol: (currency) ->\n return '$' if currency is 'USD'\n return 'HK$' if currency is 'HKD'\n return '€' if currency is 'EUR'\n return 'Fr.' if currency is 'CHF'\n return 'kr.' if currency is 'DKK'\n return 'kr' if currency is 'NOK'\n return 'kr' if currency is 'SEK'\n '£'\n\n @toFloat: (string) ->\n parseFloat(@stripNonNumerics(string))\n\n @stripNonNumerics: (string) ->\n return string unless string\n string.replace(/^[a-zA-Z\\.]*/, '').replace(/[^0-9\\.]/g, \"\")\n\n @roundTo: (num, dp) ->\n mult = 10 ** dp\n Math.round(num * mult) / mult","export class CookieManager\n\n @set: (key, val) ->\n date = new Date()\n date.setTime(date.getTime() + 157680000000)\n document.cookie = \"#{key}=#{val};expires=#{date.toUTCString()};path=/\"\n\n @get: (key) ->\n name = \"#{key}=\"\n for c in decodeURIComponent(document.cookie).split(';')\n c = c.trim()\n return c.substring(name.length, c.length) if c.indexOf(name) == 0\n return null\n\n @remove: (key) ->\n val = CookieManager.get(key)\n if val\n document.cookie = \"#{key}=;expires=1970-01-01;path=/\"","/*!\n * Chart.js v3.3.2\n * https://www.chartjs.org\n * (c) 2021 Chart.js Contributors\n * Released under the MIT License\n */\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n\nconst requestAnimFrame = function () {\n if (typeof window === 'undefined') {\n return function (callback) {\n return callback();\n };\n }\n\n return window.requestAnimationFrame;\n}();\n\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || (args => Array.prototype.slice.call(args));\n\n let ticking = false;\n let args = [];\n return function () {\n for (var _len = arguments.length, rest = new Array(_len), _key = 0; _key < _len; _key++) {\n rest[_key] = arguments[_key];\n }\n\n args = updateArgs(rest);\n\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\n\nfunction debounce(fn, delay) {\n let timeout;\n return function () {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay);\n } else {\n fn();\n }\n\n return delay;\n };\n}\n\nconst _toLeftRightCenter = align => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n\nconst _textX = (align, left, right) => align === 'right' ? right : align === 'center' ? (left + right) / 2 : left;\n\nfunction noop() {}\n\nconst uid = function () {\n let id = 0;\n return function () {\n return id++;\n };\n}();\n\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\n\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n\n const type = Object.prototype.toString.call(value);\n\n if (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\n return true;\n }\n\n return false;\n}\n\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n\nconst isNumberFinite = value => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\n\nconst toPercentage = (value, dimension) => typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 : value / dimension;\n\nconst toDimension = (value, dimension) => typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 * dimension : +value;\n\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\n\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n\n if (isArray(loopable)) {\n len = loopable.length;\n\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n\n return target;\n }\n\n return source;\n}\n\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\n\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n\n const tval = target[key];\n const sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\n\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n\n if (!isObject(target)) {\n return target;\n }\n\n options = options || {};\n const merger = options.merger || _merger;\n\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n\n if (!isObject(source)) {\n continue;\n }\n\n const keys = Object.keys(source);\n\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n\n return target;\n}\n\nfunction mergeIf(target, source) {\n return merge(target, source, {\n merger: _mergerIf\n });\n}\n\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n\n const tval = target[key];\n const sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\n\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous + '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n\nconst emptyString = '';\nconst dot = '.';\n\nfunction indexOfDotOrLength(key, start) {\n const idx = key.indexOf(dot, start);\n return idx === -1 ? key.length : idx;\n}\n\nfunction resolveObjectKey(obj, key) {\n if (key === emptyString) {\n return obj;\n }\n\n let pos = 0;\n let idx = indexOfDotOrLength(key, pos);\n\n while (obj && idx > pos) {\n obj = obj[key.substr(pos, idx - pos)];\n pos = idx + 1;\n idx = indexOfDotOrLength(key, pos);\n }\n\n return obj;\n}\n\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nconst defined = value => typeof value !== 'undefined';\n\nconst isFunction = value => typeof value === 'function';\n\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n\n return true;\n};\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\n\nfunction niceNum(range) {\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\n\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n\n result.sort((a, b) => a - b).pop();\n return result;\n}\n\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\n\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\n\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return rounded - epsilon <= x && rounded + epsilon >= x;\n}\n\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\n\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\n\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\n\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n\n let e = 1;\n let p = 0;\n\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n\n return p;\n}\n\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n if (angle < -0.5 * PI) {\n angle += TAU;\n }\n\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\n\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\n\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\n\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n\n const s = _normalizeAngle(start);\n\n const e = _normalizeAngle(end);\n\n const angleToStart = _normalizeAngle(s - a);\n\n const angleToEnd = _normalizeAngle(e - a);\n\n const startToAngle = _normalizeAngle(a - s);\n\n const endToAngle = _normalizeAngle(a - e);\n\n return a === s || a === e || sameAngleIsFullCircle && s === e || angleToStart > angleToEnd && startToAngle < endToAngle;\n}\n\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\n\nconst atEdge = t => t === 0 || t === 1;\n\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\n\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => (t /= 0.5) < 1 ? 0.5 * t * t : -0.5 * (--t * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => (t /= 0.5) < 1 ? 0.5 * t * t * t : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => (t /= 0.5) < 1 ? 0.5 * t * t * t * t : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => (t /= 0.5) < 1 ? 0.5 * t * t * t * t * t : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => t === 0 ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => t === 1 ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5 ? 0.5 * Math.pow(2, 10 * (t * 2 - 1)) : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => t >= 1 ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => (t /= 0.5) < 1 ? -0.5 * (Math.sqrt(1 - t * t) - 1) : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t : t < 0.5 ? 0.5 * elasticIn(t * 2, s, p) : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n\n easeInOutBack(t) {\n let s = 1.70158;\n\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= 1.525) + 1) * t - s));\n }\n\n return 0.5 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2);\n },\n\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n\n if (t < 1 / d) {\n return m * t * t;\n }\n\n if (t < 2 / d) {\n return m * (t -= 1.5 / d) * t + 0.75;\n }\n\n if (t < 2.5 / d) {\n return m * (t -= 2.25 / d) * t + 0.9375;\n }\n\n return m * (t -= 2.625 / d) * t + 0.984375;\n },\n\n easeInOutBounce: t => t < 0.5 ? effects.easeInBounce(t * 2) * 0.5 : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5\n};\n/*!\n * @kurkle/color v0.1.9\n * https://github.com/kurkle/color#readme\n * (c) 2020 Jukka Kurkela\n * Released under the MIT License\n */\n\nconst map = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n A: 10,\n B: 11,\n C: 12,\n D: 13,\n E: 14,\n F: 15,\n a: 10,\n b: 11,\n c: 12,\n d: 13,\n e: 14,\n f: 15\n};\nconst hex = '0123456789ABCDEF';\n\nconst h1 = b => hex[b & 0xF];\n\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\n\nconst eq = b => (b & 0xF0) >> 4 === (b & 0xF);\n\nfunction isShort(v) {\n return eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\n}\n\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map[str[1]] * 17,\n g: 255 & map[str[2]] * 17,\n b: 255 & map[str[3]] * 17,\n a: len === 5 ? map[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map[str[1]] << 4 | map[str[2]],\n g: map[str[3]] << 4 | map[str[4]],\n b: map[str[5]] << 4 | map[str[6]],\n a: len === 9 ? map[str[7]] << 4 | map[str[8]] : 255\n };\n }\n }\n\n return ret;\n}\n\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v ? '#' + f(v.r) + f(v.g) + f(v.b) + (v.a < 255 ? f(v.a) : '') : v;\n}\n\nfunction round(v) {\n return v + 0.5 | 0;\n}\n\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\n\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\n\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\n\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\n\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\n\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n\n if (!m) {\n return;\n }\n\n if (m[7] !== r) {\n const v = +m[7];\n a = 255 & (m[8] ? p2b(v) : v * 255);\n }\n\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : r);\n g = 255 & (m[4] ? p2b(g) : g);\n b = 255 & (m[6] ? p2b(b) : b);\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\n\nfunction rgbString(v) {\n return v && (v.a < 255 ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})` : `rgb(${v.r}, ${v.g}, ${v.b})`);\n}\n\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\n\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n\n const f = function (n) {\n let k = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (n + h / 30) % 12;\n return l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n };\n\n return [f(0), f(8), f(4)];\n}\n\nfunction hsv2rgbn(h, s, v) {\n const f = function (n) {\n let k = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (n + h / 60) % 6;\n return v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n };\n\n return [f(5), f(3), f(1)];\n}\n\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n\n return rgb;\n}\n\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4;\n h = h * 60 + 0.5;\n }\n\n return [h | 0, s || 0, l];\n}\n\nfunction calln(f, a, b, c) {\n return (Array.isArray(a) ? f(a[0], a[1], a[2]) : f(a, b, c)).map(n2b);\n}\n\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\n\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\n\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\n\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\n\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n\n if (!m) {\n return;\n }\n\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\n\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\n\nfunction hslString(v) {\n if (!v) {\n return;\n }\n\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255 ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})` : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map$1 = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\n\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names);\n const tkeys = Object.keys(map$1);\n let i, j, k, ok, nk;\n\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map$1[k]);\n }\n\n k = parseInt(names[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n\n return unpacked;\n}\n\nlet names$1;\n\nfunction nameParse(str) {\n if (!names$1) {\n names$1 = unpack();\n names$1.transparent = [0, 0, 0, 0];\n }\n\n const a = names$1[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\n\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\n\nfunction fromObject(input) {\n var v = {\n r: 0,\n g: 0,\n b: 0,\n a: 255\n };\n\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {\n r: input[0],\n g: input[1],\n b: input[2],\n a: 255\n };\n\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {\n r: 0,\n g: 0,\n b: 0,\n a: 1\n });\n v.a = n2b(v.a);\n }\n\n return v;\n}\n\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n\n return hueParse(str);\n}\n\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n\n const type = typeof input;\n let v;\n\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n\n this._rgb = v;\n this._valid = !!v;\n }\n\n get valid() {\n return this._valid;\n }\n\n get rgb() {\n var v = clone(this._rgb);\n\n if (v) {\n v.a = b2n(v.a);\n }\n\n return v;\n }\n\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n\n rgbString() {\n return this._valid ? rgbString(this._rgb) : this._rgb;\n }\n\n hexString() {\n return this._valid ? hexString(this._rgb) : this._rgb;\n }\n\n hslString() {\n return this._valid ? hslString(this._rgb) : this._rgb;\n }\n\n mix(color, weight) {\n const me = this;\n\n if (color) {\n const c1 = me.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n me.rgb = c1;\n }\n\n return me;\n }\n\n clone() {\n return new Color(this.rgb);\n }\n\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n\n}\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nconst isPatternOrGradient = value => value instanceof CanvasGradient || value instanceof CanvasPattern;\n\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\n\nfunction getHoverColor(value) {\n return isPatternOrGradient(value) ? value : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\n\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n\n const keys = key.split('.');\n\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n\n return node;\n}\n\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n\n return merge(getScope$1(root, ''), scope);\n}\n\nclass Defaults {\n constructor(_descriptors) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n\n this.devicePixelRatio = context => context.chart.platform.getDevicePixelRatio();\n\n this.elements = {};\n this.events = ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.describe(_descriptors);\n }\n\n set(scope, values) {\n return set(this, scope, values);\n }\n\n get(scope) {\n return getScope$1(this, scope);\n }\n\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n\n override(scope, values) {\n return set(overrides, scope, values);\n }\n\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n\n return valueOrDefault(local, target);\n },\n\n set(value) {\n this[privateName] = value;\n }\n\n }\n });\n }\n\n}\n\nvar defaults = new Defaults({\n _scriptable: name => !name.startsWith('on'),\n _indexable: name => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false\n }\n});\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n\n return (font.style ? font.style + ' ' : '') + (font.weight ? font.weight + ' ' : '') + font.size + 'px ' + font.family;\n}\n\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n\n if (textWidth > longest) {\n longest = textWidth;\n }\n\n return longest;\n}\n\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n\n ctx.restore();\n const gcLen = gc.length / 2;\n\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n\n gc.splice(0, gcLen);\n }\n\n return longest;\n}\n\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\n\nfunction drawPoint(ctx, options, x, y) {\n let type, xOffset, yOffset, size, cornerRadius;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n\n if (style && typeof style === 'object') {\n type = style.toString();\n\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n\n ctx.beginPath();\n\n switch (style) {\n default:\n ctx.arc(x, y, radius, 0, TAU);\n ctx.closePath();\n break;\n\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n ctx.rect(x - size, y - size, 2 * size, 2 * size);\n break;\n }\n\n rad += QUARTER_PI;\n\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n\n case 'crossRot':\n rad += QUARTER_PI;\n\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n\n case 'line':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n\n ctx.fill();\n\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return point && point.x > area.left - margin && point.x < area.right + margin && point.y > area.top - margin && point.y < area.bottom + margin;\n}\n\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\n\nfunction unclipArea(ctx) {\n ctx.restore();\n}\n\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n\n ctx.lineTo(target.x, target.y);\n}\n\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n\n ctx.bezierCurveTo(flip ? previous.cp1x : previous.cp2x, flip ? previous.cp1y : previous.cp2y, flip ? target.cp2x : target.cp1x, flip ? target.cp2y : target.cp1y, target.x, target.y);\n}\n\nfunction renderText(ctx, text, x, y, font) {\n let opts = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n\n ctx.font = font.string;\n\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n\n ctx.fillText(line, x, y, opts.maxWidth);\n\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n\n y += font.lineHeight;\n }\n\n ctx.restore();\n}\n\nfunction addRoundedRectPath(ctx, rect) {\n const x = rect.x,\n y = rect.y,\n w = rect.w,\n h = rect.h,\n radius = rect.radius;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\n\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n\n value = +matches[2];\n\n switch (matches[3]) {\n case 'px':\n return value;\n\n case '%':\n value /= 100;\n break;\n }\n\n return size * value;\n}\n\nconst numberOrZero = v => +v || 0;\n\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value) ? objProps ? prop => valueOrDefault(value[prop], value[props[prop]]) : prop => value[prop] : () => value;\n\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n\n return ret;\n}\n\nfunction toTRBL(value) {\n return _readValueToProps(value, {\n top: 'y',\n right: 'x',\n bottom: 'y',\n left: 'x'\n });\n}\n\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\n\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\n\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n\n let style = valueOrDefault(options.style, fallback.style);\n\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\n\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n\n if (value === undefined) {\n continue;\n }\n\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n\n return value;\n }\n }\n}\n\nfunction _addGrace(minmax, grace) {\n const min = minmax.min,\n max = minmax.max;\n return {\n min: min - Math.abs(toDimension(grace, min)),\n max: max + toDimension(grace, max)\n };\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || (index => table[index] < value);\n\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n\n while (hi - lo > 1) {\n mid = lo + hi >> 1;\n\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n\n return {\n lo,\n hi\n };\n}\n\nconst _lookupByKey = (table, key, value) => _lookup(table, value, index => table[index][key] < value);\n\nconst _rlookupByKey = (table, key, value) => _lookup(table, value, index => table[index][key] >= value);\n\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n\n while (start < end && values[start] < min) {\n start++;\n }\n\n while (end > start && values[end - 1] > max) {\n end--;\n }\n\n return start > 0 || end < values.length ? values.slice(start, end) : values;\n}\n\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n\n return;\n }\n\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach(key => {\n const method = '_onData' + _capitalize(key);\n\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n\n value() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n const res = base.apply(this, args);\n\n array._chartjs.listeners.forEach(object => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n\n return res;\n }\n\n });\n });\n}\n\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n\n if (!stub) {\n return;\n }\n\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n\n if (listeners.length > 0) {\n return;\n }\n\n arrayEvents.forEach(key => {\n delete array[key];\n });\n delete array._chartjs;\n}\n\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n\n if (set.size === ilen) {\n return items;\n }\n\n const result = [];\n set.forEach(item => {\n result.push(item);\n });\n return result;\n}\n\nfunction _createResolver(scopes) {\n let prefixes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [''];\n let rootScopes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : scopes;\n let fallback = arguments.length > 3 ? arguments[3] : undefined;\n let getTarget = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : () => scopes[0];\n\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: scope => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n\n get(target, prop) {\n return _cached(target, prop, () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n storage[prop] = value;\n delete target[prop];\n delete target._keys;\n return true;\n }\n\n });\n}\n\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: ctx => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: scope => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n\n get(target, prop, receiver) {\n return _cached(target, prop, () => _resolveWithContext(target, prop, receiver));\n },\n\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys ? Reflect.has(proxy, prop) ? {\n enumerable: true,\n configurable: true\n } : undefined : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n\n });\n}\n\nfunction _descriptors(proxy) {\n let defaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n scriptable: true,\n indexable: true\n };\n\n const _proxy$_scriptable = proxy._scriptable,\n _scriptable = _proxy$_scriptable === void 0 ? defaults.scriptable : _proxy$_scriptable,\n _proxy$_indexable = proxy._indexable,\n _indexable = _proxy$_indexable === void 0 ? defaults.indexable : _proxy$_indexable,\n _proxy$_allKeys = proxy._allKeys,\n _allKeys = _proxy$_allKeys === void 0 ? defaults.allKeys : _proxy$_allKeys;\n\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\n\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\n\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters';\n\nfunction _cached(target, prop, resolve) {\n let value = target[prop];\n\n if (defined(value)) {\n return value;\n }\n\n value = resolve();\n\n if (defined(value)) {\n target[prop] = value;\n }\n\n return value;\n}\n\nfunction _resolveWithContext(target, prop, receiver) {\n const _proxy = target._proxy,\n _context = target._context,\n _subProxy = target._subProxy,\n descriptors = target._descriptors;\n let value = _proxy[prop];\n\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n\n return value;\n}\n\nfunction _resolveScriptable(prop, value, target, receiver) {\n const _proxy = target._proxy,\n _context = target._context,\n _subProxy = target._subProxy,\n _stack = target._stack;\n\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + [..._stack].join('->') + '->' + prop);\n }\n\n _stack.add(prop);\n\n value = value(_context, _subProxy || receiver);\n\n _stack.delete(prop);\n\n if (isObject(value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n\n return value;\n}\n\nfunction _resolveArray(prop, value, target, isIndexable) {\n const _proxy = target._proxy,\n _context = target._context,\n _subProxy = target._subProxy,\n descriptors = target._descriptors;\n\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n\n const scopes = _proxy._scopes.filter(s => s !== arr);\n\n value = [];\n\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n\n return value;\n}\n\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\n\nconst getScope = (key, parent) => key === true ? parent : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\n\nfunction addScopes(set, parentScopes, key, parentFallback) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, scope);\n\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n\n return false;\n}\n\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop);\n\n if (key === null) {\n return false;\n }\n\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key);\n\n if (key === null) {\n return false;\n }\n }\n\n return _createResolver([...set], [''], rootScopes, fallback, () => subGetTarget(resolver, prop, value));\n}\n\nfunction addScopesFromKey(set, allScopes, key, fallback) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback);\n }\n\n return key;\n}\n\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n\n const target = parent[prop];\n\n if (isArray(target) && isObject(value)) {\n return value;\n }\n\n return target;\n}\n\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n\n if (defined(value)) {\n return needsSubResolver(prop, value) ? createSubResolver(scopes, proxy, prop, value) : value;\n }\n }\n}\n\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n\n const value = scope[key];\n\n if (defined(value)) {\n return value;\n }\n }\n}\n\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n\n return keys;\n}\n\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n\n return [...set];\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\n\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\n\nconst getValueAxis = indexAxis => indexAxis === 'x' ? 'y' : 'x';\n\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n\n if (squaredMagnitude <= 9) {\n continue;\n }\n\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\n\nfunction monotoneCompute(points, mK) {\n let indexAxis = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'x';\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n\n if (!pointCurrent) {\n continue;\n }\n\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\n\nfunction splineCurveMonotone(points) {\n let indexAxis = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'x';\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n\n if (!pointCurrent) {\n continue;\n }\n\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n\n mK[i] = !pointBefore ? deltaK[i] : !pointAfter ? deltaK[i - 1] : sign(deltaK[i - 1]) !== sign(deltaK[i]) ? 0 : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\n\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\n\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n\n let inAreaNext = _isPointInArea(points[0], area);\n\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n\n if (!inArea) {\n continue;\n }\n\n point = points[i];\n\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n\n if (options.spanGaps) {\n points = points.filter(pt => !pt.skip);\n }\n\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(prev, point, points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen], options.tension);\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n\n return parent;\n}\n\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n\n return valueInPixels;\n}\n\nconst getComputedStyle = element => window.getComputedStyle(element, null);\n\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\n\nconst positions = ['top', 'right', 'bottom', 'left'];\n\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\n\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\n\nfunction getCanvasPosition(evt, canvas) {\n const e = evt.native || evt;\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const offsetX = source.offsetX,\n offsetY = source.offsetY;\n let box = false;\n let x, y;\n\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n\n return {\n x,\n y,\n box\n };\n}\n\nfunction getRelativePosition(evt, chart) {\n const canvas = chart.canvas,\n currentDevicePixelRatio = chart.currentDevicePixelRatio;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n\n const _getCanvasPosition = getCanvasPosition(evt, canvas),\n x = _getCanvasPosition.x,\n y = _getCanvasPosition.y,\n box = _getCanvasPosition.box;\n\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let width = chart.width,\n height = chart.height;\n\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\n\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\n\nconst round1 = v => Math.round(v * 10) / 10;\n\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let width = containerSize.width,\n height = containerSize.height;\n\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n\n if (width && !height) {\n height = round1(width / 2);\n }\n\n return {\n width,\n height\n };\n}\n\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\n\n if (canvas.style && (forceStyle || !canvas.style.height && !canvas.style.width)) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n\n if (chart.currentDevicePixelRatio !== pixelRatio || canvas.height !== deviceHeight || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n\n return false;\n}\n\nconst supportsEventListenerOptions = function () {\n let passiveSupported = false;\n\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {}\n\n return passiveSupported;\n}();\n\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y : mode === 'after' ? t < 1 ? p1.y : p2.y : t > 0 ? p2.y : p1.y\n };\n}\n\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {\n x: p1.cp2x,\n y: p1.cp2y\n };\n const cp2 = {\n x: p2.cp1x,\n y: p2.cp1y\n };\n\n const a = _pointInLine(p1, cp1, t);\n\n const b = _pointInLine(cp1, cp2, t);\n\n const c = _pointInLine(cp2, p2, t);\n\n const d = _pointInLine(a, b, t);\n\n const e = _pointInLine(b, c, t);\n\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\n\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n\n return formatter;\n}\n\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function (rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n\n setWidth(w) {\n width = w;\n },\n\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n\n return align === 'right' ? 'left' : 'right';\n },\n\n xPlus(x, value) {\n return x - value;\n },\n\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n }\n\n };\n};\n\nconst getLeftToRightAdapter = function () {\n return {\n x(x) {\n return x;\n },\n\n setWidth(w) {},\n\n textAlign(align) {\n return align;\n },\n\n xPlus(x, value) {\n return x + value;\n },\n\n leftForLtr(x, _itemWidth) {\n return x;\n }\n\n };\n};\n\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\n\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [style.getPropertyValue('direction'), style.getPropertyPriority('direction')];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\n\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle\n };\n }\n\n return {\n between: (n, s, e) => n >= Math.min(s, e) && n <= Math.max(e, s),\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\n\nfunction normalizeSegment(_ref) {\n let start = _ref.start,\n end = _ref.end,\n count = _ref.count,\n loop = _ref.loop,\n style = _ref.style;\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\n\nfunction getSegment(segment, points, bounds) {\n const property = bounds.property,\n startBound = bounds.start,\n endBound = bounds.end;\n\n const _propertyFn = propertyFn(property),\n between = _propertyFn.between,\n normalize = _propertyFn.normalize;\n\n const count = points.length;\n let start = segment.start,\n end = segment.end,\n loop = segment.loop;\n let i, ilen;\n\n if (loop) {\n start += count;\n end += count;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n\n start--;\n end--;\n }\n\n start %= count;\n end %= count;\n }\n\n if (end < start) {\n end += count;\n }\n\n return {\n start,\n end,\n loop,\n style: segment.style\n };\n}\n\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n\n const property = bounds.property,\n startBound = bounds.start,\n endBound = bounds.end;\n const count = points.length;\n\n const _propertyFn2 = propertyFn(property),\n compare = _propertyFn2.compare,\n between = _propertyFn2.between,\n normalize = _propertyFn2.normalize;\n\n const _getSegment = getSegment(segment, points, bounds),\n start = _getSegment.start,\n end = _getSegment.end,\n loop = _getSegment.loop,\n style = _getSegment.style;\n\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n\n const shouldStart = () => inside || startIsBefore();\n\n const shouldStop = () => !inside || endIsBefore();\n\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n\n if (point.skip) {\n continue;\n }\n\n value = normalize(point[property]);\n\n if (value === prevValue) {\n continue;\n }\n\n inside = between(value, startBound, endBound);\n\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({\n start: subStart,\n end: i,\n loop,\n count,\n style\n }));\n subStart = null;\n }\n\n prev = i;\n prevValue = value;\n }\n\n if (subStart !== null) {\n result.push(normalizeSegment({\n start: subStart,\n end,\n loop,\n count,\n style\n }));\n }\n\n return result;\n}\n\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n\n if (sub.length) {\n result.push(...sub);\n }\n }\n\n return result;\n}\n\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n\n while (start < count && points[start].skip) {\n start++;\n }\n\n start %= count;\n\n if (loop) {\n end += start;\n }\n\n while (end > start && points[end % count].skip) {\n end--;\n }\n\n end %= count;\n return {\n start,\n end\n };\n}\n\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({\n start: start % count,\n end: (end - 1) % count,\n loop\n });\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n\n if (prev.skip) {\n start = end;\n }\n }\n\n prev = cur;\n }\n\n if (last !== null) {\n result.push({\n start: start % count,\n end: last % count,\n loop\n });\n }\n\n return result;\n}\n\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n\n if (!count) {\n return [];\n }\n\n const loop = !!line._loop;\n\n const _findStartAndEnd = findStartAndEnd(points, count, loop, spanGaps),\n start = _findStartAndEnd.start,\n end = _findStartAndEnd.end;\n\n if (spanGaps === true) {\n return splitByStyles([{\n start,\n end,\n loop\n }], points, segmentOptions);\n }\n\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n\nfunction splitByStyles(segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n\n return doSplitByStyles(segments, points, segmentOptions);\n}\n\nfunction doSplitByStyles(segments, points, segmentOptions) {\n const count = points.length;\n const result = [];\n let start = segments[0].start;\n let i = start;\n\n for (const segment of segments) {\n let prevStyle, style;\n let prev = points[start % count];\n\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext({\n type: 'segment',\n p0: prev,\n p1: pt\n }));\n\n if (styleChanged(style, prevStyle)) {\n result.push({\n start: start,\n end: i - 1,\n loop: segment.loop,\n style: prevStyle\n });\n prevStyle = style;\n start = i - 1;\n }\n\n prev = pt;\n prevStyle = style;\n }\n\n if (start < i - 1) {\n result.push({\n start,\n end: i - 1,\n loop: segment.loop,\n style\n });\n start = i - 1;\n }\n }\n\n return result;\n}\n\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\n\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { merge as $, _isPointInArea as A, _rlookupByKey as B, toPadding as C, each as D, getMaximumSize as E, _getParentNode as F, readUsedSize as G, HALF_PI as H, throttled as I, supportsEventListenerOptions as J, log10 as K, _factorize as L, finiteOrDefault as M, callback as N, _addGrace as O, PI as P, toDegrees as Q, _measureText as R, _int16Range as S, TAU as T, _alignPixel as U, renderText as V, toFont as W, _toLeftRightCenter as X, _alignStartEnd as Y, overrides as Z, _arrayUnique as _, resolve as a, _capitalize as a0, descriptors as a1, isFunction as a2, _attachContext as a3, _createResolver as a4, _descriptors as a5, mergeIf as a6, uid as a7, debounce as a8, retinaScale as a9, niceNum as aA, almostWhole as aB, almostEquals as aC, _decimalPlaces as aD, _longestText as aE, _filterBetween as aF, _lookup as aG, getHoverColor as aH, clone$1 as aI, _merger as aJ, _mergerIf as aK, _deprecated as aL, toFontString as aM, splineCurve as aN, splineCurveMonotone as aO, getStyle as aP, fontString as aQ, toLineHeight as aR, PITAU as aS, INFINITY as aT, RAD_PER_DEG as aU, QUARTER_PI as aV, TWO_THIRDS_PI as aW, _angleDiff as aX, clearCanvas as aa, setsEqual as ab, _elementsEqual as ac, getAngleFromPoint as ad, _readValueToProps as ae, _updateBezierControlPoints as af, _computeSegments as ag, _boundSegments as ah, _steppedInterpolation as ai, _bezierInterpolation as aj, _pointInLine as ak, _steppedLineTo as al, _bezierCurveTo as am, drawPoint as an, addRoundedRectPath as ao, toTRBL as ap, toTRBLCorners as aq, _boundSegment as ar, _normalizeAngle as as, getRtlAdapter as at, overrideTextDirection as au, _textX as av, restoreTextDirection as aw, noop as ax, distanceBetweenPoints as ay, _setMinAndMaxByKey as az, isArray as b, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, defined as h, isObject as i, isNullOrUndef as j, clipArea as k, listenArrayEvents as l, unclipArea as m, toPercentage as n, toDimension as o, formatNumber as p, _angleBetween as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, isNumber as w, _limitValue as x, _lookupByKey as y, getRelativePosition as z };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n/*!\n * Chart.js v3.3.2\n * https://www.chartjs.org\n * (c) 2021 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, i as isObject, b as isArray, d as defaults, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as defined, s as sign, j as isNullOrUndef, k as clipArea, m as unclipArea, _ as _arrayUnique, t as toRadians, n as toPercentage, o as toDimension, T as TAU, p as formatNumber, q as _angleBetween, H as HALF_PI, P as PI, w as isNumber, x as _limitValue, y as _lookupByKey, z as getRelativePosition$1, A as _isPointInArea, B as _rlookupByKey, C as toPadding, D as each, E as getMaximumSize, F as _getParentNode, G as readUsedSize, I as throttled, J as supportsEventListenerOptions, K as log10, L as _factorize, M as finiteOrDefault, N as callback, O as _addGrace, Q as toDegrees, R as _measureText, S as _int16Range, U as _alignPixel, V as renderText, W as toFont, X as _toLeftRightCenter, Y as _alignStartEnd, Z as overrides, $ as merge, a0 as _capitalize, a1 as descriptors, a2 as isFunction, a3 as _attachContext, a4 as _createResolver, a5 as _descriptors, a6 as mergeIf, a7 as uid, a8 as debounce, a9 as retinaScale, aa as clearCanvas, ab as setsEqual, ac as _elementsEqual, ad as getAngleFromPoint, ae as _readValueToProps, af as _updateBezierControlPoints, ag as _computeSegments, ah as _boundSegments, ai as _steppedInterpolation, aj as _bezierInterpolation, ak as _pointInLine, al as _steppedLineTo, am as _bezierCurveTo, an as drawPoint, ao as addRoundedRectPath, ap as toTRBL, aq as toTRBLCorners, ar as _boundSegment, as as _normalizeAngle, at as getRtlAdapter, au as overrideTextDirection, av as _textX, aw as restoreTextDirection, ax as noop, ay as distanceBetweenPoints, az as _setMinAndMaxByKey, aA as niceNum, aB as almostWhole, aC as almostEquals, aD as _decimalPlaces, aE as _longestText, aF as _filterBetween, aG as _lookup } from './chunks/helpers.segment.js';\nexport { d as defaults } from './chunks/helpers.segment.js';\n\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n\n _refresh() {\n const me = this;\n\n if (me._request) {\n return;\n }\n\n me._running = true;\n me._request = requestAnimFrame.call(window, () => {\n me._update();\n\n me._request = null;\n\n if (me._running) {\n me._refresh();\n }\n });\n }\n\n _update() {\n let date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Date.now();\n const me = this;\n let remaining = 0;\n\n me._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n\n for (; i >= 0; --i) {\n item = items[i];\n\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n\n if (draw) {\n chart.draw();\n\n me._notify(chart, anims, date, 'progress');\n }\n\n if (!items.length) {\n anims.running = false;\n\n me._notify(chart, anims, date, 'complete');\n\n anims.initial = false;\n }\n\n remaining += items.length;\n });\n\n me._lastDate = date;\n\n if (remaining === 0) {\n me._running = false;\n }\n }\n\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n\n return anims;\n }\n\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n\n this._getAnims(chart).items.push(...items);\n }\n\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n\n start(chart) {\n const anims = this._charts.get(chart);\n\n if (!anims) {\n return;\n }\n\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n\n this._refresh();\n }\n\n running(chart) {\n if (!this._running) {\n return false;\n }\n\n const anims = this._charts.get(chart);\n\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n\n return true;\n }\n\n stop(chart) {\n const anims = this._charts.get(chart);\n\n if (!anims || !anims.items.length) {\n return;\n }\n\n const items = anims.items;\n let i = items.length - 1;\n\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n\n anims.items = [];\n\n this._notify(chart, anims, Date.now(), 'complete');\n }\n\n remove(chart) {\n return this._charts.delete(chart);\n }\n\n}\n\nvar animator = new Animator();\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid ? c1.mix(c0, factor).hexString() : to;\n },\n\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n\n};\n\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n\n active() {\n return this._active;\n }\n\n update(cfg, to, date) {\n const me = this;\n\n if (me._active) {\n me._notify(false);\n\n const currentValue = me._target[me._prop];\n const elapsed = date - me._start;\n const remain = me._duration - elapsed;\n me._start = date;\n me._duration = Math.floor(Math.max(remain, cfg.duration));\n me._total += elapsed;\n me._loop = !!cfg.loop;\n me._to = resolve([cfg.to, to, currentValue, cfg.from]);\n me._from = resolve([cfg.from, currentValue, to]);\n }\n }\n\n cancel() {\n const me = this;\n\n if (me._active) {\n me.tick(Date.now());\n me._active = false;\n\n me._notify(false);\n }\n }\n\n tick(date) {\n const me = this;\n const elapsed = date - me._start;\n const duration = me._duration;\n const prop = me._prop;\n const from = me._from;\n const loop = me._loop;\n const to = me._to;\n let factor;\n me._active = from !== to && (loop || elapsed < duration);\n\n if (!me._active) {\n me._target[prop] = to;\n\n me._notify(true);\n\n return;\n }\n\n if (elapsed < 0) {\n me._target[prop] = from;\n return;\n }\n\n factor = elapsed / duration % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = me._easing(Math.min(1, Math.max(0, factor)));\n me._target[prop] = me._fn(from, to, factor);\n }\n\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({\n res,\n rej\n });\n });\n }\n\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: name => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn'\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n }\n});\ndefaults.describe('animations', {\n _fallback: 'animation'\n});\ndefaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n }\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\n }\n }\n }\n});\n\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n\n if (!isObject(cfg)) {\n return;\n }\n\n const resolved = {};\n\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n\n (isArray(cfg.properties) && cfg.properties || [key]).forEach(prop => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n\n if (!options) {\n return [];\n }\n\n const animations = this._createAnimations(options, newOptions);\n\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {});\n }\n\n return animations;\n }\n\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n\n if (prop.charAt(0) === '$') {\n continue;\n }\n\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n\n return animations;\n }\n\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n\n const animations = this._createAnimations(target, values);\n\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n\n}\n\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n\n return Promise.all(running);\n}\n\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n\n let options = target.options;\n\n if (!options) {\n target.options = newOptions;\n return;\n }\n\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {\n $shared: false,\n $animations: {}\n });\n }\n\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\n\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\n\nfunction toClip(value) {\n let t, r, b, l;\n\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n\n return {\n top: t,\n right: r,\n bottom: b,\n left: l\n };\n}\n\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n\n let i, ilen;\n\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n\n return keys;\n}\n\nfunction applyStack(stack, value, dsIndex, options) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n\n if (value === null) {\n return;\n }\n\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n\n break;\n }\n\n otherValue = stack.values[datasetIndex];\n\n if (isNumberFinite(otherValue) && (singleMode || value === 0 || sign(value) === sign(otherValue))) {\n value += otherValue;\n }\n }\n\n return value;\n}\n\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n\n return adata;\n}\n\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || stacked === undefined && meta.stack !== undefined;\n}\n\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\n\nfunction getUserBounds(scale) {\n const _scale$getUserBounds = scale.getUserBounds(),\n min = _scale$getUserBounds.min,\n max = _scale$getUserBounds.max,\n minDefined = _scale$getUserBounds.minDefined,\n maxDefined = _scale$getUserBounds.maxDefined;\n\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\n\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\n\nfunction getLastIndexInStack(stack, vScale, positive) {\n for (const meta of vScale.getMatchingVisibleMetas('bar').reverse()) {\n const value = stack[meta.index];\n\n if (positive && value > 0 || !positive && value < 0) {\n return meta.index;\n }\n }\n\n return null;\n}\n\nfunction updateStacks(controller, parsed) {\n const chart = controller.chart,\n meta = controller._cachedMeta;\n const stacks = chart._stacks || (chart._stacks = {});\n const iScale = meta.iScale,\n vScale = meta.vScale,\n datasetIndex = meta.index;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const index = item[iAxis],\n value = item[vAxis];\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true);\n stack._bottom = getLastIndexInStack(stack, vScale, false);\n }\n}\n\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\n\nfunction createDatasetContext(parent, index) {\n return Object.assign(Object.create(parent), {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n });\n}\n\nfunction createDataContext(parent, index, element) {\n return Object.assign(Object.create(parent), {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\n\nfunction clearStacks(meta, items) {\n const axis = meta.vScale && meta.vScale.axis;\n\n if (!axis) {\n return;\n }\n\n items = items || meta._parsed;\n\n for (const parsed of items) {\n const stacks = parsed._stacks;\n\n if (!stacks || stacks[axis] === undefined || stacks[axis][meta.index] === undefined) {\n return;\n }\n\n delete stacks[axis][meta.index];\n }\n}\n\nconst isDirectUpdateMode = mode => mode === 'reset' || mode === 'none';\n\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\n\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.$context = undefined;\n this._syncList = [];\n this.initialize();\n }\n\n initialize() {\n const me = this;\n const meta = me._cachedMeta;\n me.configure();\n me.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n me.addElements();\n }\n\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n\n this.index = datasetIndex;\n }\n\n linkScales() {\n const me = this;\n const chart = me.chart;\n const meta = me._cachedMeta;\n const dataset = me.getDataset();\n\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = me.getScaleForId(xid);\n meta.yScale = me.getScaleForId(yid);\n meta.rScale = me.getScaleForId(rid);\n meta.iScale = me.getScaleForId(iid);\n meta.vScale = me.getScaleForId(vid);\n }\n\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale ? meta.vScale : meta.iScale;\n }\n\n reset() {\n this._update('reset');\n }\n\n _destroy() {\n const meta = this._cachedMeta;\n\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n\n _dataCheck() {\n const me = this;\n const dataset = me.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = me._data;\n\n if (isObject(data)) {\n me._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, me);\n const meta = me._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, me);\n }\n\n me._syncList = [];\n me._data = data;\n }\n }\n\n addElements() {\n const me = this;\n const meta = me._cachedMeta;\n\n me._dataCheck();\n\n if (me.datasetElementType) {\n meta.dataset = new me.datasetElementType();\n }\n }\n\n buildOrUpdateElements(resetNewElements) {\n const me = this;\n const meta = me._cachedMeta;\n const dataset = me.getDataset();\n let stackChanged = false;\n\n me._dataCheck();\n\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n\n me._resyncElements(resetNewElements);\n\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(me, meta._parsed);\n }\n }\n\n configure() {\n const me = this;\n const config = me.chart.config;\n const scopeKeys = config.datasetScopeKeys(me._type);\n const scopes = config.getOptionScopes(me.getDataset(), scopeKeys, true);\n me.options = config.createResolver(scopes, me.getContext());\n me._parsing = me.options.parsing;\n }\n\n parse(start, count) {\n const me = this;\n const meta = me._cachedMeta,\n data = me._data;\n const iScale = meta.iScale,\n _stacked = meta._stacked;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n\n if (me._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = me.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = me.parseObjectData(meta, data, start, count);\n } else {\n parsed = me.parsePrimitiveData(meta, data, start, count);\n }\n\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || prev && cur[iAxis] < prev[iAxis];\n\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n\n prev = cur;\n }\n }\n\n meta._sorted = sorted;\n }\n\n if (_stacked) {\n updateStacks(me, parsed);\n }\n }\n\n parsePrimitiveData(meta, data, start, count) {\n const iScale = meta.iScale,\n vScale = meta.vScale;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n\n return parsed;\n }\n\n parseArrayData(meta, data, start, count) {\n const xScale = meta.xScale,\n yScale = meta.yScale;\n const parsed = new Array(count);\n let i, ilen, index, item;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n\n return parsed;\n }\n\n parseObjectData(meta, data, start, count) {\n const xScale = meta.xScale,\n yScale = meta.yScale;\n const _this$_parsing = this._parsing,\n _this$_parsing$xAxisK = _this$_parsing.xAxisKey,\n xAxisKey = _this$_parsing$xAxisK === void 0 ? 'x' : _this$_parsing$xAxisK,\n _this$_parsing$yAxisK = _this$_parsing.yAxisKey,\n yAxisKey = _this$_parsing$yAxisK === void 0 ? 'y' : _this$_parsing$yAxisK;\n const parsed = new Array(count);\n let i, ilen, index, item;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n\n return parsed;\n }\n\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {\n mode\n });\n }\n\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n\n if (stack && values) {\n stack.values = values;\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n value = applyStack(stack, parsedValue, this._cachedMeta.index, {\n all: true\n });\n }\n\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n\n getMinMax(scale, canStack) {\n const me = this;\n const meta = me._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n\n const otherScale = me._getOtherScale(scale);\n\n const stack = canStack && meta._stacked && {\n keys: getSortedDatasetIndices(me.chart, true),\n values: null\n };\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n\n const _getUserBounds = getUserBounds(otherScale),\n otherMin = _getUserBounds.min,\n otherMax = _getUserBounds.max;\n\n let i, value, parsed, otherValue;\n\n function _skip() {\n parsed = _parsed[i];\n value = parsed[scale.axis];\n otherValue = parsed[otherScale.axis];\n return !isNumberFinite(value) || otherMin > otherValue || otherMax < otherValue;\n }\n\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n\n me.updateRangeFromParsed(range, scale, parsed, stack);\n\n if (sorted) {\n break;\n }\n }\n\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n\n me.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n\n return range;\n }\n\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n\n return values;\n }\n\n getMaxOverflow() {\n return false;\n }\n\n getLabelAndValue(index) {\n const me = this;\n const meta = me._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = me.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n\n _update(mode) {\n const me = this;\n const meta = me._cachedMeta;\n me.configure();\n me._cachedDataOpts = {};\n me.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(me.options.clip, defaultClip(meta.xScale, meta.yScale, me.getMaxOverflow())));\n }\n\n update(mode) {}\n\n draw() {\n const me = this;\n const ctx = me._ctx;\n const chart = me.chart;\n const meta = me._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = me._drawStart || 0;\n const count = me._drawCount || elements.length - start;\n let i;\n\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n\n if (element.active) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset ? this.resolveDatasetElementOptions(mode) : this.resolveDataElementOptions(index || 0, mode);\n }\n\n getContext(index, active, mode) {\n const me = this;\n const dataset = me.getDataset();\n let context;\n\n if (index >= 0 && index < me._cachedMeta.data.length) {\n const element = me._cachedMeta.data[index];\n context = element.$context || (element.$context = createDataContext(me.getContext(), index, element));\n context.parsed = me.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = me.$context || (me.$context = createDatasetContext(me.chart.getContext(), me.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = me.index;\n }\n\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n\n _resolveElementOptions(elementType) {\n let mode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default';\n let index = arguments.length > 2 ? arguments[2] : undefined;\n const me = this;\n const active = mode === 'active';\n const cache = me._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = me.enableOptionSharing && defined(index);\n\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n\n const config = me.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(me._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(me.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n\n const context = () => me.getContext(index, active);\n\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n\n return values;\n }\n\n _resolveAnimations(index, transition, active) {\n const me = this;\n const chart = me.chart;\n const cache = me._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n\n if (cached) {\n return cached;\n }\n\n let options;\n\n if (chart.options.animation !== false) {\n const config = me.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(me._type, transition);\n const scopes = config.getOptionScopes(me.getDataset(), scopeKeys);\n options = config.createResolver(scopes, me.getContext(index, active, transition));\n }\n\n const animations = new Animations(chart, options && options.animations);\n\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n\n return animations;\n }\n\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n\n this._resolveAnimations(index, mode, active).update(element, {\n options: !active && this.getSharedOptions(options) || options\n });\n }\n\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n\n _resyncElements(resetNewElements) {\n const me = this;\n const data = me._data;\n const elements = me._cachedMeta.data;\n\n for (const _ref of me._syncList) {\n var _ref2 = _slicedToArray(_ref, 3);\n\n const method = _ref2[0];\n const arg1 = _ref2[1];\n const arg2 = _ref2[2];\n me[method](arg1, arg2);\n }\n\n me._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n\n if (count) {\n me.parse(0, count);\n }\n\n if (numData > numMeta) {\n me._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n me._removeElements(numData, numMeta - numData);\n }\n }\n\n _insertElements(start, count) {\n let resetNewElements = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n const me = this;\n const meta = me._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n\n const move = arr => {\n arr.length += count;\n\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n\n move(data);\n\n for (i = start; i < end; ++i) {\n data[i] = new me.dataElementType();\n }\n\n if (me._parsing) {\n move(meta._parsed);\n }\n\n me.parse(start, count);\n\n if (resetNewElements) {\n me.updateElements(data, start, count, 'reset');\n }\n }\n\n updateElements(element, start, count, mode) {}\n\n _removeElements(start, count) {\n const me = this;\n const meta = me._cachedMeta;\n\n if (me._parsing) {\n const removed = meta._parsed.splice(start, count);\n\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n\n meta.data.splice(start, count);\n }\n\n _onDataPush() {\n const count = arguments.length;\n\n this._syncList.push(['_insertElements', this.getDataset().data.length - count, count]);\n }\n\n _onDataPop() {\n this._syncList.push(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n\n _onDataShift() {\n this._syncList.push(['_removeElements', 0, 1]);\n }\n\n _onDataSplice(start, count) {\n this._syncList.push(['_removeElements', start, count]);\n\n this._syncList.push(['_insertElements', start, arguments.length - 2]);\n }\n\n _onDataUnshift() {\n this._syncList.push(['_insertElements', 0, arguments.length]);\n }\n\n}\n\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale) {\n if (!scale._cache.$bar) {\n const metas = scale.getMatchingVisibleMetas('bar');\n let values = [];\n\n for (let i = 0, ilen = metas.length; i < ilen; i++) {\n values = values.concat(metas[i].controller.getAllParsedValues(scale));\n }\n\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n\n return scale._cache.$bar;\n}\n\nfunction computeMinSampleSize(scale) {\n const values = getAllScaleValues(scale);\n let min = scale._length;\n let i, ilen, curr, prev;\n\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n\n prev = curr;\n };\n\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n\n prev = undefined;\n\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n\n return min;\n}\n\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - size / 2\n };\n}\n\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n\n if (next === null) {\n next = curr + curr - prev;\n }\n\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\n\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\n\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n\n return item;\n}\n\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n\n return parsed;\n}\n\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\n\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n\n parseObjectData(meta, data, start, count) {\n const iScale = meta.iScale,\n vScale = meta.vScale;\n const _this$_parsing2 = this._parsing,\n _this$_parsing2$xAxis = _this$_parsing2.xAxisKey,\n xAxisKey = _this$_parsing2$xAxis === void 0 ? 'x' : _this$_parsing2$xAxis,\n _this$_parsing2$yAxis = _this$_parsing2.yAxisKey,\n yAxisKey = _this$_parsing2$yAxis === void 0 ? 'y' : _this$_parsing2$yAxis;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n\n return parsed;\n }\n\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n\n getLabelAndValue(index) {\n const me = this;\n const meta = me._cachedMeta;\n const iScale = meta.iScale,\n vScale = meta.vScale;\n const parsed = me.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom) ? '[' + custom.start + ', ' + custom.end + ']' : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n\n initialize() {\n const me = this;\n me.enableOptionSharing = true;\n super.initialize();\n const meta = me._cachedMeta;\n meta.stack = me.getDataset().stack;\n }\n\n update(mode) {\n const me = this;\n const meta = me._cachedMeta;\n me.updateElements(meta.data, 0, meta.data.length, mode);\n }\n\n updateElements(bars, start, count, mode) {\n const me = this;\n const reset = mode === 'reset';\n const vScale = me._cachedMeta.vScale;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n\n const ruler = me._getRuler();\n\n const firstOpts = me.resolveDataElementOptions(start, mode);\n const sharedOptions = me.getSharedOptions(firstOpts);\n const includeOptions = me.includeOptions(mode, sharedOptions);\n me.updateSharedOptions(sharedOptions, mode, firstOpts);\n\n for (let i = start; i < start + count; i++) {\n const parsed = me.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {\n base,\n head: base\n } : me._calculateBarValuePixels(i);\n\n const ipixels = me._calculateBarIndexPixels(i, ruler);\n\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || me.index === stack._top || me.index === stack._bottom,\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : undefined,\n width: horizontal ? undefined : ipixels.size\n };\n\n if (includeOptions) {\n properties.options = sharedOptions || me.resolveDataElementOptions(i, mode);\n }\n\n me.updateElement(bars[i], i, properties, mode);\n }\n }\n\n _getStacks(last, dataIndex) {\n const me = this;\n const meta = me._cachedMeta;\n const iScale = meta.iScale;\n const metasets = iScale.getMatchingVisibleMetas(me._type);\n const stacked = iScale.options.stacked;\n const ilen = metasets.length;\n const stacks = [];\n let i, item;\n\n for (i = 0; i < ilen; ++i) {\n item = metasets[i];\n\n if (typeof dataIndex !== 'undefined') {\n const val = item.controller.getParsed(dataIndex)[item.controller._cachedMeta.vScale.axis];\n\n if (isNullOrUndef(val) || isNaN(val)) {\n continue;\n }\n }\n\n if (stacked === false || stacks.indexOf(item.stack) === -1 || stacked === undefined && item.stack === undefined) {\n stacks.push(item.stack);\n }\n\n if (item.index === last) {\n break;\n }\n }\n\n if (!stacks.length) {\n stacks.push(undefined);\n }\n\n return stacks;\n }\n\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n\n const index = name !== undefined ? stacks.indexOf(name) : -1;\n return index === -1 ? stacks.length - 1 : index;\n }\n\n _getRuler() {\n const me = this;\n const opts = me.options;\n const meta = me._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(me.getParsed(i)[iScale.axis], i));\n }\n\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(iScale);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: me._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n\n _calculateBarValuePixels(index) {\n const me = this;\n const _me$_cachedMeta = me._cachedMeta,\n vScale = _me$_cachedMeta.vScale,\n _stacked = _me$_cachedMeta._stacked;\n const _me$options = me.options,\n baseValue = _me$options.base,\n minBarLength = _me$options.minBarLength;\n const parsed = me.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? me.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n\n if (length !== value) {\n start = length - value;\n length = value;\n }\n\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n\n start += value;\n }\n\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n\n size = head - base;\n\n if (minBarLength !== undefined && Math.abs(size) < minBarLength) {\n size = size < 0 ? -minBarLength : minBarLength;\n\n if (value === 0) {\n base -= size / 2;\n }\n\n head = base + size;\n }\n\n const actualBase = baseValue || 0;\n\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = vScale.getLineWidthForValue(actualBase) / 2;\n\n if (size > 0) {\n base += halfGrid;\n size -= halfGrid;\n } else if (size < 0) {\n base -= halfGrid;\n size += halfGrid;\n }\n }\n\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n\n _calculateBarIndexPixels(index, ruler) {\n const me = this;\n const scale = ruler.scale;\n const options = me.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n\n if (ruler.grouped) {\n const stackCount = skipNull ? me._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex' ? computeFlexCategoryTraits(index, ruler, options, stackCount) : computeFitCategoryTraits(index, ruler, options, stackCount);\n\n const stackIndex = me._getStackIndex(me.index, me._cachedMeta.stack, skipNull ? index : undefined);\n\n center = range.start + range.chunk * stackIndex + range.chunk / 2;\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(me.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n\n draw() {\n const me = this;\n const chart = me.chart;\n const meta = me._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n clipArea(chart.ctx, chart.chartArea);\n\n for (; i < ilen; ++i) {\n if (me.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(me._ctx);\n }\n }\n\n unclipArea(chart.ctx);\n }\n\n}\n\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n interaction: {\n mode: 'index'\n },\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true\n }\n }\n};\n\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n\n parseObjectData(meta, data, start, count) {\n const xScale = meta.xScale,\n yScale = meta.yScale;\n const _this$_parsing3 = this._parsing,\n _this$_parsing3$xAxis = _this$_parsing3.xAxisKey,\n xAxisKey = _this$_parsing3$xAxis === void 0 ? 'x' : _this$_parsing3$xAxis,\n _this$_parsing3$yAxis = _this$_parsing3.yAxisKey,\n yAxisKey = _this$_parsing3$yAxis === void 0 ? 'y' : _this$_parsing3$yAxis;\n const parsed = [];\n let i, ilen, item;\n\n for (i = start, ilen = start + count; i < ilen; ++i) {\n item = data[i];\n parsed.push({\n x: xScale.parse(resolveObjectKey(item, xAxisKey), i),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), i),\n _custom: item && item.r && +item.r\n });\n }\n\n return parsed;\n }\n\n getMaxOverflow() {\n const _this$_cachedMeta = this._cachedMeta,\n data = _this$_cachedMeta.data,\n _parsed = _this$_cachedMeta._parsed;\n let max = 0;\n\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size() / 2, _parsed[i]._custom);\n }\n\n return max > 0 && max;\n }\n\n getLabelAndValue(index) {\n const me = this;\n const meta = me._cachedMeta;\n const xScale = meta.xScale,\n yScale = meta.yScale;\n const parsed = me.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: meta.label,\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n\n update(mode) {\n const me = this;\n const points = me._cachedMeta.data;\n me.updateElements(points, 0, points.length, mode);\n }\n\n updateElements(points, start, count, mode) {\n const me = this;\n const reset = mode === 'reset';\n const _me$_cachedMeta2 = me._cachedMeta,\n iScale = _me$_cachedMeta2.iScale,\n vScale = _me$_cachedMeta2.vScale;\n const firstOpts = me.resolveDataElementOptions(start, mode);\n const sharedOptions = me.getSharedOptions(firstOpts);\n const includeOptions = me.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && me.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n\n if (includeOptions) {\n properties.options = me.resolveDataElementOptions(i, mode);\n\n if (reset) {\n properties.options.radius = 0;\n }\n }\n\n me.updateElement(point, i, properties, mode);\n }\n\n me.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n\n if (values.$shared) {\n values = Object.assign({}, values, {\n $shared: false\n });\n }\n\n const radius = values.radius;\n\n if (mode !== 'active') {\n values.radius = 0;\n }\n\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n\n}\n\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n\n }\n }\n }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n\n return {\n ratioX,\n ratioY,\n offsetX,\n offsetY\n };\n}\n\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n\n linkScales() {}\n\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n let i, ilen;\n\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = +data[i];\n }\n }\n\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n const me = this;\n\n for (let i = 0; i < me.chart.data.datasets.length; ++i) {\n if (me.chart.isDatasetVisible(i)) {\n const controller = me.chart.getDatasetMeta(i).controller;\n\n const rotation = controller._getRotation();\n\n const circumference = controller._getCircumference();\n\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n\n return {\n rotation: min,\n circumference: max - min\n };\n }\n\n update(mode) {\n const me = this;\n const chart = me.chart;\n const chartArea = chart.chartArea;\n const meta = me._cachedMeta;\n const arcs = meta.data;\n const spacing = me.getMaxBorderWidth() + me.getMaxOffset(arcs);\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(me.options.cutout, maxSize), 1);\n\n const chartWeight = me._getRingWeight(me.index);\n\n const _me$_getRotationExten = me._getRotationExtents(),\n circumference = _me$_getRotationExten.circumference,\n rotation = _me$_getRotationExten.rotation;\n\n const _getRatioAndOffset = getRatioAndOffset(rotation, circumference, cutout),\n ratioX = _getRatioAndOffset.ratioX,\n ratioY = _getRatioAndOffset.ratioY,\n offsetX = _getRatioAndOffset.offsetX,\n offsetY = _getRatioAndOffset.offsetY;\n\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(me.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n\n const radiusLength = (outerRadius - innerRadius) / me._getVisibleDatasetWeightTotal();\n\n me.offsetX = offsetX * outerRadius;\n me.offsetY = offsetY * outerRadius;\n meta.total = me.calculateTotal();\n me.outerRadius = outerRadius - radiusLength * me._getRingWeightOffset(me.index);\n me.innerRadius = Math.max(me.outerRadius - radiusLength * chartWeight, 0);\n me.updateElements(arcs, 0, arcs.length, mode);\n }\n\n _circumference(i, reset) {\n const me = this;\n const opts = me.options;\n const meta = me._cachedMeta;\n\n const circumference = me._getCircumference();\n\n if (reset && opts.animation.animateRotate || !this.chart.getDataVisibility(i) || meta._parsed[i] === null) {\n return 0;\n }\n\n return me.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n\n updateElements(arcs, start, count, mode) {\n const me = this;\n const reset = mode === 'reset';\n const chart = me.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : me.innerRadius;\n const outerRadius = animateScale ? 0 : me.outerRadius;\n const firstOpts = me.resolveDataElementOptions(start, mode);\n const sharedOptions = me.getSharedOptions(firstOpts);\n const includeOptions = me.includeOptions(mode, sharedOptions);\n\n let startAngle = me._getRotation();\n\n let i;\n\n for (i = 0; i < start; ++i) {\n startAngle += me._circumference(i, reset);\n }\n\n for (i = start; i < start + count; ++i) {\n const circumference = me._circumference(i, reset);\n\n const arc = arcs[i];\n const properties = {\n x: centerX + me.offsetX,\n y: centerY + me.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n\n if (includeOptions) {\n properties.options = sharedOptions || me.resolveDataElementOptions(i, mode);\n }\n\n startAngle += circumference;\n me.updateElement(arc, i, properties, mode);\n }\n\n me.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i)) {\n total += Math.abs(value);\n }\n }\n\n return total;\n }\n\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n\n return 0;\n }\n\n getLabelAndValue(index) {\n const me = this;\n const meta = me._cachedMeta;\n const chart = me.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n\n getMaxBorderWidth(arcs) {\n const me = this;\n let max = 0;\n const chart = me.chart;\n let i, ilen, meta, controller, options;\n\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n\n if (controller !== me) {\n controller.configure();\n }\n\n break;\n }\n }\n }\n\n if (!arcs) {\n return 0;\n }\n\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n\n return max;\n }\n\n getMaxOffset(arcs) {\n let max = 0;\n\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n\n return max;\n }\n\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n\n return ringWeightOffset;\n }\n\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n\n}\n\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth']\n }\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n indexAxis: 'r'\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n\n if (data.labels.length && data.datasets.length) {\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n\n return [];\n }\n\n },\n\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n\n return dataLabel;\n }\n\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n\n update(mode) {\n const me = this;\n const meta = me._cachedMeta;\n const line = meta.dataset,\n _meta$data = meta.data,\n points = _meta$data === void 0 ? [] : _meta$data,\n _dataset = meta._dataset;\n const animationsDisabled = me.chart._animationsDisabled;\n\n let _getStartAndCountOfVi = getStartAndCountOfVisiblePoints(meta, points, animationsDisabled),\n start = _getStartAndCountOfVi.start,\n count = _getStartAndCountOfVi.count;\n\n me._drawStart = start;\n me._drawCount = count;\n\n if (scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = me.resolveDatasetElementOptions(mode);\n\n if (!me.options.showLine) {\n options.borderWidth = 0;\n }\n\n options.segment = me.options.segment;\n me.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n me.updateElements(points, start, count, mode);\n }\n\n updateElements(points, start, count, mode) {\n const me = this;\n const reset = mode === 'reset';\n const _me$_cachedMeta3 = me._cachedMeta,\n iScale = _me$_cachedMeta3.iScale,\n vScale = _me$_cachedMeta3.vScale,\n _stacked = _me$_cachedMeta3._stacked;\n const firstOpts = me.resolveDataElementOptions(start, mode);\n const sharedOptions = me.getSharedOptions(firstOpts);\n const includeOptions = me.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const spanGaps = me.options.spanGaps;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = me.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && me.getParsed(start - 1);\n\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = me.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? me.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && parsed[iAxis] - prevParsed[iAxis] > maxGapLength;\n properties.parsed = parsed;\n\n if (includeOptions) {\n properties.options = sharedOptions || me.resolveDataElementOptions(i, mode);\n }\n\n if (!directUpdate) {\n me.updateElement(point, i, properties, mode);\n }\n\n prevParsed = parsed;\n }\n\n me.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n\n getMaxOverflow() {\n const me = this;\n const meta = me._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n\n if (!data.length) {\n return border;\n }\n\n const firstPoint = data[0].size(me.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(me.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n\n}\n\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category'\n },\n _value_: {\n type: 'linear'\n }\n }\n};\n\nfunction getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n\n if (meta._sorted) {\n const iScale = meta.iScale,\n _parsed = meta._parsed;\n const axis = iScale.axis;\n\n const _iScale$getUserBounds = iScale.getUserBounds(),\n min = _iScale$getUserBounds.min,\n max = _iScale$getUserBounds.max,\n minDefined = _iScale$getUserBounds.minDefined,\n maxDefined = _iScale$getUserBounds.maxDefined;\n\n if (minDefined) {\n start = _limitValue(Math.min(_lookupByKey(_parsed, iScale.axis, min).lo, animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo), 0, pointCount - 1);\n }\n\n if (maxDefined) {\n count = _limitValue(Math.max(_lookupByKey(_parsed, iScale.axis, max).hi + 1, animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max)).hi + 1), start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n\n return {\n start,\n count\n };\n}\n\nfunction scaleRangesChanged(meta) {\n const xScale = meta.xScale,\n yScale = meta.yScale,\n _scaleRanges = meta._scaleRanges;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n\n const changed = _scaleRanges.xmin !== xScale.min || _scaleRanges.xmax !== xScale.max || _scaleRanges.ymin !== yScale.min || _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n\n getLabelAndValue(index) {\n const me = this;\n const meta = me._cachedMeta;\n const chart = me.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n\n update(mode) {\n const arcs = this._cachedMeta.data;\n\n this._updateRadius();\n\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n\n _updateRadius() {\n const me = this;\n const chart = me.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? outerRadius / 100 * opts.cutoutPercentage : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n me.outerRadius = outerRadius - radiusLength * me.index;\n me.innerRadius = me.outerRadius - radiusLength;\n }\n\n updateElements(arcs, start, count, mode) {\n const me = this;\n const reset = mode === 'reset';\n const chart = me.chart;\n const dataset = me.getDataset();\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = me._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / me.countVisibleElements();\n\n for (i = 0; i < start; ++i) {\n angle += me._computeAngle(i, mode, defaultAngle);\n }\n\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n\n let endAngle = angle + me._computeAngle(i, mode, defaultAngle);\n\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(dataset.data[i]) : 0;\n angle = endAngle;\n\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: me.resolveDataElementOptions(i, mode)\n };\n me.updateElement(arc, i, properties, mode);\n }\n }\n\n countVisibleElements() {\n const dataset = this.getDataset();\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(dataset.data[index]) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index) ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle) : 0;\n }\n\n}\n\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n }\n },\n indexAxis: 'r',\n startAngle: 0\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n\n if (data.labels.length && data.datasets.length) {\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n\n return [];\n }\n\n },\n\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\n\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\n\nclass PieController extends DoughnutController {}\n\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const me = this;\n const vScale = me._cachedMeta.vScale;\n const parsed = me.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n\n update(mode) {\n const me = this;\n const meta = me._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n\n if (mode !== 'resize') {\n const options = me.resolveDatasetElementOptions(mode);\n\n if (!me.options.showLine) {\n options.borderWidth = 0;\n }\n\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n me.updateElement(line, undefined, properties, mode);\n }\n\n me.updateElements(points, 0, points.length, mode);\n }\n\n updateElements(points, start, count, mode) {\n const me = this;\n const dataset = me.getDataset();\n const scale = me._cachedMeta.rScale;\n const reset = mode === 'reset';\n\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = me.resolveDataElementOptions(i, mode);\n const pointPosition = scale.getPointPositionForValue(i, dataset.data[i]);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n me.updateElement(point, i, properties, mode);\n }\n }\n\n}\n\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n }\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear'\n }\n }\n};\n\nclass ScatterController extends LineController {}\n\nScatterController.id = 'scatter';\nScatterController.defaults = {\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\nvar controllers = /*#__PURE__*/Object.freeze({\n __proto__: null,\n BarController: BarController,\n BubbleController: BubbleController,\n DoughnutController: DoughnutController,\n LineController: LineController,\n PolarAreaController: PolarAreaController,\n PieController: PieController,\n RadarController: RadarController,\n ScatterController: ScatterController\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n\n formats() {\n return abstract();\n }\n\n parse(value, format) {\n return abstract();\n }\n\n format(timestamp, format) {\n return abstract();\n }\n\n add(timestamp, amount, unit) {\n return abstract();\n }\n\n diff(a, b, unit) {\n return abstract();\n }\n\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n\n endOf(timestamp, unit) {\n return abstract();\n }\n\n}\n\nDateAdapter.override = function (members) {\n Object.assign(DateAdapter.prototype, members);\n};\n\nvar adapters = {\n _date: DateAdapter\n};\n\nfunction getRelativePosition(e, chart) {\n if ('native' in e) {\n return {\n x: e.x,\n y: e.y\n };\n }\n\n return getRelativePosition$1(e, chart);\n}\n\nfunction evaluateAllVisibleItems(chart, handler) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n let index, data, element;\n\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n var _metasets$i = metasets[i];\n index = _metasets$i.index;\n data = _metasets$i.data;\n\n for (let j = 0, jlen = data.length; j < jlen; ++j) {\n element = data[j];\n\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const controller = metaset.controller,\n data = metaset.data,\n _sorted = metaset._sorted;\n const iScale = controller._cachedMeta.iScale;\n\n if (iScale && axis === iScale.axis && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {\n lo: start.lo,\n hi: end.hi\n };\n }\n }\n }\n\n return {\n lo: 0,\n hi: data.length - 1\n };\n}\n\nfunction optimizedEvaluateItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const _metasets$i2 = metasets[i],\n index = _metasets$i2.index,\n data = _metasets$i2.data;\n\n const _binarySearch = binarySearch(metasets[i], axis, value, intersect),\n lo = _binarySearch.lo,\n hi = _binarySearch.hi;\n\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\n\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function (pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\n\nfunction getIntersectItems(chart, position, axis, useFinalPosition) {\n const items = [];\n\n if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) {\n return items;\n }\n\n const evaluationFunc = function (element, datasetIndex, index) {\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n };\n\n optimizedEvaluateItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\n\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition) {\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n let items = [];\n\n if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) {\n return items;\n }\n\n const evaluationFunc = function (element, datasetIndex, index) {\n if (intersect && !element.inRange(position.x, position.y, useFinalPosition)) {\n return;\n }\n\n const center = element.getCenterPoint(useFinalPosition);\n\n if (!_isPointInArea(center, chart.chartArea, chart._minPadding)) {\n return;\n }\n\n const distance = distanceMetric(position, center);\n\n if (distance < minDistance) {\n items = [{\n element,\n datasetIndex,\n index\n }];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n };\n\n optimizedEvaluateItems(chart, axis, position, evaluationFunc);\n return items;\n}\n\nfunction getAxisItems(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const items = [];\n const axis = options.axis;\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateAllVisibleItems(chart, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n intersectsItem = true;\n }\n });\n\n if (options.intersect && !intersectsItem) {\n return [];\n }\n\n return items;\n}\n\nvar Interaction = {\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition) : getNearestItems(chart, position, axis, false, useFinalPosition);\n const elements = [];\n\n if (!items.length) {\n return [];\n }\n\n chart.getSortedVisibleDatasetMetas().forEach(meta => {\n const index = items[0].index;\n const element = meta.data[index];\n\n if (element && !element.skip) {\n elements.push({\n element,\n datasetIndex: meta.index,\n index\n });\n }\n });\n return elements;\n },\n\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n let items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition) : getNearestItems(chart, position, axis, false, useFinalPosition);\n\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n\n for (let i = 0; i < data.length; ++i) {\n items.push({\n element: data[i],\n datasetIndex,\n index: i\n });\n }\n }\n\n return items;\n },\n\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n return getIntersectItems(chart, position, axis, useFinalPosition);\n },\n\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition);\n },\n\n x(chart, e, options, useFinalPosition) {\n options.axis = 'x';\n return getAxisItems(chart, e, options, useFinalPosition);\n },\n\n y(chart, e, options, useFinalPosition) {\n options.axis = 'y';\n return getAxisItems(chart, e, options, useFinalPosition);\n }\n\n }\n};\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\n\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\n\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\n\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight;\n });\n}\n\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box;\n\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n layoutBoxes.push({\n index: i,\n box,\n pos: box.position,\n horizontal: box.isHorizontal(),\n weight: box.weight\n });\n }\n\n return layoutBoxes;\n}\n\nfunction setLayoutDims(layouts, params) {\n let i, ilen, layout;\n\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n\n if (layout.horizontal) {\n layout.width = layout.box.fullSize && params.availableWidth;\n layout.height = params.hBoxMaxHeight;\n } else {\n layout.width = params.vBoxMaxWidth;\n layout.height = layout.box.fullSize && params.availableHeight;\n }\n }\n}\n\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\n\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\n\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\n\nfunction updateDims(chartArea, params, layout) {\n const box = layout.box;\n const maxPadding = chartArea.maxPadding;\n\n if (!isObject(layout.pos)) {\n if (layout.size) {\n chartArea[layout.pos] -= layout.size;\n }\n\n layout.size = layout.horizontal ? box.height : box.width;\n chartArea[layout.pos] += layout.size;\n }\n\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal ? {\n same: widthChanged,\n other: heightChanged\n } : {\n same: heightChanged,\n other: widthChanged\n };\n}\n\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\n\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n\n function marginForPositions(positions) {\n const margin = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n positions.forEach(pos => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n\n return horizontal ? marginForPositions(['left', 'right']) : marginForPositions(['top', 'bottom']);\n}\n\nfunction fitBoxes(boxes, chartArea, params) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea));\n\n const _updateDims = updateDims(chartArea, params, layout),\n same = _updateDims.same,\n other = _updateDims.other;\n\n refit |= same && refitBoxes.length;\n changed = changed || other;\n\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n\n return refit && fitBoxes(refitBoxes, chartArea, params) || changed;\n}\n\nfunction placeBoxes(boxes, chartArea, params) {\n const userPadding = params.padding;\n let x = chartArea.x;\n let y = chartArea.y;\n let i, ilen, layout, box;\n\n for (i = 0, ilen = boxes.length; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n\n if (layout.horizontal) {\n box.left = box.fullSize ? userPadding.left : chartArea.left;\n box.right = box.fullSize ? params.outerWidth - userPadding.right : chartArea.left + chartArea.w;\n box.top = y;\n box.bottom = y + box.height;\n box.width = box.right - box.left;\n y = box.bottom;\n } else {\n box.left = x;\n box.right = x + box.width;\n box.top = box.fullSize ? userPadding.top : chartArea.top;\n box.bottom = box.fullSize ? params.outerHeight - userPadding.right : chartArea.top + chartArea.h;\n box.height = box.bottom - box.top;\n x = box.right;\n }\n }\n\n chartArea.x = x;\n chartArea.y = y;\n}\n\ndefaults.set('layout', {\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n});\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n\n item._layers = item._layers || function () {\n return [{\n z: 0,\n\n draw(chartArea) {\n item.draw(chartArea);\n }\n\n }];\n };\n\n chart.boxes.push(item);\n },\n\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) => wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params);\n fitBoxes(verticalBoxes, chartArea, params);\n\n if (fitBoxes(horizontalBoxes, chartArea, params)) {\n fitBoxes(verticalBoxes, chartArea, params);\n }\n\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w\n };\n each(boxes.chartArea, layout => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h);\n });\n }\n\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n\n releaseContext(context) {\n return false;\n }\n\n addEventListener(chart, type, listener) {}\n\n removeEventListener(chart, type, listener) {}\n\n getDevicePixelRatio() {\n return 1;\n }\n\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n\n isAttached(canvas) {\n return true;\n }\n\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\n\nconst isNullOrEmpty = value => value === null || value === '';\n\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n\n return canvas;\n}\n\nconst eventListenerOptions = supportsEventListenerOptions ? {\n passive: true\n} : false;\n\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\n\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\n\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n\n const _getRelativePosition$ = getRelativePosition$1(event, chart),\n x = _getRelativePosition$.x,\n y = _getRelativePosition$.y;\n\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null\n };\n}\n\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n\n const container = canvas && _getParentNode(canvas);\n\n const element = container || canvas;\n const observer = new MutationObserver(entries => {\n const parent = _getParentNode(element);\n\n entries.forEach(entry => {\n for (let i = 0; i < entry.addedNodes.length; i++) {\n const added = entry.addedNodes[i];\n\n if (added === element || added === parent) {\n listener(entry.target);\n }\n }\n });\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\n\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n\n const container = canvas && _getParentNode(canvas);\n\n if (!container) {\n return;\n }\n\n const observer = new MutationObserver(entries => {\n entries.forEach(entry => {\n for (let i = 0; i < entry.removedNodes.length; i++) {\n if (entry.removedNodes[i] === canvas) {\n listener();\n break;\n }\n }\n });\n });\n observer.observe(container, {\n childList: true\n });\n return observer;\n}\n\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\n\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\n\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n\n drpListeningCharts.set(chart, resize);\n}\n\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\n\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n\n const container = canvas && _getParentNode(canvas);\n\n if (!container) {\n return;\n }\n\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n\n if (width === 0 && height === 0) {\n return;\n }\n\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\n\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\n\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled(event => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart, args => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\n\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n\n return null;\n }\n\n releaseContext(context) {\n const canvas = context.canvas;\n\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach(prop => {\n const value = initial[prop];\n\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach(key => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n\n if (!proxy) {\n return;\n }\n\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n\n return !!(container && _getParentNode(container));\n }\n\n}\n\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n\n tooltipPosition(useFinalPosition) {\n const _this$getProps = this.getProps(['x', 'y'], useFinalPosition),\n x = _this$getProps.x,\n y = _this$getProps.y;\n\n return {\n x,\n y\n };\n }\n\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n\n getProps(props, final) {\n const me = this;\n const anims = this.$animations;\n\n if (!final || !anims) {\n return me;\n }\n\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : me[prop];\n });\n return ret;\n }\n\n}\n\nElement.defaults = {};\nElement.defaultRoutes = undefined;\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n\n delta = calculateDelta(tickValue, ticks);\n }\n\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {\n notation,\n minimumFractionDigits: numDecimal,\n maximumFractionDigits: numDecimal\n };\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n\n const remain = tickValue / Math.pow(10, Math.floor(log10(tickValue)));\n\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n\n return '';\n }\n\n};\n\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n\n return delta;\n}\n\nvar Ticks = {\n formatters\n};\ndefaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2\n }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n _fallback: false,\n _scriptable: name => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: name => name !== 'borderDash' && name !== 'tickBorderDash'\n});\ndefaults.describe('scales', {\n _fallback: 'scale'\n});\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\n\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n\n const tickLength = scale._tickSize();\n\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\n\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n\n const factors = _factorize(evenMajorSpacing);\n\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n\n if (factor > spacing) {\n return factor;\n }\n }\n\n return Math.max(spacing, 1);\n}\n\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n\n return result;\n}\n\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\n\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n\n next = start;\n\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\n\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n\n if (len < 2) {\n return false;\n }\n\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n\n return diff;\n}\n\nconst reverseAlign = align => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\n\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\n\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n\n return result;\n}\n\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n\n lineValue += validIndex < index ? offset : -offset;\n\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n\n return lineValue;\n}\n\nfunction garbageCollect(caches, length) {\n each(caches, cache => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n\n gc.splice(0, gcLen);\n }\n });\n}\n\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\n\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return lines * font.lineHeight + padding.height;\n}\n\nfunction createScaleContext(parent, scale) {\n return Object.assign(Object.create(parent), {\n scale,\n type: 'scale'\n });\n}\n\nfunction createTickContext(parent, index, tick) {\n return Object.assign(Object.create(parent), {\n tick,\n index,\n type: 'tick'\n });\n}\n\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n\n if (reverse && position !== 'right' || !reverse && position === 'right') {\n ret = reverseAlign(ret);\n }\n\n return ret;\n}\n\nfunction titleArgs(scale, offset, position, align) {\n const top = scale.top,\n left = scale.left,\n bottom = scale.bottom,\n right = scale.right;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = offsetFromEdge(scale, position, offset);\n maxWidth = right - left;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n}\n\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n\n init(options) {\n const me = this;\n me.options = options.setContext(me.getContext());\n me.axis = options.axis;\n me._userMin = me.parse(options.min);\n me._userMax = me.parse(options.max);\n me._suggestedMin = me.parse(options.suggestedMin);\n me._suggestedMax = me.parse(options.suggestedMax);\n }\n\n parse(raw, index) {\n return raw;\n }\n\n getUserBounds() {\n let _userMin = this._userMin,\n _userMax = this._userMax,\n _suggestedMin = this._suggestedMin,\n _suggestedMax = this._suggestedMax;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n\n getMinMax(canStack) {\n const me = this;\n\n let _me$getUserBounds = me.getUserBounds(),\n min = _me$getUserBounds.min,\n max = _me$getUserBounds.max,\n minDefined = _me$getUserBounds.minDefined,\n maxDefined = _me$getUserBounds.maxDefined;\n\n let range;\n\n if (minDefined && maxDefined) {\n return {\n min,\n max\n };\n }\n\n const metas = me.getMatchingVisibleMetas();\n\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(me, canStack);\n\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n\n getPadding() {\n const me = this;\n return {\n left: me.paddingLeft || 0,\n top: me.paddingTop || 0,\n right: me.paddingRight || 0,\n bottom: me.paddingBottom || 0\n };\n }\n\n getTicks() {\n return this.ticks;\n }\n\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n\n update(maxWidth, maxHeight, margins) {\n const me = this;\n const tickOpts = me.options.ticks;\n const sampleSize = tickOpts.sampleSize;\n me.beforeUpdate();\n me.maxWidth = maxWidth;\n me.maxHeight = maxHeight;\n me._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n me.ticks = null;\n me._labelSizes = null;\n me._gridLineItems = null;\n me._labelItems = null;\n me.beforeSetDimensions();\n me.setDimensions();\n me.afterSetDimensions();\n me._maxLength = me.isHorizontal() ? me.width + margins.left + margins.right : me.height + margins.top + margins.bottom;\n\n if (!me._dataLimitsCached) {\n me.beforeDataLimits();\n me.determineDataLimits();\n me.afterDataLimits();\n me._range = _addGrace(me, me.options.grace);\n me._dataLimitsCached = true;\n }\n\n me.beforeBuildTicks();\n me.ticks = me.buildTicks() || [];\n me.afterBuildTicks();\n const samplingEnabled = sampleSize < me.ticks.length;\n\n me._convertTicksToLabels(samplingEnabled ? sample(me.ticks, sampleSize) : me.ticks);\n\n me.configure();\n me.beforeCalculateLabelRotation();\n me.calculateLabelRotation();\n me.afterCalculateLabelRotation();\n\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n me.ticks = autoSkip(me, me.ticks);\n me._labelSizes = null;\n }\n\n if (samplingEnabled) {\n me._convertTicksToLabels(me.ticks);\n }\n\n me.beforeFit();\n me.fit();\n me.afterFit();\n me.afterUpdate();\n }\n\n configure() {\n const me = this;\n let reversePixels = me.options.reverse;\n let startPixel, endPixel;\n\n if (me.isHorizontal()) {\n startPixel = me.left;\n endPixel = me.right;\n } else {\n startPixel = me.top;\n endPixel = me.bottom;\n reversePixels = !reversePixels;\n }\n\n me._startPixel = startPixel;\n me._endPixel = endPixel;\n me._reversePixels = reversePixels;\n me._length = endPixel - startPixel;\n me._alignToPixels = me.options.alignToPixels;\n }\n\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n\n setDimensions() {\n const me = this;\n\n if (me.isHorizontal()) {\n me.width = me.maxWidth;\n me.left = 0;\n me.right = me.width;\n } else {\n me.height = me.maxHeight;\n me.top = 0;\n me.bottom = me.height;\n }\n\n me.paddingLeft = 0;\n me.paddingTop = 0;\n me.paddingRight = 0;\n me.paddingBottom = 0;\n }\n\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n\n _callHooks(name) {\n const me = this;\n me.chart.notifyPlugins(name, me.getContext());\n callback(me.options[name], [me]);\n }\n\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n\n determineDataLimits() {}\n\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n\n buildTicks() {\n return [];\n }\n\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n\n generateTickLabels(ticks) {\n const me = this;\n const tickOpts = me.options.ticks;\n let i, ilen, tick;\n\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], me);\n }\n\n for (i = 0; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n }\n\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n\n calculateLabelRotation() {\n const me = this;\n const options = me.options;\n const tickOpts = options.ticks;\n const numTicks = me.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n\n if (!me._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !me.isHorizontal()) {\n me.labelRotation = minRotation;\n return;\n }\n\n const labelSizes = me._getLabelSizes();\n\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n\n const maxWidth = _limitValue(me.chart.width - maxLabelWidth, 0, me.maxWidth);\n\n tickWidth = options.offset ? me.maxWidth / numTicks : maxWidth / (numTicks - 1);\n\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = me.maxHeight - getTickMarkLength(options.grid) - tickOpts.padding - getTitleHeight(options.title, me.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(Math.asin(Math.min((labelSizes.highest.height + 6) / tickWidth, 1)), Math.asin(Math.min(maxHeight / maxLabelDiagonal, 1)) - Math.asin(maxLabelHeight / maxLabelDiagonal)));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n\n me.labelRotation = labelRotation;\n }\n\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n\n fit() {\n const me = this;\n const minSize = {\n width: 0,\n height: 0\n };\n const chart = me.chart,\n _me$options2 = me.options,\n tickOpts = _me$options2.ticks,\n titleOpts = _me$options2.title,\n gridOpts = _me$options2.grid;\n\n const display = me._isVisible();\n\n const isHorizontal = me.isHorizontal();\n\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n\n if (isHorizontal) {\n minSize.width = me.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = me.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n\n if (tickOpts.display && me.ticks.length) {\n const _me$_getLabelSizes = me._getLabelSizes(),\n first = _me$_getLabelSizes.first,\n last = _me$_getLabelSizes.last,\n widest = _me$_getLabelSizes.widest,\n highest = _me$_getLabelSizes.highest;\n\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(me.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(me.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n\n me._calculatePadding(first, last, sin, cos);\n }\n }\n\n me._handleMargins();\n\n if (isHorizontal) {\n me.width = me._length = chart.width - me._margins.left - me._margins.right;\n me.height = minSize.height;\n } else {\n me.width = minSize.width;\n me.height = me._length = chart.height - me._margins.top - me._margins.bottom;\n }\n }\n\n _calculatePadding(first, last, sin, cos) {\n const me = this;\n const _me$options3 = me.options,\n _me$options3$ticks = _me$options3.ticks,\n align = _me$options3$ticks.align,\n padding = _me$options3$ticks.padding,\n position = _me$options3.position;\n const isRotated = me.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && me.axis === 'x';\n\n if (me.isHorizontal()) {\n const offsetLeft = me.getPixelForTick(0) - me.left;\n const offsetRight = me.right - me.getPixelForTick(me.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n\n me.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * me.width / (me.width - offsetLeft), 0);\n me.paddingRight = Math.max((paddingRight - offsetRight + padding) * me.width / (me.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n\n me.paddingTop = paddingTop + padding;\n me.paddingBottom = paddingBottom + padding;\n }\n }\n\n _handleMargins() {\n const me = this;\n\n if (me._margins) {\n me._margins.left = Math.max(me.paddingLeft, me._margins.left);\n me._margins.top = Math.max(me.paddingTop, me._margins.top);\n me._margins.right = Math.max(me.paddingRight, me._margins.right);\n me._margins.bottom = Math.max(me.paddingBottom, me._margins.bottom);\n }\n }\n\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n\n isHorizontal() {\n const _this$options = this.options,\n axis = _this$options.axis,\n position = _this$options.position;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n\n isFullSize() {\n return this.options.fullSize;\n }\n\n _convertTicksToLabels(ticks) {\n const me = this;\n me.beforeTickToLabelConversion();\n me.generateTickLabels(ticks);\n me.afterTickToLabelConversion();\n }\n\n _getLabelSizes() {\n const me = this;\n let labelSizes = me._labelSizes;\n\n if (!labelSizes) {\n const sampleSize = me.options.ticks.sampleSize;\n let ticks = me.ticks;\n\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n\n me._labelSizes = labelSizes = me._computeLabelSizes(ticks, ticks.length);\n }\n\n return labelSizes;\n }\n\n _computeLabelSizes(ticks, length) {\n const ctx = this.ctx,\n caches = this._longestTextCache;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n\n for (i = 0; i < length; ++i) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {\n data: {},\n gc: []\n };\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n\n const valueAt = idx => ({\n width: widths[idx] || 0,\n height: heights[idx] || 0\n });\n\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights\n };\n }\n\n getLabelForValue(value) {\n return value;\n }\n\n getPixelForValue(value, index) {\n return NaN;\n }\n\n getValueForPixel(pixel) {}\n\n getPixelForTick(index) {\n const ticks = this.ticks;\n\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n\n return this.getPixelForValue(ticks[index].value);\n }\n\n getPixelForDecimal(decimal) {\n const me = this;\n\n if (me._reversePixels) {\n decimal = 1 - decimal;\n }\n\n const pixel = me._startPixel + decimal * me._length;\n return _int16Range(me._alignToPixels ? _alignPixel(me.chart, pixel, 0) : pixel);\n }\n\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n\n getBaseValue() {\n const min = this.min,\n max = this.max;\n return min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0;\n }\n\n getContext(index) {\n const me = this;\n const ticks = me.ticks || [];\n\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context || (tick.$context = createTickContext(me.getContext(), index, tick));\n }\n\n return me.$context || (me.$context = createScaleContext(me.chart.getContext(), me));\n }\n\n _tickSize() {\n const me = this;\n const optionTicks = me.options.ticks;\n const rot = toRadians(me.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n\n const labelSizes = me._getLabelSizes();\n\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return me.isHorizontal() ? h * cos > w * sin ? w / cos : h / sin : h * sin < w * cos ? h / cos : w / sin;\n }\n\n _isVisible() {\n const display = this.options.display;\n\n if (display !== 'auto') {\n return !!display;\n }\n\n return this.getMatchingVisibleMetas().length > 0;\n }\n\n _computeGridLineItems(chartArea) {\n const me = this;\n const axis = me.axis;\n const chart = me.chart;\n const options = me.options;\n const grid = options.grid,\n position = options.position;\n const offset = grid.offset;\n const isHorizontal = me.isHorizontal();\n const ticks = me.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(me.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n\n const alignBorderValue = function (pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n\n if (position === 'top') {\n borderValue = alignBorderValue(me.bottom);\n ty1 = me.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(me.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = me.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(me.right);\n tx1 = me.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(me.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = me.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(me.chart.scales[positionAxisID].getPixelForValue(value));\n }\n\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(me.chart.scales[positionAxisID].getPixelForValue(value));\n }\n\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n\n for (i = 0; i < ticksLength; ++i) {\n const optsAtIndex = grid.setContext(me.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = grid.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(me, i, offset);\n\n if (lineValue === undefined) {\n continue;\n }\n\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset\n });\n }\n\n me._ticksLength = ticksLength;\n me._borderValue = borderValue;\n return items;\n }\n\n _computeLabelItems(chartArea) {\n const me = this;\n const axis = me.axis;\n const options = me.options;\n const position = options.position,\n optionTicks = options.ticks;\n const isHorizontal = me.isHorizontal();\n const ticks = me.ticks;\n const align = optionTicks.align,\n crossAlign = optionTicks.crossAlign,\n padding = optionTicks.padding,\n mirror = optionTicks.mirror;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(me.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n\n if (position === 'top') {\n y = me.bottom - hTickAndPadding;\n textAlign = me._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = me.top + hTickAndPadding;\n textAlign = me._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = me._getYAxisLabelAlignment(tl);\n\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = me._getYAxisLabelAlignment(tl);\n\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = (chartArea.top + chartArea.bottom) / 2 + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = me.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n\n textAlign = me._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = (chartArea.left + chartArea.right) / 2 - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = me.chart.scales[positionAxisID].getPixelForValue(value);\n }\n\n textAlign = me._getYAxisLabelAlignment(tl).textAlign;\n }\n\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n\n const labelSizes = me._getLabelSizes();\n\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(me.getContext(i));\n pixel = me.getPixelForTick(i) + optionTicks.labelOffset;\n font = me._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n\n if (isHorizontal) {\n x = pixel;\n\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n\n if (mirror) {\n textOffset *= -1;\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n\n let backdrop;\n\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = y + textOffset - labelPadding.top;\n let left = x - labelPadding.left;\n\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n\n case 'bottom':\n top -= height;\n break;\n }\n\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n\n case 'right':\n left -= width;\n break;\n }\n\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor\n };\n }\n\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign,\n textBaseline,\n translation: [x, y],\n backdrop\n });\n }\n\n return items;\n }\n\n _getXAxisLabelAlignment() {\n const me = this;\n const _me$options4 = me.options,\n position = _me$options4.position,\n ticks = _me$options4.ticks;\n const rotation = -toRadians(me.labelRotation);\n\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n\n let align = 'center';\n\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n }\n\n return align;\n }\n\n _getYAxisLabelAlignment(tl) {\n const me = this;\n const _me$options5 = me.options,\n position = _me$options5.position,\n _me$options5$ticks = _me$options5.ticks,\n crossAlign = _me$options5$ticks.crossAlign,\n mirror = _me$options5$ticks.mirror,\n padding = _me$options5$ticks.padding;\n\n const labelSizes = me._getLabelSizes();\n\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n\n if (position === 'left') {\n if (mirror) {\n textAlign = 'left';\n x = me.right + padding;\n } else {\n x = me.right - tickAndPadding;\n\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x = me.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n textAlign = 'right';\n x = me.left + padding;\n } else {\n x = me.left + tickAndPadding;\n\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = me.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n\n return {\n textAlign,\n x\n };\n }\n\n _computeLabelArea() {\n const me = this;\n\n if (me.options.ticks.mirror) {\n return;\n }\n\n const chart = me.chart;\n const position = me.options.position;\n\n if (position === 'left' || position === 'right') {\n return {\n top: 0,\n left: me.left,\n bottom: chart.height,\n right: me.right\n };\n }\n\n if (position === 'top' || position === 'bottom') {\n return {\n top: me.top,\n left: 0,\n bottom: me.bottom,\n right: chart.width\n };\n }\n }\n\n drawBackground() {\n const ctx = this.ctx,\n backgroundColor = this.options.backgroundColor,\n left = this.left,\n top = this.top,\n width = this.width,\n height = this.height;\n\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n\n getLineWidthForValue(value) {\n const me = this;\n const grid = me.options.grid;\n\n if (!me._isVisible() || !grid.display) {\n return 0;\n }\n\n const ticks = me.ticks;\n const index = ticks.findIndex(t => t.value === value);\n\n if (index >= 0) {\n const opts = grid.setContext(me.getContext(index));\n return opts.lineWidth;\n }\n\n return 0;\n }\n\n drawGrid(chartArea) {\n const me = this;\n const grid = me.options.grid;\n const ctx = me.ctx;\n\n const items = me._gridLineItems || (me._gridLineItems = me._computeGridLineItems(chartArea));\n\n let i, ilen;\n\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n\n if (grid.drawOnChartArea) {\n drawLine({\n x: item.x1,\n y: item.y1\n }, {\n x: item.x2,\n y: item.y2\n }, item);\n }\n\n if (grid.drawTicks) {\n drawLine({\n x: item.tx1,\n y: item.ty1\n }, {\n x: item.tx2,\n y: item.ty2\n }, {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n });\n }\n }\n }\n }\n\n drawBorder() {\n const me = this;\n const chart = me.chart,\n ctx = me.ctx,\n grid = me.options.grid;\n const borderOpts = grid.setContext(me.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n\n if (!axisWidth) {\n return;\n }\n\n const lastLineWidth = grid.setContext(me.getContext(0)).lineWidth;\n const borderValue = me._borderValue;\n let x1, x2, y1, y2;\n\n if (me.isHorizontal()) {\n x1 = _alignPixel(chart, me.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, me.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, me.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, me.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n\n ctx.save();\n ctx.lineWidth = borderOpts.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n\n drawLabels(chartArea) {\n const me = this;\n const optionTicks = me.options.ticks;\n\n if (!optionTicks.display) {\n return;\n }\n\n const ctx = me.ctx;\n\n const area = me._computeLabelArea();\n\n if (area) {\n clipArea(ctx, area);\n }\n\n const items = me._labelItems || (me._labelItems = me._computeLabelItems(chartArea));\n\n let i, ilen;\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n\n if (area) {\n unclipArea(ctx);\n }\n }\n\n drawTitle() {\n const ctx = this.ctx,\n _this$options2 = this.options,\n position = _this$options2.position,\n title = _this$options2.title,\n reverse = _this$options2.reverse;\n\n if (!title.display) {\n return;\n }\n\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n\n if (position === 'bottom') {\n offset += padding.bottom;\n\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n\n const _titleArgs = titleArgs(this, offset, position, align),\n titleX = _titleArgs.titleX,\n titleY = _titleArgs.titleY,\n maxWidth = _titleArgs.maxWidth,\n rotation = _titleArgs.rotation;\n\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY]\n });\n }\n\n draw(chartArea) {\n const me = this;\n\n if (!me._isVisible()) {\n return;\n }\n\n me.drawBackground();\n me.drawGrid(chartArea);\n me.drawBorder();\n me.drawTitle();\n me.drawLabels(chartArea);\n }\n\n _layers() {\n const me = this;\n const opts = me.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = opts.grid && opts.grid.z || 0;\n\n if (!me._isVisible() || me.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n\n draw(chartArea) {\n me.draw(chartArea);\n }\n\n }];\n }\n\n return [{\n z: gz,\n\n draw(chartArea) {\n me.drawBackground();\n me.drawGrid(chartArea);\n me.drawTitle();\n }\n\n }, {\n z: gz + 1,\n\n draw() {\n me.drawBorder();\n }\n\n }, {\n z: tz,\n\n draw(chartArea) {\n me.drawLabels(chartArea);\n }\n\n }];\n }\n\n getMatchingVisibleMetas(type) {\n const me = this;\n const metas = me.chart.getSortedVisibleDatasetMetas();\n const axisID = me.axis + 'AxisID';\n const result = [];\n let i, ilen;\n\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n\n if (meta[axisID] === me.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n\n return result;\n }\n\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n\n _maxDigits() {\n const me = this;\n\n const fontSize = me._resolveTickFontOptions(0).lineHeight;\n\n return (me.isHorizontal() ? me.width : me.height) / fontSize;\n }\n\n}\n\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n\n register(item) {\n const me = this;\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n\n if (isIChartComponent(proto)) {\n parentScope = me.register(proto);\n }\n\n const items = me.items;\n const id = item.id;\n const scope = me.scope + '.' + id;\n\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n\n if (id in items) {\n return scope;\n }\n\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n\n if (me.override) {\n defaults.override(item.id, item.overrides);\n }\n\n return scope;\n }\n\n get(id) {\n return this.items[id];\n }\n\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n\n if (id in items) {\n delete items[id];\n }\n\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n\n}\n\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [parentScope ? defaults.get(parentScope) : {}, defaults.get(scope), item.defaults]);\n defaults.set(scope, itemDefaults);\n\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\n\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\n\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n\n add() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n this._each('register', args);\n }\n\n remove() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n this._each('unregister', args);\n }\n\n addControllers() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n this._each('register', args, this.controllers);\n }\n\n addElements() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n this._each('register', args, this.elements);\n }\n\n addPlugins() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n this._each('register', args, this.plugins);\n }\n\n addScales() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n this._each('register', args, this.scales);\n }\n\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n\n removeControllers() {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n this._each('unregister', args, this.controllers);\n }\n\n removeElements() {\n for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n args[_key8] = arguments[_key8];\n }\n\n this._each('unregister', args, this.elements);\n }\n\n removePlugins() {\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n args[_key9] = arguments[_key9];\n }\n\n this._each('unregister', args, this.plugins);\n }\n\n removeScales() {\n for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n args[_key10] = arguments[_key10];\n }\n\n this._each('unregister', args, this.scales);\n }\n\n _each(method, args, typedRegistry) {\n const me = this;\n [...args].forEach(arg => {\n const reg = typedRegistry || me._getRegistryForType(arg);\n\n if (typedRegistry || reg.isForType(arg) || reg === me.plugins && arg.id) {\n me._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || me._getRegistryForType(item);\n\n me._exec(method, itemReg, item);\n });\n }\n });\n }\n\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n\n if (reg.isForType(type)) {\n return reg;\n }\n }\n\n return this.plugins;\n }\n\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n\n return item;\n }\n\n}\n\nvar registry = new Registry();\n\nclass PluginService {\n constructor() {\n this._init = [];\n }\n\n notify(chart, hook, args, filter) {\n const me = this;\n\n if (hook === 'beforeInit') {\n me._init = me._createDescriptors(chart, true);\n\n me._notify(me._init, chart, 'install');\n }\n\n const descriptors = filter ? me._descriptors(chart).filter(filter) : me._descriptors(chart);\n\n const result = me._notify(descriptors, chart, hook, args);\n\n if (hook === 'destroy') {\n me._notify(descriptors, chart, 'stop');\n\n me._notify(me._init, chart, 'uninstall');\n }\n\n return result;\n }\n\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n\n return true;\n }\n\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n\n const descriptors = this._cache = this._createDescriptors(chart);\n\n this._notifyStateChanges(chart);\n\n return descriptors;\n }\n\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n\n}\n\nfunction allPlugins(config) {\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n\n const local = config.plugins || [];\n\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n }\n }\n\n return plugins;\n}\n\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n\n if (options === true) {\n return {};\n }\n\n return options;\n}\n\nfunction createDescriptors(chart, plugins, options, all) {\n const result = [];\n const context = chart.getContext();\n\n for (let i = 0; i < plugins.length; i++) {\n const plugin = plugins[i];\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n\n if (opts === null) {\n continue;\n }\n\n result.push({\n plugin,\n options: pluginOpts(chart.config, plugin, opts, context)\n });\n }\n\n return result;\n}\n\nfunction pluginOpts(config, plugin, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n return config.createResolver(scopes, context, [''], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\n\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n\n return axis;\n}\n\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\n\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\n\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y') {\n return id;\n }\n\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\n\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {\n scales: {}\n };\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{\n axis\n }, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{\n axis\n }, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\n\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\n\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\n\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\n\nconst keyCache = new Map();\nconst keysCached = new Set();\n\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n\n return keys;\n}\n\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n\n if (opts !== undefined) {\n set.add(opts);\n }\n};\n\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n\n get type() {\n return this._config.type;\n }\n\n set type(type) {\n this._config.type = type;\n }\n\n get data() {\n return this._config.data;\n }\n\n set data(data) {\n this._config.data = initData(data);\n }\n\n get options() {\n return this._config.options;\n }\n\n set options(options) {\n this._config.options = options;\n }\n\n get plugins() {\n return this._config.plugins;\n }\n\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n\n clearCache() {\n this._scopeCache.clear();\n\n this._resolverCache.clear();\n }\n\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType, () => [[`datasets.${datasetType}`, '']]);\n }\n\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`, () => [[`datasets.${datasetType}.transitions.${transition}`, `transitions.${transition}`], [`datasets.${datasetType}`, '']]);\n }\n\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`, () => [[`datasets.${datasetType}.elements.${elementType}`, `datasets.${datasetType}`, `elements.${elementType}`, '']]);\n }\n\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`, () => [[`plugins.${id}`, ...(plugin.additionalOptionScopes || [])]]);\n }\n\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n\n let cache = _scopeCache.get(mainScope);\n\n if (!cache || resetCache) {\n cache = new Map();\n\n _scopeCache.set(mainScope, cache);\n }\n\n return cache;\n }\n\n getOptionScopes(mainScope, keyLists, resetCache) {\n const options = this.options,\n type = this.type;\n\n const cache = this._cachedScopes(mainScope, resetCache);\n\n const cached = cache.get(keyLists);\n\n if (cached) {\n return cached;\n }\n\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = [...scopes];\n\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n\n return array;\n }\n\n chartOptionScopes() {\n const options = this.options,\n type = this.type;\n return [options, overrides[type] || {}, defaults.datasets[type] || {}, {\n type\n }, defaults, descriptors];\n }\n\n resolveNamedOptions(scopes, names, context) {\n let prefixes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [''];\n const result = {\n $shared: true\n };\n\n const _getResolver = getResolver(this._resolverCache, scopes, prefixes),\n resolver = _getResolver.resolver,\n subPrefixes = _getResolver.subPrefixes;\n\n let options = resolver;\n\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n\n for (const prop of names) {\n result[prop] = options[prop];\n }\n\n return result;\n }\n\n createResolver(scopes, context) {\n let prefixes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [''];\n let descriptorDefaults = arguments.length > 3 ? arguments[3] : undefined;\n\n const _getResolver2 = getResolver(this._resolverCache, scopes, prefixes),\n resolver = _getResolver2.resolver;\n\n return isObject(context) ? _attachContext(resolver, context, undefined, descriptorDefaults) : resolver;\n }\n\n}\n\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n\n return cached;\n}\n\nfunction needContext(proxy, names) {\n const _descriptors2 = _descriptors(proxy),\n isScriptable = _descriptors2.isScriptable,\n isIndexable = _descriptors2.isIndexable;\n\n for (const prop of names) {\n if (isScriptable(prop) && isFunction(proxy[prop]) || isIndexable(prop) && isArray(proxy[prop])) {\n return true;\n }\n }\n\n return false;\n}\n\nvar version = \"3.3.2\";\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\n\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x';\n}\n\nfunction compare2Level(l1, l2) {\n return function (a, b) {\n return a[l1] === b[l1] ? a[l2] - b[l2] : a[l1] - b[l1];\n };\n}\n\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\n\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\n\nfunction isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\nfunction getCanvas(item) {\n if (isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n\n if (item && item.canvas) {\n item = item.canvas;\n }\n\n return item;\n}\n\nconst instances = {};\n\nconst getChart = key => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter(c => c.canvas === canvas).pop();\n};\n\nclass Chart {\n constructor(item, config) {\n const me = this;\n this.config = config = new Config(config);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n\n if (existingChart) {\n throw new Error('Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' + ' must be destroyed before the canvas can be reused.');\n }\n\n const options = config.createResolver(config.chartOptionScopes(), me.getContext());\n this.platform = me._initializePlatform(initialCanvas, config);\n const context = me.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this.scale = undefined;\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(() => this.update('resize'), options.resizeDelay || 0);\n instances[me.id] = me;\n\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n\n animator.listen(me, 'complete', onAnimationsComplete);\n animator.listen(me, 'progress', onAnimationProgress);\n\n me._initialize();\n\n if (me.attached) {\n me.update();\n }\n }\n\n get aspectRatio() {\n const _this$options3 = this.options,\n aspectRatio = _this$options3.aspectRatio,\n maintainAspectRatio = _this$options3.maintainAspectRatio,\n width = this.width,\n height = this.height,\n _aspectRatio = this._aspectRatio;\n\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n\n return height ? width / height : null;\n }\n\n get data() {\n return this.config.data;\n }\n\n set data(data) {\n this.config.data = data;\n }\n\n get options() {\n return this._options;\n }\n\n set options(options) {\n this.config.options = options;\n }\n\n _initialize() {\n const me = this;\n me.notifyPlugins('beforeInit');\n\n if (me.options.responsive) {\n me.resize();\n } else {\n retinaScale(me, me.options.devicePixelRatio);\n }\n\n me.bindEvents();\n me.notifyPlugins('afterInit');\n return me;\n }\n\n _initializePlatform(canvas, config) {\n if (config.platform) {\n return new config.platform();\n } else if (!isDomSupported() || typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas) {\n return new BasicPlatform();\n }\n\n return new DomPlatform();\n }\n\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n\n stop() {\n animator.stop(this);\n return this;\n }\n\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {\n width,\n height\n };\n }\n }\n\n _resize(width, height) {\n const me = this;\n const options = me.options;\n const canvas = me.canvas;\n const aspectRatio = options.maintainAspectRatio && me.aspectRatio;\n const newSize = me.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || me.platform.getDevicePixelRatio();\n me.width = newSize.width;\n me.height = newSize.height;\n me._aspectRatio = me.aspectRatio;\n\n if (!retinaScale(me, newRatio, true)) {\n return;\n }\n\n me.notifyPlugins('resize', {\n size: newSize\n });\n callback(options.onResize, [me, newSize], me);\n\n if (me.attached) {\n if (me._doResize()) {\n me.render();\n }\n }\n }\n\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n\n buildOrUpdateScales() {\n const me = this;\n const options = me.options;\n const scaleOpts = options.scales;\n const scales = me.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n\n if (scaleOpts) {\n items = items.concat(Object.keys(scaleOpts).map(id => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n }));\n }\n\n each(items, item => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n\n updated[id] = true;\n let scale = null;\n\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: me.ctx,\n chart: me\n });\n scales[scale.id] = scale;\n }\n\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, scale => {\n layouts.configure(me, scale, scale.options);\n layouts.addBox(me, scale);\n });\n }\n\n _updateMetasets() {\n const me = this;\n const metasets = me._metasets;\n const numData = me.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n me._destroyDatasetMeta(i);\n }\n\n metasets.splice(numData, numMeta - numData);\n }\n\n me._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n\n _removeUnreferencedMetasets() {\n const me = this;\n const metasets = me._metasets,\n datasets = me.data.datasets;\n\n if (metasets.length > datasets.length) {\n delete me._stacks;\n }\n\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n me._destroyDatasetMeta(index);\n }\n });\n }\n\n buildOrUpdateControllers() {\n const me = this;\n const newControllers = [];\n const datasets = me.data.datasets;\n let i, ilen;\n\n me._removeUnreferencedMetasets();\n\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = me.getDatasetMeta(i);\n const type = dataset.type || me.config.type;\n\n if (meta.type && meta.type !== type) {\n me._destroyDatasetMeta(i);\n\n meta = me.getDatasetMeta(i);\n }\n\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, me.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = me.isDatasetVisible(i);\n\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const _defaults$datasets$ty = defaults.datasets[type],\n datasetElementType = _defaults$datasets$ty.datasetElementType,\n dataElementType = _defaults$datasets$ty.dataElementType;\n Object.assign(ControllerClass.prototype, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(me, i);\n newControllers.push(meta.controller);\n }\n }\n\n me._updateMetasets();\n\n return newControllers;\n }\n\n _resetElements() {\n const me = this;\n each(me.data.datasets, (dataset, datasetIndex) => {\n me.getDatasetMeta(datasetIndex).controller.reset();\n }, me);\n }\n\n reset() {\n this._resetElements();\n\n this.notifyPlugins('reset');\n }\n\n update(mode) {\n const me = this;\n const config = me.config;\n config.update();\n me._options = config.createResolver(config.chartOptionScopes(), me.getContext());\n each(me.scales, scale => {\n layouts.removeBox(me, scale);\n });\n const animsDisabled = me._animationsDisabled = !me.options.animation;\n me.ensureScalesHaveIDs();\n me.buildOrUpdateScales();\n const existingEvents = new Set(Object.keys(me._listeners));\n const newEvents = new Set(me.options.events);\n\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== me.options.responsive) {\n me.unbindEvents();\n me.bindEvents();\n }\n\n me._plugins.invalidate();\n\n if (me.notifyPlugins('beforeUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n\n const newControllers = me.buildOrUpdateControllers();\n me.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n\n for (let i = 0, ilen = me.data.datasets.length; i < ilen; i++) {\n const _me$getDatasetMeta = me.getDatasetMeta(i),\n controller = _me$getDatasetMeta.controller;\n\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n\n me._minPadding = minPadding;\n\n me._updateLayout(minPadding);\n\n if (!animsDisabled) {\n each(newControllers, controller => {\n controller.reset();\n });\n }\n\n me._updateDatasets(mode);\n\n me.notifyPlugins('afterUpdate', {\n mode\n });\n\n me._layers.sort(compare2Level('z', '_idx'));\n\n if (me._lastEvent) {\n me._eventHandler(me._lastEvent, true);\n }\n\n me.render();\n }\n\n _updateLayout(minPadding) {\n const me = this;\n\n if (me.notifyPlugins('beforeLayout', {\n cancelable: true\n }) === false) {\n return;\n }\n\n layouts.update(me, me.width, me.height, minPadding);\n const area = me.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n me._layers = [];\n each(me.boxes, box => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n\n if (box.configure) {\n box.configure();\n }\n\n me._layers.push(...box._layers());\n }, me);\n\n me._layers.forEach((item, index) => {\n item._idx = index;\n });\n\n me.notifyPlugins('afterLayout');\n }\n\n _updateDatasets(mode) {\n const me = this;\n const isFunction = typeof mode === 'function';\n\n if (me.notifyPlugins('beforeDatasetsUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n\n for (let i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n me._updateDataset(i, isFunction ? mode({\n datasetIndex: i\n }) : mode);\n }\n\n me.notifyPlugins('afterDatasetsUpdate', {\n mode\n });\n }\n\n _updateDataset(index, mode) {\n const me = this;\n const meta = me.getDatasetMeta(index);\n const args = {\n meta,\n index,\n mode,\n cancelable: true\n };\n\n if (me.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n\n meta.controller._update(mode);\n\n args.cancelable = false;\n me.notifyPlugins('afterDatasetUpdate', args);\n }\n\n render() {\n const me = this;\n\n if (me.notifyPlugins('beforeRender', {\n cancelable: true\n }) === false) {\n return;\n }\n\n if (animator.has(me)) {\n if (me.attached && !animator.running(me)) {\n animator.start(me);\n }\n } else {\n me.draw();\n onAnimationsComplete({\n chart: me\n });\n }\n }\n\n draw() {\n const me = this;\n let i;\n\n if (me._resizeBeforeDraw) {\n const _me$_resizeBeforeDraw = me._resizeBeforeDraw,\n width = _me$_resizeBeforeDraw.width,\n height = _me$_resizeBeforeDraw.height;\n\n me._resize(width, height);\n\n me._resizeBeforeDraw = null;\n }\n\n me.clear();\n\n if (me.width <= 0 || me.height <= 0) {\n return;\n }\n\n if (me.notifyPlugins('beforeDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n\n const layers = me._layers;\n\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(me.chartArea);\n }\n\n me._drawDatasets();\n\n for (; i < layers.length; ++i) {\n layers[i].draw(me.chartArea);\n }\n\n me.notifyPlugins('afterDraw');\n }\n\n _getSortedDatasetMetas(filterVisible) {\n const me = this;\n const metasets = me._sortedMetasets;\n const result = [];\n let i, ilen;\n\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n\n return result;\n }\n\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n\n _drawDatasets() {\n const me = this;\n\n if (me.notifyPlugins('beforeDatasetsDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n\n const metasets = me.getSortedVisibleDatasetMetas();\n\n for (let i = metasets.length - 1; i >= 0; --i) {\n me._drawDataset(metasets[i]);\n }\n\n me.notifyPlugins('afterDatasetsDraw');\n }\n\n _drawDataset(meta) {\n const me = this;\n const ctx = me.ctx;\n const clip = meta._clip;\n const area = me.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n\n if (me.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? me.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? me.height : area.bottom + clip.bottom\n });\n meta.controller.draw();\n unclipArea(ctx);\n args.cancelable = false;\n me.notifyPlugins('afterDatasetDraw', args);\n }\n\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n\n return [];\n }\n\n getDatasetMeta(datasetIndex) {\n const me = this;\n const dataset = me.data.datasets[datasetIndex];\n const metasets = me._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n\n return meta;\n }\n\n getContext() {\n return this.$context || (this.$context = {\n chart: this,\n type: 'chart'\n });\n }\n\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n\n if (!dataset) {\n return false;\n }\n\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n\n _updateDatasetVisibility(datasetIndex, visible) {\n const me = this;\n const mode = visible ? 'show' : 'hide';\n const meta = me.getDatasetMeta(datasetIndex);\n\n const anims = meta.controller._resolveAnimations(undefined, mode);\n\n me.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {\n visible\n });\n me.update(ctx => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n\n hide(datasetIndex) {\n this._updateDatasetVisibility(datasetIndex, false);\n }\n\n show(datasetIndex) {\n this._updateDatasetVisibility(datasetIndex, true);\n }\n\n _destroyDatasetMeta(datasetIndex) {\n const me = this;\n const meta = me._metasets && me._metasets[datasetIndex];\n\n if (meta && meta.controller) {\n meta.controller._destroy();\n\n delete me._metasets[datasetIndex];\n }\n }\n\n destroy() {\n const me = this;\n const canvas = me.canvas,\n ctx = me.ctx;\n let i, ilen;\n me.stop();\n animator.remove(me);\n\n for (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n me._destroyDatasetMeta(i);\n }\n\n me.config.clearCache();\n\n if (canvas) {\n me.unbindEvents();\n clearCanvas(canvas, ctx);\n me.platform.releaseContext(ctx);\n me.canvas = null;\n me.ctx = null;\n }\n\n me.notifyPlugins('destroy');\n delete instances[me.id];\n }\n\n toBase64Image() {\n return this.canvas.toDataURL(...arguments);\n }\n\n bindEvents() {\n this.bindUserEvents();\n\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n\n bindUserEvents() {\n const me = this;\n const listeners = me._listeners;\n const platform = me.platform;\n\n const _add = (type, listener) => {\n platform.addEventListener(me, type, listener);\n listeners[type] = listener;\n };\n\n const listener = function (e, x, y) {\n e.offsetX = x;\n e.offsetY = y;\n\n me._eventHandler(e);\n };\n\n each(me.options.events, type => _add(type, listener));\n }\n\n bindResponsiveEvents() {\n const me = this;\n\n if (!me._responsiveListeners) {\n me._responsiveListeners = {};\n }\n\n const listeners = me._responsiveListeners;\n const platform = me.platform;\n\n const _add = (type, listener) => {\n platform.addEventListener(me, type, listener);\n listeners[type] = listener;\n };\n\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(me, type, listener);\n delete listeners[type];\n }\n };\n\n const listener = (width, height) => {\n if (me.canvas) {\n me.resize(width, height);\n }\n };\n\n let detached;\n\n const attached = () => {\n _remove('attach', attached);\n\n me.attached = true;\n me.resize();\n\n _add('resize', listener);\n\n _add('detach', detached);\n };\n\n detached = () => {\n me.attached = false;\n\n _remove('resize', listener);\n\n _add('attach', attached);\n };\n\n if (platform.isAttached(me.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n\n unbindEvents() {\n const me = this;\n each(me._listeners, (listener, type) => {\n me.platform.removeEventListener(me, type, listener);\n });\n me._listeners = {};\n each(me._responsiveListeners, (listener, type) => {\n me.platform.removeEventListener(me, type, listener);\n });\n me._responsiveListeners = undefined;\n }\n\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n\n getActiveElements() {\n return this._active || [];\n }\n\n setActiveElements(activeElements) {\n const me = this;\n const lastActive = me._active || [];\n const active = activeElements.map(_ref3 => {\n let datasetIndex = _ref3.datasetIndex,\n index = _ref3.index;\n const meta = me.getDatasetMeta(datasetIndex);\n\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n\n if (changed) {\n me._active = active;\n\n me._updateHoverStyles(active, lastActive);\n }\n }\n\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n\n _updateHoverStyles(active, lastActive, replay) {\n const me = this;\n const hoverOptions = me.options.hover;\n\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n\n if (deactivated.length) {\n me.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n\n if (activated.length && hoverOptions.mode) {\n me.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n\n _eventHandler(e, replay) {\n const me = this;\n const args = {\n event: e,\n replay,\n cancelable: true\n };\n\n const eventFilter = plugin => (plugin.options.events || this.options.events).includes(e.type);\n\n if (me.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n\n const changed = me._handleEvent(e, replay);\n\n args.cancelable = false;\n me.notifyPlugins('afterEvent', args, eventFilter);\n\n if (changed || args.changed) {\n me.render();\n }\n\n return me;\n }\n\n _handleEvent(e, replay) {\n const me = this;\n const _me$_active = me._active,\n lastActive = _me$_active === void 0 ? [] : _me$_active,\n options = me.options;\n const hoverOptions = options.hover;\n const useFinalPosition = replay;\n let active = [];\n let changed = false;\n let lastEvent = null;\n\n if (e.type !== 'mouseout') {\n active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n lastEvent = e.type === 'click' ? me._lastEvent : e;\n }\n\n me._lastEvent = null;\n\n if (_isPointInArea(e, me.chartArea, me._minPadding)) {\n callback(options.onHover, [e, active, me], me);\n\n if (e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu') {\n callback(options.onClick, [e, active, me], me);\n }\n }\n\n changed = !_elementsEqual(active, lastActive);\n\n if (changed || replay) {\n me._active = active;\n\n me._updateHoverStyles(active, lastActive, replay);\n }\n\n me._lastEvent = lastEvent;\n return changed;\n }\n\n}\n\nconst invalidatePlugins = () => each(Chart.instances, chart => chart._plugins.invalidate());\n\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: function () {\n registry.add(...arguments);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: function () {\n registry.remove(...arguments);\n invalidatePlugins();\n }\n }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const startAngle = element.startAngle,\n pixelMargin = element.pixelMargin,\n x = element.x,\n y = element.y,\n outerRadius = element.outerRadius,\n innerRadius = element.innerRadius;\n let angleMargin = pixelMargin / outerRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n\n ctx.closePath();\n ctx.clip();\n}\n\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\n\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n\n const computeOuterLimit = val => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit)\n };\n}\n\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta)\n };\n}\n\nfunction pathArc(ctx, element, offset, end) {\n const x = element.x,\n y = element.y,\n start = element.startAngle,\n pixelMargin = element.pixelMargin,\n innerR = element.innerRadius;\n const outerRadius = Math.max(element.outerRadius + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + offset + pixelMargin : 0;\n const alpha = end - start;\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset;\n const endAngle = end - angleOffset;\n\n const _parseBorderRadius$ = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle),\n outerStart = _parseBorderRadius$.outerStart,\n outerEnd = _parseBorderRadius$.outerEnd,\n innerStart = _parseBorderRadius$.innerStart,\n innerEnd = _parseBorderRadius$.innerEnd;\n\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n\n ctx.arc(x, y, innerRadius, endAngle - innerEnd / innerRadius, startAngle + innerStart / innerRadius, true);\n\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n\n ctx.closePath();\n}\n\nfunction drawArc(ctx, element, offset) {\n const fullCircles = element.fullCircles,\n startAngle = element.startAngle,\n circumference = element.circumference;\n let endAngle = element.endAngle;\n\n if (fullCircles) {\n pathArc(ctx, element, offset, startAngle + TAU);\n\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n\n pathArc(ctx, element, offset, endAngle);\n ctx.fill();\n return endAngle;\n}\n\nfunction drawFullCircleBorders(ctx, element, inner) {\n const x = element.x,\n y = element.y,\n startAngle = element.startAngle,\n pixelMargin = element.pixelMargin,\n fullCircles = element.fullCircles;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\n\nfunction drawBorder(ctx, element, offset, endAngle) {\n const options = element.options;\n const inner = options.borderAlign === 'inner';\n\n if (!options.borderWidth) {\n return;\n }\n\n if (inner) {\n ctx.lineWidth = options.borderWidth * 2;\n ctx.lineJoin = 'round';\n } else {\n ctx.lineWidth = options.borderWidth;\n ctx.lineJoin = 'bevel';\n }\n\n if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n\n pathArc(ctx, element, offset, endAngle);\n ctx.stroke();\n}\n\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n\n const _getAngleFromPoint = getAngleFromPoint(point, {\n x: chartX,\n y: chartY\n }),\n angle = _getAngleFromPoint.angle,\n distance = _getAngleFromPoint.distance;\n\n const _this$getProps2 = this.getProps(['startAngle', 'endAngle', 'innerRadius', 'outerRadius', 'circumference'], useFinalPosition),\n startAngle = _this$getProps2.startAngle,\n endAngle = _this$getProps2.endAngle,\n innerRadius = _this$getProps2.innerRadius,\n outerRadius = _this$getProps2.outerRadius,\n circumference = _this$getProps2.circumference;\n\n const betweenAngles = circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n\n const withinRadius = distance >= innerRadius && distance <= outerRadius;\n return betweenAngles && withinRadius;\n }\n\n getCenterPoint(useFinalPosition) {\n const _this$getProps3 = this.getProps(['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius', 'circumference'], useFinalPosition),\n x = _this$getProps3.x,\n y = _this$getProps3.y,\n startAngle = _this$getProps3.startAngle,\n endAngle = _this$getProps3.endAngle,\n innerRadius = _this$getProps3.innerRadius,\n outerRadius = _this$getProps3.outerRadius;\n\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n\n draw(ctx) {\n const me = this;\n const options = me.options,\n circumference = me.circumference;\n const offset = (options.offset || 0) / 2;\n me.pixelMargin = options.borderAlign === 'inner' ? 0.33 : 0;\n me.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n\n if (circumference === 0 || me.innerRadius < 0 || me.outerRadius < 0) {\n return;\n }\n\n ctx.save();\n let radiusOffset = 0;\n\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (me.startAngle + me.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n\n if (me.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, me, radiusOffset);\n drawBorder(ctx, me, radiusOffset, endAngle);\n ctx.restore();\n }\n\n}\n\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n angle: undefined\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options) {\n let style = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : options;\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\n\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\n\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n\n return lineTo;\n}\n\nfunction pathVars(points, segment) {\n let params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const count = points.length;\n const _params$start = params.start,\n paramsStart = _params$start === void 0 ? 0 : _params$start,\n _params$end = params.end,\n paramsEnd = _params$end === void 0 ? count - 1 : _params$end;\n const segmentStart = segment.start,\n segmentEnd = segment.end;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\n\nfunction pathSegment(ctx, line, segment, params) {\n const points = line.points,\n options = line.options;\n\n const _pathVars = pathVars(points, segment, params),\n count = _pathVars.count,\n start = _pathVars.start,\n loop = _pathVars.loop,\n ilen = _pathVars.ilen;\n\n const lineMethod = getLineMethod(options);\n\n let _ref4 = params || {},\n _ref4$move = _ref4.move,\n move = _ref4$move === void 0 ? true : _ref4$move,\n reverse = _ref4.reverse;\n\n let i, point, prev;\n\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n\n prev = point;\n }\n\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n\n return !!loop;\n}\n\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n\n const _pathVars2 = pathVars(points, segment, params),\n count = _pathVars2.count,\n start = _pathVars2.start,\n ilen = _pathVars2.ilen;\n\n const _ref5 = params || {},\n _ref5$move = _ref5.move,\n move = _ref5$move === void 0 ? true : _ref5$move,\n reverse = _ref5.reverse;\n\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n\n const pointIndex = index => (start + (reverse ? ilen - index : index)) % count;\n\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n\n if (point.skip) {\n continue;\n }\n\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n\n lastY = y;\n }\n\n drawX();\n}\n\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\n\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n\n return _pointInLine;\n}\n\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n\n if (!path) {\n path = line._path = new Path2D();\n\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\n\nfunction strokePathDirect(ctx, line, start, count) {\n const segments = line.segments,\n options = line.options;\n\n const segmentMethod = _getSegmentMethod(line);\n\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n\n if (segmentMethod(ctx, line, segment, {\n start,\n end: start + count - 1\n })) {\n ctx.closePath();\n }\n\n ctx.stroke();\n }\n}\n\nconst usePath2D = typeof Path2D === 'function';\n\nfunction draw(ctx, line, start, count) {\n if (usePath2D && line.segments.length === 1) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\n\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n updateControlPoints(chartArea, indexAxis) {\n const me = this;\n const options = me.options;\n\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !me._pointsUpdated) {\n const loop = options.spanGaps ? me._loop : me._fullLoop;\n\n _updateBezierControlPoints(me._points, options, chartArea, loop, indexAxis);\n\n me._pointsUpdated = true;\n }\n }\n\n set points(points) {\n const me = this;\n me._points = points;\n delete me._segments;\n delete me._path;\n me._pointsUpdated = false;\n }\n\n get points() {\n return this._points;\n }\n\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n\n interpolate(point, property) {\n const me = this;\n const options = me.options;\n const value = point[property];\n const points = me.points;\n\n const segments = _boundSegments(me, {\n property,\n start: value,\n end: value\n });\n\n if (!segments.length) {\n return;\n }\n\n const result = [];\n\n const _interpolate = _getInterpolationMethod(options);\n\n let i, ilen;\n\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const _segments$i = segments[i],\n start = _segments$i.start,\n end = _segments$i.end;\n const p1 = points[start];\n const p2 = points[end];\n\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n\n return result.length === 1 ? result[0] : result;\n }\n\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n\n return segmentMethod(ctx, this, segment, params);\n }\n\n path(ctx, start, count) {\n const me = this;\n const segments = me.segments;\n\n const segmentMethod = _getSegmentMethod(me);\n\n let loop = me._loop;\n start = start || 0;\n count = count || me.points.length - start;\n\n for (const segment of segments) {\n loop &= segmentMethod(ctx, me, segment, {\n start,\n end: start + count - 1\n });\n }\n\n return !!loop;\n }\n\n draw(ctx, chartArea, start, count) {\n const me = this;\n const options = me.options || {};\n const points = me.points || [];\n\n if (!points.length || !options.borderWidth) {\n return;\n }\n\n ctx.save();\n draw(ctx, me, start, count);\n ctx.restore();\n\n if (me.animated) {\n me._pointsUpdated = false;\n me._path = undefined;\n }\n }\n\n}\n\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: name => name !== 'borderDash' && name !== 'fill'\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n\n const _el$getProps = el.getProps([axis], useFinalPosition),\n value = _el$getProps[axis];\n\n return Math.abs(pos - value) < options.radius + options.hitRadius;\n}\n\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n\n const _this$getProps4 = this.getProps(['x', 'y'], useFinalPosition),\n x = _this$getProps4.x,\n y = _this$getProps4.y;\n\n return Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2) < Math.pow(options.hitRadius + options.radius, 2);\n }\n\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n\n getCenterPoint(useFinalPosition) {\n const _this$getProps5 = this.getProps(['x', 'y'], useFinalPosition),\n x = _this$getProps5.x,\n y = _this$getProps5.y;\n\n return {\n x,\n y\n };\n }\n\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n\n draw(ctx) {\n const me = this;\n const options = me.options;\n\n if (me.skip || options.radius < 0.1) {\n return;\n }\n\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, me.x, me.y);\n }\n\n getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\n }\n\n}\n\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n const _bar$getProps = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition),\n x = _bar$getProps.x,\n y = _bar$getProps.y,\n base = _bar$getProps.base,\n width = _bar$getProps.width,\n height = _bar$getProps.height;\n\n let left, right, top, bottom, half;\n\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n\n return {\n left,\n top,\n right,\n bottom\n };\n}\n\nfunction parseBorderSkipped(bar) {\n let edge = bar.options.borderSkipped;\n const res = {};\n\n if (!edge) {\n return res;\n }\n\n edge = bar.horizontal ? parseEdge(edge, 'left', 'right', bar.base > bar.x) : parseEdge(edge, 'bottom', 'top', bar.base < bar.y);\n res[edge] = true;\n return res;\n}\n\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n\n return edge;\n}\n\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\n\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\n\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : Math.max(Math.min(value, max), min);\n}\n\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = parseBorderSkipped(bar);\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\n\nfunction parseBorderRadius(bar, maxW, maxH) {\n const _bar$getProps2 = bar.getProps(['enableBorderRadius']),\n enableBorderRadius = _bar$getProps2.enableBorderRadius;\n\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = parseBorderSkipped(bar);\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\n\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r))\n }\n }\n };\n}\n\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds && (skipX || x >= bounds.left && x <= bounds.right) && (skipY || y >= bounds.top && y <= bounds.bottom);\n}\n\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\n\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n draw(ctx) {\n const options = this.options;\n\n const _boundingRects = boundingRects(this),\n inner = _boundingRects.inner,\n outer = _boundingRects.outer;\n\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, outer);\n ctx.clip();\n addRectPath(ctx, inner);\n ctx.fillStyle = options.borderColor;\n ctx.fill('evenodd');\n }\n\n ctx.beginPath();\n addRectPath(ctx, inner);\n ctx.fillStyle = options.backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n\n getCenterPoint(useFinalPosition) {\n const _this$getProps6 = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition),\n x = _this$getProps6.x,\n y = _this$getProps6.y,\n base = _this$getProps6.base,\n horizontal = _this$getProps6.horizontal;\n\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n\n}\n\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n enableBorderRadius: true,\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nvar elements = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ArcElement: ArcElement,\n LineElement: LineElement,\n PointElement: PointElement,\n BarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const _data$a = data[a],\n pointAx = _data$a.x,\n pointAy = _data$a.y;\n maxArea = area = -1;\n\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs((pointAx - avgX) * (data[j].y - pointAy) - (pointAx - data[j].x) * (avgY - pointAy));\n\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\n\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push(_objectSpread(_objectSpread({}, data[intermediateIndex1]), {}, {\n x: avgX\n }));\n }\n\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push(_objectSpread(_objectSpread({}, data[intermediateIndex2]), {}, {\n x: avgX\n }));\n }\n }\n\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n\n return decimated;\n}\n\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {\n value: data\n });\n }\n}\n\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach(dataset => {\n cleanDecimatedDataset(dataset);\n });\n}\n\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const iScale = meta.iScale;\n\n const _iScale$getUserBounds2 = iScale.getUserBounds(),\n min = _iScale$getUserBounds2.min,\n max = _iScale$getUserBounds2.max,\n minDefined = _iScale$getUserBounds2.minDefined,\n maxDefined = _iScale$getUserBounds2.maxDefined;\n\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n\n return {\n start,\n count\n };\n}\n\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const _data = dataset._data,\n indexAxis = dataset.indexAxis;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n\n if (meta.type !== 'line') {\n return;\n }\n\n const xAxis = chart.scales[meta.xAxisID];\n\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n\n if (chart.options.parsing) {\n return;\n }\n\n let _getStartAndCountOfVi2 = getStartAndCountOfVisiblePointsSimplified(meta, data),\n start = _getStartAndCountOfVi2.start,\n count = _getStartAndCountOfVi2.count;\n\n if (count <= 4 * availableWidth) {\n cleanDecimatedDataset(dataset);\n return;\n }\n\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function () {\n return this._decimated;\n },\n set: function (d) {\n this._data = d;\n }\n });\n }\n\n let decimated;\n\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n\n dataset._decimated = decimated;\n });\n },\n\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n\n};\n\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\n\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n\n if (fill === false || fill === null) {\n return false;\n }\n\n if (fill === true) {\n return 'origin';\n }\n\n return fill;\n}\n\nfunction decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n\n let target = parseFloat(fill);\n\n if (isNumberFinite(target) && Math.floor(target) === target) {\n if (fill[0] === '-' || fill[0] === '+') {\n target = index + target;\n }\n\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n\n return target;\n }\n\n return ['origin', 'start', 'end', 'stack'].indexOf(fill) >= 0 && fill;\n}\n\nfunction computeLinearBoundary(source) {\n const _source$scale = source.scale,\n scale = _source$scale === void 0 ? {} : _source$scale,\n fill = source.fill;\n let target = null;\n let horizontal;\n\n if (fill === 'start') {\n target = scale.bottom;\n } else if (fill === 'end') {\n target = scale.top;\n } else if (isObject(fill)) {\n target = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n target = scale.getBasePixel();\n }\n\n if (isNumberFinite(target)) {\n horizontal = scale.isHorizontal();\n return {\n x: horizontal ? target : null,\n y: horizontal ? null : target\n };\n }\n\n return null;\n}\n\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n\n pathSegment(ctx, bounds, opts) {\n const x = this.x,\n y = this.y,\n radius = this.radius;\n bounds = bounds || {\n start: 0,\n end: TAU\n };\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n\n interpolate(point) {\n const x = this.x,\n y = this.y,\n radius = this.radius;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n\n}\n\nfunction computeCircularBoundary(source) {\n const scale = source.scale,\n fill = source.fill;\n const options = scale.options;\n const length = scale.getLabels().length;\n const target = [];\n const start = options.reverse ? scale.max : scale.min;\n const end = options.reverse ? scale.min : scale.max;\n let i, center, value;\n\n if (fill === 'start') {\n value = start;\n } else if (fill === 'end') {\n value = end;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n\n if (options.grid.circular) {\n center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n\n for (i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n\n return target;\n}\n\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n\n return computeLinearBoundary(source);\n}\n\nfunction pointsFromSegments(boundary, line) {\n const _ref6 = boundary || {},\n _ref6$x = _ref6.x,\n x = _ref6$x === void 0 ? null : _ref6$x,\n _ref6$y = _ref6.y,\n y = _ref6$y === void 0 ? null : _ref6$y;\n\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(segment => {\n const first = linePoints[segment.start];\n const last = linePoints[segment.end];\n\n if (y !== null) {\n points.push({\n x: first.x,\n y\n });\n points.push({\n x: last.x,\n y\n });\n } else if (x !== null) {\n points.push({\n x,\n y: first.y\n });\n points.push({\n x,\n y: last.y\n });\n }\n });\n return points;\n}\n\nfunction buildStackLine(source) {\n const chart = source.chart,\n scale = source.scale,\n index = source.index,\n line = source.line;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(chart, index);\n linesBelow.push(createBoundaryLine({\n x: null,\n y: scale.bottom\n }, line));\n\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n\n return new LineElement({\n points,\n options: {}\n });\n}\n\nconst isLineAndNotInHideAnimation = meta => meta.type === 'line' && !meta.hidden;\n\nfunction getLinesBelow(chart, index) {\n const below = [];\n const metas = chart.getSortedVisibleDatasetMetas();\n\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n\n if (meta.index === index) {\n break;\n }\n\n if (isLineAndNotInHideAnimation(meta)) {\n below.unshift(meta.dataset);\n }\n }\n\n return below;\n}\n\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n\n const _findPoint = findPoint(line, sourcePoint, 'x'),\n first = _findPoint.first,\n last = _findPoint.last,\n point = _findPoint.point;\n\n if (!point || first && last) {\n continue;\n }\n\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n\n if (!last) {\n break;\n }\n }\n }\n\n points.push(...postponed);\n}\n\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n\n if (!point) {\n return {};\n }\n\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n\n if (pointValue >= firstValue && pointValue <= lastValue) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n\n return {\n first,\n last,\n point\n };\n}\n\nfunction getTarget(source) {\n const chart = source.chart,\n fill = source.fill,\n line = source.line;\n\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n\n if (fill === 'stack') {\n return buildStackLine(source);\n }\n\n const boundary = computeBoundary(source);\n\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n\n return createBoundaryLine(boundary, line);\n}\n\nfunction createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = pointsFromSegments(boundary, line);\n }\n\n return points.length ? new LineElement({\n points,\n options: {\n tension: 0\n },\n _loop,\n _fullLoop: _loop\n }) : null;\n}\n\nfunction resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n\n if (!propagate) {\n return fill;\n }\n\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n\n target = sources[fill];\n\n if (!target) {\n return false;\n }\n\n if (target.visible) {\n return fill;\n }\n\n visited.push(fill);\n fill = target.fill;\n }\n\n return false;\n}\n\nfunction _clip(ctx, target, clipY) {\n ctx.beginPath();\n target.path(ctx);\n ctx.lineTo(target.last().x, clipY);\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\n\nfunction getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n\n let start = first[property];\n let end = last[property];\n\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n\n return {\n property,\n start,\n end\n };\n}\n\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n\n for (const segment of segments) {\n const bounds = getBounds(property, points[segment.start], points[segment.end], segment.loop);\n\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[segment.start],\n end: points[segment.end]\n });\n continue;\n }\n\n const targetSegments = _boundSegments(target, bounds);\n\n for (const tgt of targetSegments) {\n const subBounds = getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n\n const fillSources = _boundSegment(segment, points, subBounds);\n\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n\n return parts;\n}\n\nfunction clipBounds(ctx, scale, bounds) {\n const _scale$chart$chartAre = scale.chart.chartArea,\n top = _scale$chart$chartAre.top,\n bottom = _scale$chart$chartAre.bottom;\n\n const _ref7 = bounds || {},\n property = _ref7.property,\n start = _ref7.start,\n end = _ref7.end;\n\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\n\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nfunction _fill(ctx, cfg) {\n const line = cfg.line,\n target = cfg.target,\n property = cfg.property,\n color = cfg.color,\n scale = cfg.scale;\n\n const segments = _segments(line, target, property);\n\n for (const _ref8 of segments) {\n const src = _ref8.source;\n const tgt = _ref8.target;\n const start = _ref8.start;\n const end = _ref8.end;\n\n const _src$style = src.style,\n _src$style2 = _src$style === void 0 ? {} : _src$style,\n _src$style2$backgroun = _src$style2.backgroundColor,\n backgroundColor = _src$style2$backgroun === void 0 ? color : _src$style2$backgroun;\n\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n\n const targetLoop = !!target.pathSegment(ctx, tgt, {\n move: lineLoop,\n reverse: true\n });\n const loop = lineLoop && targetLoop;\n\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\n\nfunction doFill(ctx, cfg) {\n const line = cfg.line,\n target = cfg.target,\n above = cfg.above,\n below = cfg.below,\n area = cfg.area,\n scale = cfg.scale;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n\n if (property === 'x' && below !== above) {\n _clip(ctx, target, area.top);\n\n _fill(ctx, {\n line,\n target,\n color: above,\n scale,\n property\n });\n\n ctx.restore();\n ctx.save();\n\n _clip(ctx, target, area.bottom);\n }\n\n _fill(ctx, {\n line,\n target,\n color: below,\n scale,\n property\n });\n\n ctx.restore();\n}\n\nfunction drawfill(ctx, source, area) {\n const target = getTarget(source);\n const line = source.line,\n scale = source.scale,\n axis = source.axis;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n\n const _ref9 = fillOption || {},\n _ref9$above = _ref9.above,\n above = _ref9$above === void 0 ? color : _ref9$above,\n _ref9$below = _ref9.below,\n below = _ref9$below === void 0 ? color : _ref9$below;\n\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {\n line,\n target,\n above,\n below,\n area,\n scale,\n axis\n });\n unclipArea(ctx);\n }\n}\n\nvar plugin_filler = {\n id: 'filler',\n\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line\n };\n }\n\n meta.$filler = source;\n sources.push(source);\n }\n\n for (i = 0; i < count; ++i) {\n source = sources[i];\n\n if (!source || source.fill === false) {\n continue;\n }\n\n source.fill = resolveTarget(sources, i, options.propagate);\n }\n },\n\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n\n if (!source) {\n continue;\n }\n\n source.line.updateControlPoints(area, source.axis);\n\n if (draw) {\n drawfill(chart.ctx, source, area);\n }\n }\n },\n\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n\n const metasets = chart.getSortedVisibleDatasetMetas();\n\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n\n if (source) {\n drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n\n if (!source || source.fill === false || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n\n drawfill(chart.ctx, source, chart.chartArea);\n },\n\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let _labelOpts$boxHeight = labelOpts.boxHeight,\n boxHeight = _labelOpts$boxHeight === void 0 ? fontSize : _labelOpts$boxHeight,\n _labelOpts$boxWidth = labelOpts.boxWidth,\n boxWidth = _labelOpts$boxWidth === void 0 ? fontSize : _labelOpts$boxWidth;\n\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = Math.min(boxWidth, fontSize);\n }\n\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\n\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\n\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n\n update(maxWidth, maxHeight, margins) {\n const me = this;\n me.maxWidth = maxWidth;\n me.maxHeight = maxHeight;\n me._margins = margins;\n me.setDimensions();\n me.buildLabels();\n me.fit();\n }\n\n setDimensions() {\n const me = this;\n\n if (me.isHorizontal()) {\n me.width = me.maxWidth;\n me.left = 0;\n me.right = me.width;\n } else {\n me.height = me.maxHeight;\n me.top = 0;\n me.bottom = me.height;\n }\n }\n\n buildLabels() {\n const me = this;\n const labelOpts = me.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [me.chart], me) || [];\n\n if (labelOpts.filter) {\n legendItems = legendItems.filter(item => labelOpts.filter(item, me.chart.data));\n }\n\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, me.chart.data));\n }\n\n if (me.options.reverse) {\n legendItems.reverse();\n }\n\n me.legendItems = legendItems;\n }\n\n fit() {\n const me = this;\n const options = me.options,\n ctx = me.ctx;\n\n if (!options.display) {\n me.width = me.height = 0;\n return;\n }\n\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n\n const titleHeight = me._computeTitleHeight();\n\n const _getBoxSize = getBoxSize(labelOpts, fontSize),\n boxWidth = _getBoxSize.boxWidth,\n itemHeight = _getBoxSize.itemHeight;\n\n let width, height;\n ctx.font = labelFont.string;\n\n if (me.isHorizontal()) {\n width = me.maxWidth;\n height = me._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = me.maxHeight;\n width = me._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n }\n\n me.width = Math.min(width, options.maxWidth || me.maxWidth);\n me.height = Math.min(height, options.maxHeight || me.maxHeight);\n }\n\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const me = this;\n const ctx = me.ctx,\n maxWidth = me.maxWidth,\n padding = me.options.labels.padding;\n const hitboxes = me.legendHitBoxes = [];\n const lineWidths = me.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n me.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width;\n\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n\n hitboxes[i] = {\n left: 0,\n top,\n row,\n width: itemWidth,\n height: itemHeight\n };\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const me = this;\n const ctx = me.ctx,\n maxHeight = me.maxHeight,\n padding = me.options.labels.padding;\n const hitboxes = me.legendHitBoxes = [];\n const columnSizes = me.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let top = 0;\n let col = 0;\n me.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width;\n\n if (i > 0 && currentColHeight + fontSize + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n left += currentColWidth + padding;\n col++;\n top = 0;\n currentColWidth = currentColHeight = 0;\n }\n\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += fontSize + padding;\n hitboxes[i] = {\n left,\n top,\n col,\n width: itemWidth,\n height: itemHeight\n };\n top += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n return totalWidth;\n }\n\n adjustHitBoxes() {\n const me = this;\n\n if (!me.options.display) {\n return;\n }\n\n const titleHeight = me._computeTitleHeight();\n\n const hitboxes = me.legendHitBoxes,\n _me$options6 = me.options,\n align = _me$options6.align,\n padding = _me$options6.labels.padding;\n\n if (this.isHorizontal()) {\n let row = 0;\n\n let left = _alignStartEnd(align, me.left + padding, me.right - me.lineWidths[row]);\n\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, me.left + padding, me.right - me.lineWidths[row]);\n }\n\n hitbox.top += me.top + titleHeight + padding;\n hitbox.left = left;\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n\n let top = _alignStartEnd(align, me.top + titleHeight + padding, me.bottom - me.columnSizes[col].height);\n\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, me.top + titleHeight + padding, me.bottom - me.columnSizes[col].height);\n }\n\n hitbox.top = top;\n hitbox.left += me.left + padding;\n top += hitbox.height + padding;\n }\n }\n }\n\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n\n draw() {\n const me = this;\n\n if (me.options.display) {\n const ctx = me.ctx;\n clipArea(ctx, me);\n\n me._draw();\n\n unclipArea(ctx);\n }\n }\n\n _draw() {\n const me = this;\n const opts = me.options,\n columnSizes = me.columnSizes,\n lineWidths = me.lineWidths,\n ctx = me.ctx;\n const align = opts.align,\n labelOpts = opts.labels;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, me.left, me.width);\n const labelFont = toFont(labelOpts.font);\n const fontColor = labelOpts.color,\n padding = labelOpts.padding;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n me.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n\n const _getBoxSize2 = getBoxSize(labelOpts, fontSize),\n boxWidth = _getBoxSize2.boxWidth,\n boxHeight = _getBoxSize2.boxHeight,\n itemHeight = _getBoxSize2.itemHeight;\n\n const drawLegendBox = function (x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxWidth * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n\n ctx.fill();\n\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n\n ctx.restore();\n };\n\n const fillText = function (x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + itemHeight / 2, labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: legendItem.textAlign\n });\n };\n\n const isHorizontal = me.isHorizontal();\n\n const titleHeight = this._computeTitleHeight();\n\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, me.left + padding, me.right - lineWidths[0]),\n y: me.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: me.left + padding,\n y: _alignStartEnd(align, me.top + titleHeight + padding, me.bottom - columnSizes[0].height),\n line: 0\n };\n }\n\n overrideTextDirection(me.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n me.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor || fontColor;\n ctx.fillStyle = legendItem.fontColor || fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + fontSize / 2 + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(me.width);\n\n if (isHorizontal) {\n if (i > 0 && x + width + padding > me.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, me.left + padding, me.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > me.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, me.top + titleHeight + padding, me.bottom - columnSizes[cursor.line].height);\n }\n\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, me.right);\n fillText(rtlHelper.x(x), y, legendItem);\n\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(me.ctx, opts.textDirection);\n }\n\n drawTitle() {\n const me = this;\n const opts = me.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n\n if (!titleOpts.display) {\n return;\n }\n\n const rtlHelper = getRtlAdapter(opts.rtl, me.left, me.width);\n const ctx = me.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = me.left;\n let maxWidth = me.width;\n\n if (this.isHorizontal()) {\n maxWidth = Math.max(...me.lineWidths);\n y = me.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, me.right - maxWidth);\n } else {\n const maxHeight = me.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, me.top, me.bottom - maxHeight - opts.labels.padding - me._computeTitleHeight());\n }\n\n const x = _alignStartEnd(position, left, left + maxWidth);\n\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n\n _getLegendItemAt(x, y) {\n const me = this;\n let i, hitBox, lh;\n\n if (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\n lh = me.legendHitBoxes;\n\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n\n if (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\n return me.legendItems[i];\n }\n }\n }\n\n return null;\n }\n\n handleEvent(e) {\n const me = this;\n const opts = me.options;\n\n if (!isListened(e.type, opts)) {\n return;\n }\n\n const hoveredItem = me._getLegendItemAt(e.x, e.y);\n\n if (e.type === 'mousemove') {\n const previous = me._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, me], me);\n }\n\n me._hoveredItem = hoveredItem;\n\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, me], me);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, me], me);\n }\n }\n\n}\n\nfunction isListened(type, opts) {\n if (type === 'mousemove' && (opts.onHover || opts.onLeave)) {\n return true;\n }\n\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n\n return false;\n}\n\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n\n onHover: null,\n onLeave: null,\n labels: {\n color: ctx => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const _chart$legend$options = chart.legend.options.labels,\n usePointStyle = _chart$legend$options.usePointStyle,\n pointStyle = _chart$legend$options.pointStyle,\n textAlign = _chart$legend$options.textAlign,\n color = _chart$legend$options.color;\n return chart._getSortedDatasetMetas().map(meta => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: 0,\n datasetIndex: meta.index\n };\n }, this);\n }\n\n },\n title: {\n color: ctx => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: ''\n }\n },\n descriptors: {\n _scriptable: name => !name.startsWith('on'),\n labels: {\n _scriptable: name => !['generateLabels', 'filter', 'sort'].includes(name)\n }\n }\n};\n\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n\n update(maxWidth, maxHeight) {\n const me = this;\n const opts = me.options;\n me.left = 0;\n me.top = 0;\n\n if (!opts.display) {\n me.width = me.height = me.right = me.bottom = 0;\n return;\n }\n\n me.width = me.right = maxWidth;\n me.height = me.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n me._padding = toPadding(opts.padding);\n\n const textSize = lineCount * toFont(opts.font).lineHeight + me._padding.height;\n\n if (me.isHorizontal()) {\n me.height = textSize;\n } else {\n me.width = textSize;\n }\n }\n\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n\n _drawArgs(offset) {\n const top = this.top,\n left = this.left,\n bottom = this.bottom,\n right = this.right,\n options = this.options;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n\n maxWidth = bottom - top;\n }\n\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n }\n\n draw() {\n const me = this;\n const ctx = me.ctx;\n const opts = me.options;\n\n if (!opts.display) {\n return;\n }\n\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + me._padding.top;\n\n const _me$_drawArgs = me._drawArgs(offset),\n titleX = _me$_drawArgs.titleX,\n titleY = _me$_drawArgs.titleY,\n maxWidth = _me$_drawArgs.maxWidth,\n rotation = _me$_drawArgs.rotation;\n\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY]\n });\n }\n\n}\n\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\n\nvar plugin_title = {\n id: 'title',\n _element: Title,\n\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold'\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n\n return {\n x: x / count,\n y: y / count\n };\n },\n\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n\n return {\n x,\n y\n };\n }\n\n};\n\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n\n return base;\n}\n\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n\n return str;\n}\n\nfunction createTooltipItem(chart, item) {\n const element = item.element,\n datasetIndex = item.datasetIndex,\n index = item.index;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n\n const _controller$getLabelA = controller.getLabelAndValue(index),\n label = _controller$getLabelA.label,\n value = _controller$getLabelA.value;\n\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\n\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip._chart.ctx;\n const body = tooltip.body,\n footer = tooltip.footer,\n title = tooltip.title;\n const boxWidth = options.boxWidth,\n boxHeight = options.boxHeight;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight + (titleLineCount - 1) * options.titleSpacing + options.titleMarginBottom;\n }\n\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight + (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight + (combinedBodyLength - 1) * options.bodySpacing;\n }\n\n if (footerLineCount) {\n height += options.footerMarginTop + footerLineCount * footerFont.lineHeight + (footerLineCount - 1) * options.footerSpacing;\n }\n\n let widthPadding = 0;\n\n const maxLineWidth = function (line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? boxWidth + 2 : 0;\n each(body, bodyItem => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {\n width,\n height\n };\n}\n\nfunction determineYAlign(chart, size) {\n const y = size.y,\n height = size.height;\n\n if (y < height / 2) {\n return 'top';\n } else if (y > chart.height - height / 2) {\n return 'bottom';\n }\n\n return 'center';\n}\n\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const x = size.x,\n width = size.width;\n const caret = options.caretSize + options.caretPadding;\n\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\n\nfunction determineXAlign(chart, options, size, yAlign) {\n const x = size.x,\n width = size.width;\n const chartWidth = chart.width,\n _chart$chartArea = chart.chartArea,\n left = _chart$chartArea.left,\n right = _chart$chartArea.right;\n let xAlign = 'center';\n\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n\n return xAlign;\n}\n\nfunction determineAlignment(chart, options, size) {\n const yAlign = options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\n\nfunction alignX(size, xAlign) {\n let x = size.x,\n width = size.width;\n\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= width / 2;\n }\n\n return x;\n}\n\nfunction alignY(size, yAlign, paddingAndSize) {\n let y = size.y,\n height = size.height;\n\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= height / 2;\n }\n\n return y;\n}\n\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const caretSize = options.caretSize,\n caretPadding = options.caretPadding,\n cornerRadius = options.cornerRadius;\n const xAlign = alignment.xAlign,\n yAlign = alignment.yAlign;\n const paddingAndSize = caretSize + caretPadding;\n const radiusAndPadding = cornerRadius + caretPadding;\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= radiusAndPadding;\n } else if (xAlign === 'right') {\n x += radiusAndPadding;\n }\n\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\n\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center' ? tooltip.x + tooltip.width / 2 : align === 'right' ? tooltip.x + tooltip.width - padding.right : tooltip.x + padding.left;\n}\n\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\n\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return Object.assign(Object.create(parent), {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\n\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\n\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._chart = config._chart;\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n\n _resolveAnimations() {\n const me = this;\n const cached = me._cachedAnimations;\n\n if (cached) {\n return cached;\n }\n\n const chart = me._chart;\n const options = me.options.setContext(me.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(me._chart, opts);\n\n if (opts._cacheable) {\n me._cachedAnimations = Object.freeze(animations);\n }\n\n return animations;\n }\n\n getContext() {\n const me = this;\n return me.$context || (me.$context = createTooltipContext(me._chart.getContext(), me, me._tooltipItems));\n }\n\n getTitle(context, options) {\n const me = this;\n const callbacks = options.callbacks;\n const beforeTitle = callbacks.beforeTitle.apply(me, [context]);\n const title = callbacks.title.apply(me, [context]);\n const afterTitle = callbacks.afterTitle.apply(me, [context]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n\n getBody(tooltipItems, options) {\n const me = this;\n const callbacks = options.callbacks;\n const bodyItems = [];\n each(tooltipItems, context => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(me, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(me, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(me, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n\n getFooter(tooltipItems, options) {\n const me = this;\n const callbacks = options.callbacks;\n const beforeFooter = callbacks.beforeFooter.apply(me, [tooltipItems]);\n const footer = callbacks.footer.apply(me, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(me, [tooltipItems]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n\n _createItems(options) {\n const me = this;\n const active = me._active;\n const data = me._chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(me._chart, active[i]));\n }\n\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n\n each(tooltipItems, context => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(me, context));\n labelPointStyles.push(scoped.labelPointStyle.call(me, context));\n labelTextColors.push(scoped.labelTextColor.call(me, context));\n });\n me.labelColors = labelColors;\n me.labelPointStyles = labelPointStyles;\n me.labelTextColors = labelTextColors;\n me.dataPoints = tooltipItems;\n return tooltipItems;\n }\n\n update(changed, replay) {\n const me = this;\n const options = me.options.setContext(me.getContext());\n const active = me._active;\n let properties;\n let tooltipItems = [];\n\n if (!active.length) {\n if (me.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(me, active, me._eventPosition);\n tooltipItems = me._createItems(options);\n me.title = me.getTitle(tooltipItems, options);\n me.beforeBody = me.getBeforeBody(tooltipItems, options);\n me.body = me.getBody(tooltipItems, options);\n me.afterBody = me.getAfterBody(tooltipItems, options);\n me.footer = me.getFooter(tooltipItems, options);\n const size = me._size = getTooltipSize(me, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(me._chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, me._chart);\n me.xAlign = alignment.xAlign;\n me.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n\n me._tooltipItems = tooltipItems;\n me.$context = undefined;\n\n if (properties) {\n me._resolveAnimations().update(me, properties);\n }\n\n if (changed && options.external) {\n options.external.call(me, {\n chart: me._chart,\n tooltip: me,\n replay\n });\n }\n }\n\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n\n getCaretPosition(tooltipPoint, size, options) {\n const xAlign = this.xAlign,\n yAlign = this.yAlign;\n const cornerRadius = options.cornerRadius,\n caretSize = options.caretSize;\n const ptX = tooltipPoint.x,\n ptY = tooltipPoint.y;\n const width = size.width,\n height = size.height;\n let x1, x2, x3, y1, y2, y3;\n\n if (yAlign === 'center') {\n y2 = ptY + height / 2;\n\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + cornerRadius + caretSize;\n } else if (xAlign === 'right') {\n x2 = ptX + width - cornerRadius - caretSize;\n } else {\n x2 = this.caretX;\n }\n\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n\n y3 = y1;\n }\n\n return {\n x1,\n x2,\n x3,\n y1,\n y2,\n y3\n };\n }\n\n drawTitle(pt, ctx, options) {\n const me = this;\n const title = me.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, me.x, me.width);\n pt.x = getAlignedX(me, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const me = this;\n const labelColors = me.labelColors[i];\n const labelPointStyle = me.labelPointStyles[i];\n const boxHeight = options.boxHeight,\n boxWidth = options.boxWidth;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(me, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = labelColors.borderWidth || 1;\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n\n ctx.fillStyle = me.labelTextColors[i];\n }\n\n drawBody(pt, ctx, options) {\n const me = this;\n const body = me.body;\n const bodySpacing = options.bodySpacing,\n bodyAlign = options.bodyAlign,\n displayColors = options.displayColors,\n boxHeight = options.boxHeight,\n boxWidth = options.boxWidth;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, me.x, me.width);\n\n const fillLineOfText = function (line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(me, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(me.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right' ? bodyAlign === 'center' ? boxWidth / 2 + 1 : boxWidth + 2 : 0;\n\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = me.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n\n if (displayColors && lines.length) {\n me._drawColorBox(ctx, pt, i, rtlHelper, options);\n\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n\n each(bodyItem.after, fillLineOfText);\n }\n\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(me.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n\n drawFooter(pt, ctx, options) {\n const me = this;\n const footer = me.footer;\n const length = footer.length;\n let footerFont, i;\n\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, me.x, me.width);\n pt.x = getAlignedX(me, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n\n drawBackground(pt, ctx, tooltipSize, options) {\n const xAlign = this.xAlign,\n yAlign = this.yAlign;\n const x = pt.x,\n y = pt.y;\n const width = tooltipSize.width,\n height = tooltipSize.height;\n const radius = options.cornerRadius;\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + radius, y);\n\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n\n ctx.lineTo(x + width - radius, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n\n ctx.lineTo(x + width, y + height - radius);\n ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n\n ctx.lineTo(x + radius, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n\n ctx.lineTo(x, y + radius);\n ctx.quadraticCurveTo(x, y, x + radius, y);\n ctx.closePath();\n ctx.fill();\n\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n\n _updateAnimationTarget(options) {\n const me = this;\n const chart = me._chart;\n const anims = me.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n\n if (animX || animY) {\n const position = positioners[options.position].call(me, me._active, me._eventPosition);\n\n if (!position) {\n return;\n }\n\n const size = me._size = getTooltipSize(me, options);\n const positionAndSize = Object.assign({}, position, me._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n\n if (animX._to !== point.x || animY._to !== point.y) {\n me.xAlign = alignment.xAlign;\n me.yAlign = alignment.yAlign;\n me.width = size.width;\n me.height = size.height;\n me.caretX = position.x;\n me.caretY = position.y;\n\n me._resolveAnimations().update(me, point);\n }\n }\n }\n\n draw(ctx) {\n const me = this;\n const options = me.options.setContext(me.getContext());\n let opacity = me.opacity;\n\n if (!opacity) {\n return;\n }\n\n me._updateAnimationTarget(options);\n\n const tooltipSize = {\n width: me.width,\n height: me.height\n };\n const pt = {\n x: me.x,\n y: me.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = me.title.length || me.beforeBody.length || me.body.length || me.afterBody.length || me.footer.length;\n\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n me.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n me.drawTitle(pt, ctx, options);\n me.drawBody(pt, ctx, options);\n me.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n\n getActiveElements() {\n return this._active || [];\n }\n\n setActiveElements(activeElements, eventPosition) {\n const me = this;\n const lastActive = me._active;\n const active = activeElements.map(_ref10 => {\n let datasetIndex = _ref10.datasetIndex,\n index = _ref10.index;\n\n const meta = me._chart.getDatasetMeta(datasetIndex);\n\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n\n const positionChanged = me._positionChanged(active, eventPosition);\n\n if (changed || positionChanged) {\n me._active = active;\n me._eventPosition = eventPosition;\n me.update(true);\n }\n }\n\n handleEvent(e, replay) {\n const me = this;\n const options = me.options;\n const lastActive = me._active || [];\n let changed = false;\n let active = [];\n\n if (e.type !== 'mouseout') {\n active = me._chart.getElementsAtEventForMode(e, options.mode, options, replay);\n\n if (options.reverse) {\n active.reverse();\n }\n }\n\n const positionChanged = me._positionChanged(active, e);\n\n changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n\n if (changed) {\n me._active = active;\n\n if (options.enabled || options.external) {\n me._eventPosition = {\n x: e.x,\n y: e.y\n };\n me.update(true, replay);\n }\n }\n\n return changed;\n }\n\n _positionChanged(active, e) {\n const caretX = this.caretX,\n caretY = this.caretY,\n options = this.options;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n\n}\n\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({\n _chart: chart,\n options\n });\n }\n },\n\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n const args = {\n tooltip\n };\n\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n\n if (tooltip) {\n tooltip.draw(chart.ctx);\n }\n\n chart.notifyPlugins('afterTooltipDraw', args);\n },\n\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n\n if (chart.tooltip.handleEvent(args.event, useFinalPosition)) {\n args.changed = true;\n }\n }\n },\n\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold'\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {},\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold'\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart'\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY']\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\n beforeTitle: noop,\n\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n\n return '';\n },\n\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n\n let label = tooltipItem.dataset.label || '';\n\n if (label) {\n label += ': ';\n }\n\n const value = tooltipItem.formattedValue;\n\n if (!isNullOrUndef(value)) {\n label += value;\n }\n\n return label;\n },\n\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0\n };\n },\n\n labelTextColor() {\n return this.options.bodyColor;\n },\n\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation\n };\n },\n\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n }\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: name => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\nvar plugins = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Decimation: plugin_decimation,\n Filler: plugin_filler,\n Legend: plugin_legend,\n Title: plugin_title,\n Tooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index) => typeof raw === 'string' ? labels.push(raw) - 1 : isNaN(raw) ? null : index;\n\nfunction findOrAddLabel(labels, raw, index) {\n const first = labels.indexOf(raw);\n\n if (first === -1) {\n return addIfString(labels, raw, index);\n }\n\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\n\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\n\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n }\n\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index : findOrAddLabel(labels, raw, valueOrDefault(index, raw));\n return validIndex(index, labels.length - 1);\n }\n\n determineDataLimits() {\n const me = this;\n\n const _me$getUserBounds2 = me.getUserBounds(),\n minDefined = _me$getUserBounds2.minDefined,\n maxDefined = _me$getUserBounds2.maxDefined;\n\n let _me$getMinMax = me.getMinMax(true),\n min = _me$getMinMax.min,\n max = _me$getMinMax.max;\n\n if (me.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n\n if (!maxDefined) {\n max = me.getLabels().length - 1;\n }\n }\n\n me.min = min;\n me.max = max;\n }\n\n buildTicks() {\n const me = this;\n const min = me.min;\n const max = me.max;\n const offset = me.options.offset;\n const ticks = [];\n let labels = me.getLabels();\n labels = min === 0 && max === labels.length - 1 ? labels : labels.slice(min, max + 1);\n me._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n me._startValue = me.min - (offset ? 0.5 : 0);\n\n for (let value = min; value <= max; value++) {\n ticks.push({\n value\n });\n }\n\n return ticks;\n }\n\n getLabelForValue(value) {\n const me = this;\n const labels = me.getLabels();\n\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n\n return value;\n }\n\n configure() {\n const me = this;\n super.configure();\n\n if (!me.isHorizontal()) {\n me._reversePixels = !me._reversePixels;\n }\n }\n\n getPixelForValue(value) {\n const me = this;\n\n if (typeof value !== 'number') {\n value = me.parse(value);\n }\n\n return value === null ? NaN : me.getPixelForDecimal((value - me._startValue) / me._valueRange);\n }\n\n getPixelForTick(index) {\n const me = this;\n const ticks = me.ticks;\n\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n\n return me.getPixelForValue(ticks[index].value);\n }\n\n getValueForPixel(pixel) {\n const me = this;\n return Math.round(me._startValue + me.getDecimalForPixel(pixel) * me._valueRange);\n }\n\n getBasePixel() {\n return this.bottom;\n }\n\n}\n\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const bounds = generationOptions.bounds,\n step = generationOptions.step,\n min = generationOptions.min,\n max = generationOptions.max,\n precision = generationOptions.precision,\n count = generationOptions.count,\n maxTicks = generationOptions.maxTicks,\n maxDigits = generationOptions.maxDigits,\n includeBounds = generationOptions.includeBounds;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const rmin = dataRange.min,\n rmax = dataRange.max;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{\n value: rmin\n }, {\n value: rmax\n }];\n }\n\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.min((max - min) / spacing, maxTicks);\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n\n const decimalPlaces = Math.max(_decimalPlaces(spacing), _decimalPlaces(niceMin));\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({\n value: min\n });\n\n if (niceMin < min) {\n j++;\n }\n\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n\n for (; j < numSpaces; ++j) {\n ticks.push({\n value: Math.round((niceMin + j * spacing) * factor) / factor\n });\n }\n\n if (maxDefined && includeBounds && niceMax !== max) {\n if (almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({\n value: max\n });\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({\n value: niceMax\n });\n }\n\n return ticks;\n}\n\nfunction relativeLabelSize(value, minSpacing, _ref11) {\n let horizontal = _ref11.horizontal,\n minRotation = _ref11.minRotation;\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\n\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n\n return +raw;\n }\n\n handleTickRangeOptions() {\n const me = this;\n const beginAtZero = me.options.beginAtZero;\n\n const _me$getUserBounds3 = me.getUserBounds(),\n minDefined = _me$getUserBounds3.minDefined,\n maxDefined = _me$getUserBounds3.maxDefined;\n\n let min = me.min,\n max = me.max;\n\n const setMin = v => min = minDefined ? min : v;\n\n const setMax = v => max = maxDefined ? max : v;\n\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n\n if (min === max) {\n setMax(max + 1);\n\n if (!beginAtZero) {\n setMin(min - 1);\n }\n }\n\n me.min = min;\n me.max = max;\n }\n\n getTickLimit() {\n const me = this;\n const tickOpts = me.options.ticks;\n let maxTicksLimit = tickOpts.maxTicksLimit,\n stepSize = tickOpts.stepSize;\n let maxTicks;\n\n if (stepSize) {\n maxTicks = Math.ceil(me.max / stepSize) - Math.floor(me.min / stepSize) + 1;\n } else {\n maxTicks = me.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n\n return maxTicks;\n }\n\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n\n buildTicks() {\n const me = this;\n const opts = me.options;\n const tickOpts = opts.ticks;\n let maxTicks = me.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: me._maxDigits(),\n horizontal: me.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = me._range || me;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, me, 'value');\n }\n\n if (opts.reverse) {\n ticks.reverse();\n me.start = me.max;\n me.end = me.min;\n } else {\n me.start = me.min;\n me.end = me.max;\n }\n\n return ticks;\n }\n\n configure() {\n const me = this;\n const ticks = me.ticks;\n let start = me.min;\n let end = me.max;\n super.configure();\n\n if (me.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n\n me._startValue = start;\n me._endValue = end;\n me._valueRange = end - start;\n }\n\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale);\n }\n\n}\n\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const me = this;\n\n const _me$getMinMax2 = me.getMinMax(true),\n min = _me$getMinMax2.min,\n max = _me$getMinMax2.max;\n\n me.min = isNumberFinite(min) ? min : 0;\n me.max = isNumberFinite(max) ? max : 1;\n me.handleTickRangeOptions();\n }\n\n computeTickLimit() {\n const me = this;\n const horizontal = me.isHorizontal();\n const length = horizontal ? me.width : me.height;\n const minRotation = toRadians(me.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n\n const tickFont = me._resolveTickFontOptions(0);\n\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n\n}\n\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / Math.pow(10, Math.floor(log10(tickVal)));\n return remain === 1;\n}\n\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n\n do {\n ticks.push({\n value: tickVal,\n major: isMajor(tickVal)\n });\n ++significand;\n\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || exp === endExp && significand < endSignificand);\n\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({\n value: lastTick,\n major: isMajor(tickVal)\n });\n return ticks;\n}\n\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n\n determineDataLimits() {\n const me = this;\n\n const _me$getMinMax3 = me.getMinMax(true),\n min = _me$getMinMax3.min,\n max = _me$getMinMax3.max;\n\n me.min = isNumberFinite(min) ? Math.max(0, min) : null;\n me.max = isNumberFinite(max) ? Math.max(0, max) : null;\n\n if (me.options.beginAtZero) {\n me._zero = true;\n }\n\n me.handleTickRangeOptions();\n }\n\n handleTickRangeOptions() {\n const me = this;\n\n const _me$getUserBounds4 = me.getUserBounds(),\n minDefined = _me$getUserBounds4.minDefined,\n maxDefined = _me$getUserBounds4.maxDefined;\n\n let min = me.min;\n let max = me.max;\n\n const setMin = v => min = minDefined ? min : v;\n\n const setMax = v => max = maxDefined ? max : v;\n\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n\n if (me._zero && me.min !== me._suggestedMin && min === exp(me.min, 0)) {\n setMin(exp(min, -1));\n }\n\n me.min = min;\n me.max = max;\n }\n\n buildTicks() {\n const me = this;\n const opts = me.options;\n const generationOptions = {\n min: me._userMin,\n max: me._userMax\n };\n const ticks = generateTicks(generationOptions, me);\n\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, me, 'value');\n }\n\n if (opts.reverse) {\n ticks.reverse();\n me.start = me.max;\n me.end = me.min;\n } else {\n me.start = me.min;\n me.end = me.max;\n }\n\n return ticks;\n }\n\n getLabelForValue(value) {\n return value === undefined ? '0' : formatNumber(value, this.chart.options.locale);\n }\n\n configure() {\n const me = this;\n const start = me.min;\n super.configure();\n me._startValue = log10(start);\n me._valueRange = log10(me.max) - log10(start);\n }\n\n getPixelForValue(value) {\n const me = this;\n\n if (value === undefined || value === 0) {\n value = me.min;\n }\n\n if (value === null || isNaN(value)) {\n return NaN;\n }\n\n return me.getPixelForDecimal(value === me.min ? 0 : (log10(value) - me._startValue) / me._valueRange);\n }\n\n getValueForPixel(pixel) {\n const me = this;\n const decimal = me.getDecimalForPixel(pixel);\n return Math.pow(10, me._startValue + decimal * me._valueRange);\n }\n\n}\n\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n\n return 0;\n}\n\nfunction measureLabelSize(ctx, lineHeight, label) {\n if (isArray(label)) {\n return {\n w: _longestText(ctx, ctx.font, label),\n h: label.length * lineHeight\n };\n }\n\n return {\n w: ctx.measureText(label).width,\n h: lineHeight\n };\n}\n\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - size / 2,\n end: pos + size / 2\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n\n return {\n start: pos,\n end: pos + size\n };\n}\n\nfunction fitWithPointLabels(scale) {\n const furthestLimits = {\n l: 0,\n r: scale.width,\n t: 0,\n b: scale.height - scale.paddingTop\n };\n const furthestAngles = {};\n let i, textSize, pointPosition;\n const labelSizes = [];\n const padding = [];\n const valueCount = scale.getLabels().length;\n\n for (i = 0; i < valueCount; i++) {\n const opts = scale.options.pointLabels.setContext(scale.getContext(i));\n padding[i] = opts.padding;\n pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i]);\n const plFont = toFont(opts.font);\n scale.ctx.font = plFont.string;\n textSize = measureLabelSize(scale.ctx, plFont.lineHeight, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = scale.getIndexAngle(i);\n const angle = toDegrees(angleRadians);\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n\n if (hLimits.start < furthestLimits.l) {\n furthestLimits.l = hLimits.start;\n furthestAngles.l = angleRadians;\n }\n\n if (hLimits.end > furthestLimits.r) {\n furthestLimits.r = hLimits.end;\n furthestAngles.r = angleRadians;\n }\n\n if (vLimits.start < furthestLimits.t) {\n furthestLimits.t = vLimits.start;\n furthestAngles.t = angleRadians;\n }\n\n if (vLimits.end > furthestLimits.b) {\n furthestLimits.b = vLimits.end;\n furthestAngles.b = angleRadians;\n }\n }\n\n scale._setReductions(scale.drawingArea, furthestLimits, furthestAngles);\n\n scale._pointLabelItems = [];\n const opts = scale.options;\n const tickBackdropHeight = getTickBackdropHeight(opts);\n const outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\n\n for (i = 0; i < valueCount; i++) {\n const extra = i === 0 ? tickBackdropHeight / 2 : 0;\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i]);\n const angle = toDegrees(scale.getIndexAngle(i));\n const size = labelSizes[i];\n adjustPointPositionForLabelHeight(angle, size, pointLabelPosition);\n const textAlign = getTextAlignForAngle(angle);\n let left;\n\n if (textAlign === 'left') {\n left = pointLabelPosition.x;\n } else if (textAlign === 'center') {\n left = pointLabelPosition.x - size.w / 2;\n } else {\n left = pointLabelPosition.x - size.w;\n }\n\n const right = left + size.w;\n scale._pointLabelItems[i] = {\n x: pointLabelPosition.x,\n y: pointLabelPosition.y,\n textAlign,\n left,\n top: pointLabelPosition.y,\n right,\n bottom: pointLabelPosition.y + size.h\n };\n }\n}\n\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n\n return 'right';\n}\n\nfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\n if (angle === 90 || angle === 270) {\n position.y -= textSize.h / 2;\n } else if (angle > 270 || angle < 90) {\n position.y -= textSize.h;\n }\n}\n\nfunction drawPointLabels(scale, labelCount) {\n const ctx = scale.ctx,\n pointLabels = scale.options.pointLabels;\n\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getContext(i));\n const plFont = toFont(optsAtIndex.font);\n const _scale$_pointLabelIte = scale._pointLabelItems[i],\n x = _scale$_pointLabelIte.x,\n y = _scale$_pointLabelIte.y,\n textAlign = _scale$_pointLabelIte.textAlign,\n left = _scale$_pointLabelIte.left,\n top = _scale$_pointLabelIte.top,\n right = _scale$_pointLabelIte.right,\n bottom = _scale$_pointLabelIte.bottom;\n const backdropColor = optsAtIndex.backdropColor;\n\n if (!isNullOrUndef(backdropColor)) {\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n ctx.fillRect(left - padding.left, top - padding.top, right - left + padding.width, bottom - top + padding.height);\n }\n\n renderText(ctx, scale._pointLabels[i], x, y + plFont.lineHeight / 2, plFont, {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n });\n }\n}\n\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const ctx = scale.ctx;\n\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\n\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const color = gridLineOpts.color,\n lineWidth = gridLineOpts.lineWidth;\n\n if (!circular && !labelCount || !color || !lineWidth || radius < 0) {\n return;\n }\n\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\n\nfunction numberOrZero(param) {\n return isNumber(param) ? param : 0;\n}\n\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n\n setDimensions() {\n const me = this;\n me.width = me.maxWidth;\n me.height = me.maxHeight;\n me.paddingTop = getTickBackdropHeight(me.options) / 2;\n me.xCenter = Math.floor(me.width / 2);\n me.yCenter = Math.floor((me.height - me.paddingTop) / 2);\n me.drawingArea = Math.min(me.height - me.paddingTop, me.width) / 2;\n }\n\n determineDataLimits() {\n const me = this;\n\n const _me$getMinMax4 = me.getMinMax(false),\n min = _me$getMinMax4.min,\n max = _me$getMinMax4.max;\n\n me.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n me.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n me.handleTickRangeOptions();\n }\n\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n\n generateTickLabels(ticks) {\n const me = this;\n LinearScaleBase.prototype.generateTickLabels.call(me, ticks);\n me._pointLabels = me.getLabels().map((value, index) => {\n const label = callback(me.options.pointLabels.callback, [value, index], me);\n return label || label === 0 ? label : '';\n });\n }\n\n fit() {\n const me = this;\n const opts = me.options;\n\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(me);\n } else {\n me.setCenterPoint(0, 0, 0, 0);\n }\n }\n\n _setReductions(largestPossibleRadius, furthestLimits, furthestAngles) {\n const me = this;\n let radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\n let radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\n let radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\n let radiusReductionBottom = -Math.max(furthestLimits.b - (me.height - me.paddingTop), 0) / Math.cos(furthestAngles.b);\n radiusReductionLeft = numberOrZero(radiusReductionLeft);\n radiusReductionRight = numberOrZero(radiusReductionRight);\n radiusReductionTop = numberOrZero(radiusReductionTop);\n radiusReductionBottom = numberOrZero(radiusReductionBottom);\n me.drawingArea = Math.max(largestPossibleRadius / 2, Math.min(Math.floor(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2), Math.floor(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2)));\n me.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\n }\n\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n const me = this;\n const maxRight = me.width - rightMovement - me.drawingArea;\n const maxLeft = leftMovement + me.drawingArea;\n const maxTop = topMovement + me.drawingArea;\n const maxBottom = me.height - me.paddingTop - bottomMovement - me.drawingArea;\n me.xCenter = Math.floor((maxLeft + maxRight) / 2 + me.left);\n me.yCenter = Math.floor((maxTop + maxBottom) / 2 + me.top + me.paddingTop);\n }\n\n getIndexAngle(index) {\n const angleMultiplier = TAU / this.getLabels().length;\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n\n getDistanceFromCenterForValue(value) {\n const me = this;\n\n if (isNullOrUndef(value)) {\n return NaN;\n }\n\n const scalingFactor = me.drawingArea / (me.max - me.min);\n\n if (me.options.reverse) {\n return (me.max - value) * scalingFactor;\n }\n\n return (value - me.min) * scalingFactor;\n }\n\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n\n const me = this;\n const scaledDistance = distance / (me.drawingArea / (me.max - me.min));\n return me.options.reverse ? me.max - scaledDistance : me.min + scaledDistance;\n }\n\n getPointPosition(index, distanceFromCenter) {\n const me = this;\n const angle = me.getIndexAngle(index) - HALF_PI;\n return {\n x: Math.cos(angle) * distanceFromCenter + me.xCenter,\n y: Math.sin(angle) * distanceFromCenter + me.yCenter,\n angle\n };\n }\n\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n\n getPointLabelPosition(index) {\n const _this$_pointLabelItem = this._pointLabelItems[index],\n left = _this$_pointLabelItem.left,\n top = _this$_pointLabelItem.top,\n right = _this$_pointLabelItem.right,\n bottom = _this$_pointLabelItem.bottom;\n return {\n left,\n top,\n right,\n bottom\n };\n }\n\n drawBackground() {\n const me = this;\n const _me$options7 = me.options,\n backgroundColor = _me$options7.backgroundColor,\n circular = _me$options7.grid.circular;\n\n if (backgroundColor) {\n const ctx = me.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(me, me.getDistanceFromCenterForValue(me._endValue), circular, me.getLabels().length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n\n drawGrid() {\n const me = this;\n const ctx = me.ctx;\n const opts = me.options;\n const angleLines = opts.angleLines,\n grid = opts.grid;\n const labelCount = me.getLabels().length;\n let i, offset, position;\n\n if (opts.pointLabels.display) {\n drawPointLabels(me, labelCount);\n }\n\n if (grid.display) {\n me.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = me.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(me.getContext(index - 1));\n drawRadiusLine(me, optsAtIndex, offset, labelCount);\n }\n });\n }\n\n if (angleLines.display) {\n ctx.save();\n\n for (i = me.getLabels().length - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(me.getContext(i));\n const color = optsAtIndex.color,\n lineWidth = optsAtIndex.lineWidth;\n\n if (!lineWidth || !color) {\n continue;\n }\n\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = me.getDistanceFromCenterForValue(opts.ticks.reverse ? me.min : me.max);\n position = me.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(me.xCenter, me.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n\n ctx.restore();\n }\n }\n\n drawBorder() {}\n\n drawLabels() {\n const me = this;\n const ctx = me.ctx;\n const opts = me.options;\n const tickOpts = opts.ticks;\n\n if (!tickOpts.display) {\n return;\n }\n\n const startAngle = me.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(me.xCenter, me.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n me.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n\n const optsAtIndex = tickOpts.setContext(me.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = me.getDistanceFromCenterForValue(me.ticks[index].value);\n\n if (optsAtIndex.showLabelBackdrop) {\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(-width / 2 - padding.left, -offset - tickFont.size / 2 - padding.top, width + padding.width, tickFont.size + padding.height);\n }\n\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color\n });\n });\n ctx.restore();\n }\n\n drawTitle() {}\n\n}\n\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n\n callback(label) {\n return label;\n },\n\n padding: 5\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\nconst INTERVALS = {\n millisecond: {\n common: true,\n size: 1,\n steps: 1000\n },\n second: {\n common: true,\n size: 1000,\n steps: 60\n },\n minute: {\n common: true,\n size: 60000,\n steps: 60\n },\n hour: {\n common: true,\n size: 3600000,\n steps: 24\n },\n day: {\n common: true,\n size: 86400000,\n steps: 30\n },\n week: {\n common: false,\n size: 604800000,\n steps: 4\n },\n month: {\n common: true,\n size: 2.628e9,\n steps: 12\n },\n quarter: {\n common: false,\n size: 7.884e9,\n steps: 4\n },\n year: {\n common: true,\n size: 3.154e10\n }\n};\nconst UNITS = Object.keys(INTERVALS);\n\nfunction sorter(a, b) {\n return a - b;\n}\n\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n\n const adapter = scale._adapter;\n const _scale$_parseOpts = scale._parseOpts,\n parser = _scale$_parseOpts.parser,\n round = _scale$_parseOpts.round,\n isoWeekday = _scale$_parseOpts.isoWeekday;\n let value = input;\n\n if (typeof parser === 'function') {\n value = parser(value);\n }\n\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string' ? adapter.parse(value, parser) : adapter.parse(value);\n }\n\n if (value === null) {\n return null;\n }\n\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true) ? adapter.startOf(value, 'isoWeek', isoWeekday) : adapter.startOf(value, round);\n }\n\n return +value;\n}\n\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n\n return UNITS[ilen - 1];\n}\n\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\n\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const _lookup2 = _lookup(timestamps, time),\n lo = _lookup2.lo,\n hi = _lookup2.hi;\n\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\n\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n\n return ticks;\n}\n\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n\n return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\n\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n\n return parse(this, raw);\n }\n\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n\n determineDataLimits() {\n const me = this;\n const options = me.options;\n const adapter = me._adapter;\n const unit = options.time.unit || 'day';\n\n let _me$getUserBounds5 = me.getUserBounds(),\n min = _me$getUserBounds5.min,\n max = _me$getUserBounds5.max,\n minDefined = _me$getUserBounds5.minDefined,\n maxDefined = _me$getUserBounds5.maxDefined;\n\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n\n if (!minDefined || !maxDefined) {\n _applyBounds(me._getLabelBounds());\n\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(me.getMinMax(false));\n }\n }\n\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n me.min = Math.min(min, max - 1);\n me.max = Math.max(min + 1, max);\n }\n\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n\n return {\n min,\n max\n };\n }\n\n buildTicks() {\n const me = this;\n const options = me.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? me.getLabelTimestamps() : me._generate();\n\n if (options.bounds === 'ticks' && timestamps.length) {\n me.min = me._userMin || timestamps[0];\n me.max = me._userMax || timestamps[timestamps.length - 1];\n }\n\n const min = me.min;\n const max = me.max;\n\n const ticks = _filterBetween(timestamps, min, max);\n\n me._unit = timeOpts.unit || (tickOpts.autoSkip ? determineUnitForAutoTicks(timeOpts.minUnit, me.min, me.max, me._getLabelCapacity(min)) : determineUnitForFormatting(me, ticks.length, timeOpts.minUnit, me.min, me.max));\n me._majorUnit = !tickOpts.major.enabled || me._unit === 'year' ? undefined : determineMajorUnit(me._unit);\n me.initOffsets(timestamps);\n\n if (options.reverse) {\n ticks.reverse();\n }\n\n return ticksFromTimestamps(me, ticks, me._majorUnit);\n }\n\n initOffsets(timestamps) {\n const me = this;\n let start = 0;\n let end = 0;\n let first, last;\n\n if (me.options.offset && timestamps.length) {\n first = me.getDecimalForValue(timestamps[0]);\n\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (me.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n\n last = me.getDecimalForValue(timestamps[timestamps.length - 1]);\n\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - me.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n me._offsets = {\n start,\n end,\n factor: 1 / (start + 1 + end)\n };\n }\n\n _generate() {\n const me = this;\n const adapter = me._adapter;\n const min = me.min;\n const max = me.max;\n const options = me.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, me._getLabelCapacity(min));\n const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n\n const timestamps = options.ticks.source === 'data' && me.getDataTimestamps();\n\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n\n getLabelForValue(value) {\n const me = this;\n const adapter = me._adapter;\n const timeOpts = me.options.time;\n\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n\n _tickFormatFunction(time, index, ticks, format) {\n const me = this;\n const options = me.options;\n const formats = options.time.displayFormats;\n const unit = me._unit;\n const majorUnit = me._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n\n const label = me._adapter.format(time, format || (major ? majorFormat : minorFormat));\n\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], me) : label;\n }\n\n generateTickLabels(ticks) {\n let i, ilen, tick;\n\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n\n getDecimalForValue(value) {\n const me = this;\n return value === null ? NaN : (value - me.min) / (me.max - me.min);\n }\n\n getPixelForValue(value) {\n const me = this;\n const offsets = me._offsets;\n const pos = me.getDecimalForValue(value);\n return me.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n\n getValueForPixel(pixel) {\n const me = this;\n const offsets = me._offsets;\n const pos = me.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return me.min + pos * (me.max - me.min);\n }\n\n _getLabelSize(label) {\n const me = this;\n const ticksOpts = me.options.ticks;\n const tickLabelWidth = me.ctx.measureText(label).width;\n const angle = toRadians(me.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n\n const tickFontSize = me._resolveTickFontOptions(0).size;\n\n return {\n w: tickLabelWidth * cosRotation + tickFontSize * sinRotation,\n h: tickLabelWidth * sinRotation + tickFontSize * cosRotation\n };\n }\n\n _getLabelCapacity(exampleTime) {\n const me = this;\n const timeOpts = me.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n\n const exampleLabel = me._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(me, [exampleTime], me._majorUnit), format);\n\n const size = me._getLabelSize(exampleLabel);\n\n const capacity = Math.floor(me.isHorizontal() ? me.width / size.w : me.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n\n getDataTimestamps() {\n const me = this;\n let timestamps = me._cache.data || [];\n let i, ilen;\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const metas = me.getMatchingVisibleMetas();\n\n if (me._normalized && metas.length) {\n return me._cache.data = metas[0].controller.getAllParsedValues(me);\n }\n\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(me));\n }\n\n return me._cache.data = me.normalize(timestamps);\n }\n\n getLabelTimestamps() {\n const me = this;\n const timestamps = me._cache.labels || [];\n let i, ilen;\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const labels = me.getLabels();\n\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(me, labels[i]));\n }\n\n return me._cache.labels = me._normalized ? timestamps : me.normalize(timestamps);\n }\n\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n\n}\n\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n major: {\n enabled: false\n }\n }\n};\n\nfunction interpolate(table, val, reverse) {\n let prevSource, nextSource, prevTarget, nextTarget;\n\n if (reverse) {\n prevSource = Math.floor(val);\n nextSource = Math.ceil(val);\n prevTarget = table[prevSource];\n nextTarget = table[nextSource];\n } else {\n const result = _lookup(table, val);\n\n prevTarget = result.lo;\n nextTarget = result.hi;\n prevSource = table[prevTarget];\n nextSource = table[nextTarget];\n }\n\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\n\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._maxIndex = undefined;\n }\n\n initOffsets() {\n const me = this;\n\n const timestamps = me._getTimestampsForTable();\n\n me._table = me.buildLookupTable(timestamps);\n me._maxIndex = me._table.length - 1;\n super.initOffsets(timestamps);\n }\n\n buildLookupTable(timestamps) {\n const me = this;\n const min = me.min,\n max = me.max;\n\n if (!timestamps.length) {\n return [{\n time: min,\n pos: 0\n }, {\n time: max,\n pos: 1\n }];\n }\n\n const items = [min];\n let i, ilen, curr;\n\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n\n if (curr > min && curr < max) {\n items.push(curr);\n }\n }\n\n items.push(max);\n return items;\n }\n\n _getTimestampsForTable() {\n const me = this;\n let timestamps = me._cache.all || [];\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const data = me.getDataTimestamps();\n const label = me.getLabelTimestamps();\n\n if (data.length && label.length) {\n timestamps = me.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n\n timestamps = me._cache.all = timestamps;\n return timestamps;\n }\n\n getPixelForValue(value, index) {\n const me = this;\n const offsets = me._offsets;\n const pos = me._normalized && me._maxIndex > 0 && !isNullOrUndef(index) ? index / me._maxIndex : me.getDecimalForValue(value);\n return me.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n\n getDecimalForValue(value) {\n return interpolate(this._table, value) / this._maxIndex;\n }\n\n getValueForPixel(pixel) {\n const me = this;\n const offsets = me._offsets;\n const decimal = me.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(me._table, decimal * this._maxIndex, true);\n }\n\n}\n\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\nvar scales = /*#__PURE__*/Object.freeze({\n __proto__: null,\n CategoryScale: CategoryScale,\n LinearScale: LinearScale,\n LogarithmicScale: LogarithmicScale,\n RadialLinearScale: RadialLinearScale,\n TimeScale: TimeScale,\n TimeSeriesScale: TimeSeriesScale\n});\nconst registerables = [controllers, elements, plugins, scales];\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, plugin_filler as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, animator, controllers, elements, layouts, plugins, registerables, registry, scales };","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __extends } from \"tslib\";\nimport { MDCComponent } from '@material/base/component';\nimport { applyPassive } from '@material/dom/events';\nimport { matches } from '@material/dom/ponyfill';\nimport { MDCRippleFoundation } from './foundation';\nimport * as util from './util';\n\nvar MDCRipple =\n/** @class */\nfunction (_super) {\n __extends(MDCRipple, _super);\n\n function MDCRipple() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.disabled = false;\n return _this;\n }\n\n MDCRipple.attachTo = function (root, opts) {\n if (opts === void 0) {\n opts = {\n isUnbounded: undefined\n };\n }\n\n var ripple = new MDCRipple(root); // Only override unbounded behavior if option is explicitly specified\n\n if (opts.isUnbounded !== undefined) {\n ripple.unbounded = opts.isUnbounded;\n }\n\n return ripple;\n };\n\n MDCRipple.createAdapter = function (instance) {\n return {\n addClass: function (className) {\n return instance.root.classList.add(className);\n },\n browserSupportsCssVars: function () {\n return util.supportsCssVariables(window);\n },\n computeBoundingRect: function () {\n return instance.root.getBoundingClientRect();\n },\n containsEventTarget: function (target) {\n return instance.root.contains(target);\n },\n deregisterDocumentInteractionHandler: function (evtType, handler) {\n return document.documentElement.removeEventListener(evtType, handler, applyPassive());\n },\n deregisterInteractionHandler: function (evtType, handler) {\n return instance.root.removeEventListener(evtType, handler, applyPassive());\n },\n deregisterResizeHandler: function (handler) {\n return window.removeEventListener('resize', handler);\n },\n getWindowPageOffset: function () {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n },\n isSurfaceActive: function () {\n return matches(instance.root, ':active');\n },\n isSurfaceDisabled: function () {\n return Boolean(instance.disabled);\n },\n isUnbounded: function () {\n return Boolean(instance.unbounded);\n },\n registerDocumentInteractionHandler: function (evtType, handler) {\n return document.documentElement.addEventListener(evtType, handler, applyPassive());\n },\n registerInteractionHandler: function (evtType, handler) {\n return instance.root.addEventListener(evtType, handler, applyPassive());\n },\n registerResizeHandler: function (handler) {\n return window.addEventListener('resize', handler);\n },\n removeClass: function (className) {\n return instance.root.classList.remove(className);\n },\n updateCssVariable: function (varName, value) {\n return instance.root.style.setProperty(varName, value);\n }\n };\n };\n\n Object.defineProperty(MDCRipple.prototype, \"unbounded\", {\n get: function () {\n return Boolean(this.unbounded_);\n },\n set: function (unbounded) {\n this.unbounded_ = Boolean(unbounded);\n this.setUnbounded_();\n },\n enumerable: true,\n configurable: true\n });\n\n MDCRipple.prototype.activate = function () {\n this.foundation.activate();\n };\n\n MDCRipple.prototype.deactivate = function () {\n this.foundation.deactivate();\n };\n\n MDCRipple.prototype.layout = function () {\n this.foundation.layout();\n };\n\n MDCRipple.prototype.getDefaultFoundation = function () {\n return new MDCRippleFoundation(MDCRipple.createAdapter(this));\n };\n\n MDCRipple.prototype.initialSyncWithDOM = function () {\n var root = this.root;\n this.unbounded = 'mdcRippleIsUnbounded' in root.dataset;\n };\n /**\n * Closure Compiler throws an access control error when directly accessing a\n * protected or private property inside a getter/setter, like unbounded above.\n * By accessing the protected property inside a method, we solve that problem.\n * That's why this function exists.\n */\n\n\n MDCRipple.prototype.setUnbounded_ = function () {\n this.foundation.setUnbounded(Boolean(this.unbounded_));\n };\n\n return MDCRipple;\n}(MDCComponent);\n\nexport { MDCRipple };","export User = {\n\n isLoggedIn: -> @type() > 0\n isEmailVerified: -> document.body.dataset.emailVerified != undefined\n isFreeAccount: -> @status() is 'FreeAccount'\n isPaidExpired: -> @status() is 'ExpiredPaid'\n isFreeTrialActive: -> @status() is 'ActiveFreeTrial'\n isFreeTrialExpired: -> @status() is 'ExpiredFreeTrial'\n isPaidActive: -> @status() is 'ActivePaid' or @status() is 'Admin'\n hasActiveSubscription: -> @isFreeTrialActive() or @isPaidActive()\n\n type: -> document.body.dataset.userType\n isExpired: -> @isLoggedIn() and document.body.dataset.expired != undefined\n status: -> document.body.dataset.userStatus\n hasNotification: (shareId) -> @notificationShareIds().indexOf(shareId) > -1\n notificationCount: (shareId) ->\n index = @notificationShareIds().indexOf(shareId)\n return @notificationQuantities()[index] if index > -1\n null\n\n notificationShareIds: -> document.body.dataset.notifIds.split(\",\")\n notificationQuantities: -> document.body.dataset.notifCounts.split(\",\")\n}","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nvar cssClasses = {\n CLOSING: 'mdc-snackbar--closing',\n OPEN: 'mdc-snackbar--open',\n OPENING: 'mdc-snackbar--opening'\n};\nvar strings = {\n ACTION_SELECTOR: '.mdc-snackbar__action',\n ARIA_LIVE_LABEL_TEXT_ATTR: 'data-mdc-snackbar-label-text',\n CLOSED_EVENT: 'MDCSnackbar:closed',\n CLOSING_EVENT: 'MDCSnackbar:closing',\n DISMISS_SELECTOR: '.mdc-snackbar__dismiss',\n LABEL_SELECTOR: '.mdc-snackbar__label',\n OPENED_EVENT: 'MDCSnackbar:opened',\n OPENING_EVENT: 'MDCSnackbar:opening',\n REASON_ACTION: 'action',\n REASON_DISMISS: 'dismiss',\n SURFACE_SELECTOR: '.mdc-snackbar__surface'\n};\nvar numbers = {\n DEFAULT_AUTO_DISMISS_TIMEOUT_MS: 5000,\n INDETERMINATE: -1,\n MAX_AUTO_DISMISS_TIMEOUT_MS: 10000,\n MIN_AUTO_DISMISS_TIMEOUT_MS: 4000,\n // These variables need to be kept in sync with the values in _variables.scss.\n SNACKBAR_ANIMATION_CLOSE_TIME_MS: 75,\n SNACKBAR_ANIMATION_OPEN_TIME_MS: 150,\n\n /**\n * Number of milliseconds to wait between temporarily clearing the label text\n * in the DOM and subsequently restoring it. This is necessary to force IE 11\n * to pick up the `aria-live` content change and announce it to the user.\n */\n ARIA_LIVE_DELAY_MS: 1000\n};\nexport { cssClasses, strings, numbers };","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __assign, __extends } from \"tslib\";\nimport { MDCFoundation } from '@material/base/foundation';\nimport { cssClasses, numbers, strings } from './constants';\nvar OPENING = cssClasses.OPENING,\n OPEN = cssClasses.OPEN,\n CLOSING = cssClasses.CLOSING;\nvar REASON_ACTION = strings.REASON_ACTION,\n REASON_DISMISS = strings.REASON_DISMISS;\n\nvar MDCSnackbarFoundation =\n/** @class */\nfunction (_super) {\n __extends(MDCSnackbarFoundation, _super);\n\n function MDCSnackbarFoundation(adapter) {\n var _this = _super.call(this, __assign(__assign({}, MDCSnackbarFoundation.defaultAdapter), adapter)) || this;\n\n _this.isOpen_ = false;\n _this.animationFrame_ = 0;\n _this.animationTimer_ = 0;\n _this.autoDismissTimer_ = 0;\n _this.autoDismissTimeoutMs_ = numbers.DEFAULT_AUTO_DISMISS_TIMEOUT_MS;\n _this.closeOnEscape_ = true;\n return _this;\n }\n\n Object.defineProperty(MDCSnackbarFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSnackbarFoundation, \"strings\", {\n get: function () {\n return strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSnackbarFoundation, \"numbers\", {\n get: function () {\n return numbers;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSnackbarFoundation, \"defaultAdapter\", {\n get: function () {\n return {\n addClass: function () {\n return undefined;\n },\n announce: function () {\n return undefined;\n },\n notifyClosed: function () {\n return undefined;\n },\n notifyClosing: function () {\n return undefined;\n },\n notifyOpened: function () {\n return undefined;\n },\n notifyOpening: function () {\n return undefined;\n },\n removeClass: function () {\n return undefined;\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n\n MDCSnackbarFoundation.prototype.destroy = function () {\n this.clearAutoDismissTimer_();\n cancelAnimationFrame(this.animationFrame_);\n this.animationFrame_ = 0;\n clearTimeout(this.animationTimer_);\n this.animationTimer_ = 0;\n this.adapter.removeClass(OPENING);\n this.adapter.removeClass(OPEN);\n this.adapter.removeClass(CLOSING);\n };\n\n MDCSnackbarFoundation.prototype.open = function () {\n var _this = this;\n\n this.clearAutoDismissTimer_();\n this.isOpen_ = true;\n this.adapter.notifyOpening();\n this.adapter.removeClass(CLOSING);\n this.adapter.addClass(OPENING);\n this.adapter.announce(); // Wait a frame once display is no longer \"none\", to establish basis for animation\n\n this.runNextAnimationFrame_(function () {\n _this.adapter.addClass(OPEN);\n\n _this.animationTimer_ = setTimeout(function () {\n var timeoutMs = _this.getTimeoutMs();\n\n _this.handleAnimationTimerEnd_();\n\n _this.adapter.notifyOpened();\n\n if (timeoutMs !== numbers.INDETERMINATE) {\n _this.autoDismissTimer_ = setTimeout(function () {\n _this.close(REASON_DISMISS);\n }, timeoutMs);\n }\n }, numbers.SNACKBAR_ANIMATION_OPEN_TIME_MS);\n });\n };\n /**\n * @param reason Why the snackbar was closed. Value will be passed to CLOSING_EVENT and CLOSED_EVENT via the\n * `event.detail.reason` property. Standard values are REASON_ACTION and REASON_DISMISS, but custom\n * client-specific values may also be used if desired.\n */\n\n\n MDCSnackbarFoundation.prototype.close = function (reason) {\n var _this = this;\n\n if (reason === void 0) {\n reason = '';\n }\n\n if (!this.isOpen_) {\n // Avoid redundant close calls (and events), e.g. repeated interactions as the snackbar is animating closed\n return;\n }\n\n cancelAnimationFrame(this.animationFrame_);\n this.animationFrame_ = 0;\n this.clearAutoDismissTimer_();\n this.isOpen_ = false;\n this.adapter.notifyClosing(reason);\n this.adapter.addClass(cssClasses.CLOSING);\n this.adapter.removeClass(cssClasses.OPEN);\n this.adapter.removeClass(cssClasses.OPENING);\n clearTimeout(this.animationTimer_);\n this.animationTimer_ = setTimeout(function () {\n _this.handleAnimationTimerEnd_();\n\n _this.adapter.notifyClosed(reason);\n }, numbers.SNACKBAR_ANIMATION_CLOSE_TIME_MS);\n };\n\n MDCSnackbarFoundation.prototype.isOpen = function () {\n return this.isOpen_;\n };\n\n MDCSnackbarFoundation.prototype.getTimeoutMs = function () {\n return this.autoDismissTimeoutMs_;\n };\n\n MDCSnackbarFoundation.prototype.setTimeoutMs = function (timeoutMs) {\n // Use shorter variable names to make the code more readable\n var minValue = numbers.MIN_AUTO_DISMISS_TIMEOUT_MS;\n var maxValue = numbers.MAX_AUTO_DISMISS_TIMEOUT_MS;\n var indeterminateValue = numbers.INDETERMINATE;\n\n if (timeoutMs === numbers.INDETERMINATE || timeoutMs <= maxValue && timeoutMs >= minValue) {\n this.autoDismissTimeoutMs_ = timeoutMs;\n } else {\n throw new Error(\"\\n timeoutMs must be an integer in the range \" + minValue + \"\\u2013\" + maxValue + \"\\n (or \" + indeterminateValue + \" to disable), but got '\" + timeoutMs + \"'\");\n }\n };\n\n MDCSnackbarFoundation.prototype.getCloseOnEscape = function () {\n return this.closeOnEscape_;\n };\n\n MDCSnackbarFoundation.prototype.setCloseOnEscape = function (closeOnEscape) {\n this.closeOnEscape_ = closeOnEscape;\n };\n\n MDCSnackbarFoundation.prototype.handleKeyDown = function (evt) {\n var isEscapeKey = evt.key === 'Escape' || evt.keyCode === 27;\n\n if (isEscapeKey && this.getCloseOnEscape()) {\n this.close(REASON_DISMISS);\n }\n };\n\n MDCSnackbarFoundation.prototype.handleActionButtonClick = function (_evt) {\n this.close(REASON_ACTION);\n };\n\n MDCSnackbarFoundation.prototype.handleActionIconClick = function (_evt) {\n this.close(REASON_DISMISS);\n };\n\n MDCSnackbarFoundation.prototype.clearAutoDismissTimer_ = function () {\n clearTimeout(this.autoDismissTimer_);\n this.autoDismissTimer_ = 0;\n };\n\n MDCSnackbarFoundation.prototype.handleAnimationTimerEnd_ = function () {\n this.animationTimer_ = 0;\n this.adapter.removeClass(cssClasses.OPENING);\n this.adapter.removeClass(cssClasses.CLOSING);\n };\n /**\n * Runs the given logic on the next animation frame, using setTimeout to factor in Firefox reflow behavior.\n */\n\n\n MDCSnackbarFoundation.prototype.runNextAnimationFrame_ = function (callback) {\n var _this = this;\n\n cancelAnimationFrame(this.animationFrame_);\n this.animationFrame_ = requestAnimationFrame(function () {\n _this.animationFrame_ = 0;\n clearTimeout(_this.animationTimer_);\n _this.animationTimer_ = setTimeout(callback, 0);\n });\n };\n\n return MDCSnackbarFoundation;\n}(MDCFoundation);\n\nexport { MDCSnackbarFoundation }; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\n\nexport default MDCSnackbarFoundation;","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { numbers, strings } from './constants';\nvar ARIA_LIVE_DELAY_MS = numbers.ARIA_LIVE_DELAY_MS;\nvar ARIA_LIVE_LABEL_TEXT_ATTR = strings.ARIA_LIVE_LABEL_TEXT_ATTR;\n\nfunction announce(ariaEl, labelEl) {\n if (labelEl === void 0) {\n labelEl = ariaEl;\n }\n\n var priority = ariaEl.getAttribute('aria-live'); // Trim text to ignore ` ` (see below).\n // textContent is only null if the node is a document, DOCTYPE, or notation.\n\n var labelText = labelEl.textContent.trim();\n\n if (!labelText || !priority) {\n return;\n } // Temporarily disable `aria-live` to prevent JAWS+Firefox from announcing the message twice.\n\n\n ariaEl.setAttribute('aria-live', 'off'); // Temporarily clear `textContent` to force a DOM mutation event that will be detected by screen readers.\n // `aria-live` elements are only announced when the element's `textContent` *changes*, so snackbars\n // sent to the browser in the initial HTML response won't be read unless we clear the element's `textContent` first.\n // Similarly, displaying the same snackbar message twice in a row doesn't trigger a DOM mutation event,\n // so screen readers won't announce the second message unless we first clear `textContent`.\n //\n // We have to clear the label text two different ways to make it work in all browsers and screen readers:\n //\n // 1. `textContent = ''` is required for IE11 + JAWS\n // 2. `innerHTML = ' '` is required for Chrome + JAWS and NVDA\n //\n // All other browser/screen reader combinations support both methods.\n //\n // The wrapper `` visually hides the space character so that it doesn't cause jank when added/removed.\n // N.B.: Setting `position: absolute`, `opacity: 0`, or `height: 0` prevents Chrome from detecting the DOM change.\n //\n // This technique has been tested in:\n //\n // * JAWS 2019:\n // - Chrome 70\n // - Firefox 60 (ESR)\n // - IE 11\n // * NVDA 2018:\n // - Chrome 70\n // - Firefox 60 (ESR)\n // - IE 11\n // * ChromeVox 53\n\n labelEl.textContent = '';\n labelEl.innerHTML = ' '; // Prevent visual jank by temporarily displaying the label text in the ::before pseudo-element.\n // CSS generated content is normally announced by screen readers\n // (except in IE 11; see https://tink.uk/accessibility-support-for-css-generated-content/);\n // however, `aria-live` is turned off, so this DOM update will be ignored by screen readers.\n\n labelEl.setAttribute(ARIA_LIVE_LABEL_TEXT_ATTR, labelText);\n setTimeout(function () {\n // Allow screen readers to announce changes to the DOM again.\n ariaEl.setAttribute('aria-live', priority); // Remove the message from the ::before pseudo-element.\n\n labelEl.removeAttribute(ARIA_LIVE_LABEL_TEXT_ATTR); // Restore the original label text, which will be announced by screen readers.\n\n labelEl.textContent = labelText;\n }, ARIA_LIVE_DELAY_MS);\n}\n\nexport { announce };","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __extends } from \"tslib\";\nimport { MDCComponent } from '@material/base/component';\nimport { closest } from '@material/dom/ponyfill';\nimport { strings } from './constants';\nimport { MDCSnackbarFoundation } from './foundation';\nimport * as util from './util';\nvar SURFACE_SELECTOR = strings.SURFACE_SELECTOR,\n LABEL_SELECTOR = strings.LABEL_SELECTOR,\n ACTION_SELECTOR = strings.ACTION_SELECTOR,\n DISMISS_SELECTOR = strings.DISMISS_SELECTOR,\n OPENING_EVENT = strings.OPENING_EVENT,\n OPENED_EVENT = strings.OPENED_EVENT,\n CLOSING_EVENT = strings.CLOSING_EVENT,\n CLOSED_EVENT = strings.CLOSED_EVENT;\n\nvar MDCSnackbar =\n/** @class */\nfunction (_super) {\n __extends(MDCSnackbar, _super);\n\n function MDCSnackbar() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MDCSnackbar.attachTo = function (root) {\n return new MDCSnackbar(root);\n };\n\n MDCSnackbar.prototype.initialize = function (announcerFactory) {\n if (announcerFactory === void 0) {\n announcerFactory = function () {\n return util.announce;\n };\n }\n\n this.announce_ = announcerFactory();\n };\n\n MDCSnackbar.prototype.initialSyncWithDOM = function () {\n var _this = this;\n\n this.surfaceEl_ = this.root.querySelector(SURFACE_SELECTOR);\n this.labelEl_ = this.root.querySelector(LABEL_SELECTOR);\n this.actionEl_ = this.root.querySelector(ACTION_SELECTOR);\n\n this.handleKeyDown_ = function (evt) {\n return _this.foundation.handleKeyDown(evt);\n };\n\n this.handleSurfaceClick_ = function (evt) {\n var target = evt.target;\n\n if (_this.isActionButton_(target)) {\n _this.foundation.handleActionButtonClick(evt);\n } else if (_this.isActionIcon_(target)) {\n _this.foundation.handleActionIconClick(evt);\n }\n };\n\n this.registerKeyDownHandler_(this.handleKeyDown_);\n this.registerSurfaceClickHandler_(this.handleSurfaceClick_);\n };\n\n MDCSnackbar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n\n this.deregisterKeyDownHandler_(this.handleKeyDown_);\n this.deregisterSurfaceClickHandler_(this.handleSurfaceClick_);\n };\n\n MDCSnackbar.prototype.open = function () {\n this.foundation.open();\n };\n /**\n * @param reason Why the snackbar was closed. Value will be passed to CLOSING_EVENT and CLOSED_EVENT via the\n * `event.detail.reason` property. Standard values are REASON_ACTION and REASON_DISMISS, but custom\n * client-specific values may also be used if desired.\n */\n\n\n MDCSnackbar.prototype.close = function (reason) {\n if (reason === void 0) {\n reason = '';\n }\n\n this.foundation.close(reason);\n };\n\n MDCSnackbar.prototype.getDefaultFoundation = function () {\n var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n\n\n var adapter = {\n addClass: function (className) {\n return _this.root.classList.add(className);\n },\n announce: function () {\n return _this.announce_(_this.labelEl_);\n },\n notifyClosed: function (reason) {\n return _this.emit(CLOSED_EVENT, reason ? {\n reason: reason\n } : {});\n },\n notifyClosing: function (reason) {\n return _this.emit(CLOSING_EVENT, reason ? {\n reason: reason\n } : {});\n },\n notifyOpened: function () {\n return _this.emit(OPENED_EVENT, {});\n },\n notifyOpening: function () {\n return _this.emit(OPENING_EVENT, {});\n },\n removeClass: function (className) {\n return _this.root.classList.remove(className);\n }\n };\n return new MDCSnackbarFoundation(adapter);\n };\n\n Object.defineProperty(MDCSnackbar.prototype, \"timeoutMs\", {\n get: function () {\n return this.foundation.getTimeoutMs();\n },\n set: function (timeoutMs) {\n this.foundation.setTimeoutMs(timeoutMs);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSnackbar.prototype, \"closeOnEscape\", {\n get: function () {\n return this.foundation.getCloseOnEscape();\n },\n set: function (closeOnEscape) {\n this.foundation.setCloseOnEscape(closeOnEscape);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSnackbar.prototype, \"isOpen\", {\n get: function () {\n return this.foundation.isOpen();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSnackbar.prototype, \"labelText\", {\n get: function () {\n // This property only returns null if the node is a document, DOCTYPE, or notation.\n // On Element nodes, it always returns a string.\n return this.labelEl_.textContent;\n },\n set: function (labelText) {\n this.labelEl_.textContent = labelText;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSnackbar.prototype, \"actionButtonText\", {\n get: function () {\n return this.actionEl_.textContent;\n },\n set: function (actionButtonText) {\n this.actionEl_.textContent = actionButtonText;\n },\n enumerable: true,\n configurable: true\n });\n\n MDCSnackbar.prototype.registerKeyDownHandler_ = function (handler) {\n this.listen('keydown', handler);\n };\n\n MDCSnackbar.prototype.deregisterKeyDownHandler_ = function (handler) {\n this.unlisten('keydown', handler);\n };\n\n MDCSnackbar.prototype.registerSurfaceClickHandler_ = function (handler) {\n this.surfaceEl_.addEventListener('click', handler);\n };\n\n MDCSnackbar.prototype.deregisterSurfaceClickHandler_ = function (handler) {\n this.surfaceEl_.removeEventListener('click', handler);\n };\n\n MDCSnackbar.prototype.isActionButton_ = function (target) {\n return Boolean(closest(target, ACTION_SELECTOR));\n };\n\n MDCSnackbar.prototype.isActionIcon_ = function (target) {\n return Boolean(closest(target, DISMISS_SELECTOR));\n };\n\n return MDCSnackbar;\n}(MDCComponent);\n\nexport { MDCSnackbar };","import {element_with_content, element_with_class} from 'utils/material_elements'\nimport {MDCSnackbar} from '@material/snackbar'\n\nexport class FlashMessage\n\n @error: (message) -> @addFlashMessage(message, 'flash-error')\n @success: (message) -> @addFlashMessage(message, 'flash-success')\n\n @addFlashMessage: (message, clazz) ->\n @removeFlashMessage()\n div = @buildFlashMessage(message, clazz)\n document.body.append div\n @prepareFlashMessage()\n\n @prepareFlashMessage: ->\n div = document.querySelector('.flash-message')\n if div\n snackbar = new MDCSnackbar(div)\n snackbar.open()\n\n @buildFlashMessage: (message, clazz) ->\n div = element_with_class('div', 'mdc-snackbar', clazz, 'flash-message')\n surface = element_with_class('div', 'mdc-snackbar__surface')\n label = element_with_content('div', message, 'mdc-snackbar__label')\n label.setAttribute('role', 'status')\n label.setAttribute('aria-live', 'polite')\n surface.append label\n div.append surface\n div\n\n @removeFlashMessage: ->\n existing = document.querySelector('.flash-message')\n existing.remove() if existing\n\nFlashMessage.prepareFlashMessage()","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nexport var cssClasses = {\n // Ripple is a special case where the \"root\" component is really a \"mixin\" of sorts,\n // given that it's an 'upgrade' to an existing component. That being said it is the root\n // CSS class that all other CSS classes derive from.\n BG_FOCUSED: 'mdc-ripple-upgraded--background-focused',\n FG_ACTIVATION: 'mdc-ripple-upgraded--foreground-activation',\n FG_DEACTIVATION: 'mdc-ripple-upgraded--foreground-deactivation',\n ROOT: 'mdc-ripple-upgraded',\n UNBOUNDED: 'mdc-ripple-upgraded--unbounded'\n};\nexport var strings = {\n VAR_FG_SCALE: '--mdc-ripple-fg-scale',\n VAR_FG_SIZE: '--mdc-ripple-fg-size',\n VAR_FG_TRANSLATE_END: '--mdc-ripple-fg-translate-end',\n VAR_FG_TRANSLATE_START: '--mdc-ripple-fg-translate-start',\n VAR_LEFT: '--mdc-ripple-left',\n VAR_TOP: '--mdc-ripple-top'\n};\nexport var numbers = {\n DEACTIVATION_TIMEOUT_MS: 225,\n FG_DEACTIVATION_MS: 150,\n INITIAL_ORIGIN_SCALE: 0.6,\n PADDING: 10,\n TAP_DELAY_MS: 300\n};","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __assign, __extends } from \"tslib\";\nimport { MDCFoundation } from '@material/base/foundation';\nimport { cssClasses, numbers, strings } from './constants';\nimport { getNormalizedEventCoords } from './util'; // Activation events registered on the root element of each instance for activation\n\nvar ACTIVATION_EVENT_TYPES = ['touchstart', 'pointerdown', 'mousedown', 'keydown']; // Deactivation events registered on documentElement when a pointer-related down event occurs\n\nvar POINTER_DEACTIVATION_EVENT_TYPES = ['touchend', 'pointerup', 'mouseup', 'contextmenu']; // simultaneous nested activations\n\nvar activatedTargets = [];\n\nvar MDCRippleFoundation =\n/** @class */\nfunction (_super) {\n __extends(MDCRippleFoundation, _super);\n\n function MDCRippleFoundation(adapter) {\n var _this = _super.call(this, __assign(__assign({}, MDCRippleFoundation.defaultAdapter), adapter)) || this;\n\n _this.activationAnimationHasEnded_ = false;\n _this.activationTimer_ = 0;\n _this.fgDeactivationRemovalTimer_ = 0;\n _this.fgScale_ = '0';\n _this.frame_ = {\n width: 0,\n height: 0\n };\n _this.initialSize_ = 0;\n _this.layoutFrame_ = 0;\n _this.maxRadius_ = 0;\n _this.unboundedCoords_ = {\n left: 0,\n top: 0\n };\n _this.activationState_ = _this.defaultActivationState_();\n\n _this.activationTimerCallback_ = function () {\n _this.activationAnimationHasEnded_ = true;\n\n _this.runDeactivationUXLogicIfReady_();\n };\n\n _this.activateHandler_ = function (e) {\n return _this.activate_(e);\n };\n\n _this.deactivateHandler_ = function () {\n return _this.deactivate_();\n };\n\n _this.focusHandler_ = function () {\n return _this.handleFocus();\n };\n\n _this.blurHandler_ = function () {\n return _this.handleBlur();\n };\n\n _this.resizeHandler_ = function () {\n return _this.layout();\n };\n\n return _this;\n }\n\n Object.defineProperty(MDCRippleFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCRippleFoundation, \"strings\", {\n get: function () {\n return strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCRippleFoundation, \"numbers\", {\n get: function () {\n return numbers;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCRippleFoundation, \"defaultAdapter\", {\n get: function () {\n return {\n addClass: function () {\n return undefined;\n },\n browserSupportsCssVars: function () {\n return true;\n },\n computeBoundingRect: function () {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n width: 0,\n height: 0\n };\n },\n containsEventTarget: function () {\n return true;\n },\n deregisterDocumentInteractionHandler: function () {\n return undefined;\n },\n deregisterInteractionHandler: function () {\n return undefined;\n },\n deregisterResizeHandler: function () {\n return undefined;\n },\n getWindowPageOffset: function () {\n return {\n x: 0,\n y: 0\n };\n },\n isSurfaceActive: function () {\n return true;\n },\n isSurfaceDisabled: function () {\n return true;\n },\n isUnbounded: function () {\n return true;\n },\n registerDocumentInteractionHandler: function () {\n return undefined;\n },\n registerInteractionHandler: function () {\n return undefined;\n },\n registerResizeHandler: function () {\n return undefined;\n },\n removeClass: function () {\n return undefined;\n },\n updateCssVariable: function () {\n return undefined;\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n\n MDCRippleFoundation.prototype.init = function () {\n var _this = this;\n\n var supportsPressRipple = this.supportsPressRipple_();\n this.registerRootHandlers_(supportsPressRipple);\n\n if (supportsPressRipple) {\n var _a = MDCRippleFoundation.cssClasses,\n ROOT_1 = _a.ROOT,\n UNBOUNDED_1 = _a.UNBOUNDED;\n requestAnimationFrame(function () {\n _this.adapter.addClass(ROOT_1);\n\n if (_this.adapter.isUnbounded()) {\n _this.adapter.addClass(UNBOUNDED_1); // Unbounded ripples need layout logic applied immediately to set coordinates for both shade and ripple\n\n\n _this.layoutInternal_();\n }\n });\n }\n };\n\n MDCRippleFoundation.prototype.destroy = function () {\n var _this = this;\n\n if (this.supportsPressRipple_()) {\n if (this.activationTimer_) {\n clearTimeout(this.activationTimer_);\n this.activationTimer_ = 0;\n this.adapter.removeClass(MDCRippleFoundation.cssClasses.FG_ACTIVATION);\n }\n\n if (this.fgDeactivationRemovalTimer_) {\n clearTimeout(this.fgDeactivationRemovalTimer_);\n this.fgDeactivationRemovalTimer_ = 0;\n this.adapter.removeClass(MDCRippleFoundation.cssClasses.FG_DEACTIVATION);\n }\n\n var _a = MDCRippleFoundation.cssClasses,\n ROOT_2 = _a.ROOT,\n UNBOUNDED_2 = _a.UNBOUNDED;\n requestAnimationFrame(function () {\n _this.adapter.removeClass(ROOT_2);\n\n _this.adapter.removeClass(UNBOUNDED_2);\n\n _this.removeCssVars_();\n });\n }\n\n this.deregisterRootHandlers_();\n this.deregisterDeactivationHandlers_();\n };\n /**\n * @param evt Optional event containing position information.\n */\n\n\n MDCRippleFoundation.prototype.activate = function (evt) {\n this.activate_(evt);\n };\n\n MDCRippleFoundation.prototype.deactivate = function () {\n this.deactivate_();\n };\n\n MDCRippleFoundation.prototype.layout = function () {\n var _this = this;\n\n if (this.layoutFrame_) {\n cancelAnimationFrame(this.layoutFrame_);\n }\n\n this.layoutFrame_ = requestAnimationFrame(function () {\n _this.layoutInternal_();\n\n _this.layoutFrame_ = 0;\n });\n };\n\n MDCRippleFoundation.prototype.setUnbounded = function (unbounded) {\n var UNBOUNDED = MDCRippleFoundation.cssClasses.UNBOUNDED;\n\n if (unbounded) {\n this.adapter.addClass(UNBOUNDED);\n } else {\n this.adapter.removeClass(UNBOUNDED);\n }\n };\n\n MDCRippleFoundation.prototype.handleFocus = function () {\n var _this = this;\n\n requestAnimationFrame(function () {\n return _this.adapter.addClass(MDCRippleFoundation.cssClasses.BG_FOCUSED);\n });\n };\n\n MDCRippleFoundation.prototype.handleBlur = function () {\n var _this = this;\n\n requestAnimationFrame(function () {\n return _this.adapter.removeClass(MDCRippleFoundation.cssClasses.BG_FOCUSED);\n });\n };\n /**\n * We compute this property so that we are not querying information about the client\n * until the point in time where the foundation requests it. This prevents scenarios where\n * client-side feature-detection may happen too early, such as when components are rendered on the server\n * and then initialized at mount time on the client.\n */\n\n\n MDCRippleFoundation.prototype.supportsPressRipple_ = function () {\n return this.adapter.browserSupportsCssVars();\n };\n\n MDCRippleFoundation.prototype.defaultActivationState_ = function () {\n return {\n activationEvent: undefined,\n hasDeactivationUXRun: false,\n isActivated: false,\n isProgrammatic: false,\n wasActivatedByPointer: false,\n wasElementMadeActive: false\n };\n };\n /**\n * supportsPressRipple Passed from init to save a redundant function call\n */\n\n\n MDCRippleFoundation.prototype.registerRootHandlers_ = function (supportsPressRipple) {\n var _this = this;\n\n if (supportsPressRipple) {\n ACTIVATION_EVENT_TYPES.forEach(function (evtType) {\n _this.adapter.registerInteractionHandler(evtType, _this.activateHandler_);\n });\n\n if (this.adapter.isUnbounded()) {\n this.adapter.registerResizeHandler(this.resizeHandler_);\n }\n }\n\n this.adapter.registerInteractionHandler('focus', this.focusHandler_);\n this.adapter.registerInteractionHandler('blur', this.blurHandler_);\n };\n\n MDCRippleFoundation.prototype.registerDeactivationHandlers_ = function (evt) {\n var _this = this;\n\n if (evt.type === 'keydown') {\n this.adapter.registerInteractionHandler('keyup', this.deactivateHandler_);\n } else {\n POINTER_DEACTIVATION_EVENT_TYPES.forEach(function (evtType) {\n _this.adapter.registerDocumentInteractionHandler(evtType, _this.deactivateHandler_);\n });\n }\n };\n\n MDCRippleFoundation.prototype.deregisterRootHandlers_ = function () {\n var _this = this;\n\n ACTIVATION_EVENT_TYPES.forEach(function (evtType) {\n _this.adapter.deregisterInteractionHandler(evtType, _this.activateHandler_);\n });\n this.adapter.deregisterInteractionHandler('focus', this.focusHandler_);\n this.adapter.deregisterInteractionHandler('blur', this.blurHandler_);\n\n if (this.adapter.isUnbounded()) {\n this.adapter.deregisterResizeHandler(this.resizeHandler_);\n }\n };\n\n MDCRippleFoundation.prototype.deregisterDeactivationHandlers_ = function () {\n var _this = this;\n\n this.adapter.deregisterInteractionHandler('keyup', this.deactivateHandler_);\n POINTER_DEACTIVATION_EVENT_TYPES.forEach(function (evtType) {\n _this.adapter.deregisterDocumentInteractionHandler(evtType, _this.deactivateHandler_);\n });\n };\n\n MDCRippleFoundation.prototype.removeCssVars_ = function () {\n var _this = this;\n\n var rippleStrings = MDCRippleFoundation.strings;\n var keys = Object.keys(rippleStrings);\n keys.forEach(function (key) {\n if (key.indexOf('VAR_') === 0) {\n _this.adapter.updateCssVariable(rippleStrings[key], null);\n }\n });\n };\n\n MDCRippleFoundation.prototype.activate_ = function (evt) {\n var _this = this;\n\n if (this.adapter.isSurfaceDisabled()) {\n return;\n }\n\n var activationState = this.activationState_;\n\n if (activationState.isActivated) {\n return;\n } // Avoid reacting to follow-on events fired by touch device after an already-processed user interaction\n\n\n var previousActivationEvent = this.previousActivationEvent_;\n var isSameInteraction = previousActivationEvent && evt !== undefined && previousActivationEvent.type !== evt.type;\n\n if (isSameInteraction) {\n return;\n }\n\n activationState.isActivated = true;\n activationState.isProgrammatic = evt === undefined;\n activationState.activationEvent = evt;\n activationState.wasActivatedByPointer = activationState.isProgrammatic ? false : evt !== undefined && (evt.type === 'mousedown' || evt.type === 'touchstart' || evt.type === 'pointerdown');\n var hasActivatedChild = evt !== undefined && activatedTargets.length > 0 && activatedTargets.some(function (target) {\n return _this.adapter.containsEventTarget(target);\n });\n\n if (hasActivatedChild) {\n // Immediately reset activation state, while preserving logic that prevents touch follow-on events\n this.resetActivationState_();\n return;\n }\n\n if (evt !== undefined) {\n activatedTargets.push(evt.target);\n this.registerDeactivationHandlers_(evt);\n }\n\n activationState.wasElementMadeActive = this.checkElementMadeActive_(evt);\n\n if (activationState.wasElementMadeActive) {\n this.animateActivation_();\n }\n\n requestAnimationFrame(function () {\n // Reset array on next frame after the current event has had a chance to bubble to prevent ancestor ripples\n activatedTargets = [];\n\n if (!activationState.wasElementMadeActive && evt !== undefined && (evt.key === ' ' || evt.keyCode === 32)) {\n // If space was pressed, try again within an rAF call to detect :active, because different UAs report\n // active states inconsistently when they're called within event handling code:\n // - https://bugs.chromium.org/p/chromium/issues/detail?id=635971\n // - https://bugzilla.mozilla.org/show_bug.cgi?id=1293741\n // We try first outside rAF to support Edge, which does not exhibit this problem, but will crash if a CSS\n // variable is set within a rAF callback for a submit button interaction (#2241).\n activationState.wasElementMadeActive = _this.checkElementMadeActive_(evt);\n\n if (activationState.wasElementMadeActive) {\n _this.animateActivation_();\n }\n }\n\n if (!activationState.wasElementMadeActive) {\n // Reset activation state immediately if element was not made active.\n _this.activationState_ = _this.defaultActivationState_();\n }\n });\n };\n\n MDCRippleFoundation.prototype.checkElementMadeActive_ = function (evt) {\n return evt !== undefined && evt.type === 'keydown' ? this.adapter.isSurfaceActive() : true;\n };\n\n MDCRippleFoundation.prototype.animateActivation_ = function () {\n var _this = this;\n\n var _a = MDCRippleFoundation.strings,\n VAR_FG_TRANSLATE_START = _a.VAR_FG_TRANSLATE_START,\n VAR_FG_TRANSLATE_END = _a.VAR_FG_TRANSLATE_END;\n var _b = MDCRippleFoundation.cssClasses,\n FG_DEACTIVATION = _b.FG_DEACTIVATION,\n FG_ACTIVATION = _b.FG_ACTIVATION;\n var DEACTIVATION_TIMEOUT_MS = MDCRippleFoundation.numbers.DEACTIVATION_TIMEOUT_MS;\n this.layoutInternal_();\n var translateStart = '';\n var translateEnd = '';\n\n if (!this.adapter.isUnbounded()) {\n var _c = this.getFgTranslationCoordinates_(),\n startPoint = _c.startPoint,\n endPoint = _c.endPoint;\n\n translateStart = startPoint.x + \"px, \" + startPoint.y + \"px\";\n translateEnd = endPoint.x + \"px, \" + endPoint.y + \"px\";\n }\n\n this.adapter.updateCssVariable(VAR_FG_TRANSLATE_START, translateStart);\n this.adapter.updateCssVariable(VAR_FG_TRANSLATE_END, translateEnd); // Cancel any ongoing activation/deactivation animations\n\n clearTimeout(this.activationTimer_);\n clearTimeout(this.fgDeactivationRemovalTimer_);\n this.rmBoundedActivationClasses_();\n this.adapter.removeClass(FG_DEACTIVATION); // Force layout in order to re-trigger the animation.\n\n this.adapter.computeBoundingRect();\n this.adapter.addClass(FG_ACTIVATION);\n this.activationTimer_ = setTimeout(function () {\n return _this.activationTimerCallback_();\n }, DEACTIVATION_TIMEOUT_MS);\n };\n\n MDCRippleFoundation.prototype.getFgTranslationCoordinates_ = function () {\n var _a = this.activationState_,\n activationEvent = _a.activationEvent,\n wasActivatedByPointer = _a.wasActivatedByPointer;\n var startPoint;\n\n if (wasActivatedByPointer) {\n startPoint = getNormalizedEventCoords(activationEvent, this.adapter.getWindowPageOffset(), this.adapter.computeBoundingRect());\n } else {\n startPoint = {\n x: this.frame_.width / 2,\n y: this.frame_.height / 2\n };\n } // Center the element around the start point.\n\n\n startPoint = {\n x: startPoint.x - this.initialSize_ / 2,\n y: startPoint.y - this.initialSize_ / 2\n };\n var endPoint = {\n x: this.frame_.width / 2 - this.initialSize_ / 2,\n y: this.frame_.height / 2 - this.initialSize_ / 2\n };\n return {\n startPoint: startPoint,\n endPoint: endPoint\n };\n };\n\n MDCRippleFoundation.prototype.runDeactivationUXLogicIfReady_ = function () {\n var _this = this; // This method is called both when a pointing device is released, and when the activation animation ends.\n // The deactivation animation should only run after both of those occur.\n\n\n var FG_DEACTIVATION = MDCRippleFoundation.cssClasses.FG_DEACTIVATION;\n var _a = this.activationState_,\n hasDeactivationUXRun = _a.hasDeactivationUXRun,\n isActivated = _a.isActivated;\n var activationHasEnded = hasDeactivationUXRun || !isActivated;\n\n if (activationHasEnded && this.activationAnimationHasEnded_) {\n this.rmBoundedActivationClasses_();\n this.adapter.addClass(FG_DEACTIVATION);\n this.fgDeactivationRemovalTimer_ = setTimeout(function () {\n _this.adapter.removeClass(FG_DEACTIVATION);\n }, numbers.FG_DEACTIVATION_MS);\n }\n };\n\n MDCRippleFoundation.prototype.rmBoundedActivationClasses_ = function () {\n var FG_ACTIVATION = MDCRippleFoundation.cssClasses.FG_ACTIVATION;\n this.adapter.removeClass(FG_ACTIVATION);\n this.activationAnimationHasEnded_ = false;\n this.adapter.computeBoundingRect();\n };\n\n MDCRippleFoundation.prototype.resetActivationState_ = function () {\n var _this = this;\n\n this.previousActivationEvent_ = this.activationState_.activationEvent;\n this.activationState_ = this.defaultActivationState_(); // Touch devices may fire additional events for the same interaction within a short time.\n // Store the previous event until it's safe to assume that subsequent events are for new interactions.\n\n setTimeout(function () {\n return _this.previousActivationEvent_ = undefined;\n }, MDCRippleFoundation.numbers.TAP_DELAY_MS);\n };\n\n MDCRippleFoundation.prototype.deactivate_ = function () {\n var _this = this;\n\n var activationState = this.activationState_; // This can happen in scenarios such as when you have a keyup event that blurs the element.\n\n if (!activationState.isActivated) {\n return;\n }\n\n var state = __assign({}, activationState);\n\n if (activationState.isProgrammatic) {\n requestAnimationFrame(function () {\n return _this.animateDeactivation_(state);\n });\n this.resetActivationState_();\n } else {\n this.deregisterDeactivationHandlers_();\n requestAnimationFrame(function () {\n _this.activationState_.hasDeactivationUXRun = true;\n\n _this.animateDeactivation_(state);\n\n _this.resetActivationState_();\n });\n }\n };\n\n MDCRippleFoundation.prototype.animateDeactivation_ = function (_a) {\n var wasActivatedByPointer = _a.wasActivatedByPointer,\n wasElementMadeActive = _a.wasElementMadeActive;\n\n if (wasActivatedByPointer || wasElementMadeActive) {\n this.runDeactivationUXLogicIfReady_();\n }\n };\n\n MDCRippleFoundation.prototype.layoutInternal_ = function () {\n var _this = this;\n\n this.frame_ = this.adapter.computeBoundingRect();\n var maxDim = Math.max(this.frame_.height, this.frame_.width); // Surface diameter is treated differently for unbounded vs. bounded ripples.\n // Unbounded ripple diameter is calculated smaller since the surface is expected to already be padded appropriately\n // to extend the hitbox, and the ripple is expected to meet the edges of the padded hitbox (which is typically\n // square). Bounded ripples, on the other hand, are fully expected to expand beyond the surface's longest diameter\n // (calculated based on the diagonal plus a constant padding), and are clipped at the surface's border via\n // `overflow: hidden`.\n\n var getBoundedRadius = function () {\n var hypotenuse = Math.sqrt(Math.pow(_this.frame_.width, 2) + Math.pow(_this.frame_.height, 2));\n return hypotenuse + MDCRippleFoundation.numbers.PADDING;\n };\n\n this.maxRadius_ = this.adapter.isUnbounded() ? maxDim : getBoundedRadius(); // Ripple is sized as a fraction of the largest dimension of the surface, then scales up using a CSS scale transform\n\n var initialSize = Math.floor(maxDim * MDCRippleFoundation.numbers.INITIAL_ORIGIN_SCALE); // Unbounded ripple size should always be even number to equally center align.\n\n if (this.adapter.isUnbounded() && initialSize % 2 !== 0) {\n this.initialSize_ = initialSize - 1;\n } else {\n this.initialSize_ = initialSize;\n }\n\n this.fgScale_ = \"\" + this.maxRadius_ / this.initialSize_;\n this.updateLayoutCssVars_();\n };\n\n MDCRippleFoundation.prototype.updateLayoutCssVars_ = function () {\n var _a = MDCRippleFoundation.strings,\n VAR_FG_SIZE = _a.VAR_FG_SIZE,\n VAR_LEFT = _a.VAR_LEFT,\n VAR_TOP = _a.VAR_TOP,\n VAR_FG_SCALE = _a.VAR_FG_SCALE;\n this.adapter.updateCssVariable(VAR_FG_SIZE, this.initialSize_ + \"px\");\n this.adapter.updateCssVariable(VAR_FG_SCALE, this.fgScale_);\n\n if (this.adapter.isUnbounded()) {\n this.unboundedCoords_ = {\n left: Math.round(this.frame_.width / 2 - this.initialSize_ / 2),\n top: Math.round(this.frame_.height / 2 - this.initialSize_ / 2)\n };\n this.adapter.updateCssVariable(VAR_LEFT, this.unboundedCoords_.left + \"px\");\n this.adapter.updateCssVariable(VAR_TOP, this.unboundedCoords_.top + \"px\");\n }\n };\n\n return MDCRippleFoundation;\n}(MDCFoundation);\n\nexport { MDCRippleFoundation }; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\n\nexport default MDCRippleFoundation;","export class EmojiFallback\n\n constructor: ->\n @prepare_string()\n\n run: ->\n @replace_emojis() unless @emoji_support()\n\n tree_walker: ->\n nodes = ['A', 'LI', 'TD', 'SPAN']\n document.createTreeWalker document.body, NodeFilter.SHOW_TEXT, ((node) ->\n return NodeFilter.FILTER_SKIP unless node.parentNode?\n return NodeFilter.FILTER_REJECT unless nodes.indexOf(node.parentNode.nodeName.toUpperCase()) >= 0\n return NodeFilter.FILTER_SKIP if String.prototype.trim && !node.nodeValue.trim().length\n return NodeFilter.FILTER_ACCEPT), false\n\n text_nodes: ->\n nodes = []\n walker = @tree_walker()\n nodes.push(walker.currentNode) while walker.nextNode()\n nodes\n\n emoji_support: ->\n return false unless document.createElement('canvas').getContext\n context = document.createElement('canvas').getContext('2d')\n return false unless typeof context.fillText == 'function'\n flag = String.fromCodePoint(0x1F1F3) + String.fromCodePoint(0x1F1FF);\n context.textBaseline = \"top\"\n context.font = \"32px Arial\"\n context.fillText(flag, 0, 0)\n context.getImageData(16, 16, 1, 1).data[0] != 0\n\n codePoint: (point) ->\n offset = point - 0x10000\n units = if point > 0xFFFF then [0xD800 + (offset >> 10), 0xDC00 + (offset & 0x3FF)] else [point]\n String.fromCharCode.apply(null, units)\n\n surrogatePairToCodepoint: (lead, trail) -> (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000 \n\n getImageForCodepoint: (hex) ->\n img = document.createElement('IMG')\n img.style.verticalAlign = \"top\"\n img.classList.add 'emoji-flag'\n img.src = \"//cdn.dividendmax.com/flags/#{hex}.png\"\n img\n\n fragmentForString: (htmlString) ->\n tmpDoc = document.createElement('DIV')\n fragment = document.createDocumentFragment()\n\n tmpDoc.innerHTML = htmlString\n fragment.appendChild(childNode) while childNode = tmpDoc.firstChild\n fragment\n\n replace_in_node: (node) ->\n pattern = /([\\ud800-\\udbff])([\\udc00-\\udfff])([\\ud800-\\udbff])([\\udc00-\\udfff])/g\n value = node.nodeValue\n if value.match(pattern)\n replacement = @imageReplacement(value, pattern)\n node.parentNode.replaceChild(@fragmentForString(replacement), node)\n\n replaceInElement: (element) ->\n return if @emoji_support()\n pattern = /([\\ud800-\\udbff])([\\udc00-\\udfff])([\\ud800-\\udbff])([\\udc00-\\udfff])/g\n value = element.innerHTML\n if value.match(pattern)\n replacement = @imageReplacement(value, pattern)\n element.innerHTML = replacement\n\n imageReplacement: (value, pattern) ->\n value.replace pattern, (match, p1, p2, p3, p4) =>\n point1 = @surrogatePairToCodepoint(p1.charCodeAt(0), p2.charCodeAt(0))\n point2 = @surrogatePairToCodepoint(p3.charCodeAt(0), p4.charCodeAt(0))\n img = @getImageForCodepoint(point1.toString(16) + point2.toString(16))\n img.outerHTML\n\n prepare_string: ->\n unless String.fromCodePoint?\n String.fromCodePoint = =>\n chars = []\n chars.push(@codePoint(point)) for point in arguments\n chars.join(\"\")\n\n replace_emojis: ->\n @replace_in_node(node) for node in @text_nodes()\n\n\nexport apply = ->\n emoji = new EmojiFallback()\n emoji.run()","/**\n * @license\n * Copyright 2020 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nvar ELEMENTS_KEY_ALLOWED_IN = ['input', 'button', 'textarea', 'select'];\n/**\n * Ensures that preventDefault is only called if the containing element\n * doesn't consume the event, and it will cause an unintended scroll.\n *\n * @param evt keyboard event to be prevented.\n */\n\nexport var preventDefaultEvent = function (evt) {\n var target = evt.target;\n\n if (!target) {\n return;\n }\n\n var tagName = (\"\" + target.tagName).toLowerCase();\n\n if (ELEMENTS_KEY_ALLOWED_IN.indexOf(tagName) === -1) {\n evt.preventDefault();\n }\n};","/**\n * @license\n * Copyright 2020 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { normalizeKey } from '@material/dom/keyboard';\nimport { numbers } from './constants';\nimport { preventDefaultEvent } from './events';\n/**\n * Initializes a state object for typeahead. Use the same reference for calls to\n * typeahead functions.\n *\n * @return The current state of the typeahead process. Each state reference\n * represents a typeahead instance as the reference is typically mutated\n * in-place.\n */\n\nexport function initState() {\n var state = {\n bufferClearTimeout: 0,\n currentFirstChar: '',\n sortedIndexCursor: 0,\n typeaheadBuffer: ''\n };\n return state;\n}\n/**\n * Initializes typeahead state by indexing the current list items by primary\n * text into the sortedIndexByFirstChar data structure.\n *\n * @param listItemCount numer of items in the list\n * @param getPrimaryTextByItemIndex function that returns the primary text at a\n * given index\n *\n * @return Map that maps the first character of the primary text to the full\n * list text and it's index\n */\n\nexport function initSortedIndex(listItemCount, getPrimaryTextByItemIndex) {\n var sortedIndexByFirstChar = new Map(); // Aggregate item text to index mapping\n\n for (var i = 0; i < listItemCount; i++) {\n var primaryText = getPrimaryTextByItemIndex(i).trim();\n\n if (!primaryText) {\n continue;\n }\n\n var firstChar = primaryText[0].toLowerCase();\n\n if (!sortedIndexByFirstChar.has(firstChar)) {\n sortedIndexByFirstChar.set(firstChar, []);\n }\n\n sortedIndexByFirstChar.get(firstChar).push({\n text: primaryText.toLowerCase(),\n index: i\n });\n } // Sort the mapping\n // TODO(b/157162694): Investigate replacing forEach with Map.values()\n\n\n sortedIndexByFirstChar.forEach(function (values) {\n values.sort(function (first, second) {\n return first.index - second.index;\n });\n });\n return sortedIndexByFirstChar;\n}\n/**\n * Given the next desired character from the user, it attempts to find the next\n * list option matching the buffer. Wraps around if at the end of options.\n *\n * @param opts Options and accessors\n * - nextChar - the next character to match against items\n * - sortedIndexByFirstChar - output of `initSortedIndex(...)`\n * - focusedItemIndex - the index of the currently focused item\n * - focusItemAtIndex - function that focuses a list item at given index\n * - skipFocus - whether or not to focus the matched item\n * - isItemAtIndexDisabled - function that determines whether an item at a\n * given index is disabled\n * @param state The typeahead state instance. See `initState`.\n *\n * @return The index of the matched item, or -1 if no match.\n */\n\nexport function matchItem(opts, state) {\n var nextChar = opts.nextChar,\n focusItemAtIndex = opts.focusItemAtIndex,\n sortedIndexByFirstChar = opts.sortedIndexByFirstChar,\n focusedItemIndex = opts.focusedItemIndex,\n skipFocus = opts.skipFocus,\n isItemAtIndexDisabled = opts.isItemAtIndexDisabled;\n clearTimeout(state.bufferClearTimeout);\n state.bufferClearTimeout = setTimeout(function () {\n clearBuffer(state);\n }, numbers.TYPEAHEAD_BUFFER_CLEAR_TIMEOUT_MS);\n state.typeaheadBuffer = state.typeaheadBuffer + nextChar;\n var index;\n\n if (state.typeaheadBuffer.length === 1) {\n index = matchFirstChar(sortedIndexByFirstChar, focusedItemIndex, isItemAtIndexDisabled, state);\n } else {\n index = matchAllChars(sortedIndexByFirstChar, isItemAtIndexDisabled, state);\n }\n\n if (index !== -1 && !skipFocus) {\n focusItemAtIndex(index);\n }\n\n return index;\n}\n/**\n * Matches the user's single input character in the buffer to the\n * next option that begins with such character. Wraps around if at\n * end of options. Returns -1 if no match is found.\n */\n\nfunction matchFirstChar(sortedIndexByFirstChar, focusedItemIndex, isItemAtIndexDisabled, state) {\n var firstChar = state.typeaheadBuffer[0];\n var itemsMatchingFirstChar = sortedIndexByFirstChar.get(firstChar);\n\n if (!itemsMatchingFirstChar) {\n return -1;\n } // Has the same firstChar been recently matched?\n // Also, did starting index remain the same between key presses?\n // If both hold true, simply increment index.\n\n\n if (firstChar === state.currentFirstChar && itemsMatchingFirstChar[state.sortedIndexCursor].index === focusedItemIndex) {\n state.sortedIndexCursor = (state.sortedIndexCursor + 1) % itemsMatchingFirstChar.length;\n var newIndex = itemsMatchingFirstChar[state.sortedIndexCursor].index;\n\n if (!isItemAtIndexDisabled(newIndex)) {\n return newIndex;\n }\n } // If we're here, it means one of the following happened:\n // - either firstChar or startingIndex has changed, invalidating the\n // cursor.\n // - The next item of typeahead is disabled, so we have to look further.\n\n\n state.currentFirstChar = firstChar;\n var newCursorPosition = -1;\n var cursorPosition; // Find the first non-disabled item as a fallback.\n\n for (cursorPosition = 0; cursorPosition < itemsMatchingFirstChar.length; cursorPosition++) {\n if (!isItemAtIndexDisabled(itemsMatchingFirstChar[cursorPosition].index)) {\n newCursorPosition = cursorPosition;\n break;\n }\n } // Advance cursor to first item matching the firstChar that is positioned\n // after starting item. Cursor is unchanged from fallback if there's no\n // such item.\n\n\n for (; cursorPosition < itemsMatchingFirstChar.length; cursorPosition++) {\n if (itemsMatchingFirstChar[cursorPosition].index > focusedItemIndex && !isItemAtIndexDisabled(itemsMatchingFirstChar[cursorPosition].index)) {\n newCursorPosition = cursorPosition;\n break;\n }\n }\n\n if (newCursorPosition !== -1) {\n state.sortedIndexCursor = newCursorPosition;\n return itemsMatchingFirstChar[state.sortedIndexCursor].index;\n }\n\n return -1;\n}\n/**\n * Attempts to find the next item that matches all of the typeahead buffer.\n * Wraps around if at end of options. Returns -1 if no match is found.\n */\n\n\nfunction matchAllChars(sortedIndexByFirstChar, isItemAtIndexDisabled, state) {\n var firstChar = state.typeaheadBuffer[0];\n var itemsMatchingFirstChar = sortedIndexByFirstChar.get(firstChar);\n\n if (!itemsMatchingFirstChar) {\n return -1;\n } // Do nothing if text already matches\n\n\n var startingItem = itemsMatchingFirstChar[state.sortedIndexCursor];\n\n if (startingItem.text.lastIndexOf(state.typeaheadBuffer, 0) === 0 && !isItemAtIndexDisabled(startingItem.index)) {\n return startingItem.index;\n } // Find next item that matches completely; if no match, we'll eventually\n // loop around to same position\n\n\n var cursorPosition = (state.sortedIndexCursor + 1) % itemsMatchingFirstChar.length;\n var nextCursorPosition = -1;\n\n while (cursorPosition !== state.sortedIndexCursor) {\n var currentItem = itemsMatchingFirstChar[cursorPosition];\n var matches = currentItem.text.lastIndexOf(state.typeaheadBuffer, 0) === 0;\n var isEnabled = !isItemAtIndexDisabled(currentItem.index);\n\n if (matches && isEnabled) {\n nextCursorPosition = cursorPosition;\n break;\n }\n\n cursorPosition = (cursorPosition + 1) % itemsMatchingFirstChar.length;\n }\n\n if (nextCursorPosition !== -1) {\n state.sortedIndexCursor = nextCursorPosition;\n return itemsMatchingFirstChar[state.sortedIndexCursor].index;\n }\n\n return -1;\n}\n/**\n * Whether or not the given typeahead instaance state is currently typing.\n *\n * @param state The typeahead state instance. See `initState`.\n */\n\n\nexport function isTypingInProgress(state) {\n return state.typeaheadBuffer.length > 0;\n}\n/**\n * Clears the typeahaed buffer so that it resets item matching to the first\n * character.\n *\n * @param state The typeahead state instance. See `initState`.\n */\n\nexport function clearBuffer(state) {\n state.typeaheadBuffer = '';\n}\n/**\n * Given a keydown event, it calculates whether or not to automatically focus a\n * list item depending on what was typed mimicing the typeahead functionality of\n * a standard