{"version":3,"file":"js/70851-374e128389392d9bf9d2.js","mappings":"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","sources":["webpack:///./node_modules/d3/dist/package.js","webpack:///./node_modules/d3-axis/src/array.js","webpack:///./node_modules/d3-axis/src/identity.js","webpack:///./node_modules/d3-axis/src/axis.js","webpack:///./node_modules/d3-selection/src/selector.js","webpack:///./node_modules/d3-selection/src/array.js","webpack:///./node_modules/d3-selection/src/selectorAll.js","webpack:///./node_modules/d3-selection/src/matcher.js","webpack:///./node_modules/d3-selection/src/selection/selectChild.js","webpack:///./node_modules/d3-selection/src/selection/selectChildren.js","webpack:///./node_modules/d3-selection/src/selection/sparse.js","webpack:///./node_modules/d3-selection/src/selection/enter.js","webpack:///./node_modules/d3-selection/src/selection/data.js","webpack:///./node_modules/d3-selection/src/selection/sort.js","webpack:///./node_modules/d3-selection/src/namespaces.js","webpack:///./node_modules/d3-selection/src/namespace.js","webpack:///./node_modules/d3-selection/src/selection/attr.js","webpack:///./node_modules/d3-selection/src/window.js","webpack:///./node_modules/d3-selection/src/selection/style.js","webpack:///./node_modules/d3-selection/src/selection/property.js","webpack:///./node_modules/d3-selection/src/selection/classed.js","webpack:///./node_modules/d3-selection/src/selection/text.js","webpack:///./node_modules/d3-selection/src/selection/html.js","webpack:///./node_modules/d3-selection/src/selection/raise.js","webpack:///./node_modules/d3-selection/src/selection/lower.js","webpack:///./node_modules/d3-selection/src/creator.js","webpack:///./node_modules/d3-selection/src/selection/insert.js","webpack:///./node_modules/d3-selection/src/selection/remove.js","webpack:///./node_modules/d3-selection/src/selection/clone.js","webpack:///./node_modules/d3-selection/src/selection/on.js","webpack:///./node_modules/d3-selection/src/selection/dispatch.js","webpack:///./node_modules/d3-selection/src/selection/index.js","webpack:///./node_modules/d3-selection/src/selection/select.js","webpack:///./node_modules/d3-selection/src/selection/selectAll.js","webpack:///./node_modules/d3-selection/src/selection/filter.js","webpack:///./node_modules/d3-selection/src/constant.js","webpack:///./node_modules/d3-selection/src/selection/exit.js","webpack:///./node_modules/d3-selection/src/selection/join.js","webpack:///./node_modules/d3-selection/src/selection/merge.js","webpack:///./node_modules/d3-selection/src/selection/order.js","webpack:///./node_modules/d3-selection/src/selection/call.js","webpack:///./node_modules/d3-selection/src/selection/nodes.js","webpack:///./node_modules/d3-selection/src/selection/node.js","webpack:///./node_modules/d3-selection/src/selection/size.js","webpack:///./node_modules/d3-selection/src/selection/empty.js","webpack:///./node_modules/d3-selection/src/selection/each.js","webpack:///./node_modules/d3-selection/src/selection/append.js","webpack:///./node_modules/d3-selection/src/selection/datum.js","webpack:///./node_modules/d3-selection/src/selection/iterator.js","webpack:///./node_modules/d3-dispatch/src/dispatch.js","webpack:///./node_modules/d3-timer/src/timer.js","webpack:///./node_modules/d3-timer/src/timeout.js","webpack:///./node_modules/d3-transition/src/transition/schedule.js","webpack:///./node_modules/d3-interpolate/src/number.js","webpack:///./node_modules/d3-interpolate/src/transform/decompose.js","webpack:///./node_modules/d3-interpolate/src/transform/parse.js","webpack:///./node_modules/d3-interpolate/src/transform/index.js","webpack:///./node_modules/d3-transition/src/transition/tween.js","webpack:///./node_modules/d3-color/src/define.js","webpack:///./node_modules/d3-color/src/color.js","webpack:///./node_modules/d3-interpolate/src/basis.js","webpack:///./node_modules/d3-interpolate/src/constant.js","webpack:///./node_modules/d3-interpolate/src/color.js","webpack:///./node_modules/d3-interpolate/src/rgb.js","webpack:///./node_modules/d3-interpolate/src/basisClosed.js","webpack:///./node_modules/d3-interpolate/src/string.js","webpack:///./node_modules/d3-transition/src/transition/interpolate.js","webpack:///./node_modules/d3-transition/src/transition/attr.js","webpack:///./node_modules/d3-transition/src/transition/attrTween.js","webpack:///./node_modules/d3-transition/src/transition/delay.js","webpack:///./node_modules/d3-transition/src/transition/duration.js","webpack:///./node_modules/d3-transition/src/transition/selection.js","webpack:///./node_modules/d3-transition/src/transition/style.js","webpack:///./node_modules/d3-transition/src/transition/index.js","webpack:///./node_modules/d3-transition/src/transition/select.js","webpack:///./node_modules/d3-transition/src/transition/selectAll.js","webpack:///./node_modules/d3-transition/src/transition/filter.js","webpack:///./node_modules/d3-transition/src/transition/merge.js","webpack:///./node_modules/d3-transition/src/transition/transition.js","webpack:///./node_modules/d3-transition/src/transition/on.js","webpack:///./node_modules/d3-transition/src/transition/styleTween.js","webpack:///./node_modules/d3-transition/src/transition/text.js","webpack:///./node_modules/d3-transition/src/transition/textTween.js","webpack:///./node_modules/d3-transition/src/transition/remove.js","webpack:///./node_modules/d3-transition/src/transition/ease.js","webpack:///./node_modules/d3-transition/src/transition/easeVarying.js","webpack:///./node_modules/d3-transition/src/transition/end.js","webpack:///./node_modules/d3-transition/src/selection/transition.js","webpack:///./node_modules/d3-ease/src/cubic.js","webpack:///./node_modules/d3-transition/src/selection/index.js","webpack:///./node_modules/d3-transition/src/selection/interrupt.js","webpack:///./node_modules/d3-transition/src/interrupt.js","webpack:///./node_modules/d3-brush/src/brush.js","webpack:///./node_modules/d3-array/src/ticks.js","webpack:///./node_modules/d3-array/src/ascending.js","webpack:///./node_modules/d3-array/src/bisector.js","webpack:///./node_modules/d3-array/src/bisect.js","webpack:///./node_modules/d3-array/src/number.js","webpack:///./node_modules/d3-interpolate/src/array.js","webpack:///./node_modules/d3-interpolate/src/date.js","webpack:///./node_modules/d3-interpolate/src/object.js","webpack:///./node_modules/d3-interpolate/src/numberArray.js","webpack:///./node_modules/d3-interpolate/src/value.js","webpack:///./node_modules/d3-interpolate/src/round.js","webpack:///./node_modules/d3-scale/src/number.js","webpack:///./node_modules/d3-scale/src/continuous.js","webpack:///./node_modules/d3-scale/src/constant.js","webpack:///./node_modules/d3-scale/src/init.js","webpack:///./node_modules/d3-format/src/formatSpecifier.js","webpack:///./node_modules/d3-format/src/formatPrefixAuto.js","webpack:///./node_modules/d3-format/src/formatDecimal.js","webpack:///./node_modules/d3-format/src/exponent.js","webpack:///./node_modules/d3-format/src/formatRounded.js","webpack:///./node_modules/d3-format/src/formatTypes.js","webpack:///./node_modules/d3-format/src/identity.js","webpack:///./node_modules/d3-format/src/locale.js","webpack:///./node_modules/d3-format/src/defaultLocale.js","webpack:///./node_modules/d3-format/src/formatGroup.js","webpack:///./node_modules/d3-format/src/formatNumerals.js","webpack:///./node_modules/d3-format/src/formatTrim.js","webpack:///./node_modules/d3-scale/src/tickFormat.js","webpack:///./node_modules/d3-format/src/precisionPrefix.js","webpack:///./node_modules/d3-format/src/precisionRound.js","webpack:///./node_modules/d3-format/src/precisionFixed.js","webpack:///./node_modules/d3-scale/src/linear.js","webpack:///./node_modules/d3-time/src/duration.js","webpack:///./node_modules/d3-time/src/interval.js","webpack:///./node_modules/d3-time/src/millisecond.js","webpack:///./node_modules/d3-time/src/second.js","webpack:///./node_modules/d3-time/src/minute.js","webpack:///./node_modules/d3-time/src/hour.js","webpack:///./node_modules/d3-time/src/day.js","webpack:///./node_modules/d3-time/src/week.js","webpack:///./node_modules/d3-time/src/month.js","webpack:///./node_modules/d3-time/src/year.js","webpack:///./node_modules/d3-time/src/utcMinute.js","webpack:///./node_modules/d3-time/src/utcHour.js","webpack:///./node_modules/d3-time/src/utcDay.js","webpack:///./node_modules/d3-time/src/utcWeek.js","webpack:///./node_modules/d3-time/src/utcMonth.js","webpack:///./node_modules/d3-time/src/utcYear.js","webpack:///./node_modules/d3-time/src/ticks.js","webpack:///./node_modules/d3-time-format/src/locale.js","webpack:///./node_modules/d3-time-format/src/defaultLocale.js","webpack:///./node_modules/d3-scale/src/time.js","webpack:///./node_modules/d3-scale/src/nice.js","webpack:///./node_modules/d3-selection/src/select.js","webpack:///./node_modules/d3-path/src/path.js","webpack:///./node_modules/d3-shape/src/array.js","webpack:///./node_modules/d3-shape/src/constant.js","webpack:///./node_modules/d3-shape/src/curve/linear.js","webpack:///./node_modules/d3-shape/src/point.js","webpack:///./node_modules/d3-shape/src/line.js","webpack:///./node_modules/d3-shape/src/curve/step.js","webpack:///./node_modules/d3-zoom/src/transform.js"],"sourcesContent":["export var name = \"d3\";\nexport var version = \"6.7.0\";\nexport var description = \"Data-Driven Documents\";\nexport var keywords = [\"dom\",\"visualization\",\"svg\",\"animation\",\"canvas\"];\nexport var homepage = \"https://d3js.org\";\nexport var license = \"BSD-3-Clause\";\nexport var author = {\"name\":\"Mike Bostock\",\"url\":\"https://bost.ocks.org/mike\"};\nexport var main = \"dist/d3.node.js\";\nexport var unpkg = \"dist/d3.min.js\";\nexport var jsdelivr = \"dist/d3.min.js\";\nexport var module = \"index.js\";\nexport var repository = {\"type\":\"git\",\"url\":\"https://github.com/d3/d3.git\"};\nexport var files = [\"dist/**/*.js\",\"index.js\"];\nexport var scripts = {\"pretest\":\"rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c\",\"test\":\"tape 'test/**/*-test.js'\",\"prepublishOnly\":\"yarn test\",\"postpublish\":\"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v${npm_package_version%%.*}.js && cp ../d3/dist/d3.min.js d3.v${npm_package_version%%.*}.min.js && git add d3.v${npm_package_version%%.*}.js d3.v${npm_package_version%%.*}.min.js && git commit -m \\\"d3 ${npm_package_version}\\\" && git push && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js\"};\nexport var devDependencies = {\"json2module\":\"0.0\",\"rimraf\":\"3\",\"rollup\":\"2\",\"rollup-plugin-ascii\":\"0.0\",\"rollup-plugin-node-resolve\":\"5\",\"rollup-plugin-terser\":\"7\",\"tape\":\"4\",\"tape-await\":\"0.1\"};\nexport var dependencies = {\"d3-array\":\"2\",\"d3-axis\":\"2\",\"d3-brush\":\"2\",\"d3-chord\":\"2\",\"d3-color\":\"2\",\"d3-contour\":\"2\",\"d3-delaunay\":\"5\",\"d3-dispatch\":\"2\",\"d3-drag\":\"2\",\"d3-dsv\":\"2\",\"d3-ease\":\"2\",\"d3-fetch\":\"2\",\"d3-force\":\"2\",\"d3-format\":\"2\",\"d3-geo\":\"2\",\"d3-hierarchy\":\"2\",\"d3-interpolate\":\"2\",\"d3-path\":\"2\",\"d3-polygon\":\"2\",\"d3-quadtree\":\"2\",\"d3-random\":\"2\",\"d3-scale\":\"3\",\"d3-scale-chromatic\":\"2\",\"d3-selection\":\"2\",\"d3-shape\":\"2\",\"d3-time\":\"2\",\"d3-time-format\":\"3\",\"d3-timer\":\"2\",\"d3-transition\":\"2\",\"d3-zoom\":\"2\"};\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n  return x;\n}\n","import {slice} from \"./array.js\";\nimport identity from \"./identity.js\";\n\nvar top = 1,\n    right = 2,\n    bottom = 3,\n    left = 4,\n    epsilon = 1e-6;\n\nfunction translateX(x) {\n  return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n  return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n  return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n  offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n  if (scale.round()) offset = Math.round(offset);\n  return d => +scale(d) + offset;\n}\n\nfunction entering() {\n  return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n  var tickArguments = [],\n      tickValues = null,\n      tickFormat = null,\n      tickSizeInner = 6,\n      tickSizeOuter = 6,\n      tickPadding = 3,\n      offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n      k = orient === top || orient === left ? -1 : 1,\n      x = orient === left || orient === right ? \"x\" : \"y\",\n      transform = orient === top || orient === bottom ? translateX : translateY;\n\n  function axis(context) {\n    var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n        format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n        spacing = Math.max(tickSizeInner, 0) + tickPadding,\n        range = scale.range(),\n        range0 = +range[0] + offset,\n        range1 = +range[range.length - 1] + offset,\n        position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n        selection = context.selection ? context.selection() : context,\n        path = selection.selectAll(\".domain\").data([null]),\n        tick = selection.selectAll(\".tick\").data(values, scale).order(),\n        tickExit = tick.exit(),\n        tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n        line = tick.select(\"line\"),\n        text = tick.select(\"text\");\n\n    path = path.merge(path.enter().insert(\"path\", \".tick\")\n        .attr(\"class\", \"domain\")\n        .attr(\"stroke\", \"currentColor\"));\n\n    tick = tick.merge(tickEnter);\n\n    line = line.merge(tickEnter.append(\"line\")\n        .attr(\"stroke\", \"currentColor\")\n        .attr(x + \"2\", k * tickSizeInner));\n\n    text = text.merge(tickEnter.append(\"text\")\n        .attr(\"fill\", \"currentColor\")\n        .attr(x, k * spacing)\n        .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n    if (context !== selection) {\n      path = path.transition(context);\n      tick = tick.transition(context);\n      line = line.transition(context);\n      text = text.transition(context);\n\n      tickExit = tickExit.transition(context)\n          .attr(\"opacity\", epsilon)\n          .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n      tickEnter\n          .attr(\"opacity\", epsilon)\n          .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n    }\n\n    tickExit.remove();\n\n    path\n        .attr(\"d\", orient === left || orient === right\n            ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n            : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n    tick\n        .attr(\"opacity\", 1)\n        .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n    line\n        .attr(x + \"2\", k * tickSizeInner);\n\n    text\n        .attr(x, k * spacing)\n        .text(format);\n\n    selection.filter(entering)\n        .attr(\"fill\", \"none\")\n        .attr(\"font-size\", 10)\n        .attr(\"font-family\", \"sans-serif\")\n        .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n    selection\n        .each(function() { this.__axis = position; });\n  }\n\n  axis.scale = function(_) {\n    return arguments.length ? (scale = _, axis) : scale;\n  };\n\n  axis.ticks = function() {\n    return tickArguments = slice.call(arguments), axis;\n  };\n\n  axis.tickArguments = function(_) {\n    return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n  };\n\n  axis.tickValues = function(_) {\n    return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n  };\n\n  axis.tickFormat = function(_) {\n    return arguments.length ? (tickFormat = _, axis) : tickFormat;\n  };\n\n  axis.tickSize = function(_) {\n    return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n  };\n\n  axis.tickSizeInner = function(_) {\n    return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n  };\n\n  axis.tickSizeOuter = function(_) {\n    return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n  };\n\n  axis.tickPadding = function(_) {\n    return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n  };\n\n  axis.offset = function(_) {\n    return arguments.length ? (offset = +_, axis) : offset;\n  };\n\n  return axis;\n}\n\nexport function axisTop(scale) {\n  return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n  return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n  return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n  return axis(left, scale);\n}\n","function none() {}\n\nexport default function(selector) {\n  return selector == null ? none : function() {\n    return this.querySelector(selector);\n  };\n}\n","export default function(x) {\n  return typeof x === \"object\" && \"length\" in x\n    ? x // Array, TypedArray, NodeList, array-like\n    : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function empty() {\n  return [];\n}\n\nexport default function(selector) {\n  return selector == null ? empty : function() {\n    return this.querySelectorAll(selector);\n  };\n}\n","export default function(selector) {\n  return function() {\n    return this.matches(selector);\n  };\n}\n\nexport function childMatcher(selector) {\n  return function(node) {\n    return node.matches(selector);\n  };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n  return function() {\n    return find.call(this.children, match);\n  };\n}\n\nfunction childFirst() {\n  return this.firstElementChild;\n}\n\nexport default function(match) {\n  return this.select(match == null ? childFirst\n      : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n  return this.children;\n}\n\nfunction childrenFilter(match) {\n  return function() {\n    return filter.call(this.children, match);\n  };\n}\n\nexport default function(match) {\n  return this.selectAll(match == null ? children\n      : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n  return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n  this.ownerDocument = parent.ownerDocument;\n  this.namespaceURI = parent.namespaceURI;\n  this._next = null;\n  this._parent = parent;\n  this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n  constructor: EnterNode,\n  appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n  insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n  querySelector: function(selector) { return this._parent.querySelector(selector); },\n  querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport array from \"../array.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n  var i = 0,\n      node,\n      groupLength = group.length,\n      dataLength = data.length;\n\n  // Put any non-null nodes that fit into update.\n  // Put any null nodes into enter.\n  // Put any remaining data into enter.\n  for (; i < dataLength; ++i) {\n    if (node = group[i]) {\n      node.__data__ = data[i];\n      update[i] = node;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Put any non-null nodes that don’t fit into exit.\n  for (; i < groupLength; ++i) {\n    if (node = group[i]) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n  var i,\n      node,\n      nodeByKeyValue = new Map,\n      groupLength = group.length,\n      dataLength = data.length,\n      keyValues = new Array(groupLength),\n      keyValue;\n\n  // Compute the key for each node.\n  // If multiple nodes have the same key, the duplicates are added to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if (node = group[i]) {\n      keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n      if (nodeByKeyValue.has(keyValue)) {\n        exit[i] = node;\n      } else {\n        nodeByKeyValue.set(keyValue, node);\n      }\n    }\n  }\n\n  // Compute the key for each datum.\n  // If there a node associated with this key, join and add it to update.\n  // If there is not (or the key is a duplicate), add it to enter.\n  for (i = 0; i < dataLength; ++i) {\n    keyValue = key.call(parent, data[i], i, data) + \"\";\n    if (node = nodeByKeyValue.get(keyValue)) {\n      update[i] = node;\n      node.__data__ = data[i];\n      nodeByKeyValue.delete(keyValue);\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Add any remaining nodes that were not bound to data to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction datum(node) {\n  return node.__data__;\n}\n\nexport default function(value, key) {\n  if (!arguments.length) return Array.from(this, datum);\n\n  var bind = key ? bindKey : bindIndex,\n      parents = this._parents,\n      groups = this._groups;\n\n  if (typeof value !== \"function\") value = constant(value);\n\n  for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n    var parent = parents[j],\n        group = groups[j],\n        groupLength = group.length,\n        data = array(value.call(parent, parent && parent.__data__, j, parents)),\n        dataLength = data.length,\n        enterGroup = enter[j] = new Array(dataLength),\n        updateGroup = update[j] = new Array(dataLength),\n        exitGroup = exit[j] = new Array(groupLength);\n\n    bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n    // Now connect the enter nodes to their following update node, such that\n    // appendChild can insert the materialized enter node before this node,\n    // rather than at the end of the parent node.\n    for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n      if (previous = enterGroup[i0]) {\n        if (i0 >= i1) i1 = i0 + 1;\n        while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n        previous._next = next || null;\n      }\n    }\n  }\n\n  update = new Selection(update, parents);\n  update._enter = enter;\n  update._exit = exit;\n  return update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n  if (!compare) compare = ascending;\n\n  function compareNode(a, b) {\n    return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n  }\n\n  for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        sortgroup[i] = node;\n      }\n    }\n    sortgroup.sort(compareNode);\n  }\n\n  return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n  svg: \"http://www.w3.org/2000/svg\",\n  xhtml: xhtml,\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\",\n  xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n  var prefix = name += \"\", i = prefix.indexOf(\":\");\n  if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n  return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, value) {\n  return function() {\n    this.setAttribute(name, value);\n  };\n}\n\nfunction attrConstantNS(fullname, value) {\n  return function() {\n    this.setAttributeNS(fullname.space, fullname.local, value);\n  };\n}\n\nfunction attrFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttribute(name);\n    else this.setAttribute(name, v);\n  };\n}\n\nfunction attrFunctionNS(fullname, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n    else this.setAttributeNS(fullname.space, fullname.local, v);\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name);\n\n  if (arguments.length < 2) {\n    var node = this.node();\n    return fullname.local\n        ? node.getAttributeNS(fullname.space, fullname.local)\n        : node.getAttribute(fullname);\n  }\n\n  return this.each((value == null\n      ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)\n      : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n  return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n      || (node.document && node) // node is a Window\n      || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, value, priority) {\n  return function() {\n    this.style.setProperty(name, value, priority);\n  };\n}\n\nfunction styleFunction(name, value, priority) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.style.removeProperty(name);\n    else this.style.setProperty(name, v, priority);\n  };\n}\n\nexport default function(name, value, priority) {\n  return arguments.length > 1\n      ? this.each((value == null\n            ? styleRemove : typeof value === \"function\"\n            ? styleFunction\n            : styleConstant)(name, value, priority == null ? \"\" : priority))\n      : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n  return node.style.getPropertyValue(name)\n      || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n  return function() {\n    delete this[name];\n  };\n}\n\nfunction propertyConstant(name, value) {\n  return function() {\n    this[name] = value;\n  };\n}\n\nfunction propertyFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) delete this[name];\n    else this[name] = v;\n  };\n}\n\nexport default function(name, value) {\n  return arguments.length > 1\n      ? this.each((value == null\n          ? propertyRemove : typeof value === \"function\"\n          ? propertyFunction\n          : propertyConstant)(name, value))\n      : this.node()[name];\n}\n","function classArray(string) {\n  return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n  return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n  this._node = node;\n  this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n  add: function(name) {\n    var i = this._names.indexOf(name);\n    if (i < 0) {\n      this._names.push(name);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  remove: function(name) {\n    var i = this._names.indexOf(name);\n    if (i >= 0) {\n      this._names.splice(i, 1);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  contains: function(name) {\n    return this._names.indexOf(name) >= 0;\n  }\n};\n\nfunction classedAdd(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n  return function() {\n    classedAdd(this, names);\n  };\n}\n\nfunction classedFalse(names) {\n  return function() {\n    classedRemove(this, names);\n  };\n}\n\nfunction classedFunction(names, value) {\n  return function() {\n    (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n  };\n}\n\nexport default function(name, value) {\n  var names = classArray(name + \"\");\n\n  if (arguments.length < 2) {\n    var list = classList(this.node()), i = -1, n = names.length;\n    while (++i < n) if (!list.contains(names[i])) return false;\n    return true;\n  }\n\n  return this.each((typeof value === \"function\"\n      ? classedFunction : value\n      ? classedTrue\n      : classedFalse)(names, value));\n}\n","function textRemove() {\n  this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.textContent = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? textRemove : (typeof value === \"function\"\n          ? textFunction\n          : textConstant)(value))\n      : this.node().textContent;\n}\n","function htmlRemove() {\n  this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n  return function() {\n    this.innerHTML = value;\n  };\n}\n\nfunction htmlFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.innerHTML = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? htmlRemove : (typeof value === \"function\"\n          ? htmlFunction\n          : htmlConstant)(value))\n      : this.node().innerHTML;\n}\n","function raise() {\n  if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n  return this.each(raise);\n}\n","function lower() {\n  if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n  return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n  return function() {\n    var document = this.ownerDocument,\n        uri = this.namespaceURI;\n    return uri === xhtml && document.documentElement.namespaceURI === xhtml\n        ? document.createElement(name)\n        : document.createElementNS(uri, name);\n  };\n}\n\nfunction creatorFixed(fullname) {\n  return function() {\n    return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n  };\n}\n\nexport default function(name) {\n  var fullname = namespace(name);\n  return (fullname.local\n      ? creatorFixed\n      : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n  return null;\n}\n\nexport default function(name, before) {\n  var create = typeof name === \"function\" ? name : creator(name),\n      select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n  return this.select(function() {\n    return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n  });\n}\n","function remove() {\n  var parent = this.parentNode;\n  if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n  return this.each(remove);\n}\n","function selection_cloneShallow() {\n  var clone = this.cloneNode(false), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n  var clone = this.cloneNode(true), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n  return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n  return function(event) {\n    listener.call(this, event, this.__data__);\n  };\n}\n\nfunction parseTypenames(typenames) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    return {type: t, name: name};\n  });\n}\n\nfunction onRemove(typename) {\n  return function() {\n    var on = this.__on;\n    if (!on) return;\n    for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n      if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n      } else {\n        on[++i] = o;\n      }\n    }\n    if (++i) on.length = i;\n    else delete this.__on;\n  };\n}\n\nfunction onAdd(typename, value, options) {\n  return function() {\n    var on = this.__on, o, listener = contextListener(value);\n    if (on) for (var j = 0, m = on.length; j < m; ++j) {\n      if ((o = on[j]).type === typename.type && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n        this.addEventListener(o.type, o.listener = listener, o.options = options);\n        o.value = value;\n        return;\n      }\n    }\n    this.addEventListener(typename.type, listener, options);\n    o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n    if (!on) this.__on = [o];\n    else on.push(o);\n  };\n}\n\nexport default function(typename, value, options) {\n  var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n  if (arguments.length < 2) {\n    var on = this.node().__on;\n    if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n      for (i = 0, o = on[j]; i < n; ++i) {\n        if ((t = typenames[i]).type === o.type && t.name === o.name) {\n          return o.value;\n        }\n      }\n    }\n    return;\n  }\n\n  on = value ? onAdd : onRemove;\n  for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n  return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n  var window = defaultView(node),\n      event = window.CustomEvent;\n\n  if (typeof event === \"function\") {\n    event = new event(type, params);\n  } else {\n    event = window.document.createEvent(\"Event\");\n    if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n    else event.initEvent(type, false, false);\n  }\n\n  node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params);\n  };\n}\n\nfunction dispatchFunction(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params.apply(this, arguments));\n  };\n}\n\nexport default function(type, params) {\n  return this.each((typeof params === \"function\"\n      ? dispatchFunction\n      : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n  this._groups = groups;\n  this._parents = parents;\n}\n\nfunction selection() {\n  return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n  return this;\n}\n\nSelection.prototype = selection.prototype = {\n  constructor: Selection,\n  select: selection_select,\n  selectAll: selection_selectAll,\n  selectChild: selection_selectChild,\n  selectChildren: selection_selectChildren,\n  filter: selection_filter,\n  data: selection_data,\n  enter: selection_enter,\n  exit: selection_exit,\n  join: selection_join,\n  merge: selection_merge,\n  selection: selection_selection,\n  order: selection_order,\n  sort: selection_sort,\n  call: selection_call,\n  nodes: selection_nodes,\n  node: selection_node,\n  size: selection_size,\n  empty: selection_empty,\n  each: selection_each,\n  attr: selection_attr,\n  style: selection_style,\n  property: selection_property,\n  classed: selection_classed,\n  text: selection_text,\n  html: selection_html,\n  raise: selection_raise,\n  lower: selection_lower,\n  append: selection_append,\n  insert: selection_insert,\n  remove: selection_remove,\n  clone: selection_clone,\n  datum: selection_datum,\n  on: selection_on,\n  dispatch: selection_dispatch,\n  [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n  return function() {\n    var group = select.apply(this, arguments);\n    return group == null ? [] : array(group);\n  };\n}\n\nexport default function(select) {\n  if (typeof select === \"function\") select = arrayAll(select);\n  else select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        subgroups.push(select.call(node, node.__data__, i, group));\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n  var enter = this.enter(), update = this, exit = this.exit();\n  enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n  if (onupdate != null) update = onupdate(update);\n  if (onexit == null) exit.remove(); else onexit(exit);\n  return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(selection) {\n  if (!(selection instanceof Selection)) throw new Error(\"invalid merge\");\n\n  for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Selection(merges, this._parents);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n    for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n      if (node = group[i]) {\n        if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n        next = node;\n      }\n    }\n  }\n\n  return this;\n}\n","export default function() {\n  var callback = arguments[0];\n  arguments[0] = this;\n  callback.apply(null, arguments);\n  return this;\n}\n","export default function() {\n  return Array.from(this);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n      var node = group[i];\n      if (node) return node;\n    }\n  }\n\n  return null;\n}\n","export default function() {\n  let size = 0;\n  for (const node of this) ++size; // eslint-disable-line no-unused-vars\n  return size;\n}\n","export default function() {\n  return !this.node();\n}\n","export default function(callback) {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) callback.call(node, node.__data__, i, group);\n    }\n  }\n\n  return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n  var create = typeof name === \"function\" ? name : creator(name);\n  return this.select(function() {\n    return this.appendChild(create.apply(this, arguments));\n  });\n}\n","export default function(value) {\n  return arguments.length\n      ? this.property(\"__data__\", value)\n      : this.node().__data__;\n}\n","export default function*() {\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) yield node;\n    }\n  }\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length < 2) {\n      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i < n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i < n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i < n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nexport function Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nexport function timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nexport function timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer;\n  delay = delay == null ? 0 : +delay;\n  t.restart(elapsed => {\n    t.stop();\n    callback(elapsed + delay);\n  }, delay, time);\n  return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n  var schedules = node.__transition;\n  if (!schedules) node.__transition = {};\n  else if (id in schedules) return;\n  create(node, id, {\n    name: name,\n    index: index, // For context during callback.\n    group: group, // For context during callback.\n    on: emptyOn,\n    tween: emptyTween,\n    time: timing.time,\n    delay: timing.delay,\n    duration: timing.duration,\n    ease: timing.ease,\n    timer: null,\n    state: CREATED\n  });\n}\n\nexport function init(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n  return schedule;\n}\n\nexport function set(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n  return schedule;\n}\n\nexport function get(node, id) {\n  var schedule = node.__transition;\n  if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n  return schedule;\n}\n\nfunction create(node, id, self) {\n  var schedules = node.__transition,\n      tween;\n\n  // Initialize the self timer when the transition is created.\n  // Note the actual delay is not known until the first callback!\n  schedules[id] = self;\n  self.timer = timer(schedule, 0, self.time);\n\n  function schedule(elapsed) {\n    self.state = SCHEDULED;\n    self.timer.restart(start, self.delay, self.time);\n\n    // If the elapsed delay is less than our first sleep, start immediately.\n    if (self.delay <= elapsed) start(elapsed - self.delay);\n  }\n\n  function start(elapsed) {\n    var i, j, n, o;\n\n    // If the state is not SCHEDULED, then we previously errored on start.\n    if (self.state !== SCHEDULED) return stop();\n\n    for (i in schedules) {\n      o = schedules[i];\n      if (o.name !== self.name) continue;\n\n      // While this element already has a starting transition during this frame,\n      // defer starting an interrupting transition until that transition has a\n      // chance to tick (and possibly end); see d3/d3-transition#54!\n      if (o.state === STARTED) return timeout(start);\n\n      // Interrupt the active transition, if any.\n      if (o.state === RUNNING) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n\n      // Cancel any pre-empted transitions.\n      else if (+i < id) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n    }\n\n    // Defer the first tick to end of the current frame; see d3/d3#1576.\n    // Note the transition may be canceled after start and before the first tick!\n    // Note this must be scheduled before the start event; see d3/d3-transition#16!\n    // Assuming this is successful, subsequent callbacks go straight to tick.\n    timeout(function() {\n      if (self.state === STARTED) {\n        self.state = RUNNING;\n        self.timer.restart(tick, self.delay, self.time);\n        tick(elapsed);\n      }\n    });\n\n    // Dispatch the start event.\n    // Note this must be done before the tween are initialized.\n    self.state = STARTING;\n    self.on.call(\"start\", node, node.__data__, self.index, self.group);\n    if (self.state !== STARTING) return; // interrupted\n    self.state = STARTED;\n\n    // Initialize the tween, deleting null tween.\n    tween = new Array(n = self.tween.length);\n    for (i = 0, j = -1; i < n; ++i) {\n      if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n        tween[++j] = o;\n      }\n    }\n    tween.length = j + 1;\n  }\n\n  function tick(elapsed) {\n    var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n        i = -1,\n        n = tween.length;\n\n    while (++i < n) {\n      tween[i].call(node, t);\n    }\n\n    // Dispatch the end event.\n    if (self.state === ENDING) {\n      self.on.call(\"end\", node, node.__data__, self.index, self.group);\n      stop();\n    }\n  }\n\n  function stop() {\n    self.state = ENDED;\n    self.timer.stop();\n    delete schedules[id];\n    for (var i in schedules) return; // eslint-disable-line no-unused-vars\n    delete node.__transition;\n  }\n}\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n  const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n  return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n  if (value == null) return identity;\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n  value = value.matrix;\n  return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n  var tween0, tween1;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = tween0 = tween;\n      for (var i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1 = tween1.slice();\n          tween1.splice(i, 1);\n          break;\n        }\n      }\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nfunction tweenFunction(id, name, value) {\n  var tween0, tween1;\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = (tween0 = tween).slice();\n      for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1[i] = t;\n          break;\n        }\n      }\n      if (i === n) tween1.push(t);\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nexport default function(name, value) {\n  var id = this._id;\n\n  name += \"\";\n\n  if (arguments.length < 2) {\n    var tween = get(this.node(), id).tween;\n    for (var i = 0, n = tween.length, t; i < n; ++i) {\n      if ((t = tween[i]).name === name) {\n        return t.value;\n      }\n    }\n    return null;\n  }\n\n  return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n  var id = transition._id;\n\n  transition.each(function() {\n    var schedule = set(this, id);\n    (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n  });\n\n  return function(node) {\n    return get(node, id).value[name];\n  };\n}\n","export default function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n    reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n    reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n    reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n    reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n    reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  copy: function(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable: function() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb: function() {\n    return this;\n  },\n  displayable: function() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n  var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n  return (a === 1 ? \"rgb(\" : \"rgba(\")\n      + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n      + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n      + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n      + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n  value = Math.max(0, Math.min(255, Math.round(value) || 0));\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb: function() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  displayable: function() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  formatHsl: function() {\n    var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n    return (a === 1 ? \"hsl(\" : \"hsla(\")\n        + (this.h || 0) + \", \"\n        + (this.s || 0) * 100 + \"%, \"\n        + (this.l || 0) * 100 + \"%\"\n        + (a === 1 ? \")\" : \", \" + a + \")\");\n  }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\nexport default function(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nexport function hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n  };\n}\n\nexport default function nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n  var color = gamma(y);\n\n  function rgb(start, end) {\n    var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = colorRgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\nexport default function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: number(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n  var c;\n  return (typeof b === \"number\" ? interpolateNumber\n      : b instanceof color ? interpolateRgb\n      : (c = color(b)) ? (b = c, interpolateRgb)\n      : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttribute(name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttributeNS(fullname.space, fullname.local);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttribute(name);\n    string0 = this.getAttribute(name);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n    string0 = this.getAttributeNS(fullname.space, fullname.local);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n  return this.attrTween(name, typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n      : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n      : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n  return function(t) {\n    this.setAttribute(name, i.call(this, t));\n  };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n  return function(t) {\n    this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n  };\n}\n\nfunction attrTweenNS(fullname, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nfunction attrTween(name, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value) {\n  var key = \"attr.\" + name;\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  var fullname = namespace(name);\n  return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n  return function() {\n    init(this, id).delay = +value.apply(this, arguments);\n  };\n}\n\nfunction delayConstant(id, value) {\n  return value = +value, function() {\n    init(this, id).delay = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? delayFunction\n          : delayConstant)(id, value))\n      : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n  return function() {\n    set(this, id).duration = +value.apply(this, arguments);\n  };\n}\n\nfunction durationConstant(id, value) {\n  return value = +value, function() {\n    set(this, id).duration = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? durationFunction\n          : durationConstant)(id, value))\n      : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n  return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        string1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, string10 = string1);\n  };\n}\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = style(this, name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction styleFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        value1 = value(this),\n        string1 = value1 + \"\";\n    if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction styleMaybeRemove(id, name) {\n  var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n  return function() {\n    var schedule = set(this, id),\n        on = schedule.on,\n        listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, value, priority) {\n  var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n  return value == null ? this\n      .styleTween(name, styleNull(name, i))\n      .on(\"end.style.\" + name, styleRemove(name))\n    : typeof value === \"function\" ? this\n      .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n      .each(styleMaybeRemove(this._id, name))\n    : this\n      .styleTween(name, styleConstant(name, i, value), priority)\n      .on(\"end.style.\" + name, null);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n  this._groups = groups;\n  this._parents = parents;\n  this._name = name;\n  this._id = id;\n}\n\nexport default function transition(name) {\n  return selection().transition(name);\n}\n\nexport function newId() {\n  return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n  constructor: Transition,\n  select: transition_select,\n  selectAll: transition_selectAll,\n  filter: transition_filter,\n  merge: transition_merge,\n  selection: transition_selection,\n  transition: transition_transition,\n  call: selection_prototype.call,\n  nodes: selection_prototype.nodes,\n  node: selection_prototype.node,\n  size: selection_prototype.size,\n  empty: selection_prototype.empty,\n  each: selection_prototype.each,\n  on: transition_on,\n  attr: transition_attr,\n  attrTween: transition_attrTween,\n  style: transition_style,\n  styleTween: transition_styleTween,\n  text: transition_text,\n  textTween: transition_textTween,\n  remove: transition_remove,\n  tween: transition_tween,\n  delay: transition_delay,\n  duration: transition_duration,\n  ease: transition_ease,\n  easeVarying: transition_easeVarying,\n  end: transition_end,\n  [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n        schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n          if (child = children[k]) {\n            schedule(child, name, id, k, children, inherit);\n          }\n        }\n        subgroups.push(children);\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n  if (transition._id !== this._id) throw new Error;\n\n  for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n  var name = this._name,\n      id0 = this._id,\n      id1 = newId();\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        var inherit = get(node, id0);\n        schedule(node, name, id1, i, group, {\n          time: inherit.time + inherit.delay + inherit.duration,\n          delay: 0,\n          duration: inherit.duration,\n          ease: inherit.ease\n        });\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n  return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n    var i = t.indexOf(\".\");\n    if (i >= 0) t = t.slice(0, i);\n    return !t || t === \"start\";\n  });\n}\n\nfunction onFunction(id, name, listener) {\n  var on0, on1, sit = start(name) ? init : set;\n  return function() {\n    var schedule = sit(this, id),\n        on = schedule.on;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, listener) {\n  var id = this._id;\n\n  return arguments.length < 2\n      ? get(this.node(), id).on.on(name)\n      : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n  return function(t) {\n    this.style.setProperty(name, i.call(this, t), priority);\n  };\n}\n\nfunction styleTween(name, value, priority) {\n  var t, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n    return t;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value, priority) {\n  var key = \"style.\" + (name += \"\");\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var value1 = value(this);\n    this.textContent = value1 == null ? \"\" : value1;\n  };\n}\n\nexport default function(value) {\n  return this.tween(\"text\", typeof value === \"function\"\n      ? textFunction(tweenValue(this, \"text\", value))\n      : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n  return function(t) {\n    this.textContent = i.call(this, t);\n  };\n}\n\nfunction textTween(value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(value) {\n  var key = \"text\";\n  if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, textTween(value));\n}\n","function removeFunction(id) {\n  return function() {\n    var parent = this.parentNode;\n    for (var i in this.__transition) if (+i !== id) return;\n    if (parent) parent.removeChild(this);\n  };\n}\n\nexport default function() {\n  return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    set(this, id).ease = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each(easeConstant(id, value))\n      : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (typeof v !== \"function\") throw new Error;\n    set(this, id).ease = v;\n  };\n}\n\nexport default function(value) {\n  if (typeof value !== \"function\") throw new Error;\n  return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n  var on0, on1, that = this, id = that._id, size = that.size();\n  return new Promise(function(resolve, reject) {\n    var cancel = {value: reject},\n        end = {value: function() { if (--size === 0) resolve(); }};\n\n    that.each(function() {\n      var schedule = set(this, id),\n          on = schedule.on;\n\n      // If this node shared a dispatch with the previous node,\n      // just assign the updated shared dispatch and we’re done!\n      // Otherwise, copy-on-write.\n      if (on !== on0) {\n        on1 = (on0 = on).copy();\n        on1._.cancel.push(cancel);\n        on1._.interrupt.push(cancel);\n        on1._.end.push(end);\n      }\n\n      schedule.on = on1;\n    });\n\n    // The selection was empty, resolve end immediately\n    if (size === 0) resolve();\n  });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n  time: null, // Set on use.\n  delay: 0,\n  duration: 250,\n  ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n  var timing;\n  while (!(timing = node.__transition) || !(timing = timing[id])) {\n    if (!(node = node.parentNode)) {\n      throw new Error(`transition ${id} not found`);\n    }\n  }\n  return timing;\n}\n\nexport default function(name) {\n  var id,\n      timing;\n\n  if (name instanceof Transition) {\n    id = name._id, name = name._name;\n  } else {\n    id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n  }\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        schedule(node, name, id, i, group, timing || inherit(node, id));\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n  return t * t * t;\n}\n\nexport function cubicOut(t) {\n  return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n  return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n  return this.each(function() {\n    interrupt(this, name);\n  });\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      active,\n      empty = true,\n      i;\n\n  if (!schedules) return;\n\n  name = name == null ? null : name + \"\";\n\n  for (i in schedules) {\n    if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n    active = schedule.state > STARTING && schedule.state < ENDING;\n    schedule.state = ENDED;\n    schedule.timer.stop();\n    schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n    delete schedules[i];\n  }\n\n  if (empty) delete node.__transition;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n    MODE_SPACE = {name: \"space\"},\n    MODE_HANDLE = {name: \"handle\"},\n    MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n  return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n  return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n  name: \"x\",\n  handles: [\"w\", \"e\"].map(type),\n  input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n  output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n  name: \"y\",\n  handles: [\"n\", \"s\"].map(type),\n  input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n  output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n  name: \"xy\",\n  handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n  input: function(xy) { return xy == null ? null : number2(xy); },\n  output: function(xy) { return xy; }\n};\n\nvar cursors = {\n  overlay: \"crosshair\",\n  selection: \"move\",\n  n: \"ns-resize\",\n  e: \"ew-resize\",\n  s: \"ns-resize\",\n  w: \"ew-resize\",\n  nw: \"nwse-resize\",\n  ne: \"nesw-resize\",\n  se: \"nwse-resize\",\n  sw: \"nesw-resize\"\n};\n\nvar flipX = {\n  e: \"w\",\n  w: \"e\",\n  nw: \"ne\",\n  ne: \"nw\",\n  se: \"sw\",\n  sw: \"se\"\n};\n\nvar flipY = {\n  n: \"s\",\n  s: \"n\",\n  nw: \"sw\",\n  ne: \"se\",\n  se: \"ne\",\n  sw: \"nw\"\n};\n\nvar signsX = {\n  overlay: +1,\n  selection: +1,\n  n: null,\n  e: +1,\n  s: null,\n  w: -1,\n  nw: -1,\n  ne: +1,\n  se: +1,\n  sw: -1\n};\n\nvar signsY = {\n  overlay: +1,\n  selection: +1,\n  n: -1,\n  e: null,\n  s: +1,\n  w: null,\n  nw: -1,\n  ne: -1,\n  se: +1,\n  sw: +1\n};\n\nfunction type(t) {\n  return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n  return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n  var svg = this.ownerSVGElement || this;\n  if (svg.hasAttribute(\"viewBox\")) {\n    svg = svg.viewBox.baseVal;\n    return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n  }\n  return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n  while (!node.__brush) if (!(node = node.parentNode)) return;\n  return node.__brush;\n}\n\nfunction empty(extent) {\n  return extent[0][0] === extent[1][0]\n      || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n  var state = node.__brush;\n  return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n  return brush(X);\n}\n\nexport function brushY() {\n  return brush(Y);\n}\n\nexport default function() {\n  return brush(XY);\n}\n\nfunction brush(dim) {\n  var extent = defaultExtent,\n      filter = defaultFilter,\n      touchable = defaultTouchable,\n      keys = true,\n      listeners = dispatch(\"start\", \"brush\", \"end\"),\n      handleSize = 6,\n      touchending;\n\n  function brush(group) {\n    var overlay = group\n        .property(\"__brush\", initialize)\n      .selectAll(\".overlay\")\n      .data([type(\"overlay\")]);\n\n    overlay.enter().append(\"rect\")\n        .attr(\"class\", \"overlay\")\n        .attr(\"pointer-events\", \"all\")\n        .attr(\"cursor\", cursors.overlay)\n      .merge(overlay)\n        .each(function() {\n          var extent = local(this).extent;\n          select(this)\n              .attr(\"x\", extent[0][0])\n              .attr(\"y\", extent[0][1])\n              .attr(\"width\", extent[1][0] - extent[0][0])\n              .attr(\"height\", extent[1][1] - extent[0][1]);\n        });\n\n    group.selectAll(\".selection\")\n      .data([type(\"selection\")])\n      .enter().append(\"rect\")\n        .attr(\"class\", \"selection\")\n        .attr(\"cursor\", cursors.selection)\n        .attr(\"fill\", \"#777\")\n        .attr(\"fill-opacity\", 0.3)\n        .attr(\"stroke\", \"#fff\")\n        .attr(\"shape-rendering\", \"crispEdges\");\n\n    var handle = group.selectAll(\".handle\")\n      .data(dim.handles, function(d) { return d.type; });\n\n    handle.exit().remove();\n\n    handle.enter().append(\"rect\")\n        .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n        .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n    group\n        .each(redraw)\n        .attr(\"fill\", \"none\")\n        .attr(\"pointer-events\", \"all\")\n        .on(\"mousedown.brush\", started)\n      .filter(touchable)\n        .on(\"touchstart.brush\", started)\n        .on(\"touchmove.brush\", touchmoved)\n        .on(\"touchend.brush touchcancel.brush\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  brush.move = function(group, selection) {\n    if (group.tween) {\n      group\n          .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n          .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n          .tween(\"brush\", function() {\n            var that = this,\n                state = that.__brush,\n                emit = emitter(that, arguments),\n                selection0 = state.selection,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n                i = interpolate(selection0, selection1);\n\n            function tween(t) {\n              state.selection = t === 1 && selection1 === null ? null : i(t);\n              redraw.call(that);\n              emit.brush();\n            }\n\n            return selection0 !== null && selection1 !== null ? tween : tween(1);\n          });\n    } else {\n      group\n          .each(function() {\n            var that = this,\n                args = arguments,\n                state = that.__brush,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n                emit = emitter(that, args).beforestart();\n\n            interrupt(that);\n            state.selection = selection1 === null ? null : selection1;\n            redraw.call(that);\n            emit.start().brush().end();\n          });\n    }\n  };\n\n  brush.clear = function(group) {\n    brush.move(group, null);\n  };\n\n  function redraw() {\n    var group = select(this),\n        selection = local(this).selection;\n\n    if (selection) {\n      group.selectAll(\".selection\")\n          .style(\"display\", null)\n          .attr(\"x\", selection[0][0])\n          .attr(\"y\", selection[0][1])\n          .attr(\"width\", selection[1][0] - selection[0][0])\n          .attr(\"height\", selection[1][1] - selection[0][1]);\n\n      group.selectAll(\".handle\")\n          .style(\"display\", null)\n          .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n          .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n          .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n          .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n    }\n\n    else {\n      group.selectAll(\".selection,.handle\")\n          .style(\"display\", \"none\")\n          .attr(\"x\", null)\n          .attr(\"y\", null)\n          .attr(\"width\", null)\n          .attr(\"height\", null);\n    }\n  }\n\n  function emitter(that, args, clean) {\n    var emit = that.__brush.emitter;\n    return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n  }\n\n  function Emitter(that, args, clean) {\n    this.that = that;\n    this.args = args;\n    this.state = that.__brush;\n    this.active = 0;\n    this.clean = clean;\n  }\n\n  Emitter.prototype = {\n    beforestart: function() {\n      if (++this.active === 1) this.state.emitter = this, this.starting = true;\n      return this;\n    },\n    start: function(event, mode) {\n      if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n      else this.emit(\"brush\", event);\n      return this;\n    },\n    brush: function(event, mode) {\n      this.emit(\"brush\", event, mode);\n      return this;\n    },\n    end: function(event, mode) {\n      if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n      return this;\n    },\n    emit: function(type, event, mode) {\n      var d = select(this.that).datum();\n      listeners.call(\n        type,\n        this.that,\n        new BrushEvent(type, {\n          sourceEvent: event,\n          target: brush,\n          selection: dim.output(this.state.selection),\n          mode,\n          dispatch: listeners\n        }),\n        d\n      );\n    }\n  };\n\n  function started(event) {\n    if (touchending && !event.touches) return;\n    if (!filter.apply(this, arguments)) return;\n\n    var that = this,\n        type = event.target.__data__.type,\n        mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n        signX = dim === Y ? null : signsX[type],\n        signY = dim === X ? null : signsY[type],\n        state = local(that),\n        extent = state.extent,\n        selection = state.selection,\n        W = extent[0][0], w0, w1,\n        N = extent[0][1], n0, n1,\n        E = extent[1][0], e0, e1,\n        S = extent[1][1], s0, s1,\n        dx = 0,\n        dy = 0,\n        moving,\n        shifting = signX && signY && keys && event.shiftKey,\n        lockX,\n        lockY,\n        points = Array.from(event.touches || [event], t => {\n          const i = t.identifier;\n          t = pointer(t, that);\n          t.point0 = t.slice();\n          t.identifier = i;\n          return t;\n        });\n\n    if (type === \"overlay\") {\n      if (selection) moving = true;\n      const pts = [points[0], points[1] || points[0]];\n      state.selection = selection = [[\n          w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n          n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n        ], [\n          e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n          s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n        ]];\n      if (points.length > 1) move();\n    } else {\n      w0 = selection[0][0];\n      n0 = selection[0][1];\n      e0 = selection[1][0];\n      s0 = selection[1][1];\n    }\n\n    w1 = w0;\n    n1 = n0;\n    e1 = e0;\n    s1 = s0;\n\n    var group = select(that)\n        .attr(\"pointer-events\", \"none\");\n\n    var overlay = group.selectAll(\".overlay\")\n        .attr(\"cursor\", cursors[type]);\n\n    interrupt(that);\n    var emit = emitter(that, arguments, true).beforestart();\n\n    if (event.touches) {\n      emit.moved = moved;\n      emit.ended = ended;\n    } else {\n      var view = select(event.view)\n          .on(\"mousemove.brush\", moved, true)\n          .on(\"mouseup.brush\", ended, true);\n      if (keys) view\n          .on(\"keydown.brush\", keydowned, true)\n          .on(\"keyup.brush\", keyupped, true)\n\n      dragDisable(event.view);\n    }\n\n    redraw.call(that);\n    emit.start(event, mode.name);\n\n    function moved(event) {\n      for (const p of event.changedTouches || [event]) {\n        for (const d of points)\n          if (d.identifier === p.identifier) d.cur = pointer(p, that);\n      }\n      if (shifting && !lockX && !lockY && points.length === 1) {\n        const point = points[0];\n        if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n          lockY = true;\n        else\n          lockX = true;\n      }\n      for (const point of points)\n        if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n      moving = true;\n      noevent(event);\n      move(event);\n    }\n\n    function move(event) {\n      const point = points[0], point0 = point.point0;\n      var t;\n\n      dx = point[0] - point0[0];\n      dy = point[1] - point0[1];\n\n      switch (mode) {\n        case MODE_SPACE:\n        case MODE_DRAG: {\n          if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n          if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n          break;\n        }\n        case MODE_HANDLE: {\n          if (points[1]) {\n            if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n            if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n          } else {\n            if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n            else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n            if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n            else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n          }\n          break;\n        }\n        case MODE_CENTER: {\n          if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n          if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n          break;\n        }\n      }\n\n      if (e1 < w1) {\n        signX *= -1;\n        t = w0, w0 = e0, e0 = t;\n        t = w1, w1 = e1, e1 = t;\n        if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n      }\n\n      if (s1 < n1) {\n        signY *= -1;\n        t = n0, n0 = s0, s0 = t;\n        t = n1, n1 = s1, s1 = t;\n        if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n      }\n\n      if (state.selection) selection = state.selection; // May be set by brush.move!\n      if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n      if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n      if (selection[0][0] !== w1\n          || selection[0][1] !== n1\n          || selection[1][0] !== e1\n          || selection[1][1] !== s1) {\n        state.selection = [[w1, n1], [e1, s1]];\n        redraw.call(that);\n        emit.brush(event, mode.name);\n      }\n    }\n\n    function ended(event) {\n      nopropagation(event);\n      if (event.touches) {\n        if (event.touches.length) return;\n        if (touchending) clearTimeout(touchending);\n        touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n      } else {\n        dragEnable(event.view, moving);\n        view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n      }\n      group.attr(\"pointer-events\", \"all\");\n      overlay.attr(\"cursor\", cursors.overlay);\n      if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n      if (empty(selection)) state.selection = null, redraw.call(that);\n      emit.end(event, mode.name);\n    }\n\n    function keydowned(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          shifting = signX && signY;\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_HANDLE) {\n            if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n            if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n            mode = MODE_CENTER;\n            move();\n          }\n          break;\n        }\n        case 32: { // SPACE; takes priority over ALT\n          if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n            if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n            mode = MODE_SPACE;\n            overlay.attr(\"cursor\", cursors.selection);\n            move();\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n\n    function keyupped(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          if (shifting) {\n            lockX = lockY = shifting = false;\n            move();\n          }\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n            if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n            mode = MODE_HANDLE;\n            move();\n          }\n          break;\n        }\n        case 32: { // SPACE\n          if (mode === MODE_SPACE) {\n            if (event.altKey) {\n              if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n              if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n              mode = MODE_CENTER;\n            } else {\n              if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n              if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n              mode = MODE_HANDLE;\n            }\n            overlay.attr(\"cursor\", cursors[type]);\n            move();\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n  }\n\n  function touchmoved(event) {\n    emitter(this, arguments).moved(event);\n  }\n\n  function touchended(event) {\n    emitter(this, arguments).ended(event);\n  }\n\n  function initialize() {\n    var state = this.__brush || {selection: null};\n    state.extent = number2(extent.apply(this, arguments));\n    state.dim = dim;\n    return state;\n  }\n\n  brush.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n  };\n\n  brush.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n  };\n\n  brush.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n  };\n\n  brush.handleSize = function(_) {\n    return arguments.length ? (handleSize = +_, brush) : handleSize;\n  };\n\n  brush.keyModifiers = function(_) {\n    return arguments.length ? (keys = !!_, brush) : keys;\n  };\n\n  brush.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? brush : value;\n  };\n\n  return brush;\n}\n","var e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n  var reverse,\n      i = -1,\n      n,\n      ticks,\n      step;\n\n  stop = +stop, start = +start, count = +count;\n  if (start === stop && count > 0) return [start];\n  if (reverse = stop < start) n = start, start = stop, stop = n;\n  if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n  if (step > 0) {\n    let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n    if (r0 * step < start) ++r0;\n    if (r1 * step > stop) --r1;\n    ticks = new Array(n = r1 - r0 + 1);\n    while (++i < n) ticks[i] = (r0 + i) * step;\n  } else {\n    step = -step;\n    let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n    if (r0 / step < start) ++r0;\n    if (r1 / step > stop) --r1;\n    ticks = new Array(n = r1 - r0 + 1);\n    while (++i < n) ticks[i] = (r0 + i) / step;\n  }\n\n  if (reverse) ticks.reverse();\n\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  var step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log(step) / Math.LN10),\n      error = step / Math.pow(10, power);\n  return power >= 0\n      ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n      : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n  var step0 = Math.abs(stop - start) / Math.max(0, count),\n      step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n      error = step0 / step1;\n  if (error >= e10) step1 *= 10;\n  else if (error >= e5) step1 *= 5;\n  else if (error >= e2) step1 *= 2;\n  return stop < start ? -step1 : step1;\n}\n","export default function(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(f) {\n  let delta = f;\n  let compare = f;\n\n  if (f.length === 1) {\n    delta = (d, x) => f(d) - x;\n    compare = ascendingComparator(f);\n  }\n\n  function left(a, x, lo, hi) {\n    if (lo == null) lo = 0;\n    if (hi == null) hi = a.length;\n    while (lo < hi) {\n      const mid = (lo + hi) >>> 1;\n      if (compare(a[mid], x) < 0) lo = mid + 1;\n      else hi = mid;\n    }\n    return lo;\n  }\n\n  function right(a, x, lo, hi) {\n    if (lo == null) lo = 0;\n    if (hi == null) hi = a.length;\n    while (lo < hi) {\n      const mid = (lo + hi) >>> 1;\n      if (compare(a[mid], x) > 0) hi = mid;\n      else lo = mid + 1;\n    }\n    return lo;\n  }\n\n  function center(a, x, lo, hi) {\n    if (lo == null) lo = 0;\n    if (hi == null) hi = a.length;\n    const i = left(a, x, lo, hi - 1);\n    return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n  }\n\n  return {left, center, right};\n}\n\nfunction ascendingComparator(f) {\n  return (d, x) => ascending(f(d), x);\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function(x) {\n  return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  }\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n  var nb = b ? b.length : 0,\n      na = a ? Math.min(nb, a.length) : 0,\n      x = new Array(na),\n      c = new Array(nb),\n      i;\n\n  for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n  for (; i < nb; ++i) c[i] = b[i];\n\n  return function(t) {\n    for (i = 0; i < na; ++i) c[i] = x[i](t);\n    return c;\n  };\n}\n","export default function(a, b) {\n  var d = new Date;\n  return a = +a, b = +b, function(t) {\n    return d.setTime(a * (1 - t) + b * t), d;\n  };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n  var i = {},\n      c = {},\n      k;\n\n  if (a === null || typeof a !== \"object\") a = {};\n  if (b === null || typeof b !== \"object\") b = {};\n\n  for (k in b) {\n    if (k in a) {\n      i[k] = value(a[k], b[k]);\n    } else {\n      c[k] = b[k];\n    }\n  }\n\n  return function(t) {\n    for (k in i) c[k] = i[k](t);\n    return c;\n  };\n}\n","export default function(a, b) {\n  if (!b) b = [];\n  var n = a ? Math.min(b.length, a.length) : 0,\n      c = b.slice(),\n      i;\n  return function(t) {\n    for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n    return c;\n  };\n}\n\nexport function isNumberArray(x) {\n  return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  var t = typeof b, c;\n  return b == null || t === \"boolean\" ? constant(b)\n      : (t === \"number\" ? number\n      : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n      : b instanceof color ? rgb\n      : b instanceof Date ? date\n      : isNumberArray(b) ? numberArray\n      : Array.isArray(b) ? genericArray\n      : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n      : number)(a, b);\n}\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return Math.round(a * (1 - t) + b * t);\n  };\n}\n","export default function number(x) {\n  return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n  return x;\n}\n\nfunction normalize(a, b) {\n  return (b -= (a = +a))\n      ? function(x) { return (x - a) / b; }\n      : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n  var t;\n  if (a > b) t = a, a = b, b = t;\n  return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n  var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n  if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n  else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n  return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n  var j = Math.min(domain.length, range.length) - 1,\n      d = new Array(j),\n      r = new Array(j),\n      i = -1;\n\n  // Reverse descending domains.\n  if (domain[j] < domain[0]) {\n    domain = domain.slice().reverse();\n    range = range.slice().reverse();\n  }\n\n  while (++i < j) {\n    d[i] = normalize(domain[i], domain[i + 1]);\n    r[i] = interpolate(range[i], range[i + 1]);\n  }\n\n  return function(x) {\n    var i = bisect(domain, x, 1, j) - 1;\n    return r[i](d[i](x));\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .range(source.range())\n      .interpolate(source.interpolate())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport function transformer() {\n  var domain = unit,\n      range = unit,\n      interpolate = interpolateValue,\n      transform,\n      untransform,\n      unknown,\n      clamp = identity,\n      piecewise,\n      output,\n      input;\n\n  function rescale() {\n    var n = Math.min(domain.length, range.length);\n    if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n    piecewise = n > 2 ? polymap : bimap;\n    output = input = null;\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n  }\n\n  scale.invert = function(y) {\n    return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range = Array.from(_), interpolate = interpolateRound, rescale();\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n  };\n\n  scale.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, rescale()) : interpolate;\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t, u) {\n    transform = t, untransform = u;\n    return rescale();\n  };\n}\n\nexport default function continuous() {\n  return transformer()(identity, identity);\n}\n","export default function constants(x) {\n  return function() {\n    return x;\n  };\n}\n","export function initRange(domain, range) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: this.range(domain); break;\n    default: this.range(range).domain(domain); break;\n  }\n  return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: {\n      if (typeof domain === \"function\") this.interpolator(domain);\n      else this.range(domain);\n      break;\n    }\n    default: {\n      this.domain(domain);\n      if (typeof interpolator === \"function\") this.interpolator(interpolator);\n      else this.range(interpolator);\n      break;\n    }\n  }\n  return this;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","export default function(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n  return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n  \"%\": (x, p) => (x * 100).toFixed(p),\n  \"b\": (x) => Math.round(x).toString(2),\n  \"c\": (x) => x + \"\",\n  \"d\": formatDecimal,\n  \"e\": (x, p) => x.toExponential(p),\n  \"f\": (x, p) => x.toFixed(p),\n  \"g\": (x, p) => x.toPrecision(p),\n  \"o\": (x) => Math.round(x).toString(8),\n  \"p\": (x, p) => formatRounded(x * 100, p),\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n  \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n  return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer “value” part that can be\n        // grouped, and fractional or exponential “suffix” part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n","export default function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n","export default function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n  var step = tickStep(start, stop, count),\n      precision;\n  specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n  switch (specifier.type) {\n    case \"s\": {\n      var value = Math.max(Math.abs(start), Math.abs(stop));\n      if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n      return formatPrefix(specifier, value);\n    }\n    case \"\":\n    case \"e\":\n    case \"g\":\n    case \"p\":\n    case \"r\": {\n      if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n      break;\n    }\n    case \"f\":\n    case \"%\": {\n      if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n      break;\n    }\n  }\n  return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n  return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n  var domain = scale.domain;\n\n  scale.ticks = function(count) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    var d = domain();\n    return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n  };\n\n  scale.nice = function(count) {\n    if (count == null) count = 10;\n\n    var d = domain();\n    var i0 = 0;\n    var i1 = d.length - 1;\n    var start = d[i0];\n    var stop = d[i1];\n    var prestep;\n    var step;\n    var maxIter = 10;\n\n    if (stop < start) {\n      step = start, start = stop, stop = step;\n      step = i0, i0 = i1, i1 = step;\n    }\n    \n    while (maxIter-- > 0) {\n      step = tickIncrement(start, stop, count);\n      if (step === prestep) {\n        d[i0] = start\n        d[i1] = stop\n        return domain(d);\n      } else if (step > 0) {\n        start = Math.floor(start / step) * step;\n        stop = Math.ceil(stop / step) * step;\n      } else if (step < 0) {\n        start = Math.ceil(start * step) / step;\n        stop = Math.floor(stop * step) / step;\n      } else {\n        break;\n      }\n      prestep = step;\n    }\n\n    return scale;\n  };\n\n  return scale;\n}\n\nexport default function linear() {\n  var scale = continuous();\n\n  scale.copy = function() {\n    return copy(scale, linear());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return linearish(scale);\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","var t0 = new Date,\n    t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = function(date) {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = function(date) {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = function(date) {\n    var d0 = interval(date),\n        d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = function(date, step) {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = function(start, stop, step) {\n    var range = [], previous;\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = function(test) {\n    return newInterval(function(date) {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, function(date, step) {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = function(start, end) {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = function(step) {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? function(d) { return field(d) % step === 0; }\n              : function(d) { return interval.count(0, d) % step === 0; });\n    };\n  }\n\n  return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n  // noop\n}, function(date, step) {\n  date.setTime(+date + step);\n}, function(start, end) {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return interval(function(date) {\n    date.setTime(Math.floor(date / k) * k);\n  }, function(date, step) {\n    date.setTime(+date + step * k);\n  }, function(start, end) {\n    return (end - start) / k;\n  });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n  date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n  date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n  return (end - start) / durationSecond;\n}, function(date) {\n  return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n  date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n  return (end - start) / durationMinute;\n}, function(date) {\n  return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n  date.setTime(+date + step * durationHour);\n}, function(start, end) {\n  return (end - start) / durationHour;\n}, function(date) {\n  return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n  date => date.setHours(0, 0, 0, 0),\n  (date, step) => date.setDate(date.getDate() + step),\n  (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n  date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n  return interval(function(date) {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setDate(date.getDate() + step * 7);\n  }, function(start, end) {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n  });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n  return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n  return end.getFullYear() - start.getFullYear();\n}, function(date) {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n  date.setUTCSeconds(0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n  return (end - start) / durationMinute;\n}, function(date) {\n  return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n  date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * durationHour);\n}, function(start, end) {\n  return (end - start) / durationHour;\n}, function(date) {\n  return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n  return (end - start) / durationDay;\n}, function(date) {\n  return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n  return interval(function(date) {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, function(start, end) {\n    return (end - start) / durationWeek;\n  });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n  return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport millisecond from \"./millisecond.js\";\nimport second from \"./second.js\";\nimport minute from \"./minute.js\";\nimport hour from \"./hour.js\";\nimport day from \"./day.js\";\nimport {sunday as week} from \"./week.js\";\nimport month from \"./month.js\";\nimport year from \"./year.js\";\nimport utcMinute from \"./utcMinute.js\";\nimport utcHour from \"./utcHour.js\";\nimport utcDay from \"./utcDay.js\";\nimport {utcSunday as utcWeek} from \"./utcWeek.js\";\nimport utcMonth from \"./utcMonth.js\";\nimport utcYear from \"./utcYear.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n  const tickIntervals = [\n    [second,  1,      durationSecond],\n    [second,  5,  5 * durationSecond],\n    [second, 15, 15 * durationSecond],\n    [second, 30, 30 * durationSecond],\n    [minute,  1,      durationMinute],\n    [minute,  5,  5 * durationMinute],\n    [minute, 15, 15 * durationMinute],\n    [minute, 30, 30 * durationMinute],\n    [  hour,  1,      durationHour  ],\n    [  hour,  3,  3 * durationHour  ],\n    [  hour,  6,  6 * durationHour  ],\n    [  hour, 12, 12 * durationHour  ],\n    [   day,  1,      durationDay   ],\n    [   day,  2,  2 * durationDay   ],\n    [  week,  1,      durationWeek  ],\n    [ month,  1,      durationMonth ],\n    [ month,  3,  3 * durationMonth ],\n    [  year,  1,      durationYear  ]\n  ];\n\n  function ticks(start, stop, count) {\n    const reverse = stop < start;\n    if (reverse) [start, stop] = [stop, start];\n    const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n    const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n    return reverse ? ticks.reverse() : ticks;\n  }\n\n  function tickInterval(start, stop, count) {\n    const target = Math.abs(stop - start) / count;\n    const i = bisector(([,, step]) => step).right(tickIntervals, target);\n    if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n    if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n    const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n    return t.every(step);\n  }\n\n  return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(year, month, week, day, hour, minute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n  timeDay,\n  timeSunday,\n  timeMonday,\n  timeThursday,\n  timeYear,\n  utcDay,\n  utcSunday,\n  utcMonday,\n  utcThursday,\n  utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"g\": formatYearISO,\n    \"G\": formatFullYearISO,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"q\": formatQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"g\": formatUTCYearISO,\n    \"G\": formatUTCFullYearISO,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"q\": formatUTCQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"g\": parseYear,\n    \"G\": parseFullYear,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"q\": parseQuarter,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i < n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, Z) {\n    return function(string) {\n      var d = newDate(1900, undefined, 1),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n      if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n      // If this is utcParse, never use the local timezone.\n      if (Z && !(\"Z\" in d)) d.Z = 0;\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // If the month was not specified, inherit from the quarter.\n      if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V < 1 || d.V > 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n          week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n          week = utcDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n          week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n          week = timeDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return localDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatQuarter(d) {\n    return 1 + ~~(d.getMonth() / 3);\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  function formatUTCQuarter(d) {\n    return 1 + ~~(d.getUTCMonth() / 3);\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", false);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier += \"\", true);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n    numberRe = /^\\s*\\d+/, // note: ignores next directive\n    percentRe = /^%/,\n    requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value < 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day = d.getDay();\n  return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n  var day = d.getDay();\n  return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  d = dISO(d);\n  return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n  d = dISO(d);\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n  var day = d.getDay();\n  d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n  var day = d.getUTCDay();\n  return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  d = UTCdISO(d);\n  return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\n  periods: [\"AM\", \"PM\"],\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  timeFormat = locale.format;\n  timeParse = locale.parse;\n  utcFormat = locale.utcFormat;\n  utcParse = locale.utcParse;\n  return locale;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n  return new Date(t);\n}\n\nfunction number(t) {\n  return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n  var scale = continuous(),\n      invert = scale.invert,\n      domain = scale.domain;\n\n  var formatMillisecond = format(\".%L\"),\n      formatSecond = format(\":%S\"),\n      formatMinute = format(\"%I:%M\"),\n      formatHour = format(\"%I %p\"),\n      formatDay = format(\"%a %d\"),\n      formatWeek = format(\"%b %d\"),\n      formatMonth = format(\"%B\"),\n      formatYear = format(\"%Y\");\n\n  function tickFormat(date) {\n    return (second(date) < date ? formatMillisecond\n        : minute(date) < date ? formatSecond\n        : hour(date) < date ? formatMinute\n        : day(date) < date ? formatHour\n        : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n        : year(date) < date ? formatMonth\n        : formatYear)(date);\n  }\n\n  scale.invert = function(y) {\n    return new Date(invert(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n  };\n\n  scale.ticks = function(interval) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    return specifier == null ? tickFormat : format(specifier);\n  };\n\n  scale.nice = function(interval) {\n    var d = domain();\n    if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n    return interval ? domain(nice(d, interval)) : scale;\n  };\n\n  scale.copy = function() {\n    return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n  };\n\n  return scale;\n}\n\nexport default function time() {\n  return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","export default function nice(domain, interval) {\n  domain = domain.slice();\n\n  var i0 = 0,\n      i1 = domain.length - 1,\n      x0 = domain[i0],\n      x1 = domain[i1],\n      t;\n\n  if (x1 < x0) {\n    t = i0, i0 = i1, i1 = t;\n    t = x0, x0 = x1, x1 = t;\n  }\n\n  domain[i0] = interval.floor(x0);\n  domain[i1] = interval.ceil(x1);\n  return domain;\n}\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n      : new Selection([[selector]], root);\n}\n","const pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction Path() {\n  this._x0 = this._y0 = // start of current subpath\n  this._x1 = this._y1 = null; // end of current subpath\n  this._ = \"\";\n}\n\nfunction path() {\n  return new Path;\n}\n\nPath.prototype = path.prototype = {\n  constructor: Path,\n  moveTo: function(x, y) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n  },\n  closePath: function() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._ += \"Z\";\n    }\n  },\n  lineTo: function(x, y) {\n    this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  quadraticCurveTo: function(x1, y1, x, y) {\n    this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n    this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  arcTo: function(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n    var x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 > epsilon));\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n      this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      var x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) > epsilon) {\n        this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n      }\n\n      this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n    }\n  },\n  arc: function(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n    var dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._ += \"M\" + x0 + \",\" + y0;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n      this._ += \"L\" + x0 + \",\" + y0;\n    }\n\n    // Is this arc empty? We’re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da < 0) da = da % tau + tau;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da > tauEpsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da > epsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n    }\n  },\n  rect: function(x, y, w, h) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n  },\n  toString: function() {\n    return this._;\n  }\n};\n\nexport default path;\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n  return typeof x === \"object\" && \"length\" in x\n    ? x // Array, TypedArray, NodeList, array-like\n    : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export default function(x) {\n  return function constant() {\n    return x;\n  };\n}\n","function Linear(context) {\n  this._context = context;\n}\n\nLinear.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // proceed\n      default: this._context.lineTo(x, y); break;\n    }\n  }\n};\n\nexport default function(context) {\n  return new Linear(context);\n}\n","export function x(p) {\n  return p[0];\n}\n\nexport function y(p) {\n  return p[1];\n}\n","import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n  var defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null;\n\n  x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n  y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n  function line(data) {\n    var i,\n        n = (data = array(data)).length,\n        d,\n        defined0 = false,\n        buffer;\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) output.lineStart();\n        else output.lineEnd();\n      }\n      if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  line.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n  };\n\n  line.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n  };\n\n  line.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n  };\n\n  line.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n  };\n\n  line.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n  };\n\n  return line;\n}\n","function Step(context, t) {\n  this._context = context;\n  this._t = t;\n}\n\nStep.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = this._y = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // proceed\n      default: {\n        if (this._t <= 0) {\n          this._context.lineTo(this._x, y);\n          this._context.lineTo(x, y);\n        } else {\n          var x1 = this._x * (1 - this._t) + x * this._t;\n          this._context.lineTo(x1, this._y);\n          this._context.lineTo(x1, y);\n        }\n        break;\n      }\n    }\n    this._x = x, this._y = y;\n  }\n};\n\nexport default function(context) {\n  return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n  return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n  return new Step(context, 1);\n}\n","export function Transform(k, x, y) {\n  this.k = k;\n  this.x = x;\n  this.y = y;\n}\n\nTransform.prototype = {\n  constructor: Transform,\n  scale: function(k) {\n    return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n  },\n  translate: function(x, y) {\n    return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n  },\n  apply: function(point) {\n    return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n  },\n  applyX: function(x) {\n    return x * this.k + this.x;\n  },\n  applyY: function(y) {\n    return y * this.k + this.y;\n  },\n  invert: function(location) {\n    return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n  },\n  invertX: function(x) {\n    return (x - this.x) / this.k;\n  },\n  invertY: function(y) {\n    return (y - this.y) / this.k;\n  },\n  rescaleX: function(x) {\n    return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n  },\n  rescaleY: function(y) {\n    return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n  },\n  toString: function() {\n    return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n  }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n  while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n  return node.__zoom;\n}\n"],"names":["slice","Array","prototype","x","right","bottom","left","epsilon","translateX","translateY","y","number","scale","d","center","offset","Math","max","bandwidth","round","entering","this","__axis","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","window","devicePixelRatio","k","transform","context","values","ticks","apply","domain","format","spacing","range","range0","range1","length","position","copy","selection","path","selectAll","data","tick","order","tickExit","exit","tickEnter","enter","append","attr","line","select","text","merge","insert","transition","isFinite","getAttribute","p","parentNode","remove","filter","each","_","arguments","call","tickSize","axisBottom","axisLeft","none","selector","querySelector","from","empty","querySelectorAll","matches","childMatcher","node","find","childFirst","firstElementChild","children","update","EnterNode","parent","datum","ownerDocument","namespaceURI","_next","_parent","__data__","bindIndex","group","i","groupLength","dataLength","bindKey","key","keyValue","nodeByKeyValue","Map","keyValues","has","set","get","delete","ascending","a","b","NaN","constructor","appendChild","child","insertBefore","next","xhtml","svg","xlink","xml","xmlns","name","prefix","indexOf","namespaces","hasOwnProperty","space","local","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","attrConstant","value","setAttribute","attrConstantNS","setAttributeNS","attrFunction","v","attrFunctionNS","defaultView","document","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","trim","split","classList","ClassList","_node","_names","classedAdd","names","list","n","add","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","creatorInherit","uri","documentElement","createElement","createElementNS","creatorFixed","namespace","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","onRemove","typename","on","__on","o","j","m","type","removeEventListener","listener","options","onAdd","event","contextListener","addEventListener","push","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","join","splice","contains","root","Selection","groups","parents","_groups","_parents","subgroups","subnode","subgroup","array","arrayAll","selectorAll","selectChild","match","childFind","selectChildren","childrenFilter","matcher","bind","enterGroup","updateGroup","previous","i0","i1","_enter","_exit","map","sparse","onenter","onupdate","onexit","Error","groups0","groups1","m0","m1","min","merges","group0","group1","compareDocumentPosition","sort","compare","compareNode","sortgroups","sortgroup","callback","nodes","size","getAttributeNS","property","classed","html","create","creator","before","deep","t","typenames","parseTypenames","dispatch","Symbol","iterator","noop","test","Dispatch","c","concat","types","T","that","args","taskHead","taskTail","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","requestAnimationFrame","f","setTimeout","clearNow","Timer","_call","_time","timer","delay","time","restart","wake","e","timerFlush","t0","t2","t1","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","elapsed","stop","TypeError","emptyOn","emptyTween","CREATED","STARTING","STARTED","RUNNING","ENDING","ENDED","id","index","timing","schedules","__transition","self","tween","schedule","state","start","duration","ease","init","svgNode","degrees","PI","rotate","skewX","scaleX","scaleY","sqrt","atan2","atan","interpolateTransform","parse","pxComma","pxParen","degParen","pop","s","q","xa","ya","xb","yb","translate","interpolateTransformCss","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","interpolateTransformSvg","baseVal","consolidate","matrix","tweenRemove","tween0","tween1","tweenFunction","tweenValue","_id","factory","extend","definition","Object","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","l","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","r","g","opacity","rgb_formatHex","hex","rgb_formatRgb","isNaN","toString","h","Hsl","hslConvert","hsl2rgb","m2","basis","v0","v1","v2","v3","t3","channels","assign","displayable","formatHsl","pow","linear","gamma","nogamma","exponential","rgbGamma","end","rgbSpline","spline","colors","floor","reA","reB","source","am","bm","bs","bi","lastIndex","one","zero","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTweenNS","attrInterpolateNS","_value","attrTween","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","_name","newId","selection_prototype","inherit","id0","id1","on0","on1","sit","every","onFunction","styleTween","styleNull","listener0","undefined","styleMaybeRemove","styleInterpolate","textTween","textInterpolate","removeFunction","easeConstant","easeVarying","Promise","resolve","reject","cancel","interrupt","defaultTiming","active","abs","number1","number2","e10","e5","e2","tickIncrement","count","step","power","log","LN10","error","tickStep","step0","step1","delta","lo","hi","mid","ascendingComparator","ascendingBisect","bisector","bisectRight","genericArray","nb","na","setTime","date","ArrayBuffer","isView","DataView","isArray","valueOf","object","unit","normalize","bimap","d0","d1","r0","r1","polymap","reverse","bisect","target","clamp","unknown","transformer","untransform","piecewise","output","input","rescale","invert","rangeRound","u","continuous","initRange","prefixExponent","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","symbol","width","comma","precision","formatDecimalParts","toExponential","coefficient","exponent","toFixed","toLocaleString","replace","toPrecision","formatRounded","toUpperCase","formatPrefix","prefixes","locale","grouping","thousands","Number","substring","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","String","percent","minus","nan","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","formatTrim","charCodeAt","padding","precisionPrefix","precisionRound","precisionFixed","linearish","nice","prestep","maxIter","ceil","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","newInterval","floori","offseti","field","millisecond","second","getMilliseconds","getUTCSeconds","minute","getSeconds","getMinutes","hour","getHours","day","setHours","setDate","getDate","getTimezoneOffset","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","month","setMonth","getMonth","getFullYear","year","setFullYear","utcMinute","setUTCSeconds","getUTCMinutes","utcHour","setUTCMinutes","getUTCHours","utcDay","setUTCHours","setUTCDate","getUTCDate","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","utcYear","setUTCFullYear","ticker","week","tickIntervals","tickInterval","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","H","M","S","L","utcDate","UTC","newDate","timeFormat","pads","numberRe","percentRe","requoteRe","pad","requote","formatRe","formatLookup","parseWeekdayNumberSunday","w","parseWeekdayNumberMonday","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","Z","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","Q","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","dISO","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatYearISO","formatFullYear","formatFullYearISO","formatZone","z","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","x0","x1","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","utcFormats","parses","parseSpecifier","charAt","newParse","X","utcFormat","utcParse","formatLocale","pi","tau","tauEpsilon","Path","_x0","_y0","_x1","_y1","moveTo","closePath","lineTo","quadraticCurveTo","y1","bezierCurveTo","x2","y2","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","dx","cos","dy","sin","cw","da","rect","Linear","_context","defined","curve","buffer","defined0","lineStart","lineEnd","point","Step","_t","stepAfter","areaStart","_line","areaEnd","_point","_x","_y","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY"],"sourceRoot":""}