highcharts.js 0-3000

 文件过大分5部分

highcharts.js 0-3000_spencer_tseng的博客-CSDN博客
highcharts.js 3001-6000_spencer_tseng的博客-CSDN博客
highcharts.js 6001-9000_spencer_tseng的博客-CSDN博客
highcharts.js 9001-12000_spencer_tseng的博客-CSDN博客
highcharts.js 12001-12677_spencer_tseng的博客-CSDN博客

highcharts.js 0-3000

/*
 Highcharts JS v10.3.2 (2022-11-28)

 (c) 2009-2021 Torstein Honsi

 License: www.highcharts.com/license
*/
(function(aa, K) {
	"object" === typeof module && module.exports ? (K["default"] = K, module.exports = aa.document ? K(aa) : K) : "function" === typeof define && define.amd ? define("highcharts/highcharts",
	function() {
		return K(aa)
	}) : (aa.Highcharts && aa.Highcharts.error(16, !0), aa.Highcharts = K(aa))
})("undefined" !== typeof window ? window: this,
function(aa) {
	function K(a, v, g, E) {
		a.hasOwnProperty(v) || (a[v] = E.apply(null, g), "function" === typeof CustomEvent && aa.dispatchEvent(new CustomEvent("HighchartsModuleLoaded", {
			detail: {
				path: v,
				module: a[v]
			}
		})))
	}
	var g = {};
	K(g, "Core/Globals.js", [],
	function() {
		var a; (function(a) {
			a.SVG_NS = "http://www.w3.org/2000/svg";
			a.product = "Highcharts";
			a.version = "10.3.2";
			a.win = "undefined" !== typeof aa ? aa: {};
			a.doc = a.win.document;
			a.svg = a.doc && a.doc.createElementNS && !!a.doc.createElementNS(a.SVG_NS, "svg").createSVGRect;
			a.userAgent = a.win.navigator && a.win.navigator.userAgent || "";
			a.isChrome = -1 !== a.userAgent.indexOf("Chrome");
			a.isFirefox = -1 !== a.userAgent.indexOf("Firefox");
			a.isMS = /(edge|msie|trident)/i.test(a.userAgent) && !a.win.opera;
			a.isSafari = !a.isChrome && -1 !== a.userAgent.indexOf("Safari");
			a.isTouchDevice = /(Mobile|Android|Windows Phone)/.test(a.userAgent);
			a.isWebKit = -1 !== a.userAgent.indexOf("AppleWebKit");
			a.deg2rad = 2 * Math.PI / 360;
			a.hasBidiBug = a.isFirefox && 4 > parseInt(a.userAgent.split("Firefox/")[1], 10);
			a.hasTouch = !!a.win.TouchEvent;
			a.marginNames = ["plotTop", "marginRight", "marginBottom", "plotLeft"];
			a.noop = function() {};
			a.supportsPassiveEvents = function() {
				var g = !1;
				if (!a.isMS) {
					var v = Object.defineProperty({},
					"passive", {
						get: function() {
							g = !0
						}
					});
					a.win.addEventListener && a.win.removeEventListener && (a.win.addEventListener("testPassive", a.noop, v), a.win.removeEventListener("testPassive", a.noop, v))
				}
				return g
			} ();
			a.charts = [];
			a.dateFormats = {};
			a.seriesTypes = {};
			a.symbolSizes = {};
			a.chartCount = 0
		})(a || (a = {}));
		"";
		return a
	});
	K(g, "Core/Utilities.js", [g["Core/Globals.js"]],
	function(a) {
		function g(b, d, k, H) {
			var z = d ? "Highcharts error": "Highcharts warning";
			32 === b && (b = "" + z + ": Deprecated member");
			var w = n(b),
			p = w ? "" + z + " #" + b + ": www.highcharts.com/errors/" + b + "/": b.toString();
			if ("undefined" !== typeof H) {
				var q = "";
				w && (p += "?");
				I(H,
				function(b, z) {
					q += "\n - ".concat(z, ": ").concat(b);
					w && (p += encodeURI(z) + "=" + encodeURI(b))
				});
				p += q
			}
			A(a, "displayError", {
				chart: k,
				code: b,
				message: p,
				params: H
			},
			function() {
				if (d) throw Error(p);
				h.console && -1 === g.messages.indexOf(p) && console.warn(p)
			});
			g.messages.push(p)
		}
		function x(b, h) {
			var z = {};
			I(b,
			function(d, w) {
				if (G(b[w], !0) && !b.nodeType && h[w]) d = x(b[w], h[w]),
				Object.keys(d).length && (z[w] = d);
				else if (G(b[w]) || b[w] !== h[w] || w in b && !(w in h)) z[w] = b[w]
			});
			return z
		}
		function E(b, h) {
			return parseInt(b, h || 10)
		}
		function D(b) {
			return "string" === typeof b
		}
		function B(b) {
			b = Object.prototype.toString.call(b);
			return "[object Array]" === b || "[object Array Iterator]" === b
		}
		function G(b, h) {
			return !! b && "object" === typeof b && (!h || !B(b))
		}
		function r(b) {
			return G(b) && "number" === typeof b.nodeType
		}
		function t(b) {
			var h = b && b.constructor;
			return ! (!G(b, !0) || r(b) || !h || !h.name || "Object" === h.name)
		}
		function n(b) {
			return "number" === typeof b && !isNaN(b) && Infinity > b && -Infinity < b
		}
		function f(b) {
			return "undefined" !== typeof b && null !== b
		}
		function c(b, h, d) {
			var z = D(h) && !f(d),
			w,
			k = function(h, d) {
				f(h) ? b.setAttribute(d, h) : z ? (w = b.getAttribute(d)) || "class" !== d || (w = b.getAttribute(d + "Name")) : b.removeAttribute(d)
			};
			D(h) ? k(d, h) : I(h, k);
			return w
		}
		function l(b, h) {
			var d;
			b || (b = {});
			for (d in h) b[d] = h[d];
			return b
		}
		function m() {
			for (var b = arguments,
			h = b.length,
			d = 0; d < h; d++) {
				var H = b[d];
				if ("undefined" !== typeof H && null !== H) return H
			}
		}
		function e(b, h) {
			a.isMS && !a.svg && h && f(h.opacity) && (h.filter = "alpha(opacity=".concat(100 * h.opacity, ")"));
			l(b.style, h)
		}
		function u(b) {
			return Math.pow(10, Math.floor(Math.log(b) / Math.LN10))
		}
		function C(b, h) {
			return 1E14 < b ? b: parseFloat(b.toPrecision(h || 14))
		}
		function J(b, d, k) {
			var z = a.getStyle || J;
			if ("width" === d) return d = Math.min(b.offsetWidth, b.scrollWidth),
			k = b.getBoundingClientRect && b.getBoundingClientRect().width,
			k < d && k >= d - 1 && (d = Math.floor(k)),
			Math.max(0, d - (z(b, "padding-left", !0) || 0) - (z(b, "padding-right", !0) || 0));
			if ("height" === d) return Math.max(0, Math.min(b.offsetHeight, b.scrollHeight) - (z(b, "padding-top", !0) || 0) - (z(b, "padding-bottom", !0) || 0));
			h.getComputedStyle || g(27, !0);
			if (b = h.getComputedStyle(b, void 0)) {
				var w = b.getPropertyValue(d);
				m(k, "opacity" !== d) && (w = E(w))
			}
			return w
		}
		function I(b, h, d) {
			for (var z in b) Object.hasOwnProperty.call(b, z) && h.call(d || b[z], b[z], z, b)
		}
		function L(b, h, d) {
			function z(h, y) {
				var d = b.removeEventListener || a.removeEventListenerPolyfill;
				d && d.call(b, h, y, !1)
			}
			function w(d) {
				var y;
				if (b.nodeName) {
					if (h) {
						var H = {};
						H[h] = !0
					} else H = d;
					I(H,
					function(b, h) {
						if (d[h]) for (y = d[h].length; y--;) z(h, d[h][y].fn)
					})
				}
			}
			var k = "function" === typeof b && b.prototype || b;
			if (Object.hasOwnProperty.call(k, "hcEvents")) {
				var p = k.hcEvents;
				h ? (k = p[h] || [], d ? (p[h] = k.filter(function(b) {
					return d !== b.fn
				}), z(h, d)) : (w(p), p[h] = [])) : (w(p), delete k.hcEvents)
			}
		}
		function A(b, h, d, H) {
			d = d || {};
			if (q.createEvent && (b.dispatchEvent || b.fireEvent && b !== a)) {
				var z = q.createEvent("Events");
				z.initEvent(h, !0, !0);
				d = l(z, d);
				b.dispatchEvent ? b.dispatchEvent(d) : b.fireEvent(h, d)
			} else if (b.hcEvents) {
				d.target || l(d, {
					preventDefault: function() {
						d.defaultPrevented = !0
					},
					target: b,
					type: h
				});
				z = [];
				for (var w = b,
				k = !1; w.hcEvents;) Object.hasOwnProperty.call(w, "hcEvents") && w.hcEvents[h] && (z.length && (k = !0), z.unshift.apply(z, w.hcEvents[h])),
				w = Object.getPrototypeOf(w);
				k && z.sort(function(b, h) {
					return b.order - h.order
				});
				z.forEach(function(h) { ! 1 === h.fn.call(b, d) && d.preventDefault()
				})
			}
			H && !d.defaultPrevented && H.call(b, d)
		}
		var d = a.charts,
		q = a.doc,
		h = a.win; (g || (g = {})).messages = [];
		Math.easeInOutSine = function(b) {
			return - .5 * (Math.cos(Math.PI * b) - 1)
		};
		var k = Array.prototype.find ?
		function(b, h) {
			return b.find(h)
		}: function(b, h) {
			var d, z = b.length;
			for (d = 0; d < z; d++) if (h(b[d], d)) return b[d]
		};
		I({
			map: "map",
			each: "forEach",
			grep: "filter",
			reduce: "reduce",
			some: "some"
		},
		function(b, h) {
			a[h] = function(d) {
				var z;
				g(32, !1, void 0, (z = {},
				z["Highcharts.".concat(h)] = "use Array.".concat(b), z));
				return Array.prototype[b].apply(d, [].slice.call(arguments, 1))
			}
		});
		var b, p = function() {
			var h = Math.random().toString(36).substring(2, 9) + "-",
			d = 0;
			return function() {
				return "highcharts-" + (b ? "": h) + d++
			}
		} ();
		h.jQuery && (h.jQuery.fn.highcharts = function() {
			var b = [].slice.call(arguments);
			if (this[0]) return b[0] ? (new(a[D(b[0]) ? b.shift() : "Chart"])(this[0], b[0], b[1]), this) : d[c(this[0], "data-highcharts-chart")]
		});
		k = {
			addEvent: function(b, h, d, H) {
				void 0 === H && (H = {});
				var k = "function" === typeof b && b.prototype || b;
				Object.hasOwnProperty.call(k, "hcEvents") || (k.hcEvents = {});
				k = k.hcEvents;
				a.Point && b instanceof a.Point && b.series && b.series.chart && (b.series.chart.runTrackerClick = !0);
				var z = b.addEventListener || a.addEventListenerPolyfill;
				z && z.call(b, h, d, a.supportsPassiveEvents ? {
					passive: void 0 === H.passive ? -1 !== h.indexOf("touch") : H.passive,
					capture: !1
				}: !1);
				k[h] || (k[h] = []);
				k[h].push({
					fn: d,
					order: "number" === typeof H.order ? H.order: Infinity
				});
				k[h].sort(function(b, h) {
					return b.order - h.order
				});
				return function() {
					L(b, h, d)
				}
			},
			arrayMax: function(b) {
				for (var h = b.length,
				d = b[0]; h--;) b[h] > d && (d = b[h]);
				return d
			},
			arrayMin: function(b) {
				for (var h = b.length,
				d = b[0]; h--;) b[h] < d && (d = b[h]);
				return d
			},
			attr: c,
			clamp: function(b, h, d) {
				return b > h ? b < d ? b: d: h
			},
			cleanRecursively: x,
			clearTimeout: function(b) {
				f(b) && clearTimeout(b)
			},
			correctFloat: C,
			createElement: function(b, h, d, k, p) {
				b = q.createElement(b);
				h && l(b, h);
				p && e(b, {
					padding: "0",
					border: "none",
					margin: "0"
				});
				d && e(b, d);
				k && k.appendChild(b);
				return b
			},
			css: e,
			defined: f,
			destroyObjectProperties: function(b, h) {
				I(b,
				function(d, k) {
					d && d !== h && d.destroy && d.destroy();
					delete b[k]
				})
			},
			discardElement: function(b) {
				b && b.parentElement && b.parentElement.removeChild(b)
			},
			erase: function(b, h) {
				for (var d = b.length; d--;) if (b[d] === h) {
					b.splice(d, 1);
					break
				}
			},
			error: g,
			extend: l,
			extendClass: function(b, h) {
				var d = function() {};
				d.prototype = new b;
				l(d.prototype, h);
				return d
			},
			find: k,
			fireEvent: A,
			getMagnitude: u,
			getNestedProperty: function(b, d) {
				for (b = b.split("."); b.length && f(d);) {
					var k = b.shift();
					if ("undefined" === typeof k || "__proto__" === k) return;
					d = d[k];
					if (!f(d) || "function" === typeof d || "number" === typeof d.nodeType || d === h) return
				}
				return d
			},
			getStyle: J,
			inArray: function(b, d, h) {
				g(32, !1, void 0, {
					"Highcharts.inArray": "use Array.indexOf"
				});
				return d.indexOf(b, h)
			},
			isArray: B,
			isClass: t,
			isDOMElement: r,
			isFunction: function(b) {
				return "function" === typeof b
			},
			isNumber: n,
			isObject: G,
			isString: D,
			keys: function(b) {
				g(32, !1, void 0, {
					"Highcharts.keys": "use Object.keys"
				});
				return Object.keys(b)
			},
			merge: function() {
				var b, d = arguments,
				h = {},
				k = function(b, d) {
					"object" !== typeof b && (b = {});
					I(d,
					function(h, y) {
						"__proto__" !== y && "constructor" !== y && (!G(h, !0) || t(h) || r(h) ? b[y] = d[y] : b[y] = k(b[y] || {},
						h))
					});
					return b
				}; ! 0 === d[0] && (h = d[1], d = Array.prototype.slice.call(d, 2));
				var p = d.length;
				for (b = 0; b < p; b++) h = k(h, d[b]);
				return h
			},
			normalizeTickInterval: function(b, d, h, k, p) {
				var H = b;
				h = m(h, u(b));
				var w = b / h;
				d || (d = p ? [1, 1.2, 1.5, 2, 2.5, 3, 4, 5, 6, 8, 10] : [1, 2, 2.5, 5, 10], !1 === k && (1 === h ? d = d.filter(function(b) {
					return 0 === b % 1
				}) : .1 >= h && (d = [1 / h])));
				for (k = 0; k < d.length && !(H = d[k], p && H * h >= b || !p && w <= (d[k] + (d[k + 1] || d[k])) / 2); k++);
				return H = C(H * h, -Math.round(Math.log(.001) / Math.LN10))
			},
			objectEach: I,
			offset: function(b) {
				var d = q.documentElement;
				b = b.parentElement || b.parentNode ? b.getBoundingClientRect() : {
					top: 0,
					left: 0,
					width: 0,
					height: 0
				};
				return {
					top: b.top + (h.pageYOffset || d.scrollTop) - (d.clientTop || 0),
					left: b.left + (h.pageXOffset || d.scrollLeft) - (d.clientLeft || 0),
					width: b.width,
					height: b.height
				}
			},
			pad: function(b, d, h) {
				return Array((d || 2) + 1 - String(b).replace("-", "").length).join(h || "0") + b
			},
			pick: m,
			pInt: E,
			relativeLength: function(b, d, h) {
				return /%$/.test(b) ? d * parseFloat(b) / 100 + (h || 0) : parseFloat(b)
			},
			removeEvent: L,
			splat: function(b) {
				return B(b) ? b: [b]
			},
			stableSort: function(b, d) {
				var h = b.length,
				k, p;
				for (p = 0; p < h; p++) b[p].safeI = p;
				b.sort(function(b, h) {
					k = d(b, h);
					return 0 === k ? b.safeI - h.safeI: k
				});
				for (p = 0; p < h; p++) delete b[p].safeI
			},
			syncTimeout: function(b, d, h) {
				if (0 < d) return setTimeout(b, d, h);
				b.call(0, h);
				return - 1
			},
			timeUnits: {
				millisecond: 1,
				second: 1E3,
				minute: 6E4,
				hour: 36E5,
				day: 864E5,
				week: 6048E5,
				month: 24192E5,
				year: 314496E5
			},
			uniqueKey: p,
			useSerialIds: function(d) {
				return b = m(d, b)
			},
			wrap: function(b, d, h) {
				var k = b[d];
				b[d] = function() {
					var b = arguments,
					d = this;
					return h.apply(this, [function() {
						return k.apply(d, arguments.length ? arguments: b)
					}].concat([].slice.call(arguments)))
				}
			}
		};
		"";
		return k
	});
	K(g, "Core/Chart/ChartDefaults.js", [],
	function() {
		return {
			alignThresholds: !1,
			panning: {
				enabled: !1,
				type: "x"
			},
			styledMode: !1,
			borderRadius: 0,
			colorCount: 10,
			allowMutatingData: !0,
			defaultSeriesType: "line",
			ignoreHiddenSeries: !0,
			spacing: [10, 10, 15, 10],
			resetZoomButton: {
				theme: {
					zIndex: 6
				},
				position: {
					align: "right",
					x: -10,
					y: 10
				}
			},
			zoomBySingleTouch: !1,
			zooming: {
				singleTouch: !1,
				resetButton: {
					theme: {
						zIndex: 6
					},
					position: {
						align: "right",
						x: -10,
						y: 10
					}
				}
			},
			width: null,
			height: null,
			borderColor: "#335cad",
			backgroundColor: "#ffffff",
			plotBorderColor: "#cccccc"
		}
	});
	K(g, "Core/Color/Color.js", [g["Core/Globals.js"], g["Core/Utilities.js"]],
	function(a, g) {
		var v = g.isNumber,
		E = g.merge,
		D = g.pInt;
		g = function() {
			function g(v) {
				this.rgba = [NaN, NaN, NaN, NaN];
				this.input = v;
				var r = a.Color;
				if (r && r !== g) return new r(v);
				if (! (this instanceof g)) return new g(v);
				this.init(v)
			}
			g.parse = function(a) {
				return a ? new g(a) : g.None
			};
			g.prototype.init = function(a) {
				var r;
				if ("object" === typeof a && "undefined" !== typeof a.stops) this.stops = a.stops.map(function(c) {
					return new g(c[1])
				});
				else if ("string" === typeof a) {
					this.input = a = g.names[a.toLowerCase()] || a;
					if ("#" === a.charAt(0)) {
						var t = a.length;
						var n = parseInt(a.substr(1), 16);
						7 === t ? r = [(n & 16711680) >> 16, (n & 65280) >> 8, n & 255, 1] : 4 === t && (r = [(n & 3840) >> 4 | (n & 3840) >> 8, (n & 240) >> 4 | n & 240, (n & 15) << 4 | n & 15, 1])
					}
					if (!r) for (n = g.parsers.length; n--&&!r;) {
						var f = g.parsers[n]; (t = f.regex.exec(a)) && (r = f.parse(t))
					}
				}
				r && (this.rgba = r)
			};
			g.prototype.get = function(a) {
				var r = this.input,
				t = this.rgba;
				if ("object" === typeof r && "undefined" !== typeof this.stops) {
					var n = E(r);
					n.stops = [].slice.call(n.stops);
					this.stops.forEach(function(f, c) {
						n.stops[c] = [n.stops[c][0], f.get(a)]
					});
					return n
				}
				return t && v(t[0]) ? "rgb" === a || !a && 1 === t[3] ? "rgb(" + t[0] + "," + t[1] + "," + t[2] + ")": "a" === a ? "".concat(t[3]) : "rgba(" + t.join(",") + ")": r
			};
			g.prototype.brighten = function(a) {
				var r = this.rgba;
				if (this.stops) this.stops.forEach(function(n) {
					n.brighten(a)
				});
				else if (v(a) && 0 !== a) for (var t = 0; 3 > t; t++) r[t] += D(255 * a),
				0 > r[t] && (r[t] = 0),
				255 < r[t] && (r[t] = 255);
				return this
			};
			g.prototype.setOpacity = function(a) {
				this.rgba[3] = a;
				return this
			};
			g.prototype.tweenTo = function(a, r) {
				var t = this.rgba,
				n = a.rgba;
				if (!v(t[0]) || !v(n[0])) return a.input || "none";
				a = 1 !== n[3] || 1 !== t[3];
				return (a ? "rgba(": "rgb(") + Math.round(n[0] + (t[0] - n[0]) * (1 - r)) + "," + Math.round(n[1] + (t[1] - n[1]) * (1 - r)) + "," + Math.round(n[2] + (t[2] - n[2]) * (1 - r)) + (a ? "," + (n[3] + (t[3] - n[3]) * (1 - r)) : "") + ")"
			};
			g.names = {
				white: "#ffffff",
				black: "#000000"
			};
			g.parsers = [{
				regex: /rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/,
				parse: function(a) {
					return [D(a[1]), D(a[2]), D(a[3]), parseFloat(a[4], 10)]
				}
			},
			{
				regex: /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/,
				parse: function(a) {
					return [D(a[1]), D(a[2]), D(a[3]), 1]
				}
			}];
			g.None = new g("");
			return g
		} ();
		"";
		return g
	});
	K(g, "Core/Color/Palettes.js", [],
	function() {
		return {
			colors: "#7cb5ec #434348 #90ed7d #f7a35c #8085e9 #f15c80 #e4d354 #2b908f #f45b5b #91e8e1".split(" ")
		}
	});
	K(g, "Core/Time.js", [g["Core/Globals.js"], g["Core/Utilities.js"]],
	function(a, g) {
		var v = a.win,
		E = g.defined,
		D = g.error,
		B = g.extend,
		G = g.isObject,
		r = g.merge,
		t = g.objectEach,
		n = g.pad,
		f = g.pick,
		c = g.splat,
		l = g.timeUnits,
		m = a.isSafari && v.Intl && v.Intl.DateTimeFormat.prototype.formatRange,
		e = a.isSafari && v.Intl && !v.Intl.DateTimeFormat.prototype.formatRange;
		g = function() {
			function u(c) {
				this.options = {};
				this.variableTimezone = this.useUTC = !1;
				this.Date = v.Date;
				this.getTimezoneOffset = this.timezoneOffsetFunction();
				this.update(c)
			}
			u.prototype.get = function(c, e) {
				if (this.variableTimezone || this.timezoneOffset) {
					var m = e.getTime(),
					l = m - this.getTimezoneOffset(e);
					e.setTime(l);
					c = e["getUTC" + c]();
					e.setTime(m);
					return c
				}
				return this.useUTC ? e["getUTC" + c]() : e["get" + c]()
			};
			u.prototype.set = function(c, e, l) {
				if (this.variableTimezone || this.timezoneOffset) {
					if ("Milliseconds" === c || "Seconds" === c || "Minutes" === c && 0 === this.getTimezoneOffset(e) % 36E5) return e["setUTC" + c](l);
					var f = this.getTimezoneOffset(e);
					f = e.getTime() - f;
					e.setTime(f);
					e["setUTC" + c](l);
					c = this.getTimezoneOffset(e);
					f = e.getTime() + c;
					return e.setTime(f)
				}
				return this.useUTC || m && "FullYear" === c ? e["setUTC" + c](l) : e["set" + c](l)
			};
			u.prototype.update = function(c) {
				void 0 === c && (c = {});
				var e = f(c.useUTC, !0);
				this.options = c = r(!0, this.options, c);
				this.Date = c.Date || v.Date || Date;
				this.timezoneOffset = (this.useUTC = e) && c.timezoneOffset || void 0;
				this.getTimezoneOffset = this.timezoneOffsetFunction();
				this.variableTimezone = e && !(!c.getTimezoneOffset && !c.timezone)
			};
			u.prototype.makeTime = function(c, m, l, u, A, d) {
				if (this.useUTC) {
					var q = this.Date.UTC.apply(0, arguments);
					var h = this.getTimezoneOffset(q);
					q += h;
					var k = this.getTimezoneOffset(q);
					h !== k ? q += k - h: h - 36E5 !== this.getTimezoneOffset(q - 36E5) || e || (q -= 36E5)
				} else q = (new this.Date(c, m, f(l, 1), f(u, 0), f(A, 0), f(d, 0))).getTime();
				return q
			};
			u.prototype.timezoneOffsetFunction = function() {
				var c = this,
				e = this.options,
				m = e.getTimezoneOffset,
				l = e.moment || v.moment;
				if (!this.useUTC) return function(c) {
					return 6E4 * (new Date(c.toString())).getTimezoneOffset()
				};
				if (e.timezone) {
					if (l) return function(c) {
						return 6E4 * -l.tz(c, e.timezone).utcOffset()
					};
					D(25)
				}
				return this.useUTC && m ?
				function(c) {
					return 6E4 * m(c.valueOf())
				}: function() {
					return 6E4 * (c.timezoneOffset || 0)
				}
			};
			u.prototype.dateFormat = function(c, e, m) {
				if (!E(e) || isNaN(e)) return a.defaultOptions.lang && a.defaultOptions.lang.invalidDate || "";
				c = f(c, "%Y-%m-%d %H:%M:%S");
				var l = this,
				u = new this.Date(e),
				d = this.get("Hours", u),
				q = this.get("Day", u),
				h = this.get("Date", u),
				k = this.get("Month", u),
				b = this.get("FullYear", u),
				p = a.defaultOptions.lang,
				z = p && p.weekdays,
				w = p && p.shortWeekdays;
				u = B({
					a: w ? w[q] : z[q].substr(0, 3),
					A: z[q],
					d: n(h),
					e: n(h, 2, " "),
					w: q,
					b: p.shortMonths[k],
					B: p.months[k],
					m: n(k + 1),
					o: k + 1,
					y: b.toString().substr(2, 2),
					Y: b,
					H: n(d),
					k: d,
					I: n(d % 12 || 12),
					l: d % 12 || 12,
					M: n(this.get("Minutes", u)),
					p: 12 > d ? "AM": "PM",
					P: 12 > d ? "am": "pm",
					S: n(u.getSeconds()),
					L: n(Math.floor(e % 1E3), 3)
				},
				a.dateFormats);
				t(u,
				function(b, d) {
					for (; - 1 !== c.indexOf("%" + d);) c = c.replace("%" + d, "function" === typeof b ? b.call(l, e) : b)
				});
				return m ? c.substr(0, 1).toUpperCase() + c.substr(1) : c
			};
			u.prototype.resolveDTLFormat = function(e) {
				return G(e, !0) ? e: (e = c(e), {
					main: e[0],
					from: e[1],
					to: e[2]
				})
			};
			u.prototype.getTimeTicks = function(c, e, m, u) {
				var A = this,
				d = [],
				q = {},
				h = new A.Date(e),
				k = c.unitRange,
				b = c.count || 1,
				p;
				u = f(u, 1);
				if (E(e)) {
					A.set("Milliseconds", h, k >= l.second ? 0 : b * Math.floor(A.get("Milliseconds", h) / b));
					k >= l.second && A.set("Seconds", h, k >= l.minute ? 0 : b * Math.floor(A.get("Seconds", h) / b));
					k >= l.minute && A.set("Minutes", h, k >= l.hour ? 0 : b * Math.floor(A.get("Minutes", h) / b));
					k >= l.hour && A.set("Hours", h, k >= l.day ? 0 : b * Math.floor(A.get("Hours", h) / b));
					k >= l.day && A.set("Date", h, k >= l.month ? 1 : Math.max(1, b * Math.floor(A.get("Date", h) / b)));
					if (k >= l.month) {
						A.set("Month", h, k >= l.year ? 0 : b * Math.floor(A.get("Month", h) / b));
						var z = A.get("FullYear", h)
					}
					k >= l.year && A.set("FullYear", h, z - z % b);
					k === l.week && (z = A.get("Day", h), A.set("Date", h, A.get("Date", h) - z + u + (z < u ? -7 : 0)));
					z = A.get("FullYear", h);
					u = A.get("Month", h);
					var w = A.get("Date", h),
					C = A.get("Hours", h);
					e = h.getTime(); ! A.variableTimezone && A.useUTC || !E(m) || (p = m - e > 4 * l.month || A.getTimezoneOffset(e) !== A.getTimezoneOffset(m));
					e = h.getTime();
					for (h = 1; e < m;) d.push(e),
					e = k === l.year ? A.makeTime(z + h * b, 0) : k === l.month ? A.makeTime(z, u + h * b) : !p || k !== l.day && k !== l.week ? p && k === l.hour && 1 < b ? A.makeTime(z, u, w, C + h * b) : e + k * b: A.makeTime(z, u, w + h * b * (k === l.day ? 1 : 7)),
					h++;
					d.push(e);
					k <= l.hour && 1E4 > d.length && d.forEach(function(b) {
						0 === b % 18E5 && "000000000" === A.dateFormat("%H%M%S%L", b) && (q[b] = "day")
					})
				}
				d.info = B(c, {
					higherRanks: q,
					totalRange: k * b
				});
				return d
			};
			u.prototype.getDateFormat = function(c, e, m, u) {
				var f = this.dateFormat("%m-%d %H:%M:%S.%L", e),
				d = {
					millisecond: 15,
					second: 12,
					minute: 9,
					hour: 6,
					day: 3
				},
				q = "millisecond";
				for (h in l) {
					if (c === l.week && +this.dateFormat("%w", e) === m && "00:00:00.000" === f.substr(6)) {
						var h = "week";
						break
					}
					if (l[h] > c) {
						h = q;
						break
					}
					if (d[h] && f.substr(d[h]) !== "01-01 00:00:00.000".substr(d[h])) break;
					"week" !== h && (q = h)
				}
				return this.resolveDTLFormat(u[h]).main
			};
			return u
		} ();
		"";
		return g
	});
	K(g, "Core/Defaults.js", [g["Core/Chart/ChartDefaults.js"], g["Core/Color/Color.js"], g["Core/Globals.js"], g["Core/Color/Palettes.js"], g["Core/Time.js"], g["Core/Utilities.js"]],
	function(a, g, x, E, D, B) {
		g = g.parse;
		var v = B.merge,
		r = {
			colors: E.colors,
			symbols: ["circle", "diamond", "square", "triangle", "triangle-down"],
			lang: {
				loading: "Loading...",
				months: "January February March April May June July August September October November December".split(" "),
				shortMonths: "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),
				weekdays: "Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),
				decimalPoint: ".",
				numericSymbols: "kMGTPE".split(""),
				resetZoom: "Reset zoom",
				resetZoomTitle: "Reset zoom level 1:1",
				thousandsSep: " "
			},
			global: {},
			time: {
				Date: void 0,
				getTimezoneOffset: void 0,
				timezone: void 0,
				timezoneOffset: 0,
				useUTC: !0
			},
			chart: a,
			title: {
				text: "Chart title",
				align: "center",
				margin: 15,
				widthAdjust: -44
			},
			subtitle: {
				text: "",
				align: "center",
				widthAdjust: -44
			},
			caption: {
				margin: 15,
				text: "",
				align: "left",
				verticalAlign: "bottom"
			},
			plotOptions: {},
			labels: {
				style: {
					position: "absolute",
					color: "#333333"
				}
			},
			legend: {
				enabled: !0,
				align: "center",
				alignColumns: !0,
				className: "highcharts-no-tooltip",
				layout: "horizontal",
				labelFormatter: function() {
					return this.name
				},
				borderColor: "#999999",
				borderRadius: 0,
				navigation: {
					activeColor: "#003399",
					inactiveColor: "#cccccc"
				},
				itemStyle: {
					color: "#333333",
					cursor: "pointer",
					fontSize: "12px",
					fontWeight: "bold",
					textOverflow: "ellipsis"
				},
				itemHoverStyle: {
					color: "#000000"
				},
				itemHiddenStyle: {
					color: "#cccccc"
				},
				shadow: !1,
				itemCheckboxStyle: {
					position: "absolute",
					width: "13px",
					height: "13px"
				},
				squareSymbol: !0,
				symbolPadding: 5,
				verticalAlign: "bottom",
				x: 0,
				y: 0,
				title: {
					style: {
						fontWeight: "bold"
					}
				}
			},
			loading: {
				labelStyle: {
					fontWeight: "bold",
					position: "relative",
					top: "45%"
				},
				style: {
					position: "absolute",
					backgroundColor: "#ffffff",
					opacity: .5,
					textAlign: "center"
				}
			},
			tooltip: {
				enabled: !0,
				animation: x.svg,
				borderRadius: 3,
				dateTimeLabelFormats: {
					millisecond: "%A, %b %e, %H:%M:%S.%L",
					second: "%A, %b %e, %H:%M:%S",
					minute: "%A, %b %e, %H:%M",
					hour: "%A, %b %e, %H:%M",
					day: "%A, %b %e, %Y",
					week: "Week from %A, %b %e, %Y",
					month: "%B %Y",
					year: "%Y"
				},
				footerFormat: "",
				headerShape: "callout",
				hideDelay: 500,
				padding: 8,
				shape: "callout",
				shared: !1,
				snap: x.isTouchDevice ? 25 : 10,
				headerFormat: '<span style="font-size: 10px">{point.key}</span><br/>',
				pointFormat: '<span style="color:{point.color}">\u25cf</span> {series.name}: <b>{point.y}</b><br/>',
				backgroundColor: g("#f7f7f7").setOpacity(.85).get(),
				borderWidth: 1,
				shadow: !0,
				stickOnContact: !1,
				style: {
					color: "#333333",
					cursor: "default",
					fontSize: "12px",
					whiteSpace: "nowrap"
				},
				useHTML: !1
			},
//			credits: {
//				enabled: !0,
//				href: "https://www.highcharts.com?credits",
//				position: {
//					align: "right",
//					x: -10,
//					verticalAlign: "bottom",
//					y: -5
//				},
//				style: {
//					cursor: "pointer",
//					color: "#999999",
//					fontSize: "9px"
//				},
//				text: "Highcharts.com"
//			}
		};
		r.chart.styledMode = !1;
		"";
		var t = new D(v(r.global, r.time));
		a = {
			defaultOptions: r,
			defaultTime: t,
			getOptions: function() {
				return r
			},
			setOptions: function(a) {
				v(!0, r, a);
				if (a.time || a.global) x.time ? x.time.update(v(r.global, r.time, a.global, a.time)) : x.time = t;
				return r
			}
		};
		"";
		return a
	});
	K(g, "Core/Animation/Fx.js", [g["Core/Color/Color.js"], g["Core/Globals.js"], g["Core/Utilities.js"]],
	function(a, g, x) {
		var v = a.parse,
		D = g.win,
		B = x.isNumber,
		G = x.objectEach;
		return function() {
			function a(a, n, f) {
				this.pos = NaN;
				this.options = n;
				this.elem = a;
				this.prop = f
			}
			a.prototype.dSetter = function() {
				var a = this.paths,
				n = a && a[0];
				a = a && a[1];
				var f = this.now || 0,
				c = [];
				if (1 !== f && n && a) if (n.length === a.length && 1 > f) for (var l = 0; l < a.length; l++) {
					for (var m = n[l], e = a[l], u = [], C = 0; C < e.length; C++) {
						var J = m[C],
						I = e[C];
						B(J) && B(I) && ("A" !== e[0] || 4 !== C && 5 !== C) ? u[C] = J + f * (I - J) : u[C] = I
					}
					c.push(u)
				} else c = a;
				else c = this.toD || [];
				this.elem.attr("d", c, void 0, !0)
			};
			a.prototype.update = function() {
				var a = this.elem,
				n = this.prop,
				f = this.now,
				c = this.options.step;
				if (this[n + "Setter"]) this[n + "Setter"]();
				else a.attr ? a.element && a.attr(n, f, null, !0) : a.style[n] = f + this.unit;
				c && c.call(a, f, this)
			};
			a.prototype.run = function(r, n, f) {
				var c = this,
				l = c.options,
				m = function(e) {
					return m.stopped ? !1 : c.step(e)
				},
				e = D.requestAnimationFrame ||
				function(c) {
					setTimeout(c, 13)
				},
				u = function() {
					for (var c = 0; c < a.timers.length; c++) a.timers[c]() || a.timers.splice(c--, 1);
					a.timers.length && e(u)
				};
				r !== n || this.elem["forceAnimate:" + this.prop] ? (this.startTime = +new Date, this.start = r, this.end = n, this.unit = f, this.now = this.start, this.pos = 0, m.elem = this.elem, m.prop = this.prop, m() && 1 === a.timers.push(m) && e(u)) : (delete l.curAnim[this.prop], l.complete && 0 === Object.keys(l.curAnim).length && l.complete.call(this.elem))
			};
			a.prototype.step = function(a) {
				var n = +new Date,
				f = this.options,
				c = this.elem,
				l = f.complete,
				m = f.duration,
				e = f.curAnim;
				if (c.attr && !c.element) a = !1;
				else if (a || n >= m + this.startTime) {
					this.now = this.end;
					this.pos = 1;
					this.update();
					var u = e[this.prop] = !0;
					G(e,
					function(c) { ! 0 !== c && (u = !1)
					});
					u && l && l.call(c);
					a = !1
				} else this.pos = f.easing((n - this.startTime) / m),
				this.now = this.start + (this.end - this.start) * this.pos,
				this.update(),
				a = !0;
				return a
			};
			a.prototype.initPath = function(a, n, f) {
				function c(c, d) {
					for (; c.length < r;) {
						var e = c[0],
						h = d[r - c.length];
						h && "M" === e[0] && (c[0] = "C" === h[0] ? ["C", e[1], e[2], e[1], e[2], e[1], e[2]] : ["L", e[1], e[2]]);
						c.unshift(e);
						u && (e = c.pop(), c.push(c[c.length - 1], e))
					}
				}
				function l(c, d) {
					for (; c.length < r;) if (d = c[Math.floor(c.length / C) - 1].slice(), "C" === d[0] && (d[1] = d[5], d[2] = d[6]), u) {
						var e = c[Math.floor(c.length / C)].slice();
						c.splice(c.length / 2, 0, d, e)
					} else c.push(d)
				}
				var m = a.startX,
				e = a.endX;
				f = f.slice();
				var u = a.isArea,
				C = u ? 2 : 1;
				n = n && n.slice();
				if (!n) return [f, f];
				if (m && e && e.length) {
					for (a = 0; a < m.length; a++) if (m[a] === e[0]) {
						var J = a;
						break
					} else if (m[0] === e[e.length - m.length + a]) {
						J = a;
						var I = !0;
						break
					} else if (m[m.length - 1] === e[e.length - m.length + a]) {
						J = m.length - a;
						break
					}
					"undefined" === typeof J && (n = [])
				}
				if (n.length && B(J)) {
					var r = f.length + J * C;
					I ? (c(n, f), l(f, n)) : (c(f, n), l(n, f))
				}
				return [n, f]
			};
			a.prototype.fillSetter = function() {
				a.prototype.strokeSetter.apply(this, arguments)
			};
			a.prototype.strokeSetter = function() {
				this.elem.attr(this.prop, v(this.start).tweenTo(v(this.end), this.pos), void 0, !0)
			};
			a.timers = [];
			return a
		} ()
	});
	K(g, "Core/Animation/AnimationUtilities.js", [g["Core/Animation/Fx.js"], g["Core/Utilities.js"]],
	function(a, g) {
		function v(c) {
			return t(c) ? n({
				duration: 500,
				defer: 0
			},
			c) : {
				duration: c ? 500 : 0,
				defer: 0
			}
		}
		function E(c, m) {
			for (var e = a.timers.length; e--;) a.timers[e].elem !== c || m && m !== a.timers[e].prop || (a.timers[e].stopped = !0)
		}
		var D = g.defined,
		B = g.getStyle,
		G = g.isArray,
		r = g.isNumber,
		t = g.isObject,
		n = g.merge,
		f = g.objectEach,
		c = g.pick;
		return {
			animate: function(c, m, e) {
				var u, l = "",
				J, I;
				if (!t(e)) {
					var g = arguments;
					e = {
						duration: g[2],
						easing: g[3],
						complete: g[4]
					}
				}
				r(e.duration) || (e.duration = 400);
				e.easing = "function" === typeof e.easing ? e.easing: Math[e.easing] || Math.easeInOutSine;
				e.curAnim = n(m);
				f(m,
				function(f, d) {
					E(c, d);
					I = new a(c, e, d);
					J = void 0;
					"d" === d && G(m.d) ? (I.paths = I.initPath(c, c.pathArray, m.d), I.toD = m.d, u = 0, J = 1) : c.attr ? u = c.attr(d) : (u = parseFloat(B(c, d)) || 0, "opacity" !== d && (l = "px"));
					J || (J = f);
					"string" === typeof J && J.match("px") && (J = J.replace(/px/g, ""));
					I.run(u, J, l)
				})
			},
			animObject: v,
			getDeferredAnimation: function(c, m, e) {
				var u = v(m),
				f = 0,
				l = 0; (e ? [e] : c.series).forEach(function(c) {
					c = v(c.options.animation);
					f = m && D(m.defer) ? u.defer: Math.max(f, c.duration + c.defer);
					l = Math.min(u.duration, c.duration)
				});
				c.renderer.forExport && (f = 0);
				return {
					defer: Math.max(0, f - l),
					duration: Math.min(f, l)
				}
			},
			setAnimation: function(f, m) {
				m.renderer.globalAnimation = c(f, m.options.chart.animation, !0)
			},
			stop: E
		}
	});
	K(g, "Core/Renderer/HTML/AST.js", [g["Core/Globals.js"], g["Core/Utilities.js"]],
	function(a, g) {
		var v = a.SVG_NS,
		E = g.attr,
		D = g.createElement,
		B = g.css,
		G = g.error,
		r = g.isFunction,
		t = g.isString,
		n = g.objectEach,
		f = g.splat,
		c = (g = a.win.trustedTypes) && r(g.createPolicy) && g.createPolicy("highcharts", {
			createHTML: function(c) {
				return c
			}
		}),
		l = c ? c.createHTML("") : "";
		try {
			var m = !!(new DOMParser).parseFromString(l, "text/html")
		} catch(e) {
			m = !1
		}
		r = function() {
			function e(c) {
				this.nodes = "string" === typeof c ? this.parseMarkup(c) : c
			}
			e.filterUserAttributes = function(c) {
				n(c,
				function(m, f) {
					var u = !0; - 1 === e.allowedAttributes.indexOf(f) && (u = !1); - 1 !== ["background", "dynsrc", "href", "lowsrc", "src"].indexOf(f) && (u = t(m) && e.allowedReferences.some(function(c) {
						return 0 === m.indexOf(c)
					}));
					u || (G(33, !1, void 0, {
						"Invalid attribute in config": "".concat(f)
					}), delete c[f]);
					t(m) && c[f] && (c[f] = m.replace(/</g, "&lt;"))
				});
				return c
			};
			e.parseStyle = function(c) {
				return c.split(";").reduce(function(c, e) {
					e = e.split(":").map(function(c) {
						return c.trim()
					});
					var m = e.shift();
					m && e.length && (c[m.replace(/-([a-z])/g,
					function(c) {
						return c[1].toUpperCase()
					})] = e.join(":"));
					return c
				},
				{})
			};
			e.setElementHTML = function(c, m) {
				c.innerHTML = e.emptyHTML;
				m && (new e(m)).addToDOM(c)
			};
			e.prototype.addToDOM = function(c) {
				function m(c, u) {
					var l;
					f(c).forEach(function(c) {
						var d = c.tagName,
						q = c.textContent ? a.doc.createTextNode(c.textContent) : void 0,
						h = e.bypassHTMLFiltering;
						if (d) if ("#text" === d) var k = q;
						else if ( - 1 !== e.allowedTags.indexOf(d) || h) {
							d = a.doc.createElementNS("svg" === d ? v: u.namespaceURI || v, d);
							var b = c.attributes || {};
							n(c,
							function(d, h) {
								"tagName" !== h && "attributes" !== h && "children" !== h && "style" !== h && "textContent" !== h && (b[h] = d)
							});
							E(d, h ? b: e.filterUserAttributes(b));
							c.style && B(d, c.style);
							q && d.appendChild(q);
							m(c.children || [], d);
							k = d
						} else G(33, !1, void 0, {
							"Invalid tagName in config": d
						});
						k && u.appendChild(k);
						l = k
					});
					return l
				}
				return m(this.nodes, c)
			};
			e.prototype.parseMarkup = function(f) {
				var l = [];
				f = f.trim().replace(/ style=(["'])/g, " data-style=$1");
				if (m) f = (new DOMParser).parseFromString(c ? c.createHTML(f) : f, "text/html");
				else {
					var u = D("div");
					u.innerHTML = f;
					f = {
						body: u
					}
				}
				var a = function(c, m) {
					var d = c.nodeName.toLowerCase(),
					f = {
						tagName: d
					};
					"#text" === d && (f.textContent = c.textContent || "");
					if (d = c.attributes) {
						var h = {}; [].forEach.call(d,
						function(b) {
							"data-style" === b.name ? f.style = e.parseStyle(b.value) : h[b.name] = b.value
						});
						f.attributes = h
					}
					if (c.childNodes.length) {
						var k = []; [].forEach.call(c.childNodes,
						function(b) {
							a(b, k)
						});
						k.length && (f.children = k)
					}
					m.push(f)
				}; [].forEach.call(f.body.childNodes,
				function(c) {
					return a(c, l)
				});
				return l
			};
			e.allowedAttributes = "aria-controls aria-describedby aria-expanded aria-haspopup aria-hidden aria-label aria-labelledby aria-live aria-pressed aria-readonly aria-roledescription aria-selected class clip-path color colspan cx cy d dx dy disabled fill height href id in markerHeight markerWidth offset opacity orient padding paddingLeft paddingRight patternUnits r refX refY role scope slope src startOffset stdDeviation stroke stroke-linecap stroke-width style tableValues result rowspan summary target tabindex text-align text-anchor textAnchor textLength title type valign width x x1 x2 xlink:href y y1 y2 zIndex".split(" ");
			e.allowedReferences = "https:// http:// mailto: / ../ ./ #".split(" ");
			e.allowedTags = "a abbr b br button caption circle clipPath code dd defs div dl dt em feComponentTransfer feFuncA feFuncB feFuncG feFuncR feGaussianBlur feOffset feMerge feMergeNode filter h1 h2 h3 h4 h5 h6 hr i img li linearGradient marker ol p path pattern pre rect small span stop strong style sub sup svg table text textPath thead title tbody tspan td th tr u ul #text".split(" ");
			e.emptyHTML = l;
			e.bypassHTMLFiltering = !1;
			return e
		} ();
		"";
		return r
	});
	K(g, "Core/FormatUtilities.js", [g["Core/Defaults.js"], g["Core/Utilities.js"]],
	function(a, g) {
		function v(a, f, c, l) {
			a = +a || 0;
			f = +f;
			var m = E.lang,
			e = (a.toString().split(".")[1] || "").split("e")[0].length,
			u = a.toString().split("e"),
			C = f;
			if ( - 1 === f) f = Math.min(e, 20);
			else if (!G(f)) f = 2;
			else if (f && u[1] && 0 > u[1]) {
				var g = f + +u[1];
				0 <= g ? (u[0] = ( + u[0]).toExponential(g).split("e")[0], f = g) : (u[0] = u[0].split(".")[0] || 0, a = 20 > f ? (u[0] * Math.pow(10, u[1])).toFixed(f) : 0, u[1] = 0)
			}
			g = (Math.abs(u[1] ? u[0] : a) + Math.pow(10, -Math.max(f, e) - 1)).toFixed(f);
			e = String(t(g));
			var n = 3 < e.length ? e.length % 3 : 0;
			c = r(c, m.decimalPoint);
			l = r(l, m.thousandsSep);
			a = (0 > a ? "-": "") + (n ? e.substr(0, n) + l: "");
			a = 0 > +u[1] && !C ? "0": a + e.substr(n).replace(/(\d{3})(?=\d)/g, "$1" + l);
			f && (a += c + g.slice( - f));
			u[1] && 0 !== +a && (a += "e" + u[1]);
			return a
		}
		var E = a.defaultOptions,
		D = a.defaultTime,
		B = g.getNestedProperty,
		G = g.isNumber,
		r = g.pick,
		t = g.pInt;
		return {
			dateFormat: function(a, f, c) {
				return D.dateFormat(a, f, c)
			},
			format: function(a, f, c) {
				var l = "{",
				m = !1,
				e = /f$/,
				u = /\.([0-9])/,
				C = E.lang,
				g = c && c.time || D;
				c = c && c.numberFormatter || v;
				for (var n = []; a;) {
					var r = a.indexOf(l);
					if ( - 1 === r) break;
					var A = a.slice(0, r);
					if (m) {
						A = A.split(":");
						l = B(A.shift() || "", f);
						if (A.length && "number" === typeof l) if (A = A.join(":"), e.test(A)) {
							var d = parseInt((A.match(u) || ["", "-1"])[1], 10);
							null !== l && (l = c(l, d, C.decimalPoint, -1 < A.indexOf(",") ? C.thousandsSep: ""))
						} else l = g.dateFormat(A, l);
						n.push(l)
					} else n.push(A);
					a = a.slice(r + 1);
					l = (m = !m) ? "}": "{"
				}
				n.push(a);
				return n.join("")
			},
			numberFormat: v
		}
	});
	K(g, "Core/Renderer/RendererUtilities.js", [g["Core/Utilities.js"]],
	function(a) {
		var g = a.clamp,
		x = a.pick,
		E = a.stableSort,
		D; (function(a) {
			function v(a, t, n) {
				var f = a,
				c = f.reducedLen || t,
				l = function(c, e) {
					return (e.rank || 0) - (c.rank || 0)
				},
				m = function(c, e) {
					return c.target - e.target
				},
				e,
				u = !0,
				C = [],
				J = 0;
				for (e = a.length; e--;) J += a[e].size;
				if (J > c) {
					E(a, l);
					for (J = e = 0; J <= c;) J += a[e].size,
					e++;
					C = a.splice(e - 1, a.length)
				}
				E(a, m);
				for (a = a.map(function(c) {
					return {
						size: c.size,
						targets: [c.target],
						align: x(c.align, .5)
					}
				}); u;) {
					for (e = a.length; e--;) c = a[e],
					l = (Math.min.apply(0, c.targets) + Math.max.apply(0, c.targets)) / 2,
					c.pos = g(l - c.size * c.align, 0, t - c.size);
					e = a.length;
					for (u = !1; e--;) 0 < e && a[e - 1].pos + a[e - 1].size > a[e].pos && (a[e - 1].size += a[e].size, a[e - 1].targets = a[e - 1].targets.concat(a[e].targets), a[e - 1].align = .5, a[e - 1].pos + a[e - 1].size > t && (a[e - 1].pos = t - a[e - 1].size), a.splice(e, 1), u = !0)
				}
				f.push.apply(f, C);
				e = 0;
				a.some(function(c) {
					var m = 0;
					return (c.targets || []).some(function() {
						f[e].pos = c.pos + m;
						if ("undefined" !== typeof n && Math.abs(f[e].pos - f[e].target) > n) return f.slice(0, e + 1).forEach(function(c) {
							return delete c.pos
						}),
						f.reducedLen = (f.reducedLen || t) - .1 * t,
						f.reducedLen > .1 * t && v(f, t, n),
						!0;
						m += f[e].size;
						e++;
						return ! 1
					})
				});
				E(f, m);
				return f
			}
			a.distribute = v
		})(D || (D = {}));
		return D
	});
	K(g, "Core/Renderer/SVG/SVGElement.js", [g["Core/Animation/AnimationUtilities.js"], g["Core/Color/Color.js"], g["Core/Globals.js"], g["Core/Utilities.js"]],
	function(a, g, x, E) {
		var v = a.animate,
		B = a.animObject,
		G = a.stop,
		r = x.deg2rad,
		t = x.doc,
		n = x.svg,
		f = x.SVG_NS,
		c = x.win,
		l = E.addEvent,
		m = E.attr,
		e = E.createElement,
		u = E.css,
		C = E.defined,
		J = E.erase,
		I = E.extend,
		L = E.fireEvent,
		A = E.isArray,
		d = E.isFunction,
		q = E.isString,
		h = E.merge,
		k = E.objectEach,
		b = E.pick,
		p = E.pInt,
		z = E.syncTimeout,
		w = E.uniqueKey;
		a = function() {
			function a() {
				this.element = void 0;
				this.onEvents = {};
				this.opacity = 1;
				this.renderer = void 0;
				this.SVG_NS = f;
				this.symbolCustomAttribs = "x y width height r start end innerR anchorX anchorY rounded".split(" ")
			}
			a.prototype._defaultGetter = function(d) {
				d = b(this[d + "Value"], this[d], this.element ? this.element.getAttribute(d) : null, 0);
				/^[\-0-9\.]+$/.test(d) && (d = parseFloat(d));
				return d
			};
			a.prototype._defaultSetter = function(b, d, h) {
				h.setAttribute(d, b)
			};
			a.prototype.add = function(b) {
				var d = this.renderer,
				h = this.element;
				b && (this.parentGroup = b);
				"undefined" !== typeof this.textStr && "text" === this.element.nodeName && d.buildText(this);
				this.added = !0;
				if (!b || b.handleZ || this.zIndex) var c = this.zIndexSetter();
				c || (b ? b.element: d.box).appendChild(h);
				if (this.onAdd) this.onAdd();
				return this
			};
			a.prototype.addClass = function(b, d) {
				var h = d ? "": this.attr("class") || "";
				b = (b || "").split(/ /g).reduce(function(b, d) { - 1 === h.indexOf(d) && b.push(d);
					return b
				},
				h ? [h] : []).join(" ");
				b !== h && this.attr("class", b);
				return this
			};
			a.prototype.afterSetters = function() {
				this.doTransform && (this.updateTransform(), this.doTransform = !1)
			};
			a.prototype.align = function(d, h, c) {
				var k = {},
				e = this.renderer,
				y = e.alignedObjects,
				p, H, a;
				if (d) {
					if (this.alignOptions = d, this.alignByTranslate = h, !c || q(c)) this.alignTo = p = c || "renderer",
					J(y, this),
					y.push(this),
					c = void 0
				} else d = this.alignOptions,
				h = this.alignByTranslate,
				p = this.alignTo;
				c = b(c, e[p], "scrollablePlotBox" === p ? e.plotBox: void 0, e);
				p = d.align;
				var w = d.verticalAlign;
				e = (c.x || 0) + (d.x || 0);
				y = (c.y || 0) + (d.y || 0);
				"right" === p ? H = 1 : "center" === p && (H = 2);
				H && (e += (c.width - (d.width || 0)) / H);
				k[h ? "translateX": "x"] = Math.round(e);
				"bottom" === w ? a = 1 : "middle" === w && (a = 2);
				a && (y += (c.height - (d.height || 0)) / a);
				k[h ? "translateY": "y"] = Math.round(y);
				this[this.placed ? "animate": "attr"](k);
				this.placed = !0;
				this.alignAttr = k;
				return this
			};
			a.prototype.alignSetter = function(b) {
				var d = {
					left: "start",
					center: "middle",
					right: "end"
				};
				d[b] && (this.alignValue = b, this.element.setAttribute("text-anchor", d[b]))
			};
			a.prototype.animate = function(d, h, c) {
				var e = this,
				p = B(b(h, this.renderer.globalAnimation, !0));
				h = p.defer;
				b(t.hidden, t.msHidden, t.webkitHidden, !1) && (p.duration = 0);
				0 !== p.duration ? (c && (p.complete = c), z(function() {
					e.element && v(e, d, p)
				},
				h)) : (this.attr(d, void 0, c || p.complete), k(d,
				function(b, d) {
					p.step && p.step.call(this, b, {
						prop: d,
						pos: 1,
						elem: this
					})
				},
				this));
				return this
			};
			a.prototype.applyTextOutline = function(b) {
				var d = this.element; - 1 !== b.indexOf("contrast") && (b = b.replace(/contrast/g, this.renderer.getContrast(d.style.fill)));
				var h = b.split(" ");
				b = h[h.length - 1];
				if ((h = h[0]) && "none" !== h && x.svg) {
					this.fakeTS = !0;
					h = h.replace(/(^[\d\.]+)(.*?)$/g,
					function(b, d, h) {
						return 2 * Number(d) + h
					});
					this.removeTextOutline();
					var c = t.createElementNS(f, "tspan");
					m(c, {
						"class": "highcharts-text-outline",
						fill: b,
						stroke: b,
						"stroke-width": h,
						"stroke-linejoin": "round"
					});
					b = d.querySelector("textPath") || d; [].forEach.call(b.childNodes,
					function(b) {
						var d = b.cloneNode(!0);
						d.removeAttribute && ["fill", "stroke", "stroke-width", "stroke"].forEach(function(b) {
							return d.removeAttribute(b)
						});
						c.appendChild(d)
					});
					var k = 0; [].forEach.call(b.querySelectorAll("text tspan"),
					function(b) {
						k += Number(b.getAttribute("dy"))
					});
					h = t.createElementNS(f, "tspan");
					h.textContent = "\u200b";
					m(h, {
						x: Number(d.getAttribute("x")),
						dy: -k
					});
					c.appendChild(h);
					b.insertBefore(c, b.firstChild)
				}
			};
			a.prototype.attr = function(b, d, h, c) {
				var p = this.element,
				y = this.symbolCustomAttribs,
				e, a = this,
				w, H;
				if ("string" === typeof b && "undefined" !== typeof d) {
					var F = b;
					b = {};
					b[F] = d
				}
				"string" === typeof b ? a = (this[b + "Getter"] || this._defaultGetter).call(this, b, p) : (k(b,
				function(d, h) {
					w = !1;
					c || G(this, h);
					this.symbolName && -1 !== y.indexOf(h) && (e || (this.symbolAttr(b), e = !0), w = !0); ! this.rotation || "x" !== h && "y" !== h || (this.doTransform = !0);
					w || (H = this[h + "Setter"] || this._defaultSetter, H.call(this, d, h, p), !this.styledMode && this.shadows && /^(width|height|visibility|x|y|d|transform|cx|cy|r)$/.test(h) && this.updateShadows(h, d, H))
				},
				this), this.afterSetters());
				h && h.call(this);
				return a
			};
			a.prototype.clip = function(b) {
				return this.attr("clip-path", b ? "url(" + this.renderer.url + "#" + b.id + ")": "none")
			};
			a.prototype.crisp = function(b, d) {
				d = d || b.strokeWidth || 0;
				var h = Math.round(d) % 2 / 2;
				b.x = Math.floor(b.x || this.x || 0) + h;
				b.y = Math.floor(b.y || this.y || 0) + h;
				b.width = Math.floor((b.width || this.width || 0) - 2 * h);
				b.height = Math.floor((b.height || this.height || 0) - 2 * h);
				C(b.strokeWidth) && (b.strokeWidth = d);
				return b
			};
			a.prototype.complexColor = function(b, d, c) {
				var p = this.renderer,
				e, y, a, m, f, H, F, z, M, q, l = [],
				u;
				L(this.renderer, "complexColor", {
					args: arguments
				},
				function() {
					b.radialGradient ? y = "radialGradient": b.linearGradient && (y = "linearGradient");
					if (y) {
						a = b[y];
						f = p.gradients;
						H = b.stops;
						M = c.radialReference;
						A(a) && (b[y] = a = {
							x1: a[0],
							y1: a[1],
							x2: a[2],
							y2: a[3],
							gradientUnits: "userSpaceOnUse"
						});
						"radialGradient" === y && M && !C(a.gradientUnits) && (m = a, a = h(a, p.getRadialAttr(M, m), {
							gradientUnits: "userSpaceOnUse"
						}));
						k(a,
						function(b, d) {
							"id" !== d && l.push(d, b)
						});
						k(H,
						function(b) {
							l.push(b)
						});
						l = l.join(",");
						if (f[l]) q = f[l].attr("id");
						else {
							a.id = q = w();
							var T = f[l] = p.createElement(y).attr(a).add(p.defs);
							T.radAttr = m;
							T.stops = [];
							H.forEach(function(b) {
								0 === b[1].indexOf("rgba") ? (e = g.parse(b[1]), F = e.get("rgb"), z = e.get("a")) : (F = b[1], z = 1);
								b = p.createElement("stop").attr({
									offset: b[0],
									"stop-color": F,
									"stop-opacity": z
								}).add(T);
								T.stops.push(b)
							})
						}
						u = "url(" + p.url + "#" + q + ")";
						c.setAttribute(d, u);
						c.gradient = l;
						b.toString = function() {
							return u
						}
					}
				})
			};
			a.prototype.css = function(b) {
				var d = this.styles,
				c = {},
				e = this.element,
				a = !d;
				b.color && (b.fill = b.color);
				d && k(b,
				function(b, h) {
					d && d[h] !== b && (c[h] = b, a = !0)
				});
				if (a) {
					d && (b = I(d, c));
					if (null === b.width || "auto" === b.width) delete this.textWidth;
					else if ("text" === e.nodeName.toLowerCase() && b.width) var y = this.textWidth = p(b.width);
					this.styles = b;
					y && !n && this.renderer.forExport && delete b.width;
					var w = h(b);
					e.namespaceURI === this.SVG_NS && ["textOutline", "textOverflow", "width"].forEach(function(b) {
						return w && delete w[b]
					});
					u(e, w);
					this.added && ("text" === this.element.nodeName && this.renderer.buildText(this), b.textOutline && this.applyTextOutline(b.textOutline))
				}
				return this
			};
			a.prototype.dashstyleSetter = function(d) {
				var h = this["stroke-width"];
				"inherit" === h && (h = 1);
				if (d = d && d.toLowerCase()) {
					var c = d.replace("shortdashdotdot", "3,1,1,1,1,1,").replace("shortdashdot", "3,1,1,1").replace("shortdot", "1,1,").replace("shortdash", "3,1,").replace("longdash", "8,3,").replace(/dot/g, "1,3,").replace("dash", "4,3,").replace(/,$/, "").split(",");
					for (d = c.length; d--;) c[d] = "" + p(c[d]) * b(h, NaN);
					d = c.join(",").replace(/NaN/g, "none");
					this.element.setAttribute("stroke-dasharray", d)
				}
			};
			a.prototype.destroy = function() {
				var b = this,
				d = b.element || {},
				h = b.renderer,
				c = d.ownerSVGElement,
				p = h.isSVG && "SPAN" === d.nodeName && b.parentGroup || void 0;
				d.onclick = d.onmouseout = d.onmouseover = d.onmousemove = d.point = null;
				G(b);
				if (b.clipPath && c) {
					var y = b.clipPath; [].forEach.call(c.querySelectorAll("[clip-path],[CLIP-PATH]"),
					function(b) { - 1 < b.getAttribute("clip-path").indexOf(y.element.id) && b.removeAttribute("clip-path")
					});
					b.clipPath = y.destroy()
				}
				if (b.stops) {
					for (c = 0; c < b.stops.length; c++) b.stops[c].destroy();
					b.stops.length = 0;
					b.stops = void 0
				}
				b.safeRemoveChild(d);
				for (h.styledMode || b.destroyShadows(); p && p.div && 0 === p.div.childNodes.length;) d = p.parentGroup,
				b.safeRemoveChild(p.div),
				delete p.div,
				p = d;
				b.alignTo && J(h.alignedObjects, b);
				k(b,
				function(d, h) {
					b[h] && b[h].parentGroup === b && b[h].destroy && b[h].destroy();
					delete b[h]
				})
			};
			a.prototype.destroyShadows = function() { (this.shadows || []).forEach(function(b) {
					this.safeRemoveChild(b)
				},
				this);
				this.shadows = void 0
			};
			a.prototype.dSetter = function(b, d, h) {
				A(b) && ("string" === typeof b[0] && (b = this.renderer.pathToSegments(b)), this.pathArray = b, b = b.reduce(function(b, d, h) {
					return d && d.join ? (h ? b + " ": "") + d.join(" ") : (d || "").toString()
				},
				""));
				/(NaN| {2}|^$)/.test(b) && (b = "M 0 0");
				this[d] !== b && (h.setAttribute(d, b), this[d] = b)
			};
			a.prototype.fadeOut = function(d) {
				var h = this;
				h.animate({
					opacity: 0
				},
				{
					duration: b(d, 150),
					complete: function() {
						h.hide()
					}
				})
			};
			a.prototype.fillSetter = function(b, d, h) {
				"string" === typeof b ? h.setAttribute(d, b) : b && this.complexColor(b, d, h)
			};
			a.prototype.getBBox = function(h, c) {
				var k = this.alignValue,
				p = this.element,
				e = this.renderer,
				y = this.styles,
				w = this.textStr,
				m = e.cache,
				f = e.cacheKeys,
				z = p.namespaceURI === this.SVG_NS;
				c = b(c, this.rotation, 0);
				var F = e.styledMode ? p && a.prototype.getStyle.call(p, "font-size") : y && y.fontSize,
				q;
				if (C(w)) {
					var M = w.toString(); - 1 === M.indexOf("<") && (M = M.replace(/[0-9]/g, "0"));
					M += ["", c, F, this.textWidth, k, y && y.textOverflow, y && y.fontWeight].join()
				}
				M && !h && (q = m[M]);
				if (!q) {
					if (z || e.forExport) {
						try {
							var l = this.fakeTS &&
							function(b) {
								var d = p.querySelector(".highcharts-text-outline");
								d && u(d, {
									display: b
								})
							};
							d(l) && l("none");
							q = p.getBBox ? I({},
							p.getBBox()) : {
								width: p.offsetWidth,
								height: p.offsetHeight,
								x: 0,
								y: 0
							};
							d(l) && l("")
						} catch(U) {
							""
						}
						if (!q || 0 > q.width) q = {
							x: 0,
							y: 0,
							width: 0,
							height: 0
						}
					} else q = this.htmlGetBBox();
					if (e.isSVG && (e = q.width, h = q.height, z && (q.height = h = {
						"11px,17": 14,
						"13px,20": 16
					} ["" + (F || "") + ",".concat(Math.round(h))] || h), c)) {
						z = Number(p.getAttribute("y") || 0) - q.y;
						k = {
							right: 1,
							center: .5
						} [k || 0] || 0;
						y = c * r;
						F = (c - 90) * r;
						var H = e * Math.cos(y);
						c = e * Math.sin(y);
						l = Math.cos(F);
						y = Math.sin(F);
						e = q.x + k * (e - H) + z * l;
						F = e + H;
						l = F - h * l;
						H = l - H;
						z = q.y + z - k * c + z * y;
						k = z + c;
						h = k - h * y;
						c = h - c;
						q.x = Math.min(e, F, l, H);
						q.y = Math.min(z, k, h, c);
						q.width = Math.max(e, F, l, H) - q.x;
						q.height = Math.max(z, k, h, c) - q.y
					}
					if (M && ("" === w || 0 < q.height)) {
						for (; 250 < f.length;) delete m[f.shift()];
						m[M] || f.push(M);
						m[M] = q
					}
				}
				return q
			};
			a.prototype.getStyle = function(b) {
				return c.getComputedStyle(this.element || this, "").getPropertyValue(b)
			};
			a.prototype.hasClass = function(b) {
				return - 1 !== ("" + this.attr("class")).split(" ").indexOf(b)
			};
			a.prototype.hide = function() {
				return this.attr({
					visibility: "hidden"
				})
			};
			a.prototype.htmlGetBBox = function() {
				return {
					height: 0,
					width: 0,
					x: 0,
					y: 0
				}
			};
			a.prototype.init = function(b, d) {
				this.element = "span" === d ? e(d) : t.createElementNS(this.SVG_NS, d);
				this.renderer = b;
				L(this, "afterInit")
			};
			a.prototype.on = function(b, d) {
				var h = this.onEvents;
				if (h[b]) h[b]();
				h[b] = l(this.element, b, d);
				return this
			};
			a.prototype.opacitySetter = function(b, d, h) {
				this.opacity = b = Number(Number(b).toFixed(3));
				h.setAttribute(d, b)
			};
			a.prototype.removeClass = function(b) {
				return this.attr("class", ("" + this.attr("class")).replace(q(b) ? new RegExp("(^| )".concat(b, "( |$)")) : b, " ").replace(/ +/g, " ").trim())
			};
			a.prototype.removeTextOutline = function() {
				var b = this.element.querySelector("tspan.highcharts-text-outline");
				b && this.safeRemoveChild(b)
			};
			a.prototype.safeRemoveChild = function(b) {
				var d = b.parentNode;
				d && d.removeChild(b)
			};
			a.prototype.setRadialReference = function(b) {
				var d = this.element.gradient && this.renderer.gradients[this.element.gradient];
				this.element.radialReference = b;
				d && d.radAttr && d.animate(this.renderer.getRadialAttr(b, d.radAttr));
				return this
			};
			a.prototype.setTextPath = function(b, d) {
				var c = this;
				d = h(!0, {
					enabled: !0,
					attributes: {
						dy: -5,
						startOffset: "50%",
						textAnchor: "middle"
					}
				},
				d);
				var k = this.renderer.url,
				p = this.text || this,
				y = p.textPath,
				e = d.attributes,
				a = d.enabled;
				b = b || y && y.path;
				y && y.undo();
				b && a ? (d = l(p, "afterModifyTree",
				function(d) {
					if (b && a) {
						var h = b.attr("id");
						h || b.attr("id", h = w());
						var y = {
							x: 0,
							y: 0
						};
						C(e.dx) && (y.dx = e.dx, delete e.dx);
						C(e.dy) && (y.dy = e.dy, delete e.dy);
						p.attr(y);
						c.attr({
							transform: ""
						});
						c.box && (c.box = c.box.destroy());
						y = d.nodes.slice(0);
						d.nodes.length = 0;
						d.nodes[0] = {
							tagName: "textPath",
							attributes: I(e, {
								"text-anchor": e.textAnchor,
								href: "" + k + "#".concat(h)
							}),
							children: y
						}
					}
				}), p.textPath = {
					path: b,
					undo: d
				}) : (p.attr({
					dx: 0,
					dy: 0
				}), delete p.textPath);
				this.added && (p.textCache = "", this.renderer.buildText(p));
				return this
			};
			a.prototype.shadow = function(b, d, h) {
				var c = [],
				p = this.element,
				y = this.oldShadowOptions,
				e = this.parentGroup,
				a = e && 90 === e.rotation;
				e = {
					color: "#000000",
					offsetX: a ? -1 : 1,
					offsetY: a ? -1 : 1,
					opacity: .15,
					width: 3
				};
				var w = !1,
				q; ! 0 === b ? q = e: "object" === typeof b && (q = I(e, b));
				q && (q && y && k(q,
				function(b, d) {
					b !== y[d] && (w = !0)
				}), w && this.destroyShadows(), this.oldShadowOptions = q);
				if (!q) this.destroyShadows();
				else if (!this.shadows) {
					e = q.opacity / q.width;
					var F = a ? "translate(".concat(q.offsetY, ", ").concat(q.offsetX, ")") : "translate(".concat(q.offsetX, ", ").concat(q.offsetY, ")");
					for (a = 1; a <= q.width; a++) {
						var f = p.cloneNode(!1);
						var z = 2 * q.width + 1 - 2 * a;
						m(f, {
							stroke: b.color || "#000000",
							"stroke-opacity": e * a,
							"stroke-width": z,
							transform: F,
							fill: "none"
						});
						f.setAttribute("class", (f.getAttribute("class") || "") + " highcharts-shadow");
						h && (m(f, "height", Math.max(m(f, "height") - z, 0)), f.cutHeight = z);
						d ? d.element.appendChild(f) : p.parentNode && p.parentNode.insertBefore(f, p);
						c.push(f)
					}
					this.shadows = c
				}
				return this
			};
			a.prototype.show = function(b) {
				void 0 === b && (b = !0);
				return this.attr({
					visibility: b ? "inherit": "visible"
				})
			};
			a.prototype["stroke-widthSetter"] = function(b, d, h) {
				this[d] = b;
				h.setAttribute(d, b)
			};
			a.prototype.strokeWidth = function() {
				if (!this.renderer.styledMode) return this["stroke-width"] || 0;
				var b = this.getStyle("stroke-width"),
				d = 0;
				if (b.indexOf("px") === b.length - 2) d = p(b);
				else if ("" !== b) {
					var h = t.createElementNS(f, "rect");
					m(h, {
						width: b,
						"stroke-width": 0
					});
					this.element.parentNode.appendChild(h);
					d = h.getBBox().width;
					h.parentNode.removeChild(h)
				}
				return d
			};
			a.prototype.symbolAttr = function(d) {
				var h = this;
				"x y r start end width height innerR anchorX anchorY clockwise".split(" ").forEach(function(c) {
					h[c] = b(d[c], h[c])
				});
				h.attr({
					d: h.renderer.symbols[h.symbolName](h.x, h.y, h.width, h.height, h)
				})
			};
			a.prototype.textSetter = function(b) {
				b !== this.textStr && (delete this.textPxLength, this.textStr = b, this.added && this.renderer.buildText(this))
			};
			a.prototype.titleSetter = function(d) {
				var h = this.element,
				c = h.getElementsByTagName("title")[0] || t.createElementNS(this.SVG_NS, "title");
				h.insertBefore ? h.insertBefore(c, h.firstChild) : h.appendChild(c);
				c.textContent = String(b(d, "")).replace(/<[^>]*>/g, "").replace(/&lt;/g, "<").replace(/&gt;/g, ">")
			};
			a.prototype.toFront = function() {
				var b = this.element;
				b.parentNode.appendChild(b);
				return this
			};
			a.prototype.translate = function(b, d) {
				return this.attr({
					translateX: b,
					translateY: d
				})
			};
			a.prototype.updateShadows = function(b, d, h) {
				var c = this.shadows;
				if (c) for (var k = c.length; k--;) h.call(c[k], "height" === b ? Math.max(d - (c[k].cutHeight || 0), 0) : "d" === b ? this.d: d, b, c[k])
			};
			a.prototype.updateTransform = function() {
				var d = this.element,
				h = this.matrix,
				c = this.rotation;
				c = void 0 === c ? 0 : c;
				var k = this.scaleX,
				p = this.scaleY,
				y = this.translateX,
				e = this.translateY;
				y = ["translate(" + (void 0 === y ? 0 : y) + "," + (void 0 === e ? 0 : e) + ")"];
				C(h) && y.push("matrix(" + h.join(",") + ")");
				c && y.push("rotate(" + c + " " + b(this.rotationOriginX, d.getAttribute("x"), 0) + " " + b(this.rotationOriginY, d.getAttribute("y") || 0) + ")"); (C(k) || C(p)) && y.push("scale(" + b(k, 1) + " " + b(p, 1) + ")");
				y.length && !(this.text || this).textPath && d.setAttribute("transform", y.join(" "))
			};
			a.prototype.visibilitySetter = function(b, d, h) {
				"inherit" === b ? h.removeAttribute(d) : this[d] !== b && h.setAttribute(d, b);
				this[d] = b
			};
			a.prototype.xGetter = function(b) {
				"circle" === this.element.nodeName && ("x" === b ? b = "cx": "y" === b && (b = "cy"));
				return this._defaultGetter(b)
			};
			a.prototype.zIndexSetter = function(b, d) {
				var h = this.renderer,
				c = this.parentGroup,
				k = (c || h).element || h.box,
				y = this.element;
				h = k === h.box;
				var e = !1;
				var a = this.added;
				var w;
				C(b) ? (y.setAttribute("data-z-index", b), b = +b, this[d] === b && (a = !1)) : C(this[d]) && y.removeAttribute("data-z-index");
				this[d] = b;
				if (a) { (b = this.zIndex) && c && (c.handleZ = !0);
					d = k.childNodes;
					for (w = d.length - 1; 0 <= w && !e; w--) {
						c = d[w];
						a = c.getAttribute("data-z-index");
						var q = !C(a);
						if (c !== y) if (0 > b && q && !h && !w) k.insertBefore(y, d[w]),
						e = !0;
						else if (p(a) <= b || q && (!C(b) || 0 <= b)) k.insertBefore(y, d[w + 1] || null),
						e = !0
					}
					e || (k.insertBefore(y, d[h ? 3 : 0] || null), e = !0)
				}
				return e
			};
			return a
		} ();
		a.prototype.strokeSetter = a.prototype.fillSetter;
		a.prototype.yGetter = a.prototype.xGetter;
		a.prototype.matrixSetter = a.prototype.rotationOriginXSetter = a.prototype.rotationOriginYSetter = a.prototype.rotationSetter = a.prototype.scaleXSetter = a.prototype.scaleYSetter = a.prototype.translateXSetter = a.prototype.translateYSetter = a.prototype.verticalAlignSetter = function(b, d) {
			this[d] = b;
			this.doTransform = !0
		};
		"";
		return a
	});
	K(g, "Core/Renderer/RendererRegistry.js", [g["Core/Globals.js"]],
	function(a) {
		var g; (function(g) {
			g.rendererTypes = {};
			var v;
			g.getRendererType = function(a) {
				void 0 === a && (a = v);
				return g.rendererTypes[a] || g.rendererTypes[v]
			};
			g.registerRendererType = function(x, B, E) {
				g.rendererTypes[x] = B;
				if (!v || E) v = x,
				a.Renderer = B
			}
		})(g || (g = {}));
		return g
	});
	K(g, "Core/Renderer/SVG/SVGLabel.js", [g["Core/Renderer/SVG/SVGElement.js"], g["Core/Utilities.js"]],
	function(a, g) {
		var v = this && this.__extends ||
		function() {
			var a = function(f, c) {
				a = Object.setPrototypeOf || {
					__proto__: []
				}
				instanceof Array &&
				function(c, a) {
					c.__proto__ = a
				} ||
				function(c, a) {
					for (var e in a) a.hasOwnProperty(e) && (c[e] = a[e])
				};
				return a(f, c)
			};
			return function(f, c) {
				function l() {
					this.constructor = f
				}
				a(f, c);
				f.prototype = null === c ? Object.create(c) : (l.prototype = c.prototype, new l)
			}
		} (),
		E = g.defined,
		D = g.extend,
		B = g.isNumber,
		G = g.merge,
		r = g.pick,
		t = g.removeEvent;
		return function(g) {
			function f(c, a, m, e, u, C, n, I, r, A) {
				var d = g.call(this) || this;
				d.paddingLeftSetter = d.paddingSetter;
				d.paddingRightSetter = d.paddingSetter;
				d.init(c, "g");
				d.textStr = a;
				d.x = m;
				d.y = e;
				d.anchorX = C;
				d.anchorY = n;
				d.baseline = r;
				d.className = A;
				d.addClass("button" === A ? "highcharts-no-tooltip": "highcharts-label");
				A && d.addClass("highcharts-" + A);
				d.text = c.text(void 0, 0, 0, I).attr({
					zIndex: 1
				});
				var q;
				"string" === typeof u && ((q = /^url\((.*?)\)$/.test(u)) || d.renderer.symbols[u]) && (d.symbolKey = u);
				d.bBox = f.emptyBBox;
				d.padding = 3;
				d.baselineOffset = 0;
				d.needsBox = c.styledMode || q;
				d.deferredAttr = {};
				d.alignFactor = 0;
				return d
			}
			v(f, g);
			f.prototype.alignSetter = function(c) {
				c = {
					left: 0,
					center: .5,
					right: 1
				} [c];
				c !== this.alignFactor && (this.alignFactor = c, this.bBox && B(this.xSetting) && this.attr({
					x: this.xSetting
				}))
			};
			f.prototype.anchorXSetter = function(c, a) {
				this.anchorX = c;
				this.boxAttr(a, Math.round(c) - this.getCrispAdjust() - this.xSetting)
			};
			f.prototype.anchorYSetter = function(c, a) {
				this.anchorY = c;
				this.boxAttr(a, c - this.ySetting)
			};
			f.prototype.boxAttr = function(c, a) {
				this.box ? this.box.attr(c, a) : this.deferredAttr[c] = a
			};
			f.prototype.css = function(c) {
				if (c) {
					var l = {};
					c = G(c);
					f.textProps.forEach(function(e) {
						"undefined" !== typeof c[e] && (l[e] = c[e], delete c[e])
					});
					this.text.css(l);
					var m = "width" in l;
					"fontSize" in l || "fontWeight" in l ? this.updateTextPadding() : m && this.updateBoxSize()
				}
				return a.prototype.css.call(this, c)
			};
			f.prototype.destroy = function() {
				t(this.element, "mouseenter");
				t(this.element, "mouseleave");
				this.text && this.text.destroy();
				this.box && (this.box = this.box.destroy());
				a.prototype.destroy.call(this)
			};
			f.prototype.fillSetter = function(c, a) {
				c && (this.needsBox = !0);
				this.fill = c;
				this.boxAttr(a, c)
			};
			f.prototype.getBBox = function() {
				this.textStr && 0 === this.bBox.width && 0 === this.bBox.height && this.updateBoxSize();
				var c = this.padding,
				a = r(this.paddingLeft, c);
				return {
					width: this.width,
					height: this.height,
					x: this.bBox.x - a,
					y: this.bBox.y - c
				}
			};
			f.prototype.getCrispAdjust = function() {
				return this.renderer.styledMode && this.box ? this.box.strokeWidth() % 2 / 2 : (this["stroke-width"] ? parseInt(this["stroke-width"], 10) : 0) % 2 / 2
			};
			f.prototype.heightSetter = function(c) {
				this.heightSetting = c
			};
			f.prototype.onAdd = function() {
				this.text.add(this);
				this.attr({
					text: r(this.textStr, ""),
					x: this.x || 0,
					y: this.y || 0
				});
				this.box && E(this.anchorX) && this.attr({
					anchorX: this.anchorX,
					anchorY: this.anchorY
				})
			};
			f.prototype.paddingSetter = function(c, a) {
				B(c) ? c !== this[a] && (this[a] = c, this.updateTextPadding()) : this[a] = void 0
			};
			f.prototype.rSetter = function(c, a) {
				this.boxAttr(a, c)
			};
			f.prototype.shadow = function(c) {
				c && !this.renderer.styledMode && (this.updateBoxSize(), this.box && this.box.shadow(c));
				return this
			};
			f.prototype.strokeSetter = function(c, a) {
				this.stroke = c;
				this.boxAttr(a, c)
			};
			f.prototype["stroke-widthSetter"] = function(c, a) {
				c && (this.needsBox = !0);
				this["stroke-width"] = c;
				this.boxAttr(a, c)
			};
			f.prototype["text-alignSetter"] = function(c) {
				this.textAlign = c
			};
			f.prototype.textSetter = function(c) {
				"undefined" !== typeof c && this.text.attr({
					text: c
				});
				this.updateTextPadding()
			};
			f.prototype.updateBoxSize = function() {
				var c = this.text,
				a = c.element.style,
				m = {},
				e = this.padding,
				u = this.bBox = B(this.widthSetting) && B(this.heightSetting) && !this.textAlign || !E(c.textStr) ? f.emptyBBox: c.getBBox();
				this.width = this.getPaddedWidth();
				this.height = (this.heightSetting || u.height || 0) + 2 * e;
				a = this.renderer.fontMetrics(a && a.fontSize, c);
				this.baselineOffset = e + Math.min((this.text.firstLineMetrics || a).b, u.height || Infinity);
				this.heightSetting && (this.baselineOffset += (this.heightSetting - a.h) / 2);
				this.needsBox && !c.textPath && (this.box || (c = this.box = this.symbolKey ? this.renderer.symbol(this.symbolKey) : this.renderer.rect(), c.addClass(("button" === this.className ? "": "highcharts-label-box") + (this.className ? " highcharts-" + this.className + "-box": "")), c.add(this)), c = this.getCrispAdjust(), m.x = c, m.y = (this.baseline ? -this.baselineOffset: 0) + c, m.width = Math.round(this.width), m.height = Math.round(this.height), this.box.attr(D(m, this.deferredAttr)), this.deferredAttr = {})
			};
			f.prototype.updateTextPadding = function() {
				var c = this.text;
				if (!c.textPath) {
					this.updateBoxSize();
					var a = this.baseline ? 0 : this.baselineOffset,
					f = r(this.paddingLeft, this.padding);
					E(this.widthSetting) && this.bBox && ("center" === this.textAlign || "right" === this.textAlign) && (f += {
						center: .5,
						right: 1
					} [this.textAlign] * (this.widthSetting - this.bBox.width));
					if (f !== c.x || a !== c.y) c.attr("x", f),
					c.hasBoxWidthChanged && (this.bBox = c.getBBox(!0)),
					"undefined" !== typeof a && c.attr("y", a);
					c.x = f;
					c.y = a
				}
			};
			f.prototype.widthSetter = function(c) {
				this.widthSetting = B(c) ? c: void 0
			};
			f.prototype.getPaddedWidth = function() {
				var c = this.padding,
				a = r(this.paddingLeft, c);
				c = r(this.paddingRight, c);
				return (this.widthSetting || this.bBox.width || 0) + a + c
			};
			f.prototype.xSetter = function(c) {
				this.x = c;
				this.alignFactor && (c -= this.alignFactor * this.getPaddedWidth(), this["forceAnimate:x"] = !0);
				this.xSetting = Math.round(c);
				this.attr("translateX", this.xSetting)
			};
			f.prototype.ySetter = function(c) {
				this.ySetting = this.y = Math.round(c);
				this.attr("translateY", this.ySetting)
			};
			f.emptyBBox = {
				width: 0,
				height: 0,
				x: 0,
				y: 0
			};
			f.textProps = "color direction fontFamily fontSize fontStyle fontWeight lineHeight textAlign textDecoration textOutline textOverflow width".split(" ");
			return f
		} (a)
	});
	K(g, "Core/Renderer/SVG/Symbols.js", [g["Core/Utilities.js"]],
	function(a) {
		function g(a, g, n, f, c) {
			var l = [];
			if (c) {
				var m = c.start || 0,
				e = G(c.r, n);
				n = G(c.r, f || n);
				var u = (c.end || 0) - .001;
				f = c.innerR;
				var C = G(c.open, .001 > Math.abs((c.end || 0) - m - 2 * Math.PI)),
				J = Math.cos(m),
				I = Math.sin(m),
				r = Math.cos(u),
				A = Math.sin(u);
				m = G(c.longArc, .001 > u - m - Math.PI ? 0 : 1);
				l.push(["M", a + e * J, g + n * I], ["A", e, n, 0, m, G(c.clockwise, 1), a + e * r, g + n * A]);
				D(f) && l.push(C ? ["M", a + f * r, g + f * A] : ["L", a + f * r, g + f * A], ["A", f, f, 0, m, D(c.clockwise) ? 1 - c.clockwise: 0, a + f * J, g + f * I]);
				C || l.push(["Z"])
			}
			return l
		}
		function x(a, g, n, f, c) {
			return c && c.r ? E(a, g, n, f, c) : [["M", a, g], ["L", a + n, g], ["L", a + n, g + f], ["L", a, g + f], ["Z"]]
		}
		function E(a, g, n, f, c) {
			c = c && c.r || 0;
			return [["M", a + c, g], ["L", a + n - c, g], ["C", a + n, g, a + n, g, a + n, g + c], ["L", a + n, g + f - c], ["C", a + n, g + f, a + n, g + f, a + n - c, g + f], ["L", a + c, g + f], ["C", a, g + f, a, g + f, a, g + f - c], ["L", a, g + c], ["C", a, g, a, g, a + c, g]]
		}
		var D = a.defined,
		B = a.isNumber,
		G = a.pick;
		return {
			arc: g,
			callout: function(a, g, n, f, c) {
				var l = Math.min(c && c.r || 0, n, f),
				m = l + 6,
				e = c && c.anchorX;
				c = c && c.anchorY || 0;
				var u = E(a, g, n, f, {
					r: l
				});
				if (!B(e)) return u;
				a + e >= n ? c > g + m && c < g + f - m ? u.splice(3, 1, ["L", a + n, c - 6], ["L", a + n + 6, c], ["L", a + n, c + 6], ["L", a + n, g + f - l]) : u.splice(3, 1, ["L", a + n, f / 2], ["L", e, c], ["L", a + n, f / 2], ["L", a + n, g + f - l]) : 0 >= a + e ? c > g + m && c < g + f - m ? u.splice(7, 1, ["L", a, c + 6], ["L", a - 6, c], ["L", a, c - 6], ["L", a, g + l]) : u.splice(7, 1, ["L", a, f / 2], ["L", e, c], ["L", a, f / 2], ["L", a, g + l]) : c && c > f && e > a + m && e < a + n - m ? u.splice(5, 1, ["L", e + 6, g + f], ["L", e, g + f + 6], ["L", e - 6, g + f], ["L", a + l, g + f]) : c && 0 > c && e > a + m && e < a + n - m && u.splice(1, 1, ["L", e - 6, g], ["L", e, g - 6], ["L", e + 6, g], ["L", n - l, g]);
				return u
			},
			circle: function(a, t, n, f) {
				return g(a + n / 2, t + f / 2, n / 2, f / 2, {
					start: .5 * Math.PI,
					end: 2.5 * Math.PI,
					open: !1
				})
			},
			diamond: function(a, g, n, f) {
				return [["M", a + n / 2, g], ["L", a + n, g + f / 2], ["L", a + n / 2, g + f], ["L", a, g + f / 2], ["Z"]]
			},
			rect: x,
			roundedRect: E,
			square: x,
			triangle: function(a, g, n, f) {
				return [["M", a + n / 2, g], ["L", a + n, g + f], ["L", a, g + f], ["Z"]]
			},
			"triangle-down": function(a, g, n, f) {
				return [["M", a, g], ["L", a + n, g], ["L", a + n / 2, g + f], ["Z"]]
			}
		}
	});
	K(g, "Core/Renderer/SVG/TextBuilder.js", [g["Core/Renderer/HTML/AST.js"], g["Core/Globals.js"], g["Core/Utilities.js"]],
	function(a, g, x) {
		var v = g.doc,
		D = g.SVG_NS,
		B = g.win,
		G = x.attr,
		r = x.extend,
		t = x.fireEvent,
		n = x.isString,
		f = x.objectEach,
		c = x.pick;
		return function() {
			function l(c) {
				var a = c.styles;
				this.renderer = c.renderer;
				this.svgElement = c;
				this.width = c.textWidth;
				this.textLineHeight = a && a.lineHeight;
				this.textOutline = a && a.textOutline;
				this.ellipsis = !(!a || "ellipsis" !== a.textOverflow);
				this.noWrap = !(!a || "nowrap" !== a.whiteSpace);
				this.fontSize = a && a.fontSize
			}
			l.prototype.buildSVG = function() {
				var f = this.svgElement,
				e = f.element,
				u = f.renderer,
				l = c(f.textStr, "").toString(),
				g = -1 !== l.indexOf("<"),
				I = e.childNodes;
				u = this.width && !f.added && u.box;
				var L = /<br.*?>/g,
				A = [l, this.ellipsis, this.noWrap, this.textLineHeight, this.textOutline, this.fontSize, this.width].join();
				if (A !== f.textCache) {
					f.textCache = A;
					delete f.actualWidth;
					for (A = I.length; A--;) e.removeChild(I[A]);
					g || this.ellipsis || this.width || f.textPath || -1 !== l.indexOf(" ") && (!this.noWrap || L.test(l)) ? "" !== l && (u && u.appendChild(e), l = new a(l), this.modifyTree(l.nodes), l.addToDOM(e), this.modifyDOM(), this.ellipsis && -1 !== (e.textContent || "").indexOf("\u2026") && f.attr("title", this.unescapeEntities(f.textStr || "", ["&lt;", "&gt;"])), u && u.removeChild(e)) : e.appendChild(v.createTextNode(this.unescapeEntities(l)));
					n(this.textOutline) && f.applyTextOutline && f.applyTextOutline(this.textOutline)
				}
			};
			l.prototype.modifyDOM = function() {
				var c = this,
				a = this.svgElement,
				f = G(a.element, "x");
				a.firstLineMetrics = void 0;
				for (var l; l = a.element.firstChild;) if (/^[\s\u200B]*$/.test(l.textContent || " ")) a.element.removeChild(l);
				else break; [].forEach.call(a.element.querySelectorAll("tspan.highcharts-br"),
				function(e, d) {
					e.nextSibling && e.previousSibling && (0 === d && 1 === e.previousSibling.nodeType && (a.firstLineMetrics = a.renderer.fontMetrics(void 0, e.previousSibling)), G(e, {
						dy: c.getLineHeight(e.nextSibling),
						x: f
					}))
				});
				var g = this.width || 0;
				if (g) {
					var n = function(e, d) {
						var q = e.textContent || "",
						h = q.replace(/([^\^])-/g, "$1- ").split(" "),
						k = !c.noWrap && (1 < h.length || 1 < a.element.childNodes.length),
						b = c.getLineHeight(d),
						p = 0,
						z = a.actualWidth;
						if (c.ellipsis) q && c.truncate(e, q, void 0, 0, Math.max(0, g - parseInt(c.fontSize || 12, 10)),
						function(b, d) {
							return b.substring(0, d) + "\u2026"
						});
						else if (k) {
							q = [];
							for (k = []; d.firstChild && d.firstChild !== e;) k.push(d.firstChild),
							d.removeChild(d.firstChild);
							for (; h.length;) h.length && !c.noWrap && 0 < p && (q.push(e.textContent || ""), e.textContent = h.join(" ").replace(/- /g, "-")),
							c.truncate(e, void 0, h, 0 === p ? z || 0 : 0, g,
							function(b, d) {
								return h.slice(0, d).join(" ").replace(/- /g, "-")
							}),
							z = a.actualWidth,
							p++;
							k.forEach(function(b) {
								d.insertBefore(b, e)
							});
							q.forEach(function(h) {
								d.insertBefore(v.createTextNode(h), e);
								h = v.createElementNS(D, "tspan");
								h.textContent = "\u200b";
								G(h, {
									dy: b,
									x: f
								});
								d.insertBefore(h, e)
							})
						}
					},
					L = function(c) { [].slice.call(c.childNodes).forEach(function(d) {
							d.nodeType === B.Node.TEXT_NODE ? n(d, c) : ( - 1 !== d.className.baseVal.indexOf("highcharts-br") && (a.actualWidth = 0), L(d))
						})
					};
					L(a.element)
				}
			};
			l.prototype.getLineHeight = function(c) {
				var a;
				c = c.nodeType === B.Node.TEXT_NODE ? c.parentElement: c;
				this.renderer.styledMode || (a = c && /(px|em)$/.test(c.style.fontSize) ? c.style.fontSize: this.fontSize || this.renderer.style.fontSize || 12);
				return this.textLineHeight ? parseInt(this.textLineHeight.toString(), 10) : this.renderer.fontMetrics(a, c || this.svgElement.element).h
			};
			l.prototype.modifyTree = function(c) {
				var a = this,
				f = function(e, l) {
					var m = e.attributes;
					m = void 0 === m ? {}: m;
					var u = e.children,
					g = e.style;
					g = void 0 === g ? {}: g;
					var d = e.tagName,
					q = a.renderer.styledMode;
					if ("b" === d || "strong" === d) q ? m["class"] = "highcharts-strong": g.fontWeight = "bold";
					else if ("i" === d || "em" === d) q ? m["class"] = "highcharts-emphasized": g.fontStyle = "italic";
					g && g.color && (g.fill = g.color);
					"br" === d ? (m["class"] = "highcharts-br", e.textContent = "\u200b", (l = c[l + 1]) && l.textContent && (l.textContent = l.textContent.replace(/^ +/gm, ""))) : "a" === d && u && u.some(function(d) {
						return "#text" === d.tagName
					}) && (e.children = [{
						children: u,
						tagName: "tspan"
					}]);
					"#text" !== d && "a" !== d && (e.tagName = "tspan");
					r(e, {
						attributes: m,
						style: g
					});
					u && u.filter(function(d) {
						return "#text" !== d.tagName
					}).forEach(f)
				};
				c.forEach(f);
				t(this.svgElement, "afterModifyTree", {
					nodes: c
				})
			};
			l.prototype.truncate = function(c, a, f, l, g, n) {
				var e = this.svgElement,
				m = e.renderer,
				d = e.rotation,
				q = [],
				h = f ? 1 : 0,
				k = (a || f || "").length,
				b = k,
				p,
				z = function(b, d) {
					d = d || b;
					var h = c.parentNode;
					if (h && "undefined" === typeof q[d]) if (h.getSubStringLength) try {
						q[d] = l + h.getSubStringLength(0, f ? d + 1 : d)
					} catch(Q) {
						""
					} else m.getSpanWidth && (c.textContent = n(a || f, b), q[d] = l + m.getSpanWidth(e, c));
					return q[d]
				};
				e.rotation = 0;
				var w = z(c.textContent.length);
				if (l + w > g) {
					for (; h <= k;) b = Math.ceil((h + k) / 2),
					f && (p = n(f, b)),
					w = z(b, p && p.length - 1),
					h === k ? h = k + 1 : w > g ? k = b - 1 : h = b;
					0 === k ? c.textContent = "": a && k === a.length - 1 || (c.textContent = p || n(a || f, b))
				}
				f && f.splice(0, b);
				e.actualWidth = w;
				e.rotation = d
			};
			l.prototype.unescapeEntities = function(c, a) {
				f(this.renderer.escapes,
				function(e, f) {
					a && -1 !== a.indexOf(e) || (c = c.toString().replace(new RegExp(e, "g"), f))
				});
				return c
			};
			return l
		} ()
	});
	K(g, "Core/Renderer/SVG/SVGRenderer.js", [g["Core/Renderer/HTML/AST.js"], g["Core/Color/Color.js"], g["Core/Globals.js"], g["Core/Renderer/RendererRegistry.js"], g["Core/Renderer/SVG/SVGElement.js"], g["Core/Renderer/SVG/SVGLabel.js"], g["Core/Renderer/SVG/Symbols.js"], g["Core/Renderer/SVG/TextBuilder.js"], g["Core/Utilities.js"]],
	function(a, g, x, E, D, B, G, r, t) {
		var n = x.charts,
		f = x.deg2rad,
		c = x.doc,
		l = x.isFirefox,
		m = x.isMS,
		e = x.isWebKit,
		u = x.noop,
		C = x.SVG_NS,
		J = x.symbolSizes,
		I = x.win,
		L = t.addEvent,
		A = t.attr,
		d = t.createElement,
		q = t.css,
		h = t.defined,
		k = t.destroyObjectProperties,
		b = t.extend,
		p = t.isArray,
		z = t.isNumber,
		w = t.isObject,
		N = t.isString,
		H = t.merge,
		O = t.pick,
		Q = t.pInt,
		v = t.uniqueKey,
		Y;
		x = function() {
			function y(b, d, h, c, a, y, k) {
				this.width = this.url = this.style = this.isSVG = this.imgCount = this.height = this.gradients = this.globalAnimation = this.defs = this.chartIndex = this.cacheKeys = this.cache = this.boxWrapper = this.box = this.alignedObjects = void 0;
				this.init(b, d, h, c, a, y, k)
			}
			y.prototype.init = function(b, d, h, a, y, k, e) {
				var F = this.createElement("svg").attr({
					version: "1.1",
					"class": "highcharts-root"
				}),
				p = F.element;
				e || F.css(this.getStyle(a));
				b.appendChild(p);
				A(b, "dir", "ltr"); - 1 === b.innerHTML.indexOf("xmlns") && A(p, "xmlns", this.SVG_NS);
				this.isSVG = !0;
				this.box = p;
				this.boxWrapper = F;
				this.alignedObjects = [];
				this.url = this.getReferenceURL();
				this.createElement("desc").add().element.appendChild(c.createTextNode("Created with Highcharts 10.3.2"));
				this.defs = this.createElement("defs").add();
				this.allowHTML = k;
				this.forExport = y;
				this.styledMode = e;
				this.gradients = {};
				this.cache = {};
				this.cacheKeys = [];
				this.imgCount = 0;
				this.setSize(d, h, !1);
				var f;
				l && b.getBoundingClientRect && (d = function() {
					q(b, {
						left: 0,
						top: 0
					});
					f = b.getBoundingClientRect();
					q(b, {
						left: Math.ceil(f.left) - f.left + "px",
						top: Math.ceil(f.top) - f.top + "px"
					})
				},
				d(), this.unSubPixelFix = L(I, "resize", d))
			};
			y.prototype.definition = function(b) {
				return (new a([b])).addToDOM(this.defs.element)
			};
			y.prototype.getReferenceURL = function() {
				if ((l || e) && c.getElementsByTagName("base").length) {
					if (!h(Y)) {
						var b = v();
						b = (new a([{
							tagName: "svg",
							attributes: {
								width: 8,
								height: 8
							},
							children: [{
								tagName: "defs",
								children: [{
									tagName: "clipPath",
									attributes: {
										id: b
									},
									children: [{
										tagName: "rect",
										attributes: {
											width: 4,
											height: 4
										}
									}]
								}]
							},
							{
								tagName: "rect",
								attributes: {
									id: "hitme",
									width: 8,
									height: 8,
									"clip-path": "url(#".concat(b, ")"),
									fill: "rgba(0,0,0,0.001)"
								}
							}]
						}])).addToDOM(c.body);
						q(b, {
							position: "fixed",
							top: 0,
							left: 0,
							zIndex: 9E5
						});
						var d = c.elementFromPoint(6, 6);
						Y = "hitme" === (d && d.id);
						c.body.removeChild(b)
					}
					if (Y) return I.location.href.split("#")[0].replace(/<[^>]*>/g, "").replace(/([\('\)])/g, "\\$1").replace(/ /g, "%20")
				}
				return ""
			};
			y.prototype.getStyle = function(d) {
				return this.style = b({
					fontFamily: '"Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, sans-serif',
					fontSize: "12px"
				},
				d)
			};
			y.prototype.setStyle = function(b) {
				this.boxWrapper.css(this.getStyle(b))
			};
			y.prototype.isHidden = function() {
				return ! this.boxWrapper.getBBox().width
			};
			y.prototype.destroy = function() {
				var b = this.defs;
				this.box = null;
				this.boxWrapper = this.boxWrapper.destroy();
				k(this.gradients || {});
				this.gradients = null;
				b && (this.defs = b.destroy());
				this.unSubPixelFix && this.unSubPixelFix();
				return this.alignedObjects = null
			};
			y.prototype.createElement = function(b) {
				var d = new this.Element;
				d.init(this, b);
				return d
			};
			y.prototype.getRadialAttr = function(b, d) {
				return {
					cx: b[0] - b[2] / 2 + (d.cx || 0) * b[2],
					cy: b[1] - b[2] / 2 + (d.cy || 0) * b[2],
					r: (d.r || 0) * b[2]
				}
			};
			y.prototype.buildText = function(b) { (new r(b)).buildSVG()
			};
			y.prototype.getContrast = function(b) {
				b = g.parse(b).rgba.map(function(b) {
					b /= 255;
					return.03928 >= b ? b / 12.92 : Math.pow((b + .055) / 1.055, 2.4)
				});
				b = .2126 * b[0] + .7152 * b[1] + .0722 * b[2];
				return 1.05 / (b + .05) > (b + .05) / .05 ? "#FFFFFF": "#000000"
			};
			y.prototype.button = function(d, h, c, y, k, e, p, f, q, z) {
				void 0 === k && (k = {});
				var F = this.label(d, h, c, q, void 0, void 0, z, void 0, "button"),
				l = this.styledMode;
				d = k.states || {};
				var M = 0;
				k = H(k);
				delete k.states;
				var u = H({
					color: "#333333",
					cursor: "pointer",
					fontWeight: "normal"
				},
				k.style);
				delete k.style;
				var g = a.filterUserAttributes(k);
				F.attr(H({
					padding: 8,
					r: 2
				},
				g));
				if (!l) {
					g = H({
						fill: "#f7f7f7",
						stroke: "#cccccc",
						"stroke-width": 1
					},
					g);
					e = H(g, {
						fill: "#e6e6e6"
					},
					a.filterUserAttributes(e || d.hover || {}));
					var P = e.style;
					delete e.style;
					p = H(g, {
						fill: "#e6ebf5",
						style: {
							color: "#000000",
							fontWeight: "bold"
						}
					},
					a.filterUserAttributes(p || d.select || {}));
					var T = p.style;
					delete p.style;
					f = H(g, {
						style: {
							color: "#cccccc"
						}
					},
					a.filterUserAttributes(f || d.disabled || {}));
					var A = f.style;
					delete f.style
				}
				L(F.element, m ? "mouseover": "mouseenter",
				function() {
					3 !== M && F.setState(1)
				});
				L(F.element, m ? "mouseout": "mouseleave",
				function() {
					3 !== M && F.setState(M)
				});
				F.setState = function(b) {
					1 !== b && (F.state = M = b);
					F.removeClass(/highcharts-button-(normal|hover|pressed|disabled)/).addClass("highcharts-button-" + ["normal", "hover", "pressed", "disabled"][b || 0]);
					l || (F.attr([g, e, p, f][b || 0]), b = [u, P, T, A][b || 0], w(b) && F.css(b))
				};
				l || (F.attr(g).css(b({
					cursor: "default"
				},
				u)), z && F.text.css({
					pointerEvents: "none"
				}));
				return F.on("touchstart",
				function(b) {
					return b.stopPropagation()
				}).on("click",
				function(b) {
					3 !== M && y.call(F, b)
				})
			};
			y.prototype.crispLine = function(b, d, c) {
				void 0 === c && (c = "round");
				var a = b[0],
				y = b[1];
				h(a[1]) && a[1] === y[1] && (a[1] = y[1] = Math[c](a[1]) - d % 2 / 2);
				h(a[2]) && a[2] === y[2] && (a[2] = y[2] = Math[c](a[2]) + d % 2 / 2);
				return b
			};
			y.prototype.path = function(d) {
				var h = this.styledMode ? {}: {
					fill: "none"
				};
				p(d) ? h.d = d: w(d) && b(h, d);
				return this.createElement("path").attr(h)
			};
			y.prototype.circle = function(b, d, h) {
				b = w(b) ? b: "undefined" === typeof b ? {}: {
					x: b,
					y: d,
					r: h
				};
				d = this.createElement("circle");
				d.xSetter = d.ySetter = function(b, d, h) {
					h.setAttribute("c" + d, b)
				};
				return d.attr(b)
			};
			y.prototype.arc = function(b, d, h, c, a, y) {
				w(b) ? (c = b, d = c.y, h = c.r, b = c.x) : c = {
					innerR: c,
					start: a,
					end: y
				};
				b = this.symbol("arc", b, d, h, h, c);
				b.r = h;
				return b
			};
			y.prototype.rect = function(b, d, h, c, a, y) {
				a = w(b) ? b.r: a;
				var k = this.createElement("rect");
				b = w(b) ? b: "undefined" === typeof b ? {}: {
					x: b,
					y: d,
					width: Math.max(h, 0),
					height: Math.max(c, 0)
				};
				this.styledMode || ("undefined" !== typeof y && (b["stroke-width"] = y, b = k.crisp(b)), b.fill = "none");
				a && (b.r = a);
				k.rSetter = function(b, d, h) {
					k.r = b;
					A(h, {
						rx: b,
						ry: b
					})
				};
				k.rGetter = function() {
					return k.r || 0
				};
				return k.attr(b)
			};
			y.prototype.setSize = function(b, d, h) {
				this.width = b;
				this.height = d;
				this.boxWrapper.animate({
					width: b,
					height: d
				},
				{
					step: function() {
						this.attr({
							viewBox: "0 0 " + this.attr("width") + " " + this.attr("height")
						})
					},
					duration: O(h, !0) ? void 0 : 0
				});
				this.alignElements()
			};
			y.prototype.g = function(b) {
				var d = this.createElement("g");
				return b ? d.attr({
					"class": "highcharts-" + b
				}) : d
			};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值