{"version":3,"file":"js/350-06ebbe8c80e7418b4b68.js","mappings":"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","sources":["webpack://app/./node_modules/d3-array/src/bisect.js","webpack://app/./node_modules/d3-array/src/ticks.js","webpack://app/./node_modules/d3-selection/src/touch.js","webpack://app/./node_modules/d3-drag/src/noevent.js","webpack://app/./node_modules/d3-drag/src/constant.js","webpack://app/./node_modules/d3-drag/src/event.js","webpack://app/./node_modules/d3-drag/src/drag.js","webpack://app/./node_modules/d3-drag/src/nodrag.js","webpack://app/./node_modules/d3-fetch/src/json.js","webpack://app/./node_modules/d3-force/src/center.js","webpack://app/./node_modules/d3-force/src/collide.js","webpack://app/./node_modules/d3-force/src/constant.js","webpack://app/./node_modules/d3-force/src/jiggle.js","webpack://app/./node_modules/d3-force/src/x.js","webpack://app/./node_modules/d3-force/src/y.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack://app/./node_modules/d3-quadtree/src/add.js","webpack://app/./node_modules/d3-quadtree/src/quad.js","webpack://app/./node_modules/d3-quadtree/src/x.js","webpack://app/./node_modules/d3-quadtree/src/y.js","webpack://app/./node_modules/d3-quadtree/src/quadtree.js","webpack://app/./node_modules/d3-quadtree/src/cover.js","webpack://app/./node_modules/d3-quadtree/src/data.js","webpack://app/./node_modules/d3-quadtree/src/extent.js","webpack://app/./node_modules/d3-quadtree/src/find.js","webpack://app/./node_modules/d3-quadtree/src/remove.js","webpack://app/./node_modules/d3-quadtree/src/root.js","webpack://app/./node_modules/d3-quadtree/src/size.js","webpack://app/./node_modules/d3-quadtree/src/visit.js","webpack://app/./node_modules/d3-quadtree/src/visitAfter.js","webpack://app/./node_modules/d3-scale/src/array.js","webpack://app/./node_modules/d3-selection/src/selectAll.js","webpack://app/./node_modules/d3-selection/src/selection/on.js","webpack://app/./node_modules/d3-axis/src/array.js","webpack://app/./node_modules/d3-force/src/link.js","webpack://app/./node_modules/d3-force/src/simulation.js","webpack://app/./node_modules/d3-force/src/manyBody.js"],"sourcesContent":["import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\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 start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - 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","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n this.target = target;\n this.type = type;\n this.subject = subject;\n this.identifier = id;\n this.active = active;\n this.x = x;\n this.y = y;\n this.dx = dx;\n this.dy = dy;\n this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n if (!gesture) return;\n select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n nodrag(event.view);\n nopropagation();\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\");\n }\n\n function mousemoved() {\n noevent();\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\");\n }\n\n function mouseupped() {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent();\n gestures.mouse(\"end\");\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.changedTouches,\n c = container.apply(this, arguments),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n nopropagation();\n gesture(\"start\");\n }\n }\n }\n\n function touchmoved() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent();\n gesture(\"drag\");\n }\n }\n }\n\n function touchended() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation();\n gesture(\"end\");\n }\n }\n }\n\n function beforestart(id, container, point, that, args) {\n var p = point(container, id), s, dx, dy,\n sublisteners = listeners.copy();\n\n if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n if ((event.subject = s = subject.apply(that, args)) == null) return false;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return true;\n })) return;\n\n return function gesture(type) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[id] = gesture, n = active++; break;\n case \"end\": delete gestures[id], --active; // nobreak\n case \"drag\": p = point(container, id), n = active; break;\n }\n customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","function responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n if (response.status === 204 || response.status === 205) return;\n return response.json();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseJson);\n}\n","export default function(x, y) {\n var nodes;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function() {\n return (Math.random() - 0.5) * 1e-6;\n}\n","import constant from \"./constant\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\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.capture);\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, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\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.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\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 if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","export var slice = Array.prototype.slice;\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {map} from \"d3-collection\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"missing: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle();\n y = target.y + target.vy - source.y - source.vy || jiggle();\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = map(nodes, id),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\nimport {x, y} from \"./simulation\";\n\nexport default function() {\n var nodes,\n node,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n"],"names":["ascendingBisect","right","left","Math","sqrt","node","touches","identifier","arguments","length","sourceEvent","changedTouches","touch","i","n","point","nopropagation","stopImmediatePropagation","preventDefault","x","DragEvent","target","type","subject","id","active","y","dx","dy","dispatch","this","_","defaultFilter","ctrlKey","button","defaultContainer","parentNode","defaultSubject","d","defaultTouchable","navigator","maxTouchPoints","mousedownx","mousedowny","mousemoving","touchending","filter","container","touchable","gestures","listeners","clickDistance2","drag","selection","on","mousedowned","touchstarted","touchmoved","touchended","style","apply","view","root","gesture","beforestart","mouse","mousemoved","mouseupped","document","documentElement","noevent","__noselect","MozUserSelect","clientX","clientY","noclick","setTimeout","c","clearTimeout","that","args","s","p","sublisteners","copy","p0","constant","value","clickDistance","prototype","responseJson","response","ok","Error","status","statusText","json","input","init","fetch","then","nodes","force","sx","sy","initialize","vx","vy","radius","radii","strength","iterations","tree","xi","yi","ri","ri2","k","visitAfter","prepare","index","visit","quad","x0","y0","x1","y1","data","rj","r","l","Array","random","strengths","xz","alpha","isNaN","yz","count","sum","children","hierarchy","child","childs","Node","valued","defaultChildren","pop","push","parent","depth","eachBefore","computeHeight","copyData","height","constructor","eachAfter","each","callback","current","next","reverse","sort","compare","path","end","start","ancestor","a","b","aNodes","ancestors","bNodes","leastCommonAncestor","splice","descendants","leaves","links","source","xm","ym","xp","yp","bottom","j","_root","leaf","_x0","_y0","_x1","_y1","_x","call","_y","defaultX","defaultY","quadtree","Quadtree","NaN","addAll","undefined","leaf_copy","treeProto","add","cover","Infinity","floor","z","extent","find","x2","y2","q","x3","y3","quads","d2","remove","retainer","previous","removeAll","size","array","map","slice","selector","querySelectorAll","filterEvents","event","mouseenter","mouseleave","filterContextListener","listener","group","contextListener","related","relatedTarget","compareDocumentPosition","event1","event0","__data__","onRemove","typename","__on","o","m","name","removeEventListener","capture","onAdd","wrap","hasOwnProperty","addEventListener","t","typenames","trim","split","indexOf","parseTypenames","customEvent","nodeById","nodeId","get","distances","bias","link","min","distance","jiggle","initializeStrength","initializeDistance","initialRadius","initialAngle","PI","simulation","alphaMin","alphaDecay","pow","alphaTarget","velocityDecay","forces","stepper","timer","step","tick","stop","fx","fy","initializeNodes","angle","cos","sin","initializeForce","restart","set","closest","distanceMin2","distanceMax2","theta2","accumulate","weight","abs","w","distanceMin","distanceMax","theta"],"sourceRoot":""}