define(function() { return /******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId]) {
/******/ 			return installedModules[moduleId].exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			i: moduleId,
/******/ 			l: false,
/******/ 			exports: {}
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.l = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// identity function for calling harmony imports with the correct context
/******/ 	__webpack_require__.i = function(value) { return value; };
/******/
/******/ 	// define getter function for harmony exports
/******/ 	__webpack_require__.d = function(exports, name, getter) {
/******/ 		if(!__webpack_require__.o(exports, name)) {
/******/ 			Object.defineProperty(exports, name, {
/******/ 				configurable: false,
/******/ 				enumerable: true,
/******/ 				get: getter
/******/ 			});
/******/ 		}
/******/ 	};
/******/
/******/ 	// getDefaultExport function for compatibility with non-harmony modules
/******/ 	__webpack_require__.n = function(module) {
/******/ 		var getter = module && module.__esModule ?
/******/ 			function getDefault() { return module['default']; } :
/******/ 			function getModuleExports() { return module; };
/******/ 		__webpack_require__.d(getter, 'a', getter);
/******/ 		return getter;
/******/ 	};
/******/
/******/ 	// Object.prototype.hasOwnProperty.call
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";
/******/
/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(__webpack_require__.s = 0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;

var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

// https://d3js.org Version 4.13.0. Copyright 2018 Mike Bostock.
(function (t, n) {
  "object" == ( false ? "undefined" : _typeof(exports)) && "undefined" != typeof module ? n(exports) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (n),
				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : n(t.d3 = t.d3 || {});
})(undefined, function (t) {
  "use strict";
  function n(t, n) {
    return t < n ? -1 : t > n ? 1 : t >= n ? 0 : NaN;
  }function e(t) {
    return 1 === t.length && (t = function (t) {
      return function (e, r) {
        return n(t(e), r);
      };
    }(t)), { left: function left(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 right(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;
      } };
  }function r(t, n) {
    return [t, n];
  }function i(t) {
    return null === t ? NaN : +t;
  }function o(t, n) {
    var e,
        r,
        o = t.length,
        u = 0,
        a = -1,
        c = 0,
        s = 0;if (null == n) for (; ++a < o;) {
      isNaN(e = i(t[a])) || (s += (r = e - c) * (e - (c += r / ++u)));
    } else for (; ++a < o;) {
      isNaN(e = i(n(t[a], a, t))) || (s += (r = e - c) * (e - (c += r / ++u)));
    }if (u > 1) return s / (u - 1);
  }function u(t, n) {
    var e = o(t, n);return e ? Math.sqrt(e) : e;
  }function a(t, n) {
    var e,
        r,
        i,
        o = t.length,
        u = -1;if (null == n) {
      for (; ++u < o;) {
        if (null != (e = t[u]) && e >= e) for (r = i = e; ++u < o;) {
          null != (e = t[u]) && (r > e && (r = e), i < e && (i = e));
        }
      }
    } else for (; ++u < o;) {
      if (null != (e = n(t[u], u, t)) && e >= e) for (r = i = e; ++u < o;) {
        null != (e = n(t[u], u, t)) && (r > e && (r = e), i < e && (i = e));
      }
    }return [r, i];
  }function c(t) {
    return function () {
      return t;
    };
  }function s(t) {
    return t;
  }function f(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;
  }function l(t, n, e) {
    var r,
        i,
        o,
        u,
        a = -1;if (n = +n, t = +t, e = +e, t === n && e > 0) return [t];if ((r = n < t) && (i = t, t = n, n = i), 0 === (u = h(t, n, e)) || !isFinite(u)) return [];if (u > 0) for (t = Math.ceil(t / u), n = Math.floor(n / u), o = new Array(i = Math.ceil(n - t + 1)); ++a < i;) {
      o[a] = (t + a) * u;
    } else for (t = Math.floor(t * u), n = Math.ceil(n * u), o = new Array(i = Math.ceil(t - n + 1)); ++a < i;) {
      o[a] = (t - a) / u;
    }return r && o.reverse(), o;
  }function h(t, n, e) {
    var r = (n - t) / Math.max(0, e),
        i = Math.floor(Math.log(r) / Math.LN10),
        o = r / Math.pow(10, i);return i >= 0 ? (o >= Hs ? 10 : o >= js ? 5 : o >= Xs ? 2 : 1) * Math.pow(10, i) : -Math.pow(10, -i) / (o >= Hs ? 10 : o >= js ? 5 : o >= Xs ? 2 : 1);
  }function p(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 >= Hs ? i *= 10 : o >= js ? i *= 5 : o >= Xs && (i *= 2), n < t ? -i : i;
  }function d(t) {
    return Math.ceil(Math.log(t.length) / Math.LN2) + 1;
  }function v(t, n, e) {
    if (null == e && (e = i), 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,
          o = (r - 1) * n,
          u = Math.floor(o),
          a = +e(t[u], u, t);return a + (+e(t[u + 1], u + 1, t) - a) * (o - u);
    }
  }function g(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 (n = (r = t[i]).length; --n >= 0;) {
        e[--u] = r[n];
      }
    }return e;
  }function _(t, n) {
    var e,
        r,
        i = t.length,
        o = -1;if (null == n) {
      for (; ++o < i;) {
        if (null != (e = t[o]) && e >= e) for (r = e; ++o < i;) {
          null != (e = t[o]) && r > e && (r = e);
        }
      }
    } else for (; ++o < i;) {
      if (null != (e = n(t[o], o, t)) && e >= e) for (r = e; ++o < i;) {
        null != (e = n(t[o], o, t)) && r > e && (r = e);
      }
    }return r;
  }function y(t) {
    if (!(i = t.length)) return [];for (var n = -1, e = _(t, m), r = new Array(e); ++n < e;) {
      for (var i, o = -1, u = r[n] = new Array(i); ++o < i;) {
        u[o] = t[o][n];
      }
    }return r;
  }function m(t) {
    return t.length;
  }function x(t) {
    return t;
  }function b(t) {
    return "translate(" + (t + .5) + ",0)";
  }function w(t) {
    return "translate(0," + (t + .5) + ")";
  }function M() {
    return !this.__axis;
  }function T(t, n) {
    function e(e) {
      var h = null == i ? n.ticks ? n.ticks.apply(n, r) : n.domain() : i,
          p = null == o ? n.tickFormat ? n.tickFormat.apply(n, r) : x : o,
          d = Math.max(u, 0) + c,
          v = n.range(),
          g = +v[0] + .5,
          _ = +v[v.length - 1] + .5,
          y = (n.bandwidth ? function (t) {
        var n = Math.max(0, t.bandwidth() - 1) / 2;return t.round() && (n = Math.round(n)), function (e) {
          return +t(e) + n;
        };
      } : function (t) {
        return function (n) {
          return +t(n);
        };
      })(n.copy()),
          m = e.selection ? e.selection() : e,
          b = m.selectAll(".domain").data([null]),
          w = m.selectAll(".tick").data(h, n).order(),
          T = w.exit(),
          N = w.enter().append("g").attr("class", "tick"),
          k = w.select("line"),
          S = w.select("text");b = b.merge(b.enter().insert("path", ".tick").attr("class", "domain").attr("stroke", "#000")), w = w.merge(N), k = k.merge(N.append("line").attr("stroke", "#000").attr(f + "2", s * u)), S = S.merge(N.append("text").attr("fill", "#000").attr(f, s * d).attr("dy", t === $s ? "0em" : t === Zs ? "0.71em" : "0.32em")), e !== m && (b = b.transition(e), w = w.transition(e), k = k.transition(e), S = S.transition(e), T = T.transition(e).attr("opacity", Qs).attr("transform", function (t) {
        return isFinite(t = y(t)) ? l(t) : this.getAttribute("transform");
      }), N.attr("opacity", Qs).attr("transform", function (t) {
        var n = this.parentNode.__axis;return l(n && isFinite(n = n(t)) ? n : y(t));
      })), T.remove(), b.attr("d", t === Gs || t == Ws ? "M" + s * a + "," + g + "H0.5V" + _ + "H" + s * a : "M" + g + "," + s * a + "V0.5H" + _ + "V" + s * a), w.attr("opacity", 1).attr("transform", function (t) {
        return l(y(t));
      }), k.attr(f + "2", s * u), S.attr(f, s * d).text(p), m.filter(M).attr("fill", "none").attr("font-size", 10).attr("font-family", "sans-serif").attr("text-anchor", t === Ws ? "start" : t === Gs ? "end" : "middle"), m.each(function () {
        this.__axis = y;
      });
    }var r = [],
        i = null,
        o = null,
        u = 6,
        a = 6,
        c = 3,
        s = t === $s || t === Gs ? -1 : 1,
        f = t === Gs || t === Ws ? "x" : "y",
        l = t === $s || t === Zs ? b : w;return e.scale = function (t) {
      return arguments.length ? (n = t, e) : n;
    }, e.ticks = function () {
      return r = Vs.call(arguments), e;
    }, e.tickArguments = function (t) {
      return arguments.length ? (r = null == t ? [] : Vs.call(t), e) : r.slice();
    }, e.tickValues = function (t) {
      return arguments.length ? (i = null == t ? null : Vs.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 N() {
    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 k(r);
  }function k(t) {
    this._ = t;
  }function S(t, n, e) {
    for (var r = 0, i = t.length; r < i; ++r) {
      if (t[r].name === n) {
        t[r] = Js, t = t.slice(0, r).concat(t.slice(r + 1));break;
      }
    }return null != e && t.push({ name: n, value: e }), t;
  }function E(t) {
    var n = t += "",
        e = n.indexOf(":");return e >= 0 && "xmlns" !== (n = t.slice(0, e)) && (t = t.slice(e + 1)), tf.hasOwnProperty(n) ? { space: tf[n], local: t } : t;
  }function A(t) {
    var n = E(t);return (n.local ? function (t) {
      return function () {
        return this.ownerDocument.createElementNS(t.space, t.local);
      };
    } : function (t) {
      return function () {
        var n = this.ownerDocument,
            e = this.namespaceURI;return e === Ks && n.documentElement.namespaceURI === Ks ? n.createElement(t) : n.createElementNS(e, t);
      };
    })(n);
  }function C() {}function z(t) {
    return null == t ? C : function () {
      return this.querySelector(t);
    };
  }function P() {
    return [];
  }function R(t) {
    return null == t ? P : function () {
      return this.querySelectorAll(t);
    };
  }function L(t) {
    return new Array(t.length);
  }function q(t, n) {
    this.ownerDocument = t.ownerDocument, this.namespaceURI = t.namespaceURI, this._next = null, this._parent = t, this.__data__ = n;
  }function D(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 q(t, o[a]);
    }for (; a < c; ++a) {
      (u = n[a]) && (i[a] = u);
    }
  }function U(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 = uf + u.call(c, c.__data__, a, n), s in f ? i[a] = c : f[s] = c);
    }for (a = 0; a < h; ++a) {
      (c = f[s = uf + u.call(t, o[a], a, o)]) ? (r[a] = c, c.__data__ = o[a], f[s] = null) : e[a] = new q(t, o[a]);
    }for (a = 0; a < l; ++a) {
      (c = n[a]) && f[p[a]] === c && (i[a] = c);
    }
  }function O(t, n) {
    return t < n ? -1 : t > n ? 1 : t >= n ? 0 : NaN;
  }function F(t) {
    return t.ownerDocument && t.ownerDocument.defaultView || t.document && t || t.defaultView;
  }function I(t, n) {
    return t.style.getPropertyValue(n) || F(t).getComputedStyle(t, null).getPropertyValue(n);
  }function Y(t) {
    return t.trim().split(/^|\s+/);
  }function B(t) {
    return t.classList || new H(t);
  }function H(t) {
    this._node = t, this._names = Y(t.getAttribute("class") || "");
  }function j(t, n) {
    for (var e = B(t), r = -1, i = n.length; ++r < i;) {
      e.add(n[r]);
    }
  }function X(t, n) {
    for (var e = B(t), r = -1, i = n.length; ++r < i;) {
      e.remove(n[r]);
    }
  }function V() {
    this.textContent = "";
  }function $() {
    this.innerHTML = "";
  }function W() {
    this.nextSibling && this.parentNode.appendChild(this);
  }function Z() {
    this.previousSibling && this.parentNode.insertBefore(this, this.parentNode.firstChild);
  }function G() {
    return null;
  }function Q() {
    var t = this.parentNode;t && t.removeChild(this);
  }function J() {
    return this.parentNode.insertBefore(this.cloneNode(!1), this.nextSibling);
  }function K() {
    return this.parentNode.insertBefore(this.cloneNode(!0), this.nextSibling);
  }function tt(t, n, e) {
    return t = nt(t, n, e), function (n) {
      var e = n.relatedTarget;e && (e === this || 8 & e.compareDocumentPosition(this)) || t.call(this, n);
    };
  }function nt(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 et(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 rt(t, n, e) {
    var r = af.hasOwnProperty(t.type) ? tt : nt;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 it(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 ot(t, n, e) {
    var r = F(t),
        i = r.CustomEvent;"function" == typeof 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 ut(t, n) {
    this._groups = t, this._parents = n;
  }function at() {
    return new ut([[document.documentElement]], cf);
  }function ct(t) {
    return "string" == typeof t ? new ut([[document.querySelector(t)]], [document.documentElement]) : new ut([[t]], cf);
  }function st() {
    return new ft();
  }function ft() {
    this._ = "@" + (++sf).toString(36);
  }function lt() {
    for (var n, e = t.event; n = e.sourceEvent;) {
      e = n;
    }return e;
  }function ht(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];
  }function pt(t) {
    var n = lt();return n.changedTouches && (n = n.changedTouches[0]), ht(t, n);
  }function dt(t, n, e) {
    arguments.length < 3 && (e = n, n = lt().changedTouches);for (var r, i = 0, o = n ? n.length : 0; i < o; ++i) {
      if ((r = n[i]).identifier === e) return ht(t, r);
    }return null;
  }function vt() {
    t.event.stopImmediatePropagation();
  }function gt() {
    t.event.preventDefault(), t.event.stopImmediatePropagation();
  }function _t(t) {
    var n = t.document.documentElement,
        e = ct(t).on("dragstart.drag", gt, !0);"onselectstart" in n ? e.on("selectstart.drag", gt, !0) : (n.__noselect = n.style.MozUserSelect, n.style.MozUserSelect = "none");
  }function yt(t, n) {
    var e = t.document.documentElement,
        r = ct(t).on("dragstart.drag", null);n && (r.on("click.drag", gt, !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 mt(t) {
    return function () {
      return t;
    };
  }function xt(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 bt() {
    return !t.event.button;
  }function wt() {
    return this.parentNode;
  }function Mt(n) {
    return null == n ? { x: t.event.x, y: t.event.y } : n;
  }function Tt() {
    return "ontouchstart" in this;
  }function Nt(t, n, e) {
    t.prototype = n.prototype = e, e.constructor = t;
  }function kt(t, n) {
    var e = Object.create(t.prototype);for (var r in n) {
      e[r] = n[r];
    }return e;
  }function St() {}function Et(t) {
    var n;return t = (t + "").trim().toLowerCase(), (n = pf.exec(t)) ? (n = parseInt(n[1], 16), new Rt(n >> 8 & 15 | n >> 4 & 240, n >> 4 & 15 | 240 & n, (15 & n) << 4 | 15 & n, 1)) : (n = df.exec(t)) ? At(parseInt(n[1], 16)) : (n = vf.exec(t)) ? new Rt(n[1], n[2], n[3], 1) : (n = gf.exec(t)) ? new Rt(255 * n[1] / 100, 255 * n[2] / 100, 255 * n[3] / 100, 1) : (n = _f.exec(t)) ? Ct(n[1], n[2], n[3], n[4]) : (n = yf.exec(t)) ? Ct(255 * n[1] / 100, 255 * n[2] / 100, 255 * n[3] / 100, n[4]) : (n = mf.exec(t)) ? Lt(n[1], n[2] / 100, n[3] / 100, 1) : (n = xf.exec(t)) ? Lt(n[1], n[2] / 100, n[3] / 100, n[4]) : bf.hasOwnProperty(t) ? At(bf[t]) : "transparent" === t ? new Rt(NaN, NaN, NaN, 0) : null;
  }function At(t) {
    return new Rt(t >> 16 & 255, t >> 8 & 255, 255 & t, 1);
  }function Ct(t, n, e, r) {
    return r <= 0 && (t = n = e = NaN), new Rt(t, n, e, r);
  }function zt(t) {
    return t instanceof St || (t = Et(t)), t ? (t = t.rgb(), new Rt(t.r, t.g, t.b, t.opacity)) : new Rt();
  }function Pt(t, n, e, r) {
    return 1 === arguments.length ? zt(t) : new Rt(t, n, e, null == r ? 1 : r);
  }function Rt(t, n, e, r) {
    this.r = +t, this.g = +n, this.b = +e, this.opacity = +r;
  }function Lt(t, n, e, r) {
    return r <= 0 ? t = n = e = NaN : e <= 0 || e >= 1 ? t = n = NaN : n <= 0 && (t = NaN), new Dt(t, n, e, r);
  }function qt(t, n, e, r) {
    return 1 === arguments.length ? function (t) {
      if (t instanceof Dt) return new Dt(t.h, t.s, t.l, t.opacity);if (t instanceof St || (t = Et(t)), !t) return new Dt();if (t instanceof Dt) return t;var n = (t = t.rgb()).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 Dt(u, a, c, t.opacity);
    }(t) : new Dt(t, n, e, null == r ? 1 : r);
  }function Dt(t, n, e, r) {
    this.h = +t, this.s = +n, this.l = +e, this.opacity = +r;
  }function Ut(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 Ot(t) {
    if (t instanceof It) return new It(t.l, t.a, t.b, t.opacity);if (t instanceof Vt) {
      var n = t.h * wf;return new It(t.l, Math.cos(n) * t.c, Math.sin(n) * t.c, t.opacity);
    }t instanceof Rt || (t = zt(t));var e = jt(t.r),
        r = jt(t.g),
        i = jt(t.b),
        o = Yt((.4124564 * e + .3575761 * r + .1804375 * i) / Tf),
        u = Yt((.2126729 * e + .7151522 * r + .072175 * i) / Nf);return new It(116 * u - 16, 500 * (o - u), 200 * (u - Yt((.0193339 * e + .119192 * r + .9503041 * i) / kf)), t.opacity);
  }function Ft(t, n, e, r) {
    return 1 === arguments.length ? Ot(t) : new It(t, n, e, null == r ? 1 : r);
  }function It(t, n, e, r) {
    this.l = +t, this.a = +n, this.b = +e, this.opacity = +r;
  }function Yt(t) {
    return t > Cf ? Math.pow(t, 1 / 3) : t / Af + Sf;
  }function Bt(t) {
    return t > Ef ? t * t * t : Af * (t - Sf);
  }function Ht(t) {
    return 255 * (t <= .0031308 ? 12.92 * t : 1.055 * Math.pow(t, 1 / 2.4) - .055);
  }function jt(t) {
    return (t /= 255) <= .04045 ? t / 12.92 : Math.pow((t + .055) / 1.055, 2.4);
  }function Xt(t, n, e, r) {
    return 1 === arguments.length ? function (t) {
      if (t instanceof Vt) return new Vt(t.h, t.c, t.l, t.opacity);t instanceof It || (t = Ot(t));var n = Math.atan2(t.b, t.a) * Mf;return new Vt(n < 0 ? n + 360 : n, Math.sqrt(t.a * t.a + t.b * t.b), t.l, t.opacity);
    }(t) : new Vt(t, n, e, null == r ? 1 : r);
  }function Vt(t, n, e, r) {
    this.h = +t, this.c = +n, this.l = +e, this.opacity = +r;
  }function $t(t, n, e, r) {
    return 1 === arguments.length ? function (t) {
      if (t instanceof Wt) return new Wt(t.h, t.s, t.l, t.opacity);t instanceof Rt || (t = zt(t));var n = t.r / 255,
          e = t.g / 255,
          r = t.b / 255,
          i = (Df * r + Lf * n - qf * e) / (Df + Lf - qf),
          o = r - i,
          u = (Rf * (e - i) - zf * o) / Pf,
          a = Math.sqrt(u * u + o * o) / (Rf * i * (1 - i)),
          c = a ? Math.atan2(u, o) * Mf - 120 : NaN;return new Wt(c < 0 ? c + 360 : c, a, i, t.opacity);
    }(t) : new Wt(t, n, e, null == r ? 1 : r);
  }function Wt(t, n, e, r) {
    this.h = +t, this.s = +n, this.l = +e, this.opacity = +r;
  }function Zt(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 Gt(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 Zt((e - r / n) * n, u, i, o, a);
    };
  }function Qt(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 Zt((e - r / n) * n, i, o, u, a);
    };
  }function Jt(t) {
    return function () {
      return t;
    };
  }function Kt(t, n) {
    return function (e) {
      return t + e * n;
    };
  }function tn(t, n) {
    var e = n - t;return e ? Kt(t, e > 180 || e < -180 ? e - 360 * Math.round(e / 360) : e) : Jt(isNaN(t) ? n : t);
  }function nn(t) {
    return 1 == (t = +t) ? en : function (n, e) {
      return e - n ? function (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);
        };
      }(n, e, t) : Jt(isNaN(n) ? e : n);
    };
  }function en(t, n) {
    var e = n - t;return e ? Kt(t, e) : Jt(isNaN(t) ? n : t);
  }function rn(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 = Pt(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 on(t, n) {
    var e,
        r = n ? n.length : 0,
        i = t ? Math.min(r, t.length) : 0,
        o = new Array(i),
        u = new Array(r);for (e = 0; e < i; ++e) {
      o[e] = fn(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;
    };
  }function un(t, n) {
    var e = new Date();return t = +t, n -= t, function (r) {
      return e.setTime(t + n * r), e;
    };
  }function an(t, n) {
    return t = +t, n -= t, function (e) {
      return t + n * e;
    };
  }function cn(t, n) {
    var e,
        r = {},
        i = {};null !== t && "object" == (typeof t === "undefined" ? "undefined" : _typeof(t)) || (t = {}), null !== n && "object" == (typeof n === "undefined" ? "undefined" : _typeof(n)) || (n = {});for (e in n) {
      e in t ? r[e] = fn(t[e], n[e]) : i[e] = n[e];
    }return function (t) {
      for (e in r) {
        i[e] = r[e](t);
      }return i;
    };
  }function sn(t, n) {
    var e,
        r,
        i,
        o = Vf.lastIndex = $f.lastIndex = 0,
        u = -1,
        a = [],
        c = [];for (t += "", n += ""; (e = Vf.exec(t)) && (r = $f.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: an(e, r) })), o = $f.lastIndex;
    }return o < n.length && (i = n.slice(o), a[u] ? a[u] += i : a[++u] = i), a.length < 2 ? c[0] ? function (t) {
      return function (n) {
        return t(n) + "";
      };
    }(c[0].x) : function (t) {
      return function () {
        return t;
      };
    }(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("");
    });
  }function fn(t, n) {
    var e,
        r = typeof n === "undefined" ? "undefined" : _typeof(n);return null == n || "boolean" === r ? Jt(n) : ("number" === r ? an : "string" === r ? (e = Et(n)) ? (n = e, Hf) : sn : n instanceof Et ? Hf : n instanceof Date ? un : Array.isArray(n) ? on : "function" != typeof n.valueOf && "function" != typeof n.toString || isNaN(n) ? cn : an)(t, n);
  }function ln(t, n) {
    return t = +t, n -= t, function (e) {
      return Math.round(t + n * e);
    };
  }function hn(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) * Wf, skewX: Math.atan(c) * Wf, scaleX: u, scaleY: a };
  }function pn(t, n, e, r) {
    function i(t) {
      return t.length ? t.pop() + " " : "";
    }return function (o, u) {
      var a = [],
          c = [];return o = t(o), u = t(u), function (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: an(t, i) }, { i: c - 2, x: an(r, o) });
        } else (i || o) && u.push("translate(" + i + n + o + e);
      }(o.translateX, o.translateY, u.translateX, u.translateY, a, c), function (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: an(t, n) })) : n && e.push(i(e) + "rotate(" + n + r);
      }(o.rotate, u.rotate, a, c), function (t, n, e, o) {
        t !== n ? o.push({ i: e.push(i(e) + "skewX(", null, r) - 2, x: an(t, n) }) : n && e.push(i(e) + "skewX(" + n + r);
      }(o.skewX, u.skewX, a, c), function (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: an(t, e) }, { i: a - 2, x: an(n, r) });
        } else 1 === e && 1 === r || o.push(i(o) + "scale(" + e + "," + r + ")");
      }(o.scaleX, o.scaleY, u.scaleX, u.scaleY, a, c), o = u = null, function (t) {
        for (var n, e = -1, r = c.length; ++e < r;) {
          a[(n = c[e]).i] = n.x(t);
        }return a.join("");
      };
    };
  }function dn(t) {
    return ((t = Math.exp(t)) + 1 / t) / 2;
  }function vn(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 < nl) r = Math.log(s / u) / Jf, e = function e(t) {
      return [i + t * f, o + t * l, u * Math.exp(Jf * t * r)];
    };else {
      var p = Math.sqrt(h),
          d = (s * s - u * u + tl * h) / (2 * u * Kf * p),
          v = (s * s - u * u - tl * h) / (2 * s * Kf * p),
          g = Math.log(Math.sqrt(d * d + 1) - d),
          _ = Math.log(Math.sqrt(v * v + 1) - v);r = (_ - g) / Jf, e = function e(t) {
        var n = t * r,
            e = dn(g),
            a = u / (Kf * p) * (e * function (t) {
          return ((t = Math.exp(2 * t)) - 1) / (t + 1);
        }(Jf * n + g) - function (t) {
          return ((t = Math.exp(t)) - 1 / t) / 2;
        }(g));return [i + a * f, o + a * l, u * e / dn(Jf * n + g)];
      };
    }return e.duration = 1e3 * r, e;
  }function gn(t) {
    return function (n, e) {
      var r = t((n = qt(n)).h, (e = qt(e)).h),
          i = en(n.s, e.s),
          o = en(n.l, e.l),
          u = en(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 _n(t) {
    return function (n, e) {
      var r = t((n = Xt(n)).h, (e = Xt(e)).h),
          i = en(n.c, e.c),
          o = en(n.l, e.l),
          u = en(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 yn(t) {
    return function n(e) {
      function r(n, r) {
        var i = t((n = $t(n)).h, (r = $t(r)).h),
            o = en(n.s, r.s),
            u = en(n.l, r.l),
            a = en(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 mn() {
    return pl || (gl(xn), pl = vl.now() + dl);
  }function xn() {
    pl = 0;
  }function bn() {
    this._call = this._time = this._next = null;
  }function wn(t, n, e) {
    var r = new bn();return r.restart(t, n, e), r;
  }function Mn() {
    mn(), ++cl;for (var t, n = Yf; n;) {
      (t = pl - n._time) >= 0 && n._call.call(null, t), n = n._next;
    }--cl;
  }function Tn() {
    pl = (hl = vl.now()) + dl, cl = sl = 0;try {
      Mn();
    } finally {
      cl = 0, function () {
        var t,
            n,
            e = Yf,
            r = 1 / 0;for (; 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 : Yf = n);
        }Bf = t, kn(r);
      }(), pl = 0;
    }
  }function Nn() {
    var t = vl.now(),
        n = t - hl;n > ll && (dl -= n, hl = t);
  }function kn(t) {
    if (!cl) {
      sl && (sl = clearTimeout(sl));t - pl > 24 ? (t < 1 / 0 && (sl = setTimeout(Tn, t - vl.now() - dl)), fl && (fl = clearInterval(fl))) : (fl || (hl = vl.now(), fl = setInterval(Nn, ll)), cl = 1, gl(Tn));
    }
  }function Sn(t, n, e) {
    var r = new bn();return n = null == n ? 0 : +n, r.restart(function (e) {
      r.stop(), t(e + n);
    }, n, e), r;
  }function En(t, n, e, r, i, o) {
    var u = t.__transition;if (u) {
      if (e in u) return;
    } else t.__transition = {};(function (t, n, e) {
      function r(c) {
        var s, f, l, h;if (e.state !== xl) return o();for (s in a) {
          if ((h = a[s]).name === e.name) {
            if (h.state === wl) return Sn(r);h.state === Ml ? (h.state = Nl, h.timer.stop(), h.on.call("interrupt", t, t.__data__, h.index, h.group), delete a[s]) : +s < n && (h.state = Nl, h.timer.stop(), delete a[s]);
          }
        }if (Sn(function () {
          e.state === wl && (e.state = Ml, e.timer.restart(i, e.delay, e.time), i(c));
        }), e.state = bl, e.on.call("start", t, t.__data__, e.index, e.group), e.state === bl) {
          for (e.state = wl, u = 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)) && (u[++f] = h);
          }u.length = f + 1;
        }
      }function i(n) {
        for (var r = n < e.duration ? e.ease.call(null, n / e.duration) : (e.timer.restart(o), e.state = Tl, 1), i = -1, a = u.length; ++i < a;) {
          u[i].call(null, r);
        }e.state === Tl && (e.on.call("end", t, t.__data__, e.index, e.group), o());
      }function o() {
        e.state = Nl, e.timer.stop(), delete a[n];for (var r in a) {
          return;
        }delete t.__transition;
      }var u,
          a = t.__transition;a[n] = e, e.timer = wn(function (t) {
        e.state = xl, e.timer.restart(r, e.delay, e.time), e.delay <= t && r(t - e.delay);
      }, 0, e.time);
    })(t, e, { name: n, index: r, group: i, on: _l, tween: yl, time: o.time, delay: o.delay, duration: o.duration, ease: o.ease, timer: null, state: ml });
  }function An(t, n) {
    var e = zn(t, n);if (e.state > ml) throw new Error("too late; already scheduled");return e;
  }function Cn(t, n) {
    var e = zn(t, n);if (e.state > bl) throw new Error("too late; already started");return e;
  }function zn(t, n) {
    var e = t.__transition;if (!e || !(e = e[n])) throw new Error("transition not found");return e;
  }function Pn(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 > bl && e.state < Tl, e.state = Nl, e.timer.stop(), r && e.on.call("interrupt", t, t.__data__, e.index, e.group), delete o[i]) : u = !1;
      }u && delete t.__transition;
    }
  }function Rn(t, n, e) {
    var r = t._id;return t.each(function () {
      var t = Cn(this, r);(t.value || (t.value = {}))[n] = e.apply(this, arguments);
    }), function (t) {
      return zn(t, r).value[n];
    };
  }function Ln(t, n) {
    var e;return ("number" == typeof n ? an : n instanceof Et ? Hf : (e = Et(n)) ? (n = e, Hf) : sn)(t, n);
  }function qn(t, n, e, r) {
    this._groups = t, this._parents = n, this._name = e, this._id = r;
  }function Dn(t) {
    return at().transition(t);
  }function Un() {
    return ++Sl;
  }function On(t) {
    return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;
  }function Fn(t) {
    return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;
  }function In(t) {
    return (1 - Math.cos(Pl * t)) / 2;
  }function Yn(t) {
    return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;
  }function Bn(t) {
    return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;
  }function Hn(t) {
    return (t = +t) < Ll ? Hl * t * t : t < Dl ? Hl * (t -= ql) * t + Ul : t < Fl ? Hl * (t -= Ol) * t + Il : Hl * (t -= Yl) * t + Bl;
  }function jn(t, n) {
    for (var e; !(e = t.__transition) || !(e = e[n]);) {
      if (!(t = t.parentNode)) return Ql.time = mn(), Ql;
    }return e;
  }function Xn(t) {
    return function () {
      return t;
    };
  }function Vn() {
    t.event.stopImmediatePropagation();
  }function $n() {
    t.event.preventDefault(), t.event.stopImmediatePropagation();
  }function Wn(t) {
    return { type: t };
  }function Zn() {
    return !t.event.button;
  }function Gn() {
    var t = this.ownerSVGElement || this;return [[0, 0], [t.width.baseVal.value, t.height.baseVal.value]];
  }function Qn(t) {
    for (; !t.__brush;) {
      if (!(t = t.parentNode)) return;
    }return t.__brush;
  }function Jn(t) {
    return t[0][0] === t[1][0] || t[0][1] === t[1][1];
  }function Kn(n) {
    function e(t) {
      var e = t.property("__brush", a).selectAll(".overlay").data([Wn("overlay")]);e.enter().append("rect").attr("class", "overlay").attr("pointer-events", "all").attr("cursor", uh.overlay).merge(e).each(function () {
        var t = Qn(this).extent;ct(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([Wn("selection")]).enter().append("rect").attr("class", "selection").attr("cursor", uh.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 uh[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 = ct(this),
          n = Qn(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 = pt(w);!L || x || b || (Math.abs(t[0] - D[0]) > Math.abs(t[1] - D[1]) ? b = !0 : x = !0), D = t, m = !0, $n(), o();
      }function o() {
        var t;switch (_ = D[0] - q[0], y = D[1] - q[1], T) {case th:case Kl:
            N && (_ = Math.max(C - a, Math.min(P - p, _)), s = a + _, d = p + _), k && (y = Math.max(z - l, Math.min(R - v, y)), h = l + y, g = v + y);break;case nh:
            N < 0 ? (_ = Math.max(C - a, Math.min(P - a, _)), s = a + _, d = p) : N > 0 && (_ = Math.max(C - p, Math.min(P - p, _)), s = a, d = p + _), k < 0 ? (y = Math.max(z - l, Math.min(R - l, y)), h = l + y, g = v) : k > 0 && (y = Math.max(z - v, Math.min(R - v, y)), h = l, g = v + y);break;case eh:
            N && (s = Math.max(C, Math.min(P, a - _ * N)), d = Math.max(C, Math.min(P, p + _ * N))), k && (h = Math.max(z, Math.min(R, l - y * k)), g = Math.max(z, Math.min(R, v + y * k)));}d < s && (N *= -1, t = a, a = p, p = t, t = s, s = d, d = t, M in ah && F.attr("cursor", uh[M = ah[M]])), g < h && (k *= -1, t = l, l = v, v = t, t = h, h = g, g = t, M in ch && F.attr("cursor", uh[M = ch[M]])), S.selection && (A = S.selection), x && (s = A[0][0], d = A[1][0]), b && (h = A[0][1], g = A[1][1]), A[0][0] === s && A[0][1] === h && A[1][0] === d && A[1][1] === g || (S.selection = [[s, h], [d, g]], r.call(w), U.brush());
      }function u() {
        if (Vn(), t.event.touches) {
          if (t.event.touches.length) return;c && clearTimeout(c), c = setTimeout(function () {
            c = null;
          }, 500), O.on("touchmove.brush touchend.brush touchcancel.brush", null);
        } else yt(t.event.view, m), I.on("keydown.brush keyup.brush mousemove.brush mouseup.brush", null);O.attr("pointer-events", "all"), F.attr("cursor", uh.overlay), S.selection && (A = S.selection), Jn(A) && (S.selection = null, r.call(w)), U.end();
      }if (t.event.touches) {
        if (t.event.changedTouches.length < t.event.touches.length) return $n();
      } else if (c) return;if (f.apply(this, arguments)) {
        var a,
            s,
            l,
            h,
            p,
            d,
            v,
            g,
            _,
            y,
            m,
            x,
            b,
            w = this,
            M = t.event.target.__data__.type,
            T = "selection" === (t.event.metaKey ? M = "overlay" : M) ? Kl : t.event.altKey ? eh : nh,
            N = n === ih ? null : sh[M],
            k = n === rh ? null : fh[M],
            S = Qn(w),
            E = S.extent,
            A = S.selection,
            C = E[0][0],
            z = E[0][1],
            P = E[1][0],
            R = E[1][1],
            L = N && k && t.event.shiftKey,
            q = pt(w),
            D = q,
            U = i(w, arguments).beforestart();"overlay" === M ? S.selection = A = [[a = n === ih ? C : q[0], l = n === rh ? z : q[1]], [p = n === ih ? P : a, v = n === rh ? R : l]] : (a = A[0][0], l = A[0][1], p = A[1][0], v = A[1][1]), s = a, h = l, d = p, g = v;var O = ct(w).attr("pointer-events", "none"),
            F = O.selectAll(".overlay").attr("cursor", uh[M]);if (t.event.touches) O.on("touchmove.brush", e, !0).on("touchend.brush touchcancel.brush", u, !0);else {
          var I = ct(t.event.view).on("keydown.brush", function () {
            switch (t.event.keyCode) {case 16:
                L = N && k;break;case 18:
                T === nh && (N && (p = d - _ * N, a = s + _ * N), k && (v = g - y * k, l = h + y * k), T = eh, o());break;case 32:
                T !== nh && T !== eh || (N < 0 ? p = d - _ : N > 0 && (a = s - _), k < 0 ? v = g - y : k > 0 && (l = h - y), T = th, F.attr("cursor", uh.selection), o());break;default:
                return;}$n();
          }, !0).on("keyup.brush", function () {
            switch (t.event.keyCode) {case 16:
                L && (x = b = L = !1, o());break;case 18:
                T === eh && (N < 0 ? p = d : N > 0 && (a = s), k < 0 ? v = g : k > 0 && (l = h), T = nh, o());break;case 32:
                T === th && (t.event.altKey ? (N && (p = d - _ * N, a = s + _ * N), k && (v = g - y * k, l = h + y * k), T = eh) : (N < 0 ? p = d : N > 0 && (a = s), k < 0 ? v = g : k > 0 && (l = h), T = nh), F.attr("cursor", uh[M]), o());break;default:
                return;}$n();
          }, !0).on("mousemove.brush", e, !0).on("mouseup.brush", u, !0);_t(t.event.view);
        }Vn(), Pn(w), r.call(w), U.start();
      }
    }function a() {
      var t = this.__brush || { selection: null };return t.extent = s.apply(this, arguments), t.dim = n, t;
    }var c,
        s = Gn,
        f = Zn,
        l = N(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 && Jn(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 = fn(c, s);return c && s ? t : t(1);
      }) : t.each(function () {
        var t = arguments,
            o = this.__brush,
            u = n.input("function" == typeof e ? e.apply(this, t) : e, o.extent),
            a = i(this, t).beforestart();Pn(this), o.selection = null == u || Jn(u) ? null : u, r.call(this), a.start().brush().end();
      });
    }, o.prototype = { beforestart: function beforestart() {
        return 1 == ++this.active && (this.state.emitter = this, this.starting = !0), this;
      }, start: function start() {
        return this.starting && (this.starting = !1, this.emit("start")), this;
      }, brush: function brush() {
        return this.emit("brush"), this;
      }, end: function end() {
        return 0 == --this.active && (delete this.state.emitter, this.emit("end")), this;
      }, emit: function emit(t) {
        it(new function (t, n, e) {
          this.target = t, this.type = n, this.selection = e;
        }(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 : Xn([[+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 : Xn(!!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 te(t) {
    return function () {
      return t;
    };
  }function ne() {
    this._x0 = this._y0 = this._x1 = this._y1 = null, this._ = "";
  }function ee() {
    return new ne();
  }function re(t) {
    return t.source;
  }function ie(t) {
    return t.target;
  }function oe(t) {
    return t.radius;
  }function ue(t) {
    return t.startAngle;
  }function ae(t) {
    return t.endAngle;
  }function ce() {}function se(t, n) {
    var e = new ce();if (t instanceof ce) t.each(function (t, n) {
      e.set(n, t);
    });else if (Array.isArray(t)) {
      var r,
          i = -1,
          o = t.length;if (null == n) for (; ++i < o;) {
        e.set(i, t[i]);
      } else for (; ++i < o;) {
        e.set(n(r = t[i], i, t), r);
      }
    } else if (t) for (var u in t) {
      e.set(u, t[u]);
    }return e;
  }function fe() {
    return {};
  }function le(t, n, e) {
    t[n] = e;
  }function he() {
    return se();
  }function pe(t, n, e) {
    t.set(n, e);
  }function de() {}function ve(t, n) {
    var e = new de();if (t instanceof de) 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 ge(t) {
    return new Function("d", "return {" + t.map(function (t, n) {
      return JSON.stringify(t) + ": d[" + n + "]";
    }).join(",") + "}");
  }function _e(t) {
    function n(t, n) {
      function e() {
        if (s) return Mh;if (f) return f = !1, wh;var n,
            e,
            r = a;if (t.charCodeAt(r) === Th) {
          for (; a++ < u && t.charCodeAt(a) !== Th || t.charCodeAt(++a) === Th;) {}return (n = a) >= u ? s = !0 : (e = t.charCodeAt(a++)) === Nh ? f = !0 : e === kh && (f = !0, t.charCodeAt(a) === Nh && ++a), t.slice(r + 1, n - 1).replace(/""/g, '"');
        }for (; a < u;) {
          if ((e = t.charCodeAt(n = a++)) === Nh) f = !0;else if (e === kh) f = !0, t.charCodeAt(a) === Nh && ++a;else if (e !== o) continue;return t.slice(r, n);
        }return s = !0, t.slice(r, u);
      }var r,
          i = [],
          u = t.length,
          a = 0,
          c = 0,
          s = u <= 0,
          f = !1;for (t.charCodeAt(u - 1) === Nh && --u, t.charCodeAt(u - 1) === kh && --u; (r = e()) !== Mh;) {
        for (var l = []; r !== wh && r !== Mh;) {
          l.push(r), r = e();
        }n && null == (l = n(l, c++)) || i.push(l);
      }return i;
    }function e(n) {
      return n.map(r).join(t);
    }function r(t) {
      return null == t ? "" : i.test(t += "") ? '"' + t.replace(/"/g, '""') + '"' : t;
    }var i = new RegExp('["' + t + "\n\r]"),
        o = t.charCodeAt(0);return { parse: function parse(t, e) {
        var r,
            i,
            o = n(t, function (t, n) {
          if (r) return r(t, n - 1);i = t, r = e ? function (t, n) {
            var e = ge(t);return function (r, i) {
              return n(e(r), i, t);
            };
          }(t, e) : ge(t);
        });return o.columns = i || [], o;
      }, parseRows: n, format: function format(n, e) {
        return null == e && (e = function (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;
        }(n)), [e.map(r).join(t)].concat(n.map(function (n) {
          return e.map(function (t) {
            return r(n[t]);
          }).join(t);
        })).join("\n");
      }, formatRows: function formatRows(t) {
        return t.map(e).join("\n");
      } };
  }function ye(t) {
    return function () {
      return t;
    };
  }function me() {
    return 1e-6 * (Math.random() - .5);
  }function xe(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,
        g = t._y0,
        _ = t._x1,
        y = t._y1;if (!p) return t._root = d, t;for (; p.length;) {
      if ((s = n >= (o = (v + _) / 2)) ? v = o : _ = o, (f = e >= (u = (g + y) / 2)) ? g = u : y = 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 + _) / 2)) ? v = o : _ = o, (f = e >= (u = (g + y) / 2)) ? g = u : y = u;
    } while ((l = f << 1 | s) == (h = (c >= u) << 1 | a >= o));return i[h] = p, i[l] = d, t;
  }function be(t, n, e, r, i) {
    this.node = t, this.x0 = n, this.y0 = e, this.x1 = r, this.y1 = i;
  }function we(t) {
    return t[0];
  }function Me(t) {
    return t[1];
  }function Te(t, n, e) {
    var r = new Ne(null == n ? we : n, null == e ? Me : e, NaN, NaN, NaN, NaN);return null == t ? r : r.addAll(t);
  }function Ne(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 ke(t) {
    for (var n = { data: t.data }, e = n; t = t.next;) {
      e = e.next = { data: t.data };
    }return n;
  }function Se(t) {
    return t.x + t.vx;
  }function Ee(t) {
    return t.y + t.vy;
  }function Ae(t) {
    return t.index;
  }function Ce(t, n) {
    var e = t.get(n);if (!e) throw new Error("missing: " + n);return e;
  }function ze(t) {
    return t.x;
  }function Pe(t) {
    return t.y;
  }function Re(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)];
  }function Le(t) {
    return (t = Re(Math.abs(t))) ? t[1] : NaN;
  }function qe(t, n) {
    var e = Re(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");
  }function De(t) {
    return new Ue(t);
  }function Ue(t) {
    if (!(n = Bh.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") : Yh[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 Oe(t) {
    return t;
  }function Fe(t) {
    function n(t) {
      function n(t) {
        var n,
            r,
            u,
            f = g,
            x = _;if ("c" === v) x = y(t) + x, t = "";else {
          var b = (t = +t) < 0;if (t = y(Math.abs(t), d), b && 0 == +t && (b = !1), f = (b ? "(" === s ? s : "-" : "-" === s || "(" === s ? "" : s) + f, x = ("s" === v ? jh[8 + Oh / 3] : "") + x + (b && "(" === s ? ")" : ""), m) for (n = -1, r = t.length; ++n < r;) {
            if (48 > (u = t.charCodeAt(n)) || u > 57) {
              x = (46 === u ? i + t.slice(n + 1) : t.slice(n)) + x, t = t.slice(0, n);break;
            }
          }
        }p && !l && (t = e(t, 1 / 0));var w = f.length + t.length + x.length,
            M = w < h ? new Array(h - w + 1).join(a) : "";switch (p && l && (t = e(M + t, M.length ? h - x.length : 1 / 0), M = ""), c) {case "<":
            t = f + t + x + M;break;case "=":
            t = f + M + t + x;break;case "^":
            t = M.slice(0, w = M.length >> 1) + f + t + x + M.slice(w);break;default:
            t = M + f + t + x;}return o(t);
      }var a = (t = De(t)).fill,
          c = t.align,
          s = t.sign,
          f = t.symbol,
          l = t.zero,
          h = t.width,
          p = t.comma,
          d = t.precision,
          v = t.type,
          g = "$" === f ? r[0] : "#" === f && /[boxX]/.test(v) ? "0" + v.toLowerCase() : "",
          _ = "$" === f ? r[1] : /[%p]/.test(v) ? u : "",
          y = Yh[v],
          m = !v || /[defgprs%]/.test(v);return d = null == d ? v ? 6 : 12 : /[gprs]/.test(v) ? Math.max(1, Math.min(21, d)) : Math.max(0, Math.min(20, d)), n.toString = function () {
        return t + "";
      }, n;
    }var e = t.grouping && t.thousands ? 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);
      };
    }(t.grouping, t.thousands) : Oe,
        r = t.currency,
        i = t.decimal,
        o = t.numerals ? function (t) {
      return function (n) {
        return n.replace(/[0-9]/g, function (n) {
          return t[+n];
        });
      };
    }(t.numerals) : Oe,
        u = t.percent || "%";return { format: n, formatPrefix: function formatPrefix(t, e) {
        var r = n((t = De(t), t.type = "f", t)),
            i = 3 * Math.max(-8, Math.min(8, Math.floor(Le(e) / 3))),
            o = Math.pow(10, -i),
            u = jh[8 + i / 3];return function (t) {
          return r(o * t) + u;
        };
      } };
  }function Ie(n) {
    return Hh = Fe(n), t.format = Hh.format, t.formatPrefix = Hh.formatPrefix, Hh;
  }function Ye(t) {
    return Math.max(0, -Le(Math.abs(t)));
  }function Be(t, n) {
    return Math.max(0, 3 * Math.max(-8, Math.min(8, Math.floor(Le(n) / 3))) - Le(Math.abs(t)));
  }function He(t, n) {
    return t = Math.abs(t), n = Math.abs(n) - t, Math.max(0, Le(n) - Le(t)) + 1;
  }function je() {
    return new Xe();
  }function Xe() {
    this.reset();
  }function Ve(t, n, e) {
    var r = t.s = n + e,
        i = r - n,
        o = r - i;t.t = n - o + (e - i);
  }function $e(t) {
    return t > 1 ? 0 : t < -1 ? Np : Math.acos(t);
  }function We(t) {
    return t > 1 ? kp : t < -1 ? -kp : Math.asin(t);
  }function Ze(t) {
    return (t = Fp(t / 2)) * t;
  }function Ge() {}function Qe(t, n) {
    t && jp.hasOwnProperty(t.type) && jp[t.type](t, n);
  }function Je(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 Ke(t, n) {
    var e = -1,
        r = t.length;for (n.polygonStart(); ++e < r;) {
      Je(t[e], n, 1);
    }n.polygonEnd();
  }function tr(t, n) {
    t && Hp.hasOwnProperty(t.type) ? Hp[t.type](t, n) : Qe(t, n);
  }function nr() {
    $p.point = rr;
  }function er() {
    ir(Xh, Vh);
  }function rr(t, n) {
    $p.point = ir, Xh = t, Vh = n, $h = t *= Cp, Wh = Lp(n = (n *= Cp) / 2 + Sp), Zh = Fp(n);
  }function ir(t, n) {
    n = (n *= Cp) / 2 + Sp;var e = (t *= Cp) - $h,
        r = e >= 0 ? 1 : -1,
        i = r * e,
        o = Lp(n),
        u = Fp(n),
        a = Zh * u,
        c = Wh * o + a * Lp(i),
        s = a * r * Fp(i);Xp.add(Rp(s, c)), $h = t, Wh = o, Zh = u;
  }function or(t) {
    return [Rp(t[1], t[0]), We(t[2])];
  }function ur(t) {
    var n = t[0],
        e = t[1],
        r = Lp(e);return [r * Lp(n), r * Fp(n), Fp(e)];
  }function ar(t, n) {
    return t[0] * n[0] + t[1] * n[1] + t[2] * n[2];
  }function cr(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 sr(t, n) {
    t[0] += n[0], t[1] += n[1], t[2] += n[2];
  }function fr(t, n) {
    return [t[0] * n, t[1] * n, t[2] * n];
  }function lr(t) {
    var n = Yp(t[0] * t[0] + t[1] * t[1] + t[2] * t[2]);t[0] /= n, t[1] /= n, t[2] /= n;
  }function hr(t, n) {
    ip.push(op = [Gh = t, Jh = t]), n < Qh && (Qh = n), n > Kh && (Kh = n);
  }function pr(t, n) {
    var e = ur([t * Cp, n * Cp]);if (rp) {
      var r = cr(rp, e),
          i = cr([r[1], -r[0], 0], r);lr(i), i = or(i);var o,
          u = t - tp,
          a = u > 0 ? 1 : -1,
          c = i[0] * Ap * a,
          s = zp(u) > 180;s ^ (a * tp < c && c < a * t) ? (o = i[1] * Ap) > Kh && (Kh = o) : (c = (c + 360) % 360 - 180, s ^ (a * tp < c && c < a * t) ? (o = -i[1] * Ap) < Qh && (Qh = o) : (n < Qh && (Qh = n), n > Kh && (Kh = n))), s ? t < tp ? mr(Gh, t) > mr(Gh, Jh) && (Jh = t) : mr(t, Jh) > mr(Gh, Jh) && (Gh = t) : Jh >= Gh ? (t < Gh && (Gh = t), t > Jh && (Jh = t)) : t > tp ? mr(Gh, t) > mr(Gh, Jh) && (Jh = t) : mr(t, Jh) > mr(Gh, Jh) && (Gh = t);
    } else ip.push(op = [Gh = t, Jh = t]);n < Qh && (Qh = n), n > Kh && (Kh = n), rp = e, tp = t;
  }function dr() {
    Zp.point = pr;
  }function vr() {
    op[0] = Gh, op[1] = Jh, Zp.point = hr, rp = null;
  }function gr(t, n) {
    if (rp) {
      var e = t - tp;Wp.add(zp(e) > 180 ? e + (e > 0 ? 360 : -360) : e);
    } else np = t, ep = n;$p.point(t, n), pr(t, n);
  }function _r() {
    $p.lineStart();
  }function yr() {
    gr(np, ep), $p.lineEnd(), zp(Wp) > Mp && (Gh = -(Jh = 180)), op[0] = Gh, op[1] = Jh, rp = null;
  }function mr(t, n) {
    return (n -= t) < 0 ? n + 360 : n;
  }function xr(t, n) {
    return t[0] - n[0];
  }function br(t, n) {
    return t[0] <= t[1] ? t[0] <= n && n <= t[1] : n < t[0] || t[1] < n;
  }function wr(t, n) {
    t *= Cp;var e = Lp(n *= Cp);Mr(e * Lp(t), e * Fp(t), Fp(n));
  }function Mr(t, n, e) {
    cp += (t - cp) / ++up, sp += (n - sp) / up, fp += (e - fp) / up;
  }function Tr() {
    Gp.point = Nr;
  }function Nr(t, n) {
    t *= Cp;var e = Lp(n *= Cp);mp = e * Lp(t), xp = e * Fp(t), bp = Fp(n), Gp.point = kr, Mr(mp, xp, bp);
  }function kr(t, n) {
    t *= Cp;var e = Lp(n *= Cp),
        r = e * Lp(t),
        i = e * Fp(t),
        o = Fp(n),
        u = Rp(Yp((u = xp * o - bp * i) * u + (u = bp * r - mp * o) * u + (u = mp * i - xp * r) * u), mp * r + xp * i + bp * o);ap += u, lp += u * (mp + (mp = r)), hp += u * (xp + (xp = i)), pp += u * (bp + (bp = o)), Mr(mp, xp, bp);
  }function Sr() {
    Gp.point = wr;
  }function Er() {
    Gp.point = Cr;
  }function Ar() {
    zr(_p, yp), Gp.point = wr;
  }function Cr(t, n) {
    _p = t, yp = n, t *= Cp, n *= Cp, Gp.point = zr;var e = Lp(n);mp = e * Lp(t), xp = e * Fp(t), bp = Fp(n), Mr(mp, xp, bp);
  }function zr(t, n) {
    t *= Cp;var e = Lp(n *= Cp),
        r = e * Lp(t),
        i = e * Fp(t),
        o = Fp(n),
        u = xp * o - bp * i,
        a = bp * r - mp * o,
        c = mp * i - xp * r,
        s = Yp(u * u + a * a + c * c),
        f = We(s),
        l = s && -f / s;dp += l * u, vp += l * a, gp += l * c, ap += f, lp += f * (mp + (mp = r)), hp += f * (xp + (xp = i)), pp += f * (bp + (bp = o)), Mr(mp, xp, bp);
  }function Pr(t) {
    return function () {
      return t;
    };
  }function Rr(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)) && t.invert(e[0], e[1]);
    }), e;
  }function Lr(t, n) {
    return [t > Np ? t - Ep : t < -Np ? t + Ep : t, n];
  }function qr(t, n, e) {
    return (t %= Ep) ? n || e ? Rr(Ur(t), Or(n, e)) : Ur(t) : n || e ? Or(n, e) : Lr;
  }function Dr(t) {
    return function (n, e) {
      return n += t, [n > Np ? n - Ep : n < -Np ? n + Ep : n, e];
    };
  }function Ur(t) {
    var n = Dr(t);return n.invert = Dr(-t), n;
  }function Or(t, n) {
    function e(t, n) {
      var e = Lp(n),
          a = Lp(t) * e,
          c = Fp(t) * e,
          s = Fp(n),
          f = s * r + a * i;return [Rp(c * o - f * u, a * r - s * i), We(f * o + c * u)];
    }var r = Lp(t),
        i = Fp(t),
        o = Lp(n),
        u = Fp(n);return e.invert = function (t, n) {
      var e = Lp(n),
          a = Lp(t) * e,
          c = Fp(t) * e,
          s = Fp(n),
          f = s * o - c * u;return [Rp(c * o + s * u, a * r + f * i), We(f * r - a * i)];
    }, e;
  }function Fr(t) {
    function n(n) {
      return n = t(n[0] * Cp, n[1] * Cp), n[0] *= Ap, n[1] *= Ap, n;
    }return t = qr(t[0] * Cp, t[1] * Cp, t.length > 2 ? t[2] * Cp : 0), n.invert = function (n) {
      return n = t.invert(n[0] * Cp, n[1] * Cp), n[0] *= Ap, n[1] *= Ap, n;
    }, n;
  }function Ir(t, n, e, r, i, o) {
    if (e) {
      var u = Lp(n),
          a = Fp(n),
          c = r * e;null == i ? (i = n + r * Ep, o = n - c / 2) : (i = Yr(u, i), o = Yr(u, o), (r > 0 ? i < o : i > o) && (i += r * Ep));for (var s, f = i; r > 0 ? f > o : f < o; f -= c) {
        s = or([u, -a * Lp(f), -a * Fp(f)]), t.point(s[0], s[1]);
      }
    }
  }function Yr(t, n) {
    (n = ur(n))[0] -= t, lr(n);var e = $e(-n[1]);return ((-n[2] < 0 ? -e : e) + Ep - Mp) % Ep;
  }function Br() {
    var t,
        n = [];return { point: function point(n, e) {
        t.push([n, e]);
      }, lineStart: function lineStart() {
        n.push(t = []);
      }, lineEnd: Ge, rejoin: function rejoin() {
        n.length > 1 && n.push(n.pop().concat(n.shift()));
      }, result: function result() {
        var e = n;return n = [], t = null, e;
      } };
  }function Hr(t, n) {
    return zp(t[0] - n[0]) < Mp && zp(t[1] - n[1]) < Mp;
  }function jr(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 Xr(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 (Hr(r, u)) {
          for (i.lineStart(), o = 0; o < n; ++o) {
            i.point((r = t[o])[0], r[1]);
          }i.lineEnd();
        } else a.push(e = new jr(r, t, null, !0)), c.push(e.o = new jr(r, null, e, !1)), a.push(e = new jr(u, t, null, !1)), c.push(e.o = new jr(u, null, e, !0));
      }
    }), a.length) {
      for (c.sort(n), Vr(a), Vr(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;
          }s = (h = h.o).z, p = !p;
        } while (!h.v);i.lineEnd();
      }
    }
  }function Vr(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 $r(t, n) {
    var e = n[0],
        r = n[1],
        i = [Fp(e), -Lp(e), 0],
        o = 0,
        u = 0;cd.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 + Sp, d = Fp(p), v = Lp(p), g = 0; g < f; ++g, h = y, d = x, v = b, l = _) {
        var _ = s[g],
            y = _[0],
            m = _[1] / 2 + Sp,
            x = Fp(m),
            b = Lp(m),
            w = y - h,
            M = w >= 0 ? 1 : -1,
            T = M * w,
            N = T > Np,
            k = d * x;if (cd.add(Rp(k * M * Fp(T), v * b + k * Lp(T))), o += N ? w + M * Ep : w, N ^ h >= e ^ y >= e) {
          var S = cr(ur(l), ur(_));lr(S);var E = cr(i, S);lr(E);var A = (N ^ w >= 0 ? -1 : 1) * We(E[2]);(r > A || r === A && (S[0] || S[1])) && (u += N ^ w >= 0 ? 1 : -1);
        }
      }
    }return (o < -Mp || o < Mp && cd < -Mp) ^ 1 & u;
  }function Wr(t, n, e, r) {
    return function (i) {
      function o(n, e) {
        t(n, e) && i.point(n, e);
      }function u(t, n) {
        v.point(t, n);
      }function a() {
        x.point = u, v.lineStart();
      }function c() {
        x.point = o, v.lineEnd();
      }function s(t, n) {
        d.push([t, n]), y.point(t, n);
      }function f() {
        y.lineStart(), d = [];
      }function l() {
        s(d[0][0], d[0][1]), y.lineEnd();var t,
            n,
            e,
            r,
            o = y.clean(),
            u = _.result(),
            a = u.length;if (d.pop(), h.push(d), d = null, a) if (1 & o) {
          if (e = u[0], (n = e.length - 1) > 0) {
            for (m || (i.polygonStart(), m = !0), i.lineStart(), t = 0; t < n; ++t) {
              i.point((r = e[t])[0], r[1]);
            }i.lineEnd();
          }
        } else a > 1 && 2 & o && u.push(u.pop().concat(u.shift())), p.push(u.filter(Zr));
      }var h,
          p,
          d,
          v = n(i),
          _ = Br(),
          y = n(_),
          m = !1,
          x = { point: o, lineStart: a, lineEnd: c, polygonStart: function polygonStart() {
          x.point = s, x.lineStart = f, x.lineEnd = l, p = [], h = [];
        }, polygonEnd: function polygonEnd() {
          x.point = o, x.lineStart = a, x.lineEnd = c, p = g(p);var t = $r(h, r);p.length ? (m || (i.polygonStart(), m = !0), Xr(p, Gr, t, e, i)) : t && (m || (i.polygonStart(), m = !0), i.lineStart(), e(null, null, 1, i), i.lineEnd()), m && (i.polygonEnd(), m = !1), p = h = null;
        }, sphere: function sphere() {
          i.polygonStart(), i.lineStart(), e(null, null, 1, i), i.lineEnd(), i.polygonEnd();
        } };return x;
    };
  }function Zr(t) {
    return t.length > 1;
  }function Gr(t, n) {
    return ((t = t.x)[0] < 0 ? t[1] - kp - Mp : kp - t[1]) - ((n = n.x)[0] < 0 ? n[1] - kp - Mp : kp - n[1]);
  }function Qr(t) {
    function n(t, n) {
      return Lp(t) * Lp(n) > i;
    }function e(t, n, e) {
      var r = [1, 0, 0],
          o = cr(ur(t), ur(n)),
          u = ar(o, o),
          a = o[0],
          c = u - a * a;if (!c) return !e && t;var s = i * u / c,
          f = -i * a / c,
          l = cr(r, o),
          h = fr(r, s);sr(h, fr(o, f));var p = l,
          d = ar(h, p),
          v = ar(p, p),
          g = d * d - v * (ar(h, h) - 1);if (!(g < 0)) {
        var _ = Yp(g),
            y = fr(p, (-d - _) / v);if (sr(y, h), y = or(y), !e) return y;var m,
            x = t[0],
            b = n[0],
            w = t[1],
            M = n[1];b < x && (m = x, x = b, b = m);var T = b - x,
            N = zp(T - Np) < Mp;if (!N && M < w && (m = w, w = M, M = m), N || T < Mp ? N ? w + M > 0 ^ y[1] < (zp(y[0] - x) < Mp ? w : M) : w <= y[1] && y[1] <= M : T > Np ^ (x <= y[0] && y[0] <= b)) {
          var k = fr(p, (-d + _) / v);return sr(k, h), [y, or(k)];
        }
      }
    }function r(n, e) {
      var r = u ? t : Np - t,
          i = 0;return n < -r ? i |= 1 : n > r && (i |= 2), e < -r ? i |= 4 : e > r && (i |= 8), i;
    }var i = Lp(t),
        o = 6 * Cp,
        u = i > 0,
        a = zp(i) > Mp;return Wr(n, function (t) {
      var i, o, c, s, f;return { lineStart: function lineStart() {
          s = c = !1, f = 1;
        }, point: function point(l, h) {
          var p,
              d = [l, h],
              v = n(l, h),
              g = u ? v ? 0 : r(l, h) : v ? r(l + (l < 0 ? Np : -Np), h) : 0;if (!i && (s = c = v) && t.lineStart(), v !== c && (!(p = e(i, d)) || Hr(i, p) || Hr(d, p)) && (d[0] += Mp, d[1] += Mp, v = n(d[0], d[1])), v !== c) f = 0, v ? (t.lineStart(), p = e(d, i), t.point(p[0], p[1])) : (p = e(i, d), t.point(p[0], p[1]), t.lineEnd()), i = p;else if (a && i && u ^ v) {
            var _;g & o || !(_ = e(d, i, !0)) || (f = 0, u ? (t.lineStart(), t.point(_[0][0], _[0][1]), t.point(_[1][0], _[1][1]), t.lineEnd()) : (t.point(_[1][0], _[1][1]), t.lineEnd(), t.lineStart(), t.point(_[0][0], _[0][1])));
          }!v || i && Hr(i, d) || t.point(d[0], d[1]), i = d, c = v, o = g;
        }, lineEnd: function lineEnd() {
          c && t.lineEnd(), i = null;
        }, clean: function clean() {
          return f | (s && c) << 1;
        } };
    }, function (n, e, r, i) {
      Ir(i, t, o, r, n, e);
    }, u ? [0, -t] : [-Np, t - Np]);
  }function Jr(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 zp(r[0] - t) < Mp ? i > 0 ? 0 : 3 : zp(r[0] - e) < Mp ? i > 0 ? 2 : 1 : zp(r[1] - n) < Mp ? 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) && w.point(t, n);
      }function s(o, u) {
        var a = i(o, u);if (l && h.push([o, u]), x) p = o, d = u, v = a, x = !1, a && (w.lineStart(), w.point(o, u));else if (a && m) w.point(o, u);else {
          var c = [_ = Math.max(ld, Math.min(fd, _)), y = Math.max(ld, Math.min(fd, y))],
              s = [o = Math.max(ld, Math.min(fd, o)), u = Math.max(ld, Math.min(fd, u))];!function (t, n, e, r, i, o) {
            var u,
                a = t[0],
                c = t[1],
                s = 0,
                f = 1,
                l = n[0] - a,
                h = n[1] - c;if (u = e - a, l || !(u > 0)) {
              if (u /= l, l < 0) {
                if (u < s) return;u < f && (f = u);
              } else if (l > 0) {
                if (u > f) return;u > s && (s = u);
              }if (u = i - a, l || !(u < 0)) {
                if (u /= l, l < 0) {
                  if (u > f) return;u > s && (s = u);
                } else if (l > 0) {
                  if (u < s) return;u < f && (f = u);
                }if (u = r - c, h || !(u > 0)) {
                  if (u /= h, h < 0) {
                    if (u < s) return;u < f && (f = u);
                  } else if (h > 0) {
                    if (u > f) return;u > s && (s = u);
                  }if (u = o - c, h || !(u < 0)) {
                    if (u /= h, h < 0) {
                      if (u > f) return;u > s && (s = u);
                    } else if (h > 0) {
                      if (u < s) return;u < f && (f = u);
                    }return s > 0 && (t[0] = a + s * l, t[1] = c + s * h), f < 1 && (n[0] = a + f * l, n[1] = c + f * h), !0;
                  }
                }
              }
            }
          }(c, s, t, n, e, r) ? a && (w.lineStart(), w.point(o, u), b = !1) : (m || (w.lineStart(), w.point(c[0], c[1])), w.point(s[0], s[1]), a || w.lineEnd(), b = !1);
        }_ = o, y = u, m = a;
      }var f,
          l,
          h,
          p,
          d,
          v,
          _,
          y,
          m,
          x,
          b,
          w = u,
          M = Br(),
          T = { point: c, lineStart: function lineStart() {
          T.point = s, l && l.push(h = []), x = !0, m = !1, _ = y = NaN;
        }, lineEnd: function lineEnd() {
          f && (s(p, d), v && m && M.rejoin(), f.push(M.result())), T.point = c, m && w.lineEnd();
        }, polygonStart: function polygonStart() {
          w = M, f = [], l = [], b = !0;
        }, polygonEnd: function polygonEnd() {
          var n = function () {
            for (var n = 0, e = 0, i = l.length; e < i; ++e) {
              for (var o, u, a = l[e], c = 1, s = a.length, f = a[0], h = f[0], p = f[1]; c < s; ++c) {
                o = h, u = p, h = (f = a[c])[0], p = f[1], u <= r ? p > r && (h - o) * (r - u) > (p - u) * (t - o) && ++n : p <= r && (h - o) * (r - u) < (p - u) * (t - o) && --n;
              }
            }return n;
          }(),
              e = b && n,
              i = (f = g(f)).length;(e || i) && (u.polygonStart(), e && (u.lineStart(), o(null, null, 1, u), u.lineEnd()), i && Xr(f, a, n, o, u), u.polygonEnd()), w = u, f = l = h = null;
        } };return T;
    };
  }function Kr() {
    pd.point = pd.lineEnd = Ge;
  }function ti(t, n) {
    Qp = t *= Cp, Jp = Fp(n *= Cp), Kp = Lp(n), pd.point = ni;
  }function ni(t, n) {
    t *= Cp;var e = Fp(n *= Cp),
        r = Lp(n),
        i = zp(t - Qp),
        o = Lp(i),
        u = r * Fp(i),
        a = Kp * e - Jp * r * o,
        c = Jp * e + Kp * r * o;hd.add(Rp(Yp(u * u + a * a), c)), Qp = t, Jp = e, Kp = r;
  }function ei(t) {
    return hd.reset(), tr(t, pd), +hd;
  }function ri(t, n) {
    return dd[0] = t, dd[1] = n, ei(vd);
  }function ii(t, n) {
    return !(!t || !_d.hasOwnProperty(t.type)) && _d[t.type](t, n);
  }function oi(t, n) {
    return 0 === ri(t, n);
  }function ui(t, n) {
    var e = ri(t[0], t[1]);return ri(t[0], n) + ri(n, t[1]) <= e + Mp;
  }function ai(t, n) {
    return !!$r(t.map(ci), si(n));
  }function ci(t) {
    return (t = t.map(si)).pop(), t;
  }function si(t) {
    return [t[0] * Cp, t[1] * Cp];
  }function fi(t, n, e) {
    var r = f(t, n - Mp, e).concat(n);return function (t) {
      return r.map(function (n) {
        return [t, n];
      });
    };
  }function li(t, n, e) {
    var r = f(t, n - Mp, e).concat(n);return function (t) {
      return r.map(function (n) {
        return [n, t];
      });
    };
  }function hi() {
    function t() {
      return { type: "MultiLineString", coordinates: n() };
    }function n() {
      return f(qp(o / _) * _, i, _).map(p).concat(f(qp(s / y) * y, c, y).map(d)).concat(f(qp(r / v) * v, e, v).filter(function (t) {
        return zp(t % _) > Mp;
      }).map(l)).concat(f(qp(a / g) * g, u, g).filter(function (t) {
        return zp(t % y) > Mp;
      }).map(h));
    }var e,
        r,
        i,
        o,
        u,
        a,
        c,
        s,
        l,
        h,
        p,
        d,
        v = 10,
        g = v,
        _ = 90,
        y = 360,
        m = 2.5;return t.lines = function () {
      return n().map(function (t) {
        return { type: "LineString", coordinates: t };
      });
    }, t.outline = function () {
      return { type: "Polygon", coordinates: [p(o).concat(d(c).slice(1), p(i).reverse().slice(1), d(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(m)) : [[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(m)) : [[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 ? (v = +n[0], g = +n[1], t) : [v, g];
    }, t.precision = function (n) {
      return arguments.length ? (m = +n, l = fi(a, u, 90), h = li(r, e, m), p = fi(s, c, 90), d = li(o, i, m), t) : m;
    }, t.extentMajor([[-180, -90 + Mp], [180, 90 - Mp]]).extentMinor([[-180, -80 - Mp], [180, 80 + Mp]]);
  }function pi(t) {
    return t;
  }function di() {
    xd.point = vi;
  }function vi(t, n) {
    xd.point = gi, td = ed = t, nd = rd = n;
  }function gi(t, n) {
    md.add(rd * t - ed * n), ed = t, rd = n;
  }function _i() {
    gi(td, nd);
  }function yi(t, n) {
    kd += t, Sd += n, ++Ed;
  }function mi() {
    qd.point = xi;
  }function xi(t, n) {
    qd.point = bi, yi(ud = t, ad = n);
  }function bi(t, n) {
    var e = t - ud,
        r = n - ad,
        i = Yp(e * e + r * r);Ad += i * (ud + t) / 2, Cd += i * (ad + n) / 2, zd += i, yi(ud = t, ad = n);
  }function wi() {
    qd.point = yi;
  }function Mi() {
    qd.point = Ni;
  }function Ti() {
    ki(id, od);
  }function Ni(t, n) {
    qd.point = ki, yi(id = ud = t, od = ad = n);
  }function ki(t, n) {
    var e = t - ud,
        r = n - ad,
        i = Yp(e * e + r * r);Ad += i * (ud + t) / 2, Cd += i * (ad + n) / 2, zd += i, Pd += (i = ad * t - ud * n) * (ud + t), Rd += i * (ad + n), Ld += 3 * i, yi(ud = t, ad = n);
  }function Si(t) {
    this._context = t;
  }function Ei(t, n) {
    Bd.point = Ai, Ud = Fd = t, Od = Id = n;
  }function Ai(t, n) {
    Fd -= t, Id -= n, Yd.add(Yp(Fd * Fd + Id * Id)), Fd = t, Id = n;
  }function Ci() {
    this._string = [];
  }function zi(t) {
    return "m0," + t + "a" + t + "," + t + " 0 1,1 0," + -2 * t + "a" + t + "," + t + " 0 1,1 0," + 2 * t + "z";
  }function Pi(t) {
    return function (n) {
      var e = new Ri();for (var r in t) {
        e[r] = t[r];
      }return e.stream = n, e;
    };
  }function Ri() {}function Li(t, n, e) {
    var r = t.clipExtent && t.clipExtent();return t.scale(150).translate([0, 0]), null != r && t.clipExtent(null), tr(e, t.stream(Nd)), n(Nd.result()), null != r && t.clipExtent(r), t;
  }function qi(t, n, e) {
    return Li(t, function (e) {
      var r = n[1][0] - n[0][0],
          i = n[1][1] - n[0][1],
          o = Math.min(r / (e[1][0] - e[0][0]), i / (e[1][1] - e[0][1])),
          u = +n[0][0] + (r - o * (e[1][0] + e[0][0])) / 2,
          a = +n[0][1] + (i - o * (e[1][1] + e[0][1])) / 2;t.scale(150 * o).translate([u, a]);
    }, e);
  }function Di(t, n, e) {
    return qi(t, [[0, 0], n], e);
  }function Ui(t, n, e) {
    return Li(t, function (e) {
      var r = +n,
          i = r / (e[1][0] - e[0][0]),
          o = (r - i * (e[1][0] + e[0][0])) / 2,
          u = -i * e[0][1];t.scale(150 * i).translate([o, u]);
    }, e);
  }function Oi(t, n, e) {
    return Li(t, function (e) {
      var r = +n,
          i = r / (e[1][1] - e[0][1]),
          o = -i * e[0][0],
          u = (r - i * (e[1][1] + e[0][1])) / 2;t.scale(150 * i).translate([o, u]);
    }, e);
  }function Fi(t, n) {
    return +n ? function (t, n) {
      function e(r, i, o, u, a, c, s, f, l, h, p, d, v, g) {
        var _ = s - r,
            y = f - i,
            m = _ * _ + y * y;if (m > 4 * n && v--) {
          var x = u + h,
              b = a + p,
              w = c + d,
              M = Yp(x * x + b * b + w * w),
              T = We(w /= M),
              N = zp(zp(w) - 1) < Mp || zp(o - l) < Mp ? (o + l) / 2 : Rp(b, x),
              k = t(N, T),
              S = k[0],
              E = k[1],
              A = S - r,
              C = E - i,
              z = y * A - _ * C;(z * z / m > n || zp((_ * A + y * C) / m - .5) > .3 || u * h + a * p + c * d < jd) && (e(r, i, o, u, a, c, S, E, N, x /= M, b /= M, w, v, g), g.point(S, E), e(S, E, N, x, b, w, s, f, l, h, p, d, v, g));
        }
      }return function (n) {
        function r(e, r) {
          e = t(e, r), n.point(e[0], e[1]);
        }function i() {
          _ = NaN, w.point = o, n.lineStart();
        }function o(r, i) {
          var o = ur([r, i]),
              u = t(r, i);e(_, y, g, m, x, b, _ = u[0], y = u[1], g = r, m = o[0], x = o[1], b = o[2], Hd, n), n.point(_, y);
        }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 = _, h = y, p = m, d = x, v = b, w.point = o;
        }function s() {
          e(_, y, g, m, x, b, l, h, f, p, d, v, Hd, n), w.lineEnd = u, u();
        }var f,
            l,
            h,
            p,
            d,
            v,
            g,
            _,
            y,
            m,
            x,
            b,
            w = { point: r, lineStart: i, lineEnd: u, polygonStart: function polygonStart() {
            n.polygonStart(), w.lineStart = a;
          }, polygonEnd: function polygonEnd() {
            n.polygonEnd(), w.lineStart = i;
          } };return w;
      };
    }(t, n) : function (t) {
      return Pi({ point: function point(n, e) {
          n = t(n, e), this.stream.point(n[0], n[1]);
        } });
    }(t);
  }function Ii(t) {
    return Yi(function () {
      return t;
    })();
  }function Yi(t) {
    function n(t) {
      return t = s(t[0] * Cp, t[1] * Cp), [t[0] * v + u, a - t[1] * v];
    }function e(t, n) {
      return t = o(t, n), [t[0] * v + u, a - t[1] * v];
    }function r() {
      s = Rr(c = qr(x, b, w), o);var t = o(y, m);return u = g - t[0] * v, a = _ + t[1] * v, i();
    }function i() {
      return p = d = null, n;
    }var o,
        u,
        a,
        c,
        s,
        f,
        l,
        h,
        p,
        d,
        v = 150,
        g = 480,
        _ = 250,
        y = 0,
        m = 0,
        x = 0,
        b = 0,
        w = 0,
        M = null,
        T = sd,
        N = null,
        k = pi,
        S = .5,
        E = Fi(e, S);return n.stream = function (t) {
      return p && d === t ? p : p = Xd(function (t) {
        return Pi({ point: function point(n, e) {
            var r = t(n, e);return this.stream.point(r[0], r[1]);
          } });
      }(c)(T(E(k(d = t)))));
    }, n.preclip = function (t) {
      return arguments.length ? (T = t, M = void 0, i()) : T;
    }, n.postclip = function (t) {
      return arguments.length ? (k = t, N = f = l = h = null, i()) : k;
    }, n.clipAngle = function (t) {
      return arguments.length ? (T = +t ? Qr(M = t * Cp) : (M = null, sd), i()) : M * Ap;
    }, n.clipExtent = function (t) {
      return arguments.length ? (k = null == t ? (N = f = l = h = null, pi) : Jr(N = +t[0][0], f = +t[0][1], l = +t[1][0], h = +t[1][1]), i()) : null == N ? null : [[N, f], [l, h]];
    }, n.scale = function (t) {
      return arguments.length ? (v = +t, r()) : v;
    }, n.translate = function (t) {
      return arguments.length ? (g = +t[0], _ = +t[1], r()) : [g, _];
    }, n.center = function (t) {
      return arguments.length ? (y = t[0] % 360 * Cp, m = t[1] % 360 * Cp, r()) : [y * Ap, m * Ap];
    }, n.rotate = function (t) {
      return arguments.length ? (x = t[0] % 360 * Cp, b = t[1] % 360 * Cp, w = t.length > 2 ? t[2] % 360 * Cp : 0, r()) : [x * Ap, b * Ap, w * Ap];
    }, n.precision = function (t) {
      return arguments.length ? (E = Fi(e, S = t * t), i()) : Yp(S);
    }, n.fitExtent = function (t, e) {
      return qi(n, t, e);
    }, n.fitSize = function (t, e) {
      return Di(n, t, e);
    }, n.fitWidth = function (t, e) {
      return Ui(n, t, e);
    }, n.fitHeight = function (t, e) {
      return Oi(n, t, e);
    }, function () {
      return o = t.apply(this, arguments), n.invert = o.invert && function (t) {
        return (t = s.invert((t[0] - u) / v, (a - t[1]) / v)) && [t[0] * Ap, t[1] * Ap];
      }, r();
    };
  }function Bi(t) {
    var n = 0,
        e = Np / 3,
        r = Yi(t),
        i = r(n, e);return i.parallels = function (t) {
      return arguments.length ? r(n = t[0] * Cp, e = t[1] * Cp) : [n * Ap, e * Ap];
    }, i;
  }function Hi(t, n) {
    function e(t, n) {
      var e = Yp(o - 2 * i * Fp(n)) / i;return [e * Fp(t *= i), u - e * Lp(t)];
    }var r = Fp(t),
        i = (r + Fp(n)) / 2;if (zp(i) < Mp) return function (t) {
      function n(t, n) {
        return [t * e, Fp(n) / e];
      }var e = Lp(t);return n.invert = function (t, n) {
        return [t / e, We(n * e)];
      }, n;
    }(t);var o = 1 + r * (2 * i - r),
        u = Yp(o) / i;return e.invert = function (t, n) {
      var e = u - n;return [Rp(t, zp(e)) / i * Ip(e), We((o - (t * t + e * e) * i * i) / (2 * i))];
    }, e;
  }function ji() {
    return Bi(Hi).scale(155.424).center([0, 33.6442]);
  }function Xi() {
    return ji().parallels([29.5, 45.5]).scale(1070).translate([480, 250]).rotate([96, 0]).center([-.6, 38.7]);
  }function Vi(t) {
    return function (n, e) {
      var r = Lp(n),
          i = Lp(e),
          o = t(r * i);return [o * i * Fp(n), o * Fp(e)];
    };
  }function $i(t) {
    return function (n, e) {
      var r = Yp(n * n + e * e),
          i = t(r),
          o = Fp(i),
          u = Lp(i);return [Rp(n * o, r * u), We(r && e * o / r)];
    };
  }function Wi(t, n) {
    return [t, Up(Bp((kp + n) / 2))];
  }function Zi(t) {
    function n() {
      var n = Np * a(),
          u = o(Fr(o.rotate()).invert([0, 0]));return s(null == f ? [[u[0] - n, u[1] - n], [u[0] + n, u[1] + n]] : t === Wi ? [[Math.max(u[0] - n, f), e], [Math.min(u[0] + n, r), i]] : [[f, Math.max(u[1] - n, e)], [r, Math.min(u[1] + n, i)]]);
    }var e,
        r,
        i,
        o = Ii(t),
        u = o.center,
        a = o.scale,
        c = o.translate,
        s = o.clipExtent,
        f = null;return o.scale = function (t) {
      return arguments.length ? (a(t), n()) : a();
    }, o.translate = function (t) {
      return arguments.length ? (c(t), n()) : c();
    }, o.center = function (t) {
      return arguments.length ? (u(t), n()) : u();
    }, o.clipExtent = function (t) {
      return arguments.length ? (null == t ? f = e = r = i = null : (f = +t[0][0], e = +t[0][1], r = +t[1][0], i = +t[1][1]), n()) : null == f ? null : [[f, e], [r, i]];
    }, n();
  }function Gi(t) {
    return Bp((kp + t) / 2);
  }function Qi(t, n) {
    function e(t, n) {
      o > 0 ? n < -kp + Mp && (n = -kp + Mp) : n > kp - Mp && (n = kp - Mp);var e = o / Op(Gi(n), i);return [e * Fp(i * t), o - e * Lp(i * t)];
    }var r = Lp(t),
        i = t === n ? Fp(t) : Up(r / Lp(n)) / Up(Gi(n) / Gi(t)),
        o = r * Op(Gi(t), i) / i;return i ? (e.invert = function (t, n) {
      var e = o - n,
          r = Ip(i) * Yp(t * t + e * e);return [Rp(t, zp(e)) / i * Ip(e), 2 * Pp(Op(o / r, 1 / i)) - kp];
    }, e) : Wi;
  }function Ji(t, n) {
    return [t, n];
  }function Ki(t, n) {
    function e(t, n) {
      var e = o - n,
          r = i * t;return [e * Fp(r), o - e * Lp(r)];
    }var r = Lp(t),
        i = t === n ? Fp(t) : (r - Lp(n)) / (n - t),
        o = r / i + t;return zp(i) < Mp ? Ji : (e.invert = function (t, n) {
      var e = o - n;return [Rp(t, zp(e)) / i * Ip(e), o - Ip(i) * Yp(t * t + e * e)];
    }, e);
  }function to(t, n) {
    var e = Lp(n),
        r = Lp(t) * e;return [e * Fp(t) / r, Fp(n) / r];
  }function no(t, n, e, r) {
    return 1 === t && 1 === n && 0 === e && 0 === r ? pi : Pi({ point: function point(i, o) {
        this.stream.point(i * t + e, o * n + r);
      } });
  }function eo(t, n) {
    var e = n * n,
        r = e * e;return [t * (.8707 - .131979 * e + r * (r * (.003971 * e - .001529 * r) - .013791)), n * (1.007226 + e * (.015085 + r * (.028874 * e - .044475 - .005916 * r)))];
  }function ro(t, n) {
    return [Lp(n) * Fp(t), Fp(n)];
  }function io(t, n) {
    var e = Lp(n),
        r = 1 + Lp(t) * e;return [e * Fp(t) / r, Fp(n) / r];
  }function oo(t, n) {
    return [Up(Bp((kp + n) / 2)), -t];
  }function uo(t, n) {
    return t.parent === n.parent ? 1 : 2;
  }function ao(t, n) {
    return t + n.x;
  }function co(t, n) {
    return Math.max(t, n.y);
  }function so(t) {
    var n = 0,
        e = t.children,
        r = e && e.length;if (r) for (; --r >= 0;) {
      n += e[r].value;
    } else n = 1;t.value = n;
  }function fo(t, n) {
    var e,
        r,
        i,
        o,
        u,
        a = new vo(t),
        c = +t.value && (a.value = t.value),
        s = [a];for (null == n && (n = lo); 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 vo(i[o])), r.parent = e, r.depth = e.depth + 1;
      }
    }return a.eachBefore(po);
  }function lo(t) {
    return t.children;
  }function ho(t) {
    t.data = t.data.data;
  }function po(t) {
    var n = 0;do {
      t.height = n;
    } while ((t = t.parent) && t.height < ++n);
  }function vo(t) {
    this.data = t, this.depth = this.height = 0, this.parent = null;
  }function go(t) {
    for (var n, e, r = 0, i = (t = function (t) {
      for (var n, e, r = t.length; r;) {
        e = Math.random() * r-- | 0, n = t[r], t[r] = t[e], t[e] = n;
      }return t;
    }(Wd.call(t))).length, o = []; r < i;) {
      n = t[r], e && yo(e, n) ? ++r : (e = function (t) {
        switch (t.length) {case 1:
            return function (t) {
              return { x: t.x, y: t.y, r: t.r };
            }(t[0]);case 2:
            return xo(t[0], t[1]);case 3:
            return bo(t[0], t[1], t[2]);}
      }(o = function (t, n) {
        var e, r;if (mo(n, t)) return [n];for (e = 0; e < t.length; ++e) {
          if (_o(n, t[e]) && mo(xo(t[e], n), t)) return [t[e], n];
        }for (e = 0; e < t.length - 1; ++e) {
          for (r = e + 1; r < t.length; ++r) {
            if (_o(xo(t[e], t[r]), n) && _o(xo(t[e], n), t[r]) && _o(xo(t[r], n), t[e]) && mo(bo(t[e], t[r], n), t)) return [t[e], t[r], n];
          }
        }throw new Error();
      }(o, n)), r = 0);
    }return e;
  }function _o(t, n) {
    var e = t.r - n.r,
        r = n.x - t.x,
        i = n.y - t.y;return e < 0 || e * e < r * r + i * i;
  }function yo(t, n) {
    var e = t.r - n.r + 1e-6,
        r = n.x - t.x,
        i = n.y - t.y;return e > 0 && e * e > r * r + i * i;
  }function mo(t, n) {
    for (var e = 0; e < n.length; ++e) {
      if (!yo(t, n[e])) return !1;
    }return !0;
  }function xo(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 = r - u,
        p = r - s,
        d = i - a,
        v = i - f,
        g = c - o,
        _ = l - o,
        y = r * r + i * i - o * o,
        m = y - u * u - a * a + c * c,
        x = y - s * s - f * f + l * l,
        b = p * d - h * v,
        w = (d * x - v * m) / (2 * b) - r,
        M = (v * g - d * _) / b,
        T = (p * m - h * x) / (2 * b) - i,
        N = (h * _ - p * g) / b,
        k = M * M + N * N - 1,
        S = 2 * (o + w * M + T * N),
        E = w * w + T * T - o * o,
        A = -(k ? (S + Math.sqrt(S * S - 4 * k * E)) / (2 * k) : E / S);return { x: r + w + M * A, y: i + T + N * A, r: A };
  }function wo(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 Mo(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 To(t) {
    var n = t._,
        e = t.next._,
        r = n.r + e.r,
        i = (n.x * e.r + e.x * n.r) / r,
        o = (n.y * e.r + e.y * n.r) / r;return i * i + o * o;
  }function No(t) {
    this._ = t, this.next = null, this.previous = null;
  }function ko(t) {
    if (!(i = t.length)) return 0;var n, e, r, i, o, u, a, c, s, f, l;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;wo(e, n, r = t[2]), n = new No(n), e = new No(e), r = new No(r), n.next = r.previous = e, e.next = n.previous = r, r.next = e.previous = n;t: for (a = 3; a < i; ++a) {
      wo(n._, e._, r = t[a]), r = new No(r), c = e.next, s = n.previous, f = e._.r, l = n._.r;do {
        if (f <= l) {
          if (Mo(c._, r._)) {
            e = c, n.next = e, e.previous = n, --a;continue t;
          }f += c._.r, c = c.next;
        } else {
          if (Mo(s._, r._)) {
            (n = s).next = e, e.previous = n, --a;continue t;
          }l += s._.r, s = s.previous;
        }
      } while (c !== s.next);for (r.previous = n, r.next = e, n.next = e.previous = e = r, o = To(n); (r = r.next) !== e;) {
        (u = To(r)) < o && (n = r, o = u);
      }e = n.next;
    }for (n = [e._], r = e; (r = r.next) !== e;) {
      n.push(r._);
    }for (r = go(n), a = 0; a < i; ++a) {
      n = t[a], n.x -= r.x, n.y -= r.y;
    }return r.r;
  }function So(t) {
    if ("function" != typeof t) throw new Error();return t;
  }function Eo() {
    return 0;
  }function Ao(t) {
    return function () {
      return t;
    };
  }function Co(t) {
    return Math.sqrt(t.value);
  }function zo(t) {
    return function (n) {
      n.children || (n.r = Math.max(0, +t(n) || 0));
    };
  }function Po(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 = ko(r), a) for (i = 0; i < u; ++i) {
          r[i].r -= a;
        }e.r = o + a;
      }
    };
  }function Ro(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 Lo(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);
  }function qo(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]).y0 = e, o.y1 = i, o.x0 = n, o.x1 = n += o.value * s;
    }
  }function Do(t) {
    return t.id;
  }function Uo(t) {
    return t.parentId;
  }function Oo(t, n) {
    return t.parent === n.parent ? 1 : 2;
  }function Fo(t) {
    var n = t.children;return n ? n[0] : t.t;
  }function Io(t) {
    var n = t.children;return n ? n[n.length - 1] : t.t;
  }function Yo(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 Bo(t, n, e) {
    return t.a.parent === n.parent ? t.a : e;
  }function Ho(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 jo(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]).x0 = n, o.x1 = r, o.y0 = e, o.y1 = e += o.value * s;
    }
  }function Xo(t, n, e, r, i, o) {
    for (var u, a, c, s, f, l, h, p, d, v, g, _ = [], y = n.children, m = 0, x = 0, b = y.length, w = n.value; m < b;) {
      c = i - e, s = o - r;do {
        f = y[x++].value;
      } while (!f && x < b);for (l = h = f, g = f * f * (v = Math.max(s / c, c / s) / (w * t)), d = Math.max(h / g, g / l); x < b; ++x) {
        if (f += a = y[x].value, a < l && (l = a), a > h && (h = a), g = f * f * v, (p = Math.max(h / g, g / l)) > d) {
          f -= a;break;
        }d = p;
      }_.push(u = { value: f, dice: c < s, children: y.slice(m, x) }), u.dice ? qo(u, e, r, i, w ? r += s * f / w : o) : jo(u, e, r, w ? e += c * f / w : i, o), w -= f, m = x;
    }return _;
  }function Vo(t, n, e) {
    return (n[0] - t[0]) * (e[1] - t[1]) - (n[1] - t[1]) * (e[0] - t[0]);
  }function $o(t, n) {
    return t[0] - n[0] || t[1] - n[1];
  }function Wo(t) {
    for (var n = t.length, e = [0, 1], r = 2, i = 2; i < n; ++i) {
      for (; r > 1 && Vo(t[e[r - 2]], t[e[r - 1]], t[i]) <= 0;) {
        --r;
      }e[r++] = i;
    }return e.slice(0, r);
  }function Zo(t) {
    this._size = t, this._call = this._error = null, this._tasks = [], this._data = [], this._waiting = this._active = this._ended = this._start = 0;
  }function Go(t) {
    if (!t._start) try {
      (function (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] = function (t, n) {
            return function (e, r) {
              t._tasks[n] && (--t._active, ++t._ended, t._tasks[n] = null, null == t._error && (null != e ? Qo(t, e) : (t._data[n] = r, t._waiting ? Go(t) : Jo(t))));
            };
          }(t, n), --t._waiting, ++t._active, e = i.apply(null, e), t._tasks[n] && (t._tasks[n] = e || ev);
        }
      })(t);
    } catch (n) {
      if (t._tasks[t._ended + t._active - 1]) Qo(t, n);else if (!t._data) throw n;
    }
  }function Qo(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 (n) {}
    }t._active = NaN, Jo(t);
  }function Jo(t) {
    if (!t._active && t._call) {
      var n = t._data;t._data = void 0, t._call(t._error, n);
    }
  }function Ko(t) {
    if (null == t) t = 1 / 0;else if (!((t = +t) >= 1)) throw new Error("invalid concurrency");return new Zo(t);
  }function tu() {
    return Math.random();
  }function nu(t, n) {
    function e(t) {
      var n,
          e = s.status;if (!e && function (t) {
        var n = t.responseType;return n && "text" !== n ? t.response : t.responseText;
      }(s) || e >= 200 && e < 300 || 304 === e) {
        if (o) try {
          n = o.call(r, s);
        } catch (t) {
          return void a.call("error", r, t);
        } else n = s;a.call("load", r, n);
      } else a.call("error", r, t);
    }var r,
        i,
        o,
        u,
        a = N("beforesend", "progress", "load", "error"),
        c = se(),
        s = new XMLHttpRequest(),
        f = null,
        l = null,
        h = 0;if ("undefined" == typeof XDomainRequest || "withCredentials" in s || !/^(http(s)?:)?\/\//.test(t) || (s = new XDomainRequest()), "onload" in s ? s.onload = s.onerror = s.ontimeout = e : s.onreadystatechange = function (t) {
      s.readyState > 3 && e(t);
    }, s.onprogress = function (t) {
      a.call("progress", r, t);
    }, r = { header: function header(t, n) {
        return t = (t + "").toLowerCase(), arguments.length < 2 ? c.get(t) : (null == n ? c.remove(t) : c.set(t, n + ""), r);
      }, mimeType: function mimeType(t) {
        return arguments.length ? (i = null == t ? null : t + "", r) : i;
      }, responseType: function responseType(t) {
        return arguments.length ? (u = t, r) : u;
      }, timeout: function timeout(t) {
        return arguments.length ? (h = +t, r) : h;
      }, user: function user(t) {
        return arguments.length < 1 ? f : (f = null == t ? null : t + "", r);
      }, password: function password(t) {
        return arguments.length < 1 ? l : (l = null == t ? null : t + "", r);
      }, response: function response(t) {
        return o = t, r;
      }, get: function get(t, n) {
        return r.send("GET", t, n);
      }, post: function post(t, n) {
        return r.send("POST", t, n);
      }, send: function send(n, e, o) {
        return s.open(n, t, !0, f, l), null == i || c.has("accept") || c.set("accept", i + ",*/*"), s.setRequestHeader && c.each(function (t, n) {
          s.setRequestHeader(n, t);
        }), null != i && s.overrideMimeType && s.overrideMimeType(i), null != u && (s.responseType = u), h > 0 && (s.timeout = h), null == o && "function" == typeof e && (o = e, e = null), null != o && 1 === o.length && (o = function (t) {
          return function (n, e) {
            t(null == n ? e : null);
          };
        }(o)), null != o && r.on("error", o).on("load", function (t) {
          o(null, t);
        }), a.call("beforesend", r, s), s.send(null == e ? null : e), r;
      }, abort: function abort() {
        return s.abort(), r;
      }, on: function on() {
        var t = a.on.apply(a, arguments);return t === a ? r : t;
      } }, null != n) {
      if ("function" != typeof n) throw new Error("invalid callback: " + n);return r.get(n);
    }return r;
  }function eu(t, n) {
    return function (e, r) {
      var i = nu(e).mimeType(t).response(n);if (null != r) {
        if ("function" != typeof r) throw new Error("invalid callback: " + r);return i.get(r);
      }return i;
    };
  }function ru(t, n) {
    return function (e, r, i) {
      arguments.length < 3 && (i = r, r = null);var o = nu(e).mimeType(t);return o.row = function (t) {
        return arguments.length ? o.response(function (t, n) {
          return function (e) {
            return t(e.responseText, n);
          };
        }(n, r = t)) : r;
      }, o.row(r), i ? o.get(i) : o;
    };
  }function iu(t) {
    function n(n) {
      var o = n + "",
          u = e.get(o);if (!u) {
        if (i !== yv) return i;e.set(o, u = r.push(n));
      }return t[(u - 1) % t.length];
    }var e = se(),
        r = [],
        i = yv;return t = null == t ? [] : _v.call(t), n.domain = function (t) {
      if (!arguments.length) return r.slice();r = [], e = se();for (var i, o, u = -1, a = t.length; ++u < a;) {
        e.has(o = (i = t[u]) + "") || e.set(o, r.push(i));
      }return n;
    }, n.range = function (e) {
      return arguments.length ? (t = _v.call(e), n) : t.slice();
    }, n.unknown = function (t) {
      return arguments.length ? (i = t, n) : i;
    }, n.copy = function () {
      return iu().domain(r).range(t).unknown(i);
    }, n;
  }function ou() {
    function t() {
      var t = i().length,
          r = u[1] < u[0],
          h = u[r - 0],
          p = u[1 - r];n = (p - h) / Math.max(1, t - c + 2 * s), a && (n = Math.floor(n)), h += (p - h - n * (t - c)) * l, e = n * (1 - c), a && (h = Math.round(h), e = Math.round(e));var d = f(t).map(function (t) {
        return h + n * t;
      });return o(r ? d.reverse() : d);
    }var n,
        e,
        r = iu().unknown(void 0),
        i = r.domain,
        o = r.range,
        u = [0, 1],
        a = !1,
        c = 0,
        s = 0,
        l = .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 ? (l = Math.max(0, Math.min(1, n)), t()) : l;
    }, r.copy = function () {
      return ou().domain(i()).range(u).round(a).paddingInner(c).paddingOuter(s).align(l);
    }, t();
  }function uu(t) {
    var n = t.copy;return t.padding = t.paddingOuter, delete t.paddingInner, delete t.paddingOuter, t.copy = function () {
      return uu(n());
    }, t;
  }function au(t) {
    return function () {
      return t;
    };
  }function cu(t) {
    return +t;
  }function su(t, n) {
    return (n -= t = +t) ? function (e) {
      return (e - t) / n;
    } : au(n);
  }function fu(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 lu(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 = Os(t, n, 1, i) - 1;return u[e](o[e](n));
    };
  }function hu(t, n) {
    return n.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp());
  }function pu(t, n) {
    function e() {
      return i = Math.min(a.length, c.length) > 2 ? lu : fu, o = u = null, r;
    }function r(n) {
      return (o || (o = i(a, c, f ? function (t) {
        return function (n, e) {
          var r = t(n = +n, e = +e);return function (t) {
            return t <= n ? 0 : t >= e ? 1 : r(t);
          };
        };
      }(t) : t, s)))(+n);
    }var i,
        o,
        u,
        a = mv,
        c = mv,
        s = fn,
        f = !1;return r.invert = function (t) {
      return (u || (u = i(c, a, su, f ? function (t) {
        return function (n, e) {
          var r = t(n = +n, e = +e);return function (t) {
            return t <= 0 ? n : t >= 1 ? e : r(t);
          };
        };
      }(n) : n)))(+t);
    }, r.domain = function (t) {
      return arguments.length ? (a = gv.call(t, cu), e()) : a.slice();
    }, r.range = function (t) {
      return arguments.length ? (c = _v.call(t), e()) : c.slice();
    }, r.rangeRound = function (t) {
      return c = _v.call(t), s = ln, 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 du(n) {
    var e = n.domain;return n.ticks = function (t) {
      var n = e();return l(n[0], n[n.length - 1], null == t ? 10 : t);
    }, n.tickFormat = function (n, r) {
      return function (n, e, r) {
        var i,
            o = n[0],
            u = n[n.length - 1],
            a = p(o, u, null == e ? 10 : e);switch ((r = De(null == r ? ",f" : r)).type) {case "s":
            var c = Math.max(Math.abs(o), Math.abs(u));return null != r.precision || isNaN(i = Be(a, c)) || (r.precision = i), t.formatPrefix(r, c);case "":case "e":case "g":case "p":case "r":
            null != r.precision || isNaN(i = He(a, Math.max(Math.abs(o), Math.abs(u)))) || (r.precision = i - ("e" === r.type));break;case "f":case "%":
            null != r.precision || isNaN(i = Ye(a)) || (r.precision = i - 2 * ("%" === r.type));}return t.format(r);
      }(e(), n, r);
    }, n.nice = function (t) {
      null == t && (t = 10);var r,
          i = e(),
          o = 0,
          u = i.length - 1,
          a = i[o],
          c = i[u];return c < a && (r = a, a = c, c = r, r = o, o = u, u = r), (r = h(a, c, t)) > 0 ? r = h(a = Math.floor(a / r) * r, c = Math.ceil(c / r) * r, t) : r < 0 && (r = h(a = Math.ceil(a * r) / r, c = Math.floor(c * r) / r, t)), r > 0 ? (i[o] = Math.floor(a / r) * r, i[u] = Math.ceil(c / r) * r, e(i)) : r < 0 && (i[o] = Math.ceil(a * r) / r, i[u] = Math.floor(c * r) / r, e(i)), n;
    }, n;
  }function vu() {
    var t = pu(su, an);return t.copy = function () {
      return hu(t, vu());
    }, du(t);
  }function gu() {
    function t(t) {
      return +t;
    }var n = [0, 1];return t.invert = t, t.domain = t.range = function (e) {
      return arguments.length ? (n = gv.call(e, cu), t) : n.slice();
    }, t.copy = function () {
      return gu().domain(n);
    }, du(t);
  }function _u(t, n) {
    var e,
        r = 0,
        i = (t = t.slice()).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;
  }function yu(t, n) {
    return (n = Math.log(n / t)) ? function (e) {
      return Math.log(e / t) / n;
    } : au(n);
  }function mu(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 xu(t) {
    return isFinite(t) ? +("1e" + t) : t < 0 ? 0 : t;
  }function bu(t) {
    return 10 === t ? xu : t === Math.E ? Math.exp : function (n) {
      return Math.pow(t, n);
    };
  }function wu(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 Mu(t) {
    return function (n) {
      return -t(-n);
    };
  }function Tu() {
    function n() {
      return o = wu(i), u = bu(i), r()[0] < 0 && (o = Mu(o), u = Mu(u)), e;
    }var e = pu(yu, mu).domain([1, 10]),
        r = e.domain,
        i = 10,
        o = wu(10),
        u = bu(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) && (p = a, a = c, c = p);var s,
          f,
          h,
          p = o(a),
          d = o(c),
          v = null == t ? 10 : +t,
          g = [];if (!(i % 1) && d - p < v) {
        if (p = Math.round(p) - 1, d = Math.round(d) + 1, a > 0) {
          for (; p < d; ++p) {
            for (f = 1, s = u(p); f < i; ++f) {
              if (!((h = s * f) < a)) {
                if (h > c) break;g.push(h);
              }
            }
          }
        } else for (; p < d; ++p) {
          for (f = i - 1, s = u(p); f >= 1; --f) {
            if (!((h = s * f) < a)) {
              if (h > c) break;g.push(h);
            }
          }
        }
      } else g = l(p, d, Math.min(d - p, v)).map(u);return n ? g.reverse() : g;
    }, 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(_u(r(), { floor: function floor(t) {
          return u(Math.floor(o(t)));
        }, ceil: function ceil(t) {
          return u(Math.ceil(o(t)));
        } }));
    }, e.copy = function () {
      return hu(e, Tu().base(i));
    }, e;
  }function Nu(t, n) {
    return t < 0 ? -Math.pow(-t, n) : Math.pow(t, n);
  }function ku() {
    var t = 1,
        n = pu(function (n, e) {
      return (e = Nu(e, t) - (n = Nu(n, t))) ? function (r) {
        return (Nu(r, t) - n) / e;
      } : au(e);
    }, function (n, e) {
      return e = Nu(e, t) - (n = Nu(n, t)), function (r) {
        return Nu(n + e * r, 1 / t);
      };
    }),
        e = n.domain;return n.exponent = function (n) {
      return arguments.length ? (t = +n, e(e())) : t;
    }, n.copy = function () {
      return hu(n, ku().exponent(t));
    }, du(n);
  }function Su() {
    function t() {
      var t = 0,
          n = Math.max(1, i.length);for (o = new Array(n - 1); ++t < n;) {
        o[t - 1] = v(r, t / n);
      }return e;
    }function e(t) {
      if (!isNaN(t = +t)) return i[Os(o, t)];
    }var r = [],
        i = [],
        o = [];return e.invertExtent = function (t) {
      var n = i.indexOf(t);return n < 0 ? [NaN, NaN] : [n > 0 ? o[n - 1] : r[0], n < o.length ? o[n] : r[r.length - 1]];
    }, e.domain = function (e) {
      if (!arguments.length) return r.slice();r = [];for (var i, o = 0, u = e.length; o < u; ++o) {
        null == (i = e[o]) || isNaN(i = +i) || r.push(i);
      }return r.sort(n), t();
    }, e.range = function (n) {
      return arguments.length ? (i = _v.call(n), t()) : i.slice();
    }, e.quantiles = function () {
      return o.slice();
    }, e.copy = function () {
      return Su().domain(r).range(i);
    }, e;
  }function Eu() {
    function t(t) {
      if (t <= t) return u[Os(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 = _v.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 Eu().domain([e, r]).range(u);
    }, du(t);
  }function Au() {
    function t(t) {
      if (t <= t) return e[Os(n, t, 0, r)];
    }var n = [.5],
        e = [0, 1],
        r = 1;return t.domain = function (i) {
      return arguments.length ? (n = _v.call(i), r = Math.min(n.length, e.length - 1), t) : n.slice();
    }, t.range = function (i) {
      return arguments.length ? (e = _v.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 Au().domain(n).range(e);
    }, t;
  }function Cu(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,
          a = [];if (e = i.ceil(e), o = null == o ? 1 : Math.floor(o), !(e < r && o > 0)) return a;do {
        a.push(u = new Date(+e)), n(e, o), t(e);
      } while (u < e && e < r);return a;
    }, i.filter = function (e) {
      return Cu(function (n) {
        if (n >= n) for (; t(n), !e(n);) {
          n.setTime(n - 1);
        }
      }, function (t, r) {
        if (t >= t) if (r < 0) for (; ++r <= 0;) {
          for (; n(t, -1), !e(t);) {}
        } else for (; --r >= 0;) {
          for (; n(t, 1), !e(t);) {}
        }
      });
    }, e && (i.count = function (n, r) {
      return xv.setTime(+n), bv.setTime(+r), t(xv), t(bv), Math.floor(e(xv, bv));
    }, 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 zu(t) {
    return Cu(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()) * Tv) / Nv;
    });
  }function Pu(t) {
    return Cu(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) / Nv;
    });
  }function Ru(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 Lu(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 qu(t) {
    return { y: t, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0 };
  }function Du(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 = Mg[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,
            o,
            u = qu(1900);if (r(u, t, e += "", 0) != e.length) return null;if ("Q" in u) return new Date(u.Q);if ("p" in u && (u.H = u.H % 12 + 12 * u.p), "V" in u) {
          if (u.V < 1 || u.V > 53) return null;"w" in u || (u.w = 1), "Z" in u ? (i = (o = (i = Lu(qu(u.y))).getUTCDay()) > 4 || 0 === o ? og.ceil(i) : og(i), i = eg.offset(i, 7 * (u.V - 1)), u.y = i.getUTCFullYear(), u.m = i.getUTCMonth(), u.d = i.getUTCDate() + (u.w + 6) % 7) : (i = (o = (i = n(qu(u.y))).getDay()) > 4 || 0 === o ? qv.ceil(i) : qv(i), i = Pv.offset(i, 7 * (u.V - 1)), u.y = i.getFullYear(), u.m = i.getMonth(), u.d = i.getDate() + (u.w + 6) % 7);
        } else ("W" in u || "U" in u) && ("w" in u || (u.w = "u" in u ? u.u % 7 : "W" in u ? 1 : 0), o = "Z" in u ? Lu(qu(u.y)).getUTCDay() : n(qu(u.y)).getDay(), u.m = 0, u.d = "W" in u ? (u.w + 6) % 7 + 7 * u.W - (o + 5) % 7 : u.w + 7 * u.U - (o + 6) % 7);return "Z" in u ? (u.H += u.Z / 100 | 0, u.M += u.Z % 100, Lu(u)) : n(u);
      };
    }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 (37 === (i = n.charCodeAt(u++))) {
          if (i = n.charAt(u++), !(o = T[i in Mg ? n.charAt(u++) : i]) || (r = o(t, e, r)) < 0) return -1;
        } else if (i != e.charCodeAt(r++)) return -1;
      }return r;
    }var i = t.dateTime,
        o = t.date,
        u = t.time,
        a = t.periods,
        c = t.days,
        s = t.shortDays,
        f = t.months,
        l = t.shortMonths,
        h = Fu(a),
        _p2 = Iu(a),
        d = Fu(c),
        v = Iu(c),
        g = Fu(s),
        _ = Iu(s),
        y = Fu(f),
        m = Iu(f),
        x = Fu(l),
        _b = Iu(l),
        w = { a: function a(t) {
        return s[t.getDay()];
      }, A: function A(t) {
        return c[t.getDay()];
      }, b: function b(t) {
        return l[t.getMonth()];
      }, B: function B(t) {
        return f[t.getMonth()];
      }, c: null, d: ua, e: ua, f: la, H: aa, I: ca, j: sa, L: fa, m: ha, M: pa, p: function p(t) {
        return a[+(t.getHours() >= 12)];
      }, Q: Ya, s: Ba, S: da, u: va, U: ga, V: _a, w: ya, W: ma, x: null, X: null, y: xa, Y: ba, Z: wa, "%": Ia },
        M = { a: function a(t) {
        return s[t.getUTCDay()];
      }, A: function A(t) {
        return c[t.getUTCDay()];
      }, b: function b(t) {
        return l[t.getUTCMonth()];
      }, B: function B(t) {
        return f[t.getUTCMonth()];
      }, c: null, d: Ma, e: Ma, f: Ea, H: Ta, I: Na, j: ka, L: Sa, m: Aa, M: Ca, p: function p(t) {
        return a[+(t.getUTCHours() >= 12)];
      }, Q: Ya, s: Ba, S: za, u: Pa, U: Ra, V: La, w: qa, W: Da, x: null, X: null, y: Ua, Y: Oa, Z: Fa, "%": Ia },
        T = { a: function a(t, n, e) {
        var r = g.exec(n.slice(e));return r ? (t.w = _[r[0].toLowerCase()], e + r[0].length) : -1;
      }, A: function A(t, n, e) {
        var r = d.exec(n.slice(e));return r ? (t.w = v[r[0].toLowerCase()], e + r[0].length) : -1;
      }, b: function b(t, n, e) {
        var r = x.exec(n.slice(e));return r ? (t.m = _b[r[0].toLowerCase()], e + r[0].length) : -1;
      }, B: function B(t, n, e) {
        var r = y.exec(n.slice(e));return r ? (t.m = m[r[0].toLowerCase()], e + r[0].length) : -1;
      }, c: function c(t, n, e) {
        return r(t, i, n, e);
      }, d: Gu, e: Gu, f: ea, H: Ju, I: Ju, j: Qu, L: na, m: Zu, M: Ku, p: function p(t, n, e) {
        var r = h.exec(n.slice(e));return r ? (t.p = _p2[r[0].toLowerCase()], e + r[0].length) : -1;
      }, Q: ia, s: oa, S: ta, u: Bu, U: Hu, V: ju, w: Yu, W: Xu, x: function x(t, n, e) {
        return r(t, o, n, e);
      }, X: function X(t, n, e) {
        return r(t, u, n, e);
      }, y: $u, Y: Vu, Z: Wu, "%": ra };return w.x = n(o, w), w.X = n(u, w), w.c = n(i, w), M.x = n(o, M), M.X = n(u, M), M.c = n(i, M), { format: function format(t) {
        var e = n(t += "", w);return e.toString = function () {
          return t;
        }, e;
      }, parse: function parse(t) {
        var n = e(t += "", Ru);return n.toString = function () {
          return t;
        }, n;
      }, utcFormat: function utcFormat(t) {
        var e = n(t += "", M);return e.toString = function () {
          return t;
        }, e;
      }, utcParse: function utcParse(t) {
        var n = e(t, Lu);return n.toString = function () {
          return t;
        }, n;
      } };
  }function Uu(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 Ou(t) {
    return t.replace(kg, "\\$&");
  }function Fu(t) {
    return new RegExp("^(?:" + t.map(Ou).join("|") + ")", "i");
  }function Iu(t) {
    for (var n = {}, e = -1, r = t.length; ++e < r;) {
      n[t[e].toLowerCase()] = e;
    }return n;
  }function Yu(t, n, e) {
    var r = Tg.exec(n.slice(e, e + 1));return r ? (t.w = +r[0], e + r[0].length) : -1;
  }function Bu(t, n, e) {
    var r = Tg.exec(n.slice(e, e + 1));return r ? (t.u = +r[0], e + r[0].length) : -1;
  }function Hu(t, n, e) {
    var r = Tg.exec(n.slice(e, e + 2));return r ? (t.U = +r[0], e + r[0].length) : -1;
  }function ju(t, n, e) {
    var r = Tg.exec(n.slice(e, e + 2));return r ? (t.V = +r[0], e + r[0].length) : -1;
  }function Xu(t, n, e) {
    var r = Tg.exec(n.slice(e, e + 2));return r ? (t.W = +r[0], e + r[0].length) : -1;
  }function Vu(t, n, e) {
    var r = Tg.exec(n.slice(e, e + 4));return r ? (t.y = +r[0], e + r[0].length) : -1;
  }function $u(t, n, e) {
    var r = Tg.exec(n.slice(e, e + 2));return r ? (t.y = +r[0] + (+r[0] > 68 ? 1900 : 2e3), e + r[0].length) : -1;
  }function Wu(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 Zu(t, n, e) {
    var r = Tg.exec(n.slice(e, e + 2));return r ? (t.m = r[0] - 1, e + r[0].length) : -1;
  }function Gu(t, n, e) {
    var r = Tg.exec(n.slice(e, e + 2));return r ? (t.d = +r[0], e + r[0].length) : -1;
  }function Qu(t, n, e) {
    var r = Tg.exec(n.slice(e, e + 3));return r ? (t.m = 0, t.d = +r[0], e + r[0].length) : -1;
  }function Ju(t, n, e) {
    var r = Tg.exec(n.slice(e, e + 2));return r ? (t.H = +r[0], e + r[0].length) : -1;
  }function Ku(t, n, e) {
    var r = Tg.exec(n.slice(e, e + 2));return r ? (t.M = +r[0], e + r[0].length) : -1;
  }function ta(t, n, e) {
    var r = Tg.exec(n.slice(e, e + 2));return r ? (t.S = +r[0], e + r[0].length) : -1;
  }function na(t, n, e) {
    var r = Tg.exec(n.slice(e, e + 3));return r ? (t.L = +r[0], e + r[0].length) : -1;
  }function ea(t, n, e) {
    var r = Tg.exec(n.slice(e, e + 6));return r ? (t.L = Math.floor(r[0] / 1e3), e + r[0].length) : -1;
  }function ra(t, n, e) {
    var r = Ng.exec(n.slice(e, e + 1));return r ? e + r[0].length : -1;
  }function ia(t, n, e) {
    var r = Tg.exec(n.slice(e));return r ? (t.Q = +r[0], e + r[0].length) : -1;
  }function oa(t, n, e) {
    var r = Tg.exec(n.slice(e));return r ? (t.Q = 1e3 * +r[0], e + r[0].length) : -1;
  }function ua(t, n) {
    return Uu(t.getDate(), n, 2);
  }function aa(t, n) {
    return Uu(t.getHours(), n, 2);
  }function ca(t, n) {
    return Uu(t.getHours() % 12 || 12, n, 2);
  }function sa(t, n) {
    return Uu(1 + Pv.count(Gv(t), t), n, 3);
  }function fa(t, n) {
    return Uu(t.getMilliseconds(), n, 3);
  }function la(t, n) {
    return fa(t, n) + "000";
  }function ha(t, n) {
    return Uu(t.getMonth() + 1, n, 2);
  }function pa(t, n) {
    return Uu(t.getMinutes(), n, 2);
  }function da(t, n) {
    return Uu(t.getSeconds(), n, 2);
  }function va(t) {
    var n = t.getDay();return 0 === n ? 7 : n;
  }function ga(t, n) {
    return Uu(Lv.count(Gv(t), t), n, 2);
  }function _a(t, n) {
    var e = t.getDay();return t = e >= 4 || 0 === e ? Ov(t) : Ov.ceil(t), Uu(Ov.count(Gv(t), t) + (4 === Gv(t).getDay()), n, 2);
  }function ya(t) {
    return t.getDay();
  }function ma(t, n) {
    return Uu(qv.count(Gv(t), t), n, 2);
  }function xa(t, n) {
    return Uu(t.getFullYear() % 100, n, 2);
  }function ba(t, n) {
    return Uu(t.getFullYear() % 1e4, n, 4);
  }function wa(t) {
    var n = t.getTimezoneOffset();return (n > 0 ? "-" : (n *= -1, "+")) + Uu(n / 60 | 0, "0", 2) + Uu(n % 60, "0", 2);
  }function Ma(t, n) {
    return Uu(t.getUTCDate(), n, 2);
  }function Ta(t, n) {
    return Uu(t.getUTCHours(), n, 2);
  }function Na(t, n) {
    return Uu(t.getUTCHours() % 12 || 12, n, 2);
  }function ka(t, n) {
    return Uu(1 + eg.count(xg(t), t), n, 3);
  }function Sa(t, n) {
    return Uu(t.getUTCMilliseconds(), n, 3);
  }function Ea(t, n) {
    return Sa(t, n) + "000";
  }function Aa(t, n) {
    return Uu(t.getUTCMonth() + 1, n, 2);
  }function Ca(t, n) {
    return Uu(t.getUTCMinutes(), n, 2);
  }function za(t, n) {
    return Uu(t.getUTCSeconds(), n, 2);
  }function Pa(t) {
    var n = t.getUTCDay();return 0 === n ? 7 : n;
  }function Ra(t, n) {
    return Uu(ig.count(xg(t), t), n, 2);
  }function La(t, n) {
    var e = t.getUTCDay();return t = e >= 4 || 0 === e ? cg(t) : cg.ceil(t), Uu(cg.count(xg(t), t) + (4 === xg(t).getUTCDay()), n, 2);
  }function qa(t) {
    return t.getUTCDay();
  }function Da(t, n) {
    return Uu(og.count(xg(t), t), n, 2);
  }function Ua(t, n) {
    return Uu(t.getUTCFullYear() % 100, n, 2);
  }function Oa(t, n) {
    return Uu(t.getUTCFullYear() % 1e4, n, 4);
  }function Fa() {
    return "+0000";
  }function Ia() {
    return "%";
  }function Ya(t) {
    return +t;
  }function Ba(t) {
    return Math.floor(+t / 1e3);
  }function Ha(n) {
    return bg = Du(n), t.timeFormat = bg.format, t.timeParse = bg.parse, t.utcFormat = bg.utcFormat, t.utcParse = bg.utcParse, bg;
  }function ja(t) {
    return new Date(t);
  }function Xa(t) {
    return t instanceof Date ? +t : +new Date(+t);
  }function Va(t, n, r, i, o, u, a, c, s) {
    function f(e) {
      return (a(e) < e ? g : u(e) < e ? _ : o(e) < e ? y : i(e) < e ? m : n(e) < e ? r(e) < e ? x : b : t(e) < e ? w : M)(e);
    }function l(n, r, i, o) {
      if (null == n && (n = 10), "number" == typeof n) {
        var u = Math.abs(i - r) / n,
            a = e(function (t) {
          return t[2];
        }).right(T, u);a === T.length ? (o = p(r / Dg, i / Dg, n), n = t) : a ? (o = (a = T[u / T[a - 1][2] < T[a][2] / u ? a - 1 : a])[1], n = a[0]) : (o = Math.max(p(r, i, n), 1), n = c);
      }return null == o ? n : n.every(o);
    }var h = pu(su, an),
        d = h.invert,
        v = h.domain,
        g = s(".%L"),
        _ = s(":%S"),
        y = s("%I:%M"),
        m = s("%I %p"),
        x = s("%a %d"),
        b = s("%b %d"),
        w = s("%B"),
        M = s("%Y"),
        T = [[a, 1, Cg], [a, 5, 5 * Cg], [a, 15, 15 * Cg], [a, 30, 30 * Cg], [u, 1, zg], [u, 5, 5 * zg], [u, 15, 15 * zg], [u, 30, 30 * zg], [o, 1, Pg], [o, 3, 3 * Pg], [o, 6, 6 * Pg], [o, 12, 12 * Pg], [i, 1, Rg], [i, 2, 2 * Rg], [r, 1, Lg], [n, 1, qg], [n, 3, 3 * qg], [t, 1, Dg]];return h.invert = function (t) {
      return new Date(d(t));
    }, h.domain = function (t) {
      return arguments.length ? v(gv.call(t, Xa)) : v().map(ja);
    }, h.ticks = function (t, n) {
      var e,
          r = v(),
          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 = v();return (t = l(t, e[0], e[e.length - 1], n)) ? v(_u(e, t)) : h;
    }, h.copy = function () {
      return hu(h, Va(t, n, r, i, o, u, a, c, s));
    }, h;
  }function $a(t) {
    return t.match(/.{6}/g).map(function (t) {
      return "#" + t;
    });
  }function Wa(t) {
    var n = t.length;return function (e) {
      return t[Math.max(0, Math.min(n - 1, Math.floor(e * n)))];
    };
  }function Za(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 Za(t).domain([e, r]).clamp(i);
    }, du(n);
  }function Ga(t) {
    return function () {
      return t;
    };
  }function Qa(t) {
    return t >= 1 ? i_ : t <= -1 ? -i_ : Math.asin(t);
  }function Ja(t) {
    return t.innerRadius;
  }function Ka(t) {
    return t.outerRadius;
  }function tc(t) {
    return t.startAngle;
  }function nc(t) {
    return t.endAngle;
  }function ec(t) {
    return t && t.padAngle;
  }function rc(t, n, e, r, i, o, u) {
    var a = t - e,
        c = n - r,
        s = (u ? o : -o) / n_(a * a + c * c),
        f = s * c,
        l = -s * a,
        h = t + f,
        p = n + l,
        d = e + f,
        v = r + l,
        g = (h + d) / 2,
        _ = (p + v) / 2,
        y = d - h,
        m = v - p,
        x = y * y + m * m,
        b = i - o,
        w = h * v - d * p,
        M = (m < 0 ? -1 : 1) * n_(Jg(0, b * b * x - w * w)),
        T = (w * m - y * M) / x,
        N = (-w * y - m * M) / x,
        k = (w * m + y * M) / x,
        S = (-w * y + m * M) / x,
        E = T - g,
        A = N - _,
        C = k - g,
        z = S - _;return E * E + A * A > C * C + z * z && (T = k, N = S), { cx: T, cy: N, x01: -f, y01: -l, x11: T * (i / b - 1), y11: N * (i / b - 1) };
  }function ic(t) {
    this._context = t;
  }function oc(t) {
    return new ic(t);
  }function uc(t) {
    return t[0];
  }function ac(t) {
    return t[1];
  }function cc() {
    function t(t) {
      var a,
          c,
          s,
          f = t.length,
          l = !1;for (null == i && (u = o(s = ee())), 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 = uc,
        e = ac,
        r = Ga(!0),
        i = null,
        o = oc,
        u = null;return t.x = function (e) {
      return arguments.length ? (n = "function" == typeof e ? e : Ga(+e), t) : n;
    }, t.y = function (n) {
      return arguments.length ? (e = "function" == typeof n ? n : Ga(+n), t) : e;
    }, t.defined = function (n) {
      return arguments.length ? (r = "function" == typeof n ? n : Ga(!!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;
  }function sc() {
    function t(t) {
      var n,
          f,
          l,
          h,
          p,
          d = t.length,
          v = !1,
          g = new Array(d),
          _ = new Array(d);for (null == a && (s = c(p = ee())), 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(g[l], _[l]);
          }s.lineEnd(), s.areaEnd();
        }v && (g[n] = +e(h, n, t), _[n] = +i(h, n, t), s.point(r ? +r(h, n, t) : g[n], o ? +o(h, n, t) : _[n]));
      }if (p) return s = null, p + "" || null;
    }function n() {
      return cc().defined(u).curve(c).context(a);
    }var e = uc,
        r = null,
        i = Ga(0),
        o = ac,
        u = Ga(!0),
        a = null,
        c = oc,
        s = null;return t.x = function (n) {
      return arguments.length ? (e = "function" == typeof n ? n : Ga(+n), r = null, t) : e;
    }, t.x0 = function (n) {
      return arguments.length ? (e = "function" == typeof n ? n : Ga(+n), t) : e;
    }, t.x1 = function (n) {
      return arguments.length ? (r = null == n ? null : "function" == typeof n ? n : Ga(+n), t) : r;
    }, t.y = function (n) {
      return arguments.length ? (i = "function" == typeof n ? n : Ga(+n), o = null, t) : i;
    }, t.y0 = function (n) {
      return arguments.length ? (i = "function" == typeof n ? n : Ga(+n), t) : i;
    }, t.y1 = function (n) {
      return arguments.length ? (o = null == n ? null : "function" == typeof n ? n : Ga(+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 : Ga(!!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;
  }function fc(t, n) {
    return n < t ? -1 : n > t ? 1 : n >= t ? 0 : NaN;
  }function lc(t) {
    return t;
  }function hc(t) {
    this._curve = t;
  }function pc(t) {
    function n(n) {
      return new hc(t(n));
    }return n._curve = t, n;
  }function dc(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(pc(t)) : n()._curve;
    }, t;
  }function vc() {
    return dc(cc().curve(u_));
  }function gc() {
    var t = sc().curve(u_),
        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 dc(e());
    }, delete t.lineX0, t.lineEndAngle = function () {
      return dc(r());
    }, delete t.lineX1, t.lineInnerRadius = function () {
      return dc(i());
    }, delete t.lineY0, t.lineOuterRadius = function () {
      return dc(o());
    }, delete t.lineY1, t.curve = function (t) {
      return arguments.length ? n(pc(t)) : n()._curve;
    }, t;
  }function _c(t, n) {
    return [(n = +n) * Math.cos(t -= Math.PI / 2), n * Math.sin(t)];
  }function yc(t) {
    return t.source;
  }function mc(t) {
    return t.target;
  }function xc(t) {
    function n() {
      var n,
          a = a_.call(arguments),
          c = e.apply(this, a),
          s = r.apply(this, a);if (u || (u = n = ee()), t(u, +i.apply(this, (a[0] = c, a)), +o.apply(this, a), +i.apply(this, (a[0] = s, a)), +o.apply(this, a)), n) return u = null, n + "" || null;
    }var e = yc,
        r = mc,
        i = uc,
        o = ac,
        u = null;return n.source = function (t) {
      return arguments.length ? (e = t, n) : e;
    }, n.target = function (t) {
      return arguments.length ? (r = t, n) : r;
    }, n.x = function (t) {
      return arguments.length ? (i = "function" == typeof t ? t : Ga(+t), n) : i;
    }, n.y = function (t) {
      return arguments.length ? (o = "function" == typeof t ? t : Ga(+t), n) : o;
    }, n.context = function (t) {
      return arguments.length ? (u = null == t ? null : t, n) : u;
    }, n;
  }function bc(t, n, e, r, i) {
    t.moveTo(n, e), t.bezierCurveTo(n = (n + r) / 2, e, n, i, r, i);
  }function wc(t, n, e, r, i) {
    t.moveTo(n, e), t.bezierCurveTo(n, e = (e + i) / 2, r, e, r, i);
  }function Mc(t, n, e, r, i) {
    var o = _c(n, e),
        u = _c(n, e = (e + i) / 2),
        a = _c(r, e),
        c = _c(r, i);t.moveTo(o[0], o[1]), t.bezierCurveTo(u[0], u[1], a[0], a[1], c[0], c[1]);
  }function Tc() {}function Nc(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 kc(t) {
    this._context = t;
  }function Sc(t) {
    this._context = t;
  }function Ec(t) {
    this._context = t;
  }function Ac(t, n) {
    this._basis = new kc(t), this._beta = n;
  }function Cc(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 zc(t, n) {
    this._context = t, this._k = (1 - n) / 6;
  }function Pc(t, n) {
    this._context = t, this._k = (1 - n) / 6;
  }function Rc(t, n) {
    this._context = t, this._k = (1 - n) / 6;
  }function Lc(t, n, e) {
    var r = t._x1,
        i = t._y1,
        o = t._x2,
        u = t._y2;if (t._l01_a > e_) {
      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 > e_) {
      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 qc(t, n) {
    this._context = t, this._alpha = n;
  }function Dc(t, n) {
    this._context = t, this._alpha = n;
  }function Uc(t, n) {
    this._context = t, this._alpha = n;
  }function Oc(t) {
    this._context = t;
  }function Fc(t) {
    return t < 0 ? -1 : 1;
  }function Ic(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 (Fc(o) + Fc(u)) * Math.min(Math.abs(o), Math.abs(u), .5 * Math.abs(a)) || 0;
  }function Yc(t, n) {
    var e = t._x1 - t._x0;return e ? (3 * (t._y1 - t._y0) / e - n) / 2 : n;
  }function Bc(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 Hc(t) {
    this._context = t;
  }function jc(t) {
    this._context = new Xc(t);
  }function Xc(t) {
    this._context = t;
  }function Vc(t) {
    this._context = t;
  }function $c(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 Wc(t, n) {
    this._context = t, this._t = n;
  }function Zc(t, n) {
    if ((i = t.length) > 1) for (var e, r, i, o = 1, u = t[n[0]], a = u.length; o < i; ++o) {
      for (r = u, u = t[n[o]], e = 0; e < a; ++e) {
        u[e][1] += u[e][0] = isNaN(r[e][1]) ? r[e][0] : r[e][1];
      }
    }
  }function Gc(t) {
    for (var n = t.length, e = new Array(n); --n >= 0;) {
      e[n] = n;
    }return e;
  }function Qc(t, n) {
    return t[n];
  }function Jc(t) {
    var n = t.map(Kc);return Gc(t).sort(function (t, e) {
      return n[t] - n[e];
    });
  }function Kc(t) {
    for (var n, e = 0, r = -1, i = t.length; ++r < i;) {
      (n = +t[r][1]) && (e += n);
    }return e;
  }function ts(t) {
    return function () {
      return t;
    };
  }function ns(t) {
    return t[0];
  }function es(t) {
    return t[1];
  }function rs() {
    this._ = null;
  }function is(t) {
    t.U = t.C = t.L = t.R = t.P = t.N = null;
  }function os(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 us(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 as(t) {
    for (; t.L;) {
      t = t.L;
    }return t;
  }function cs(t, n, e, r) {
    var i = [null, null],
        o = D_.push(i) - 1;return i.left = t, i.right = n, e && fs(i, t, n, e), r && fs(i, n, t, r), L_[t.index].halfedges.push(o), L_[n.index].halfedges.push(o), i;
  }function ss(t, n, e) {
    var r = [n, e];return r.left = t, r;
  }function fs(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 ls(t, n, e, r, i) {
    var o,
        u = t[0],
        a = t[1],
        c = u[0],
        s = u[1],
        f = 0,
        l = 1,
        h = a[0] - c,
        p = a[1] - s;if (o = n - c, h || !(o > 0)) {
      if (o /= h, h < 0) {
        if (o < f) return;o < l && (l = o);
      } else if (h > 0) {
        if (o > l) return;o > f && (f = o);
      }if (o = r - c, h || !(o < 0)) {
        if (o /= h, h < 0) {
          if (o > l) return;o > f && (f = o);
        } else if (h > 0) {
          if (o < f) return;o < l && (l = o);
        }if (o = e - s, p || !(o > 0)) {
          if (o /= p, p < 0) {
            if (o < f) return;o < l && (l = o);
          } else if (p > 0) {
            if (o > l) return;o > f && (f = o);
          }if (o = i - s, p || !(o < 0)) {
            if (o /= p, p < 0) {
              if (o > l) return;o > f && (f = o);
            } else if (p > 0) {
              if (o < f) return;o < l && (l = o);
            }return !(f > 0 || l < 1) || (f > 0 && (t[0] = [c + f * h, s + f * p]), l < 1 && (t[1] = [c + l * h, s + l * p]), !0);
          }
        }
      }
    }
  }function hs(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,
        g = (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 = g - 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 ps(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 ds(t, n) {
    return n[+(n.left !== t.site)];
  }function vs(t, n) {
    return n[+(n.left === t.site)];
  }function gs(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 >= -I_)) {
          var p = c * c + s * s,
              d = f * f + l * l,
              v = (l * p - s * d) / h,
              g = (c * d - f * p) / h,
              _ = U_.pop() || new function () {
            is(this), this.x = this.y = this.arc = this.site = this.cy = null;
          }();_.arc = t, _.site = i, _.x = v + u, _.y = (_.cy = g + a) + Math.sqrt(v * v + g * g), t.circle = _;for (var y = null, m = q_._; m;) {
            if (_.y < m.y || _.y === m.y && _.x <= m.x) {
              if (!m.L) {
                y = m.P;break;
              }m = m.L;
            } else {
              if (!m.R) {
                y = m;break;
              }m = m.R;
            }
          }q_.insert(y, _), y || (P_ = _);
        }
      }
    }
  }function _s(t) {
    var n = t.circle;n && (n.P || (P_ = n.N), q_.remove(n), U_.push(n), is(n), t.circle = null);
  }function ys(t) {
    var n = O_.pop() || new function () {
      is(this), this.edge = this.site = this.circle = null;
    }();return n.site = t, n;
  }function ms(t) {
    _s(t), R_.remove(t), O_.push(t), is(t);
  }function xs(t) {
    var n = t.circle,
        e = n.x,
        r = n.cy,
        i = [e, r],
        o = t.P,
        u = t.N,
        a = [t];ms(t);for (var c = o; c.circle && Math.abs(e - c.circle.x) < F_ && Math.abs(r - c.circle.cy) < F_;) {
      o = c.P, a.unshift(c), ms(c), c = o;
    }a.unshift(c), _s(c);for (var s = u; s.circle && Math.abs(e - s.circle.x) < F_ && Math.abs(r - s.circle.cy) < F_;) {
      u = s.N, a.push(s), ms(s), s = u;
    }a.push(s), _s(s);var f,
        l = a.length;for (f = 1; f < l; ++f) {
      s = a[f], c = a[f - 1], fs(s.edge, c.site, s.site, i);
    }c = a[0], (s = a[l - 1]).edge = cs(c.site, s.site, null, i), gs(c), gs(s);
  }function bs(t) {
    for (var n, e, r, i, o = t[0], u = t[1], a = R_._; a;) {
      if ((r = ws(a, u) - o) > F_) a = a.L;else {
        if (!((i = o - function (t, n) {
          var e = t.N;if (e) return ws(e, n);var r = t.site;return r[1] === n ? r[0] : 1 / 0;
        }(a, u)) > F_)) {
          r > -F_ ? (n = a.P, e = a) : i > -F_ ? (n = a, e = a.N) : n = e = a;break;
        }if (!a.R) {
          n = a;break;
        }a = a.R;
      }
    }(function (t) {
      L_[t.index] = { site: t, halfedges: [] };
    })(t);var c = ys(t);if (R_.insert(n, c), n || e) {
      if (n === e) return _s(n), e = ys(n.site), R_.insert(c, e), c.edge = e.edge = cs(n.site, c.site), gs(n), void gs(e);if (e) {
        _s(n), _s(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,
            g = d[1] - l,
            _ = 2 * (h * g - p * v),
            y = h * h + p * p,
            m = v * v + g * g,
            x = [(g * y - p * m) / _ + f, (h * m - v * y) / _ + l];fs(e.edge, s, d, x), c.edge = cs(s, t, null, x), e.edge = cs(t, d, null, x), gs(n), gs(e);
      } else c.edge = cs(n.site, c.site);
    }
  }function ws(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;var a = (e = u.site)[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 Ms(t, n, e) {
    return (t[0] - e[0]) * (n[1] - t[1]) - (t[0] - n[0]) * (e[1] - t[1]);
  }function Ts(t, n) {
    return n[1] - t[1] || n[0] - t[0];
  }function Ns(t, n) {
    var e,
        r,
        i,
        o = t.sort(Ts).pop();for (D_ = [], L_ = new Array(t.length), R_ = new rs(), q_ = new rs();;) {
      if (i = P_, o && (!i || o[1] < i.y || o[1] === i.y && o[0] < i.x)) o[0] === e && o[1] === r || (bs(o), e = o[0], r = o[1]), o = t.pop();else {
        if (!i) break;xs(i.arc);
      }
    }if (function () {
      for (var t, n, e, r, i = 0, o = L_.length; i < o; ++i) {
        if ((t = L_[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] = ps(t, D_[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];
          }
        }
      }
    }(), n) {
      var u = +n[0][0],
          a = +n[0][1],
          c = +n[1][0],
          s = +n[1][1];(function (t, n, e, r) {
        for (var i, o = D_.length; o--;) {
          hs(i = D_[o], t, n, e, r) && ls(i, t, n, e, r) && (Math.abs(i[0][0] - i[1][0]) > F_ || Math.abs(i[0][1] - i[1][1]) > F_) || delete D_[o];
        }
      })(u, a, c, s), function (t, n, e, r) {
        var i,
            o,
            u,
            a,
            c,
            s,
            f,
            l,
            h,
            p,
            d,
            v,
            g = L_.length,
            _ = !0;for (i = 0; i < g; ++i) {
          if (o = L_[i]) {
            for (u = o.site, a = (c = o.halfedges).length; a--;) {
              D_[c[a]] || c.splice(a, 1);
            }for (a = 0, s = c.length; a < s;) {
              d = (p = vs(o, D_[c[a]]))[0], v = p[1], l = (f = ds(o, D_[c[++a % s]]))[0], h = f[1], (Math.abs(d - l) > F_ || Math.abs(v - h) > F_) && (c.splice(a, 0, D_.push(ss(u, p, Math.abs(d - t) < F_ && r - v > F_ ? [t, Math.abs(l - t) < F_ ? h : r] : Math.abs(v - r) < F_ && e - d > F_ ? [Math.abs(h - r) < F_ ? l : e, r] : Math.abs(d - e) < F_ && v - n > F_ ? [e, Math.abs(l - e) < F_ ? h : n] : Math.abs(v - n) < F_ && d - t > F_ ? [Math.abs(h - n) < F_ ? l : t, n] : null)) - 1), ++s);
            }s && (_ = !1);
          }
        }if (_) {
          var y,
              m,
              x,
              b = 1 / 0;for (i = 0, _ = null; i < g; ++i) {
            (o = L_[i]) && (x = (y = (u = o.site)[0] - t) * y + (m = u[1] - n) * m) < b && (b = x, _ = o);
          }if (_) {
            var w = [t, n],
                M = [t, r],
                T = [e, r],
                N = [e, n];_.halfedges.push(D_.push(ss(u = _.site, w, M)) - 1, D_.push(ss(u, M, T)) - 1, D_.push(ss(u, T, N)) - 1, D_.push(ss(u, N, w)) - 1);
          }
        }for (i = 0; i < g; ++i) {
          (o = L_[i]) && (o.halfedges.length || delete L_[i]);
        }
      }(u, a, c, s);
    }this.edges = D_, this.cells = L_, R_ = q_ = D_ = L_ = null;
  }function ks(t) {
    return function () {
      return t;
    };
  }function Ss(t, n, e) {
    this.k = t, this.x = n, this.y = e;
  }function Es(t) {
    return t.__zoom || Y_;
  }function As() {
    t.event.stopImmediatePropagation();
  }function Cs() {
    t.event.preventDefault(), t.event.stopImmediatePropagation();
  }function zs() {
    return !t.event.button;
  }function Ps() {
    var t,
        n,
        e = this;return e instanceof SVGElement ? (t = (e = e.ownerSVGElement || e).width.baseVal.value, n = e.height.baseVal.value) : (t = e.clientWidth, n = e.clientHeight), [[0, 0], [t, n]];
  }function Rs() {
    return this.__zoom || Y_;
  }function Ls() {
    return -t.event.deltaY * (t.event.deltaMode ? 120 : 1) / 500;
  }function qs() {
    return "ontouchstart" in this;
  }function Ds(t, n, e) {
    var r = t.invertX(n[0][0]) - e[0][0],
        i = t.invertX(n[1][0]) - e[1][0],
        o = t.invertY(n[0][1]) - e[0][1],
        u = t.invertY(n[1][1]) - e[1][1];return t.translate(i > r ? (r + i) / 2 : Math.min(0, r) || Math.max(0, i), u > o ? (o + u) / 2 : Math.min(0, o) || Math.max(0, u));
  }var Us = e(n),
      Os = Us.right,
      Fs = Us.left,
      Is = Array.prototype,
      Ys = Is.slice,
      Bs = Is.map,
      Hs = Math.sqrt(50),
      js = Math.sqrt(10),
      Xs = Math.sqrt(2),
      Vs = Array.prototype.slice,
      $s = 1,
      Ws = 2,
      Zs = 3,
      Gs = 4,
      Qs = 1e-6,
      Js = { value: function value() {} };k.prototype = N.prototype = { constructor: k, on: function on(t, n) {
      var e,
          r = this._,
          i = function (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 };
        });
      }(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] = S(r[e], t.name, n);else if (null == n) for (e in r) {
              r[e] = S(r[e], t.name, null);
            }
          }return this;
        }for (; ++o < u;) {
          if ((e = (t = i[o]).type) && (e = function (t, n) {
            for (var e, r = 0, i = t.length; r < i; ++r) {
              if ((e = t[r]).name === n) return e.value;
            }
          }(r[e], t.name))) return e;
        }
      }
    }, copy: function copy() {
      var t = {},
          n = this._;for (var e in n) {
        t[e] = n[e].slice();
      }return new k(t);
    }, call: function call(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 (o = 0, e = (r = this._[t]).length; o < e; ++o) {
        r[o].value.apply(n, i);
      }
    }, apply: function apply(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 Ks = "http://www.w3.org/1999/xhtml",
      tf = { svg: "http://www.w3.org/2000/svg", xhtml: Ks, xlink: "http://www.w3.org/1999/xlink", xml: "http://www.w3.org/XML/1998/namespace", xmlns: "http://www.w3.org/2000/xmlns/" },
      nf = function nf(t) {
    return function () {
      return this.matches(t);
    };
  };if ("undefined" != typeof document) {
    var ef = document.documentElement;if (!ef.matches) {
      var rf = ef.webkitMatchesSelector || ef.msMatchesSelector || ef.mozMatchesSelector || ef.oMatchesSelector;nf = function nf(t) {
        return function () {
          return rf.call(this, t);
        };
      };
    }
  }var of = nf;q.prototype = { constructor: q, appendChild: function appendChild(t) {
      return this._parent.insertBefore(t, this._next);
    }, insertBefore: function insertBefore(t, n) {
      return this._parent.insertBefore(t, n);
    }, querySelector: function querySelector(t) {
      return this._parent.querySelector(t);
    }, querySelectorAll: function querySelectorAll(t) {
      return this._parent.querySelectorAll(t);
    } };var uf = "$";H.prototype = { add: function add(t) {
      this._names.indexOf(t) < 0 && (this._names.push(t), this._node.setAttribute("class", this._names.join(" ")));
    }, remove: function remove(t) {
      var n = this._names.indexOf(t);n >= 0 && (this._names.splice(n, 1), this._node.setAttribute("class", this._names.join(" ")));
    }, contains: function contains(t) {
      return this._names.indexOf(t) >= 0;
    } };var af = {};if (t.event = null, "undefined" != typeof document) {
    "onmouseenter" in document.documentElement || (af = { mouseenter: "mouseover", mouseleave: "mouseout" });
  }var cf = [null];ut.prototype = at.prototype = { constructor: ut, select: function select(t) {
      "function" != typeof t && (t = z(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 ut(r, this._parents);
    }, selectAll: function selectAll(t) {
      "function" != typeof t && (t = R(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 ut(r, i);
    }, filter: function filter(t) {
      "function" != typeof t && (t = of(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 ut(r, this._parents);
    }, data: function data(t, n) {
      if (!t) return p = new Array(this.size()), s = -1, this.each(function (t) {
        p[++s] = t;
      }), p;var e = n ? U : D,
          r = this._parents,
          i = this._groups;"function" != typeof t && (t = function (t) {
        return function () {
          return t;
        };
      }(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),
            g = u[s] = new Array(d);e(f, l, v, g, c[s] = new Array(h), p, n);for (var _, y, m = 0, x = 0; m < d; ++m) {
          if (_ = v[m]) {
            for (m >= x && (x = m + 1); !(y = g[x]) && ++x < d;) {}_._next = y || null;
          }
        }
      }return u = new ut(u, r), u._enter = a, u._exit = c, u;
    }, enter: function enter() {
      return new ut(this._enter || this._groups.map(L), this._parents);
    }, exit: function exit() {
      return new ut(this._exit || this._groups.map(L), this._parents);
    }, merge: function merge(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 ut(u, this._parents);
    }, order: function order() {
      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;
    }, sort: function sort(t) {
      function n(n, e) {
        return n && e ? t(n.__data__, e.__data__) : !n - !e;
      }t || (t = O);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 ut(i, this._parents).order();
    }, call: function call() {
      var t = arguments[0];return arguments[0] = this, t.apply(null, arguments), this;
    }, nodes: function nodes() {
      var t = new Array(this.size()),
          n = -1;return this.each(function () {
        t[++n] = this;
      }), t;
    }, node: function node() {
      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;
    }, size: function size() {
      var t = 0;return this.each(function () {
        ++t;
      }), t;
    }, empty: function empty() {
      return !this.node();
    }, each: function each(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;
    }, attr: function attr(t, n) {
      var e = E(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 ? function (t) {
        return function () {
          this.removeAttributeNS(t.space, t.local);
        };
      } : function (t) {
        return function () {
          this.removeAttribute(t);
        };
      } : "function" == typeof n ? e.local ? function (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 (t, n) {
        return function () {
          var e = n.apply(this, arguments);null == e ? this.removeAttribute(t) : this.setAttribute(t, e);
        };
      } : e.local ? function (t, n) {
        return function () {
          this.setAttributeNS(t.space, t.local, n);
        };
      } : function (t, n) {
        return function () {
          this.setAttribute(t, n);
        };
      })(e, n));
    }, style: function style(t, n, e) {
      return arguments.length > 1 ? this.each((null == n ? function (t) {
        return function () {
          this.style.removeProperty(t);
        };
      } : "function" == typeof n ? function (t, n, e) {
        return function () {
          var r = n.apply(this, arguments);null == r ? this.style.removeProperty(t) : this.style.setProperty(t, r, e);
        };
      } : function (t, n, e) {
        return function () {
          this.style.setProperty(t, n, e);
        };
      })(t, n, null == e ? "" : e)) : I(this.node(), t);
    }, property: function property(t, n) {
      return arguments.length > 1 ? this.each((null == n ? function (t) {
        return function () {
          delete this[t];
        };
      } : "function" == typeof n ? function (t, n) {
        return function () {
          var e = n.apply(this, arguments);null == e ? delete this[t] : this[t] = e;
        };
      } : function (t, n) {
        return function () {
          this[t] = n;
        };
      })(t, n)) : this.node()[t];
    }, classed: function classed(t, n) {
      var e = Y(t + "");if (arguments.length < 2) {
        for (var r = B(this.node()), i = -1, o = e.length; ++i < o;) {
          if (!r.contains(e[i])) return !1;
        }return !0;
      }return this.each(("function" == typeof n ? function (t, n) {
        return function () {
          (n.apply(this, arguments) ? j : X)(this, t);
        };
      } : n ? function (t) {
        return function () {
          j(this, t);
        };
      } : function (t) {
        return function () {
          X(this, t);
        };
      })(e, n));
    }, text: function text(t) {
      return arguments.length ? this.each(null == t ? V : ("function" == typeof t ? function (t) {
        return function () {
          var n = t.apply(this, arguments);this.textContent = null == n ? "" : n;
        };
      } : function (t) {
        return function () {
          this.textContent = t;
        };
      })(t)) : this.node().textContent;
    }, html: function html(t) {
      return arguments.length ? this.each(null == t ? $ : ("function" == typeof t ? function (t) {
        return function () {
          var n = t.apply(this, arguments);this.innerHTML = null == n ? "" : n;
        };
      } : function (t) {
        return function () {
          this.innerHTML = t;
        };
      })(t)) : this.node().innerHTML;
    }, raise: function raise() {
      return this.each(W);
    }, lower: function lower() {
      return this.each(Z);
    }, append: function append(t) {
      var n = "function" == typeof t ? t : A(t);return this.select(function () {
        return this.appendChild(n.apply(this, arguments));
      });
    }, insert: function insert(t, n) {
      var e = "function" == typeof t ? t : A(t),
          r = null == n ? G : "function" == typeof n ? n : z(n);return this.select(function () {
        return this.insertBefore(e.apply(this, arguments), r.apply(this, arguments) || null);
      });
    }, remove: function remove() {
      return this.each(Q);
    }, clone: function clone(t) {
      return this.select(t ? K : J);
    }, datum: function datum(t) {
      return arguments.length ? this.property("__data__", t) : this.node().__data__;
    }, on: function on(t, n, e) {
      var r,
          i,
          o = function (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 };
        });
      }(t + ""),
          u = o.length;if (!(arguments.length < 2)) {
        for (a = n ? rt : et, 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;
        }
      }
    }, dispatch: function dispatch(t, n) {
      return this.each(("function" == typeof n ? function (t, n) {
        return function () {
          return ot(this, t, n.apply(this, arguments));
        };
      } : function (t, n) {
        return function () {
          return ot(this, t, n);
        };
      })(t, n));
    } };var sf = 0;ft.prototype = st.prototype = { constructor: ft, get: function get(t) {
      for (var n = this._; !(n in t);) {
        if (!(t = t.parentNode)) return;
      }return t[n];
    }, set: function set(t, n) {
      return t[this._] = n;
    }, remove: function remove(t) {
      return this._ in t && delete t[this._];
    }, toString: function toString() {
      return this._;
    } }, xt.prototype.on = function () {
    var t = this._.on.apply(this._, arguments);return t === this._ ? this : t;
  };var ff = "\\s*([+-]?\\d+)\\s*",
      lf = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",
      hf = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",
      pf = /^#([0-9a-f]{3})$/,
      df = /^#([0-9a-f]{6})$/,
      vf = new RegExp("^rgb\\(" + [ff, ff, ff] + "\\)$"),
      gf = new RegExp("^rgb\\(" + [hf, hf, hf] + "\\)$"),
      _f = new RegExp("^rgba\\(" + [ff, ff, ff, lf] + "\\)$"),
      yf = new RegExp("^rgba\\(" + [hf, hf, hf, lf] + "\\)$"),
      mf = new RegExp("^hsl\\(" + [lf, hf, hf] + "\\)$"),
      xf = new RegExp("^hsla\\(" + [lf, hf, hf, lf] + "\\)$"),
      bf = { 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 };Nt(St, Et, { displayable: function displayable() {
      return this.rgb().displayable();
    }, toString: function toString() {
      return this.rgb() + "";
    } }), Nt(Rt, Pt, kt(St, { brighter: function brighter(t) {
      return t = null == t ? 1 / .7 : Math.pow(1 / .7, t), new Rt(this.r * t, this.g * t, this.b * t, this.opacity);
    }, darker: function darker(t) {
      return t = null == t ? .7 : Math.pow(.7, t), new Rt(this.r * t, this.g * t, this.b * t, this.opacity);
    }, rgb: function rgb() {
      return this;
    }, displayable: function displayable() {
      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 toString() {
      var t = this.opacity;return (1 === (t = isNaN(t) ? 1 : Math.max(0, Math.min(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 + ")");
    } })), Nt(Dt, qt, kt(St, { brighter: function brighter(t) {
      return t = null == t ? 1 / .7 : Math.pow(1 / .7, t), new Dt(this.h, this.s, this.l * t, this.opacity);
    }, darker: function darker(t) {
      return t = null == t ? .7 : Math.pow(.7, t), new Dt(this.h, this.s, this.l * t, this.opacity);
    }, rgb: function rgb() {
      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 Rt(Ut(t >= 240 ? t - 240 : t + 120, i, r), Ut(t, i, r), Ut(t < 120 ? t + 240 : t - 120, i, r), this.opacity);
    }, displayable: function displayable() {
      return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1;
    } }));var wf = Math.PI / 180,
      Mf = 180 / Math.PI,
      Tf = .95047,
      Nf = 1,
      kf = 1.08883,
      Sf = 4 / 29,
      Ef = 6 / 29,
      Af = 3 * Ef * Ef,
      Cf = Ef * Ef * Ef;Nt(It, Ft, kt(St, { brighter: function brighter(t) {
      return new It(this.l + 18 * (null == t ? 1 : t), this.a, this.b, this.opacity);
    }, darker: function darker(t) {
      return new It(this.l - 18 * (null == t ? 1 : t), this.a, this.b, this.opacity);
    }, rgb: function rgb() {
      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 = Nf * Bt(t), n = Tf * Bt(n), e = kf * Bt(e), new Rt(Ht(3.2404542 * n - 1.5371385 * t - .4985314 * e), Ht(-.969266 * n + 1.8760108 * t + .041556 * e), Ht(.0556434 * n - .2040259 * t + 1.0572252 * e), this.opacity);
    } })), Nt(Vt, Xt, kt(St, { brighter: function brighter(t) {
      return new Vt(this.h, this.c, this.l + 18 * (null == t ? 1 : t), this.opacity);
    }, darker: function darker(t) {
      return new Vt(this.h, this.c, this.l - 18 * (null == t ? 1 : t), this.opacity);
    }, rgb: function rgb() {
      return Ot(this).rgb();
    } }));var zf = -.29227,
      Pf = -.90649,
      Rf = 1.97294,
      Lf = Rf * Pf,
      qf = 1.78277 * Rf,
      Df = 1.78277 * zf - -.14861 * Pf;Nt(Wt, $t, kt(St, { brighter: function brighter(t) {
      return t = null == t ? 1 / .7 : Math.pow(1 / .7, t), new Wt(this.h, this.s, this.l * t, this.opacity);
    }, darker: function darker(t) {
      return t = null == t ? .7 : Math.pow(.7, t), new Wt(this.h, this.s, this.l * t, this.opacity);
    }, rgb: function rgb() {
      var t = isNaN(this.h) ? 0 : (this.h + 120) * wf,
          n = +this.l,
          e = isNaN(this.s) ? 0 : this.s * n * (1 - n),
          r = Math.cos(t),
          i = Math.sin(t);return new Rt(255 * (n + e * (-.14861 * r + 1.78277 * i)), 255 * (n + e * (zf * r + Pf * i)), 255 * (n + e * (Rf * r)), this.opacity);
    } }));var Uf,
      Of,
      Ff,
      If,
      Yf,
      Bf,
      Hf = function t(n) {
    function e(t, n) {
      var e = r((t = Pt(t)).r, (n = Pt(n)).r),
          i = r(t.g, n.g),
          o = r(t.b, n.b),
          u = en(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 = nn(n);return e.gamma = t, e;
  }(1),
      jf = rn(Gt),
      Xf = rn(Qt),
      Vf = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,
      $f = new RegExp(Vf.source, "g"),
      Wf = 180 / Math.PI,
      Zf = { translateX: 0, translateY: 0, rotate: 0, skewX: 0, scaleX: 1, scaleY: 1 },
      Gf = pn(function (t) {
    return "none" === t ? Zf : (Uf || (Uf = document.createElement("DIV"), Of = document.documentElement, Ff = document.defaultView), Uf.style.transform = t, t = Ff.getComputedStyle(Of.appendChild(Uf), null).getPropertyValue("transform"), Of.removeChild(Uf), t = t.slice(7, -1).split(","), hn(+t[0], +t[1], +t[2], +t[3], +t[4], +t[5]));
  }, "px, ", "px)", "deg)"),
      Qf = pn(function (t) {
    return null == t ? Zf : (If || (If = document.createElementNS("http://www.w3.org/2000/svg", "g")), If.setAttribute("transform", t), (t = If.transform.baseVal.consolidate()) ? (t = t.matrix, hn(t.a, t.b, t.c, t.d, t.e, t.f)) : Zf);
  }, ", ", ")", ")"),
      Jf = Math.SQRT2,
      Kf = 2,
      tl = 4,
      nl = 1e-12,
      el = gn(tn),
      rl = gn(en),
      il = _n(tn),
      ol = _n(en),
      ul = yn(tn),
      al = yn(en),
      cl = 0,
      sl = 0,
      fl = 0,
      ll = 1e3,
      hl = 0,
      pl = 0,
      dl = 0,
      vl = "object" == (typeof performance === "undefined" ? "undefined" : _typeof(performance)) && performance.now ? performance : Date,
      gl = "object" == (typeof window === "undefined" ? "undefined" : _typeof(window)) && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function (t) {
    setTimeout(t, 17);
  };bn.prototype = wn.prototype = { constructor: bn, restart: function restart(t, n, e) {
      if ("function" != typeof t) throw new TypeError("callback is not a function");e = (null == e ? mn() : +e) + (null == n ? 0 : +n), this._next || Bf === this || (Bf ? Bf._next = this : Yf = this, Bf = this), this._call = t, this._time = e, kn();
    }, stop: function stop() {
      this._call && (this._call = null, this._time = 1 / 0, kn());
    } };var _l = N("start", "end", "interrupt"),
      yl = [],
      ml = 0,
      xl = 1,
      bl = 2,
      wl = 3,
      Ml = 4,
      Tl = 5,
      Nl = 6,
      kl = at.prototype.constructor,
      Sl = 0,
      El = at.prototype;qn.prototype = Dn.prototype = { constructor: qn, select: function select(t) {
      var n = this._name,
          e = this._id;"function" != typeof t && (t = z(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, En(l[h], n, e, h, l, zn(a, e)));
        }
      }return new qn(o, this._parents, n, e);
    }, selectAll: function selectAll(t) {
      var n = this._name,
          e = this._id;"function" != typeof t && (t = R(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 = zn(c, e), v = 0, g = p.length; v < g; ++v) {
              (h = p[v]) && En(h, n, e, v, p, d);
            }o.push(p), u.push(c);
          }
        }
      }return new qn(o, u, n, e);
    }, filter: function filter(t) {
      "function" != typeof t && (t = of(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 qn(r, this._parents, this._name, this._id);
    }, merge: function merge(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 qn(u, this._parents, this._name, this._id);
    }, selection: function selection() {
      return new kl(this._groups, this._parents);
    }, transition: function transition() {
      for (var t = this._name, n = this._id, e = Un(), 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 = zn(u, n);En(u, t, e, s, a, { time: f.time + f.delay + f.duration, delay: 0, duration: f.duration, ease: f.ease });
          }
        }
      }return new qn(r, this._parents, t, e);
    }, call: El.call, nodes: El.nodes, node: El.node, size: El.size, empty: El.empty, each: El.each, on: function on(t, n) {
      var e = this._id;return arguments.length < 2 ? zn(this.node(), e).on.on(t) : this.each(function (t, n, e) {
        var r,
            i,
            o = function (t) {
          return (t + "").trim().split(/^|\s+/).every(function (t) {
            var n = t.indexOf(".");return n >= 0 && (t = t.slice(0, n)), !t || "start" === t;
          });
        }(n) ? An : Cn;return function () {
          var u = o(this, t),
              a = u.on;a !== r && (i = (r = a).copy()).on(n, e), u.on = i;
        };
      }(e, t, n));
    }, attr: function attr(t, n) {
      var e = E(t),
          r = "transform" === e ? Qf : Ln;return this.attrTween(t, "function" == typeof n ? (e.local ? function (t, n, e) {
        var r, i, o;return function () {
          var u,
              a = e(this);if (null != a) return (u = this.getAttributeNS(t.space, t.local)) === a ? null : u === r && a === i ? o : o = n(r = u, i = a);this.removeAttributeNS(t.space, t.local);
        };
      } : function (t, n, e) {
        var r, i, o;return function () {
          var u,
              a = e(this);if (null != a) return (u = this.getAttribute(t)) === a ? null : u === r && a === i ? o : o = n(r = u, i = a);this.removeAttribute(t);
        };
      })(e, r, Rn(this, "attr." + t, n)) : null == n ? (e.local ? function (t) {
        return function () {
          this.removeAttributeNS(t.space, t.local);
        };
      } : function (t) {
        return function () {
          this.removeAttribute(t);
        };
      })(e) : (e.local ? function (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 (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);
        };
      })(e, r, n + ""));
    }, attrTween: function attrTween(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 = E(t);return this.tween(e, (r.local ? function (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 (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;
      })(r, n));
    }, style: function style(t, n, e) {
      var r = "transform" == (t += "") ? Gf : Ln;return null == n ? this.styleTween(t, function (t, n) {
        var e, r, i;return function () {
          var o = I(this, t),
              u = (this.style.removeProperty(t), I(this, t));return o === u ? null : o === e && u === r ? i : i = n(e = o, r = u);
        };
      }(t, r)).on("end.style." + t, function (t) {
        return function () {
          this.style.removeProperty(t);
        };
      }(t)) : this.styleTween(t, "function" == typeof n ? function (t, n, e) {
        var r, i, o;return function () {
          var u = I(this, t),
              a = e(this);return null == a && (this.style.removeProperty(t), a = I(this, t)), u === a ? null : u === r && a === i ? o : o = n(r = u, i = a);
        };
      }(t, r, Rn(this, "style." + t, n)) : function (t, n, e) {
        var r, i;return function () {
          var o = I(this, t);return o === e ? null : o === r ? i : i = n(r = o, e);
        };
      }(t, r, n + ""), e);
    }, styleTween: function styleTween(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, function (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;
      }(t, n, null == e ? "" : e));
    }, text: function text(t) {
      return this.tween("text", "function" == typeof t ? function (t) {
        return function () {
          var n = t(this);this.textContent = null == n ? "" : n;
        };
      }(Rn(this, "text", t)) : function (t) {
        return function () {
          this.textContent = t;
        };
      }(null == t ? "" : t + ""));
    }, remove: function remove() {
      return this.on("end.remove", function (t) {
        return function () {
          var n = this.parentNode;for (var e in this.__transition) {
            if (+e !== t) return;
          }n && n.removeChild(this);
        };
      }(this._id));
    }, tween: function tween(t, n) {
      var e = this._id;if (t += "", arguments.length < 2) {
        for (var r, i = zn(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 ? function (t, n) {
        var e, r;return function () {
          var i = Cn(this, t),
              o = i.tween;if (o !== e) for (var u = 0, a = (r = e = o).length; u < a; ++u) {
            if (r[u].name === n) {
              (r = r.slice()).splice(u, 1);break;
            }
          }i.tween = r;
        };
      } : function (t, n, e) {
        var r, i;if ("function" != typeof e) throw new Error();return function () {
          var o = Cn(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;
        };
      })(e, t, n));
    }, delay: function delay(t) {
      var n = this._id;return arguments.length ? this.each(("function" == typeof t ? function (t, n) {
        return function () {
          An(this, t).delay = +n.apply(this, arguments);
        };
      } : function (t, n) {
        return n = +n, function () {
          An(this, t).delay = n;
        };
      })(n, t)) : zn(this.node(), n).delay;
    }, duration: function duration(t) {
      var n = this._id;return arguments.length ? this.each(("function" == typeof t ? function (t, n) {
        return function () {
          Cn(this, t).duration = +n.apply(this, arguments);
        };
      } : function (t, n) {
        return n = +n, function () {
          Cn(this, t).duration = n;
        };
      })(n, t)) : zn(this.node(), n).duration;
    }, ease: function ease(t) {
      var n = this._id;return arguments.length ? this.each(function (t, n) {
        if ("function" != typeof n) throw new Error();return function () {
          Cn(this, t).ease = n;
        };
      }(n, t)) : zn(this.node(), n).ease;
    } };var Al = function t(n) {
    function e(t) {
      return Math.pow(t, n);
    }return n = +n, e.exponent = t, e;
  }(3),
      Cl = function t(n) {
    function e(t) {
      return 1 - Math.pow(1 - t, n);
    }return n = +n, e.exponent = t, e;
  }(3),
      zl = 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;
  }(3),
      Pl = Math.PI,
      Rl = Pl / 2,
      Ll = 4 / 11,
      ql = 6 / 11,
      Dl = 8 / 11,
      Ul = .75,
      Ol = 9 / 11,
      Fl = 10 / 11,
      Il = .9375,
      Yl = 21 / 22,
      Bl = 63 / 64,
      Hl = 1 / Ll / Ll,
      jl = function t(n) {
    function e(t) {
      return t * t * ((n + 1) * t - n);
    }return n = +n, e.overshoot = t, e;
  }(1.70158),
      Xl = function t(n) {
    function e(t) {
      return --t * t * ((n + 1) * t + n) + 1;
    }return n = +n, e.overshoot = t, e;
  }(1.70158),
      Vl = 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;
  }(1.70158),
      $l = 2 * Math.PI,
      Wl = 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 /= $l);return r.amplitude = function (n) {
      return t(n, e * $l);
    }, r.period = function (e) {
      return t(n, e);
    }, r;
  }(1, .3),
      Zl = 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 /= $l);return r.amplitude = function (n) {
      return t(n, e * $l);
    }, r.period = function (e) {
      return t(n, e);
    }, r;
  }(1, .3),
      Gl = 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 /= $l);return r.amplitude = function (n) {
      return t(n, e * $l);
    }, r.period = function (e) {
      return t(n, e);
    }, r;
  }(1, .3),
      Ql = { time: null, delay: 0, duration: 250, ease: Fn };at.prototype.interrupt = function (t) {
    return this.each(function () {
      Pn(this, t);
    });
  }, at.prototype.transition = function (t) {
    var n, e;t instanceof qn ? (n = t._id, t = t._name) : (n = Un(), (e = Ql).time = mn(), 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]) && En(u, t, n, s, a, e || jn(u, n));
      }
    }return new qn(r, this._parents, t, n);
  };var Jl = [null],
      Kl = { name: "drag" },
      th = { name: "space" },
      nh = { name: "handle" },
      eh = { name: "center" },
      rh = { name: "x", handles: ["e", "w"].map(Wn), input: function input(t, n) {
      return t && [[t[0], n[0][1]], [t[1], n[1][1]]];
    }, output: function output(t) {
      return t && [t[0][0], t[1][0]];
    } },
      ih = { name: "y", handles: ["n", "s"].map(Wn), input: function input(t, n) {
      return t && [[n[0][0], t[0]], [n[1][0], t[1]]];
    }, output: function output(t) {
      return t && [t[0][1], t[1][1]];
    } },
      oh = { name: "xy", handles: ["n", "e", "s", "w", "nw", "ne", "se", "sw"].map(Wn), input: function input(t) {
      return t;
    }, output: function output(t) {
      return t;
    } },
      uh = { 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" },
      ah = { e: "w", w: "e", nw: "ne", ne: "nw", se: "sw", sw: "se" },
      ch = { n: "s", s: "n", nw: "sw", ne: "se", se: "ne", sw: "nw" },
      sh = { overlay: 1, selection: 1, n: null, e: 1, s: null, w: -1, nw: -1, ne: 1, se: 1, sw: -1 },
      fh = { overlay: 1, selection: 1, n: -1, e: null, s: 1, w: null, nw: -1, ne: -1, se: 1, sw: 1 },
      lh = Math.cos,
      hh = Math.sin,
      ph = Math.PI,
      dh = ph / 2,
      vh = 2 * ph,
      gh = Math.max,
      _h = Array.prototype.slice,
      yh = Math.PI,
      mh = 2 * yh,
      xh = mh - 1e-6;ne.prototype = ee.prototype = { constructor: ne, moveTo: function moveTo(t, n) {
      this._ += "M" + (this._x0 = this._x1 = +t) + "," + (this._y0 = this._y1 = +n);
    }, closePath: function closePath() {
      null !== this._x1 && (this._x1 = this._x0, this._y1 = this._y0, this._ += "Z");
    }, lineTo: function lineTo(t, n) {
      this._ += "L" + (this._x1 = +t) + "," + (this._y1 = +n);
    }, quadraticCurveTo: function quadraticCurveTo(t, n, e, r) {
      this._ += "Q" + +t + "," + +n + "," + (this._x1 = +e) + "," + (this._y1 = +r);
    }, bezierCurveTo: function bezierCurveTo(t, n, e, r, i, o) {
      this._ += "C" + +t + "," + +n + "," + +e + "," + +r + "," + (this._x1 = +i) + "," + (this._y1 = +o);
    }, arcTo: function arcTo(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._ += "M" + (this._x1 = t) + "," + (this._y1 = n);else if (l > 1e-6) {
        if (Math.abs(f * a - c * s) > 1e-6 && i) {
          var h = e - o,
              p = r - u,
              d = a * a + c * c,
              v = h * h + p * p,
              g = Math.sqrt(d),
              _ = Math.sqrt(l),
              y = i * Math.tan((yh - Math.acos((d + l - v) / (2 * g * _))) / 2),
              m = y / _,
              x = y / g;Math.abs(m - 1) > 1e-6 && (this._ += "L" + (t + m * s) + "," + (n + m * f)), this._ += "A" + i + "," + i + ",0,0," + +(f * h > s * p) + "," + (this._x1 = t + x * a) + "," + (this._y1 = n + x * c);
        } else this._ += "L" + (this._x1 = t) + "," + (this._y1 = n);
      } else ;
    }, arc: function arc(t, n, e, r, i, o) {
      t = +t, n = +n;var u = (e = +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._ += "M" + c + "," + s : (Math.abs(this._x1 - c) > 1e-6 || Math.abs(this._y1 - s) > 1e-6) && (this._ += "L" + c + "," + s), e && (l < 0 && (l = l % mh + mh), l > xh ? this._ += "A" + e + "," + e + ",0,1," + f + "," + (t - u) + "," + (n - a) + "A" + e + "," + e + ",0,1," + f + "," + (this._x1 = c) + "," + (this._y1 = s) : l > 1e-6 && (this._ += "A" + e + "," + e + ",0," + +(l >= yh) + "," + f + "," + (this._x1 = t + e * Math.cos(i)) + "," + (this._y1 = n + e * Math.sin(i))));
    }, rect: function rect(t, n, e, r) {
      this._ += "M" + (this._x0 = this._x1 = +t) + "," + (this._y0 = this._y1 = +n) + "h" + +e + "v" + +r + "h" + -e + "Z";
    }, toString: function toString() {
      return this._;
    } };ce.prototype = se.prototype = { constructor: ce, has: function has(t) {
      return "$" + t in this;
    }, get: function get(t) {
      return this["$" + t];
    }, set: function set(t, n) {
      return this["$" + t] = n, this;
    }, remove: function remove(t) {
      var n = "$" + t;return n in this && delete this[n];
    }, clear: function clear() {
      for (var t in this) {
        "$" === t[0] && delete this[t];
      }
    }, keys: function keys() {
      var t = [];for (var n in this) {
        "$" === n[0] && t.push(n.slice(1));
      }return t;
    }, values: function values() {
      var t = [];for (var n in this) {
        "$" === n[0] && t.push(this[n]);
      }return t;
    }, entries: function entries() {
      var t = [];for (var n in this) {
        "$" === n[0] && t.push({ key: n.slice(1), value: this[n] });
      }return t;
    }, size: function size() {
      var t = 0;for (var n in this) {
        "$" === n[0] && ++t;
      }return t;
    }, empty: function empty() {
      for (var t in this) {
        if ("$" === t[0]) return !1;
      }return !0;
    }, each: function each(t) {
      for (var n in this) {
        "$" === n[0] && t(this[n], n.slice(1), this);
      }
    } };var bh = se.prototype;de.prototype = ve.prototype = { constructor: de, has: bh.has, add: function add(t) {
      return t += "", this["$" + t] = t, this;
    }, remove: bh.remove, clear: bh.clear, values: bh.keys, size: bh.size, empty: bh.empty, each: bh.each };var wh = {},
      Mh = {},
      Th = 34,
      Nh = 10,
      kh = 13,
      Sh = _e(","),
      Eh = Sh.parse,
      Ah = Sh.parseRows,
      Ch = Sh.format,
      zh = Sh.formatRows,
      Ph = _e("\t"),
      Rh = Ph.parse,
      Lh = Ph.parseRows,
      qh = Ph.format,
      Dh = Ph.formatRows,
      Uh = Te.prototype = Ne.prototype;Uh.copy = function () {
    var t,
        n,
        e = new Ne(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 = ke(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] = ke(n));
      }
    }return e;
  }, Uh.add = function (t) {
    var n = +this._x.call(null, t),
        e = +this._y.call(null, t);return xe(this.cover(n, e), n, e, t);
  }, Uh.addAll = function (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) {
      xe(this, u[e], a[e], t[e]);
    }return this;
  }, Uh.cover = 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;
  }, Uh.data = function () {
    var t = [];return this.visit(function (n) {
      if (!n.length) do {
        t.push(n.data);
      } while (n = n.next);
    }), t;
  }, Uh.extent = 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]];
  }, Uh.find = 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 be(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 g = (i + u) / 2,
            _ = (o + a) / 2;d.push(new be(v[3], g, _, u, a), new be(v[2], i, _, g, a), new be(v[1], g, o, u, _), new be(v[0], i, o, g, _)), (s = (n >= _) << 1 | t >= g) && (c = d[d.length - 1], d[d.length - 1] = d[d.length - 1 - s], d[d.length - 1 - s] = c);
      } else {
        var y = t - +this._x.call(null, v.data),
            m = n - +this._y.call(null, v.data),
            x = y * y + 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;
  }, Uh.remove = 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,
        g = this._x1,
        _ = this._y1;if (!p) return this;if (p.length) for (;;) {
      if ((s = o >= (a = (d + g) / 2)) ? d = a : g = a, (f = u >= (c = (v + _) / 2)) ? v = c : _ = 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);
  }, Uh.removeAll = function (t) {
    for (var n = 0, e = t.length; n < e; ++n) {
      this.remove(t[n]);
    }return this;
  }, Uh.root = function () {
    return this._root;
  }, Uh.size = function () {
    var t = 0;return this.visit(function (n) {
      if (!n.length) do {
        ++t;
      } while (n = n.next);
    }), t;
  }, Uh.visit = function (t) {
    var n,
        e,
        r,
        i,
        o,
        u,
        a = [],
        c = this._root;for (c && a.push(new be(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 be(e, s, f, o, u)), (e = c[2]) && a.push(new be(e, r, f, s, u)), (e = c[1]) && a.push(new be(e, s, i, o, f)), (e = c[0]) && a.push(new be(e, r, i, s, f));
      }
    }return this;
  }, Uh.visitAfter = function (t) {
    var n,
        e = [],
        r = [];for (this._root && e.push(new be(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 be(o, u, a, f, l)), (o = i[1]) && e.push(new be(o, f, a, c, l)), (o = i[2]) && e.push(new be(o, u, l, f, s)), (o = i[3]) && e.push(new be(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;
  }, Uh.x = function (t) {
    return arguments.length ? (this._x = t, this) : this._x;
  }, Uh.y = function (t) {
    return arguments.length ? (this._y = t, this) : this._y;
  };var Oh,
      Fh = 10,
      Ih = Math.PI * (3 - Math.sqrt(5)),
      Yh = { "": function _(t, n) {
      t: for (var e, r = (t = t.toPrecision(n)).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;
    }, "%": function _(t, n) {
      return (100 * t).toFixed(n);
    }, b: function b(t) {
      return Math.round(t).toString(2);
    }, c: function c(t) {
      return t + "";
    }, d: function d(t) {
      return Math.round(t).toString(10);
    }, e: function e(t, n) {
      return t.toExponential(n);
    }, f: function f(t, n) {
      return t.toFixed(n);
    }, g: function g(t, n) {
      return t.toPrecision(n);
    }, o: function o(t) {
      return Math.round(t).toString(8);
    }, p: function p(t, n) {
      return qe(100 * t, n);
    }, r: qe, s: function s(t, n) {
      var e = Re(t, n);if (!e) return t + "";var r = e[0],
          i = e[1],
          o = i - (Oh = 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") + Re(t, Math.max(0, n + o - 1))[0];
    }, X: function X(t) {
      return Math.round(t).toString(16).toUpperCase();
    }, x: function x(t) {
      return Math.round(t).toString(16);
    } },
      Bh = /^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i;De.prototype = Ue.prototype, Ue.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 Hh,
      jh = ["y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y"];Ie({ decimal: ".", thousands: ",", grouping: [3], currency: ["$", ""] }), Xe.prototype = { constructor: Xe, reset: function reset() {
      this.s = this.t = 0;
    }, add: function add(t) {
      Ve(wp, t, this.t), Ve(this, wp.s, this.s), this.s ? this.t += wp.t : this.s = wp.t;
    }, valueOf: function valueOf() {
      return this.s;
    } };var Xh,
      Vh,
      $h,
      Wh,
      Zh,
      Gh,
      Qh,
      Jh,
      Kh,
      tp,
      np,
      ep,
      rp,
      ip,
      op,
      up,
      ap,
      cp,
      sp,
      fp,
      lp,
      hp,
      pp,
      dp,
      vp,
      gp,
      _p,
      yp,
      mp,
      xp,
      bp,
      wp = new Xe(),
      Mp = 1e-6,
      Tp = 1e-12,
      Np = Math.PI,
      kp = Np / 2,
      Sp = Np / 4,
      Ep = 2 * Np,
      Ap = 180 / Np,
      Cp = Np / 180,
      zp = Math.abs,
      Pp = Math.atan,
      Rp = Math.atan2,
      Lp = Math.cos,
      qp = Math.ceil,
      Dp = Math.exp,
      Up = Math.log,
      Op = Math.pow,
      Fp = Math.sin,
      Ip = Math.sign || function (t) {
    return t > 0 ? 1 : t < 0 ? -1 : 0;
  },
      Yp = Math.sqrt,
      Bp = Math.tan,
      Hp = { Feature: function Feature(t, n) {
      Qe(t.geometry, n);
    }, FeatureCollection: function FeatureCollection(t, n) {
      for (var e = t.features, r = -1, i = e.length; ++r < i;) {
        Qe(e[r].geometry, n);
      }
    } },
      jp = { Sphere: function Sphere(t, n) {
      n.sphere();
    }, Point: function Point(t, n) {
      t = t.coordinates, n.point(t[0], t[1], t[2]);
    }, MultiPoint: function MultiPoint(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 LineString(t, n) {
      Je(t.coordinates, n, 0);
    }, MultiLineString: function MultiLineString(t, n) {
      for (var e = t.coordinates, r = -1, i = e.length; ++r < i;) {
        Je(e[r], n, 0);
      }
    }, Polygon: function Polygon(t, n) {
      Ke(t.coordinates, n);
    }, MultiPolygon: function MultiPolygon(t, n) {
      for (var e = t.coordinates, r = -1, i = e.length; ++r < i;) {
        Ke(e[r], n);
      }
    }, GeometryCollection: function GeometryCollection(t, n) {
      for (var e = t.geometries, r = -1, i = e.length; ++r < i;) {
        Qe(e[r], n);
      }
    } },
      Xp = je(),
      Vp = je(),
      $p = { point: Ge, lineStart: Ge, lineEnd: Ge, polygonStart: function polygonStart() {
      Xp.reset(), $p.lineStart = nr, $p.lineEnd = er;
    }, polygonEnd: function polygonEnd() {
      var t = +Xp;Vp.add(t < 0 ? Ep + t : t), this.lineStart = this.lineEnd = this.point = Ge;
    }, sphere: function sphere() {
      Vp.add(Ep);
    } },
      Wp = je(),
      Zp = { point: hr, lineStart: dr, lineEnd: vr, polygonStart: function polygonStart() {
      Zp.point = gr, Zp.lineStart = _r, Zp.lineEnd = yr, Wp.reset(), $p.polygonStart();
    }, polygonEnd: function polygonEnd() {
      $p.polygonEnd(), Zp.point = hr, Zp.lineStart = dr, Zp.lineEnd = vr, Xp < 0 ? (Gh = -(Jh = 180), Qh = -(Kh = 90)) : Wp > Mp ? Kh = 90 : Wp < -Mp && (Qh = -90), op[0] = Gh, op[1] = Jh;
    } },
      Gp = { sphere: Ge, point: wr, lineStart: Tr, lineEnd: Sr, polygonStart: function polygonStart() {
      Gp.lineStart = Er, Gp.lineEnd = Ar;
    }, polygonEnd: function polygonEnd() {
      Gp.lineStart = Tr, Gp.lineEnd = Sr;
    } };Lr.invert = Lr;var Qp,
      Jp,
      Kp,
      td,
      nd,
      ed,
      rd,
      id,
      od,
      ud,
      ad,
      cd = je(),
      sd = Wr(function () {
    return !0;
  }, function (t) {
    var n,
        e = NaN,
        r = NaN,
        i = NaN;return { lineStart: function lineStart() {
        t.lineStart(), n = 1;
      }, point: function point(o, u) {
        var a = o > 0 ? Np : -Np,
            c = zp(o - e);zp(c - Np) < Mp ? (t.point(e, r = (r + u) / 2 > 0 ? kp : -kp), t.point(i, r), t.lineEnd(), t.lineStart(), t.point(a, r), t.point(o, r), n = 0) : i !== a && c >= Np && (zp(e - i) < Mp && (e -= i * Mp), zp(o - a) < Mp && (o -= a * Mp), r = function (t, n, e, r) {
          var i,
              o,
              u = Fp(t - e);return zp(u) > Mp ? Pp((Fp(n) * (o = Lp(r)) * Fp(e) - Fp(r) * (i = Lp(n)) * Fp(t)) / (i * o * u)) : (n + r) / 2;
        }(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 lineEnd() {
        t.lineEnd(), e = r = NaN;
      }, clean: function clean() {
        return 2 - n;
      } };
  }, function (t, n, e, r) {
    var i;if (null == t) i = e * kp, r.point(-Np, i), r.point(0, i), r.point(Np, i), r.point(Np, 0), r.point(Np, -i), r.point(0, -i), r.point(-Np, -i), r.point(-Np, 0), r.point(-Np, i);else if (zp(t[0] - n[0]) > Mp) {
      var o = t[0] < n[0] ? Np : -Np;i = e * o / 2, r.point(-o, i), r.point(0, i), r.point(o, i);
    } else r.point(n[0], n[1]);
  }, [-Np, -kp]),
      fd = 1e9,
      ld = -fd,
      hd = je(),
      pd = { sphere: Ge, point: Ge, lineStart: function lineStart() {
      pd.point = ti, pd.lineEnd = Kr;
    }, lineEnd: Ge, polygonStart: Ge, polygonEnd: Ge },
      dd = [null, null],
      vd = { type: "LineString", coordinates: dd },
      gd = { Feature: function Feature(t, n) {
      return ii(t.geometry, n);
    }, FeatureCollection: function FeatureCollection(t, n) {
      for (var e = t.features, r = -1, i = e.length; ++r < i;) {
        if (ii(e[r].geometry, n)) return !0;
      }return !1;
    } },
      _d = { Sphere: function Sphere() {
      return !0;
    }, Point: function Point(t, n) {
      return oi(t.coordinates, n);
    }, MultiPoint: function MultiPoint(t, n) {
      for (var e = t.coordinates, r = -1, i = e.length; ++r < i;) {
        if (oi(e[r], n)) return !0;
      }return !1;
    }, LineString: function LineString(t, n) {
      return ui(t.coordinates, n);
    }, MultiLineString: function MultiLineString(t, n) {
      for (var e = t.coordinates, r = -1, i = e.length; ++r < i;) {
        if (ui(e[r], n)) return !0;
      }return !1;
    }, Polygon: function Polygon(t, n) {
      return ai(t.coordinates, n);
    }, MultiPolygon: function MultiPolygon(t, n) {
      for (var e = t.coordinates, r = -1, i = e.length; ++r < i;) {
        if (ai(e[r], n)) return !0;
      }return !1;
    }, GeometryCollection: function GeometryCollection(t, n) {
      for (var e = t.geometries, r = -1, i = e.length; ++r < i;) {
        if (ii(e[r], n)) return !0;
      }return !1;
    } },
      yd = je(),
      md = je(),
      xd = { point: Ge, lineStart: Ge, lineEnd: Ge, polygonStart: function polygonStart() {
      xd.lineStart = di, xd.lineEnd = _i;
    }, polygonEnd: function polygonEnd() {
      xd.lineStart = xd.lineEnd = xd.point = Ge, yd.add(zp(md)), md.reset();
    }, result: function result() {
      var t = yd / 2;return yd.reset(), t;
    } },
      bd = 1 / 0,
      wd = bd,
      Md = -bd,
      Td = Md,
      Nd = { point: function point(t, n) {
      t < bd && (bd = t), t > Md && (Md = t), n < wd && (wd = n), n > Td && (Td = n);
    }, lineStart: Ge, lineEnd: Ge, polygonStart: Ge, polygonEnd: Ge, result: function result() {
      var t = [[bd, wd], [Md, Td]];return Md = Td = -(wd = bd = 1 / 0), t;
    } },
      kd = 0,
      Sd = 0,
      Ed = 0,
      Ad = 0,
      Cd = 0,
      zd = 0,
      Pd = 0,
      Rd = 0,
      Ld = 0,
      qd = { point: yi, lineStart: mi, lineEnd: wi, polygonStart: function polygonStart() {
      qd.lineStart = Mi, qd.lineEnd = Ti;
    }, polygonEnd: function polygonEnd() {
      qd.point = yi, qd.lineStart = mi, qd.lineEnd = wi;
    }, result: function result() {
      var t = Ld ? [Pd / Ld, Rd / Ld] : zd ? [Ad / zd, Cd / zd] : Ed ? [kd / Ed, Sd / Ed] : [NaN, NaN];return kd = Sd = Ed = Ad = Cd = zd = Pd = Rd = Ld = 0, t;
    } };Si.prototype = { _radius: 4.5, pointRadius: function pointRadius(t) {
      return this._radius = t, this;
    }, polygonStart: function polygonStart() {
      this._line = 0;
    }, polygonEnd: function polygonEnd() {
      this._line = NaN;
    }, lineStart: function lineStart() {
      this._point = 0;
    }, lineEnd: function lineEnd() {
      0 === this._line && this._context.closePath(), this._point = NaN;
    }, point: function point(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, Ep);}
    }, result: Ge };var Dd,
      Ud,
      Od,
      Fd,
      Id,
      Yd = je(),
      Bd = { point: Ge, lineStart: function lineStart() {
      Bd.point = Ei;
    }, lineEnd: function lineEnd() {
      Dd && Ai(Ud, Od), Bd.point = Ge;
    }, polygonStart: function polygonStart() {
      Dd = !0;
    }, polygonEnd: function polygonEnd() {
      Dd = null;
    }, result: function result() {
      var t = +Yd;return Yd.reset(), t;
    } };Ci.prototype = { _radius: 4.5, _circle: zi(4.5), pointRadius: function pointRadius(t) {
      return (t = +t) !== this._radius && (this._radius = t, this._circle = null), this;
    }, polygonStart: function polygonStart() {
      this._line = 0;
    }, polygonEnd: function polygonEnd() {
      this._line = NaN;
    }, lineStart: function lineStart() {
      this._point = 0;
    }, lineEnd: function lineEnd() {
      0 === this._line && this._string.push("Z"), this._point = NaN;
    }, point: function point(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:
          null == this._circle && (this._circle = zi(this._radius)), this._string.push("M", t, ",", n, this._circle);}
    }, result: function result() {
      if (this._string.length) {
        var t = this._string.join("");return this._string = [], t;
      }return null;
    } }, Ri.prototype = { constructor: Ri, point: function point(t, n) {
      this.stream.point(t, n);
    }, sphere: function sphere() {
      this.stream.sphere();
    }, lineStart: function lineStart() {
      this.stream.lineStart();
    }, lineEnd: function lineEnd() {
      this.stream.lineEnd();
    }, polygonStart: function polygonStart() {
      this.stream.polygonStart();
    }, polygonEnd: function polygonEnd() {
      this.stream.polygonEnd();
    } };var Hd = 16,
      jd = Lp(30 * Cp),
      Xd = Pi({ point: function point(t, n) {
      this.stream.point(t * Cp, n * Cp);
    } }),
      Vd = Vi(function (t) {
    return Yp(2 / (1 + t));
  });Vd.invert = $i(function (t) {
    return 2 * We(t / 2);
  });var $d = Vi(function (t) {
    return (t = $e(t)) && t / Fp(t);
  });$d.invert = $i(function (t) {
    return t;
  }), Wi.invert = function (t, n) {
    return [t, 2 * Pp(Dp(n)) - kp];
  }, Ji.invert = Ji, to.invert = $i(Pp), eo.invert = function (t, n) {
    var e,
        r = n,
        i = 25;do {
      var o = r * r,
          u = o * o;r -= e = (r * (1.007226 + o * (.015085 + u * (.028874 * o - .044475 - .005916 * u))) - n) / (1.007226 + o * (.045255 + u * (.259866 * o - .311325 - .005916 * 11 * u)));
    } while (zp(e) > Mp && --i > 0);return [t / (.8707 + (o = r * r) * (o * (o * o * o * (.003971 - .001529 * o) - .013791) - .131979)), r];
  }, ro.invert = $i(We), io.invert = $i(function (t) {
    return 2 * Pp(t);
  }), oo.invert = function (t, n) {
    return [-n, 2 * Pp(Dp(t)) - kp];
  }, vo.prototype = fo.prototype = { constructor: vo, count: function count() {
      return this.eachAfter(so);
    }, each: function each(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;
    }, eachAfter: function eachAfter(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;
    }, eachBefore: function eachBefore(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;
    }, sum: function sum(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;
      });
    }, sort: function sort(t) {
      return this.eachBefore(function (n) {
        n.children && n.children.sort(t);
      });
    }, path: function path(t) {
      for (var n = this, e = function (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;
      }(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;
    }, ancestors: function ancestors() {
      for (var t = this, n = [t]; t = t.parent;) {
        n.push(t);
      }return n;
    }, descendants: function descendants() {
      var t = [];return this.each(function (n) {
        t.push(n);
      }), t;
    }, leaves: function leaves() {
      var t = [];return this.eachBefore(function (n) {
        n.children || t.push(n);
      }), t;
    }, links: function links() {
      var t = this,
          n = [];return t.each(function (e) {
        e !== t && n.push({ source: e.parent, target: e });
      }), n;
    }, copy: function copy() {
      return fo(this).eachBefore(ho);
    } };var Wd = Array.prototype.slice,
      Zd = "$",
      Gd = { depth: -1 },
      Qd = {};Ho.prototype = Object.create(vo.prototype);var Jd = (1 + Math.sqrt(5)) / 2,
      Kd = function t(n) {
    function e(t, e, r, i, o) {
      Xo(n, t, e, r, i, o);
    }return e.ratio = function (n) {
      return t((n = +n) > 1 ? n : 1);
    }, e;
  }(Jd),
      tv = 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 (c = (a = u[l]).children, s = a.value = 0, f = c.length; s < f; ++s) {
          a.value += c[s].value;
        }a.dice ? qo(a, e, r, i, r += (o - r) * a.value / p) : jo(a, e, r, e += (i - e) * a.value / p, o), p -= a.value;
      } else t._squarify = u = Xo(n, t, e, r, i, o), u.ratio = n;
    }return e.ratio = function (n) {
      return t((n = +n) > 1 ? n : 1);
    }, e;
  }(Jd),
      nv = [].slice,
      ev = {};Zo.prototype = Ko.prototype = { constructor: Zo, defer: function defer(t) {
      if ("function" != typeof t) throw new Error("invalid callback");if (this._call) throw new Error("defer after await");if (null != this._error) return this;var n = nv.call(arguments, 1);return n.push(t), ++this._waiting, this._tasks.push(n), Go(this), this;
    }, abort: function abort() {
      return null == this._error && Qo(this, new Error("abort")), this;
    }, await: function _await(t) {
      if ("function" != typeof t) throw new Error("invalid callback");if (this._call) throw new Error("multiple await");return this._call = function (n, e) {
        t.apply(null, [n].concat(e));
      }, Jo(this), this;
    }, awaitAll: function awaitAll(t) {
      if ("function" != typeof t) throw new Error("invalid callback");if (this._call) throw new Error("multiple await");return this._call = t, Jo(this), this;
    } };var rv = function t(n) {
    function e(t, e) {
      return t = null == t ? 0 : +t, e = null == e ? 1 : +e, 1 === arguments.length ? (e = t, t = 0) : e -= t, function () {
        return n() * e + t;
      };
    }return e.source = t, e;
  }(tu),
      iv = function t(n) {
    function e(t, e) {
      var r, i;return t = null == t ? 0 : +t, e = null == e ? 1 : +e, function () {
        var o;if (null != r) o = r, r = null;else do {
          r = 2 * n() - 1, o = 2 * n() - 1, i = r * r + o * o;
        } while (!i || i > 1);return t + e * o * Math.sqrt(-2 * Math.log(i) / i);
      };
    }return e.source = t, e;
  }(tu),
      ov = function t(n) {
    function e() {
      var t = iv.source(n).apply(this, arguments);return function () {
        return Math.exp(t());
      };
    }return e.source = t, e;
  }(tu),
      uv = function t(n) {
    function e(t) {
      return function () {
        for (var e = 0, r = 0; r < t; ++r) {
          e += n();
        }return e;
      };
    }return e.source = t, e;
  }(tu),
      av = function t(n) {
    function e(t) {
      var e = uv.source(n)(t);return function () {
        return e() / t;
      };
    }return e.source = t, e;
  }(tu),
      cv = function t(n) {
    function e(t) {
      return function () {
        return -Math.log(1 - n()) / t;
      };
    }return e.source = t, e;
  }(tu),
      sv = eu("text/html", function (t) {
    return document.createRange().createContextualFragment(t.responseText);
  }),
      fv = eu("application/json", function (t) {
    return JSON.parse(t.responseText);
  }),
      lv = eu("text/plain", function (t) {
    return t.responseText;
  }),
      hv = eu("application/xml", function (t) {
    var n = t.responseXML;if (!n) throw new Error("parse error");return n;
  }),
      pv = ru("text/csv", Eh),
      dv = ru("text/tab-separated-values", Rh),
      vv = Array.prototype,
      gv = vv.map,
      _v = vv.slice,
      yv = { name: "implicit" },
      mv = [0, 1],
      xv = new Date(),
      bv = new Date(),
      wv = Cu(function () {}, function (t, n) {
    t.setTime(+t + n);
  }, function (t, n) {
    return n - t;
  });wv.every = function (t) {
    return t = Math.floor(t), isFinite(t) && t > 0 ? t > 1 ? Cu(function (n) {
      n.setTime(Math.floor(n / t) * t);
    }, function (n, e) {
      n.setTime(+n + e * t);
    }, function (n, e) {
      return (e - n) / t;
    }) : wv : null;
  };var Mv = wv.range,
      Tv = 6e4,
      Nv = 6048e5,
      kv = Cu(function (t) {
    t.setTime(1e3 * Math.floor(t / 1e3));
  }, function (t, n) {
    t.setTime(+t + 1e3 * n);
  }, function (t, n) {
    return (n - t) / 1e3;
  }, function (t) {
    return t.getUTCSeconds();
  }),
      Sv = kv.range,
      Ev = Cu(function (t) {
    t.setTime(Math.floor(t / Tv) * Tv);
  }, function (t, n) {
    t.setTime(+t + n * Tv);
  }, function (t, n) {
    return (n - t) / Tv;
  }, function (t) {
    return t.getMinutes();
  }),
      Av = Ev.range,
      Cv = Cu(function (t) {
    var n = t.getTimezoneOffset() * Tv % 36e5;n < 0 && (n += 36e5), t.setTime(36e5 * Math.floor((+t - n) / 36e5) + n);
  }, function (t, n) {
    t.setTime(+t + 36e5 * n);
  }, function (t, n) {
    return (n - t) / 36e5;
  }, function (t) {
    return t.getHours();
  }),
      zv = Cv.range,
      Pv = Cu(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()) * Tv) / 864e5;
  }, function (t) {
    return t.getDate() - 1;
  }),
      Rv = Pv.range,
      Lv = zu(0),
      qv = zu(1),
      Dv = zu(2),
      Uv = zu(3),
      Ov = zu(4),
      Fv = zu(5),
      Iv = zu(6),
      Yv = Lv.range,
      Bv = qv.range,
      Hv = Dv.range,
      jv = Uv.range,
      Xv = Ov.range,
      Vv = Fv.range,
      $v = Iv.range,
      Wv = Cu(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();
  }),
      Zv = Wv.range,
      Gv = Cu(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();
  });Gv.every = function (t) {
    return isFinite(t = Math.floor(t)) && t > 0 ? Cu(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 Qv = Gv.range,
      Jv = Cu(function (t) {
    t.setUTCSeconds(0, 0);
  }, function (t, n) {
    t.setTime(+t + n * Tv);
  }, function (t, n) {
    return (n - t) / Tv;
  }, function (t) {
    return t.getUTCMinutes();
  }),
      Kv = Jv.range,
      tg = Cu(function (t) {
    t.setUTCMinutes(0, 0, 0);
  }, function (t, n) {
    t.setTime(+t + 36e5 * n);
  }, function (t, n) {
    return (n - t) / 36e5;
  }, function (t) {
    return t.getUTCHours();
  }),
      ng = tg.range,
      eg = Cu(function (t) {
    t.setUTCHours(0, 0, 0, 0);
  }, function (t, n) {
    t.setUTCDate(t.getUTCDate() + n);
  }, function (t, n) {
    return (n - t) / 864e5;
  }, function (t) {
    return t.getUTCDate() - 1;
  }),
      rg = eg.range,
      ig = Pu(0),
      og = Pu(1),
      ug = Pu(2),
      ag = Pu(3),
      cg = Pu(4),
      sg = Pu(5),
      fg = Pu(6),
      lg = ig.range,
      hg = og.range,
      pg = ug.range,
      dg = ag.range,
      vg = cg.range,
      gg = sg.range,
      _g = fg.range,
      yg = Cu(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();
  }),
      mg = yg.range,
      xg = Cu(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();
  });xg.every = function (t) {
    return isFinite(t = Math.floor(t)) && t > 0 ? Cu(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 bg,
      wg = xg.range,
      Mg = { "-": "", _: " ", 0: "0" },
      Tg = /^\s*\d+/,
      Ng = /^%/,
      kg = /[\\^$*+?|[\]().{}]/g;Ha({ 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 Sg = "%Y-%m-%dT%H:%M:%S.%LZ",
      Eg = Date.prototype.toISOString ? function (t) {
    return t.toISOString();
  } : t.utcFormat(Sg),
      Ag = +new Date("2000-01-01T00:00:00.000Z") ? function (t) {
    var n = new Date(t);return isNaN(n) ? null : n;
  } : t.utcParse(Sg),
      Cg = 1e3,
      zg = 60 * Cg,
      Pg = 60 * zg,
      Rg = 24 * Pg,
      Lg = 7 * Rg,
      qg = 30 * Rg,
      Dg = 365 * Rg,
      Ug = $a("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),
      Og = $a("393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6"),
      Fg = $a("3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9"),
      Ig = $a("1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5"),
      Yg = al($t(300, .5, 0), $t(-240, .5, 1)),
      Bg = al($t(-100, .75, .35), $t(80, 1.5, .8)),
      Hg = al($t(260, .75, .35), $t(80, 1.5, .8)),
      jg = $t(),
      Xg = Wa($a("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),
      Vg = Wa($a("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),
      $g = Wa($a("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),
      Wg = Wa($a("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")),
      Zg = Math.abs,
      Gg = Math.atan2,
      Qg = Math.cos,
      Jg = Math.max,
      Kg = Math.min,
      t_ = Math.sin,
      n_ = Math.sqrt,
      e_ = 1e-12,
      r_ = Math.PI,
      i_ = r_ / 2,
      o_ = 2 * r_;ic.prototype = { areaStart: function areaStart() {
      this._line = 0;
    }, areaEnd: function areaEnd() {
      this._line = NaN;
    }, lineStart: function lineStart() {
      this._point = 0;
    }, lineEnd: function lineEnd() {
      (this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line;
    }, point: function point(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 u_ = pc(oc);hc.prototype = { areaStart: function areaStart() {
      this._curve.areaStart();
    }, areaEnd: function areaEnd() {
      this._curve.areaEnd();
    }, lineStart: function lineStart() {
      this._curve.lineStart();
    }, lineEnd: function lineEnd() {
      this._curve.lineEnd();
    }, point: function point(t, n) {
      this._curve.point(n * Math.sin(t), n * -Math.cos(t));
    } };var a_ = Array.prototype.slice,
      c_ = { draw: function draw(t, n) {
      var e = Math.sqrt(n / r_);t.moveTo(e, 0), t.arc(0, 0, e, 0, o_);
    } },
      s_ = { draw: function draw(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();
    } },
      f_ = Math.sqrt(1 / 3),
      l_ = 2 * f_,
      h_ = { draw: function draw(t, n) {
      var e = Math.sqrt(n / l_),
          r = e * f_;t.moveTo(0, -e), t.lineTo(r, 0), t.lineTo(0, e), t.lineTo(-r, 0), t.closePath();
    } },
      p_ = Math.sin(r_ / 10) / Math.sin(7 * r_ / 10),
      d_ = Math.sin(o_ / 10) * p_,
      v_ = -Math.cos(o_ / 10) * p_,
      g_ = { draw: function draw(t, n) {
      var e = Math.sqrt(.8908130915292852 * n),
          r = d_ * e,
          i = v_ * e;t.moveTo(0, -e), t.lineTo(r, i);for (var o = 1; o < 5; ++o) {
        var u = o_ * 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();
    } },
      __ = { draw: function draw(t, n) {
      var e = Math.sqrt(n),
          r = -e / 2;t.rect(r, r, e, e);
    } },
      y_ = Math.sqrt(3),
      m_ = { draw: function draw(t, n) {
      var e = -Math.sqrt(n / (3 * y_));t.moveTo(0, 2 * e), t.lineTo(-y_ * e, -e), t.lineTo(y_ * e, -e), t.closePath();
    } },
      x_ = Math.sqrt(3) / 2,
      b_ = 1 / Math.sqrt(12),
      w_ = 3 * (b_ / 2 + 1),
      M_ = { draw: function draw(t, n) {
      var e = Math.sqrt(n / w_),
          r = e / 2,
          i = e * b_,
          o = r,
          u = e * b_ + e,
          a = -o,
          c = u;t.moveTo(r, i), t.lineTo(o, u), t.lineTo(a, c), t.lineTo(-.5 * r - x_ * i, x_ * r + -.5 * i), t.lineTo(-.5 * o - x_ * u, x_ * o + -.5 * u), t.lineTo(-.5 * a - x_ * c, x_ * a + -.5 * c), t.lineTo(-.5 * r + x_ * i, -.5 * i - x_ * r), t.lineTo(-.5 * o + x_ * u, -.5 * u - x_ * o), t.lineTo(-.5 * a + x_ * c, -.5 * c - x_ * a), t.closePath();
    } },
      T_ = [c_, s_, h_, __, g_, m_, M_];kc.prototype = { areaStart: function areaStart() {
      this._line = 0;
    }, areaEnd: function areaEnd() {
      this._line = NaN;
    }, lineStart: function lineStart() {
      this._x0 = this._x1 = this._y0 = this._y1 = NaN, this._point = 0;
    }, lineEnd: function lineEnd() {
      switch (this._point) {case 3:
          Nc(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 point(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:
          Nc(this, t, n);}this._x0 = this._x1, this._x1 = t, this._y0 = this._y1, this._y1 = n;
    } }, Sc.prototype = { areaStart: Tc, areaEnd: Tc, lineStart: function lineStart() {
      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 lineEnd() {
      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 point(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:
          Nc(this, t, n);}this._x0 = this._x1, this._x1 = t, this._y0 = this._y1, this._y1 = n;
    } }, Ec.prototype = { areaStart: function areaStart() {
      this._line = 0;
    }, areaEnd: function areaEnd() {
      this._line = NaN;
    }, lineStart: function lineStart() {
      this._x0 = this._x1 = this._y0 = this._y1 = NaN, this._point = 0;
    }, lineEnd: function lineEnd() {
      (this._line || 0 !== this._line && 3 === this._point) && this._context.closePath(), this._line = 1 - this._line;
    }, point: function point(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:
          Nc(this, t, n);}this._x0 = this._x1, this._x1 = t, this._y0 = this._y1, this._y1 = n;
    } }, Ac.prototype = { lineStart: function lineStart() {
      this._x = [], this._y = [], this._basis.lineStart();
    }, lineEnd: function lineEnd() {
      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 point(t, n) {
      this._x.push(+t), this._y.push(+n);
    } };var N_ = function t(n) {
    function e(t) {
      return 1 === n ? new kc(t) : new Ac(t, n);
    }return e.beta = function (n) {
      return t(+n);
    }, e;
  }(.85);zc.prototype = { areaStart: function areaStart() {
      this._line = 0;
    }, areaEnd: function areaEnd() {
      this._line = NaN;
    }, lineStart: function lineStart() {
      this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._point = 0;
    }, lineEnd: function lineEnd() {
      switch (this._point) {case 2:
          this._context.lineTo(this._x2, this._y2);break;case 3:
          Cc(this, this._x1, this._y1);}(this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line;
    }, point: function point(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:
          Cc(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 k_ = function t(n) {
    function e(t) {
      return new zc(t, n);
    }return e.tension = function (n) {
      return t(+n);
    }, e;
  }(0);Pc.prototype = { areaStart: Tc, areaEnd: Tc, lineStart: function lineStart() {
      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 lineEnd() {
      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 point(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:
          Cc(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 S_ = function t(n) {
    function e(t) {
      return new Pc(t, n);
    }return e.tension = function (n) {
      return t(+n);
    }, e;
  }(0);Rc.prototype = { areaStart: function areaStart() {
      this._line = 0;
    }, areaEnd: function areaEnd() {
      this._line = NaN;
    }, lineStart: function lineStart() {
      this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._point = 0;
    }, lineEnd: function lineEnd() {
      (this._line || 0 !== this._line && 3 === this._point) && this._context.closePath(), this._line = 1 - this._line;
    }, point: function point(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:
          Cc(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 E_ = function t(n) {
    function e(t) {
      return new Rc(t, n);
    }return e.tension = function (n) {
      return t(+n);
    }, e;
  }(0);qc.prototype = { areaStart: function areaStart() {
      this._line = 0;
    }, areaEnd: function areaEnd() {
      this._line = NaN;
    }, lineStart: function lineStart() {
      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 lineEnd() {
      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 point(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:
          Lc(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 A_ = function t(n) {
    function e(t) {
      return n ? new qc(t, n) : new zc(t, 0);
    }return e.alpha = function (n) {
      return t(+n);
    }, e;
  }(.5);Dc.prototype = { areaStart: Tc, areaEnd: Tc, lineStart: function lineStart() {
      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 lineEnd() {
      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 point(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:
          Lc(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 C_ = function t(n) {
    function e(t) {
      return n ? new Dc(t, n) : new Pc(t, 0);
    }return e.alpha = function (n) {
      return t(+n);
    }, e;
  }(.5);Uc.prototype = { areaStart: function areaStart() {
      this._line = 0;
    }, areaEnd: function areaEnd() {
      this._line = NaN;
    }, lineStart: function lineStart() {
      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 lineEnd() {
      (this._line || 0 !== this._line && 3 === this._point) && this._context.closePath(), this._line = 1 - this._line;
    }, point: function point(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:
          Lc(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 z_ = function t(n) {
    function e(t) {
      return n ? new Uc(t, n) : new Rc(t, 0);
    }return e.alpha = function (n) {
      return t(+n);
    }, e;
  }(.5);Oc.prototype = { areaStart: Tc, areaEnd: Tc, lineStart: function lineStart() {
      this._point = 0;
    }, lineEnd: function lineEnd() {
      this._point && this._context.closePath();
    }, point: function point(t, n) {
      t = +t, n = +n, this._point ? this._context.lineTo(t, n) : (this._point = 1, this._context.moveTo(t, n));
    } }, Hc.prototype = { areaStart: function areaStart() {
      this._line = 0;
    }, areaEnd: function areaEnd() {
      this._line = NaN;
    }, lineStart: function lineStart() {
      this._x0 = this._x1 = this._y0 = this._y1 = this._t0 = NaN, this._point = 0;
    }, lineEnd: function lineEnd() {
      switch (this._point) {case 2:
          this._context.lineTo(this._x1, this._y1);break;case 3:
          Bc(this, this._t0, Yc(this, this._t0));}(this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line;
    }, point: function point(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, Bc(this, Yc(this, e = Ic(this, t, n)), e);break;default:
            Bc(this, this._t0, e = Ic(this, t, n));}this._x0 = this._x1, this._x1 = t, this._y0 = this._y1, this._y1 = n, this._t0 = e;
      }
    } }, (jc.prototype = Object.create(Hc.prototype)).point = function (t, n) {
    Hc.prototype.point.call(this, n, t);
  }, Xc.prototype = { moveTo: function moveTo(t, n) {
      this._context.moveTo(n, t);
    }, closePath: function closePath() {
      this._context.closePath();
    }, lineTo: function lineTo(t, n) {
      this._context.lineTo(n, t);
    }, bezierCurveTo: function bezierCurveTo(t, n, e, r, i, o) {
      this._context.bezierCurveTo(n, t, r, e, o, i);
    } }, Vc.prototype = { areaStart: function areaStart() {
      this._line = 0;
    }, areaEnd: function areaEnd() {
      this._line = NaN;
    }, lineStart: function lineStart() {
      this._x = [], this._y = [];
    }, lineEnd: function lineEnd() {
      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 = $c(t), i = $c(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 point(t, n) {
      this._x.push(+t), this._y.push(+n);
    } }, Wc.prototype = { areaStart: function areaStart() {
      this._line = 0;
    }, areaEnd: function areaEnd() {
      this._line = NaN;
    }, lineStart: function lineStart() {
      this._x = this._y = NaN, this._point = 0;
    }, lineEnd: function lineEnd() {
      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 point(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;
    } }, rs.prototype = { constructor: rs, insert: function insert(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 = as(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;) {
        e === (r = e.U).L ? (i = r.R) && i.C ? (e.C = i.C = !1, r.C = !0, t = r) : (t === e.R && (os(this, e), e = (t = e).U), e.C = !1, r.C = !0, us(this, r)) : (i = r.L) && i.C ? (e.C = i.C = !1, r.C = !0, t = r) : (t === e.L && (us(this, e), e = (t = e).U), e.C = !1, r.C = !0, os(this, r)), e = t.U;
      }this._.C = !1;
    }, remove: function remove(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 ? as(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) t.C = !1;else {
        do {
          if (t === this._) break;if (t === i.L) {
            if ((n = i.R).C && (n.C = !1, i.C = !0, os(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, us(this, n), n = i.R), n.C = i.C, i.C = n.R.C = !1, os(this, i), t = this._;break;
            }
          } else if ((n = i.L).C && (n.C = !1, i.C = !0, us(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, os(this, n), n = i.L), n.C = i.C, i.C = n.L.C = !1, us(this, i), t = this._;break;
          }n.C = !0, t = i, i = i.U;
        } while (!t.C);t && (t.C = !1);
      }
    } };var P_,
      R_,
      L_,
      q_,
      D_,
      U_ = [],
      O_ = [],
      F_ = 1e-6,
      I_ = 1e-12;Ns.prototype = { constructor: Ns, polygons: function polygons() {
      var t = this.edges;return this.cells.map(function (n) {
        var e = n.halfedges.map(function (e) {
          return ds(n, t[e]);
        });return e.data = n.site.data, e;
      });
    }, triangles: function triangles() {
      var t = [],
          n = this.edges;return this.cells.forEach(function (e, r) {
        if (o = (i = e.halfedges).length) for (var i, o, u, a = e.site, c = -1, s = n[i[o - 1]], f = s.left === a ? s.right : s.left; ++c < o;) {
          u = f, f = (s = n[i[c]]).left === a ? s.right : s.left, u && f && r < u.index && r < f.index && Ms(a, u, f) < 0 && t.push([a.data, u.data, f.data]);
        }
      }), t;
    }, links: function links() {
      return this.edges.filter(function (t) {
        return t.right;
      }).map(function (t) {
        return { source: t.left.data, target: t.right.data };
      });
    }, find: function find(t, n, e) {
      for (var r, i, o = this, u = o._found || 0, a = o.cells.length; !(i = o.cells[u]);) {
        if (++u >= a) return null;
      }var c = t - i.site[0],
          s = n - i.site[1],
          f = c * c + s * s;do {
        i = o.cells[r = u], u = null, i.halfedges.forEach(function (e) {
          var r = o.edges[e],
              a = r.left;if (a !== i.site && a || (a = r.right)) {
            var c = t - a[0],
                s = n - a[1],
                l = c * c + s * s;l < f && (f = l, u = a.index);
          }
        });
      } while (null !== u);return o._found = r, null == e || f <= e * e ? i.site : null;
    } }, Ss.prototype = { constructor: Ss, scale: function scale(t) {
      return 1 === t ? this : new Ss(this.k * t, this.x, this.y);
    }, translate: function translate(t, n) {
      return 0 === t & 0 === n ? this : new Ss(this.k, this.x + this.k * t, this.y + this.k * n);
    }, apply: function apply(t) {
      return [t[0] * this.k + this.x, t[1] * this.k + this.y];
    }, applyX: function applyX(t) {
      return t * this.k + this.x;
    }, applyY: function applyY(t) {
      return t * this.k + this.y;
    }, invert: function invert(t) {
      return [(t[0] - this.x) / this.k, (t[1] - this.y) / this.k];
    }, invertX: function invertX(t) {
      return (t - this.x) / this.k;
    }, invertY: function invertY(t) {
      return (t - this.y) / this.k;
    }, rescaleX: function rescaleX(t) {
      return t.copy().domain(t.range().map(this.invertX, this).map(t.invert, t));
    }, rescaleY: function rescaleY(t) {
      return t.copy().domain(t.range().map(this.invertY, this).map(t.invert, t));
    }, toString: function toString() {
      return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")";
    } };var Y_ = new Ss(1, 0, 0);Es.prototype = Ss.prototype, t.version = "4.13.0", t.bisect = Os, t.bisectRight = Os, t.bisectLeft = Fs, t.ascending = n, t.bisector = e, t.cross = function (t, n, e) {
    var i,
        o,
        u,
        a,
        c = t.length,
        s = n.length,
        f = new Array(c * s);for (null == e && (e = r), i = u = 0; i < c; ++i) {
      for (a = t[i], o = 0; o < s; ++o, ++u) {
        f[u] = e(a, n[o]);
      }
    }return f;
  }, t.descending = function (t, n) {
    return n < t ? -1 : n > t ? 1 : n >= t ? 0 : NaN;
  }, t.deviation = u, t.extent = a, t.histogram = 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],
          l = c[1],
          h = r(a, s, l);Array.isArray(h) || (h = p(s, l, h), h = f(Math.ceil(s / h) * h, Math.floor(l / h) * h, h));for (var d = h.length; h[0] <= s;) {
        h.shift(), --d;
      }for (; h[d - 1] > l;) {
        h.pop(), --d;
      }var v,
          g = new Array(d + 1);for (i = 0; i <= d; ++i) {
        (v = g[i] = []).x0 = i > 0 ? h[i - 1] : s, v.x1 = i < d ? h[i] : l;
      }for (i = 0; i < u; ++i) {
        s <= (o = a[i]) && o <= l && g[Os(h, o, 0, d)].push(t[i]);
      }return g;
    }var n = s,
        e = a,
        r = d;return t.value = function (e) {
      return arguments.length ? (n = "function" == typeof e ? e : c(e), t) : n;
    }, t.domain = function (n) {
      return arguments.length ? (e = "function" == typeof n ? n : c([n[0], n[1]]), t) : e;
    }, t.thresholds = function (n) {
      return arguments.length ? (r = "function" == typeof n ? n : Array.isArray(n) ? c(Ys.call(n)) : c(n), t) : r;
    }, t;
  }, t.thresholdFreedmanDiaconis = function (t, e, r) {
    return t = Bs.call(t, i).sort(n), Math.ceil((r - e) / (2 * (v(t, .75) - v(t, .25)) * Math.pow(t.length, -1 / 3)));
  }, t.thresholdScott = function (t, n, e) {
    return Math.ceil((e - n) / (3.5 * u(t) * Math.pow(t.length, -1 / 3)));
  }, t.thresholdSturges = d, t.max = function (t, n) {
    var e,
        r,
        i = t.length,
        o = -1;if (null == n) {
      for (; ++o < i;) {
        if (null != (e = t[o]) && e >= e) for (r = e; ++o < i;) {
          null != (e = t[o]) && e > r && (r = e);
        }
      }
    } else for (; ++o < i;) {
      if (null != (e = n(t[o], o, t)) && e >= e) for (r = e; ++o < i;) {
        null != (e = n(t[o], o, t)) && e > r && (r = e);
      }
    }return r;
  }, t.mean = function (t, n) {
    var e,
        r = t.length,
        o = r,
        u = -1,
        a = 0;if (null == n) for (; ++u < r;) {
      isNaN(e = i(t[u])) ? --o : a += e;
    } else for (; ++u < r;) {
      isNaN(e = i(n(t[u], u, t))) ? --o : a += e;
    }if (o) return a / o;
  }, t.median = function (t, e) {
    var r,
        o = t.length,
        u = -1,
        a = [];if (null == e) for (; ++u < o;) {
      isNaN(r = i(t[u])) || a.push(r);
    } else for (; ++u < o;) {
      isNaN(r = i(e(t[u], u, t))) || a.push(r);
    }return v(a.sort(n), .5);
  }, t.merge = g, t.min = _, t.pairs = function (t, n) {
    null == n && (n = r);for (var e = 0, i = t.length - 1, o = t[0], u = new Array(i < 0 ? 0 : i); e < i;) {
      u[e] = n(o, o = t[++e]);
    }return u;
  }, t.permute = function (t, n) {
    for (var e = n.length, r = new Array(e); e--;) {
      r[e] = t[n[e]];
    }return r;
  }, t.quantile = v, t.range = f, t.scan = function (t, e) {
    if (r = t.length) {
      var r,
          i,
          o = 0,
          u = 0,
          a = t[u];for (null == e && (e = n); ++o < r;) {
        (e(i = t[o], a) < 0 || 0 !== e(a, a)) && (a = i, u = o);
      }return 0 === e(a, a) ? u : void 0;
    }
  }, t.shuffle = 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;
  }, t.sum = function (t, n) {
    var e,
        r = t.length,
        i = -1,
        o = 0;if (null == n) for (; ++i < r;) {
      (e = +t[i]) && (o += e);
    } else for (; ++i < r;) {
      (e = +n(t[i], i, t)) && (o += e);
    }return o;
  }, t.ticks = l, t.tickIncrement = h, t.tickStep = p, t.transpose = y, t.variance = o, t.zip = function () {
    return y(arguments);
  }, t.axisTop = function (t) {
    return T($s, t);
  }, t.axisRight = function (t) {
    return T(Ws, t);
  }, t.axisBottom = function (t) {
    return T(Zs, t);
  }, t.axisLeft = function (t) {
    return T(Gs, t);
  }, t.brush = function () {
    return Kn(oh);
  }, t.brushX = function () {
    return Kn(rh);
  }, t.brushY = function () {
    return Kn(ih);
  }, t.brushSelection = function (t) {
    var n = t.__brush;return n ? n.dim.output(n.selection) : null;
  }, t.chord = function () {
    function t(t) {
      var o,
          u,
          a,
          c,
          s,
          l,
          h = t.length,
          p = [],
          d = f(h),
          v = [],
          g = [],
          _ = g.groups = new Array(h),
          y = new Array(h * h);for (o = 0, s = -1; ++s < h;) {
        for (u = 0, l = -1; ++l < h;) {
          u += t[s][l];
        }p.push(u), v.push(f(h)), o += u;
      }for (e && d.sort(function (t, n) {
        return e(p[t], p[n]);
      }), r && v.forEach(function (n, e) {
        n.sort(function (n, i) {
          return r(t[e][n], t[e][i]);
        });
      }), c = (o = gh(0, vh - n * h) / o) ? n : vh / h, u = 0, s = -1; ++s < h;) {
        for (a = u, l = -1; ++l < h;) {
          var m = d[s],
              x = v[m][l],
              b = t[m][x],
              w = u,
              M = u += b * o;y[x * h + m] = { index: m, subindex: x, startAngle: w, endAngle: M, value: b };
        }_[m] = { index: m, startAngle: a, endAngle: u, value: p[m] }, u += c;
      }for (s = -1; ++s < h;) {
        for (l = s - 1; ++l < h;) {
          var T = y[l * h + s],
              N = y[s * h + l];(T.value || N.value) && g.push(T.value < N.value ? { source: N, target: T } : { source: T, target: N });
        }
      }return i ? g.sort(i) : g;
    }var n = 0,
        e = null,
        r = null,
        i = null;return t.padAngle = function (e) {
      return arguments.length ? (n = gh(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 = function (t) {
        return function (n, e) {
          return t(n.source.value + n.target.value, e.source.value + e.target.value);
        };
      }(n))._ = n, t) : i && i._;
    }, t;
  }, t.ribbon = function () {
    function t() {
      var t,
          a = _h.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) - dh,
          h = o.apply(this, a) - dh,
          p = f * lh(l),
          d = f * hh(l),
          v = +r.apply(this, (a[0] = s, a)),
          g = i.apply(this, a) - dh,
          _ = o.apply(this, a) - dh;if (u || (u = t = ee()), u.moveTo(p, d), u.arc(0, 0, f, l, h), l === g && h === _ || (u.quadraticCurveTo(0, 0, v * lh(g), v * hh(g)), u.arc(0, 0, v, g, _)), u.quadraticCurveTo(0, 0, p, d), u.closePath(), t) return u = null, t + "" || null;
    }var n = re,
        e = ie,
        r = oe,
        i = ue,
        o = ae,
        u = null;return t.radius = function (n) {
      return arguments.length ? (r = "function" == typeof n ? n : te(+n), t) : r;
    }, t.startAngle = function (n) {
      return arguments.length ? (i = "function" == typeof n ? n : te(+n), t) : i;
    }, t.endAngle = function (n) {
      return arguments.length ? (o = "function" == typeof n ? n : te(+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;
  }, t.nest = function () {
    function t(n, i, u, a) {
      if (i >= o.length) return null != e && n.sort(e), null != r ? r(n) : n;for (var c, s, f, l = -1, h = n.length, p = o[i++], d = se(), v = u(); ++l < h;) {
        (f = d.get(c = p(s = n[l]) + "")) ? f.push(s) : d.set(c, [s]);
      }return d.each(function (n, e) {
        a(v, e, t(n, i, u, a));
      }), v;
    }function n(t, e) {
      if (++e > o.length) return t;var i,
          a = u[e - 1];return null != r && e >= o.length ? i = t.entries() : (i = [], t.each(function (t, r) {
        i.push({ key: r, values: n(t, e) });
      })), null != a ? i.sort(function (t, n) {
        return a(t.key, n.key);
      }) : i;
    }var e,
        r,
        i,
        o = [],
        u = [];return i = { object: function object(n) {
        return t(n, 0, fe, le);
      }, map: function map(n) {
        return t(n, 0, he, pe);
      }, entries: function entries(e) {
        return n(t(e, 0, he, pe), 0);
      }, key: function key(t) {
        return o.push(t), i;
      }, sortKeys: function sortKeys(t) {
        return u[o.length - 1] = t, i;
      }, sortValues: function sortValues(t) {
        return e = t, i;
      }, rollup: function rollup(t) {
        return r = t, i;
      } };
  }, t.set = ve, t.map = se, t.keys = function (t) {
    var n = [];for (var e in t) {
      n.push(e);
    }return n;
  }, t.values = function (t) {
    var n = [];for (var e in t) {
      n.push(t[e]);
    }return n;
  }, t.entries = function (t) {
    var n = [];for (var e in t) {
      n.push({ key: e, value: t[e] });
    }return n;
  }, t.color = Et, t.rgb = Pt, t.hsl = qt, t.lab = Ft, t.hcl = Xt, t.cubehelix = $t, t.dispatch = N, t.drag = function () {
    function n(t) {
      t.on("mousedown.drag", e).filter(g).on("touchstart.drag", o).on("touchmove.drag", u).on("touchend.drag touchcancel.drag", a).style("touch-action", "none").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
    }function e() {
      if (!h && p.apply(this, arguments)) {
        var n = c("mouse", d.apply(this, arguments), pt, this, arguments);n && (ct(t.event.view).on("mousemove.drag", r, !0).on("mouseup.drag", i, !0), _t(t.event.view), vt(), l = !1, s = t.event.clientX, f = t.event.clientY, n("start"));
      }
    }function r() {
      if (gt(), !l) {
        var n = t.event.clientX - s,
            e = t.event.clientY - f;l = n * n + e * e > x;
      }_.mouse("drag");
    }function i() {
      ct(t.event.view).on("mousemove.drag mouseup.drag", null), yt(t.event.view, l), gt(), _.mouse("end");
    }function o() {
      if (p.apply(this, arguments)) {
        var n,
            e,
            r = t.event.changedTouches,
            i = d.apply(this, arguments),
            o = r.length;for (n = 0; n < o; ++n) {
          (e = c(r[n].identifier, i, dt, this, arguments)) && (vt(), e("start"));
        }
      }
    }function u() {
      var n,
          e,
          r = t.event.changedTouches,
          i = r.length;for (n = 0; n < i; ++n) {
        (e = _[r[n].identifier]) && (gt(), e("drag"));
      }
    }function a() {
      var n,
          e,
          r = t.event.changedTouches,
          i = r.length;for (h && clearTimeout(h), h = setTimeout(function () {
        h = null;
      }, 500), n = 0; n < i; ++n) {
        (e = _[r[n].identifier]) && (vt(), e("end"));
      }
    }function c(e, r, i, o, u) {
      var a,
          c,
          s,
          f = i(r, e),
          l = y.copy();if (it(new xt(n, "beforestart", a, e, m, f[0], f[1], 0, 0, l), function () {
        return null != (t.event.subject = a = v.apply(o, u)) && (c = a.x - f[0] || 0, s = a.y - f[1] || 0, !0);
      })) return function t(h) {
        var p,
            d = f;switch (h) {case "start":
            _[e] = t, p = m++;break;case "end":
            delete _[e], --m;case "drag":
            f = i(r, e), p = m;}it(new xt(n, h, a, e, p, f[0] + c, f[1] + s, f[0] - d[0], f[1] - d[1], l), l.apply, l, [h, o, u]);
      };
    }var s,
        f,
        l,
        h,
        p = bt,
        d = wt,
        v = Mt,
        g = Tt,
        _ = {},
        y = N("start", "drag", "end"),
        m = 0,
        x = 0;return n.filter = function (t) {
      return arguments.length ? (p = "function" == typeof t ? t : mt(!!t), n) : p;
    }, n.container = function (t) {
      return arguments.length ? (d = "function" == typeof t ? t : mt(t), n) : d;
    }, n.subject = function (t) {
      return arguments.length ? (v = "function" == typeof t ? t : mt(t), n) : v;
    }, n.touchable = function (t) {
      return arguments.length ? (g = "function" == typeof t ? t : mt(!!t), n) : g;
    }, n.on = function () {
      var t = y.on.apply(y, arguments);return t === y ? n : t;
    }, n.clickDistance = function (t) {
      return arguments.length ? (x = (t = +t) * t, n) : Math.sqrt(x);
    }, n;
  }, t.dragDisable = _t, t.dragEnable = yt, t.dsvFormat = _e, t.csvParse = Eh, t.csvParseRows = Ah, t.csvFormat = Ch, t.csvFormatRows = zh, t.tsvParse = Rh, t.tsvParseRows = Lh, t.tsvFormat = qh, t.tsvFormatRows = Dh, t.easeLinear = function (t) {
    return +t;
  }, t.easeQuad = On, t.easeQuadIn = function (t) {
    return t * t;
  }, t.easeQuadOut = function (t) {
    return t * (2 - t);
  }, t.easeQuadInOut = On, t.easeCubic = Fn, t.easeCubicIn = function (t) {
    return t * t * t;
  }, t.easeCubicOut = function (t) {
    return --t * t * t + 1;
  }, t.easeCubicInOut = Fn, t.easePoly = zl, t.easePolyIn = Al, t.easePolyOut = Cl, t.easePolyInOut = zl, t.easeSin = In, t.easeSinIn = function (t) {
    return 1 - Math.cos(t * Rl);
  }, t.easeSinOut = function (t) {
    return Math.sin(t * Rl);
  }, t.easeSinInOut = In, t.easeExp = Yn, t.easeExpIn = function (t) {
    return Math.pow(2, 10 * t - 10);
  }, t.easeExpOut = function (t) {
    return 1 - Math.pow(2, -10 * t);
  }, t.easeExpInOut = Yn, t.easeCircle = Bn, t.easeCircleIn = function (t) {
    return 1 - Math.sqrt(1 - t * t);
  }, t.easeCircleOut = function (t) {
    return Math.sqrt(1 - --t * t);
  }, t.easeCircleInOut = Bn, t.easeBounce = Hn, t.easeBounceIn = function (t) {
    return 1 - Hn(1 - t);
  }, t.easeBounceOut = Hn, t.easeBounceInOut = function (t) {
    return ((t *= 2) <= 1 ? 1 - Hn(1 - t) : Hn(t - 1) + 1) / 2;
  }, t.easeBack = Vl, t.easeBackIn = jl, t.easeBackOut = Xl, t.easeBackInOut = Vl, t.easeElastic = Zl, t.easeElasticIn = Wl, t.easeElasticOut = Zl, t.easeElasticInOut = Gl, t.forceCenter = function (t, n) {
    function e() {
      var e,
          i,
          o = r.length,
          u = 0,
          a = 0;for (e = 0; e < o; ++e) {
        u += (i = r[e]).x, a += i.y;
      }for (u = u / o - t, a = a / o - n, e = 0; e < o; ++e) {
        (i = r[e]).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;
  }, t.forceCollide = function (t) {
    function n() {
      for (var t, n, r, c, s, f, l, h = i.length, p = 0; p < a; ++p) {
        for (n = Te(i, Se, Ee).visitAfter(e), t = 0; t < h; ++t) {
          r = i[t], f = o[r.index], l = f * f, c = r.x + r.vx, s = r.y + r.vy, n.visit(function (t, n, e, i, o) {
            var a = t.data,
                h = t.r,
                p = f + h;if (!a) return n > c + p || i < c - p || e > s + p || o < s - p;if (a.index > r.index) {
              var d = c - a.x - a.vx,
                  v = s - a.y - a.vy,
                  g = d * d + v * v;g < p * p && (0 === d && (d = me(), g += d * d), 0 === v && (v = me(), g += v * v), g = (p - (g = Math.sqrt(g))) / g * u, r.vx += (d *= g) * (p = (h *= h) / (l + h)), r.vy += (v *= g) * p, a.vx -= d * (p = 1 - p), a.vy -= v * p);
            }
          });
        }
      }
    }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,
            r = i.length;for (o = new Array(r), n = 0; n < r; ++n) {
          e = i[n], o[e.index] = +t(e, n, i);
        }
      }
    }var i,
        o,
        u = 1,
        a = 1;return "function" != typeof t && (t = ye(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 : ye(+e), r(), n) : t;
    }, n;
  }, t.forceLink = function (t) {
    function n(n) {
      for (var e = 0, r = t.length; e < p; ++e) {
        for (var i, a, c, f, l, h, d, v = 0; v < r; ++v) {
          a = (i = t[v]).source, f = (c = i.target).x + c.vx - a.x - a.vx || me(), l = c.y + c.vy - a.y - a.vy || me(), f *= h = ((h = Math.sqrt(f * f + l * l)) - u[v]) / h * n * o[v], l *= h, c.vx -= f * (d = s[v]), c.vy -= l * d, a.vx += f * (d = 1 - d), a.vy += l * d;
        }
      }
    }function e() {
      if (a) {
        var n,
            e,
            l = a.length,
            h = t.length,
            p = se(a, f);for (n = 0, c = new Array(l); n < h; ++n) {
          (e = t[n]).index = n, "object" != _typeof(e.source) && (e.source = Ce(p, e.source)), "object" != _typeof(e.target) && (e.target = Ce(p, e.target)), c[e.source.index] = (c[e.source.index] || 0) + 1, c[e.target.index] = (c[e.target.index] || 0) + 1;
        }for (n = 0, s = new Array(h); n < h; ++n) {
          e = t[n], s[n] = c[e.source.index] / (c[e.source.index] + c[e.target.index]);
        }o = new Array(h), r(), u = new Array(h), i();
      }
    }function r() {
      if (a) for (var n = 0, e = t.length; n < e; ++n) {
        o[n] = +l(t[n], n, t);
      }
    }function i() {
      if (a) for (var n = 0, e = t.length; n < e; ++n) {
        u[n] = +h(t[n], n, t);
      }
    }var o,
        u,
        a,
        c,
        s,
        f = Ae,
        l = function l(t) {
      return 1 / Math.min(c[t.source.index], c[t.target.index]);
    },
        h = ye(30),
        p = 1;return null == t && (t = []), n.initialize = function (t) {
      a = t, e();
    }, n.links = function (r) {
      return arguments.length ? (t = r, e(), n) : t;
    }, n.id = function (t) {
      return arguments.length ? (f = t, n) : f;
    }, n.iterations = function (t) {
      return arguments.length ? (p = +t, n) : p;
    }, n.strength = function (t) {
      return arguments.length ? (l = "function" == typeof t ? t : ye(+t), r(), n) : l;
    }, n.distance = function (t) {
      return arguments.length ? (h = "function" == typeof t ? t : ye(+t), i(), n) : h;
    }, n;
  }, t.forceManyBody = function () {
    function t(t) {
      var n,
          a = i.length,
          c = Te(i, ze, Pe).visitAfter(e);for (u = t, n = 0; n < a; ++n) {
        o = i[n], c.visit(r);
      }
    }function n() {
      if (i) {
        var t,
            n,
            e = i.length;for (a = new Array(e), t = 0; t < e; ++t) {
          n = i[t], a[n.index] = +c(n, t, i);
        }
      }
    }function e(t) {
      var n,
          e,
          r,
          i,
          o,
          u = 0,
          c = 0;if (t.length) {
        for (r = i = o = 0; o < 4; ++o) {
          (n = t[o]) && (e = Math.abs(n.value)) && (u += n.value, c += e, r += e * n.x, i += e * n.y);
        }t.x = r / c, t.y = i / c;
      } else {
        (n = t).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 = me(), p += i * i), 0 === c && (c = me(), 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 = me(), p += i * i), 0 === c && (c = me(), 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 = ye(-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 : ye(+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;
  }, t.forceRadial = function (t, n, e) {
    function r(t) {
      for (var r = 0, i = o.length; r < i; ++r) {
        var c = o[r],
            s = c.x - n || 1e-6,
            f = c.y - e || 1e-6,
            l = Math.sqrt(s * s + f * f),
            h = (a[r] - l) * u[r] * t / l;c.vx += s * h, c.vy += f * h;
      }
    }function i() {
      if (o) {
        var n,
            e = o.length;for (u = new Array(e), a = new Array(e), n = 0; n < e; ++n) {
          a[n] = +t(o[n], n, o), u[n] = isNaN(a[n]) ? 0 : +c(o[n], n, o);
        }
      }
    }var o,
        u,
        a,
        c = ye(.1);return "function" != typeof t && (t = ye(+t)), null == n && (n = 0), null == e && (e = 0), r.initialize = function (t) {
      o = t, i();
    }, r.strength = function (t) {
      return arguments.length ? (c = "function" == typeof t ? t : ye(+t), i(), r) : c;
    }, r.radius = function (n) {
      return arguments.length ? (t = "function" == typeof n ? n : ye(+n), i(), r) : t;
    }, r.x = function (t) {
      return arguments.length ? (n = +t, r) : n;
    }, r.y = function (t) {
      return arguments.length ? (e = +t, r) : e;
    }, r;
  }, t.forceSimulation = function (t) {
    function n() {
      e(), p.call("tick", o), u < a && (h.stop(), p.call("end", o));
    }function e() {
      var n,
          e,
          r = t.length;for (u += (s - u) * c, l.each(function (t) {
        t(u);
      }), n = 0; n < r; ++n) {
        null == (e = t[n]).fx ? e.x += e.vx *= f : (e.x = e.fx, e.vx = 0), null == e.fy ? e.y += e.vy *= f : (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 = Fh * Math.sqrt(e),
              o = e * Ih;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 o,
        u = 1,
        a = .001,
        c = 1 - Math.pow(a, 1 / 300),
        s = 0,
        f = .6,
        l = se(),
        h = wn(n),
        p = N("tick", "end");return null == t && (t = []), r(), o = { tick: e, restart: function restart() {
        return h.restart(n), o;
      }, stop: function stop() {
        return h.stop(), o;
      }, nodes: function nodes(n) {
        return arguments.length ? (t = n, r(), l.each(i), o) : t;
      }, alpha: function alpha(t) {
        return arguments.length ? (u = +t, o) : u;
      }, alphaMin: function alphaMin(t) {
        return arguments.length ? (a = +t, o) : a;
      }, alphaDecay: function alphaDecay(t) {
        return arguments.length ? (c = +t, o) : +c;
      }, alphaTarget: function alphaTarget(t) {
        return arguments.length ? (s = +t, o) : s;
      }, velocityDecay: function velocityDecay(t) {
        return arguments.length ? (f = 1 - t, o) : 1 - f;
      }, force: function force(t, n) {
        return arguments.length > 1 ? (null == n ? l.remove(t) : l.set(t, i(n)), o) : l.get(t);
      }, find: function find(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) {
          (u = (i = n - (a = t[s]).x) * i + (o = e - a.y) * o) < r && (c = a, r = u);
        }return c;
      }, on: function on(t, n) {
        return arguments.length > 1 ? (p.on(t, n), o) : p.on(t);
      } };
  }, t.forceX = function (t) {
    function n(t) {
      for (var n, e = 0, u = r.length; e < u; ++e) {
        (n = r[e]).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 = ye(.1);return "function" != typeof t && (t = ye(null == t ? 0 : +t)), n.initialize = function (t) {
      r = t, e();
    }, n.strength = function (t) {
      return arguments.length ? (u = "function" == typeof t ? t : ye(+t), e(), n) : u;
    }, n.x = function (r) {
      return arguments.length ? (t = "function" == typeof r ? r : ye(+r), e(), n) : t;
    }, n;
  }, t.forceY = function (t) {
    function n(t) {
      for (var n, e = 0, u = r.length; e < u; ++e) {
        (n = r[e]).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 = ye(.1);return "function" != typeof t && (t = ye(null == t ? 0 : +t)), n.initialize = function (t) {
      r = t, e();
    }, n.strength = function (t) {
      return arguments.length ? (u = "function" == typeof t ? t : ye(+t), e(), n) : u;
    }, n.y = function (r) {
      return arguments.length ? (t = "function" == typeof r ? r : ye(+r), e(), n) : t;
    }, n;
  }, t.formatDefaultLocale = Ie, t.formatLocale = Fe, t.formatSpecifier = De, t.precisionFixed = Ye, t.precisionPrefix = Be, t.precisionRound = He, t.geoArea = function (t) {
    return Vp.reset(), tr(t, $p), 2 * Vp;
  }, t.geoBounds = function (t) {
    var n, e, r, i, o, u, a;if (Kh = Jh = -(Gh = Qh = 1 / 0), ip = [], tr(t, Zp), e = ip.length) {
      for (ip.sort(xr), n = 1, o = [r = ip[0]]; n < e; ++n) {
        br(r, (i = ip[n])[0]) || br(r, i[1]) ? (mr(r[0], i[1]) > mr(r[0], r[1]) && (r[1] = i[1]), mr(i[0], r[1]) > mr(r[0], r[1]) && (r[0] = i[0])) : o.push(r = i);
      }for (u = -1 / 0, n = 0, r = o[e = o.length - 1]; n <= e; r = i, ++n) {
        i = o[n], (a = mr(r[1], i[0])) > u && (u = a, Gh = i[0], Jh = r[1]);
      }
    }return ip = op = null, Gh === 1 / 0 || Qh === 1 / 0 ? [[NaN, NaN], [NaN, NaN]] : [[Gh, Qh], [Jh, Kh]];
  }, t.geoCentroid = function (t) {
    up = ap = cp = sp = fp = lp = hp = pp = dp = vp = gp = 0, tr(t, Gp);var n = dp,
        e = vp,
        r = gp,
        i = n * n + e * e + r * r;return i < Tp && (n = lp, e = hp, r = pp, ap < Mp && (n = cp, e = sp, r = fp), (i = n * n + e * e + r * r) < Tp) ? [NaN, NaN] : [Rp(e, n) * Ap, We(r / Yp(i)) * Ap];
  }, t.geoCircle = function () {
    function t() {
      var t = r.apply(this, arguments),
          a = i.apply(this, arguments) * Cp,
          c = o.apply(this, arguments) * Cp;return n = [], e = qr(-t[0] * Cp, -t[1] * Cp, 0).invert, Ir(u, a, c, 1), t = { type: "Polygon", coordinates: [n] }, n = e = null, t;
    }var n,
        e,
        r = Pr([0, 0]),
        i = Pr(90),
        o = Pr(6),
        u = { point: function point(t, r) {
        n.push(t = e(t, r)), t[0] *= Ap, t[1] *= Ap;
      } };return t.center = function (n) {
      return arguments.length ? (r = "function" == typeof n ? n : Pr([+n[0], +n[1]]), t) : r;
    }, t.radius = function (n) {
      return arguments.length ? (i = "function" == typeof n ? n : Pr(+n), t) : i;
    }, t.precision = function (n) {
      return arguments.length ? (o = "function" == typeof n ? n : Pr(+n), t) : o;
    }, t;
  }, t.geoClipAntimeridian = sd, t.geoClipCircle = Qr, t.geoClipExtent = function () {
    var t,
        n,
        e,
        r = 0,
        i = 0,
        o = 960,
        u = 500;return e = { stream: function stream(e) {
        return t && n === e ? t : t = Jr(r, i, o, u)(n = e);
      }, extent: function extent(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]];
      } };
  }, t.geoClipRectangle = Jr, t.geoContains = function (t, n) {
    return (t && gd.hasOwnProperty(t.type) ? gd[t.type] : ii)(t, n);
  }, t.geoDistance = ri, t.geoGraticule = hi, t.geoGraticule10 = function () {
    return hi()();
  }, t.geoInterpolate = function (t, n) {
    var e = t[0] * Cp,
        r = t[1] * Cp,
        i = n[0] * Cp,
        o = n[1] * Cp,
        u = Lp(r),
        a = Fp(r),
        c = Lp(o),
        s = Fp(o),
        f = u * Lp(e),
        l = u * Fp(e),
        h = c * Lp(i),
        p = c * Fp(i),
        d = 2 * We(Yp(Ze(o - r) + u * c * Ze(i - e))),
        v = Fp(d),
        g = d ? function (t) {
      var n = Fp(t *= d) / v,
          e = Fp(d - t) / v,
          r = e * f + n * h,
          i = e * l + n * p,
          o = e * a + n * s;return [Rp(i, r) * Ap, Rp(o, Yp(r * r + i * i)) * Ap];
    } : function () {
      return [e * Ap, r * Ap];
    };return g.distance = d, g;
  }, t.geoLength = ei, t.geoPath = function (t, n) {
    function e(t) {
      return t && ("function" == typeof o && i.pointRadius(+o.apply(this, arguments)), tr(t, r(i))), i.result();
    }var r,
        i,
        o = 4.5;return e.area = function (t) {
      return tr(t, r(xd)), xd.result();
    }, e.measure = function (t) {
      return tr(t, r(Bd)), Bd.result();
    }, e.bounds = function (t) {
      return tr(t, r(Nd)), Nd.result();
    }, e.centroid = function (t) {
      return tr(t, r(qd)), qd.result();
    }, e.projection = function (n) {
      return arguments.length ? (r = null == n ? (t = null, pi) : (t = n).stream, e) : t;
    }, e.context = function (t) {
      return arguments.length ? (i = null == t ? (n = null, new Ci()) : new Si(n = 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);
  }, t.geoAlbers = Xi, t.geoAlbersUsa = 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 = Xi(),
        s = ji().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]),
        f = ji().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]),
        l = { point: function point(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 = function (t) {
        var n = t.length;return { point: function point(e, r) {
            for (var i = -1; ++i < n;) {
              t[i].point(e, r);
            }
          }, sphere: function sphere() {
            for (var e = -1; ++e < n;) {
              t[e].sphere();
            }
          }, lineStart: function lineStart() {
            for (var e = -1; ++e < n;) {
              t[e].lineStart();
            }
          }, lineEnd: function lineEnd() {
            for (var e = -1; ++e < n;) {
              t[e].lineEnd();
            }
          }, polygonStart: function polygonStart() {
            for (var e = -1; ++e < n;) {
              t[e].polygonStart();
            }
          }, polygonEnd: function polygonEnd() {
            for (var e = -1; ++e < n;) {
              t[e].polygonEnd();
            }
          } };
      }([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 + Mp, a + .12 * e + Mp], [r - .214 * e - Mp, a + .234 * e - Mp]]).stream(l), u = f.translate([r - .205 * e, a + .212 * e]).clipExtent([[r - .214 * e + Mp, a + .166 * e + Mp], [r - .115 * e - Mp, a + .234 * e - Mp]]).stream(l), n();
    }, t.fitExtent = function (n, e) {
      return qi(t, n, e);
    }, t.fitSize = function (n, e) {
      return Di(t, n, e);
    }, t.fitWidth = function (n, e) {
      return Ui(t, n, e);
    }, t.fitHeight = function (n, e) {
      return Oi(t, n, e);
    }, t.scale(1070);
  }, t.geoAzimuthalEqualArea = function () {
    return Ii(Vd).scale(124.75).clipAngle(179.999);
  }, t.geoAzimuthalEqualAreaRaw = Vd, t.geoAzimuthalEquidistant = function () {
    return Ii($d).scale(79.4188).clipAngle(179.999);
  }, t.geoAzimuthalEquidistantRaw = $d, t.geoConicConformal = function () {
    return Bi(Qi).scale(109.5).parallels([30, 30]);
  }, t.geoConicConformalRaw = Qi, t.geoConicEqualArea = ji, t.geoConicEqualAreaRaw = Hi, t.geoConicEquidistant = function () {
    return Bi(Ki).scale(131.154).center([0, 13.9389]);
  }, t.geoConicEquidistantRaw = Ki, t.geoEquirectangular = function () {
    return Ii(Ji).scale(152.63);
  }, t.geoEquirectangularRaw = Ji, t.geoGnomonic = function () {
    return Ii(to).scale(144.049).clipAngle(60);
  }, t.geoGnomonicRaw = to, t.geoIdentity = function () {
    function t() {
      return i = o = null, u;
    }var n,
        e,
        r,
        i,
        o,
        u,
        a = 1,
        c = 0,
        s = 0,
        f = 1,
        l = 1,
        h = pi,
        p = null,
        d = pi;return u = { stream: function stream(t) {
        return i && o === t ? i : i = h(d(o = t));
      }, postclip: function postclip(i) {
        return arguments.length ? (d = i, p = n = e = r = null, t()) : d;
      }, clipExtent: function clipExtent(i) {
        return arguments.length ? (d = null == i ? (p = n = e = r = null, pi) : Jr(p = +i[0][0], n = +i[0][1], e = +i[1][0], r = +i[1][1]), t()) : null == p ? null : [[p, n], [e, r]];
      }, scale: function scale(n) {
        return arguments.length ? (h = no((a = +n) * f, a * l, c, s), t()) : a;
      }, translate: function translate(n) {
        return arguments.length ? (h = no(a * f, a * l, c = +n[0], s = +n[1]), t()) : [c, s];
      }, reflectX: function reflectX(n) {
        return arguments.length ? (h = no(a * (f = n ? -1 : 1), a * l, c, s), t()) : f < 0;
      }, reflectY: function reflectY(n) {
        return arguments.length ? (h = no(a * f, a * (l = n ? -1 : 1), c, s), t()) : l < 0;
      }, fitExtent: function fitExtent(t, n) {
        return qi(u, t, n);
      }, fitSize: function fitSize(t, n) {
        return Di(u, t, n);
      }, fitWidth: function fitWidth(t, n) {
        return Ui(u, t, n);
      }, fitHeight: function fitHeight(t, n) {
        return Oi(u, t, n);
      } };
  }, t.geoProjection = Ii, t.geoProjectionMutator = Yi, t.geoMercator = function () {
    return Zi(Wi).scale(961 / Ep);
  }, t.geoMercatorRaw = Wi, t.geoNaturalEarth1 = function () {
    return Ii(eo).scale(175.295);
  }, t.geoNaturalEarth1Raw = eo, t.geoOrthographic = function () {
    return Ii(ro).scale(249.5).clipAngle(90 + Mp);
  }, t.geoOrthographicRaw = ro, t.geoStereographic = function () {
    return Ii(io).scale(250).clipAngle(142);
  }, t.geoStereographicRaw = io, t.geoTransverseMercator = function () {
    var t = Zi(oo),
        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.geoTransverseMercatorRaw = oo, t.geoRotation = Fr, t.geoStream = tr, t.geoTransform = function (t) {
    return { stream: Pi(t) };
  }, t.cluster = function () {
    function t(t) {
      var o,
          u = 0;t.eachAfter(function (t) {
        var e = t.children;e ? (t.x = function (t) {
          return t.reduce(ao, 0) / t.length;
        }(e), t.y = function (t) {
          return 1 + t.reduce(co, 0);
        }(e)) : (t.x = o ? u += n(t, o) : 0, t.y = 0, o = t);
      });var a = function (t) {
        for (var n; n = t.children;) {
          t = n[0];
        }return t;
      }(t),
          c = function (t) {
        for (var n; n = t.children;) {
          t = n[n.length - 1];
        }return t;
      }(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 = uo,
        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;
  }, t.hierarchy = fo, t.pack = function () {
    function t(t) {
      return t.x = e / 2, t.y = r / 2, n ? t.eachBefore(zo(n)).eachAfter(Po(i, .5)).eachBefore(Ro(1)) : t.eachBefore(zo(Co)).eachAfter(Po(Eo, 1)).eachAfter(Po(i, t.r / Math.min(e, r))).eachBefore(Ro(Math.min(e, r) / (2 * t.r))), t;
    }var n = null,
        e = 1,
        r = 1,
        i = Eo;return t.radius = function (e) {
      return arguments.length ? (n = function (t) {
        return null == t ? null : So(t);
      }(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 : Ao(+n), t) : i;
    }, t;
  }, t.packSiblings = function (t) {
    return ko(t), t;
  }, t.packEnclose = go, t.partition = function () {
    function t(t) {
      var o = t.height + 1;return t.x0 = t.y0 = r, t.x1 = n, t.y1 = e / o, t.eachBefore(function (t, n) {
        return function (e) {
          e.children && qo(e, e.x0, t * (e.depth + 1) / n, e.x1, t * (e.depth + 2) / n);var i = e.x0,
              o = e.y0,
              u = e.x1 - r,
              a = e.y1 - r;u < i && (i = u = (i + u) / 2), a < o && (o = a = (o + a) / 2), e.x0 = i, e.y0 = o, e.x1 = u, e.y1 = a;
        };
      }(e, o)), i && t.eachBefore(Lo), t;
    }var n = 1,
        e = 1,
        r = 0,
        i = !1;return t.round = function (n) {
      return arguments.length ? (i = !!n, t) : i;
    }, t.size = function (r) {
      return arguments.length ? (n = +r[0], e = +r[1], t) : [n, e];
    }, t.padding = function (n) {
      return arguments.length ? (r = +n, t) : r;
    }, t;
  }, t.stratify = 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 vo(r), null != (c = n(r, i, t)) && (c += "") && (h[s = Zd + (a.id = c)] = s in h ? Qd : a);
      }for (i = 0; i < f; ++i) {
        if (a = l[i], null != (c = e(t[i], i, t)) && (c += "")) {
          if (!(u = h[Zd + c])) throw new Error("missing: " + c);if (u === Qd) 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 = Gd, o.eachBefore(function (t) {
        t.depth = t.parent.depth + 1, --f;
      }).eachBefore(po), o.parent = null, f > 0) throw new Error("cycle");return o;
    }var n = Do,
        e = Uo;return t.id = function (e) {
      return arguments.length ? (n = So(e), t) : n;
    }, t.parentId = function (n) {
      return arguments.length ? (e = So(n), t) : e;
    }, t;
  }, t.tree = function () {
    function t(t) {
      var c = function (t) {
        for (var n, e, r, i, o, u = new Ho(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 Ho(r[i], i)), e.parent = n;
          }
        }return (u.parent = new Ho(null, 0)).children = [u], u;
      }(t);if (c.eachAfter(n), c.parent.m = -c.z, c.eachBefore(e), a) t.eachBefore(r);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 : i(s, f) / 2,
            p = h - s.x,
            d = o / (f.x + h + p),
            v = u / (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,
          r = t.i ? e[t.i - 1] : null;if (n) {
        (function (t) {
          for (var n, e = 0, r = 0, i = t.children, o = i.length; --o >= 0;) {
            (n = i[o]).z += e, n.m += e, e += n.s + (r += n.c);
          }
        })(t);var o = (n[0].z + n[n.length - 1].z) / 2;r ? (t.z = r.z + i(t._, r._), t.m = t.z - o) : t.z = o;
      } else r && (t.z = r.z + i(t._, r._));t.parent.A = function (t, n, e) {
        if (n) {
          for (var r, o = t, u = t, a = n, c = o.parent.children[0], s = o.m, f = u.m, l = a.m, h = c.m; a = Io(a), o = Fo(o), a && o;) {
            c = Fo(c), (u = Io(u)).a = t, (r = a.z + l - o.z - s + i(a._, o._)) > 0 && (Yo(Bo(a, t, e), t, r), s += r, f += r), l += a.m, s += o.m, h += c.m, f += u.m;
          }a && !Io(u) && (u.t = a, u.m += l - f), o && !Fo(c) && (c.t = o, c.m += s - h, e = t);
        }return e;
      }(t, r, t.parent.A || e[0]);
    }function e(t) {
      t._.x = t.z + t.parent.m, t.m += t.parent.m;
    }function r(t) {
      t.x *= o, t.y = t.depth * u;
    }var i = Oo,
        o = 1,
        u = 1,
        a = null;return t.separation = function (n) {
      return arguments.length ? (i = n, t) : i;
    }, t.size = function (n) {
      return arguments.length ? (a = !1, o = +n[0], u = +n[1], t) : a ? null : [o, u];
    }, t.nodeSize = function (n) {
      return arguments.length ? (a = !0, o = +n[0], u = +n[1], t) : a ? [o, u] : null;
    }, t;
  }, t.treemap = function () {
    function t(t) {
      return t.x0 = t.y0 = 0, t.x1 = i, t.y1 = o, t.eachBefore(n), u = [0], r && t.eachBefore(Lo), 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 = Kd,
        r = !1,
        i = 1,
        o = 1,
        u = [0],
        a = Eo,
        c = Eo,
        s = Eo,
        f = Eo,
        l = Eo;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 = So(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 : Ao(+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 : Ao(+n), t) : c;
    }, t.paddingRight = function (n) {
      return arguments.length ? (s = "function" == typeof n ? n : Ao(+n), t) : s;
    }, t.paddingBottom = function (n) {
      return arguments.length ? (f = "function" == typeof n ? n : Ao(+n), t) : f;
    }, t.paddingLeft = function (n) {
      return arguments.length ? (l = "function" == typeof n ? n : Ao(+n), t) : l;
    }, t;
  }, t.treemapBinary = 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, void (s.y1 = a);
      }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;
      }h - f[p - 1] < f[p] - h && t + 1 < p && --p;var g = f[p] - l,
          _ = e - g;if (u - r > a - i) {
        var y = (r * _ + u * g) / e;o(t, p, g, r, i, y, a), o(p, n, _, y, i, u, a);
      } else {
        var m = (i * _ + a * g) / e;o(t, p, g, r, i, u, m), o(p, n, _, r, m, 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);
  }, t.treemapDice = qo, t.treemapSlice = jo, t.treemapSliceDice = function (t, n, e, r, i) {
    (1 & t.depth ? jo : qo)(t, n, e, r, i);
  }, t.treemapSquarify = Kd, t.treemapResquarify = tv, t.interpolate = fn, t.interpolateArray = on, t.interpolateBasis = Gt, t.interpolateBasisClosed = Qt, t.interpolateDate = un, t.interpolateNumber = an, t.interpolateObject = cn, t.interpolateRound = ln, t.interpolateString = sn, t.interpolateTransformCss = Gf, t.interpolateTransformSvg = Qf, t.interpolateZoom = vn, t.interpolateRgb = Hf, t.interpolateRgbBasis = jf, t.interpolateRgbBasisClosed = Xf, t.interpolateHsl = el, t.interpolateHslLong = rl, t.interpolateLab = function (t, n) {
    var e = en((t = Ft(t)).l, (n = Ft(n)).l),
        r = en(t.a, n.a),
        i = en(t.b, n.b),
        o = en(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 + "";
    };
  }, t.interpolateHcl = il, t.interpolateHclLong = ol, t.interpolateCubehelix = ul, t.interpolateCubehelixLong = al, t.quantize = function (t, n) {
    for (var e = new Array(n), r = 0; r < n; ++r) {
      e[r] = t(r / (n - 1));
    }return e;
  }, t.path = ee, t.polygonArea = 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;
  }, t.polygonCentroid = 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];
  }, t.polygonHull = 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($o), n = 0; n < e; ++n) {
      i[n] = [r[n][0], -r[n][1]];
    }var o = Wo(r),
        u = Wo(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;
  }, t.polygonContains = 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) {
      e = (o = t[l])[0], (r = o[1]) > a != s > a && u < (c - e) * (a - r) / (s - r) + e && (f = !f), c = e, s = r;
    }return f;
  }, t.polygonLength = 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, n -= u = (o = t[r])[0], e -= a = o[1], c += Math.sqrt(n * n + e * e);
    }return c;
  }, t.quadtree = Te, t.queue = Ko, t.randomUniform = rv, t.randomNormal = iv, t.randomLogNormal = ov, t.randomBates = av, t.randomIrwinHall = uv, t.randomExponential = cv, t.request = nu, t.html = sv, t.json = fv, t.text = lv, t.xml = hv, t.csv = pv, t.tsv = dv, t.scaleBand = ou, t.scalePoint = function () {
    return uu(ou().paddingInner(1));
  }, t.scaleIdentity = gu, t.scaleLinear = vu, t.scaleLog = Tu, t.scaleOrdinal = iu, t.scaleImplicit = yv, t.scalePow = ku, t.scaleSqrt = function () {
    return ku().exponent(.5);
  }, t.scaleQuantile = Su, t.scaleQuantize = Eu, t.scaleThreshold = Au, t.scaleTime = function () {
    return Va(Gv, Wv, Lv, Pv, Cv, Ev, kv, wv, t.timeFormat).domain([new Date(2e3, 0, 1), new Date(2e3, 0, 2)]);
  }, t.scaleUtc = function () {
    return Va(xg, yg, ig, eg, tg, Jv, kv, wv, t.utcFormat).domain([Date.UTC(2e3, 0, 1), Date.UTC(2e3, 0, 2)]);
  }, t.schemeCategory10 = Ug, t.schemeCategory20b = Og, t.schemeCategory20c = Fg, t.schemeCategory20 = Ig, t.interpolateCubehelixDefault = Yg, t.interpolateRainbow = function (t) {
    (t < 0 || t > 1) && (t -= Math.floor(t));var n = Math.abs(t - .5);return jg.h = 360 * t - 100, jg.s = 1.5 - 1.5 * n, jg.l = .8 - .9 * n, jg + "";
  }, t.interpolateWarm = Bg, t.interpolateCool = Hg, t.interpolateViridis = Xg, t.interpolateMagma = Vg, t.interpolateInferno = $g, t.interpolatePlasma = Wg, t.scaleSequential = Za, t.create = function (t) {
    return ct(A(t).call(document.documentElement));
  }, t.creator = A, t.local = st, t.matcher = of, t.mouse = pt, t.namespace = E, t.namespaces = tf, t.clientPoint = ht, t.select = ct, t.selectAll = function (t) {
    return "string" == typeof t ? new ut([document.querySelectorAll(t)], [document.documentElement]) : new ut([null == t ? [] : t], cf);
  }, t.selection = at, t.selector = z, t.selectorAll = R, t.style = I, t.touch = dt, t.touches = function (t, n) {
    null == n && (n = lt().touches);for (var e = 0, r = n ? n.length : 0, i = new Array(r); e < r; ++e) {
      i[e] = ht(t, n[e]);
    }return i;
  }, t.window = F, t.customEvent = it, t.arc = function () {
    function t() {
      var t,
          s,
          f = +n.apply(this, arguments),
          l = +e.apply(this, arguments),
          h = o.apply(this, arguments) - i_,
          p = u.apply(this, arguments) - i_,
          d = Zg(p - h),
          v = p > h;if (c || (c = t = ee()), l < f && (s = l, l = f, f = s), l > e_) {
        if (d > o_ - e_) c.moveTo(l * Qg(h), l * t_(h)), c.arc(0, 0, l, h, p, !v), f > e_ && (c.moveTo(f * Qg(p), f * t_(p)), c.arc(0, 0, f, p, h, v));else {
          var g,
              _,
              y = h,
              m = p,
              x = h,
              b = p,
              w = d,
              M = d,
              T = a.apply(this, arguments) / 2,
              N = T > e_ && (i ? +i.apply(this, arguments) : n_(f * f + l * l)),
              k = Kg(Zg(l - f) / 2, +r.apply(this, arguments)),
              S = k,
              E = k;if (N > e_) {
            var A = Qa(N / f * t_(T)),
                C = Qa(N / l * t_(T));(w -= 2 * A) > e_ ? (A *= v ? 1 : -1, x += A, b -= A) : (w = 0, x = b = (h + p) / 2), (M -= 2 * C) > e_ ? (C *= v ? 1 : -1, y += C, m -= C) : (M = 0, y = m = (h + p) / 2);
          }var z = l * Qg(y),
              P = l * t_(y),
              R = f * Qg(b),
              L = f * t_(b);if (k > e_) {
            var q = l * Qg(m),
                D = l * t_(m),
                U = f * Qg(x),
                O = f * t_(x);if (d < r_) {
              var F = w > e_ ? function (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];
              }(z, P, U, O, q, D, R, L) : [R, L],
                  I = z - F[0],
                  Y = P - F[1],
                  B = q - F[0],
                  H = D - F[1],
                  j = 1 / t_(function (t) {
                return t > 1 ? 0 : t < -1 ? r_ : Math.acos(t);
              }((I * B + Y * H) / (n_(I * I + Y * Y) * n_(B * B + H * H))) / 2),
                  X = n_(F[0] * F[0] + F[1] * F[1]);S = Kg(k, (f - X) / (j - 1)), E = Kg(k, (l - X) / (j + 1));
            }
          }M > e_ ? E > e_ ? (g = rc(U, O, z, P, l, E, v), _ = rc(q, D, R, L, l, E, v), c.moveTo(g.cx + g.x01, g.cy + g.y01), E < k ? c.arc(g.cx, g.cy, E, Gg(g.y01, g.x01), Gg(_.y01, _.x01), !v) : (c.arc(g.cx, g.cy, E, Gg(g.y01, g.x01), Gg(g.y11, g.x11), !v), c.arc(0, 0, l, Gg(g.cy + g.y11, g.cx + g.x11), Gg(_.cy + _.y11, _.cx + _.x11), !v), c.arc(_.cx, _.cy, E, Gg(_.y11, _.x11), Gg(_.y01, _.x01), !v))) : (c.moveTo(z, P), c.arc(0, 0, l, y, m, !v)) : c.moveTo(z, P), f > e_ && w > e_ ? S > e_ ? (g = rc(R, L, q, D, f, -S, v), _ = rc(z, P, U, O, f, -S, v), c.lineTo(g.cx + g.x01, g.cy + g.y01), S < k ? c.arc(g.cx, g.cy, S, Gg(g.y01, g.x01), Gg(_.y01, _.x01), !v) : (c.arc(g.cx, g.cy, S, Gg(g.y01, g.x01), Gg(g.y11, g.x11), !v), c.arc(0, 0, f, Gg(g.cy + g.y11, g.cx + g.x11), Gg(_.cy + _.y11, _.cx + _.x11), v), c.arc(_.cx, _.cy, S, Gg(_.y11, _.x11), Gg(_.y01, _.x01), !v))) : c.arc(0, 0, f, b, x, v) : c.lineTo(R, L);
        }
      } else c.moveTo(0, 0);if (c.closePath(), t) return c = null, t + "" || null;
    }var n = Ja,
        e = Ka,
        r = Ga(0),
        i = null,
        o = tc,
        u = nc,
        a = ec,
        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 - r_ / 2;return [Qg(r) * t, t_(r) * t];
    }, t.innerRadius = function (e) {
      return arguments.length ? (n = "function" == typeof e ? e : Ga(+e), t) : n;
    }, t.outerRadius = function (n) {
      return arguments.length ? (e = "function" == typeof n ? n : Ga(+n), t) : e;
    }, t.cornerRadius = function (n) {
      return arguments.length ? (r = "function" == typeof n ? n : Ga(+n), t) : r;
    }, t.padRadius = function (n) {
      return arguments.length ? (i = null == n ? null : "function" == typeof n ? n : Ga(+n), t) : i;
    }, t.startAngle = function (n) {
      return arguments.length ? (o = "function" == typeof n ? n : Ga(+n), t) : o;
    }, t.endAngle = function (n) {
      return arguments.length ? (u = "function" == typeof n ? n : Ga(+n), t) : u;
    }, t.padAngle = function (n) {
      return arguments.length ? (a = "function" == typeof n ? n : Ga(+n), t) : a;
    }, t.context = function (n) {
      return arguments.length ? (c = null == n ? null : n, t) : c;
    }, t;
  }, t.area = sc, t.line = cc, t.pie = function () {
    function t(t) {
      var a,
          c,
          s,
          f,
          l,
          h = t.length,
          p = 0,
          d = new Array(h),
          v = new Array(h),
          g = +i.apply(this, arguments),
          _ = Math.min(o_, Math.max(-o_, o.apply(this, arguments) - g)),
          y = Math.min(Math.abs(_) / h, u.apply(this, arguments)),
          m = 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 ? (_ - h * m) / p : 0; a < h; ++a, g = f) {
        c = d[a], f = g + ((l = v[c]) > 0 ? l * s : 0) + m, v[c] = { data: t[c], index: a, value: l, startAngle: g, endAngle: f, padAngle: y };
      }return v;
    }var n = lc,
        e = fc,
        r = null,
        i = Ga(0),
        o = Ga(o_),
        u = Ga(0);return t.value = function (e) {
      return arguments.length ? (n = "function" == typeof e ? e : Ga(+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 : Ga(+n), t) : i;
    }, t.endAngle = function (n) {
      return arguments.length ? (o = "function" == typeof n ? n : Ga(+n), t) : o;
    }, t.padAngle = function (n) {
      return arguments.length ? (u = "function" == typeof n ? n : Ga(+n), t) : u;
    }, t;
  }, t.areaRadial = gc, t.radialArea = gc, t.lineRadial = vc, t.radialLine = vc, t.pointRadial = _c, t.linkHorizontal = function () {
    return xc(bc);
  }, t.linkVertical = function () {
    return xc(wc);
  }, t.linkRadial = function () {
    var t = xc(Mc);return t.angle = t.x, delete t.x, t.radius = t.y, delete t.y, t;
  }, t.symbol = function () {
    function t() {
      var t;if (r || (r = t = ee()), n.apply(this, arguments).draw(r, +e.apply(this, arguments)), t) return r = null, t + "" || null;
    }var n = Ga(c_),
        e = Ga(64),
        r = null;return t.type = function (e) {
      return arguments.length ? (n = "function" == typeof e ? e : Ga(e), t) : n;
    }, t.size = function (n) {
      return arguments.length ? (e = "function" == typeof n ? n : Ga(+n), t) : e;
    }, t.context = function (n) {
      return arguments.length ? (r = null == n ? null : n, t) : r;
    }, t;
  }, t.symbols = T_, t.symbolCircle = c_, t.symbolCross = s_, t.symbolDiamond = h_, t.symbolSquare = __, t.symbolStar = g_, t.symbolTriangle = m_, t.symbolWye = M_, t.curveBasisClosed = function (t) {
    return new Sc(t);
  }, t.curveBasisOpen = function (t) {
    return new Ec(t);
  }, t.curveBasis = function (t) {
    return new kc(t);
  }, t.curveBundle = N_, t.curveCardinalClosed = S_, t.curveCardinalOpen = E_, t.curveCardinal = k_, t.curveCatmullRomClosed = C_, t.curveCatmullRomOpen = z_, t.curveCatmullRom = A_, t.curveLinearClosed = function (t) {
    return new Oc(t);
  }, t.curveLinear = oc, t.curveMonotoneX = function (t) {
    return new Hc(t);
  }, t.curveMonotoneY = function (t) {
    return new jc(t);
  }, t.curveNatural = function (t) {
    return new Vc(t);
  }, t.curveStep = function (t) {
    return new Wc(t, .5);
  }, t.curveStepAfter = function (t) {
    return new Wc(t, 1);
  }, t.curveStepBefore = function (t) {
    return new Wc(t, 0);
  }, t.stack = 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 = Ga([]),
        e = Gc,
        r = Zc,
        i = Qc;return t.keys = function (e) {
      return arguments.length ? (n = "function" == typeof e ? e : Ga(a_.call(e)), t) : n;
    }, t.value = function (n) {
      return arguments.length ? (i = "function" == typeof n ? n : Ga(+n), t) : i;
    }, t.order = function (n) {
      return arguments.length ? (e = null == n ? Gc : "function" == typeof n ? n : Ga(a_.call(n)), t) : e;
    }, t.offset = function (n) {
      return arguments.length ? (r = null == n ? Zc : n, t) : r;
    }, t;
  }, t.stackOffsetExpand = 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;
        }
      }Zc(t, n);
    }
  }, t.stackOffsetDiverging = function (t, n) {
    if ((a = t.length) > 1) for (var e, r, i, o, u, a, c = 0, s = t[n[0]].length; c < s; ++c) {
      for (o = u = 0, e = 0; e < a; ++e) {
        (i = (r = t[n[e]][c])[1] - r[0]) >= 0 ? (r[0] = o, r[1] = o += i) : i < 0 ? (r[1] = u, r[0] = u += i) : r[0] = o;
      }
    }
  }, t.stackOffsetNone = Zc, t.stackOffsetSilhouette = 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;
      }Zc(t, n);
    }
  }, t.stackOffsetWiggle = 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 = (l - (f[u - 1][1] || 0)) / 2, p = 0; p < a; ++p) {
            var d = t[n[p]];h += (d[u][1] || 0) - (d[u - 1][1] || 0);
          }c += l, s += h * l;
        }e[u - 1][1] += e[u - 1][0] = o, c && (o -= s / c);
      }e[u - 1][1] += e[u - 1][0] = o, Zc(t, n);
    }
  }, t.stackOrderAscending = Jc, t.stackOrderDescending = function (t) {
    return Jc(t).reverse();
  }, t.stackOrderInsideOut = function (t) {
    var n,
        e,
        r = t.length,
        i = t.map(Kc),
        o = Gc(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);
  }, t.stackOrderNone = Gc, t.stackOrderReverse = function (t) {
    return Gc(t).reverse();
  }, t.timeInterval = Cu, t.timeMillisecond = wv, t.timeMilliseconds = Mv, t.utcMillisecond = wv, t.utcMilliseconds = Mv, t.timeSecond = kv, t.timeSeconds = Sv, t.utcSecond = kv, t.utcSeconds = Sv, t.timeMinute = Ev, t.timeMinutes = Av, t.timeHour = Cv, t.timeHours = zv, t.timeDay = Pv, t.timeDays = Rv, t.timeWeek = Lv, t.timeWeeks = Yv, t.timeSunday = Lv, t.timeSundays = Yv, t.timeMonday = qv, t.timeMondays = Bv, t.timeTuesday = Dv, t.timeTuesdays = Hv, t.timeWednesday = Uv, t.timeWednesdays = jv, t.timeThursday = Ov, t.timeThursdays = Xv, t.timeFriday = Fv, t.timeFridays = Vv, t.timeSaturday = Iv, t.timeSaturdays = $v, t.timeMonth = Wv, t.timeMonths = Zv, t.timeYear = Gv, t.timeYears = Qv, t.utcMinute = Jv, t.utcMinutes = Kv, t.utcHour = tg, t.utcHours = ng, t.utcDay = eg, t.utcDays = rg, t.utcWeek = ig, t.utcWeeks = lg, t.utcSunday = ig, t.utcSundays = lg, t.utcMonday = og, t.utcMondays = hg, t.utcTuesday = ug, t.utcTuesdays = pg, t.utcWednesday = ag, t.utcWednesdays = dg, t.utcThursday = cg, t.utcThursdays = vg, t.utcFriday = sg, t.utcFridays = gg, t.utcSaturday = fg, t.utcSaturdays = _g, t.utcMonth = yg, t.utcMonths = mg, t.utcYear = xg, t.utcYears = wg, t.timeFormatDefaultLocale = Ha, t.timeFormatLocale = Du, t.isoFormat = Eg, t.isoParse = Ag, t.now = mn, t.timer = wn, t.timerFlush = Mn, t.timeout = Sn, t.interval = function (t, n, e) {
    var r = new bn(),
        i = n;return null == n ? (r.restart(t, n, e), r) : (n = +n, e = null == e ? mn() : +e, r.restart(function o(u) {
      u += i, r.restart(o, i += n, e), t(u);
    }, n, e), r);
  }, t.transition = Dn, t.active = 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 > xl && e.name === n) return new qn([[t]], Jl, n, +r);
      }
    }return null;
  }, t.interrupt = Pn, t.voronoi = function () {
    function t(t) {
      return new Ns(t.map(function (r, i) {
        var o = [Math.round(n(r, i, t) / F_) * F_, Math.round(e(r, i, t) / F_) * F_];return o.index = i, o.data = r, o;
      }), r);
    }var n = ns,
        e = es,
        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 : ts(+e), t) : n;
    }, t.y = function (n) {
      return arguments.length ? (e = "function" == typeof n ? n : ts(+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;
  }, t.zoom = function () {
    function n(t) {
      t.property("__zoom", Rs).on("wheel.zoom", c).on("mousedown.zoom", s).on("dblclick.zoom", f).filter(x).on("touchstart.zoom", l).on("touchmove.zoom", h).on("touchend.zoom touchcancel.zoom", p).style("touch-action", "none").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
    }function e(t, n) {
      return (n = Math.max(b[0], Math.min(b[1], n))) === t.k ? t : new Ss(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 Ss(t.k, r, i);
    }function i(t) {
      return [(+t[0][0] + +t[1][0]) / 2, (+t[0][1] + +t[1][1]) / 2];
    }function o(t, n, e) {
      t.on("start.zoom", function () {
        u(this, arguments).start();
      }).on("interrupt.zoom end.zoom", function () {
        u(this, arguments).end();
      }).tween("zoom", function () {
        var t = arguments,
            r = u(this, t),
            o = _.apply(this, t),
            a = e || i(o),
            c = Math.max(o[1][0] - o[0][0], o[1][1] - o[0][1]),
            s = this.__zoom,
            f = "function" == typeof n ? n.apply(this, t) : n,
            l = T(s.invert(a).concat(c / s.k), f.invert(a).concat(c / f.k));return function (t) {
          if (1 === t) t = f;else {
            var n = l(t),
                e = c / n[2];t = new Ss(e, a[0] - n[0] * e, a[1] - n[1] * e);
          }r.zoom(null, t);
        };
      });
    }function u(t, n) {
      for (var e, r = 0, i = k.length; r < i; ++r) {
        if ((e = k[r]).that === t) return e;
      }return new a(t, n);
    }function a(t, n) {
      this.that = t, this.args = n, this.index = -1, this.active = 0, this.extent = _.apply(t, n);
    }function c() {
      if (g.apply(this, arguments)) {
        var t = u(this, arguments),
            n = this.__zoom,
            i = Math.max(b[0], Math.min(b[1], n.k * Math.pow(2, m.apply(this, arguments)))),
            o = pt(this);if (t.wheel) t.mouse[0][0] === o[0] && t.mouse[0][1] === o[1] || (t.mouse[1] = n.invert(t.mouse[0] = o)), clearTimeout(t.wheel);else {
          if (n.k === i) return;t.mouse = [o, n.invert(o)], Pn(this), t.start();
        }Cs(), t.wheel = setTimeout(function () {
          t.wheel = null, t.end();
        }, A), t.zoom("mouse", y(r(e(n, i), t.mouse[0], t.mouse[1]), t.extent, w));
      }
    }function s() {
      if (!v && g.apply(this, arguments)) {
        var n = u(this, arguments),
            e = ct(t.event.view).on("mousemove.zoom", function () {
          if (Cs(), !n.moved) {
            var e = t.event.clientX - o,
                i = t.event.clientY - a;n.moved = e * e + i * i > C;
          }n.zoom("mouse", y(r(n.that.__zoom, n.mouse[0] = pt(n.that), n.mouse[1]), n.extent, w));
        }, !0).on("mouseup.zoom", function () {
          e.on("mousemove.zoom mouseup.zoom", null), yt(t.event.view, n.moved), Cs(), n.end();
        }, !0),
            i = pt(this),
            o = t.event.clientX,
            a = t.event.clientY;_t(t.event.view), As(), n.mouse = [i, this.__zoom.invert(i)], Pn(this), n.start();
      }
    }function f() {
      if (g.apply(this, arguments)) {
        var i = this.__zoom,
            u = pt(this),
            a = i.invert(u),
            c = i.k * (t.event.shiftKey ? .5 : 2),
            s = y(r(e(i, c), u, a), _.apply(this, arguments), w);Cs(), M > 0 ? ct(this).transition().duration(M).call(o, s, u) : ct(this).call(n.transform, s);
      }
    }function l() {
      if (g.apply(this, arguments)) {
        var n,
            e,
            r,
            i,
            o = u(this, arguments),
            a = t.event.changedTouches,
            c = a.length;for (As(), e = 0; e < c; ++e) {
          i = [i = dt(this, a, (r = a[e]).identifier), this.__zoom.invert(i), r.identifier], o.touch0 ? o.touch1 || (o.touch1 = i) : (o.touch0 = i, n = !0);
        }if (d && (d = clearTimeout(d), !o.touch1)) return o.end(), void ((i = ct(this).on("dblclick.zoom")) && i.apply(this, arguments));n && (d = setTimeout(function () {
          d = null;
        }, E), Pn(this), o.start());
      }
    }function h() {
      var n,
          i,
          o,
          a,
          c = u(this, arguments),
          s = t.event.changedTouches,
          f = s.length;for (Cs(), d && (d = clearTimeout(d)), n = 0; n < f; ++n) {
        o = dt(this, s, (i = s[n]).identifier), c.touch0 && c.touch0[2] === i.identifier ? c.touch0[0] = o : c.touch1 && c.touch1[2] === i.identifier && (c.touch1[0] = o);
      }if (i = c.that.__zoom, c.touch1) {
        var l = c.touch0[0],
            h = c.touch0[1],
            p = c.touch1[0],
            v = c.touch1[1],
            g = (g = p[0] - l[0]) * g + (g = p[1] - l[1]) * g,
            _ = (_ = v[0] - h[0]) * _ + (_ = v[1] - h[1]) * _;i = e(i, Math.sqrt(g / _)), o = [(l[0] + p[0]) / 2, (l[1] + p[1]) / 2], a = [(h[0] + v[0]) / 2, (h[1] + v[1]) / 2];
      } else {
        if (!c.touch0) return;o = c.touch0[0], a = c.touch0[1];
      }c.zoom("touch", y(r(i, o, a), c.extent, w));
    }function p() {
      var n,
          e,
          r = u(this, arguments),
          i = t.event.changedTouches,
          o = i.length;for (As(), v && clearTimeout(v), v = setTimeout(function () {
        v = null;
      }, E), 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.touch0[1] = this.__zoom.invert(r.touch0[0]) : r.end();
    }var d,
        v,
        g = zs,
        _ = Ps,
        y = Ds,
        m = Ls,
        x = qs,
        b = [0, 1 / 0],
        w = [[-1 / 0, -1 / 0], [1 / 0, 1 / 0]],
        M = 250,
        T = vn,
        k = [],
        S = N("start", "zoom", "end"),
        E = 500,
        A = 150,
        C = 0;return n.transform = function (t, n) {
      var e = t.selection ? t.selection() : t;e.property("__zoom", Rs), t !== e ? o(t, n) : e.interrupt().each(function () {
        u(this, arguments).start().zoom(null, "function" == typeof n ? n.apply(this, arguments) : n).end();
      });
    }, n.scaleBy = function (t, e) {
      n.scaleTo(t, function () {
        return this.__zoom.k * ("function" == typeof e ? e.apply(this, arguments) : e);
      });
    }, n.scaleTo = function (t, o) {
      n.transform(t, function () {
        var t = _.apply(this, arguments),
            n = this.__zoom,
            u = i(t),
            a = n.invert(u),
            c = "function" == typeof o ? o.apply(this, arguments) : o;return y(r(e(n, c), u, a), t, w);
      });
    }, n.translateBy = function (t, e, r) {
      n.transform(t, function () {
        return y(this.__zoom.translate("function" == typeof e ? e.apply(this, arguments) : e, "function" == typeof r ? r.apply(this, arguments) : r), _.apply(this, arguments), w);
      });
    }, n.translateTo = function (t, e, r) {
      n.transform(t, function () {
        var t = _.apply(this, arguments),
            n = this.__zoom,
            o = i(t);return y(Y_.translate(o[0], o[1]).scale(n.k).translate("function" == typeof e ? -e.apply(this, arguments) : -e, "function" == typeof r ? -r.apply(this, arguments) : -r), t, w);
      });
    }, a.prototype = { start: function start() {
        return 1 == ++this.active && (this.index = k.push(this) - 1, this.emit("start")), this;
      }, zoom: function zoom(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 end() {
        return 0 == --this.active && (k.splice(this.index, 1), this.index = -1, this.emit("end")), this;
      }, emit: function emit(t) {
        it(new function (t, n, e) {
          this.target = t, this.type = n, this.transform = e;
        }(n, t, this.that.__zoom), S.apply, S, [t, this.that, this.args]);
      } }, n.wheelDelta = function (t) {
      return arguments.length ? (m = "function" == typeof t ? t : ks(+t), n) : m;
    }, n.filter = function (t) {
      return arguments.length ? (g = "function" == typeof t ? t : ks(!!t), n) : g;
    }, n.touchable = function (t) {
      return arguments.length ? (x = "function" == typeof t ? t : ks(!!t), n) : x;
    }, n.extent = function (t) {
      return arguments.length ? (_ = "function" == typeof t ? t : ks([[+t[0][0], +t[0][1]], [+t[1][0], +t[1][1]]]), n) : _;
    }, n.scaleExtent = function (t) {
      return arguments.length ? (b[0] = +t[0], b[1] = +t[1], n) : [b[0], b[1]];
    }, n.translateExtent = function (t) {
      return arguments.length ? (w[0][0] = +t[0][0], w[1][0] = +t[1][0], w[0][1] = +t[0][1], w[1][1] = +t[1][1], n) : [[w[0][0], w[0][1]], [w[1][0], w[1][1]]];
    }, n.constrain = function (t) {
      return arguments.length ? (y = t, n) : y;
    }, n.duration = function (t) {
      return arguments.length ? (M = +t, n) : M;
    }, n.interpolate = function (t) {
      return arguments.length ? (T = t, n) : T;
    }, n.on = function () {
      var t = S.on.apply(S, arguments);return t === S ? n : t;
    }, n.clickDistance = function (t) {
      return arguments.length ? (C = (t = +t) * t, n) : Math.sqrt(C);
    }, n;
  }, t.zoomTransform = Es, t.zoomIdentity = Y_, Object.defineProperty(t, "__esModule", { value: !0 });
});

/***/ })
/******/ ])});;
//# sourceMappingURL=d3.js.map