{"version":3,"file":"static/js/nm.charts.80bc1545be1dd074.js","sources":["webpack://fason-surec-takipv3/./node_modules/chartjs-plugin-datalabels/dist/chartjs-plugin-datalabels.esm.js","webpack://fason-surec-takipv3/./node_modules/chartjs-plugin-doughnutlabel-v3/dist/chartjs-plugin-doughnutlabel.esm.js","webpack://fason-surec-takipv3/./node_modules/react-chartjs-2/dist/index.modern.js","webpack://fason-surec-takipv3/./node_modules/canvg/lib/index.es.js","webpack://fason-surec-takipv3/./node_modules/chart.js/dist/chart.mjs","webpack://fason-surec-takipv3/./node_modules/chart.js/dist/chunks/helpers.segment.mjs"],"sourcesContent":["/*!\n * chartjs-plugin-datalabels v2.0.0\n * https://chartjs-plugin-datalabels.netlify.app\n * (c) 2017-2021 chartjs-plugin-datalabels contributors\n * Released under the MIT license\n */\nimport { isNullOrUndef, merge, toFont, resolve, toPadding, valueOrDefault, callback, isObject, each } from 'chart.js/helpers';\nimport { defaults as defaults$1, ArcElement, PointElement, BarElement } from 'chart.js';\n\nvar devicePixelRatio = (function() {\n if (typeof window !== 'undefined') {\n if (window.devicePixelRatio) {\n return window.devicePixelRatio;\n }\n\n // devicePixelRatio is undefined on IE10\n // https://stackoverflow.com/a/20204180/8837887\n // https://github.com/chartjs/chartjs-plugin-datalabels/issues/85\n var screen = window.screen;\n if (screen) {\n return (screen.deviceXDPI || 1) / (screen.logicalXDPI || 1);\n }\n }\n\n return 1;\n}());\n\nvar utils = {\n // @todo move this in Chart.helpers.toTextLines\n toTextLines: function(inputs) {\n var lines = [];\n var input;\n\n inputs = [].concat(inputs);\n while (inputs.length) {\n input = inputs.pop();\n if (typeof input === 'string') {\n lines.unshift.apply(lines, input.split('\\n'));\n } else if (Array.isArray(input)) {\n inputs.push.apply(inputs, input);\n } else if (!isNullOrUndef(inputs)) {\n lines.unshift('' + input);\n }\n }\n\n return lines;\n },\n\n // @todo move this in Chart.helpers.canvas.textSize\n // @todo cache calls of measureText if font doesn't change?!\n textSize: function(ctx, lines, font) {\n var items = [].concat(lines);\n var ilen = items.length;\n var prev = ctx.font;\n var width = 0;\n var i;\n\n ctx.font = font.string;\n\n for (i = 0; i < ilen; ++i) {\n width = Math.max(ctx.measureText(items[i]).width, width);\n }\n\n ctx.font = prev;\n\n return {\n height: ilen * font.lineHeight,\n width: width\n };\n },\n\n /**\n * Returns value bounded by min and max. This is equivalent to max(min, min(value, max)).\n * @todo move this method in Chart.helpers.bound\n * https://doc.qt.io/qt-5/qtglobal.html#qBound\n */\n bound: function(min, value, max) {\n return Math.max(min, Math.min(value, max));\n },\n\n /**\n * Returns an array of pair [value, state] where state is:\n * * -1: value is only in a0 (removed)\n * * 1: value is only in a1 (added)\n */\n arrayDiff: function(a0, a1) {\n var prev = a0.slice();\n var updates = [];\n var i, j, ilen, v;\n\n for (i = 0, ilen = a1.length; i < ilen; ++i) {\n v = a1[i];\n j = prev.indexOf(v);\n\n if (j === -1) {\n updates.push([v, 1]);\n } else {\n prev.splice(j, 1);\n }\n }\n\n for (i = 0, ilen = prev.length; i < ilen; ++i) {\n updates.push([prev[i], -1]);\n }\n\n return updates;\n },\n\n /**\n * https://github.com/chartjs/chartjs-plugin-datalabels/issues/70\n */\n rasterize: function(v) {\n return Math.round(v * devicePixelRatio) / devicePixelRatio;\n }\n};\n\nfunction orient(point, origin) {\n var x0 = origin.x;\n var y0 = origin.y;\n\n if (x0 === null) {\n return {x: 0, y: -1};\n }\n if (y0 === null) {\n return {x: 1, y: 0};\n }\n\n var dx = point.x - x0;\n var dy = point.y - y0;\n var ln = Math.sqrt(dx * dx + dy * dy);\n\n return {\n x: ln ? dx / ln : 0,\n y: ln ? dy / ln : -1\n };\n}\n\nfunction aligned(x, y, vx, vy, align) {\n switch (align) {\n case 'center':\n vx = vy = 0;\n break;\n case 'bottom':\n vx = 0;\n vy = 1;\n break;\n case 'right':\n vx = 1;\n vy = 0;\n break;\n case 'left':\n vx = -1;\n vy = 0;\n break;\n case 'top':\n vx = 0;\n vy = -1;\n break;\n case 'start':\n vx = -vx;\n vy = -vy;\n break;\n case 'end':\n // keep natural orientation\n break;\n default:\n // clockwise rotation (in degree)\n align *= (Math.PI / 180);\n vx = Math.cos(align);\n vy = Math.sin(align);\n break;\n }\n\n return {\n x: x,\n y: y,\n vx: vx,\n vy: vy\n };\n}\n\n// Line clipping (Cohen–Sutherland algorithm)\n// https://en.wikipedia.org/wiki/Cohen–Sutherland_algorithm\n\nvar R_INSIDE = 0;\nvar R_LEFT = 1;\nvar R_RIGHT = 2;\nvar R_BOTTOM = 4;\nvar R_TOP = 8;\n\nfunction region(x, y, rect) {\n var res = R_INSIDE;\n\n if (x < rect.left) {\n res |= R_LEFT;\n } else if (x > rect.right) {\n res |= R_RIGHT;\n }\n if (y < rect.top) {\n res |= R_TOP;\n } else if (y > rect.bottom) {\n res |= R_BOTTOM;\n }\n\n return res;\n}\n\nfunction clipped(segment, area) {\n var x0 = segment.x0;\n var y0 = segment.y0;\n var x1 = segment.x1;\n var y1 = segment.y1;\n var r0 = region(x0, y0, area);\n var r1 = region(x1, y1, area);\n var r, x, y;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (!(r0 | r1) || (r0 & r1)) {\n // both points inside or on the same side: no clipping\n break;\n }\n\n // at least one point is outside\n r = r0 || r1;\n\n if (r & R_TOP) {\n x = x0 + (x1 - x0) * (area.top - y0) / (y1 - y0);\n y = area.top;\n } else if (r & R_BOTTOM) {\n x = x0 + (x1 - x0) * (area.bottom - y0) / (y1 - y0);\n y = area.bottom;\n } else if (r & R_RIGHT) {\n y = y0 + (y1 - y0) * (area.right - x0) / (x1 - x0);\n x = area.right;\n } else if (r & R_LEFT) {\n y = y0 + (y1 - y0) * (area.left - x0) / (x1 - x0);\n x = area.left;\n }\n\n if (r === r0) {\n x0 = x;\n y0 = y;\n r0 = region(x0, y0, area);\n } else {\n x1 = x;\n y1 = y;\n r1 = region(x1, y1, area);\n }\n }\n\n return {\n x0: x0,\n x1: x1,\n y0: y0,\n y1: y1\n };\n}\n\nfunction compute$1(range, config) {\n var anchor = config.anchor;\n var segment = range;\n var x, y;\n\n if (config.clamp) {\n segment = clipped(segment, config.area);\n }\n\n if (anchor === 'start') {\n x = segment.x0;\n y = segment.y0;\n } else if (anchor === 'end') {\n x = segment.x1;\n y = segment.y1;\n } else {\n x = (segment.x0 + segment.x1) / 2;\n y = (segment.y0 + segment.y1) / 2;\n }\n\n return aligned(x, y, range.vx, range.vy, config.align);\n}\n\nvar positioners = {\n arc: function(el, config) {\n var angle = (el.startAngle + el.endAngle) / 2;\n var vx = Math.cos(angle);\n var vy = Math.sin(angle);\n var r0 = el.innerRadius;\n var r1 = el.outerRadius;\n\n return compute$1({\n x0: el.x + vx * r0,\n y0: el.y + vy * r0,\n x1: el.x + vx * r1,\n y1: el.y + vy * r1,\n vx: vx,\n vy: vy\n }, config);\n },\n\n point: function(el, config) {\n var v = orient(el, config.origin);\n var rx = v.x * el.options.radius;\n var ry = v.y * el.options.radius;\n\n return compute$1({\n x0: el.x - rx,\n y0: el.y - ry,\n x1: el.x + rx,\n y1: el.y + ry,\n vx: v.x,\n vy: v.y\n }, config);\n },\n\n bar: function(el, config) {\n var v = orient(el, config.origin);\n var x = el.x;\n var y = el.y;\n var sx = 0;\n var sy = 0;\n\n if (el.horizontal) {\n x = Math.min(el.x, el.base);\n sx = Math.abs(el.base - el.x);\n } else {\n y = Math.min(el.y, el.base);\n sy = Math.abs(el.base - el.y);\n }\n\n return compute$1({\n x0: x,\n y0: y + sy,\n x1: x + sx,\n y1: y,\n vx: v.x,\n vy: v.y\n }, config);\n },\n\n fallback: function(el, config) {\n var v = orient(el, config.origin);\n\n return compute$1({\n x0: el.x,\n y0: el.y,\n x1: el.x,\n y1: el.y,\n vx: v.x,\n vy: v.y\n }, config);\n }\n};\n\nvar rasterize = utils.rasterize;\n\nfunction boundingRects(model) {\n var borderWidth = model.borderWidth || 0;\n var padding = model.padding;\n var th = model.size.height;\n var tw = model.size.width;\n var tx = -tw / 2;\n var ty = -th / 2;\n\n return {\n frame: {\n x: tx - padding.left - borderWidth,\n y: ty - padding.top - borderWidth,\n w: tw + padding.width + borderWidth * 2,\n h: th + padding.height + borderWidth * 2\n },\n text: {\n x: tx,\n y: ty,\n w: tw,\n h: th\n }\n };\n}\n\nfunction getScaleOrigin(el, context) {\n var scale = context.chart.getDatasetMeta(context.datasetIndex).vScale;\n\n if (!scale) {\n return null;\n }\n\n if (scale.xCenter !== undefined && scale.yCenter !== undefined) {\n return {x: scale.xCenter, y: scale.yCenter};\n }\n\n var pixel = scale.getBasePixel();\n return el.horizontal ?\n {x: pixel, y: null} :\n {x: null, y: pixel};\n}\n\nfunction getPositioner(el) {\n if (el instanceof ArcElement) {\n return positioners.arc;\n }\n if (el instanceof PointElement) {\n return positioners.point;\n }\n if (el instanceof BarElement) {\n return positioners.bar;\n }\n return positioners.fallback;\n}\n\nfunction drawRoundedRect(ctx, x, y, w, h, radius) {\n var HALF_PI = Math.PI / 2;\n\n if (radius) {\n var r = Math.min(radius, h / 2, w / 2);\n var left = x + r;\n var top = y + r;\n var right = x + w - r;\n var bottom = y + h - r;\n\n ctx.moveTo(x, top);\n if (left < right && top < bottom) {\n ctx.arc(left, top, r, -Math.PI, -HALF_PI);\n ctx.arc(right, top, r, -HALF_PI, 0);\n ctx.arc(right, bottom, r, 0, HALF_PI);\n ctx.arc(left, bottom, r, HALF_PI, Math.PI);\n } else if (left < right) {\n ctx.moveTo(left, y);\n ctx.arc(right, top, r, -HALF_PI, HALF_PI);\n ctx.arc(left, top, r, HALF_PI, Math.PI + HALF_PI);\n } else if (top < bottom) {\n ctx.arc(left, top, r, -Math.PI, 0);\n ctx.arc(left, bottom, r, 0, Math.PI);\n } else {\n ctx.arc(left, top, r, -Math.PI, Math.PI);\n }\n ctx.closePath();\n ctx.moveTo(x, y);\n } else {\n ctx.rect(x, y, w, h);\n }\n}\n\nfunction drawFrame(ctx, rect, model) {\n var bgColor = model.backgroundColor;\n var borderColor = model.borderColor;\n var borderWidth = model.borderWidth;\n\n if (!bgColor && (!borderColor || !borderWidth)) {\n return;\n }\n\n ctx.beginPath();\n\n drawRoundedRect(\n ctx,\n rasterize(rect.x) + borderWidth / 2,\n rasterize(rect.y) + borderWidth / 2,\n rasterize(rect.w) - borderWidth,\n rasterize(rect.h) - borderWidth,\n model.borderRadius);\n\n ctx.closePath();\n\n if (bgColor) {\n ctx.fillStyle = bgColor;\n ctx.fill();\n }\n\n if (borderColor && borderWidth) {\n ctx.strokeStyle = borderColor;\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = 'miter';\n ctx.stroke();\n }\n}\n\nfunction textGeometry(rect, align, font) {\n var h = font.lineHeight;\n var w = rect.w;\n var x = rect.x;\n var y = rect.y + h / 2;\n\n if (align === 'center') {\n x += w / 2;\n } else if (align === 'end' || align === 'right') {\n x += w;\n }\n\n return {\n h: h,\n w: w,\n x: x,\n y: y\n };\n}\n\nfunction drawTextLine(ctx, text, cfg) {\n var shadow = ctx.shadowBlur;\n var stroked = cfg.stroked;\n var x = rasterize(cfg.x);\n var y = rasterize(cfg.y);\n var w = rasterize(cfg.w);\n\n if (stroked) {\n ctx.strokeText(text, x, y, w);\n }\n\n if (cfg.filled) {\n if (shadow && stroked) {\n // Prevent drawing shadow on both the text stroke and fill, so\n // if the text is stroked, remove the shadow for the text fill.\n ctx.shadowBlur = 0;\n }\n\n ctx.fillText(text, x, y, w);\n\n if (shadow && stroked) {\n ctx.shadowBlur = shadow;\n }\n }\n}\n\nfunction drawText(ctx, lines, rect, model) {\n var align = model.textAlign;\n var color = model.color;\n var filled = !!color;\n var font = model.font;\n var ilen = lines.length;\n var strokeColor = model.textStrokeColor;\n var strokeWidth = model.textStrokeWidth;\n var stroked = strokeColor && strokeWidth;\n var i;\n\n if (!ilen || (!filled && !stroked)) {\n return;\n }\n\n // Adjust coordinates based on text alignment and line height\n rect = textGeometry(rect, align, font);\n\n ctx.font = font.string;\n ctx.textAlign = align;\n ctx.textBaseline = 'middle';\n ctx.shadowBlur = model.textShadowBlur;\n ctx.shadowColor = model.textShadowColor;\n\n if (filled) {\n ctx.fillStyle = color;\n }\n if (stroked) {\n ctx.lineJoin = 'round';\n ctx.lineWidth = strokeWidth;\n ctx.strokeStyle = strokeColor;\n }\n\n for (i = 0, ilen = lines.length; i < ilen; ++i) {\n drawTextLine(ctx, lines[i], {\n stroked: stroked,\n filled: filled,\n w: rect.w,\n x: rect.x,\n y: rect.y + rect.h * i\n });\n }\n}\n\nvar Label = function(config, ctx, el, index) {\n var me = this;\n\n me._config = config;\n me._index = index;\n me._model = null;\n me._rects = null;\n me._ctx = ctx;\n me._el = el;\n};\n\nmerge(Label.prototype, {\n /**\n * @private\n */\n _modelize: function(display, lines, config, context) {\n var me = this;\n var index = me._index;\n var font = toFont(resolve([config.font, {}], context, index));\n var color = resolve([config.color, defaults$1.color], context, index);\n\n return {\n align: resolve([config.align, 'center'], context, index),\n anchor: resolve([config.anchor, 'center'], context, index),\n area: context.chart.chartArea,\n backgroundColor: resolve([config.backgroundColor, null], context, index),\n borderColor: resolve([config.borderColor, null], context, index),\n borderRadius: resolve([config.borderRadius, 0], context, index),\n borderWidth: resolve([config.borderWidth, 0], context, index),\n clamp: resolve([config.clamp, false], context, index),\n clip: resolve([config.clip, false], context, index),\n color: color,\n display: display,\n font: font,\n lines: lines,\n offset: resolve([config.offset, 0], context, index),\n opacity: resolve([config.opacity, 1], context, index),\n origin: getScaleOrigin(me._el, context),\n padding: toPadding(resolve([config.padding, 0], context, index)),\n positioner: getPositioner(me._el),\n rotation: resolve([config.rotation, 0], context, index) * (Math.PI / 180),\n size: utils.textSize(me._ctx, lines, font),\n textAlign: resolve([config.textAlign, 'start'], context, index),\n textShadowBlur: resolve([config.textShadowBlur, 0], context, index),\n textShadowColor: resolve([config.textShadowColor, color], context, index),\n textStrokeColor: resolve([config.textStrokeColor, color], context, index),\n textStrokeWidth: resolve([config.textStrokeWidth, 0], context, index)\n };\n },\n\n update: function(context) {\n var me = this;\n var model = null;\n var rects = null;\n var index = me._index;\n var config = me._config;\n var value, label, lines;\n\n // We first resolve the display option (separately) to avoid computing\n // other options in case the label is hidden (i.e. display: false).\n var display = resolve([config.display, true], context, index);\n\n if (display) {\n value = context.dataset.data[index];\n label = valueOrDefault(callback(config.formatter, [value, context]), value);\n lines = isNullOrUndef(label) ? [] : utils.toTextLines(label);\n\n if (lines.length) {\n model = me._modelize(display, lines, config, context);\n rects = boundingRects(model);\n }\n }\n\n me._model = model;\n me._rects = rects;\n },\n\n geometry: function() {\n return this._rects ? this._rects.frame : {};\n },\n\n rotation: function() {\n return this._model ? this._model.rotation : 0;\n },\n\n visible: function() {\n return this._model && this._model.opacity;\n },\n\n model: function() {\n return this._model;\n },\n\n draw: function(chart, center) {\n var me = this;\n var ctx = chart.ctx;\n var model = me._model;\n var rects = me._rects;\n var area;\n\n if (!this.visible()) {\n return;\n }\n\n ctx.save();\n\n if (model.clip) {\n area = model.area;\n ctx.beginPath();\n ctx.rect(\n area.left,\n area.top,\n area.right - area.left,\n area.bottom - area.top);\n ctx.clip();\n }\n\n ctx.globalAlpha = utils.bound(0, model.opacity, 1);\n ctx.translate(rasterize(center.x), rasterize(center.y));\n ctx.rotate(model.rotation);\n\n drawFrame(ctx, rects.frame, model);\n drawText(ctx, model.lines, rects.text, model);\n\n ctx.restore();\n }\n});\n\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; // eslint-disable-line es/no-number-minsafeinteger\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; // eslint-disable-line es/no-number-maxsafeinteger\n\nfunction rotated(point, center, angle) {\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n var cx = center.x;\n var cy = center.y;\n\n return {\n x: cx + cos * (point.x - cx) - sin * (point.y - cy),\n y: cy + sin * (point.x - cx) + cos * (point.y - cy)\n };\n}\n\nfunction projected(points, axis) {\n var min = MAX_INTEGER;\n var max = MIN_INTEGER;\n var origin = axis.origin;\n var i, pt, vx, vy, dp;\n\n for (i = 0; i < points.length; ++i) {\n pt = points[i];\n vx = pt.x - origin.x;\n vy = pt.y - origin.y;\n dp = axis.vx * vx + axis.vy * vy;\n min = Math.min(min, dp);\n max = Math.max(max, dp);\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nfunction toAxis(p0, p1) {\n var vx = p1.x - p0.x;\n var vy = p1.y - p0.y;\n var ln = Math.sqrt(vx * vx + vy * vy);\n\n return {\n vx: (p1.x - p0.x) / ln,\n vy: (p1.y - p0.y) / ln,\n origin: p0,\n ln: ln\n };\n}\n\nvar HitBox = function() {\n this._rotation = 0;\n this._rect = {\n x: 0,\n y: 0,\n w: 0,\n h: 0\n };\n};\n\nmerge(HitBox.prototype, {\n center: function() {\n var r = this._rect;\n return {\n x: r.x + r.w / 2,\n y: r.y + r.h / 2\n };\n },\n\n update: function(center, rect, rotation) {\n this._rotation = rotation;\n this._rect = {\n x: rect.x + center.x,\n y: rect.y + center.y,\n w: rect.w,\n h: rect.h\n };\n },\n\n contains: function(point) {\n var me = this;\n var margin = 1;\n var rect = me._rect;\n\n point = rotated(point, me.center(), -me._rotation);\n\n return !(point.x < rect.x - margin\n || point.y < rect.y - margin\n || point.x > rect.x + rect.w + margin * 2\n || point.y > rect.y + rect.h + margin * 2);\n },\n\n // Separating Axis Theorem\n // https://gamedevelopment.tutsplus.com/tutorials/collision-detection-using-the-separating-axis-theorem--gamedev-169\n intersects: function(other) {\n var r0 = this._points();\n var r1 = other._points();\n var axes = [\n toAxis(r0[0], r0[1]),\n toAxis(r0[0], r0[3])\n ];\n var i, pr0, pr1;\n\n if (this._rotation !== other._rotation) {\n // Only separate with r1 axis if the rotation is different,\n // else it's enough to separate r0 and r1 with r0 axis only!\n axes.push(\n toAxis(r1[0], r1[1]),\n toAxis(r1[0], r1[3])\n );\n }\n\n for (i = 0; i < axes.length; ++i) {\n pr0 = projected(r0, axes[i]);\n pr1 = projected(r1, axes[i]);\n\n if (pr0.max < pr1.min || pr1.max < pr0.min) {\n return false;\n }\n }\n\n return true;\n },\n\n /**\n * @private\n */\n _points: function() {\n var me = this;\n var rect = me._rect;\n var angle = me._rotation;\n var center = me.center();\n\n return [\n rotated({x: rect.x, y: rect.y}, center, angle),\n rotated({x: rect.x + rect.w, y: rect.y}, center, angle),\n rotated({x: rect.x + rect.w, y: rect.y + rect.h}, center, angle),\n rotated({x: rect.x, y: rect.y + rect.h}, center, angle)\n ];\n }\n});\n\nfunction coordinates(el, model, geometry) {\n var point = model.positioner(el, model);\n var vx = point.vx;\n var vy = point.vy;\n\n if (!vx && !vy) {\n // if aligned center, we don't want to offset the center point\n return {x: point.x, y: point.y};\n }\n\n var w = geometry.w;\n var h = geometry.h;\n\n // take in account the label rotation\n var rotation = model.rotation;\n var dx = Math.abs(w / 2 * Math.cos(rotation)) + Math.abs(h / 2 * Math.sin(rotation));\n var dy = Math.abs(w / 2 * Math.sin(rotation)) + Math.abs(h / 2 * Math.cos(rotation));\n\n // scale the unit vector (vx, vy) to get at least dx or dy equal to\n // w or h respectively (else we would calculate the distance to the\n // ellipse inscribed in the bounding rect)\n var vs = 1 / Math.max(Math.abs(vx), Math.abs(vy));\n dx *= vx * vs;\n dy *= vy * vs;\n\n // finally, include the explicit offset\n dx += model.offset * vx;\n dy += model.offset * vy;\n\n return {\n x: point.x + dx,\n y: point.y + dy\n };\n}\n\nfunction collide(labels, collider) {\n var i, j, s0, s1;\n\n // IMPORTANT Iterate in the reverse order since items at the end of the\n // list have an higher weight/priority and thus should be less impacted\n // by the overlapping strategy.\n\n for (i = labels.length - 1; i >= 0; --i) {\n s0 = labels[i].$layout;\n\n for (j = i - 1; j >= 0 && s0._visible; --j) {\n s1 = labels[j].$layout;\n\n if (s1._visible && s0._box.intersects(s1._box)) {\n collider(s0, s1);\n }\n }\n }\n\n return labels;\n}\n\nfunction compute(labels) {\n var i, ilen, label, state, geometry, center, proxy;\n\n // Initialize labels for overlap detection\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n label = labels[i];\n state = label.$layout;\n\n if (state._visible) {\n // Chart.js 3 removed el._model in favor of getProps(), making harder to\n // abstract reading values in positioners. Also, using string arrays to\n // read values (i.e. var {a,b,c} = el.getProps([\"a\",\"b\",\"c\"])) would make\n // positioners inefficient in the normal case (i.e. not the final values)\n // and the code a bit ugly, so let's use a Proxy instead.\n proxy = new Proxy(label._el, {get: (el, p) => el.getProps([p], true)[p]});\n\n geometry = label.geometry();\n center = coordinates(proxy, label.model(), geometry);\n state._box.update(center, geometry, label.rotation());\n }\n }\n\n // Auto hide overlapping labels\n return collide(labels, function(s0, s1) {\n var h0 = s0._hidable;\n var h1 = s1._hidable;\n\n if ((h0 && h1) || h1) {\n s1._visible = false;\n } else if (h0) {\n s0._visible = false;\n }\n });\n}\n\nvar layout = {\n prepare: function(datasets) {\n var labels = [];\n var i, j, ilen, jlen, label;\n\n for (i = 0, ilen = datasets.length; i < ilen; ++i) {\n for (j = 0, jlen = datasets[i].length; j < jlen; ++j) {\n label = datasets[i][j];\n labels.push(label);\n label.$layout = {\n _box: new HitBox(),\n _hidable: false,\n _visible: true,\n _set: i,\n _idx: j\n };\n }\n }\n\n // TODO New `z` option: labels with a higher z-index are drawn\n // of top of the ones with a lower index. Lowest z-index labels\n // are also discarded first when hiding overlapping labels.\n labels.sort(function(a, b) {\n var sa = a.$layout;\n var sb = b.$layout;\n\n return sa._idx === sb._idx\n ? sb._set - sa._set\n : sb._idx - sa._idx;\n });\n\n this.update(labels);\n\n return labels;\n },\n\n update: function(labels) {\n var dirty = false;\n var i, ilen, label, model, state;\n\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n label = labels[i];\n model = label.model();\n state = label.$layout;\n state._hidable = model && model.display === 'auto';\n state._visible = label.visible();\n dirty |= state._hidable;\n }\n\n if (dirty) {\n compute(labels);\n }\n },\n\n lookup: function(labels, point) {\n var i, state;\n\n // IMPORTANT Iterate in the reverse order since items at the end of\n // the list have an higher z-index, thus should be picked first.\n\n for (i = labels.length - 1; i >= 0; --i) {\n state = labels[i].$layout;\n\n if (state && state._visible && state._box.contains(point)) {\n return labels[i];\n }\n }\n\n return null;\n },\n\n draw: function(chart, labels) {\n var i, ilen, label, state, geometry, center;\n\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n label = labels[i];\n state = label.$layout;\n\n if (state._visible) {\n geometry = label.geometry();\n center = coordinates(label._el, label.model(), geometry);\n state._box.update(center, geometry, label.rotation());\n label.draw(chart, center);\n }\n }\n }\n};\n\nvar formatter = function(value) {\n if (isNullOrUndef(value)) {\n return null;\n }\n\n var label = value;\n var keys, klen, k;\n if (isObject(value)) {\n if (!isNullOrUndef(value.label)) {\n label = value.label;\n } else if (!isNullOrUndef(value.r)) {\n label = value.r;\n } else {\n label = '';\n keys = Object.keys(value);\n for (k = 0, klen = keys.length; k < klen; ++k) {\n label += (k !== 0 ? ', ' : '') + keys[k] + ': ' + value[keys[k]];\n }\n }\n }\n\n return '' + label;\n};\n\n/**\n * IMPORTANT: make sure to also update tests and TypeScript definition\n * files (`/test/specs/defaults.spec.js` and `/types/options.d.ts`)\n */\n\nvar defaults = {\n align: 'center',\n anchor: 'center',\n backgroundColor: null,\n borderColor: null,\n borderRadius: 0,\n borderWidth: 0,\n clamp: false,\n clip: false,\n color: undefined,\n display: true,\n font: {\n family: undefined,\n lineHeight: 1.2,\n size: undefined,\n style: undefined,\n weight: null\n },\n formatter: formatter,\n labels: undefined,\n listeners: {},\n offset: 4,\n opacity: 1,\n padding: {\n top: 4,\n right: 4,\n bottom: 4,\n left: 4\n },\n rotation: 0,\n textAlign: 'start',\n textStrokeColor: undefined,\n textStrokeWidth: 0,\n textShadowBlur: 0,\n textShadowColor: undefined\n};\n\n/**\n * @see https://github.com/chartjs/Chart.js/issues/4176\n */\n\nvar EXPANDO_KEY = '$datalabels';\nvar DEFAULT_KEY = '$default';\n\nfunction configure(dataset, options) {\n var override = dataset.datalabels;\n var listeners = {};\n var configs = [];\n var labels, keys;\n\n if (override === false) {\n return null;\n }\n if (override === true) {\n override = {};\n }\n\n options = merge({}, [options, override]);\n labels = options.labels || {};\n keys = Object.keys(labels);\n delete options.labels;\n\n if (keys.length) {\n keys.forEach(function(key) {\n if (labels[key]) {\n configs.push(merge({}, [\n options,\n labels[key],\n {_key: key}\n ]));\n }\n });\n } else {\n // Default label if no \"named\" label defined.\n configs.push(options);\n }\n\n // listeners: {: {: }}\n listeners = configs.reduce(function(target, config) {\n each(config.listeners || {}, function(fn, event) {\n target[event] = target[event] || {};\n target[event][config._key || DEFAULT_KEY] = fn;\n });\n\n delete config.listeners;\n return target;\n }, {});\n\n return {\n labels: configs,\n listeners: listeners\n };\n}\n\nfunction dispatchEvent(chart, listeners, label) {\n if (!listeners) {\n return;\n }\n\n var context = label.$context;\n var groups = label.$groups;\n var callback$1;\n\n if (!listeners[groups._set]) {\n return;\n }\n\n callback$1 = listeners[groups._set][groups._key];\n if (!callback$1) {\n return;\n }\n\n if (callback(callback$1, [context]) === true) {\n // Users are allowed to tweak the given context by injecting values that can be\n // used in scriptable options to display labels differently based on the current\n // event (e.g. highlight an hovered label). That's why we update the label with\n // the output context and schedule a new chart render by setting it dirty.\n chart[EXPANDO_KEY]._dirty = true;\n label.update(context);\n }\n}\n\nfunction dispatchMoveEvents(chart, listeners, previous, label) {\n var enter, leave;\n\n if (!previous && !label) {\n return;\n }\n\n if (!previous) {\n enter = true;\n } else if (!label) {\n leave = true;\n } else if (previous !== label) {\n leave = enter = true;\n }\n\n if (leave) {\n dispatchEvent(chart, listeners.leave, previous);\n }\n if (enter) {\n dispatchEvent(chart, listeners.enter, label);\n }\n}\n\nfunction handleMoveEvents(chart, event) {\n var expando = chart[EXPANDO_KEY];\n var listeners = expando._listeners;\n var previous, label;\n\n if (!listeners.enter && !listeners.leave) {\n return;\n }\n\n if (event.type === 'mousemove') {\n label = layout.lookup(expando._labels, event);\n } else if (event.type !== 'mouseout') {\n return;\n }\n\n previous = expando._hovered;\n expando._hovered = label;\n dispatchMoveEvents(chart, listeners, previous, label);\n}\n\nfunction handleClickEvents(chart, event) {\n var expando = chart[EXPANDO_KEY];\n var handlers = expando._listeners.click;\n var label = handlers && layout.lookup(expando._labels, event);\n if (label) {\n dispatchEvent(chart, handlers, label);\n }\n}\n\nvar plugin = {\n id: 'datalabels',\n\n defaults: defaults,\n\n beforeInit: function(chart) {\n chart[EXPANDO_KEY] = {\n _actives: []\n };\n },\n\n beforeUpdate: function(chart) {\n var expando = chart[EXPANDO_KEY];\n expando._listened = false;\n expando._listeners = {}; // {: {: {: }}}\n expando._datasets = []; // per dataset labels: [Label[]]\n expando._labels = []; // layouted labels: Label[]\n },\n\n afterDatasetUpdate: function(chart, args, options) {\n var datasetIndex = args.index;\n var expando = chart[EXPANDO_KEY];\n var labels = expando._datasets[datasetIndex] = [];\n var visible = chart.isDatasetVisible(datasetIndex);\n var dataset = chart.data.datasets[datasetIndex];\n var config = configure(dataset, options);\n var elements = args.meta.data || [];\n var ctx = chart.ctx;\n var i, j, ilen, jlen, cfg, key, el, label;\n\n ctx.save();\n\n for (i = 0, ilen = elements.length; i < ilen; ++i) {\n el = elements[i];\n el[EXPANDO_KEY] = [];\n\n if (visible && el && chart.getDataVisibility(i) && !el.skip) {\n for (j = 0, jlen = config.labels.length; j < jlen; ++j) {\n cfg = config.labels[j];\n key = cfg._key;\n\n label = new Label(cfg, ctx, el, i);\n label.$groups = {\n _set: datasetIndex,\n _key: key || DEFAULT_KEY\n };\n label.$context = {\n active: false,\n chart: chart,\n dataIndex: i,\n dataset: dataset,\n datasetIndex: datasetIndex\n };\n\n label.update(label.$context);\n el[EXPANDO_KEY].push(label);\n labels.push(label);\n }\n }\n }\n\n ctx.restore();\n\n // Store listeners at the chart level and per event type to optimize\n // cases where no listeners are registered for a specific event.\n merge(expando._listeners, config.listeners, {\n merger: function(event, target, source) {\n target[event] = target[event] || {};\n target[event][args.index] = source[event];\n expando._listened = true;\n }\n });\n },\n\n afterUpdate: function(chart, options) {\n chart[EXPANDO_KEY]._labels = layout.prepare(\n chart[EXPANDO_KEY]._datasets,\n options);\n },\n\n // Draw labels on top of all dataset elements\n // https://github.com/chartjs/chartjs-plugin-datalabels/issues/29\n // https://github.com/chartjs/chartjs-plugin-datalabels/issues/32\n afterDatasetsDraw: function(chart) {\n layout.draw(chart, chart[EXPANDO_KEY]._labels);\n },\n\n beforeEvent: function(chart, args) {\n // If there is no listener registered for this chart, `listened` will be false,\n // meaning we can immediately ignore the incoming event and avoid useless extra\n // computation for users who don't implement label interactions.\n if (chart[EXPANDO_KEY]._listened) {\n var event = args.event;\n switch (event.type) {\n case 'mousemove':\n case 'mouseout':\n handleMoveEvents(chart, event);\n break;\n case 'click':\n handleClickEvents(chart, event);\n break;\n }\n }\n },\n\n afterEvent: function(chart) {\n var expando = chart[EXPANDO_KEY];\n var previous = expando._actives;\n var actives = expando._actives = chart.getActiveElements();\n var updates = utils.arrayDiff(previous, actives);\n var i, ilen, j, jlen, update, label, labels;\n\n for (i = 0, ilen = updates.length; i < ilen; ++i) {\n update = updates[i];\n if (update[1]) {\n labels = update[0].element[EXPANDO_KEY] || [];\n for (j = 0, jlen = labels.length; j < jlen; ++j) {\n label = labels[j];\n label.$context.active = (update[1] === 1);\n label.update(label.$context);\n }\n }\n }\n\n if (expando._dirty || updates.length) {\n layout.update(expando._labels);\n chart.render();\n }\n\n delete expando._dirty;\n }\n};\n\nexport default plugin;\n","\n /**\n * npm package: chartjs-plugin-doughnutlabel-v3 v1.2.0\n * \n * Chart.js (Version 3) Doughnut Chart plugin to display\n * custom lines of text in the center of the circle.\n * \n * author: Jeff Brower \n * \n * supplies: chartjs-plugin-doughnutlabel.js v1.2.0\n * Released under the MIT license.\n */\n\nimport { Chart, DoughnutController } from 'chart.js';\nimport { valueOrDefault, toLineHeight, isNullOrUndef, resolve } from 'chart.js/helpers';\n\nconst parseText = (text, chart) => typeof text === 'function' ? text(chart) : text;\r\nconst parseFont = (value) => {\r\n const defaults = Chart.defaults;\r\n const size = valueOrDefault(value.size, defaults.font.size);\r\n const font = {\r\n family: valueOrDefault(value.family, defaults.font.family),\r\n // FontSpec types this as a number|string and the toLineHeight function\r\n // returns a number. The first argument 'value.lineHeight' can be a\r\n // number|string and 'size' is a number.\r\n lineHeight: toLineHeight(value.lineHeight, size),\r\n size: size,\r\n style: valueOrDefault(value.style, defaults.font.style),\r\n weight: valueOrDefault(value.weight, null),\r\n string: ''\r\n };\r\n // Add a 'string' property to our font object.\r\n font.string = utils.toFontString(font);\r\n return font;\r\n};\r\nconst toFontString = (font) => {\r\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\r\n return '';\r\n }\r\n return (font.style ? font.style + ' ' : '')\r\n + (font.weight ? font.weight + ' ' : '')\r\n + font.size + 'px '\r\n + font.family;\r\n};\r\nconst textSize = (chart, labels) => {\r\n const { ctx } = chart;\r\n const prev = ctx.font;\r\n let width = 0;\r\n let height = 0;\r\n labels.forEach(label => {\r\n // We allow 'text' to be a string or the return value of a function as a string.\r\n const text = typeof label.text === 'function' ? label.text(chart) : label.text;\r\n ctx.font = label.font ? label.font.string : '';\r\n width = Math.max(ctx.measureText(text).width, width);\r\n height += label.font.lineHeight;\r\n });\r\n ctx.font = prev;\r\n const result = {\r\n height: height,\r\n width: width\r\n };\r\n return result;\r\n};\r\nconst utils = {\r\n parseText,\r\n parseFont,\r\n toFontString,\r\n textSize,\r\n};\n\nconst drawDoughnutLabel = (chart, options) => {\r\n if (chart.chartArea && options) {\r\n const { labels } = options;\r\n if (!labels?.length) {\r\n return;\r\n }\r\n const { ctx, chartArea: { top, right, bottom, left } } = chart;\r\n const innerLabels = [];\r\n labels.forEach(label => {\r\n const text = utils.parseText(label.text, chart);\r\n const font = utils.parseFont(resolve([label.font, options.font, Chart.defaults.font], ctx, 0) || Chart.defaults.font);\r\n const color = resolve([label.color, options.color, Chart.defaults.color], ctx, 0);\r\n const innerLabel = {\r\n text,\r\n font,\r\n color: color ?? '#000',\r\n };\r\n innerLabels.push(innerLabel);\r\n });\r\n let textAreaSize = utils.textSize(chart, innerLabels);\r\n // Calculate the adjustment ratio to fit the text area into the doughnut\r\n // inner circle\r\n const hypotenuse = Math.sqrt(Math.pow(textAreaSize.width, 2) + Math.pow(textAreaSize.height, 2));\r\n const innerDiameter = DoughnutController.prototype.innerRadius * 2;\r\n const fitRatio = innerDiameter / hypotenuse;\r\n // Adjust the font if necessary and recalculate the text area after\r\n // applying the fit ratio\r\n if (fitRatio < 1) {\r\n innerLabels.forEach(innerLabel => {\r\n innerLabel.font.size = Math.floor(innerLabel.font.size * fitRatio);\r\n innerLabel.font.lineHeight = 1.2; // was undefined\r\n innerLabel.font = utils.parseFont(resolve([innerLabel.font, null], ctx, 0) || Chart.defaults.font);\r\n });\r\n textAreaSize = utils.textSize(chart, innerLabels);\r\n }\r\n ctx.textAlign = \"center\";\r\n ctx.textBaseline = \"middle\";\r\n // The center of the inner circle\r\n const centerX = (left + right) / 2;\r\n const centerY = (top + bottom) / 2;\r\n // The top Y coordinate of the text area\r\n const topY = centerY - textAreaSize.height / 2;\r\n let i;\r\n const ilen = innerLabels.length;\r\n let currentHeight = 0;\r\n for (i = 0; i < ilen; ++i) {\r\n ctx.fillStyle = innerLabels[i].color;\r\n ctx.font = innerLabels[i].font.string;\r\n // The Y center of each line\r\n const lineCenterY = topY + innerLabels[i].font.lineHeight / 2 + currentHeight;\r\n currentHeight += innerLabels[i].font.lineHeight;\r\n // We allow 'text' to be a string or the return value of a function as\r\n // a string.\r\n // const text = typeof innerLabels[i].text === 'function' ? innerLabels[i].text(chart) : innerLabels[i].text;\r\n const text = utils.parseText(innerLabels[i].text, chart);\r\n // Draw each line of text\r\n ctx.fillText(text, centerX, lineCenterY);\r\n }\r\n }\r\n};\r\nconst coreFunctions = {\r\n drawDoughnutLabel,\r\n};\n\nvar DoughnutLabel = {\r\n id: 'doughnutLabel',\r\n defaults: {\r\n font: {\r\n family: 'sans-serif',\r\n size: 16,\r\n style: 'normal',\r\n weight: 'normal',\r\n lineHeight: 1.2,\r\n string: '16px sans-serif'\r\n },\r\n },\r\n beforeDraw: (chart, args, options) => drawDoughnutLabel(chart, options),\r\n};\n\nexport { coreFunctions, DoughnutLabel as default };\n","import React, { forwardRef, useRef, useEffect } from 'react';\nimport { Chart as Chart$1, LineController, BarController, RadarController, DoughnutController, PolarAreaController, BubbleController, PieController, ScatterController } from 'chart.js';\n\nconst defaultDatasetIdKey = 'label';\nfunction reforwardRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\nfunction setOptions(chart, nextOptions) {\n chart.options = {\n ...nextOptions\n };\n}\nfunction setLabels(currentData, nextLabels) {\n currentData.labels = nextLabels;\n}\nfunction setDatasets(currentData, nextDatasets, datasetIdKey = defaultDatasetIdKey) {\n const addedDatasets = [];\n currentData.datasets = nextDatasets.map((nextDataset)=>{\n // given the new set, find it's current match\n const currentDataset = currentData.datasets.find((dataset)=>dataset[datasetIdKey] === nextDataset[datasetIdKey]\n );\n // There is no original to update, so simply add new one\n if (!currentDataset || !nextDataset.data || addedDatasets.includes(currentDataset)) {\n return {\n ...nextDataset\n };\n }\n addedDatasets.push(currentDataset);\n Object.assign(currentDataset, nextDataset);\n return currentDataset;\n });\n}\nfunction cloneData(data, datasetIdKey = defaultDatasetIdKey) {\n const nextData = {\n labels: [],\n datasets: []\n };\n setLabels(nextData, data.labels);\n setDatasets(nextData, data.datasets, datasetIdKey);\n return nextData;\n}\n/**\n * Get dataset from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */ function getDatasetAtEvent(chart, event) {\n return chart.getElementsAtEventForMode(event.nativeEvent, 'dataset', {\n intersect: true\n }, false);\n}\n/**\n * Get single dataset element from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */ function getElementAtEvent(chart, event) {\n return chart.getElementsAtEventForMode(event.nativeEvent, 'nearest', {\n intersect: true\n }, false);\n}\n/**\n * Get all dataset elements from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */ function getElementsAtEvent(chart, event) {\n return chart.getElementsAtEventForMode(event.nativeEvent, 'index', {\n intersect: true\n }, false);\n}\n\nfunction ChartComponent({ height =150 , width =300 , redraw =false , datasetIdKey , type , data , options , plugins =[] , fallbackContent , ...props }, ref) {\n const canvasRef = useRef(null);\n const chartRef = useRef();\n const renderChart = ()=>{\n if (!canvasRef.current) return;\n chartRef.current = new Chart$1(canvasRef.current, {\n type,\n data: cloneData(data, datasetIdKey),\n options,\n plugins\n });\n reforwardRef(ref, chartRef.current);\n };\n const destroyChart = ()=>{\n reforwardRef(ref, null);\n if (chartRef.current) {\n chartRef.current.destroy();\n chartRef.current = null;\n }\n };\n useEffect(()=>{\n if (!redraw && chartRef.current && options) {\n setOptions(chartRef.current, options);\n }\n }, [\n redraw,\n options\n ]);\n useEffect(()=>{\n if (!redraw && chartRef.current) {\n setLabels(chartRef.current.config.data, data.labels);\n }\n }, [\n redraw,\n data.labels\n ]);\n useEffect(()=>{\n if (!redraw && chartRef.current && data.datasets) {\n setDatasets(chartRef.current.config.data, data.datasets, datasetIdKey);\n }\n }, [\n redraw,\n data.datasets\n ]);\n useEffect(()=>{\n if (!chartRef.current) return;\n if (redraw) {\n destroyChart();\n setTimeout(renderChart);\n } else {\n chartRef.current.update();\n }\n }, [\n redraw,\n options,\n data.labels,\n data.datasets\n ]);\n useEffect(()=>{\n renderChart();\n return ()=>destroyChart()\n ;\n }, []);\n return(/*#__PURE__*/ React.createElement(\"canvas\", Object.assign({\n ref: canvasRef,\n role: \"img\",\n height: height,\n width: width\n }, props), fallbackContent));\n}\nconst Chart = /*#__PURE__*/ forwardRef(ChartComponent);\n\nfunction createTypedChart(type, registerables) {\n Chart$1.register(registerables);\n return(/*#__PURE__*/ forwardRef((props, ref)=>/*#__PURE__*/ React.createElement(Chart, Object.assign({\n }, props, {\n ref: ref,\n type: type\n }))\n ));\n}\nconst Line = /* #__PURE__ */ createTypedChart('line', LineController);\nconst Bar = /* #__PURE__ */ createTypedChart('bar', BarController);\nconst Radar = /* #__PURE__ */ createTypedChart('radar', RadarController);\nconst Doughnut = /* #__PURE__ */ createTypedChart('doughnut', DoughnutController);\nconst PolarArea = /* #__PURE__ */ createTypedChart('polarArea', PolarAreaController);\nconst Bubble = /* #__PURE__ */ createTypedChart('bubble', BubbleController);\nconst Pie = /* #__PURE__ */ createTypedChart('pie', PieController);\nconst Scatter = /* #__PURE__ */ createTypedChart('scatter', ScatterController);\n\nexport { Bar, Bubble, Chart, Doughnut, Line, Pie, PolarArea, Radar, Scatter, getDatasetAtEvent, getElementAtEvent, getElementsAtEvent };\n//# sourceMappingURL=index.modern.js.map\n","import 'core-js/modules/es.promise.js';\nimport _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';\nimport 'core-js/modules/es.string.match.js';\nimport 'core-js/modules/es.string.replace.js';\nimport 'core-js/modules/es.string.starts-with.js';\nimport 'core-js/modules/es.array.iterator.js';\nimport 'core-js/modules/web.dom-collections.iterator.js';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport 'core-js/modules/es.array.reduce.js';\nimport 'core-js/modules/es.string.ends-with.js';\nimport 'core-js/modules/es.string.split.js';\nimport requestAnimationFrame from 'raf';\nimport 'core-js/modules/es.string.trim.js';\nimport RGBColor from 'rgbcolor';\nimport 'core-js/modules/es.array.index-of.js';\nimport 'core-js/modules/es.string.includes.js';\nimport 'core-js/modules/es.array.reverse.js';\nimport { SVGPathData } from 'svg-pathdata';\nimport 'core-js/modules/es.regexp.to-string.js';\nimport { canvasRGBA } from 'stackblur-canvas';\n\n/**\r\n * Options preset for `OffscreenCanvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @returns Preset object.\r\n */\nfunction offscreen() {\n var {\n DOMParser: DOMParserFallback\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var preset = {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser: DOMParserFallback,\n\n createCanvas(width, height) {\n return new OffscreenCanvas(width, height);\n },\n\n createImage(url) {\n return _asyncToGenerator(function* () {\n var response = yield fetch(url);\n var blob = yield response.blob();\n var img = yield createImageBitmap(blob);\n return img;\n })();\n }\n\n };\n\n if (typeof DOMParser !== 'undefined' || typeof DOMParserFallback === 'undefined') {\n Reflect.deleteProperty(preset, 'DOMParser');\n }\n\n return preset;\n}\n\n/**\r\n * Options preset for `node-canvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @param config.canvas - `node-canvas` exports.\r\n * @param config.fetch - WHATWG-compatible `fetch` function.\r\n * @returns Preset object.\r\n */\nfunction node(_ref) {\n var {\n DOMParser,\n canvas,\n fetch\n } = _ref;\n return {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser,\n fetch,\n createCanvas: canvas.createCanvas,\n createImage: canvas.loadImage\n };\n}\n\nvar index = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\toffscreen: offscreen,\n\tnode: node\n});\n\n/**\r\n * HTML-safe compress white-spaces.\r\n * @param str - String to compress.\r\n * @returns String.\r\n */\nfunction compressSpaces(str) {\n return str.replace(/(?!\\u3000)\\s+/gm, ' ');\n}\n/**\r\n * HTML-safe left trim.\r\n * @param str - String to trim.\r\n * @returns String.\r\n */\n\nfunction trimLeft(str) {\n return str.replace(/^[\\n \\t]+/, '');\n}\n/**\r\n * HTML-safe right trim.\r\n * @param str - String to trim.\r\n * @returns String.\r\n */\n\nfunction trimRight(str) {\n return str.replace(/[\\n \\t]+$/, '');\n}\n/**\r\n * String to numbers array.\r\n * @param str - Numbers string.\r\n * @returns Numbers array.\r\n */\n\nfunction toNumbers(str) {\n var matches = (str || '').match(/-?(\\d+(?:\\.\\d*(?:[eE][+-]?\\d+)?)?|\\.\\d+)(?=\\D|$)/gm) || [];\n return matches.map(parseFloat);\n} // Microsoft Edge fix\n\nvar allUppercase = /^[A-Z-]+$/;\n/**\r\n * Normalize attribute name.\r\n * @param name - Attribute name.\r\n * @returns Normalized attribute name.\r\n */\n\nfunction normalizeAttributeName(name) {\n if (allUppercase.test(name)) {\n return name.toLowerCase();\n }\n\n return name;\n}\n/**\r\n * Parse external URL.\r\n * @param url - CSS url string.\r\n * @returns Parsed URL.\r\n */\n\nfunction parseExternalUrl(url) {\n // single quotes [2]\n // v double quotes [3]\n // v v no quotes [4]\n // v v v\n var urlMatch = /url\\(('([^']+)'|\"([^\"]+)\"|([^'\")]+))\\)/.exec(url) || [];\n return urlMatch[2] || urlMatch[3] || urlMatch[4];\n}\n/**\r\n * Transform floats to integers in rgb colors.\r\n * @param color - Color to normalize.\r\n * @returns Normalized color.\r\n */\n\nfunction normalizeColor(color) {\n if (!color.startsWith('rgb')) {\n return color;\n }\n\n var rgbParts = 3;\n var normalizedColor = color.replace(/\\d+(\\.\\d+)?/g, (num, isFloat) => rgbParts-- && isFloat ? String(Math.round(parseFloat(num))) : num);\n return normalizedColor;\n}\n\n// slightly modified version of https://github.com/keeganstreet/specificity/blob/master/specificity.js\nvar attributeRegex = /(\\[[^\\]]+\\])/g;\nvar idRegex = /(#[^\\s+>~.[:]+)/g;\nvar classRegex = /(\\.[^\\s+>~.[:]+)/g;\nvar pseudoElementRegex = /(::[^\\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi;\nvar pseudoClassWithBracketsRegex = /(:[\\w-]+\\([^)]*\\))/gi;\nvar pseudoClassRegex = /(:[^\\s+>~.[:]+)/g;\nvar elementRegex = /([^\\s+>~.[:]+)/g;\n\nfunction findSelectorMatch(selector, regex) {\n var matches = regex.exec(selector);\n\n if (!matches) {\n return [selector, 0];\n }\n\n return [selector.replace(regex, ' '), matches.length];\n}\n/**\r\n * Measure selector specificity.\r\n * @param selector - Selector to measure.\r\n * @returns Specificity.\r\n */\n\n\nfunction getSelectorSpecificity(selector) {\n var specificity = [0, 0, 0];\n var currentSelector = selector.replace(/:not\\(([^)]*)\\)/g, ' $1 ').replace(/{[\\s\\S]*/gm, ' ');\n var delta = 0;\n [currentSelector, delta] = findSelectorMatch(currentSelector, attributeRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, idRegex);\n specificity[0] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, classRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoElementRegex);\n specificity[2] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassRegex);\n specificity[1] += delta;\n currentSelector = currentSelector.replace(/[*\\s+>~]/g, ' ').replace(/[#.]/g, ' ');\n [currentSelector, delta] = findSelectorMatch(currentSelector, elementRegex); // lgtm [js/useless-assignment-to-local]\n\n specificity[2] += delta;\n return specificity.join('');\n}\n\nvar PSEUDO_ZERO = .00000001;\n/**\r\n * Vector magnitude.\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorMagnitude(v) {\n return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));\n}\n/**\r\n * Ratio between two vectors.\r\n * @param u\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorsRatio(u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vectorMagnitude(u) * vectorMagnitude(v));\n}\n/**\r\n * Angle between two vectors.\r\n * @param u\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorsAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vectorsRatio(u, v));\n}\nfunction CB1(t) {\n return t * t * t;\n}\nfunction CB2(t) {\n return 3 * t * t * (1 - t);\n}\nfunction CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n}\nfunction CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n}\nfunction QB1(t) {\n return t * t;\n}\nfunction QB2(t) {\n return 2 * t * (1 - t);\n}\nfunction QB3(t) {\n return (1 - t) * (1 - t);\n}\n\nclass Property {\n constructor(document, name, value) {\n this.document = document;\n this.name = name;\n this.value = value;\n this.isNormalizedColor = false;\n }\n\n static empty(document) {\n return new Property(document, 'EMPTY', '');\n }\n\n split() {\n var separator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ' ';\n var {\n document,\n name\n } = this;\n return compressSpaces(this.getString()).trim().split(separator).map(value => new Property(document, name, value));\n }\n\n hasValue(zeroIsValue) {\n var {\n value\n } = this;\n return value !== null && value !== '' && (zeroIsValue || value !== 0) && typeof value !== 'undefined';\n }\n\n isString(regexp) {\n var {\n value\n } = this;\n var result = typeof value === 'string';\n\n if (!result || !regexp) {\n return result;\n }\n\n return regexp.test(value);\n }\n\n isUrlDefinition() {\n return this.isString(/^url\\(/);\n }\n\n isPixels() {\n if (!this.hasValue()) {\n return false;\n }\n\n var asString = this.getString();\n\n switch (true) {\n case asString.endsWith('px'):\n case /^[0-9]+$/.test(asString):\n return true;\n\n default:\n return false;\n }\n }\n\n setValue(value) {\n this.value = value;\n return this;\n }\n\n getValue(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return this.value;\n }\n\n return def;\n }\n\n getNumber(def) {\n if (!this.hasValue()) {\n if (typeof def === 'undefined') {\n return 0;\n }\n\n return parseFloat(def);\n }\n\n var {\n value\n } = this;\n var n = parseFloat(value);\n\n if (this.isString(/%$/)) {\n n /= 100.0;\n }\n\n return n;\n }\n\n getString(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return typeof this.value === 'undefined' ? '' : String(this.value);\n }\n\n return String(def);\n }\n\n getColor(def) {\n var color = this.getString(def);\n\n if (this.isNormalizedColor) {\n return color;\n }\n\n this.isNormalizedColor = true;\n color = normalizeColor(color);\n this.value = color;\n return color;\n }\n\n getDpi() {\n return 96.0; // TODO: compute?\n }\n\n getRem() {\n return this.document.rootEmSize;\n }\n\n getEm() {\n return this.document.emSize;\n }\n\n getUnits() {\n return this.getString().replace(/[0-9.-]/g, '');\n }\n\n getPixels(axisOrIsFontSize) {\n var processPercent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!this.hasValue()) {\n return 0;\n }\n\n var [axis, isFontSize] = typeof axisOrIsFontSize === 'boolean' ? [undefined, axisOrIsFontSize] : [axisOrIsFontSize];\n var {\n viewPort\n } = this.document.screen;\n\n switch (true) {\n case this.isString(/vmin$/):\n return this.getNumber() / 100.0 * Math.min(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n case this.isString(/vmax$/):\n return this.getNumber() / 100.0 * Math.max(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n case this.isString(/vw$/):\n return this.getNumber() / 100.0 * viewPort.computeSize('x');\n\n case this.isString(/vh$/):\n return this.getNumber() / 100.0 * viewPort.computeSize('y');\n\n case this.isString(/rem$/):\n return this.getNumber() * this.getRem();\n\n case this.isString(/em$/):\n return this.getNumber() * this.getEm();\n\n case this.isString(/ex$/):\n return this.getNumber() * this.getEm() / 2.0;\n\n case this.isString(/px$/):\n return this.getNumber();\n\n case this.isString(/pt$/):\n return this.getNumber() * this.getDpi() * (1.0 / 72.0);\n\n case this.isString(/pc$/):\n return this.getNumber() * 15;\n\n case this.isString(/cm$/):\n return this.getNumber() * this.getDpi() / 2.54;\n\n case this.isString(/mm$/):\n return this.getNumber() * this.getDpi() / 25.4;\n\n case this.isString(/in$/):\n return this.getNumber() * this.getDpi();\n\n case this.isString(/%$/) && isFontSize:\n return this.getNumber() * this.getEm();\n\n case this.isString(/%$/):\n return this.getNumber() * viewPort.computeSize(axis);\n\n default:\n {\n var n = this.getNumber();\n\n if (processPercent && n < 1.0) {\n return n * viewPort.computeSize(axis);\n }\n\n return n;\n }\n }\n }\n\n getMilliseconds() {\n if (!this.hasValue()) {\n return 0;\n }\n\n if (this.isString(/ms$/)) {\n return this.getNumber();\n }\n\n return this.getNumber() * 1000;\n }\n\n getRadians() {\n if (!this.hasValue()) {\n return 0;\n }\n\n switch (true) {\n case this.isString(/deg$/):\n return this.getNumber() * (Math.PI / 180.0);\n\n case this.isString(/grad$/):\n return this.getNumber() * (Math.PI / 200.0);\n\n case this.isString(/rad$/):\n return this.getNumber();\n\n default:\n return this.getNumber() * (Math.PI / 180.0);\n }\n }\n\n getDefinition() {\n var asString = this.getString();\n var name = /#([^)'\"]+)/.exec(asString);\n\n if (name) {\n name = name[1];\n }\n\n if (!name) {\n name = asString;\n }\n\n return this.document.definitions[name];\n }\n\n getFillStyleDefinition(element, opacity) {\n var def = this.getDefinition();\n\n if (!def) {\n return null;\n } // gradient\n\n\n if (typeof def.createGradient === 'function') {\n return def.createGradient(this.document.ctx, element, opacity);\n } // pattern\n\n\n if (typeof def.createPattern === 'function') {\n if (def.getHrefAttribute().hasValue()) {\n var patternTransform = def.getAttribute('patternTransform');\n def = def.getHrefAttribute().getDefinition();\n\n if (patternTransform.hasValue()) {\n def.getAttribute('patternTransform', true).setValue(patternTransform.value);\n }\n }\n\n return def.createPattern(this.document.ctx, element, opacity);\n }\n\n return null;\n }\n\n getTextBaseline() {\n if (!this.hasValue()) {\n return null;\n }\n\n return Property.textBaselineMapping[this.getString()];\n }\n\n addOpacity(opacity) {\n var value = this.getColor();\n var len = value.length;\n var commas = 0; // Simulate old RGBColor version, which can't parse rgba.\n\n for (var i = 0; i < len; i++) {\n if (value[i] === ',') {\n commas++;\n }\n\n if (commas === 3) {\n break;\n }\n }\n\n if (opacity.hasValue() && this.isString() && commas !== 3) {\n var color = new RGBColor(value);\n\n if (color.ok) {\n color.alpha = opacity.getNumber();\n value = color.toRGBA();\n }\n }\n\n return new Property(this.document, this.name, value);\n }\n\n}\nProperty.textBaselineMapping = {\n 'baseline': 'alphabetic',\n 'before-edge': 'top',\n 'text-before-edge': 'top',\n 'middle': 'middle',\n 'central': 'middle',\n 'after-edge': 'bottom',\n 'text-after-edge': 'bottom',\n 'ideographic': 'ideographic',\n 'alphabetic': 'alphabetic',\n 'hanging': 'hanging',\n 'mathematical': 'alphabetic'\n};\n\nclass ViewPort {\n constructor() {\n this.viewPorts = [];\n }\n\n clear() {\n this.viewPorts = [];\n }\n\n setCurrent(width, height) {\n this.viewPorts.push({\n width,\n height\n });\n }\n\n removeCurrent() {\n this.viewPorts.pop();\n }\n\n getCurrent() {\n var {\n viewPorts\n } = this;\n return viewPorts[viewPorts.length - 1];\n }\n\n get width() {\n return this.getCurrent().width;\n }\n\n get height() {\n return this.getCurrent().height;\n }\n\n computeSize(d) {\n if (typeof d === 'number') {\n return d;\n }\n\n if (d === 'x') {\n return this.width;\n }\n\n if (d === 'y') {\n return this.height;\n }\n\n return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2)) / Math.sqrt(2);\n }\n\n}\n\nclass Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n\n static parse(point) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var [x = defaultValue, y = defaultValue] = toNumbers(point);\n return new Point(x, y);\n }\n\n static parseScale(scale) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var [x = defaultValue, y = x] = toNumbers(scale);\n return new Point(x, y);\n }\n\n static parsePath(path) {\n var points = toNumbers(path);\n var len = points.length;\n var pathPoints = [];\n\n for (var i = 0; i < len; i += 2) {\n pathPoints.push(new Point(points[i], points[i + 1]));\n }\n\n return pathPoints;\n }\n\n angleTo(point) {\n return Math.atan2(point.y - this.y, point.x - this.x);\n }\n\n applyTransform(transform) {\n var {\n x,\n y\n } = this;\n var xp = x * transform[0] + y * transform[2] + transform[4];\n var yp = x * transform[1] + y * transform[3] + transform[5];\n this.x = xp;\n this.y = yp;\n }\n\n}\n\nclass Mouse {\n constructor(screen) {\n this.screen = screen;\n this.working = false;\n this.events = [];\n this.eventElements = []; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n this.onClick = this.onClick.bind(this); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n this.onMouseMove = this.onMouseMove.bind(this);\n }\n\n isWorking() {\n return this.working;\n }\n\n start() {\n if (this.working) {\n return;\n }\n\n var {\n screen,\n onClick,\n onMouseMove\n } = this;\n var canvas = screen.ctx.canvas;\n canvas.onclick = onClick;\n canvas.onmousemove = onMouseMove;\n this.working = true;\n }\n\n stop() {\n if (!this.working) {\n return;\n }\n\n var canvas = this.screen.ctx.canvas;\n this.working = false;\n canvas.onclick = null;\n canvas.onmousemove = null;\n }\n\n hasEvents() {\n return this.working && this.events.length > 0;\n }\n\n runEvents() {\n if (!this.working) {\n return;\n }\n\n var {\n screen: document,\n events,\n eventElements\n } = this;\n var {\n style\n } = document.ctx.canvas;\n\n if (style) {\n style.cursor = '';\n }\n\n events.forEach((_ref, i) => {\n var {\n run\n } = _ref;\n var element = eventElements[i];\n\n while (element) {\n run(element);\n element = element.parent;\n }\n }); // done running, clear\n\n this.events = [];\n this.eventElements = [];\n }\n\n checkPath(element, ctx) {\n if (!this.working || !ctx) {\n return;\n }\n\n var {\n events,\n eventElements\n } = this;\n events.forEach((_ref2, i) => {\n var {\n x,\n y\n } = _ref2;\n\n if (!eventElements[i] && ctx.isPointInPath && ctx.isPointInPath(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n\n checkBoundingBox(element, boundingBox) {\n if (!this.working || !boundingBox) {\n return;\n }\n\n var {\n events,\n eventElements\n } = this;\n events.forEach((_ref3, i) => {\n var {\n x,\n y\n } = _ref3;\n\n if (!eventElements[i] && boundingBox.isPointInBox(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n\n mapXY(x, y) {\n var {\n window,\n ctx\n } = this.screen;\n var point = new Point(x, y);\n var element = ctx.canvas;\n\n while (element) {\n point.x -= element.offsetLeft;\n point.y -= element.offsetTop;\n element = element.offsetParent;\n }\n\n if (window.scrollX) {\n point.x += window.scrollX;\n }\n\n if (window.scrollY) {\n point.y += window.scrollY;\n }\n\n return point;\n }\n\n onClick(event) {\n var {\n x,\n y\n } = this.mapXY(event.clientX, event.clientY);\n this.events.push({\n type: 'onclick',\n x,\n y,\n\n run(eventTarget) {\n if (eventTarget.onClick) {\n eventTarget.onClick();\n }\n }\n\n });\n }\n\n onMouseMove(event) {\n var {\n x,\n y\n } = this.mapXY(event.clientX, event.clientY);\n this.events.push({\n type: 'onmousemove',\n x,\n y,\n\n run(eventTarget) {\n if (eventTarget.onMouseMove) {\n eventTarget.onMouseMove();\n }\n }\n\n });\n }\n\n}\n\nvar defaultWindow = typeof window !== 'undefined' ? window : null;\nvar defaultFetch$1 = typeof fetch !== 'undefined' ? fetch.bind(undefined) // `fetch` depends on context: `someObject.fetch(...)` will throw error.\n: null;\nclass Screen {\n constructor(ctx) {\n var {\n fetch = defaultFetch$1,\n window = defaultWindow\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.ctx = ctx;\n this.FRAMERATE = 30;\n this.MAX_VIRTUAL_PIXELS = 30000;\n this.CLIENT_WIDTH = 800;\n this.CLIENT_HEIGHT = 600;\n this.viewPort = new ViewPort();\n this.mouse = new Mouse(this);\n this.animations = [];\n this.waits = [];\n this.frameDuration = 0;\n this.isReadyLock = false;\n this.isFirstRender = true;\n this.intervalId = null;\n this.window = window;\n this.fetch = fetch;\n }\n\n wait(checker) {\n this.waits.push(checker);\n }\n\n ready() {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n if (!this.readyPromise) {\n return Promise.resolve();\n }\n\n return this.readyPromise;\n }\n\n isReady() {\n if (this.isReadyLock) {\n return true;\n }\n\n var isReadyLock = this.waits.every(_ => _());\n\n if (isReadyLock) {\n this.waits = [];\n\n if (this.resolveReady) {\n this.resolveReady();\n }\n }\n\n this.isReadyLock = isReadyLock;\n return isReadyLock;\n }\n\n setDefaults(ctx) {\n // initial values and defaults\n ctx.strokeStyle = 'rgba(0,0,0,0)';\n ctx.lineCap = 'butt';\n ctx.lineJoin = 'miter';\n ctx.miterLimit = 4;\n }\n\n setViewBox(_ref) {\n var {\n document,\n ctx,\n aspectRatio,\n width,\n desiredWidth,\n height,\n desiredHeight,\n minX = 0,\n minY = 0,\n refX,\n refY,\n clip = false,\n clipX = 0,\n clipY = 0\n } = _ref;\n // aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute\n var cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\\s/, ''); // ignore defer\n\n var [aspectRatioAlign, aspectRatioMeetOrSlice] = cleanAspectRatio.split(' ');\n var align = aspectRatioAlign || 'xMidYMid';\n var meetOrSlice = aspectRatioMeetOrSlice || 'meet'; // calculate scale\n\n var scaleX = width / desiredWidth;\n var scaleY = height / desiredHeight;\n var scaleMin = Math.min(scaleX, scaleY);\n var scaleMax = Math.max(scaleX, scaleY);\n var finalDesiredWidth = desiredWidth;\n var finalDesiredHeight = desiredHeight;\n\n if (meetOrSlice === 'meet') {\n finalDesiredWidth *= scaleMin;\n finalDesiredHeight *= scaleMin;\n }\n\n if (meetOrSlice === 'slice') {\n finalDesiredWidth *= scaleMax;\n finalDesiredHeight *= scaleMax;\n }\n\n var refXProp = new Property(document, 'refX', refX);\n var refYProp = new Property(document, 'refY', refY);\n var hasRefs = refXProp.hasValue() && refYProp.hasValue();\n\n if (hasRefs) {\n ctx.translate(-scaleMin * refXProp.getPixels('x'), -scaleMin * refYProp.getPixels('y'));\n }\n\n if (clip) {\n var scaledClipX = scaleMin * clipX;\n var scaledClipY = scaleMin * clipY;\n ctx.beginPath();\n ctx.moveTo(scaledClipX, scaledClipY);\n ctx.lineTo(width, scaledClipY);\n ctx.lineTo(width, height);\n ctx.lineTo(scaledClipX, height);\n ctx.closePath();\n ctx.clip();\n }\n\n if (!hasRefs) {\n var isMeetMinY = meetOrSlice === 'meet' && scaleMin === scaleY;\n var isSliceMaxY = meetOrSlice === 'slice' && scaleMax === scaleY;\n var isMeetMinX = meetOrSlice === 'meet' && scaleMin === scaleX;\n var isSliceMaxX = meetOrSlice === 'slice' && scaleMax === scaleX;\n\n if (align.startsWith('xMid') && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width / 2.0 - finalDesiredWidth / 2.0, 0);\n }\n\n if (align.endsWith('YMid') && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height / 2.0 - finalDesiredHeight / 2.0);\n }\n\n if (align.startsWith('xMax') && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width - finalDesiredWidth, 0);\n }\n\n if (align.endsWith('YMax') && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height - finalDesiredHeight);\n }\n } // scale\n\n\n switch (true) {\n case align === 'none':\n ctx.scale(scaleX, scaleY);\n break;\n\n case meetOrSlice === 'meet':\n ctx.scale(scaleMin, scaleMin);\n break;\n\n case meetOrSlice === 'slice':\n ctx.scale(scaleMax, scaleMax);\n break;\n } // translate\n\n\n ctx.translate(-minX, -minY);\n }\n\n start(element) {\n var {\n enableRedraw = false,\n ignoreMouse = false,\n ignoreAnimation = false,\n ignoreDimensions = false,\n ignoreClear = false,\n forceRedraw,\n scaleWidth,\n scaleHeight,\n offsetX,\n offsetY\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n FRAMERATE,\n mouse\n } = this;\n var frameDuration = 1000 / FRAMERATE;\n this.frameDuration = frameDuration;\n this.readyPromise = new Promise(resolve => {\n this.resolveReady = resolve;\n });\n\n if (this.isReady()) {\n this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n }\n\n if (!enableRedraw) {\n return;\n }\n\n var now = Date.now();\n var then = now;\n var delta = 0;\n\n var tick = () => {\n now = Date.now();\n delta = now - then;\n\n if (delta >= frameDuration) {\n then = now - delta % frameDuration;\n\n if (this.shouldUpdate(ignoreAnimation, forceRedraw)) {\n this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n mouse.runEvents();\n }\n }\n\n this.intervalId = requestAnimationFrame(tick);\n };\n\n if (!ignoreMouse) {\n mouse.start();\n }\n\n this.intervalId = requestAnimationFrame(tick);\n }\n\n stop() {\n if (this.intervalId) {\n requestAnimationFrame.cancel(this.intervalId);\n this.intervalId = null;\n }\n\n this.mouse.stop();\n }\n\n shouldUpdate(ignoreAnimation, forceRedraw) {\n // need update from animations?\n if (!ignoreAnimation) {\n var {\n frameDuration\n } = this;\n var shouldUpdate = this.animations.reduce((shouldUpdate, animation) => animation.update(frameDuration) || shouldUpdate, false);\n\n if (shouldUpdate) {\n return true;\n }\n } // need update from redraw?\n\n\n if (typeof forceRedraw === 'function' && forceRedraw()) {\n return true;\n }\n\n if (!this.isReadyLock && this.isReady()) {\n return true;\n } // need update from mouse events?\n\n\n if (this.mouse.hasEvents()) {\n return true;\n }\n\n return false;\n }\n\n render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {\n var {\n CLIENT_WIDTH,\n CLIENT_HEIGHT,\n viewPort,\n ctx,\n isFirstRender\n } = this;\n var canvas = ctx.canvas;\n viewPort.clear();\n\n if (canvas.width && canvas.height) {\n viewPort.setCurrent(canvas.width, canvas.height);\n } else {\n viewPort.setCurrent(CLIENT_WIDTH, CLIENT_HEIGHT);\n }\n\n var widthStyle = element.getStyle('width');\n var heightStyle = element.getStyle('height');\n\n if (!ignoreDimensions && (isFirstRender || typeof scaleWidth !== 'number' && typeof scaleHeight !== 'number')) {\n // set canvas size\n if (widthStyle.hasValue()) {\n canvas.width = widthStyle.getPixels('x');\n\n if (canvas.style) {\n canvas.style.width = \"\".concat(canvas.width, \"px\");\n }\n }\n\n if (heightStyle.hasValue()) {\n canvas.height = heightStyle.getPixels('y');\n\n if (canvas.style) {\n canvas.style.height = \"\".concat(canvas.height, \"px\");\n }\n }\n }\n\n var cWidth = canvas.clientWidth || canvas.width;\n var cHeight = canvas.clientHeight || canvas.height;\n\n if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {\n cWidth = widthStyle.getPixels('x');\n cHeight = heightStyle.getPixels('y');\n }\n\n viewPort.setCurrent(cWidth, cHeight);\n\n if (typeof offsetX === 'number') {\n element.getAttribute('x', true).setValue(offsetX);\n }\n\n if (typeof offsetY === 'number') {\n element.getAttribute('y', true).setValue(offsetY);\n }\n\n if (typeof scaleWidth === 'number' || typeof scaleHeight === 'number') {\n var viewBox = toNumbers(element.getAttribute('viewBox').getString());\n var xRatio = 0;\n var yRatio = 0;\n\n if (typeof scaleWidth === 'number') {\n var _widthStyle = element.getStyle('width');\n\n if (_widthStyle.hasValue()) {\n xRatio = _widthStyle.getPixels('x') / scaleWidth;\n } else if (!isNaN(viewBox[2])) {\n xRatio = viewBox[2] / scaleWidth;\n }\n }\n\n if (typeof scaleHeight === 'number') {\n var _heightStyle = element.getStyle('height');\n\n if (_heightStyle.hasValue()) {\n yRatio = _heightStyle.getPixels('y') / scaleHeight;\n } else if (!isNaN(viewBox[3])) {\n yRatio = viewBox[3] / scaleHeight;\n }\n }\n\n if (!xRatio) {\n xRatio = yRatio;\n }\n\n if (!yRatio) {\n yRatio = xRatio;\n }\n\n element.getAttribute('width', true).setValue(scaleWidth);\n element.getAttribute('height', true).setValue(scaleHeight);\n var transformStyle = element.getStyle('transform', true, true);\n transformStyle.setValue(\"\".concat(transformStyle.getString(), \" scale(\").concat(1.0 / xRatio, \", \").concat(1.0 / yRatio, \")\"));\n } // clear and render\n\n\n if (!ignoreClear) {\n ctx.clearRect(0, 0, cWidth, cHeight);\n }\n\n element.render(ctx);\n\n if (isFirstRender) {\n this.isFirstRender = false;\n }\n }\n\n}\nScreen.defaultWindow = defaultWindow;\nScreen.defaultFetch = defaultFetch$1;\n\nvar {\n defaultFetch\n} = Screen;\nvar DefaultDOMParser = typeof DOMParser !== 'undefined' ? DOMParser : null;\nclass Parser {\n constructor() {\n var {\n fetch = defaultFetch,\n DOMParser = DefaultDOMParser\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.fetch = fetch;\n this.DOMParser = DOMParser;\n }\n\n parse(resource) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n if (resource.startsWith('<')) {\n return _this.parseFromString(resource);\n }\n\n return _this.load(resource);\n })();\n }\n\n parseFromString(xml) {\n var parser = new this.DOMParser();\n\n try {\n return this.checkDocument(parser.parseFromString(xml, 'image/svg+xml'));\n } catch (err) {\n return this.checkDocument(parser.parseFromString(xml, 'text/xml'));\n }\n }\n\n checkDocument(document) {\n var parserError = document.getElementsByTagName('parsererror')[0];\n\n if (parserError) {\n throw new Error(parserError.textContent);\n }\n\n return document;\n }\n\n load(url) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var response = yield _this2.fetch(url);\n var xml = yield response.text();\n return _this2.parseFromString(xml);\n })();\n }\n\n}\n\nclass Translate {\n constructor(_, point) {\n this.type = 'translate';\n this.point = null;\n this.point = Point.parse(point);\n }\n\n apply(ctx) {\n var {\n x,\n y\n } = this.point;\n ctx.translate(x || 0.0, y || 0.0);\n }\n\n unapply(ctx) {\n var {\n x,\n y\n } = this.point;\n ctx.translate(-1.0 * x || 0.0, -1.0 * y || 0.0);\n }\n\n applyToPoint(point) {\n var {\n x,\n y\n } = this.point;\n point.applyTransform([1, 0, 0, 1, x || 0.0, y || 0.0]);\n }\n\n}\n\nclass Rotate {\n constructor(document, rotate, transformOrigin) {\n this.type = 'rotate';\n this.angle = null;\n this.originX = null;\n this.originY = null;\n this.cx = 0;\n this.cy = 0;\n var numbers = toNumbers(rotate);\n this.angle = new Property(document, 'angle', numbers[0]);\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n this.cx = numbers[1] || 0;\n this.cy = numbers[2] || 0;\n }\n\n apply(ctx) {\n var {\n cx,\n cy,\n originX,\n originY,\n angle\n } = this;\n var tx = cx + originX.getPixels('x');\n var ty = cy + originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.rotate(angle.getRadians());\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n cx,\n cy,\n originX,\n originY,\n angle\n } = this;\n var tx = cx + originX.getPixels('x');\n var ty = cy + originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.rotate(-1.0 * angle.getRadians());\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n var {\n cx,\n cy,\n angle\n } = this;\n var rad = angle.getRadians();\n point.applyTransform([1, 0, 0, 1, cx || 0.0, cy || 0.0 // this.p.y\n ]);\n point.applyTransform([Math.cos(rad), Math.sin(rad), -Math.sin(rad), Math.cos(rad), 0, 0]);\n point.applyTransform([1, 0, 0, 1, -cx || 0.0, -cy || 0.0 // -this.p.y\n ]);\n }\n\n}\n\nclass Scale {\n constructor(_, scale, transformOrigin) {\n this.type = 'scale';\n this.scale = null;\n this.originX = null;\n this.originY = null;\n var scaleSize = Point.parseScale(scale); // Workaround for node-canvas\n\n if (scaleSize.x === 0 || scaleSize.y === 0) {\n scaleSize.x = PSEUDO_ZERO;\n scaleSize.y = PSEUDO_ZERO;\n }\n\n this.scale = scaleSize;\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n }\n\n apply(ctx) {\n var {\n scale: {\n x,\n y\n },\n originX,\n originY\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.scale(x, y || x);\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n scale: {\n x,\n y\n },\n originX,\n originY\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.scale(1.0 / x, 1.0 / y || x);\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n var {\n x,\n y\n } = this.scale;\n point.applyTransform([x || 0.0, 0, 0, y || 0.0, 0, 0]);\n }\n\n}\n\nclass Matrix {\n constructor(_, matrix, transformOrigin) {\n this.type = 'matrix';\n this.matrix = [];\n this.originX = null;\n this.originY = null;\n this.matrix = toNumbers(matrix);\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n }\n\n apply(ctx) {\n var {\n originX,\n originY,\n matrix\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n originX,\n originY,\n matrix\n } = this;\n var a = matrix[0];\n var b = matrix[2];\n var c = matrix[4];\n var d = matrix[1];\n var e = matrix[3];\n var f = matrix[5];\n var g = 0.0;\n var h = 0.0;\n var i = 1.0;\n var det = 1 / (a * (e * i - f * h) - b * (d * i - f * g) + c * (d * h - e * g));\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.transform(det * (e * i - f * h), det * (f * g - d * i), det * (c * h - b * i), det * (a * i - c * g), det * (b * f - c * e), det * (c * d - a * f));\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n point.applyTransform(this.matrix);\n }\n\n}\n\nclass Skew extends Matrix {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skew';\n this.angle = null;\n this.angle = new Property(document, 'angle', skew);\n }\n\n}\n\nclass SkewX extends Skew {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skewX';\n this.matrix = [1, 0, Math.tan(this.angle.getRadians()), 1, 0, 0];\n }\n\n}\n\nclass SkewY extends Skew {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skewY';\n this.matrix = [1, Math.tan(this.angle.getRadians()), 0, 1, 0, 0];\n }\n\n}\n\nfunction parseTransforms(transform) {\n return compressSpaces(transform).trim().replace(/\\)([a-zA-Z])/g, ') $1').replace(/\\)(\\s?,\\s?)/g, ') ').split(/\\s(?=[a-z])/);\n}\n\nfunction parseTransform(transform) {\n var [type, value] = transform.split('(');\n return [type.trim(), value.trim().replace(')', '')];\n}\n\nclass Transform {\n constructor(document, transform, transformOrigin) {\n this.document = document;\n this.transforms = [];\n var data = parseTransforms(transform);\n data.forEach(transform => {\n if (transform === 'none') {\n return;\n }\n\n var [type, value] = parseTransform(transform);\n var TransformType = Transform.transformTypes[type];\n\n if (typeof TransformType !== 'undefined') {\n this.transforms.push(new TransformType(this.document, value, transformOrigin));\n }\n });\n }\n\n static fromElement(document, element) {\n var transformStyle = element.getStyle('transform', false, true);\n var [transformOriginXProperty, transformOriginYProperty = transformOriginXProperty] = element.getStyle('transform-origin', false, true).split();\n var transformOrigin = [transformOriginXProperty, transformOriginYProperty];\n\n if (transformStyle.hasValue()) {\n return new Transform(document, transformStyle.getString(), transformOrigin);\n }\n\n return null;\n }\n\n apply(ctx) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].apply(ctx);\n }\n }\n\n unapply(ctx) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = len - 1; i >= 0; i--) {\n transforms[i].unapply(ctx);\n }\n } // TODO: applyToPoint unused ... remove?\n\n\n applyToPoint(point) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].applyToPoint(point);\n }\n }\n\n}\nTransform.transformTypes = {\n translate: Translate,\n rotate: Rotate,\n scale: Scale,\n matrix: Matrix,\n skewX: SkewX,\n skewY: SkewY\n};\n\nclass Element {\n constructor(document, node) {\n var captureTextNodes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n this.document = document;\n this.node = node;\n this.captureTextNodes = captureTextNodes;\n this.attributes = {};\n this.styles = {};\n this.stylesSpecificity = {};\n this.animationFrozen = false;\n this.animationFrozenValue = '';\n this.parent = null;\n this.children = [];\n\n if (!node || node.nodeType !== 1) {\n // ELEMENT_NODE\n return;\n } // add attributes\n\n\n Array.from(node.attributes).forEach(attribute => {\n var nodeName = normalizeAttributeName(attribute.nodeName);\n this.attributes[nodeName] = new Property(document, nodeName, attribute.value);\n });\n this.addStylesFromStyleDefinition(); // add inline styles\n\n if (this.getAttribute('style').hasValue()) {\n var styles = this.getAttribute('style').getString().split(';').map(_ => _.trim());\n styles.forEach(style => {\n if (!style) {\n return;\n }\n\n var [name, value] = style.split(':').map(_ => _.trim());\n this.styles[name] = new Property(document, name, value);\n });\n }\n\n var {\n definitions\n } = document;\n var id = this.getAttribute('id'); // add id\n\n if (id.hasValue()) {\n if (!definitions[id.getString()]) {\n definitions[id.getString()] = this;\n }\n }\n\n Array.from(node.childNodes).forEach(childNode => {\n if (childNode.nodeType === 1) {\n this.addChild(childNode); // ELEMENT_NODE\n } else if (captureTextNodes && (childNode.nodeType === 3 || childNode.nodeType === 4)) {\n var textNode = document.createTextNode(childNode);\n\n if (textNode.getText().length > 0) {\n this.addChild(textNode); // TEXT_NODE\n }\n }\n });\n }\n\n getAttribute(name) {\n var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var attr = this.attributes[name];\n\n if (!attr && createIfNotExists) {\n var _attr = new Property(this.document, name, '');\n\n this.attributes[name] = _attr;\n return _attr;\n }\n\n return attr || Property.empty(this.document);\n }\n\n getHrefAttribute() {\n for (var key in this.attributes) {\n if (key === 'href' || key.endsWith(':href')) {\n return this.attributes[key];\n }\n }\n\n return Property.empty(this.document);\n }\n\n getStyle(name) {\n var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var skipAncestors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var style = this.styles[name];\n\n if (style) {\n return style;\n }\n\n var attr = this.getAttribute(name);\n\n if (attr !== null && attr !== void 0 && attr.hasValue()) {\n this.styles[name] = attr; // move up to me to cache\n\n return attr;\n }\n\n if (!skipAncestors) {\n var {\n parent\n } = this;\n\n if (parent) {\n var parentStyle = parent.getStyle(name);\n\n if (parentStyle !== null && parentStyle !== void 0 && parentStyle.hasValue()) {\n return parentStyle;\n }\n }\n }\n\n if (createIfNotExists) {\n var _style = new Property(this.document, name, '');\n\n this.styles[name] = _style;\n return _style;\n }\n\n return style || Property.empty(this.document);\n }\n\n render(ctx) {\n // don't render display=none\n // don't render visibility=hidden\n if (this.getStyle('display').getString() === 'none' || this.getStyle('visibility').getString() === 'hidden') {\n return;\n }\n\n ctx.save();\n\n if (this.getStyle('mask').hasValue()) {\n // mask\n var mask = this.getStyle('mask').getDefinition();\n\n if (mask) {\n this.applyEffects(ctx);\n mask.apply(ctx, this);\n }\n } else if (this.getStyle('filter').getValue('none') !== 'none') {\n // filter\n var filter = this.getStyle('filter').getDefinition();\n\n if (filter) {\n this.applyEffects(ctx);\n filter.apply(ctx, this);\n }\n } else {\n this.setContext(ctx);\n this.renderChildren(ctx);\n this.clearContext(ctx);\n }\n\n ctx.restore();\n }\n\n setContext(_) {// NO RENDER\n }\n\n applyEffects(ctx) {\n // transform\n var transform = Transform.fromElement(this.document, this);\n\n if (transform) {\n transform.apply(ctx);\n } // clip\n\n\n var clipPathStyleProp = this.getStyle('clip-path', false, true);\n\n if (clipPathStyleProp.hasValue()) {\n var clip = clipPathStyleProp.getDefinition();\n\n if (clip) {\n clip.apply(ctx);\n }\n }\n }\n\n clearContext(_) {// NO RENDER\n }\n\n renderChildren(ctx) {\n this.children.forEach(child => {\n child.render(ctx);\n });\n }\n\n addChild(childNode) {\n var child = childNode instanceof Element ? childNode : this.document.createElement(childNode);\n child.parent = this;\n\n if (!Element.ignoreChildTypes.includes(child.type)) {\n this.children.push(child);\n }\n }\n\n matchesSelector(selector) {\n var _node$getAttribute;\n\n var {\n node\n } = this;\n\n if (typeof node.matches === 'function') {\n return node.matches(selector);\n }\n\n var styleClasses = (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'class');\n\n if (!styleClasses || styleClasses === '') {\n return false;\n }\n\n return styleClasses.split(' ').some(styleClass => \".\".concat(styleClass) === selector);\n }\n\n addStylesFromStyleDefinition() {\n var {\n styles,\n stylesSpecificity\n } = this.document;\n\n for (var selector in styles) {\n if (!selector.startsWith('@') && this.matchesSelector(selector)) {\n var style = styles[selector];\n var specificity = stylesSpecificity[selector];\n\n if (style) {\n for (var name in style) {\n var existingSpecificity = this.stylesSpecificity[name];\n\n if (typeof existingSpecificity === 'undefined') {\n existingSpecificity = '000';\n }\n\n if (specificity >= existingSpecificity) {\n this.styles[name] = style[name];\n this.stylesSpecificity[name] = specificity;\n }\n }\n }\n }\n }\n }\n\n removeStyles(element, ignoreStyles) {\n var toRestore = ignoreStyles.reduce((toRestore, name) => {\n var styleProp = element.getStyle(name);\n\n if (!styleProp.hasValue()) {\n return toRestore;\n }\n\n var value = styleProp.getString();\n styleProp.setValue('');\n return [...toRestore, [name, value]];\n }, []);\n return toRestore;\n }\n\n restoreStyles(element, styles) {\n styles.forEach(_ref => {\n var [name, value] = _ref;\n element.getStyle(name, true).setValue(value);\n });\n }\n\n isFirstChild() {\n var _this$parent;\n\n return ((_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.children.indexOf(this)) === 0;\n }\n\n}\nElement.ignoreChildTypes = ['title'];\n\nclass UnknownElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n }\n\n}\n\nfunction wrapFontFamily(fontFamily) {\n var trimmed = fontFamily.trim();\n return /^('|\")/.test(trimmed) ? trimmed : \"\\\"\".concat(trimmed, \"\\\"\");\n}\n\nfunction prepareFontFamily(fontFamily) {\n return typeof process === 'undefined' ? fontFamily : fontFamily.trim().split(',').map(wrapFontFamily).join(',');\n}\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style\r\n * @param fontStyle\r\n * @returns CSS font style.\r\n */\n\n\nfunction prepareFontStyle(fontStyle) {\n if (!fontStyle) {\n return '';\n }\n\n var targetFontStyle = fontStyle.trim().toLowerCase();\n\n switch (targetFontStyle) {\n case 'normal':\n case 'italic':\n case 'oblique':\n case 'inherit':\n case 'initial':\n case 'unset':\n return targetFontStyle;\n\n default:\n if (/^oblique\\s+(-|)\\d+deg$/.test(targetFontStyle)) {\n return targetFontStyle;\n }\n\n return '';\n }\n}\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\r\n * @param fontWeight\r\n * @returns CSS font weight.\r\n */\n\n\nfunction prepareFontWeight(fontWeight) {\n if (!fontWeight) {\n return '';\n }\n\n var targetFontWeight = fontWeight.trim().toLowerCase();\n\n switch (targetFontWeight) {\n case 'normal':\n case 'bold':\n case 'lighter':\n case 'bolder':\n case 'inherit':\n case 'initial':\n case 'unset':\n return targetFontWeight;\n\n default:\n if (/^[\\d.]+$/.test(targetFontWeight)) {\n return targetFontWeight;\n }\n\n return '';\n }\n}\n\nclass Font {\n constructor(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {\n var inheritFont = inherit ? typeof inherit === 'string' ? Font.parse(inherit) : inherit : {};\n this.fontFamily = fontFamily || inheritFont.fontFamily;\n this.fontSize = fontSize || inheritFont.fontSize;\n this.fontStyle = fontStyle || inheritFont.fontStyle;\n this.fontWeight = fontWeight || inheritFont.fontWeight;\n this.fontVariant = fontVariant || inheritFont.fontVariant;\n }\n\n static parse() {\n var font = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var inherit = arguments.length > 1 ? arguments[1] : undefined;\n var fontStyle = '';\n var fontVariant = '';\n var fontWeight = '';\n var fontSize = '';\n var fontFamily = '';\n var parts = compressSpaces(font).trim().split(' ');\n var set = {\n fontSize: false,\n fontStyle: false,\n fontWeight: false,\n fontVariant: false\n };\n parts.forEach(part => {\n switch (true) {\n case !set.fontStyle && Font.styles.includes(part):\n if (part !== 'inherit') {\n fontStyle = part;\n }\n\n set.fontStyle = true;\n break;\n\n case !set.fontVariant && Font.variants.includes(part):\n if (part !== 'inherit') {\n fontVariant = part;\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n break;\n\n case !set.fontWeight && Font.weights.includes(part):\n if (part !== 'inherit') {\n fontWeight = part;\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n break;\n\n case !set.fontSize:\n if (part !== 'inherit') {\n [fontSize] = part.split('/');\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n set.fontSize = true;\n break;\n\n default:\n if (part !== 'inherit') {\n fontFamily += part;\n }\n\n }\n });\n return new Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit);\n }\n\n toString() {\n return [prepareFontStyle(this.fontStyle), this.fontVariant, prepareFontWeight(this.fontWeight), this.fontSize, // Wrap fontFamily only on nodejs and only for canvas.ctx\n prepareFontFamily(this.fontFamily)].join(' ').trim();\n }\n\n}\nFont.styles = 'normal|italic|oblique|inherit';\nFont.variants = 'normal|small-caps|inherit';\nFont.weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit';\n\nclass BoundingBox {\n constructor() {\n var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Number.NaN;\n var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.NaN;\n var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Number.NaN;\n var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Number.NaN;\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n\n get x() {\n return this.x1;\n }\n\n get y() {\n return this.y1;\n }\n\n get width() {\n return this.x2 - this.x1;\n }\n\n get height() {\n return this.y2 - this.y1;\n }\n\n addPoint(x, y) {\n if (typeof x !== 'undefined') {\n if (isNaN(this.x1) || isNaN(this.x2)) {\n this.x1 = x;\n this.x2 = x;\n }\n\n if (x < this.x1) {\n this.x1 = x;\n }\n\n if (x > this.x2) {\n this.x2 = x;\n }\n }\n\n if (typeof y !== 'undefined') {\n if (isNaN(this.y1) || isNaN(this.y2)) {\n this.y1 = y;\n this.y2 = y;\n }\n\n if (y < this.y1) {\n this.y1 = y;\n }\n\n if (y > this.y2) {\n this.y2 = y;\n }\n }\n }\n\n addX(x) {\n this.addPoint(x, null);\n }\n\n addY(y) {\n this.addPoint(null, y);\n }\n\n addBoundingBox(boundingBox) {\n if (!boundingBox) {\n return;\n }\n\n var {\n x1,\n y1,\n x2,\n y2\n } = boundingBox;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n\n sumCubic(t, p0, p1, p2, p3) {\n return Math.pow(1 - t, 3) * p0 + 3 * Math.pow(1 - t, 2) * t * p1 + 3 * (1 - t) * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;\n }\n\n bezierCurveAdd(forX, p0, p1, p2, p3) {\n var b = 6 * p0 - 12 * p1 + 6 * p2;\n var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n var c = 3 * p1 - 3 * p0;\n\n if (a === 0) {\n if (b === 0) {\n return;\n }\n\n var t = -c / b;\n\n if (0 < t && t < 1) {\n if (forX) {\n this.addX(this.sumCubic(t, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t, p0, p1, p2, p3));\n }\n }\n\n return;\n }\n\n var b2ac = Math.pow(b, 2) - 4 * c * a;\n\n if (b2ac < 0) {\n return;\n }\n\n var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n\n if (0 < t1 && t1 < 1) {\n if (forX) {\n this.addX(this.sumCubic(t1, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t1, p0, p1, p2, p3));\n }\n }\n\n var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n\n if (0 < t2 && t2 < 1) {\n if (forX) {\n this.addX(this.sumCubic(t2, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t2, p0, p1, p2, p3));\n }\n }\n } // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n\n\n addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\n this.addPoint(p0x, p0y);\n this.addPoint(p3x, p3y);\n this.bezierCurveAdd(true, p0x, p1x, p2x, p3x);\n this.bezierCurveAdd(false, p0y, p1y, p2y, p3y);\n }\n\n addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n var cp1x = p0x + 2 / 3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n var cp1y = p0y + 2 / 3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n var cp2x = cp1x + 1 / 3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n var cp2y = cp1y + 1 / 3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y);\n }\n\n isPointInBox(x, y) {\n var {\n x1,\n y1,\n x2,\n y2\n } = this;\n return x1 <= x && x <= x2 && y1 <= y && y <= y2;\n }\n\n}\n\nclass PathParser extends SVGPathData {\n constructor(path) {\n super(path // Fix spaces after signs.\n .replace(/([+\\-.])\\s+/gm, '$1') // Remove invalid part.\n .replace(/[^MmZzLlHhVvCcSsQqTtAae\\d\\s.,+-].*/g, ''));\n this.control = null;\n this.start = null;\n this.current = null;\n this.command = null;\n this.commands = this.commands;\n this.i = -1;\n this.previousCommand = null;\n this.points = [];\n this.angles = [];\n }\n\n reset() {\n this.i = -1;\n this.command = null;\n this.previousCommand = null;\n this.start = new Point(0, 0);\n this.control = new Point(0, 0);\n this.current = new Point(0, 0);\n this.points = [];\n this.angles = [];\n }\n\n isEnd() {\n var {\n i,\n commands\n } = this;\n return i >= commands.length - 1;\n }\n\n next() {\n var command = this.commands[++this.i];\n this.previousCommand = this.command;\n this.command = command;\n return command;\n }\n\n getPoint() {\n var xProp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'x';\n var yProp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'y';\n var point = new Point(this.command[xProp], this.command[yProp]);\n return this.makeAbsolute(point);\n }\n\n getAsControlPoint(xProp, yProp) {\n var point = this.getPoint(xProp, yProp);\n this.control = point;\n return point;\n }\n\n getAsCurrentPoint(xProp, yProp) {\n var point = this.getPoint(xProp, yProp);\n this.current = point;\n return point;\n }\n\n getReflectedControlPoint() {\n var previousCommand = this.previousCommand.type;\n\n if (previousCommand !== SVGPathData.CURVE_TO && previousCommand !== SVGPathData.SMOOTH_CURVE_TO && previousCommand !== SVGPathData.QUAD_TO && previousCommand !== SVGPathData.SMOOTH_QUAD_TO) {\n return this.current;\n } // reflect point\n\n\n var {\n current: {\n x: cx,\n y: cy\n },\n control: {\n x: ox,\n y: oy\n }\n } = this;\n var point = new Point(2 * cx - ox, 2 * cy - oy);\n return point;\n }\n\n makeAbsolute(point) {\n if (this.command.relative) {\n var {\n x,\n y\n } = this.current;\n point.x += x;\n point.y += y;\n }\n\n return point;\n }\n\n addMarker(point, from, priorTo) {\n var {\n points,\n angles\n } = this; // if the last angle isn't filled in because we didn't have this point yet ...\n\n if (priorTo && angles.length > 0 && !angles[angles.length - 1]) {\n angles[angles.length - 1] = points[points.length - 1].angleTo(priorTo);\n }\n\n this.addMarkerAngle(point, from ? from.angleTo(point) : null);\n }\n\n addMarkerAngle(point, angle) {\n this.points.push(point);\n this.angles.push(angle);\n }\n\n getMarkerPoints() {\n return this.points;\n }\n\n getMarkerAngles() {\n var {\n angles\n } = this;\n var len = angles.length;\n\n for (var i = 0; i < len; i++) {\n if (!angles[i]) {\n for (var j = i + 1; j < len; j++) {\n if (angles[j]) {\n angles[i] = angles[j];\n break;\n }\n }\n }\n }\n\n return angles;\n }\n\n}\n\nclass RenderedElement extends Element {\n constructor() {\n super(...arguments);\n this.modifiedEmSizeStack = false;\n }\n\n calculateOpacity() {\n var opacity = 1.0; // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n\n var element = this;\n\n while (element) {\n var opacityStyle = element.getStyle('opacity', false, true); // no ancestors on style call\n\n if (opacityStyle.hasValue(true)) {\n opacity *= opacityStyle.getNumber();\n }\n\n element = element.parent;\n }\n\n return opacity;\n }\n\n setContext(ctx) {\n var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!fromMeasure) {\n // causes stack overflow when measuring text with gradients\n // fill\n var fillStyleProp = this.getStyle('fill');\n var fillOpacityStyleProp = this.getStyle('fill-opacity');\n var strokeStyleProp = this.getStyle('stroke');\n var strokeOpacityProp = this.getStyle('stroke-opacity');\n\n if (fillStyleProp.isUrlDefinition()) {\n var fillStyle = fillStyleProp.getFillStyleDefinition(this, fillOpacityStyleProp);\n\n if (fillStyle) {\n ctx.fillStyle = fillStyle;\n }\n } else if (fillStyleProp.hasValue()) {\n if (fillStyleProp.getString() === 'currentColor') {\n fillStyleProp.setValue(this.getStyle('color').getColor());\n }\n\n var _fillStyle = fillStyleProp.getColor();\n\n if (_fillStyle !== 'inherit') {\n ctx.fillStyle = _fillStyle === 'none' ? 'rgba(0,0,0,0)' : _fillStyle;\n }\n }\n\n if (fillOpacityStyleProp.hasValue()) {\n var _fillStyle2 = new Property(this.document, 'fill', ctx.fillStyle).addOpacity(fillOpacityStyleProp).getColor();\n\n ctx.fillStyle = _fillStyle2;\n } // stroke\n\n\n if (strokeStyleProp.isUrlDefinition()) {\n var strokeStyle = strokeStyleProp.getFillStyleDefinition(this, strokeOpacityProp);\n\n if (strokeStyle) {\n ctx.strokeStyle = strokeStyle;\n }\n } else if (strokeStyleProp.hasValue()) {\n if (strokeStyleProp.getString() === 'currentColor') {\n strokeStyleProp.setValue(this.getStyle('color').getColor());\n }\n\n var _strokeStyle = strokeStyleProp.getString();\n\n if (_strokeStyle !== 'inherit') {\n ctx.strokeStyle = _strokeStyle === 'none' ? 'rgba(0,0,0,0)' : _strokeStyle;\n }\n }\n\n if (strokeOpacityProp.hasValue()) {\n var _strokeStyle2 = new Property(this.document, 'stroke', ctx.strokeStyle).addOpacity(strokeOpacityProp).getString();\n\n ctx.strokeStyle = _strokeStyle2;\n }\n\n var strokeWidthStyleProp = this.getStyle('stroke-width');\n\n if (strokeWidthStyleProp.hasValue()) {\n var newLineWidth = strokeWidthStyleProp.getPixels();\n ctx.lineWidth = !newLineWidth ? PSEUDO_ZERO // browsers don't respect 0 (or node-canvas? :-)\n : newLineWidth;\n }\n\n var strokeLinecapStyleProp = this.getStyle('stroke-linecap');\n var strokeLinejoinStyleProp = this.getStyle('stroke-linejoin');\n var strokeMiterlimitProp = this.getStyle('stroke-miterlimit'); // NEED TEST\n // const pointOrderStyleProp = this.getStyle('paint-order');\n\n var strokeDasharrayStyleProp = this.getStyle('stroke-dasharray');\n var strokeDashoffsetProp = this.getStyle('stroke-dashoffset');\n\n if (strokeLinecapStyleProp.hasValue()) {\n ctx.lineCap = strokeLinecapStyleProp.getString();\n }\n\n if (strokeLinejoinStyleProp.hasValue()) {\n ctx.lineJoin = strokeLinejoinStyleProp.getString();\n }\n\n if (strokeMiterlimitProp.hasValue()) {\n ctx.miterLimit = strokeMiterlimitProp.getNumber();\n } // NEED TEST\n // if (pointOrderStyleProp.hasValue()) {\n // \t// ?\n // \tctx.paintOrder = pointOrderStyleProp.getValue();\n // }\n\n\n if (strokeDasharrayStyleProp.hasValue() && strokeDasharrayStyleProp.getString() !== 'none') {\n var gaps = toNumbers(strokeDasharrayStyleProp.getString());\n\n if (typeof ctx.setLineDash !== 'undefined') {\n ctx.setLineDash(gaps);\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.webkitLineDash !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.webkitLineDash = gaps;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {\n // @ts-expect-error Handle browser prefix.\n ctx.mozDash = gaps;\n }\n\n var offset = strokeDashoffsetProp.getPixels();\n\n if (typeof ctx.lineDashOffset !== 'undefined') {\n ctx.lineDashOffset = offset;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.webkitLineDashOffset !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.webkitLineDashOffset = offset;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.mozDashOffset !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.mozDashOffset = offset;\n }\n }\n } // font\n\n\n this.modifiedEmSizeStack = false;\n\n if (typeof ctx.font !== 'undefined') {\n var fontStyleProp = this.getStyle('font');\n var fontStyleStyleProp = this.getStyle('font-style');\n var fontVariantStyleProp = this.getStyle('font-variant');\n var fontWeightStyleProp = this.getStyle('font-weight');\n var fontSizeStyleProp = this.getStyle('font-size');\n var fontFamilyStyleProp = this.getStyle('font-family');\n var font = new Font(fontStyleStyleProp.getString(), fontVariantStyleProp.getString(), fontWeightStyleProp.getString(), fontSizeStyleProp.hasValue() ? \"\".concat(fontSizeStyleProp.getPixels(true), \"px\") : '', fontFamilyStyleProp.getString(), Font.parse(fontStyleProp.getString(), ctx.font));\n fontStyleStyleProp.setValue(font.fontStyle);\n fontVariantStyleProp.setValue(font.fontVariant);\n fontWeightStyleProp.setValue(font.fontWeight);\n fontSizeStyleProp.setValue(font.fontSize);\n fontFamilyStyleProp.setValue(font.fontFamily);\n ctx.font = font.toString();\n\n if (fontSizeStyleProp.isPixels()) {\n this.document.emSize = fontSizeStyleProp.getPixels();\n this.modifiedEmSizeStack = true;\n }\n }\n\n if (!fromMeasure) {\n // effects\n this.applyEffects(ctx); // opacity\n\n ctx.globalAlpha = this.calculateOpacity();\n }\n }\n\n clearContext(ctx) {\n super.clearContext(ctx);\n\n if (this.modifiedEmSizeStack) {\n this.document.popEmSize();\n }\n }\n\n}\n\nclass PathElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'path';\n this.pathParser = null;\n this.pathParser = new PathParser(this.getAttribute('d').getString());\n }\n\n path(ctx) {\n var {\n pathParser\n } = this;\n var boundingBox = new BoundingBox();\n pathParser.reset();\n\n if (ctx) {\n ctx.beginPath();\n }\n\n while (!pathParser.isEnd()) {\n switch (pathParser.next().type) {\n case PathParser.MOVE_TO:\n this.pathM(ctx, boundingBox);\n break;\n\n case PathParser.LINE_TO:\n this.pathL(ctx, boundingBox);\n break;\n\n case PathParser.HORIZ_LINE_TO:\n this.pathH(ctx, boundingBox);\n break;\n\n case PathParser.VERT_LINE_TO:\n this.pathV(ctx, boundingBox);\n break;\n\n case PathParser.CURVE_TO:\n this.pathC(ctx, boundingBox);\n break;\n\n case PathParser.SMOOTH_CURVE_TO:\n this.pathS(ctx, boundingBox);\n break;\n\n case PathParser.QUAD_TO:\n this.pathQ(ctx, boundingBox);\n break;\n\n case PathParser.SMOOTH_QUAD_TO:\n this.pathT(ctx, boundingBox);\n break;\n\n case PathParser.ARC:\n this.pathA(ctx, boundingBox);\n break;\n\n case PathParser.CLOSE_PATH:\n this.pathZ(ctx, boundingBox);\n break;\n }\n }\n\n return boundingBox;\n }\n\n getBoundingBox(_) {\n return this.path();\n }\n\n getMarkers() {\n var {\n pathParser\n } = this;\n var points = pathParser.getMarkerPoints();\n var angles = pathParser.getMarkerAngles();\n var markers = points.map((point, i) => [point, angles[i]]);\n return markers;\n }\n\n renderChildren(ctx) {\n this.path(ctx);\n this.document.screen.mouse.checkPath(this, ctx);\n var fillRuleStyleProp = this.getStyle('fill-rule');\n\n if (ctx.fillStyle !== '') {\n if (fillRuleStyleProp.getString('inherit') !== 'inherit') {\n ctx.fill(fillRuleStyleProp.getString());\n } else {\n ctx.fill();\n }\n }\n\n if (ctx.strokeStyle !== '') {\n if (this.getAttribute('vector-effect').getString() === 'non-scaling-stroke') {\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.stroke();\n ctx.restore();\n } else {\n ctx.stroke();\n }\n }\n\n var markers = this.getMarkers();\n\n if (markers) {\n var markersLastIndex = markers.length - 1;\n var markerStartStyleProp = this.getStyle('marker-start');\n var markerMidStyleProp = this.getStyle('marker-mid');\n var markerEndStyleProp = this.getStyle('marker-end');\n\n if (markerStartStyleProp.isUrlDefinition()) {\n var marker = markerStartStyleProp.getDefinition();\n var [point, angle] = markers[0];\n marker.render(ctx, point, angle);\n }\n\n if (markerMidStyleProp.isUrlDefinition()) {\n var _marker = markerMidStyleProp.getDefinition();\n\n for (var i = 1; i < markersLastIndex; i++) {\n var [_point, _angle] = markers[i];\n\n _marker.render(ctx, _point, _angle);\n }\n }\n\n if (markerEndStyleProp.isUrlDefinition()) {\n var _marker2 = markerEndStyleProp.getDefinition();\n\n var [_point2, _angle2] = markers[markersLastIndex];\n\n _marker2.render(ctx, _point2, _angle2);\n }\n }\n }\n\n static pathM(pathParser) {\n var point = pathParser.getAsCurrentPoint();\n pathParser.start = pathParser.current;\n return {\n point\n };\n }\n\n pathM(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n point\n } = PathElement.pathM(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.moveTo(x, y);\n }\n }\n\n static pathL(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getAsCurrentPoint();\n return {\n current,\n point\n };\n }\n\n pathL(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathL(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathH(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var point = new Point((command.relative ? current.x : 0) + command.x, current.y);\n pathParser.current = point;\n return {\n current,\n point\n };\n }\n\n pathH(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathH(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathV(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var point = new Point(current.x, (command.relative ? current.y : 0) + command.y);\n pathParser.current = point;\n return {\n current,\n point\n };\n }\n\n pathV(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathV(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathC(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getPoint('x1', 'y1');\n var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n point,\n controlPoint,\n currentPoint\n };\n }\n\n pathC(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathC(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathS(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getReflectedControlPoint();\n var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n point,\n controlPoint,\n currentPoint\n };\n }\n\n pathS(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathS(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathQ(pathParser) {\n var {\n current\n } = pathParser;\n var controlPoint = pathParser.getAsControlPoint('x1', 'y1');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n controlPoint,\n currentPoint\n };\n }\n\n pathQ(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n controlPoint,\n currentPoint\n } = PathElement.pathQ(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathT(pathParser) {\n var {\n current\n } = pathParser;\n var controlPoint = pathParser.getReflectedControlPoint();\n pathParser.control = controlPoint;\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n controlPoint,\n currentPoint\n };\n }\n\n pathT(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n controlPoint,\n currentPoint\n } = PathElement.pathT(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathA(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var {\n rX,\n rY,\n xRot,\n lArcFlag,\n sweepFlag\n } = command;\n var xAxisRotation = xRot * (Math.PI / 180.0);\n var currentPoint = pathParser.getAsCurrentPoint(); // Conversion from endpoint to center parameterization\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n // x1', y1'\n\n var currp = new Point(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2.0, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2.0); // adjust radii\n\n var l = Math.pow(currp.x, 2) / Math.pow(rX, 2) + Math.pow(currp.y, 2) / Math.pow(rY, 2);\n\n if (l > 1) {\n rX *= Math.sqrt(l);\n rY *= Math.sqrt(l);\n } // cx', cy'\n\n\n var s = (lArcFlag === sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rX, 2) * Math.pow(rY, 2) - Math.pow(rX, 2) * Math.pow(currp.y, 2) - Math.pow(rY, 2) * Math.pow(currp.x, 2)) / (Math.pow(rX, 2) * Math.pow(currp.y, 2) + Math.pow(rY, 2) * Math.pow(currp.x, 2)));\n\n if (isNaN(s)) {\n s = 0;\n }\n\n var cpp = new Point(s * rX * currp.y / rY, s * -rY * currp.x / rX); // cx, cy\n\n var centp = new Point((current.x + currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y); // initial angle\n\n var a1 = vectorsAngle([1, 0], [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY]); // θ1\n // angle delta\n\n var u = [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY];\n var v = [(-currp.x - cpp.x) / rX, (-currp.y - cpp.y) / rY];\n var ad = vectorsAngle(u, v); // Δθ\n\n if (vectorsRatio(u, v) <= -1) {\n ad = Math.PI;\n }\n\n if (vectorsRatio(u, v) >= 1) {\n ad = 0;\n }\n\n return {\n currentPoint,\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n };\n }\n\n pathA(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n currentPoint,\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n } = PathElement.pathA(pathParser); // for markers\n\n var dir = 1 - sweepFlag ? 1.0 : -1.0;\n var ah = a1 + dir * (ad / 2.0);\n var halfWay = new Point(centp.x + rX * Math.cos(ah), centp.y + rY * Math.sin(ah));\n pathParser.addMarkerAngle(halfWay, ah - dir * Math.PI / 2);\n pathParser.addMarkerAngle(currentPoint, ah - dir * Math.PI);\n boundingBox.addPoint(currentPoint.x, currentPoint.y); // TODO: this is too naive, make it better\n\n if (ctx && !isNaN(a1) && !isNaN(ad)) {\n var r = rX > rY ? rX : rY;\n var sx = rX > rY ? 1 : rX / rY;\n var sy = rX > rY ? rY / rX : 1;\n ctx.translate(centp.x, centp.y);\n ctx.rotate(xAxisRotation);\n ctx.scale(sx, sy);\n ctx.arc(0, 0, r, a1, a1 + ad, Boolean(1 - sweepFlag));\n ctx.scale(1 / sx, 1 / sy);\n ctx.rotate(-xAxisRotation);\n ctx.translate(-centp.x, -centp.y);\n }\n }\n\n static pathZ(pathParser) {\n pathParser.current = pathParser.start;\n }\n\n pathZ(ctx, boundingBox) {\n PathElement.pathZ(this.pathParser);\n\n if (ctx) {\n // only close path if it is not a straight line\n if (boundingBox.x1 !== boundingBox.x2 && boundingBox.y1 !== boundingBox.y2) {\n ctx.closePath();\n }\n }\n }\n\n}\n\nclass GlyphElement extends PathElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'glyph';\n this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n this.unicode = this.getAttribute('unicode').getString();\n this.arabicForm = this.getAttribute('arabic-form').getString();\n }\n\n}\n\nclass TextElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, new.target === TextElement ? true : captureTextNodes);\n this.type = 'text';\n this.x = 0;\n this.y = 0;\n this.measureCache = -1;\n }\n\n setContext(ctx) {\n var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n super.setContext(ctx, fromMeasure);\n var textBaseline = this.getStyle('dominant-baseline').getTextBaseline() || this.getStyle('alignment-baseline').getTextBaseline();\n\n if (textBaseline) {\n ctx.textBaseline = textBaseline;\n }\n }\n\n initializeCoordinates() {\n this.x = 0;\n this.y = 0;\n this.leafTexts = [];\n this.textChunkStart = 0;\n this.minX = Number.POSITIVE_INFINITY;\n this.maxX = Number.NEGATIVE_INFINITY;\n }\n\n getBoundingBox(ctx) {\n if (this.type !== 'text') {\n return this.getTElementBoundingBox(ctx);\n } // first, calculate child positions\n\n\n this.initializeCoordinates();\n this.adjustChildCoordinatesRecursive(ctx);\n var boundingBox = null; // then calculate bounding box\n\n this.children.forEach((_, i) => {\n var childBoundingBox = this.getChildBoundingBox(ctx, this, this, i);\n\n if (!boundingBox) {\n boundingBox = childBoundingBox;\n } else {\n boundingBox.addBoundingBox(childBoundingBox);\n }\n });\n return boundingBox;\n }\n\n getFontSize() {\n var {\n document,\n parent\n } = this;\n var inheritFontSize = Font.parse(document.ctx.font).fontSize;\n var fontSize = parent.getStyle('font-size').getNumber(inheritFontSize);\n return fontSize;\n }\n\n getTElementBoundingBox(ctx) {\n var fontSize = this.getFontSize();\n return new BoundingBox(this.x, this.y - fontSize, this.x + this.measureText(ctx), this.y);\n }\n\n getGlyph(font, text, i) {\n var char = text[i];\n var glyph = null;\n\n if (font.isArabic) {\n var len = text.length;\n var prevChar = text[i - 1];\n var nextChar = text[i + 1];\n var arabicForm = 'isolated';\n\n if ((i === 0 || prevChar === ' ') && i < len - 1 && nextChar !== ' ') {\n arabicForm = 'terminal';\n }\n\n if (i > 0 && prevChar !== ' ' && i < len - 1 && nextChar !== ' ') {\n arabicForm = 'medial';\n }\n\n if (i > 0 && prevChar !== ' ' && (i === len - 1 || nextChar === ' ')) {\n arabicForm = 'initial';\n }\n\n if (typeof font.glyphs[char] !== 'undefined') {\n // NEED TEST\n var maybeGlyph = font.glyphs[char];\n glyph = maybeGlyph instanceof GlyphElement ? maybeGlyph : maybeGlyph[arabicForm];\n }\n } else {\n glyph = font.glyphs[char];\n }\n\n if (!glyph) {\n glyph = font.missingGlyph;\n }\n\n return glyph;\n }\n\n getText() {\n return '';\n }\n\n getTextFromNode(node) {\n var textNode = node || this.node;\n var childNodes = Array.from(textNode.parentNode.childNodes);\n var index = childNodes.indexOf(textNode);\n var lastIndex = childNodes.length - 1;\n var text = compressSpaces( // textNode.value\n // || textNode.text\n textNode.textContent || '');\n\n if (index === 0) {\n text = trimLeft(text);\n }\n\n if (index === lastIndex) {\n text = trimRight(text);\n }\n\n return text;\n }\n\n renderChildren(ctx) {\n if (this.type !== 'text') {\n this.renderTElementChildren(ctx);\n return;\n } // first, calculate child positions\n\n\n this.initializeCoordinates();\n this.adjustChildCoordinatesRecursive(ctx); // then render\n\n this.children.forEach((_, i) => {\n this.renderChild(ctx, this, this, i);\n });\n var {\n mouse\n } = this.document.screen; // Do not calc bounding box if mouse is not working.\n\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, this.getBoundingBox(ctx));\n }\n }\n\n renderTElementChildren(ctx) {\n var {\n document,\n parent\n } = this;\n var renderText = this.getText();\n var customFont = parent.getStyle('font-family').getDefinition();\n\n if (customFont) {\n var {\n unitsPerEm\n } = customFont.fontFace;\n var ctxFont = Font.parse(document.ctx.font);\n var fontSize = parent.getStyle('font-size').getNumber(ctxFont.fontSize);\n var fontStyle = parent.getStyle('font-style').getString(ctxFont.fontStyle);\n var scale = fontSize / unitsPerEm;\n var text = customFont.isRTL ? renderText.split('').reverse().join('') : renderText;\n var dx = toNumbers(parent.getAttribute('dx').getString());\n var len = text.length;\n\n for (var i = 0; i < len; i++) {\n var glyph = this.getGlyph(customFont, text, i);\n ctx.translate(this.x, this.y);\n ctx.scale(scale, -scale);\n var lw = ctx.lineWidth;\n ctx.lineWidth = ctx.lineWidth * unitsPerEm / fontSize;\n\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, .4, 1, 0, 0);\n }\n\n glyph.render(ctx);\n\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, -.4, 1, 0, 0);\n }\n\n ctx.lineWidth = lw;\n ctx.scale(1 / scale, -1 / scale);\n ctx.translate(-this.x, -this.y);\n this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / unitsPerEm;\n\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n this.x += dx[i];\n }\n }\n\n return;\n }\n\n var {\n x,\n y\n } = this; // NEED TEST\n // if (ctx.paintOrder === 'stroke') {\n // \tif (ctx.strokeStyle) {\n // \t\tctx.strokeText(renderText, x, y);\n // \t}\n // \tif (ctx.fillStyle) {\n // \t\tctx.fillText(renderText, x, y);\n // \t}\n // } else {\n\n if (ctx.fillStyle) {\n ctx.fillText(renderText, x, y);\n }\n\n if (ctx.strokeStyle) {\n ctx.strokeText(renderText, x, y);\n } // }\n\n }\n\n applyAnchoring() {\n if (this.textChunkStart >= this.leafTexts.length) {\n return;\n } // This is basically the \"Apply anchoring\" part of https://www.w3.org/TR/SVG2/text.html#TextLayoutAlgorithm.\n // The difference is that we apply the anchoring as soon as a chunk is finished. This saves some extra looping.\n // Vertical text is not supported.\n\n\n var firstElement = this.leafTexts[this.textChunkStart];\n var textAnchor = firstElement.getStyle('text-anchor').getString('start');\n var isRTL = false; // we treat RTL like LTR\n\n var shift = 0;\n\n if (textAnchor === 'start' && !isRTL || textAnchor === 'end' && isRTL) {\n shift = firstElement.x - this.minX;\n } else if (textAnchor === 'end' && !isRTL || textAnchor === 'start' && isRTL) {\n shift = firstElement.x - this.maxX;\n } else {\n shift = firstElement.x - (this.minX + this.maxX) / 2;\n }\n\n for (var i = this.textChunkStart; i < this.leafTexts.length; i++) {\n this.leafTexts[i].x += shift;\n } // start new chunk\n\n\n this.minX = Number.POSITIVE_INFINITY;\n this.maxX = Number.NEGATIVE_INFINITY;\n this.textChunkStart = this.leafTexts.length;\n }\n\n adjustChildCoordinatesRecursive(ctx) {\n this.children.forEach((_, i) => {\n this.adjustChildCoordinatesRecursiveCore(ctx, this, this, i);\n });\n this.applyAnchoring();\n }\n\n adjustChildCoordinatesRecursiveCore(ctx, textParent, parent, i) {\n var child = parent.children[i];\n\n if (child.children.length > 0) {\n child.children.forEach((_, i) => {\n textParent.adjustChildCoordinatesRecursiveCore(ctx, textParent, child, i);\n });\n } else {\n // only leafs are relevant\n this.adjustChildCoordinates(ctx, textParent, parent, i);\n }\n }\n\n adjustChildCoordinates(ctx, textParent, parent, i) {\n var child = parent.children[i];\n\n if (typeof child.measureText !== 'function') {\n return child;\n }\n\n ctx.save();\n child.setContext(ctx, true);\n var xAttr = child.getAttribute('x');\n var yAttr = child.getAttribute('y');\n var dxAttr = child.getAttribute('dx');\n var dyAttr = child.getAttribute('dy');\n var customFont = child.getStyle('font-family').getDefinition();\n var isRTL = Boolean(customFont) && customFont.isRTL;\n\n if (i === 0) {\n // First children inherit attributes from parent(s). Positional attributes\n // are only inherited from a parent to it's first child.\n if (!xAttr.hasValue()) {\n xAttr.setValue(child.getInheritedAttribute('x'));\n }\n\n if (!yAttr.hasValue()) {\n yAttr.setValue(child.getInheritedAttribute('y'));\n }\n\n if (!dxAttr.hasValue()) {\n dxAttr.setValue(child.getInheritedAttribute('dx'));\n }\n\n if (!dyAttr.hasValue()) {\n dyAttr.setValue(child.getInheritedAttribute('dy'));\n }\n }\n\n var width = child.measureText(ctx);\n\n if (isRTL) {\n textParent.x -= width;\n }\n\n if (xAttr.hasValue()) {\n // an \"x\" attribute marks the start of a new chunk\n textParent.applyAnchoring();\n child.x = xAttr.getPixels('x');\n\n if (dxAttr.hasValue()) {\n child.x += dxAttr.getPixels('x');\n }\n } else {\n if (dxAttr.hasValue()) {\n textParent.x += dxAttr.getPixels('x');\n }\n\n child.x = textParent.x;\n }\n\n textParent.x = child.x;\n\n if (!isRTL) {\n textParent.x += width;\n }\n\n if (yAttr.hasValue()) {\n child.y = yAttr.getPixels('y');\n\n if (dyAttr.hasValue()) {\n child.y += dyAttr.getPixels('y');\n }\n } else {\n if (dyAttr.hasValue()) {\n textParent.y += dyAttr.getPixels('y');\n }\n\n child.y = textParent.y;\n }\n\n textParent.y = child.y; // update the current chunk and it's bounds\n\n textParent.leafTexts.push(child);\n textParent.minX = Math.min(textParent.minX, child.x, child.x + width);\n textParent.maxX = Math.max(textParent.maxX, child.x, child.x + width);\n child.clearContext(ctx);\n ctx.restore();\n return child;\n }\n\n getChildBoundingBox(ctx, textParent, parent, i) {\n var child = parent.children[i]; // not a text node?\n\n if (typeof child.getBoundingBox !== 'function') {\n return null;\n }\n\n var boundingBox = child.getBoundingBox(ctx);\n\n if (!boundingBox) {\n return null;\n }\n\n child.children.forEach((_, i) => {\n var childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i);\n boundingBox.addBoundingBox(childBoundingBox);\n });\n return boundingBox;\n }\n\n renderChild(ctx, textParent, parent, i) {\n var child = parent.children[i];\n child.render(ctx);\n child.children.forEach((_, i) => {\n textParent.renderChild(ctx, textParent, child, i);\n });\n }\n\n measureText(ctx) {\n var {\n measureCache\n } = this;\n\n if (~measureCache) {\n return measureCache;\n }\n\n var renderText = this.getText();\n var measure = this.measureTargetText(ctx, renderText);\n this.measureCache = measure;\n return measure;\n }\n\n measureTargetText(ctx, targetText) {\n if (!targetText.length) {\n return 0;\n }\n\n var {\n parent\n } = this;\n var customFont = parent.getStyle('font-family').getDefinition();\n\n if (customFont) {\n var fontSize = this.getFontSize();\n var text = customFont.isRTL ? targetText.split('').reverse().join('') : targetText;\n var dx = toNumbers(parent.getAttribute('dx').getString());\n var len = text.length;\n var _measure = 0;\n\n for (var i = 0; i < len; i++) {\n var glyph = this.getGlyph(customFont, text, i);\n _measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;\n\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n _measure += dx[i];\n }\n }\n\n return _measure;\n }\n\n if (!ctx.measureText) {\n return targetText.length * 10;\n }\n\n ctx.save();\n this.setContext(ctx, true);\n var {\n width: measure\n } = ctx.measureText(targetText);\n this.clearContext(ctx);\n ctx.restore();\n return measure;\n }\n /**\r\n * Inherits positional attributes from {@link TextElement} parent(s). Attributes\r\n * are only inherited from a parent to its first child.\r\n * @param name - The attribute name.\r\n * @returns The attribute value or null.\r\n */\n\n\n getInheritedAttribute(name) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias,consistent-this\n var current = this;\n\n while (current instanceof TextElement && current.isFirstChild()) {\n var parentAttr = current.parent.getAttribute(name);\n\n if (parentAttr.hasValue(true)) {\n return parentAttr.getValue('0');\n }\n\n current = current.parent;\n }\n\n return null;\n }\n\n}\n\nclass TSpanElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, new.target === TSpanElement ? true : captureTextNodes);\n this.type = 'tspan'; // if this node has children, then they own the text\n\n this.text = this.children.length > 0 ? '' : this.getTextFromNode();\n }\n\n getText() {\n return this.text;\n }\n\n}\n\nclass TextNode extends TSpanElement {\n constructor() {\n super(...arguments);\n this.type = 'textNode';\n }\n\n}\n\nclass SVGElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'svg';\n this.root = false;\n }\n\n setContext(ctx) {\n var _this$node$parentNode;\n\n var {\n document\n } = this;\n var {\n screen,\n window\n } = document;\n var canvas = ctx.canvas;\n screen.setDefaults(ctx);\n\n if (canvas.style && typeof ctx.font !== 'undefined' && window && typeof window.getComputedStyle !== 'undefined') {\n ctx.font = window.getComputedStyle(canvas).getPropertyValue('font');\n var fontSizeProp = new Property(document, 'fontSize', Font.parse(ctx.font).fontSize);\n\n if (fontSizeProp.hasValue()) {\n document.rootEmSize = fontSizeProp.getPixels('y');\n document.emSize = document.rootEmSize;\n }\n } // create new view port\n\n\n if (!this.getAttribute('x').hasValue()) {\n this.getAttribute('x', true).setValue(0);\n }\n\n if (!this.getAttribute('y').hasValue()) {\n this.getAttribute('y', true).setValue(0);\n }\n\n var {\n width,\n height\n } = screen.viewPort;\n\n if (!this.getStyle('width').hasValue()) {\n this.getStyle('width', true).setValue('100%');\n }\n\n if (!this.getStyle('height').hasValue()) {\n this.getStyle('height', true).setValue('100%');\n }\n\n if (!this.getStyle('color').hasValue()) {\n this.getStyle('color', true).setValue('black');\n }\n\n var refXAttr = this.getAttribute('refX');\n var refYAttr = this.getAttribute('refY');\n var viewBoxAttr = this.getAttribute('viewBox');\n var viewBox = viewBoxAttr.hasValue() ? toNumbers(viewBoxAttr.getString()) : null;\n var clip = !this.root && this.getStyle('overflow').getValue('hidden') !== 'visible';\n var minX = 0;\n var minY = 0;\n var clipX = 0;\n var clipY = 0;\n\n if (viewBox) {\n minX = viewBox[0];\n minY = viewBox[1];\n }\n\n if (!this.root) {\n width = this.getStyle('width').getPixels('x');\n height = this.getStyle('height').getPixels('y');\n\n if (this.type === 'marker') {\n clipX = minX;\n clipY = minY;\n minX = 0;\n minY = 0;\n }\n }\n\n screen.viewPort.setCurrent(width, height); // Default value of transform-origin is center only for root SVG elements\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform-origin\n\n if (this.node // is not temporary SVGElement\n && (!this.parent || ((_this$node$parentNode = this.node.parentNode) === null || _this$node$parentNode === void 0 ? void 0 : _this$node$parentNode.nodeName) === 'foreignObject') && this.getStyle('transform', false, true).hasValue() && !this.getStyle('transform-origin', false, true).hasValue()) {\n this.getStyle('transform-origin', true, true).setValue('50% 50%');\n }\n\n super.setContext(ctx);\n ctx.translate(this.getAttribute('x').getPixels('x'), this.getAttribute('y').getPixels('y'));\n\n if (viewBox) {\n width = viewBox[2];\n height = viewBox[3];\n }\n\n document.setViewBox({\n ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width: screen.viewPort.width,\n desiredWidth: width,\n height: screen.viewPort.height,\n desiredHeight: height,\n minX,\n minY,\n refX: refXAttr.getValue(),\n refY: refYAttr.getValue(),\n clip,\n clipX,\n clipY\n });\n\n if (viewBox) {\n screen.viewPort.removeCurrent();\n screen.viewPort.setCurrent(width, height);\n }\n }\n\n clearContext(ctx) {\n super.clearContext(ctx);\n this.document.screen.viewPort.removeCurrent();\n }\n /**\r\n * Resize SVG to fit in given size.\r\n * @param width\r\n * @param height\r\n * @param preserveAspectRatio\r\n */\n\n\n resize(width) {\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var widthAttr = this.getAttribute('width', true);\n var heightAttr = this.getAttribute('height', true);\n var viewBoxAttr = this.getAttribute('viewBox');\n var styleAttr = this.getAttribute('style');\n var originWidth = widthAttr.getNumber(0);\n var originHeight = heightAttr.getNumber(0);\n\n if (preserveAspectRatio) {\n if (typeof preserveAspectRatio === 'string') {\n this.getAttribute('preserveAspectRatio', true).setValue(preserveAspectRatio);\n } else {\n var preserveAspectRatioAttr = this.getAttribute('preserveAspectRatio');\n\n if (preserveAspectRatioAttr.hasValue()) {\n preserveAspectRatioAttr.setValue(preserveAspectRatioAttr.getString().replace(/^\\s*(\\S.*\\S)\\s*$/, '$1'));\n }\n }\n }\n\n widthAttr.setValue(width);\n heightAttr.setValue(height);\n\n if (!viewBoxAttr.hasValue()) {\n viewBoxAttr.setValue(\"0 0 \".concat(originWidth || width, \" \").concat(originHeight || height));\n }\n\n if (styleAttr.hasValue()) {\n var widthStyle = this.getStyle('width');\n var heightStyle = this.getStyle('height');\n\n if (widthStyle.hasValue()) {\n widthStyle.setValue(\"\".concat(width, \"px\"));\n }\n\n if (heightStyle.hasValue()) {\n heightStyle.setValue(\"\".concat(height, \"px\"));\n }\n }\n }\n\n}\n\nclass RectElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'rect';\n }\n\n path(ctx) {\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width', false, true).getPixels('x');\n var height = this.getStyle('height', false, true).getPixels('y');\n var rxAttr = this.getAttribute('rx');\n var ryAttr = this.getAttribute('ry');\n var rx = rxAttr.getPixels('x');\n var ry = ryAttr.getPixels('y');\n\n if (rxAttr.hasValue() && !ryAttr.hasValue()) {\n ry = rx;\n }\n\n if (ryAttr.hasValue() && !rxAttr.hasValue()) {\n rx = ry;\n }\n\n rx = Math.min(rx, width / 2.0);\n ry = Math.min(ry, height / 2.0);\n\n if (ctx) {\n var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n ctx.beginPath(); // always start the path so we don't fill prior paths\n\n if (height > 0 && width > 0) {\n ctx.moveTo(x + rx, y);\n ctx.lineTo(x + width - rx, y);\n ctx.bezierCurveTo(x + width - rx + KAPPA * rx, y, x + width, y + ry - KAPPA * ry, x + width, y + ry);\n ctx.lineTo(x + width, y + height - ry);\n ctx.bezierCurveTo(x + width, y + height - ry + KAPPA * ry, x + width - rx + KAPPA * rx, y + height, x + width - rx, y + height);\n ctx.lineTo(x + rx, y + height);\n ctx.bezierCurveTo(x + rx - KAPPA * rx, y + height, x, y + height - ry + KAPPA * ry, x, y + height - ry);\n ctx.lineTo(x, y + ry);\n ctx.bezierCurveTo(x, y + ry - KAPPA * ry, x + rx - KAPPA * rx, y, x + rx, y);\n ctx.closePath();\n }\n }\n\n return new BoundingBox(x, y, x + width, y + height);\n }\n\n getMarkers() {\n return null;\n }\n\n}\n\nclass CircleElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'circle';\n }\n\n path(ctx) {\n var cx = this.getAttribute('cx').getPixels('x');\n var cy = this.getAttribute('cy').getPixels('y');\n var r = this.getAttribute('r').getPixels();\n\n if (ctx && r > 0) {\n ctx.beginPath();\n ctx.arc(cx, cy, r, 0, Math.PI * 2, false);\n ctx.closePath();\n }\n\n return new BoundingBox(cx - r, cy - r, cx + r, cy + r);\n }\n\n getMarkers() {\n return null;\n }\n\n}\n\nclass EllipseElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'ellipse';\n }\n\n path(ctx) {\n var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n var rx = this.getAttribute('rx').getPixels('x');\n var ry = this.getAttribute('ry').getPixels('y');\n var cx = this.getAttribute('cx').getPixels('x');\n var cy = this.getAttribute('cy').getPixels('y');\n\n if (ctx && rx > 0 && ry > 0) {\n ctx.beginPath();\n ctx.moveTo(cx + rx, cy);\n ctx.bezierCurveTo(cx + rx, cy + KAPPA * ry, cx + KAPPA * rx, cy + ry, cx, cy + ry);\n ctx.bezierCurveTo(cx - KAPPA * rx, cy + ry, cx - rx, cy + KAPPA * ry, cx - rx, cy);\n ctx.bezierCurveTo(cx - rx, cy - KAPPA * ry, cx - KAPPA * rx, cy - ry, cx, cy - ry);\n ctx.bezierCurveTo(cx + KAPPA * rx, cy - ry, cx + rx, cy - KAPPA * ry, cx + rx, cy);\n ctx.closePath();\n }\n\n return new BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);\n }\n\n getMarkers() {\n return null;\n }\n\n}\n\nclass LineElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'line';\n }\n\n getPoints() {\n return [new Point(this.getAttribute('x1').getPixels('x'), this.getAttribute('y1').getPixels('y')), new Point(this.getAttribute('x2').getPixels('x'), this.getAttribute('y2').getPixels('y'))];\n }\n\n path(ctx) {\n var [{\n x: x0,\n y: y0\n }, {\n x: x1,\n y: y1\n }] = this.getPoints();\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n }\n\n return new BoundingBox(x0, y0, x1, y1);\n }\n\n getMarkers() {\n var [p0, p1] = this.getPoints();\n var a = p0.angleTo(p1);\n return [[p0, a], [p1, a]];\n }\n\n}\n\nclass PolylineElement extends PathElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'polyline';\n this.points = [];\n this.points = Point.parsePath(this.getAttribute('points').getString());\n }\n\n path(ctx) {\n var {\n points\n } = this;\n var [{\n x: x0,\n y: y0\n }] = points;\n var boundingBox = new BoundingBox(x0, y0);\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n }\n\n points.forEach(_ref => {\n var {\n x,\n y\n } = _ref;\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n });\n return boundingBox;\n }\n\n getMarkers() {\n var {\n points\n } = this;\n var lastIndex = points.length - 1;\n var markers = [];\n points.forEach((point, i) => {\n if (i === lastIndex) {\n return;\n }\n\n markers.push([point, point.angleTo(points[i + 1])]);\n });\n\n if (markers.length > 0) {\n markers.push([points[points.length - 1], markers[markers.length - 1][1]]);\n }\n\n return markers;\n }\n\n}\n\nclass PolygonElement extends PolylineElement {\n constructor() {\n super(...arguments);\n this.type = 'polygon';\n }\n\n path(ctx) {\n var boundingBox = super.path(ctx);\n var [{\n x,\n y\n }] = this.points;\n\n if (ctx) {\n ctx.lineTo(x, y);\n ctx.closePath();\n }\n\n return boundingBox;\n }\n\n}\n\nclass PatternElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'pattern';\n }\n\n createPattern(ctx, _, parentOpacityProp) {\n var width = this.getStyle('width').getPixels('x', true);\n var height = this.getStyle('height').getPixels('y', true); // render me using a temporary svg element\n\n var patternSvg = new SVGElement(this.document, null);\n patternSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n patternSvg.attributes.width = new Property(this.document, 'width', \"\".concat(width, \"px\"));\n patternSvg.attributes.height = new Property(this.document, 'height', \"\".concat(height, \"px\"));\n patternSvg.attributes.transform = new Property(this.document, 'transform', this.getAttribute('patternTransform').getValue());\n patternSvg.children = this.children;\n var patternCanvas = this.document.createCanvas(width, height);\n var patternCtx = patternCanvas.getContext('2d');\n var xAttr = this.getAttribute('x');\n var yAttr = this.getAttribute('y');\n\n if (xAttr.hasValue() && yAttr.hasValue()) {\n patternCtx.translate(xAttr.getPixels('x', true), yAttr.getPixels('y', true));\n }\n\n if (parentOpacityProp.hasValue()) {\n this.styles['fill-opacity'] = parentOpacityProp;\n } else {\n Reflect.deleteProperty(this.styles, 'fill-opacity');\n } // render 3x3 grid so when we transform there's no white space on edges\n\n\n for (var x = -1; x <= 1; x++) {\n for (var y = -1; y <= 1; y++) {\n patternCtx.save();\n patternSvg.attributes.x = new Property(this.document, 'x', x * patternCanvas.width);\n patternSvg.attributes.y = new Property(this.document, 'y', y * patternCanvas.height);\n patternSvg.render(patternCtx);\n patternCtx.restore();\n }\n }\n\n var pattern = ctx.createPattern(patternCanvas, 'repeat');\n return pattern;\n }\n\n}\n\nclass MarkerElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'marker';\n }\n\n render(ctx, point, angle) {\n if (!point) {\n return;\n }\n\n var {\n x,\n y\n } = point;\n var orient = this.getAttribute('orient').getString('auto');\n var markerUnits = this.getAttribute('markerUnits').getString('strokeWidth');\n ctx.translate(x, y);\n\n if (orient === 'auto') {\n ctx.rotate(angle);\n }\n\n if (markerUnits === 'strokeWidth') {\n ctx.scale(ctx.lineWidth, ctx.lineWidth);\n }\n\n ctx.save(); // render me using a temporary svg element\n\n var markerSvg = new SVGElement(this.document, null);\n markerSvg.type = this.type;\n markerSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n markerSvg.attributes.refX = new Property(this.document, 'refX', this.getAttribute('refX').getValue());\n markerSvg.attributes.refY = new Property(this.document, 'refY', this.getAttribute('refY').getValue());\n markerSvg.attributes.width = new Property(this.document, 'width', this.getAttribute('markerWidth').getValue());\n markerSvg.attributes.height = new Property(this.document, 'height', this.getAttribute('markerHeight').getValue());\n markerSvg.attributes.overflow = new Property(this.document, 'overflow', this.getAttribute('overflow').getValue());\n markerSvg.attributes.fill = new Property(this.document, 'fill', this.getAttribute('fill').getColor('black'));\n markerSvg.attributes.stroke = new Property(this.document, 'stroke', this.getAttribute('stroke').getValue('none'));\n markerSvg.children = this.children;\n markerSvg.render(ctx);\n ctx.restore();\n\n if (markerUnits === 'strokeWidth') {\n ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);\n }\n\n if (orient === 'auto') {\n ctx.rotate(-angle);\n }\n\n ctx.translate(-x, -y);\n }\n\n}\n\nclass DefsElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'defs';\n }\n\n render() {// NOOP\n }\n\n}\n\nclass GElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'g';\n }\n\n getBoundingBox(ctx) {\n var boundingBox = new BoundingBox();\n this.children.forEach(child => {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n return boundingBox;\n }\n\n}\n\nclass GradientElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.attributesToInherit = ['gradientUnits'];\n this.stops = [];\n var {\n stops,\n children\n } = this;\n children.forEach(child => {\n if (child.type === 'stop') {\n stops.push(child);\n }\n });\n }\n\n getGradientUnits() {\n return this.getAttribute('gradientUnits').getString('objectBoundingBox');\n }\n\n createGradient(ctx, element, parentOpacityProp) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n var stopsContainer = this;\n\n if (this.getHrefAttribute().hasValue()) {\n stopsContainer = this.getHrefAttribute().getDefinition();\n this.inheritStopContainer(stopsContainer);\n }\n\n var {\n stops\n } = stopsContainer;\n var gradient = this.getGradient(ctx, element);\n\n if (!gradient) {\n return this.addParentOpacity(parentOpacityProp, stops[stops.length - 1].color);\n }\n\n stops.forEach(stop => {\n gradient.addColorStop(stop.offset, this.addParentOpacity(parentOpacityProp, stop.color));\n });\n\n if (this.getAttribute('gradientTransform').hasValue()) {\n // render as transformed pattern on temporary canvas\n var {\n document\n } = this;\n var {\n MAX_VIRTUAL_PIXELS,\n viewPort\n } = document.screen;\n var [rootView] = viewPort.viewPorts;\n var rect = new RectElement(document, null);\n rect.attributes.x = new Property(document, 'x', -MAX_VIRTUAL_PIXELS / 3.0);\n rect.attributes.y = new Property(document, 'y', -MAX_VIRTUAL_PIXELS / 3.0);\n rect.attributes.width = new Property(document, 'width', MAX_VIRTUAL_PIXELS);\n rect.attributes.height = new Property(document, 'height', MAX_VIRTUAL_PIXELS);\n var group = new GElement(document, null);\n group.attributes.transform = new Property(document, 'transform', this.getAttribute('gradientTransform').getValue());\n group.children = [rect];\n var patternSvg = new SVGElement(document, null);\n patternSvg.attributes.x = new Property(document, 'x', 0);\n patternSvg.attributes.y = new Property(document, 'y', 0);\n patternSvg.attributes.width = new Property(document, 'width', rootView.width);\n patternSvg.attributes.height = new Property(document, 'height', rootView.height);\n patternSvg.children = [group];\n var patternCanvas = document.createCanvas(rootView.width, rootView.height);\n var patternCtx = patternCanvas.getContext('2d');\n patternCtx.fillStyle = gradient;\n patternSvg.render(patternCtx);\n return patternCtx.createPattern(patternCanvas, 'no-repeat');\n }\n\n return gradient;\n }\n\n inheritStopContainer(stopsContainer) {\n this.attributesToInherit.forEach(attributeToInherit => {\n if (!this.getAttribute(attributeToInherit).hasValue() && stopsContainer.getAttribute(attributeToInherit).hasValue()) {\n this.getAttribute(attributeToInherit, true).setValue(stopsContainer.getAttribute(attributeToInherit).getValue());\n }\n });\n }\n\n addParentOpacity(parentOpacityProp, color) {\n if (parentOpacityProp.hasValue()) {\n var colorProp = new Property(this.document, 'color', color);\n return colorProp.addOpacity(parentOpacityProp).getColor();\n }\n\n return color;\n }\n\n}\n\nclass LinearGradientElement extends GradientElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'linearGradient';\n this.attributesToInherit.push('x1', 'y1', 'x2', 'y2');\n }\n\n getGradient(ctx, element) {\n var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n var boundingBox = isBoundingBoxUnits ? element.getBoundingBox(ctx) : null;\n\n if (isBoundingBoxUnits && !boundingBox) {\n return null;\n }\n\n if (!this.getAttribute('x1').hasValue() && !this.getAttribute('y1').hasValue() && !this.getAttribute('x2').hasValue() && !this.getAttribute('y2').hasValue()) {\n this.getAttribute('x1', true).setValue(0);\n this.getAttribute('y1', true).setValue(0);\n this.getAttribute('x2', true).setValue(1);\n this.getAttribute('y2', true).setValue(0);\n }\n\n var x1 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x1').getNumber() : this.getAttribute('x1').getPixels('x');\n var y1 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y1').getNumber() : this.getAttribute('y1').getPixels('y');\n var x2 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x2').getNumber() : this.getAttribute('x2').getPixels('x');\n var y2 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y2').getNumber() : this.getAttribute('y2').getPixels('y');\n\n if (x1 === x2 && y1 === y2) {\n return null;\n }\n\n return ctx.createLinearGradient(x1, y1, x2, y2);\n }\n\n}\n\nclass RadialGradientElement extends GradientElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'radialGradient';\n this.attributesToInherit.push('cx', 'cy', 'r', 'fx', 'fy', 'fr');\n }\n\n getGradient(ctx, element) {\n var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n var boundingBox = element.getBoundingBox(ctx);\n\n if (isBoundingBoxUnits && !boundingBox) {\n return null;\n }\n\n if (!this.getAttribute('cx').hasValue()) {\n this.getAttribute('cx', true).setValue('50%');\n }\n\n if (!this.getAttribute('cy').hasValue()) {\n this.getAttribute('cy', true).setValue('50%');\n }\n\n if (!this.getAttribute('r').hasValue()) {\n this.getAttribute('r', true).setValue('50%');\n }\n\n var cx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('cx').getNumber() : this.getAttribute('cx').getPixels('x');\n var cy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('cy').getNumber() : this.getAttribute('cy').getPixels('y');\n var fx = cx;\n var fy = cy;\n\n if (this.getAttribute('fx').hasValue()) {\n fx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('fx').getNumber() : this.getAttribute('fx').getPixels('x');\n }\n\n if (this.getAttribute('fy').hasValue()) {\n fy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('fy').getNumber() : this.getAttribute('fy').getPixels('y');\n }\n\n var r = isBoundingBoxUnits ? (boundingBox.width + boundingBox.height) / 2.0 * this.getAttribute('r').getNumber() : this.getAttribute('r').getPixels();\n var fr = this.getAttribute('fr').getPixels();\n return ctx.createRadialGradient(fx, fy, fr, cx, cy, r);\n }\n\n}\n\nclass StopElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'stop';\n var offset = Math.max(0, Math.min(1, this.getAttribute('offset').getNumber()));\n var stopOpacity = this.getStyle('stop-opacity');\n var stopColor = this.getStyle('stop-color', true);\n\n if (stopColor.getString() === '') {\n stopColor.setValue('#000');\n }\n\n if (stopOpacity.hasValue()) {\n stopColor = stopColor.addOpacity(stopOpacity);\n }\n\n this.offset = offset;\n this.color = stopColor.getColor();\n }\n\n}\n\nclass AnimateElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'animate';\n this.duration = 0;\n this.initialValue = null;\n this.initialUnits = '';\n this.removed = false;\n this.frozen = false;\n document.screen.animations.push(this);\n this.begin = this.getAttribute('begin').getMilliseconds();\n this.maxDuration = this.begin + this.getAttribute('dur').getMilliseconds();\n this.from = this.getAttribute('from');\n this.to = this.getAttribute('to');\n this.values = new Property(document, 'values', null);\n var valuesAttr = this.getAttribute('values');\n\n if (valuesAttr.hasValue()) {\n this.values.setValue(valuesAttr.getString().split(';'));\n }\n }\n\n getProperty() {\n var attributeType = this.getAttribute('attributeType').getString();\n var attributeName = this.getAttribute('attributeName').getString();\n\n if (attributeType === 'CSS') {\n return this.parent.getStyle(attributeName, true);\n }\n\n return this.parent.getAttribute(attributeName, true);\n }\n\n calcValue() {\n var {\n initialUnits\n } = this;\n var {\n progress,\n from,\n to\n } = this.getProgress(); // tween value linearly\n\n var newValue = from.getNumber() + (to.getNumber() - from.getNumber()) * progress;\n\n if (initialUnits === '%') {\n newValue *= 100.0; // numValue() returns 0-1 whereas properties are 0-100\n }\n\n return \"\".concat(newValue).concat(initialUnits);\n }\n\n update(delta) {\n var {\n parent\n } = this;\n var prop = this.getProperty(); // set initial value\n\n if (!this.initialValue) {\n this.initialValue = prop.getString();\n this.initialUnits = prop.getUnits();\n } // if we're past the end time\n\n\n if (this.duration > this.maxDuration) {\n var fill = this.getAttribute('fill').getString('remove'); // loop for indefinitely repeating animations\n\n if (this.getAttribute('repeatCount').getString() === 'indefinite' || this.getAttribute('repeatDur').getString() === 'indefinite') {\n this.duration = 0;\n } else if (fill === 'freeze' && !this.frozen) {\n this.frozen = true;\n parent.animationFrozen = true;\n parent.animationFrozenValue = prop.getString();\n } else if (fill === 'remove' && !this.removed) {\n this.removed = true;\n prop.setValue(parent.animationFrozen ? parent.animationFrozenValue : this.initialValue);\n return true;\n }\n\n return false;\n }\n\n this.duration += delta; // if we're past the begin time\n\n var updated = false;\n\n if (this.begin < this.duration) {\n var newValue = this.calcValue(); // tween\n\n var typeAttr = this.getAttribute('type');\n\n if (typeAttr.hasValue()) {\n // for transform, etc.\n var type = typeAttr.getString();\n newValue = \"\".concat(type, \"(\").concat(newValue, \")\");\n }\n\n prop.setValue(newValue);\n updated = true;\n }\n\n return updated;\n }\n\n getProgress() {\n var {\n document,\n values\n } = this;\n var result = {\n progress: (this.duration - this.begin) / (this.maxDuration - this.begin)\n };\n\n if (values.hasValue()) {\n var p = result.progress * (values.getValue().length - 1);\n var lb = Math.floor(p);\n var ub = Math.ceil(p);\n result.from = new Property(document, 'from', parseFloat(values.getValue()[lb]));\n result.to = new Property(document, 'to', parseFloat(values.getValue()[ub]));\n result.progress = (p - lb) / (ub - lb);\n } else {\n result.from = this.from;\n result.to = this.to;\n }\n\n return result;\n }\n\n}\n\nclass AnimateColorElement extends AnimateElement {\n constructor() {\n super(...arguments);\n this.type = 'animateColor';\n }\n\n calcValue() {\n var {\n progress,\n from,\n to\n } = this.getProgress();\n var colorFrom = new RGBColor(from.getColor());\n var colorTo = new RGBColor(to.getColor());\n\n if (colorFrom.ok && colorTo.ok) {\n // tween color linearly\n var r = colorFrom.r + (colorTo.r - colorFrom.r) * progress;\n var g = colorFrom.g + (colorTo.g - colorFrom.g) * progress;\n var b = colorFrom.b + (colorTo.b - colorFrom.b) * progress; // ? alpha\n\n return \"rgb(\".concat(Math.floor(r), \", \").concat(Math.floor(g), \", \").concat(Math.floor(b), \")\");\n }\n\n return this.getAttribute('from').getColor();\n }\n\n}\n\nclass AnimateTransformElement extends AnimateElement {\n constructor() {\n super(...arguments);\n this.type = 'animateTransform';\n }\n\n calcValue() {\n var {\n progress,\n from,\n to\n } = this.getProgress(); // tween value linearly\n\n var transformFrom = toNumbers(from.getString());\n var transformTo = toNumbers(to.getString());\n var newValue = transformFrom.map((from, i) => {\n var to = transformTo[i];\n return from + (to - from) * progress;\n }).join(' ');\n return newValue;\n }\n\n}\n\nclass FontElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'font';\n this.glyphs = {};\n this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n var {\n definitions\n } = document;\n var {\n children\n } = this;\n\n for (var child of children) {\n switch (child.type) {\n case 'font-face':\n {\n this.fontFace = child;\n var fontFamilyStyle = child.getStyle('font-family');\n\n if (fontFamilyStyle.hasValue()) {\n definitions[fontFamilyStyle.getString()] = this;\n }\n\n break;\n }\n\n case 'missing-glyph':\n this.missingGlyph = child;\n break;\n\n case 'glyph':\n {\n var glyph = child;\n\n if (glyph.arabicForm) {\n this.isRTL = true;\n this.isArabic = true;\n\n if (typeof this.glyphs[glyph.unicode] === 'undefined') {\n this.glyphs[glyph.unicode] = {};\n }\n\n this.glyphs[glyph.unicode][glyph.arabicForm] = glyph;\n } else {\n this.glyphs[glyph.unicode] = glyph;\n }\n\n break;\n }\n }\n }\n }\n\n render() {// NO RENDER\n }\n\n}\n\nclass FontFaceElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'font-face';\n this.ascent = this.getAttribute('ascent').getNumber();\n this.descent = this.getAttribute('descent').getNumber();\n this.unitsPerEm = this.getAttribute('units-per-em').getNumber();\n }\n\n}\n\nclass MissingGlyphElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'missing-glyph';\n this.horizAdvX = 0;\n }\n\n}\n\nclass TRefElement extends TextElement {\n constructor() {\n super(...arguments);\n this.type = 'tref';\n }\n\n getText() {\n var element = this.getHrefAttribute().getDefinition();\n\n if (element) {\n var firstChild = element.children[0];\n\n if (firstChild) {\n return firstChild.getText();\n }\n }\n\n return '';\n }\n\n}\n\nclass AElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'a';\n var {\n childNodes\n } = node;\n var firstChild = childNodes[0];\n var hasText = childNodes.length > 0 && Array.from(childNodes).every(node => node.nodeType === 3);\n this.hasText = hasText;\n this.text = hasText ? this.getTextFromNode(firstChild) : '';\n }\n\n getText() {\n return this.text;\n }\n\n renderChildren(ctx) {\n if (this.hasText) {\n // render as text element\n super.renderChildren(ctx);\n var {\n document,\n x,\n y\n } = this;\n var {\n mouse\n } = document.screen;\n var fontSize = new Property(document, 'fontSize', Font.parse(document.ctx.font).fontSize); // Do not calc bounding box if mouse is not working.\n\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, new BoundingBox(x, y - fontSize.getPixels('y'), x + this.measureText(ctx), y));\n }\n } else if (this.children.length > 0) {\n // render as temporary group\n var g = new GElement(this.document, null);\n g.children = this.children;\n g.parent = this;\n g.render(ctx);\n }\n }\n\n onClick() {\n var {\n window\n } = this.document;\n\n if (window) {\n window.open(this.getHrefAttribute().getString());\n }\n }\n\n onMouseMove() {\n var ctx = this.document.ctx;\n ctx.canvas.style.cursor = 'pointer';\n }\n\n}\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nclass TextPathElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'textPath';\n this.textWidth = 0;\n this.textHeight = 0;\n this.pathLength = -1;\n this.glyphInfo = null;\n this.letterSpacingCache = [];\n this.measuresCache = new Map([['', 0]]);\n var pathElement = this.getHrefAttribute().getDefinition();\n this.text = this.getTextFromNode();\n this.dataArray = this.parsePathData(pathElement);\n }\n\n getText() {\n return this.text;\n }\n\n path(ctx) {\n var {\n dataArray\n } = this;\n\n if (ctx) {\n ctx.beginPath();\n }\n\n dataArray.forEach(_ref => {\n var {\n type,\n points\n } = _ref;\n\n switch (type) {\n case PathParser.LINE_TO:\n if (ctx) {\n ctx.lineTo(points[0], points[1]);\n }\n\n break;\n\n case PathParser.MOVE_TO:\n if (ctx) {\n ctx.moveTo(points[0], points[1]);\n }\n\n break;\n\n case PathParser.CURVE_TO:\n if (ctx) {\n ctx.bezierCurveTo(points[0], points[1], points[2], points[3], points[4], points[5]);\n }\n\n break;\n\n case PathParser.QUAD_TO:\n if (ctx) {\n ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);\n }\n\n break;\n\n case PathParser.ARC:\n {\n var [cx, cy, rx, ry, theta, dTheta, psi, fs] = points;\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n\n if (ctx) {\n ctx.translate(cx, cy);\n ctx.rotate(psi);\n ctx.scale(scaleX, scaleY);\n ctx.arc(0, 0, r, theta, theta + dTheta, Boolean(1 - fs));\n ctx.scale(1 / scaleX, 1 / scaleY);\n ctx.rotate(-psi);\n ctx.translate(-cx, -cy);\n }\n\n break;\n }\n\n case PathParser.CLOSE_PATH:\n if (ctx) {\n ctx.closePath();\n }\n\n break;\n }\n });\n }\n\n renderChildren(ctx) {\n this.setTextData(ctx);\n ctx.save();\n var textDecoration = this.parent.getStyle('text-decoration').getString();\n var fontSize = this.getFontSize();\n var {\n glyphInfo\n } = this;\n var fill = ctx.fillStyle;\n\n if (textDecoration === 'underline') {\n ctx.beginPath();\n }\n\n glyphInfo.forEach((glyph, i) => {\n var {\n p0,\n p1,\n rotation,\n text: partialText\n } = glyph;\n ctx.save();\n ctx.translate(p0.x, p0.y);\n ctx.rotate(rotation);\n\n if (ctx.fillStyle) {\n ctx.fillText(partialText, 0, 0);\n }\n\n if (ctx.strokeStyle) {\n ctx.strokeText(partialText, 0, 0);\n }\n\n ctx.restore();\n\n if (textDecoration === 'underline') {\n if (i === 0) {\n ctx.moveTo(p0.x, p0.y + fontSize / 8);\n }\n\n ctx.lineTo(p1.x, p1.y + fontSize / 5);\n } // // To assist with debugging visually, uncomment following\n //\n // ctx.beginPath();\n // if (i % 2)\n // \tctx.strokeStyle = 'red';\n // else\n // \tctx.strokeStyle = 'green';\n // ctx.moveTo(p0.x, p0.y);\n // ctx.lineTo(p1.x, p1.y);\n // ctx.stroke();\n // ctx.closePath();\n\n });\n\n if (textDecoration === 'underline') {\n ctx.lineWidth = fontSize / 20;\n ctx.strokeStyle = fill;\n ctx.stroke();\n ctx.closePath();\n }\n\n ctx.restore();\n }\n\n getLetterSpacingAt() {\n var idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return this.letterSpacingCache[idx] || 0;\n }\n\n findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, dy, c, charI) {\n var offset = inputOffset;\n var glyphWidth = this.measureText(ctx, c);\n\n if (c === ' ' && anchor === 'justify' && textFullWidth < fullPathWidth) {\n glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;\n }\n\n if (charI > -1) {\n offset += this.getLetterSpacingAt(charI);\n }\n\n var splineStep = this.textHeight / 20;\n var p0 = this.getEquidistantPointOnPath(offset, splineStep, 0);\n var p1 = this.getEquidistantPointOnPath(offset + glyphWidth, splineStep, 0);\n var segment = {\n p0,\n p1\n };\n var rotation = p0 && p1 ? Math.atan2(p1.y - p0.y, p1.x - p0.x) : 0;\n\n if (dy) {\n var dyX = Math.cos(Math.PI / 2 + rotation) * dy;\n var dyY = Math.cos(-rotation) * dy;\n segment.p0 = _objectSpread$2(_objectSpread$2({}, p0), {}, {\n x: p0.x + dyX,\n y: p0.y + dyY\n });\n segment.p1 = _objectSpread$2(_objectSpread$2({}, p1), {}, {\n x: p1.x + dyX,\n y: p1.y + dyY\n });\n }\n\n offset += glyphWidth;\n return {\n offset,\n segment,\n rotation\n };\n }\n\n measureText(ctx, text) {\n var {\n measuresCache\n } = this;\n var targetText = text || this.getText();\n\n if (measuresCache.has(targetText)) {\n return measuresCache.get(targetText);\n }\n\n var measure = this.measureTargetText(ctx, targetText);\n measuresCache.set(targetText, measure);\n return measure;\n } // This method supposes what all custom fonts already loaded.\n // If some font will be loaded after this method call, will not be rendered correctly.\n // You need to call this method manually to update glyphs cache.\n\n\n setTextData(ctx) {\n if (this.glyphInfo) {\n return;\n }\n\n var renderText = this.getText();\n var chars = renderText.split('');\n var spacesNumber = renderText.split(' ').length - 1;\n var dx = this.parent.getAttribute('dx').split().map(_ => _.getPixels('x'));\n var dy = this.parent.getAttribute('dy').getPixels('y');\n var anchor = this.parent.getStyle('text-anchor').getString('start');\n var thisSpacing = this.getStyle('letter-spacing');\n var parentSpacing = this.parent.getStyle('letter-spacing');\n var letterSpacing = 0;\n\n if (!thisSpacing.hasValue() || thisSpacing.getValue() === 'inherit') {\n letterSpacing = parentSpacing.getPixels();\n } else if (thisSpacing.hasValue()) {\n if (thisSpacing.getValue() !== 'initial' && thisSpacing.getValue() !== 'unset') {\n letterSpacing = thisSpacing.getPixels();\n }\n } // fill letter-spacing cache\n\n\n var letterSpacingCache = [];\n var textLen = renderText.length;\n this.letterSpacingCache = letterSpacingCache;\n\n for (var i = 0; i < textLen; i++) {\n letterSpacingCache.push(typeof dx[i] !== 'undefined' ? dx[i] : letterSpacing);\n }\n\n var dxSum = letterSpacingCache.reduce((acc, cur, i) => i === 0 ? 0 : acc + cur || 0, 0);\n var textWidth = this.measureText(ctx);\n var textFullWidth = Math.max(textWidth + dxSum, 0);\n this.textWidth = textWidth;\n this.textHeight = this.getFontSize();\n this.glyphInfo = [];\n var fullPathWidth = this.getPathLength();\n var startOffset = this.getStyle('startOffset').getNumber(0) * fullPathWidth;\n var offset = 0;\n\n if (anchor === 'middle' || anchor === 'center') {\n offset = -textFullWidth / 2;\n }\n\n if (anchor === 'end' || anchor === 'right') {\n offset = -textFullWidth;\n }\n\n offset += startOffset;\n chars.forEach((char, i) => {\n // Find such segment what distance between p0 and p1 is approx. width of glyph\n var {\n offset: nextOffset,\n segment,\n rotation\n } = this.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, dy, char, i);\n offset = nextOffset;\n\n if (!segment.p0 || !segment.p1) {\n return;\n } // const width = this.getLineLength(\n // \tsegment.p0.x,\n // \tsegment.p0.y,\n // \tsegment.p1.x,\n // \tsegment.p1.y\n // );\n // Note: Since glyphs are rendered one at a time, any kerning pair data built into the font will not be used.\n // Can foresee having a rough pair table built in that the developer can override as needed.\n // Or use \"dx\" attribute of the node as a naive replacement\n // const kern = 0;\n // placeholder for future implementation\n // const midpoint = this.getPointOnLine(\n // \tkern + width / 2.0,\n // \tsegment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y\n // );\n\n\n this.glyphInfo.push({\n // transposeX: midpoint.x,\n // transposeY: midpoint.y,\n text: chars[i],\n p0: segment.p0,\n p1: segment.p1,\n rotation\n });\n });\n }\n\n parsePathData(path) {\n this.pathLength = -1; // reset path length\n\n if (!path) {\n return [];\n }\n\n var pathCommands = [];\n var {\n pathParser\n } = path;\n pathParser.reset(); // convert l, H, h, V, and v to L\n\n while (!pathParser.isEnd()) {\n var {\n current\n } = pathParser;\n var startX = current ? current.x : 0;\n var startY = current ? current.y : 0;\n var command = pathParser.next();\n var nextCommandType = command.type;\n var points = [];\n\n switch (command.type) {\n case PathParser.MOVE_TO:\n this.pathM(pathParser, points);\n break;\n\n case PathParser.LINE_TO:\n nextCommandType = this.pathL(pathParser, points);\n break;\n\n case PathParser.HORIZ_LINE_TO:\n nextCommandType = this.pathH(pathParser, points);\n break;\n\n case PathParser.VERT_LINE_TO:\n nextCommandType = this.pathV(pathParser, points);\n break;\n\n case PathParser.CURVE_TO:\n this.pathC(pathParser, points);\n break;\n\n case PathParser.SMOOTH_CURVE_TO:\n nextCommandType = this.pathS(pathParser, points);\n break;\n\n case PathParser.QUAD_TO:\n this.pathQ(pathParser, points);\n break;\n\n case PathParser.SMOOTH_QUAD_TO:\n nextCommandType = this.pathT(pathParser, points);\n break;\n\n case PathParser.ARC:\n points = this.pathA(pathParser);\n break;\n\n case PathParser.CLOSE_PATH:\n PathElement.pathZ(pathParser);\n break;\n }\n\n if (command.type !== PathParser.CLOSE_PATH) {\n pathCommands.push({\n type: nextCommandType,\n points,\n start: {\n x: startX,\n y: startY\n },\n pathLength: this.calcLength(startX, startY, nextCommandType, points)\n });\n } else {\n pathCommands.push({\n type: PathParser.CLOSE_PATH,\n points: [],\n pathLength: 0\n });\n }\n }\n\n return pathCommands;\n }\n\n pathM(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathM(pathParser).point;\n points.push(x, y);\n }\n\n pathL(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathL(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathH(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathH(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathV(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathV(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathC(pathParser, points) {\n var {\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathC(pathParser);\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n\n pathS(pathParser, points) {\n var {\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathS(pathParser);\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n return PathParser.CURVE_TO;\n }\n\n pathQ(pathParser, points) {\n var {\n controlPoint,\n currentPoint\n } = PathElement.pathQ(pathParser);\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n\n pathT(pathParser, points) {\n var {\n controlPoint,\n currentPoint\n } = PathElement.pathT(pathParser);\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n return PathParser.QUAD_TO;\n }\n\n pathA(pathParser) {\n var {\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n } = PathElement.pathA(pathParser);\n\n if (sweepFlag === 0 && ad > 0) {\n ad -= 2 * Math.PI;\n }\n\n if (sweepFlag === 1 && ad < 0) {\n ad += 2 * Math.PI;\n }\n\n return [centp.x, centp.y, rX, rY, a1, ad, xAxisRotation, sweepFlag];\n }\n\n calcLength(x, y, commandType, points) {\n var len = 0;\n var p1 = null;\n var p2 = null;\n var t = 0;\n\n switch (commandType) {\n case PathParser.LINE_TO:\n return this.getLineLength(x, y, points[0], points[1]);\n\n case PathParser.CURVE_TO:\n // Approximates by breaking curve into 100 line segments\n len = 0.0;\n p1 = this.getPointOnCubicBezier(0, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = this.getPointOnCubicBezier(t, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n\n return len;\n\n case PathParser.QUAD_TO:\n // Approximates by breaking curve into 100 line segments\n len = 0.0;\n p1 = this.getPointOnQuadraticBezier(0, x, y, points[0], points[1], points[2], points[3]);\n\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = this.getPointOnQuadraticBezier(t, x, y, points[0], points[1], points[2], points[3]);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n\n return len;\n\n case PathParser.ARC:\n {\n // Approximates by breaking curve into line segments\n len = 0.0;\n var start = points[4]; // 4 = theta\n\n var dTheta = points[5]; // 5 = dTheta\n\n var end = points[4] + dTheta;\n var inc = Math.PI / 180.0; // 1 degree resolution\n\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n } // Note: for purpose of calculating arc length, not going to worry about rotating X-axis by angle psi\n\n\n p1 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n\n if (dTheta < 0) {\n // clockwise\n for (t = start - inc; t > end; t -= inc) {\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n } else {\n // counter-clockwise\n for (t = start + inc; t < end; t += inc) {\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n return len;\n }\n }\n\n return 0;\n }\n\n getPointOnLine(dist, p1x, p1y, p2x, p2y) {\n var fromX = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : p1x;\n var fromY = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : p1y;\n var m = (p2y - p1y) / (p2x - p1x + PSEUDO_ZERO);\n var run = Math.sqrt(dist * dist / (1 + m * m));\n\n if (p2x < p1x) {\n run *= -1;\n }\n\n var rise = m * run;\n var pt = null;\n\n if (p2x === p1x) {\n // vertical line\n pt = {\n x: fromX,\n y: fromY + rise\n };\n } else if ((fromY - p1y) / (fromX - p1x + PSEUDO_ZERO) === m) {\n pt = {\n x: fromX + run,\n y: fromY + rise\n };\n } else {\n var ix = 0;\n var iy = 0;\n var len = this.getLineLength(p1x, p1y, p2x, p2y);\n\n if (len < PSEUDO_ZERO) {\n return null;\n }\n\n var u = (fromX - p1x) * (p2x - p1x) + (fromY - p1y) * (p2y - p1y);\n u /= len * len;\n ix = p1x + u * (p2x - p1x);\n iy = p1y + u * (p2y - p1y);\n var pRise = this.getLineLength(fromX, fromY, ix, iy);\n var pRun = Math.sqrt(dist * dist - pRise * pRise);\n run = Math.sqrt(pRun * pRun / (1 + m * m));\n\n if (p2x < p1x) {\n run *= -1;\n }\n\n rise = m * run;\n pt = {\n x: ix + run,\n y: iy + rise\n };\n }\n\n return pt;\n }\n\n getPointOnPath(distance) {\n var fullLen = this.getPathLength();\n var cumulativePathLength = 0;\n var p = null;\n\n if (distance < -0.00005 || distance - 0.00005 > fullLen) {\n return null;\n }\n\n var {\n dataArray\n } = this;\n\n for (var command of dataArray) {\n if (command && (command.pathLength < 0.00005 || cumulativePathLength + command.pathLength + 0.00005 < distance)) {\n cumulativePathLength += command.pathLength;\n continue;\n }\n\n var delta = distance - cumulativePathLength;\n var currentT = 0;\n\n switch (command.type) {\n case PathParser.LINE_TO:\n p = this.getPointOnLine(delta, command.start.x, command.start.y, command.points[0], command.points[1], command.start.x, command.start.y);\n break;\n\n case PathParser.ARC:\n {\n var start = command.points[4]; // 4 = theta\n\n var dTheta = command.points[5]; // 5 = dTheta\n\n var end = command.points[4] + dTheta;\n currentT = start + delta / command.pathLength * dTheta;\n\n if (dTheta < 0 && currentT < end || dTheta >= 0 && currentT > end) {\n break;\n }\n\n p = this.getPointOnEllipticalArc(command.points[0], command.points[1], command.points[2], command.points[3], currentT, command.points[6]);\n break;\n }\n\n case PathParser.CURVE_TO:\n currentT = delta / command.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnCubicBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3], command.points[4], command.points[5]);\n break;\n\n case PathParser.QUAD_TO:\n currentT = delta / command.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnQuadraticBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3]);\n break;\n }\n\n if (p) {\n return p;\n }\n\n break;\n }\n\n return null;\n }\n\n getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n\n getPathLength() {\n if (this.pathLength === -1) {\n this.pathLength = this.dataArray.reduce((length, command) => command.pathLength > 0 ? length + command.pathLength : length, 0);\n }\n\n return this.pathLength;\n }\n\n getPointOnCubicBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {\n var x = p4x * CB1(pct) + p3x * CB2(pct) + p2x * CB3(pct) + p1x * CB4(pct);\n var y = p4y * CB1(pct) + p3y * CB2(pct) + p2y * CB3(pct) + p1y * CB4(pct);\n return {\n x,\n y\n };\n }\n\n getPointOnQuadraticBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y) {\n var x = p3x * QB1(pct) + p2x * QB2(pct) + p1x * QB3(pct);\n var y = p3y * QB1(pct) + p2y * QB2(pct) + p1y * QB3(pct);\n return {\n x,\n y\n };\n }\n\n getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n var cosPsi = Math.cos(psi);\n var sinPsi = Math.sin(psi);\n var pt = {\n x: rx * Math.cos(theta),\n y: ry * Math.sin(theta)\n };\n return {\n x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n y: cy + (pt.x * sinPsi + pt.y * cosPsi)\n };\n } // TODO need some optimisations. possibly build cache only for curved segments?\n\n\n buildEquidistantCache(inputStep, inputPrecision) {\n var fullLen = this.getPathLength();\n var precision = inputPrecision || 0.25; // accuracy vs performance\n\n var step = inputStep || fullLen / 100;\n\n if (!this.equidistantCache || this.equidistantCache.step !== step || this.equidistantCache.precision !== precision) {\n // Prepare cache\n this.equidistantCache = {\n step,\n precision,\n points: []\n }; // Calculate points\n\n var s = 0;\n\n for (var l = 0; l <= fullLen; l += precision) {\n var p0 = this.getPointOnPath(l);\n var p1 = this.getPointOnPath(l + precision);\n\n if (!p0 || !p1) {\n continue;\n }\n\n s += this.getLineLength(p0.x, p0.y, p1.x, p1.y);\n\n if (s >= step) {\n this.equidistantCache.points.push({\n x: p0.x,\n y: p0.y,\n distance: l\n });\n s -= step;\n }\n }\n }\n }\n\n getEquidistantPointOnPath(targetDistance, step, precision) {\n this.buildEquidistantCache(step, precision);\n\n if (targetDistance < 0 || targetDistance - this.getPathLength() > 0.00005) {\n return null;\n }\n\n var idx = Math.round(targetDistance / this.getPathLength() * (this.equidistantCache.points.length - 1));\n return this.equidistantCache.points[idx] || null;\n }\n\n}\n\nvar dataUriRegex = /^\\s*data:(([^/,;]+\\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i;\nclass ImageElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'image';\n this.loaded = false;\n var href = this.getHrefAttribute().getString();\n\n if (!href) {\n return;\n }\n\n var isSvg = href.endsWith('.svg') || /^\\s*data:image\\/svg\\+xml/i.test(href);\n document.images.push(this);\n\n if (!isSvg) {\n void this.loadImage(href);\n } else {\n void this.loadSvg(href);\n }\n\n this.isSvg = isSvg;\n }\n\n loadImage(href) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n try {\n var image = yield _this.document.createImage(href);\n _this.image = image;\n } catch (err) {\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n }\n\n _this.loaded = true;\n })();\n }\n\n loadSvg(href) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var match = dataUriRegex.exec(href);\n\n if (match) {\n var data = match[5];\n\n if (match[4] === 'base64') {\n _this2.image = atob(data);\n } else {\n _this2.image = decodeURIComponent(data);\n }\n } else {\n try {\n var response = yield _this2.document.fetch(href);\n var svg = yield response.text();\n _this2.image = svg;\n } catch (err) {\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n }\n }\n\n _this2.loaded = true;\n })();\n }\n\n renderChildren(ctx) {\n var {\n document,\n image,\n loaded\n } = this;\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n\n if (!loaded || !image || !width || !height) {\n return;\n }\n\n ctx.save();\n ctx.translate(x, y);\n\n if (this.isSvg) {\n var subDocument = document.canvg.forkString(ctx, this.image, {\n ignoreMouse: true,\n ignoreAnimation: true,\n ignoreDimensions: true,\n ignoreClear: true,\n offsetX: 0,\n offsetY: 0,\n scaleWidth: width,\n scaleHeight: height\n });\n subDocument.document.documentElement.parent = this;\n void subDocument.render();\n } else {\n var _image = this.image;\n document.setViewBox({\n ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width,\n desiredWidth: _image.width,\n height,\n desiredHeight: _image.height\n });\n\n if (this.loaded) {\n if (typeof _image.complete === 'undefined' || _image.complete) {\n ctx.drawImage(_image, 0, 0);\n }\n }\n }\n\n ctx.restore();\n }\n\n getBoundingBox() {\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n return new BoundingBox(x, y, x + width, y + height);\n }\n\n}\n\nclass SymbolElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'symbol';\n }\n\n render(_) {// NO RENDER\n }\n\n}\n\nclass SVGFontLoader {\n constructor(document) {\n this.document = document;\n this.loaded = false;\n document.fonts.push(this);\n }\n\n load(fontFamily, url) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n try {\n var {\n document\n } = _this;\n var svgDocument = yield document.canvg.parser.load(url);\n var fonts = svgDocument.getElementsByTagName('font');\n Array.from(fonts).forEach(fontNode => {\n var font = document.createElement(fontNode);\n document.definitions[fontFamily] = font;\n });\n } catch (err) {\n console.error(\"Error while loading font \\\"\".concat(url, \"\\\":\"), err);\n }\n\n _this.loaded = true;\n })();\n }\n\n}\n\nclass StyleElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'style';\n var css = compressSpaces(Array.from(node.childNodes) // NEED TEST\n .map(_ => _.textContent).join('').replace(/(\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+\\/)|(^[\\s]*\\/\\/.*)/gm, '') // remove comments\n .replace(/@import.*;/g, '') // remove imports\n );\n var cssDefs = css.split('}');\n cssDefs.forEach(_ => {\n var def = _.trim();\n\n if (!def) {\n return;\n }\n\n var cssParts = def.split('{');\n var cssClasses = cssParts[0].split(',');\n var cssProps = cssParts[1].split(';');\n cssClasses.forEach(_ => {\n var cssClass = _.trim();\n\n if (!cssClass) {\n return;\n }\n\n var props = document.styles[cssClass] || {};\n cssProps.forEach(cssProp => {\n var prop = cssProp.indexOf(':');\n var name = cssProp.substr(0, prop).trim();\n var value = cssProp.substr(prop + 1, cssProp.length - prop).trim();\n\n if (name && value) {\n props[name] = new Property(document, name, value);\n }\n });\n document.styles[cssClass] = props;\n document.stylesSpecificity[cssClass] = getSelectorSpecificity(cssClass);\n\n if (cssClass === '@font-face') {\n // && !nodeEnv\n var fontFamily = props['font-family'].getString().replace(/\"|'/g, '');\n var srcs = props.src.getString().split(',');\n srcs.forEach(src => {\n if (src.indexOf('format(\"svg\")') > 0) {\n var url = parseExternalUrl(src);\n\n if (url) {\n void new SVGFontLoader(document).load(fontFamily, url);\n }\n }\n });\n }\n });\n });\n }\n\n}\nStyleElement.parseExternalUrl = parseExternalUrl;\n\nclass UseElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'use';\n }\n\n setContext(ctx) {\n super.setContext(ctx);\n var xAttr = this.getAttribute('x');\n var yAttr = this.getAttribute('y');\n\n if (xAttr.hasValue()) {\n ctx.translate(xAttr.getPixels('x'), 0);\n }\n\n if (yAttr.hasValue()) {\n ctx.translate(0, yAttr.getPixels('y'));\n }\n }\n\n path(ctx) {\n var {\n element\n } = this;\n\n if (element) {\n element.path(ctx);\n }\n }\n\n renderChildren(ctx) {\n var {\n document,\n element\n } = this;\n\n if (element) {\n var tempSvg = element;\n\n if (element.type === 'symbol') {\n // render me using a temporary svg element in symbol cases (http://www.w3.org/TR/SVG/struct.html#UseElement)\n tempSvg = new SVGElement(document, null);\n tempSvg.attributes.viewBox = new Property(document, 'viewBox', element.getAttribute('viewBox').getString());\n tempSvg.attributes.preserveAspectRatio = new Property(document, 'preserveAspectRatio', element.getAttribute('preserveAspectRatio').getString());\n tempSvg.attributes.overflow = new Property(document, 'overflow', element.getAttribute('overflow').getString());\n tempSvg.children = element.children; // element is still the parent of the children\n\n element.styles.opacity = new Property(document, 'opacity', this.calculateOpacity());\n }\n\n if (tempSvg.type === 'svg') {\n var widthStyle = this.getStyle('width', false, true);\n var heightStyle = this.getStyle('height', false, true); // if symbol or svg, inherit width/height from me\n\n if (widthStyle.hasValue()) {\n tempSvg.attributes.width = new Property(document, 'width', widthStyle.getString());\n }\n\n if (heightStyle.hasValue()) {\n tempSvg.attributes.height = new Property(document, 'height', heightStyle.getString());\n }\n }\n\n var oldParent = tempSvg.parent;\n tempSvg.parent = this;\n tempSvg.render(ctx);\n tempSvg.parent = oldParent;\n }\n }\n\n getBoundingBox(ctx) {\n var {\n element\n } = this;\n\n if (element) {\n return element.getBoundingBox(ctx);\n }\n\n return null;\n }\n\n elementTransform() {\n var {\n document,\n element\n } = this;\n return Transform.fromElement(document, element);\n }\n\n get element() {\n if (!this.cachedElement) {\n this.cachedElement = this.getHrefAttribute().getDefinition();\n }\n\n return this.cachedElement;\n }\n\n}\n\nfunction imGet(img, x, y, width, _height, rgba) {\n return img[y * width * 4 + x * 4 + rgba];\n}\n\nfunction imSet(img, x, y, width, _height, rgba, val) {\n img[y * width * 4 + x * 4 + rgba] = val;\n}\n\nfunction m(matrix, i, v) {\n var mi = matrix[i];\n return mi * v;\n}\n\nfunction c(a, m1, m2, m3) {\n return m1 + Math.cos(a) * m2 + Math.sin(a) * m3;\n}\n\nclass FeColorMatrixElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feColorMatrix';\n var matrix = toNumbers(this.getAttribute('values').getString());\n\n switch (this.getAttribute('type').getString('matrix')) {\n // http://www.w3.org/TR/SVG/filters.html#feColorMatrixElement\n case 'saturate':\n {\n var s = matrix[0];\n /* eslint-disable array-element-newline */\n\n matrix = [0.213 + 0.787 * s, 0.715 - 0.715 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 + 0.285 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 - 0.715 * s, 0.072 + 0.928 * s, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n /* eslint-enable array-element-newline */\n\n break;\n }\n\n case 'hueRotate':\n {\n var a = matrix[0] * Math.PI / 180.0;\n /* eslint-disable array-element-newline */\n\n matrix = [c(a, 0.213, 0.787, -0.213), c(a, 0.715, -0.715, -0.715), c(a, 0.072, -0.072, 0.928), 0, 0, c(a, 0.213, -0.213, 0.143), c(a, 0.715, 0.285, 0.140), c(a, 0.072, -0.072, -0.283), 0, 0, c(a, 0.213, -0.213, -0.787), c(a, 0.715, -0.715, 0.715), c(a, 0.072, 0.928, 0.072), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n /* eslint-enable array-element-newline */\n\n break;\n }\n\n case 'luminanceToAlpha':\n /* eslint-disable array-element-newline */\n matrix = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2125, 0.7154, 0.0721, 0, 0, 0, 0, 0, 0, 1];\n /* eslint-enable array-element-newline */\n\n break;\n }\n\n this.matrix = matrix;\n this.includeOpacity = this.getAttribute('includeOpacity').hasValue();\n }\n\n apply(ctx, _x, _y, width, height) {\n // assuming x==0 && y==0 for now\n var {\n includeOpacity,\n matrix\n } = this;\n var srcData = ctx.getImageData(0, 0, width, height);\n\n for (var y = 0; y < height; y++) {\n for (var x = 0; x < width; x++) {\n var r = imGet(srcData.data, x, y, width, height, 0);\n var g = imGet(srcData.data, x, y, width, height, 1);\n var b = imGet(srcData.data, x, y, width, height, 2);\n var a = imGet(srcData.data, x, y, width, height, 3);\n var nr = m(matrix, 0, r) + m(matrix, 1, g) + m(matrix, 2, b) + m(matrix, 3, a) + m(matrix, 4, 1);\n var ng = m(matrix, 5, r) + m(matrix, 6, g) + m(matrix, 7, b) + m(matrix, 8, a) + m(matrix, 9, 1);\n var nb = m(matrix, 10, r) + m(matrix, 11, g) + m(matrix, 12, b) + m(matrix, 13, a) + m(matrix, 14, 1);\n var na = m(matrix, 15, r) + m(matrix, 16, g) + m(matrix, 17, b) + m(matrix, 18, a) + m(matrix, 19, 1);\n\n if (includeOpacity) {\n nr = 0;\n ng = 0;\n nb = 0;\n na *= a / 255;\n }\n\n imSet(srcData.data, x, y, width, height, 0, nr);\n imSet(srcData.data, x, y, width, height, 1, ng);\n imSet(srcData.data, x, y, width, height, 2, nb);\n imSet(srcData.data, x, y, width, height, 3, na);\n }\n }\n\n ctx.clearRect(0, 0, width, height);\n ctx.putImageData(srcData, 0, 0);\n }\n\n}\n\nclass MaskElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'mask';\n }\n\n apply(ctx, element) {\n var {\n document\n } = this; // render as temp svg\n\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n\n if (!width && !height) {\n var boundingBox = new BoundingBox();\n this.children.forEach(child => {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n x = Math.floor(boundingBox.x1);\n y = Math.floor(boundingBox.y1);\n width = Math.floor(boundingBox.width);\n height = Math.floor(boundingBox.height);\n }\n\n var ignoredStyles = this.removeStyles(element, MaskElement.ignoreStyles);\n var maskCanvas = document.createCanvas(x + width, y + height);\n var maskCtx = maskCanvas.getContext('2d');\n document.screen.setDefaults(maskCtx);\n this.renderChildren(maskCtx); // convert mask to alpha with a fake node\n // TODO: refactor out apply from feColorMatrix\n\n new FeColorMatrixElement(document, {\n nodeType: 1,\n childNodes: [],\n attributes: [{\n nodeName: 'type',\n value: 'luminanceToAlpha'\n }, {\n nodeName: 'includeOpacity',\n value: 'true'\n }]\n }).apply(maskCtx, 0, 0, x + width, y + height);\n var tmpCanvas = document.createCanvas(x + width, y + height);\n var tmpCtx = tmpCanvas.getContext('2d');\n document.screen.setDefaults(tmpCtx);\n element.render(tmpCtx);\n tmpCtx.globalCompositeOperation = 'destination-in';\n tmpCtx.fillStyle = maskCtx.createPattern(maskCanvas, 'no-repeat');\n tmpCtx.fillRect(0, 0, x + width, y + height);\n ctx.fillStyle = tmpCtx.createPattern(tmpCanvas, 'no-repeat');\n ctx.fillRect(0, 0, x + width, y + height); // reassign mask\n\n this.restoreStyles(element, ignoredStyles);\n }\n\n render(_) {// NO RENDER\n }\n\n}\nMaskElement.ignoreStyles = ['mask', 'transform', 'clip-path'];\n\nvar noop = () => {// NOOP\n};\n\nclass ClipPathElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'clipPath';\n }\n\n apply(ctx) {\n var {\n document\n } = this;\n var contextProto = Reflect.getPrototypeOf(ctx);\n var {\n beginPath,\n closePath\n } = ctx;\n\n if (contextProto) {\n contextProto.beginPath = noop;\n contextProto.closePath = noop;\n }\n\n Reflect.apply(beginPath, ctx, []);\n this.children.forEach(child => {\n if (typeof child.path === 'undefined') {\n return;\n }\n\n var transform = typeof child.elementTransform !== 'undefined' ? child.elementTransform() : null; // handle \n\n if (!transform) {\n transform = Transform.fromElement(document, child);\n }\n\n if (transform) {\n transform.apply(ctx);\n }\n\n child.path(ctx);\n\n if (contextProto) {\n contextProto.closePath = closePath;\n }\n\n if (transform) {\n transform.unapply(ctx);\n }\n });\n Reflect.apply(closePath, ctx, []);\n ctx.clip();\n\n if (contextProto) {\n contextProto.beginPath = beginPath;\n contextProto.closePath = closePath;\n }\n }\n\n render(_) {// NO RENDER\n }\n\n}\n\nclass FilterElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'filter';\n }\n\n apply(ctx, element) {\n // render as temp svg\n var {\n document,\n children\n } = this;\n var boundingBox = element.getBoundingBox(ctx);\n\n if (!boundingBox) {\n return;\n }\n\n var px = 0;\n var py = 0;\n children.forEach(child => {\n var efd = child.extraFilterDistance || 0;\n px = Math.max(px, efd);\n py = Math.max(py, efd);\n });\n var width = Math.floor(boundingBox.width);\n var height = Math.floor(boundingBox.height);\n var tmpCanvasWidth = width + 2 * px;\n var tmpCanvasHeight = height + 2 * py;\n\n if (tmpCanvasWidth < 1 || tmpCanvasHeight < 1) {\n return;\n }\n\n var x = Math.floor(boundingBox.x);\n var y = Math.floor(boundingBox.y);\n var ignoredStyles = this.removeStyles(element, FilterElement.ignoreStyles);\n var tmpCanvas = document.createCanvas(tmpCanvasWidth, tmpCanvasHeight);\n var tmpCtx = tmpCanvas.getContext('2d');\n document.screen.setDefaults(tmpCtx);\n tmpCtx.translate(-x + px, -y + py);\n element.render(tmpCtx); // apply filters\n\n children.forEach(child => {\n if (typeof child.apply === 'function') {\n child.apply(tmpCtx, 0, 0, tmpCanvasWidth, tmpCanvasHeight);\n }\n }); // render on me\n\n ctx.drawImage(tmpCanvas, 0, 0, tmpCanvasWidth, tmpCanvasHeight, x - px, y - py, tmpCanvasWidth, tmpCanvasHeight);\n this.restoreStyles(element, ignoredStyles);\n }\n\n render(_) {// NO RENDER\n }\n\n}\nFilterElement.ignoreStyles = ['filter', 'transform', 'clip-path'];\n\nclass FeDropShadowElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feDropShadow';\n this.addStylesFromStyleDefinition();\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeMorphologyElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'feMorphology';\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeCompositeElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'feComposite';\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeGaussianBlurElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feGaussianBlur';\n this.blurRadius = Math.floor(this.getAttribute('stdDeviation').getNumber());\n this.extraFilterDistance = this.blurRadius;\n }\n\n apply(ctx, x, y, width, height) {\n var {\n document,\n blurRadius\n } = this;\n var body = document.window ? document.window.document.body : null;\n var canvas = ctx.canvas; // StackBlur requires canvas be on document\n\n canvas.id = document.getUniqueId();\n\n if (body) {\n canvas.style.display = 'none';\n body.appendChild(canvas);\n }\n\n canvasRGBA(canvas, x, y, width, height, blurRadius);\n\n if (body) {\n body.removeChild(canvas);\n }\n }\n\n}\n\nclass TitleElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'title';\n }\n\n}\n\nclass DescElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'desc';\n }\n\n}\n\nvar elements = {\n 'svg': SVGElement,\n 'rect': RectElement,\n 'circle': CircleElement,\n 'ellipse': EllipseElement,\n 'line': LineElement,\n 'polyline': PolylineElement,\n 'polygon': PolygonElement,\n 'path': PathElement,\n 'pattern': PatternElement,\n 'marker': MarkerElement,\n 'defs': DefsElement,\n 'linearGradient': LinearGradientElement,\n 'radialGradient': RadialGradientElement,\n 'stop': StopElement,\n 'animate': AnimateElement,\n 'animateColor': AnimateColorElement,\n 'animateTransform': AnimateTransformElement,\n 'font': FontElement,\n 'font-face': FontFaceElement,\n 'missing-glyph': MissingGlyphElement,\n 'glyph': GlyphElement,\n 'text': TextElement,\n 'tspan': TSpanElement,\n 'tref': TRefElement,\n 'a': AElement,\n 'textPath': TextPathElement,\n 'image': ImageElement,\n 'g': GElement,\n 'symbol': SymbolElement,\n 'style': StyleElement,\n 'use': UseElement,\n 'mask': MaskElement,\n 'clipPath': ClipPathElement,\n 'filter': FilterElement,\n 'feDropShadow': FeDropShadowElement,\n 'feMorphology': FeMorphologyElement,\n 'feComposite': FeCompositeElement,\n 'feColorMatrix': FeColorMatrixElement,\n 'feGaussianBlur': FeGaussianBlurElement,\n 'title': TitleElement,\n 'desc': DescElement\n};\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction createCanvas(width, height) {\n var canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\n\nfunction createImage(_x) {\n return _createImage.apply(this, arguments);\n}\n\nfunction _createImage() {\n _createImage = _asyncToGenerator(function* (src) {\n var anonymousCrossOrigin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var image = document.createElement('img');\n\n if (anonymousCrossOrigin) {\n image.crossOrigin = 'Anonymous';\n }\n\n return new Promise((resolve, reject) => {\n image.onload = () => {\n resolve(image);\n };\n\n image.onerror = (_event, _source, _lineno, _colno, error) => {\n reject(error);\n };\n\n image.src = src;\n });\n });\n return _createImage.apply(this, arguments);\n}\n\nclass Document {\n constructor(canvg) {\n var {\n rootEmSize = 12,\n emSize = 12,\n createCanvas = Document.createCanvas,\n createImage = Document.createImage,\n anonymousCrossOrigin\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.canvg = canvg;\n this.definitions = {};\n this.styles = {};\n this.stylesSpecificity = {};\n this.images = [];\n this.fonts = [];\n this.emSizeStack = [];\n this.uniqueId = 0;\n this.screen = canvg.screen;\n this.rootEmSize = rootEmSize;\n this.emSize = emSize;\n this.createCanvas = createCanvas;\n this.createImage = this.bindCreateImage(createImage, anonymousCrossOrigin);\n this.screen.wait(this.isImagesLoaded.bind(this));\n this.screen.wait(this.isFontsLoaded.bind(this));\n }\n\n bindCreateImage(createImage, anonymousCrossOrigin) {\n if (typeof anonymousCrossOrigin === 'boolean') {\n return (source, forceAnonymousCrossOrigin) => createImage(source, typeof forceAnonymousCrossOrigin === 'boolean' ? forceAnonymousCrossOrigin : anonymousCrossOrigin);\n }\n\n return createImage;\n }\n\n get window() {\n return this.screen.window;\n }\n\n get fetch() {\n return this.screen.fetch;\n }\n\n get ctx() {\n return this.screen.ctx;\n }\n\n get emSize() {\n var {\n emSizeStack\n } = this;\n return emSizeStack[emSizeStack.length - 1];\n }\n\n set emSize(value) {\n var {\n emSizeStack\n } = this;\n emSizeStack.push(value);\n }\n\n popEmSize() {\n var {\n emSizeStack\n } = this;\n emSizeStack.pop();\n }\n\n getUniqueId() {\n return \"canvg\".concat(++this.uniqueId);\n }\n\n isImagesLoaded() {\n return this.images.every(_ => _.loaded);\n }\n\n isFontsLoaded() {\n return this.fonts.every(_ => _.loaded);\n }\n\n createDocumentElement(document) {\n var documentElement = this.createElement(document.documentElement);\n documentElement.root = true;\n documentElement.addStylesFromStyleDefinition();\n this.documentElement = documentElement;\n return documentElement;\n }\n\n createElement(node) {\n var elementType = node.nodeName.replace(/^[^:]+:/, '');\n var ElementType = Document.elementTypes[elementType];\n\n if (typeof ElementType !== 'undefined') {\n return new ElementType(this, node);\n }\n\n return new UnknownElement(this, node);\n }\n\n createTextNode(node) {\n return new TextNode(this, node);\n }\n\n setViewBox(config) {\n this.screen.setViewBox(_objectSpread$1({\n document: this\n }, config));\n }\n\n}\nDocument.createCanvas = createCanvas;\nDocument.createImage = createImage;\nDocument.elementTypes = elements;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (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 = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n/**\r\n * SVG renderer on canvas.\r\n */\n\nclass Canvg {\n /**\r\n * Main constructor.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG Document.\r\n * @param options - Rendering options.\r\n */\n constructor(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.parser = new Parser(options);\n this.screen = new Screen(ctx, options);\n this.options = options;\n var document = new Document(this, options);\n var documentElement = document.createDocumentElement(svg);\n this.document = document;\n this.documentElement = documentElement;\n }\n /**\r\n * Create Canvg instance from SVG source string or URL.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string or URL.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n static from(ctx, svg) {\n var _arguments = arguments;\n return _asyncToGenerator(function* () {\n var options = _arguments.length > 2 && _arguments[2] !== undefined ? _arguments[2] : {};\n var parser = new Parser(options);\n var svgDocument = yield parser.parse(svg);\n return new Canvg(ctx, svgDocument, options);\n })();\n }\n /**\r\n * Create Canvg instance from SVG source string.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n static fromString(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var parser = new Parser(options);\n var svgDocument = parser.parseFromString(svg);\n return new Canvg(ctx, svgDocument, options);\n }\n /**\r\n * Create new Canvg instance with inherited options.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string or URL.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n fork(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.from(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));\n }\n /**\r\n * Create new Canvg instance with inherited options.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n forkString(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.fromString(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));\n }\n /**\r\n * Document is ready promise.\r\n * @returns Ready promise.\r\n */\n\n\n ready() {\n return this.screen.ready();\n }\n /**\r\n * Document is ready value.\r\n * @returns Is ready or not.\r\n */\n\n\n isReady() {\n return this.screen.isReady();\n }\n /**\r\n * Render only first frame, ignoring animations and mouse.\r\n * @param options - Rendering options.\r\n */\n\n\n render() {\n var _arguments2 = arguments,\n _this = this;\n\n return _asyncToGenerator(function* () {\n var options = _arguments2.length > 0 && _arguments2[0] !== undefined ? _arguments2[0] : {};\n\n _this.start(_objectSpread({\n enableRedraw: true,\n ignoreAnimation: true,\n ignoreMouse: true\n }, options));\n\n yield _this.ready();\n\n _this.stop();\n })();\n }\n /**\r\n * Start rendering.\r\n * @param options - Render options.\r\n */\n\n\n start() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var {\n documentElement,\n screen,\n options: baseOptions\n } = this;\n screen.start(documentElement, _objectSpread(_objectSpread({\n enableRedraw: true\n }, baseOptions), options));\n }\n /**\r\n * Stop rendering.\r\n */\n\n\n stop() {\n this.screen.stop();\n }\n /**\r\n * Resize SVG to fit in given size.\r\n * @param width\r\n * @param height\r\n * @param preserveAspectRatio\r\n */\n\n\n resize(width) {\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n this.documentElement.resize(width, height, preserveAspectRatio);\n }\n\n}\n\nexport { AElement, AnimateColorElement, AnimateElement, AnimateTransformElement, BoundingBox, CB1, CB2, CB3, CB4, Canvg, CircleElement, ClipPathElement, DefsElement, DescElement, Document, Element, EllipseElement, FeColorMatrixElement, FeCompositeElement, FeDropShadowElement, FeGaussianBlurElement, FeMorphologyElement, FilterElement, Font, FontElement, FontFaceElement, GElement, GlyphElement, GradientElement, ImageElement, LineElement, LinearGradientElement, MarkerElement, MaskElement, Matrix, MissingGlyphElement, Mouse, PSEUDO_ZERO, Parser, PathElement, PathParser, PatternElement, Point, PolygonElement, PolylineElement, Property, QB1, QB2, QB3, RadialGradientElement, RectElement, RenderedElement, Rotate, SVGElement, SVGFontLoader, Scale, Screen, Skew, SkewX, SkewY, StopElement, StyleElement, SymbolElement, TRefElement, TSpanElement, TextElement, TextPathElement, TitleElement, Transform, Translate, UnknownElement, UseElement, ViewPort, compressSpaces, Canvg as default, getSelectorSpecificity, normalizeAttributeName, normalizeColor, parseExternalUrl, index as presets, toNumbers, trimLeft, trimRight, vectorMagnitude, vectorsAngle, vectorsRatio };\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as log10, A as _factorize, B as finiteOrDefault, C as callback, D as _addGrace, E as _limitValue, F as toDegrees, G as _measureText, I as _int16Range, J as _alignPixel, K as toPadding, L as clipArea, M as renderText, N as unclipArea, O as toFont, Q as each, R as _toLeftRightCenter, S as _alignStartEnd, U as overrides, V as merge, W as _capitalize, X as getRelativePosition, Y as _rlookupByKey, Z as _lookupByKey, $ as _isPointInArea, a0 as getAngleFromPoint, a1 as getMaximumSize, a2 as _getParentNode, a3 as readUsedSize, a4 as throttled, a5 as supportsEventListenerOptions, a6 as _isDomSupported, a7 as descriptors, a8 as isFunction, a9 as _attachContext, aa as _createResolver, ab as _descriptors, ac as mergeIf, ad as uid, ae as debounce, af as retinaScale, ag as clearCanvas, ah as setsEqual, ai as _elementsEqual, aj as _isClickEvent, ak as _isBetween, al as _readValueToProps, am as _updateBezierControlPoints, an as _computeSegments, ao as _boundSegments, ap as _steppedInterpolation, aq as _bezierInterpolation, ar as _pointInLine, as as _steppedLineTo, at as _bezierCurveTo, au as drawPoint, av as addRoundedRectPath, aw as toTRBL, ax as toTRBLCorners, ay as _boundSegment, az as _normalizeAngle, aA as getRtlAdapter, aB as overrideTextDirection, aC as _textX, aD as restoreTextDirection, aE as drawPointLegend, aF as noop, aG as distanceBetweenPoints, aH as _setMinAndMaxByKey, aI as niceNum, aJ as almostWhole, aK as almostEquals, aL as _decimalPlaces, aM as _longestText, aN as _filterBetween, aO as _lookup } from './chunks/helpers.segment.mjs';\nexport { d as defaults } from './chunks/helpers.segment.mjs';\n\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || (elapsed < duration));\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\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});\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\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}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\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 createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {sharedOptions, includeOptions};\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n return;\n }\n const {start, end, reverse, top, bottom} = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const {iScale} = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type)\n .filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = (meta) => {\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1;\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n};\n\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: meta.label,\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\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 if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\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 pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false,\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n};\n\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\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 pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\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 vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n};\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 tooltipPosition(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {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});\ndefaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\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 if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {min, max};\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const {ctx, _longestTextCache: caches} = this;\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 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] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const {min, max} = this;\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndex.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(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = y + textOffset - labelPadding.top;\n let left = x - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor,\n };\n }\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {textAlign, x};\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, 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 {chart, ctx, options: {grid}} = this;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.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 drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\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 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 let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = new Registry();\n\nclass ScatterController extends DatasetController {\n update(mode) {\n const meta = this._cachedMeta;\n const {data: points = []} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n const {dataset: line, _dataset} = meta;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const {showLine} = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n init(chartOptions) {}\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function(members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n _date: DateAdapter\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n return {lo: 0, hi: data.length - 1};\n}\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n evaluateInteractionItems,\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\ndefaults.set('layout', {\n autoPadding: true,\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 item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart, (args) => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {plugins, localIds};\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\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 if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{axis}, 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], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const {options, type} = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {type},\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"3.9.1\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nclass Chart {\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n );\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {size: newSize});\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(\n 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 if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass.prototype, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {mode});\n this._layers.sort(compare2Level('z', '_idx'));\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n this.notifyPlugins('destroy');\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type) => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\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: (...items) => {\n registry.add(...items);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: (...items) => {\n registry.remove(...items);\n invalidatePlugins();\n }\n }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\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 const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\nfunction pathArc(ctx, element, offset, spacing, end, circular) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\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 const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\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 ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\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 const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, startAngle + TAU, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const {x, y, startAngle, pixelMargin, fullCircles} = element;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle, circular) {\n const {options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\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 if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return (betweenAngles && withinRadius);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference',\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 2;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle, circular);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true,\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let {move = true, reverse} = params || {};\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || (this.points.length - start);\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\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 if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\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 {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {x: pointAx, y: pointAy} = data[a];\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX,\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {value: data});\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset) => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const {iScale} = meta;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {start, count};\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false,\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {_data, indexAxis} = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let {start, end} = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\nfunction _pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\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 if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\nfunction _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n\nfunction _buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\n\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const {x, y, radius} = this;\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\nfunction _getTarget(source) {\n const {chart, fill, line} = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const {line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis});\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {line, target, color: below, scale, property});\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const {line, target, property, color, scale} = cfg;\n const segments = _segments(line, target, property);\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const {top, bottom} = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const {options, ctx} = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {color: fontColor, padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor || 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 + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\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 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 update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {width, height};\n}\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart || config._chart;\n this._chart = this.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {callbacks} = options;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(this, [context]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n getBody(tooltipItems, options) {\n const {callbacks} = options;\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(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : (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 - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = 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 ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n }\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};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n return remain === 1;\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 do {\n ticks.push({value: tickVal, major: isMajor(tickVal)});\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({value: lastTick, major: isMajor(tickVal)});\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\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 if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(min, -1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const {color, lineWidth} = gridLineOpts;\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(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}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid} = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n 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 drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\n\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n initOffsets(timestamps) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(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 if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return (this._cache.data = this.normalize(timestamps));\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n major: {\n enabled: false\n }\n }\n};\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction noop() {}\nconst uid = (function() {\n let id = 0;\n return function() {\n return id++;\n };\n}());\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : value / dimension;\nconst toDimension = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst keyResolvers = {\n '': v => v,\n x: o => o.x,\n y: o => o.y\n};\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\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;\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < (-0.5 * PI)) {\n angle += TAU;\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {lo, hi};\n}\nconst _lookupByKey = (table, key, value, last) =>\n _lookup(table, value, last\n ? index => table[index][key] <= value\n : index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function(...rest) {\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(\n _lookupByKey(_parsed, iScale.axis, min).lo,\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {start, count};\n}\nfunction _scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -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)\n ? 0.5 * t * t * t\n : 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)\n ? 0.5 * t * t * t * t\n : -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)\n ? 0.5 * t * t * t * t * t\n : 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\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 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)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n easeInOutBounce: t => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\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 if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\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 return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\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}\nfunction hslString(v) {\n if (!v) {\n return;\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\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map = {\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$1 = {\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};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[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}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\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}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.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 this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\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 opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\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 lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\nfunction index_esm(input) {\n return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n}\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 return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n 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 if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\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}\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}\nfunction drawPoint(ctx, options, x, y) {\n drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n 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 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 case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n 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 case 'crossRot':\n rad += QUARTER_PI;\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 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 case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\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)?))$/);\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\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}\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\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}\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\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 get(target, prop) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\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 get(target, prop, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\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 const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (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 return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const {iScale} = meta;\n const {key = 'r'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n 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}\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\nfunction splineCurveMonotone(points, indexAxis = '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 for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const {offsetX, offsetY} = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n if ('native' in evt) {\n return evt;\n }\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(evt, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\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 return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\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, height} = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? 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 if (width && !height) {\n height = round1(width / 2);\n }\n return {\n width,\n height\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 if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\nconst supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n }\n return passiveSupported;\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}\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\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n },\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n let {start, end, loop} = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _isPointInArea as $, _factorize as A, finiteOrDefault as B, callback as C, _addGrace as D, _limitValue as E, toDegrees as F, _measureText as G, HALF_PI as H, _int16Range as I, _alignPixel as J, toPadding as K, clipArea as L, renderText as M, unclipArea as N, toFont as O, PI as P, each as Q, _toLeftRightCenter as R, _alignStartEnd as S, TAU as T, overrides as U, merge as V, _capitalize as W, getRelativePosition as X, _rlookupByKey as Y, _lookupByKey as Z, _arrayUnique as _, resolve as a, toLineHeight as a$, getAngleFromPoint as a0, getMaximumSize as a1, _getParentNode as a2, readUsedSize as a3, throttled as a4, supportsEventListenerOptions as a5, _isDomSupported as a6, descriptors as a7, isFunction as a8, _attachContext as a9, getRtlAdapter as aA, overrideTextDirection as aB, _textX as aC, restoreTextDirection as aD, drawPointLegend as aE, noop as aF, distanceBetweenPoints as aG, _setMinAndMaxByKey as aH, niceNum as aI, almostWhole as aJ, almostEquals as aK, _decimalPlaces as aL, _longestText as aM, _filterBetween as aN, _lookup as aO, isPatternOrGradient as aP, getHoverColor as aQ, clone$1 as aR, _merger as aS, _mergerIf as aT, _deprecated as aU, _splitKey as aV, toFontString as aW, splineCurve as aX, splineCurveMonotone as aY, getStyle as aZ, fontString as a_, _createResolver as aa, _descriptors as ab, mergeIf as ac, uid as ad, debounce as ae, retinaScale as af, clearCanvas as ag, setsEqual as ah, _elementsEqual as ai, _isClickEvent as aj, _isBetween as ak, _readValueToProps as al, _updateBezierControlPoints as am, _computeSegments as an, _boundSegments as ao, _steppedInterpolation as ap, _bezierInterpolation as aq, _pointInLine as ar, _steppedLineTo as as, _bezierCurveTo as at, drawPoint as au, addRoundedRectPath as av, toTRBL as aw, toTRBLCorners as ax, _boundSegment as ay, _normalizeAngle as az, isArray as b, PITAU as b0, INFINITY as b1, RAD_PER_DEG as b2, QUARTER_PI as b3, TWO_THIRDS_PI as b4, _angleDiff as b5, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, log10 as z };\n"],"names":["devicePixelRatio","window","screen","utils","inputs","input","lines","Array","ctx","font","i","items","ilen","prev","width","Math","min","value","max","a0","a1","j","v","updates","orient","point","origin","x0","y0","dx","dy","ln","region","x","y","rect","res","compute$1","range","config","anchor","segment","clipped","area","r","x1","y1","r0","r1","aligned","vx","vy","align","positioners","el","angle","rx","ry","sx","sy","rasterize","Label","index","me","display","context","color","getScaleOrigin","scale","undefined","pixel","label","model","borderWidth","padding","th","tw","tx","ty","rects","chart","center","drawFrame","bgColor","borderColor","drawRoundedRect","w","h","radius","HALF_PI","left","top","right","bottom","drawText","filled","strokeColor","strokeWidth","stroked","drawTextLine","text","cfg","shadow","MIN_INTEGER","Number","MAX_INTEGER","rotated","cos","sin","cx","cy","projected","points","axis","pt","dp","toAxis","p0","p1","HitBox","coordinates","geometry","rotation","vs","margin","other","pr0","pr1","axes","layout","datasets","jlen","labels","a","b","sa","sb","state","dirty","compute","proxy","Proxy","p","collide","collider","s0","s1","h0","h1","EXPANDO_KEY","DEFAULT_KEY","dispatchEvent","listeners","callback$1","groups","keys","klen","k","Object","expando","args","options","dataset","override","configs","key","datasetIndex","visible","target","fn","event","elements","source","handlers","handleMoveEvents","previous","dispatchMoveEvents","enter","leave","update","actives","parseText","parseFont","defaults","size","toFontString","textSize","height","drawDoughnutLabel","innerLabels","textAreaSize","hypotenuse","fitRatio","innerDiameter","innerLabel","centerX","topY","centerY","currentHeight","lineCenterY","DoughnutLabel","defaultDatasetIdKey","reforwardRef","ref","setLabels","currentData","nextLabels","setDatasets","nextDatasets","datasetIdKey","addedDatasets","nextDataset","currentDataset","Chart","redraw","type","data","plugins","fallbackContent","props","canvasRef","chartRef","renderChart","cloneData","nextData","destroyChart","nextOptions","setTimeout","DOMParserFallback","arguments","preset","OffscreenCanvas","url","response","fetch","blob","createImageBitmap","DOMParser","Reflect","_ref","canvas","compressSpaces","str","trimLeft","trimRight","toNumbers","matches","parseFloat","allUppercase","normalizeAttributeName","name","parseExternalUrl","urlMatch","normalizeColor","rgbParts","num","isFloat","String","attributeRegex","idRegex","classRegex","pseudoElementRegex","pseudoClassWithBracketsRegex","pseudoClassRegex","elementRegex","findSelectorMatch","selector","regex","getSelectorSpecificity","specificity","currentSelector","delta","PSEUDO_ZERO","vectorMagnitude","vectorsRatio","u","vectorsAngle","CB1","t","CB2","CB3","CB4","QB1","QB2","QB3","Property","document","separator","zeroIsValue","regexp","result","asString","def","n","axisOrIsFontSize","processPercent","isFontSize","viewPort","element","opacity","patternTransform","len","commas","ViewPort","viewPorts","d","Point","defaultValue","path","pathPoints","transform","xp","yp","Mouse","onClick","onMouseMove","events","eventElements","style","run","_ref2","boundingBox","_ref3","eventTarget","defaultWindow","defaultFetch$1","Screen","checker","Promise","isReadyLock","_","aspectRatio","desiredWidth","desiredHeight","minX","minY","refX","refY","clip","clipX","clipY","aspectRatioAlign","aspectRatioMeetOrSlice","cleanAspectRatio","meetOrSlice","scaleX","scaleY","scaleMin","scaleMax","finalDesiredWidth","finalDesiredHeight","refXProp","refYProp","hasRefs","scaledClipX","scaledClipY","isMeetMinY","isSliceMaxY","isMeetMinX","isSliceMaxX","enableRedraw","ignoreMouse","ignoreAnimation","ignoreDimensions","ignoreClear","forceRedraw","scaleWidth","scaleHeight","offsetX","offsetY","FRAMERATE","mouse","frameDuration","resolve","now","Date","then","tick","shouldUpdate","animation","CLIENT_WIDTH","CLIENT_HEIGHT","isFirstRender","widthStyle","heightStyle","cWidth","cHeight","viewBox","xRatio","yRatio","_widthStyle","isNaN","_heightStyle","transformStyle","defaultFetch","DefaultDOMParser","Parser","resource","_this","xml","parser","err","parserError","Error","_this2","Translate","Rotate","rotate","transformOrigin","numbers","originX","originY","rad","Scale","scaleSize","Matrix","matrix","c","e","f","det","g","Skew","skew","SkewX","SkewY","Transform","parseTransform","TransformType","transformOriginXProperty","transformOriginYProperty","transforms","Element","node","captureTextNodes","attribute","nodeName","styles","definitions","id","childNode","textNode","createIfNotExists","attr","_attr","skipAncestors","parent","parentStyle","_style","mask","filter","clipPathStyleProp","child","_node$getAttribute","styleClasses","styleClass","stylesSpecificity","existingSpecificity","ignoreStyles","toRestore","styleProp","_this$parent","UnknownElement","wrapFontFamily","fontFamily","trimmed","Font","fontStyle","fontVariant","fontWeight","fontSize","inherit","inheritFont","parts","set","part","prepareFontStyle","targetFontStyle","prepareFontWeight","targetFontWeight","BoundingBox","x2","y2","p2","p3","forX","b2ac","t1","t2","p0x","p0y","p1x","p1y","p2x","p2y","p3x","p3y","cp1x","cp1y","PathParser","commands","command","xProp","yProp","previousCommand","ox","oy","from","priorTo","angles","RenderedElement","opacityStyle","fromMeasure","fillStyleProp","fillOpacityStyleProp","strokeStyleProp","strokeOpacityProp","fillStyle","_fillStyle","_fillStyle2","strokeStyle","_strokeStyle","_strokeStyle2","strokeWidthStyleProp","newLineWidth","strokeLinecapStyleProp","strokeLinejoinStyleProp","strokeMiterlimitProp","strokeDasharrayStyleProp","strokeDashoffsetProp","gaps","offset","fontStyleProp","fontStyleStyleProp","fontVariantStyleProp","fontWeightStyleProp","fontSizeStyleProp","fontFamilyStyleProp","PathElement","pathParser","fillRuleStyleProp","markers","markersLastIndex","markerStartStyleProp","markerMidStyleProp","markerEndStyleProp","marker","_marker","_point","_angle","_marker2","_point2","_angle2","current","controlPoint","currentPoint","rX","rY","xRot","lArcFlag","sweepFlag","xAxisRotation","currp","l","s","cpp","centp","ad","dir","ah","halfWay","Boolean","GlyphElement","TextElement","textBaseline","childBoundingBox","inheritFontSize","char","glyph","prevChar","nextChar","arabicForm","maybeGlyph","childNodes","lastIndex","renderText","customFont","unitsPerEm","ctxFont","lw","firstElement","textAnchor","shift","textParent","xAttr","yAttr","dxAttr","dyAttr","isRTL","measureCache","measure","targetText","_measure","parentAttr","TSpanElement","TextNode","SVGElement","_this$node$parentNode","fontSizeProp","refXAttr","refYAttr","viewBoxAttr","preserveAspectRatio","widthAttr","heightAttr","styleAttr","originWidth","originHeight","preserveAspectRatioAttr","RectElement","rxAttr","ryAttr","KAPPA","CircleElement","EllipseElement","LineElement","PolylineElement","PolygonElement","PatternElement","parentOpacityProp","patternSvg","patternCanvas","patternCtx","MarkerElement","markerUnits","markerSvg","DefsElement","GElement","GradientElement","stops","children","stopsContainer","gradient","stop","MAX_VIRTUAL_PIXELS","rootView","group","attributeToInherit","colorProp","LinearGradientElement","isBoundingBoxUnits","RadialGradientElement","fx","fy","fr","StopElement","stopOpacity","stopColor","AnimateElement","valuesAttr","attributeType","attributeName","initialUnits","progress","to","newValue","prop","fill","updated","typeAttr","values","lb","ub","AnimateColorElement","colorFrom","colorTo","AnimateTransformElement","transformFrom","transformTo","FontElement","fontFamilyStyle","FontFaceElement","MissingGlyphElement","TRefElement","firstChild","AElement","hasText","ownKeys$2","object","enumerableOnly","symbols","sym","_objectSpread$2","TextPathElement","Map","pathElement","dataArray","theta","dTheta","psi","fs","textDecoration","glyphInfo","partialText","idx","textFullWidth","fullPathWidth","spacesNumber","inputOffset","charI","glyphWidth","splineStep","dyX","dyY","measuresCache","chars","thisSpacing","parentSpacing","letterSpacing","letterSpacingCache","textLen","dxSum","acc","cur","textWidth","startOffset","nextOffset","pathCommands","startX","startY","nextCommandType","commandType","start","end","inc","dist","fromX","fromY","m","rise","ix","iy","pRise","pRun","distance","fullLen","cumulativePathLength","currentT","length","pct","p4x","p4y","cosPsi","sinPsi","inputStep","inputPrecision","precision","step","targetDistance","dataUriRegex","ImageElement","href","isSvg","image","console","match","atob","decodeURIComponent","svg","loaded","subDocument","_image","SymbolElement","SVGFontLoader","fonts","svgDocument","fontNode","StyleElement","cssDefs","css","cssParts","cssClasses","cssProps","cssClass","cssProp","srcs","src","UseElement","tempSvg","oldParent","imGet","img","_height","rgba","imSet","val","mi","m1","m2","m3","FeColorMatrixElement","_x","_y","includeOpacity","srcData","nr","ng","nb","na","MaskElement","ignoredStyles","maskCanvas","maskCtx","tmpCanvas","tmpCtx","noop","ClipPathElement","contextProto","beginPath","closePath","FilterElement","px","py","efd","tmpCanvasWidth","tmpCanvasHeight","FeDropShadowElement","_width","FeMorphologyElement","FeCompositeElement","FeGaussianBlurElement","blurRadius","body","TitleElement","DescElement","ownKeys$1","_createImage","anonymousCrossOrigin","reject","_event","_source","_lineno","_colno","error","Document","canvg","rootEmSize","emSize","createCanvas","createImage","forceAnonymousCrossOrigin","emSizeStack","documentElement","elementType","ElementType","_objectSpread$1","ownKeys","_objectSpread","Canvg","_arguments","_arguments2","baseOptions","animator","Animator","anims","date","callbacks","numSteps","remaining","item","draw","charts","cb","transparent","interpolators","factor","c0","c1","Animation","currentValue","elapsed","remain","duration","loop","promises","rej","resolved","method","animationOptions","Animations","animatedProps","option","newOptions","resolveTargetOptions","animations","awaitAll","properties","running","anim","scaleClip","allowedOverflow","opts","reverse","getSortedDatasetIndices","filterVisible","metasets","applyStack","stack","dsIndex","otherValue","singleMode","isStacked","meta","stacked","getLastIndexInStack","vScale","positive","updateStacks","controller","parsed","indexScale","valueScale","stacks","iScale","iAxis","vAxis","itemStacks","getOrCreateStack","stackKey","indexValue","subStack","getFirstScaleId","scales","clearStacks","isDirectUpdateMode","mode","cloneIfNotShared","cached","shared","createStack","canStack","DatasetController","chooseId","xid","yid","rid","indexAxis","iid","vid","scaleID","_data","convertObjectDataToArray","adata","resetNewElements","stackChanged","oldStacked","scopeKeys","scopes","count","_stacked","sorted","isNotInOrderComparedToPrev","singleScale","xScale","yScale","xAxisKey","yAxisKey","parsedValue","NaN","_parsed","otherScale","otherMin","otherMax","getUserBounds","minDefined","maxDefined","_skip","defaultClip","active","drawActiveElementsOnTop","cache","cacheKey","sharing","prefixes","names","transition","sharedOptions","firstOpts","previouslySharedOptions","includeOptions","arg1","arg2","numMeta","numData","move","arr","removed","newCount","parseValue","entry","parseFloatBar","startValue","endValue","barStart","barEnd","parseArrayOrPrimitive","isFloatBar","custom","parseEdge","edge","startEnd","swap","orig","v1","v2","BarController","obj","iAxisKey","vAxisKey","bars","reset","base","horizontal","ruler","vpixels","ipixels","setBorderSkipped","setInflateAmount","inflateAmount","ratio","last","dataIndex","skipNull","pixels","barThickness","computeMinSampleSize","curr","getAllScaleValues","visibleMetas","updateMinAndPrev","head","baseValue","minBarLength","actualBase","floating","barSign","startPixel","endPixel","halfGrid","maxBarThickness","Infinity","stackCount","computeFlexCategoryTraits","next","percent","computeFitCategoryTraits","thickness","stackIndex","BubbleController","iPixel","vPixel","DoughnutController","getter","circumference","chartArea","arcs","spacing","maxSize","cutout","chartWeight","ratioX","ratioY","getRatioAndOffset","endAngle","startAngle","endX","endY","calcMax","calcMin","maxX","maxY","maxWidth","maxRadius","outerRadius","innerRadius","radiusLength","animationOpts","animateScale","arc","metaData","total","ringWeightOffset","pointStyle","legendItem","legend","tooltipItem","dataLabel","LineController","line","_dataset","animationsDisabled","spanGaps","maxGapLength","directUpdate","prevParsed","nullData","border","firstPoint","PolarAreaController","minSize","datasetStartAngle","defaultAngle","PieController","RadarController","pointPosition","useFinalPosition","final","ret","formatters","tickValue","ticks","notation","locale","maxTick","calculateDelta","numDecimal","_ctx","Ticks","skip","newTicks","majorStart","majorEnd","reverseAlign","offsetFromEdge","sample","numItems","increment","getTickMarkLength","getTitleHeight","fallback","raw","_userMin","_userMax","_suggestedMin","_suggestedMax","metas","maxHeight","margins","beginAtZero","grace","tickOpts","sampleSize","samplingEnabled","autoSkip","ticksLimit","determineMaxTicks","tickLength","maxScale","majorIndices","getMajorIndices","numMajorIndices","first","skipMajors","calculateSpacing","evenMajorSpacing","getEvenSpacing","diff","factors","avgMajorSpacing","reversePixels","tickWidth","maxLabelDiagonal","numTicks","minRotation","maxRotation","labelRotation","labelSizes","maxLabelWidth","maxLabelHeight","titleOpts","gridOpts","isHorizontal","titleHeight","widest","highest","tickPadding","angleRadians","labelHeight","labelWidth","position","isRotated","labelsBelowTicks","offsetLeft","offsetRight","paddingLeft","paddingRight","paddingTop","paddingBottom","caches","tickFont","fontString","lineHeight","nestedLabel","widths","heights","widestLabelSize","highestLabelSize","gc","gcLen","valueAt","decimal","optionTicks","rot","borderValue","lineValue","alignedLineValue","tx1","ty1","tx2","ty2","grid","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","positionAxisID","limit","optsAtIndex","lineWidth","lineColor","borderDash","borderDashOffset","tickColor","tickBorderDash","tickBorderDashOffset","getPixelForGridLine","offsetGridLines","validIndex","textAlign","lineCount","textOffset","crossAlign","mirror","tickAndPadding","hTickAndPadding","backdrop","halfCount","tickTextAlign","labelPadding","backgroundColor","drawLine","lastLineWidth","title","titleX","titleY","titleArgs","tz","gz","axisID","TypedRegistry","scope","parentScope","proto","isIChartComponent","registerDefaults","itemDefaults","routeDefaults","routes","property","propertyParts","sourceName","sourceScope","targetName","targetScope","registry","Registry","typedRegistry","arg","reg","itemReg","component","camelMethod","ScatterController","showLine","controllers","abstract","DateAdapter","chartOptions","format","timestamp","amount","unit","weekday","members","evaluateInteractionItems","handler","intersect","lo","hi","binarySearch","metaset","_sorted","lookupMethod","getIntersectItems","includeInvisible","getNearestItems","getNearestCartesianItems","distanceMetric","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","minDistance","inRange","getAxisItems","rangeMethod","intersectsItem","Interaction","STATIC_POSITIONS","filterByPosition","array","filterDynamicPositionByAxis","sortByWeight","v0","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","fitBoxes","boxes","params","box","refit","changed","refitBoxes","getMargins","marginForPositions","positions","pos","same","updateDims","newWidth","newHeight","widthChanged","heightChanged","setBoxDims","placeBoxes","userPadding","weight","layouts","layoutItem","minPadding","availableWidth","availableHeight","buildLayoutBoxes","layoutBoxes","wrapBoxes","stackWeight","fullSize","wrap","centerHorizontal","centerVertical","verticalBoxes","horizontalBoxes","setLayoutDims","buildStacks","_stack","vBoxMaxWidth","hBoxMaxHeight","handleMaxPadding","updatePos","change","BasePlatform","listener","BasicPlatform","EVENT_TYPES","isNullOrEmpty","eventListenerOptions","removeListener","nodeListContains","nodeList","createAttachObserver","observer","MutationObserver","entries","trigger","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","resize","createResizeObserver","container","ResizeObserver","releaseObserver","createProxyAndListen","fromNativeEvent","addListener","DomPlatform","initCanvas","renderHeight","renderWidth","displayWidth","displayHeight","initial","proxies","PluginService","hook","descriptors","descriptor","plugin","all","allPlugins","localIds","local","createDescriptors","pluginOpts","previousDescriptors","getIndexAxis","datasetDefaults","datasetOptions","determineAxis","scaleOptions","initOptions","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","defaultId","defaultScaleOptions","defaultID","initData","keyCache","keysCached","Set","cachedKeys","generate","addIfFound","Config","datasetType","mainScope","resetCache","_scopeCache","keyLists","resolver","subPrefixes","getResolver","needContext","isScriptable","isIndexable","scriptable","indexable","hasFunction","subResolver","descriptorDefaults","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onAnimationProgress","getCanvas","instances","getChart","userConfig","initialCanvas","existingChart","maintainAspectRatio","_aspectRatio","newSize","newRatio","scalesOptions","axisOptions","scaleOpts","isRadial","scaleType","hasUpdated","newControllers","ControllerClass","datasetElementType","dataElementType","animsDisabled","_active","_lastEvent","existingEvents","newEvents","_hiddenIndices","moveNumericKeys","intKey","_dataChanges","datasetCount","makeSet","changeSet","noArea","layers","useClip","platform","_add","detached","_remove","attached","enabled","prefix","activeElements","lastActive","replay","hoverOptions","deactivated","activated","eventFilter","inChartArea","lastEvent","isClick","invalidatePlugins","clipArc","pixelMargin","angleMargin","enumerable","rThetaToXY","pathArc","circular","innerR","spacingOffset","alpha","noSpacingOuterRadius","avNogSpacingRadius","noSpacingInnerRadius","beta","angleOffset","outerStart","outerEnd","innerStart","innerEnd","parseBorderRadius$1","angleDelta","o","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p4","p8","outerStartX","outerStartY","outerEndX","outerEndY","ArcElement","chartX","chartY","rAdjust","betweenAngles","_circumference","withinRadius","halfAngle","halfRadius","radiusOffset","drawArc","fullCircles","drawBorder","borderJoinStyle","inner","drawFullCircleBorders","setStyle","lineTo","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","pathSegment","lineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","useFastPath","usePath2D","Path2D","segments","_interpolate","interpolated","segmentMethod","strokePathDirect","inRange$1","PointElement","mouseX","mouseY","getBarBounds","bar","half","skipOrLimit","skipX","skipY","bounds","addNormalRectPath","inflateRect","refRect","BarElement","outer","boundingRects","parseBorderWidth","maxW","maxH","parseBorderRadius","enableBorderRadius","maxR","enableBorder","addRectPath","hasRadius","cleanDecimatedDataset","cleanDecimatedData","_getBounds","_findSegmentEnd","_getEdge","_createBoundaryLine","boundary","_loop","_pointsFromSegments","linePoints","_shouldApplyFill","simpleArc","_drawfill","_getTarget","getLineByIndex","_buildStackLine","sourcePoints","linesBelow","getLinesBelow","below","addPointsBelow","sourcePoint","postponed","findPoint","pointValue","firstValue","lastValue","computeBoundary","computeCircularBoundary","computeLinearBoundary","lineOpts","fillOption","above","doFill","clipVertical","lineLoop","lastPoint","tgt","_segments","tpoints","subBounds","fillSource","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","getBoxSize","labelOpts","boxHeight","boxWidth","itemsEqual","Legend","legendItems","labelFont","itemHeight","hitboxes","lineWidths","totalHeight","row","itemWidth","columnSizes","heightLimit","totalWidth","currentColWidth","currentColHeight","col","rtl","rtlHelper","hitbox","cursor","defaultColor","fontColor","halfFontSize","drawLegendBox","drawOptions","yBoxTop","xBoxLeft","borderRadius","fillText","titleFont","titlePadding","topPaddingPlusHalfFontSize","hitBox","lh","isListened","hoveredItem","sameItem","Title","fontOpts","map","WeakMap","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","getTooltipSize","tooltip","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","widthPadding","maxLineWidth","determineAlignment","yAlign","determineYAlign","determineXAlign","chartWidth","xAlign","doesNotFitWithAlign","caret","getBackgroundPoint","alignment","caretSize","caretPadding","cornerRadius","paddingAndSize","topLeft","topRight","bottomLeft","bottomRight","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","callback","overrideCallbacks","Tooltip","tooltipItems","beforeTitle","afterTitle","bodyItems","scoped","beforeFooter","afterFooter","labelColors","labelPointStyles","labelTextColors","createTooltipItem","positionAndSize","backgroundPoint","tooltipPoint","caretPosition","x3","y3","ptX","ptY","titleSpacing","labelPointStyle","colorX","rtlColorX","yOffSet","colorY","outerX","innerX","textColor","bodySpacing","bodyAlign","displayColors","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","tooltipSize","animX","animY","hasTooltipContent","positionChanged","caretX","caretY","plugin_tooltip","_args","labelCount","decimated","xAxis","getStartAndCountOfVisiblePointsSimplified","pointCount","lttbDecimation","maxAreaPoint","maxArea","nextA","samples","bucketWidth","sampledIndex","endIndex","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAx","pointAy","minMaxDecimation","minIndex","maxIndex","startIndex","xMin","xMax","intermediateIndex1","intermediateIndex2","sources","_decodeFill","parseFillOption","decodeTargetIndex","firstCh","_resolveTarget","propagate","visited","ci","usePointStyle","createTitle","titleBlock","addIfString","addedLabels","CategoryScale","added","isFinite","findOrAddLabel","relativeLabelSize","minSpacing","LinearScaleBase","setMin","setMax","minSign","maxSign","maxTicks","maxTicksLimit","stepSize","numericGeneratorOptions","generateTicks$1","generationOptions","dataRange","niceMin","niceMax","numSpaces","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","decimalPlaces","LinearScale","isMajor","tickVal","LogarithmicScale","exp","generateTicks","endExp","endSignificand","significand","lastTick","getTickBackdropHeight","determineLimits","pathRadiusLine","RadialLinearScale","fitWithPointLabels","limits","valueCount","pointLabelOpts","additionalAngle","plFont","hLimits","updateLimits","vLimits","buildPointLabelItems","extra","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","leftMovement","rightMovement","topMovement","bottomMovement","angleMultiplier","scalingFactor","scaledDistance","pointLabels","pointLabel","distanceFromCenter","angleLines","drawPointLabels","backdropColor","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawRadiusLine","gridLineOpts","INTERVALS","UNITS","sorter","parse","adapter","round","isoWeekday","determineUnitForAutoTicks","minUnit","capacity","interval","addTick","time","timestamps","ticksFromTimestamps","majorUnit","setMajorTicks","major","TimeScale","_applyBounds","timeOpts","determineUnitForFormatting","determineMajorUnit","minor","hasWeekday","formats","minorFormat","majorFormat","formatter","offsets","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","displayFormats","exampleLabel","interpolate","table","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","registerables","uid","isNullOrUndef","isArray","isObject","isNumberFinite","finiteOrDefault","valueOrDefault","toPercentage","dimension","toDimension","thisArg","each","loopable","_elementsEqual","clone$1","isValidKey","_merger","tval","sval","merge","merger","mergeIf","_mergerIf","keyResolvers","resolveObjectKey","_getKeyResolver","_splitKey","tmp","_capitalize","defined","isFunction","setsEqual","_isClickEvent","PI","TAU","PITAU","INFINITY","RAD_PER_DEG","QUARTER_PI","TWO_THIRDS_PI","log10","sign","niceNum","roundedRange","niceRange","almostEquals","fraction","niceFraction","_factorize","sqrt","isNumber","epsilon","almostWhole","rounded","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","distanceBetweenPoints","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","_lookup","cmp","mid","_lookupByKey","_rlookupByKey","_filterBetween","arrayEvents","listenArrayEvents","unlistenArrayEvents","stub","_arrayUnique","requestAnimFrame","throttled","updateFn","updateArgs","ticking","rest","debounce","delay","timeout","clearTimeout","_toLeftRightCenter","_alignStartEnd","_textX","_getStartAndCountOfVisiblePoints","_scaleRangesChanged","_scaleRanges","newRanges","atEdge","elasticIn","elasticOut","effects","lim","p2b","n2b","b2n","n2p","map$1","hex","h2","eq","isShort","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb","rgb2hsl","calln","hsl2rgb","hue","names$1","RGB_RE","modHSL","clone","fromObject","Color","hexParse","nameParse","unpack","ok","nk","unpacked","tkeys","parseInt","rgbParse","hueParse","hslString","w2","c2","w1","rgb1","rgb2","deg","index_esm","isPatternOrGradient","getHoverColor","overrides","getScope$1","root","Defaults","_descriptors","scopeObject","targetScopeObject","privateName","_measureText","longest","string","_longestText","arrayOfThings","thing","nestedThing","_alignPixel","halfWidth","clearCanvas","drawPoint","drawPointLegend","xOffset","yOffset","_isPointInArea","clipArea","unclipArea","_steppedLineTo","flip","midpoint","_bezierCurveTo","stroke","setRenderOpts","decorateText","metrics","yDecoration","addRoundedRectPath","LINE_HEIGHT","RegExp","FONT_STYLE","toLineHeight","numberOrZero","_readValueToProps","objProps","read","toTRBL","toTRBLCorners","toPadding","toFont","info","cacheable","_addGrace","minmax","keepZero","add","createContext","parentContext","_createResolver","rootScopes","getTarget","_resolve","Symbol","_cached","_resolveWithPrefixes","readKey","needsSubResolver","createSubResolver","getKeysFromAllScopes","storage","_attachContext","subProxy","receiver","_resolveWithContext","_proxy","_context","_subProxy","_resolveScriptable","_resolveArray","_scriptable","_indexable","_allKeys","resolveFallback","getScope","parentScopes","allScopes","addScopesFromKey","subGetTarget","addScopes","parentFallback","resolveKeysFromAllScopes","_parseObjectDataRadialScale","EPSILON","getPoint","getValueAxis","capControlPoint","_updateBezierControlPoints","controlPoints","splineCurveMonotone","pointBefore","pointCurrent","valueAxis","pointsLen","deltaK","mK","pointAfter","slopeDelta","monotoneAdjust","alphaK","betaK","tauK","squaredMagnitude","monotoneCompute","splineCurve","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","getPositionedStyle","suffix","useOffsetPos","getRelativePosition","evt","currentDevicePixelRatio","borderBox","paddings","borders","getCanvasPosition","touches","round1","getMaximumSize","bbWidth","bbHeight","containerSize","getContainerSize","containerStyle","containerBorder","containerPadding","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","supportsEventListenerOptions","passiveSupported","readUsedSize","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","formatNumber","getNumberFormat","JSON","Intl","getRtlAdapter","rectX","_itemWidth","overrideTextDirection","direction","original","restoreTextDirection","propertyFn","normalizeSegment","_boundSegment","prevValue","startBound","endBound","compare","between","normalize","getSegment","inside","subStart","startIsBefore","endIsBefore","shouldStart","shouldStop","_boundSegments","sub","_computeSegments","segmentOptions","findStartAndEnd","splitByStyles","completeLoop","solidSegments","doSplitByStyles","chartContext","baseStyle","readStyle","prevStyle","addStyle","st","styleChanged"],"mappings":"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"}