// https://d3js.org Version 4.3.0. Copyright 2016 Mike Bostock. (function (t, n) { "object" == typeof exports && "undefined" != typeof module ? n(exports) : "function" == typeof define && define.amd ? define(["exports"], n) : n(t.d3 = t.d3 || {}) })(this, function (t) { "use strict"; function n(t) { return function (n, e) { return Ms(t(n), e) } } function e(t, n, e) { var r = Math.abs(n - t) / Math.max(0, e), i = Math.pow(10, Math.floor(Math.log(r) / Math.LN10)), o = r / i; return o >= Fs ? i *= 10 : o >= Is ? i *= 5 : o >= Ys && (i *= 2), n < t ? -i : i } function r(t) { return t.length } function i() {} function o(t, n) { var e = new i; if (t instanceof i) t.each(function (t, n) { e.set(n, t) }); else if (Array.isArray(t)) { var r, o = -1, u = t.length; if (null == n) for (; ++o < u;) e.set(o, t[o]); else for (; ++o < u;) e.set(n(r = t[o], o, t), r) } else if (t) for (var a in t) e.set(a, t[a]); return e } function u() { return {} } function a(t, n, e) { t[n] = e } function c() { return o() } function s(t, n, e) { t.set(n, e) } function f() {} function l(t, n) { var e = new f; if (t instanceof f) t.each(function (t) { e.add(t) }); else if (t) { var r = -1, i = t.length; if (null == n) for (; ++r < i;) e.add(t[r]); else for (; ++r < i;) e.add(n(t[r], r, t)) } return e } function h(t) { return + t } function p(t) { return t * t } function d(t) { return t * (2 - t) } function v(t) { return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2 } function _(t) { return t * t * t } function y(t) { return-- t * t * t + 1 } function g(t) { return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2 } function m(t) { return 1 - Math.cos(t * Tf) } function x(t) { return Math.sin(t * Tf) } function b(t) { return (1 - Math.cos(Mf * t)) / 2 } function w(t) { return Math.pow(2, 10 * t - 10) } function M(t) { return 1 - Math.pow(2, -10 * t) } function T(t) { return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2 } function N(t) { return 1 - Math.sqrt(1 - t * t) } function k(t) { return Math.sqrt(1 - --t * t) } function S(t) { return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2 } function A(t) { return 1 - E(1 - t) } function E(t) { return (t =+ t) < Nf ? Lf * t * t : t < Sf ? Lf * (t -= kf) * t + Af : t < Cf ? Lf * (t -= Ef) * t + zf : Lf * (t -= Pf) * t + qf } function C(t) { return ((t *= 2) <= 1 ? 1 - E(1 - t) : E(t - 1) + 1) / 2 } function z(t, n) { return t[0] - n[0] || t[1] - n[1] } function P(t) { for (var n = t.length, e = [ 0, 1 ], r = 2, i = 2; i < n; ++i) { for (; r > 1 && Wf(t[e[r - 2]], t[e[r - 1]], t[i]) <= 0;) --r; e[r++] = i } return e.slice(0, r) } function q() { this._x0 = this._y0 = this._x1 = this._y1 = null, this._ = [] } function L() { return new q } function R(t, n, e, r) { if (isNaN(n) || isNaN(e)) return t; var i, o, u, a, c, s, f, l, h, p = t._root, d = { data: r }, v = t._x0, _ = t._y0, y = t._x1, g = t._y1; if (!p) return t._root = d, t; for (; p.length;) if ((s = n >= (o = (v + y) / 2)) ? v = o : y = o, (f = e >= (u = (_ + g) / 2)) ? _ = u : g = u, i = p, !(p = p[l = f << 1 | s])) return i[l] = d, t; if (a =+ t._x.call(null, p.data), c =+ t._y.call(null, p.data), n === a && e === c) return d.next = p, i ? i[l] = d : t._root = d, t; do i = i ? i[l] = new Array(4) : t._root = new Array(4), (s = n >= (o = (v + y) / 2)) ? v = o : y = o, (f = e >= (u = (_ + g) / 2)) ? _ = u : g = u; while ((l = f << 1 | s) === (h = (c >= u) << 1 | a >= o)); return i[h] = p, i[l] = d, t } function U(t) { var n, e, r, i, o = t.length, u = new Array(o), a = new Array(o), c = 1 / 0, s = 1 / 0, f = -(1 / 0), l = -(1 / 0); for (e = 0; e < o; ++e) isNaN(r =+ this._x.call(null, n = t[e])) || isNaN(i =+ this._y.call(null, n)) || (u[e] = r, a[e] = i, r < c && (c = r), r > f && (f = r), i < s && (s = i), i > l && (l = i)); for (f < c && (c = this._x0, f = this._x1), l < s && (s = this._y0, l = this._y1), this.cover(c, s).cover(f, l), e = 0; e < o; ++e) R(this, u[e], a[e], t[e]); return this } function D(t) { for (var n = 0, e = t.length; n < e; ++n) this.remove(t[n]); return this } function O(t) { return t[0] } function F(t) { return t[1] } function I(t, n, e) { var r = new Y(null == n ? O : n, null == e ? F : e, NaN, NaN, NaN, NaN); return null == t ? r : r.addAll(t) } function Y(t, n, e, r, i, o) { this._x = t, this._y = n, this._x0 = e, this._y0 = r, this._x1 = i, this._y1 = o, this._root = void 0 } function B(t) { for (var n = { data: t.data }, e = n; t = t.next;) e = e.next = { data: t.data }; return n } function j(t) { if (!(t >= 1)) throw new Error; this._size = t, this._call = this._error = null, this._tasks = [], this._data = [], this._waiting = this._active = this._ended = this._start = 0 } function H(t) { if (!t._start) try { X(t) } catch (n) { if (t._tasks[t._ended + t._active - 1]) W(t, n); else if (!t._data) throw n } } function X(t) { for (; t._start = t._waiting && t._active < t._size;) { var n = t._ended + t._active, e = t._tasks[n], r = e.length - 1, i = e[r]; e[r] = V(t, n), --t._waiting, ++t._active, e = i.apply(null, e), t._tasks[n] && (t._tasks[n] = e || _l) } } function V(t, n) { return function (e, r) { t._tasks[n] && (--t._active, ++t._ended, t._tasks[n] = null, null == t._error && (null != e ? W(t, e) : (t._data[n] = r, t._waiting ? H(t) : $(t)))) } } function W(t, n) { var e, r = t._tasks.length; for (t._error = n, t._data = void 0, t._waiting = NaN; --r >= 0;) if ((e = t._tasks[r]) && (t._tasks[r] = null, e.abort)) try { e.abort() } catch (t) {} t._active = NaN, $(t) } function $(t) { if (!t._active && t._call) { var n = t._data; t._data = void 0, t._call(t._error, n) } } function Z(t) { return new j(arguments.length ?+ t : 1 / 0) } function G(t) { return t.innerRadius } function J(t) { return t.outerRadius } function Q(t) { return t.startAngle } function K(t) { return t.endAngle } function tt(t) { return t && t.padAngle } function nt(t) { return t >= 1 ? xl : t <= -1 ? -xl : Math.asin(t) } function et(t, n, e, r, i, o, u, a) { var c = e - t, s = r - n, f = u - i, l = a - o, h = (f * (n - o) - l * (t - i)) / (l * c - f * s); return [ t + h * c, n + h * s ] } function rt(t, n, e, r, i, o, u) { var a = t - e, c = n - r, s = (u ? o : -o) / Math.sqrt(a * a + c * c), f = s * c, l = -s * a, h = t + f, p = n + l, d = e + f, v = r + l, _ = (h + d) / 2, y = (p + v) / 2, g = d - h, m = v - p, x = g * g + m * m, b = i - o, w = h * v - d * p, M = (m < 0 ? -1 : 1) * Math.sqrt(Math.max(0, b * b * x - w * w)), T = (w * m - g * M) / x, N = (-w * g - m * M) / x, k = (w * m + g * M) / x, S = (-w * g + m * M) / x, A = T - _, E = N - y, C = k - _, z = S - y; return A * A + E * E > C * C + z * z && (T = k, N = S), { cx: T, cy: N, x01: -f, y01: -l, x11: *(i / b - 1), y11: *(i / b - 1) } } function it(t) { this._context = t } function ot(t) { return t[0] } function ut(t) { return t[1] } function at(t) { this._curve = t } function ct(t) { function n(n) { return new at(t(n)) } return n._curve = t, n } function st(t) { var n = t.curve; return t.angle = t.x, delete t.x, t.radius = t.y, delete t.y, t.curve = function (t) { return arguments.length ? n(ct(t)) : n()._curve }, t } function ft(t, n, e) { t ._context .bezierCurveTo((2 * t._x0 + t._x1) / 3, (2 * t._y0 + t._y1) / 3, (t._x0 + 2 * t._x1) / 3, (t._y0 + 2 * t._y1) / 3, (t._x0 + 4 * t._x1 + n) / 6, (t._y0 + 4 * t._y1 + e) / 6) } function lt(t) { this._context = t } function ht(t) { this._context = t } function pt(t) { this._context = t } function dt(t, n) { this._basis = new lt(t), this._beta = n } function vt(t, n, e) { t ._context .bezierCurveTo(t._x1 + t._k * (t._x2 - t._x0), t._y1 + t._k * (t._y2 - t._y0), t._x2 + t._k * (t._x1 - n), t._y2 + t._k * (t._y1 - e), t._x2, t._y2) } function _t(t, n) { this._context = t, this._k = (1 - n) / 6 } function yt(t, n) { this._context = t, this._k = (1 - n) / 6 } function gt(t, n) { this._context = t, this._k = (1 - n) / 6 } function mt(t, n, e) { var r = t._x1, i = t._y1, o = t._x2, u = t._y2; if (t._l01_a > gl) { var a = 2 * t._l01_2a + 3 * t._l01_a * t._l12_a + t._l12_2a, c = 3 * t._l01_a * (t._l01_a + t._l12_a); r = (r * a - t._x0 * t._l12_2a + t._x2 * t._l01_2a) / c, i = (i * a - t._y0 * t._l12_2a + t._y2 * t._l01_2a) / c } if (t._l23_a > gl) { var s = 2 * t._l23_2a + 3 * t._l23_a * t._l12_a + t._l12_2a, f = 3 * t._l23_a * (t._l23_a + t._l12_a); o = (o * s + t._x1 * t._l23_2a - n * t._l12_2a) / f, u = (u * s + t._y1 * t._l23_2a - e * t._l12_2a) / f } t ._context .bezierCurveTo(r, i, o, u, t._x2, t._y2) } function xt(t, n) { this._context = t, this._alpha = n } function bt(t, n) { this._context = t, this._alpha = n } function wt(t, n) { this._context = t, this._alpha = n } function Mt(t) { this._context = t } function Tt(t) { return t < 0 ? -1 : 1 } function Nt(t, n, e) { var r = t._x1 - t._x0, i = n - t._x1, o = (t._y1 - t._y0) / (r || i < 0 && -0), u = (e - t._y1) / (i || r < 0 && -0), a = (o * i + u * r) / (r + i); return (Tt(o) + Tt(u)) * Math.min(Math.abs(o), Math.abs(u), .5 * Math.abs(a)) || 0 } function kt(t, n) { var e = t._x1 - t._x0; return e ? (3 * (t._y1 - t._y0) / e - n) / 2 : n } function St(t, n, e) { var r = t._x0, i = t._y0, o = t._x1, u = t._y1, a = (o - r) / 3; t ._context .bezierCurveTo(r + a, i + a * n, o - a, u - a * e, o, u) } function At(t) { this._context = t } function Et(t) { this._context = new Ct(t) } function Ct(t) { this._context = t } function zt(t) { return new At(t) } function Pt(t) { return new Et(t) } function qt(t) { this._context = t } function Lt(t) { var n, e, r = t.length - 1, i = new Array(r), o = new Array(r), u = new Array(r); for (i[0] = 0, o[0] = 2, u[0] = t[0] + 2 * t[1], n = 1; n < r - 1; ++n) i[n] = 1, o[n] = 4, u[n] = 4 * t[n] + 2 * t[n + 1]; for (i[r - 1] = 2, o[r - 1] = 7, u[r - 1] = 8 * t[r - 1] + t[r], n = 1; n < r; ++n) e = i[n] / o[n - 1], o[n] -= e, u[n] -= e * u[n - 1]; for (i[r - 1] = u[r - 1] / o[r - 1], n = r - 2; n >= 0; --n) i[n] = (u[n] - i[n + 1]) / o[n]; for (o[r - 1] = (t[r] + i[r - 1]) / 2, n = 0; n < r - 1; ++n) o[n] = 2 * t[n + 1] - i[n + 1]; return [i, o] } function Rt(t, n) { this._context = t, this._t = n } function Ut(t) { return new Rt(t, 0) } function Dt(t) { return new Rt(t, 1) } function Ot(t, n) { return t[n] } function Ft(t) { for (var n, e = 0, r = -1, i = t.length; ++r < i;) (n =+ t[r][1]) && (e += n); return e } function It(t, n) { var e = Object.create(t.prototype); for (var r in n) e[r] = n[r]; return e } function Yt() {} function Bt(t) { var n; return t = (t + "") .trim() .toLowerCase(), (n = kh.exec(t)) ? (n = parseInt(n[1], 16), new Wt(n >> 8 & 15 | n >> 4 & 240, n >> 4 & 15 | 240 & n, (15 & n) << 4 | 15 & n, 1)) : (n = Sh.exec(t)) ? jt(parseInt(n[1], 16)) : (n = Ah.exec(t)) ? new Wt(n[1], n[2], n[3], 1) : (n = Eh.exec(t)) ? new Wt(255 * n[1] / 100, 255 * n[2] / 100, 255 * n[3] / 100, 1) : (n = Ch.exec(t)) ? Ht(n[1], n[2], n[3], n[4]) : (n = zh.exec(t)) ? Ht(255 * n[1] / 100, 255 * n[2] / 100, 255 * n[3] / 100, n[4]) : (n = Ph.exec(t)) ? $t(n[1], n[2] / 100, n[3] / 100, 1) : (n = qh.exec(t)) ? $t(n[1], n[2] / 100, n[3] / 100, n[4]) : Lh.hasOwnProperty(t) ? jt(Lh[t]) : "transparent" === t ? new Wt(NaN, NaN, NaN, 0) : null } function jt(t) { return new Wt(t >> 16 & 255, t >> 8 & 255, 255 & t, 1) } function Ht(t, n, e, r) { return r <= 0 && (t = n = e = NaN), new Wt(t, n, e, r) } function Xt(t) { return t instanceof Yt || (t = Bt(t)), t ? (t = t.rgb(), new Wt(t.r, t.g, t.b, t.opacity)) : new Wt } function Vt(t, n, e, r) { return 1 === arguments.length ? Xt(t) : new Wt(t, n, e, null == r ? 1 : r) } function Wt(t, n, e, r) { this.r =+ t, this.g =+ n, this.b =+ e, this.opacity =+ r } function $t(t, n, e, r) { return r <= 0 ? t = n = e = NaN : e <= 0 || e >= 1 ? t = n = NaN : n <= 0 && (t = NaN), new Jt(t, n, e, r) } function Zt(t) { if (t instanceof Jt) return new Jt(t.h, t.s, t.l, t.opacity); if (t instanceof Yt || (t = Bt(t)), !t) return new Jt; if (t instanceof Jt) return t; t = t.rgb(); var n = t.r / 255, e = t.g / 255, r = t.b / 255, i = Math.min(n, e, r), o = Math.max(n, e, r), u = NaN, a = o - i, c = (o + i) / 2; return a ? (u = n === o ? (e - r) / a + 6 * (e < r) : e === o ? (r - n) / a + 2 : (n - e) / a + 4, a /= c < .5 ? o + i : 2 - o - i, u *= 60) : a = c > 0 && c < 1 ? 0 : u, new Jt(u, a, c, t.opacity) } function Gt(t, n, e, r) { return 1 === arguments.length ? Zt(t) : new Jt(t, n, e, null == r ? 1 : r) } function Jt(t, n, e, r) { this.h =+ t, this.s =+ n, this.l =+ e, this.opacity =+ r } function Qt(t, n, e) { return 255 * (t < 60 ? n + (e - n) * t / 60 : t < 180 ? e : t < 240 ? n + (e - n) * (240 - t) / 60 : n) } function Kt(t) { if (t instanceof nn) return new nn(t.l, t.a, t.b, t.opacity); if (t instanceof sn) { var n = t.h * Rh; return new nn(t.l, Math.cos(n) * t.c, Math.sin(n) * t.c, t.opacity) } t instanceof Wt || (t = Xt(t)); var e = un(t.r), r = un(t.g), i = un(t.b), o = en((.4124564 * e + .3575761 * r + .1804375 * i) / Oh), u = en((.2126729 * e + .7151522 * r + .072175 * i) / Fh), a = en((.0193339 * e + .119192 * r + .9503041 * i) / Ih); return new nn(116 * u - 16, 500 * (o - u), 200 * (u - a), t.opacity) } function tn(t, n, e, r) { return 1 === arguments.length ? Kt(t) : new nn(t, n, e, null == r ? 1 : r) } function nn(t, n, e, r) { this.l =+ t, this.a =+ n, this.b =+ e, this.opacity =+ r } function en(t) { return t > Hh ? Math.pow(t, 1 / 3) : t / jh + Yh } function rn(t) { return t > Bh ? t * t * t : jh * (t - Yh) } function on(t) { return 255 * (t <= .0031308 ? 12.92 * t : 1.055 * Math.pow(t, 1 / 2.4) - .055) } function un(t) { return (t /= 255) <= .04045 ? t / 12.92 : Math.pow((t + .055) / 1.055, 2.4) } function an(t) { if (t instanceof sn) return new sn(t.h, t.c, t.l, t.opacity); t instanceof nn || (t = Kt(t)); var n = Math.atan2(t.b, t.a) * Uh; return new sn(n < 0 ? n + 360 : n, Math.sqrt(t.a * t.a + t.b * t.b), t.l, t.opacity) } function cn(t, n, e, r) { return 1 === arguments.length ? an(t) : new sn(t, n, e, null == r ? 1 : r) } function sn(t, n, e, r) { this.h =+ t, this.c =+ n, this.l =+ e, this.opacity =+ r } function fn(t) { if (t instanceof hn) return new hn(t.h, t.s, t.l, t.opacity); t instanceof Wt || (t = Xt(t)); var n = t.r / 255, e = t.g / 255, r = t.b / 255, i = (Qh * r + Gh * n - Jh * e) / (Qh + Gh - Jh), o = r - i, u = (Zh * (e - i) - Wh * o) / $h, a = Math.sqrt(u * u + o * o) / (Zh * i * (1 - i)), c = a ? Math.atan2(u, o) * Uh - 120 : NaN; return new hn(c < 0 ? c + 360 : c, a, i, t.opacity) } function ln(t, n, e, r) { return 1 === arguments.length ? fn(t) : new hn(t, n, e, null == r ? 1 : r) } function hn(t, n, e, r) { this.h =+ t, this.s =+ n, this.l =+ e, this.opacity =+ r } function pn(t, n, e, r, i) { var o = t * t, u = o * t; return ((1 - 3 * t + 3 * o - u) * n + (4 - 6 * o + 3 * u) * e + (1 + 3 * t + 3 * o - 3 * u) * r + u * i) / 6 } function dn(t, n) { return function (e) { return t + e * n } } function vn(t, n, e) { return t = Math.pow(t, e), n = Math.pow(n, e) - t, e = 1 / e, function (r) { return Math.pow(t + r * n, e) } } function _n(t, n) { var e = n - t; return e ? dn(t, e > 180 || e < -180 ? e - 360 * Math.round(e / 360) : e) : op(isNaN(t) ? n : t) } function yn(t) { return 1 === (t =+ t) ? gn : function (n, e) { return e - n ? vn(n, e, t) : op(isNaN(n) ? e : n) } } function gn(t, n) { var e = n - t; return e ? dn(t, e) : op(isNaN(t) ? n : t) } function mn(t) { return function (n) { var e, r, i = n.length, o = new Array(i), u = new Array(i), a = new Array(i); for (e = 0; e < i; ++e) r = Vt(n[e]), o[e] = r.r || 0, u[e] = r.g || 0, a[e] = r.b || 0; return o = t(o), u = t(u), a = t(a), r.opacity = 1, function (t) { return r.r = o(t), r.g = u(t), r.b = a(t), r + "" } } } function xn(t) { return function () { return t } } function bn(t) { return function (n) { return t(n) + "" } } function wn(t) { return "none" === t ? mp : (Kh || (Kh = document.createElement("DIV"), tp = document.documentElement, np = document.defaultView), Kh.style.transform = t, t = np.getComputedStyle(tp.appendChild(Kh), null).getPropertyValue("transform"), tp.removeChild(Kh), t = t.slice(7, -1).split(","), xp(+ t[0], + t[1], + t[2], + t[3], + t[4], + t[5])) } function Mn(t) { return null == t ? mp : (ep || (ep = document.createElementNS("http://www.w3.org/2000/svg", "g")), ep.setAttribute("transform", t), (t = ep.transform.baseVal.consolidate()) ? (t = t.matrix, xp(t.a, t.b, t.c, t.d, t.e, t.f)) : mp) } function Tn(t, n, e, r) { function i(t) { return t.length ? t.pop() + " " : "" } function o(t, r, i, o, u, a) { if (t !== i || r !== o) { var c = u.push("translate(", null, n, null, e); a.push({ i: c - 4, x: lp(t, i) }, { i: c - 2, x: lp(r, o) }) } else (i || o) && u.push("translate(" + i + n + o + e) } function u(t, n, e, o) { t !== n ? (t - n > 180 ? n += 360 : n - t > 180 && (t += 360), o.push({ i: e.push(i(e) + "rotate(", null, r) - 2, x: lp(t, n) })) : n && e.push(i(e) + "rotate(" + n + r) } function a(t, n, e, o) { t !== n ? o.push({ i: e.push(i(e) + "skewX(", null, r) - 2, x: lp(t, n) }) : n && e.push(i(e) + "skewX(" + n + r) } function c(t, n, e, r, o, u) { if (t !== e || n !== r) { var a = o.push(i(o) + "scale(", null, ",", null, ")"); u.push({ i: a - 4, x: lp(t, e) }, { i: a - 2, x: lp(n, r) }) } else 1 === e && 1 === r || o.push(i(o) + "scale(" + e + "," + r + ")") } return function (n, e) { var r = [], i = []; return n = t(n), e = t(e), o(n.translateX, n.translateY, e.translateX, e.translateY, r, i), u(n.rotate, e.rotate, r, i), a(n.skewX, e.skewX, r, i), c(n.scaleX, n.scaleY, e.scaleX, e.scaleY, r, i), n = e = null, function (t) { for (var n, e = -1, o = i.length; ++e < o;) r[(n = i[e]).i] = n.x(t); return r.join("") } } } function Nn(t) { return ((t = Math.exp(t)) + 1 / t) / 2 } function kn(t) { return ((t = Math.exp(t)) - 1 / t) / 2 } function Sn(t) { return ((t = Math.exp(2 * t)) - 1) / (t + 1) } function An(t) { return function (n, e) { var r = t((n = Gt(n)).h, (e = Gt(e)).h), i = gn(n.s, e.s), o = gn(n.l, e.l), u = gn(n.opacity, e.opacity); return function (t) { return n.h = r(t), n.s = i(t), n.l = o(t), n.opacity = u(t), n + "" } } } function En(t, n) { var e = gn((t = tn(t)).l, (n = tn(n)).l), r = gn(t.a, n.a), i = gn(t.b, n.b), o = gn(t.opacity, n.opacity); return function (n) { return t.l = e(n), t.a = r(n), t.b = i(n), t.opacity = o(n), t + "" } } function Cn(t) { return function (n, e) { var r = t((n = cn(n)).h, (e = cn(e)).h), i = gn(n.c, e.c), o = gn(n.l, e.l), u = gn(n.opacity, e.opacity); return function (t) { return n.h = r(t), n.c = i(t), n.l = o(t), n.opacity = u(t), n + "" } } } function zn(t) { return function n(e) { function r(n, r) { var i = t((n = ln(n)).h, (r = ln(r)).h), o = gn(n.s, r.s), u = gn(n.l, r.l), a = gn(n.opacity, r.opacity); return function (t) { return n.h = i(t), n.s = o(t), n.l = u(Math.pow(t, e)), n.opacity = a(t), n + "" } } return e =+ e, r.gamma = n, r }(1) } function Pn() { for (var t, n = 0, e = arguments.length, r = {}; n < e; ++n) { if (!(t = arguments[n] + "") || t in r) throw new Error("illegal type: " + t); r[t] = [] } return new qn(r) } function qn(t) { this._ = t } function Ln(t, n) { return t .trim() .split(/^|\s+/) .map(function (t) { var e = "", r = t.indexOf("."); if (r >= 0 && (e = t.slice(r + 1), t = t.slice(0, r)), t && !n.hasOwnProperty(t)) throw new Error("unknown type: " + t); return {type: t, name: e} }) } function Rn(t, n) { for (var e, r = 0, i = t.length; r < i; ++r) if ((e = t[r]).name === n) return e.value } function Un(t, n, e) { for (var r = 0, i = t.length; r < i; ++r) if (t[r].name === n) { t[r] = Rp, t = t .slice(0, r) .concat(t.slice(r + 1)); break } return null != e && t.push({name: n, value: e}), t } function Dn(t) { return new Function("d", "return {" + t.map(function (t, n) { return JSON.stringify(t) + ": d[" + n + "]" }).join(",") + "}") } function On(t, n) { var e = Dn(t); return function (r, i) { return n(e(r), i, t) } } function Fn(t) { var n = Object.create(null), e = []; return t.forEach(function (t) { for (var r in t) r in n || e.push(n[r] = r) }), e } function In(t) { return function (n, e) { t(null == n ? e : null) } } function Yn(t) { var n = t.responseType; return n && "text" !== n ? t.response : t.responseText } function Bn(t, n) { return function (e) { return t(e.responseText, n) } } function jn() { return sd || (hd(Hn), sd = ld.now() + fd) } function Hn() { sd = 0 } function Xn() { this._call = this._time = this._next = null } function Vn(t, n, e) { var r = new Xn; return r.restart(t, n, e), r } function Wn() { jn(), ++id; for (var t, n = Up; n;) (t = sd - n._time) >= 0 && n._call.call(null, t), n = n._next; --id } function $n() { sd = (cd = ld.now()) + fd, id = od = 0; try { Wn() } finally { id = 0, Gn(), sd = 0 } } function Zn() { var t = ld.now(), n = t - cd; n > ad && (fd -= n, cd = t) } function Gn() { for (var t, n, e = Up, r = 1 / 0; e;) e._call ? (r > e._time && (r = e._time), t = e, e = e._next) : (n = e._next, e._next = null, e = t ? t._next = n : Up = n); Dp = t, Jn(r) } function Jn(t) { if (!id) { od && (od = clearTimeout(od)); var n = t - sd; n > 24 ? (t < 1 / 0 && (od = setTimeout($n, n)), ud && (ud = clearInterval(ud))) : (ud || (ud = setInterval(Zn, ad)), id = 1, hd($n)) } } function Qn(t, n, e, r) { function i(n) { return t(n = new Date(+ n)), n } return i.floor = i, i.ceil = function (e) { return t(e = new Date(e - 1)), n(e, 1), t(e), e }, i.round = function (t) { var n = i(t), e = i.ceil(t); return t - n < e - t ? n : e }, i.offset = function (t, e) { return n(t = new Date(+ t), null == e ? 1 : Math.floor(e)), t }, i.range = function (e, r, o) { var u = []; if (e = i.ceil(e), o = null == o ? 1 : Math.floor(o), !(e < r && o > 0)) return u; do u.push(new Date(+ e)); while (n(e, o), t(e), e < r); return u }, i.filter = function (e) { return Qn(function (n) { if (n >= n) for (; t(n), !e(n);) n.setTime(n - 1) }, function (t, r) { if (t >= t) for (; --r >= 0;) for (; n(t, 1), !e(t);) ; } ) }, e && (i.count = function (n, r) { return vd.setTime(+ n), _d.setTime(+ r), t(vd), t(_d), Math.floor(e(vd, _d)) }, i.every = function (t) { return t = Math.floor(t), isFinite(t) && t > 0 ? t > 1 ? i.filter(r ? function (n) { return r(n) % t === 0 } : function (n) { return i.count(0, n) % t === 0 }) : i : null }), i } function Kn(t) { return Qn(function (n) { n.setDate(n.getDate() - (n.getDay() + 7 - t) % 7), n.setHours(0, 0, 0, 0) }, function (t, n) { t.setDate(t.getDate() + 7 * n) }, function (t, n) { return (n - t - (n.getTimezoneOffset() - t.getTimezoneOffset()) * xd) / Md }) } function te(t) { return Qn(function (n) { n.setUTCDate(n.getUTCDate() - (n.getUTCDay() + 7 - t) % 7), n.setUTCHours(0, 0, 0, 0) }, function (t, n) { t.setUTCDate(t.getUTCDate() + 7 * n) }, function (t, n) { return (n - t) / Md }) } function ne(t) { if (!(n = Av.exec(t))) throw new Error("invalid format: " + t); var n, e = n[1] || " ", r = n[2] || ">", i = n[3] || "-", o = n[4] || "", u = !!n[5], a = n[6] &&+ n[6], c = !!n[7], s = n[8] &&+ n[8].slice(1), f = n[9] || ""; "n" === f ? (c = !0, f = "g") : Sv[f] || (f = ""), (u || "0" === e && "=" === r) && (u = !0, e = "0", r = "="), this.fill = e, this.align = r, this.sign = i, this.symbol = o, this.zero = u, this.width = a, this.comma = c, this.precision = s, this.type = f } function ee(t) { return t } function re(n) { return Cv = Pv(n), t.format = Cv.format, t.formatPrefix = Cv.formatPrefix, Cv } function ie(t) { if (0 <= t.y && t.y < 100) { var n = new Date(-1, t.m, t.d, t.H, t.M, t.S, t.L); return n.setFullYear(t.y), n } return new Date(t.y, t.m, t.d, t.H, t.M, t.S, t.L) } function oe(t) { if (0 <= t.y && t.y < 100) { var n = new Date(Date.UTC(-1, t.m, t.d, t.H, t.M, t.S, t.L)); return n.setUTCFullYear(t.y), n } return new Date(Date.UTC(t.y, t.m, t.d, t.H, t.M, t.S, t.L)) } function ue(t) { return { y: t, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0 } } function ae(t) { function n(t, n) { return function (e) { var r, i, o, u = [], a = -1, c = 0, s = t.length; for (e instanceof Date || (e = new Date(+ e)); ++a < s;) 37 === t.charCodeAt(a) && (u.push(t.slice(c, a)), null != (i = Dv[r = t.charAt(++a)]) ? r = t.charAt(++a) : i = "e" === r ? " " : "0", (o = n[r]) && (r = o(e, i)), u.push(r), c = a + 1); return u.push(t.slice(c, a)), u.join("") } } function e(t, n) { return function (e) { var i = ue(1900), o = r(i, t, e += "", 0); if (o != e.length) return null; if ("p" in i && (i.H = i.H % 12 + 12 * i.p), "W" in i || "U" in i) { "w" in i || (i.w = "W" in i ? 1 : 0); var u = "Z" in i ? oe(ue(i.y)).getUTCDay() : n(ue(i.y)).getDay(); i.m = 0, i.d = "W" in i ? (i.w + 6) % 7 + 7 * i.W - (u + 5) % 7 : i.w + 7 * i.U - (u + 6) % 7 } return "Z" in i ? (i.H += i.Z / 100 | 0, i.M += i.Z % 100, oe(i)) : n(i) } } function r(t, n, e, r) { for (var i, o, u = 0, a = n.length, c = e.length; u < a;) { if (r >= c) return -1; if (i = n.charCodeAt(u++), 37 === i) { if (i = n.charAt(u++), o = B[i in Dv ? n.charAt(u++) : i], !o || (r = o(t, e, r)) < 0) return -1 } else if (i != e.charCodeAt(r++)) return -1 } return r } function i(t, n, e) { var r = C.exec(n.slice(e)); return r ? (t.p = z[r[0].toLowerCase()], e + r[0].length) : -1 } function o(t, n, e) { var r = L.exec(n.slice(e)); return r ? (t.w = R[r[0].toLowerCase()], e + r[0].length) : -1 } function u(t, n, e) { var r = P.exec(n.slice(e)); return r ? (t.w = q[r[0].toLowerCase()], e + r[0].length) : -1 } function a(t, n, e) { var r = O.exec(n.slice(e)); return r ? (t.m = F[r[0].toLowerCase()], e + r[0].length) : -1 } function c(t, n, e) { var r = U.exec(n.slice(e)); return r ? (t.m = D[r[0].toLowerCase()], e + r[0].length) : -1 } function s(t, n, e) { return r(t, w, n, e) } function f(t, n, e) { return r(t, M, n, e) } function l(t, n, e) { return r(t, T, n, e) } function h(t) { return S[t.getDay()] } function p(t) { return k[t.getDay()] } function d(t) { return E[t.getMonth()] } function v(t) { return A[t.getMonth()] } function _(t) { return N[+ (t.getHours() >= 12)] } function y(t) { return S[t.getUTCDay()] } function g(t) { return k[t.getUTCDay()] } function m(t) { return E[t.getUTCMonth()] } function x(t) { return A[t.getUTCMonth()] } function b(t) { return N[+ (t.getUTCHours() >= 12)] } var w = t.dateTime, M = t.date, T = t.time, N = t.periods, k = t.days, S = t.shortDays, A = t.months, E = t.shortMonths, C = fe(N), z = le(N), P = fe(k), q = le(k), L = fe(S), R = le(S), U = fe(A), D = le(A), O = fe(E), F = le(E), I = { a: h, A: p, b: d, B: v, c: null, d: ke, e: ke, H: Se, I: Ae, j: Ee, L: Ce, m: ze, M: Pe, p: _, S: qe, U: Le, w: Re, W: Ue, x: null, X: null, y: De, Y: Oe, Z: Fe, "%": tr }, Y = { a: y, A: g, b: m, B: x, c: null, d: Ie, e: Ie, H: Ye, I: Be, j: je, L: He, m: Xe, M: Ve, p: b, S: We, U: $e, w: Ze, W: Ge, x: null, X: null, y: Je, Y: Qe, Z: Ke, "%": tr }, B = { a: o, A: u, b: a, B: c, c: s, d: me, e: me, H: be, I: be, j: xe, L: Te, m: ge, M: we, p: i, S: Me, U: pe, w: he, W: de, x: f, X: l, y: _e, Y: ve, Z: ye, "%": Ne }; return I.x = n(M, I), I.X = n(T, I), I.c = n(w, I), Y.x = n(M, Y), Y.X = n(T, Y), Y.c = n(w, Y), { format: function (t) { var e = n(t += "", I); return e.toString = function () { return t }, e }, parse: function (t) { var n = e(t += "", ie); return n.toString = function () { return t }, n }, utcFormat: function (t) { var e = n(t += "", Y); return e.toString = function () { return t }, e }, utcParse: function (t) { var n = e(t, oe); return n.toString = function () { return t }, n } } } function ce(t, n, e) { var r = t < 0 ? "-" : "", i = (r ? -t : t) + "", o = i.length; return r + (o < e ? new Array(e - o + 1).join(n) + i : i) } function se(t) { return t.replace(Iv, "\\$&") } function fe(t) { return new RegExp("^(?:" + t.map(se).join("|") + ")", "i") } function le(t) { for (var n = {}, e = -1, r = t.length; ++e < r;) n[t[e].toLowerCase()] = e; return n } function he(t, n, e) { var r = Ov.exec(n.slice(e, e + 1)); return r ? (t.w =+ r[0], e + r[0].length) : -1 } function pe(t, n, e) { var r = Ov.exec(n.slice(e)); return r ? (t.U =+ r[0], e + r[0].length) : -1 } function de(t, n, e) { var r = Ov.exec(n.slice(e)); return r ? (t.W =+ r[0], e + r[0].length) : -1 } function ve(t, n, e) { var r = Ov.exec(n.slice(e, e + 4)); return r ? (t.y =+ r[0], e + r[0].length) : -1 } function _e(t, n, e) { var r = Ov.exec(n.slice(e, e + 2)); return r ? (t.y =+ r[0] + (+ r[0] > 68 ? 1900 : 2e3), e + r[0].length) : -1 } function ye(t, n, e) { var r = /^(Z)|([+-]\d\d)(?:\:?(\d\d))?/.exec(n.slice(e, e + 6)); return r ? (t.Z = r[1] ? 0 : -(r[2] + (r[3] || "00")), e + r[0].length) : -1 } function ge(t, n, e) { var r = Ov.exec(n.slice(e, e + 2)); return r ? (t.m = r[0] - 1, e + r[0].length) : -1 } function me(t, n, e) { var r = Ov.exec(n.slice(e, e + 2)); return r ? (t.d =+ r[0], e + r[0].length) : -1 } function xe(t, n, e) { var r = Ov.exec(n.slice(e, e + 3)); return r ? (t.m = 0, t.d =+ r[0], e + r[0].length) : -1 } function be(t, n, e) { var r = Ov.exec(n.slice(e, e + 2)); return r ? (t.H =+ r[0], e + r[0].length) : -1 } function we(t, n, e) { var r = Ov.exec(n.slice(e, e + 2)); return r ? (t.M =+ r[0], e + r[0].length) : -1 } function Me(t, n, e) { var r = Ov.exec(n.slice(e, e + 2)); return r ? (t.S =+ r[0], e + r[0].length) : -1 } function Te(t, n, e) { var r = Ov.exec(n.slice(e, e + 3)); return r ? (t.L =+ r[0], e + r[0].length) : -1 } function Ne(t, n, e) { var r = Fv.exec(n.slice(e, e + 1)); return r ? e + r[0].length : -1 } function ke(t, n) { return ce(t.getDate(), n, 2) } function Se(t, n) { return ce(t.getHours(), n, 2) } function Ae(t, n) { return ce(t.getHours() % 12 || 12, n, 2) } function Ee(t, n) { return ce(1 + Cd.count($d(t), t), n, 3) } function Ce(t, n) { return ce(t.getMilliseconds(), n, 3) } function ze(t, n) { return ce(t.getMonth() + 1, n, 2) } function Pe(t, n) { return ce(t.getMinutes(), n, 2) } function qe(t, n) { return ce(t.getSeconds(), n, 2) } function Le(t, n) { return ce(Pd.count($d(t), t), n, 2) } function Re(t) { return t.getDay() } function Ue(t, n) { return ce(qd.count($d(t), t), n, 2) } function De(t, n) { return ce(t.getFullYear() % 100, n, 2) } function Oe(t, n) { return ce(t.getFullYear() % 1e4, n, 4) } function Fe(t) { var n = t.getTimezoneOffset(); return (n > 0 ? "-" : (n *= -1, "+")) + ce(n / 60 | 0, "0", 2) + ce(n % 60, "0", 2) } function Ie(t, n) { return ce(t.getUTCDate(), n, 2) } function Ye(t, n) { return ce(t.getUTCHours(), n, 2) } function Be(t, n) { return ce(t.getUTCHours() % 12 || 12, n, 2) } function je(t, n) { return ce(1 + tv.count(gv(t), t), n, 3) } function He(t, n) { return ce(t.getUTCMilliseconds(), n, 3) } function Xe(t, n) { return ce(t.getUTCMonth() + 1, n, 2) } function Ve(t, n) { return ce(t.getUTCMinutes(), n, 2) } function We(t, n) { return ce(t.getUTCSeconds(), n, 2) } function $e(t, n) { return ce(ev.count(gv(t), t), n, 2) } function Ze(t) { return t.getUTCDay() } function Ge(t, n) { return ce(rv.count(gv(t), t), n, 2) } function Je(t, n) { return ce(t.getUTCFullYear() % 100, n, 2) } function Qe(t, n) { return ce(t.getUTCFullYear() % 1e4, n, 4) } function Ke() { return "+0000" } function tr() { return "%" } function nr(n) { return qv = ae(n), t.timeFormat = qv.format, t.timeParse = qv.parse, t.utcFormat = qv.utcFormat, t.utcParse = qv.utcParse, qv } function er(t) { return t.toISOString() } function rr(t) { var n = new Date(t); return isNaN(n) ? null : n } function ir(t) { function n(n) { var o = n + "", u = e.get(o); if (!u) { if (i !== Wv) return i; e.set(o, u = r.push(n)) } return t[(u - 1) % t.length] } var e = o(), r = [], i = Wv; return t = null == t ? [] : Vv.call(t), n.domain = function (t) { if (!arguments.length) return r.slice(); r = [], e = o(); for (var i, u, a = -1, c = t.length; ++a < c;) e.has(u = (i = t[a]) + "") || e.set(u, r.push(i)); return n }, n.range = function (e) { return arguments.length ? (t = Vv.call(e), n) : t.slice() }, n.unknown = function (t) { return arguments.length ? (i = t, n) : i }, n.copy = function () { return ir() .domain(r) .range(t) .unknown(i) }, n } function or() { function t() { var t = i().length, r = u[1] < u[0], l = u[r - 0], h = u[1 - r]; n = (h - l) / Math.max(1, t - c + 2 * s), a && (n = Math.floor(n)), l += (h - l - n * (t - c)) * f, e = n * (1 - c), a && (l = Math.round(l), e = Math.round(e)); var p = Os(t).map(function (t) { return l + n * t }); return o(r ? p.reverse() : p) } var n, e, r = ir().unknown(void 0), i = r.domain, o = r.range, u = [ 0, 1 ], a = !1, c = 0, s = 0, f = .5; return delete r.unknown, r.domain = function (n) { return arguments.length ? (i(n), t()) : i() }, r.range = function (n) { return arguments.length ? (u = [ + n[0], + n[1] ], t()) : u.slice() }, r.rangeRound = function (n) { return u = [ + n[0], + n[1] ], a = !0, t() }, r.bandwidth = function () { return e }, r.step = function () { return n }, r.round = function (n) { return arguments.length ? (a = !!n, t()) : a }, r.padding = function (n) { return arguments.length ? (c = s = Math.max(0, Math.min(1, n)), t()) : c }, r.paddingInner = function (n) { return arguments.length ? (c = Math.max(0, Math.min(1, n)), t()) : c }, r.paddingOuter = function (n) { return arguments.length ? (s = Math.max(0, Math.min(1, n)), t()) : s }, r.align = function (n) { return arguments.length ? (f = Math.max(0, Math.min(1, n)), t()) : f }, r.copy = function () { return or() .domain(i()) .range(u) .round(a) .paddingInner(c) .paddingOuter(s) .align(f) }, t() } function ur(t) { var n = t.copy; return t.padding = t.paddingOuter, delete t.paddingInner, delete t.paddingOuter, t.copy = function () { return ur(n()) }, t } function ar() { return ur(or().paddingInner(1)) } function cr(t, n) { return (n -= t =+ t) ? function (e) { return (e - t) / n } : $v(n) } function sr(t) { return function (n, e) { var r = t(n =+ n, e =+ e); return function (t) { return t <= n ? 0 : t >= e ? 1 : r(t) } } } function fr(t) { return function (n, e) { var r = t(n =+ n, e =+ e); return function (t) { return t <= 0 ? n : t >= 1 ? e : r(t) } } } function lr(t, n, e, r) { var i = t[0], o = t[1], u = n[0], a = n[1]; return o < i ? (i = e(o, i), u = r(a, u)) : (i = e(i, o), u = r(u, a)), function (t) { return u(i(t)) } } function hr(t, n, e, r) { var i = Math.min(t.length, n.length) - 1, o = new Array(i), u = new Array(i), a = -1; for (t[i] < t[0] && (t = t.slice().reverse(), n = n.slice().reverse()); ++a < i;) o[a] = e(t[a], t[a + 1]), u[a] = r(n[a], n[a + 1]); return function (n) { var e = ks(t, n, 1, i) - 1; return u[e](o[e](n)) } } function pr(t, n) { return n .domain(t.domain()) .range(t.range()) .interpolate(t.interpolate()) .clamp(t.clamp()) } function dr(t, n) { function e() { return i = Math.min(a.length, c.length) > 2 ? hr : lr, o = u = null, r } function r(n) { return (o || (o = i(a, c, f ? sr(t) : t, s)))(+ n) } var i, o, u, a = Gv, c = Gv, s = _p, f = !1; return r.invert = function (t) { return (u || (u = i(c, a, cr, f ? fr(n) : n)))(+ t) }, r.domain = function (t) { return arguments.length ? (a = Xv.call(t, Zv), e()) : a.slice() }, r.range = function (t) { return arguments.length ? (c = Vv.call(t), e()) : c.slice() }, r.rangeRound = function (t) { return c = Vv.call(t), s = yp, e() }, r.clamp = function (t) { return arguments.length ? (f = !!t, e()) : f }, r.interpolate = function (t) { return arguments.length ? (s = t, e()) : s }, e() } function vr(t) { var n = t.domain; return t.ticks = function (t) { var e = n(); return Bs(e[0], e[e.length - 1], null == t ? 10 : t) }, t.tickFormat = function (t, e) { return Jv(n(), t, e) }, t.nice = function (r) { var i = n(), o = i.length - 1, u = null == r ? 10 : r, a = i[0], c = i[o], s = e(a, c, u); return s && (s = e(Math.floor(a / s) * s, Math.ceil(c / s) * s, u), i[0] = Math.floor(a / s) * s, i[o] = Math.ceil(c / s) * s, n(i)), t }, t } function _r() { var t = dr(cr, lp); return t.copy = function () { return pr(t, _r()) }, vr(t) } function yr() { function t(t) { return + t } var n = [0, 1]; return t.invert = t, t.domain = t.range = function (e) { return arguments.length ? (n = Xv.call(e, Zv), t) : n.slice() }, t.copy = function () { return yr().domain(n) }, vr(t) } function gr(t, n) { return (n = Math.log(n / t)) ? function (e) { return Math.log(e / t) / n } : $v(n) } function mr(t, n) { return t < 0 ? function (e) { return -Math.pow(-n, e) * Math.pow(-t, 1 - e) } : function (e) { return Math.pow(n, e) * Math.pow(t, 1 - e) } } function xr(t) { return isFinite(t) ?+ ("1e" + t) : t < 0 ? 0 : t } function br(t) { return 10 === t ? xr : t === Math.E ? Math.exp : function (n) { return Math.pow(t, n) } } function wr(t) { return t === Math.E ? Math.log : 10 === t && Math.log10 || 2 === t && Math.log2 || (t = Math.log(t), function (n) { return Math.log(n) / t }) } function Mr(t) { return function (n) { return -t(-n) } } function Tr() { function n() { return o = wr(i), u = br(i), r()[0] < 0 && (o = Mr(o), u = Mr(u)), e } var e = dr(gr, mr).domain([1, 10]), r = e.domain, i = 10, o = wr(10), u = br(10); return e.base = function (t) { return arguments.length ? (i =+ t, n()) : i }, e.domain = function (t) { return arguments.length ? (r(t), n()) : r() }, e.ticks = function (t) { var n, e = r(), a = e[0], c = e[e.length - 1]; (n = c < a) && (h = a, a = c, c = h); var s, f, l, h = o(a), p = o(c), d = null == t ? 10 :+ t, v = []; if (!(i % 1) && p - h < d) { if (h = Math.round(h) - 1, p = Math.round(p) + 1, a > 0) { for (; h < p; ++h) for (f = 1, s = u(h); f < i; ++f) if (l = s * f, !(l < a)) { if (l > c) break; v.push(l) } } else for (; h < p; ++h) for (f = i - 1, s = u(h); f >= 1; --f) if (l = s * f, !(l < a)) { if (l > c) break; v.push(l) } } else v = Bs(h, p, Math.min(p - h, d)).map(u); return n ? v.reverse() : v }, e.tickFormat = function (n, r) { if (null == r && (r = 10 === i ? ".0e" : ","), "function" != typeof r && (r = t.format(r)), n === 1 / 0) return r; null == n && (n = 10); var a = Math.max(1, i * n / e.ticks().length); return function (t) { var n = t / u(Math.round(o(t))); return n * i < i - .5 && (n *= i), n <= a ? r(t) : "" } }, e.nice = function () { return r(Qv(r(), { floor: function (t) { return u(Math.floor(o(t))) }, ceil: function (t) { return u(Math.ceil(o(t))) } })) }, e.copy = function () { return pr(e, Tr().base(i)) }, e } function Nr(t, n) { return t < 0 ? -Math.pow(-t, n) : Math.pow(t, n) } function kr() { function t(t, n) { return (n = Nr(n, e) - (t = Nr(t, e))) ? function (r) { return (Nr(r, e) - t) / n } : $v(n) } function n(t, n) { return n = Nr(n, e) - (t = Nr(t, e)), function (r) { return Nr(t + n * r, 1 / e) } } var e = 1, r = dr(t, n), i = r.domain; return r.exponent = function (t) { return arguments.length ? (e =+ t, i(i())) : e }, r.copy = function () { return pr(r, kr().exponent(e)) }, vr(r) } function Sr() { return kr().exponent(.5) } function Ar() { function t() { var t = 0, o = Math.max(1, r.length); for (i = new Array(o - 1); ++t < o;) i[t - 1] = Xs(e, t / o); return n } function n(t) { if (!isNaN(t =+ t)) return r[ks(i, t)] } var e = [], r = [], i = []; return n.invertExtent = function (t) { var n = r.indexOf(t); return n < 0 ? [NaN, NaN] : [ n > 0 ? i[n - 1] : e[0], n < i.length ? i[n] : e[e.length - 1] ] }, n.domain = function (n) { if (!arguments.length) return e.slice(); e = []; for (var r, i = 0, o = n.length; i < o; ++i) r = n[i], null == r || isNaN(r =+ r) || e.push(r); return e.sort(Ms), t() }, n.range = function (n) { return arguments.length ? (r = Vv.call(n), t()) : r.slice() }, n.quantiles = function () { return i.slice() }, n.copy = function () { return Ar() .domain(e) .range(r) }, n } function Er() { function t(t) { if (t <= t) return u[ks(o, t, 0, i)] } function n() { var n = -1; for (o = new Array(i); ++n < i;) o[n] = ((n + 1) * r - (n - i) * e) / (i + 1); return t } var e = 0, r = 1, i = 1, o = [.5], u = [0, 1]; return t.domain = function (t) { return arguments.length ? (e =+ t[0], r =+ t[1], n()) : [e, r] }, t.range = function (t) { return arguments.length ? (i = (u = Vv.call(t)).length - 1, n()) : u.slice() }, t.invertExtent = function (t) { var n = u.indexOf(t); return n < 0 ? [NaN, NaN] : n < 1 ? [e, o[0]] : n >= i ? [ o[i - 1], r ] : [ o[n - 1], o[n] ] }, t.copy = function () { return Er() .domain([e, r]) .range(u) }, vr(t) } function Cr() { function t(t) { if (t <= t) return e[ks(n, t, 0, r)] } var n = [.5], e = [ 0, 1 ], r = 1; return t.domain = function (i) { return arguments.length ? (n = Vv.call(i), r = Math.min(n.length, e.length - 1), t) : n.slice() }, t.range = function (i) { return arguments.length ? (e = Vv.call(i), r = Math.min(n.length, e.length - 1), t) : e.slice() }, t.invertExtent = function (t) { var r = e.indexOf(t); return [ n[r - 1], n[r] ] }, t.copy = function () { return Cr() .domain(n) .range(e) }, t } function zr(t) { return new Date(t); } function Pr(t) { return t instanceof Date ?+ t :+ new Date(+ t) } function qr(t, n, r, i, o, u, a, c, s) { function f(e) { return (a(e) < e ? v : u(e) < e ? _ : o(e) < e ? y : i(e) < e ? g : n(e) < e ? r(e) < e ? m : x : t(e) < e ? b : w)(e) } function l(n, r, i, o) { if (null == n && (n = 10), "number" == typeof n) { var u = Math.abs(i - r) / n, a = Ts(function (t) { return t[2] }).right(M, u); a === M.length ? (o = e(r / o_, i / o_, n), n = t) : a ? (a = M[u / M[a - 1][2] < M[a][2] / u ? a - 1 : a], o = a[1], n = a[0]) : (o = e(r, i, n), n = c) } return null == o ? n : n.every(o) } var h = dr(cr, lp), p = h.invert, d = h.domain, v = s(".%L"), _ = s(":%S"), y = s("%I:%M"), g = s("%I %p"), m = s("%a %d"), x = s("%b %d"), b = s("%B"), w = s("%Y"), M = [ [ a, 1, Kv ], [ a, 5, 5 * Kv ], [ a, 15, 15 * Kv ], [ a, 30, 30 * Kv ], [ u, 1, t_ ], [ u, 5, 5 * t_ ], [ u, 15, 15 * t_ ], [ u, 30, 30 * t_ ], [ o, 1, n_ ], [ o, 3, 3 * n_ ], [ o, 6, 6 * n_ ], [ o, 12, 12 * n_ ], [ i, 1, e_ ], [ i, 2, 2 * e_ ], [ r, 1, r_ ], [ n, 1, i_ ], [ n, 3, 3 * i_ ], [t, 1, o_] ]; return h.invert = function (t) { return new Date(p(t)) }, h.domain = function (t) { return arguments.length ? d(Xv.call(t, Pr)) : d().map(zr) }, h.ticks = function (t, n) { var e, r = d(), i = r[0], o = r[r.length - 1], u = o < i; return u && (e = i, i = o, o = e), e = l(t, i, o, n), e = e ? e.range(i, o + 1) : [], u ? e.reverse() : e }, h.tickFormat = function (t, n) { return null == n ? f : s(n) }, h.nice = function (t, n) { var e = d(); return (t = l(t, e[0], e[e.length - 1], n)) ? d(Qv(e, t)) : h }, h.copy = function () { return pr(h, qr(t, n, r, i, o, u, a, c, s)) }, h } function Lr(t) { var n = t.length; return function (e) { return t[Math.max(0, Math.min(n - 1, Math.floor(e * n)))] } } function Rr(t) { function n(n) { var o = (n - e) / (r - e); return t(i ? Math.max(0, Math.min(1, o)) : o) } var e = 0, r = 1, i = !1; return n.domain = function (t) { return arguments.length ? (e =+ t[0], r =+ t[1], n) : [e, r] }, n.clamp = function (t) { return arguments.length ? (i = !!t, n) : i }, n.interpolator = function (e) { return arguments.length ? (t = e, n) : t }, n.copy = function () { return Rr(t) .domain([e, r]) .clamp(i) }, vr(n) } function Ur(t) { return function () { var n = this.ownerDocument, e = this.namespaceURI; return e === w_ && n.documentElement.namespaceURI === w_ ? n.createElement(t) : n.createElementNS(e, t) } } function Dr(t) { return function () { return this .ownerDocument .createElementNS(t.space, t.local) } } function Or() { return new Fr } function Fr() { this._ = "@" + (++k_).toString(36) } function Ir(t, n, e) { return t = Yr(t, n, e), function (n) { var e = n.relatedTarget; e && (e === this || 8 & e.compareDocumentPosition(this)) || t.call(this, n) } } function Yr(n, e, r) { return function (i) { var o = t.event; t.event = i; try { n.call(this, this.__data__, e, r) } finally { t.event = o } } } function Br(t) { return t .trim() .split(/^|\s+/) .map(function (t) { var n = "", e = t.indexOf("."); return e >= 0 && (n = t.slice(e + 1), t = t.slice(0, e)), { type: t, name: n } }) } function jr(t) { return function () { var n = this.__on; if (n) { for (var e, r = 0, i = -1, o = n.length; r < o; ++r) e = n[r], t.type && e.type !== t.type || e.name !== t.name ? n[++i] = e : this.removeEventListener(e.type, e.listener, e.capture); ++i ? n.length = i : delete this.__on } } } function Hr(t, n, e) { var r = z_.hasOwnProperty(t.type) ? Ir : Yr; return function (i, o, u) { var a, c = this.__on, s = r(n, o, u); if (c) for (var f = 0, l = c.length; f < l; ++f) if ((a = c[f]).type === t.type && a.name === t.name) return this.removeEventListener(a.type, a.listener, a.capture), this.addEventListener(a.type, a.listener = s, a.capture = e), void(a.value = n); this.addEventListener(t.type, s, e), a = { type: t.type, name: t.name, value: n, listener: s, capture: e }, c ? c.push(a) : this.__on = [a] } } function Xr(n, e, r, i) { var o = t.event; n.sourceEvent = t.event, t.event = n; try { return e.apply(r, i) } finally { t.event = o } } function Vr() {} function Wr() { return [] } function $r(t, n) { this.ownerDocument = t.ownerDocument, this.namespaceURI = t.namespaceURI, this._next = null, this._parent = t, this.__data__ = n } function Zr(t, n, e, r, i, o) { for (var u, a = 0, c = n.length, s = o.length; a < s; ++a) (u = n[a]) ? (u.__data__ = o[a], r[a] = u) : e[a] = new $r(t, o[a]); for (; a < c; ++a) (u = n[a]) && (i[a] = u) } function Gr(t, n, e, r, i, o, u) { var a, c, s, f = {}, l = n.length, h = o.length, p = new Array(l); for (a = 0; a < l; ++a) (c = n[a]) && (p[a] = s = X_ + u.call(c, c.__data__, a, n), s in f ? i[a] = c : f[s] = c); for (a = 0; a < h; ++a) s = X_ + u.call(t, o[a], a, o), (c = f[s]) ? (r[a] = c, c.__data__ = o[a], f[s] = null) : e[a] = new $r(t, o[a]); for (a = 0; a < l; ++a) (c = n[a]) && f[p[a]] === c && (i[a] = c) } function Jr(t, n) { return t < n ? -1 : t > n ? 1 : t >= n ? 0 : NaN } function Qr(t) { return function () { this.removeAttribute(t) } } function Kr(t) { return function () { this.removeAttributeNS(t.space, t.local) } } function ti(t, n) { return function () { this.setAttribute(t, n) } } function ni(t, n) { return function () { this.setAttributeNS(t.space, t.local, n) } } function ei(t, n) { return function () { var e = n.apply(this, arguments); null == e ? this.removeAttribute(t) : this.setAttribute(t, e) } } function ri(t, n) { return function () { var e = n.apply(this, arguments); null == e ? this.removeAttributeNS(t.space, t.local) : this.setAttributeNS(t.space, t.local, e) } } function ii(t) { return function () { this .style .removeProperty(t) } } function oi(t, n, e) { return function () { this .style .setProperty(t, n, e) } } function ui(t, n, e) { return function () { var r = n.apply(this, arguments); null == r ? this .style .removeProperty(t) : this .style .setProperty(t, r, e) } } function ai(t) { return function () { delete this[t] } } function ci(t, n) { return function () { this[t] = n } } function si(t, n) { return function () { var e = n.apply(this, arguments); null == e ? delete this[t] : this[t] = e } } function fi(t) { return t .trim() .split(/^|\s+/) } function li(t) { return t.classList || new hi(t) } function hi(t) { this._node = t, this._names = fi(t.getAttribute("class") || "") } function pi(t, n) { for (var e = li(t), r = -1, i = n.length; ++r < i;) e.add(n[r]) } function di(t, n) { for (var e = li(t), r = -1, i = n.length; ++r < i;) e.remove(n[r]) } function vi(t) { return function () { pi(this, t) } } function _i(t) { return function () { di(this, t) } } function yi(t, n) { return function () { (n.apply(this, arguments) ? pi : di)(this, t) } } function gi() { this.textContent = "" } function mi(t) { return function () { this.textContent = t } } function xi(t) { return function () { var n = t.apply(this, arguments); this.textContent = null == n ? "" : n } } function bi() { this.innerHTML = "" } function wi(t) { return function () { this.innerHTML = t } } function Mi(t) { return function () { var n = t.apply(this, arguments); this.innerHTML = null == n ? "" : n } } function Ti() { this.nextSibling && this .parentNode .appendChild(this) } function Ni() { this.previousSibling && this .parentNode .insertBefore(this, this.parentNode.firstChild) } function ki() { return null } function Si() { var t = this.parentNode; t && t.removeChild(this) } function Ai(t, n, e) { var r = iy(t), i = r.CustomEvent; i ? i = new i(n, e) : (i = r.document.createEvent("Event"), e ? (i.initEvent(n, e.bubbles, e.cancelable), i.detail = e.detail) : i.initEvent(n, !1, !1)), t.dispatchEvent(i) } function Ei(t, n) { return function () { return Ai(this, t, n) } } function Ci(t, n) { return function () { return Ai(this, t, n.apply(this, arguments)) } } function zi(t, n) { this._groups = t, this._parents = n } function Pi() { return new zi([ [document.documentElement] ], yy) } function qi(t, n) { var e = t.__transition; if (!e || !(e = e[n]) || e.state > Ty) throw new Error("too late"); return e } function Li(t, n) { var e = t.__transition; if (!e || !(e = e[n]) || e.state > ky) throw new Error("too late"); return e } function Ri(t, n) { var e = t.__transition; if (!e || !(e = e[n])) throw new Error("too late"); return e } function Ui(t, n, e) { function r(t) { e.state = Ny, e .timer .restart(i, e.delay, e.time), e.delay <= t && i(t - e.delay) } function i(r) { var s, f, l, h; if (e.state !== Ny) return u(); for (s in c) if (h = c[s], h.name === e.name) { if (h.state === Sy) return pd(i); h.state === Ay ? (h.state = Cy, h.timer.stop(), h.on.call("interrupt", t, t.__data__, h.index, h.group), delete c[s]) :+ s < n && (h.state = Cy, h.timer.stop(), delete c[s]) } if (pd(function () { e.state === Sy && (e.state = Ay, e.timer.restart(o, e.delay, e.time), o(r)) }), e.state = ky, e.on.call("start", t, t.__data__, e.index, e.group), e.state === ky) { for (e.state = Sy, a = new Array(l = e.tween.length), s = 0, f = -1; s < l; ++s) (h = e.tween[s].value.call(t, t.__data__, e.index, e.group)) && (a[++f] = h); a.length = f + 1 } } function o(n) { for (var r = n < e.duration ? e.ease.call(null, n / e.duration) : (e.timer.restart(u), e.state = Ey, 1), i = -1, o = a.length; ++i < o;) a[i].call(null, r); e.state === Ey && (e.on.call("end", t, t.__data__, e.index, e.group), u()) } function u() { e.state = Cy, e .timer .stop(), delete c[n]; for (var r in c) return; delete t.__transition } var a, c = t.__transition; c[n] = e, e.timer = Vn(r, 0, e.time) } function Di(t, n) { var e, r; return function () { var i = Li(this, t), o = i.tween; if (o !== e) { r = e = o; for (var u = 0, a = r.length; u < a; ++u) if (r[u].name === n) { r = r.slice(), r.splice(u, 1); break } } i.tween = r } } function Oi(t, n, e) { var r, i; if ("function" != typeof e) throw new Error; return function () { var o = Li(this, t), u = o.tween; if (u !== r) { i = (r = u).slice(); for (var a = { name: n, value: e }, c = 0, s = i.length; c < s; ++c) if (i[c].name === n) { i[c] = a; break } c === s && i.push(a) } o.tween = i } } function Fi(t, n, e) { var r = t._id; return t.each(function () { var t = Li(this, r); (t.value || (t.value = {}))[n] = e.apply(this, arguments) }), function (t) { return Ri(t, r).value[n] } } function Ii(t) { return function () { this.removeAttribute(t) } } function Yi(t) { return function () { this.removeAttributeNS(t.space, t.local) } } function Bi(t, n, e) { var r, i; return function () { var o = this.getAttribute(t); return o === e ? null : o === r ? i : i = n(r = o, e) } } function ji(t, n, e) { var r, i; return function () { var o = this.getAttributeNS(t.space, t.local); return o === e ? null : o === r ? i : i = n(r = o, e) } } function Hi(t, n, e) { var r, i, o; return function () { var u, a = e(this); return null == a ? void this.removeAttribute(t) : (u = this.getAttribute(t), u === a ? null : u === r && a === i ? o : o = n(r = u, i = a)) } } function Xi(t, n, e) { var r, i, o; return function () { var u, a = e(this); return null == a ? void this.removeAttributeNS(t.space, t.local) : (u = this.getAttributeNS(t.space, t.local), u === a ? null : u === r && a === i ? o : o = n(r = u, i = a)) } } function Vi(t, n) { function e() { var e = this, r = n.apply(e, arguments); return r && function (n) { e.setAttributeNS(t.space, t.local, r(n)) } } return e._value = n, e } function Wi(t, n) { function e() { var e = this, r = n.apply(e, arguments); return r && function (n) { e.setAttribute(t, r(n)) } } return e._value = n, e } function $i(t, n) { return function () { qi(this, t).delay =+ n.apply(this, arguments) } } function Zi(t, n) { return n =+ n, function () { qi(this, t).delay = n } } function Gi(t, n) { return function () { Li(this, t).duration =+ n.apply(this, arguments) } } function Ji(t, n) { return n =+ n, function () { Li(this, t).duration = n } } function Qi(t, n) { if ("function" != typeof n) throw new Error; return function () { Li(this, t).ease = n } } function Ki(t) { return (t + "") .trim() .split(/^|\s+/) .every(function (t) { var n = t.indexOf("."); return n >= 0 && (t = t.slice(0, n)), !t || "start" === t }) } function to(t, n, e) { var r, i, o = Ki(n) ? qi : Li; return function () { var u = o(this, t), a = u.on; a !== r && (i = (r = a).copy()).on(n, e), u.on = i } } function no(t) { return function () { var n = this.parentNode; for (var e in this.__transition) if (+ e !== t) return; n && n.removeChild(this) } } function eo(t, n) { var e, r, i; return function () { var o = iy(this).getComputedStyle(this, null), u = o.getPropertyValue(t), a = (this.style.removeProperty(t), o.getPropertyValue(t)); return u === a ? null : u === e && a === r ? i : i = n(e = u, r = a) } } function ro(t) { return function () { this .style .removeProperty(t) } } function io(t, n, e) { var r, i; return function () { var o = iy(this) .getComputedStyle(this, null) .getPropertyValue(t); return o === e ? null : o === r ? i : i = n(r = o, e) } } function oo(t, n, e) { var r, i, o; return function () { var u = iy(this).getComputedStyle(this, null), a = u.getPropertyValue(t), c = e(this); return null == c && (this.style.removeProperty(t), c = u.getPropertyValue(t)), a === c ? null : a === r && c === i ? o : o = n(r = a, i = c) } } function uo(t, n, e) { function r() { var r = this, i = n.apply(r, arguments); return i && function (n) { r .style .setProperty(t, i(n), e) } } return r._value = n, r } function ao(t) { return function () { this.textContent = t } } function co(t) { return function () { var n = t(this); this.textContent = null == n ? "" : n } } function so(t, n, e, r) { this._groups = t, this._parents = n, this._name = e, this._id = r } function fo(t) { return Pi().transition(t) } function lo() { return++ Ky } function ho(t, n) { for (var e; !(e = t.__transition) || !(e = e[n]);) if (!(t = t.parentNode)) return ng.time = jn(), ng; return e } function po(t, n, e) { var r = t(e); return "translate(" + (isFinite(r) ? r : n(e)) + ",0)" } function vo(t, n, e) { var r = t(e); return "translate(0," + (isFinite(r) ? r : n(e)) + ")" } function _o(t) { var n = t.bandwidth() / 2; return t.round() && (n = Math.round(n)), function (e) { return t(e) + n } } function yo() { return !this.__axis } function go(t, n) { function e(e) { var s, f = null == i ? n.ticks ? n .ticks .apply(n, r) : n.domain() : i, l = null == o ? n.tickFormat ? n .tickFormat .apply(n, r) : ug : o, h = Math.max(u, 0) + c, p = t === ag || t === sg ? po : vo, d = n.range(), v = d[0] + .5, _ = d[d.length - 1] + .5, y = (n.bandwidth ? _o : ug)(n.copy()), g = e.selection ? e.selection() : e, m = g .selectAll(".domain") .data([null]), x = g .selectAll(".tick") .data(f, n) .order(), b = x.exit(), w = x .enter() .append("g") .attr("class", "tick"), M = x.select("line"), T = x.select("text"), N = t === ag || t === fg ? -1 : 1, k = t === fg || t === cg ? (s = "x", "y") : (s = "y", "x"); m = m.merge(m.enter().insert("path", ".tick").attr("class", "domain").attr("stroke", "#000")), x = x.merge(w), M = M.merge(w.append("line").attr("stroke", "#000").attr(s + "2", N * u).attr(k + "1", .5).attr(k + "2", .5)), T = T.merge(w.append("text").attr("fill", "#000").attr(s, N * h).attr(k, .5).attr("dy", t === ag ? "0em" : t === sg ? "0.71em" : "0.32em")), e !== g && (m = m.transition(e), x = x.transition(e), M = M.transition(e), T = T.transition(e), b = b.transition(e).attr("opacity", lg).attr("transform", function (t) { return p(y, this.parentNode.__axis || y, t) }), w.attr("opacity", lg).attr("transform", function (t) { return p(this.parentNode.__axis || y, y, t) })), b.remove(), m.attr("d", t === fg || t == cg ? "M" + N * a + "," + v + "H0.5V" + _ + "H" + N * a : "M" + v + "," + N * a + "V0.5H" + _ + "V" + N * a), x .attr("opacity", 1) .attr("transform", function (t) { return p(y, y, t) }), M.attr(s + "2", N * u), T .attr(s, N * h) .text(l), g .filter(yo) .attr("fill", "none") .attr("font-size", 10) .attr("font-family", "sans-serif") .attr("text-anchor", t === cg ? "start" : t === fg ? "end" : "middle"), g.each(function () { this.__axis = y }) } var r = [], i = null, o = null, u = 6, a = 6, c = 3; return e.scale = function (t) { return arguments.length ? (n = t, e) : n }, e.ticks = function () { return r = og.call(arguments), e }, e.tickArguments = function (t) { return arguments.length ? (r = null == t ? [] : og.call(t), e) : r.slice() }, e.tickValues = function (t) { return arguments.length ? (i = null == t ? null : og.call(t), e) : i && i.slice() }, e.tickFormat = function (t) { return arguments.length ? (o = t, e) : o }, e.tickSize = function (t) { return arguments.length ? (u = a =+ t, e) : u }, e.tickSizeInner = function (t) { return arguments.length ? (u =+ t, e) : u }, e.tickSizeOuter = function (t) { return arguments.length ? (a =+ t, e) : a }, e.tickPadding = function (t) { return arguments.length ? (c =+ t, e) : c }, e } function mo(t) { return go(ag, t) } function xo(t) { return go(cg, t) } function bo(t) { return go(sg, t) } function wo(t) { return go(fg, t) } function Mo(t, n) { return t.parent === n.parent ? 1 : 2 } function To(t) { return t.reduce(No, 0) / t.length } function No(t, n) { return t + n.x } function ko(t) { return 1 + t.reduce(So, 0) } function So(t, n) { return Math.max(t, n.y) } function Ao(t) { for (var n; n = t.children;) t = n[0]; return t } function Eo(t) { for (var n; n = t.children;) t = n[n.length - 1]; return t } function Co(t, n) { if (t === n) return t; var e = t.ancestors(), r = n.ancestors(), i = null; for (t = e.pop(), n = r.pop(); t === n;) i = t, t = e.pop(), n = r.pop(); return i } function zo(t, n) { var e, r, i, o, u, a = new Uo(t), c =+ t.value && (a.value = t.value), s = [a]; for (null == n && (n = qo); e = s.pop();) if (c && (e.value =+ e.data.value), (i = n(e.data)) && (u = i.length)) for (e.children = new Array(u), o = u - 1; o >= 0; --o) s.push(r = e.children[o] = new Uo(i[o])), r.parent = e, r.depth = e.depth + 1; return a.eachBefore(Ro) } function Po() { return zo(this).eachBefore(Lo) } function qo(t) { return t.children } function Lo(t) { t.data = t.data.data } function Ro(t) { var n = 0; do t.height = n; while ((t = t.parent) && t.height < ++n) } function Uo(t) { this.data = t, this.depth = this.height = 0, this.parent = null } function Do(t) { this._ = t, this.next = null } function Oo(t, n) { var e = n.x - t.x, r = n.y - t.y, i = t.r - n.r; return i * i + 1e-6 > e * e + r * r } function Fo(t, n) { var e, r, i, o = null, u = t.head; switch (n.length) { case 1: e = Io(n[0]); break; case 2: e = Yo(n[0], n[1]); break; case 3: e = Bo(n[0], n[1], n[2]) } for (; u;) i = u._, r = u.next, e && Oo(e, i) ? o = u : (o ? (t.tail = o, o.next = null) : t.head = t.tail = null, n.push(i), e = Fo(t, n), n.pop(), t.head ? (u.next = t.head, t.head = u) : (u.next = null, t.head = t.tail = u), o = t.tail, o.next = r), u = r; return t.tail = o, e } function Io(t) { return {x: t.x, y: t.y, r: t.r} } function Yo(t, n) { var e = t.x, r = t.y, i = t.r, o = n.x, u = n.y, a = n.r, c = o - e, s = u - r, f = a - i, l = Math.sqrt(c * c + s * s); return { x: (e + o + c / l * f) / 2, y: (r + u + s / l * f) / 2, r: (l + i + a) / 2 } } function Bo(t, n, e) { var r = t.x, i = t.y, o = t.r, u = n.x, a = n.y, c = n.r, s = e.x, f = e.y, l = e.r, h = 2 * (r - u), p = 2 * (i - a), d = 2 * (c - o), v = r * r + i * i - o * o - u * u - a * a + c * c, _ = 2 * (r - s), y = 2 * (i - f), g = 2 * (l - o), m = r * r + i * i - o * o - s * s - f * f + l * l, x = _ * p - h * y, b = (p * m - y * v) / x - r, w = (y * d - p * g) / x, M = (_ * v - h * m) / x - i, T = (h * g - _ * d) / x, N = w * w + T * T - 1, k = 2 * (b * w + M * T + o), S = b * b + M * M - o * o, A = (-k - Math.sqrt(k * k - 4 * N * S)) / (2 * N); return { x: b + *A + r, y: M + *A + i, r: A } } function jo(t, n, e) { var r = t.x, i = t.y, o = n.r + e.r, u = t.r + e.r, a = n.x - r, c = n.y - i, s = a * a + c * c; if (s) { var f = .5 + ((u *= u) - (o *= o)) / (2 * s), l = Math.sqrt(Math.max(0, 2 * o * (u + s) - (u -= s) * u - o * o)) / (2 * s); e.x = r + f * a + l * c, e.y = i + f * c - l * a } else e.x = r + u, e.y = i } function Ho(t, n) { var e = n.x - t.x, r = n.y - t.y, i = t.r + n.r; return i * i > e * e + r * r } function Xo(t, n, e) { var r = t.x - n, i = t.y - e; return r * r + i * i } function Vo(t) { this._ = t, this.next = null, this.previous = null } function Wo(t) { if (!(i = t.length)) return 0; var n, e, r, i; if (n = t[0], n.x = 0, n.y = 0, !(i > 1)) return n.r; if (e = t[1], n.x = -e.r, e.x = n.r, e.y = 0, !(i > 2)) return n.r + e.r; jo(e, n, r = t[2]); var o, u, a, c, s, f, l, h = n.r * n.r, p = e.r * e.r, d = r.r * r.r, v = h + p + d, _ = h * n.x + p * e.x + d * r.x, y = h * n.y + p * e.y + d * r.y; n = new Vo(n), e = new Vo(e), r = new Vo(r), n.next = r.previous = e, e.next = n.previous = r, r.next = e.previous = n; t : for (a = 3; a < i; ++a) { if (jo(n._, e._, r = t[a]), r = new Vo(r), (s = n.previous) === (c = e.next)) { if (Ho(c._, r._)) { n = e, e = c, --a; continue t } } else { f = c._.r, l = s._.r; do if (f <= l) { if (Ho(c._, r._)) { e = c, n.next = e, e.previous = n, --a; continue t } c = c.next, f += c._.r } else { if (Ho(s._, r._)) { n = s, n.next = e, e.previous = n, --a; continue t } s = s.previous, l += s._.r } while (c !== s.next) } for (r.previous = n, r.next = e, n.next = e.previous = e = r, v += d = r._.r * r._.r, _ += d * r._.x, y += d * r._.y, h = Xo(n._, o = _ / v, u = y / v); (r = r.next) !== e;) (d = Xo(r._, o, u)) < h && (n = r, h = d); e = n.next } for (n = [e._], r = e; (r = r.next) !== e;) n.push(r._); for (r = Tg(n), a = 0; a < i; ++a) n = t[a], n.x -= r.x, n.y -= r.y; return r.r } function $o(t) { return null == t ? null : Zo(t) } function Zo(t) { if ("function" != typeof t) throw new Error; return t } function Go() { return 0 } function Jo(t) { return Math.sqrt(t.value) } function Qo(t) { return function (n) { n.children || (n.r = Math.max(0, + t(n) || 0)) } } function Ko(t, n) { return function (e) { if (r = e.children) { var r, i, o, u = r.length, a = t(e) * n || 0; if (a) for (i = 0; i < u; ++i) r[i].r += a; if (o = Wo(r), a) for (i = 0; i < u; ++i) r[i].r -= a; e.r = o + a } } } function tu(t) { return function (n) { var e = n.parent; n.r *= t, e && (n.x = e.x + t * n.x, n.y = e.y + t * n.y) } } function nu(t) { return t.id } function eu(t) { return t.parentId } function ru(t, n) { return t.parent === n.parent ? 1 : 2 } function iu(t) { var n = t.children; return n ? n[0] : t.t } function ou(t) { var n = t.children; return n ? n[n.length - 1] : t.t } function uu(t, n, e) { var r = e / (n.i - t.i); n.c -= r, n.s += e, t.c += r, n.z += e, n.m += e } function au(t) { for (var n, e = 0, r = 0, i = t.children, o = i.length; --o >= 0;) n = i[o], n.z += e, n.m += e, e += n.s + (r += n.c) } function cu(t, n, e) { return t.a.parent === n.parent ? t.a : e } function su(t, n) { this._ = t, this.parent = null, this.children = null, this.A = null, this.a = this, this.z = 0, this.m = 0, this.c = 0, this.s = 0, this.t = null, this.i = n } function fu(t) { for (var n, e, r, i, o, u = new su(t, 0), a = [u]; n = a.pop();) if (r = n._.children) for (n.children = new Array(o = r.length), i = o - 1; i >= 0; --i) a.push(e = n.children[i] = new su(r[i], i)), e.parent = n; return (u.parent = new su(null, 0)).children = [u], u } function lu(t, n, e, r, i, o) { for (var u, a, c, s, f, l, h, p, d, v, _, y, g = [], m = n.children, x = 0, b = m.length, w = n.value; x < b;) { for (s = i - e, f = o - r, h = p = l = m[x].value, _ = Math.max(f / s, s / f) / (w * t), y = l * l * _, v = Math.max(p / y, y / h), c = x + 1; c < b; ++c) { if (l += a = m[c].value, a < h && (h = a), a > p && (p = a), y = l * l * _, d = Math.max(p / y, y / h), d > v) { l -= a; break } v = d } g.push(u = { value: l, dice: s < f, children: m.slice(x, c) }), u.dice ? Eg(u, e, r, i, w ? r += f * l / w : o) : Ug(u, e, r, w ? e += s * l / w : i, o), w -= l, x = c } return g } function hu(t) { return t.x + t.vx } function pu(t) { return t.y + t.vy } function du(t, n) { return n } function vu(t, n) { var e = t.get(n); if (!e) throw new Error("missing: " + n); return e } function _u(t) { return t.x } function yu(t) { return t.y } function gu() { t .event .stopImmediatePropagation() } function mu(t, n) { var e = t.document.documentElement, r = gy(t).on("dragstart.drag", null); n && (r.on("click.drag", tm, !0), setTimeout(function () { r.on("click.drag", null) }, 0)), "onselectstart" in e ? r.on("selectstart.drag", null) : (e.style.MozUserSelect = e.__noselect, delete e.__noselect) } function xu(t, n, e, r, i, o, u, a, c, s) { this.target = t, this.type = n, this.subject = e, this.identifier = r, this.active = i, this.x = o, this.y = u, this.dx = a, this.dy = c, this._ = s } function bu() { return !t.event.button } function wu() { return this.parentNode } function Mu(n) { return null == n ? { x: t.event.x, y: t.event.y } : n } function Tu(t) { return t[0] } function Nu(t) { return t[1] } function ku() { this._ = null } function Su(t) { t.U = t.C = t.L = t.R = t.P = t.N = null } function Au(t, n) { var e = n, r = n.R, i = e.U; i ? i.L === e ? i.L = r : i.R = r : t._ = r, r.U = i, e.U = r, e.R = r.L, e.R && (e.R.U = e), r.L = e } function Eu(t, n) { var e = n, r = n.L, i = e.U; i ? i.L === e ? i.L = r : i.R = r : t._ = r, r.U = i, e.U = r, e.L = r.R, e.L && (e.L.U = e), r.R = e } function Cu(t) { for (; t.L;) t = t.L; return t } function zu(t, n, e, r) { var i = [ null, null ], o = sm.push(i) - 1; return i.left = t, i.right = n, e && qu(i, t, n, e), r && qu(i, n, t, r), am[t.index] .halfedges .push(o), am[n.index] .halfedges .push(o), i } function Pu(t, n, e) { var r = [n, e]; return r.left = t, r } function qu(t, n, e, r) { t[0] || t[1] ? t.left === e ? t[1] = r : t[0] = r : (t[0] = r, t.left = n, t.right = e) } function Lu(t, n, e, r, i) { var o, u = t[0], a = t[1], c = u[0], s = u[1], f = a[0], l = a[1], h = 0, p = 1, d = f - c, v = l - s; if (o = n - c, d || !(o > 0)) { if (o /= d, d < 0) { if (o < h) return; o < p && (p = o) } else if (d > 0) { if (o > p) return; o > h && (h = o) } if (o = r - c, d || !(o < 0)) { if (o /= d, d < 0) { if (o > p) return; o > h && (h = o) } else if (d > 0) { if (o < h) return; o < p && (p = o) } if (o = e - s, v || !(o > 0)) { if (o /= v, v < 0) { if (o < h) return; o < p && (p = o) } else if (v > 0) { if (o > p) return; o > h && (h = o) } if (o = i - s, v || !(o < 0)) { if (o /= v, v < 0) { if (o > p) return; o > h && (h = o) } else if (v > 0) { if (o < h) return; o < p && (p = o) } return !(h > 0 || p < 1) || (h > 0 && (t[0] = [ c + h * d, s + h * v ]), p < 1 && (t[1] = [ c + p * d, s + p * v ]), !0) } } } } } function Ru(t, n, e, r, i) { var o = t[1]; if (o) return !0; var u, a, c = t[0], s = t.left, f = t.right, l = s[0], h = s[1], p = f[0], d = f[1], v = (l + p) / 2, _ = (h + d) / 2; if (d === h) { if (v < n || v >= r) return; if (l > p) { if (c) { if (c[1] >= i) return } else c = [v, e]; o = [v, i] } else { if (c) { if (c[1] < e) return } else c = [v, i]; o = [v, e] } } else if (u = (l - p) / (d - h), a = _ - u * v, u < -1 || u > 1) if (l > p) { if (c) { if (c[1] >= i) return } else c = [ (e - a) / u, e ]; o = [ (i - a) / u, i ] } else { if (c) { if (c[1] < e) return } else c = [ (i - a) / u, i ]; o = [ (e - a) / u, e ] } else if (h < d) { if (c) { if (c[0] >= r) return } else c = [ n, u * n + a ]; o = [ r, u * r + a ] } else { if (c) { if (c[0] < n) return } else c = [ r, u * r + a ]; o = [ n, u * n + a ] } return t[0] = c, t[1] = o, !0 } function Uu(t, n, e, r) { for (var i, o = sm.length; o--;) Ru(i = sm[o], t, n, e, r) && Lu(i, t, n, e, r) && (Math.abs(i[0][0] - i[1][0]) > hm || Math.abs(i[0][1] - i[1][1]) > hm) || delete sm[o] } function Du(t) { return am[t.index] = { site: t, halfedges: [] } } function Ou(t, n) { var e = t.site, r = n.left, i = n.right; return e === i && (i = r, r = e), i ? Math.atan2(i[1] - r[1], i[0] - r[0]) : (e === r ? (r = n[1], i = n[0]) : (r = n[0], i = n[1]), Math.atan2(r[0] - i[0], i[1] - r[1])) } function Fu(t, n) { return n[+ (n.left !== t.site)] } function Iu(t, n) { return n[+ (n.left === t.site)] } function Yu() { for (var t, n, e, r, i = 0, o = am.length; i < o; ++i) if ((t = am[i]) && (r = (n = t.halfedges).length)) { var u = new Array(r), a = new Array(r); for (e = 0; e < r; ++e) u[e] = e, a[e] = Ou(t, sm[n[e]]); for (u.sort(function (t, n) { return a[n] - a[t] }), e = 0; e < r; ++e) a[e] = n[u[e]]; for (e = 0; e < r; ++e) n[e] = a[e] } } function Bu(t, n, e, r) { var i, o, u, a, c, s, f, l, h, p, d, v, _ = am.length, y = !0; for (i = 0; i < _; ++i) if (o = am[i]) { for (u = o.site, c = o.halfedges, a = c.length; a--;) sm[c[a]] || c.splice(a, 1); for (a = 0, s = c.length; a < s;) p = Iu(o, sm[c[a]]), d = p[0], v = p[1], f = Fu(o, sm[c[++a % s]]), l = f[0], h = f[1], (Math.abs(d - l) > hm || Math.abs(v - h) > hm) && (c.splice(a, 0, sm.push(Pu(u, p, Math.abs(d - t) < hm && r - v > hm ? [ t, Math.abs(l - t) < hm ? h : r ] : Math.abs(v - r) < hm && e - d > hm ? [ Math.abs(h - r) < hm ? l : e, r ] : Math.abs(d - e) < hm && v - n > hm ? [ e, Math.abs(l - e) < hm ? h : n ] : Math.abs(v - n) < hm && d - t > hm ? [ Math.abs(h - n) < hm ? l : t, n ] : null)) - 1), ++s); s && (y = !1) } if (y) { var g, m, x, b = 1 / 0; for (i = 0, y = null; i < _; ++i) (o = am[i]) && (u = o.site, g = u[0] - t, m = u[1] - n, x = g * g + m * m, x < b && (b = x, y = o)); if (y) { var w = [ t, n ], M = [ t, r ], T = [ e, r ], N = [e, n]; y .halfedges .push(sm.push(Pu(u = y.site, w, M)) - 1, sm.push(Pu(u, M, T)) - 1, sm.push(Pu(u, T, N)) - 1, sm.push(Pu(u, N, w)) - 1) } } for (i = 0; i < _; ++i) (o = am[i]) && (o.halfedges.length || delete am[i]) } function ju() { Su(this), this.x = this.y = this.arc = this.site = this.cy = null } function Hu(t) { var n = t.P, e = t.N; if (n && e) { var r = n.site, i = t.site, o = e.site; if (r !== o) { var u = i[0], a = i[1], c = r[0] - u, s = r[1] - a, f = o[0] - u, l = o[1] - a, h = 2 * (c * l - s * f); if (!(h >= -pm)) { var p = c * c + s * s, d = f * f + l * l, v = (l * p - s * d) / h, _ = (c * d - f * p) / h, y = fm.pop() || new ju; y.arc = t, y.site = i, y.x = v + u, y.y = (y.cy = _ + a) + Math.sqrt(v * v + _ * _), t.circle = y; for (var g = null, m = cm._; m;) if (y.y < m.y || y.y === m.y && y.x <= m.x) { if (!m.L) { g = m.P; break } m = m.L } else { if (!m.R) { g = m; break } m = m.R } cm.insert(g, y), g || (om = y) } } } } function Xu(t) { var n = t.circle; n && (n.P || (om = n.N), cm.remove(n), fm.push(n), Su(n), t.circle = null) } function Vu() { Su(this), this.edge = this.site = this.circle = null } function Wu(t) { var n = lm.pop() || new Vu; return n.site = t, n } function $u(t) { Xu(t), um.remove(t), lm.push(t), Su(t) } function Zu(t) { var n = t.circle, e = n.x, r = n.cy, i = [ e, r ], o = t.P, u = t.N, a = [t]; $u(t); for (var c = o; c.circle && Math.abs(e - c.circle.x) < hm && Math.abs(r - c.circle.cy) < hm;) o = c.P, a.unshift(c), $u(c), c = o; a.unshift(c), Xu(c); for (var s = u; s.circle && Math.abs(e - s.circle.x) < hm && Math.abs(r - s.circle.cy) < hm;) u = s.N, a.push(s), $u(s), s = u; a.push(s), Xu(s); var f, l = a.length; for (f = 1; f < l; ++f) s = a[f], c = a[f - 1], qu(s.edge, c.site, s.site, i); c = a[0], s = a[l - 1], s.edge = zu(c.site, s.site, null, i), Hu(c), Hu(s) } function Gu(t) { for (var n, e, r, i, o = t[0], u = t[1], a = um._; a;) if (r = Ju(a, u) - o, r > hm) a = a.L; else { if (i = o - Qu(a, u), !(i > hm)) { r > -hm ? (n = a.P, e = a) : i > -hm ? (n = a, e = a.N) : n = e = a; break } if (!a.R) { n = a; break } a = a.R } Du(t); var c = Wu(t); if (um.insert(n, c), n || e) { if (n === e) return Xu(n), e = Wu(n.site), um.insert(c, e), c.edge = e.edge = zu(n.site, c.site), Hu(n), void Hu(e); if (!e) return void(c.edge = zu(n.site, c.site)); Xu(n), Xu(e); var s = n.site, f = s[0], l = s[1], h = t[0] - f, p = t[1] - l, d = e.site, v = d[0] - f, _ = d[1] - l, y = 2 * (h * _ - p * v), g = h * h + p * p, m = v * v + _ * _, x = [ (_ * g - p * m) / y + f, (h * m - v * g) / y + l ]; qu(e.edge, s, d, x), c.edge = zu(s, t, null, x), e.edge = zu(t, d, null, x), Hu(n), Hu(e) } } function Ju(t, n) { var e = t.site, r = e[0], i = e[1], o = i - n; if (!o) return r; var u = t.P; if (!u) return -(1 / 0); e = u.site; var a = e[0], c = e[1], s = c - n; if (!s) return a; var f = a - r, l = 1 / o - 1 / s, h = f / s; return l ? (-h + Math.sqrt(h * h - 2 * l * (f * f / (-2 * s) - c + s / 2 + i - o / 2))) / l + r : (r + a) / 2 } function Qu(t, n) { var e = t.N; if (e) return Ju(e, n); var r = t.site; return r[1] === n ? r[0] : 1 / 0 } function Ku(t, n, e) { return (t[0] - e[0]) * (n[1] - t[1]) - (t[0] - n[0]) * (e[1] - t[1]) } function ta(t, n) { return n[1] - t[1] || n[0] - t[0] } function na(t, n) { var e, r, i, o = t .sort(ta) .pop(); for (sm = [], am = new Array(t.length), um = new ku, cm = new ku;;) if (i = om, o && (!i || o[1] < i.y || o[1] === i.y && o[0] < i.x)) o[0] === e && o[1] === r || (Gu(o), e = o[0], r = o[1]), o = t.pop(); else { if (!i) break; Zu(i.arc) } if (Yu(), n) { var u =+ n[0][0], a =+ n[0][1], c =+ n[1][0], s =+ n[1][1]; Uu(u, a, c, s), Bu(u, a, c, s) } this.edges = sm, this.cells = am, um = cm = sm = am = null } function ea(t, n, e) { this.target = t, this.type = n, this.transform = e } function ra(t, n, e) { this.k = t, this.x = n, this.y = e } function ia(t) { return t.__zoom || _m } function oa() { t .event .stopImmediatePropagation() } function ua() { return !t.event.button } function aa() { var t, n, e = this; return e instanceof SVGElement ? (e = e.ownerSVGElement || e, t = e.width.baseVal.value, n = e.height.baseVal.value) : (t = e.clientWidth, n = e.clientHeight), [ [ 0, 0 ], [t, n] ] } function ca() { return this.__zoom || _m } function sa() { t .event .stopImmediatePropagation() } function fa(t) { return {type: t} } function la() { return !t.event.button } function ha() { var t = this.ownerSVGElement || this; return [ [ 0, 0 ], [t.width.baseVal.value, t.height.baseVal.value] ] } function pa(t) { for (; !t.__brush;) if (!(t = t.parentNode)) return; return t.__brush } function da(t) { return t[0][0] === t[1][0] || t[0][1] === t[1][1] } function va(t) { var n = t.__brush; return n ? n .dim .output(n.selection) : null } function _a() { return ga(km) } function ya() { return ga(Sm) } function ga(n) { function e(t) { var e = t .property("__brush", a) .selectAll(".overlay") .data([fa("overlay")]); e .enter() .append("rect") .attr("class", "overlay") .attr("pointer-events", "all") .attr("cursor", Em.overlay) .merge(e) .each(function () { var t = pa(this).extent; gy(this) .attr("x", t[0][0]) .attr("y", t[0][1]) .attr("width", t[1][0] - t[0][0]) .attr("height", t[1][1] - t[0][1]) }), t .selectAll(".selection") .data([fa("selection")]) .enter() .append("rect") .attr("class", "selection") .attr("cursor", Em.selection) .attr("fill", "#777") .attr("fill-opacity", .3) .attr("stroke", "#fff") .attr("shape-rendering", "crispEdges"); var i = t .selectAll(".handle") .data(n.handles, function (t) { return t.type }); i .exit() .remove(), i .enter() .append("rect") .attr("class", function (t) { return "handle handle--" + t.type }) .attr("cursor", function (t) { return Em[t.type] }), t .each(r) .attr("fill", "none") .attr("pointer-events", "all") .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)") .on("mousedown.brush touchstart.brush", u) } function r() { var t = gy(this), n = pa(this).selection; n ? (t.selectAll(".selection").style("display", null).attr("x", n[0][0]).attr("y", n[0][1]).attr("width", n[1][0] - n[0][0]).attr("height", n[1][1] - n[0][1]), t.selectAll(".handle").style("display", null).attr("x", function (t) { return "e" === t.type[t.type.length - 1] ? n[1][0] - h / 2 : n[0][0] - h / 2 }).attr("y", function (t) { return "s" === t.type[0] ? n[1][1] - h / 2 : n[0][1] - h / 2 }).attr("width", function (t) { return "n" === t.type || "s" === t.type ? n[1][0] - n[0][0] + h : h }).attr("height", function (t) { return "e" === t.type || "w" === t.type ? n[1][1] - n[0][1] + h : h })) : t .selectAll(".selection,.handle") .style("display", "none") .attr("x", null) .attr("y", null) .attr("width", null) .attr("height", null) } function i(t, n) { return t.__brush.emitter || new o(t, n) } function o(t, n) { this.that = t, this.args = n, this.state = t.__brush, this.active = 0 } function u() { function e() { var t = U_(T); !U || w || M || (Math.abs(t[0] - O[0]) > Math.abs(t[1] - O[1]) ? M = !0 : w = !0), O = t, b = !0, bm(), o() } function o() { var t; switch (m = O[0] - D[0], x = O[1] - D[1], k) { case Mm: case wm: S && (m = Math.max(P - l, Math.min(L - v, m)), h = l + m, _ = v + m), A && (x = Math.max(q - p, Math.min(R - y, x)), d = p + x, g = y + x); break; case Tm: S < 0 ? (m = Math.max(P - l, Math.min(L - l, m)), h = l + m, _ = v) : S > 0 && (m = Math.max(P - v, Math.min(L - v, m)), h = l, _ = v + m), A < 0 ? (x = Math.max(q - p, Math.min(R - p, x)), d = p + x, g = y) : A > 0 && (x = Math.max(q - y, Math.min(R - y, x)), d = p, g = y + x); break; case Nm: S && (h = Math.max(P, Math.min(L, l - m * S)), _ = Math.max(P, Math.min(L, v + m * S))), A && (d = Math.max(q, Math.min(R, p - x * A)), g = Math.max(q, Math.min(R, y + x * A))) } _ < h && (S *= -1, t = l, l = v, v = t, t = h, h = _, _ = t, N in Cm && Y.attr("cursor", Em[N = Cm[N]])), g < d && (A *= -1, t = p, p = y, y = t, t = d, d = g, g = t, N in zm && Y.attr("cursor", Em[N = zm[N]])), E.selection && (z = E.selection), w && (h = z[0][0], _ = z[1][0]), M && (d = z[0][1], g = z[1][1]), z[0][0] === h && z[0][1] === d && z[1][0] === _ && z[1][1] === g || (E.selection = [ [ h, d ], [_, g] ], r.call(T), F.brush()) } function u() { if (sa(), t.event.touches) { if (t.event.touches.length) return; c && clearTimeout(c), c = setTimeout(function () { c = null }, 500), I.on("touchmove.brush touchend.brush touchcancel.brush", null) } else mu(t.event.view, b), B.on("keydown.brush keyup.brush mousemove.brush mouseup.brush", null); I.attr("pointer-events", "all"), Y.attr("cursor", Em.overlay), E.selection && (z = E.selection), da(z) && (E.selection = null, r.call(T)), F.end() } function a() { switch (t.event.keyCode) { case 16: U = S && A; break; case 18: k === Tm && (S && (v = _ - m * S, l = h + m * S), A && (y = g - x * A, p = d + x * A), k = Nm, o()); break; case 32: k !== Tm && k !== Nm || (S < 0 ? v = _ - m : S > 0 && (l = h - m), A < 0 ? y = g - x : A > 0 && (p = d - x), k = Mm, Y.attr("cursor", Em.selection), o()); break; default: return } bm() } function s() { switch (t.event.keyCode) { case 16: U && (w = M = U = !1, o()); break; case 18: k === Nm && (S < 0 ? v = _ : S > 0 && (l = h), A < 0 ? y = g : A > 0 && (p = d), k = Tm, o()); break; case 32: k === Mm && (t.event.altKey ? (S && (v = _ - m * S, l = h + m * S), A && (y = g - x * A, p = d + x * A), k = Nm) : (S < 0 ? v = _ : S > 0 && (l = h), A < 0 ? y = g : A > 0 && (p = d), k = Tm), Y.attr("cursor", Em[N]), o()); break; default: return } bm() } if (t.event.touches) { if (t.event.changedTouches.length < t.event.touches.length) return bm() } else if (c) return; if (f.apply(this, arguments)) { var l, h, p, d, v, _, y, g, m, x, b, w, M, T = this, N = t.event.target.__data__.type, k = "selection" === (t.event.metaKey ? N = "overlay" : N) ? wm : t.event.altKey ? Nm : Tm, S = n === Sm ? null : Pm[N], A = n === km ? null : qm[N], E = pa(T), C = E.extent, z = E.selection, P = C[0][0], q = C[0][1], L = C[1][0], R = C[1][1], U = S && A && t.event.shiftKey, D = U_(T), O = D, F = i(T, arguments).beforestart(); "overlay" === N ? E.selection = z = [ [ l = n === Sm ? P : D[0], p = n === km ? q : D[1] ], [ v = n === Sm ? L : l, y = n === km ? R : p ] ] : (l = z[0][0], p = z[0][1], v = z[1][0], y = z[1][1]), h = l, d = p, _ = v, g = y; var I = gy(T).attr("pointer-events", "none"), Y = I .selectAll(".overlay") .attr("cursor", Em[N]); if (t.event.touches) I.on("touchmove.brush", e, !0).on("touchend.brush touchcancel.brush", u, !0); else { var B = gy(t.event.view) .on("keydown.brush", a, !0) .on("keyup.brush", s, !0) .on("mousemove.brush", e, !0) .on("mouseup.brush", u, !0); nm(t.event.view) } sa(), Py(T), r.call(T), F.start() } } function a() { var t = this.__brush || { selection: null }; return t.extent = s.apply(this, arguments), t.dim = n, t } var c, s = ha, f = la, l = Pn(e, "start", "brush", "end"), h = 6; return e.move = function (t, e) { t.selection ? t.on("start.brush", function () { i(this, arguments) .beforestart() .start() }) .on("interrupt.brush end.brush", function () { i(this, arguments).end() }) .tween("brush", function () { function t(t) { u.selection = 1 === t && da(s) ? null : f(t), r.call(o), a.brush() } var o = this, u = o.__brush, a = i(o, arguments), c = u.selection, s = n.input("function" == typeof e ? e.apply(this, arguments) : e, u.extent), f = _p(c, s); return c && s ? t : t(1) }) : t.each(function () { var t = this, o = arguments, u = t.__brush, a = n.input("function" == typeof e ? e.apply(t, o) : e, u.extent), c = i(t, o).beforestart(); Py(t), u.selection = null == a || da(a) ? null : a, r.call(t), c .start() .brush() .end() }) }, o.prototype = { beforestart: function () { return 1 === ++this.active && (this.state.emitter = this, this.starting = !0), this }, start: function () { return this.starting && (this.starting = !1, this.emit("start")), this }, brush: function () { return this.emit("brush"), this }, end: function () { return 0 === --this.active && (delete this.state.emitter, this.emit("end")), this }, emit: function (t) { Xr(new xm(e, t, n.output(this.state.selection)), l.apply, l, [t, this.that, this.args]) } }, e.extent = function (t) { return arguments.length ? (s = "function" == typeof t ? t : mm([ [ + t[0][0], + t[0][1] ], [ + t[1][0], + t[1][1] ] ]), e) : s }, e.filter = function (t) { return arguments.length ? (f = "function" == typeof t ? t : mm(!!t), e) : f }, e.handleSize = function (t) { return arguments.length ? (h =+ t, e) : h }, e.on = function () { var t = l .on .apply(l, arguments); return t === l ? e : t }, e } function ma(t) { return function (n, e) { return t(n.source.value + n.target.value, e.source.value + e.target.value) } } function xa(t) { return t.source } function ba(t) { return t.target } function wa(t) { return t.radius } function Ma(t) { return t.startAngle } function Ta(t) { return t.endAngle } function Na() { this.reset() } function ka(t, n, e) { var r = t.s = n + e, i = r - n, o = r - i; t.t = n - o + (e - i) } function Sa(t) { return t > 1 ? 0 : t < -1 ? kx : Math.acos(t) } function Aa(t) { return t > 1 ? Sx : t < -1 ? -Sx : Math.asin(t) } function Ea(t) { return (t = Ix(t / 2)) * t } function Ca() {} function za(t, n) { t && Xx.hasOwnProperty(t.type) && Xx[t.type](t, n) } function Pa(t, n, e) { var r, i = -1, o = t.length - e; for (n.lineStart(); ++i < o;) r = t[i], n.point(r[0], r[1], r[2]); n.lineEnd() } function qa(t, n) { var e = -1, r = t.length; for (n.polygonStart(); ++e < r;) Pa(t[e], n, 1); n.polygonEnd() } function La() { Zx.point = Ua } function Ra() { Da(Vm, Wm) } function Ua(t, n) { Zx.point = Da, Vm = t, Wm = n, t *= zx, n *= zx, $m = t, Zm = Rx(n = n / 2 + Ax), Gm = Ix(n) } function Da(t, n) { t *= zx, n *= zx, n = n / 2 + Ax; var e = t - $m, r = e >= 0 ? 1 : -1, i = r * e, o = Rx(n), u = Ix(n), a = Gm * u, c = Zm * o + a * Rx(i), s = a * r * Ix(i); Wx.add(Lx(s, c)), $m = t, Zm = o, Gm = u } function Oa(t) { return [ Lx(t[1], t[0]), Aa(t[2]) ] } function Fa(t) { var n = t[0], e = t[1], r = Rx(e); return [ r * Rx(n), r * Ix(n), Ix(e) ] } function Ia(t, n) { return t[0] * n[0] + t[1] * n[1] + t[2] * n[2] } function Ya(t, n) { return [ t[1] * n[2] - t[2] * n[1], t[2] * n[0] - t[0] * n[2], t[0] * n[1] - t[1] * n[0] ] } function Ba(t, n) { t[0] += n[0], t[1] += n[1], t[2] += n[2] } function ja(t, n) { return [ t[0] * n, t[1] * n, t[2] * n ] } function Ha(t) { var n = Bx(t[0] * t[0] + t[1] * t[1] + t[2] * t[2]); t[0] /= n, t[1] /= n, t[2] /= n } function Xa(t, n) { ox.push(ux = [ Jm = t, Km = t ]), n < Qm && (Qm = n), n > tx && (tx = n) } function Va(t, n) { var e = Fa([ t * zx, n * zx ]); if (ix) { var r = Ya(ix, e), i = [ r[1], -r[0], 0 ], o = Ya(i, r); Ha(o), o = Oa(o); var u, a = t - nx, c = a > 0 ? 1 : -1, s = o[0] * Cx * c, f = Px(a) > 180; f ^ (c * nx < s && s < c * t) ? (u = o[1] * Cx, u > tx && (tx = u)) : (s = (s + 360) % 360 - 180, f ^ (c * nx < s && s < c * t) ? (u = -o[1] * Cx, u < Qm && (Qm = u)) : (n < Qm && (Qm = n), n > tx && (tx = n))), f ? t < nx ? Qa(Jm, t) > Qa(Jm, Km) && (Km = t) : Qa(t, Km) > Qa(Jm, Km) && (Jm = t) : Km >= Jm ? (t < Jm && (Jm = t), t > Km && (Km = t)) : t > nx ? Qa(Jm, t) > Qa(Jm, Km) && (Km = t) : Qa(t, Km) > Qa(Jm, Km) && (Jm = t) } else Xa(t, n); ix = e, nx = t } function Wa() { Qx.point = Va } function $a() { ux[0] = Jm, ux[1] = Km, Qx.point = Xa, ix = null } function Za(t, n) { if (ix) { var e = t - nx; Jx.add(Px(e) > 180 ? e + (e > 0 ? 360 : -360) : e) } else ex = t, rx = n; Zx.point(t, n), Va(t, n) } function Ga() { Zx.lineStart() } function Ja() { Za(ex, rx), Zx.lineEnd(), Px(Jx) > Tx && (Jm = -(Km = 180)), ux[0] = Jm, ux[1] = Km, ix = null } function Qa(t, n) { return (n -= t) < 0 ? n + 360 : n } function Ka(t, n) { return t[0] - n[0] } function tc(t, n) { return t[0] <= t[1] ? t[0] <= n && n <= t[1] : n < t[0] || t[1] < n } function nc(t, n) { t *= zx, n *= zx; var e = Rx(n); ec(e * Rx(t), e * Ix(t), Ix(n)) } function ec(t, n, e) { ++ax, sx += (t - sx) / ax, fx += (n - fx) / ax, lx += (e - lx) / ax } function rc() { tb.point = ic } function ic(t, n) { t *= zx, n *= zx; var e = Rx(n); xx = e * Rx(t), bx = e * Ix(t), wx = Ix(n), tb.point = oc, ec(xx, bx, wx) } function oc(t, n) { t *= zx, n *= zx; var e = Rx(n), r = e * Rx(t), i = e * Ix(t), o = Ix(n), u = Lx(Bx((u = bx * o - wx * i) * u + (u = wx * r - xx * o) * u + (u = xx * i - bx * r) * u), xx * r + bx * i + wx * o); cx += u, hx += u * (xx + (xx = r)), px += u * (bx + (bx = i)), dx += u * (wx + (wx = o)), ec(xx, bx, wx) } function uc() { tb.point = nc } function ac() { tb.point = sc } function cc() { fc(gx, mx), tb.point = nc } function sc(t, n) { gx = t, mx = n, t *= zx, n *= zx, tb.point = fc; var e = Rx(n); xx = e * Rx(t), bx = e * Ix(t), wx = Ix(n), ec(xx, bx, wx) } function fc(t, n) { t *= zx, n *= zx; var e = Rx(n), r = e * Rx(t), i = e * Ix(t), o = Ix(n), u = bx * o - wx * i, a = wx * r - xx * o, c = xx * i - bx * r, s = Bx(u * u + a * a + c * c), f = xx * r + bx * i + wx * o, l = s && -Sa(f) / s, h = Lx(s, f); vx += l * u, _x += l * a, yx += l * c, cx += h, hx += h * (xx + (xx = r)), px += h * (bx + (bx = i)), dx += h * (wx + (wx = o)), ec(xx, bx, wx) } function lc(t, n) { return [ t > kx ? t - Ex : t < -kx ? t + Ex : t, n ] } function hc(t, n, e) { return (t %= Ex) ? n || e ? rb(dc(t), vc(n, e)) : dc(t) : n || e ? vc(n, e) : lc } function pc(t) { return function (n, e) { return n += t, [ n > kx ? n - Ex : n < -kx ? n + Ex : n, e ] } } function dc(t) { var n = pc(t); return n.invert = pc(-t), n } function vc(t, n) { function e(t, n) { var e = Rx(n), a = Rx(t) * e, c = Ix(t) * e, s = Ix(n), f = s * r + a * i; return [ Lx(c * o - f * u, a * r - s * i), Aa(f * o + c * u) ] } var r = Rx(t), i = Ix(t), o = Rx(n), u = Ix(n); return e.invert = function (t, n) { var e = Rx(n), a = Rx(t) * e, c = Ix(t) * e, s = Ix(n), f = s * o - c * u; return [ Lx(c * o + s * u, a * r + f * i), Aa(f * r - a * i) ] }, e } function _c(t, n, e, r, i, o) { if (e) { var u = Rx(n), a = Ix(n), c = r * e; null == i ? (i = n + r * Ex, o = n - c / 2) : (i = yc(u, i), o = yc(u, o), (r > 0 ? i < o : i > o) && (i += r * Ex)); for (var s, f = i; r > 0 ? f > o : f < o; f -= c) s = Oa([ u, -a * Rx(f), -a * Ix(f) ]), t.point(s[0], s[1]) } } function yc(t, n) { n = Fa(n), n[0] -= t, Ha(n); var e = Sa(-n[1]); return ((-n[2] < 0 ? -e : e) + Ex - Tx) % Ex } function gc(t, n, e, r) { this.x = t, this.z = n, this.o = e, this.e = r, this.v = !1, this.n = this.p = null } function mc(t) { if (n = t.length) { for (var n, e, r = 0, i = t[0]; ++r < n;) i.n = e = t[r], e.p = i, i = e; i.n = e = t[0], e.p = i } } function xc(t, n, e, r) { function i(i, o) { return t <= i && i <= e && n <= o && o <= r } function o(i, o, a, s) { var f = 0, l = 0; if (null == i || (f = u(i, a)) !== (l = u(o, a)) || c(i, o) < 0 ^ a > 0) { do s.point(0 === f || 3 === f ? t : e, f > 1 ? r : n); while ((f = (f + a + 4) % 4) !== l) } else s.point(o[0], o[1]) } function u(r, i) { return Px(r[0] - t) < Tx ? i > 0 ? 0 : 3 : Px(r[0] - e) < Tx ? i > 0 ? 2 : 1 : Px(r[1] - n) < Tx ? i > 0 ? 1 : 0 : i > 0 ? 3 : 2 } function a(t, n) { return c(t.x, n.x) } function c(t, n) { var e = u(t, 1), r = u(n, 1); return e !== r ? e - r : 0 === e ? n[1] - t[1] : 1 === e ? t[0] - n[0] : 2 === e ? t[1] - n[1] : n[0] - t[0] } return function (u) { function c(t, n) { i(t, n) && k.point(t, n) } function s() { for (var n = 0, e = 0, i = _.length; e < i; ++e) for (var o, u, a = _[e], c = 1, s = a.length, f = a[0], l = f[0], h = f[1]; c < s; ++c) o = l, u = h, f = a[c], l = f[0], h = f[1], u <= r ? h > r && (l - o) * (r - u) > (h - u) * (t - o) && ++n : h <= r && (l - o) * (r - u) < (h - u) * (t - o) && --n; return n } function f() { k = S, v = [], _ = [], N = !0 } function l() { var t = s(), n = N && t, e = (v = Js(v)).length; (n || e) && (u.polygonStart(), n && (u.lineStart(), o(null, null, 1, u), u.lineEnd()), e && xb(v, a, t, o, u), u.polygonEnd()), k = u, v = _ = y = null } function h() { A.point = d, _ && _.push(y = []), T = !0, M = !1, b = w = NaN } function p() { v && (d(g, m), x && M && S.rejoin(), v.push(S.result())), A.point = c, M && k.lineEnd() } function d(o, u) { var a = i(o, u); if (_ && y.push([o, u]), T) g = o, m = u, x = a, T = !1, a && (k.lineStart(), k.point(o, u)); else if (a && M) k.point(o, u); else { var c = [ b = Math.max(wb, Math.min(bb, b)), w = Math.max(wb, Math.min(bb, w)) ], s = [ o = Math.max(wb, Math.min(bb, o)), u = Math.max(wb, Math.min(bb, u)) ]; gb(c, s, t, n, e, r) ? (M || (k.lineStart(), k.point(c[0], c[1])), k.point(s[0], s[1]), a || k.lineEnd(), N = !1) : a && (k.lineStart(), k.point(o, u), N = !1) } b = o, w = u, M = a } var v, _, y, g, m, x, b, w, M, T, N, k = u, S = yb(), A = { point: c, lineStart: h, lineEnd: p, polygonStart: f, polygonEnd: l }; return A } } function bc() { Nb.point = Mc, Nb.lineEnd = wc } function wc() { Nb.point = Nb.lineEnd = Ca } function Mc(t, n) { t *= zx, n *= zx, ib = t, ob = Ix(n), ub = Rx(n), Nb.point = Tc } function Tc(t, n) { t *= zx, n *= zx; var e = Ix(n), r = Rx(n), i = Px(t - ib), o = Rx(i), u = Ix(i), a = r * u, c = ub * e - ob * r * o, s = ob * e + ub * r * o; Tb.add(Lx(Bx(a * a + c * c), s)), ib = t, ob = e, ub = r } function Nc(t, n, e) { var r = Os(t, n - Tx, e).concat(n); return function (t) { return r.map(function (n) { return [t, n] }) } } function kc(t, n, e) { var r = Os(t, n - Tx, e).concat(n); return function (t) { return r.map(function (n) { return [n, t] }) } } function Sc() { function t() { return {type: "MultiLineString", coordinates: n()} } function n() { return Os(Ux(o / _) * _, i, _) .map(h) .concat(Os(Ux(s / y) * y, c, y).map(p)) .concat(Os(Ux(r / d) * d, e, d).filter(function (t) { return Px(t % _) > Tx }).map(f)) .concat(Os(Ux(a / v) * v, u, v).filter(function (t) { return Px(t % y) > Tx }).map(l)) } var e, r, i, o, u, a, c, s, f, l, h, p, d = 10, v = d, _ = 90, y = 360, g = 2.5; return t.lines = function () { return n().map(function (t) { return {type: "LineString", coordinates: t} }) }, t.outline = function () { return { type: "Polygon", coordinates: [h(o).concat(p(c).slice(1), h(i).reverse().slice(1), p(s).reverse().slice(1))] } }, t.extent = function (n) { return arguments.length ? t .extentMajor(n) .extentMinor(n) : t.extentMinor() }, t.extentMajor = function (n) { return arguments.length ? (o =+ n[0][0], i =+ n[1][0], s =+ n[0][1], c =+ n[1][1], o > i && (n = o, o = i, i = n), s > c && (n = s, s = c, c = n), t.precision(g)) : [ [ o, s ], [i, c] ] }, t.extentMinor = function (n) { return arguments.length ? (r =+ n[0][0], e =+ n[1][0], a =+ n[0][1], u =+ n[1][1], r > e && (n = r, r = e, e = n), a > u && (n = a, a = u, u = n), t.precision(g)) : [ [ r, a ], [e, u] ] }, t.step = function (n) { return arguments.length ? t .stepMajor(n) .stepMinor(n) : t.stepMinor() }, t.stepMajor = function (n) { return arguments.length ? (_ =+ n[0], y =+ n[1], t) : [_, y] }, t.stepMinor = function (n) { return arguments.length ? (d =+ n[0], v =+ n[1], t) : [d, v] }, t.precision = function (n) { return arguments.length ? (g =+ n, f = Nc(a, u, 90), l = kc(r, e, g), h = Nc(s, c, 90), p = kc(o, i, g), t) : g }, t.extentMajor([ [ -180, -90 + Tx ], [ 180, 90 - Tx ] ]).extentMinor([ [ -180, -80 - Tx ], [ 180, 80 + Tx ] ]) } function Ac() { return Sc()() } function Ec() { Lb.point = Cc } function Cc(t, n) { Lb.point = zc, ab = sb = t, cb = fb = n } function zc(t, n) { qb.add(fb * t - sb * n), sb = t, fb = n } function Pc() { zc(ab, cb) } function qc(t, n) { t < Rb && (Rb = t), t > Db && (Db = t), n < Ub && (Ub = n), n > Ob && (Ob = n) } function Lc(t, n) { Ib += t, Yb += n, ++Bb } function Rc() { Zb.point = Uc } function Uc(t, n) { Zb.point = Dc, Lc(pb = t, db = n) } function Dc(t, n) { var e = t - pb, r = n - db, i = Bx(e * e + r * r); jb += i * (pb + t) / 2, Hb += i * (db + n) / 2, Xb += i, Lc(pb = t, db = n) } function Oc() { Zb.point = Lc } function Fc() { Zb.point = Yc } function Ic() { Bc(lb, hb) } function Yc(t, n) { Zb.point = Bc, Lc(lb = pb = t, hb = db = n) } function Bc(t, n) { var e = t - pb, r = n - db, i = Bx(e * e + r * r); jb += i * (pb + t) / 2, Hb += i * (db + n) / 2, Xb += i, i = db * t - pb * n, Vb += i * (pb + t), Wb += i * (db + n), $b += 3 * i, Lc(pb = t, db = n) } function jc(t) { this._context = t } function Hc() { this._string = [] } function Xc(t) { return "m0," + t + "a" + t + "," + t + " 0 1,1 0," + -2 * t + "a" + t + "," + t + " 0 1,1 0," + 2 * t + "z" } function Vc(t) { return t.length > 1 } function Wc(t, n) { return ((t = t.x)[0] < 0 ? t[1] - Sx - Tx : Sx - t[1]) - ((n = n.x)[0] < 0 ? n[1] - Sx - Tx : Sx - n[1]) } function $c(t) { var n, e = NaN, r = NaN, i = NaN; return { lineStart: function () { t.lineStart(), n = 1 }, point: function (o, u) { var a = o > 0 ? kx : -kx, c = Px(o - e); Px(c - kx) < Tx ? (t.point(e, r = (r + u) / 2 > 0 ? Sx : -Sx), t.point(i, r), t.lineEnd(), t.lineStart(), t.point(a, r), t.point(o, r), n = 0) : i !== a && c >= kx && (Px(e - i) < Tx && (e -= i * Tx), Px(o - a) < Tx && (o -= a * Tx), r = Zc(e, r, o, u), t.point(i, r), t.lineEnd(), t.lineStart(), t.point(a, r), n = 0), t.point(e = o, r = u), i = a }, lineEnd: function () { t.lineEnd(), e = r = NaN }, clean: function () { return 2 - n } } } function Zc(t, n, e, r) { var i, o, u = Ix(t - e); return Px(u) > Tx ? qx((Ix(n) * (o = Rx(r)) * Ix(e) - Ix(r) * (i = Rx(n)) * Ix(t)) / (i * o * u)) : (n + r) / 2 } function Gc(t, n, e, r) { var i; if (null == t) i = e * Sx, r.point(-kx, i), r.point(0, i), r.point(kx, i), r.point(kx, 0), r.point(kx, -i), r.point(0, -i), r.point(-kx, -i), r.point(-kx, 0), r.point(-kx, i); else if (Px(t[0] - n[0]) > Tx) { var o = t[0] < n[0] ? kx : -kx; i = e * o / 2, r.point(-o, i), r.point(0, i), r.point(o, i) } else r.point(n[0], n[1]) } function Jc(t) { return function (n) { var e = new Qc; for (var r in t) e[r] = t[r]; return e.stream = n, e } } function Qc() {} function Kc(t, n, e) { var r = n[1][0] - n[0][0], i = n[1][1] - n[0][1], o = t.clipExtent && t.clipExtent(); t .scale(150) .translate([0, 0]), null != o && t.clipExtent(null), Vx(e, t.stream(Fb)); var u = Fb.result(), a = Math.min(r / (u[1][0] - u[0][0]), i / (u[1][1] - u[0][1])), c =+ n[0][0] + (r - a * (u[1][0] + u[0][0])) / 2, s =+ n[0][1] + (i - a * (u[1][1] + u[0][1])) / 2; return null != o && t.clipExtent(o), t .scale(150 * a) .translate([c, s]) } function ts(t, n, e) { return Kc(t, [ [ 0, 0 ], n ], e) } function ns(t) { return Jc({ point: function (n, e) { n = t(n, e), this .stream .point(n[0], n[1]) } }) } function es(t, n) { function e(r, i, o, u, a, c, s, f, l, h, p, d, v, _) { var y = s - r, g = f - i, m = y * y + g * g; if (m > 4 * n && v--) { var x = u + h, b = a + p, w = c + d, M = Bx(x * x + b * b + w * w), T = Aa(w /= M), N = Px(Px(w) - 1) < Tx || Px(o - l) < Tx ? (o + l) / 2 : Lx(b, x), k = t(N, T), S = k[0], A = k[1], E = S - r, C = A - i, z = g * E - y * C; (z * z / m > n || Px((y * E + g * C) / m - .5) > .3 || u * h + a * p + c * d < iw) && (e(r, i, o, u, a, c, S, A, N, x /= M, b /= M, w, v, _), _.point(S, A), e(S, A, N, x, b, w, s, f, l, h, p, d, v, _)) } } return function (n) { function r(e, r) { e = t(e, r), n.point(e[0], e[1]) } function i() { y = NaN, w.point = o, n.lineStart() } function o(r, i) { var o = Fa([r, i]), u = t(r, i); e(y, g, _, m, x, b, y = u[0], g = u[1], _ = r, m = o[0], x = o[1], b = o[2], rw, n), n.point(y, g) } function u() { w.point = r, n.lineEnd() } function a() { i(), w.point = c, w.lineEnd = s } function c(t, n) { o(f = t, n), l = y, h = g, p = m, d = x, v = b, w.point = o } function s() { e(y, g, _, m, x, b, l, h, f, p, d, v, rw, n), w.lineEnd = u, u() } var f, l, h, p, d, v, _, y, g, m, x, b, w = { point: r, lineStart: i, lineEnd: u, polygonStart: function () { n.polygonStart(), w.lineStart = a }, polygonEnd: function () { n.polygonEnd(), w.lineStart = i } }; return w } } function rs(t) { return is(function () { return t })() } function is(t) { function n(t) { return t = f(t[0] * zx, t[1] * zx), [ t[0] * _ + a, c - t[1] * _ ] } function e(t) { return t = f.invert((t[0] - a) / _, (c - t[1]) / _), t && [ t[0] * Cx, t[1] * Cx ] } function r(t, n) { return t = u(t, n), [ t[0] * _ + a, c - t[1] * _ ] } function i() { f = rb(s = hc(b, w, M), u); var t = u(m, x); return a = y - t[0] * _, c = g + t[1] * _, o() } function o() { return d = v = null, n } var u, a, c, s, f, l, h, p, d, v, _ = 150, y = 480, g = 250, m = 0, x = 0, b = 0, w = 0, M = 0, T = null, N = tw, k = null, S = zb, A = .5, E = ow(r, A); return n.stream = function (t) { return d && v === t ? d : d = uw(N(s, E(S(v = t)))) }, n.clipAngle = function (t) { return arguments.length ? (N =+ t ? nw(T = t * zx, 6 * zx) : (T = null, tw), o()) : T * Cx }, n.clipExtent = function (t) { return arguments.length ? (S = null == t ? (k = l = h = p = null, zb) : xc(k =+ t[0][0], l =+ t[0][1], h =+ t[1][0], p =+ t[1][1]), o()) : null == k ? null : [ [ k, l ], [h, p] ] }, n.scale = function (t) { return arguments.length ? (_ =+ t, i()) : _ }, n.translate = function (t) { return arguments.length ? (y =+ t[0], g =+ t[1], i()) : [y, g] }, n.center = function (t) { return arguments.length ? (m = t[0] % 360 * zx, x = t[1] % 360 * zx, i()) : [ m * Cx, x * Cx ] }, n.rotate = function (t) { return arguments.length ? (b = t[0] % 360 * zx, w = t[1] % 360 * zx, M = t.length > 2 ? t[2] % 360 * zx : 0, i()) : [ b * Cx, w * Cx, M * Cx ] }, n.precision = function (t) { return arguments.length ? (E = ow(r, A = t * t), o()) : Bx(A) }, n.fitExtent = function (t, e) { return Kc(n, t, e) }, n.fitSize = function (t, e) { return ts(n, t, e) }, function () { return u = t.apply(this, arguments), n.invert = u.invert && e, i() } } function os(t) { var n = 0, e = kx / 3, r = is(t), i = r(n, e); return i.parallels = function (t) { return arguments.length ? r(n = t[0] * zx, e = t[1] * zx) : [ n * Cx, e * Cx ] }, i } function us(t) { function n(t, n) { return [ t * e, Ix(n) / e ] } var e = Rx(t); return n.invert = function (t, n) { return [ t / e, Aa(n * e) ] }, n } function as(t, n) { function e(t, n) { var e = Bx(o - 2 * i * Ix(n)) / i; return [ e * Ix(t *= i), u - e * Rx(t) ] } var r = Ix(t), i = (r + Ix(n)) / 2; if (Px(i) < Tx) return us(t); var o = 1 + r * (2 * i - r), u = Bx(o) / i; return e.invert = function (t, n) { var e = u - n; return [ Lx(t, Px(e)) / i * Yx(e), Aa((o - (t * t + e * e) * i * i) / (2 * i)) ] }, e } function cs(t) { var n = t.length; return { point: function (e, r) { for (var i = -1; ++i < n;) t[i].point(e, r) }, sphere: function () { for (var e = -1; ++e < n;) t[e].sphere() }, lineStart: function () { for (var e = -1; ++e < n;) t[e].lineStart() }, lineEnd: function () { for (var e = -1; ++e < n;) t[e].lineEnd() }, polygonStart: function () { for (var e = -1; ++e < n;) t[e].polygonStart() }, polygonEnd: function () { for (var e = -1; ++e < n;) t[e].polygonEnd() } } } function ss(t) { return function (n, e) { var r = Rx(n), i = Rx(e), o = t(r * i); return [ o * i * Ix(n), o * Ix(e) ] } } function fs(t) { return function (n, e) { var r = Bx(n * n + e * e), i = t(r), o = Ix(i), u = Rx(i); return [ Lx(n * o, r * u), Aa(r && e * o / r) ] } } function ls(t, n) { return [ t, Ox(jx((Sx + n) / 2)) ] } function hs(t) { var n, e = rs(t), r = e.scale, i = e.translate, o = e.clipExtent; return e.scale = function (t) { return arguments.length ? (r(t), n && e.clipExtent(null), e) : r() }, e.translate = function (t) { return arguments.length ? (i(t), n && e.clipExtent(null), e) : i() }, e.clipExtent = function (t) { if (!arguments.length) return n ? null : o(); if (n = null == t) { var u = kx * r(), a = i(); t = [ [ a[0] - u, a[1] - u ], [ a[0] + u, a[1] + u ] ] } return o(t), e }, e.clipExtent(null) } function ps(t) { return jx((Sx + t) / 2) } function ds(t, n) { function e(t, n) { o > 0 ? n < -Sx + Tx && (n = -Sx + Tx) : n > Sx - Tx && (n = Sx - Tx); var e = o / Fx(ps(n), i); return [ e * Ix(i * t), o - e * Rx(i * t) ] } var r = Rx(t), i = t === n ? Ix(t) : Ox(r / Rx(n)) / Ox(ps(n) / ps(t)), o = r * Fx(ps(t), i) / i; return i ? (e.invert = function (t, n) { var e = o - n, r = Yx(i) * Bx(t * t + e * e); return [ Lx(t, Px(e)) / i * Yx(e), 2 * qx(Fx(o / r, 1 / i)) - Sx ] }, e) : ls } function vs(t, n) { return [t, n] } function _s(t, n) { function e(t, n) { var e = o - n, r = i * t; return [ e * Ix(r), o - e * Rx(r) ] } var r = Rx(t), i = t === n ? Ix(t) : (r - Rx(n)) / (n - t), o = r / i + t; return Px(i) < Tx ? vs : (e.invert = function (t, n) { var e = o - n; return [ Lx(t, Px(e)) / i * Yx(e), o - Yx(i) * Bx(t * t + e * e) ] }, e) } function ys(t, n) { var e = Rx(n), r = Rx(t) * e; return [ e * Ix(t) / r, Ix(n) / r ] } function gs(t, n, e) { return 1 === t && 0 === n && 0 === e ? zb : Jc({ point: function (r, i) { this .stream .point(r * t + n, i * t + e) } }) } function ms(t, n) { return [ Rx(n) * Ix(t), Ix(n) ] } function xs(t, n) { var e = Rx(n), r = 1 + Rx(t) * e; return [ e * Ix(t) / r, Ix(n) / r ] } function bs(t, n) { return [ Ox(jx((Sx + n) / 2)), -t ] } var ws = "4.3.0", Ms = function (t, n) { return t < n ? -1 : t > n ? 1 : t >= n ? 0 : NaN }, Ts = function (t) { return 1 === t.length && (t = n(t)), { left: function (n, e, r, i) { for (null == r && (r = 0), null == i && (i = n.length); r < i;) { var o = r + i >>> 1; t(n[o], e) < 0 ? r = o + 1 : i = o } return r }, right: function (n, e, r, i) { for (null == r && (r = 0), null == i && (i = n.length); r < i;) { var o = r + i >>> 1; t(n[o], e) > 0 ? i = o : r = o + 1 } return r } } }, Ns = Ts(Ms), ks = Ns.right, Ss = Ns.left, As = function (t, n) { return n < t ? -1 : n > t ? 1 : n >= t ? 0 : NaN }, Es = function (t) { return null === t ? NaN :+ t }, Cs = function (t, n) { var e, r, i = t.length, o = 0, u = 0, a = -1, c = 0; if (null == n) for (; ++a < i;) isNaN(e = Es(t[a])) || (r = e - o, o += r / ++c, u += r * (e - o)); else for (; ++a < i;) isNaN(e = Es(n(t[a], a, t))) || (r = e - o, o += r / ++c, u += r * (e - o)); if (c > 1) return u / (c - 1) }, zs = function (t, n) { var e = Cs(t, n); return e ? Math.sqrt(e) : e }, Ps = function (t, n) { var e, r, i, o = -1, u = t.length; if (null == n) { for (; ++o < u;) if (null != (r = t[o]) && r >= r) { e = i = r; break } for (; ++o < u;) null != (r = t[o]) && (e > r && (e = r), i < r && (i = r)) } else { for (; ++o < u;) if (null != (r = n(t[o], o, t)) && r >= r) { e = i = r; break } for (; ++o < u;) null != (r = n(t[o], o, t)) && (e > r && (e = r), i < r && (i = r)) } return [e, i] }, qs = Array.prototype, Ls = qs.slice, Rs = qs.map, Us = function (t) { return function () { return t } }, Ds = function (t) { return t }, Os = function (t, n, e) { t =+ t, n =+ n, e = (i = arguments.length) < 2 ? (n = t, t = 0, 1) : i < 3 ? 1 :+ e; for (var r = -1, i = 0 | Math.max(0, Math.ceil((n - t) / e)), o = new Array(i); ++r < i;) o[r] = t + r * e; return o }, Fs = Math.sqrt(50), Is = Math.sqrt(10), Ys = Math.sqrt(2), Bs = function (t, n, r) { var i = e(t, n, r); return Os(Math.ceil(t / i) * i, Math.floor(n / i) * i + i / 2, i) }, js = function (t) { return Math.ceil(Math.log(t.length) / Math.LN2) + 1 }, Hs = function () { function t(t) { var i, o, u = t.length, a = new Array(u); for (i = 0; i < u; ++i) a[i] = n(t[i], i, t); var c = e(a), s = c[0], f = c[1], l = r(a, s, f); Array.isArray(l) || (l = Bs(s, f, l)); for (var h = l.length; l[0] <= s;) l.shift(), --h; for (; l[h - 1] >= f;) l.pop(), --h; var p, d = new Array(h + 1); for (i = 0; i <= h; ++i) p = d[i] = [], p.x0 = i > 0 ? l[i - 1] : s, p.x1 = i < h ? l[i] : f; for (i = 0; i < u; ++i) o = a[i], s <= o && o <= f && d[ks(l, o, 0, h)].push(t[i]); return d } var n = Ds, e = Ps, r = js; return t.value = function (e) { return arguments.length ? (n = "function" == typeof e ? e : Us(e), t) : n }, t.domain = function (n) { return arguments.length ? (e = "function" == typeof n ? n : Us([n[0], n[1]]), t) : e }, t.thresholds = function (n) { return arguments.length ? (r = "function" == typeof n ? n : Us(Array.isArray(n) ? Ls.call(n) : n), t) : r }, t }, Xs = function (t, n, e) { if (null == e && (e = Es), r = t.length) { if ((n =+ n) <= 0 || r < 2) return + e(t[0], 0, t); if (n >= 1) return + e(t[r - 1], r - 1, t); var r, i = (r - 1) * n, o = Math.floor(i), u =+ e(t[o], o, t), a =+ e(t[o + 1], o + 1, t); return u + (a - u) * (i - o) } }, Vs = function (t, n, e) { return t = Rs .call(t, Es) .sort(Ms), Math.ceil((e - n) / (2 * (Xs(t, .75) - Xs(t, .25)) * Math.pow(t.length, -1 / 3))) }, Ws = function (t, n, e) { return Math.ceil((e - n) / (3.5 * zs(t) * Math.pow(t.length, -1 / 3))) }, $s = function (t, n) { var e, r, i = -1, o = t.length; if (null == n) { for (; ++i < o;) if (null != (r = t[i]) && r >= r) { e = r; break } for (; ++i < o;) null != (r = t[i]) && r > e && (e = r) } else { for (; ++i < o;) if (null != (r = n(t[i], i, t)) && r >= r) { e = r; break } for (; ++i < o;) null != (r = n(t[i], i, t)) && r > e && (e = r) } return e }, Zs = function (t, n) { var e, r = 0, i = t.length, o = -1, u = i; if (null == n) for (; ++o < i;) isNaN(e = Es(t[o])) ? --u : r += e; else for (; ++o < i;) isNaN(e = Es(n(t[o], o, t))) ? --u : r += e; if (u) return r / u }, Gs = function (t, n) { var e, r = [], i = t.length, o = -1; if (null == n) for (; ++o < i;) isNaN(e = Es(t[o])) || r.push(e); else for (; ++o < i;) isNaN(e = Es(n(t[o], o, t))) || r.push(e); return Xs(r.sort(Ms), .5) }, Js = function (t) { for (var n, e, r, i = t.length, o = -1, u = 0; ++o < i;) u += t[o].length; for (e = new Array(u); --i >= 0;) for (r = t[i], n = r.length; --n >= 0;) e[--u] = r[n]; return e }, Qs = function (t, n) { var e, r, i = -1, o = t.length; if (null == n) { for (; ++i < o;) if (null != (r = t[i]) && r >= r) { e = r; break } for (; ++i < o;) null != (r = t[i]) && e > r && (e = r) } else { for (; ++i < o;) if (null != (r = n(t[i], i, t)) && r >= r) { e = r; break } for (; ++i < o;) null != (r = n(t[i], i, t)) && e > r && (e = r) } return e }, Ks = function (t) { for (var n = 0, e = t.length - 1, r = t[0], i = new Array(e < 0 ? 0 : e); n < e;) i[n] = [ r, r = t[++n] ]; return i }, tf = function (t, n) { for (var e = n.length, r = new Array(e); e--;) r[e] = t[n[e]]; return r }, nf = function (t, n) { if (e = t.length) { var e, r, i = 0, o = 0, u = t[o]; for (n || (n = Ms); ++i < e;) (n(r = t[i], u) < 0 || 0 !== n(u, u)) && (u = r, o = i); return 0 === n(u, u) ? o : void 0 } }, ef = function (t, n, e) { for (var r, i, o = (null == e ? t.length : e) - (n = null == n ? 0 :+ n); o;) i = Math.random() * o-- | 0, r = t[o + n], t[o + n] = t[i + n], t[i + n] = r; return t }, rf = function (t, n) { var e, r = 0, i = t.length, o = -1; if (null == n) for (; ++o < i;) (e =+ t[o]) && (r += e); else for (; ++o < i;) (e =+ n(t[o], o, t)) && (r += e); return r }, of = function (t) { if (!(o = t.length)) return []; for (var n = -1, e = Qs(t, r), i = new Array(e); ++n < e;) for (var o, u = -1, a = i[n] = new Array(o); ++u < o;) a[u] = t[u][n]; return i }, uf = function () { return of(arguments) }, af = "$"; i.prototype = o.prototype = { constructor: i, has: function (t) { return af + t in this }, get: function (t) { return this[af + t] }, set: function (t, n) { return this[af + t] = n, this }, remove: function (t) { var n = af + t; return n in this && delete this[n] }, clear: function () { for (var t in this) t[0] === af && delete this[t] }, keys: function () { var t = []; for (var n in this) n[0] === af && t.push(n.slice(1)); return t }, values: function () { var t = []; for (var n in this) n[0] === af && t.push(this[n]); return t }, entries: function () { var t = []; for (var n in this) n[0] === af && t.push({ key: n.slice(1), value: this[n] }); return t }, size: function () { var t = 0; for (var n in this) n[0] === af && ++t; return t }, empty: function () { for (var t in this) if (t[0] === af) return !1; return !0 }, each: function (t) { for (var n in this) n[0] === af && t(this[n], n.slice(1), this) } }; var cf = function () { function t(n, i, u, a) { if (i >= f.length) return null != r ? r(n) : null != e ? n.sort(e) : n; for (var c, s, l, h = -1, p = n.length, d = f[i++], v = o(), _ = u(); ++h < p;) (l = v.get(c = d(s = n[h]) + "")) ? l.push(s) : v.set(c, [s]); return v.each(function (n, e) { a(_, e, t(n, i, u, a)) }), _ } function n(t, e) { if (++e > f.length) return t; var i, o = l[e - 1]; return null != r && e >= f.length ? i = t.entries() : (i = [], t.each(function (t, r) { i.push({ key: r, values: n(t, e) }) })), null != o ? i.sort(function (t, n) { return o(t.key, n.key) }) : i } var e, r, i, f = [], l = []; return i = { object: function (n) { return t(n, 0, u, a) }, map: function (n) { return t(n, 0, c, s) }, entries: function (e) { return n(t(e, 0, c, s), 0) }, key: function (t) { return f.push(t), i }, sortKeys: function (t) { return l[f.length - 1] = t, i }, sortValues: function (t) { return e = t, i }, rollup: function (t) { return r = t, i } } }, sf = o.prototype; f.prototype = l.prototype = { constructor: f, has: sf.has, add: function (t) { return t += "", this[af + t] = t, this }, remove: sf.remove, clear: sf.clear, values: sf.keys, size: sf.size, empty: sf.empty, each: sf.each }; var ff = function (t) { var n = []; for (var e in t) n.push(e); return n }, lf = function (t) { var n = []; for (var e in t) n.push(t[e]); return n }, hf = function (t) { var n = []; for (var e in t) n.push({key: e, value: t[e]}); return n }, pf = function (t, n) { return t = null == t ? 0 :+ t, n = null == n ? 1 :+ n, 1 === arguments.length ? (n = t, t = 0) : n -= t, function () { return Math.random() * n + t } }, df = function (t, n) { var e, r; return t = null == t ? 0 :+ t, n = null == n ? 1 :+ n, function () { var i; if (null != e) i = e, e = null; else do e = 2 * Math.random() - 1, i = 2 * Math.random() - 1, r = e * e + i * i; while (!r || r > 1) ; return t + n * i * Math.sqrt(-2 * Math.log(r) / r) } }, vf = function () { var t = df.apply(this, arguments); return function () { return Math.exp(t()) } }, _f = function (t) { return function () { for (var n = 0, e = 0; e < t; ++e) n += Math.random(); return n } }, yf = function (t) { var n = _f(t); return function () { return n() / t } }, gf = function (t) { return function () { return -Math.log(1 - Math.random()) / t } }, mf = 3, xf = function t(n) { function e(t) { return Math.pow(t, n) } return n =+ n, e.exponent = t, e }(mf), bf = function t(n) { function e(t) { return 1 - Math.pow(1 - t, n) } return n =+ n, e.exponent = t, e }(mf), wf = function t(n) { function e(t) { return ((t *= 2) <= 1 ? Math.pow(t, n) : 2 - Math.pow(2 - t, n)) / 2 } return n =+ n, e.exponent = t, e }(mf), Mf = Math.PI, Tf = Mf / 2, Nf = 4 / 11, kf = 6 / 11, Sf = 8 / 11, Af = .75, Ef = 9 / 11, Cf = 10 / 11, zf = .9375, Pf = 21 / 22, qf = 63 / 64, Lf = 1 / Nf / Nf, Rf = 1.70158, Uf = function t(n) { function e(t) { return t * t * ((n + 1) * t - n) } return n =+ n, e.overshoot = t, e }(Rf), Df = function t(n) { function e(t) { return-- t * t * ((n + 1) * t + n) + 1 } return n =+ n, e.overshoot = t, e }(Rf), Of = function t(n) { function e(t) { return ((t *= 2) < 1 ? t * t * ((n + 1) * t - n) : (t -= 2) * t * ((n + 1) * t + n) + 2) / 2 } return n =+ n, e.overshoot = t, e }(Rf), Ff = 2 * Math.PI, If = 1, Yf = .3, Bf = function t(n, e) { function r(t) { return n * Math.pow(2, 10 * --t) * Math.sin((i - t) / e) } var i = Math.asin(1 / (n = Math.max(1, n))) * (e /= Ff); return r.amplitude = function (n) { return t(n, e * Ff) }, r.period = function (e) { return t(n, e) }, r }(If, Yf), jf = function t(n, e) { function r(t) { return 1 - n * Math.pow(2, -10 * (t =+ t)) * Math.sin((t + i) / e) } var i = Math.asin(1 / (n = Math.max(1, n))) * (e /= Ff); return r.amplitude = function (n) { return t(n, e * Ff) }, r.period = function (e) { return t(n, e) }, r }(If, Yf), Hf = function t(n, e) { function r(t) { return ((t = 2 * t - 1) < 0 ? n * Math.pow(2, 10 * t) * Math.sin((i - t) / e) : 2 - n * Math.pow(2, -10 * t) * Math.sin((i + t) / e)) / 2 } var i = Math.asin(1 / (n = Math.max(1, n))) * (e /= Ff); return r.amplitude = function (n) { return t(n, e * Ff) }, r.period = function (e) { return t(n, e) }, r }(If, Yf), Xf = function (t) { for (var n, e = -1, r = t.length, i = t[r - 1], o = 0; ++e < r;) n = i, i = t[e], o += n[1] * i[0] - n[0] * i[1]; return o / 2 }, Vf = function (t) { for (var n, e, r = -1, i = t.length, o = 0, u = 0, a = t[i - 1], c = 0; ++r < i;) n = a, a = t[r], c += e = n[0] * a[1] - a[0] * n[1], o += (n[0] + a[0]) * e, u += (n[1] + a[1]) * e; return c *= 3, [ o / c, u / c ] }, Wf = function (t, n, e) { return (n[0] - t[0]) * (e[1] - t[1]) - (n[1] - t[1]) * (e[0] - t[0]) }, $f = function (t) { if ((e = t.length) < 3) return null; var n, e, r = new Array(e), i = new Array(e); for (n = 0; n < e; ++n) r[n] = [ + t[n][0], + t[n][1], n ]; for (r.sort(z), n = 0; n < e; ++n) i[n] = [ r[n][0], -r[n][1] ]; var o = P(r), u = P(i), a = u[0] === o[0], c = u[u.length - 1] === o[o.length - 1], s = []; for (n = o.length - 1; n >= 0; --n) s.push(t[r[o[n]][2]]); for (n =+ a; n < u.length - c; ++n) s.push(t[r[u[n]][2]]); return s }, Zf = function (t, n) { for (var e, r, i = t.length, o = t[i - 1], u = n[0], a = n[1], c = o[0], s = o[1], f = !1, l = 0; l < i; ++l) o = t[l], e = o[0], r = o[1], r > a != s > a && u < (c - e) * (a - r) / (s - r) + e && (f = !f), c = e, s = r; return f }, Gf = function (t) { for (var n, e, r = -1, i = t.length, o = t[i - 1], u = o[0], a = o[1], c = 0; ++r < i;) n = u, e = a, o = t[r], u = o[0], a = o[1], n -= u, e -= a, c += Math.sqrt(n * n + e * e); return c }, Jf = Math.PI, Qf = 2 * Jf, Kf = 1e-6, tl = Qf - Kf; q.prototype = L.prototype = { constructor: q, moveTo: function (t, n) { this ._ .push("M", this._x0 = this._x1 =+ t, ",", this._y0 = this._y1 =+ n) }, closePath: function () { null !== this._x1 && (this._x1 = this._x0, this._y1 = this._y0, this._.push("Z")) }, lineTo: function (t, n) { this ._ .push("L", this._x1 =+ t, ",", this._y1 =+ n) }, quadraticCurveTo: function (t, n, e, r) { this ._ .push("Q", + t, ",", + n, ",", this._x1 =+ e, ",", this._y1 =+ r) }, bezierCurveTo: function (t, n, e, r, i, o) { this ._ .push("C", + t, ",", + n, ",", + e, ",", + r, ",", this._x1 =+ i, ",", this._y1 =+ o) }, arcTo: function (t, n, e, r, i) { t =+ t, n =+ n, e =+ e, r =+ r, i =+ i; var o = this._x1, u = this._y1, a = e - t, c = r - n, s = o - t, f = u - n, l = s * s + f * f; if (i < 0) throw new Error("negative radius: " + i); if (null === this._x1) this._.push("M", this._x1 = t, ",", this._y1 = n); else if (l > Kf) if (Math.abs(f * a - c * s) > Kf && i) { var h = e - o, p = r - u, d = a * a + c * c, v = h * h + p * p, _ = Math.sqrt(d), y = Math.sqrt(l), g = i * Math.tan((Jf - Math.acos((d + l - v) / (2 * _ * y))) / 2), m = g / y, x = g / _; Math.abs(m - 1) > Kf && this ._ .push("L", t + m * s, ",", n + m * f), this ._ .push("A", i, ",", i, ",0,0,", + (f * h > s * p), ",", this._x1 = t + x * a, ",", this._y1 = n + x * c) } else this ._ .push("L", this._x1 = t, ",", this._y1 = n); else ; } , arc: function (t, n, e, r, i, o) { t =+ t, n =+ n, e =+ e; var u = e * Math.cos(r), a = e * Math.sin(r), c = t + u, s = n + a, f = 1 ^ o, l = o ? r - i : i - r; if (e < 0) throw new Error("negative radius: " + e); null === this._x1 ? this ._ .push("M", c, ",", s) : (Math.abs(this._x1 - c) > Kf || Math.abs(this._y1 - s) > Kf) && this ._ .push("L", c, ",", s), e && (l > tl ? this._.push("A", e, ",", e, ",0,1,", f, ",", t - u, ",", n - a, "A", e, ",", e, ",0,1,", f, ",", this._x1 = c, ",", this._y1 = s) : (l < 0 && (l = l % Qf + Qf), this._.push("A", e, ",", e, ",0,", + (l >= Jf), ",", f, ",", this._x1 = t + e * Math.cos(i), ",", this._y1 = n + e * Math.sin(i)))) }, rect: function (t, n, e, r) { this ._ .push("M", this._x0 = this._x1 =+ t, ",", this._y0 = this._y1 =+ n, "h", + e, "v", + r, "h", -e, "Z") }, toString: function () { return this ._ .join("") } }; var nl = function (t) { var n =+ this ._x .call(null, t), e =+ this ._y .call(null, t); return R(this.cover(n, e), n, e, t) }, el = function (t, n) { if (isNaN(t =+ t) || isNaN(n =+ n)) return this; var e = this._x0, r = this._y0, i = this._x1, o = this._y1; if (isNaN(e)) i = (e = Math.floor(t)) + 1, o = (r = Math.floor(n)) + 1; else { if (!(e > t || t > i || r > n || n > o)) return this; var u, a, c = i - e, s = this._root; switch (a = (n < (r + o) / 2) << 1 | t < (e + i) / 2) { case 0: do u = new Array(4), u[a] = s, s = u; while (c *= 2, i = e + c, o = r + c, t > i || n > o); break; case 1: do u = new Array(4), u[a] = s, s = u; while (c *= 2, e = i - c, o = r + c, e > t || n > o); break; case 2: do u = new Array(4), u[a] = s, s = u; while (c *= 2, i = e + c, r = o - c, t > i || r > n); break; case 3: do u = new Array(4), u[a] = s, s = u; while (c *= 2, e = i - c, r = o - c, e > t || r > n) } this._root && this._root.length && (this._root = s) } return this._x0 = e, this._y0 = r, this._x1 = i, this._y1 = o, this }, rl = function () { var t = []; return this.visit(function (n) { if (!n.length) do t.push(n.data); while (n = n.next) } ), t }, il = function (t) { return arguments.length ? this.cover( + t[0][0], + t[0][1]).cover( + t[1][0], + t[1][1]) : isNaN(this._x0) ? void 0 : [ [ this._x0, this._y0 ], [this._x1, this._y1] ] }, ol = function (t, n, e, r, i) { this.node = t, this.x0 = n, this.y0 = e, this.x1 = r, this.y1 = i }, ul = function (t, n, e) { var r, i, o, u, a, c, s, f = this._x0, l = this._y0, h = this._x1, p = this._y1, d = [], v = this._root; for (v && d.push(new ol(v, f, l, h, p)), null == e ? e = 1 / 0 : (f = t - e, l = n - e, h = t + e, p = n + e, e *= e); c = d.pop();) if (!(!(v = c.node) || (i = c.x0) > h || (o = c.y0) > p || (u = c.x1) < f || (a = c.y1) < l)) if (v.length) { var _ = (i + u) / 2, y = (o + a) / 2; d.push(new ol(v[3], _, y, u, a), new ol(v[2], i, y, _, a), new ol(v[1], _, o, u, y), new ol(v[0], i, o, _, y)), (s = (n >= y) << 1 | t >= _) && (c = d[d.length - 1], d[d.length - 1] = d[d.length - 1 - s], d[d.length - 1 - s] = c) } else { var g = t - + this ._x .call(null, v.data), m = n - + this ._y .call(null, v.data), x = g * g + m * m; if (x < e) { var b = Math.sqrt(e = x); f = t - b, l = n - b, h = t + b, p = n + b, r = v.data } } return r }, al = function (t) { if (isNaN(o =+ this._x.call(null, t)) || isNaN(u =+ this._y.call(null, t))) return this; var n, e, r, i, o, u, a, c, s, f, l, h, p = this._root, d = this._x0, v = this._y0, _ = this._x1, y = this._y1; if (!p) return this; if (p.length) for (;;) { if ((s = o >= (a = (d + _) / 2)) ? d = a : _ = a, (f = u >= (c = (v + y) / 2)) ? v = c : y = c, n = p, !(p = p[l = f << 1 | s])) return this; if (!p.length) break; (n[l + 1 & 3] || n[l + 2 & 3] || n[l + 3 & 3]) && (e = n, h = l) } for (; p.data !== t;) if (r = p, !(p = p.next)) return this; return (i = p.next) && delete p.next, r ? (i ? r.next = i : delete r.next, this) : n ? (i ? n[l] = i : delete n[l], (p = n[0] || n[1] || n[2] || n[3]) && p === (n[3] || n[2] || n[1] || n[0]) && !p.length && (e ? e[h] = p : this._root = p), this) : (this._root = i, this) }, cl = function () { return this._root }, sl = function () { var t = 0; return this.visit(function (n) { if (!n.length) do ++t; while (n = n.next) } ), t }, fl = function (t) { var n, e, r, i, o, u, a = [], c = this._root; for (c && a.push(new ol(c, this._x0, this._y0, this._x1, this._y1)); n = a.pop();) if (!t(c = n.node, r = n.x0, i = n.y0, o = n.x1, u = n.y1) && c.length) { var s = (r + o) / 2, f = (i + u) / 2; (e = c[3]) && a.push(new ol(e, s, f, o, u)), (e = c[2]) && a.push(new ol(e, r, f, s, u)), (e = c[1]) && a.push(new ol(e, s, i, o, f)), (e = c[0]) && a.push(new ol(e, r, i, s, f)) } return this }, ll = function (t) { var n, e = [], r = []; for (this._root && e.push(new ol(this._root, this._x0, this._y0, this._x1, this._y1)); n = e.pop();) { var i = n.node; if (i.length) { var o, u = n.x0, a = n.y0, c = n.x1, s = n.y1, f = (u + c) / 2, l = (a + s) / 2; (o = i[0]) && e.push(new ol(o, u, a, f, l)), (o = i[1]) && e.push(new ol(o, f, a, c, l)), (o = i[2]) && e.push(new ol(o, u, l, f, s)), (o = i[3]) && e.push(new ol(o, f, l, c, s)) } r.push(n) } for (; n = r.pop();) t(n.node, n.x0, n.y0, n.x1, n.y1); return this }, hl = function (t) { return arguments.length ? (this._x = t, this) : this._x }, pl = function (t) { return arguments.length ? (this._y = t, this) : this._y }, dl = I.prototype = Y.prototype; dl.copy = function () { var t, n, e = new Y(this._x, this._y, this._x0, this._y0, this._x1, this._y1), r = this._root; if (!r) return e; if (!r.length) return e._root = B(r), e; for (t = [ { source: r, target: e._root = new Array(4) } ]; r = t.pop();) for (var i = 0; i < 4; ++i) (n = r.source[i]) && (n.length ? t.push({ source: n, target: r.target[i] = new Array(4) }) : r.target[i] = B(n)); return e }, dl.add = nl, dl.addAll = U, dl.cover = el, dl.data = rl, dl.extent = il, dl.find = ul, dl.remove = al, dl.removeAll = D, dl.root = cl, dl.size = sl, dl.visit = fl, dl.visitAfter = ll, dl.x = hl, dl.y = pl; var vl = [].slice, _l = {}; j.prototype = Z.prototype = { constructor: j, defer: function (t) { if ("function" != typeof t || this._call) throw new Error; if (null != this._error) return this; var n = vl.call(arguments, 1); return n.push(t), ++this._waiting, this ._tasks .push(n), H(this), this }, abort: function () { return null == this._error && W(this, new Error("abort")), this }, await: function (t) { if ("function" != typeof t || this._call) throw new Error; return this._call = function (n, e) { t.apply(null, [n].concat(e)) }, $(this), this }, awaitAll: function (t) { if ("function" != typeof t || this._call) throw new Error; return this._call = t, $(this), this } }; var yl = function (t) { return function () { return t } }, gl = 1e-12, ml = Math.PI, xl = ml / 2, bl = 2 * ml, wl = function () { function t() { var t, s, f =+ n.apply(this, arguments), l =+ e.apply(this, arguments), h = o.apply(this, arguments) - xl, p = u.apply(this, arguments) - xl, d = Math.abs(p - h), v = p > h; if (c || (c = t = L()), l < f && (s = l, l = f, f = s), l > gl) if (d > bl - gl) c.moveTo(l * Math.cos(h), l * Math.sin(h)), c.arc(0, 0, l, h, p, !v), f > gl && (c.moveTo(f * Math.cos(p), f * Math.sin(p)), c.arc(0, 0, f, p, h, v)); else { var _, y, g = h, m = p, x = h, b = p, w = d, M = d, T = a.apply(this, arguments) / 2, N = T > gl && (i ?+ i.apply(this, arguments) : Math.sqrt(f * f + l * l)), k = Math.min(Math.abs(l - f) / 2, + r.apply(this, arguments)), S = k, A = k; if (N > gl) { var E = nt(N / f * Math.sin(T)), C = nt(N / l * Math.sin(T)); (w -= 2 * E) > gl ? (E *= v ? 1 : -1, x += E, b -= E) : (w = 0, x = b = (h + p) / 2), (M -= 2 * C) > gl ? (C *= v ? 1 : -1, g += C, m -= C) : (M = 0, g = m = (h + p) / 2) } var z = l * Math.cos(g), P = l * Math.sin(g), q = f * Math.cos(b), R = f * Math.sin(b); if (k > gl) { var U = l * Math.cos(m), D = l * Math.sin(m), O = f * Math.cos(x), F = f * Math.sin(x); if (d < ml) { var I = w > gl ? et(z, P, O, F, U, D, q, R) : [ q, R ], Y = z - I[0], B = P - I[1], j = U - I[0], H = D - I[1], X = 1 / Math.sin(Math.acos((Y * j + B * H) / (Math.sqrt(Y * Y + B * B) * Math.sqrt(j * j + H * H))) / 2), V = Math.sqrt(I[0] * I[0] + I[1] * I[1]); S = Math.min(k, (f - V) / (X - 1)), A = Math.min(k, (l - V) / (X + 1)) } } M > gl ? A > gl ? (_ = rt(O, F, z, P, l, A, v), y = rt(U, D, q, R, l, A, v), c.moveTo(_.cx + _.x01, _.cy + _.y01), A < k ? c.arc(_.cx, _.cy, A, Math.atan2(_.y01, _.x01), Math.atan2(y.y01, y.x01), !v) : (c.arc(_.cx, _.cy, A, Math.atan2(_.y01, _.x01), Math.atan2(_.y11, _.x11), !v), c.arc(0, 0, l, Math.atan2(_.cy + _.y11, _.cx + _.x11), Math.atan2(y.cy + y.y11, y.cx + y.x11), !v), c.arc(y.cx, y.cy, A, Math.atan2(y.y11, y.x11), Math.atan2(y.y01, y.x01), !v))) : (c.moveTo(z, P), c.arc(0, 0, l, g, m, !v)) : c.moveTo(z, P), f > gl && w > gl ? S > gl ? (_ = rt(q, R, U, D, f, -S, v), y = rt(z, P, O, F, f, -S, v), c.lineTo(_.cx + _.x01, _.cy + _.y01), S < k ? c.arc(_.cx, _.cy, S, Math.atan2(_.y01, _.x01), Math.atan2(y.y01, y.x01), !v) : (c.arc(_.cx, _.cy, S, Math.atan2(_.y01, _.x01), Math.atan2(_.y11, _.x11), !v), c.arc(0, 0, f, Math.atan2(_.cy + _.y11, _.cx + _.x11), Math.atan2(y.cy + y.y11, y.cx + y.x11), v), c.arc(y.cx, y.cy, S, Math.atan2(y.y11, y.x11), Math.atan2(y.y01, y.x01), !v))) : c.arc(0, 0, f, b, x, v) : c.lineTo(q, R) } else c.moveTo(0, 0); if (c.closePath(), t) return c = null, t + "" || null } var n = G, e = J, r = yl(0), i = null, o = Q, u = K, a = tt, c = null; return t.centroid = function () { var t = (+ n.apply(this, arguments) + + e.apply(this, arguments)) / 2, r = (+ o.apply(this, arguments) + + u.apply(this, arguments)) / 2 - ml / 2; return [ Math.cos(r) * t, Math.sin(r) * t ] }, t.innerRadius = function (e) { return arguments.length ? (n = "function" == typeof e ? e : yl(+ e), t) : n }, t.outerRadius = function (n) { return arguments.length ? (e = "function" == typeof n ? n : yl(+ n), t) : e }, t.cornerRadius = function (n) { return arguments.length ? (r = "function" == typeof n ? n : yl(+ n), t) : r }, t.padRadius = function (n) { return arguments.length ? (i = null == n ? null : "function" == typeof n ? n : yl(+ n), t) : i }, t.startAngle = function (n) { return arguments.length ? (o = "function" == typeof n ? n : yl(+ n), t) : o }, t.endAngle = function (n) { return arguments.length ? (u = "function" == typeof n ? n : yl(+ n), t) : u }, t.padAngle = function (n) { return arguments.length ? (a = "function" == typeof n ? n : yl(+ n), t) : a }, t.context = function (n) { return arguments.length ? (c = null == n ? null : n, t) : c }, t }; it.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._point = 0 }, lineEnd: function () { (this._line || 0 !== this._line && 1 === this._point) && this ._context .closePath(), this._line = 1 - this._line }, point: function (t, n) { switch (t =+ t, n =+ n, this._point) { case 0: this._point = 1, this._line ? this ._context .lineTo(t, n) : this ._context .moveTo(t, n); break; case 1: this._point = 2; default: this ._context .lineTo(t, n) } } }; var Ml = function (t) { return new it(t) }, Tl = function () { function t(t) { var a, c, s, f = t.length, l = !1; for (null == i && (u = o(s = L())), a = 0; a <= f; ++a) !(a < f && r(c = t[a], a, t)) === l && ((l = !l) ? u.lineStart() : u.lineEnd()), l && u.point(+ n(c, a, t), + e(c, a, t)); if (s) return u = null, s + "" || null } var n = ot, e = ut, r = yl(!0), i = null, o = Ml, u = null; return t.x = function (e) { return arguments.length ? (n = "function" == typeof e ? e : yl(+ e), t) : n }, t.y = function (n) { return arguments.length ? (e = "function" == typeof n ? n : yl(+ n), t) : e }, t.defined = function (n) { return arguments.length ? (r = "function" == typeof n ? n : yl(!!n), t) : r }, t.curve = function (n) { return arguments.length ? (o = n, null != i && (u = o(i)), t) : o }, t.context = function (n) { return arguments.length ? (null == n ? i = u = null : u = o(i = n), t) : i }, t }, Nl = function () { function t(t) { var n, f, l, h, p, d = t.length, v = !1, _ = new Array(d), y = new Array(d); for (null == a && (s = c(p = L())), n = 0; n <= d; ++n) { if (!(n < d && u(h = t[n], n, t)) === v) if (v = !v) f = n, s.areaStart(), s.lineStart(); else { for (s.lineEnd(), s.lineStart(), l = n - 1; l >= f; --l) s.point(_[l], y[l]); s.lineEnd(), s.areaEnd() } v && (_[n] =+ e(h, n, t), y[n] =+ i(h, n, t), s.point(r ?+ r(h, n, t) : _[n], o ?+ o(h, n, t) : y[n])) } if (p) return s = null, p + "" || null } function n() { return Tl() .defined(u) .curve(c) .context(a) } var e = ot, r = null, i = yl(0), o = ut, u = yl(!0), a = null, c = Ml, s = null; return t.x = function (n) { return arguments.length ? (e = "function" == typeof n ? n : yl(+ n), r = null, t) : e }, t.x0 = function (n) { return arguments.length ? (e = "function" == typeof n ? n : yl(+ n), t) : e }, t.x1 = function (n) { return arguments.length ? (r = null == n ? null : "function" == typeof n ? n : yl(+ n), t) : r }, t.y = function (n) { return arguments.length ? (i = "function" == typeof n ? n : yl(+ n), o = null, t) : i }, t.y0 = function (n) { return arguments.length ? (i = "function" == typeof n ? n : yl(+ n), t) : i }, t.y1 = function (n) { return arguments.length ? (o = null == n ? null : "function" == typeof n ? n : yl(+ n), t) : o }, t.lineX0 = t.lineY0 = function () { return n() .x(e) .y(i) }, t.lineY1 = function () { return n() .x(e) .y(o) }, t.lineX1 = function () { return n() .x(r) .y(i) }, t.defined = function (n) { return arguments.length ? (u = "function" == typeof n ? n : yl(!!n), t) : u }, t.curve = function (n) { return arguments.length ? (c = n, null != a && (s = c(a)), t) : c }, t.context = function (n) { return arguments.length ? (null == n ? a = s = null : s = c(a = n), t) : a }, t }, kl = function (t, n) { return n < t ? -1 : n > t ? 1 : n >= t ? 0 : NaN }, Sl = function (t) { return t }, Al = function () { function t(t) { var a, c, s, f, l, h = t.length, p = 0, d = new Array(h), v = new Array(h), _ =+ i.apply(this, arguments), y = Math.min(bl, Math.max(-bl, o.apply(this, arguments) - _)), g = Math.min(Math.abs(y) / h, u.apply(this, arguments)), m = g * (y < 0 ? -1 : 1); for (a = 0; a < h; ++a) (l = v[d[a] = a] =+ n(t[a], a, t)) > 0 && (p += l); for (null != e ? d.sort(function (t, n) { return e(v[t], v[n]) }) : null != r && d.sort(function (n, e) { return r(t[n], t[e]) }), a = 0, s = p ? (y - h * m) / p : 0; a < h; ++a, _ = f) c = d[a], l = v[c], f = _ + (l > 0 ? l * s : 0) + m, v[c] = { data: t[c], index: a, value: l, startAngle: _, endAngle: f, padAngle: g }; return v } var n = Sl, e = kl, r = null, i = yl(0), o = yl(bl), u = yl(0); return t.value = function (e) { return arguments.length ? (n = "function" == typeof e ? e : yl(+ e), t) : n }, t.sortValues = function (n) { return arguments.length ? (e = n, r = null, t) : e }, t.sort = function (n) { return arguments.length ? (r = n, e = null, t) : r }, t.startAngle = function (n) { return arguments.length ? (i = "function" == typeof n ? n : yl(+ n), t) : i }, t.endAngle = function (n) { return arguments.length ? (o = "function" == typeof n ? n : yl(+ n), t) : o }, t.padAngle = function (n) { return arguments.length ? (u = "function" == typeof n ? n : yl(+ n), t) : u }, t }, El = ct(Ml); at.prototype = { areaStart: function () { this ._curve .areaStart() }, areaEnd: function () { this ._curve .areaEnd() }, lineStart: function () { this ._curve .lineStart() }, lineEnd: function () { this ._curve .lineEnd() }, point: function (t, n) { this ._curve .point(n * Math.sin(t), n * -Math.cos(t)) } }; var Cl = function () { return st(Tl().curve(El)) }, zl = function () { var t = Nl().curve(El), n = t.curve, e = t.lineX0, r = t.lineX1, i = t.lineY0, o = t.lineY1; return t.angle = t.x, delete t.x, t.startAngle = t.x0, delete t.x0, t.endAngle = t.x1, delete t.x1, t.radius = t.y, delete t.y, t.innerRadius = t.y0, delete t.y0, t.outerRadius = t.y1, delete t.y1, t.lineStartAngle = function () { return st(e()) }, delete t.lineX0, t.lineEndAngle = function () { return st(r()) }, delete t.lineX1, t.lineInnerRadius = function () { return st(i()) }, delete t.lineY0, t.lineOuterRadius = function () { return st(o()) }, delete t.lineY1, t.curve = function (t) { return arguments.length ? n(ct(t)) : n()._curve }, t }, Pl = { draw: function (t, n) { var e = Math.sqrt(n / ml); t.moveTo(e, 0), t.arc(0, 0, e, 0, bl) } }, ql = { draw: function (t, n) { var e = Math.sqrt(n / 5) / 2; t.moveTo(-3 * e, -e), t.lineTo(-e, -e), t.lineTo(-e, -3 * e), t.lineTo(e, -3 * e), t.lineTo(e, -e), t.lineTo(3 * e, -e), t.lineTo(3 * e, e), t.lineTo(e, e), t.lineTo(e, 3 * e), t.lineTo(-e, 3 * e), t.lineTo(-e, e), t.lineTo(-3 * e, e), t.closePath() } }, Ll = Math.sqrt(1 / 3), Rl = 2 * Ll, Ul = { draw: function (t, n) { var e = Math.sqrt(n / Rl), r = e * Ll; t.moveTo(0, -e), t.lineTo(r, 0), t.lineTo(0, e), t.lineTo(-r, 0), t.closePath() } }, Dl = .8908130915292852, Ol = Math.sin(ml / 10) / Math.sin(7 * ml / 10), Fl = Math.sin(bl / 10) * Ol, Il = -Math.cos(bl / 10) * Ol, Yl = { draw: function (t, n) { var e = Math.sqrt(n * Dl), r = Fl * e, i = Il * e; t.moveTo(0, -e), t.lineTo(r, i); for (var o = 1; o < 5; ++o) { var u = bl * o / 5, a = Math.cos(u), c = Math.sin(u); t.lineTo(c * e, -a * e), t.lineTo(a * r - c * i, c * r + a * i) } t.closePath() } }, Bl = { draw: function (t, n) { var e = Math.sqrt(n), r = -e / 2; t.rect(r, r, e, e) } }, jl = Math.sqrt(3), Hl = { draw: function (t, n) { var e = -Math.sqrt(n / (3 * jl)); t.moveTo(0, 2 * e), t.lineTo(-jl * e, -e), t.lineTo(jl * e, -e), t.closePath() } }, Xl = -.5, Vl = Math.sqrt(3) / 2, Wl = 1 / Math.sqrt(12), $l = 3 * (Wl / 2 + 1), Zl = { draw: function (t, n) { var e = Math.sqrt(n / $l), r = e / 2, i = e * Wl, o = r, u = e * Wl + e, a = -o, c = u; t.moveTo(r, i), t.lineTo(o, u), t.lineTo(a, c), t.lineTo(Xl * r - Vl * i, Vl * r + Xl * i), t.lineTo(Xl * o - Vl * u, Vl * o + Xl * u), t.lineTo(Xl * a - Vl * c, Vl * a + Xl * c), t.lineTo(Xl * r + Vl * i, Xl * i - Vl * r), t.lineTo(Xl * o + Vl * u, Xl * u - Vl * o), t.lineTo(Xl * a + Vl * c, Xl * c - Vl * a), t.closePath() } }, Gl = [ Pl, ql, Ul, Bl, Yl, Hl, Zl ], Jl = function () { function t() { var t; if (r || (r = t = L()), n.apply(this, arguments).draw(r, + e.apply(this, arguments)), t) return r = null, t + "" || null } var n = yl(Pl), e = yl(64), r = null; return t.type = function (e) { return arguments.length ? (n = "function" == typeof e ? e : yl(e), t) : n }, t.size = function (n) { return arguments.length ? (e = "function" == typeof n ? n : yl(+ n), t) : e }, t.context = function (n) { return arguments.length ? (r = null == n ? null : n, t) : r }, t }, Ql = function () {}; lt.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x0 = this._x1 = this._y0 = this._y1 = NaN, this._point = 0 }, lineEnd: function () { switch (this._point) { case 3: ft(this, this._x1, this._y1); case 2: this ._context .lineTo(this._x1, this._y1) }(this._line || 0 !== this._line && 1 === this._point) && this ._context .closePath(), this._line = 1 - this._line }, point: function (t, n) { switch (t =+ t, n =+ n, this._point) { case 0: this._point = 1, this._line ? this ._context .lineTo(t, n) : this ._context .moveTo(t, n); break; case 1: this._point = 2; break; case 2: this._point = 3, this ._context .lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); default: ft(this, t, n) } this._x0 = this._x1, this._x1 = t, this._y0 = this._y1, this._y1 = n } }; var Kl = function (t) { return new lt(t) }; ht.prototype = { areaStart: Ql, areaEnd: Ql, lineStart: function () { this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN, this._point = 0 }, lineEnd: function () { switch (this._point) { case 1: this ._context .moveTo(this._x2, this._y2), this ._context .closePath(); break; case 2: this ._context .moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3), this ._context .lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3), this ._context .closePath(); break; case 3: this.point(this._x2, this._y2), this.point(this._x3, this._y3), this.point(this._x4, this._y4) } }, point: function (t, n) { switch (t =+ t, n =+ n, this._point) { case 0: this._point = 1, this._x2 = t, this._y2 = n; break; case 1: this._point = 2, this._x3 = t, this._y3 = n; break; case 2: this._point = 3, this._x4 = t, this._y4 = n, this ._context .moveTo((this._x0 + 4 * this._x1 + t) / 6, (this._y0 + 4 * this._y1 + n) / 6); break; default: ft(this, t, n) } this._x0 = this._x1, this._x1 = t, this._y0 = this._y1, this._y1 = n } }; var th = function (t) { return new ht(t) }; pt.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x0 = this._x1 = this._y0 = this._y1 = NaN, this._point = 0 }, lineEnd: function () { (this._line || 0 !== this._line && 3 === this._point) && this ._context .closePath(), this._line = 1 - this._line }, point: function (t, n) { switch (t =+ t, n =+ n, this._point) { case 0: this._point = 1; break; case 1: this._point = 2; break; case 2: this._point = 3; var e = (this._x0 + 4 * this._x1 + t) / 6, r = (this._y0 + 4 * this._y1 + n) / 6; this._line ? this ._context .lineTo(e, r) : this ._context .moveTo(e, r); break; case 3: this._point = 4; default: ft(this, t, n) } this._x0 = this._x1, this._x1 = t, this._y0 = this._y1, this._y1 = n } }; var nh = function (t) { return new pt(t) }; dt.prototype = { lineStart: function () { this._x = [], this._y = [], this ._basis .lineStart() }, lineEnd: function () { var t = this._x, n = this._y, e = t.length - 1; if (e > 0) for (var r, i = t[0], o = n[0], u = t[e] - i, a = n[e] - o, c = -1; ++c <= e;) r = c / e, this._basis.point(this._beta * t[c] + (1 - this._beta) * (i + r * u), this._beta * n[c] + (1 - this._beta) * (o + r * a)); this._x = this._y = null, this ._basis .lineEnd() }, point: function (t, n) { this ._x .push(+ t), this ._y .push(+ n) } }; var eh = function t(n) { function e(t) { return 1 === n ? new lt(t) : new dt(t, n) } return e.beta = function (n) { return t(+ n) }, e }(.85); _t.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._point = 0 }, lineEnd: function () { switch (this._point) { case 2: this ._context .lineTo(this._x2, this._y2); break; case 3: vt(this, this._x1, this._y1) }(this._line || 0 !== this._line && 1 === this._point) && this ._context .closePath(), this._line = 1 - this._line }, point: function (t, n) { switch (t =+ t, n =+ n, this._point) { case 0: this._point = 1, this._line ? this ._context .lineTo(t, n) : this ._context .moveTo(t, n); break; case 1: this._point = 2, this._x1 = t, this._y1 = n; break; case 2: this._point = 3; default: vt(this, t, n) } this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = n } }; var rh = function t(n) { function e(t) { return new _t(t, n) } return e.tension = function (n) { return t(+ n) }, e }(0); yt.prototype = { areaStart: Ql, areaEnd: Ql, lineStart: function () { this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN, this._point = 0 }, lineEnd: function () { switch (this._point) { case 1: this ._context .moveTo(this._x3, this._y3), this ._context .closePath(); break; case 2: this ._context .lineTo(this._x3, this._y3), this ._context .closePath(); break; case 3: this.point(this._x3, this._y3), this.point(this._x4, this._y4), this.point(this._x5, this._y5) } }, point: function (t, n) { switch (t =+ t, n =+ n, this._point) { case 0: this._point = 1, this._x3 = t, this._y3 = n; break; case 1: this._point = 2, this ._context .moveTo(this._x4 = t, this._y4 = n); break; case 2: this._point = 3, this._x5 = t, this._y5 = n; break; default: vt(this, t, n) } this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = n } }; var ih = function t(n) { function e(t) { return new yt(t, n) } return e.tension = function (n) { return t(+ n) }, e }(0); gt.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._point = 0 }, lineEnd: function () { (this._line || 0 !== this._line && 3 === this._point) && this ._context .closePath(), this._line = 1 - this._line }, point: function (t, n) { switch (t =+ t, n =+ n, this._point) { case 0: this._point = 1; break; case 1: this._point = 2; break; case 2: this._point = 3, this._line ? this ._context .lineTo(this._x2, this._y2) : this ._context .moveTo(this._x2, this._y2); break; case 3: this._point = 4; default: vt(this, t, n) } this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = n } }; var oh = function t(n) { function e(t) { return new gt(t, n) } return e.tension = function (n) { return t(+ n) }, e }(0); xt.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0 }, lineEnd: function () { switch (this._point) { case 2: this ._context .lineTo(this._x2, this._y2); break; case 3: this.point(this._x2, this._y2) }(this._line || 0 !== this._line && 1 === this._point) && this ._context .closePath(), this._line = 1 - this._line }, point: function (t, n) { if (t =+ t, n =+ n, this._point) { var e = this._x2 - t, r = this._y2 - n; this._l23_a = Math.sqrt(this._l23_2a = Math.pow(e * e + r * r, this._alpha)) } switch (this._point) { case 0: this._point = 1, this._line ? this ._context .lineTo(t, n) : this ._context .moveTo(t, n); break; case 1: this._point = 2; break; case 2: this._point = 3; default: mt(this, t, n) } this._l01_a = this._l12_a, this._l12_a = this._l23_a, this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a, this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = n } }; var uh = function t(n) { function e(t) { return n ? new xt(t, n) : new _t(t, 0) } return e.alpha = function (n) { return t(+ n) }, e }(.5); bt.prototype = { areaStart: Ql, areaEnd: Ql, lineStart: function () { this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN, this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0 }, lineEnd: function () { switch (this._point) { case 1: this ._context .moveTo(this._x3, this._y3), this ._context .closePath(); break; case 2: this ._context .lineTo(this._x3, this._y3), this ._context .closePath(); break; case 3: this.point(this._x3, this._y3), this.point(this._x4, this._y4), this.point(this._x5, this._y5) } }, point: function (t, n) { if (t =+ t, n =+ n, this._point) { var e = this._x2 - t, r = this._y2 - n; this._l23_a = Math.sqrt(this._l23_2a = Math.pow(e * e + r * r, this._alpha)) } switch (this._point) { case 0: this._point = 1, this._x3 = t, this._y3 = n; break; case 1: this._point = 2, this ._context .moveTo(this._x4 = t, this._y4 = n); break; case 2: this._point = 3, this._x5 = t, this._y5 = n; break; default: mt(this, t, n) } this._l01_a = this._l12_a, this._l12_a = this._l23_a, this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a, this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = n } }; var ah = function t(n) { function e(t) { return n ? new bt(t, n) : new yt(t, 0) } return e.alpha = function (n) { return t(+ n) }, e }(.5); wt.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0 }, lineEnd: function () { (this._line || 0 !== this._line && 3 === this._point) && this ._context .closePath(), this._line = 1 - this._line }, point: function (t, n) { if (t =+ t, n =+ n, this._point) { var e = this._x2 - t, r = this._y2 - n; this._l23_a = Math.sqrt(this._l23_2a = Math.pow(e * e + r * r, this._alpha)) } switch (this._point) { case 0: this._point = 1; break; case 1: this._point = 2; break; case 2: this._point = 3, this._line ? this ._context .lineTo(this._x2, this._y2) : this ._context .moveTo(this._x2, this._y2); break; case 3: this._point = 4; default: mt(this, t, n) } this._l01_a = this._l12_a, this._l12_a = this._l23_a, this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a, this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = n } }; var ch = function t(n) { function e(t) { return n ? new wt(t, n) : new gt(t, 0) } return e.alpha = function (n) { return t(+ n) }, e }(.5); Mt.prototype = { areaStart: Ql, areaEnd: Ql, lineStart: function () { this._point = 0 }, lineEnd: function () { this._point && this ._context .closePath() }, point: function (t, n) { t =+ t, n =+ n, this._point ? this ._context .lineTo(t, n) : (this._point = 1, this._context.moveTo(t, n)) } }; var sh = function (t) { return new Mt(t) }; At.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x0 = this._x1 = this._y0 = this._y1 = this._t0 = NaN, this._point = 0 }, lineEnd: function () { switch (this._point) { case 2: this ._context .lineTo(this._x1, this._y1); break; case 3: St(this, this._t0, kt(this, this._t0)) }(this._line || 0 !== this._line && 1 === this._point) && this ._context .closePath(), this._line = 1 - this._line }, point: function (t, n) { var e = NaN; if (t =+ t, n =+ n, t !== this._x1 || n !== this._y1) { switch (this._point) { case 0: this._point = 1, this._line ? this ._context .lineTo(t, n) : this ._context .moveTo(t, n); break; case 1: this._point = 2; break; case 2: this._point = 3, St(this, kt(this, e = Nt(this, t, n)), e); break; default: St(this, this._t0, e = Nt(this, t, n)) } this._x0 = this._x1, this._x1 = t, this._y0 = this._y1, this._y1 = n, this._t0 = e } } }, (Et.prototype = Object.create(At.prototype)).point = function (t, n) { At .prototype .point .call(this, n, t) }, Ct.prototype = { moveTo: function (t, n) { this ._context .moveTo(n, t) }, closePath: function () { this ._context .closePath() }, lineTo: function (t, n) { this ._context .lineTo(n, t) }, bezierCurveTo: function (t, n, e, r, i, o) { this ._context .bezierCurveTo(n, t, r, e, o, i) } }, qt.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x = [], this._y = [] }, lineEnd: function () { var t = this._x, n = this._y, e = t.length; if (e) if (this._line ? this._context.lineTo(t[0], n[0]) : this._context.moveTo(t[0], n[0]), 2 === e) this._context.lineTo(t[1], n[1]); else for (var r = Lt(t), i = Lt(n), o = 0, u = 1; u < e; ++o, ++u) this._context.bezierCurveTo(r[0][o], i[0][o], r[1][o], i[1][o], t[u], n[u]); (this._line || 0 !== this._line && 1 === e) && this ._context .closePath(), this._line = 1 - this._line, this._x = this._y = null }, point: function (t, n) { this ._x .push(+ t), this ._y .push(+ n) } }; var fh = function (t) { return new qt(t) }; Rt.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x = this._y = NaN, this._point = 0 }, lineEnd: function () { 0 < this._t && this._t < 1 && 2 === this._point && this ._context .lineTo(this._x, this._y), (this._line || 0 !== this._line && 1 === this._point) && this ._context .closePath(), this._line >= 0 && (this._t = 1 - this._t, this._line = 1 - this._line) }, point: function (t, n) { switch (t =+ t, n =+ n, this._point) { case 0: this._point = 1, this._line ? this ._context .lineTo(t, n) : this ._context .moveTo(t, n); break; case 1: this._point = 2; default: if (this._t <= 0) this._context.lineTo(this._x, n), this._context.lineTo(t, n); else { var e = this._x * (1 - this._t) + t * this._t; this ._context .lineTo(e, this._y), this ._context .lineTo(e, n) } } this._x = t, this._y = n } }; var lh = function (t) { return new Rt(t, .5) }, hh = Array.prototype.slice, ph = function (t, n) { if ((r = t.length) > 1) for (var e, r, i = 1, o = t[n[0]], u = o.length; i < r; ++i) { e = o, o = t[n[i]]; for (var a = 0; a < u; ++a) o[a][1] += o[a][0] = isNaN(e[a][1]) ? e[a][0] : e[a][1] } }, dh = function (t) { for (var n = t.length, e = new Array(n); --n >= 0;) e[n] = n; return e }, vh = function () { function t(t) { var o, u, a = n.apply(this, arguments), c = t.length, s = a.length, f = new Array(s); for (o = 0; o < s; ++o) { for (var l, h = a[o], p = f[o] = new Array(c), d = 0; d < c; ++d) p[d] = l = [ 0, + i(t[d], h, d, t) ], l.data = t[d]; p.key = h } for (o = 0, u = e(f); o < s; ++o) f[u[o]].index = o; return r(f, u), f } var n = yl([]), e = dh, r = ph, i = Ot; return t.keys = function (e) { return arguments.length ? (n = "function" == typeof e ? e : yl(hh.call(e)), t) : n }, t.value = function (n) { return arguments.length ? (i = "function" == typeof n ? n : yl(+ n), t) : i }, t.order = function (n) { return arguments.length ? (e = null == n ? dh : "function" == typeof n ? n : yl(hh.call(n)), t) : e }, t.offset = function (n) { return arguments.length ? (r = null == n ? ph : n, t) : r }, t }, _h = function (t, n) { if ((r = t.length) > 0) { for (var e, r, i, o = 0, u = t[0].length; o < u; ++o) { for (i = e = 0; e < r; ++e) i += t[e][o][1] || 0; if (i) for (e = 0; e < r; ++e) t[e][o][1] /= i } ph(t, n) } }, yh = function (t, n) { if ((e = t.length) > 0) { for (var e, r = 0, i = t[n[0]], o = i.length; r < o; ++r) { for (var u = 0, a = 0; u < e; ++u) a += t[u][r][1] || 0; i[r][1] += i[r][0] = -a / 2 } ph(t, n) } }, gh = function (t, n) { if ((i = t.length) > 0 && (r = (e = t[n[0]]).length) > 0) { for (var e, r, i, o = 0, u = 1; u < r; ++u) { for (var a = 0, c = 0, s = 0; a < i; ++a) { for (var f = t[n[a]], l = f[u][1] || 0, h = f[u - 1][1] || 0, p = (l - h) / 2, d = 0; d < a; ++d) { var v = t[n[d]], _ = v[u][1] || 0, y = v[u - 1][1] || 0; p += _ - y } c += l, s += p * l } e[u - 1][1] += e[u - 1][0] = o, c && (o -= s / c) } e[u - 1][1] += e[u - 1][0] = o, ph(t, n) } }, mh = function (t) { var n = t.map(Ft); return dh(t).sort(function (t, e) { return n[t] - n[e] }) }, xh = function (t) { return mh(t).reverse() }, bh = function (t) { var n, e, r = t.length, i = t.map(Ft), o = dh(t).sort(function (t, n) { return i[n] - i[t] }), u = 0, a = 0, c = [], s = []; for (n = 0; n < r; ++n) e = o[n], u < a ? (u += i[e], c.push(e)) : (a += i[e], s.push(e)); return s .reverse() .concat(c) }, wh = function (t) { return dh(t).reverse() }, Mh = function (t, n, e) { t.prototype = n.prototype = e, e.constructor = t }, Th = .7, Nh = 1 / Th, kh = /^#([0-9a-f]{3})$/, Sh = /^#([0-9a-f]{6})$/, Ah = /^rgb\(\s*([-+]?\d+)\s*,\s*([-+]?\d+)\s*,\s*([-+]?\d+)\s*\)$/, Eh = /^rgb\(\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*\)$/, Ch = /^rgba\(\s*([-+]?\d+)\s*,\s*([-+]?\d+)\s*,\s*([-+]?\d+)\s*,\s*([-+]?\d+(?:\.\d+)?)\s*\)$/, zh = /^rgba\(\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?\d+(?:\.\d+)?)\s*\)$/, Ph = /^hsl\(\s*([-+]?\d+(?:\.\d+)?)\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*\)$/, qh = /^hsla\(\s*([-+]?\d+(?:\.\d+)?)\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?\d+(?:\.\d+)?)\s*\)$/, Lh = { aliceblue: 15792383, antiquewhite: 16444375, aqua: 65535, aquamarine: 8388564, azure: 15794175, beige: 16119260, bisque: 16770244, black: 0, blanchedalmond: 16772045, blue: 255, blueviolet: 9055202, brown: 10824234, burlywood: 14596231, cadetblue: 6266528, chartreuse: 8388352, chocolate: 13789470, coral: 16744272, cornflowerblue: 6591981, cornsilk: 16775388, crimson: 14423100, cyan: 65535, darkblue: 139, darkcyan: 35723, darkgoldenrod: 12092939, darkgray: 11119017, darkgreen: 25600, darkgrey: 11119017, darkkhaki: 12433259, darkmagenta: 9109643, darkolivegreen: 5597999, darkorange: 16747520, darkorchid: 10040012, darkred: 9109504, darksalmon: 15308410, darkseagreen: 9419919, darkslateblue: 4734347, darkslategray: 3100495, darkslategrey: 3100495, darkturquoise: 52945, darkviolet: 9699539, deeppink: 16716947, deepskyblue: 49151, dimgray: 6908265, dimgrey: 6908265, dodgerblue: 2003199, firebrick: 11674146, floralwhite: 16775920, forestgreen: 2263842, fuchsia: 16711935, gainsboro: 14474460, ghostwhite: 16316671, gold: 16766720, goldenrod: 14329120, gray: 8421504, green: 32768, greenyellow: 11403055, grey: 8421504, honeydew: 15794160, hotpink: 16738740, indianred: 13458524, indigo: 4915330, ivory: 16777200, khaki: 15787660, lavender: 15132410, lavenderblush: 16773365, lawngreen: 8190976, lemonchiffon: 16775885, lightblue: 11393254, lightcoral: 15761536, lightcyan: 14745599, lightgoldenrodyellow: 16448210, lightgray: 13882323, lightgreen: 9498256, lightgrey: 13882323, lightpink: 16758465, lightsalmon: 16752762, lightseagreen: 2142890, lightskyblue: 8900346, lightslategray: 7833753, lightslategrey: 7833753, lightsteelblue: 11584734, lightyellow: 16777184, lime: 65280, limegreen: 3329330, linen: 16445670, magenta: 16711935, maroon: 8388608, mediumaquamarine: 6737322, mediumblue: 205, mediumorchid: 12211667, mediumpurple: 9662683, mediumseagreen: 3978097, mediumslateblue: 8087790, mediumspringgreen: 64154, mediumturquoise: 4772300, mediumvioletred: 13047173, midnightblue: 1644912, mintcream: 16121850, mistyrose: 16770273, moccasin: 16770229, navajowhite: 16768685, navy: 128, oldlace: 16643558, olive: 8421376, olivedrab: 7048739, orange: 16753920, orangered: 16729344, orchid: 14315734, palegoldenrod: 15657130, palegreen: 10025880, paleturquoise: 11529966, palevioletred: 14381203, papayawhip: 16773077, peachpuff: 16767673, peru: 13468991, pink: 16761035, plum: 14524637, powderblue: 11591910, purple: 8388736, rebeccapurple: 6697881, red: 16711680, rosybrown: 12357519, royalblue: 4286945, saddlebrown: 9127187, salmon: 16416882, sandybrown: 16032864, seagreen: 3050327, seashell: 16774638, sienna: 10506797, silver: 12632256, skyblue: 8900331, slateblue: 6970061, slategray: 7372944, slategrey: 7372944, snow: 16775930, springgreen: 65407, steelblue: 4620980, tan: 13808780, teal: 32896, thistle: 14204888, tomato: 16737095, turquoise: 4251856, violet: 15631086, wheat: 16113331, white: 16777215, whitesmoke: 16119285, yellow: 16776960, yellowgreen: 10145074 }; Mh(Yt, Bt, { displayable: function () { return this .rgb() .displayable() }, toString: function () { return this.rgb() + "" } }), Mh(Wt, Vt, It(Yt, { brighter: function (t) { return t = null == t ? Nh : Math.pow(Nh, t), new Wt(this.r * t, this.g * t, this.b * t, this.opacity) }, darker: function (t) { return t = null == t ? Th : Math.pow(Th, t), new Wt(this.r * t, this.g * t, this.b * t, this.opacity) }, rgb: function () { return this }, displayable: function () { return 0 <= this.r && this.r <= 255 && 0 <= this.g && this.g <= 255 && 0 <= this.b && this.b <= 255 && 0 <= this.opacity && this.opacity <= 1 }, toString: function () { var t = this.opacity; return t = isNaN(t) ? 1 : Math.max(0, Math.min(1, t)), (1 === t ? "rgb(" : "rgba(") + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", " + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", " + Math.max(0, Math.min(255, Math.round(this.b) || 0)) + (1 === t ? ")" : ", " + t + ")") } })), Mh(Jt, Gt, It(Yt, { brighter: function (t) { return t = null == t ? Nh : Math.pow(Nh, t), new Jt(this.h, this.s, this.l * t, this.opacity) }, darker: function (t) { return t = null == t ? Th : Math.pow(Th, t), new Jt(this.h, this.s, this.l * t, this.opacity) }, rgb: function () { var t = this.h % 360 + 360 * (this.h < 0), n = isNaN(t) || isNaN(this.s) ? 0 : this.s, e = this.l, r = e + (e < .5 ? e : 1 - e) * n, i = 2 * e - r; return new Wt(Qt(t >= 240 ? t - 240 : t + 120, i, r), Qt(t, i, r), Qt(t < 120 ? t + 240 : t - 120, i, r), this.opacity) }, displayable: function () { return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1 } })); var Rh = Math.PI / 180, Uh = 180 / Math.PI, Dh = 18, Oh = .95047, Fh = 1, Ih = 1.08883, Yh = 4 / 29, Bh = 6 / 29, jh = 3 * Bh * Bh, Hh = Bh * Bh * Bh; Mh(nn, tn, It(Yt, { brighter: function (t) { return new nn(this.l + Dh * (null == t ? 1 : t), this.a, this.b, this.opacity) }, darker: function (t) { return new nn(this.l - Dh * (null == t ? 1 : t), this.a, this.b, this.opacity) }, rgb: function () { var t = (this.l + 16) / 116, n = isNaN(this.a) ? t : t + this.a / 500, e = isNaN(this.b) ? t : t - this.b / 200; return t = Fh * rn(t), n = Oh * rn(n), e = Ih * rn(e), new Wt(on(3.2404542 * n - 1.5371385 * t - .4985314 * e), on(-.969266 * n + 1.8760108 * t + .041556 * e), on(.0556434 * n - .2040259 * t + 1.0572252 * e), this.opacity) } })), Mh(sn, cn, It(Yt, { brighter: function (t) { return new sn(this.h, this.c, this.l + Dh * (null == t ? 1 : t), this.opacity) }, darker: function (t) { return new sn(this.h, this.c, this.l - Dh * (null == t ? 1 : t), this.opacity) }, rgb: function () { return Kt(this).rgb() } })); var Xh = -.14861, Vh = 1.78277, Wh = -.29227, $h = -.90649, Zh = 1.97294, Gh = Zh * $h, Jh = Zh * Vh, Qh = Vh * Wh - $h * Xh; Mh(hn, ln, It(Yt, { brighter: function (t) { return t = null == t ? Nh : Math.pow(Nh, t), new hn(this.h, this.s, this.l * t, this.opacity) }, darker: function (t) { return t = null == t ? Th : Math.pow(Th, t), new hn(this.h, this.s, this.l * t, this.opacity) }, rgb: function () { var t = isNaN(this.h) ? 0 : (this.h + 120) * Rh, n =+ this.l, e = isNaN(this.s) ? 0 : this.s * n * (1 - n), r = Math.cos(t), i = Math.sin(t); return new Wt(255 * (n + e * (Xh * r + Vh * i)), 255 * (n + e * (Wh * r + $h * i)), 255 * (n + e * (Zh * r)), this.opacity) } })); var Kh, tp, np, ep, rp = function (t) { var n = t.length - 1; return function (e) { var r = e <= 0 ? e = 0 : e >= 1 ? (e = 1, n - 1) : Math.floor(e * n), i = t[r], o = t[r + 1], u = r > 0 ? t[r - 1] : 2 * i - o, a = r < n - 1 ? t[r + 2] : 2 * o - i; return pn((e - r / n) * n, u, i, o, a) } }, ip = function (t) { var n = t.length; return function (e) { var r = Math.floor(((e %= 1) < 0 ? ++e : e) * n), i = t[(r + n - 1) % n], o = t[r % n], u = t[(r + 1) % n], a = t[(r + 2) % n]; return pn((e - r / n) * n, i, o, u, a) } }, op = function (t) { return function () { return t } }, up = function t(n) { function e(t, n) { var e = r((t = Vt(t)).r, (n = Vt(n)).r), i = r(t.g, n.g), o = r(t.b, n.b), u = r(t.opacity, n.opacity); return function (n) { return t.r = e(n), t.g = i(n), t.b = o(n), t.opacity = u(n), t + "" } } var r = yn(n); return e.gamma = t, e }(1), ap = mn(rp), cp = mn(ip), sp = function (t, n) { var e, r = n ? n.length : 0, i = t ? Math.min(r, t.length) : 0, o = new Array(r), u = new Array(r); for (e = 0; e < i; ++e) o[e] = _p(t[e], n[e]); for (; e < r; ++e) u[e] = n[e]; return function (t) { for (e = 0; e < i; ++e) u[e] = o[e](t); return u } }, fp = function (t, n) { var e = new Date; return t =+ t, n -= t, function (r) { return e.setTime(t + n * r), e } }, lp = function (t, n) { return t =+ t, n -= t, function (e) { return t + n * e } }, hp = function (t, n) { var e, r = {}, i = {}; null !== t && "object" == typeof t || (t = {}), null !== n && "object" == typeof n || (n = {}); for (e in n) e in t ? r[e] = _p(t[e], n[e]) : i[e] = n[e]; return function (t) { for (e in r) i[e] = r[e](t); return i } }, pp = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, dp = new RegExp(pp.source, "g"), vp = function (t, n) { var e, r, i, o = pp.lastIndex = dp.lastIndex = 0, u = -1, a = [], c = []; for (t += "", n += ""; (e = pp.exec(t)) && (r = dp.exec(n));) (i = r.index) > o && (i = n.slice(o, i), a[u] ? a[u] += i : a[++u] = i), (e = e[0]) === (r = r[0]) ? a[u] ? a[u] += r : a[++u] = r : (a[++u] = null, c.push({ i: u, x: lp(e, r) })), o = dp.lastIndex; return o < n.length && (i = n.slice(o), a[u] ? a[u] += i : a[++u] = i), a.length < 2 ? c[0] ? bn(c[0].x) : xn(n) : (n = c.length, function (t) { for (var e, r = 0; r < n; ++r) a[(e = c[r]).i] = e.x(t); return a.join("") }) }, _p = function (t, n) { var e, r = typeof n; return null == n || "boolean" === r ? op(n) : ("number" === r ? lp : "string" === r ? (e = Bt(n)) ? (n = e, up) : vp : n instanceof Bt ? up : n instanceof Date ? fp : Array.isArray(n) ? sp : isNaN(n) ? hp : lp)(t, n) }, yp = function (t, n) { return t =+ t, n -= t, function (e) { return Math.round(t + n * e) } }, gp = 180 / Math.PI, mp = { translateX: 0, translateY: 0, rotate: 0, skewX: 0, scaleX: 1, scaleY: 1 }, xp = function (t, n, e, r, i, o) { var u, a, c; return (u = Math.sqrt(t * t + n * n)) && (t /= u, n /= u), (c = t * e + n * r) && (e -= t * c, r -= n * c), (a = Math.sqrt(e * e + r * r)) && (e /= a, r /= a, c /= a), t * r < n * e && (t = -t, n = -n, c = -c, u = -u), { translateX: i, translateY: o, rotate: Math.atan2(n, t) * gp, skewX: Math.atan(c) * gp, scaleX: u, scaleY: a } }, bp = Tn(wn, "px, ", "px)", "deg)"), wp = Tn(Mn, ", ", ")", ")"), Mp = Math.SQRT2, Tp = 2, Np = 4, kp = 1e-12, Sp = function (t, n) { var e, r, i = t[0], o = t[1], u = t[2], a = n[0], c = n[1], s = n[2], f = a - i, l = c - o, h = f * f + l * l; if (h < kp) r = Math.log(s / u) / Mp, e = function (t) { return [ i + t * f, o + t * l, u * Math.exp(Mp * t * r) ] }; else { var p = Math.sqrt(h), d = (s * s - u * u + Np * h) / (2 * u * Tp * p), v = (s * s - u * u - Np * h) / (2 * s * Tp * p), _ = Math.log(Math.sqrt(d * d + 1) - d), y = Math.log(Math.sqrt(v * v + 1) - v); r = (y - _) / Mp, e = function (t) { var n = t * r, e = Nn(_), a = u / (Tp * p) * (e * Sn(Mp * n + _) - kn(_)); return [ i + a * f, o + a * l, u * e / Nn(Mp * n + _) ] } } return e.duration = 1e3 * r, e }, Ap = An(_n), Ep = An(gn), Cp = Cn(_n), zp = Cn(gn), Pp = zn(_n), qp = zn(gn), Lp = function (t, n) { for (var e = new Array(n), r = 0; r < n; ++r) e[r] = t(r / (n - 1)); return e }, Rp = { value: function () {} }; qn.prototype = Pn.prototype = { constructor: qn, on: function (t, n) { var e, r = this._, i = Ln(t + "", r), o = -1, u = i.length; { if (!(arguments.length < 2)) { if (null != n && "function" != typeof n) throw new Error("invalid callback: " + n); for (; ++o < u;) if (e = (t = i[o]).type) r[e] = Un(r[e], t.name, n); else if (null == n) for (e in r) r[e] = Un(r[e], t.name, null); return this } for (; ++o < u;) if ((e = (t = i[o]).type) && (e = Rn(r[e], t.name))) return e } }, copy: function () { var t = {}, n = this._; for (var e in n) t[e] = n[e].slice(); return new qn(t) }, call: function (t, n) { if ((e = arguments.length - 2) > 0) for (var e, r, i = new Array(e), o = 0; o < e; ++o) i[o] = arguments[o + 2]; if (!this._.hasOwnProperty(t)) throw new Error("unknown type: " + t); for (r = this._[t], o = 0, e = r.length; o < e; ++o) r[o].value.apply(n, i) }, apply: function (t, n, e) { if (!this._.hasOwnProperty(t)) throw new Error("unknown type: " + t); for (var r = this._[t], i = 0, o = r.length; i < o; ++i) r[i].value.apply(n, e) } }; var Up, Dp, Op = function (t) { function n(t, n) { var r, i, o = e(t, function (t, e) { return r ? r(t, e - 1) : (i = t, void(r = n ? On(t, n) : Dn(t))) }); return o.columns = i, o } function e(t, n) { function e() { if (f >= s) return u; if (i) return i = !1, o; var n, e = f; if (34 === t.charCodeAt(e)) { for (var r = e; r++ < s;) if (34 === t.charCodeAt(r)) { if (34 !== t.charCodeAt(r + 1)) break; ++r } return f = r + 2, n = t.charCodeAt(r + 1), 13 === n ? (i = !0, 10 === t.charCodeAt(r + 2) && ++f) : 10 === n && (i = !0), t .slice(e + 1, r) .replace(/""/g, '"') } for (; f < s;) { var a = 1; if (n = t.charCodeAt(f++), 10 === n) i = !0; else if (13 === n) i = !0, 10 === t.charCodeAt(f) && (++f, ++a); else if (n !== c) continue; return t.slice(e, f - a) } return t.slice(e) } for (var r, i, o = {}, u = {}, a = [], s = t.length, f = 0, l = 0; (r = e()) !== u;) { for (var h = []; r !== o && r !== u;) h.push(r), r = e(); n && null == (h = n(h, l++)) || a.push(h) } return a } function r(n, e) { return null == e && (e = Fn(n)), [ e .map(u) .join(t) ].concat(n.map(function (n) { return e.map(function (t) { return u(n[t]) }).join(t) })).join("\n") } function i(t) { return t .map(o) .join("\n") } function o(n) { return n .map(u) .join(t) } function u(t) { return null == t ? "" : a.test(t += "") ? '"' + t.replace(/\"/g, '""') + '"' : t } var a = new RegExp('["' + t + "\n]"), c = t.charCodeAt(0); return {parse: n, parseRows: e, format: r, formatRows: i} }, Fp = Op(","), Ip = Fp.parse, Yp = Fp.parseRows, Bp = Fp.format, jp = Fp.formatRows, Hp = Op("\t"), Xp = Hp.parse, Vp = Hp.parseRows, Wp = Hp.format, $p = Hp.formatRows, Zp = function (t, n) { function e(t) { var n, e = f.status; if (!e && Yn(f) || e >= 200 && e < 300 || 304 === e) { if (u) try { n = u.call(r, f) } catch (t) { return void c.call("error", r, t) } else n = f; c.call("load", r, n) } else c.call("error", r, t) } var r, i, u, a, c = Pn("beforesend", "progress", "load", "error"), s = o(), f = new XMLHttpRequest, l = null, h = null, p = 0; if ("undefined" == typeof XDomainRequest || "withCredentials" in f || !/^(http(s)?:)?\/\//.test(t) || (f = new XDomainRequest), "onload" in f ? f.onload = f.onerror = f.ontimeout = e : f.onreadystatechange = function (t) { f.readyState > 3 && e(t) }, f.onprogress = function (t) { c.call("progress", r, t) }, r = { header: function (t, n) { return t = (t + "").toLowerCase(), arguments.length < 2 ? s.get(t) : (null == n ? s.remove(t) : s.set(t, n + ""), r) }, mimeType: function (t) { return arguments.length ? (i = null == t ? null : t + "", r) : i }, responseType: function (t) { return arguments.length ? (a = t, r) : a }, timeout: function (t) { return arguments.length ? (p =+ t, r) : p }, user: function (t) { return arguments.length < 1 ? l : (l = null == t ? null : t + "", r) }, password: function (t) { return arguments.length < 1 ? h : (h = null == t ? null : t + "", r) }, response: function (t) { return u = t, r }, get: function (t, n) { return r.send("GET", t, n) }, post: function (t, n) { return r.send("POST", t, n) }, send: function (n, e, o) { return f.open(n, t, !0, l, h), null == i || s.has("accept") || s.set("accept", i + ",*/*"), f.setRequestHeader && s.each(function (t, n) { f.setRequestHeader(n, t) }), null != i && f.overrideMimeType && f.overrideMimeType(i), null != a && (f.responseType = a), p > 0 && (f.timeout = p), null == o && "function" == typeof e && (o = e, e = null), null != o && 1 === o.length && (o = In(o)), null != o && r .on("error", o) .on("load", function (t) { o(null, t) }), c.call("beforesend", r, f), f.send(null == e ? null : e), r }, abort: function () { return f.abort(), r }, on: function () { var t = c .on .apply(c, arguments); return t === c ? r : t } }, null != n) { if ("function" != typeof n) throw new Error("invalid callback: " + n); return r.get(n) } return r }, Gp = function (t, n) { return function (e, r) { var i = Zp(e) .mimeType(t) .response(n); if (null != r) { if ("function" != typeof r) throw new Error("invalid callback: " + r); return i.get(r) } return i } }, Jp = Gp("text/html", function (t) { return document .createRange() .createContextualFragment(t.responseText) }), Qp = Gp("application/json", function (t) { return JSON.parse(t.responseText) }), Kp = Gp("text/plain", function (t) { return t.responseText }), td = Gp("application/xml", function (t) { var n = t.responseXML; if (!n) throw new Error("parse error"); return n }), nd = function (t, n) { return function (e, r, i) { arguments.length < 3 && (i = r, r = null); var o = Zp(e).mimeType(t); return o.row = function (t) { return arguments.length ? o.response(Bn(n, r = t)) : r }, o.row(r), i ? o.get(i) : o } }, ed = nd("text/csv", Ip), rd = nd("text/tab-separated-values", Xp), id = 0, od = 0, ud = 0, ad = 1e3, cd = 0, sd = 0, fd = 0, ld = "object" == typeof performance && performance.now ? performance : Date, hd = "function" == typeof requestAnimationFrame ? requestAnimationFrame : function (t) { setTimeout(t, 17) }; Xn.prototype = Vn.prototype = { constructor: Xn, restart: function (t, n, e) { if ("function" != typeof t) throw new TypeError("callback is not a function"); e = (null == e ? jn() :+ e) + (null == n ? 0 :+ n), this._next || Dp === this || (Dp ? Dp._next = this : Up = this, Dp = this), this._call = t, this._time = e, Jn() }, stop: function () { this._call && (this._call = null, this._time = 1 / 0, Jn()) } }; var pd = function (t, n, e) { var r = new Xn; return n = null == n ? 0 :+ n, r.restart(function (e) { r.stop(), t(e + n) }, n, e), r }, dd = function (t, n, e) { var r = new Xn, i = n; return null == n ? (r.restart(t, n, e), r) : (n =+ n, e = null == e ? jn() :+ e, r.restart(function o(u) { u += i, r.restart(o, i += n, e), t(u) }, n, e), r) }, vd = new Date, _d = new Date, yd = Qn(function () {}, function (t, n) { t.setTime(+ t + n) }, function (t, n) { return n - t }); yd.every = function (t) { return t = Math.floor(t), isFinite(t) && t > 0 ? t > 1 ? Qn(function (n) { n.setTime(Math.floor(n / t) * t) }, function (n, e) { n.setTime(+ n + e * t) }, function (n, e) { return (e - n) / t }) : yd : null }; var gd = yd.range, md = 1e3, xd = 6e4, bd = 36e5, wd = 864e5, Md = 6048e5, Td = Qn(function (t) { t.setTime(Math.floor(t / md) * md) }, function (t, n) { t.setTime(+ t + n * md) }, function (t, n) { return (n - t) / md }, function (t) { return t.getUTCSeconds() }), Nd = Td.range, kd = Qn(function (t) { t.setTime(Math.floor(t / xd) * xd) }, function (t, n) { t.setTime(+ t + n * xd) }, function (t, n) { return (n - t) / xd }, function (t) { return t.getMinutes() }), Sd = kd.range, Ad = Qn(function (t) { var n = t.getTimezoneOffset() * xd % bd; n < 0 && (n += bd), t.setTime(Math.floor((+ t - n) / bd) * bd + n) }, function (t, n) { t.setTime(+ t + n * bd) }, function (t, n) { return (n - t) / bd }, function (t) { return t.getHours() }), Ed = Ad.range, Cd = Qn(function (t) { t.setHours(0, 0, 0, 0) }, function (t, n) { t.setDate(t.getDate() + n) }, function (t, n) { return (n - t - (n.getTimezoneOffset() - t.getTimezoneOffset()) * xd) / wd }, function (t) { return t.getDate() - 1 }), zd = Cd.range, Pd = Kn(0), qd = Kn(1), Ld = Kn(2), Rd = Kn(3), Ud = Kn(4), Dd = Kn(5), Od = Kn(6), Fd = Pd.range, Id = qd.range, Yd = Ld.range, Bd = Rd.range, jd = Ud.range, Hd = Dd.range, Xd = Od.range, Vd = Qn(function (t) { t.setDate(1), t.setHours(0, 0, 0, 0) }, function (t, n) { t.setMonth(t.getMonth() + n) }, function (t, n) { return n.getMonth() - t.getMonth() + 12 * (n.getFullYear() - t.getFullYear()) }, function (t) { return t.getMonth() }), Wd = Vd.range, $d = Qn(function (t) { t.setMonth(0, 1), t.setHours(0, 0, 0, 0) }, function (t, n) { t.setFullYear(t.getFullYear() + n) }, function (t, n) { return n.getFullYear() - t.getFullYear() }, function (t) { return t.getFullYear() }); $d.every = function (t) { return isFinite(t = Math.floor(t)) && t > 0 ? Qn(function (n) { n.setFullYear(Math.floor(n.getFullYear() / t) * t), n.setMonth(0, 1), n.setHours(0, 0, 0, 0) }, function (n, e) { n.setFullYear(n.getFullYear() + e * t) }) : null }; var Zd = $d.range, Gd = Qn(function (t) { t.setUTCSeconds(0, 0) }, function (t, n) { t.setTime(+ t + n * xd) }, function (t, n) { return (n - t) / xd }, function (t) { return t.getUTCMinutes() }), Jd = Gd.range, Qd = Qn(function (t) { t.setUTCMinutes(0, 0, 0) }, function (t, n) { t.setTime(+ t + n * bd) }, function (t, n) { return (n - t) / bd }, function (t) { return t.getUTCHours() }), Kd = Qd.range, tv = Qn(function (t) { t.setUTCHours(0, 0, 0, 0) }, function (t, n) { t.setUTCDate(t.getUTCDate() + n) }, function (t, n) { return (n - t) / wd }, function (t) { return t.getUTCDate() - 1 }), nv = tv.range, ev = te(0), rv = te(1), iv = te(2), ov = te(3), uv = te(4), av = te(5), cv = te(6), sv = ev.range, fv = rv.range, lv = iv.range, hv = ov.range, pv = uv.range, dv = av.range, vv = cv.range, _v = Qn(function (t) { t.setUTCDate(1), t.setUTCHours(0, 0, 0, 0) }, function (t, n) { t.setUTCMonth(t.getUTCMonth() + n) }, function (t, n) { return n.getUTCMonth() - t.getUTCMonth() + 12 * (n.getUTCFullYear() - t.getUTCFullYear()) }, function (t) { return t.getUTCMonth() }), yv = _v.range, gv = Qn(function (t) { t.setUTCMonth(0, 1), t.setUTCHours(0, 0, 0, 0) }, function (t, n) { t.setUTCFullYear(t.getUTCFullYear() + n) }, function (t, n) { return n.getUTCFullYear() - t.getUTCFullYear() }, function (t) { return t.getUTCFullYear() }); gv.every = function (t) { return isFinite(t = Math.floor(t)) && t > 0 ? Qn(function (n) { n.setUTCFullYear(Math.floor(n.getUTCFullYear() / t) * t), n.setUTCMonth(0, 1), n.setUTCHours(0, 0, 0, 0) }, function (n, e) { n.setUTCFullYear(n.getUTCFullYear() + e * t) }) : null }; var mv, xv = gv.range, bv = function (t, n) { if ((e = (t = n ? t.toExponential(n - 1) : t.toExponential()).indexOf("e")) < 0) return null; var e, r = t.slice(0, e); return [ r.length > 1 ? r[0] + r.slice(2) : r, + t.slice(e + 1) ] }, wv = function (t) { return t = bv(Math.abs(t)), t ? t[1] : NaN }, Mv = function (t, n) { return function (e, r) { for (var i = e.length, o = [], u = 0, a = t[0], c = 0; i > 0 && a > 0 && (c + a + 1 > r && (a = Math.max(1, r - c)), o.push(e.substring(i -= a, i + a)), !((c += a + 1) > r));) a = t[u = (u + 1) % t.length]; return o .reverse() .join(n) } }, Tv = function (t, n) { t = t.toPrecision(n); t : for (var e, r = t.length, i = 1, o = -1; i < r; ++i) switch (t[i]) { case ".": o = e = i; break; case "0": 0 === o && (o = i), e = i; break; case "e": break t; default: o > 0 && (o = 0) } return o > 0 ? t.slice(0, o) + t.slice(e + 1) : t }, Nv = function (t, n) { var e = bv(t, n); if (!e) return t + ""; var r = e[0], i = e[1], o = i - (mv = 3 * Math.max(-8, Math.min(8, Math.floor(i / 3)))) + 1, u = r.length; return o === u ? r : o > u ? r + new Array(o - u + 1).join("0") : o > 0 ? r.slice(0, o) + "." + r.slice(o) : "0." + new Array(1 - o).join("0") + bv(t, Math.max(0, n + o - 1))[0] }, kv = function (t, n) { var e = bv(t, n); if (!e) return t + ""; var r = e[0], i = e[1]; return i < 0 ? "0." + new Array(-i).join("0") + r : r.length > i + 1 ? r.slice(0, i + 1) + "." + r.slice(i + 1) : r + new Array(i - r.length + 2).join("0") }, Sv = { "": Tv, "%": function (t, n) { return (100 * t).toFixed(n) }, b: function (t) { return Math .round(t) .toString(2) }, c: function (t) { return t + "" }, d: function (t) { return Math .round(t) .toString(10) }, e: function (t, n) { return t.toExponential(n) }, f: function (t, n) { return t.toFixed(n) }, g: function (t, n) { return t.toPrecision(n) }, o: function (t) { return Math .round(t) .toString(8) }, p: function (t, n) { return kv(100 * t, n) }, r: kv, s: Nv, X: function (t) { return Math .round(t) .toString(16) .toUpperCase() }, x: function (t) { return Math .round(t) .toString(16) } }, Av = /^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i, Ev = function (t) { return new ne(t) }; ne.prototype.toString = function () { return this.fill + this.align + this.sign + this.symbol + (this.zero ? "0" : "") + (null == this.width ? "" : Math.max(1, 0 | this.width)) + (this.comma ? "," : "") + (null == this.precision ? "" : "." + Math.max(0, 0 | this.precision)) + this.type }; var Cv, zv = [ "y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y" ], Pv = function (t) { function n(t) { function n(t) { var n, i, c, g = d, m = v; if ("c" === p) m = _(t) + m, t = ""; else { t =+ t; var x = (t < 0 || 1 / t < 0) && (t *= -1, !0); if (t = _(t, h), x) for (n = -1, i = t.length, x = !1; ++n < i;) if (c = t.charCodeAt(n), 48 < c && c < 58 || "x" === p && 96 < c && c < 103 || "X" === p && 64 < c && c < 71) { x = !0; break } if (g = (x ? "(" === a ? a : "-" : "-" === a || "(" === a ? "" : a) + g, m = m + ("s" === p ? zv[8 + mv / 3] : "") + (x && "(" === a ? ")" : ""), y) for (n = -1, i = t.length; ++n < i;) if (c = t.charCodeAt(n), 48 > c || c > 57) { m = (46 === c ? o + t.slice(n + 1) : t.slice(n)) + m, t = t.slice(0, n); break } } l && !s && (t = r(t, 1 / 0)); var b = g.length + t.length + m.length, w = b < f ? new Array(f - b + 1).join(e) : ""; switch (l && s && (t = r(w + t, w.length ? f - m.length : 1 / 0), w = ""), u) { case "<": return g + t + m + w; case "=": return g + w + t + m; case "^": return w.slice(0, b = w.length >> 1) + g + t + m + w.slice(b) } return w + g + t + m } t = Ev(t); var e = t.fill, u = t.align, a = t.sign, c = t.symbol, s = t.zero, f = t.width, l = t.comma, h = t.precision, p = t.type, d = "$" === c ? i[0] : "#" === c && /[boxX]/.test(p) ? "0" + p.toLowerCase() : "", v = "$" === c ? i[1] : /[%p]/.test(p) ? "%" : "", _ = Sv[p], y = !p || /[defgprs%]/.test(p); return h = null == h ? p ? 6 : 12 : /[gprs]/.test(p) ? Math.max(1, Math.min(21, h)) : Math.max(0, Math.min(20, h)), n.toString = function () { return t + "" }, n } function e(t, e) { var r = n((t = Ev(t), t.type = "f", t)), i = 3 * Math.max(-8, Math.min(8, Math.floor(wv(e) / 3))), o = Math.pow(10, -i), u = zv[8 + i / 3]; return function (t) { return r(o * t) + u } } var r = t.grouping && t.thousands ? Mv(t.grouping, t.thousands) : ee, i = t.currency, o = t.decimal; return {format: n, formatPrefix: e} }; re({ decimal: ".", thousands: ",", grouping: [3], currency: ["$", ""] }); var qv, Lv = function (t) { return Math.max(0, -wv(Math.abs(t))) }, Rv = function (t, n) { return Math.max(0, 3 * Math.max(-8, Math.min(8, Math.floor(wv(n) / 3))) - wv(Math.abs(t))) }, Uv = function (t, n) { return t = Math.abs(t), n = Math.abs(n) - t, Math.max(0, wv(n) - wv(t)) + 1 }, Dv = { "-": "", _: " ", 0: "0" }, Ov = /^\s*\d+/, Fv = /^%/, Iv = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g; nr({ dateTime: "%x, %X", date: "%-m/%-d/%Y", time: "%-I:%M:%S %p", periods: [ "AM", "PM" ], days: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], shortDays: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], months: [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], shortMonths: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ] }); var Yv = "%Y-%m-%dT%H:%M:%S.%LZ", Bv = Date.prototype.toISOString ? er : t.utcFormat(Yv), jv =+ new Date("2000-01-01T00:00:00.000Z") ? rr : t.utcParse(Yv), Hv = Array.prototype, Xv = Hv.map, Vv = Hv.slice, Wv = { name: "implicit" }, $v = function (t) { return function () { return t } }, Zv = function (t) { return + t }, Gv = [ 0, 1 ], Jv = function (n, r, i) { var o, u = n[0], a = n[n.length - 1], c = e(u, a, null == r ? 10 : r); switch (i = Ev(null == i ? ",f" : i), i.type) { case "s": var s = Math.max(Math.abs(u), Math.abs(a)); return null != i.precision || isNaN(o = Rv(c, s)) || (i.precision = o), t.formatPrefix(i, s); case "": case "e": case "g": case "p": case "r": null != i.precision || isNaN(o = Uv(c, Math.max(Math.abs(u), Math.abs(a)))) || (i.precision = o - ("e" === i.type)); break; case "f": case "%": null != i.precision || isNaN(o = Lv(c)) || (i.precision = o - 2 * ("%" === i.type)) } return t.format(i) }, Qv = function (t, n) { t = t.slice(); var e, r = 0, i = t.length - 1, o = t[r], u = t[i]; return u < o && (e = r, r = i, i = e, e = o, o = u, u = e), t[r] = n.floor(o), t[i] = n.ceil(u), t }, Kv = 1e3, t_ = 60 * Kv, n_ = 60 * t_, e_ = 24 * n_, r_ = 7 * e_, i_ = 30 * e_, o_ = 365 * e_, u_ = function () { return qr($d, Vd, Pd, Cd, Ad, kd, Td, yd, t.timeFormat).domain([ new Date(2e3, 0, 1), new Date(2e3, 0, 2) ]) }, a_ = function () { return qr(gv, _v, ev, tv, Qd, Gd, Td, yd, t.utcFormat).domain([ Date.UTC(2e3, 0, 1), Date.UTC(2e3, 0, 2) ]) }, c_ = function (t) { return t .match(/.{6}/g) .map(function (t) { return "#" + t }) }, s_ = c_("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"), f_ = c_("393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad" + "494ad6616be7969c7b4173a55194ce6dbdde9ed6"), l_ = c_("3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e" + "9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9"), h_ = c_("1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7" + "b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5"), p_ = qp(ln(300, .5, 0), ln(-240, .5, 1)), d_ = qp(ln(-100, .75, .35), ln(80, 1.5, .8)), v_ = qp(ln(260, .75, .35), ln(80, 1.5, .8)), __ = ln(), y_ = function (t) { (t < 0 || t > 1) && (t -= Math.floor(t)); var n = Math.abs(t - .5); return __.h = 360 * t - 100, __.s = 1.5 - 1.5 * n, __.l = .8 - .9 * n, __ + "" }, g_ = Lr(c_("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548" + "146748166848176948186a481a6c481b6d481c6e481d6f481f704820714821734823744824754825" + "76482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581" + "453781453882443983443a83443b84433d84433e85423f8542408642418641428741448740458840" + "46883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a54" + "8c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d" + "33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d" + "708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c" + "8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e" + "23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f" + "958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1" + "871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad81" + "28ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773a" + "ba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c5" + "6954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece58" + "70cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590" + "d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd" + "2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21a" + "d8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8" + "e621fbe723fde725")), m_ = Lr(c_("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07" + "061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e" + "38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e221150241253251255271258" + "29115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f" + "0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c5413" + "7d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c81" + "6a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e" + "24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b" + "80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327d" + "aa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf" + "3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd343" + "6ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064" + "e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3" + "655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d" + "5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668" + "fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77fe" + "b078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec8" + "8cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1" + "fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fc" + "f9bbfcfbbdfcfdbf")), x_ = Lr(c_("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08" + "051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c" + "3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b59" + "2f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a6845" + "0a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a11" + "6e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e" + "71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85" + "216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28" + "659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305c" + "b0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c3" + "3b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d448" + "42d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933" + "e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef" + "6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f784" + "10f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06" + "fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fb" + "b61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf" + "3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865" + "f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9" + "fc9dfafda1fcffa4")), b_ = Lr(c_("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c" + "05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d4303" + "9e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a4" + "5901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e" + "00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104" + "a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a2" + "9511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a6" + "2098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f" + "8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80" + "c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d0" + "4d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c" + "68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5d" + "e66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef" + "7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d" + "45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3a" + "fba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffd" + "b42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc8" + "27fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25" + "f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1" + "f525f0f724f0f921")), w_ = "http://www.w3.org/1999/xhtml", M_ = { svg: "http://www.w3.org/2000/svg", xhtml: w_, xlink: "http://www.w3.org/1999/xlink", xml: "http://www.w3.org/XML/1998/namespace", xmlns: "http://www.w3.org/2000/xmlns/" }, T_ = function (t) { var n = t += "", e = n.indexOf(":"); return e >= 0 && "xmlns" !== (n = t.slice(0, e)) && (t = t.slice(e + 1)), M_.hasOwnProperty(n) ? { space: M_[n], local: t } : t }, N_ = function (t) { var n = T_(t); return (n.local ? Dr : Ur)(n) }, k_ = 0; Fr.prototype = Or.prototype = { constructor: Fr, get: function (t) { for (var n = this._; !(n in t);) if (!(t = t.parentNode)) return; return t[n] }, set: function (t, n) { return t[this._] = n }, remove: function (t) { return this._ in t && delete t[this._] }, toString: function () { return this._ } }; var S_ = function (t) { return function () { return this.matches(t) } }; if ("undefined" != typeof document) { var A_ = document.documentElement; if (!A_.matches) { var E_ = A_.webkitMatchesSelector || A_.msMatchesSelector || A_.mozMatchesSelector || A_.oMatchesSelector; S_ = function (t) { return function () { return E_.call(this, t) } } } } var C_ = S_, z_ = {}; if (t.event = null, "undefined" != typeof document) { var P_ = document.documentElement; "onmouseenter" in P_ || (z_ = { mouseenter: "mouseover", mouseleave: "mouseout" }) } var q_ = function (t, n, e) { var r, i, o = Br(t + ""), u = o.length; { if (!(arguments.length < 2)) { for (a = n ? Hr : jr, null == e && (e = !1), r = 0; r < u; ++r) this.each(a(o[r], n, e)); return this } var a = this .node() .__on; if (a) for (var c, s = 0, f = a.length; s < f; ++s) for (r = 0, c = a[s]; r < u; ++r) if ((i = o[r]).type === c.type && i.name === c.name) return c.value } }, L_ = function () { for (var n, e = t.event; n = e.sourceEvent;) e = n; return e }, R_ = function (t, n) { var e = t.ownerSVGElement || t; if (e.createSVGPoint) { var r = e.createSVGPoint(); return r.x = n.clientX, r.y = n.clientY, r = r.matrixTransform(t.getScreenCTM().inverse()), [r.x, r.y] } var i = t.getBoundingClientRect(); return [ n.clientX - i.left - t.clientLeft, n.clientY - i.top - t.clientTop ] }, U_ = function (t) { var n = L_(); return n.changedTouches && (n = n.changedTouches[0]), R_(t, n) }, D_ = function (t) { return null == t ? Vr : function () { return this.querySelector(t) } }, O_ = function (t) { "function" != typeof t && (t = D_(t)); for (var n = this._groups, e = n.length, r = new Array(e), i = 0; i < e; ++i) for (var o, u, a = n[i], c = a.length, s = r[i] = new Array(c), f = 0; f < c; ++f) (o = a[f]) && (u = t.call(o, o.__data__, f, a)) && ("__data__" in o && (u.__data__ = o.__data__), s[f] = u); return new zi(r, this._parents) }, F_ = function (t) { return null == t ? Wr : function () { return this.querySelectorAll(t) } }, I_ = function (t) { "function" != typeof t && (t = F_(t)); for (var n = this._groups, e = n.length, r = [], i = [], o = 0; o < e; ++o) for (var u, a = n[o], c = a.length, s = 0; s < c; ++s) (u = a[s]) && (r.push(t.call(u, u.__data__, s, a)), i.push(u)); return new zi(r, i) }, Y_ = function (t) { "function" != typeof t && (t = C_(t)); for (var n = this._groups, e = n.length, r = new Array(e), i = 0; i < e; ++i) for (var o, u = n[i], a = u.length, c = r[i] = [], s = 0; s < a; ++s) (o = u[s]) && t.call(o, o.__data__, s, u) && c.push(o); return new zi(r, this._parents) }, B_ = function (t) { return new Array(t.length) }, j_ = function () { return new zi(this._enter || this._groups.map(B_), this._parents) }; $r.prototype = { constructor: $r, appendChild: function (t) { return this ._parent .insertBefore(t, this._next) }, insertBefore: function (t, n) { return this ._parent .insertBefore(t, n) }, querySelector: function (t) { return this ._parent .querySelector(t) }, querySelectorAll: function (t) { return this ._parent .querySelectorAll(t) } }; var H_ = function (t) { return function () { return t } }, X_ = "$", V_ = function (t, n) { if (!t) return p = new Array(this.size()), s = -1, this.each(function (t) { p[++s] = t }), p; var e = n ? Gr : Zr, r = this._parents, i = this._groups; "function" != typeof t && (t = H_(t)); for (var o = i.length, u = new Array(o), a = new Array(o), c = new Array(o), s = 0; s < o; ++s) { var f = r[s], l = i[s], h = l.length, p = t.call(f, f && f.__data__, s, r), d = p.length, v = a[s] = new Array(d), _ = u[s] = new Array(d), y = c[s] = new Array(h); e(f, l, v, _, y, p, n); for (var g, m, x = 0, b = 0; x < d; ++x) if (g = v[x]) { for (x >= b && (b = x + 1); !(m = _[b]) && ++b < d;) ; g._next = m || null } } return u = new zi(u, r), u._enter = a, u._exit = c, u }, W_ = function () { return new zi(this._exit || this._groups.map(B_), this._parents) }, $_ = function (t) { for (var n = this._groups, e = t._groups, r = n.length, i = e.length, o = Math.min(r, i), u = new Array(r), a = 0; a < o; ++a) for (var c, s = n[a], f = e[a], l = s.length, h = u[a] = new Array(l), p = 0; p < l; ++p) (c = s[p] || f[p]) && (h[p] = c); for (; a < r; ++a) u[a] = n[a]; return new zi(u, this._parents) }, Z_ = function () { for (var t = this._groups, n = -1, e = t.length; ++n < e;) for (var r, i = t[n], o = i.length - 1, u = i[o]; --o >= 0;) (r = i[o]) && (u && u !== r.nextSibling && u.parentNode.insertBefore(r, u), u = r); return this }, G_ = function (t) { function n(n, e) { return n && e ? t(n.__data__, e.__data__) : !n - !e } t || (t = Jr); for (var e = this._groups, r = e.length, i = new Array(r), o = 0; o < r; ++o) { for (var u, a = e[o], c = a.length, s = i[o] = new Array(c), f = 0; f < c; ++f) (u = a[f]) && (s[f] = u); s.sort(n) } return new zi(i, this._parents).order() }, J_ = function () { var t = arguments[0]; return arguments[0] = this, t.apply(null, arguments), this }, Q_ = function () { var t = new Array(this.size()), n = -1; return this.each(function () { t[++n] = this }), t }, K_ = function () { for (var t = this._groups, n = 0, e = t.length; n < e; ++n) for (var r = t[n], i = 0, o = r.length; i < o; ++i) { var u = r[i]; if (u) return u } return null }, ty = function () { var t = 0; return this.each(function () { ++t }), t }, ny = function () { return !this.node() }, ey = function (t) { for (var n = this._groups, e = 0, r = n.length; e < r; ++e) for (var i, o = n[e], u = 0, a = o.length; u < a; ++u) (i = o[u]) && t.call(i, i.__data__, u, o); return this }, ry = function (t, n) { var e = T_(t); if (arguments.length < 2) { var r = this.node(); return e.local ? r.getAttributeNS(e.space, e.local) : r.getAttribute(e) } return this.each((null == n ? e.local ? Kr : Qr : "function" == typeof n ? e.local ? ri : ei : e.local ? ni : ti)(e, n)) }, iy = function (t) { return t.ownerDocument && t.ownerDocument.defaultView || t.document && t || t.defaultView }, oy = function (t, n, e) { var r; return arguments.length > 1 ? this.each((null == n ? ii : "function" == typeof n ? ui : oi)(t, n, null == e ? "" : e)) : iy(r = this.node()) .getComputedStyle(r, null) .getPropertyValue(t) }, uy = function (t, n) { return arguments.length > 1 ? this.each((null == n ? ai : "function" == typeof n ? si : ci)(t, n)) : this.node()[t] }; hi.prototype = { add: function (t) { var n = this ._names .indexOf(t); n < 0 && (this._names.push(t), this._node.setAttribute("class", this._names.join(" "))) }, remove: function (t) { var n = this ._names .indexOf(t); n >= 0 && (this._names.splice(n, 1), this._node.setAttribute("class", this._names.join(" "))) }, contains: function (t) { return this ._names .indexOf(t) >= 0 } }; var ay = function (t, n) { var e = fi(t + ""); if (arguments.length < 2) { for (var r = li(this.node()), i = -1, o = e.length; ++i < o;) if (!r.contains(e[i])) return !1; return !0 } return this.each(("function" == typeof n ? yi : n ? vi : _i)(e, n)) }, cy = function (t) { return arguments.length ? this.each(null == t ? gi : ("function" == typeof t ? xi : mi)(t)) : this .node() .textContent }, sy = function (t) { return arguments.length ? this.each(null == t ? bi : ("function" == typeof t ? Mi : wi)(t)) : this .node() .innerHTML }, fy = function () { return this.each(Ti) }, ly = function () { return this.each(Ni) }, hy = function (t) { var n = "function" == typeof t ? t : N_(t); return this.select(function () { return this.appendChild(n.apply(this, arguments)) }) }, py = function (t, n) { var e = "function" == typeof t ? t : N_(t), r = null == n ? ki : "function" == typeof n ? n : D_(n); return this.select(function () { return this.insertBefore(e.apply(this, arguments), r.apply(this, arguments) || null) }) }, dy = function () { return this.each(Si) }, vy = function (t) { return arguments.length ? this.property("__data__", t) : this .node() .__data__ }, _y = function (t, n) { return this.each(("function" == typeof n ? Ci : Ei)(t, n)) }, yy = [null]; zi.prototype = Pi.prototype = { constructor: zi, select: O_, selectAll: I_, filter: Y_, data: V_, enter: j_, exit: W_, merge: $_, order: Z_, sort: G_, call: J_, nodes: Q_, node: K_, size: ty, empty: ny, each: ey, attr: ry, style: oy, property: uy, classed: ay, text: cy, html: sy, raise: fy, lower: ly, append: hy, insert: py, remove: dy, datum: vy, on: q_, dispatch: _y }; var gy = function (t) { return "string" == typeof t ? new zi([ [document.querySelector(t)] ], [document.documentElement]) : new zi([ [t] ], yy) }, my = function (t) { return "string" == typeof t ? new zi([document.querySelectorAll(t)], [document.documentElement]) : new zi([null == t ? [] : t], yy) }, xy = function (t, n, e) { arguments.length < 3 && (e = n, n = L_().changedTouches); for (var r, i = 0, o = n ? n.length : 0; i < o; ++i) if ((r = n[i]).identifier === e) return R_(t, r); return null }, by = function (t, n) { null == n && (n = L_().touches); for (var e = 0, r = n ? n.length : 0, i = new Array(r); e < r; ++e) i[e] = R_(t, n[e]); return i }, wy = Pn("start", "end", "interrupt"), My = [], Ty = 0, Ny = 1, ky = 2, Sy = 3, Ay = 4, Ey = 5, Cy = 6, zy = function (t, n, e, r, i, o) { var u = t.__transition; if (u) { if (e in u) return } else t.__transition = {}; Ui(t, e, { name: n, index: r, group: i, on: wy, tween: My, time: o.time, delay: o.delay, duration: o.duration, ease: o.ease, timer: null, state: Ty }) }, Py = function (t, n) { var e, r, i, o = t.__transition, u = !0; if (o) { n = null == n ? null : n + ""; for (i in o) (e = o[i]).name === n ? (r = e.state > ky && e.state < Ey, e.state = Cy, e.timer.stop(), r && e.on.call("interrupt", t, t.__data__, e.index, e.group), delete o[i]) : u = !1; u && delete t.__transition } }, qy = function (t) { return this.each(function () { Py(this, t) }) }, Ly = function (t, n) { var e = this._id; if (t += "", arguments.length < 2) { for (var r, i = Ri(this.node(), e).tween, o = 0, u = i.length; o < u; ++o) if ((r = i[o]).name === t) return r.value; return null } return this.each((null == n ? Di : Oi)(e, t, n)) }, Ry = function (t, n) { var e; return ("number" == typeof n ? lp : n instanceof Bt ? up : (e = Bt(n)) ? (n = e, up) : vp)(t, n) }, Uy = function (t, n) { var e = T_(t), r = "transform" === e ? wp : Ry; return this.attrTween(t, "function" == typeof n ? (e.local ? Xi : Hi)(e, r, Fi(this, "attr." + t, n)) : null == n ? (e.local ? Yi : Ii)(e) : (e.local ? ji : Bi)(e, r, n)) }, Dy = function (t, n) { var e = "attr." + t; if (arguments.length < 2) return (e = this.tween(e)) && e._value; if (null == n) return this.tween(e, null); if ("function" != typeof n) throw new Error; var r = T_(t); return this.tween(e, (r.local ? Vi : Wi)(r, n)) }, Oy = function (t) { var n = this._id; return arguments.length ? this.each(("function" == typeof t ? $i : Zi)(n, t)) : Ri(this.node(), n).delay }, Fy = function (t) { var n = this._id; return arguments.length ? this.each(("function" == typeof t ? Gi : Ji)(n, t)) : Ri(this.node(), n).duration }, Iy = function (t) { var n = this._id; return arguments.length ? this.each(Qi(n, t)) : Ri(this.node(), n).ease }, Yy = function (t) { "function" != typeof t && (t = C_(t)); for (var n = this._groups, e = n.length, r = new Array(e), i = 0; i < e; ++i) for (var o, u = n[i], a = u.length, c = r[i] = [], s = 0; s < a; ++s) (o = u[s]) && t.call(o, o.__data__, s, u) && c.push(o); return new so(r, this._parents, this._name, this._id) }, By = function (t) { if (t._id !== this._id) throw new Error; for (var n = this._groups, e = t._groups, r = n.length, i = e.length, o = Math.min(r, i), u = new Array(r), a = 0; a < o; ++a) for (var c, s = n[a], f = e[a], l = s.length, h = u[a] = new Array(l), p = 0; p < l; ++p) (c = s[p] || f[p]) && (h[p] = c); for (; a < r; ++a) u[a] = n[a]; return new so(u, this._parents, this._name, this._id) }, jy = function (t, n) { var e = this._id; return arguments.length < 2 ? Ri(this.node(), e) .on .on(t) : this.each(to(e, t, n)) }, Hy = function () { return this.on("end.remove", no(this._id)) }, Xy = function (t) { var n = this._name, e = this._id; "function" != typeof t && (t = D_(t)); for (var r = this._groups, i = r.length, o = new Array(i), u = 0; u < i; ++u) for (var a, c, s = r[u], f = s.length, l = o[u] = new Array(f), h = 0; h < f; ++h) (a = s[h]) && (c = t.call(a, a.__data__, h, s)) && ("__data__" in a && (c.__data__ = a.__data__), l[h] = c, zy(l[h], n, e, h, l, Ri(a, e))); return new so(o, this._parents, n, e) }, Vy = function (t) { var n = this._name, e = this._id; "function" != typeof t && (t = F_(t)); for (var r = this._groups, i = r.length, o = [], u = [], a = 0; a < i; ++a) for (var c, s = r[a], f = s.length, l = 0; l < f; ++l) if (c = s[l]) { for (var h, p = t.call(c, c.__data__, l, s), d = Ri(c, e), v = 0, _ = p.length; v < _; ++v) (h = p[v]) && zy(h, n, e, v, p, d); o.push(p), u.push(c) } return new so(o, u, n, e) }, Wy = Pi.prototype.constructor, $y = function () { return new Wy(this._groups, this._parents) }, Zy = function (t, n, e) { var r = "transform" == (t += "") ? bp : Ry; return null == n ? this .styleTween(t, eo(t, r)) .on("end.style." + t, ro(t)) : this.styleTween(t, "function" == typeof n ? oo(t, r, Fi(this, "style." + t, n)) : io(t, r, n), e) }, Gy = function (t, n, e) { var r = "style." + (t += ""); if (arguments.length < 2) return (r = this.tween(r)) && r._value; if (null == n) return this.tween(r, null); if ("function" != typeof n) throw new Error; return this.tween(r, uo(t, n, null == e ? "" : e)) }, Jy = function (t) { return this.tween("text", "function" == typeof t ? co(Fi(this, "text", t)) : ao(null == t ? "" : t + "")) }, Qy = function () { for (var t = this._name, n = this._id, e = lo(), r = this._groups, i = r.length, o = 0; o < i; ++o) for (var u, a = r[o], c = a.length, s = 0; s < c; ++s) if (u = a[s]) { var f = Ri(u, n); zy(u, t, e, s, a, { time: f.time + f.delay + f.duration, delay: 0, duration: f.duration, ease: f.ease }) } return new so(r, this._parents, t, e) }, Ky = 0, tg = Pi.prototype; so.prototype = fo.prototype = { constructor: so, select: Xy, selectAll: Vy, filter: Yy, merge: By, selection: $y, transition: Qy, call: tg.call, nodes: tg.nodes, node: tg.node, size: tg.size, empty: tg.empty, each: tg.each, on: jy, attr: Uy, attrTween: Dy, style: Zy, styleTween: Gy, text: Jy, remove: Hy, tween: Ly, delay: Oy, duration: Fy, ease: Iy }; var ng = { time: null, delay: 0, duration: 250, ease: g }, eg = function (t) { var n, e; t instanceof so ? (n = t._id, t = t._name) : (n = lo(), (e = ng).time = jn(), t = null == t ? null : t + ""); for (var r = this._groups, i = r.length, o = 0; o < i; ++o) for (var u, a = r[o], c = a.length, s = 0; s < c; ++s) (u = a[s]) && zy(u, t, n, s, a, e || ho(u, n)); return new so(r, this._parents, t, n) }; Pi.prototype.interrupt = qy, Pi.prototype.transition = eg; var rg = [null], ig = function (t, n) { var e, r, i = t.__transition; if (i) { n = null == n ? null : n + ""; for (r in i) if ((e = i[r]).state > Ny && e.name === n) return new so([ [t] ], rg, n, + r) } return null }, og = Array.prototype.slice, ug = function (t) { return t }, ag = 1, cg = 2, sg = 3, fg = 4, lg = 1e-6, hg = function () { function t(t) { var o, u = 0; t.eachAfter(function (t) { var e = t.children; e ? (t.x = To(e), t.y = ko(e)) : (t.x = o ? u += n(t, o) : 0, t.y = 0, o = t) }); var a = Ao(t), c = Eo(t), s = a.x - n(a, c) / 2, f = c.x + n(c, a) / 2; return t.eachAfter(i ? function (n) { n.x = (n.x - t.x) * e, n.y = (t.y - n.y) * r } : function (n) { n.x = (n.x - s) / (f - s) * e, n.y = (1 - (t.y ? n.y / t.y : 1)) * r }) } var n = Mo, e = 1, r = 1, i = !1; return t.separation = function (e) { return arguments.length ? (n = e, t) : n }, t.size = function (n) { return arguments.length ? (i = !1, e =+ n[0], r =+ n[1], t) : i ? null : [e, r] }, t.nodeSize = function (n) { return arguments.length ? (i = !0, e =+ n[0], r =+ n[1], t) : i ? [e, r] : null }, t }, pg = function (t) { var n, e, r, i, o = this, u = [o]; do for (n = u.reverse(), u = []; o = n.pop();) if (t(o), e = o.children) for (r = 0, i = e.length; r < i; ++r) u.push(e[r]); while (u.length); return this }, dg = function (t) { for (var n, e, r = this, i = [r]; r = i.pop();) if (t(r), n = r.children) for (e = n.length - 1; e >= 0; --e) i.push(n[e]); return this }, vg = function (t) { for (var n, e, r, i = this, o = [i], u = []; i = o.pop();) if (u.push(i), n = i.children) for (e = 0, r = n.length; e < r; ++e) o.push(n[e]); for (; i = u.pop();) t(i); return this }, _g = function (t) { return this.eachAfter(function (n) { for (var e =+ t(n.data) || 0, r = n.children, i = r && r.length; --i >= 0;) e += r[i].value; n.value = e }) }, yg = function (t) { return this.eachBefore(function (n) { n.children && n .children .sort(t) }) }, gg = function (t) { for (var n = this, e = Co(n, t), r = [n]; n !== e;) n = n.parent, r.push(n); for (var i = r.length; t !== e;) r.splice(i, 0, t), t = t.parent; return r }, mg = function () { for (var t = this, n = [t]; t = t.parent;) n.push(t); return n }, xg = function () { var t = []; return this.each(function (n) { t.push(n) }), t }, bg = function () { var t = []; return this.eachBefore(function (n) { n.children || t.push(n) }), t }, wg = function () { var t = this, n = []; return t.each(function (e) { e !== t && n.push({source: e.parent, target: e}) }), n }; Uo.prototype = zo.prototype = { constructor: Uo, each: pg, eachAfter: vg, eachBefore: dg, sum: _g, sort: yg, path: gg, ancestors: mg, descendants: xg, leaves: bg, links: wg, copy: Po }; var Mg = function (t) { for (var n, e = (t = t.slice()).length, r = null, i = r; e;) { var o = new Do(t[e - 1]); i = i ? i.next = o : r = o, t[n] = t[--e] } return {head: r, tail: i} }, Tg = function (t) { return Fo(Mg(t), []) }, Ng = function (t) { return Wo(t), t }, kg = function (t) { return function () { return t } }, Sg = function () { function t(t) { return t.x = e / 2, t.y = r / 2, n ? t .eachBefore(Qo(n)) .eachAfter(Ko(i, .5)) .eachBefore(tu(1)) : t .eachBefore(Qo(Jo)) .eachAfter(Ko(Go, 1)) .eachAfter(Ko(i, t.r / Math.min(e, r))) .eachBefore(tu(Math.min(e, r) / (2 * t.r))), t } var n = null, e = 1, r = 1, i = Go; return t.radius = function (e) { return arguments.length ? (n = $o(e), t) : n }, t.size = function (n) { return arguments.length ? (e =+ n[0], r =+ n[1], t) : [e, r] }, t.padding = function (n) { return arguments.length ? (i = "function" == typeof n ? n : kg(+ n), t) : i }, t }, Ag = function (t) { t.x0 = Math.round(t.x0), t.y0 = Math.round(t.y0), t.x1 = Math.round(t.x1), t.y1 = Math.round(t.y1) }, Eg = function (t, n, e, r, i) { for (var o, u = t.children, a = -1, c = u.length, s = t.value && (r - n) / t.value; ++a < c;) o = u[a], o.y0 = e, o.y1 = i, o.x0 = n, o.x1 = n += o.value * s }, Cg = function () { function t(t) { var u = t.height + 1; return t.x0 = t.y0 = i, t.x1 = e, t.y1 = r / u, t.eachBefore(n(r, u)), o && t.eachBefore(Ag), t } function n(t, n) { return function (e) { e.children && Eg(e, e.x0, t * (e.depth + 1) / n, e.x1, t * (e.depth + 2) / n); var r = e.x0, o = e.y0, u = e.x1 - i, a = e.y1 - i; u < r && (r = u = (r + u) / 2), a < o && (o = a = (o + a) / 2), e.x0 = r, e.y0 = o, e.x1 = u, e.y1 = a } } var e = 1, r = 1, i = 0, o = !1; return t.round = function (n) { return arguments.length ? (o = !!n, t) : o }, t.size = function (n) { return arguments.length ? (e =+ n[0], r =+ n[1], t) : [e, r] }, t.padding = function (n) { return arguments.length ? (i =+ n, t) : i }, t }, zg = "$", Pg = { depth: -1 }, qg = {}, Lg = function () { function t(t) { var r, i, o, u, a, c, s, f = t.length, l = new Array(f), h = {}; for (i = 0; i < f; ++i) r = t[i], a = l[i] = new Uo(r), null != (c = n(r, i, t)) && (c += "") && (s = zg + (a.id = c), h[s] = s in h ? qg : a); for (i = 0; i < f; ++i) if (a = l[i], c = e(t[i], i, t), null != c && (c += "")) { if (u = h[zg + c], !u) throw new Error("missing: " + c); if (u === qg) throw new Error("ambiguous: " + c); u.children ? u .children .push(a) : u.children = [a], a.parent = u } else { if (o) throw new Error("multiple roots"); o = a } if (!o) throw new Error("no root"); if (o.parent = Pg, o.eachBefore(function (t) { t.depth = t.parent.depth + 1, --f }).eachBefore(Ro), o.parent = null, f > 0) throw new Error("cycle"); return o } var n = nu, e = eu; return t.id = function (e) { return arguments.length ? (n = Zo(e), t) : n }, t.parentId = function (n) { return arguments.length ? (e = Zo(n), t) : e }, t }; su.prototype = Object.create(Uo.prototype); var Rg = function () { function t(t) { var r = fu(t); if (r.eachAfter(n), r.parent.m = -r.z, r.eachBefore(e), c) t.eachBefore(i); else { var s = t, f = t, l = t; t.eachBefore(function (t) { t.x < s.x && (s = t), t.x > f.x && (f = t), t.depth > l.depth && (l = t) }); var h = s === f ? 1 : o(s, f) / 2, p = h - s.x, d = u / (f.x + h + p), v = a / (l.depth || 1); t.eachBefore(function (t) { t.x = (t.x + p) * d, t.y = t.depth * v }) } return t } function n(t) { var n = t.children, e = t.parent.children, i = t.i ? e[t.i - 1] : null; if (n) { au(t); var u = (n[0].z + n[n.length - 1].z) / 2; i ? (t.z = i.z + o(t._, i._), t.m = t.z - u) : t.z = u } else i && (t.z = i.z + o(t._, i._)); t.parent.A = r(t, i, t.parent.A || e[0]) } function e(t) { t._.x = t.z + t.parent.m, t.m += t.parent.m } function r(t, n, e) { if (n) { for (var r, i = t, u = t, a = n, c = i.parent.children[0], s = i.m, f = u.m, l = a.m, h = c.m; a = ou(a), i = iu(i), a && i;) c = iu(c), u = ou(u), u.a = t, r = a.z + l - i.z - s + o(a._, i._), r > 0 && (uu(cu(a, t, e), t, r), s += r, f += r), l += a.m, s += i.m, h += c.m, f += u.m; a && !ou(u) && (u.t = a, u.m += l - f), i && !iu(c) && (c.t = i, c.m += s - h, e = t) } return e } function i(t) { t.x *= u, t.y = t.depth * a } var o = ru, u = 1, a = 1, c = null; return t.separation = function (n) { return arguments.length ? (o = n, t) : o }, t.size = function (n) { return arguments.length ? (c = !1, u =+ n[0], a =+ n[1], t) : c ? null : [u, a] }, t.nodeSize = function (n) { return arguments.length ? (c = !0, u =+ n[0], a =+ n[1], t) : c ? [u, a] : null }, t }, Ug = function (t, n, e, r, i) { for (var o, u = t.children, a = -1, c = u.length, s = t.value && (i - e) / t.value; ++a < c;) o = u[a], o.x0 = n, o.x1 = r, o.y0 = e, o.y1 = e += o.value * s }, Dg = (1 + Math.sqrt(5)) / 2, Og = function t(n) { function e(t, e, r, i, o) { lu(n, t, e, r, i, o) } return e.ratio = function (n) { return t((n =+ n) > 1 ? n : 1) }, e }(Dg), Fg = function () { function t(t) { return t.x0 = t.y0 = 0, t.x1 = i, t.y1 = o, t.eachBefore(n), u = [0], r && t.eachBefore(Ag), t } function n(t) { var n = u[t.depth], r = t.x0 + n, i = t.y0 + n, o = t.x1 - n, h = t.y1 - n; o < r && (r = o = (r + o) / 2), h < i && (i = h = (i + h) / 2), t.x0 = r, t.y0 = i, t.x1 = o, t.y1 = h, t.children && (n = u[t.depth + 1] = a(t) / 2, r += l(t) - n, i += c(t) - n, o -= s(t) - n, h -= f(t) - n, o < r && (r = o = (r + o) / 2), h < i && (i = h = (i + h) / 2), e(t, r, i, o, h)) } var e = Og, r = !1, i = 1, o = 1, u = [0], a = Go, c = Go, s = Go, f = Go, l = Go; return t.round = function (n) { return arguments.length ? (r = !!n, t) : r }, t.size = function (n) { return arguments.length ? (i =+ n[0], o =+ n[1], t) : [i, o] }, t.tile = function (n) { return arguments.length ? (e = Zo(n), t) : e }, t.padding = function (n) { return arguments.length ? t .paddingInner(n) .paddingOuter(n) : t.paddingInner() }, t.paddingInner = function (n) { return arguments.length ? (a = "function" == typeof n ? n : kg(+ n), t) : a }, t.paddingOuter = function (n) { return arguments.length ? t .paddingTop(n) .paddingRight(n) .paddingBottom(n) .paddingLeft(n) : t.paddingTop() }, t.paddingTop = function (n) { return arguments.length ? (c = "function" == typeof n ? n : kg(+ n), t) : c }, t.paddingRight = function (n) { return arguments.length ? (s = "function" == typeof n ? n : kg(+ n), t) : s }, t.paddingBottom = function (n) { return arguments.length ? (f = "function" == typeof n ? n : kg(+ n), t) : f }, t.paddingLeft = function (n) { return arguments.length ? (l = "function" == typeof n ? n : kg(+ n), t) : l }, t }, Ig = function (t, n, e, r, i) { function o(t, n, e, r, i, u, a) { if (t >= n - 1) { var s = c[t]; return s.x0 = r, s.y0 = i, s.x1 = u, s.y1 = a, void 0 } for (var l = f[t], h = e / 2 + l, p = t + 1, d = n - 1; p < d;) { var v = p + d >>> 1; f[v] < h ? p = v + 1 : d = v } var _ = f[p] - l, y = e - _; if (a - i > u - r) { var g = (i * y + a * _) / e; o(t, p, _, r, i, u, g), o(p, n, y, r, g, u, a) } else { var m = (r * y + u * _) / e; o(t, p, _, r, i, m, a), o(p, n, y, m, i, u, a) } } var u, a, c = t.children, s = c.length, f = new Array(s + 1); for (f[0] = a = u = 0; u < s; ++u) f[u + 1] = a += c[u].value; o(0, s, t.value, n, e, r, i) }, Yg = function (t, n, e, r, i) { (1 & t.depth ? Ug : Eg)(t, n, e, r, i) }, Bg = function t(n) { function e(t, e, r, i, o) { if ((u = t._squarify) && u.ratio === n) for (var u, a, c, s, f, l = -1, h = u.length, p = t.value; ++l < h;) { for (a = u[l], c = a.children, s = a.value = 0, f = c.length; s < f; ++s) a.value += c[s].value; a.dice ? Eg(a, e, r, i, r += (o - r) * a.value / p) : Ug(a, e, r, e += (i - e) * a.value / p, o), p -= a.value } else t._squarify = u = lu(n, t, e, r, i, o), u.ratio = n } return e.ratio = function (n) { return t((n =+ n) > 1 ? n : 1) }, e }(Dg), jg = function (t, n) { function e() { var e, i, o = r.length, u = 0, a = 0; for (e = 0; e < o; ++e) i = r[e], u += i.x, a += i.y; for (u = u / o - t, a = a / o - n, e = 0; e < o; ++e) i = r[e], i.x -= u, i.y -= a } var r; return null == t && (t = 0), null == n && (n = 0), e.initialize = function (t) { r = t }, e.x = function (n) { return arguments.length ? (t =+ n, e) : t }, e.y = function (t) { return arguments.length ? (n =+ t, e) : n }, e }, Hg = function (t) { return function () { return t } }, Xg = function () { return 1e-6 * (Math.random() - .5) }, Vg = function (t) { function n() { function t(t, e, r, i, o) { var a = t.data, p = t.r, d = l + p; { if (!a) return e > s + d || i < s - d || r > f + d || o < f - d; if (a.index > n) { var v = s - a.x - a.vx, _ = f - a.y - a.vy, y = v * v + _ * _; y < d * d && (0 === v && (v = Xg(), y += v * v), 0 === _ && (_ = Xg(), y += _ * _), y = (d - (y = Math.sqrt(y))) / y * u, c.vx += (v *= y) * (d = (p *= p) / (h + p)), c.vy += (_ *= y) * d, a.vx -= v * (d = 1 - d), a.vy -= _ * d) } } } for (var n, r, c, s, f, l, h, p = i.length, d = 0; d < a; ++d) for (r = I(i, hu, pu).visitAfter(e), n = 0; n < p; ++n) c = i[n], l = o[n], h = l * l, s = c.x + c.vx, f = c.y + c.vy, r.visit(t) } function e(t) { if (t.data) return t.r = o[t.data.index]; for (var n = t.r = 0; n < 4; ++n) t[n] && t[n].r > t.r && (t.r = t[n].r) } function r() { if (i) { var n, e = i.length; for (o = new Array(e), n = 0; n < e; ++n) o[n] =+ t(i[n], n, i) } } var i, o, u = 1, a = 1; return "function" != typeof t && (t = Hg(null == t ? 1 :+ t)), n.initialize = function (t) { i = t, r() }, n.iterations = function (t) { return arguments.length ? (a =+ t, n) : a }, n.strength = function (t) { return arguments.length ? (u =+ t, n) : u }, n.radius = function (e) { return arguments.length ? (t = "function" == typeof e ? e : Hg(+ e), r(), n) : t }, n }, Wg = function (t) { function n(t) { return 1 / Math.min(f[t.source.index], f[t.target.index]) } function e(n) { for (var e = 0, r = t.length; e < v; ++e) for (var i, o, u, s, f, h, p, d = 0; d < r; ++d) i = t[d], o = i.source, u = i.target, s = u.x + u.vx - o.x - o.vx || Xg(), f = u.y + u.vy - o.y - o.vy || Xg(), h = Math.sqrt(s * s + f * f), h = (h - c[d]) / h * n * a[d], s *= h, f *= h, u.vx -= s * (p = l[d]), u.vy -= f * p, o.vx += s * (p = 1 - p), o.vy += f * p } function r() { if (s) { var n, e, r = s.length, p = t.length, d = o(s, h); for (n = 0, f = new Array(r); n < r; ++n) f[n] = 0; for (n = 0; n < p; ++n) e = t[n], e.index = n, "object" != typeof e.source && (e.source = vu(d, e.source)), "object" != typeof e.target && (e.target = vu(d, e.target)), ++f[e.source.index], ++f[e.target.index]; for (n = 0, l = new Array(p); n < p; ++n) e = t[n], l[n] = f[e.source.index] / (f[e.source.index] + f[e.target.index]); a = new Array(p), i(), c = new Array(p), u() } } function i() { if (s) for (var n = 0, e = t.length; n < e; ++n) a[n] =+ p(t[n], n, t) } function u() { if (s) for (var n = 0, e = t.length; n < e; ++n) c[n] =+ d(t[n], n, t) } var a, c, s, f, l, h = du, p = n, d = Hg(30), v = 1; return null == t && (t = []), e.initialize = function (t) { s = t, r() }, e.links = function (n) { return arguments.length ? (t = n, r(), e) : t }, e.id = function (t) { return arguments.length ? (h = t, e) : h }, e.iterations = function (t) { return arguments.length ? (v =+ t, e) : v }, e.strength = function (t) { return arguments.length ? (p = "function" == typeof t ? t : Hg(+ t), i(), e) : p }, e.distance = function (t) { return arguments.length ? (d = "function" == typeof t ? t : Hg(+ t), u(), e) : d }, e }, $g = 10, Zg = Math.PI * (3 - Math.sqrt(5)), Gg = function (t) { function n() { e(), d.call("tick", u), a < c && (p.stop(), d.call("end", u)) } function e() { var n, e, r = t.length; for (a += (f - a) * s, h.each(function (t) { t(a) }), n = 0; n < r; ++n) e = t[n], null == e.fx ? e.x += e.vx *= l : (e.x = e.fx, e.vx = 0), null == e.fy ? e.y += e.vy *= l : (e.y = e.fy, e.vy = 0) } function r() { for (var n, e = 0, r = t.length; e < r; ++e) { if (n = t[e], n.index = e, isNaN(n.x) || isNaN(n.y)) { var i = $g * Math.sqrt(e), o = e * Zg; n.x = i * Math.cos(o), n.y = i * Math.sin(o) } (isNaN(n.vx) || isNaN(n.vy)) && (n.vx = n.vy = 0) } } function i(n) { return n.initialize && n.initialize(t), n } var u, a = 1, c = .001, s = 1 - Math.pow(c, 1 / 300), f = 0, l = .6, h = o(), p = Vn(n), d = Pn("tick", "end"); return null == t && (t = []), r(), u = { tick: e, restart: function () { return p.restart(n), u }, stop: function () { return p.stop(), u }, nodes: function (n) { return arguments.length ? (t = n, r(), h.each(i), u) : t }, alpha: function (t) { return arguments.length ? (a =+ t, u) : a }, alphaMin: function (t) { return arguments.length ? (c =+ t, u) : c }, alphaDecay: function (t) { return arguments.length ? (s =+ t, u) :+ s }, alphaTarget: function (t) { return arguments.length ? (f =+ t, u) : f }, velocityDecay: function (t) { return arguments.length ? (l = 1 - t, u) : 1 - l }, force: function (t, n) { return arguments.length > 1 ? (null == n ? h.remove(t) : h.set(t, i(n)), u) : h.get(t) }, find: function (n, e, r) { var i, o, u, a, c, s = 0, f = t.length; for (null == r ? r = 1 / 0 : r *= r, s = 0; s < f; ++s) a = t[s], i = n - a.x, o = e - a.y, u = i * i + o * o, u < r && (c = a, r = u); return c }, on: function (t, n) { return arguments.length > 1 ? (d.on(t, n), u) : d.on(t) } } }, Jg = function () { function t(t) { var n, a = i.length, c = I(i, _u, yu).visitAfter(e); for (u = t, n = 0; n < a; ++n) o = i[n], c.visit(r) } function n() { if (i) { var t, n = i.length; for (a = new Array(n), t = 0; t < n; ++t) a[t] =+ c(i[t], t, i) } } function e(t) { var n, e, r, i, o, u = 0; if (t.length) { for (r = i = o = 0; o < 4; ++o) (n = t[o]) && (e = n.value) && (u += e, r += e * n.x, i += e * n.y); t.x = r / u, t.y = i / u } else { n = t, n.x = n.data.x, n.y = n.data.y; do u += a[n.data.index]; while (n = n.next) } t.value = u } function r(t, n, e, r) { if (!t.value) return !0; var i = t.x - o.x, c = t.y - o.y, h = r - n, p = i * i + c * c; if (h * h / l < p) return p < f && (0 === i && (i = Xg(), p += i * i), 0 === c && (c = Xg(), p += c * c), p < s && (p = Math.sqrt(s * p)), o.vx += i * t.value * u / p, o.vy += c * t.value * u / p), !0; if (!(t.length || p >= f)) { (t.data !== o || t.next) && (0 === i && (i = Xg(), p += i * i), 0 === c && (c = Xg(), p += c * c), p < s && (p = Math.sqrt(s * p))); do t.data !== o && (h = a[t.data.index] * u / p, o.vx += i * h, o.vy += c * h); while (t = t.next) } } var i, o, u, a, c = Hg(-30), s = 1, f = 1 / 0, l = .81; return t.initialize = function (t) { i = t, n() }, t.strength = function (e) { return arguments.length ? (c = "function" == typeof e ? e : Hg(+ e), n(), t) : c }, t.distanceMin = function (n) { return arguments.length ? (s = n * n, t) : Math.sqrt(s) }, t.distanceMax = function (n) { return arguments.length ? (f = n * n, t) : Math.sqrt(f) }, t.theta = function (n) { return arguments.length ? (l = n * n, t) : Math.sqrt(l) }, t }, Qg = function (t) { function n(t) { for (var n, e = 0, u = r.length; e < u; ++e) n = r[e], n.vx += (o[e] - n.x) * i[e] * t } function e() { if (r) { var n, e = r.length; for (i = new Array(e), o = new Array(e), n = 0; n < e; ++n) i[n] = isNaN(o[n] =+ t(r[n], n, r)) ? 0 :+ u(r[n], n, r) } } var r, i, o, u = Hg(.1); return "function" != typeof t && (t = Hg(null == t ? 0 :+ t)), n.initialize = function (t) { r = t, e() }, n.strength = function (t) { return arguments.length ? (u = "function" == typeof t ? t : Hg(+ t), e(), n) : u }, n.x = function (r) { return arguments.length ? (t = "function" == typeof r ? r : Hg(+ r), e(), n) : t }, n }, Kg = function (t) { function n(t) { for (var n, e = 0, u = r.length; e < u; ++e) n = r[e], n.vy += (o[e] - n.y) * i[e] * t } function e() { if (r) { var n, e = r.length; for (i = new Array(e), o = new Array(e), n = 0; n < e; ++n) i[n] = isNaN(o[n] =+ t(r[n], n, r)) ? 0 :+ u(r[n], n, r) } } var r, i, o, u = Hg(.1); return "function" != typeof t && (t = Hg(null == t ? 0 :+ t)), n.initialize = function (t) { r = t, e() }, n.strength = function (t) { return arguments.length ? (u = "function" == typeof t ? t : Hg(+ t), e(), n) : u }, n.y = function (r) { return arguments.length ? (t = "function" == typeof r ? r : Hg(+ r), e(), n) : t }, n }, tm = function () { t .event .preventDefault(), t .event .stopImmediatePropagation() }, nm = function (t) { var n = t.document.documentElement, e = gy(t).on("dragstart.drag", tm, !0); "onselectstart" in n ? e.on("selectstart.drag", tm, !0) : (n.__noselect = n.style.MozUserSelect, n.style.MozUserSelect = "none") }, em = function (t) { return function () { return t } }; xu.prototype.on = function () { var t = this ._ .on .apply(this._, arguments); return t === this._ ? this : t }; var rm = function () { function n(t) { t .on("mousedown.drag", e) .on("touchstart.drag", o) .on("touchmove.drag", u) .on("touchend.drag touchcancel.drag", a) .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)") } function e() { if (!f && l.apply(this, arguments)) { var n = c("mouse", h.apply(this, arguments), U_, this, arguments); n && (gy(t.event.view).on("mousemove.drag", r, !0).on("mouseup.drag", i, !0), nm(t.event.view), gu(), s = !1, n("start")) } } function r() { tm(), s = !0, d.mouse("drag") } function i() { gy(t.event.view).on("mousemove.drag mouseup.drag", null), mu(t.event.view, s), tm(), d.mouse("end") } function o() { if (l.apply(this, arguments)) { var n, e, r = t.event.changedTouches, i = h.apply(this, arguments), o = r.length; for (n = 0; n < o; ++n) (e = c(r[n].identifier, i, xy, this, arguments)) && (gu(), e("start")) } } function u() { var n, e, r = t.event.changedTouches, i = r.length; for (n = 0; n < i; ++n) (e = d[r[n].identifier]) && (tm(), e("drag")) } function a() { var n, e, r = t.event.changedTouches, i = r.length; for (f && clearTimeout(f), f = setTimeout(function () { f = null }, 500), n = 0; n < i; ++n) (e = d[r[n].identifier]) && (gu(), e("end")) } function c(e, r, i, o, u) { var a, c, s, f = i(r, e), l = v.copy(); if (Xr(new xu(n, "beforestart", a, e, _, f[0], f[1], 0, 0, l), function () { return null != (t.event.subject = a = p.apply(o, u)) && (c = a.x - f[0] || 0, s = a.y - f[1] || 0, !0) })) return function t(h) { var p, v = f; switch (h) { case "start": d[e] = t, p = _++; break; case "end": delete d[e], --_; case "drag": f = i(r, e), p = _ } Xr(new xu(n, h, a, e, p, f[0] + c, f[1] + s, f[0] - v[0], f[1] - v[1], l), l.apply, l, [h, o, u]) } } var s, f, l = bu, h = wu, p = Mu, d = {}, v = Pn("start", "drag", "end"), _ = 0; return n.filter = function (t) { return arguments.length ? (l = "function" == typeof t ? t : em(!!t), n) : l }, n.container = function (t) { return arguments.length ? (h = "function" == typeof t ? t : em(t), n) : h }, n.subject = function (t) { return arguments.length ? (p = "function" == typeof t ? t : em(t), n) : p }, n.on = function () { var t = v .on .apply(v, arguments); return t === v ? n : t }, n }, im = function (t) { return function () { return t } }; ku.prototype = { constructor: ku, insert: function (t, n) { var e, r, i; if (t) { if (n.P = t, n.N = t.N, t.N && (t.N.P = n), t.N = n, t.R) { for (t = t.R; t.L;) t = t.L; t.L = n } else t.R = n; e = t } else this._ ? (t = Cu(this._), n.P = null, n.N = t, t.P = t.L = n, e = t) : (n.P = n.N = null, this._ = n, e = null); for (n.L = n.R = null, n.U = e, n.C = !0, t = n; e && e.C;) r = e.U, e === r.L ? (i = r.R, i && i.C ? (e.C = i.C = !1, r.C = !0, t = r) : (t === e.R && (Au(this, e), t = e, e = t.U), e.C = !1, r.C = !0, Eu(this, r))) : (i = r.L, i && i.C ? (e.C = i.C = !1, r.C = !0, t = r) : (t === e.L && (Eu(this, e), t = e, e = t.U), e.C = !1, r.C = !0, Au(this, r))), e = t.U; this._.C = !1 }, remove: function (t) { t.N && (t.N.P = t.P), t.P && (t.P.N = t.N), t.N = t.P = null; var n, e, r, i = t.U, o = t.L, u = t.R; if (e = o ? u ? Cu(u) : o : u, i ? i.L === t ? i.L = e : i.R = e : this._ = e, o && u ? (r = e.C, e.C = t.C, e.L = o, o.U = e, e !== u ? (i = e.U, e.U = t.U, t = e.R, i.L = t, e.R = u, u.U = e) : (e.U = i, i = e, t = e.R)) : (r = t.C, t = e), t && (t.U = i), !r) { if (t && t.C) return void(t.C = !1); do { if (t === this._) break; if (t === i.L) { if (n = i.R, n.C && (n.C = !1, i.C = !0, Au(this, i), n = i.R), n.L && n.L.C || n.R && n.R.C) { n.R && n.R.C || (n.L.C = !1, n.C = !0, Eu(this, n), n = i.R), n.C = i.C, i.C = n.R.C = !1, Au(this, i), t = this._; break } } else if (n = i.L, n.C && (n.C = !1, i.C = !0, Eu(this, i), n = i.L), n.L && n.L.C || n.R && n.R.C) { n.L && n.L.C || (n.R.C = !1, n.C = !0, Au(this, n), n = i.L), n.C = i.C, i.C = n.L.C = !1, Eu(this, i), t = this._; break } n.C = !0, t = i, i = i.U } while (!t.C); t && (t.C = !1) } } }; var om, um, am, cm, sm, fm = [], lm = [], hm = 1e-6, pm = 1e-12; na.prototype = { constructor: na, polygons: function () { var t = this.edges; return this .cells .map(function (n) { var e = n .halfedges .map(function (e) { return Fu(n, t[e]) }); return e.data = n.site.data, e }) }, triangles: function () { var t = [], n = this.edges; return this .cells .forEach(function (e, r) { for (var i, o = e.site, u = e.halfedges, a = -1, c = u.length, s = n[u[c - 1]], f = s.left === o ? s.right : s.left; ++a < c;) i = f, s = n[u[a]], f = s.left === o ? s.right : s.left, i && f && r < i.index && r < f.index && Ku(o, i, f) < 0 && t.push([o.data, i.data, f.data]) }), t }, links: function () { return this .edges .filter(function (t) { return t.right }) .map(function (t) { return {source: t.left.data, target: t.right.data} }) }, find: function (t, n, e) { var r, i = this, o = i._found || 0, u = i.cells[o] || i.cells[o = 0], a = t - u.site[0], c = n - u.site[1], s = a * a + c * c; do u = i.cells[r = o], o = null, u .halfedges .forEach(function (e) { var r = i.edges[e], a = r.left; if (a !== u.site && a || (a = r.right)) { var c = t - a[0], f = n - a[1], l = c * c + f * f; l < s && (s = l, o = a.index) } }); while (null !== o); return i._found = r, null == e || s <= e * e ? u.site : null } }; var dm = function () { function t(t) { return new na(t.map(function (r, i) { var o = [ Math.round(n(r, i, t) / hm) * hm, Math.round(e(r, i, t) / hm) * hm ]; return o.index = i, o.data = r, o }), r) } var n = Tu, e = Nu, r = null; return t.polygons = function (n) { return t(n).polygons() }, t.links = function (n) { return t(n).links() }, t.triangles = function (n) { return t(n).triangles() }, t.x = function (e) { return arguments.length ? (n = "function" == typeof e ? e : im(+ e), t) : n }, t.y = function (n) { return arguments.length ? (e = "function" == typeof n ? n : im(+ n), t) : e }, t.extent = function (n) { return arguments.length ? (r = null == n ? null : [ [ + n[0][0], + n[0][1] ], [ + n[1][0], + n[1][1] ] ], t) : r && [ [r[0][0], r[0][1] ], [r[1][0], r[1][1] ] ] }, t.size = function (n) { return arguments.length ? (r = null == n ? null : [ [ 0, 0 ], [ + n[0], + n[1] ] ], t) : r && [r[1][0] - r[0][0], r[1][1] - r[0][1] ] }, t }, vm = function (t) { return function () { return t } }; ra.prototype = { constructor: ra, scale: function (t) { return 1 === t ? this : new ra(this.k * t, this.x, this.y) }, translate: function (t, n) { return 0 === t & 0 === n ? this : new ra(this.k, this.x + this.k * t, this.y + this.k * n) }, apply: function (t) { return [ t[0] * this.k + this.x, t[1] * this.k + this.y ] }, applyX: function (t) { return t * this.k + this.x }, applyY: function (t) { return t * this.k + this.y }, invert: function (t) { return [ (t[0] - this.x) / this.k, (t[1] - this.y) / this.k ] }, invertX: function (t) { return (t - this.x) / this.k }, invertY: function (t) { return (t - this.y) / this.k }, rescaleX: function (t) { return t .copy() .domain(t.range().map(this.invertX, this).map(t.invert, t)) }, rescaleY: function (t) { return t .copy() .domain(t.range().map(this.invertY, this).map(t.invert, t)) }, toString: function () { return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")" } }; var _m = new ra(1, 0, 0); ia.prototype = ra.prototype; var ym = function () { t .event .preventDefault(), t .event .stopImmediatePropagation() }, gm = function () { function n(t) { t .on("wheel.zoom", s) .on("mousedown.zoom", f) .on("dblclick.zoom", l) .on("touchstart.zoom", h) .on("touchmove.zoom", p) .on("touchend.zoom touchcancel.zoom", d) .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)") .property("__zoom", ca) } function e(t, n) { return n = Math.max(m, Math.min(x, n)), n === t.k ? t : new ra(n, t.x, t.y) } function r(t, n, e) { var r = n[0] - e[0] * t.k, i = n[1] - e[1] * t.k; return r === t.x && i === t.y ? t : new ra(t.k, r, i) } function i(t, n) { var e = Math.min(0, t.invertX(n[0][0]) - b) || Math.max(0, t.invertX(n[1][0]) - w), r = Math.min(0, t.invertY(n[0][1]) - M) || Math.max(0, t.invertY(n[1][1]) - T); return e || r ? t.translate(e, r) : t } function o(t) { return [ ( + t[0][0] + + t[1][0]) / 2, ( + t[0][1] + + t[1][1]) / 2 ] } function u(t, n, e) { t .on("start.zoom", function () { a(this, arguments).start() }) .on("interrupt.zoom end.zoom", function () { a(this, arguments).end() }) .tween("zoom", function () { var t = this, r = arguments, i = a(t, r), u = g.apply(t, r), c = e || o(u), s = Math.max(u[1][0] - u[0][0], u[1][1] - u[0][1]), f = t.__zoom, l = "function" == typeof n ? n.apply(t, r) : n, h = Sp(f.invert(c).concat(s / f.k), l.invert(c).concat(s / l.k)); return function (t) { if (1 === t) t = l; else { var n = h(t), e = s / n[2]; t = new ra(e, c[0] - n[0] * e, c[1] - n[1] * e) } i.zoom(null, t) } }) } function a(t, n) { for (var e, r = 0, i = k.length; r < i; ++r) if ((e = k[r]).that === t) return e; return new c(t, n) } function c(t, n) { this.that = t, this.args = n, this.index = -1, this.active = 0, this.extent = g.apply(t, n) } function s() { function n() { o.wheel = null, o.end() } if (y.apply(this, arguments)) { var o = a(this, arguments), u = this.__zoom, c = Math.max(m, Math.min(x, u.k * Math.pow(2, -t.event.deltaY * (t.event.deltaMode ? 120 : 1) / 500))), s = U_(this); if (o.wheel) o.mouse[0][0] === s[0] && o.mouse[0][1] === s[1] || (o.mouse[1] = u.invert(o.mouse[0] = s)), clearTimeout(o.wheel); else { if (u.k === c) return; o.mouse = [ s, u.invert(s) ], Py(this), o.start() } ym(), o.wheel = setTimeout(n, E), o.zoom("mouse", i(r(e(u, c), o.mouse[0], o.mouse[1]), o.extent)) } } function f() { function n() { ym(), o.moved = !0, o.zoom("mouse", i(r(o.that.__zoom, o.mouse[0] = U_(o.that), o.mouse[1]), o.extent)) } function e() { u.on("mousemove.zoom mouseup.zoom", null), mu(t.event.view, o.moved), ym(), o.end() } if (!_ && y.apply(this, arguments)) { var o = a(this, arguments), u = gy(t.event.view) .on("mousemove.zoom", n, !0) .on("mouseup.zoom", e, !0), c = U_(this); nm(t.event.view), oa(), o.mouse = [ c, this .__zoom .invert(c) ], Py(this), o.start() } } function l() { if (y.apply(this, arguments)) { var o = this.__zoom, a = U_(this), c = o.invert(a), s = o.k * (t.event.shiftKey ? .5 : 2), f = i(r(e(o, s), a, c), g.apply(this, arguments)); ym(), N > 0 ? gy(this) .transition() .duration(N) .call(u, f, a) : gy(this).call(n.transform, f) } } function h() { if (y.apply(this, arguments)) { var n, e, r, i = a(this, arguments), o = t.event.changedTouches, u = o.length; for (oa(), n = 0; n < u; ++n) e = o[n], r = xy(this, o, e.identifier), r = [ r, this .__zoom .invert(r), e.identifier ], i.touch0 ? i.touch1 || (i.touch1 = r) : i.touch0 = r; return v && (v = clearTimeout(v), !i.touch1) ? (i.end(), l.apply(this, arguments)) : void(t.event.touches.length === u && (v = setTimeout(function () { v = null }, A), Py(this), i.start())) } } function p() { var n, o, u, c, s = a(this, arguments), f = t.event.changedTouches, l = f.length; for (ym(), v && (v = clearTimeout(v)), n = 0; n < l; ++n) o = f[n], u = xy(this, f, o.identifier), s.touch0 && s.touch0[2] === o.identifier ? s.touch0[0] = u : s.touch1 && s.touch1[2] === o.identifier && (s.touch1[0] = u); if (o = s.that.__zoom, s.touch1) { var h = s.touch0[0], p = s.touch0[1], d = s.touch1[0], _ = s.touch1[1], y = (y = d[0] - h[0]) * y + (y = d[1] - h[1]) * y, g = (g = _[0] - p[0]) * g + (g = _[1] - p[1]) * g; o = e(o, Math.sqrt(y / g)), u = [ (h[0] + d[0]) / 2, (h[1] + d[1]) / 2 ], c = [ (p[0] + _[0]) / 2, (p[1] + _[1]) / 2 ] } else { if (!s.touch0) return; u = s.touch0[0], c = s.touch0[1] } s.zoom("touch", i(r(o, u, c), s.extent)) } function d() { var n, e, r = a(this, arguments), i = t.event.changedTouches, o = i.length; for (oa(), _ && clearTimeout(_), _ = setTimeout(function () { _ = null }, A), n = 0; n < o; ++n) e = i[n], r.touch0 && r.touch0[2] === e.identifier ? delete r.touch0 : r.touch1 && r.touch1[2] === e.identifier && delete r.touch1; r.touch1 && !r.touch0 && (r.touch0 = r.touch1, delete r.touch1), r.touch0 || r.end() } var v, _, y = ua, g = aa, m = 0, x = 1 / 0, b = -x, w = x, M = b, T = w, N = 250, k = [], S = Pn("start", "zoom", "end"), A = 500, E = 150; return n.transform = function (t, n) { var e = t.selection ? t.selection() : t; e.property("__zoom", ca), t !== e ? u(t, n) : e .interrupt() .each(function () { a(this, arguments) .start() .zoom(null, "function" == typeof n ? n.apply(this, arguments) : n) .end() }) }, n.scaleBy = function (t, e) { n .scaleTo(t, function () { var t = this.__zoom.k, n = "function" == typeof e ? e.apply(this, arguments) : e; return t * n }) }, n.scaleTo = function (t, u) { n .transform(t, function () { var t = g.apply(this, arguments), n = this.__zoom, a = o(t), c = n.invert(a), s = "function" == typeof u ? u.apply(this, arguments) : u; return i(r(e(n, s), a, c), t) }) }, n.translateBy = function (t, e, r) { n .transform(t, function () { return i(this.__zoom.translate("function" == typeof e ? e.apply(this, arguments) : e, "function" == typeof r ? r.apply(this, arguments) : r), g.apply(this, arguments)) }) }, c.prototype = { start: function () { return 1 === ++this.active && (this.index = k.push(this) - 1, this.emit("start")), this }, zoom: function (t, n) { return this.mouse && "mouse" !== t && (this.mouse[1] = n.invert(this.mouse[0])), this.touch0 && "touch" !== t && (this.touch0[1] = n.invert(this.touch0[0])), this.touch1 && "touch" !== t && (this.touch1[1] = n.invert(this.touch1[0])), this.that.__zoom = n, this.emit("zoom"), this }, end: function () { return 0 === --this.active && (k.splice(this.index, 1), this.index = -1, this.emit("end")), this }, emit: function (t) { Xr(new ea(n, t, this.that.__zoom), S.apply, S, [t, this.that, this.args]) } }, n.filter = function (t) { return arguments.length ? (y = "function" == typeof t ? t : vm(!!t), n) : y }, n.extent = function (t) { return arguments.length ? (g = "function" == typeof t ? t : vm([ [ + t[0][0], + t[0][1] ], [ + t[1][0], + t[1][1] ] ]), n) : g }, n.scaleExtent = function (t) { return arguments.length ? (m =+ t[0], x =+ t[1], n) : [m, x] }, n.translateExtent = function (t) { return arguments.length ? (b =+ t[0][0], w =+ t[1][0], M =+ t[0][1], T =+ t[1][1], n) : [ [ b, M ], [w, T] ] }, n.duration = function (t) { return arguments.length ? (N =+ t, n) : N }, n.on = function () { var t = S .on .apply(S, arguments); return t === S ? n : t }, n }, mm = function (t) { return function () { return t } }, xm = function (t, n, e) { this.target = t, this.type = n, this.selection = e }, bm = function () { t .event .preventDefault(), t .event .stopImmediatePropagation() }, wm = { name: "drag" }, Mm = { name: "space" }, Tm = { name: "handle" }, Nm = { name: "center" }, km = { name: "x", handles: ["e", "w"].map(fa), input: function (t, n) { return t && [ [t[0], n[0][1] ], [t[1], n[1][1] ] ] }, output: function (t) { return t && [t[0][0], t[1][0] ] } }, Sm = { name: "y", handles: ["n", "s"].map(fa), input: function (t, n) { return t && [ [ n[0][0], t[0] ], [n[1][0], t[1]] ] }, output: function (t) { return t && [t[0][1], t[1][1] ] } }, Am = { name: "xy", handles: [ "n", "e", "s", "w", "nw", "ne", "se", "sw" ].map(fa), input: function (t) { return t }, output: function (t) { return t } }, Em = { overlay: "crosshair", selection: "move", n: "ns-resize", e: "ew-resize", s: "ns-resize", w: "ew-resize", nw: "nwse-resize", ne: "nesw-resize", se: "nwse-resize", sw: "nesw-resize" }, Cm = { e: "w", w: "e", nw: "ne", ne: "nw", se: "sw", sw: "se" }, zm = { n: "s", s: "n", nw: "sw", ne: "se", se: "ne", sw: "nw" }, Pm = { overlay: 1, selection: 1, n: null, e: 1, s: null, w: -1, nw: -1, ne: 1, se: 1, sw: -1 }, qm = { overlay: 1, selection: 1, n: -1, e: null, s: 1, w: null, nw: -1, ne: -1, se: 1, sw: 1 }, Lm = function () { return ga(Am) }, Rm = Math.cos, Um = Math.sin, Dm = Math.PI, Om = Dm / 2, Fm = 2 * Dm, Im = Math.max, Ym = function () { function t(t) { var o, u, a, c, s, f, l = t.length, h = [], p = Os(l), d = [], v = [], _ = v.groups = new Array(l), y = new Array(l * l); for (o = 0, s = -1; ++s < l;) { for (u = 0, f = -1; ++f < l;) u += t[s][f]; h.push(u), d.push(Os(l)), o += u } for (e && p.sort(function (t, n) { return e(h[t], h[n]) }), r && d.forEach(function (n, e) { n .sort(function (n, i) { return r(t[e][n], t[e][i]) }) }), o = Im(0, Fm - n * l) / o, c = o ? n : Fm / l, u = 0, s = -1; ++s < l;) { for (a = u, f = -1; ++f < l;) { var g = p[s], m = d[g][f], x = t[g][m], b = u, w = u += x * o; y[m * l + g] = { index: g, subindex: m, startAngle: b, endAngle: w, value: x } } _[g] = { index: g, startAngle: a, endAngle: u, value: h[g] }, u += c } for (s = -1; ++s < l;) for (f = s - 1; ++f < l;) { var M = y[f * l + s], T = y[s * l + f]; (M.value || T.value) && v.push(M.value < T.value ? { source: T, target: M } : { source: M, target: T }) } return i ? v.sort(i) : v } var n = 0, e = null, r = null, i = null; return t.padAngle = function (e) { return arguments.length ? (n = Im(0, e), t) : n }, t.sortGroups = function (n) { return arguments.length ? (e = n, t) : e }, t.sortSubgroups = function (n) { return arguments.length ? (r = n, t) : r }, t.sortChords = function (n) { return arguments.length ? (null == n ? i = null : (i = ma(n))._ = n, t) : i && i._ }, t }, Bm = Array.prototype.slice, jm = function (t) { return function () { return t } }, Hm = function () { function t() { var t, a = Bm.call(arguments), c = n.apply(this, a), s = e.apply(this, a), f =+ r.apply(this, (a[0] = c, a)), l = i.apply(this, a) - Om, h = o.apply(this, a) - Om, p = f * Rm(l), d = f * Um(l), v =+ r.apply(this, (a[0] = s, a)), _ = i.apply(this, a) - Om, y = o.apply(this, a) - Om; if (u || (u = t = L()), u.moveTo(p, d), u.arc(0, 0, f, l, h), l === _ && h === y || (u.quadraticCurveTo(0, 0, v * Rm(_), v * Um(_)), u.arc(0, 0, v, _, y)), u.quadraticCurveTo(0, 0, p, d), u.closePath(), t) return u = null, t + "" || null } var n = xa, e = ba, r = wa, i = Ma, o = Ta, u = null; return t.radius = function (n) { return arguments.length ? (r = "function" == typeof n ? n : jm(+ n), t) : r }, t.startAngle = function (n) { return arguments.length ? (i = "function" == typeof n ? n : jm(+ n), t) : i }, t.endAngle = function (n) { return arguments.length ? (o = "function" == typeof n ? n : jm(+ n), t) : o }, t.source = function (e) { return arguments.length ? (n = e, t) : n }, t.target = function (n) { return arguments.length ? (e = n, t) : e }, t.context = function (n) { return arguments.length ? (u = null == n ? null : n, t) : u }, t }, Xm = function () { return new Na }; Na.prototype = { constructor: Na, reset: function () { this.s = this.t = 0 }, add: function (t) { ka(Mx, t, this.t), ka(this, Mx.s, this.s), this.s ? this.t += Mx.t : this.s = Mx.t }, valueOf: function () { return this.s } }; var Vm, Wm, $m, Zm, Gm, Jm, Qm, Km, tx, nx, ex, rx, ix, ox, ux, ax, cx, sx, fx, lx, hx, px, dx, vx, _x, yx, gx, mx, xx, bx, wx, Mx = new Na, Tx = 1e-6, Nx = 1e-12, kx = Math.PI, Sx = kx / 2, Ax = kx / 4, Ex = 2 * kx, Cx = 180 / kx, zx = kx / 180, Px = Math.abs, qx = Math.atan, Lx = Math.atan2, Rx = Math.cos, Ux = Math.ceil, Dx = Math.exp, Ox = Math.log, Fx = Math.pow, Ix = Math.sin, Yx = Math.sign || function (t) { return t > 0 ? 1 : t < 0 ? -1 : 0; }, Bx = Math.sqrt, jx = Math.tan, Hx = { Feature: function (t, n) { za(t.geometry, n) }, FeatureCollection: function (t, n) { for (var e = t.features, r = -1, i = e.length; ++r < i;) za(e[r].geometry, n) } }, Xx = { Sphere: function (t, n) { n.sphere() }, Point: function (t, n) { t = t.coordinates, n.point(t[0], t[1], t[2]) }, MultiPoint: function (t, n) { for (var e = t.coordinates, r = -1, i = e.length; ++r < i;) t = e[r], n.point(t[0], t[1], t[2]) }, LineString: function (t, n) { Pa(t.coordinates, n, 0) }, MultiLineString: function (t, n) { for (var e = t.coordinates, r = -1, i = e.length; ++r < i;) Pa(e[r], n, 0) }, Polygon: function (t, n) { qa(t.coordinates, n) }, MultiPolygon: function (t, n) { for (var e = t.coordinates, r = -1, i = e.length; ++r < i;) qa(e[r], n) }, GeometryCollection: function (t, n) { for (var e = t.geometries, r = -1, i = e.length; ++r < i;) za(e[r], n) } }, Vx = function (t, n) { t && Hx.hasOwnProperty(t.type) ? Hx[t.type](t, n) : za(t, n) }, Wx = Xm(), $x = Xm(), Zx = { point: Ca, lineStart: Ca, lineEnd: Ca, polygonStart: function () { Wx.reset(), Zx.lineStart = La, Zx.lineEnd = Ra }, polygonEnd: function () { var t =+ Wx; $x.add(t < 0 ? Ex + t : t), this.lineStart = this.lineEnd = this.point = Ca }, sphere: function () { $x.add(Ex) } }, Gx = function (t) { return $x.reset(), Vx(t, Zx), 2 * $x }, Jx = Xm(), Qx = { point: Xa, lineStart: Wa, lineEnd: $a, polygonStart: function () { Qx.point = Za, Qx.lineStart = Ga, Qx.lineEnd = Ja, Jx.reset(), Zx.polygonStart() }, polygonEnd: function () { Zx.polygonEnd(), Qx.point = Xa, Qx.lineStart = Wa, Qx.lineEnd = $a, Wx < 0 ? (Jm = -(Km = 180), Qm = -(tx = 90)) : Jx > Tx ? tx = 90 : Jx < -Tx && (Qm = -90), ux[0] = Jm, ux[1] = Km } }, Kx = function (t) { var n, e, r, i, o, u, a; if (tx = Km = -(Jm = Qm = 1 / 0), ox = [], Vx(t, Qx), e = ox.length) { for (ox.sort(Ka), n = 1, r = ox[0], o = [r]; n < e; ++n) i = ox[n], tc(r, i[0]) || tc(r, i[1]) ? (Qa(r[0], i[1]) > Qa(r[0], r[1]) && (r[1] = i[1]), Qa(i[0], r[1]) > Qa(r[0], r[1]) && (r[0] = i[0])) : o.push(r = i); for (u = -(1 / 0), e = o.length - 1, n = 0, r = o[e]; n <= e; r = i, ++n) i = o[n], (a = Qa(r[1], i[0])) > u && (u = a, Jm = i[0], Km = r[1]) } return ox = ux = null, Jm === 1 / 0 || Qm === 1 / 0 ? [ [ NaN, NaN ], [NaN, NaN] ] : [ [ Jm, Qm ], [Km, tx] ] }, tb = { sphere: Ca, point: nc, lineStart: rc, lineEnd: uc, polygonStart: function () { tb.lineStart = ac, tb.lineEnd = cc }, polygonEnd: function () { tb.lineStart = rc, tb.lineEnd = uc } }, nb = function (t) { ax = cx = sx = fx = lx = hx = px = dx = vx = _x = yx = 0, Vx(t, tb); var n = vx, e = _x, r = yx, i = n * n + e * e + r * r; return i < Nx && (n = hx, e = px, r = dx, cx < Tx && (n = sx, e = fx, r = lx), i = n * n + e * e + r * r, i < Nx) ? [NaN, NaN] : [ Lx(e, n) * Cx, Aa(r / Bx(i)) * Cx ] }, eb = function (t) { return function () { return t } }, rb = function (t, n) { function e(e, r) { return e = t(e, r), n(e[0], e[1]) } return t.invert && n.invert && (e.invert = function (e, r) { return e = n.invert(e, r), e && t.invert(e[0], e[1]) }), e }; lc.invert = lc; var ib, ob, ub, ab, cb, sb, fb, lb, hb, pb, db, vb = function (t) { function n(n) { return n = t(n[0] * zx, n[1] * zx), n[0] *= Cx, n[1] *= Cx, n } return t = hc(t[0] * zx, t[1] * zx, t.length > 2 ? t[2] * zx : 0), n.invert = function (n) { return n = t.invert(n[0] * zx, n[1] * zx), n[0] *= Cx, n[1] *= Cx, n }, n }, _b = function () { function t(t, n) { e.push(t = r(t, n)), t[0] *= Cx, t[1] *= Cx } function n() { var t = i.apply(this, arguments), n = o.apply(this, arguments) * zx, c = u.apply(this, arguments) * zx; return e = [], r = hc(-t[0] * zx, -t[1] * zx, 0).invert, _c(a, n, c, 1), t = { type: "Polygon", coordinates: [e] }, e = r = null, t } var e, r, i = eb([0, 0]), o = eb(90), u = eb(6), a = { point: t }; return n.center = function (t) { return arguments.length ? (i = "function" == typeof t ? t : eb([ + t[0], + t[1] ]), n) : i }, n.radius = function (t) { return arguments.length ? (o = "function" == typeof t ? t : eb(+ t), n) : o }, n.precision = function (t) { return arguments.length ? (u = "function" == typeof t ? t : eb(+ t), n) : u }, n }, yb = function () { var t, n = []; return { point: function (n, e) { t.push([n, e]) }, lineStart: function () { n.push(t = []) }, lineEnd: Ca, rejoin: function () { n.length > 1 && n.push(n.pop().concat(n.shift())) }, result: function () { var e = n; return n = [], t = null, e } } }, gb = function (t, n, e, r, i, o) { var u, a = t[0], c = t[1], s = n[0], f = n[1], l = 0, h = 1, p = s - a, d = f - c; if (u = e - a, p || !(u > 0)) { if (u /= p, p < 0) { if (u < l) return; u < h && (h = u) } else if (p > 0) { if (u > h) return; u > l && (l = u) } if (u = i - a, p || !(u < 0)) { if (u /= p, p < 0) { if (u > h) return; u > l && (l = u) } else if (p > 0) { if (u < l) return; u < h && (h = u) } if (u = r - c, d || !(u > 0)) { if (u /= d, d < 0) { if (u < l) return; u < h && (h = u) } else if (d > 0) { if (u > h) return; u > l && (l = u) } if (u = o - c, d || !(u < 0)) { if (u /= d, d < 0) { if (u > h) return; u > l && (l = u) } else if (d > 0) { if (u < l) return; u < h && (h = u) } return l > 0 && (t[0] = a + l * p, t[1] = c + l * d), h < 1 && (n[0] = a + h * p, n[1] = c + h * d), !0 } } } } }, mb = function (t, n) { return Px(t[0] - n[0]) < Tx && Px(t[1] - n[1]) < Tx }, xb = function (t, n, e, r, i) { var o, u, a = [], c = []; if (t.forEach(function (t) { if (!((n = t.length - 1) <= 0)) { var n, e, r = t[0], u = t[n]; if (mb(r, u)) { for (i.lineStart(), o = 0; o < n; ++o) i.point((r = t[o])[0], r[1]); return void i.lineEnd() } a.push(e = new gc(r, t, null, !0)), c.push(e.o = new gc(r, null, e, !1)), a.push(e = new gc(u, t, null, !1)), c.push(e.o = new gc(u, null, e, !0)) } }), a.length) { for (c.sort(n), mc(a), mc(c), o = 0, u = c.length; o < u; ++o) c[o].e = e = !e; for (var s, f, l = a[0];;) { for (var h = l, p = !0; h.v;) if ((h = h.n) === l) return; s = h.z, i.lineStart(); do { if (h.v = h.o.v = !0, h.e) { if (p) for (o = 0, u = s.length; o < u; ++o) i.point((f = s[o])[0], f[1]); else r(h.x, h.n.x, 1, i); h = h.n } else { if (p) for (s = h.p.z, o = s.length - 1; o >= 0; --o) i.point((f = s[o])[0], f[1]); else r(h.x, h.p.x, -1, i); h = h.p } h = h.o, s = h.z, p = !p } while (!h.v); i.lineEnd() } } }, bb = 1e9, wb = -bb, Mb = function () { var t, n, e, r = 0, i = 0, o = 960, u = 500; return e = { stream: function (e) { return t && n === e ? t : t = xc(r, i, o, u)(n = e) }, extent: function (a) { return arguments.length ? (r =+ a[0][0], i =+ a[0][1], o =+ a[1][0], u =+ a[1][1], t = n = null, e) : [ [ r, i ], [o, u] ] } } }, Tb = Xm(), Nb = { sphere: Ca, point: Ca, lineStart: bc, lineEnd: Ca, polygonStart: Ca, polygonEnd: Ca }, kb = function (t) { return Tb.reset(), Vx(t, Nb), + Tb }, Sb = [ null, null ], Ab = { type: "LineString", coordinates: Sb }, Eb = function (t, n) { return Sb[0] = t, Sb[1] = n, kb(Ab) }, Cb = function (t, n) { var e = t[0] * zx, r = t[1] * zx, i = n[0] * zx, o = n[1] * zx, u = Rx(r), a = Ix(r), c = Rx(o), s = Ix(o), f = u * Rx(e), l = u * Ix(e), h = c * Rx(i), p = c * Ix(i), d = 2 * Aa(Bx(Ea(o - r) + u * c * Ea(i - e))), v = Ix(d), _ = d ? function (t) { var n = Ix(t *= d) / v, e = Ix(d - t) / v, r = e * f + n * h, i = e * l + n * p, o = e * a + n * s; return [ Lx(i, r) * Cx, Lx(o, Bx(r * r + i * i)) * Cx ] } : function () { return [ e * Cx, r * Cx ] }; return _.distance = d, _ }, zb = function (t) { return t }, Pb = Xm(), qb = Xm(), Lb = { point: Ca, lineStart: Ca, lineEnd: Ca, polygonStart: function () { Lb.lineStart = Ec, Lb.lineEnd = Pc }, polygonEnd: function () { Lb.lineStart = Lb.lineEnd = Lb.point = Ca, Pb.add(Px(qb)), qb.reset() }, result: function () { var t = Pb / 2; return Pb.reset(), t } }, Rb = 1 / 0, Ub = Rb, Db = -Rb, Ob = Db, Fb = { point: qc, lineStart: Ca, lineEnd: Ca, polygonStart: Ca, polygonEnd: Ca, result: function () { var t = [ [ Rb, Ub ], [Db, Ob] ]; return Db = Ob = -(Ub = Rb = 1 / 0), t } }, Ib = 0, Yb = 0, Bb = 0, jb = 0, Hb = 0, Xb = 0, Vb = 0, Wb = 0, $b = 0, Zb = { point: Lc, lineStart: Rc, lineEnd: Oc, polygonStart: function () { Zb.lineStart = Fc, Zb.lineEnd = Ic }, polygonEnd: function () { Zb.point = Lc, Zb.lineStart = Rc, Zb.lineEnd = Oc }, result: function () { var t = $b ? [ Vb / $b, Wb / $b ] : Xb ? [ jb / Xb, Hb / Xb ] : Bb ? [ Ib / Bb, Yb / Bb ] : [NaN, NaN]; return Ib = Yb = Bb = jb = Hb = Xb = Vb = Wb = $b = 0, t } }; jc.prototype = { _radius: 4.5, pointRadius: function (t) { return this._radius = t, this }, polygonStart: function () { this._line = 0 }, polygonEnd: function () { this._line = NaN }, lineStart: function () { this._point = 0 }, lineEnd: function () { 0 === this._line && this ._context .closePath(), this._point = NaN }, point: function (t, n) { switch (this._point) { case 0: this ._context .moveTo(t, n), this._point = 1; break; case 1: this ._context .lineTo(t, n); break; default: this ._context .moveTo(t + this._radius, n), this ._context .arc(t, n, this._radius, 0, Ex) } }, result: Ca }, Hc.prototype = { _circle: Xc(4.5), pointRadius: function (t) { return this._circle = Xc(t), this }, polygonStart: function () { this._line = 0 }, polygonEnd: function () { this._line = NaN }, lineStart: function () { this._point = 0 }, lineEnd: function () { 0 === this._line && this ._string .push("Z"), this._point = NaN }, point: function (t, n) { switch (this._point) { case 0: this ._string .push("M", t, ",", n), this._point = 1; break; case 1: this ._string .push("L", t, ",", n); break; default: this ._string .push("M", t, ",", n, this._circle) } }, result: function () { if (this._string.length) { var t = this ._string .join(""); return this._string = [], t } } }; var Gb = function (t, n) { function e(t) { return t && ("function" == typeof o && i.pointRadius(+ o.apply(this, arguments)), Vx(t, r(i))), i.result() } var r, i, o = 4.5; return e.area = function (t) { return Vx(t, r(Lb)), Lb.result() }, e.bounds = function (t) { return Vx(t, r(Fb)), Fb.result() }, e.centroid = function (t) { return Vx(t, r(Zb)), Zb.result() }, e.projection = function (n) { return arguments.length ? (r = null == (t = n) ? zb : n.stream, e) : t }, e.context = function (t) { return arguments.length ? (i = null == (n = t) ? new Hc : new jc(t), "function" != typeof o && i.pointRadius(o), e) : n }, e.pointRadius = function (t) { return arguments.length ? (o = "function" == typeof t ? t : (i.pointRadius(+ t), + t), e) : o }, e .projection(t) .context(n) }, Jb = Xm(), Qb = function (t, n) { var e = n[0], r = n[1], i = [ Ix(e), -Rx(e), 0 ], o = 0, u = 0; Jb.reset(); for (var a = 0, c = t.length; a < c; ++a) if (f = (s = t[a]).length) for (var s, f, l = s[f - 1], h = l[0], p = l[1] / 2 + Ax, d = Ix(p), v = Rx(p), _ = 0; _ < f; ++_, h = g, d = x, v = b, l = y) { var y = s[_], g = y[0], m = y[1] / 2 + Ax, x = Ix(m), b = Rx(m), w = g - h, M = w >= 0 ? 1 : -1, T = M * w, N = T > kx, k = d * x; if (Jb.add(Lx(k * M * Ix(T), v * b + k * Rx(T))), o += N ? w + M * Ex : w, N ^ h >= e ^ g >= e) { var S = Ya(Fa(l), Fa(y)); Ha(S); var A = Ya(i, S); Ha(A); var E = (N ^ w >= 0 ? -1 : 1) * Aa(A[2]); (r > E || r === E && (S[0] || S[1])) && (u += N ^ w >= 0 ? 1 : -1) } } return (o < -Tx || o < Tx && Jb < -Tx) ^ 1 & u }, Kb = function (t, n, e, r) { return function (i, o) { function u(n, e) { var r = i(n, e); t(n = r[0], e = r[1]) && o.point(n, e) } function a(t, n) { var e = i(t, n); _.point(e[0], e[1]) } function c() { b.point = a, _.lineStart() } function s() { b.point = u, _.lineEnd() } function f(t, n) { v.push([t, n]); var e = i(t, n); m.point(e[0], e[1]) } function l() { m.lineStart(), v = [] } function h() { f(v[0][0], v[0][1]), m.lineEnd(); var t, n, e, r, i = m.clean(), u = g.result(), a = u.length; if (v.pop(), p.push(v), v = null, a) if (1 & i) { if (e = u[0], (n = e.length - 1) > 0) { for (x || (o.polygonStart(), x = !0), o.lineStart(), t = 0; t < n; ++t) o.point((r = e[t])[0], r[1]); o.lineEnd() } } else a > 1 && 2 & i && u.push(u.pop().concat(u.shift())), d.push(u.filter(Vc)) } var p, d, v, _ = n(o), y = i.invert(r[0], r[1]), g = yb(), m = n(g), x = !1, b = { point: u, lineStart: c, lineEnd: s, polygonStart: function () { b.point = f, b.lineStart = l, b.lineEnd = h, d = [], p = [] }, polygonEnd: function () { b.point = u, b.lineStart = c, b.lineEnd = s, d = Js(d); var t = Qb(p, y); d.length ? (x || (o.polygonStart(), x = !0), xb(d, Wc, t, e, o)) : t && (x || (o.polygonStart(), x = !0), o.lineStart(), e(null, null, 1, o), o.lineEnd()), x && (o.polygonEnd(), x = !1), d = p = null }, sphere: function () { o.polygonStart(), o.lineStart(), e(null, null, 1, o), o.lineEnd(), o.polygonEnd() } }; return b } }, tw = Kb(function () { return !0 }, $c, Gc, [-kx, -Sx ]), nw = function (t, n) { function e(e, r, i, o) { _c(o, t, n, i, e, r) } function r(t, n) { return Rx(t) * Rx(n) > a } function i(t) { var n, e, i, a, f; return { lineStart: function () { a = i = !1, f = 1 }, point: function (l, h) { var p, d = [ l, h ], v = r(l, h), _ = c ? v ? 0 : u(l, h) : v ? u(l + (l < 0 ? kx : -kx), h) : 0; if (!n && (a = i = v) && t.lineStart(), v !== i && (p = o(n, d), (mb(n, p) || mb(d, p)) && (d[0] += Tx, d[1] += Tx, v = r(d[0], d[1]))), v !== i) f = 0, v ? (t.lineStart(), p = o(d, n), t.point(p[0], p[1])) : (p = o(n, d), t.point(p[0], p[1]), t.lineEnd()), n = p; else if (s && n && c ^ v) { var y; _ & e || !(y = o(d, n, !0)) || (f = 0, c ? (t.lineStart(), t.point(y[0][0], y[0][1]), t.point(y[1][0], y[1][1]), t.lineEnd()) : (t.point(y[1][0], y[1][1]), t.lineEnd(), t.lineStart(), t.point(y[0][0], y[0][1]))) } !v || n && mb(n, d) || t.point(d[0], d[1]), n = d, i = v, e = _ }, lineEnd: function () { i && t.lineEnd(), n = null }, clean: function () { return f | (a && i) << 1 } } } function o(t, n, e) { var r = Fa(t), i = Fa(n), o = [ 1, 0, 0 ], u = Ya(r, i), c = Ia(u, u), s = u[0], f = c - s * s; if (!f) return !e && t; var l = a * c / f, h = -a * s / f, p = Ya(o, u), d = ja(o, l), v = ja(u, h); Ba(d, v); var _ = p, y = Ia(d, _), g = Ia(_, _), m = y * y - g * (Ia(d, d) - 1); if (!(m < 0)) { var x = Bx(m), b = ja(_, (-y - x) / g); if (Ba(b, d), b = Oa(b), !e) return b; var w, M = t[0], T = n[0], N = t[1], k = n[1]; T < M && (w = M, M = T, T = w); var S = T - M, A = Px(S - kx) < Tx, E = A || S < Tx; if (!A && k < N && (w = N, N = k, k = w), E ? A ? N + k > 0 ^ b[1] < (Px(b[0] - M) < Tx ? N : k) : N <= b[1] && b[1] <= k : S > kx ^ (M <= b[0] && b[0] <= T)) { var C = ja(_, (-y + x) / g); return Ba(C, d), [b, Oa(C)] } } } function u(n, e) { var r = c ? t : kx - t, i = 0; return n < -r ? i |= 1 : n > r && (i |= 2), e < -r ? i |= 4 : e > r && (i |= 8), i } var a = Rx(t), c = a > 0, s = Px(a) > Tx; return Kb(r, i, e, c ? [ 0, -t ] : [-kx, t - kx ]) }, ew = function (t) { return {stream: Jc(t)} }; Qc.prototype = { constructor: Qc, point: function (t, n) { this .stream .point(t, n) }, sphere: function () { this .stream .sphere() }, lineStart: function () { this .stream .lineStart() }, lineEnd: function () { this .stream .lineEnd() }, polygonStart: function () { this .stream .polygonStart() }, polygonEnd: function () { this .stream .polygonEnd() } }; var rw = 16, iw = Rx(30 * zx), ow = function (t, n) { return + n ? es(t, n) : ns(t) }, uw = Jc({ point: function (t, n) { this .stream .point(t * zx, n * zx) } }), aw = function () { return os(as) .scale(155.424) .center([0, 33.6442]) }, cw = function () { return aw() .parallels([29.5, 45.5]) .scale(1070) .translate([480, 250]) .rotate([96, 0]) .center([-.6, 38.7]) }, sw = function () { function t(t) { var n = t[0], e = t[1]; return a = null, i.point(n, e), a || (o.point(n, e), a) || (u.point(n, e), a) } function n() { return e = r = null, t } var e, r, i, o, u, a, c = cw(), s = aw() .rotate([154, 0]) .center([-2, 58.5]) .parallels([55, 65]), f = aw() .rotate([157, 0]) .center([-3, 19.9]) .parallels([8, 18]), l = { point: function (t, n) { a = [t, n] } }; return t.invert = function (t) { var n = c.scale(), e = c.translate(), r = (t[0] - e[0]) / n, i = (t[1] - e[1]) / n; return (i >= .12 && i < .234 && r >= -.425 && r < -.214 ? s : i >= .166 && i < .234 && r >= -.214 && r < -.115 ? f : c).invert(t) }, t.stream = function (t) { return e && r === t ? e : e = cs([ c.stream(r = t), s.stream(t), f.stream(t) ]) }, t.precision = function (t) { return arguments.length ? (c.precision(t), s.precision(t), f.precision(t), n()) : c.precision() }, t.scale = function (n) { return arguments.length ? (c.scale(n), s.scale(.35 * n), f.scale(n), t.translate(c.translate())) : c.scale() }, t.translate = function (t) { if (!arguments.length) return c.translate(); var e = c.scale(), r =+ t[0], a =+ t[1]; return i = c .translate(t) .clipExtent([ [ r - .455 * e, a - .238 * e ], [ r + .455 * e, a + .238 * e ] ]) .stream(l), o = s .translate([ r - .307 * e, a + .201 * e ]) .clipExtent([ [ r - .425 * e + Tx, a + .12 * e + Tx ], [ r - .214 * e - Tx, a + .234 * e - Tx ] ]) .stream(l), u = f .translate([ r - .205 * e, a + .212 * e ]) .clipExtent([ [ r - .214 * e + Tx, a + .166 * e + Tx ], [ r - .115 * e - Tx, a + .234 * e - Tx ] ]) .stream(l), n() }, t.fitExtent = function (n, e) { return Kc(t, n, e) }, t.fitSize = function (n, e) { return ts(t, n, e) }, t.scale(1070) }, fw = ss(function (t) { return Bx(2 / (1 + t)) }); fw.invert = fs(function (t) { return 2 * Aa(t / 2) }); var lw = function () { return rs(fw) .scale(124.75) .clipAngle(179.999) }, hw = ss(function (t) { return (t = Sa(t)) && t / Ix(t) }); hw.invert = fs(function (t) { return t }); var pw = function () { return rs(hw) .scale(79.4188) .clipAngle(179.999) }; ls.invert = function (t, n) { return [ t, 2 * qx(Dx(n)) - Sx ] }; var dw = function () { return hs(ls).scale(961 / Ex) }, vw = function () { return os(ds) .scale(109.5) .parallels([30, 30]) }; vs.invert = vs; var _w = function () { return rs(vs).scale(152.63) }, yw = function () { return os(_s) .scale(131.154) .center([0, 13.9389]) }; ys.invert = fs(qx); var gw = function () { return rs(ys) .scale(144.049) .clipAngle(60) }, mw = function () { function t() { return i = o = null, u } var n, e, r, i, o, u, a = 1, c = 0, s = 0, f = zb, l = null, h = zb; return u = { stream: function (t) { return i && o === t ? i : i = f(h(o = t)) }, clipExtent: function (i) { return arguments.length ? (h = null == i ? (l = n = e = r = null, zb) : xc(l =+ i[0][0], n =+ i[0][1], e =+ i[1][0], r =+ i[1][1]), t()) : null == l ? null : [ [ l, n ], [e, r] ] }, scale: function (n) { return arguments.length ? (f = gs(a =+ n, c, s), t()) : a }, translate: function (n) { return arguments.length ? (f = gs(a, c =+ n[0], s =+ n[1]), t()) : [c, s] }, fitExtent: function (t, n) { return Kc(u, t, n) }, fitSize: function (t, n) { return ts(u, t, n) } } }; ms.invert = fs(Aa); var xw = function () { return rs(ms) .scale(249.5) .clipAngle(90 + Tx) }; xs.invert = fs(function (t) { return 2 * qx(t) }); var bw = function () { return rs(xs) .scale(250) .clipAngle(142) }; bs.invert = function (t, n) { return [-n, 2 * qx(Dx(t)) - Sx ] }; var ww = function () { var t = hs(bs), n = t.center, e = t.rotate; return t.center = function (t) { return arguments.length ? n([-t[1], t[0] ]) : (t = n(), [ t[1], -t[0] ]) }, t.rotate = function (t) { return arguments.length ? e([ t[0], t[1], t.length > 2 ? t[2] + 90 : 90 ]) : (t = e(), [ t[0], t[1], t[2] - 90 ]) }, e([0, 0, 90]).scale(159.155) }; t.version = ws, t.bisect = ks, t.bisectRight = ks, t.bisectLeft = Ss, t.ascending = Ms, t.bisector = Ts, t.descending = As, t.deviation = zs, t.extent = Ps, t.histogram = Hs, t.thresholdFreedmanDiaconis = Vs, t.thresholdScott = Ws, t.thresholdSturges = js, t.max = $s, t.mean = Zs, t.median = Gs, t.merge = Js, t.min = Qs, t.pairs = Ks, t.permute = tf, t.quantile = Xs, t.range = Os, t.scan = nf, t.shuffle = ef, t.sum = rf, t.ticks = Bs, t.tickStep = e, t.transpose = of, t.variance = Cs, t.zip = uf, t.entries = hf, t.keys = ff, t.values = lf, t.map = o, t.set = l, t.nest = cf, t.randomUniform = pf, t.randomNormal = df, t.randomLogNormal = vf, t.randomBates = yf, t.randomIrwinHall = _f, t.randomExponential = gf, t.easeLinear = h, t.easeQuad = v, t.easeQuadIn = p, t.easeQuadOut = d, t.easeQuadInOut = v, t.easeCubic = g, t.easeCubicIn = _, t.easeCubicOut = y, t.easeCubicInOut = g, t.easePoly = wf, t.easePolyIn = xf, t.easePolyOut = bf, t.easePolyInOut = wf, t.easeSin = b, t.easeSinIn = m, t.easeSinOut = x, t.easeSinInOut = b, t.easeExp = T, t.easeExpIn = w, t.easeExpOut = M, t.easeExpInOut = T, t.easeCircle = S, t.easeCircleIn = N, t.easeCircleOut = k, t.easeCircleInOut = S, t.easeBounce = E, t.easeBounceIn = A, t.easeBounceOut = E, t.easeBounceInOut = C, t.easeBack = Of, t.easeBackIn = Uf, t.easeBackOut = Df, t.easeBackInOut = Of, t.easeElastic = jf, t.easeElasticIn = Bf, t.easeElasticOut = jf, t.easeElasticInOut = Hf, t.polygonArea = Xf, t.polygonCentroid = Vf, t.polygonHull = $f, t.polygonContains = Zf, t.polygonLength = Gf, t.path = L, t.quadtree = I, t.queue = Z, t.arc = wl, t.area = Nl, t.line = Tl, t.pie = Al, t.radialArea = zl, t.radialLine = Cl, t.symbol = Jl, t.symbols = Gl, t.symbolCircle = Pl, t.symbolCross = ql, t.symbolDiamond = Ul, t.symbolSquare = Bl, t.symbolStar = Yl, t.symbolTriangle = Hl, t.symbolWye = Zl, t.curveBasisClosed = th, t.curveBasisOpen = nh, t.curveBasis = Kl, t.curveBundle = eh, t.curveCardinalClosed = ih, t.curveCardinalOpen = oh, t.curveCardinal = rh, t.curveCatmullRomClosed = ah, t.curveCatmullRomOpen = ch, t.curveCatmullRom = uh, t.curveLinearClosed = sh, t.curveLinear = Ml, t.curveMonotoneX = zt, t.curveMonotoneY = Pt, t.curveNatural = fh, t.curveStep = lh, t.curveStepAfter = Dt, t.curveStepBefore = Ut, t.stack = vh, t.stackOffsetExpand = _h, t.stackOffsetNone = ph, t.stackOffsetSilhouette = yh, t.stackOffsetWiggle = gh, t.stackOrderAscending = mh, t.stackOrderDescending = xh, t.stackOrderInsideOut = bh, t.stackOrderNone = dh, t.stackOrderReverse = wh, t.color = Bt, t.rgb = Vt, t.hsl = Gt, t.lab = tn, t.hcl = cn, t.cubehelix = ln, t.interpolate = _p, t.interpolateArray = sp, t.interpolateDate = fp, t.interpolateNumber = lp, t.interpolateObject = hp, t.interpolateRound = yp, t.interpolateString = vp, t.interpolateTransformCss = bp, t.interpolateTransformSvg = wp, t.interpolateZoom = Sp, t.interpolateRgb = up, t.interpolateRgbBasis = ap, t.interpolateRgbBasisClosed = cp, t.interpolateHsl = Ap, t.interpolateHslLong = Ep, t.interpolateLab = En, t.interpolateHcl = Cp, t.interpolateHclLong = zp, t.interpolateCubehelix = Pp, t.interpolateCubehelixLong = qp, t.interpolateBasis = rp, t.interpolateBasisClosed = ip, t.quantize = Lp, t.dispatch = Pn, t.dsvFormat = Op, t.csvParse = Ip, t.csvParseRows = Yp, t.csvFormat = Bp, t.csvFormatRows = jp, t.tsvParse = Xp, t.tsvParseRows = Vp, t.tsvFormat = Wp, t.tsvFormatRows = $p, t.request = Zp, t.html = Jp, t.json = Qp, t.text = Kp, t.xml = td, t.csv = ed, t.tsv = rd, t.now = jn, t.timer = Vn, t.timerFlush = Wn, t.timeout = pd, t.interval = dd, t.timeInterval = Qn, t.timeMillisecond = yd, t.timeMilliseconds = gd, t.timeSecond = Td, t.timeSeconds = Nd, t.timeMinute = kd, t.timeMinutes = Sd, t.timeHour = Ad, t.timeHours = Ed, t.timeDay = Cd, t.timeDays = zd, t.timeWeek = Pd, t.timeWeeks = Fd, t.timeSunday = Pd, t.timeSundays = Fd, t.timeMonday = qd, t.timeMondays = Id, t.timeTuesday = Ld, t.timeTuesdays = Yd; t.timeWednesday = Rd; t.timeWednesdays = Bd, t.timeThursday = Ud, t.timeThursdays = jd, t.timeFriday = Dd, t.timeFridays = Hd, t.timeSaturday = Od, t.timeSaturdays = Xd, t.timeMonth = Vd, t.timeMonths = Wd, t.timeYear = $d, t.timeYears = Zd, t.utcMillisecond = yd, t.utcMilliseconds = gd, t.utcSecond = Td, t.utcSeconds = Nd, t.utcMinute = Gd, t.utcMinutes = Jd, t.utcHour = Qd, t.utcHours = Kd, t.utcDay = tv, t.utcDays = nv, t.utcWeek = ev, t.utcWeeks = sv, t.utcSunday = ev, t.utcSundays = sv, t.utcMonday = rv, t.utcMondays = fv, t.utcTuesday = iv, t.utcTuesdays = lv, t.utcWednesday = ov, t.utcWednesdays = hv, t.utcThursday = uv, t.utcThursdays = pv, t.utcFriday = av, t.utcFridays = dv, t.utcSaturday = cv, t.utcSaturdays = vv, t.utcMonth = _v, t.utcMonths = yv, t.utcYear = gv, t.utcYears = xv, t.formatLocale = Pv, t.formatDefaultLocale = re, t.formatSpecifier = Ev, t.precisionFixed = Lv, t.precisionPrefix = Rv, t.precisionRound = Uv, t.isoFormat = Bv, t.isoParse = jv, t.timeFormatLocale = ae, t.timeFormatDefaultLocale = nr, t.scaleBand = or, t.scalePoint = ar, t.scaleIdentity = yr, t.scaleLinear = _r, t.scaleLog = Tr, t.scaleOrdinal = ir, t.scaleImplicit = Wv, t.scalePow = kr, t.scaleSqrt = Sr, t.scaleQuantile = Ar, t.scaleQuantize = Er, t.scaleThreshold = Cr, t.scaleTime = u_, t.scaleUtc = a_, t.schemeCategory10 = s_, t.schemeCategory20b = f_, t.schemeCategory20c = l_, t.schemeCategory20 = h_, t.scaleSequential = Rr, t.interpolateCubehelixDefault = p_, t.interpolateRainbow = y_, t.interpolateWarm = d_, t.interpolateCool = v_, t.interpolateViridis = g_, t.interpolateMagma = m_, t.interpolateInferno = x_, t.interpolatePlasma = b_, t.creator = N_, t.customEvent = Xr, t.local = Or, t.matcher = C_, t.mouse = U_, t.namespace = T_, t.namespaces = M_, t.select = gy, t.selectAll = my, t.selection = Pi, t.selector = D_, t.selectorAll = F_, t.touch = xy, t.touches = by, t.window = iy, t.active = ig, t.interrupt = Py, t.transition = fo, t.axisTop = mo, t.axisRight = xo, t.axisBottom = bo, t.axisLeft = wo, t.cluster = hg, t.hierarchy = zo, t.pack = Sg, t.packSiblings = Ng, t.packEnclose = Tg, t.partition = Cg, t.stratify = Lg, t.tree = Rg, t.treemap = Fg, t.treemapBinary = Ig, t.treemapDice = Eg, t.treemapSlice = Ug, t.treemapSliceDice = Yg, t.treemapSquarify = Og, t.treemapResquarify = Bg, t.forceCenter = jg, t.forceCollide = Vg, t.forceLink = Wg, t.forceManyBody = Jg, t.forceSimulation = Gg, t.forceX = Qg, t.forceY = Kg, t.drag = rm, t.dragDisable = nm, t.dragEnable = mu, t.voronoi = dm, t.zoom = gm, t.zoomIdentity = _m, t.zoomTransform = ia, t.brush = Lm, t.brushX = _a, t.brushY = ya, t.brushSelection = va, t.chord = Ym, t.ribbon = Hm, t.geoAlbers = cw, t.geoAlbersUsa = sw, t.geoArea = Gx, t.geoAzimuthalEqualArea = lw, t.geoAzimuthalEqualAreaRaw = fw, t.geoAzimuthalEquidistant = pw, t.geoAzimuthalEquidistantRaw = hw, t.geoBounds = Kx, t.geoCentroid = nb, t.geoCircle = _b, t.geoClipExtent = Mb, t.geoConicConformal = vw, t.geoConicConformalRaw = ds, t.geoConicEqualArea = aw, t.geoConicEqualAreaRaw = as, t.geoConicEquidistant = yw, t.geoConicEquidistantRaw = _s, t.geoDistance = Eb, t.geoEquirectangular = _w, t.geoEquirectangularRaw = vs, t.geoGnomonic = gw, t.geoGnomonicRaw = ys, t.geoGraticule = Sc, t.geoGraticule10 = Ac, t.geoIdentity = mw, t.geoInterpolate = Cb, t.geoLength = kb, t.geoMercator = dw, t.geoMercatorRaw = ls, t.geoOrthographic = xw, t.geoOrthographicRaw = ms, t.geoPath = Gb, t.geoProjection = rs, t.geoProjectionMutator = is, t.geoRotation = vb, t.geoStereographic = bw, t.geoStereographicRaw = xs, t.geoStream = Vx, t.geoTransform = ew, t.geoTransverseMercator = ww, t.geoTransverseMercatorRaw = bs, Object.defineProperty(t, "__esModule", { value: !0 }) });