modules/enterprise/gui/coregui/src/main/webapp/js/d3.v3.js | 2541 +++++-----
modules/enterprise/gui/coregui/src/main/webapp/js/d3.v3.min.js | 10
2 files changed, 1367 insertions(+), 1184 deletions(-)
New commits:
commit c6efba3df6ab86408f726f86e4e40d4972ebd29c
Author: Mike Thompson <mithomps(a)redhat.com>
Date: Thu Jun 27 07:48:46 2013 -0700
Update d3.js libraries from 3.1.10 to 3.2.2.
diff --git a/modules/enterprise/gui/coregui/src/main/webapp/js/d3.v3.js
b/modules/enterprise/gui/coregui/src/main/webapp/js/d3.v3.js
old mode 100755
new mode 100644
index 94cb5d4..61e11cc
--- a/modules/enterprise/gui/coregui/src/main/webapp/js/d3.v3.js
+++ b/modules/enterprise/gui/coregui/src/main/webapp/js/d3.v3.js
@@ -1,11 +1,11 @@
d3 = function() {
var d3 = {
- version: "3.1.10"
+ version: "3.2.2"
};
if (!Date.now) Date.now = function() {
return +new Date();
};
- var d3_document = document, d3_window = window;
+ var d3_document = document, d3_documentElement = d3_document.documentElement, d3_window
= window;
try {
d3_document.createElement("div").style.setProperty("opacity", 0,
"");
} catch (error) {
@@ -23,10 +23,10 @@ d3 = function() {
d3.min = function(array, f) {
var i = -1, n = array.length, a, b;
if (arguments.length === 1) {
- while (++i < n && ((a = array[i]) == null || a != a)) a = undefined;
+ while (++i < n && !((a = array[i]) != null && a <= a)) a =
undefined;
while (++i < n) if ((b = array[i]) != null && a > b) a = b;
} else {
- while (++i < n && ((a = f.call(array, array[i], i)) == null || a != a))
a = undefined;
+ while (++i < n && !((a = f.call(array, array[i], i)) != null &&
a <= a)) a = undefined;
while (++i < n) if ((b = f.call(array, array[i], i)) != null && a >
b) a = b;
}
return a;
@@ -34,10 +34,10 @@ d3 = function() {
d3.max = function(array, f) {
var i = -1, n = array.length, a, b;
if (arguments.length === 1) {
- while (++i < n && ((a = array[i]) == null || a != a)) a = undefined;
+ while (++i < n && !((a = array[i]) != null && a <= a)) a =
undefined;
while (++i < n) if ((b = array[i]) != null && b > a) a = b;
} else {
- while (++i < n && ((a = f.call(array, array[i], i)) == null || a != a))
a = undefined;
+ while (++i < n && !((a = f.call(array, array[i], i)) != null &&
a <= a)) a = undefined;
while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >
a) a = b;
}
return a;
@@ -45,13 +45,13 @@ d3 = function() {
d3.extent = function(array, f) {
var i = -1, n = array.length, a, b, c;
if (arguments.length === 1) {
- while (++i < n && ((a = c = array[i]) == null || a != a)) a = c =
undefined;
+ while (++i < n && !((a = c = array[i]) != null && a <= a)) a
= c = undefined;
while (++i < n) if ((b = array[i]) != null) {
if (a > b) a = b;
if (c < b) c = b;
}
} else {
- while (++i < n && ((a = c = f.call(array, array[i], i)) == null || a !=
a)) a = undefined;
+ while (++i < n && !((a = c = f.call(array, array[i], i)) != null
&& a <= a)) a = undefined;
while (++i < n) if ((b = f.call(array, array[i], i)) != null) {
if (a > b) a = b;
if (c < b) c = b;
@@ -357,6 +357,35 @@ d3 = function() {
return value === source ? target : value;
};
}
+ function d3_vendorSymbol(object, name) {
+ if (name in object) return name;
+ name = name.charAt(0).toUpperCase() + name.substring(1);
+ for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {
+ var prefixName = d3_vendorPrefixes[i] + name;
+ if (prefixName in object) return prefixName;
+ }
+ }
+ var d3_vendorPrefixes = [ "webkit", "ms", "moz",
"Moz", "o", "O" ];
+ var d3_array = d3_arraySlice;
+ function d3_arrayCopy(pseudoarray) {
+ var i = -1, n = pseudoarray.length, array = [];
+ while (++i < n) array.push(pseudoarray[i]);
+ return array;
+ }
+ function d3_arraySlice(pseudoarray) {
+ return Array.prototype.slice.call(pseudoarray);
+ }
+ try {
+ d3_array(d3_documentElement.childNodes)[0].nodeType;
+ } catch (e) {
+ d3_array = d3_arrayCopy;
+ }
+ var d3_arraySubclass = [].__proto__ ? function(array, prototype) {
+ array.__proto__ = prototype;
+ } : function(array, prototype) {
+ for (var property in prototype) array[property] = prototype[property];
+ };
+ function d3_noop() {}
d3.dispatch = function() {
var dispatch = new d3_dispatch(), i = -1, n = arguments.length;
while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
@@ -400,8 +429,7 @@ d3 = function() {
return event;
}
d3.event = null;
- function d3_eventCancel() {
- d3.event.stopPropagation();
+ function d3_eventPreventDefault() {
d3.event.preventDefault();
}
function d3_eventSource() {
@@ -409,16 +437,6 @@ d3 = function() {
while (s = e.sourceEvent) e = s;
return e;
}
- function d3_eventSuppress(target, type) {
- function off() {
- target.on(type, null);
- }
- target.on(type, function() {
- d3_eventCancel();
- off();
- }, true);
- setTimeout(off, 0);
- }
function d3_eventDispatch(target) {
var dispatch = new d3_dispatch(), i = 0, n = arguments.length;
while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
@@ -436,116 +454,10 @@ d3 = function() {
};
return dispatch;
}
- d3.mouse = function(container) {
- return d3_mousePoint(container, d3_eventSource());
- };
- var d3_mouse_bug44083 = /WebKit/.test(d3_window.navigator.userAgent) ? -1 : 0;
- function d3_mousePoint(container, e) {
- var svg = container.ownerSVGElement || container;
- if (svg.createSVGPoint) {
- var point = svg.createSVGPoint();
- if (d3_mouse_bug44083 < 0 && (d3_window.scrollX || d3_window.scrollY))
{
- svg =
d3.select(d3_document.body).append("svg").style("position",
"absolute").style("top", 0).style("left", 0);
- var ctm = svg[0][0].getScreenCTM();
- d3_mouse_bug44083 = !(ctm.f || ctm.e);
- svg.remove();
- }
- if (d3_mouse_bug44083) {
- point.x = e.pageX;
- point.y = e.pageY;
- } else {
- point.x = e.clientX;
- point.y = e.clientY;
- }
- point = point.matrixTransform(container.getScreenCTM().inverse());
- return [ point.x, point.y ];
- }
- var rect = container.getBoundingClientRect();
- return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top -
container.clientTop ];
- }
- var d3_array = d3_arraySlice;
- function d3_arrayCopy(pseudoarray) {
- var i = -1, n = pseudoarray.length, array = [];
- while (++i < n) array.push(pseudoarray[i]);
- return array;
- }
- function d3_arraySlice(pseudoarray) {
- return Array.prototype.slice.call(pseudoarray);
- }
- try {
- d3_array(d3_document.documentElement.childNodes)[0].nodeType;
- } catch (e) {
- d3_array = d3_arrayCopy;
- }
- var d3_arraySubclass = [].__proto__ ? function(array, prototype) {
- array.__proto__ = prototype;
- } : function(array, prototype) {
- for (var property in prototype) array[property] = prototype[property];
- };
- d3.touches = function(container, touches) {
- if (arguments.length < 2) touches = d3_eventSource().touches;
- return touches ? d3_array(touches).map(function(touch) {
- var point = d3_mousePoint(container, touch);
- point.identifier = touch.identifier;
- return point;
- }) : [];
- };
- d3.behavior.drag = function() {
- var event = d3_eventDispatch(drag, "drag", "dragstart",
"dragend"), origin = null;
- function drag() {
- this.on("mousedown.drag", mousedown).on("touchstart.drag",
mousedown);
- }
- function mousedown() {
- var target = this, event_ = event.of(target, arguments), eventTarget =
d3.event.target, touchId = d3.event.touches ? d3.event.changedTouches[0].identifier :
null, offset, origin_ = point(), moved = 0;
- var w = d3.select(d3_window).on(touchId != null ? "touchmove.drag-" +
touchId : "mousemove.drag", dragmove).on(touchId != null ?
"touchend.drag-" + touchId : "mouseup.drag", dragend, true);
- if (origin) {
- offset = origin.apply(target, arguments);
- offset = [ offset.x - origin_[0], offset.y - origin_[1] ];
- } else {
- offset = [ 0, 0 ];
- }
- if (touchId == null) d3_eventCancel();
- event_({
- type: "dragstart"
- });
- function point() {
- var p = target.parentNode;
- return touchId != null ? d3.touches(p).filter(function(p) {
- return p.identifier === touchId;
- })[0] : d3.mouse(p);
- }
- function dragmove() {
- if (!target.parentNode) return dragend();
- var p = point(), dx = p[0] - origin_[0], dy = p[1] - origin_[1];
- moved |= dx | dy;
- origin_ = p;
- d3_eventCancel();
- event_({
- type: "drag",
- x: p[0] + offset[0],
- y: p[1] + offset[1],
- dx: dx,
- dy: dy
- });
- }
- function dragend() {
- event_({
- type: "dragend"
- });
- if (moved) {
- d3_eventCancel();
- if (d3.event.target === eventTarget) d3_eventSuppress(w, "click");
- }
- w.on(touchId != null ? "touchmove.drag-" + touchId :
"mousemove.drag", null).on(touchId != null ? "touchend.drag-" +
touchId : "mouseup.drag", null);
- }
- }
- drag.origin = function(x) {
- if (!arguments.length) return origin;
- origin = x;
- return drag;
- };
- return d3.rebind(drag, event, "on");
+ d3.requote = function(s) {
+ return s.replace(d3_requote_re, "\\$&");
};
+ var d3_requote_re = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;
function d3_selection(groups) {
d3_arraySubclass(groups, d3_selectionPrototype);
return groups;
@@ -554,7 +466,7 @@ d3 = function() {
return n.querySelector(s);
}, d3_selectAll = function(s, n) {
return n.querySelectorAll(s);
- }, d3_selectRoot = d3_document.documentElement, d3_selectMatcher =
d3_selectRoot.matchesSelector || d3_selectRoot.webkitMatchesSelector ||
d3_selectRoot.mozMatchesSelector || d3_selectRoot.msMatchesSelector ||
d3_selectRoot.oMatchesSelector, d3_selectMatches = function(n, s) {
+ }, d3_selectMatcher = d3_documentElement[d3_vendorSymbol(d3_documentElement,
"matchesSelector")], d3_selectMatches = function(n, s) {
return d3_selectMatcher.call(n, s);
};
if (typeof Sizzle === "function") {
@@ -670,10 +582,6 @@ d3 = function() {
function d3_collapse(s) {
return s.trim().replace(/\s+/g, " ");
}
- d3.requote = function(s) {
- return s.replace(d3_requote_re, "\\$&");
- };
- var d3_requote_re = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;
d3_selectionPrototype.classed = function(name, value) {
if (arguments.length < 2) {
if (typeof name === "string") {
@@ -945,78 +853,6 @@ d3 = function() {
return !a - !b || comparator(a.__data__, b.__data__);
};
}
- function d3_noop() {}
- d3_selectionPrototype.on = function(type, listener, capture) {
- var n = arguments.length;
- if (n < 3) {
- if (typeof type !== "string") {
- if (n < 2) listener = false;
- for (capture in type) this.each(d3_selection_on(capture, type[capture],
listener));
- return this;
- }
- if (n < 2) return (n = this.node()["__on" + type]) && n._;
- capture = false;
- }
- return this.each(d3_selection_on(type, listener, capture));
- };
- function d3_selection_on(type, listener, capture) {
- var name = "__on" + type, i = type.indexOf("."), wrap =
d3_selection_onListener;
- if (i > 0) type = type.substring(0, i);
- var filter = d3_selection_onFilters.get(type);
- if (filter) type = filter, wrap = d3_selection_onFilter;
- function onRemove() {
- var l = this[name];
- if (l) {
- this.removeEventListener(type, l, l.$);
- delete this[name];
- }
- }
- function onAdd() {
- var l = wrap(listener, d3_array(arguments));
- onRemove.call(this);
- this.addEventListener(type, this[name] = l, l.$ = capture);
- l._ = listener;
- }
- function removeAll() {
- var re = new RegExp("^__on([^.]+)" + d3.requote(type) + "$"),
match;
- for (var name in this) {
- if (match = name.match(re)) {
- var l = this[name];
- this.removeEventListener(match[1], l, l.$);
- delete this[name];
- }
- }
- }
- return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;
- }
- var d3_selection_onFilters = d3.map({
- mouseenter: "mouseover",
- mouseleave: "mouseout"
- });
- d3_selection_onFilters.forEach(function(k) {
- if ("on" + k in d3_document) d3_selection_onFilters.remove(k);
- });
- function d3_selection_onListener(listener, argumentz) {
- return function(e) {
- var o = d3.event;
- d3.event = e;
- argumentz[0] = this.__data__;
- try {
- listener.apply(this, argumentz);
- } finally {
- d3.event = o;
- }
- };
- }
- function d3_selection_onFilter(listener, argumentz) {
- var l = d3_selection_onListener(listener, argumentz);
- return function(e) {
- var target = this, related = e.relatedTarget;
- if (!related || related !== target &&
!(related.compareDocumentPosition(target) & 8)) {
- l.call(target, e);
- }
- };
- }
d3_selectionPrototype.each = function(callback) {
return d3_selection_each(this, function(node, i, j) {
callback.call(node, node.__data__, i, j);
@@ -1047,6 +883,13 @@ d3 = function() {
}
return null;
};
+ d3_selectionPrototype.size = function() {
+ var n = 0;
+ this.each(function() {
+ ++n;
+ });
+ return n;
+ };
function d3_selection_enter(selection) {
d3_arraySubclass(selection, d3_selection_enterPrototype);
return selection;
@@ -1058,6 +901,8 @@ d3 = function() {
d3_selection_enterPrototype.insert = d3_selectionPrototype.insert;
d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;
d3_selection_enterPrototype.node = d3_selectionPrototype.node;
+ d3_selection_enterPrototype.call = d3_selectionPrototype.call;
+ d3_selection_enterPrototype.size = d3_selectionPrototype.size;
d3_selection_enterPrototype.select = function(selector) {
var subgroups = [], subgroup, subnode, upgroup, group, node;
for (var j = -1, m = this.length; ++j < m; ) {
@@ -1089,57 +934,240 @@ d3 = function() {
};
d3.select = function(node) {
var group = [ typeof node === "string" ? d3_select(node, d3_document) :
node ];
- group.parentNode = d3_selectRoot;
+ group.parentNode = d3_documentElement;
return d3_selection([ group ]);
};
d3.selectAll = function(nodes) {
var group = d3_array(typeof nodes === "string" ? d3_selectAll(nodes,
d3_document) : nodes);
- group.parentNode = d3_selectRoot;
+ group.parentNode = d3_documentElement;
return d3_selection([ group ]);
};
- var d3_selectionRoot = d3.select(d3_selectRoot);
- d3.behavior.zoom = function() {
- var translate = [ 0, 0 ], translate0, scale = 1, scale0, scaleExtent =
d3_behavior_zoomInfinity, event = d3_eventDispatch(zoom, "zoom"), x0, x1, y0,
y1, touchtime;
- function zoom() {
- this.on("mousedown.zoom", mousedown).on("mousemove.zoom",
mousemove).on(d3_behavior_zoomWheel + ".zoom",
mousewheel).on("dblclick.zoom", dblclick).on("touchstart.zoom",
touchstart).on("touchmove.zoom", touchmove).on("touchend.zoom",
touchstart);
- }
- zoom.translate = function(x) {
- if (!arguments.length) return translate;
- translate = x.map(Number);
- rescale();
- return zoom;
- };
- zoom.scale = function(x) {
- if (!arguments.length) return scale;
- scale = +x;
- rescale();
- return zoom;
- };
- zoom.scaleExtent = function(x) {
- if (!arguments.length) return scaleExtent;
- scaleExtent = x == null ? d3_behavior_zoomInfinity : x.map(Number);
- return zoom;
- };
- zoom.x = function(z) {
- if (!arguments.length) return x1;
- x1 = z;
- x0 = z.copy();
- translate = [ 0, 0 ];
- scale = 1;
- return zoom;
- };
- zoom.y = function(z) {
- if (!arguments.length) return y1;
- y1 = z;
- y0 = z.copy();
- translate = [ 0, 0 ];
- scale = 1;
- return zoom;
- };
- function location(p) {
- return [ (p[0] - translate[0]) / scale, (p[1] - translate[1]) / scale ];
+ var d3_selectionRoot = d3.select(d3_documentElement);
+ d3_selectionPrototype.on = function(type, listener, capture) {
+ var n = arguments.length;
+ if (n < 3) {
+ if (typeof type !== "string") {
+ if (n < 2) listener = false;
+ for (capture in type) this.each(d3_selection_on(capture, type[capture],
listener));
+ return this;
+ }
+ if (n < 2) return (n = this.node()["__on" + type]) && n._;
+ capture = false;
}
- function point(l) {
+ return this.each(d3_selection_on(type, listener, capture));
+ };
+ function d3_selection_on(type, listener, capture) {
+ var name = "__on" + type, i = type.indexOf("."), wrap =
d3_selection_onListener;
+ if (i > 0) type = type.substring(0, i);
+ var filter = d3_selection_onFilters.get(type);
+ if (filter) type = filter, wrap = d3_selection_onFilter;
+ function onRemove() {
+ var l = this[name];
+ if (l) {
+ this.removeEventListener(type, l, l.$);
+ delete this[name];
+ }
+ }
+ function onAdd() {
+ var l = wrap(listener, d3_array(arguments));
+ onRemove.call(this);
+ this.addEventListener(type, this[name] = l, l.$ = capture);
+ l._ = listener;
+ }
+ function removeAll() {
+ var re = new RegExp("^__on([^.]+)" + d3.requote(type) + "$"),
match;
+ for (var name in this) {
+ if (match = name.match(re)) {
+ var l = this[name];
+ this.removeEventListener(match[1], l, l.$);
+ delete this[name];
+ }
+ }
+ }
+ return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;
+ }
+ var d3_selection_onFilters = d3.map({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+ });
+ d3_selection_onFilters.forEach(function(k) {
+ if ("on" + k in d3_document) d3_selection_onFilters.remove(k);
+ });
+ function d3_selection_onListener(listener, argumentz) {
+ return function(e) {
+ var o = d3.event;
+ d3.event = e;
+ argumentz[0] = this.__data__;
+ try {
+ listener.apply(this, argumentz);
+ } finally {
+ d3.event = o;
+ }
+ };
+ }
+ function d3_selection_onFilter(listener, argumentz) {
+ var l = d3_selection_onListener(listener, argumentz);
+ return function(e) {
+ var target = this, related = e.relatedTarget;
+ if (!related || related !== target &&
!(related.compareDocumentPosition(target) & 8)) {
+ l.call(target, e);
+ }
+ };
+ }
+ var d3_event_dragSelect = d3_vendorSymbol(d3_documentElement.style,
"userSelect");
+ function d3_event_dragSuppress(type) {
+ var selectstart = "selectstart." + type, dragstart = "dragstart."
+ type, click = "click." + type, w = d3.select(d3_window).on(selectstart,
d3_eventPreventDefault).on(dragstart, d3_eventPreventDefault), style =
d3_documentElement.style, select = style[d3_event_dragSelect];
+ style[d3_event_dragSelect] = "none";
+ return function(suppressClick) {
+ w.on(selectstart, null).on(dragstart, null);
+ style[d3_event_dragSelect] = select;
+ if (suppressClick) {
+ function off() {
+ w.on(click, null);
+ }
+ w.on(click, function() {
+ d3_eventPreventDefault();
+ off();
+ }, true);
+ setTimeout(off, 0);
+ }
+ };
+ }
+ d3.mouse = function(container) {
+ return d3_mousePoint(container, d3_eventSource());
+ };
+ var d3_mouse_bug44083 = /WebKit/.test(d3_window.navigator.userAgent) ? -1 : 0;
+ function d3_mousePoint(container, e) {
+ var svg = container.ownerSVGElement || container;
+ if (svg.createSVGPoint) {
+ var point = svg.createSVGPoint();
+ if (d3_mouse_bug44083 < 0 && (d3_window.scrollX || d3_window.scrollY))
{
+ svg = d3.select("body").append("svg").style({
+ position: "absolute",
+ top: 0,
+ left: 0,
+ margin: 0,
+ padding: 0,
+ border: "none"
+ }, "important");
+ var ctm = svg[0][0].getScreenCTM();
+ d3_mouse_bug44083 = !(ctm.f || ctm.e);
+ svg.remove();
+ }
+ if (d3_mouse_bug44083) {
+ point.x = e.pageX;
+ point.y = e.pageY;
+ } else {
+ point.x = e.clientX;
+ point.y = e.clientY;
+ }
+ point = point.matrixTransform(container.getScreenCTM().inverse());
+ return [ point.x, point.y ];
+ }
+ var rect = container.getBoundingClientRect();
+ return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top -
container.clientTop ];
+ }
+ d3.touches = function(container, touches) {
+ if (arguments.length < 2) touches = d3_eventSource().touches;
+ return touches ? d3_array(touches).map(function(touch) {
+ var point = d3_mousePoint(container, touch);
+ point.identifier = touch.identifier;
+ return point;
+ }) : [];
+ };
+ d3.behavior.drag = function() {
+ var event = d3_eventDispatch(drag, "drag", "dragstart",
"dragend"), origin = null;
+ function drag() {
+ this.on("mousedown.drag", mousedown).on("touchstart.drag",
mousedown);
+ }
+ function mousedown() {
+ var target = this, event_ = event.of(target, arguments), eventTarget =
d3.event.target, touchId = d3.event.touches ? d3.event.changedTouches[0].identifier :
null, offset, origin_ = point(), moved = 0, dragRestore = d3_event_dragSuppress(touchId !=
null ? "drag-" + touchId : "drag");
+ var w = d3.select(d3_window).on(touchId != null ? "touchmove.drag-" +
touchId : "mousemove.drag", dragmove).on(touchId != null ?
"touchend.drag-" + touchId : "mouseup.drag", dragend, true);
+ if (origin) {
+ offset = origin.apply(target, arguments);
+ offset = [ offset.x - origin_[0], offset.y - origin_[1] ];
+ } else {
+ offset = [ 0, 0 ];
+ }
+ event_({
+ type: "dragstart"
+ });
+ function point() {
+ var p = target.parentNode;
+ return touchId != null ? d3.touches(p).filter(function(p) {
+ return p.identifier === touchId;
+ })[0] : d3.mouse(p);
+ }
+ function dragmove() {
+ if (!target.parentNode) return dragend();
+ var p = point(), dx = p[0] - origin_[0], dy = p[1] - origin_[1];
+ moved |= dx | dy;
+ origin_ = p;
+ event_({
+ type: "drag",
+ x: p[0] + offset[0],
+ y: p[1] + offset[1],
+ dx: dx,
+ dy: dy
+ });
+ }
+ function dragend() {
+ w.on(touchId != null ? "touchmove.drag-" + touchId :
"mousemove.drag", null).on(touchId != null ? "touchend.drag-" +
touchId : "mouseup.drag", null);
+ dragRestore(moved && d3.event.target === eventTarget);
+ event_({
+ type: "dragend"
+ });
+ }
+ }
+ drag.origin = function(x) {
+ if (!arguments.length) return origin;
+ origin = x;
+ return drag;
+ };
+ return d3.rebind(drag, event, "on");
+ };
+ d3.behavior.zoom = function() {
+ var translate = [ 0, 0 ], translate0, scale = 1, distance0, scale0, scaleExtent =
d3_behavior_zoomInfinity, event = d3_eventDispatch(zoom, "zoom"), x0, x1, y0,
y1, touchtime;
+ function zoom() {
+ this.on("mousedown.zoom", mousedown).on("mousemove.zoom",
mousemove).on(d3_behavior_zoomWheel + ".zoom",
mousewheel).on("dblclick.zoom", dblclick).on("touchstart.zoom",
touchstart).on("touchmove.zoom", touchmove).on("touchend.zoom",
touchstart);
+ }
+ zoom.translate = function(x) {
+ if (!arguments.length) return translate;
+ translate = x.map(Number);
+ rescale();
+ return zoom;
+ };
+ zoom.scale = function(x) {
+ if (!arguments.length) return scale;
+ scale = +x;
+ rescale();
+ return zoom;
+ };
+ zoom.scaleExtent = function(x) {
+ if (!arguments.length) return scaleExtent;
+ scaleExtent = x == null ? d3_behavior_zoomInfinity : x.map(Number);
+ return zoom;
+ };
+ zoom.x = function(z) {
+ if (!arguments.length) return x1;
+ x1 = z;
+ x0 = z.copy();
+ translate = [ 0, 0 ];
+ scale = 1;
+ return zoom;
+ };
+ zoom.y = function(z) {
+ if (!arguments.length) return y1;
+ y1 = z;
+ y0 = z.copy();
+ translate = [ 0, 0 ];
+ scale = 1;
+ return zoom;
+ };
+ function location(p) {
+ return [ (p[0] - translate[0]) / scale, (p[1] - translate[1]) / scale ];
+ }
+ function point(l) {
return [ l[0] * scale + translate[0], l[1] * scale + translate[1] ];
}
function scaleTo(s) {
@@ -1168,18 +1196,15 @@ d3 = function() {
});
}
function mousedown() {
- var target = this, event_ = event.of(target, arguments), eventTarget =
d3.event.target, moved = 0, w = d3.select(d3_window).on("mousemove.zoom",
mousemove).on("mouseup.zoom", mouseup), l = location(d3.mouse(target));
- d3_window.focus();
- d3_eventCancel();
+ var target = this, event_ = event.of(target, arguments), eventTarget =
d3.event.target, moved = 0, w = d3.select(d3_window).on("mousemove.zoom",
mousemove).on("mouseup.zoom", mouseup), l = location(d3.mouse(target)),
dragRestore = d3_event_dragSuppress("zoom");
function mousemove() {
moved = 1;
translateTo(d3.mouse(target), l);
dispatch(event_);
}
function mouseup() {
- if (moved) d3_eventCancel();
w.on("mousemove.zoom", null).on("mouseup.zoom", null);
- if (moved && d3.event.target === eventTarget) d3_eventSuppress(w,
"click.zoom");
+ dragRestore(moved && d3.event.target === eventTarget);
}
}
function mousewheel() {
@@ -1201,10 +1226,10 @@ d3 = function() {
var touches = d3.touches(this), now = Date.now();
scale0 = scale;
translate0 = {};
+ distance0 = 0;
touches.forEach(function(t) {
translate0[t.identifier] = location(t);
});
- d3_eventCancel();
if (touches.length === 1) {
if (now - touchtime < 500) {
var p = touches[0], l = location(touches[0]);
@@ -1213,15 +1238,22 @@ d3 = function() {
dispatch(event.of(this, arguments));
}
touchtime = now;
+ } else if (touches.length > 1) {
+ var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];
+ distance0 = dx * dx + dy * dy;
}
}
function touchmove() {
var touches = d3.touches(this), p0 = touches[0], l0 = translate0[p0.identifier];
if (p1 = touches[1]) {
- var p1, l1 = translate0[p1.identifier];
+ var p1, l1 = translate0[p1.identifier], scale1 = d3.event.scale;
+ if (scale1 == null) {
+ var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] -
p0[1]) * distance1;
+ scale1 = distance0 && Math.sqrt(distance1 / distance0);
+ }
p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];
l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];
- scaleTo(d3.event.scale * scale0);
+ scaleTo(scale1 * scale0);
}
translateTo(p0, l0);
touchtime = null;
@@ -1283,12 +1315,12 @@ d3 = function() {
}
return d3_rgb(vv(h + 120), vv(h), vv(h - 120));
}
- var π = Math.PI, ε = 1e-6, d3_radians = π / 180, d3_degrees = 180 / π;
+ var π = Math.PI, ε = 1e-6, ε2 = ε * ε, d3_radians = π / 180, d3_degrees = 180 / π;
function d3_sgn(x) {
return x > 0 ? 1 : x < 0 ? -1 : 0;
}
function d3_acos(x) {
- return Math.acos(Math.max(-1, Math.min(1, x)));
+ return x > 1 ? 0 : x < -1 ? π : Math.acos(x);
}
function d3_asin(x) {
return x > 1 ? π / 2 : x < -1 ? -π / 2 : Math.asin(x);
@@ -1637,7 +1669,8 @@ d3 = function() {
};
}
function d3_xhr(url, mimeType, response, callback) {
- var xhr = {}, dispatch = d3.dispatch("progress", "load",
"error"), headers = {}, request = new (d3_window.XDomainRequest &&
/^(http(s)?:)?\/\//.test(url) ? XDomainRequest : XMLHttpRequest)();
+ var xhr = {}, dispatch = d3.dispatch("progress", "load",
"error"), headers = {}, request = new XMLHttpRequest(), responseType = null;
+ if (d3_window.XDomainRequest && !("withCredentials" in request)
&& /^(http(s)?:)?\/\//.test(url)) request = new XDomainRequest();
"onload" in request ? request.onload = request.onerror = respond :
request.onreadystatechange = function() {
request.readyState > 3 && respond();
};
@@ -1675,6 +1708,11 @@ d3 = function() {
mimeType = value == null ? null : value + "";
return xhr;
};
+ xhr.responseType = function(value) {
+ if (!arguments.length) return responseType;
+ responseType = value;
+ return xhr;
+ };
xhr.response = function(value) {
response = value;
return xhr;
@@ -1690,6 +1728,7 @@ d3 = function() {
if (mimeType != null && !("accept" in headers))
headers["accept"] = mimeType + ",*/*";
if (request.setRequestHeader) for (var name in headers)
request.setRequestHeader(name, headers[name]);
if (mimeType != null && request.overrideMimeType)
request.overrideMimeType(mimeType);
+ if (responseType != null) request.responseType = responseType;
if (callback != null) xhr.on("error", callback).on("load",
function(request) {
callback(null, request);
});
@@ -1708,7 +1747,7 @@ d3 = function() {
callback(error == null ? request : null);
} : callback;
}
- function d3_dsv(delimiter, mimeType) {
+ d3.dsv = function(delimiter, mimeType) {
var reFormat = new RegExp('["' + delimiter + "\n]"),
delimiterCode = delimiter.charCodeAt(0);
function dsv(url, row, callback) {
if (arguments.length < 3) callback = row, row = null;
@@ -1809,9 +1848,9 @@ d3 = function() {
return reFormat.test(text) ? '"' + text.replace(/\"/g,
'""') + '"' : text;
}
return dsv;
- }
- d3.csv = d3_dsv(",", "text/csv");
- d3.tsv = d3_dsv(" ", "text/tab-separated-values");
+ };
+ d3.csv = d3.dsv(",", "text/csv");
+ d3.tsv = d3.dsv(" ", "text/tab-separated-values");
var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout;
d3.timer = function(callback, delay, then) {
if (arguments.length < 3) {
@@ -1870,7 +1909,7 @@ d3 = function() {
d3_timer_queueTail = t0;
return time;
}
- var d3_timer_frame = d3_window.requestAnimationFrame ||
d3_window.webkitRequestAnimationFrame || d3_window.mozRequestAnimationFrame ||
d3_window.oRequestAnimationFrame || d3_window.msRequestAnimationFrame ||
function(callback) {
+ var d3_timer_frame = d3_window[d3_vendorSymbol(d3_window,
"requestAnimationFrame")] || function(callback) {
setTimeout(callback, 17);
};
var d3_format_decimalPoint = ".", d3_format_thousandsSeparator =
",", d3_format_grouping = [ 3, 3 ];
@@ -2018,6 +2057,27 @@ d3 = function() {
};
}
d3.geo = {};
+ function d3_adder() {}
+ d3_adder.prototype = {
+ s: 0,
+ t: 0,
+ add: function(y) {
+ d3_adderSum(y, this.t, d3_adderTemp);
+ d3_adderSum(d3_adderTemp.s, this.s, this);
+ if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;
+ },
+ reset: function() {
+ this.s = this.t = 0;
+ },
+ valueOf: function() {
+ return this.s;
+ }
+ };
+ var d3_adderTemp = new d3_adder();
+ function d3_adderSum(a, b, o) {
+ var x = o.s = a + b, bv = x - a, av = x - bv;
+ o.t = a - av + (b - bv);
+ }
d3.geo.stream = function(object, listener) {
if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {
d3_geo_streamObjectType[object.type](object, listener);
@@ -2087,7 +2147,7 @@ d3 = function() {
d3.geo.stream(object, d3_geo_area);
return d3_geo_areaSum;
};
- var d3_geo_areaSum, d3_geo_areaRingSum;
+ var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();
var d3_geo_area = {
sphere: function() {
d3_geo_areaSum += 4 * π;
@@ -2096,7 +2156,7 @@ d3 = function() {
lineStart: d3_noop,
lineEnd: d3_noop,
polygonStart: function() {
- d3_geo_areaRingSum = 0;
+ d3_geo_areaRingSum.reset();
d3_geo_area.lineStart = d3_geo_areaRingStart;
},
polygonEnd: function() {
@@ -2116,7 +2176,7 @@ d3 = function() {
λ *= d3_radians;
φ = φ * d3_radians / 2 + π / 4;
var dλ = λ - λ0, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u =
cosφ0 * cosφ + k * Math.cos(dλ), v = k * Math.sin(dλ);
- d3_geo_areaRingSum += Math.atan2(v, u);
+ d3_geo_areaRingSum.add(Math.atan2(v, u));
λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;
}
d3_geo_area.lineEnd = function() {
@@ -2148,7 +2208,7 @@ d3 = function() {
d[2] /= l;
}
function d3_geo_spherical(cartesian) {
- return [ Math.atan2(cartesian[1], cartesian[0]), Math.asin(Math.max(-1, Math.min(1,
cartesian[2]))) ];
+ return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];
}
function d3_geo_sphericalEqual(a, b) {
return Math.abs(a[0] - b[0]) < ε && Math.abs(a[1] - b[1]) < ε;
@@ -2259,49 +2319,47 @@ d3 = function() {
φ1 = λ1 = -(λ0 = φ0 = Infinity);
ranges = [];
d3.geo.stream(feature, bound);
- ranges.sort(compareRanges);
- for (var i = 1, n = ranges.length, a = ranges[0], b, merged = [ a ]; i < n; ++i)
{
- b = ranges[i];
- if (withinRange(b[0], a) || withinRange(b[1], a)) {
- if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];
- if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];
- } else {
- merged.push(a = b);
+ var n = ranges.length;
+ if (n) {
+ ranges.sort(compareRanges);
+ for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {
+ b = ranges[i];
+ if (withinRange(b[0], a) || withinRange(b[1], a)) {
+ if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];
+ if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];
+ } else {
+ merged.push(a = b);
+ }
+ }
+ var best = -Infinity, dλ;
+ for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i)
{
+ b = merged[i];
+ if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];
}
- }
- var best = -Infinity, dλ;
- for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {
- b = merged[i];
- if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];
}
ranges = range = null;
- return [ [ λ0, φ0 ], [ λ1, φ1 ] ];
+ return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [
λ0, φ0 ], [ λ1, φ1 ] ];
};
}();
d3.geo.centroid = function(object) {
- d3_geo_centroidDimension = d3_geo_centroidW = d3_geo_centroidX = d3_geo_centroidY =
d3_geo_centroidZ = 0;
+ d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 =
d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 =
d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;
d3.geo.stream(object, d3_geo_centroid);
- var m;
- if (d3_geo_centroidW && Math.abs(m = Math.sqrt(d3_geo_centroidX *
d3_geo_centroidX + d3_geo_centroidY * d3_geo_centroidY + d3_geo_centroidZ *
d3_geo_centroidZ)) > ε) {
- return [ Math.atan2(d3_geo_centroidY, d3_geo_centroidX) * d3_degrees,
Math.asin(Math.max(-1, Math.min(1, d3_geo_centroidZ / m))) * d3_degrees ];
+ var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x +
y * y + z * z;
+ if (m < ε2) {
+ x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;
+ if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z =
d3_geo_centroidZ0;
+ m = x * x + y * y + z * z;
+ if (m < ε2) return [ NaN, NaN ];
}
+ return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];
};
- var d3_geo_centroidDimension, d3_geo_centroidW, d3_geo_centroidX, d3_geo_centroidY,
d3_geo_centroidZ;
+ var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0,
d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1,
d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;
var d3_geo_centroid = {
- sphere: function() {
- if (d3_geo_centroidDimension < 2) {
- d3_geo_centroidDimension = 2;
- d3_geo_centroidW = d3_geo_centroidX = d3_geo_centroidY = d3_geo_centroidZ = 0;
- }
- },
+ sphere: d3_noop,
point: d3_geo_centroidPoint,
lineStart: d3_geo_centroidLineStart,
lineEnd: d3_geo_centroidLineEnd,
polygonStart: function() {
- if (d3_geo_centroidDimension < 2) {
- d3_geo_centroidDimension = 2;
- d3_geo_centroidW = d3_geo_centroidX = d3_geo_centroidY = d3_geo_centroidZ = 0;
- }
d3_geo_centroid.lineStart = d3_geo_centroidRingStart;
},
polygonEnd: function() {
@@ -2309,36 +2367,18 @@ d3 = function() {
}
};
function d3_geo_centroidPoint(λ, φ) {
- if (d3_geo_centroidDimension) return;
- ++d3_geo_centroidW;
λ *= d3_radians;
var cosφ = Math.cos(φ *= d3_radians);
- d3_geo_centroidX += (cosφ * Math.cos(λ) - d3_geo_centroidX) / d3_geo_centroidW;
- d3_geo_centroidY += (cosφ * Math.sin(λ) - d3_geo_centroidY) / d3_geo_centroidW;
- d3_geo_centroidZ += (Math.sin(φ) - d3_geo_centroidZ) / d3_geo_centroidW;
+ d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));
}
- function d3_geo_centroidRingStart() {
- var λ00, φ00;
- d3_geo_centroidDimension = 1;
- d3_geo_centroidLineStart();
- d3_geo_centroidDimension = 2;
- var linePoint = d3_geo_centroid.point;
- d3_geo_centroid.point = function(λ, φ) {
- linePoint(λ00 = λ, φ00 = φ);
- };
- d3_geo_centroid.lineEnd = function() {
- d3_geo_centroid.point(λ00, φ00);
- d3_geo_centroidLineEnd();
- d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;
- };
+ function d3_geo_centroidPointXYZ(x, y, z) {
+ ++d3_geo_centroidW0;
+ d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;
+ d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;
+ d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;
}
function d3_geo_centroidLineStart() {
var x0, y0, z0;
- if (d3_geo_centroidDimension > 1) return;
- if (d3_geo_centroidDimension < 1) {
- d3_geo_centroidDimension = 1;
- d3_geo_centroidW = d3_geo_centroidX = d3_geo_centroidY = d3_geo_centroidZ = 0;
- }
d3_geo_centroid.point = function(λ, φ) {
λ *= d3_radians;
var cosφ = Math.cos(φ *= d3_radians);
@@ -2346,19 +2386,51 @@ d3 = function() {
y0 = cosφ * Math.sin(λ);
z0 = Math.sin(φ);
d3_geo_centroid.point = nextPoint;
+ d3_geo_centroidPointXYZ(x0, y0, z0);
};
function nextPoint(λ, φ) {
λ *= d3_radians;
var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ *
Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0
* x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);
- d3_geo_centroidW += w;
- d3_geo_centroidX += w * (x0 + (x0 = x));
- d3_geo_centroidY += w * (y0 + (y0 = y));
- d3_geo_centroidZ += w * (z0 + (z0 = z));
+ d3_geo_centroidW1 += w;
+ d3_geo_centroidX1 += w * (x0 + (x0 = x));
+ d3_geo_centroidY1 += w * (y0 + (y0 = y));
+ d3_geo_centroidZ1 += w * (z0 + (z0 = z));
+ d3_geo_centroidPointXYZ(x0, y0, z0);
}
}
function d3_geo_centroidLineEnd() {
d3_geo_centroid.point = d3_geo_centroidPoint;
}
+ function d3_geo_centroidRingStart() {
+ var λ00, φ00, x0, y0, z0;
+ d3_geo_centroid.point = function(λ, φ) {
+ λ00 = λ, φ00 = φ;
+ d3_geo_centroid.point = nextPoint;
+ λ *= d3_radians;
+ var cosφ = Math.cos(φ *= d3_radians);
+ x0 = cosφ * Math.cos(λ);
+ y0 = cosφ * Math.sin(λ);
+ z0 = Math.sin(φ);
+ d3_geo_centroidPointXYZ(x0, y0, z0);
+ };
+ d3_geo_centroid.lineEnd = function() {
+ nextPoint(λ00, φ00);
+ d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;
+ d3_geo_centroid.point = d3_geo_centroidPoint;
+ };
+ function nextPoint(λ, φ) {
+ λ *= d3_radians;
+ var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ *
Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0
* x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m
&& -d3_acos(u) / m, w = Math.atan2(m, u);
+ d3_geo_centroidX2 += v * cx;
+ d3_geo_centroidY2 += v * cy;
+ d3_geo_centroidZ2 += v * cz;
+ d3_geo_centroidW1 += w;
+ d3_geo_centroidX1 += w * (x0 + (x0 = x));
+ d3_geo_centroidY1 += w * (y0 + (y0 = y));
+ d3_geo_centroidZ1 += w * (z0 + (z0 = z));
+ d3_geo_centroidPointXYZ(x0, y0, z0);
+ }
+ }
function d3_true() {
return true;
}
@@ -2459,7 +2531,7 @@ d3 = function() {
a.next = b = array[0];
b.prev = a;
}
- function d3_geo_clip(pointVisible, clipLine, interpolate) {
+ function d3_geo_clip(pointVisible, clipLine, interpolate, polygonContains) {
return function(listener) {
var line = clipLine(listener);
var clip = {
@@ -2470,9 +2542,8 @@ d3 = function() {
clip.point = pointRing;
clip.lineStart = ringStart;
clip.lineEnd = ringEnd;
- invisible = false;
- invisibleArea = visibleArea = 0;
segments = [];
+ polygon = [];
listener.polygonStart();
},
polygonEnd: function() {
@@ -2482,13 +2553,13 @@ d3 = function() {
segments = d3.merge(segments);
if (segments.length) {
d3_geo_clipPolygon(segments, d3_geo_clipSort, null, interpolate, listener);
- } else if (visibleArea < -ε || invisible && invisibleArea < -ε)
{
+ } else if (polygonContains(polygon)) {
listener.lineStart();
interpolate(null, null, 1, listener);
listener.lineEnd();
}
listener.polygonEnd();
- segments = null;
+ segments = polygon = null;
},
sphere: function() {
listener.polygonStart();
@@ -2512,8 +2583,8 @@ d3 = function() {
clip.point = point;
line.lineEnd();
}
- var segments, visibleArea, invisibleArea, invisible;
- var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), ring;
+ var segments;
+ var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygon,
ring;
function pointRing(λ, φ) {
ringListener.point(λ, φ);
ring.push([ λ, φ ]);
@@ -2526,16 +2597,12 @@ d3 = function() {
pointRing(ring[0][0], ring[0][1]);
ringListener.lineEnd();
var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n =
ringSegments.length;
- if (!n) {
- invisible = true;
- invisibleArea += d3_geo_clipAreaRing(ring, -1);
- ring = null;
- return;
- }
+ ring.pop();
+ polygon.push(ring);
ring = null;
+ if (!n) return;
if (clean & 1) {
segment = ringSegments[0];
- visibleArea += d3_geo_clipAreaRing(segment, 1);
var n = segment.length - 1, i = -1, point;
listener.lineStart();
while (++i < n) listener.point((point = segment[i])[0], point[1]);
@@ -2572,26 +2639,41 @@ d3 = function() {
}
};
}
- function d3_geo_clipAreaRing(ring, invisible) {
- if (!(n = ring.length)) return 0;
- var n, i = 0, area = 0, p = ring[0], λ = p[0], φ = p[1], cosφ = Math.cos(φ), x0 =
Math.atan2(invisible * Math.sin(λ) * cosφ, Math.sin(φ)), y0 = 1 - invisible * Math.cos(λ)
* cosφ, x1 = x0, x, y;
- while (++i < n) {
- p = ring[i];
- cosφ = Math.cos(φ = p[1]);
- x = Math.atan2(invisible * Math.sin(λ = p[0]) * cosφ, Math.sin(φ));
- y = 1 - invisible * Math.cos(λ) * cosφ;
- if (Math.abs(y0 - 2) < ε && Math.abs(y - 2) < ε) continue;
- if (Math.abs(y) < ε || Math.abs(y0) < ε) {} else if (Math.abs(Math.abs(x -
x0) - π) < ε) {
- if (y + y0 > 2) area += 4 * (x - x0);
- } else if (Math.abs(y0 - 2) < ε) area += 4 * (x - x1); else area += ((3 * π + x
- x0) % (2 * π) - π) * (y0 + y);
- x1 = x0, x0 = x, y0 = y;
- }
- return area;
- }
function d3_geo_clipSort(a, b) {
return ((a = a.point)[0] < 0 ? a[1] - π / 2 - ε : π / 2 - a[1]) - ((b =
b.point)[0] < 0 ? b[1] - π / 2 - ε : π / 2 - b[1]);
}
- var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine,
d3_geo_clipAntimeridianInterpolate);
+ function d3_geo_pointInPolygon(point, polygon) {
+ var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian),
-Math.cos(meridian), 0 ], polarAngle = 0, polar = false, southPole = false, winding = 0;
+ d3_geo_areaRingSum.reset();
+ for (var i = 0, n = polygon.length; i < n; ++i) {
+ var ring = polygon[i], m = ring.length;
+ if (!m) continue;
+ var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 =
Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;
+ while (true) {
+ if (j === m) j = 0;
+ point = ring[j];
+ var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ =
Math.cos(φ), dλ = λ - λ0, antimeridian = Math.abs(dλ) > π, k = sinφ0 * sinφ;
+ d3_geo_areaRingSum.add(Math.atan2(k * Math.sin(dλ), cosφ0 * cosφ + k *
Math.cos(dλ)));
+ if (Math.abs(φ) < ε) southPole = true;
+ polarAngle += antimeridian ? dλ + (dλ >= 0 ? 2 : -2) * π : dλ;
+ if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {
+ var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0),
d3_geo_cartesian(point));
+ d3_geo_cartesianNormalize(arc);
+ var intersection = d3_geo_cartesianCross(meridianNormal, arc);
+ d3_geo_cartesianNormalize(intersection);
+ var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);
+ if (parallel > φarc) {
+ winding += antimeridian ^ dλ >= 0 ? 1 : -1;
+ }
+ }
+ if (!j++) break;
+ λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;
+ }
+ if (Math.abs(polarAngle) > ε) polar = true;
+ }
+ return (!southPole && !polar && d3_geo_areaRingSum < 0 ||
polarAngle < -ε) ^ winding & 1;
+ }
+ var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine,
d3_geo_clipAntimeridianInterpolate, d3_geo_clipAntimeridianPolygonContains);
function d3_geo_clipAntimeridianLine(listener) {
var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;
return {
@@ -2658,9 +2740,13 @@ d3 = function() {
listener.point(to[0], to[1]);
}
}
+ var d3_geo_clipAntimeridianPoint = [ -π, 0 ];
+ function d3_geo_clipAntimeridianPolygonContains(polygon) {
+ return d3_geo_pointInPolygon(d3_geo_clipAntimeridianPoint, polygon);
+ }
function d3_geo_clipCircle(radius) {
- var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = Math.abs(cr) >
ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);
- return d3_geo_clip(visible, clipLine, interpolate);
+ var cr = Math.cos(radius), smallRadius = cr > 0, point = [ radius, 0 ],
notHemisphere = Math.abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 *
d3_radians);
+ return d3_geo_clip(visible, clipLine, interpolate, polygonContains);
function visible(λ, φ) {
return Math.cos(λ) * Math.cos(φ) > cr;
}
@@ -2753,6 +2839,9 @@ d3 = function() {
if (φ < -r) code |= 4; else if (φ > r) code |= 8;
return code;
}
+ function polygonContains(polygon) {
+ return d3_geo_pointInPolygon(point, polygon);
+ }
}
var d3_geo_clipViewMAX = 1e9;
function d3_geo_clipView(x0, y0, x1, y1) {
@@ -2916,798 +3005,811 @@ d3 = function() {
};
return compose;
}
- function d3_geo_resample(project) {
- var δ2 = .5, maxDepth = 16;
- function resample(stream) {
- var λ0, x0, y0, a0, b0, c0;
- var resample = {
- point: point,
- lineStart: lineStart,
- lineEnd: lineEnd,
- polygonStart: function() {
- stream.polygonStart();
- resample.lineStart = polygonLineStart;
- },
- polygonEnd: function() {
- stream.polygonEnd();
- resample.lineStart = lineStart;
- }
- };
- function point(x, y) {
- x = project(x, y);
- stream.point(x[0], x[1]);
- }
- function lineStart() {
- x0 = NaN;
- resample.point = linePoint;
- stream.lineStart();
- }
- function linePoint(λ, φ) {
- var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);
- resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0],
b0 = c[1], c0 = c[2], maxDepth, stream);
- stream.point(x0, y0);
- }
- function lineEnd() {
- resample.point = point;
- stream.lineEnd();
- }
- function polygonLineStart() {
- var λ00, φ00, x00, y00, a00, b00, c00;
- lineStart();
- resample.point = function(λ, φ) {
- linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;
- resample.point = linePoint;
- };
- resample.lineEnd = function() {
- resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth,
stream);
- resample.lineEnd = lineEnd;
- lineEnd();
- };
- }
- return resample;
- }
- function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth,
stream) {
- var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;
- if (d2 > 4 * δ2 && depth--) {
- var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c),
φ2 = Math.asin(c /= m), λ2 = Math.abs(Math.abs(c) - 1) < ε ? (λ0 + λ1) / 2 :
Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0,
dz = dy * dx2 - dx * dy2;
- if (dz * dz / d2 > δ2 || Math.abs((dx * dx2 + dy * dy2) / d2 - .5) > .3) {
- resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth,
stream);
- stream.point(x2, y2);
- resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);
- }
- }
- }
- resample.precision = function(_) {
- if (!arguments.length) return Math.sqrt(δ2);
- maxDepth = (δ2 = _ * _) > 0 && 16;
- return resample;
+ function d3_geo_conic(projectAt) {
+ var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);
+ p.parallels = function(_) {
+ if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];
+ return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);
};
- return resample;
- }
- d3.geo.projection = d3_geo_projection;
- d3.geo.projectionMutator = d3_geo_projectionMutator;
- function d3_geo_projection(project) {
- return d3_geo_projectionMutator(function() {
- return project;
- })();
+ return p;
}
- function d3_geo_projectionMutator(projectAt) {
- var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y)
{
- x = project(x, y);
- return [ x[0] * k + δx, δy - x[1] * k ];
- }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip
= d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null;
- function projection(point) {
- point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);
- return [ point[0] * k + δx, δy - point[1] * k ];
- }
- function invert(point) {
- point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);
- return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];
+ function d3_geo_conicEqualArea(φ0, φ1) {
+ var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n -
sinφ0), ρ0 = Math.sqrt(C) / n;
+ function forward(λ, φ) {
+ var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;
+ return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];
}
- projection.stream = function(stream) {
- return d3_geo_projectionRadiansRotate(rotate,
preclip(projectResample(postclip(stream))));
+ forward.invert = function(x, y) {
+ var ρ0_y = ρ0 - y;
+ return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2
* n)) ];
};
- projection.clipAngle = function(_) {
- if (!arguments.length) return clipAngle;
- preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) :
d3_geo_clipCircle((clipAngle = +_) * d3_radians);
- return projection;
+ return forward;
+ }
+ (d3.geo.conicEqualArea = function() {
+ return d3_geo_conic(d3_geo_conicEqualArea);
+ }).raw = d3_geo_conicEqualArea;
+ d3.geo.albers = function() {
+ return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([
29.5, 45.5 ]).scale(1070);
+ };
+ d3.geo.albersUsa = function() {
+ var lower48 = d3.geo.albers();
+ var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5
]).parallels([ 55, 65 ]);
+ var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9
]).parallels([ 8, 18 ]);
+ var point, pointStream = {
+ point: function(x, y) {
+ point = [ x, y ];
+ }
+ }, lower48Point, alaskaPoint, hawaiiPoint;
+ function albersUsa(coordinates) {
+ var x = coordinates[0], y = coordinates[1];
+ point = null;
+ (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);
+ return point;
+ }
+ albersUsa.invert = function(coordinates) {
+ var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k,
y = (coordinates[1] - t[1]) / k;
+ return (y >= .12 && y < .234 && x >= -.425 && x
< -.214 ? alaska : y >= .166 && y < .234 && x >= -.214
&& x < -.115 ? hawaii : lower48).invert(coordinates);
};
- projection.clipExtent = function(_) {
- if (!arguments.length) return clipExtent;
- clipExtent = _;
- postclip = _ == null ? d3_identity : d3_geo_clipView(_[0][0], _[0][1], _[1][0],
_[1][1]);
- return projection;
+ albersUsa.stream = function(stream) {
+ var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream),
hawaiiStream = hawaii.stream(stream);
+ return {
+ point: function(x, y) {
+ lower48Stream.point(x, y);
+ alaskaStream.point(x, y);
+ hawaiiStream.point(x, y);
+ },
+ sphere: function() {
+ lower48Stream.sphere();
+ alaskaStream.sphere();
+ hawaiiStream.sphere();
+ },
+ lineStart: function() {
+ lower48Stream.lineStart();
+ alaskaStream.lineStart();
+ hawaiiStream.lineStart();
+ },
+ lineEnd: function() {
+ lower48Stream.lineEnd();
+ alaskaStream.lineEnd();
+ hawaiiStream.lineEnd();
+ },
+ polygonStart: function() {
+ lower48Stream.polygonStart();
+ alaskaStream.polygonStart();
+ hawaiiStream.polygonStart();
+ },
+ polygonEnd: function() {
+ lower48Stream.polygonEnd();
+ alaskaStream.polygonEnd();
+ hawaiiStream.polygonEnd();
+ }
+ };
};
- projection.scale = function(_) {
- if (!arguments.length) return k;
- k = +_;
- return reset();
+ albersUsa.precision = function(_) {
+ if (!arguments.length) return lower48.precision();
+ lower48.precision(_);
+ alaska.precision(_);
+ hawaii.precision(_);
+ return albersUsa;
};
- projection.translate = function(_) {
- if (!arguments.length) return [ x, y ];
- x = +_[0];
- y = +_[1];
- return reset();
+ albersUsa.scale = function(_) {
+ if (!arguments.length) return lower48.scale();
+ lower48.scale(_);
+ alaska.scale(_ * .35);
+ hawaii.scale(_);
+ return albersUsa.translate(lower48.translate());
};
- projection.center = function(_) {
- if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];
- λ = _[0] % 360 * d3_radians;
- φ = _[1] % 360 * d3_radians;
- return reset();
+ albersUsa.translate = function(_) {
+ if (!arguments.length) return lower48.translate();
+ var k = lower48.scale(), x = +_[0], y = +_[1];
+ lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [
x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;
+ alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x -
.425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ]
]).stream(pointStream).point;
+ hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x -
.214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ]
]).stream(pointStream).point;
+ return albersUsa;
};
- projection.rotate = function(_) {
- if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees
];
- δλ = _[0] % 360 * d3_radians;
- δφ = _[1] % 360 * d3_radians;
- δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;
- return reset();
+ return albersUsa.scale(1070);
+ };
+ var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {
+ point: d3_noop,
+ lineStart: d3_noop,
+ lineEnd: d3_noop,
+ polygonStart: function() {
+ d3_geo_pathAreaPolygon = 0;
+ d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;
+ },
+ polygonEnd: function() {
+ d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point =
d3_noop;
+ d3_geo_pathAreaSum += Math.abs(d3_geo_pathAreaPolygon / 2);
+ }
+ };
+ function d3_geo_pathAreaRingStart() {
+ var x00, y00, x0, y0;
+ d3_geo_pathArea.point = function(x, y) {
+ d3_geo_pathArea.point = nextPoint;
+ x00 = x0 = x, y00 = y0 = y;
};
- d3.rebind(projection, projectResample, "precision");
- function reset() {
- projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);
- var center = project(λ, φ);
- δx = x - center[0] * k;
- δy = y + center[1] * k;
- return projection;
+ function nextPoint(x, y) {
+ d3_geo_pathAreaPolygon += y0 * x - x0 * y;
+ x0 = x, y0 = y;
}
- return function() {
- project = projectAt.apply(this, arguments);
- projection.invert = project.invert && invert;
- return reset();
+ d3_geo_pathArea.lineEnd = function() {
+ nextPoint(x00, y00);
};
}
- function d3_geo_projectionRadiansRotate(rotate, stream) {
- return {
- point: function(x, y) {
- y = rotate(x * d3_radians, y * d3_radians), x = y[0];
- stream.point(x > π ? x - 2 * π : x < -π ? x + 2 * π : x, y[1]);
- },
- sphere: function() {
- stream.sphere();
- },
+ var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1,
d3_geo_pathBoundsY1;
+ var d3_geo_pathBounds = {
+ point: d3_geo_pathBoundsPoint,
+ lineStart: d3_noop,
+ lineEnd: d3_noop,
+ polygonStart: d3_noop,
+ polygonEnd: d3_noop
+ };
+ function d3_geo_pathBoundsPoint(x, y) {
+ if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;
+ if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;
+ if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;
+ if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;
+ }
+ function d3_geo_pathBuffer() {
+ var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];
+ var stream = {
+ point: point,
lineStart: function() {
- stream.lineStart();
- },
- lineEnd: function() {
- stream.lineEnd();
+ stream.point = pointLineStart;
},
+ lineEnd: lineEnd,
polygonStart: function() {
- stream.polygonStart();
+ stream.lineEnd = lineEndPolygon;
},
polygonEnd: function() {
- stream.polygonEnd();
+ stream.lineEnd = lineEnd;
+ stream.point = point;
+ },
+ pointRadius: function(_) {
+ pointCircle = d3_geo_pathBufferCircle(_);
+ return stream;
+ },
+ result: function() {
+ if (buffer.length) {
+ var result = buffer.join("");
+ buffer = [];
+ return result;
+ }
}
};
+ function point(x, y) {
+ buffer.push("M", x, ",", y, pointCircle);
+ }
+ function pointLineStart(x, y) {
+ buffer.push("M", x, ",", y);
+ stream.point = pointLine;
+ }
+ function pointLine(x, y) {
+ buffer.push("L", x, ",", y);
+ }
+ function lineEnd() {
+ stream.point = point;
+ }
+ function lineEndPolygon() {
+ buffer.push("Z");
+ }
+ return stream;
}
- function d3_geo_equirectangular(λ, φ) {
- return [ λ, φ ];
+ function d3_geo_pathBufferCircle(radius) {
+ return "m0," + radius + "a" + radius + "," + radius +
" 0 1,1 0," + -2 * radius + "a" + radius + "," + radius +
" 0 1,1 0," + 2 * radius + "z";
}
- (d3.geo.equirectangular = function() {
- return d3_geo_projection(d3_geo_equirectangular);
- }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;
- d3.geo.rotation = function(rotate) {
- rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians,
rotate.length > 2 ? rotate[2] * d3_radians : 0);
- function forward(coordinates) {
- coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);
- return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;
+ var d3_geo_pathCentroid = {
+ point: d3_geo_pathCentroidPoint,
+ lineStart: d3_geo_pathCentroidLineStart,
+ lineEnd: d3_geo_pathCentroidLineEnd,
+ polygonStart: function() {
+ d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;
+ },
+ polygonEnd: function() {
+ d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;
+ d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;
+ d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;
}
- forward.invert = function(coordinates) {
- coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] *
d3_radians);
- return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;
- };
- return forward;
};
- function d3_geo_rotation(δλ, δφ, δγ) {
- return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ,
δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) :
d3_geo_equirectangular;
+ function d3_geo_pathCentroidPoint(x, y) {
+ d3_geo_centroidX0 += x;
+ d3_geo_centroidY0 += y;
+ ++d3_geo_centroidZ0;
}
- function d3_geo_forwardRotationλ(δλ) {
- return function(λ, φ) {
- return λ += δλ, [ λ > π ? λ - 2 * π : λ < -π ? λ + 2 * π : λ, φ ];
+ function d3_geo_pathCentroidLineStart() {
+ var x0, y0;
+ d3_geo_pathCentroid.point = function(x, y) {
+ d3_geo_pathCentroid.point = nextPoint;
+ d3_geo_pathCentroidPoint(x0 = x, y0 = y);
};
+ function nextPoint(x, y) {
+ var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);
+ d3_geo_centroidX1 += z * (x0 + x) / 2;
+ d3_geo_centroidY1 += z * (y0 + y) / 2;
+ d3_geo_centroidZ1 += z;
+ d3_geo_pathCentroidPoint(x0 = x, y0 = y);
+ }
}
- function d3_geo_rotationλ(δλ) {
- var rotation = d3_geo_forwardRotationλ(δλ);
- rotation.invert = d3_geo_forwardRotationλ(-δλ);
- return rotation;
+ function d3_geo_pathCentroidLineEnd() {
+ d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;
}
- function d3_geo_rotationφγ(δφ, δγ) {
- var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ =
Math.sin(δγ);
- function rotation(λ, φ) {
- var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z =
Math.sin(φ), k = z * cosδφ + x * sinδφ;
- return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ),
Math.asin(Math.max(-1, Math.min(1, k * cosδγ + y * sinδγ))) ];
- }
- rotation.invert = function(λ, φ) {
- var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z =
Math.sin(φ), k = z * cosδγ - y * sinδγ;
- return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ),
Math.asin(Math.max(-1, Math.min(1, k * cosδφ - x * sinδφ))) ];
+ function d3_geo_pathCentroidRingStart() {
+ var x00, y00, x0, y0;
+ d3_geo_pathCentroid.point = function(x, y) {
+ d3_geo_pathCentroid.point = nextPoint;
+ d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);
};
- return rotation;
- }
- d3.geo.circle = function() {
- var origin = [ 0, 0 ], angle, precision = 6, interpolate;
- function circle() {
- var center = typeof origin === "function" ? origin.apply(this, arguments)
: origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians,
0).invert, ring = [];
- interpolate(null, null, 1, {
- point: function(x, y) {
- ring.push(x = rotate(x, y));
- x[0] *= d3_degrees, x[1] *= d3_degrees;
- }
- });
- return {
- type: "Polygon",
- coordinates: [ ring ]
- };
+ function nextPoint(x, y) {
+ var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);
+ d3_geo_centroidX1 += z * (x0 + x) / 2;
+ d3_geo_centroidY1 += z * (y0 + y) / 2;
+ d3_geo_centroidZ1 += z;
+ z = y0 * x - x0 * y;
+ d3_geo_centroidX2 += z * (x0 + x);
+ d3_geo_centroidY2 += z * (y0 + y);
+ d3_geo_centroidZ2 += z * 3;
+ d3_geo_pathCentroidPoint(x0 = x, y0 = y);
}
- circle.origin = function(x) {
- if (!arguments.length) return origin;
- origin = x;
- return circle;
- };
- circle.angle = function(x) {
- if (!arguments.length) return angle;
- interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision *
d3_radians);
- return circle;
- };
- circle.precision = function(_) {
- if (!arguments.length) return precision;
- interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) *
d3_radians);
- return circle;
- };
- return circle.angle(90);
- };
- function d3_geo_circleInterpolate(radius, precision) {
- var cr = Math.cos(radius), sr = Math.sin(radius);
- return function(from, to, direction, listener) {
- if (from != null) {
- from = d3_geo_circleAngle(cr, from);
- to = d3_geo_circleAngle(cr, to);
- if (direction > 0 ? from < to : from > to) from += direction * 2 * π;
- } else {
- from = radius + direction * 2 * π;
- to = radius;
- }
- var point;
- for (var step = direction * precision, t = from; direction > 0 ? t > to : t
< to; t -= step) {
- listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr *
Math.sin(t) ]))[0], point[1]);
- }
+ d3_geo_pathCentroid.lineEnd = function() {
+ nextPoint(x00, y00);
};
}
- function d3_geo_circleAngle(cr, point) {
- var a = d3_geo_cartesian(point);
- a[0] -= cr;
- d3_geo_cartesianNormalize(a);
- var angle = d3_acos(-a[1]);
- return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);
- }
- d3.geo.distance = function(a, b) {
- var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians,
sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0),
sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;
- return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 *
cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);
- };
- d3.geo.graticule = function() {
- var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y,
precision = 2.5;
- function graticule() {
- return {
- type: "MultiLineString",
- coordinates: lines()
- };
+ function d3_geo_pathContext(context) {
+ var pointRadius = 4.5;
+ var stream = {
+ point: point,
+ lineStart: function() {
+ stream.point = pointLineStart;
+ },
+ lineEnd: lineEnd,
+ polygonStart: function() {
+ stream.lineEnd = lineEndPolygon;
+ },
+ polygonEnd: function() {
+ stream.lineEnd = lineEnd;
+ stream.point = point;
+ },
+ pointRadius: function(_) {
+ pointRadius = _;
+ return stream;
+ },
+ result: d3_noop
+ };
+ function point(x, y) {
+ context.moveTo(x, y);
+ context.arc(x, y, pointRadius, 0, 2 * π);
}
- function lines() {
- return d3.range(Math.ceil(X0 / DX) * DX, X1,
DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1,
DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {
- return Math.abs(x % DX) > ε;
- }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {
- return Math.abs(y % DY) > ε;
- }).map(y));
+ function pointLineStart(x, y) {
+ context.moveTo(x, y);
+ stream.point = pointLine;
}
- graticule.lines = function() {
- return lines().map(function(coordinates) {
- return {
- type: "LineString",
- coordinates: coordinates
- };
- });
- };
- graticule.outline = function() {
- return {
- type: "Polygon",
- coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1),
Y(Y0).reverse().slice(1)) ]
- };
- };
- graticule.extent = function(_) {
- if (!arguments.length) return graticule.minorExtent();
- return graticule.majorExtent(_).minorExtent(_);
- };
- graticule.majorExtent = function(_) {
- if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];
- X0 = +_[0][0], X1 = +_[1][0];
- Y0 = +_[0][1], Y1 = +_[1][1];
- if (X0 > X1) _ = X0, X0 = X1, X1 = _;
- if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;
- return graticule.precision(precision);
- };
- graticule.minorExtent = function(_) {
- if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];
- x0 = +_[0][0], x1 = +_[1][0];
- y0 = +_[0][1], y1 = +_[1][1];
- if (x0 > x1) _ = x0, x0 = x1, x1 = _;
- if (y0 > y1) _ = y0, y0 = y1, y1 = _;
- return graticule.precision(precision);
- };
- graticule.step = function(_) {
- if (!arguments.length) return graticule.minorStep();
- return graticule.majorStep(_).minorStep(_);
- };
- graticule.majorStep = function(_) {
- if (!arguments.length) return [ DX, DY ];
- DX = +_[0], DY = +_[1];
- return graticule;
- };
- graticule.minorStep = function(_) {
- if (!arguments.length) return [ dx, dy ];
- dx = +_[0], dy = +_[1];
- return graticule;
- };
- graticule.precision = function(_) {
- if (!arguments.length) return precision;
- precision = +_;
- x = d3_geo_graticuleX(y0, y1, 90);
- y = d3_geo_graticuleY(x0, x1, precision);
- X = d3_geo_graticuleX(Y0, Y1, 90);
- Y = d3_geo_graticuleY(X0, X1, precision);
- return graticule;
- };
- return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [
-180, -80 - ε ], [ 180, 80 + ε ] ]);
- };
- function d3_geo_graticuleX(y0, y1, dy) {
- var y = d3.range(y0, y1 - ε, dy).concat(y1);
- return function(x) {
- return y.map(function(y) {
- return [ x, y ];
- });
- };
- }
- function d3_geo_graticuleY(x0, x1, dx) {
- var x = d3.range(x0, x1 - ε, dx).concat(x1);
- return function(y) {
- return x.map(function(x) {
- return [ x, y ];
- });
- };
- }
- function d3_source(d) {
- return d.source;
- }
- function d3_target(d) {
- return d.target;
- }
- d3.geo.greatArc = function() {
- var source = d3_source, source_, target = d3_target, target_;
- function greatArc() {
- return {
- type: "LineString",
- coordinates: [ source_ || source.apply(this, arguments), target_ ||
target.apply(this, arguments) ]
- };
+ function pointLine(x, y) {
+ context.lineTo(x, y);
}
- greatArc.distance = function() {
- return d3.geo.distance(source_ || source.apply(this, arguments), target_ ||
target.apply(this, arguments));
- };
- greatArc.source = function(_) {
- if (!arguments.length) return source;
- source = _, source_ = typeof _ === "function" ? null : _;
- return greatArc;
- };
- greatArc.target = function(_) {
- if (!arguments.length) return target;
- target = _, target_ = typeof _ === "function" ? null : _;
- return greatArc;
- };
- greatArc.precision = function() {
- return arguments.length ? greatArc : 0;
- };
- return greatArc;
- };
- d3.geo.interpolate = function(source, target) {
- return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] *
d3_radians, target[1] * d3_radians);
- };
- function d3_geo_interpolate(x0, y0, x1, y1) {
- var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1),
kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 *
Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 *
d3_haversin(x1 - x0))), k = 1 / Math.sin(d);
- var interpolate = d ? function(t) {
- var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A
* ky0 + B * ky1, z = A * sy0 + B * sy1;
- return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) *
d3_degrees ];
- } : function() {
- return [ x0 * d3_degrees, y0 * d3_degrees ];
- };
- interpolate.distance = d;
- return interpolate;
+ function lineEnd() {
+ stream.point = point;
+ }
+ function lineEndPolygon() {
+ context.closePath();
+ }
+ return stream;
}
- d3.geo.length = function(object) {
- d3_geo_lengthSum = 0;
- d3.geo.stream(object, d3_geo_length);
- return d3_geo_lengthSum;
- };
- var d3_geo_lengthSum;
- var d3_geo_length = {
- sphere: d3_noop,
- point: d3_noop,
- lineStart: d3_geo_lengthLineStart,
- lineEnd: d3_noop,
- polygonStart: d3_noop,
- polygonEnd: d3_noop
- };
- function d3_geo_lengthLineStart() {
- var λ0, sinφ0, cosφ0;
- d3_geo_length.point = function(λ, φ) {
- λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);
- d3_geo_length.point = nextPoint;
- };
- d3_geo_length.lineEnd = function() {
- d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;
- };
- function nextPoint(λ, φ) {
- var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = Math.abs((λ *=
d3_radians) - λ0), cosΔλ = Math.cos(t);
- d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0
* sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);
- λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;
+ function d3_geo_resample(project) {
+ var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;
+ function resample(stream) {
+ var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;
+ var resample = {
+ point: point,
+ lineStart: lineStart,
+ lineEnd: lineEnd,
+ polygonStart: function() {
+ stream.polygonStart();
+ resample.lineStart = ringStart;
+ },
+ polygonEnd: function() {
+ stream.polygonEnd();
+ resample.lineStart = lineStart;
+ }
+ };
+ function point(x, y) {
+ x = project(x, y);
+ stream.point(x[0], x[1]);
+ }
+ function lineStart() {
+ x0 = NaN;
+ resample.point = linePoint;
+ stream.lineStart();
+ }
+ function linePoint(λ, φ) {
+ var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);
+ resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0],
b0 = c[1], c0 = c[2], maxDepth, stream);
+ stream.point(x0, y0);
+ }
+ function lineEnd() {
+ resample.point = point;
+ stream.lineEnd();
+ }
+ function ringStart() {
+ lineStart();
+ resample.point = ringPoint;
+ resample.lineEnd = ringEnd;
+ }
+ function ringPoint(λ, φ) {
+ linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;
+ resample.point = linePoint;
+ }
+ function ringEnd() {
+ resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth,
stream);
+ resample.lineEnd = lineEnd;
+ lineEnd();
+ }
+ return resample;
}
- }
- function d3_geo_conic(projectAt) {
- var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);
- p.parallels = function(_) {
- if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];
- return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);
- };
- return p;
- }
- function d3_geo_conicEqualArea(φ0, φ1) {
- var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n -
sinφ0), ρ0 = Math.sqrt(C) / n;
- function forward(λ, φ) {
- var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;
- return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];
+ function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth,
stream) {
+ var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;
+ if (d2 > 4 * δ2 && depth--) {
+ var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c),
φ2 = Math.asin(c /= m), λ2 = Math.abs(Math.abs(c) - 1) < ε ? (λ0 + λ1) / 2 :
Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0,
dz = dy * dx2 - dx * dy2;
+ if (dz * dz / d2 > δ2 || Math.abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 ||
a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {
+ resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth,
stream);
+ stream.point(x2, y2);
+ resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);
+ }
+ }
}
- forward.invert = function(x, y) {
- var ρ0_y = ρ0 - y;
- return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2
* n)) ];
+ resample.precision = function(_) {
+ if (!arguments.length) return Math.sqrt(δ2);
+ maxDepth = (δ2 = _ * _) > 0 && 16;
+ return resample;
};
- return forward;
+ return resample;
}
- (d3.geo.conicEqualArea = function() {
- return d3_geo_conic(d3_geo_conicEqualArea);
- }).raw = d3_geo_conicEqualArea;
- d3.geo.albers = function() {
- return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([
29.5, 45.5 ]).scale(1070);
- };
- d3.geo.albersUsa = function() {
- var lower48 = d3.geo.albers();
- var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5
]).parallels([ 55, 65 ]);
- var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9
]).parallels([ 8, 18 ]);
- var point, pointStream = {
- point: function(x, y) {
- point = [ x, y ];
+ d3.geo.path = function() {
+ var pointRadius = 4.5, projection, context, projectStream, contextStream,
cacheStream;
+ function path(object) {
+ if (object) {
+ if (typeof pointRadius === "function")
contextStream.pointRadius(+pointRadius.apply(this, arguments));
+ if (!cacheStream || !cacheStream.valid) cacheStream =
projectStream(contextStream);
+ d3.geo.stream(object, cacheStream);
}
- }, lower48Point, alaskaPoint, hawaiiPoint;
- function albersUsa(coordinates) {
- var x = coordinates[0], y = coordinates[1];
- point = null;
- (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);
- return point;
+ return contextStream.result();
}
- albersUsa.invert = function(coordinates) {
- var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k,
y = (coordinates[1] - t[1]) / k;
- return (y >= .12 && y < .234 && x >= -.425 && x
< -.214 ? alaska : y >= .166 && y < .234 && x >= -.214
&& x < -.115 ? hawaii : lower48).invert(coordinates);
+ path.area = function(object) {
+ d3_geo_pathAreaSum = 0;
+ d3.geo.stream(object, projectStream(d3_geo_pathArea));
+ return d3_geo_pathAreaSum;
};
- albersUsa.stream = function(stream) {
- var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream),
hawaiiStream = hawaii.stream(stream);
+ path.centroid = function(object) {
+ d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 =
d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 =
d3_geo_centroidZ2 = 0;
+ d3.geo.stream(object, projectStream(d3_geo_pathCentroid));
+ return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2,
d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 /
d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [
d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN,
NaN ];
+ };
+ path.bounds = function(object) {
+ d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 =
d3_geo_pathBoundsY0 = Infinity);
+ d3.geo.stream(object, projectStream(d3_geo_pathBounds));
+ return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1,
d3_geo_pathBoundsY1 ] ];
+ };
+ path.projection = function(_) {
+ if (!arguments.length) return projection;
+ projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) :
d3_identity;
+ return reset();
+ };
+ path.context = function(_) {
+ if (!arguments.length) return context;
+ contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new
d3_geo_pathContext(_);
+ if (typeof pointRadius !== "function")
contextStream.pointRadius(pointRadius);
+ return reset();
+ };
+ path.pointRadius = function(_) {
+ if (!arguments.length) return pointRadius;
+ pointRadius = typeof _ === "function" ? _ :
(contextStream.pointRadius(+_), +_);
+ return path;
+ };
+ function reset() {
+ cacheStream = null;
+ return path;
+ }
+ return path.projection(d3.geo.albersUsa()).context(null);
+ };
+ function d3_geo_pathProjectStream(project) {
+ var resample = d3_geo_resample(function(λ, φ) {
+ return project([ λ * d3_degrees, φ * d3_degrees ]);
+ });
+ return function(stream) {
+ stream = resample(stream);
return {
- point: function(x, y) {
- lower48Stream.point(x, y);
- alaskaStream.point(x, y);
- hawaiiStream.point(x, y);
+ point: function(λ, φ) {
+ stream.point(λ * d3_radians, φ * d3_radians);
},
sphere: function() {
- lower48Stream.sphere();
- alaskaStream.sphere();
- hawaiiStream.sphere();
+ stream.sphere();
},
lineStart: function() {
- lower48Stream.lineStart();
- alaskaStream.lineStart();
- hawaiiStream.lineStart();
+ stream.lineStart();
},
lineEnd: function() {
- lower48Stream.lineEnd();
- alaskaStream.lineEnd();
- hawaiiStream.lineEnd();
+ stream.lineEnd();
},
polygonStart: function() {
- lower48Stream.polygonStart();
- alaskaStream.polygonStart();
- hawaiiStream.polygonStart();
+ stream.polygonStart();
},
polygonEnd: function() {
- lower48Stream.polygonEnd();
- alaskaStream.polygonEnd();
- hawaiiStream.polygonEnd();
+ stream.polygonEnd();
}
};
};
- albersUsa.precision = function(_) {
- if (!arguments.length) return lower48.precision();
- lower48.precision(_);
- alaska.precision(_);
- hawaii.precision(_);
- return albersUsa;
+ }
+ d3.geo.projection = d3_geo_projection;
+ d3.geo.projectionMutator = d3_geo_projectionMutator;
+ function d3_geo_projection(project) {
+ return d3_geo_projectionMutator(function() {
+ return project;
+ })();
+ }
+ function d3_geo_projectionMutator(projectAt) {
+ var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y)
{
+ x = project(x, y);
+ return [ x[0] * k + δx, δy - x[1] * k ];
+ }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip
= d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null,
stream;
+ function projection(point) {
+ point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);
+ return [ point[0] * k + δx, δy - point[1] * k ];
+ }
+ function invert(point) {
+ point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);
+ return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];
+ }
+ projection.stream = function(output) {
+ if (stream) stream.valid = false;
+ stream = d3_geo_projectionRadiansRotate(rotate,
preclip(projectResample(postclip(output))));
+ stream.valid = true;
+ return stream;
};
- albersUsa.scale = function(_) {
- if (!arguments.length) return lower48.scale();
- lower48.scale(_);
- alaska.scale(_ * .35);
- hawaii.scale(_);
- return albersUsa.translate(lower48.translate());
+ projection.clipAngle = function(_) {
+ if (!arguments.length) return clipAngle;
+ preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) :
d3_geo_clipCircle((clipAngle = +_) * d3_radians);
+ return invalidate();
};
- albersUsa.translate = function(_) {
- if (!arguments.length) return lower48.translate();
- var k = lower48.scale(), x = +_[0], y = +_[1];
- lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [
x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;
- alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x -
.425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ]
]).stream(pointStream).point;
- hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x -
.214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ]
]).stream(pointStream).point;
- return albersUsa;
+ projection.clipExtent = function(_) {
+ if (!arguments.length) return clipExtent;
+ clipExtent = _;
+ postclip = _ == null ? d3_identity : d3_geo_clipView(_[0][0], _[0][1], _[1][0],
_[1][1]);
+ return invalidate();
};
- return albersUsa.scale(1070);
- };
- var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {
- point: d3_noop,
- lineStart: d3_noop,
- lineEnd: d3_noop,
- polygonStart: function() {
- d3_geo_pathAreaPolygon = 0;
- d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;
- },
- polygonEnd: function() {
- d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point =
d3_noop;
- d3_geo_pathAreaSum += Math.abs(d3_geo_pathAreaPolygon / 2);
- }
- };
- function d3_geo_pathAreaRingStart() {
- var x00, y00, x0, y0;
- d3_geo_pathArea.point = function(x, y) {
- d3_geo_pathArea.point = nextPoint;
- x00 = x0 = x, y00 = y0 = y;
+ projection.scale = function(_) {
+ if (!arguments.length) return k;
+ k = +_;
+ return reset();
};
- function nextPoint(x, y) {
- d3_geo_pathAreaPolygon += y0 * x - x0 * y;
- x0 = x, y0 = y;
- }
- d3_geo_pathArea.lineEnd = function() {
- nextPoint(x00, y00);
+ projection.translate = function(_) {
+ if (!arguments.length) return [ x, y ];
+ x = +_[0];
+ y = +_[1];
+ return reset();
+ };
+ projection.center = function(_) {
+ if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];
+ λ = _[0] % 360 * d3_radians;
+ φ = _[1] % 360 * d3_radians;
+ return reset();
+ };
+ projection.rotate = function(_) {
+ if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees
];
+ δλ = _[0] % 360 * d3_radians;
+ δφ = _[1] % 360 * d3_radians;
+ δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;
+ return reset();
+ };
+ d3.rebind(projection, projectResample, "precision");
+ function reset() {
+ projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);
+ var center = project(λ, φ);
+ δx = x - center[0] * k;
+ δy = y + center[1] * k;
+ return invalidate();
+ }
+ function invalidate() {
+ if (stream) {
+ stream.valid = false;
+ stream = null;
+ }
+ return projection;
+ }
+ return function() {
+ project = projectAt.apply(this, arguments);
+ projection.invert = project.invert && invert;
+ return reset();
};
}
- var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1,
d3_geo_pathBoundsY1;
- var d3_geo_pathBounds = {
- point: d3_geo_pathBoundsPoint,
- lineStart: d3_noop,
- lineEnd: d3_noop,
- polygonStart: d3_noop,
- polygonEnd: d3_noop
- };
- function d3_geo_pathBoundsPoint(x, y) {
- if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;
- if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;
- if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;
- if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;
- }
- function d3_geo_pathBuffer() {
- var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];
- var stream = {
- point: point,
+ function d3_geo_projectionRadiansRotate(rotate, stream) {
+ return {
+ point: function(x, y) {
+ y = rotate(x * d3_radians, y * d3_radians), x = y[0];
+ stream.point(x > π ? x - 2 * π : x < -π ? x + 2 * π : x, y[1]);
+ },
+ sphere: function() {
+ stream.sphere();
+ },
lineStart: function() {
- stream.point = pointLineStart;
+ stream.lineStart();
+ },
+ lineEnd: function() {
+ stream.lineEnd();
},
- lineEnd: lineEnd,
polygonStart: function() {
- stream.lineEnd = lineEndPolygon;
+ stream.polygonStart();
},
polygonEnd: function() {
- stream.lineEnd = lineEnd;
- stream.point = point;
- },
- pointRadius: function(_) {
- pointCircle = d3_geo_pathBufferCircle(_);
- return stream;
- },
- result: function() {
- if (buffer.length) {
- var result = buffer.join("");
- buffer = [];
- return result;
- }
+ stream.polygonEnd();
}
};
- function point(x, y) {
- buffer.push("M", x, ",", y, pointCircle);
- }
- function pointLineStart(x, y) {
- buffer.push("M", x, ",", y);
- stream.point = pointLine;
- }
- function pointLine(x, y) {
- buffer.push("L", x, ",", y);
- }
- function lineEnd() {
- stream.point = point;
- }
- function lineEndPolygon() {
- buffer.push("Z");
- }
- return stream;
}
- function d3_geo_pathBufferCircle(radius) {
- return "m0," + radius + "a" + radius + "," + radius +
" 0 1,1 0," + -2 * radius + "a" + radius + "," + radius +
" 0 1,1 0," + 2 * radius + "z";
+ function d3_geo_equirectangular(λ, φ) {
+ return [ λ, φ ];
}
- var d3_geo_pathCentroid = {
- point: d3_geo_pathCentroidPoint,
- lineStart: d3_geo_pathCentroidLineStart,
- lineEnd: d3_geo_pathCentroidLineEnd,
- polygonStart: function() {
- d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;
- },
- polygonEnd: function() {
- d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;
- d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;
- d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;
+ (d3.geo.equirectangular = function() {
+ return d3_geo_projection(d3_geo_equirectangular);
+ }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;
+ d3.geo.rotation = function(rotate) {
+ rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians,
rotate.length > 2 ? rotate[2] * d3_radians : 0);
+ function forward(coordinates) {
+ coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);
+ return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;
}
+ forward.invert = function(coordinates) {
+ coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] *
d3_radians);
+ return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;
+ };
+ return forward;
};
- function d3_geo_pathCentroidPoint(x, y) {
- if (d3_geo_centroidDimension) return;
- d3_geo_centroidX += x;
- d3_geo_centroidY += y;
- ++d3_geo_centroidZ;
+ function d3_geo_rotation(δλ, δφ, δγ) {
+ return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ,
δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) :
d3_geo_equirectangular;
}
- function d3_geo_pathCentroidLineStart() {
- var x0, y0;
- if (d3_geo_centroidDimension !== 1) {
- if (d3_geo_centroidDimension < 1) {
- d3_geo_centroidDimension = 1;
- d3_geo_centroidX = d3_geo_centroidY = d3_geo_centroidZ = 0;
- } else return;
+ function d3_geo_forwardRotationλ(δλ) {
+ return function(λ, φ) {
+ return λ += δλ, [ λ > π ? λ - 2 * π : λ < -π ? λ + 2 * π : λ, φ ];
+ };
+ }
+ function d3_geo_rotationλ(δλ) {
+ var rotation = d3_geo_forwardRotationλ(δλ);
+ rotation.invert = d3_geo_forwardRotationλ(-δλ);
+ return rotation;
+ }
+ function d3_geo_rotationφγ(δφ, δγ) {
+ var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ =
Math.sin(δγ);
+ function rotation(λ, φ) {
+ var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z =
Math.sin(φ), k = z * cosδφ + x * sinδφ;
+ return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k *
cosδγ + y * sinδγ) ];
}
- d3_geo_pathCentroid.point = function(x, y) {
- d3_geo_pathCentroid.point = nextPoint;
- x0 = x, y0 = y;
+ rotation.invert = function(λ, φ) {
+ var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z =
Math.sin(φ), k = z * cosδγ - y * sinδγ;
+ return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k *
cosδφ - x * sinδφ) ];
};
- function nextPoint(x, y) {
- var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);
- d3_geo_centroidX += z * (x0 + x) / 2;
- d3_geo_centroidY += z * (y0 + y) / 2;
- d3_geo_centroidZ += z;
- x0 = x, y0 = y;
+ return rotation;
+ }
+ d3.geo.circle = function() {
+ var origin = [ 0, 0 ], angle, precision = 6, interpolate;
+ function circle() {
+ var center = typeof origin === "function" ? origin.apply(this, arguments)
: origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians,
0).invert, ring = [];
+ interpolate(null, null, 1, {
+ point: function(x, y) {
+ ring.push(x = rotate(x, y));
+ x[0] *= d3_degrees, x[1] *= d3_degrees;
+ }
+ });
+ return {
+ type: "Polygon",
+ coordinates: [ ring ]
+ };
}
+ circle.origin = function(x) {
+ if (!arguments.length) return origin;
+ origin = x;
+ return circle;
+ };
+ circle.angle = function(x) {
+ if (!arguments.length) return angle;
+ interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision *
d3_radians);
+ return circle;
+ };
+ circle.precision = function(_) {
+ if (!arguments.length) return precision;
+ interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) *
d3_radians);
+ return circle;
+ };
+ return circle.angle(90);
+ };
+ function d3_geo_circleInterpolate(radius, precision) {
+ var cr = Math.cos(radius), sr = Math.sin(radius);
+ return function(from, to, direction, listener) {
+ if (from != null) {
+ from = d3_geo_circleAngle(cr, from);
+ to = d3_geo_circleAngle(cr, to);
+ if (direction > 0 ? from < to : from > to) from += direction * 2 * π;
+ } else {
+ from = radius + direction * 2 * π;
+ to = radius;
+ }
+ var point;
+ for (var step = direction * precision, t = from; direction > 0 ? t > to : t
< to; t -= step) {
+ listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr *
Math.sin(t) ]))[0], point[1]);
+ }
+ };
}
- function d3_geo_pathCentroidLineEnd() {
- d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;
+ function d3_geo_circleAngle(cr, point) {
+ var a = d3_geo_cartesian(point);
+ a[0] -= cr;
+ d3_geo_cartesianNormalize(a);
+ var angle = d3_acos(-a[1]);
+ return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);
}
- function d3_geo_pathCentroidRingStart() {
- var x00, y00, x0, y0;
- if (d3_geo_centroidDimension < 2) {
- d3_geo_centroidDimension = 2;
- d3_geo_centroidX = d3_geo_centroidY = d3_geo_centroidZ = 0;
+ d3.geo.distance = function(a, b) {
+ var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians,
sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0),
sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;
+ return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 *
cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);
+ };
+ d3.geo.graticule = function() {
+ var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y,
precision = 2.5;
+ function graticule() {
+ return {
+ type: "MultiLineString",
+ coordinates: lines()
+ };
}
- d3_geo_pathCentroid.point = function(x, y) {
- d3_geo_pathCentroid.point = nextPoint;
- x00 = x0 = x, y00 = y0 = y;
- };
- function nextPoint(x, y) {
- var z = y0 * x - x0 * y;
- d3_geo_centroidX += z * (x0 + x);
- d3_geo_centroidY += z * (y0 + y);
- d3_geo_centroidZ += z * 3;
- x0 = x, y0 = y;
+ function lines() {
+ return d3.range(Math.ceil(X0 / DX) * DX, X1,
DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1,
DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {
+ return Math.abs(x % DX) > ε;
+ }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {
+ return Math.abs(y % DY) > ε;
+ }).map(y));
}
- d3_geo_pathCentroid.lineEnd = function() {
- nextPoint(x00, y00);
+ graticule.lines = function() {
+ return lines().map(function(coordinates) {
+ return {
+ type: "LineString",
+ coordinates: coordinates
+ };
+ });
+ };
+ graticule.outline = function() {
+ return {
+ type: "Polygon",
+ coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1),
Y(Y0).reverse().slice(1)) ]
+ };
+ };
+ graticule.extent = function(_) {
+ if (!arguments.length) return graticule.minorExtent();
+ return graticule.majorExtent(_).minorExtent(_);
+ };
+ graticule.majorExtent = function(_) {
+ if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];
+ X0 = +_[0][0], X1 = +_[1][0];
+ Y0 = +_[0][1], Y1 = +_[1][1];
+ if (X0 > X1) _ = X0, X0 = X1, X1 = _;
+ if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;
+ return graticule.precision(precision);
+ };
+ graticule.minorExtent = function(_) {
+ if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];
+ x0 = +_[0][0], x1 = +_[1][0];
+ y0 = +_[0][1], y1 = +_[1][1];
+ if (x0 > x1) _ = x0, x0 = x1, x1 = _;
+ if (y0 > y1) _ = y0, y0 = y1, y1 = _;
+ return graticule.precision(precision);
+ };
+ graticule.step = function(_) {
+ if (!arguments.length) return graticule.minorStep();
+ return graticule.majorStep(_).minorStep(_);
+ };
+ graticule.majorStep = function(_) {
+ if (!arguments.length) return [ DX, DY ];
+ DX = +_[0], DY = +_[1];
+ return graticule;
+ };
+ graticule.minorStep = function(_) {
+ if (!arguments.length) return [ dx, dy ];
+ dx = +_[0], dy = +_[1];
+ return graticule;
+ };
+ graticule.precision = function(_) {
+ if (!arguments.length) return precision;
+ precision = +_;
+ x = d3_geo_graticuleX(y0, y1, 90);
+ y = d3_geo_graticuleY(x0, x1, precision);
+ X = d3_geo_graticuleX(Y0, Y1, 90);
+ Y = d3_geo_graticuleY(X0, X1, precision);
+ return graticule;
+ };
+ return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [
-180, -80 - ε ], [ 180, 80 + ε ] ]);
+ };
+ function d3_geo_graticuleX(y0, y1, dy) {
+ var y = d3.range(y0, y1 - ε, dy).concat(y1);
+ return function(x) {
+ return y.map(function(y) {
+ return [ x, y ];
+ });
};
}
- function d3_geo_pathContext(context) {
- var pointRadius = 4.5;
- var stream = {
- point: point,
- lineStart: function() {
- stream.point = pointLineStart;
- },
- lineEnd: lineEnd,
- polygonStart: function() {
- stream.lineEnd = lineEndPolygon;
- },
- polygonEnd: function() {
- stream.lineEnd = lineEnd;
- stream.point = point;
- },
- pointRadius: function(_) {
- pointRadius = _;
- return stream;
- },
- result: d3_noop
+ function d3_geo_graticuleY(x0, x1, dx) {
+ var x = d3.range(x0, x1 - ε, dx).concat(x1);
+ return function(y) {
+ return x.map(function(x) {
+ return [ x, y ];
+ });
};
- function point(x, y) {
- context.moveTo(x, y);
- context.arc(x, y, pointRadius, 0, 2 * π);
- }
- function pointLineStart(x, y) {
- context.moveTo(x, y);
- stream.point = pointLine;
- }
- function pointLine(x, y) {
- context.lineTo(x, y);
- }
- function lineEnd() {
- stream.point = point;
- }
- function lineEndPolygon() {
- context.closePath();
- }
- return stream;
}
- d3.geo.path = function() {
- var pointRadius = 4.5, projection, context, projectStream, contextStream;
- function path(object) {
- if (object) d3.geo.stream(object, projectStream(contextStream.pointRadius(typeof
pointRadius === "function" ? +pointRadius.apply(this, arguments) :
pointRadius)));
- return contextStream.result();
+ function d3_source(d) {
+ return d.source;
+ }
+ function d3_target(d) {
+ return d.target;
+ }
+ d3.geo.greatArc = function() {
+ var source = d3_source, source_, target = d3_target, target_;
+ function greatArc() {
+ return {
+ type: "LineString",
+ coordinates: [ source_ || source.apply(this, arguments), target_ ||
target.apply(this, arguments) ]
+ };
}
- path.area = function(object) {
- d3_geo_pathAreaSum = 0;
- d3.geo.stream(object, projectStream(d3_geo_pathArea));
- return d3_geo_pathAreaSum;
- };
- path.centroid = function(object) {
- d3_geo_centroidDimension = d3_geo_centroidX = d3_geo_centroidY = d3_geo_centroidZ =
0;
- d3.geo.stream(object, projectStream(d3_geo_pathCentroid));
- return d3_geo_centroidZ ? [ d3_geo_centroidX / d3_geo_centroidZ, d3_geo_centroidY /
d3_geo_centroidZ ] : undefined;
+ greatArc.distance = function() {
+ return d3.geo.distance(source_ || source.apply(this, arguments), target_ ||
target.apply(this, arguments));
};
- path.bounds = function(object) {
- d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 =
d3_geo_pathBoundsY0 = Infinity);
- d3.geo.stream(object, projectStream(d3_geo_pathBounds));
- return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1,
d3_geo_pathBoundsY1 ] ];
+ greatArc.source = function(_) {
+ if (!arguments.length) return source;
+ source = _, source_ = typeof _ === "function" ? null : _;
+ return greatArc;
};
- path.projection = function(_) {
- if (!arguments.length) return projection;
- projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) :
d3_identity;
- return path;
+ greatArc.target = function(_) {
+ if (!arguments.length) return target;
+ target = _, target_ = typeof _ === "function" ? null : _;
+ return greatArc;
};
- path.context = function(_) {
- if (!arguments.length) return context;
- contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new
d3_geo_pathContext(_);
- return path;
+ greatArc.precision = function() {
+ return arguments.length ? greatArc : 0;
};
- path.pointRadius = function(_) {
- if (!arguments.length) return pointRadius;
- pointRadius = typeof _ === "function" ? _ : +_;
- return path;
+ return greatArc;
+ };
+ d3.geo.interpolate = function(source, target) {
+ return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] *
d3_radians, target[1] * d3_radians);
+ };
+ function d3_geo_interpolate(x0, y0, x1, y1) {
+ var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1),
kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 *
Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 *
d3_haversin(x1 - x0))), k = 1 / Math.sin(d);
+ var interpolate = d ? function(t) {
+ var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A
* ky0 + B * ky1, z = A * sy0 + B * sy1;
+ return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) *
d3_degrees ];
+ } : function() {
+ return [ x0 * d3_degrees, y0 * d3_degrees ];
};
- return path.projection(d3.geo.albersUsa()).context(null);
+ interpolate.distance = d;
+ return interpolate;
+ }
+ d3.geo.length = function(object) {
+ d3_geo_lengthSum = 0;
+ d3.geo.stream(object, d3_geo_length);
+ return d3_geo_lengthSum;
};
- function d3_geo_pathProjectStream(project) {
- var resample = d3_geo_resample(function(λ, φ) {
- return project([ λ * d3_degrees, φ * d3_degrees ]);
- });
- return function(stream) {
- stream = resample(stream);
- return {
- point: function(λ, φ) {
- stream.point(λ * d3_radians, φ * d3_radians);
- },
- sphere: function() {
- stream.sphere();
- },
- lineStart: function() {
- stream.lineStart();
- },
- lineEnd: function() {
- stream.lineEnd();
- },
- polygonStart: function() {
- stream.polygonStart();
- },
- polygonEnd: function() {
- stream.polygonEnd();
- }
- };
+ var d3_geo_lengthSum;
+ var d3_geo_length = {
+ sphere: d3_noop,
+ point: d3_noop,
+ lineStart: d3_geo_lengthLineStart,
+ lineEnd: d3_noop,
+ polygonStart: d3_noop,
+ polygonEnd: d3_noop
+ };
+ function d3_geo_lengthLineStart() {
+ var λ0, sinφ0, cosφ0;
+ d3_geo_length.point = function(λ, φ) {
+ λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);
+ d3_geo_length.point = nextPoint;
+ };
+ d3_geo_length.lineEnd = function() {
+ d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;
};
+ function nextPoint(λ, φ) {
+ var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = Math.abs((λ *=
d3_radians) - λ0), cosΔλ = Math.cos(t);
+ d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0
* sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);
+ λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;
+ }
}
function d3_geo_azimuthal(scale, angle) {
function azimuthal(λ, φ) {
@@ -3891,6 +3993,7 @@ d3 = function() {
var d3_svg_lineInterpolators = d3.map({
linear: d3_svg_lineLinear,
"linear-closed": d3_svg_lineLinearClosed,
+ step: d3_svg_lineStep,
"step-before": d3_svg_lineStepBefore,
"step-after": d3_svg_lineStepAfter,
basis: d3_svg_lineBasis,
@@ -3912,6 +4015,12 @@ d3 = function() {
function d3_svg_lineLinearClosed(points) {
return d3_svg_lineLinear(points) + "Z";
}
+ function d3_svg_lineStep(points) {
+ var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ];
+ while (++i < n) path.push("H", (p[0] + (p = points[i])[0]) / 2,
"V", p[1]);
+ if (n > 1) path.push("H", p[0]);
+ return path.join("");
+ }
function d3_svg_lineStepBefore(points) {
var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ];
while (++i < n) path.push("V", (p = points[i])[1], "H",
p[0]);
@@ -4249,15 +4358,15 @@ d3 = function() {
return triangles;
};
d3.geom.voronoi = function(points) {
- var size = null, x = d3_svg_lineX, y = d3_svg_lineY, clip;
+ var x = d3_svg_lineX, y = d3_svg_lineY, clipPolygon = null;
if (arguments.length) return voronoi(points);
function voronoi(data) {
var points, polygons = data.map(function() {
return [];
}), fx = d3_functor(x), fy = d3_functor(y), d, i, n = data.length, Z = 1e6;
- if (fx === d3_svg_lineX && fy === d3_svg_lineY) points = data; else for
(points = [],
+ if (fx === d3_svg_lineX && fy === d3_svg_lineY) points = data; else for
(points = new Array(n),
i = 0; i < n; ++i) {
- points.push([ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ]);
+ points[i] = [ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ];
}
d3_geom_voronoiTessellate(points, function(e) {
var s1, s2, x1, x2, y1, y2;
@@ -4316,7 +4425,7 @@ d3 = function() {
}
}
});
- if (clip) for (i = 0; i < n; ++i) clip(polygons[i]);
+ if (clipPolygon) for (i = 0; i < n; ++i) clipPolygon.clip(polygons[i]);
for (i = 0; i < n; ++i) polygons[i].point = data[i];
return polygons;
}
@@ -4326,22 +4435,25 @@ d3 = function() {
voronoi.y = function(_) {
return arguments.length ? (y = _, voronoi) : y;
};
- voronoi.size = function(_) {
- if (!arguments.length) return size;
- if (_ == null) {
- clip = null;
- } else {
- size = [ +_[0], +_[1] ];
- clip = d3.geom.polygon([ [ 0, 0 ], [ 0, size[1] ], size, [ size[0], 0 ] ]).clip;
+ voronoi.clipExtent = function(_) {
+ if (!arguments.length) return clipPolygon && [ clipPolygon[0],
clipPolygon[2] ];
+ if (_ == null) clipPolygon = null; else {
+ var x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], y2 = +_[1][1];
+ clipPolygon = d3.geom.polygon([ [ x1, y1 ], [ x1, y2 ], [ x2, y2 ], [ x2, y1 ]
]);
}
return voronoi;
};
+ voronoi.size = function(_) {
+ if (!arguments.length) return clipPolygon && clipPolygon[2];
+ return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);
+ };
voronoi.links = function(data) {
var points, graph = data.map(function() {
return [];
}), links = [], fx = d3_functor(x), fy = d3_functor(y), d, i, n = data.length;
- if (fx === d3_svg_lineX && fy === d3_svg_lineY) points = data; else for (i
= 0; i < n; ++i) {
- points.push([ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ]);
+ if (fx === d3_svg_lineX && fy === d3_svg_lineY) points = data; else for
(points = new Array(n),
+ i = 0; i < n; ++i) {
+ points[i] = [ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ];
}
d3_geom_voronoiTessellate(points, function(e) {
var l = e.region.l.index, r = e.region.r.index;
@@ -4356,11 +4468,9 @@ d3 = function() {
};
voronoi.triangles = function(data) {
if (x === d3_svg_lineX && y === d3_svg_lineY) return
d3.geom.delaunay(data);
- var points, point, fx = d3_functor(x), fy = d3_functor(y), d, i, n;
- for (i = 0, points = [], n = data.length; i < n; ++i) {
- point = [ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ];
- point.data = d;
- points.push(point);
+ var points = new Array(n), fx = d3_functor(x), fy = d3_functor(y), d, i = -1, n =
data.length;
+ while (++i < n) {
+ (points[i] = [ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ]).data = d;
}
return d3.geom.delaunay(points).map(function(triangle) {
return triangle.map(function(point) {
@@ -4735,14 +4845,15 @@ d3 = function() {
quadtree.y = function(_) {
return arguments.length ? (y = _, quadtree) : y;
};
+ quadtree.extent = function(_) {
+ if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];
+ if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 =
+_[1][0],
+ y2 = +_[1][1];
+ return quadtree;
+ };
quadtree.size = function(_) {
- if (!arguments.length) return x1 == null ? null : [ x2, y2 ];
- if (_ == null) {
- x1 = y1 = x2 = y2 = null;
- } else {
- x1 = y1 = 0;
- x2 = +_[0], y2 = +_[1];
- }
+ if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];
+ if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];
return quadtree;
};
return quadtree;
@@ -5930,7 +6041,7 @@ d3 = function() {
return [ d3.min(values), d3.max(values) ];
}
d3.layout.tree = function() {
- var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation =
d3_layout_treeSeparation, size = [ 1, 1 ];
+ var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation =
d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;
function tree(d, i) {
var nodes = hierarchy.call(this, d, i), root = nodes[0];
function firstWalk(node, previousSibling) {
@@ -6011,7 +6122,11 @@ d3 = function() {
firstWalk(root);
secondWalk(root, -root._tree.prelim);
var left = d3_layout_treeSearch(root, d3_layout_treeLeftmost), right =
d3_layout_treeSearch(root, d3_layout_treeRightmost), deep = d3_layout_treeSearch(root,
d3_layout_treeDeepest), x0 = left.x - separation(left, right) / 2, x1 = right.x +
separation(right, left) / 2, y1 = deep.depth || 1;
- d3_layout_treeVisitAfter(root, function(node) {
+ d3_layout_treeVisitAfter(root, nodeSize ? function(node) {
+ node.x *= size[0];
+ node.y = node.depth * size[1];
+ delete node._tree;
+ } : function(node) {
node.x = (node.x - x0) / (x1 - x0) * size[0];
node.y = node.depth / y1 * size[1];
delete node._tree;
@@ -6024,8 +6139,13 @@ d3 = function() {
return tree;
};
tree.size = function(x) {
- if (!arguments.length) return size;
- size = x;
+ if (!arguments.length) return nodeSize ? null : size;
+ nodeSize = (size = x) == null;
+ return tree;
+ };
+ tree.nodeSize = function(x) {
+ if (!arguments.length) return nodeSize ? size : null;
+ nodeSize = (size = x) != null;
return tree;
};
return d3_layout_hierarchyRebind(tree, hierarchy);
@@ -6100,18 +6220,16 @@ d3 = function() {
return vim._tree.ancestor.parent == node.parent ? vim._tree.ancestor : ancestor;
}
d3.layout.pack = function() {
- var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [
1, 1 ];
+ var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [
1, 1 ], radius;
function pack(d, i) {
- var nodes = hierarchy.call(this, d, i), root = nodes[0];
- root.x = 0;
- root.y = 0;
+ var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1],
r = radius || Math.sqrt;
+ root.x = root.y = 0;
d3_layout_treeVisitAfter(root, function(d) {
- d.r = Math.sqrt(d.value);
+ d.r = r(d.value);
});
d3_layout_treeVisitAfter(root, d3_layout_packSiblings);
- var w = size[0], h = size[1], k = Math.max(2 * root.r / w, 2 * root.r / h);
- if (padding > 0) {
- var dr = padding * k / 2;
+ if (padding) {
+ var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;
d3_layout_treeVisitAfter(root, function(d) {
d.r += dr;
});
@@ -6119,14 +6237,18 @@ d3 = function() {
d3_layout_treeVisitAfter(root, function(d) {
d.r -= dr;
});
- k = Math.max(2 * root.r / w, 2 * root.r / h);
}
- d3_layout_packTransform(root, w / 2, h / 2, 1 / k);
+ d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r /
w, 2 * root.r / h));
return nodes;
}
- pack.size = function(x) {
+ pack.size = function(_) {
if (!arguments.length) return size;
- size = x;
+ size = _;
+ return pack;
+ };
+ pack.radius = function(_) {
+ if (!arguments.length) return radius;
+ radius = _;
return pack;
};
pack.padding = function(_) {
@@ -6152,7 +6274,7 @@ d3 = function() {
}
function d3_layout_packIntersects(a, b) {
var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;
- return dr * dr - dx * dx - dy * dy > .001;
+ return .999 * dr * dr > dx * dx + dy * dy;
}
function d3_layout_packSiblings(node) {
if (!(nodes = node.children) || !(n = nodes.length)) return;
@@ -6250,7 +6372,7 @@ d3 = function() {
}
}
d3.layout.cluster = function() {
- var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation =
d3_layout_treeSeparation, size = [ 1, 1 ];
+ var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation =
d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;
function cluster(d, i) {
var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;
d3_layout_treeVisitAfter(root, function(node) {
@@ -6265,7 +6387,10 @@ d3 = function() {
}
});
var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 =
left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;
- d3_layout_treeVisitAfter(root, function(node) {
+ d3_layout_treeVisitAfter(root, nodeSize ? function(node) {
+ node.x = (node.x - root.x) * size[0];
+ node.y = (root.y - node.y) * size[1];
+ } : function(node) {
node.x = (node.x - x0) / (x1 - x0) * size[0];
node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];
});
@@ -6277,8 +6402,13 @@ d3 = function() {
return cluster;
};
cluster.size = function(x) {
- if (!arguments.length) return size;
- size = x;
+ if (!arguments.length) return nodeSize ? null : size;
+ nodeSize = (size = x) == null;
+ return cluster;
+ };
+ cluster.nodeSize = function(x) {
+ if (!arguments.length) return nodeSize ? size : null;
+ nodeSize = (size = x) != null;
return cluster;
};
return d3_layout_hierarchyRebind(cluster, hierarchy);
@@ -6522,12 +6652,24 @@ d3 = function() {
dx = i0, i0 = i1, i1 = dx;
dx = x0, x0 = x1, x1 = dx;
}
- if (nice = nice(x1 - x0)) {
- domain[i0] = nice.floor(x0);
- domain[i1] = nice.ceil(x1);
- }
+ domain[i0] = nice.floor(x0);
+ domain[i1] = nice.ceil(x1);
return domain;
}
+ function d3_scale_niceStep(step) {
+ return step ? {
+ floor: function(x) {
+ return Math.floor(x / step) * step;
+ },
+ ceil: function(x) {
+ return Math.ceil(x / step) * step;
+ }
+ } : d3_scale_niceIdentity;
+ }
+ var d3_scale_niceIdentity = {
+ floor: d3_identity,
+ ceil: d3_identity
+ };
function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {
var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;
if (domain[k] < domain[0]) {
@@ -6589,8 +6731,8 @@ d3 = function() {
scale.tickFormat = function(m, format) {
return d3_scale_linearTickFormat(domain, m, format);
};
- scale.nice = function() {
- d3_scale_nice(domain, d3_scale_linearNice);
+ scale.nice = function(m) {
+ d3_scale_linearNice(domain, m);
return rescale();
};
scale.copy = function() {
@@ -6601,16 +6743,12 @@ d3 = function() {
function d3_scale_linearRebind(scale, linear) {
return d3.rebind(scale, linear, "range", "rangeRound",
"interpolate", "clamp");
}
- function d3_scale_linearNice(dx) {
- dx = Math.pow(10, Math.round(Math.log(dx) / Math.LN10) - 1);
- return dx && {
- floor: function(x) {
- return Math.floor(x / dx) * dx;
- },
- ceil: function(x) {
- return Math.ceil(x / dx) * dx;
- }
- };
+ function d3_scale_linearNice(domain, m) {
+ return d3_scale_nice(domain, d3_scale_niceStep(m ? d3_scale_linearTickRange(domain,
m)[2] : d3_scale_linearNiceStep(domain)));
+ }
+ function d3_scale_linearNiceStep(domain) {
+ var extent = d3_scaleExtent(domain), span = extent[1] - extent[0];
+ return Math.pow(10, Math.round(Math.log(span) / Math.LN10) - 1);
}
function d3_scale_linearTickRange(domain, m) {
var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step =
Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;
@@ -6652,7 +6790,23 @@ d3 = function() {
return scale;
};
scale.nice = function() {
- linear.domain(d3_scale_nice(domain, nice).map(log));
+ function floor(x) {
+ return Math.pow(base, Math.floor(Math.log(x) / Math.log(base)));
+ }
+ function ceil(x) {
+ return Math.pow(base, Math.ceil(Math.log(x) / Math.log(base)));
+ }
+ linear.domain(d3_scale_nice(domain, log === d3_scale_logp ? {
+ floor: floor,
+ ceil: ceil
+ } : {
+ floor: function(x) {
+ return -ceil(-x);
+ },
+ ceil: function(x) {
+ return -floor(-x);
+ }
+ }).map(log));
return scale;
};
scale.ticks = function() {
@@ -6673,8 +6827,8 @@ d3 = function() {
return ticks;
};
scale.tickFormat = function(n, format) {
- if (arguments.length < 2) format = d3_scale_logFormat;
- if (!arguments.length) return format;
+ if (!arguments.length) return d3_scale_logFormat;
+ if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format
!== "function") format = d3.format(format);
var b = Math.log(base), k = Math.max(.1, n / scale.ticks().length), f = log ===
d3_scale_logn ? (e = -1e-12,
Math.floor) : (e = 1e-12, Math.ceil), e;
return function(d) {
@@ -6684,25 +6838,6 @@ d3 = function() {
scale.copy = function() {
return d3_scale_log(linear.copy(), base, log, pow, domain);
};
- function nice() {
- return log === d3_scale_logp ? {
- floor: floor,
- ceil: ceil
- } : {
- floor: function(x) {
- return -ceil(-x);
- },
- ceil: function(x) {
- return -floor(-x);
- }
- };
- }
- function floor(x) {
- return Math.pow(base, Math.floor(Math.log(x) / Math.log(base)));
- }
- function ceil(x) {
- return Math.pow(base, Math.ceil(Math.log(x) / Math.log(base)));
- }
return d3_scale_linearRebind(scale, linear);
}
var d3_scale_logFormat = d3.format(".0e");
@@ -6740,8 +6875,8 @@ d3 = function() {
scale.tickFormat = function(m, format) {
return d3_scale_linearTickFormat(domain, m, format);
};
- scale.nice = function() {
- return scale.domain(d3_scale_nice(domain, d3_scale_linearNice));
+ scale.nice = function(m) {
+ return scale.domain(d3_scale_linearNice(domain, m));
};
scale.exponent = function(x) {
if (!arguments.length) return exponent;
@@ -6873,8 +7008,7 @@ d3 = function() {
return scale;
}
function scale(x) {
- if (isNaN(x = +x)) return NaN;
- return range[d3.bisect(thresholds, x)];
+ if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];
}
scale.domain = function(x) {
if (!arguments.length) return domain;
@@ -6923,6 +7057,11 @@ d3 = function() {
scale.copy = function() {
return d3_scale_quantize(x0, x1, range);
};
+ scale.invertExtent = function(y) {
+ y = range.indexOf(y);
+ y = y < 0 ? NaN : y / kx + x0;
+ return [ y, y + 1 / kx ];
+ };
return rescale();
}
d3.scale.threshold = function() {
@@ -6930,7 +7069,7 @@ d3 = function() {
};
function d3_scale_threshold(domain, range) {
function scale(x) {
- return range[d3.bisect(domain, x)];
+ if (x <= x) return range[d3.bisect(domain, x)];
}
scale.domain = function(_) {
if (!arguments.length) return domain;
@@ -6942,6 +7081,10 @@ d3 = function() {
range = _;
return scale;
};
+ scale.invertExtent = function(y) {
+ y = range.indexOf(y);
+ return [ domain[y - 1], domain[y] ];
+ };
scale.copy = function() {
return d3_scale_threshold(domain, range);
};
@@ -7288,6 +7431,7 @@ d3 = function() {
d3_transitionPrototype.call = d3_selectionPrototype.call;
d3_transitionPrototype.empty = d3_selectionPrototype.empty;
d3_transitionPrototype.node = d3_selectionPrototype.node;
+ d3_transitionPrototype.size = d3_selectionPrototype.size;
d3.transition = function(selection) {
return arguments.length ? d3_transitionInheritId ? selection.transition() : selection
: d3_selectionRoot.transition();
};
@@ -7319,7 +7463,7 @@ d3 = function() {
subnodes = selector.call(node, node.__data__, i);
subgroups.push(subgroup = []);
for (var k = -1, o = subnodes.length; ++k < o; ) {
- d3_transitionNode(subnode = subnodes[k], k, id, transition);
+ if (subnode = subnodes[k]) d3_transitionNode(subnode, k, id, transition);
subgroup.push(subnode);
}
}
@@ -7567,7 +7711,7 @@ d3 = function() {
var g = d3.select(this);
var ticks = tickValues == null ? scale.ticks ? scale.ticks.apply(scale,
tickArguments_) : scale.domain() : tickValues, tickFormat = tickFormat_ == null ?
scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments_) : String : tickFormat_;
var subticks = d3_svg_axisSubdivide(scale, ticks, tickSubdivide), subtick =
g.selectAll(".tick.minor").data(subticks, String), subtickEnter =
subtick.enter().insert("line", ".tick").attr("class",
"tick minor").style("opacity", 1e-6), subtickExit =
d3.transition(subtick.exit()).style("opacity", 1e-6).remove(), subtickUpdate =
d3.transition(subtick).style("opacity", 1);
- var tick = g.selectAll(".tick.major").data(ticks, String), tickEnter =
tick.enter().insert("g", "path").attr("class", "tick
major").style("opacity", 1e-6), tickExit =
d3.transition(tick.exit()).style("opacity", 1e-6).remove(), tickUpdate =
d3.transition(tick).style("opacity", 1), tickTransform;
+ var tick = g.selectAll(".tick.major").data(ticks, String), tickEnter =
tick.enter().insert("g", ".domain").attr("class", "tick
major").style("opacity", 1e-6), tickExit =
d3.transition(tick.exit()).style("opacity", 1e-6).remove(), tickUpdate =
d3.transition(tick).style("opacity", 1), tickTransform;
var range = d3_scaleRange(scale), path = g.selectAll(".domain").data([
0 ]), pathUpdate = (path.enter().append("path").attr("class",
"domain"),
d3.transition(path));
var scale1 = scale.copy(), scale0 = this.__chart__ || scale1;
@@ -7727,7 +7871,7 @@ d3 = function() {
return subticks;
}
d3.svg.brush = function() {
- var event = d3_eventDispatch(brush, "brushstart", "brush",
"brushend"), x = null, y = null, resizes = d3_svg_brushResizes[0], extent = [ [
0, 0 ], [ 0, 0 ] ], extentDomain;
+ var event = d3_eventDispatch(brush, "brushstart", "brush",
"brushend"), x = null, y = null, resizes = d3_svg_brushResizes[0], extent = [ [
0, 0 ], [ 0, 0 ] ], clamp = [ true, true ], extentDomain;
function brush(g) {
g.each(function() {
var g = d3.select(this), bg = g.selectAll(".background").data([ 0 ]),
fg = g.selectAll(".extent").data([ 0 ]), tz =
g.selectAll(".resize").data(resizes, String), e;
@@ -7772,8 +7916,13 @@ d3 = function() {
g.selectAll(".extent,.e>rect,.w>rect").attr("height",
extent[1][1] - extent[0][1]);
}
function brushstart() {
- var target = this, eventTarget = d3.select(d3.event.target), event_ =
event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(),
resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing)
&& y, dragging = eventTarget.classed("extent"), center, origin =
mouse(), offset;
- var w = d3.select(d3_window).on("mousemove.brush",
brushmove).on("mouseup.brush", brushend).on("touchmove.brush",
brushmove).on("touchend.brush", brushend).on("keydown.brush",
keydown).on("keyup.brush", keyup);
+ var target = this, eventTarget = d3.select(d3.event.target), event_ =
event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(),
resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing)
&& y, dragging = eventTarget.classed("extent"), dragRestore =
d3_event_dragSuppress("brush"), center, origin = mouse(), offset;
+ var w = d3.select(d3_window).on("keydown.brush",
keydown).on("keyup.brush", keyup);
+ if (d3.event.changedTouches) {
+ w.on("touchmove.brush", brushmove).on("touchend.brush",
brushend);
+ } else {
+ w.on("mousemove.brush", brushmove).on("mouseup.brush",
brushend);
+ }
if (dragging) {
origin[0] = extent[0][0] - origin[0];
origin[1] = extent[0][1] - origin[1];
@@ -7789,7 +7938,6 @@ d3 = function() {
type: "brushstart"
});
brushmove();
- d3_eventCancel();
function mouse() {
var touches = d3.event.changedTouches;
return touches ? d3.touches(target, touches)[0] : d3.mouse(target);
@@ -7802,7 +7950,7 @@ d3 = function() {
origin[1] -= extent[1][1];
dragging = 2;
}
- d3_eventCancel();
+ d3_eventPreventDefault();
}
}
function keyup() {
@@ -7810,7 +7958,7 @@ d3 = function() {
origin[0] += extent[1][0];
origin[1] += extent[1][1];
dragging = 0;
- d3_eventCancel();
+ d3_eventPreventDefault();
}
}
function brushmove() {
@@ -7848,7 +7996,7 @@ d3 = function() {
r0 -= position;
r1 -= size + position;
}
- min = Math.max(r0, Math.min(r1, point[i]));
+ min = clamp[i] ? Math.max(r0, Math.min(r1, point[i])) : point[i];
if (dragging) {
max = (min += position) + size;
} else {
@@ -7872,10 +8020,10 @@ d3 = function() {
g.style("pointer-events",
"all").selectAll(".resize").style("display", brush.empty() ?
"none" : null);
d3.select("body").style("cursor", null);
w.on("mousemove.brush", null).on("mouseup.brush",
null).on("touchmove.brush", null).on("touchend.brush",
null).on("keydown.brush", null).on("keyup.brush", null);
+ dragRestore();
event_({
type: "brushend"
});
- d3_eventCancel();
}
}
brush.x = function(z) {
@@ -7890,6 +8038,11 @@ d3 = function() {
resizes = d3_svg_brushResizes[!x << 1 | !y];
return brush;
};
+ brush.clamp = function(z) {
+ if (!arguments.length) return x && y ? clamp : x || y ? clamp[+!x] : null;
+ if (x && y) clamp = [ !!z[0], !!z[1] ]; else if (x || y) clamp[+!x] = !!z;
+ return brush;
+ };
brush.extent = function(z) {
var x0, x1, y0, y1, t;
if (!arguments.length) {
@@ -8094,7 +8247,7 @@ d3 = function() {
d3.time.years = d3.time.year.range;
d3.time.years.utc = d3.time.year.utc.range;
d3.time.day = d3_time_interval(function(date) {
- var day = new d3_time(1970, 0);
+ var day = new d3_time(2e3, 0);
day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());
return day;
}, function(date, offset) {
@@ -8160,7 +8313,10 @@ d3 = function() {
if (i != string.length) return null;
if ("p" in d) d.H = d.H % 12 + d.p * 12;
var date = new d3_time();
- date.setFullYear(d.y, d.m, d.d);
+ if ("j" in d) date.setFullYear(d.y, 0, d.j); else if ("w" in d
&& ("W" in d || "U" in d)) {
+ date.setFullYear(d.y, 0, 1);
+ date.setFullYear(d.y, 0, "W" in d ? (d.w + 6) % 7 + d.W * 7 -
(date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);
+ } else date.setFullYear(d.y, d.m, d.d);
date.setHours(d.H, d.M, d.S, d.L);
return date;
};
@@ -8192,11 +8348,10 @@ d3 = function() {
return map;
}
function d3_time_formatPad(value, fill, width) {
- value += "";
- var length = value.length;
- return length < width ? new Array(width - length + 1).join(fill) + value : value;
+ var sign = value < 0 ? "-" : "", string = (sign ? -value :
value) + "", length = string.length;
+ return sign + (length < width ? new Array(width - length + 1).join(fill) + string
: string);
}
- var d3_time_dayRe = d3_time_formatRe(d3_time_days), d3_time_dayAbbrevRe =
d3_time_formatRe(d3_time_dayAbbreviations), d3_time_monthRe =
d3_time_formatRe(d3_time_months), d3_time_monthLookup =
d3_time_formatLookup(d3_time_months), d3_time_monthAbbrevRe =
d3_time_formatRe(d3_time_monthAbbreviations), d3_time_monthAbbrevLookup =
d3_time_formatLookup(d3_time_monthAbbreviations);
+ var d3_time_dayRe = d3_time_formatRe(d3_time_days), d3_time_dayLookup =
d3_time_formatLookup(d3_time_days), d3_time_dayAbbrevRe =
d3_time_formatRe(d3_time_dayAbbreviations), d3_time_dayAbbrevLookup =
d3_time_formatLookup(d3_time_dayAbbreviations), d3_time_monthRe =
d3_time_formatRe(d3_time_months), d3_time_monthLookup =
d3_time_formatLookup(d3_time_months), d3_time_monthAbbrevRe =
d3_time_formatRe(d3_time_monthAbbreviations), d3_time_monthAbbrevLookup =
d3_time_formatLookup(d3_time_monthAbbreviations), d3_time_percentRe = /^%/;
var d3_time_formatPads = {
"-": "",
_: " ",
@@ -8278,35 +8433,55 @@ d3 = function() {
e: d3_time_parseDay,
H: d3_time_parseHour24,
I: d3_time_parseHour24,
+ j: d3_time_parseDayOfYear,
L: d3_time_parseMilliseconds,
m: d3_time_parseMonthNumber,
M: d3_time_parseMinutes,
p: d3_time_parseAmPm,
S: d3_time_parseSeconds,
+ U: d3_time_parseWeekNumberSunday,
+ w: d3_time_parseWeekdayNumber,
+ W: d3_time_parseWeekNumberMonday,
x: d3_time_parseLocaleDate,
X: d3_time_parseLocaleTime,
y: d3_time_parseYear,
- Y: d3_time_parseFullYear
+ Y: d3_time_parseFullYear,
+ "%": d3_time_parseLiteralPercent
};
function d3_time_parseWeekdayAbbrev(date, string, i) {
d3_time_dayAbbrevRe.lastIndex = 0;
var n = d3_time_dayAbbrevRe.exec(string.substring(i));
- return n ? i += n[0].length : -1;
+ return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i +
n[0].length) : -1;
}
function d3_time_parseWeekday(date, string, i) {
d3_time_dayRe.lastIndex = 0;
var n = d3_time_dayRe.exec(string.substring(i));
- return n ? i += n[0].length : -1;
+ return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) :
-1;
+ }
+ function d3_time_parseWeekdayNumber(date, string, i) {
+ d3_time_numberRe.lastIndex = 0;
+ var n = d3_time_numberRe.exec(string.substring(i, i + 1));
+ return n ? (date.w = +n[0], i + n[0].length) : -1;
+ }
+ function d3_time_parseWeekNumberSunday(date, string, i) {
+ d3_time_numberRe.lastIndex = 0;
+ var n = d3_time_numberRe.exec(string.substring(i));
+ return n ? (date.U = +n[0], i + n[0].length) : -1;
+ }
+ function d3_time_parseWeekNumberMonday(date, string, i) {
+ d3_time_numberRe.lastIndex = 0;
+ var n = d3_time_numberRe.exec(string.substring(i));
+ return n ? (date.W = +n[0], i + n[0].length) : -1;
}
function d3_time_parseMonthAbbrev(date, string, i) {
d3_time_monthAbbrevRe.lastIndex = 0;
var n = d3_time_monthAbbrevRe.exec(string.substring(i));
- return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i +=
n[0].length) : -1;
+ return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i +
n[0].length) : -1;
}
function d3_time_parseMonth(date, string, i) {
d3_time_monthRe.lastIndex = 0;
var n = d3_time_monthRe.exec(string.substring(i));
- return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i += n[0].length) :
-1;
+ return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) :
-1;
}
function d3_time_parseLocaleFull(date, string, i) {
return d3_time_parse(date, d3_time_formats.c.toString(), string, i);
@@ -8320,12 +8495,12 @@ d3 = function() {
function d3_time_parseFullYear(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 4));
- return n ? (date.y = +n[0], i += n[0].length) : -1;
+ return n ? (date.y = +n[0], i + n[0].length) : -1;
}
function d3_time_parseYear(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 2));
- return n ? (date.y = d3_time_expandYear(+n[0]), i += n[0].length) : -1;
+ return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;
}
function d3_time_expandYear(d) {
return d + (d > 68 ? 1900 : 2e3);
@@ -8333,32 +8508,37 @@ d3 = function() {
function d3_time_parseMonthNumber(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 2));
- return n ? (date.m = n[0] - 1, i += n[0].length) : -1;
+ return n ? (date.m = n[0] - 1, i + n[0].length) : -1;
}
function d3_time_parseDay(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 2));
- return n ? (date.d = +n[0], i += n[0].length) : -1;
+ return n ? (date.d = +n[0], i + n[0].length) : -1;
+ }
+ function d3_time_parseDayOfYear(date, string, i) {
+ d3_time_numberRe.lastIndex = 0;
+ var n = d3_time_numberRe.exec(string.substring(i, i + 3));
+ return n ? (date.j = +n[0], i + n[0].length) : -1;
}
function d3_time_parseHour24(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 2));
- return n ? (date.H = +n[0], i += n[0].length) : -1;
+ return n ? (date.H = +n[0], i + n[0].length) : -1;
}
function d3_time_parseMinutes(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 2));
- return n ? (date.M = +n[0], i += n[0].length) : -1;
+ return n ? (date.M = +n[0], i + n[0].length) : -1;
}
function d3_time_parseSeconds(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 2));
- return n ? (date.S = +n[0], i += n[0].length) : -1;
+ return n ? (date.S = +n[0], i + n[0].length) : -1;
}
function d3_time_parseMilliseconds(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 3));
- return n ? (date.L = +n[0], i += n[0].length) : -1;
+ return n ? (date.L = +n[0], i + n[0].length) : -1;
}
var d3_time_numberRe = /^\s*\d+/;
function d3_time_parseAmPm(date, string, i) {
@@ -8373,6 +8553,11 @@ d3 = function() {
var z = d.getTimezoneOffset(), zs = z > 0 ? "-" : "+", zh =
~~(Math.abs(z) / 60), zm = Math.abs(z) % 60;
return zs + d3_time_formatPad(zh, "0", 2) + d3_time_formatPad(zm,
"0", 2);
}
+ function d3_time_parseLiteralPercent(date, string, i) {
+ d3_time_percentRe.lastIndex = 0;
+ var n = d3_time_percentRe.exec(string.substring(i, i + 1));
+ return n ? i + n[0].length : -1;
+ }
d3.time.format.utc = function(template) {
var local = d3.time.format(template);
function format(date) {
@@ -8459,9 +8644,7 @@ d3 = function() {
return scale;
};
scale.nice = function(m) {
- return scale.domain(d3_scale_nice(scale.domain(), function() {
- return m;
- }));
+ return scale.domain(d3_scale_nice(scale.domain(), m));
};
scale.ticks = function(m, k) {
var extent = d3_scaleExtent(scale.domain());
diff --git a/modules/enterprise/gui/coregui/src/main/webapp/js/d3.v3.min.js
b/modules/enterprise/gui/coregui/src/main/webapp/js/d3.v3.min.js
old mode 100755
new mode 100644
index 3ee7054..0ae1d23
--- a/modules/enterprise/gui/coregui/src/main/webapp/js/d3.v3.min.js
+++ b/modules/enterprise/gui/coregui/src/main/webapp/js/d3.v3.min.js
@@ -1,5 +1,5 @@
-d3=function(){function n(n){return null!=n&&!isNaN(n)}function t(n){return
n.length}function e(n){for(var t=1;n*t%1;)t*=10;return t}function r(n,t){try{for(var e in
t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}catch(r){n.prototype=t}}function
i(){}function u(){}function a(n,t,e){return function(){var r=e.apply(t,arguments);return
r===t?n:r}}function o(){}function c(n){function t(){for(var
t,r=e,i=-1,u=r.length;++i<u;)(t=r[i].on)&&t.apply(this,arguments);return n}var
e=[],r=new i;return t.on=function(t,i){var u,a=r.get(t);return
arguments.length<2?a&&a.on:(a&&(a.on=null,e=e.slice(0,u=e.indexOf(a)).concat(e.slice(u+1)),r.remove(t)),i&&e.push(r.set(t,{on:i})),n)},t}function
l(){ua.event.stopPropagation(),ua.event.preventDefault()}function f(){for(var
n,t=ua.event;n=t.sourceEvent;)t=n;return t}function s(n,t){function
e(){n.on(t,null)}n.on(t,function(){l(),e()},!0),setTimeout(e,0)}function h(n){for(var
t=new o,e=0,r=arguments.length;++e<r;)t[arguments[e]]=c(
t);return t.of=function(e,r){return function(i){try{var
u=i.sourceEvent=ua.event;i.target=n,ua.event=i,t[i.type].apply(e,r)}finally{ua.event=u}}},t}function
g(n,t){var e=n.ownerSVGElement||n;if(e.createSVGPoint){var
r=e.createSVGPoint();if(0>pa&&(oa.scrollX||oa.scrollY)){e=ua.select(aa.body).append("svg").style("position","absolute").style("top",0).style("left",0);var
i=e[0][0].getScreenCTM();pa=!(i.f||i.e),e.remove()}return
pa?(r.x=t.pageX,r.y=t.pageY):(r.x=t.clientX,r.y=t.clientY),r=r.matrixTransform(n.getScreenCTM().inverse()),[r.x,r.y]}var
u=n.getBoundingClientRect();return[t.clientX-u.left-n.clientLeft,t.clientY-u.top-n.clientTop]}function
p(n){for(var t=-1,e=n.length,r=[];++t<e;)r.push(n[t]);return r}function d(n){return
Array.prototype.slice.call(n)}function m(n){return va(n,wa),n}function v(n){return
function(){return ya(n,this)}}function y(n){return function(){return Ma(n,this)}}function
M(n,t){function e(){this.removeAttribute(n)}function r(){this.removeAttributeNS
(n.space,n.local)}function i(){this.setAttribute(n,t)}function
u(){this.setAttributeNS(n.space,n.local,t)}function a(){var
e=t.apply(this,arguments);null==e?this.removeAttribute(n):this.setAttribute(n,e)}function
o(){var
e=t.apply(this,arguments);null==e?this.removeAttributeNS(n.space,n.local):this.setAttributeNS(n.space,n.local,e)}return
n=ua.ns.qualify(n),null==t?n.local?r:e:"function"==typeof
t?n.local?o:a:n.local?u:i}function x(n){return n.trim().replace(/\s+/g,"
")}function b(n){return
RegExp("(?:^|\\s+)"+ua.requote(n)+"(?:\\s+|$)","g")}function
_(n,t){function e(){for(var e=-1;++e<i;)n[e](this,t)}function r(){for(var
e=-1,r=t.apply(this,arguments);++e<i;)n[e](this,r)}n=n.trim().split(/\s+/).map(w);var
i=n.length;return"function"==typeof t?r:e}function w(n){var t=b(n);return
function(e,r){if(i=e.classList)return r?i.add(n):i.remove(n);var
i=e.getAttribute("class")||"";r?(t.lastIndex=0,t.test(i)||e.setAttribute("class",x(i+"
"+n))):e.setAttribute("class",x(i.replace(t,"
")))}}function S(n,t,e){function r(){this.style.removeProperty(n)}function
i(){this.style.setProperty(n,t,e)}function u(){var
r=t.apply(this,arguments);null==r?this.style.removeProperty(n):this.style.setProperty(n,r,e)}return
null==t?r:"function"==typeof t?u:i}function E(n,t){function e(){delete
this[n]}function r(){this[n]=t}function i(){var e=t.apply(this,arguments);null==e?delete
this[n]:this[n]=e}return null==t?e:"function"==typeof t?i:r}function
k(n){return{__data__:n}}function A(n){return function(){return _a(this,n)}}function
N(n){return
arguments.length||(n=ua.ascending),function(t,e){return!t-!e||n(t.__data__,e.__data__)}}function
q(){}function T(n,t,e){function r(){var
t=this[a];t&&(this.removeEventListener(n,t,t.$),delete this[a])}function i(){var
i=c(t,da(arguments));r.call(this),this.addEventListener(n,this[a]=i,i.$=e),i._=t}function
u(){var t,e=RegExp("^__on([^.]+)"+ua.requote(n)+"$");for(var r in
this)if(t=r.match(e)){var i=this[r];this.removeEventListener(t[1
],i,i.$),delete this[r]}}var
a="__on"+n,o=n.indexOf("."),c=C;o>0&&(n=n.substring(0,o));var
l=ka.get(n);return l&&(n=l,c=z),o?t?i:r:t?q:u}function C(n,t){return
function(e){var
r=ua.event;ua.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{ua.event=r}}}function
z(n,t){var e=C(n,t);return function(n){var
t=this,r=n.relatedTarget;r&&(r===t||r.compareDocumentPosition(t)&8)||e.call(t,n)}}function
D(n,t){for(var e=0,r=n.length;r>e;e++)for(var
i,u=n[e],a=0,o=u.length;o>a;a++)(i=u[a])&&t(i,a,e);return n}function
j(n){return va(n,Aa),n}function L(){}function F(n,t,e){return new H(n,t,e)}function
H(n,t,e){this.h=n,this.s=t,this.l=e}function P(n,t,e){function r(n){return
n>360?n-=360:0>n&&(n+=360),60>n?u+(a-u)*n/60:180>n?a:240>n?u+(a-u)*(240-n)/60:u}function
i(n){return Math.round(r(n)*255)}var u,a;return
n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,a=.5>=e?e*(1+t):e+t-e*t,u=2*e-a,tt(i(n+120),i(n),i(n-120))}function
R(n){return n>0?1:0>n?-1:0}functio
n O(n){return Math.acos(Math.max(-1,Math.min(1,n)))}function Y(n){return
n>1?Da/2:-1>n?-Da/2:Math.asin(n)}function
U(n){return(Math.exp(n)-Math.exp(-n))/2}function
I(n){return(Math.exp(n)+Math.exp(-n))/2}function V(n){return(n=Math.sin(n/2))*n}function
X(n,t,e){return new Z(n,t,e)}function Z(n,t,e){this.h=n,this.c=t,this.l=e}function
B(n,t,e){return
isNaN(n)&&(n=0),isNaN(t)&&(t=0),$(e,Math.cos(n*=La)*t,Math.sin(n)*t)}function
$(n,t,e){return new J(n,t,e)}function J(n,t,e){this.l=n,this.a=t,this.b=e}function
G(n,t,e){var r=(n+16)/116,i=r+t/500,u=r-e/200;return
i=W(i)*Ra,r=W(r)*Oa,u=W(u)*Ya,tt(nt(3.2404542*i-1.5371385*r-.4985314*u),nt(-.969266*i+1.8760108*r+.041556*u),nt(.0556434*i-.2040259*r+1.0572252*u))}function
K(n,t,e){return n>0?X(Math.atan2(e,t)*Fa,Math.sqrt(t*t+e*e),n):X(0/0,0/0,n)}function
W(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function Q(n){return
n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function nt(n){return
Math.round(255*(.00304>=n?12.92*n:1.055*Math.po
w(n,1/2.4)-.055))}function tt(n,t,e){return new et(n,t,e)}function
et(n,t,e){this.r=n,this.g=t,this.b=e}function rt(n){return
16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function
it(n,t,e){var
r,i,u,a=0,o=0,c=0;if(r=/([a-z]+)\((.*)\)/i.exec(n))switch(i=r[2].split(","),r[1]){case"hsl":return
e(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case"rgb":return
t(ct(i[0]),ct(i[1]),ct(i[2]))}return(u=Va.get(n))?t(u.r,u.g,u.b):(null!=n&&n.charAt(0)==="#"&&(n.length===4?(a=n.charAt(1),a+=a,o=n.charAt(2),o+=o,c=n.charAt(3),c+=c):n.length===7&&(a=n.substring(1,3),o=n.substring(3,5),c=n.substring(5,7)),a=parseInt(a,16),o=parseInt(o,16),c=parseInt(c,16)),t(a,o,c))}function
ut(n,t,e){var
r,i,u=Math.min(n/=255,t/=255,e/=255),a=Math.max(n,t,e),o=a-u,c=(a+u)/2;return
o?(i=.5>c?o/(a+u):o/(2-a-u),r=n==a?(t-e)/o+(e>t?6:0):t==a?(e-n)/o+2:(n-t)/o+4,r*=60):(r=0/0,i=c>0&&1>c?0:r),F(r,i,c)}function
at(n,t,e){n=ot(n),t=ot(t),e=ot(e);var r=Q((.4124564*n+.3575761*t+.18
04375*e)/Ra),i=Q((.2126729*n+.7151522*t+.072175*e)/Oa),u=Q((.0193339*n+.119192*t+.9503041*e)/Ya);return
$(116*i-16,500*(r-i),200*(i-u))}function
ot(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function ct(n){var
t=parseFloat(n);return n.charAt(n.length-1)==="%"?Math.round(2.55*t):t}function
lt(n){return"function"==typeof n?n:function(){return n}}function ft(n){return
n}function st(n){return function(t,e,r){return
arguments.length===2&&"function"==typeof
e&&(r=e,e=null),ht(t,e,n,r)}}function ht(n,t,e,r){function i(){var
n,t=c.status;if(!t&&c.responseText||t>=200&&300>t||304===t){try{n=e.call(u,c)}catch(r){return
a.error.call(u,r),void 0}a.load.call(u,n)}else a.error.call(u,c)}var
u={},a=ua.dispatch("progress","load","error"),o={},c=new(oa.XDomainRequest&&/^(http(s)?:)?\/\//.test(n)?XDomainRequest:XMLHttpRequest);return"onload"in
c?c.onload=c.onerror=i:c.onreadystatechange=function(){c.readyState>3&&i()},c.onprogress=function(n){var
t=ua.event;ua.event=n;try{
a.progress.call(u,c)}finally{ua.event=t}},u.header=function(n,t){return
n=(n+"").toLowerCase(),arguments.length<2?o[n]:(null==t?delete
o[n]:o[n]=t+"",u)},u.mimeType=function(n){return
arguments.length?(t=null==n?null:n+"",u):t},u.response=function(n){return
e=n,u},["get","post"].forEach(function(n){u[n]=function(){return
u.send.apply(u,[n].concat(da(arguments)))}}),u.send=function(e,r,i){if(arguments.length===2&&"function"==typeof
r&&(i=r,r=null),c.open(e,n,!0),null==t||"accept"in
o||(o.accept=t+",*/*"),c.setRequestHeader)for(var a in
o)c.setRequestHeader(a,o[a]);return
null!=t&&c.overrideMimeType&&c.overrideMimeType(t),null!=i&&u.on("error",i).on("load",function(n){i(null,n)}),c.send(null==r?null:r),u},u.abort=function(){return
c.abort(),u},ua.rebind(u,a,"on"),null==r?u:u.get(gt(r))}function gt(n){return
n.length===1?function(t,e){n(null==t?e:null)}:n}function pt(n,t){function
e(n,e,u){arguments.length<3&&(u=e,e=null);var a=ua.xhr(n,t,u);return
a.row=function(n){return argu
ments.length?a.response((e=n)==null?r:i(n)):e},a.row(e)}function r(n){return
e.parse(n.responseText)}function i(n){return function(t){return
e.parse(t.responseText,n)}}function a(t){return t.map(o).join(n)}function o(n){return
c.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var
c=RegExp('["'+n+"\n]"),l=n.charCodeAt(0);return
e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var
i=Function("d","return {"+n.map(function(n,t){return
JSON.stringify(n)+":
d["+t+"]"}).join(",")+"}");r=t?function(n,e){return
t(i(n),e)}:i})},e.parseRows=function(n,t){function e(){if(f>=c)return a;if(i)return
i=!1,u;var t=f;if(n.charCodeAt(t)===34){for(var
e=t;e++<c;)if(n.charCodeAt(e)===34){if(n.charCodeAt(e+1)!==34)break;++e}f=e+2;var
r=n.charCodeAt(e+1);return
13===r?(i=!0,n.charCodeAt(e+2)===10&&++f):10===r&&(i=!0),n.substring(t+1,e).replace(/""/g,'"')}for(;c>f;){var
r=n.charCodeAt(f++),o=1;if(10===r)i=!0;else
if(13===r)i=!0,n.charCodeAt(f)===10&&(++f,++o);else if(r!==
l)continue;return n.substring(t,f-o)}return n.substring(t)}for(var
r,i,u={},a={},o=[],c=n.length,f=0,s=0;(r=e())!==a;){for(var
h=[];r!==u&&r!==a;)h.push(r),r=e();(!t||(h=t(h,s++)))&&o.push(h)}return
o},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new
u,i=[];return t.forEach(function(n){for(var t in
n)r.has(t)||i.push(r.add(t))}),[i.map(o).join(n)].concat(t.map(function(t){return
i.map(function(n){return
o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return
n.map(a).join("\n")},e}function dt(){var
n=mt(),t=vt()-n;t>24?(isFinite(t)&&(clearTimeout($a),$a=setTimeout(dt,t)),Ba=0):(Ba=1,Ja(dt))}function
mt(){for(var
n=Date.now(),t=Xa;t;)n>=t.time&&(t.flush=t.callback(n-t.time)),t=t.next;return
n}function vt(){for(var
n,t=Xa,e=1/0;t;)t.flush?t=n?n.next=t.next:Xa=t.next:(t.time<e&&(e=t.time),t=(n=t).next);return
Za=n,e}function yt(n,t){var
e=Math.pow(10,Math.abs(8-t)*3);return{scale:t>8?function(n){return
n/e}:function(n){return n*e},symbol:n}}
function Mt(n,t){return t-(n?Math.ceil(Math.log(n)/Math.LN10):1)}function xt(n){return
n+""}function
bt(n,t){n&&uo.hasOwnProperty(n.type)&&uo[n.type](n,t)}function
_t(n,t,e){var
r,i=-1,u=n.length-e;for(t.lineStart();++i<u;)r=n[i],t.point(r[0],r[1]);t.lineEnd()}function
wt(n,t){var
e=-1,r=n.length;for(t.polygonStart();++e<r;)_t(n[e],t,1);t.polygonEnd()}function
St(){function n(n,t){n*=La,t=t*La/2+Da/4;var
e=n-r,a=Math.cos(t),o=Math.sin(t),c=u*o,l=i*a+c*Math.cos(e),f=c*Math.sin(e);oo+=Math.atan2(f,l),r=n,i=a,u=o}var
t,e,r,i,u;co.point=function(a,o){co.point=n,r=(t=a)*La,i=Math.cos(o=(e=o)*La/2+Da/4),u=Math.sin(o)},co.lineEnd=function(){n(t,e)}}function
Et(n){var
t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function
kt(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function
At(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function
Nt(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function
qt(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function
Tt(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function
Ct(n){return[Math.atan2(n[1],n[0]),Math.asin(Math.max(-1,Math.min(1,n[2])))]}function
zt(n,t){return Math.abs(n[0]-t[0])<ja&&Math.abs(n[1]-t[1])<ja}function
Dt(n,t){if(!lo){++fo,n*=La;var
e=Math.cos(t*=La);so+=(e*Math.cos(n)-so)/fo,ho+=(e*Math.sin(n)-ho)/fo,go+=(Math.sin(t)-go)/fo}}function
jt(){var n,t;lo=1,Lt(),lo=2;var
e=po.point;po.point=function(r,i){e(n=r,t=i)},po.lineEnd=function(){po.point(n,t),Ft(),po.lineEnd=Ft}}function
Lt(){function n(n,i){n*=La;var
u=Math.cos(i*=La),a=u*Math.cos(n),o=u*Math.sin(n),c=Math.sin(i),l=Math.atan2(Math.sqrt((l=e*c-r*o)*l+(l=r*a-t*c)*l+(l=t*o-e*a)*l),t*a+e*o+r*c);fo+=l,so+=l*(t+(t=a)),ho+=l*(e+(e=o)),go+=l*(r+(r=c))}var
t,e,r;lo>1||(1>lo&&(lo=1,fo=so=ho=go=0),po.point=function(i,u){i*=La;var
a=Math.cos(u*=La);t=a*Math.cos(i),e=a*Math.sin(i),r=Math.sin(u),po.point=n})}function
Ft(){po.point=Dt}function Ht(){return!0}function Pt(n,t,e,r,i){var u=[],a=[];
if(n.forEach(function(n){if(!((t=n.length-1)<=0)){var
t,e=n[0],r=n[t];if(zt(e,r)){i.lineStart();for(var
o=0;t>o;++o)i.point((e=n[o])[0],e[1]);return i.lineEnd(),void 0}var
c={point:e,points:n,other:null,visited:!1,entry:!0,subject:!0},l={point:e,points:[e],other:c,visited:!1,entry:!1,subject:!1};c.other=l,u.push(c),a.push(l),c={point:r,points:[r],other:null,visited:!1,entry:!1,subject:!0},l={point:r,points:[r],other:c,visited:!1,entry:!0,subject:!1},c.other=l,u.push(c),a.push(l)}}),a.sort(t),Rt(u),Rt(a),u.length){if(e)for(var
o=1,c=!e(a[0].point),l=a.length;l>o;++o)a[o].entry=c=!c;for(var
f,s,h,g=u[0];;){for(f=g;f.visited;)if((f=f.next)===g)return;s=f.points,i.lineStart();do{if(f.visited=f.other.visited=!0,f.entry){if(f.subject)for(var
o=0;o<s.length;o++)i.point((h=s[o])[0],h[1]);else
r(f.point,f.next.point,1,i);f=f.next}else{if(f.subject){s=f.prev.points;for(var
o=s.length;--o>=0;)i.point((h=s[o])[0],h[1])}else
r(f.point,f.prev.point,-1,i);f=f.prev}f=f.other,s=f.points}whil
e(!f.visited);i.lineEnd()}}}function Rt(n){if(t=n.length){for(var
t,e,r=0,i=n[0];++r<t;)i.next=e=n[r],e.prev=i,i=e;i.next=e=n[0],e.prev=i}}function
Ot(n,t,e){return function(r){function i(t,e){n(t,e)&&r.point(t,e)}function
u(n,t){m.point(n,t)}function a(){v.point=u,m.lineStart()}function
o(){v.point=i,m.lineEnd()}function c(n,t){M.point(n,t),d.push([n,t])}function
l(){M.lineStart(),d=[]}function f(){c(d[0][0],d[0][1]),M.lineEnd();var
n,t=M.clean(),e=y.buffer(),i=e.length;if(!i)return p=!0,g+=It(d,-1),d=null,void
0;if(d=null,1&t){n=e[0],h+=It(n,1);var
u,i=n.length-1,a=-1;for(r.lineStart();++a<i;)r.point((u=n[a])[0],u[1]);return
r.lineEnd(),void
0}i>1&&2&t&&e.push(e.pop().concat(e.shift())),s.push(e.filter(Yt))}var
s,h,g,p,d,m=t(r),v={point:i,lineStart:a,lineEnd:o,polygonStart:function(){v.point=c,v.lineStart=l,v.lineEnd=f,p=!1,g=h=0,s=[],r.polygonStart()},polygonEnd:function(){v.point=i,v.lineStart=a,v.lineEnd=o,s=ua.merge(s),s.length?Pt(s,Vt,null,e,r):(-ja>h||p&&-ja>g)&&(r.l
ineStart(),e(null,null,1,r),r.lineEnd()),r.polygonEnd(),s=null},sphere:function(){r.polygonStart(),r.lineStart(),e(null,null,1,r),r.lineEnd(),r.polygonEnd()}},y=Ut(),M=t(y);return
v}}function Yt(n){return n.length>1}function Ut(){var
n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:q,buffer:function(){var
e=t;return
t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function
It(n,t){if(!(e=n.length))return 0;for(var
e,r,i,u=0,a=0,o=n[0],c=o[0],l=o[1],f=Math.cos(l),s=Math.atan2(t*Math.sin(c)*f,Math.sin(l)),h=1-t*Math.cos(c)*f,g=s;++u<e;)o=n[u],f=Math.cos(l=o[1]),r=Math.atan2(t*Math.sin(c=o[0])*f,Math.sin(l)),i=1-t*Math.cos(c)*f,Math.abs(h-2)<ja&&Math.abs(i-2)<ja||(Math.abs(i)<ja||Math.abs(h)<ja||(Math.abs(Math.abs(r-s)-Da)<ja?i+h>2&&(a+=4*(r-s)):a+=Math.abs(h-2)<ja?4*(r-g):((3*Da+r-s)%(2*Da)-Da)*(h+i)),g=s,s=r,h=i);return
a}function Vt(n,t){return((n=n.point)[0]<0?n[1]-Da/2-ja:Da/2-n[1])-((t=t.point)[0]<
0?t[1]-Da/2-ja:Da/2-t[1])}function Xt(n){var
t,e=0/0,r=0/0,i=0/0;return{lineStart:function(){n.lineStart(),t=1},point:function(u,a){var
o=u>0?Da:-Da,c=Math.abs(u-e);Math.abs(c-Da)<ja?(n.point(e,r=(r+a)/2>0?Da/2:-Da/2),n.point(i,r),n.lineEnd(),n.lineStart(),n.point(o,r),n.point(u,r),t=0):i!==o&&c>=Da&&(Math.abs(e-i)<ja&&(e-=i*ja),Math.abs(u-o)<ja&&(u-=o*ja),r=Zt(e,r,u,a),n.point(i,r),n.lineEnd(),n.lineStart(),n.point(o,r),t=0),n.point(e=u,r=a),i=o},lineEnd:function(){n.lineEnd(),e=r=0/0},clean:function(){return
2-t}}}function Zt(n,t,e,r){var i,u,a=Math.sin(n-e);return
Math.abs(a)>ja?Math.atan((Math.sin(t)*(u=Math.cos(r))*Math.sin(e)-Math.sin(r)*(i=Math.cos(t))*Math.sin(n))/(i*u*a)):(t+r)/2}function
Bt(n,t,e,r){var
i;if(null==n)i=e*Da/2,r.point(-Da,i),r.point(0,i),r.point(Da,i),r.point(Da,0),r.point(Da,-i),r.point(0,-i),r.point(-Da,-i),r.point(-Da,0),r.point(-Da,i);else
if(Math.abs(n[0]-t[0])>ja){var
u=(n[0]<t[0]?1:-1)*Da;i=e*u/2,r.point(-u,i),r.point(0,i),r.point(u,i)}else r.
point(t[0],t[1])}function $t(n){function t(n,t){return
Math.cos(n)*Math.cos(t)>u}function e(n){var
e,u,c,l,f;return{lineStart:function(){l=c=!1,f=1},point:function(s,h){var
g,p=[s,h],d=t(s,h),m=a?d?0:i(s,h):d?i(s+(0>s?Da:-Da),h):0;if(!e&&(l=c=d)&&n.lineStart(),d!==c&&(g=r(e,p),(zt(e,g)||zt(p,g))&&(p[0]+=ja,p[1]+=ja,d=t(p[0],p[1]))),d!==c)f=0,d?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else
if(o&&e&&a^d){var
v;m&u||!(v=r(p,e,!0))||(f=0,a?(n.lineStart(),n.point(v[0][0],v[0][1]),n.point(v[1][0],v[1][1]),n.lineEnd()):(n.point(v[1][0],v[1][1]),n.lineEnd(),n.lineStart(),n.point(v[0][0],v[0][1])))}!d||e&&zt(e,p)||n.point(p[0],p[1]),e=p,c=d,u=m},lineEnd:function(){c&&n.lineEnd(),e=null},clean:function(){return
f|(l&&c)<<1}}}function r(n,t,e){var
r=Et(n),i=Et(t),a=[1,0,0],o=At(r,i),c=kt(o,o),l=o[0],f=c-l*l;if(!f)return!e&&n;var
s=u*c/f,h=-u*l/f,g=At(a,o),p=qt(a,s),d=qt(o,h);Nt(p,d);var
m=g,v=kt(p,m),y=kt(m,m),M=v*v-y*(kt(p,p)-1);if(!(0>
M)){var x=Math.sqrt(M),b=qt(m,(-v-x)/y);if(Nt(b,p),b=Ct(b),!e)return b;var
_,w=n[0],S=t[0],E=n[1],k=t[1];w>S&&(_=w,w=S,S=_);var
A=S-w,N=Math.abs(A-Da)<ja,q=N||ja>A;if(!N&&E>k&&(_=E,E=k,k=_),q?N?E+k>0^b[1]<(Math.abs(b[0]-w)<ja?E:k):E<=b[1]&&b[1]<=k:A>Da^(w<=b[0]&&b[0]<=S)){var
T=qt(m,(-v+x)/y);return Nt(T,p),[b,Ct(T)]}}}function i(t,e){var
r=a?n:Da-n,i=0;return-r>t?i|=1:t>r&&(i|=2),-r>e?i|=4:e>r&&(i|=8),i}var
u=Math.cos(n),a=u>0,o=Math.abs(u)>ja,c=oe(n,6*La);return Ot(t,e,c)}function
Jt(n,t,e,r){function i(r,i){return
Math.abs(r[0]-n)<ja?i>0?0:3:Math.abs(r[0]-e)<ja?i>0?2:1:Math.abs(r[1]-t)<ja?i>0?1:0:i>0?3:2}function
u(n,t){return a(n.point,t.point)}function a(n,t){var e=i(n,1),r=i(t,1);return
e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}function o(i,u){var
a=u[0]-i[0],o=u[1]-i[1],c=[0,1];return
Math.abs(a)<ja&&Math.abs(o)<ja?n<=i[0]&&i[0]<=e&&t<=i[1]&&i[1]<=r:Gt(n-i[0],a,c)&&Gt(i[0]-e,-a,c)&&Gt(t-i[1],o,c)&&Gt(i[1]-r,-o,c)?(c[1]<1&&(u[0]=i[0]+c[1]*a,u[
1]=i[1]+c[1]*o),c[0]>0&&(i[0]+=c[0]*a,i[1]+=c[0]*o),!0):!1}return
function(c){function l(u){var a=i(u,-1),o=f([0===a||3===a?n:e,a>1?r:t]);return
o}function f(n){for(var t=0,e=M.length,r=n[1],i=0;e>i;++i)for(var
u,a=1,o=M[i],c=o.length,l=o[0];c>a;++a)u=o[a],l[1]<=r?u[1]>r&&s(l,u,n)>0&&++t:u[1]<=r&&s(l,u,n)<0&&--t,l=u;return
0!==t}function s(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(e[0]-n[0])*(t[1]-n[1])}function
h(u,o,c,l){var f=0,s=0;if(null==u||(f=i(u,c))!==(s=i(o,c))||a(u,o)<0^c>0){do
l.point(0===f||3===f?n:e,f>1?r:t);while((f=(f+c+4)%4)!==s)}else
l.point(o[0],o[1])}function g(i,u){return
i>=n&&e>=i&&u>=t&&r>=u}function
p(n,t){g(n,t)&&c.point(n,t)}function
d(){T.point=v,M&&M.push(x=[]),A=!0,k=!1,S=E=0/0}function
m(){y&&(v(b,_),w&&k&&q.rejoin(),y.push(q.buffer())),T.point=p,k&&c.lineEnd()}function
v(n,t){n=Math.max(-vo,Math.min(vo,n)),t=Math.max(-vo,Math.min(vo,t));var
e=g(n,t);if(M&&x.push([n,t]),A)b=n,_=t,w=e,A=!1,e&&(c.lineStart(),c.point(n,t));else
if(e&&k)c.point(n,t);els
e{var
r=[S,E],i=[n,t];o(r,i)?(k||(c.lineStart(),c.point(r[0],r[1])),c.point(i[0],i[1]),e||c.lineEnd()):e&&(c.lineStart(),c.point(n,t))}S=n,E=t,k=e}var
y,M,x,b,_,w,S,E,k,A,N=c,q=Ut(),T={point:p,lineStart:d,lineEnd:m,polygonStart:function(){c=q,y=[],M=[]},polygonEnd:function(){c=N,(y=ua.merge(y)).length?(c.polygonStart(),Pt(y,u,l,h,c),c.polygonEnd()):f([n,t])&&(c.polygonStart(),c.lineStart(),h(null,null,1,c),c.lineEnd(),c.polygonEnd()),y=M=x=null}};return
T}}function Gt(n,t,e){if(Math.abs(t)<ja)return 0>=n;var
r=n/t;if(t>0){if(r>e[1])return!1;r>e[0]&&(e[0]=r)}else{if(r<e[0])return!1;r<e[1]&&(e[1]=r)}return!0}function
Kt(n,t){function e(e,r){return e=n(e,r),t(e[0],e[1])}return
n.invert&&t.invert&&(e.invert=function(e,r){return
e=t.invert(e,r),e&&n.invert(e[0],e[1])}),e}function Wt(n){function t(t){function
r(e,r){e=n(e,r),t.point(e[0],e[1])}function u(){f=0/0,d.point=a,t.lineStart()}function
a(r,u){var a=Et([r,u]),o=n(r,u);e(f,s,l,h,g,p,f=o[0],s=o[1],l=r,h=a[0],g=a[1],p=a[2],i,
t),t.point(f,s)}function o(){d.point=r,t.lineEnd()}function c(){var
n,r,c,m,v,y,M;u(),d.point=function(t,e){a(n=t,r=e),c=f,m=s,v=h,y=g,M=p,d.point=a},d.lineEnd=function(){e(f,s,l,h,g,p,c,m,n,v,y,M,i,t),d.lineEnd=o,o()}}var
l,f,s,h,g,p,d={point:r,lineStart:u,lineEnd:o,polygonStart:function(){t.polygonStart(),d.lineStart=c},polygonEnd:function(){t.polygonEnd(),d.lineStart=u}};return
d}function e(t,i,u,a,o,c,l,f,s,h,g,p,d,m){var
v=l-t,y=f-i,M=v*v+y*y;if(M>4*r&&d--){var
x=a+h,b=o+g,_=c+p,w=Math.sqrt(x*x+b*b+_*_),S=Math.asin(_/=w),E=Math.abs(Math.abs(_)-1)<ja?(u+s)/2:Math.atan2(b,x),k=n(E,S),A=k[0],N=k[1],q=A-t,T=N-i,C=y*q-v*T;(C*C/M>r||Math.abs((v*q+y*T)/M-.5)>.3)&&(e(t,i,u,a,o,c,A,N,E,x/=w,b/=w,_,d,m),m.point(A,N),e(A,N,E,x,b,_,l,f,s,h,g,p,d,m))}}var
r=.5,i=16;return t.precision=function(n){return
arguments.length?(i=(r=n*n)>0&&16,t):Math.sqrt(r)},t}function Qt(n){return
ne(function(){return n})()}function ne(n){function t(n){return
n=a(n[0]*La,n[1]*La),[n[0]*f+o,c-n[1]*f]}func
tion e(n){return n=a.invert((n[0]-o)/f,(c-n[1])/f),n&&[n[0]*Fa,n[1]*Fa]}function
r(){a=Kt(u=re(d,m,v),i);var n=i(g,p);return o=s-n[0]*f,c=h+n[1]*f,t}var
i,u,a,o,c,l=Wt(function(n,t){return
n=i(n,t),[n[0]*f+o,c-n[1]*f]}),f=150,s=480,h=250,g=0,p=0,d=0,m=0,v=0,y=mo,M=ft,x=null,b=null;return
t.stream=function(n){return te(u,y(l(M(n))))},t.clipAngle=function(n){return
arguments.length?(y=null==n?(x=n,mo):$t((x=+n)*La),t):x},t.clipExtent=function(n){return
arguments.length?(b=n,M=null==n?ft:Jt(n[0][0],n[0][1],n[1][0],n[1][1]),t):b},t.scale=function(n){return
arguments.length?(f=+n,r()):f},t.translate=function(n){return
arguments.length?(s=+n[0],h=+n[1],r()):[s,h]},t.center=function(n){return
arguments.length?(g=n[0]%360*La,p=n[1]%360*La,r()):[g*Fa,p*Fa]},t.rotate=function(n){return
arguments.length?(d=n[0]%360*La,m=n[1]%360*La,v=n.length>2?n[2]%360*La:0,r()):[d*Fa,m*Fa,v*Fa]},ua.rebind(t,l,"precision"),function(){return
i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function
te(n,t){return{point:function(e,r){r=n(e*La,r*La),e=r[0],t.point(e>Da?e-2*Da:-Da>e?e+2*Da:e,r[1])},sphere:function(){t.sphere()},lineStart:function(){t.lineStart()},lineEnd:function(){t.lineEnd()},polygonStart:function(){t.polygonStart()},polygonEnd:function(){t.polygonEnd()}}}function
ee(n,t){return[n,t]}function re(n,t,e){return
n?t||e?Kt(ue(n),ae(t,e)):ue(n):t||e?ae(t,e):ee}function ie(n){return function(t,e){return
t+=n,[t>Da?t-2*Da:-Da>t?t+2*Da:t,e]}}function ue(n){var t=ie(n);return
t.invert=ie(-n),t}function ae(n,t){function e(n,t){var
e=Math.cos(t),o=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),f=l*r+o*i;return[Math.atan2(c*u-f*a,o*r-l*i),Math.asin(Math.max(-1,Math.min(1,f*u+c*a)))]}var
r=Math.cos(n),i=Math.sin(n),u=Math.cos(t),a=Math.sin(t);return e.invert=function(n,t){var
e=Math.cos(t),o=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),f=l*u-c*a;return[Math.atan2(c*u+l*a,o*r+f*i),Math.asin(Math.max(-1,Math.min(1,f*r-o*i)))]},e}function
oe(n,t){var e=Math.cos(n),r=Math.s
in(n);return
function(i,u,a,o){null!=i?(i=ce(e,i),u=ce(e,u),(a>0?u>i:i>u)&&(i+=2*a*Da)):(i=n+2*a*Da,u=n);for(var
c,l=a*t,f=i;a>0?f>u:u>f;f-=l)o.point((c=Ct([e,-r*Math.cos(f),-r*Math.sin(f)]))[0],c[1])}}function
ce(n,t){var e=Et(t);e[0]-=n,Tt(e);var
r=O(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-ja)%(2*Math.PI)}function le(n,t,e){var
r=ua.range(n,t-ja,e).concat(t);return function(n){return
r.map(function(t){return[n,t]})}}function fe(n,t,e){var
r=ua.range(n,t-ja,e).concat(t);return function(n){return
r.map(function(t){return[t,n]})}}function se(n){return n.source}function he(n){return
n.target}function ge(n,t,e,r){var
i=Math.cos(t),u=Math.sin(t),a=Math.cos(r),o=Math.sin(r),c=i*Math.cos(n),l=i*Math.sin(n),f=a*Math.cos(e),s=a*Math.sin(e),h=2*Math.asin(Math.sqrt(V(r-t)+i*a*V(e-n))),g=1/Math.sin(h),p=h?function(n){var
t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*c+t*f,i=e*l+t*s,a=e*u+t*o;return[Math.atan2(i,r)*Fa,Math.atan2(a,Math.sqrt(r*r+i*i))*Fa]}:function(){return[n*Fa,t*Fa]};return
p.distance=h,p}function pe(){function n(n,i){var
u=Math.sin(i*=La),a=Math.cos(i),o=Math.abs((n*=La)-t),c=Math.cos(o);yo+=Math.atan2(Math.sqrt((o=a*Math.sin(o))*o+(o=r*u-e*a*c)*o),e*u+r*a*c),t=n,e=u,r=a}var
t,e,r;Mo.point=function(i,u){t=i*La,e=Math.sin(u*=La),r=Math.cos(u),Mo.point=n},Mo.lineEnd=function(){Mo.point=Mo.lineEnd=q}}function
de(n){var t=0,e=Da/3,r=ne(n),i=r(t,e);return i.parallels=function(n){return
arguments.length?r(t=n[0]*Da/180,e=n[1]*Da/180):[180*(t/Da),180*(e/Da)]},i}function
me(n,t){function e(n,t){var
e=Math.sqrt(u-2*i*Math.sin(t))/i;return[e*Math.sin(n*=i),a-e*Math.cos(n)]}var
r=Math.sin(n),i=(r+Math.sin(t))/2,u=1+r*(2*i-r),a=Math.sqrt(u)/i;return
e.invert=function(n,t){var
e=a-t;return[Math.atan2(n,e)/i,Y((u-(n*n+e*e)*i*i)/(2*i))]},e}function ve(){function
n(n,t){bo+=i*n-r*t,r=n,i=t}var
t,e,r,i;ko.point=function(u,a){ko.point=n,t=r=u,e=i=a},ko.lineEnd=function(){n(t,e)}}function
ye(n,t){_o>n&&(_o=n),n>So&&(So=n),wo>t&&(wo=t),t>Eo&&(Eo=t)}function
Me(){
function n(n,t){a.push("M",n,",",t,u)}function
t(n,t){a.push("M",n,",",t),o.point=e}function
e(n,t){a.push("L",n,",",t)}function r(){o.point=n}function
i(){a.push("Z")}var
u=xe(4.5),a=[],o={point:n,lineStart:function(){o.point=t},lineEnd:r,polygonStart:function(){o.lineEnd=i},polygonEnd:function(){o.lineEnd=r,o.point=n},pointRadius:function(n){return
u=xe(n),o},result:function(){if(a.length){var n=a.join("");return
a=[],n}}};return o}function
xe(n){return"m0,"+n+"a"+n+","+n+" 0 1,1
0,"+-2*n+"a"+n+","+n+" 0 1,1
0,"+2*n+"z"}function be(n,t){lo||(so+=n,ho+=t,++go)}function _e(){function
n(n,r){var i=n-t,u=r-e,a=Math.sqrt(i*i+u*u);so+=a*(t+n)/2,ho+=a*(e+r)/2,go+=a,t=n,e=r}var
t,e;if(1!==lo){if(!(1>lo))return;lo=1,so=ho=go=0}No.point=function(r,i){No.point=n,t=r,e=i}}function
we(){No.point=be}function Se(){function n(n,t){var
e=i*n-r*t;so+=e*(r+n),ho+=e*(i+t),go+=3*e,r=n,i=t}var
t,e,r,i;2>lo&&(lo=2,so=ho=go=0),No.point=function(u,a){No.point=n,t=r=u,e=i=a},No.lineEnd=function(){n
(t,e)}}function Ee(n){function t(t,e){n.moveTo(t,e),n.arc(t,e,a,0,2*Da)}function
e(t,e){n.moveTo(t,e),o.point=r}function r(t,e){n.lineTo(t,e)}function
i(){o.point=t}function u(){n.closePath()}var
a=4.5,o={point:t,lineStart:function(){o.point=e},lineEnd:i,polygonStart:function(){o.lineEnd=u},polygonEnd:function(){o.lineEnd=i,o.point=t},pointRadius:function(n){return
a=n,o},result:q};return o}function ke(n){var t=Wt(function(t,e){return
n([t*Fa,e*Fa])});return function(n){return
n=t(n),{point:function(t,e){n.point(t*La,e*La)},sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}}function
Ae(n,t){function e(t,e){var
r=Math.cos(t),i=Math.cos(e),u=n(r*i);return[u*i*Math.sin(t),u*Math.sin(e)]}return
e.invert=function(n,e){var
r=Math.sqrt(n*n+e*e),i=t(r),u=Math.sin(i),a=Math.cos(i);return[Math.atan2(n*u,r*a),Math.asin(r&&e*u/r)]},e}function
Ne(n,t){function
e(n,t){var
e=Math.abs(Math.abs(t)-Da/2)<ja?0:a/Math.pow(i(t),u);return[e*Math.sin(u*n),a-e*Math.cos(u*n)]}var
r=Math.cos(n),i=function(n){return
Math.tan(Da/4+n/2)},u=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(i(t)/i(n)),a=r*Math.pow(i(n),u)/u;return
u?(e.invert=function(n,t){var
e=a-t,r=R(u)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/u,2*Math.atan(Math.pow(a/r,1/u))-Da/2]},e):Te}function
qe(n,t){function e(n,t){var e=u-t;return[e*Math.sin(i*n),u-e*Math.cos(i*n)]}var
r=Math.cos(n),i=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),u=r/i+n;return
Math.abs(i)<ja?ee:(e.invert=function(n,t){var
e=u-t;return[Math.atan2(n,e)/i,u-R(i)*Math.sqrt(n*n+e*e)]},e)}function
Te(n,t){return[n,Math.log(Math.tan(Da/4+t/2))]}function Ce(n){var
t,e=Qt(n),r=e.scale,i=e.translate,u=e.clipExtent;return e.scale=function(){var
n=r.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.translate=function(){var
n=i.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.clipExtent=function(n){v
ar a=u.apply(e,arguments);if(a===e){if(t=null==n){var
o=Da*r(),c=i();u([[c[0]-o,c[1]-o],[c[0]+o,c[1]+o]])}}else t&&(a=null);return
a},e.clipExtent(null)}function ze(n,t){var
e=Math.cos(t)*Math.sin(n);return[Math.log((1+e)/(1-e))/2,Math.atan2(Math.tan(t),Math.cos(n))]}function
De(n){function t(t){function a(){l.push("M",u(n(f),o))}for(var
c,l=[],f=[],s=-1,h=t.length,g=lt(e),p=lt(r);++s<h;)i.call(this,c=t[s],s)?f.push([+g.call(this,c,s),+p.call(this,c,s)]):f.length&&(a(),f=[]);return
f.length&&a(),l.length?l.join(""):null}var
e=je,r=Le,i=Ht,u=Fe,a=u.key,o=.7;return t.x=function(n){return
arguments.length?(e=n,t):e},t.y=function(n){return
arguments.length?(r=n,t):r},t.defined=function(n){return
arguments.length?(i=n,t):i},t.interpolate=function(n){return
arguments.length?(a="function"==typeof
n?u=n:(u=jo.get(n)||Fe).key,t):a},t.tension=function(n){return
arguments.length?(o=n,t):o},t}function je(n){return n[0]}function Le(n){return
n[1]}function Fe(n){return n.join("L")}functio
n He(n){return Fe(n)+"Z"}function Pe(n){for(var
t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t<e;)i.push("V",(r=n[t])[1],"H",r[0]);return
i.join("")}function Re(n){for(var
t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t<e;)i.push("H",(r=n[t])[0],"V",r[1]);return
i.join("")}function Oe(n,t){return
n.length<4?Fe(n):n[1]+Ie(n.slice(1,n.length-1),Ve(n,t))}function Ye(n,t){return
n.length<3?Fe(n):n[0]+Ie((n.push(n[0]),n),Ve([n[n.length-2]].concat(n,[n[1]]),t))}function
Ue(n,t){return n.length<3?Fe(n):n[0]+Ie(n,Ve(n,t))}function
Ie(n,t){if(t.length<1||n.length!=t.length&&n.length!=t.length+2)return
Fe(n);var
e=n.length!=t.length,r="",i=n[0],u=n[1],a=t[0],o=a,c=1;if(e&&(r+="Q"+(u[0]-a[0]*2/3)+","+(u[1]-a[1]*2/3)+","+u[0]+","+u[1],i=n[1],c=2),t.length>1){o=t[1],u=n[c],c++,r+="C"+(i[0]+a[0])+","+(i[1]+a[1])+","+(u[0]-o[0])+","+(u[1]-o[1])+","+u[0]+","+u[1];for(var
l=2;l<t.length;l++,c++)u=n[c],o=t[l],r+="S"+(u[0]-o[0])+","+(u[1]-o[1])+","+u[0]+","+u[1]}if(e){var
f=n[c];r+="Q"+(u[0]+o[0]*2/3
)+","+(u[1]+o[1]*2/3)+","+f[0]+","+f[1]}return r}function
Ve(n,t){for(var
e,r=[],i=(1-t)/2,u=n[0],a=n[1],o=1,c=n.length;++o<c;)e=u,u=a,a=n[o],r.push([i*(a[0]-e[0]),i*(a[1]-e[1])]);return
r}function Xe(n){if(n.length<3)return Fe(n);var
t=1,e=n.length,r=n[0],i=r[0],u=r[1],a=[i,i,i,(r=n[1])[0]],o=[u,u,u,r[1]],c=[i,",",u];for(Ge(c,a,o);++t<e;)r=n[t],a.shift(),a.push(r[0]),o.shift(),o.push(r[1]),Ge(c,a,o);for(t=-1;++t<2;)a.shift(),a.push(r[0]),o.shift(),o.push(r[1]),Ge(c,a,o);return
c.join("")}function Ze(n){if(n.length<4)return Fe(n);for(var
t,e=[],r=-1,i=n.length,u=[0],a=[0];++r<3;)t=n[r],u.push(t[0]),a.push(t[1]);for(e.push(Je(Ho,u)+","+Je(Ho,a)),--r;++r<i;)t=n[r],u.shift(),u.push(t[0]),a.shift(),a.push(t[1]),Ge(e,u,a);return
e.join("")}function Be(n){for(var
t,e,r=-1,i=n.length,u=i+4,a=[],o=[];++r<4;)e=n[r%i],a.push(e[0]),o.push(e[1]);for(t=[Je(Ho,a),",",Je(Ho,o)],--r;++r<u;)e=n[r%i],a.shift(),a.push(e[0]),o.shift(),o.push(e[1]),Ge(t,a,o);return
t.join("")}function $e(n,t){va
r e=n.length-1;if(e)for(var
r,i,u=n[0][0],a=n[0][1],o=n[e][0]-u,c=n[e][1]-a,l=-1;++l<=e;)r=n[l],i=l/e,r[0]=t*r[0]+(1-t)*(u+i*o),r[1]=t*r[1]+(1-t)*(a+i*c);return
Xe(n)}function Je(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function
Ge(n,t,e){n.push("C",Je(Lo,t),",",Je(Lo,e),",",Je(Fo,t),",",Je(Fo,e),",",Je(Ho,t),",",Je(Ho,e))}function
Ke(n,t){return(t[1]-n[1])/(t[0]-n[0])
-}function We(n){for(var
t=0,e=n.length-1,r=[],i=n[0],u=n[1],a=r[0]=Ke(i,u);++t<e;)r[t]=(a+(a=Ke(i=u,u=n[t+1])))/2;return
r[t]=a,r}function Qe(n){for(var
t,e,r,i,u=[],a=We(n),o=-1,c=n.length-1;++o<c;)t=Ke(n[o],n[o+1]),Math.abs(t)<1e-6?a[o]=a[o+1]=0:(e=a[o]/t,r=a[o+1]/t,i=e*e+r*r,i>9&&(i=3*t/Math.sqrt(i),a[o]=i*e,a[o+1]=i*r));for(o=-1;++o<=c;)i=(n[Math.min(c,o+1)][0]-n[Math.max(0,o-1)][0])/(6*(1+a[o]*a[o])),u.push([i||0,a[o]*i||0]);return
u}function nr(n){return n.length<3?Fe(n):n[0]+Ie(n,Qe(n))}function tr(n,t,e,r){var
i,u,a,o,c,l,f;return
i=r[n],u=i[0],a=i[1],i=r[t],o=i[0],c=i[1],i=r[e],l=i[0],f=i[1],(f-a)*(o-u)-(c-a)*(l-u)>0}function
er(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function
rr(n,t,e,r){var
i=n[0],u=e[0],a=t[0]-i,o=r[0]-u,c=n[1],l=e[1],f=t[1]-c,s=r[1]-l,h=(o*(c-l)-s*(i-u))/(s*a-o*f);return[i+h*a,c+h*f]}function
ir(n,t){var
e={list:n.map(function(n,t){return{index:t,x:n[0],y:n[1]}}).sort(function(n,t){return
n.y<t.y?-1:n.y>t.y?1:n.x<t.x?-1:n.x>
t.x?1:0}),bottomSite:null},r={list:[],leftEnd:null,rightEnd:null,init:function(){r.leftEnd=r.createHalfEdge(null,"l"),r.rightEnd=r.createHalfEdge(null,"l"),r.leftEnd.r=r.rightEnd,r.rightEnd.l=r.leftEnd,r.list.unshift(r.leftEnd,r.rightEnd)},createHalfEdge:function(n,t){return{edge:n,side:t,vertex:null,l:null,r:null}},insert:function(n,t){t.l=n,t.r=n.r,n.r.l=t,n.r=t},leftBound:function(n){var
t=r.leftEnd;do t=t.r;while(t!=r.rightEnd&&i.rightOf(t,n));return
t=t.l},del:function(n){n.l.r=n.r,n.r.l=n.l,n.edge=null},right:function(n){return
n.r},left:function(n){return n.l},leftRegion:function(n){return
n.edge==null?e.bottomSite:n.edge.region[n.side]},rightRegion:function(n){return
n.edge==null?e.bottomSite:n.edge.region[Po[n.side]]}},i={bisect:function(n,t){var
e={region:{l:n,r:t},ep:{l:null,r:null}},r=t.x-n.x,i=t.y-n.y,u=r>0?r:-r,a=i>0?i:-i;return
e.c=n.x*r+n.y*i+.5*(r*r+i*i),u>a?(e.a=1,e.b=i/r,e.c/=r):(e.b=1,e.a=r/i,e.c/=i),e},intersect:function(n,t){var
e=n.edge,r=t.edge;if(!e|
|!r||e.region.r==r.region.r)return null;var
i=e.a*r.b-e.b*r.a;if(Math.abs(i)<1e-10)return null;var
u,a,o=(e.c*r.b-r.c*e.b)/i,c=(r.c*e.a-e.c*r.a)/i,l=e.region.r,f=r.region.r;l.y<f.y||l.y==f.y&&l.x<f.x?(u=n,a=e):(u=t,a=r);var
s=o>=a.region.r.x;return
s&&u.side==="l"||!s&&u.side==="r"?null:{x:o,y:c}},rightOf:function(n,t){var
e=n.edge,r=e.region.r,i=t.x>r.x;if(i&&n.side==="l")return
1;if(!i&&n.side==="r")return 0;if(e.a===1){var
u=t.y-r.y,a=t.x-r.x,o=0,c=0;if(!i&&e.b<0||i&&e.b>=0?c=o=u>=e.b*a:(c=t.x+t.y*e.b>e.c,e.b<0&&(c=!c),c||(o=1)),!o){var
l=r.x-e.region.l.x;c=e.b*(a*a-u*u)<l*u*(1+2*a/l+e.b*e.b),e.b<0&&(c=!c)}}else{var
f=e.c-e.a*t.x,s=t.y-f,h=t.x-r.x,g=f-r.y;c=s*s>h*h+g*g}return
n.side==="l"?c:!c},endPoint:function(n,e,r){n.ep[e]=r,n.ep[Po[e]]&&t(n)},distance:function(n,t){var
e=n.x-t.x,r=n.y-t.y;return
Math.sqrt(e*e+r*r)}},u={list:[],insert:function(n,t,e){n.vertex=t,n.ystar=t.y+e;for(var
r=0,i=u.list,a=i.length;a>r;r++){var
o=i[r];if(!(n.ystar>o.ystar||n.ystar==o.ystar&&t.
x>o.vertex.x))break}i.splice(r,0,n)},del:function(n){for(var
t=0,e=u.list,r=e.length;r>t&&e[t]!=n;++t);e.splice(t,1)},empty:function(){return
u.list.length===0},nextEvent:function(n){for(var
t=0,e=u.list,r=e.length;r>t;++t)if(e[t]==n)return e[t+1];return
null},min:function(){var
n=u.list[0];return{x:n.vertex.x,y:n.ystar}},extractMin:function(){return
u.list.shift()}};r.init(),e.bottomSite=e.list.shift();for(var
a,o,c,l,f,s,h,g,p,d,m,v,y,M=e.list.shift();;)if(u.empty()||(a=u.min()),M&&(u.empty()||M.y<a.y||M.y==a.y&&M.x<a.x))o=r.leftBound(M),c=r.right(o),h=r.rightRegion(o),v=i.bisect(h,M),s=r.createHalfEdge(v,"l"),r.insert(o,s),d=i.intersect(o,s),d&&(u.del(o),u.insert(o,d,i.distance(d,M))),o=s,s=r.createHalfEdge(v,"r"),r.insert(o,s),d=i.intersect(s,c),d&&u.insert(s,d,i.distance(d,M)),M=e.list.shift();else{if(u.empty())break;o=u.extractMin(),l=r.left(o),c=r.right(o),f=r.right(c),h=r.leftRegion(o),g=r.rightRegion(c),m=o.vertex,i.endPoint(o.edge,o.side,m),i.endPoint(c.edge,c.side
,m),r.del(o),u.del(c),r.del(c),y="l",h.y>g.y&&(p=h,h=g,g=p,y="r"),v=i.bisect(h,g),s=r.createHalfEdge(v,y),r.insert(l,s),i.endPoint(v,Po[y],m),d=i.intersect(l,s),d&&(u.del(l),u.insert(l,d,i.distance(d,h))),d=i.intersect(s,f),d&&u.insert(s,d,i.distance(d,h))}for(o=r.right(r.leftEnd);o!=r.rightEnd;o=r.right(o))t(o.edge)}function
ur(n){return n.x}function ar(n){return n.y}function
or(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function
cr(n,t,e,r,i,u){if(!n(t,e,r,i,u)){var
a=.5*(e+i),o=.5*(r+u),c=t.nodes;c[0]&&cr(n,c[0],e,r,a,o),c[1]&&cr(n,c[1],a,r,i,o),c[2]&&cr(n,c[2],e,o,a,u),c[3]&&cr(n,c[3],a,o,i,u)}}function
lr(n,t){n=ua.rgb(n),t=ua.rgb(t);var e=n.r,r=n.g,i=n.b,u=t.r-e,a=t.g-r,o=t.b-i;return
function(n){return"#"+rt(Math.round(e+u*n))+rt(Math.round(r+a*n))+rt(Math.round(i+o*n))}}function
fr(n){var
t=[n.a,n.b],e=[n.c,n.d],r=hr(t),i=sr(t,e),u=hr(gr(e,t,-i))||0;t[0]*e[1]<e[0]*t[1]&&(t[0]*=-1,t[1]*=-1,r*=-1,i*=-1),this.rotate=(r?Math.atan2(t[1],t[0]):Math.atan2(-e[0],e[1
]))*Fa,this.translate=[n.e,n.f],this.scale=[r,u],this.skew=u?Math.atan2(i,u)*Fa:0}function
sr(n,t){return n[0]*t[0]+n[1]*t[1]}function hr(n){var t=Math.sqrt(sr(n,n));return
t&&(n[0]/=t,n[1]/=t),t}function gr(n,t,e){return
n[0]+=e*t[0],n[1]+=e*t[1],n}function pr(n,t){return t-=n=+n,function(e){return
n+t*e}}function dr(n,t){var
e,r=[],i=[],u=ua.transform(n),a=ua.transform(t),o=u.translate,c=a.translate,l=u.rotate,f=a.rotate,s=u.skew,h=a.skew,g=u.scale,p=a.scale;return
o[0]!=c[0]||o[1]!=c[1]?(r.push("translate(",null,",",null,")"),i.push({i:1,x:pr(o[0],c[0])},{i:3,x:pr(o[1],c[1])})):c[0]||c[1]?r.push("translate("+c+")"):r.push(""),l!=f?(l-f>180?f+=360:f-l>180&&(l+=360),i.push({i:r.push(r.pop()+"rotate(",null,")")-2,x:pr(l,f)})):f&&r.push(r.pop()+"rotate("+f+")"),s!=h?i.push({i:r.push(r.pop()+"skewX(",null,")")-2,x:pr(s,h)}):h&&r.push(r.pop()+"skewX("+h+")"),g[0]!=p[0]||g[1]!=p[1]?(e=r.push(r.pop()+"scale(",null,",",null,")"),i.push({i:e-4,x:pr(g[0],p[0])},{i:e-2,x:pr(g[1],p[1]
)})):(p[0]!=1||p[1]!=1)&&r.push(r.pop()+"scale("+p+")"),e=i.length,function(n){for(var
t,u=-1;++u<e;)r[(t=i[u]).i]=t.x(n);return r.join("")}}function mr(n,t){var
e,r={},i={};for(e in n)e in t?r[e]=Mr(e)(n[e],t[e]):i[e]=n[e];for(e in t)e in
n||(i[e]=t[e]);return function(n){for(e in r)i[e]=r[e](n);return i}}function vr(n,t){var
e,r,i,u,a,o=0,c=0,l=[],f=[];for(n+="",t+="",Oo.lastIndex=0,r=0;e=Oo.exec(t);++r)e.index&&l.push(t.substring(o,c=e.index)),f.push({i:l.length,x:e[0]}),l.push(null),o=Oo.lastIndex;for(o<t.length&&l.push(t.substring(o)),r=0,u=f.length;(e=Oo.exec(n))&&u>r;++r)if(a=f[r],a.x==e[0]){if(a.i)if(l[a.i+1]==null)for(l[a.i-1]+=a.x,l.splice(a.i,1),i=r+1;u>i;++i)f[i].i--;else
for(l[a.i-1]+=a.x+l[a.i+1],l.splice(a.i,2),i=r+1;u>i;++i)f[i].i-=2;else
if(l[a.i+1]==null)l[a.i]=a.x;else
for(l[a.i]=a.x+l[a.i+1],l.splice(a.i+1,1),i=r+1;u>i;++i)f[i].i--;f.splice(r,1),u--,r--}else
a.x=pr(parseFloat(e[0]),parseFloat(a.x));for(;u>r;)a=f.pop(),l[a.i+1]==null?l[a.i]=a.x:(l[a.i]=a.x
+l[a.i+1],l.splice(a.i+1,1)),u--;return
l.length===1?l[0]==null?(a=f[0].x,function(n){return a(n)+""}):function(){return
t}:function(n){for(r=0;u>r;++r)l[(a=f[r]).i]=a.x(n);return
l.join("")}}function yr(n,t){for(var
e,r=ua.interpolators.length;--r>=0&&!(e=ua.interpolators[r](n,t)););return
e}function Mr(n){return"transform"==n?dr:yr}function xr(n,t){var
e,r=[],i=[],u=n.length,a=t.length,o=Math.min(n.length,t.length);for(e=0;o>e;++e)r.push(yr(n[e],t[e]));for(;u>e;++e)i[e]=n[e];for(;a>e;++e)i[e]=t[e];return
function(n){for(e=0;o>e;++e)i[e]=r[e](n);return i}}function br(n){return
function(t){return 0>=t?0:t>=1?1:n(t)}}function _r(n){return function(t){return
1-n(1-t)}}function wr(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function
Sr(n){return n*n}function Er(n){return n*n*n}function kr(n){if(0>=n)return
0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function
Ar(n){return function(t){return Math.pow(t,n)}}function Nr(n){return 1-Math.cos(n*Da/
2)}function qr(n){return Math.pow(2,10*(n-1))}function Tr(n){return
1-Math.sqrt(1-n*n)}function Cr(n,t){var e;return
arguments.length<2&&(t=.45),arguments.length?e=t/(2*Da)*Math.asin(1/n):(n=1,e=t/4),function(r){return
1+n*Math.pow(2,10*-r)*Math.sin(2*(r-e)*Da/t)}}function zr(n){return
n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Dr(n){return
1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function
jr(n,t){n=ua.hcl(n),t=ua.hcl(t);var e=n.h,r=n.c,i=n.l,u=t.h-e,a=t.c-r,o=t.l-i;return
isNaN(a)&&(a=0,r=isNaN(r)?t.c:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:-180>u&&(u+=360),function(n){return
B(e+u*n,r+a*n,i+o*n)+""}}function Lr(n,t){n=ua.hsl(n),t=ua.hsl(t);var
e=n.h,r=n.s,i=n.l,u=t.h-e,a=t.s-r,o=t.l-i;return
isNaN(a)&&(a=0,r=isNaN(r)?t.s:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:-180>u&&(u+=360),function(n){return
P(e+u*n,r+a*n,i+o*n)+""}}function Fr(n,t){n=ua.lab(n),t=ua
.lab(t);var e=n.l,r=n.a,i=n.b,u=t.l-e,a=t.a-r,o=t.b-i;return function(n){return
G(e+u*n,r+a*n,i+o*n)+""}}function Hr(n,t){return t-=n,function(e){return
Math.round(n+t*e)}}function Pr(n,t){return
t=t-(n=+n)?1/(t-n):0,function(e){return(e-n)*t}}function Rr(n,t){return
t=t-(n=+n)?1/(t-n):0,function(e){return Math.max(0,Math.min(1,(e-n)*t))}}function
Or(n){for(var t=n.source,e=n.target,r=Ur(t,e),i=[t];t!==r;)t=t.parent,i.push(t);for(var
u=i.length;e!==r;)i.splice(u,0,e),e=e.parent;return i}function Yr(n){for(var
t=[],e=n.parent;null!=e;)t.push(n),n=e,e=e.parent;return t.push(n),t}function
Ur(n,t){if(n===t)return n;for(var
e=Yr(n),r=Yr(t),i=e.pop(),u=r.pop(),a=null;i===u;)a=i,i=e.pop(),u=r.pop();return
a}function Ir(n){n.fixed|=2}function Vr(n){n.fixed&=-7}function
Xr(n){n.fixed|=4,n.px=n.x,n.py=n.y}function Zr(n){n.fixed&=-5}function Br(n,t,e){var
r=0,i=0;if(n.charge=0,!n.leaf)for(var
u,a=n.nodes,o=a.length,c=-1;++c<o;)u=a[c],null!=u&&(Br(u,t,e),n.charge+=u.charge,r+=u.charge*u
.cx,i+=u.charge*u.cy);if(n.point){n.leaf||(n.point.x+=Math.random()-.5,n.point.y+=Math.random()-.5);var
l=t*e[n.point.index];n.charge+=n.pointCharge=l,r+=l*n.point.x,i+=l*n.point.y}n.cx=r/n.charge,n.cy=i/n.charge}function
$r(n,t){return
ua.rebind(n,t,"sort","children","value"),n.nodes=n,n.links=Wr,n}function
Jr(n){return n.children}function Gr(n){return n.value}function Kr(n,t){return
t.value-n.value}function Wr(n){return
ua.merge(n.map(function(n){return(n.children||[]).map(function(t){return{source:n,target:t}})}))}function
Qr(n){return n.x}function ni(n){return n.y}function ti(n,t,e){n.y0=t,n.y=e}function
ei(n){return ua.range(n.length)}function ri(n){for(var
t=-1,e=n[0].length,r=[];++t<e;)r[t]=0;return r}function ii(n){for(var
t,e=1,r=0,i=n[0][1],u=n.length;u>e;++e)(t=n[e][1])>i&&(r=e,i=t);return
r}function ui(n){return n.reduce(ai,0)}function ai(n,t){return n+t[1]}function
oi(n,t){return ci(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function ci(n,t){for(var
e=-1,r=+n[0
],i=(n[1]-r)/t,u=[];++e<=t;)u[e]=i*e+r;return u}function
li(n){return[ua.min(n),ua.max(n)]}function fi(n,t){return n.parent==t.parent?1:2}function
si(n){var t=n.children;return t&&t.length?t[0]:n._tree.thread}function hi(n){var
t,e=n.children;return e&&(t=e.length)?e[t-1]:n._tree.thread}function gi(n,t){var
e=n.children;if(e&&(i=e.length))for(var
r,i,u=-1;++u<i;)t(r=gi(e[u],t),n)>0&&(n=r);return n}function pi(n,t){return
n.x-t.x}function di(n,t){return t.x-n.x}function mi(n,t){return n.depth-t.depth}function
vi(n,t){function e(n,r){var i=n.children;if(i&&(a=i.length))for(var
u,a,o=null,c=-1;++c<a;)u=i[c],e(u,o),o=u;t(n,r)}e(n,null)}function yi(n){for(var
t,e=0,r=0,i=n.children,u=i.length;--u>=0;)t=i[u]._tree,t.prelim+=e,t.mod+=e,e+=t.shift+(r+=t.change)}function
Mi(n,t,e){n=n._tree,t=t._tree;var
r=e/(t.number-n.number);n.change+=r,t.change-=r,t.shift+=e,t.prelim+=e,t.mod+=e}function
xi(n,t,e){return n._tree.ancestor.parent==t.parent?n._tree.ancestor:e}function
bi(n,t){return
n.value-t.value}function _i(n,t){var
e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function
wi(n,t){n._pack_next=t,t._pack_prev=n}function Si(n,t){var
e=t.x-n.x,r=t.y-n.y,i=n.r+t.r;return i*i-e*e-r*r>.001}function Ei(n){function
t(n){f=Math.min(n.x-n.r,f),s=Math.max(n.x+n.r,s),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(l=e.length)){var
e,r,i,u,a,o,c,l,f=1/0,s=-1/0,h=1/0,g=-1/0;if(e.forEach(ki),r=e[0],r.x=-r.r,r.y=0,t(r),l>1&&(i=e[1],i.x=i.r,i.y=0,t(i),l>2))for(u=e[2],qi(r,i,u),t(u),_i(r,u),r._pack_prev=u,_i(u,i),i=r._pack_next,a=3;l>a;a++){qi(r,i,u=e[a]);var
p=0,d=1,m=1;for(o=i._pack_next;o!==i;o=o._pack_next,d++)if(Si(o,u)){p=1;break}if(1==p)for(c=r._pack_prev;c!==o._pack_prev&&!Si(c,u);c=c._pack_prev,m++);p?(m>d||d==m&&i.r<r.r?wi(r,i=o):wi(r=c,i),a--):(_i(r,u),i=u,t(u))}var
v=(f+s)/2,y=(h+g)/2,M=0;for(a=0;l>a;a++)u=e[a],u.x-=v,u.y-=y,M=Math.max(M,u.r+Math.sqrt(u.x*u.x+u.y*u.y));n.r=M,e.forEach(Ai)}}function
ki(n){n._pack_n
ext=n._pack_prev=n}function Ai(n){delete n._pack_next,delete n._pack_prev}function
Ni(n,t,e,r){var i=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,i)for(var
u=-1,a=i.length;++u<a;)Ni(i[u],t,e,r)}function qi(n,t,e){var
r=n.r+e.r,i=t.x-n.x,u=t.y-n.y;if(r&&(i||u)){var a=t.r+e.r,o=i*i+u*u;a*=a,r*=r;var
c=.5+(r-a)/(2*o),l=Math.sqrt(Math.max(0,2*a*(r+o)-(r-=o)*r-a*a))/(2*o);e.x=n.x+c*i+l*u,e.y=n.y+c*u-l*i}else
e.x=n.x+r,e.y=n.y}function Ti(n){return 1+ua.max(n,function(n){return n.y})}function
Ci(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function zi(n){var
t=n.children;return t&&t.length?zi(t[0]):n}function Di(n){var
t,e=n.children;return e&&(t=e.length)?Di(e[t-1]):n}function
ji(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Li(n,t){var
e=n.x+t[3],r=n.y+t[0],i=n.dx-t[1]-t[3],u=n.dy-t[0]-t[2];return
0>i&&(e+=i/2,i=0),0>u&&(r+=u/2,u=0),{x:e,y:r,dx:i,dy:u}}function
Fi(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Hi(n){return
n.rangeExtent?n.rangeEx
tent():Fi(n.range())}function Pi(n,t,e,r){var i=e(n[0],n[1]),u=r(t[0],t[1]);return
function(n){return u(i(n))}}function Ri(n,t){var e,r=0,i=n.length-1,u=n[r],a=n[i];return
u>a&&(e=r,r=i,i=e,e=u,u=a,a=e),(t=t(a-u))&&(n[r]=t.floor(u),n[i]=t.ceil(a)),n}function
Oi(n,t,e,r){var
i=[],u=[],a=0,o=Math.min(n.length,t.length)-1;for(n[o]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++a<=o;)i.push(e(n[a-1],n[a])),u.push(r(t[a-1],t[a]));return
function(t){var e=ua.bisect(n,t,1,o)-1;return u[e](i[e](t))}}function Yi(n,t,e,r){function
i(){var i=Math.min(n.length,t.length)>2?Oi:Pi,c=r?Rr:Pr;return
a=i(n,t,c,e),o=i(t,n,c,yr),u}function u(n){return a(n)}var a,o;return
u.invert=function(n){return o(n)},u.domain=function(t){return
arguments.length?(n=t.map(Number),i()):n},u.range=function(n){return
arguments.length?(t=n,i()):t},u.rangeRound=function(n){return
u.range(n).interpolate(Hr)},u.clamp=function(n){return
arguments.length?(r=n,i()):r},u.interpolate=function(n){return arguments.l
ength?(e=n,i()):e},u.ticks=function(t){return Xi(n,t)},u.tickFormat=function(t,e){return
Zi(n,t,e)},u.nice=function(){return Ri(n,Ii),i()},u.copy=function(){return
Yi(n,t,e,r)},i()}function Ui(n,t){return
ua.rebind(n,t,"range","rangeRound","interpolate","clamp")}function
Ii(n){return
n=Math.pow(10,Math.round(Math.log(n)/Math.LN10)-1),n&&{floor:function(t){return
Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}}function Vi(n,t){var
e=Fi(n),r=e[1]-e[0],i=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),u=t/r*i;return.15>=u?i*=10:.35>=u?i*=5:.75>=u&&(i*=2),e[0]=Math.ceil(e[0]/i)*i,e[1]=Math.floor(e[1]/i)*i+.5*i,e[2]=i,e}function
Xi(n,t){return ua.range.apply(ua,Vi(n,t))}function Zi(n,t,e){var
r=-Math.floor(Math.log(Vi(n,t)[2])/Math.LN10+.01);return
ua.format(e?e.replace(no,function(n,t,e,i,u,a,o,c,l,f){return[t,e,i,u,a,o,c,l||"."+(r-2*("%"===f)),f].join("")}):",."+r+"f")}function
Bi(n,t,e,r,i){function u(t){return n(e(t))}function a(){return e===$i?{floor:o,ceil:c}
:{floor:function(n){return-c(-n)},ceil:function(n){return-o(-n)}}}function o(n){return
Math.pow(t,Math.floor(Math.log(n)/Math.log(t)))}function c(n){return
Math.pow(t,Math.ceil(Math.log(n)/Math.log(t)))}return u.invert=function(t){return
r(n.invert(t))},u.domain=function(t){return
arguments.length?(t[0]<0?(e=Gi,r=Ki):(e=$i,r=Ji),n.domain((i=t.map(Number)).map(e)),u):i},u.base=function(n){return
arguments.length?(t=+n,u):t},u.nice=function(){return
n.domain(Ri(i,a).map(e)),u},u.ticks=function(){var
i=Fi(n.domain()),u=[];if(i.every(isFinite)){var
a=Math.log(t),o=Math.floor(i[0]/a),c=Math.ceil(i[1]/a),l=r(i[0]),f=r(i[1]),s=t%1?2:t;if(e===Gi)for(u.push(-Math.pow(t,-o));o++<c;)for(var
h=s-1;h>0;h--)u.push(-Math.pow(t,-o)*h);else{for(;c>o;o++)for(var
h=1;s>h;h++)u.push(Math.pow(t,o)*h);u.push(Math.pow(t,o))}for(o=0;u[o]<l;o++);for(c=u.length;u[c-1]>f;c--);u=u.slice(o,c)}return
u},u.tickFormat=function(n,i){if(arguments.length<2&&(i=Jo),!arguments.length)return
i;var a,o=Math.log(t
),c=Math.max(.1,n/u.ticks().length),l=e===Gi?(a=-1e-12,Math.floor):(a=1e-12,Math.ceil);return
function(n){return n/r(o*l(e(n)/o+a))<=c?i(n):""}},u.copy=function(){return
Bi(n.copy(),t,e,r,i)},Ui(u,n)}function $i(n){return Math.log(0>n?0:n)}function
Ji(n){return Math.exp(n)}function Gi(n){return-Math.log(n>0?0:-n)}function
Ki(n){return-Math.exp(-n)}function Wi(n,t,e){function r(t){return n(i(t))}var
i=Qi(t),u=Qi(1/t);return r.invert=function(t){return
u(n.invert(t))},r.domain=function(t){return
arguments.length?(n.domain((e=t.map(Number)).map(i)),r):e},r.ticks=function(n){return
Xi(e,n)},r.tickFormat=function(n,t){return Zi(e,n,t)},r.nice=function(){return
r.domain(Ri(e,Ii))},r.exponent=function(a){return
arguments.length?(i=Qi(t=a),u=Qi(1/t),n.domain(e.map(i)),r):t},r.copy=function(){return
Wi(n.copy(),t,e)},Ui(r,n)}function Qi(n){return function(t){return
0>t?-Math.pow(-t,n):Math.pow(t,n)}}function nu(n,t){function e(t){return
a[((u.get(t)||u.set(t,n.push(t)))-1)%a.length]}
function r(t,e){return ua.range(n.length).map(function(n){return t+e*n})}var u,a,o;return
e.domain=function(r){if(!arguments.length)return n;n=[],u=new i;for(var
a,o=-1,c=r.length;++o<c;)u.has(a=r[o])||u.set(a,n.push(a));return
e[t.t].apply(e,t.a)},e.range=function(n){return
arguments.length?(a=n,o=0,t={t:"range",a:arguments},e):a},e.rangePoints=function(i,u){arguments.length<2&&(u=0);var
c=i[0],l=i[1],f=(l-c)/(Math.max(1,n.length-1)+u);return
a=r(n.length<2?(c+l)/2:c+f*u/2,f),o=0,t={t:"rangePoints",a:arguments},e},e.rangeBands=function(i,u,c){arguments.length<2&&(u=0),arguments.length<3&&(c=u);var
l=i[1]<i[0],f=i[l-0],s=i[1-l],h=(s-f)/(n.length-u+2*c);return
a=r(f+h*c,h),l&&a.reverse(),o=h*(1-u),t={t:"rangeBands",a:arguments},e},e.rangeRoundBands=function(i,u,c){arguments.length<2&&(u=0),arguments.length<3&&(c=u);var
l=i[1]<i[0],f=i[l-0],s=i[1-l],h=Math.floor((s-f)/(n.length-u+2*c)),g=s-f-(n.length-u)*h;return
a=r(f+Math.round(g/2),h),l&&a.reverse(),o=Math.round(h*(1-u)),t=
{t:"rangeRoundBands",a:arguments},e},e.rangeBand=function(){return
o},e.rangeExtent=function(){return Fi(t.a[0])},e.copy=function(){return
nu(n,t)},e.domain(n)}function tu(n,t){function e(){var
e=0,u=t.length;for(i=[];++e<u;)i[e-1]=ua.quantile(n,e/u);return r}function r(n){return
isNaN(n=+n)?0/0:t[ua.bisect(i,n)]}var i;return r.domain=function(t){return
arguments.length?(n=t.filter(function(n){return!isNaN(n)}).sort(ua.ascending),e()):n},r.range=function(n){return
arguments.length?(t=n,e()):t},r.quantiles=function(){return i},r.copy=function(){return
tu(n,t)},e()}function eu(n,t,e){function r(t){return
e[Math.max(0,Math.min(a,Math.floor(u*(t-n))))]}function i(){return
u=e.length/(t-n),a=e.length-1,r}var u,a;return r.domain=function(e){return
arguments.length?(n=+e[0],t=+e[e.length-1],i()):[n,t]},r.range=function(n){return
arguments.length?(e=n,i()):e},r.copy=function(){return eu(n,t,e)},i()}function
ru(n,t){function e(e){return t[ua.bisect(n,e)]}return e.domain=function(t){r
eturn arguments.length?(n=t,e):n},e.range=function(n){return
arguments.length?(t=n,e):t},e.copy=function(){return ru(n,t)},e}function iu(n){function
t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return
arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return
Xi(n,t)},t.tickFormat=function(t,e){return Zi(n,t,e)},t.copy=function(){return
iu(n)},t}function uu(n){return n.innerRadius}function au(n){return n.outerRadius}function
ou(n){return n.startAngle}function cu(n){return n.endAngle}function lu(n){for(var
t,e,r,i=-1,u=n.length;++i<u;)t=n[i],e=t[0],r=t[1]+nc,t[0]=e*Math.cos(r),t[1]=e*Math.sin(r);return
n}function fu(n){function t(t){function
c(){d.push("M",o(n(v),s),f,l(n(m.reverse()),s),"Z")}for(var
h,g,p,d=[],m=[],v=[],y=-1,M=t.length,x=lt(e),b=lt(i),_=e===r?function(){return
g}:lt(r),w=i===u?function(){return
p}:lt(u);++y<M;)a.call(this,h=t[y],y)?(m.push([g=+x.call(this,h,y),p=+b.call(this,h,y)]),v.push([+_.call(this,h,y),+w.call(this,h,y)])):m.length&&(
c(),m=[],v=[]);return m.length&&c(),d.length?d.join(""):null}var
e=je,r=je,i=0,u=Le,a=Ht,o=Fe,c=o.key,l=o,f="L",s=.7;return
t.x=function(n){return arguments.length?(e=r=n,t):r},t.x0=function(n){return
arguments.length?(e=n,t):e},t.x1=function(n){return
arguments.length?(r=n,t):r},t.y=function(n){return
arguments.length?(i=u=n,t):u},t.y0=function(n){return
arguments.length?(i=n,t):i},t.y1=function(n){return
arguments.length?(u=n,t):u},t.defined=function(n){return
arguments.length?(a=n,t):a},t.interpolate=function(n){return
arguments.length?(c="function"==typeof
n?o=n:(o=jo.get(n)||Fe).key,l=o.reverse||o,f=o.closed?"M":"L",t):c},t.tension=function(n){return
arguments.length?(s=n,t):s},t}function su(n){return n.radius}function
hu(n){return[n.x,n.y]}function gu(n){return function(){var
t=n.apply(this,arguments),e=t[0],r=t[1]+nc;return[e*Math.cos(r),e*Math.sin(r)]}}function
pu(){return 64}function du(){return"circle"}function mu(n){var
t=Math.sqrt(n/Da);return"M0,"+t+"A"+t+","+t+
" 0 1,1 0,"+-t+"A"+t+","+t+" 0 1,1
0,"+t+"Z"}function vu(n,t){return va(n,ac),n.id=t,n}function
yu(n,t,e,r){var i=n.id;return D(n,"function"==typeof
e?function(n,u,a){n.__transition__[i].tween.set(t,r(e.call(n,n.__data__,u,a)))}:(e=r(e),function(n){n.__transition__[i].tween.set(t,e)}))}function
Mu(n){return null==n&&(n=""),function(){this.textContent=n}}function
xu(n,t,e,r){var
u=n.__transition__||(n.__transition__={active:0,count:0}),a=u[e];if(!a){var
o=r.time;return a=u[e]={tween:new
i,event:ua.dispatch("start","end"),time:o,ease:r.ease,delay:r.delay,duration:r.duration},++u.count,ua.timer(function(r){function
i(r){return
u.active>e?l():(u.active=e,h.start.call(n,f,t),a.tween.forEach(function(e,r){(r=r.call(n,f,t))&&d.push(r)}),c(r)||ua.timer(c,0,o),1)}function
c(r){if(u.active!==e)return l();for(var
i=(r-g)/p,a=s(i),o=d.length;o>0;)d[--o].call(n,a);return
i>=1?(l(),h.end.call(n,f,t),1):void 0}function l(){return--u.count?delete u[e]:delete
n.__transition__,1}var f=n.__dat
a__,s=a.ease,h=a.event,g=a.delay,p=a.duration,d=[];return
r>=g?i(r):ua.timer(i,g,o),1},0,o),a}}function
bu(n,t){n.attr("transform",function(n){return"translate("+t(n)+",0)"})}function
_u(n,t){n.attr("transform",function(n){return"translate(0,"+t(n)+")"})}function
wu(n,t,e){if(r=[],e&&t.length>1){for(var
r,i,u,a=Fi(n.domain()),o=-1,c=t.length,l=(t[1]-t[0])/++e;++o<c;)for(i=e;--i>0;)(u=+t[o]-i*l)>=a[0]&&r.push(u);for(--o,i=0;++i<e&&(u=+t[o]+i*l)<a[1];)r.push(u)}return
r}function Su(){this._=new
Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function
Eu(n,t,e){function r(t){var e=n(t),r=u(e,1);return r-t>t-e?e:r}function i(e){return
t(e=n(new gc(e-1)),1),e}function u(n,e){return t(n=new gc(+n),e),n}function a(n,r,u){var
a=i(n),o=[];if(u>1)for(;r>a;)e(a)%u||o.push(new Date(+a)),t(a,1);else
for(;r>a;)o.push(new Date(+a)),t(a,1);return o}function o(n,t,e){try{gc=Su;var r=new
Su;return r._=n,a(r,t,e)}finally{gc=Date}}n.floor=n,n.round=r,n.ceil=i,n.offset=u,n.r
ange=a;var c=n.utc=ku(n);return
c.floor=c,c.round=ku(r),c.ceil=ku(i),c.offset=ku(u),c.range=o,n}function ku(n){return
function(t,e){try{gc=Su;var r=new Su;return r._=t,n(r,e)._}finally{gc=Date}}}function
Au(n,t,e,r){for(var
i,u,a=0,o=t.length,c=e.length;o>a;){if(r>=c)return-1;if(i=t.charCodeAt(a++),37===i){if(u=Cc[t.charAt(a++)],!u||(r=u(n,e,r))<0)return-1}else
if(i!=e.charCodeAt(r++))return-1}return r}function Nu(n){return
RegExp("^(?:"+n.map(ua.requote).join("|")+")","i")}function
qu(n){for(var t=new i,e=-1,r=n.length;++e<r;)t.set(n[e].toLowerCase(),e);return
t}function Tu(n,t,e){n+="";var r=n.length;return
e>r?Array(e-r+1).join(t)+n:n}function Cu(n,t,e){Sc.lastIndex=0;var
r=Sc.exec(t.substring(e));return r?e+=r[0].length:-1}function zu(n,t,e){wc.lastIndex=0;var
r=wc.exec(t.substring(e));return r?e+=r[0].length:-1}function Du(n,t,e){Ac.lastIndex=0;var
r=Ac.exec(t.substring(e));return
r?(n.m=Nc.get(r[0].toLowerCase()),e+=r[0].length):-1}function
ju(n,t,e){Ec.lastIndex=0;var
r=Ec.exec(t.substring(e));return
r?(n.m=kc.get(r[0].toLowerCase()),e+=r[0].length):-1}function Lu(n,t,e){return
Au(n,""+Tc.c,t,e)}function Fu(n,t,e){return Au(n,""+Tc.x,t,e)}function
Hu(n,t,e){return Au(n,""+Tc.X,t,e)}function Pu(n,t,e){zc.lastIndex=0;var
r=zc.exec(t.substring(e,e+4));return r?(n.y=+r[0],e+=r[0].length):-1}function
Ru(n,t,e){zc.lastIndex=0;var r=zc.exec(t.substring(e,e+2));return
r?(n.y=Ou(+r[0]),e+=r[0].length):-1}function Ou(n){return n+(n>68?1900:2e3)}function
Yu(n,t,e){zc.lastIndex=0;var r=zc.exec(t.substring(e,e+2));return
r?(n.m=r[0]-1,e+=r[0].length):-1}function Uu(n,t,e){zc.lastIndex=0;var
r=zc.exec(t.substring(e,e+2));return r?(n.d=+r[0],e+=r[0].length):-1}function
Iu(n,t,e){zc.lastIndex=0;var r=zc.exec(t.substring(e,e+2));return
r?(n.H=+r[0],e+=r[0].length):-1}function Vu(n,t,e){zc.lastIndex=0;var
r=zc.exec(t.substring(e,e+2));return r?(n.M=+r[0],e+=r[0].length):-1}function
Xu(n,t,e){zc.lastIndex=0;var r=zc.exec(t.substring(e,e+2));return r?(n.S=+
r[0],e+=r[0].length):-1}function Zu(n,t,e){zc.lastIndex=0;var
r=zc.exec(t.substring(e,e+3));return r?(n.L=+r[0],e+=r[0].length):-1}function
Bu(n,t,e){var r=Dc.get(t.substring(e,e+=2).toLowerCase());return
null==r?-1:(n.p=r,e)}function $u(n){var
t=n.getTimezoneOffset(),e=t>0?"-":"+",r=~~(Math.abs(t)/60),i=Math.abs(t)%60;return
e+Tu(r,"0",2)+Tu(i,"0",2)}function Ju(n){return
n.toISOString()}function Gu(n,t,e){function r(t){return n(t)}return
r.invert=function(t){return Ku(n.invert(t))},r.domain=function(t){return
arguments.length?(n.domain(t),r):n.domain().map(Ku)},r.nice=function(n){return
r.domain(Ri(r.domain(),function(){return n}))},r.ticks=function(e,i){var
u=Fi(r.domain());if("function"!=typeof e){var
a=u[1]-u[0],o=a/e,c=ua.bisect(Lc,o);if(c==Lc.length)return t.year(u,e);if(!c)return
n.ticks(e).map(Ku);Math.log(o/Lc[c-1])<Math.log(Lc[c]/o)&&--c,e=t[c],i=e[1],e=e[0].range}return
e(u[0],new Date(+u[1]+1),i)},r.tickFormat=function(){return e},r.copy=function(){return
Gu(n.c
opy(),t,e)},Ui(r,n)}function Ku(n){return new Date(n)}function Wu(n){return
function(t){for(var e=n.length-1,r=n[e];!r[1](t);)r=n[--e];return r[0](t)}}function
Qu(n){var t=new Date(n,0,1);return t.setFullYear(n),t}function na(n){var
t=n.getFullYear(),e=Qu(t),r=Qu(t+1);return t+(n-e)/(r-e)}function ta(n){var t=new
Date(Date.UTC(n,0,1));return t.setUTCFullYear(n),t}function ea(n){var
t=n.getUTCFullYear(),e=ta(t),r=ta(t+1);return t+(n-e)/(r-e)}function ra(n){return
JSON.parse(n.responseText)}function ia(n){var t=aa.createRange();return
t.selectNode(aa.body),t.createContextualFragment(n.responseText)}var
ua={version:"3.1.10"};Date.now||(Date.now=function(){return+new Date});var
aa=document,oa=window;try{aa.createElement("div").style.setProperty("opacity",0,"")}catch(ca){var
la=oa.CSSStyleDeclaration.prototype,fa=la.setProperty;la.setProperty=function(n,t,e){fa.call(this,n,t+"",e)}}ua.ascending=function(n,t){return
t>n?-1:n>t?1:n>=t?0:0/0},ua.descending=function(n,t){return n>t?-
1:t>n?1:t>=n?0:0/0},ua.min=function(n,t){var
e,r,i=-1,u=n.length;if(arguments.length===1){for(;++i<u&&((e=n[i])==null||e!=e);)e=void
0;for(;++i<u;)(r=n[i])!=null&&e>r&&(e=r)}else{for(;++i<u&&((e=t.call(n,n[i],i))==null||e!=e);)e=void
0;for(;++i<u;)(r=t.call(n,n[i],i))!=null&&e>r&&(e=r)}return
e},ua.max=function(n,t){var
e,r,i=-1,u=n.length;if(arguments.length===1){for(;++i<u&&((e=n[i])==null||e!=e);)e=void
0;for(;++i<u;)(r=n[i])!=null&&r>e&&(e=r)}else{for(;++i<u&&((e=t.call(n,n[i],i))==null||e!=e);)e=void
0;for(;++i<u;)(r=t.call(n,n[i],i))!=null&&r>e&&(e=r)}return
e},ua.extent=function(n,t){var
e,r,i,u=-1,a=n.length;if(arguments.length===1){for(;++u<a&&((e=i=n[u])==null||e!=e);)e=i=void
0;for(;++u<a;)(r=n[u])!=null&&(e>r&&(e=r),r>i&&(i=r))}else{for(;++u<a&&((e=i=t.call(n,n[u],u))==null||e!=e);)e=void
0;for(;++u<a;)(r=t.call(n,n[u],u))!=null&&(e>r&&(e=r),r>i&&(i=r))}return[e,i]},ua.sum=function(n,t){var
e,r=0,i=n.length,u=-1;if(arguments.length===1)for(;++u<i;)isNaN(e=+n[u])|
|(r+=e);else for(;++u<i;)isNaN(e=+t.call(n,n[u],u))||(r+=e);return
r},ua.mean=function(t,e){var
r,i=t.length,u=0,a=-1,o=0;if(arguments.length===1)for(;++a<i;)n(r=t[a])&&(u+=(r-u)/++o);else
for(;++a<i;)n(r=e.call(t,t[a],a))&&(u+=(r-u)/++o);return o?u:void
0},ua.quantile=function(n,t){var e=(n.length-1)*t+1,r=Math.floor(e),i=+n[r-1],u=e-r;return
u?i+u*(n[r]-i):i},ua.median=function(t,e){return
arguments.length>1&&(t=t.map(e)),t=t.filter(n),t.length?ua.quantile(t.sort(ua.ascending),.5):void
0},ua.bisector=function(n){return{left:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);i>r;){var
u=r+i>>>1;n.call(t,t[u],u)<e?r=u+1:i=u}return
r},right:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);i>r;){var
u=r+i>>>1;e<n.call(t,t[u],u)?i=u:r=u+1}return r}}};var
sa=ua.bisector(function(n){return
n});ua.bisectLeft=sa.left,ua.bisect=ua.bisectRight=sa.right,ua.shuffle=function(n){for(var
t,e,r=n.length;r;)e=Math.random()*r--|0,
t=n[r],n[r]=n[e],n[e]=t;return n},ua.permute=function(n,t){for(var
e=[],r=-1,i=t.length;++r<i;)e[r]=n[t[r]];return
e},ua.zip=function(){if(!(i=arguments.length))return[];for(var
n=-1,e=ua.min(arguments,t),r=Array(e);++n<e;)for(var
i,u=-1,a=r[n]=Array(i);++u<i;)a[u]=arguments[u][n];return
r},ua.transpose=function(n){return ua.zip.apply(ua,n)},ua.keys=function(n){var
t=[];for(var e in n)t.push(e);return t},ua.values=function(n){var t=[];for(var e in
n)t.push(n[e]);return t},ua.entries=function(n){var t=[];for(var e in
n)t.push({key:e,value:n[e]});return t},ua.merge=function(n){return
Array.prototype.concat.apply([],n)},ua.range=function(n,t,r){if(arguments.length<3&&(r=1,arguments.length<2&&(t=n,n=0)),1/0===(t-n)/r)throw
Error("infinite range");var
i,u=[],a=e(Math.abs(r)),o=-1;if(n*=a,t*=a,r*=a,0>r)for(;(i=n+r*++o)>t;)u.push(i/a);else
for(;(i=n+r*++o)<t;)u.push(i/a);return u},ua.map=function(n){var t=new i;for(var e in
n)t.set(e,n[e]);return t},r(i,{has:function(n){return ha+n
in this},get:function(n){return this[ha+n]},set:function(n,t){return
this[ha+n]=t},remove:function(n){return n=ha+n,n in this&&delete
this[n]},keys:function(){var n=[];return
this.forEach(function(t){n.push(t)}),n},values:function(){var n=[];return
this.forEach(function(t,e){n.push(e)}),n},entries:function(){var n=[];return
this.forEach(function(t,e){n.push({key:t,value:e})}),n},forEach:function(n){for(var t in
this)t.charCodeAt(0)===ga&&n.call(this,t.substring(1),this[t])}});var
ha="\0",ga=ha.charCodeAt(0);ua.nest=function(){function
n(t,o,c){if(c>=a.length)return r?r.call(u,o):e?o.sort(e):o;for(var
l,f,s,h,g=-1,p=o.length,d=a[c++],m=new
i;++g<p;)(h=m.get(l=d(f=o[g])))?h.push(f):m.set(l,[f]);return
t?(f=t(),s=function(e,r){f.set(e,n(t,r,c))}):(f={},s=function(e,r){f[e]=n(t,r,c)}),m.forEach(s),f}function
t(n,e){if(e>=a.length)return n;var r=[],i=o[e++];return
n.forEach(function(n,i){r.push({key:n,values:t(i,e)})}),i?r.sort(function(n,t){return
i(n.key,t.key)}):r}var e,r,u={
},a=[],o=[];return u.map=function(t,e){return n(e,t,0)},u.entries=function(e){return
t(n(ua.map,e,0),0)},u.key=function(n){return a.push(n),u},u.sortKeys=function(n){return
o[a.length-1]=n,u},u.sortValues=function(n){return e=n,u},u.rollup=function(n){return
r=n,u},u},ua.set=function(n){var t=new u;if(n)for(var
e=0;e<n.length;e++)t.add(n[e]);return t},r(u,{has:function(n){return ha+n in this
-},add:function(n){return this[ha+n]=!0,n},remove:function(n){return n=ha+n,n in
this&&delete this[n]},values:function(){var n=[];return
this.forEach(function(t){n.push(t)}),n},forEach:function(n){for(var t in
this)t.charCodeAt(0)===ga&&n.call(this,t.substring(1))}}),ua.behavior={},ua.rebind=function(n,t){for(var
e,r=1,i=arguments.length;++r<i;)n[e=arguments[r]]=a(n,t,t[e]);return
n},ua.dispatch=function(){for(var n=new
o,t=-1,e=arguments.length;++t<e;)n[arguments[t]]=c(n);return
n},o.prototype.on=function(n,t){var
e=n.indexOf("."),r="";if(e>=0&&(r=n.substring(e+1),n=n.substring(0,e)),n)return
arguments.length<2?this[n].on(r):this[n].on(r,t);if(arguments.length===2){if(null==t)for(n
in this)this.hasOwnProperty(n)&&this[n].on(r,null);return
this}},ua.event=null,ua.mouse=function(n){return g(n,f())};var
pa=/WebKit/.test(oa.navigator.userAgent)?-1:0,da=d;try{da(aa.documentElement.childNodes)[0].nodeType}catch(ma){da=p}var
va=[].__proto__?function(n,t){n.__proto__=t}:function(n,t
){for(var e in t)n[e]=t[e]};ua.touches=function(n,t){return
arguments.length<2&&(t=f().touches),t?da(t).map(function(t){var e=g(n,t);return
e.identifier=t.identifier,e}):[]},ua.behavior.drag=function(){function
n(){this.on("mousedown.drag",t).on("touchstart.drag",t)}function
t(){function n(){var n=a.parentNode;return null!=f?ua.touches(n).filter(function(n){return
n.identifier===f})[0]:ua.mouse(n)}function t(){if(!a.parentNode)return i();var
t=n(),e=t[0]-h[0],r=t[1]-h[1];g|=e|r,h=t,l(),o({type:"drag",x:t[0]+u[0],y:t[1]+u[1],dx:e,dy:r})}function
i(){o({type:"dragend"}),g&&(l(),ua.event.target===c&&s(p,"click")),p.on(null!=f?"touchmove.drag-"+f:"mousemove.drag",null).on(null!=f?"touchend.drag-"+f:"mouseup.drag",null)}var
u,a=this,o=e.of(a,arguments),c=ua.event.target,f=ua.event.touches?ua.event.changedTouches[0].identifier:null,h=n(),g=0,p=ua.select(oa).on(null!=f?"touchmove.drag-"+f:"mousemove.drag",t).on(null!=f?"touchend.drag-"+f:"mouseup.drag",i,!0);r?(u=r.apply(a,argument
s),u=[u.x-h[0],u.y-h[1]]):u=[0,0],null==f&&l(),o({type:"dragstart"})}var
e=h(n,"drag","dragstart","dragend"),r=null;return
n.origin=function(t){return arguments.length?(r=t,n):r},ua.rebind(n,e,"on")};var
ya=function(n,t){return t.querySelector(n)},Ma=function(n,t){return
t.querySelectorAll(n)},xa=aa.documentElement,ba=xa.matchesSelector||xa.webkitMatchesSelector||xa.mozMatchesSelector||xa.msMatchesSelector||xa.oMatchesSelector,_a=function(n,t){return
ba.call(n,t)};"function"==typeof Sizzle&&(ya=function(n,t){return
Sizzle(n,t)[0]||null},Ma=function(n,t){return
Sizzle.uniqueSort(Sizzle(n,t))},_a=Sizzle.matchesSelector),ua.selection=function(){return
Na};var wa=ua.selection.prototype=[];wa.select=function(n){var
t,e,r,i,u=[];"function"!=typeof n&&(n=v(n));for(var
a=-1,o=this.length;++a<o;){u.push(t=[]),t.parentNode=(r=this[a]).parentNode;for(var
c=-1,l=r.length;++c<l;)(i=r[c])?(t.push(e=n.call(i,i.__data__,c)),e&&"__data__"in
i&&(e.__data__=i.__data__)):t.push(null)}return m(u
)},wa.selectAll=function(n){var t,e,r=[];"function"!=typeof
n&&(n=y(n));for(var i=-1,u=this.length;++i<u;)for(var
a=this[i],o=-1,c=a.length;++o<c;)(e=a[o])&&(r.push(t=da(n.call(e,e.__data__,o))),t.parentNode=e);return
m(r)};var
Sa={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3....
t=n.indexOf(":"),e=n;return
t>=0&&(e=n.substring(0,t),n=n.substring(t+1)),Sa.hasOwnProperty(e)?{space:Sa[e],local:n}:n}},wa.attr=function(n,t){if(arguments.length<2){if("string"==typeof
n){var e=this.node();return
n=ua.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in
n)this.each(M(t,n[t]));return this}return this.each(M(n,t))},ua.requote=function(n){return
n.replace(Ea,"\\$&")};var
Ea=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;wa.classed=function(n,t){if(arguments.length<2){if("string"==typeof
n){
var
e=this.node(),r=(n=n.trim().split(/^|\s+/g)).length,i=-1;if(t=e.classList){for(;++i<r;)if(!t.contains(n[i]))return!1}else
for(t=e.getAttribute("class");++i<r;)if(!b(n[i]).test(t))return!1;return!0}for(t
in n)this.each(_(t,n[t]));return this}return
this.each(_(n,t))},wa.style=function(n,t,e){var
r=arguments.length;if(3>r){if("string"!=typeof
n){2>r&&(t="");for(e in n)this.each(S(e,n[e],t));return
this}if(2>r)return
oa.getComputedStyle(this.node(),null).getPropertyValue(n);e=""}return
this.each(S(n,t,e))},wa.property=function(n,t){if(arguments.length<2){if("string"==typeof
n)return this.node()[n];for(t in n)this.each(E(t,n[t]));return this}return
this.each(E(n,t))},wa.text=function(n){return
arguments.length?this.each("function"==typeof n?function(){var
t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},wa.html=function(n){return
arguments.length?this.each("function"==typ
eof n?function(){var
t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},wa.append=function(n){function
t(){return this.appendChild(aa.createElementNS(this.namespaceURI,n))}function e(){return
this.appendChild(aa.createElementNS(n.space,n.local))}return
n=ua.ns.qualify(n),this.select(n.local?e:t)},wa.insert=function(n,t){function
e(e,r){return
this.insertBefore(aa.createElementNS(this.namespaceURI,n),t.call(this,e,r))}function
r(e,r){return
this.insertBefore(aa.createElementNS(n.space,n.local),t.call(this,e,r))}return
n=ua.ns.qualify(n),"function"!=typeof
t&&(t=v(t)),this.select(n.local?r:e)},wa.remove=function(){return
this.each(function(){var
n=this.parentNode;n&&n.removeChild(this)})},wa.data=function(n,t){function
e(n,e){var
r,u,a,o=n.length,s=e.length,h=Math.min(o,s),g=Array(s),p=Array(s),d=Array(o);if(t){var
m,v=new i,y=new i,M=[];for(r=-1;++r<o;)m=t.call(u=n[r],u.__data__,r),
v.has(m)?d[r]=u:v.set(m,u),M.push(m);for(r=-1;++r<s;)m=t.call(e,a=e[r],r),(u=v.get(m))?(g[r]=u,u.__data__=a):y.has(m)||(p[r]=k(a)),y.set(m,a),v.remove(m);for(r=-1;++r<o;)v.has(M[r])&&(d[r]=n[r])}else{for(r=-1;++r<h;)u=n[r],a=e[r],u?(u.__data__=a,g[r]=u):p[r]=k(a);for(;s>r;++r)p[r]=k(e[r]);for(;o>r;++r)d[r]=n[r]}p.update=g,p.parentNode=g.parentNode=d.parentNode=n.parentNode,c.push(p),l.push(g),f.push(d)}var
r,u,a=-1,o=this.length;if(!arguments.length){for(n=Array(o=(r=this[0]).length);++a<o;)(u=r[a])&&(n[a]=u.__data__);return
n}var c=j([]),l=m([]),f=m([]);if("function"==typeof
n)for(;++a<o;)e(r=this[a],n.call(r,r.parentNode.__data__,a));else
for(;++a<o;)e(r=this[a],n);return l.enter=function(){return c},l.exit=function(){return
f},l},wa.datum=function(n){return
arguments.length?this.property("__data__",n):this.property("__data__")},wa.filter=function(n){var
t,e,r,i=[];"function"!=typeof n&&(n=A(n));for(var
u=0,a=this.length;a>u;u++){i.push(t=[]),t.parentNode=(e=this[u]).paren
tNode;for(var
o=0,c=e.length;c>o;o++)(r=e[o])&&n.call(r,r.__data__,o)&&t.push(r)}return
m(i)},wa.order=function(){for(var n=-1,t=this.length;++n<t;)for(var
e,r=this[n],i=r.length-1,u=r[i];--i>=0;)(e=r[i])&&(u&&u!==e.nextSibling&&u.parentNode.insertBefore(e,u),u=e);return
this},wa.sort=function(n){n=N.apply(this,arguments);for(var
t=-1,e=this.length;++t<e;)this[t].sort(n);return
this.order()},wa.on=function(n,t,e){var
r=arguments.length;if(3>r){if("string"!=typeof
n){2>r&&(t=!1);for(e in n)this.each(T(e,n[e],t));return
this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return
this.each(T(n,t,e))};var
ka=ua.map({mouseenter:"mouseover",mouseleave:"mouseout"});ka.forEach(function(n){"on"+n
in aa&&ka.remove(n)}),wa.each=function(n){return
D(this,function(t,e,r){n.call(t,t.__data__,e,r)})},wa.call=function(n){var
t=da(arguments);return
n.apply(t[0]=this,t),this},wa.empty=function(){return!this.node()},wa.node=function(){for(var
n=0,t=this.length;t>n;n++)for(var e=this[n],r=0,i=
e.length;i>r;r++){var u=e[r];if(u)return u}return null};var
Aa=[];ua.selection.enter=j,ua.selection.enter.prototype=Aa,Aa.append=wa.append,Aa.insert=wa.insert,Aa.empty=wa.empty,Aa.node=wa.node,Aa.select=function(n){for(var
t,e,r,i,u,a=[],o=-1,c=this.length;++o<c;){r=(i=this[o]).update,a.push(t=[]),t.parentNode=i.parentNode;for(var
l=-1,f=i.length;++l<f;)(u=i[l])?(t.push(r[l]=e=n.call(i.parentNode,u.__data__,l)),e.__data__=u.__data__):t.push(null)}return
m(a)},wa.transition=function(){var
n,t,e=rc||++oc,r=[],i=Object.create(cc);i.time=Date.now();for(var
u=-1,a=this.length;++u<a;){r.push(n=[]);for(var
o=this[u],c=-1,l=o.length;++c<l;)(t=o[c])&&xu(t,c,e,i),n.push(t)}return
vu(r,e)},ua.select=function(n){var t=["string"==typeof n?ya(n,aa):n];return
t.parentNode=xa,m([t])},ua.selectAll=function(n){var t=da("string"==typeof
n?Ma(n,aa):n);return t.parentNode=xa,m([t])};var
Na=ua.select(xa);ua.behavior.zoom=function(){function
n(){this.on("mousedown.zoom",o).on("mousemove.zoom",f).o
n(Ca+".zoom",c).on("dblclick.zoom",g).on("touchstart.zoom",p).on("touchmove.zoom",d).on("touchend.zoom",p)}function
t(n){return[(n[0]-w[0])/S,(n[1]-w[1])/S]}function
e(n){return[n[0]*S+w[0],n[1]*S+w[1]]}function
r(n){S=Math.max(E[0],Math.min(E[1],n))}function
i(n,t){t=e(t),w[0]+=n[0]-t[0],w[1]+=n[1]-t[1]}function
u(){M&&M.domain(y.range().map(function(n){return(n-w[0])/S}).map(y.invert)),b&&b.domain(x.range().map(function(n){return(n-w[1])/S}).map(x.invert))}function
a(n){u(),ua.event.preventDefault(),n({type:"zoom",scale:S,translate:w})}function
o(){function n(){c=1,i(ua.mouse(r),h),a(u)}function
e(){c&&l(),f.on("mousemove.zoom",null).on("mouseup.zoom",null),c&&ua.event.target===o&&s(f,"click.zoom")}var
r=this,u=k.of(r,arguments),o=ua.event.target,c=0,f=ua.select(oa).on("mousemove.zoom",n).on("mouseup.zoom",e),h=t(ua.mouse(r));oa.focus(),l()}function
c(){m||(m=t(ua.mouse(this))),r(Math.pow(2,qa()*.002)*S),i(ua.mouse(this),m),a(k.of(this,arguments))}function
f(){m=null}funct
ion g(){var
n=ua.mouse(this),e=t(n),u=Math.log(S)/Math.LN2;r(Math.pow(2,ua.event.shiftKey?Math.ceil(u)-1:Math.floor(u)+1)),i(n,e),a(k.of(this,arguments))}function
p(){var
n=ua.touches(this),e=Date.now();if(v=S,m={},n.forEach(function(n){m[n.identifier]=t(n)}),l(),n.length===1){if(500>e-_){var
u=n[0],o=t(n[0]);r(2*S),i(u,o),a(k.of(this,arguments))}_=e}}function d(){var
n=ua.touches(this),t=n[0],e=m[t.identifier];if(u=n[1]){var
u,o=m[u.identifier];t=[(t[0]+u[0])/2,(t[1]+u[1])/2],e=[(e[0]+o[0])/2,(e[1]+o[1])/2],r(ua.event.scale*v)}i(t,e),_=null,a(k.of(this,arguments))}var
m,v,y,M,x,b,_,w=[0,0],S=1,E=Ta,k=h(n,"zoom");return
n.translate=function(t){return
arguments.length?(w=t.map(Number),u(),n):w},n.scale=function(t){return
arguments.length?(S=+t,u(),n):S},n.scaleExtent=function(t){return
arguments.length?(E=null==t?Ta:t.map(Number),n):E},n.x=function(t){return
arguments.length?(M=t,y=t.copy(),w=[0,0],S=1,n):M},n.y=function(t){return
arguments.length?(b=t,x=t.copy(),w=[0,0],S=1,
n):b},ua.rebind(n,k,"on")};var qa,Ta=[0,1/0],Ca="onwheel"in
aa?(qa=function(){return-ua.event.deltaY*(ua.event.deltaMode?120:1)},"wheel"):"onmousewheel"in
aa?(qa=function(){return
ua.event.wheelDelta},"mousewheel"):(qa=function(){return-ua.event.detail},"MozMousePixelScroll");L.prototype.toString=function(){return
this.rgb()+""},ua.hsl=function(n,t,e){return arguments.length===1?n instanceof
H?F(n.h,n.s,n.l):it(""+n,ut,F):F(+n,+t,+e)};var za=H.prototype=new
L;za.brighter=function(n){return
n=Math.pow(.7,arguments.length?n:1),F(this.h,this.s,this.l/n)},za.darker=function(n){return
n=Math.pow(.7,arguments.length?n:1),F(this.h,this.s,n*this.l)},za.rgb=function(){return
P(this.h,this.s,this.l)};var
Da=Math.PI,ja=1e-6,La=Da/180,Fa=180/Da;ua.hcl=function(n,t,e){return
arguments.length===1?n instanceof Z?X(n.h,n.c,n.l):n instanceof
J?K(n.l,n.a,n.b):K((n=at((n=ua.rgb(n)).r,n.g,n.b)).l,n.a,n.b):X(+n,+t,+e)};var
Ha=Z.prototype=new L;Ha.brighter=function(n){return X(this.h,this.c,Math.
min(100,this.l+Pa*(arguments.length?n:1)))},Ha.darker=function(n){return
X(this.h,this.c,Math.max(0,this.l-Pa*(arguments.length?n:1)))},Ha.rgb=function(){return
B(this.h,this.c,this.l).rgb()},ua.lab=function(n,t,e){return arguments.length===1?n
instanceof J?$(n.l,n.a,n.b):n instanceof
Z?B(n.l,n.c,n.h):at((n=ua.rgb(n)).r,n.g,n.b):$(+n,+t,+e)};var
Pa=18,Ra=.95047,Oa=1,Ya=1.08883,Ua=J.prototype=new L;Ua.brighter=function(n){return
$(Math.min(100,this.l+Pa*(arguments.length?n:1)),this.a,this.b)},Ua.darker=function(n){return
$(Math.max(0,this.l-Pa*(arguments.length?n:1)),this.a,this.b)},Ua.rgb=function(){return
G(this.l,this.a,this.b)},ua.rgb=function(n,t,e){return arguments.length===1?n instanceof
et?tt(n.r,n.g,n.b):it(""+n,tt,P):tt(~~n,~~t,~~e)};var Ia=et.prototype=new
L;Ia.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var
t=this.r,e=this.g,r=this.b,i=30;return
t||e||r?(t&&i>t&&(t=i),e&&i>e&&(e=i),r&&i>r&&(r=i),tt(Math.min(255,Math.floor(t/n)),Math.min(255,Math.floor
(e/n)),Math.min(255,Math.floor(r/n)))):tt(i,i,i)},Ia.darker=function(n){return
n=Math.pow(.7,arguments.length?n:1),tt(Math.floor(n*this.r),Math.floor(n*this.g),Math.floor(n*this.b))},Ia.hsl=function(){return
ut(this.r,this.g,this.b)},Ia.toString=function(){return"#"+rt(this.r)+rt(this.g)+rt(this.b)};var
Va=ua.map({aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagre
en:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime
:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708
090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"});Va.forEach(function(n,t){Va.set(n,it(t,tt,P))}),ua.functor=lt,ua.xhr=st(ft),ua.csv=pt(",","text/csv"),ua.tsv=pt(" ","text/tab-separated-values");var
Xa,Za,Ba,$a;ua.timer=function(n,t,e){if(arguments.length<3){if(arguments.length<2)t=0;else
if(!isFinite(t))return;e=Date.now()}var
r=e+t,i={callback:n,time:r,next:null};Za?Za.next=i:Xa=i,Za=i,Ba||($a=clearTimeout($a),Ba=1,Ja(dt))},ua.timer.flush=function(){mt(),vt()};var
Ja=oa.requestAnimationFrame||oa.webkitRequestAnimationFrame||oa.mozRequestAnimationFrame||oa.oRequestAnimationFrame||oa.msRequestAnimationFrame||function(n){setTimeout(n,17)},Ga=".",Ka=",",Wa=[3,3],Qa=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"].map(yt);ua.formatPre
fix=function(n,t){var e=0;return
n&&(0>n&&(n*=-1),t&&(n=ua.round(n,Mt(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,Math.floor((0>=e?e+1:e-1)/3)*3))),Qa[8+e/3]},ua.round=function(n,t){return
t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)},ua.format=function(n){var
t=no.exec(n),e=t[1]||"
",r=t[2]||">",i=t[3]||"",u=t[4]||"",a=t[5],o=+t[6],c=t[7],l=t[8],f=t[9],s=1,h="",g=!1;switch(l&&(l=+l.substring(1)),(a||"0"===e&&"="===r)&&(a=e="0",r="=",c&&(o-=Math.floor((o-1)/4))),f){case"n":c=!0,f="g";break;case"%":s=100,h="%",f="f";break;case"p":s=100,h="%",f="r";break;case"b":case"o":case"x":case"X":u&&(u="0"+f.toLowerCase());case"c":case"d":g=!0,l=0;break;case"s":s=-1,f="r"}"#"===u&&(u=""),"r"!=f||l||(f="g"),null!=l&&("g"==f?l=Math.max(1,Math.min(21,l)):("e"==f||"f"==f)&&(l=Math.max(0,Math.min(20,l)))),f=to.get(f)||xt;var
p=a&&c;return function(n){if(g&&n%1)return"";var
t=0>n||0===n&&0>1/n?(n=-n,"-"):i;if(0>s){var
d=ua.formatPrefix(n,l);n=d.scale(n),
h=d.symbol}else n*=s;n=f(n,l),!a&&c&&(n=eo(n));var
m=u.length+n.length+(p?0:t.length),v=o>m?Array(m=o-m+1).join(e):"";return
p&&(n=eo(v+n)),Ga&&n.replace(".",Ga),t+=u,("<"===r?t+n+v:">"===r?v+t+n:"^"===r?v.substring(0,m>>=1)+t+n+v.substring(m):t+(p?n:v+n))+h}};var
no=/(?:([^{])?([<>=^]))?([+\-
])?(#)?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,to=ua.map({b:function(n){return
n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return
n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return
n.toString(16).toUpperCase()},g:function(n,t){return
n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return
n.toFixed(t)},r:function(n,t){return(n=ua.round(n,Mt(n,t))).toFixed(Math.max(0,Math.min(20,Mt(n*(1+1e-15),t))))}}),eo=ft;if(Wa){var
ro=Wa.length;eo=function(n){for(var
t=n.lastIndexOf("."),e=t>=0?"."+n.substring(t+1):(t=n.length,""),r=[],i=0,u=Wa[0];t>0&&u>0;)r.push(n.substring(t-=u,t+u)),u=Wa[i=(i+1)%ro];return
r.reverse().jo
in(Ka||"")+e}}ua.geo={},ua.geo.stream=function(n,t){n&&io.hasOwnProperty(n.type)?io[n.type](n,t):bt(n,t)};var
io={Feature:function(n,t){bt(n.geometry,t)},FeatureCollection:function(n,t){for(var
e=n.features,r=-1,i=e.length;++r<i;)bt(e[r].geometry,t)}},uo={Sphere:function(n,t){t.sphere()},Point:function(n,t){var
e=n.coordinates;t.point(e[0],e[1])},MultiPoint:function(n,t){for(var
e,r=n.coordinates,i=-1,u=r.length;++i<u;)e=r[i],t.point(e[0],e[1])},LineString:function(n,t){_t(n.coordinates,t,0)},MultiLineString:function(n,t){for(var
e=n.coordinates,r=-1,i=e.length;++r<i;)_t(e[r],t,0)},Polygon:function(n,t){wt(n.coordinates,t)},MultiPolygon:function(n,t){for(var
e=n.coordinates,r=-1,i=e.length;++r<i;)wt(e[r],t)},GeometryCollection:function(n,t){for(var
e=n.geometries,r=-1,i=e.length;++r<i;)bt(e[r],t)}};ua.geo.area=function(n){return
ao=0,ua.geo.stream(n,co),ao};var
ao,oo,co={sphere:function(){ao+=4*Da},point:q,lineStart:q,lineEnd:q,polygonStart:function(){oo=0,co.lineStart=St},p
olygonEnd:function(){var
n=2*oo;ao+=0>n?4*Da+n:n,co.lineStart=co.lineEnd=co.point=q}};ua.geo.bounds=function(){function
n(n,t){M.push(x=[f=n,h=n]),s>t&&(s=t),t>g&&(g=t)}function t(t,e){var
r=Et([t*La,e*La]);if(v){var i=At(v,r),u=[i[1],-i[0],0],a=At(u,i);Tt(a),a=Ct(a);var
c=t-p,l=c>0?1:-1,d=a[0]*Fa*l,m=Math.abs(c)>180;if(m^(d>l*p&&l*t>d)){var
y=a[1]*Fa;y>g&&(g=y)}else
if(d=(d+360)%360-180,m^(d>l*p&&l*t>d)){var
y=-a[1]*Fa;s>y&&(s=y)}else
s>e&&(s=e),e>g&&(g=e);m?p>t?o(f,t)>o(f,h)&&(h=t):o(t,h)>o(f,h)&&(f=t):h>=f?(f>t&&(f=t),t>h&&(h=t)):t>p?o(f,t)>o(f,h)&&(h=t):o(t,h)>o(f,h)&&(f=t)}else
n(t,e);v=r,p=t}function e(){b.point=t}function r(){x[0]=f,x[1]=h,b.point=n,v=null}function
i(n,e){if(v){var r=n-p;y+=Math.abs(r)>180?r+(r>0?360:-360):r}else
d=n,m=e;co.point(n,e),t(n,e)}function u(){co.lineStart()}function
a(){i(d,m),co.lineEnd(),Math.abs(y)>ja&&(f=-(h=180)),x[0]=f,x[1]=h,v=null}function
o(n,t){return(t-=n)<0?t+360:t}function c(n,t){return n[0]-t[0]}function l(n,t){return
t[0]<=t
[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var
f,s,h,g,p,d,m,v,y,M,x,b={point:n,lineStart:e,lineEnd:r,polygonStart:function(){b.point=i,b.lineStart=u,b.lineEnd=a,y=0,co.polygonStart()},polygonEnd:function(){co.polygonEnd(),b.point=n,b.lineStart=e,b.lineEnd=r,0>oo?(f=-(h=180),s=-(g=90)):y>ja?g=90:-ja>y&&(s=-90),x[0]=f,x[1]=h}};return
function(n){g=h=-(f=s=1/0),M=[],ua.geo.stream(n,b),M.sort(c);for(var
t,e=1,r=M.length,i=M[0],u=[i];r>e;++e)t=M[e],l(t[0],i)||l(t[1],i)?(o(i[0],t[1])>o(i[0],i[1])&&(i[1]=t[1]),o(t[0],i[1])>o(i[0],i[1])&&(i[0]=t[0])):u.push(i=t);for(var
a,t,p=-1/0,r=u.length-1,e=0,i=u[r];r>=e;i=t,++e)t=u[e],(a=o(i[1],t[0]))>p&&(p=a,f=t[0],h=i[1]);return
M=x=null,[[f,s],[h,g]]}}(),ua.geo.centroid=function(n){lo=fo=so=ho=go=0,ua.geo.stream(n,po);var
t;return
fo&&Math.abs(t=Math.sqrt(so*so+ho*ho+go*go))>ja?[Math.atan2(ho,so)*Fa,Math.asin(Math.max(-1,Math.min(1,go/t)))*Fa]:void
0};var
lo,fo,so,ho,go,po={sphere:function(){2>lo&&(lo=2,fo=so=ho=go=0)},point:Dt,lineStart:Lt,lineE
nd:Ft,polygonStart:function(){2>lo&&(lo=2,fo=so=ho=go=0),po.lineStart=jt},polygonEnd:function(){po.lineStart=Lt}},mo=Ot(Ht,Xt,Bt),vo=1e9;ua.geo.projection=Qt,ua.geo.projectionMutator=ne,(ua.geo.equirectangular=function(){return
Qt(ee)}).raw=ee.invert=ee,ua.geo.rotation=function(n){function t(t){return
t=n(t[0]*La,t[1]*La),t[0]*=Fa,t[1]*=Fa,t}return
n=re(n[0]%360*La,n[1]*La,n.length>2?n[2]*La:0),t.invert=function(t){return
t=n.invert(t[0]*La,t[1]*La),t[0]*=Fa,t[1]*=Fa,t},t},ua.geo.circle=function(){function
n(){var n="function"==typeof
r?r.apply(this,arguments):r,t=re(-n[0]*La,-n[1]*La,0).invert,i=[];return
e(null,null,1,{point:function(n,e){i.push(n=t(n,e)),n[0]*=Fa,n[1]*=Fa}}),{type:"Polygon",coordinates:[i]}}var
t,e,r=[0,0],i=6;return n.origin=function(t){return
arguments.length?(r=t,n):r},n.angle=function(r){return
arguments.length?(e=oe((t=+r)*La,i*La),n):t},n.precision=function(r){return
arguments.length?(e=oe(t*La,(i=+r)*La),n):i},n.angle(90)},ua.geo.distance=function(
n,t){var
e,r=(t[0]-n[0])*La,i=n[1]*La,u=t[1]*La,a=Math.sin(r),o=Math.cos(r),c=Math.sin(i),l=Math.cos(i),f=Math.sin(u),s=Math.cos(u);return
Math.atan2(Math.sqrt((e=s*a)*e+(e=l*f-c*s*o)*e),c*f+l*s*o)},ua.geo.graticule=function(){function
n(){return{type:"MultiLineString",coordinates:t()}}function t(){return
ua.range(Math.ceil(u/m)*m,i,m).map(h).concat(ua.range(Math.ceil(l/v)*v,c,v).map(g)).concat(ua.range(Math.ceil(r/p)*p,e,p).filter(function(n){return
Math.abs(n%m)>ja}).map(f)).concat(ua.range(Math.ceil(o/d)*d,a,d).filter(function(n){return
Math.abs(n%v)>ja}).map(s))}var e,r,i,u,a,o,c,l,f,s,h,g,p=10,d=p,m=90,v=360,y=2.5;return
n.lines=function(){return
t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(u).concat(g(c).slice(1),h(i).reverse().slice(1),g(l).reverse().slice(1))]}},n.extent=function(t){return
arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return
argum
ents.length?(u=+t[0][0],i=+t[1][0],l=+t[0][1],c=+t[1][1],u>i&&(t=u,u=i,i=t),l>c&&(t=l,l=c,c=t),n.precision(y)):[[u,l],[i,c]]},n.minorExtent=function(t){return
arguments.length?(r=+t[0][0],e=+t[1][0],o=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),o>a&&(t=o,o=a,a=t),n.precision(y)):[[r,o],[e,a]]},n.step=function(t){return
arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return
arguments.length?(m=+t[0],v=+t[1],n):[m,v]},n.minorStep=function(t){return
arguments.length?(p=+t[0],d=+t[1],n):[p,d]},n.precision=function(t){return
arguments.length?(y=+t,f=le(o,a,90),s=fe(r,e,y),h=le(l,c,90),g=fe(u,i,y),n):y},n.majorExtent([[-180,-90+ja],[180,90-ja]]).minorExtent([[-180,-80-ja],[180,80+ja]])},ua.geo.greatArc=function(){function
n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||i.apply(this,arguments)]}}var
t,e,r=se,i=he;return n.distance=function(){return
ua.geo.distance(t||r.apply(this,arguments),e||i.apply(this,arguments))},n.source
=function(e){return arguments.length?(r=e,t="function"==typeof
e?null:e,n):r},n.target=function(t){return
arguments.length?(i=t,e="function"==typeof
t?null:t,n):i},n.precision=function(){return
arguments.length?n:0},n},ua.geo.interpolate=function(n,t){return
ge(n[0]*La,n[1]*La,t[0]*La,t[1]*La)},ua.geo.length=function(n){return
yo=0,ua.geo.stream(n,Mo),yo};var
yo,Mo={sphere:q,point:q,lineStart:pe,lineEnd:q,polygonStart:q,polygonEnd:q};(ua.geo.conicEqualArea=function(){return
de(me)}).raw=me,ua.geo.albers=function(){return
ua.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},ua.geo.albersUsa=function(){function
n(n){var u=n[0],a=n[1];return t=null,e(u,a),t||(r(u,a),t)||i(u,a),t}var
t,e,r,i,u=ua.geo.albers(),a=ua.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),o=ua.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(n,e){t=[n,e]}};return
n.invert=function(n){var t=u.scale()
,e=u.translate(),r=(n[0]-e[0])/t,i=(n[1]-e[1])/t;return(i>=.12&&.234>i&&r>=-.425&&-.214>r?a:i>=.166&&.234>i&&r>=-.214&&-.115>r?o:u).invert(n)},n.stream=function(n){var
t=u.stream(n),e=a.stream(n),r=o.stream(n);return{point:function(n,i){t.point(n,i),e.point(n,i),r.point(n,i)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return
arguments.length?(u.precision(t),a.precision(t),o.precision(t),n):u.precision()},n.scale=function(t){return
arguments.length?(u.scale(t),a.scale(.35*t),o.scale(t),n.translate(u.translate())):u.scale()},n.translate=function(t){if(!arguments.length)return
u.translate();var l=u.scale(),f=+t[0],s=+t[1];return
e=u.translate(t).clipExtent([[f-.455*l,s-.238*l],[f+.455
*l,s+.238*l]]).stream(c).point,r=a.translate([f-.307*l,s+.201*l]).clipExtent([[f-.425*l+ja,s+.12*l+ja],[f-.214*l-ja,s+.234*l-ja]]).stream(c).point,i=o.translate([f-.205*l,s+.212*l]).clipExtent([[f-.214*l+ja,s+.166*l+ja],[f-.115*l-ja,s+.234*l-ja]]).stream(c).point,n},n.scale(1070)};var
xo,bo,_o,wo,So,Eo,ko={point:q,lineStart:q,lineEnd:q,polygonStart:function(){bo=0,ko.lineStart=ve},polygonEnd:function(){ko.lineStart=ko.lineEnd=ko.point=q,xo+=Math.abs(bo/2)}},Ao={point:ye,lineStart:q,lineEnd:q,polygonStart:q,polygonEnd:q},No={point:be,lineStart:_e,lineEnd:we,polygonStart:function(){No.lineStart=Se},polygonEnd:function(){No.point=be,No.lineStart=_e,No.lineEnd=we}};ua.geo.path=function(){function
n(n){return n&&ua.geo.stream(n,r(i.pointRadius("function"==typeof
u?+u.apply(this,arguments):u))),i.result()}var t,e,r,i,u=4.5;return
n.area=function(n){return xo=0,ua.geo.stream(n,r(ko)),xo},n.centroid=function(n){return
lo=so=ho=go=0,ua.geo.stream(n,r(No)),go?[so/go,ho/go]:void 0},n.b
ounds=function(n){return
So=Eo=-(_o=wo=1/0),ua.geo.stream(n,r(Ao)),[[_o,wo],[So,Eo]]},n.projection=function(e){return
arguments.length?(r=(t=e)?e.stream||ke(e):ft,n):t},n.context=function(t){return
arguments.length?(i=(e=t)==null?new Me:new Ee(t),n):e},n.pointRadius=function(t){return
arguments.length?(u="function"==typeof
t?t:+t,n):u},n.projection(ua.geo.albersUsa()).context(null)};var qo=Ae(function(n){return
Math.sqrt(2/(1+n))},function(n){return
2*Math.asin(n/2)});(ua.geo.azimuthalEqualArea=function(){return Qt(qo)}).raw=qo;var
To=Ae(function(n){var t=Math.acos(n);return
t&&t/Math.sin(t)},ft);(ua.geo.azimuthalEquidistant=function(){return
Qt(To)}).raw=To,(ua.geo.conicConformal=function(){return
de(Ne)}).raw=Ne,(ua.geo.conicEquidistant=function(){return de(qe)}).raw=qe;var
Co=Ae(function(n){return 1/n},Math.atan);(ua.geo.gnomonic=function(){return
Qt(Co)}).raw=Co,Te.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Da/2]},(ua.geo.mercator=function(){return
Ce(Te)}).r
aw=Te;var zo=Ae(function(){return 1},Math.asin);(ua.geo.orthographic=function(){return
Qt(zo)}).raw=zo;var Do=Ae(function(n){return 1/(1+n)},function(n){return
2*Math.atan(n)});(ua.geo.stereographic=function(){return
Qt(Do)}).raw=Do,ze.invert=function(n,t){return[Math.atan2(U(n),Math.cos(t)),Y(Math.sin(t)/I(n))]},(ua.geo.transverseMercator=function(){return
Ce(ze)}).raw=ze,ua.geom={},ua.svg={},ua.svg.line=function(){return De(ft)};var
jo=ua.map({linear:Fe,"linear-closed":He,"step-before":Pe,"step-after":Re,basis:Xe,"basis-open":Ze,"basis-closed":Be,bundle:$e,cardinal:Ue,"cardinal-open":Oe,"cardinal-closed":Ye,monotone:nr});jo.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var
Lo=[0,2/3,1/3,0],Fo=[0,1/3,2/3,0],Ho=[0,1/6,2/3,1/6];ua.geom.hull=function(n){function
t(n){if(n.length<3)return[];var
t,i,u,a,o,c,l,f,s,h,g,p,d=lt(e),m=lt(r),v=n.length,y=v-1,M=[],x=[],b=0;if(d===je&&r===Le)t=n;else
for(u=0,t=[];v>u;++u)t.push([+d.call(this,i=n[u],u),+m.call(this,i,u)]);fo
r(u=1;v>u;++u)(t[u][1]<t[b][1]||t[u][1]==t[b][1]&&t[u][0]<t[b][0])&&(b=u);for(u=0;v>u;++u)u!==b&&(c=t[u][1]-t[b][1],o=t[u][0]-t[b][0],M.push({angle:Math.atan2(c,o),index:u}));for(M.sort(function(n,t){return
n.angle-t.angle}),g=M[0].angle,h=M[0].index,s=0,u=1;y>u;++u){if(a=M[u].index,g==M[u].angle){if(o=t[h][0]-t[b][0],c=t[h][1]-t[b][1],l=t[a][0]-t[b][0],f=t[a][1]-t[b][1],o*o+c*c>=l*l+f*f){M[u].index=-1;continue}M[s].index=-1}g=M[u].angle,s=u,h=a}for(x.push(b),u=0,a=0;2>u;++a)M[a].index>-1&&(x.push(M[a].index),u++);for(p=x.length;y>a;++a)if(!(M[a].index<0)){for(;!tr(x[p-2],x[p-1],M[a].index,t);)--p;x[p++]=M[a].index}var
_=[];for(u=p-1;u>=0;--u)_.push(n[x[u]]);return _}var e=je,r=Le;return
arguments.length?t(n):(t.x=function(n){return
arguments.length?(e=n,t):e},t.y=function(n){return
arguments.length?(r=n,t):r},t)},ua.geom.polygon=function(n){return
n.area=function(){for(var
t=0,e=n.length,r=n[e-1][1]*n[0][0]-n[e-1][0]*n[0][1];++t<e;)r+=n[t-1][1]*n[t][0]-n[t-1][0]*n[t][1];ret
urn.5*r},n.centroid=function(t){var
e,r,i=-1,u=n.length,a=0,o=0,c=n[u-1];for(arguments.length||(t=-1/(6*n.area()));++i<u;)e=c,c=n[i],r=e[0]*c[1]-c[0]*e[1],a+=(e[0]+c[0])*r,o+=(e[1]+c[1])*r;return[a*t,o*t]},n.clip=function(t){for(var
e,r,i,u,a,o,c=-1,l=n.length,f=n[l-1];++c<l;){for(e=t.slice(),t.length=0,u=n[c],a=e[(i=e.length)-1],r=-1;++r<i;)o=e[r],er(o,f,u)?(er(a,f,u)||t.push(rr(a,o,f,u)),t.push(o)):er(a,f,u)&&t.push(rr(a,o,f,u)),a=o;f=u}return
t},n},ua.geom.delaunay=function(n){var t=n.map(function(){return[]}),e=[];return
ir(n,function(e){t[e.region.l.index].push(n[e.region.r.index])}),t.forEach(function(t,r){var
i=n[r],u=i[0],a=i[1];t.forEach(function(n){n.angle=Math.atan2(n[0]-u,n[1]-a)}),t.sort(function(n,t){return
n.angle-t.angle});for(var
o=0,c=t.length-1;c>o;o++)e.push([i,t[o],t[o+1]])}),e},ua.geom.voronoi=function(n){function
t(n){var
t,r,a,o=n.map(function(){return[]}),c=lt(i),l=lt(u),f=n.length,s=1e6;if(c===je&&l===Le)t=n;else
for(t=[],a=0;f>a;++a)t.push([+c.call
(this,r=n[a],a),+l.call(this,r,a)]);if(ir(t,function(n){var
t,e,r,i,u,a;n.a===1&&n.b>=0?(t=n.ep.r,e=n.ep.l):(t=n.ep.l,e=n.ep.r),n.a===1?(u=t?t.y:-s,r=n.c-n.b*u,a=e?e.y:s,i=n.c-n.b*a):(r=t?t.x:-s,u=n.c-n.a*r,i=e?e.x:s,a=n.c-n.a*i);var
c=[r,u],l=[i,a];o[n.region.l.index].push(c,l),o[n.region.r.index].push(c,l)}),o=o.map(function(n,e){var
r=t[e][0],i=t[e][1],u=n.map(function(n){return Math.atan2(n[0]-r,n[1]-i)
-}),a=ua.range(n.length).sort(function(n,t){return u[n]-u[t]});return
a.filter(function(n,t){return!t||u[n]-u[a[t-1]]>ja}).map(function(t){return
n[t]})}),o.forEach(function(n,e){var r=n.length;if(!r)return
n.push([-s,-s],[-s,s],[s,s],[s,-s]);if(!(r>2)){var
i=t[e],u=n[0],a=n[1],o=i[0],c=i[1],l=u[0],f=u[1],h=a[0],g=a[1],p=Math.abs(h-l),d=g-f;if(Math.abs(d)<ja){var
m=f>c?-s:s;n.push([-s,m],[s,m])}else if(ja>p){var
v=l>o?-s:s;n.push([v,-s],[v,s])}else{var
m=(l-o)*(g-f)>(h-l)*(f-c)?s:-s,y=Math.abs(d)-p;Math.abs(y)<ja?n.push([0>d?m:-m,m]):(y>0&&(m*=-1),n.push([-s,m],[s,m]))}}}),e)for(a=0;f>a;++a)e(o[a]);for(a=0;f>a;++a)o[a].point=n[a];return
o}var e,r=null,i=je,u=Le;return arguments.length?t(n):(t.x=function(n){return
arguments.length?(i=n,t):i},t.y=function(n){return
arguments.length?(u=n,t):u},t.size=function(n){return
arguments.length?(null==n?e=null:(r=[+n[0],+n[1]],e=ua.geom.polygon([[0,0],[0,r[1]],r,[r[0],0]]).clip),t):r},t.links=function(n){var
t,e,r,a=n.map(function(){retu
rn[]}),o=[],c=lt(i),l=lt(u),f=n.length;if(c===je&&l===Le)t=n;else
for(r=0;f>r;++r)t.push([+c.call(this,e=n[r],r),+l.call(this,e,r)]);return
ir(t,function(t){var
e=t.region.l.index,r=t.region.r.index;a[e][r]||(a[e][r]=a[r][e]=!0,o.push({source:n[e],target:n[r]}))}),o},t.triangles=function(n){if(i===je&&u===Le)return
ua.geom.delaunay(n);var
t,e,r,a,o,c=lt(i),l=lt(u);for(a=0,t=[],o=n.length;o>a;++a)e=[+c.call(this,r=n[a],a),+l.call(this,r,a)],e.data=r,t.push(e);return
ua.geom.delaunay(t).map(function(n){return n.map(function(n){return n.data})})},t)};var
Po={l:"r",r:"l"};ua.geom.quadtree=function(n,t,e,r,i){function
u(n){function u(n,t,e,r,i,u,a,o){if(!isNaN(e)&&!isNaN(r))if(n.leaf){var
c=n.x,f=n.y;if(null!=c)if(Math.abs(c-e)+Math.abs(f-r)<.01)l(n,t,e,r,i,u,a,o);else{var
s=n.point;n.x=n.y=n.point=null,l(n,s,c,f,i,u,a,o),l(n,t,e,r,i,u,a,o)}else
n.x=e,n.y=r,n.point=t}else l(n,t,e,r,i,u,a,o)}function l(n,t,e,r,i,a,o,c){var
l=.5*(i+o),f=.5*(a+c),s=e>=l,h=r>=f,g=(h<<1)+s;n.leaf=!1,n
=n.nodes[g]||(n.nodes[g]=or()),s?i=l:o=l,h?a=f:c=f,u(n,t,e,r,i,a,o,c)}var
f,s,h,g,p,d,m,v,y,M=lt(o),x=lt(c);if(null!=t)d=t,m=e,v=r,y=i;else
if(v=y=-(d=m=1/0),s=[],h=[],p=n.length,a)for(g=0;p>g;++g)f=n[g],f.x<d&&(d=f.x),f.y<m&&(m=f.y),f.x>v&&(v=f.x),f.y>y&&(y=f.y),s.push(f.x),h.push(f.y);else
for(g=0;p>g;++g){var
b=+M(f=n[g],g),_=+x(f,g);d>b&&(d=b),m>_&&(m=_),b>v&&(v=b),_>y&&(y=_),s.push(b),h.push(_)}var
w=v-d,S=y-m;w>S?y=m+w:v=d+S;var
E=or();if(E.add=function(n){u(E,n,+M(n,++g),+x(n,g),d,m,v,y)},E.visit=function(n){cr(n,E,d,m,v,y)},g=-1,null==t){for(;++g<p;)u(E,n[g],s[g],h[g],d,m,v,y);--g}else
n.forEach(E.add);return s=h=n=f=null,E}var
a,o=je,c=Le;return(a=arguments.length)?(o=ur,c=ar,3===a&&(i=e,r=t,e=t=0),u(n)):(u.x=function(n){return
arguments.length?(o=n,u):o},u.y=function(n){return
arguments.length?(c=n,u):c},u.size=function(n){return
arguments.length?(null==n?t=e=r=i=null:(t=e=0,r=+n[0],i=+n[1]),u):null==t?null:[r,i]},u)},ua.interpolateRgb=lr,ua.transform=function(n){v
ar
t=aa.createElementNS(ua.ns.prefix.svg,"g");return(ua.transform=function(n){if(null!=n){t.setAttribute("transform",n);var
e=t.transform.baseVal.consolidate()}return new
fr(e?e.matrix:Ro)})(n)},fr.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var
Ro={a:1,b:0,c:0,d:1,e:0,f:0};ua.interpolateNumber=pr,ua.interpolateTransform=dr,ua.interpolateObject=mr,ua.interpolateString=vr;var
Oo=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g;ua.interpolate=yr,ua.interpolators=[function(n,t){var
e=typeof t;return("string"===e?Va.has(t)||/^(#|rgb\(|hsl\()/.test(t)?lr:vr:t
instanceof
L?lr:"object"===e?Array.isArray(t)?xr:mr:pr)(n,t)}],ua.interpolateArray=xr;var
Yo=function(){return ft},Uo=ua.map({linear:Yo,poly:Ar,quad:function(){return
Sr},cubic:function(){return Er},sin:function(){return Nr},exp:function(){return
qr},circle:function(){return Tr},elastic:Cr,back:zr,bounce:function(){return
Dr}}),Io=ua.map({"
in":ft,out:_r,"in-out":wr,"out-in":function(n){return
wr(_r(n))}});ua.ease=function(n){var
t=n.indexOf("-"),e=t>=0?n.substring(0,t):n,r=t>=0?n.substring(t+1):"in";return
e=Uo.get(e)||Yo,r=Io.get(r)||ft,br(r(e.apply(null,Array.prototype.slice.call(arguments,1))))},ua.interpolateHcl=jr,ua.interpolateHsl=Lr,ua.interpolateLab=Fr,ua.interpolateRound=Hr,ua.layout={},ua.layout.bundle=function(){return
function(n){for(var t=[],e=-1,r=n.length;++e<r;)t.push(Or(n[e]));return
t}},ua.layout.chord=function(){function n(){var
n,l,s,h,g,p={},d=[],m=ua.range(u),v=[];for(e=[],r=[],n=0,h=-1;++h<u;){for(l=0,g=-1;++g<u;)l+=i[h][g];d.push(l),v.push(ua.range(u)),n+=l}for(a&&m.sort(function(n,t){return
a(d[n],d[t])}),o&&v.forEach(function(n,t){n.sort(function(n,e){return
o(i[t][n],i[t][e])})}),n=(2*Da-f*u)/n,l=0,h=-1;++h<u;){for(s=l,g=-1;++g<u;){var
y=m[h],M=v[y][g],x=i[y][M],b=l,_=l+=x*n;p[y+"-"+M]={index:y,subindex:M,startAngle:b,endAngle:_,value:x}}r[y]={index:y,startAngle:s,endAngle:l,value:(l
-s)/n},l+=f}for(h=-1;++h<u;)for(g=h-1;++g<u;){var
w=p[h+"-"+g],S=p[g+"-"+h];(w.value||S.value)&&e.push(w.value<S.value?{source:S,target:w}:{source:w,target:S})}c&&t()}function
t(){e.sort(function(n,t){return
c((n.source.value+n.target.value)/2,(t.source.value+t.target.value)/2)})}var
e,r,i,u,a,o,c,l={},f=0;return l.matrix=function(n){return
arguments.length?(u=(i=n)&&i.length,e=r=null,l):i},l.padding=function(n){return
arguments.length?(f=n,e=r=null,l):f},l.sortGroups=function(n){return
arguments.length?(a=n,e=r=null,l):a},l.sortSubgroups=function(n){return
arguments.length?(o=n,e=null,l):o},l.sortChords=function(n){return
arguments.length?(c=n,e&&t(),l):c},l.chords=function(){return
e||n(),e},l.groups=function(){return r||n(),r},l},ua.layout.force=function(){function
n(n){return function(t,e,r,i){if(t.point!==n){var
u=t.cx-n.x,a=t.cy-n.y,o=1/Math.sqrt(u*u+a*a);if(d>(i-e)*o){var c=t.charge*o*o;return
n.px-=u*c,n.py-=a*c,!0}if(t.point&&isFinite(o)){var c=t.pointCharge*o*o;n.p
x-=u*c,n.py-=a*c}}return!t.charge}}function
t(n){n.px=ua.event.x,n.py=ua.event.y,o.resume()}var
e,r,i,u,a,o={},c=ua.dispatch("start","tick","end"),l=[1,1],f=.9,s=Vo,h=Xo,g=-30,p=.1,d=.8,m=[],v=[];return
o.tick=function(){if((r*=.99)<.005)return
c.end({type:"end",alpha:r=0}),!0;var
t,e,o,s,h,d,y,M,x,b=m.length,_=v.length;for(e=0;_>e;++e)o=v[e],s=o.source,h=o.target,M=h.x-s.x,x=h.y-s.y,(d=M*M+x*x)&&(d=r*u[e]*((d=Math.sqrt(d))-i[e])/d,M*=d,x*=d,h.x-=M*(y=s.weight/(h.weight+s.weight)),h.y-=x*y,s.x+=M*(y=1-y),s.y+=x*y);if((y=r*p)&&(M=l[0]/2,x=l[1]/2,e=-1,y))for(;++e<b;)o=m[e],o.x+=(M-o.x)*y,o.y+=(x-o.y)*y;if(g)for(Br(t=ua.geom.quadtree(m),r,a),e=-1;++e<b;)(o=m[e]).fixed||t.visit(n(o));for(e=-1;++e<b;)o=m[e],o.fixed?(o.x=o.px,o.y=o.py):(o.x-=(o.px-(o.px=o.x))*f,o.y-=(o.py-(o.py=o.y))*f);c.tick({type:"tick",alpha:r})},o.nodes=function(n){return
arguments.length?(m=n,o):m},o.links=function(n){return
arguments.length?(v=n,o):v},o.size=function(n){return arguments.length?(l=n,o):l},o.
linkDistance=function(n){return arguments.length?(s="function"==typeof
n?n:+n,o):s},o.distance=o.linkDistance,o.linkStrength=function(n){return
arguments.length?(h="function"==typeof
n?n:+n,o):h},o.friction=function(n){return
arguments.length?(f=+n,o):f},o.charge=function(n){return
arguments.length?(g="function"==typeof n?n:+n,o):g},o.gravity=function(n){return
arguments.length?(p=+n,o):p},o.theta=function(n){return
arguments.length?(d=+n,o):d},o.alpha=function(n){return
arguments.length?(n=+n,r?r=n>0?n:0:n>0&&(c.start({type:"start",alpha:r=n}),ua.timer(o.tick)),o):r},o.start=function(){function
n(n,r){for(var i,u=t(e),a=-1,o=u.length;++a<o;)if(!isNaN(i=u[a][n]))return i;return
Math.random()*r}function
t(){if(!c){for(c=[],r=0;p>r;++r)c[r]=[];for(r=0;d>r;++r){var
n=v[r];c[n.source.index].push(n.target),c[n.target.index].push(n.source)}}return c[e]}var
e,r,c,f,p=m.length,d=v.length,y=l[0],M=l[1];for(e=0;p>e;++e)(f=m[e]).index=e,f.weight=0;for(e=0;d>e;++e)f=v[e],typeof
f.source
=="number"&&(f.source=m[f.source]),typeof
f.target=="number"&&(f.target=m[f.target]),++f.source.weight,++f.target.weight;for(e=0;p>e;++e)f=m[e],isNaN(f.x)&&(f.x=n("x",y)),isNaN(f.y)&&(f.y=n("y",M)),isNaN(f.px)&&(f.px=f.x),isNaN(f.py)&&(f.py=f.y);if(i=[],"function"==typeof
s)for(e=0;d>e;++e)i[e]=+s.call(this,v[e],e);else
for(e=0;d>e;++e)i[e]=s;if(u=[],"function"==typeof
h)for(e=0;d>e;++e)u[e]=+h.call(this,v[e],e);else
for(e=0;d>e;++e)u[e]=h;if(a=[],"function"==typeof
g)for(e=0;p>e;++e)a[e]=+g.call(this,m[e],e);else for(e=0;p>e;++e)a[e]=g;return
o.resume()},o.resume=function(){return o.alpha(.1)},o.stop=function(){return
o.alpha(0)},o.drag=function(){return
e||(e=ua.behavior.drag().origin(ft).on("dragstart.force",Ir).on("drag.force",t).on("dragend.force",Vr)),arguments.length?(this.on("mouseover.force",Xr).on("mouseout.force",Zr).call(e),void
0):e},ua.rebind(o,c,"on")};var
Vo=20,Xo=1;ua.layout.hierarchy=function(){function n(t,a,o){var
c=i.call(e,t,a);if(t.depth=a,o.push(t),c&
&(l=c.length)){for(var
l,f,s=-1,h=t.children=[],g=0,p=a+1;++s<l;)f=n(c[s],p,o),f.parent=t,h.push(f),g+=f.value;r&&h.sort(r),u&&(t.value=g)}else
u&&(t.value=+u.call(e,t,a)||0);return t}function t(n,r){var
i=n.children,a=0;if(i&&(o=i.length))for(var
o,c=-1,l=r+1;++c<o;)a+=t(i[c],l);else u&&(a=+u.call(e,n,r)||0);return
u&&(n.value=a),a}function e(t){var e=[];return n(t,0,e),e}var
r=Kr,i=Jr,u=Gr;return e.sort=function(n){return
arguments.length?(r=n,e):r},e.children=function(n){return
arguments.length?(i=n,e):i},e.value=function(n){return
arguments.length?(u=n,e):u},e.revalue=function(n){return
t(n,0),n},e},ua.layout.partition=function(){function n(t,e,r,i){var
u=t.children;if(t.x=e,t.y=t.depth*i,t.dx=r,t.dy=i,u&&(a=u.length)){var
a,o,c,l=-1;for(r=t.value?r/t.value:0;++l<a;)n(o=u[l],e,c=o.value*r,i),e+=c}}function
t(n){var e=n.children,r=0;if(e&&(i=e.length))for(var
i,u=-1;++u<i;)r=Math.max(r,t(e[u]));return 1+r}function e(e,u){var
a=r.call(this,e,u);return n(a[0],0,i[0],i[1]/t(
a[0])),a}var r=ua.layout.hierarchy(),i=[1,1];return e.size=function(n){return
arguments.length?(i=n,e):i},$r(e,r)},ua.layout.pie=function(){function n(u){var
a=u.map(function(e,r){return+t.call(n,e,r)}),o=+("function"==typeof
r?r.apply(this,arguments):r),c=(("function"==typeof
i?i.apply(this,arguments):i)-o)/ua.sum(a),l=ua.range(u.length);null!=e&&l.sort(e===Zo?function(n,t){return
a[t]-a[n]}:function(n,t){return e(u[n],u[t])});var f=[];return l.forEach(function(n){var
t;f[n]={data:u[n],value:t=a[n],startAngle:o,endAngle:o+=t*c}}),f}var
t=Number,e=Zo,r=0,i=2*Da;return n.value=function(e){return
arguments.length?(t=e,n):t},n.sort=function(t){return
arguments.length?(e=t,n):e},n.startAngle=function(t){return
arguments.length?(r=t,n):r},n.endAngle=function(t){return
arguments.length?(i=t,n):i},n};var Zo={};ua.layout.stack=function(){function n(o,c){var
l=o.map(function(e,r){return t.call(n,e,r)}),f=l.map(function(t){return
t.map(function(t,e){return[u.call(n,t,e),a.call(n,t,e)]
})}),s=e.call(n,f,c);l=ua.permute(l,s),f=ua.permute(f,s);var
h,g,p,d=r.call(n,f,c),m=l.length,v=l[0].length;for(g=0;v>g;++g)for(i.call(n,l[0][g],p=d[g],f[0][g][1]),h=1;m>h;++h)i.call(n,l[h][g],p+=f[h-1][g][1],f[h][g][1]);return
o}var t=ft,e=ei,r=ri,i=ti,u=Qr,a=ni;return n.values=function(e){return
arguments.length?(t=e,n):t},n.order=function(t){return
arguments.length?(e="function"==typeof
t?t:Bo.get(t)||ei,n):e},n.offset=function(t){return
arguments.length?(r="function"==typeof
t?t:$o.get(t)||ri,n):r},n.x=function(t){return
arguments.length?(u=t,n):u},n.y=function(t){return
arguments.length?(a=t,n):a},n.out=function(t){return arguments.length?(i=t,n):i},n};var
Bo=ua.map({"inside-out":function(n){var
t,e,r=n.length,i=n.map(ii),u=n.map(ui),a=ua.range(r).sort(function(n,t){return
i[n]-i[t]}),o=0,c=0,l=[],f=[];for(t=0;r>t;++t)e=a[t],c>o?(o+=u[e],l.push(e)):(c+=u[e],f.push(e));return
f.reverse().concat(l)},reverse:function(n){return
ua.range(n.length).reverse()},"default":ei}),$
o=ua.map({silhouette:function(n){var
t,e,r,i=n.length,u=n[0].length,a=[],o=0,c=[];for(e=0;u>e;++e){for(t=0,r=0;i>t;t++)r+=n[t][e][1];r>o&&(o=r),a.push(r)}for(e=0;u>e;++e)c[e]=(o-a[e])/2;return
c},wiggle:function(n){var
t,e,r,i,u,a,o,c,l,f=n.length,s=n[0],h=s.length,g=[];for(g[0]=c=l=0,e=1;h>e;++e){for(t=0,i=0;f>t;++t)i+=n[t][e][1];for(t=0,u=0,o=s[e][0]-s[e-1][0];f>t;++t){for(r=0,a=(n[t][e][1]-n[t][e-1][1])/(2*o);t>r;++r)a+=(n[r][e][1]-n[r][e-1][1])/o;u+=a*n[t][e][1]}g[e]=c-=i?u/i*o:0,l>c&&(l=c)}for(e=0;h>e;++e)g[e]-=l;return
g},expand:function(n){var
t,e,r,i=n.length,u=n[0].length,a=1/i,o=[];for(e=0;u>e;++e){for(t=0,r=0;i>t;t++)r+=n[t][e][1];if(r)for(t=0;i>t;t++)n[t][e][1]/=r;else
for(t=0;i>t;t++)n[t][e][1]=a}for(e=0;u>e;++e)o[e]=0;return
o},zero:ri});ua.layout.histogram=function(){function n(n,u){for(var
a,o,c=[],l=n.map(e,this),f=r.call(this,l,u),s=i.call(this,f,l,u),u=-1,h=l.length,g=s.length-1,p=t?1:1/h;++u<g;)a=c[u]=[],a.dx=s[u+1]-(a.x=s[u]),a.y=0;if(g>0)for(u=-1;++u<h;
)o=l[u],o>=f[0]&&o<=f[1]&&(a=c[ua.bisect(s,o,1,g)-1],a.y+=p,a.push(n[u]));return
c}var t=!0,e=Number,r=li,i=oi;return n.value=function(t){return
arguments.length?(e=t,n):e},n.range=function(t){return
arguments.length?(r=lt(t),n):r},n.bins=function(t){return
arguments.length?(i="number"==typeof t?function(n){return
ci(n,t)}:lt(t),n):i},n.frequency=function(e){return
arguments.length?(t=!!e,n):t},n},ua.layout.tree=function(){function n(n,i){function
u(n,t){var r=n.children,i=n._tree;if(r&&(a=r.length)){for(var
a,c,l,f=r[0],s=f,h=-1;++h<a;)l=r[h],u(l,c),s=o(l,c,s),c=l;yi(n);var
g=.5*(f._tree.prelim+l._tree.prelim);t?(i.prelim=t._tree.prelim+e(n,t),i.mod=i.prelim-g):i.prelim=g}else
t&&(i.prelim=t._tree.prelim+e(n,t))}function a(n,t){n.x=n._tree.prelim+t;var
e=n.children;if(e&&(r=e.length)){var
r,i=-1;for(t+=n._tree.mod;++i<r;)a(e[i],t)}}function o(n,t,r){if(t){for(var
i,u=n,a=n,o=t,c=n.parent.children[0],l=u._tree.mod,f=a._tree.mod,s=o._tree.mod,h=c._tree.mod;o=hi(o),u=si(u),o&&
u;)c=si(c),a=hi(a),a._tree.ancestor=n,i=o._tree.prelim+s-u._tree.prelim-l+e(o,u),i>0&&(Mi(xi(o,n,r),n,i),l+=i,f+=i),s+=o._tree.mod,l+=u._tree.mod,h+=c._tree.mod,f+=a._tree.mod;o&&!hi(a)&&(a._tree.thread=o,a._tree.mod+=s-f),u&&!si(c)&&(c._tree.thread=u,c._tree.mod+=l-h,r=n)}return
r}var
c=t.call(this,n,i),l=c[0];vi(l,function(n,t){n._tree={ancestor:n,prelim:0,mod:0,change:0,shift:0,number:t?t._tree.number+1:0}}),u(l),a(l,-l._tree.prelim);var
f=gi(l,di),s=gi(l,pi),h=gi(l,mi),g=f.x-e(f,s)/2,p=s.x+e(s,f)/2,d=h.depth||1;return
vi(l,function(n){n.x=(n.x-g)/(p-g)*r[0],n.y=n.depth/d*r[1],delete n._tree}),c}var
t=ua.layout.hierarchy().sort(null).value(null),e=fi,r=[1,1];return
n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return
arguments.length?(r=t,n):r},$r(n,t)},ua.layout.pack=function(){function n(n,i){var
u=t.call(this,n,i),a=u[0];a.x=0,a.y=0,vi(a,function(n){n.r=Math.sqrt(n.value)}),vi(a,Ei);var
o=r[0],c=r[1],l=Math.max(2*a.r/o,2*a.r/c);if(e>0){
var
f=e*l/2;vi(a,function(n){n.r+=f}),vi(a,Ei),vi(a,function(n){n.r-=f}),l=Math.max(2*a.r/o,2*a.r/c)}return
Ni(a,o/2,c/2,1/l),u}var t=ua.layout.hierarchy().sort(bi),e=0,r=[1,1];return
n.size=function(t){return arguments.length?(r=t,n):r},n.padding=function(t){return
arguments.length?(e=+t,n):e},$r(n,t)},ua.layout.cluster=function(){function n(n,i){var
u,a=t.call(this,n,i),o=a[0],c=0;vi(o,function(n){var
t=n.children;t&&t.length?(n.x=Ci(t),n.y=Ti(t)):(n.x=u?c+=e(n,u):0,n.y=0,u=n)});var
l=zi(o),f=Di(o),s=l.x-e(l,f)/2,h=f.x+e(f,l)/2;return
vi(o,function(n){n.x=(n.x-s)/(h-s)*r[0],n.y=(1-(o.y?n.y/o.y:1))*r[1]}),a}var
t=ua.layout.hierarchy().sort(null).value(null),e=fi,r=[1,1];return
n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return
arguments.length?(r=t,n):r},$r(n,t)},ua.layout.treemap=function(){function n(n,t){for(var
e,r,i=-1,u=n.length;++i<u;)r=(e=n[i]).value*(0>t?0:t),e.area=isNaN(r)||0>=r?0:r}function
t(e){var u=e.children;if(u&&u.length)
{var
a,o,c,l=s(e),f=[],h=u.slice(),p=1/0,d="slice"===g?l.dx:"dice"===g?l.dy:"slice-dice"===g?e.depth&1?l.dy:l.dx:Math.min(l.dx,l.dy);for(n(h,l.dx*l.dy/e.value),f.area=0;(c=h.length)>0;)f.push(a=h[c-1]),f.area+=a.area,"squarify"!==g||(o=r(f,d))<=p?(h.pop(),p=o):(f.area-=f.pop().area,i(f,d,l,!1),d=Math.min(l.dx,l.dy),f.length=f.area=0,p=1/0);f.length&&(i(f,d,l,!0),f.length=f.area=0),u.forEach(t)}}function
e(t){var r=t.children;if(r&&r.length){var
u,a=s(t),o=r.slice(),c=[];for(n(o,a.dx*a.dy/t.value),c.area=0;u=o.pop();)c.push(u),c.area+=u.area,u.z!=null&&(i(c,u.z?a.dx:a.dy,a,!o.length),c.length=c.area=0);r.forEach(e)}}function
r(n,t){for(var
e,r=n.area,i=0,u=1/0,a=-1,o=n.length;++a<o;)(e=n[a].area)&&(u>e&&(u=e),e>i&&(i=e));return
r*=r,t*=t,r?Math.max(t*i*p/r,r/(t*u*p)):1/0}function i(n,t,e,r){var
i,u=-1,a=n.length,o=e.x,l=e.y,f=t?c(n.area/t):0;if(t==e.dx){for((r||f>e.dy)&&(f=e.dy);++u<a;)i=n[u],i.x=o,i.y=l,i.dy=f,o+=i.dx=Math.min(e.x+e.dx-o,f?c(i.area/f):0);i.z=!0,i.dx+=e.x+e.d
x-o,e.y+=f,e.dy-=f}else{for((r||f>e.dx)&&(f=e.dx);++u<a;)i=n[u],i.x=o,i.y=l,i.dx=f,l+=i.dy=Math.min(e.y+e.dy-l,f?c(i.area/f):0);i.z=!1,i.dy+=e.y+e.dy-l,e.x+=f,e.dx-=f}}function
u(r){var i=a||o(r),u=i[0];return
u.x=0,u.y=0,u.dx=l[0],u.dy=l[1],a&&o.revalue(u),n([u],u.dx*u.dy/u.value),(a?e:t)(u),h&&(a=i),i}var
a,o=ua.layout.hierarchy(),c=Math.round,l=[1,1],f=null,s=ji,h=!1,g="squarify",p=.5*(1+Math.sqrt(5));return
u.size=function(n){return arguments.length?(l=n,u):l},u.padding=function(n){function
t(t){var e=n.call(u,t,t.depth);return null==e?ji(t):Li(t,"number"==typeof
e?[e,e,e,e]:e)}function e(t){return Li(t,n)}if(!arguments.length)return f;var r;return
s=(f=n)==null?ji:(r=typeof
n)=="function"?t:"number"===r?(n=[n,n,n,n],e):e,u},u.round=function(n){return
arguments.length?(c=n?Math.round:Number,u):c!=Number},u.sticky=function(n){return
arguments.length?(h=n,a=null,u):h},u.ratio=function(n){return
arguments.length?(p=n,u):p},u.mode=function(n){return arguments.length?(g=n+"",
u):g},$r(u,o)},ua.random={normal:function(n,t){var e=arguments.length;return
2>e&&(t=1),1>e&&(n=0),function(){var e,r,i;do
e=Math.random()*2-1,r=Math.random()*2-1,i=e*e+r*r;while(!i||i>1);return
n+t*e*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(){var
n=ua.random.normal.apply(ua,arguments);return function(){return
Math.exp(n())}},irwinHall:function(n){return function(){for(var
t=0,e=0;n>e;e++)t+=Math.random();return
t/n}}},ua.scale={},ua.scale.linear=function(){return
Yi([0,1],[0,1],yr,!1)},ua.scale.log=function(){return
Bi(ua.scale.linear().domain([0,Math.LN10]),10,$i,Ji,[1,10])};var
Jo=ua.format(".0e");ua.scale.pow=function(){return
Wi(ua.scale.linear(),1,[0,1])},ua.scale.sqrt=function(){return
ua.scale.pow().exponent(.5)},ua.scale.ordinal=function(){return
nu([],{t:"range",a:[[]]})},ua.scale.category10=function(){return
ua.scale.ordinal().range(Go)},ua.scale.category20=function(){return
ua.scale.ordinal().range(Ko)},ua.scale.category20b=function(){return ua.scale.ordi
nal().range(Wo)},ua.scale.category20c=function(){return ua.scale.ordinal().range(Qo)};var
Go=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],Ko=["#1f77b4","#aec7e8","#ff7f0e","#ffbb78","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5","#8c564b","#c49c94","#e377c2","#f7b6d2","#7f7f7f","#c7c7c7","#bcbd22","#dbdb8d","#17becf","#9edae5"],Wo=["#393b79","#5254a3","#6b6ecf","#9c9ede","#637939","#8ca252","#b5cf6b","#cedb9c","#8c6d31","#bd9e39","#e7ba52","#e7cb94","#843c39","#ad494a","#d6616b","#e7969c","#7b4173","#a55194","#ce6dbd","#de9ed6"],Qo=["#3182bd","#6baed6","#9ecae1","#c6dbef","#e6550d","#fd8d3c","#fdae6b","#fdd0a2","#31a354","#74c476","#a1d99b","#c7e9c0","#756bb1","#9e9ac8","#bcbddc","#dadaeb","#636363","#969696","#bdbdbd","#d9d9d9"];ua.scale.quantile=function(){return
tu([],[])},ua.scale.quantize=function(){return
eu(0,1,[0,1])},ua.scale.threshold=function(){return
ru([.5],[0,1])},ua.scale.identity=function()
{return iu([0,1])},ua.svg.arc=function(){function n(){var
n=t.apply(this,arguments),u=e.apply(this,arguments),a=r.apply(this,arguments)+nc,o=i.apply(this,arguments)+nc,c=(a>o&&(c=a,a=o,o=c),o-a),l=Da>c?"0":"1",f=Math.cos(a),s=Math.sin(a),h=Math.cos(o),g=Math.sin(o);return
c>=tc?n?"M0,"+u+"A"+u+","+u+" 0 1,1
0,"+-u+"A"+u+","+u+" 0 1,1
0,"+u+"M0,"+n+"A"+n+","+n+" 0 1,0
0,"+-n+"A"+n+","+n+" 0 1,0
0,"+n+"Z":"M0,"+u+"A"+u+","+u+" 0 1,1
0,"+-u+"A"+u+","+u+" 0 1,1
0,"+u+"Z":n?"M"+u*f+","+u*s+"A"+u+","+u+"
0 "+l+",1
"+u*h+","+u*g+"L"+n*h+","+n*g+"A"+n+","+n+"
0 "+l+",0
"+n*f+","+n*s+"Z":"M"+u*f+","+u*s+"A"+u+","+u+"
0 "+l+",1 "+u*h+","+u*g+"L0,0"+"Z"}var
t=uu,e=au,r=ou,i=cu;return n.innerRadius=function(e){return
arguments.length?(t=lt(e),n):t},n.outerRadius=function(t){return
arguments.length?(e=lt(t),n):e},n.startAngle=function(t){return
arguments.length?(r=lt(t),n):r},n.endAngle=function(t){return
arguments.length?(i=lt(t),n):i},n.centroid=function(){var n=(t.apply(this,arguments
)+e.apply(this,arguments))/2,u=(r.apply(this,arguments)+i.apply(this,arguments))/2+nc;return[Math.cos(u)*n,Math.sin(u)*n]},n};var
nc=-Da/2,tc=2*Da-1e-6;ua.svg.line.radial=function(){var n=De(lu);return
n.radius=n.x,delete n.x,n.angle=n.y,delete
n.y,n},Pe.reverse=Re,Re.reverse=Pe,ua.svg.area=function(){return
fu(ft)},ua.svg.area.radial=function(){var n=fu(lu);return n.radius=n.x,delete
n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete
n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete
n.y1,n},ua.svg.chord=function(){function n(n,o){var
c=t(this,u,n,o),l=t(this,a,n,o);return"M"+c.p0+r(c.r,c.p1,c.a1-c.a0)+(e(c,l)?i(c.r,c.p1,c.r,c.p0):i(c.r,c.p1,l.r,l.p0)+r(l.r,l.p1,l.a1-l.a0)+i(l.r,l.p1,c.r,c.p0))+"Z"}function
t(n,t,e,r){var
i=t.call(n,e,r),u=o.call(n,i,r),a=c.call(n,i,r)+nc,f=l.call(n,i,r)+nc;return{r:u,a0:a,a1:f,p0:[u*Math.cos(a),u*Math.sin(a)],p1:[u*Math.cos(f),u*Math.sin(f)]}}function
e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n
,t,e){return"A"+n+","+n+" 0 "+ +(e>Da)+",1
"+t}function i(n,t,e,r){return"Q 0,0 "+r}var
u=se,a=he,o=su,c=ou,l=cu;return n.radius=function(t){return
arguments.length?(o=lt(t),n):o},n.source=function(t){return
arguments.length?(u=lt(t),n):u},n.target=function(t){return
arguments.length?(a=lt(t),n):a},n.startAngle=function(t){return
arguments.length?(c=lt(t),n):c},n.endAngle=function(t){return
arguments.length?(l=lt(t),n):l},n},ua.svg.diagonal=function(){function n(n,i){var
u=t.call(this,n,i),a=e.call(this,n,i),o=(u.y+a.y)/2,c=[u,{x:u.x,y:o},{x:a.x,y:o},a];return
c=c.map(r),"M"+c[0]+"C"+c[1]+" "+c[2]+" "+c[3]}var
t=se,e=he,r=hu;return n.source=function(e){return
arguments.length?(t=lt(e),n):t},n.target=function(t){return
arguments.length?(e=lt(t),n):e},n.projection=function(t){return
arguments.length?(r=t,n):r},n},ua.svg.diagonal.radial=function(){var
n=ua.svg.diagonal(),t=hu,e=n.projection;return n.projection=function(n){return
arguments.length?e(gu(t=n)):t},n},ua.svg.symbol=f
unction(){function n(n,r){return(ec.get(t.call(this,n,r))||mu)(e.call(this,n,r))}var
t=du,e=pu;return n.type=function(e){return
arguments.length?(t=lt(e),n):t},n.size=function(t){return
arguments.length?(e=lt(t),n):e},n};var ec=ua.map({circle:mu,cross:function(n){var
t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var
t=Math.sqrt(n/(2*uc)),e=t*uc;return"M0,"+-t+"L"+e+",0"+"
0,"+t+" "+-e+",0"+"Z"},square:function(n){var
t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+"
"+t+","+t+"
"+-t+","+t+"Z"},"triangle-down":function(n){var
t=Math.sqrt(n/ic),e=t*ic/2;return"M0,"+e+"L"+t+","+-e+"
"+-t+","+-e+"Z"},"triangle-up":function(n){var
t=Math.sqrt(n/ic),e=t*ic/2;return"M0,"+-e+"L"+t+","+e+"
"+-t+","+e+"Z"}});ua.svg.symbolTypes=ec.keys();var
rc,ic=Math.sqrt(3),uc=Math.tan(30*La),ac=[],oc=0,cc={ease:kr,delay:0,duration:250};ac.call=wa.call,ac.empty=wa.empty,ac.node=wa.node,ua.transition=
function(n){return
arguments.length?rc?n.transition():n:Na.transition()},ua.transition.prototype=ac,ac.select=function(n){var
t,e,r,i=this.id,u=[];"function"!=typeof n&&(n=v(n));for(var
a=-1,o=this.length;++a<o;){u.push(t=[]);for(var
c=this[a],l=-1,f=c.length;++l<f;)(r=c[l])&&(e=n.call(r,r.__data__,l))?("__data__"in
r&&(e.__data__=r.__data__),xu(e,l,i,r.__transition__[i]),t.push(e)):t.push(null)}return
vu(u,i)},ac.selectAll=function(n){var
t,e,r,i,u,a=this.id,o=[];"function"!=typeof n&&(n=y(n));for(var
c=-1,l=this.length;++c<l;)for(var
f=this[c],s=-1,h=f.length;++s<h;)if(r=f[s]){u=r.__transition__[a],e=n.call(r,r.__data__,s),o.push(t=[]);for(var
g=-1,p=e.length;++g<p;)xu(i=e[g],g,a,u),t.push(i)}return
vu(o,a)},ac.filter=function(n){var t,e,r,i=[];"function"!=typeof
n&&(n=A(n));for(var u=0,a=this.length;a>u;u++){i.push(t=[]);for(var
e=this[u],o=0,c=e.length;c>o;o++)(r=e[o])&&n.call(r,r.__data__,o)&&t.push(r)}return
vu(i,this.id,this.time).ease(this.ease())},ac.tween=function(
n,t){var e=this.id;return
arguments.length<2?this.node().__transition__[e].tween.get(n):D(this,null==t?function(t){t.__transition__[e].tween.remove(n)}:function(r){r.__transition__[e].tween.set(n,t)})},ac.attr=function(n,t){function
e(){this.removeAttribute(o)}function r(){this.removeAttributeNS(o.space,o.local)}function
i(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(o);return
e!==n&&(t=a(e,n),function(n){this.setAttribute(o,t(n))})})}function u(n){return
null==n?r:(n+="",function(){var t,e=this.getAttributeNS(o.space,o.local);return
e!==n&&(t=a(e,n),function(n){this.setAttributeNS(o.space,o.local,t(n))})})}if(arguments.length<2){for(t
in n)this.attr(t,n[t]);return this}var a=Mr(n),o=ua.ns.qualify(n);return
yu(this,"attr."+n,t,o.local?u:i)},ac.attrTween=function(n,t){function e(n,e){var
r=t.call(this,n,e,this.getAttribute(i));return
r&&function(n){this.setAttribute(i,r(n))}}function r(n,e){var
r=t.call(this,n,e,this.getAttributeNS(i.space,i.local));return
r&&function(n){this.setAttributeNS(i.space,i.local,r(n))}}var
i=ua.ns.qualify(n);return
this.tween("attr."+n,i.local?r:e)},ac.style=function(n,t,e){function
r(){this.style.removeProperty(n)}function i(t){return
null==t?r:(t+="",function(){var
r,i=oa.getComputedStyle(this,null).getPropertyValue(n);return
i!==t&&(r=a(i,t),function(t){this.style.setProperty(n,r(t),e)})})}var
u=arguments.length;if(3>u){if("string"!=typeof
n){2>u&&(t="");for(e in n)this.style(e,n[e],t);return
this}e=""}var a=Mr(n);return
yu(this,"style."+n,t,i)},ac.styleTween=function(n,t,e){function r(r,i){var
u=t.call(this,r,i,oa.getComputedStyle(this,null).getPropertyValue(n));return
u&&function(t){this.style.setProperty(n,u(t),e)}}return
arguments.length<3&&(e=""),this.tween("style."+n,r)},ac.text=function(n){return
yu(this,"text",n,Mu)},ac.remove=function(){return
this.each("end.transition",function(){var
n;!this.__transition__&&(n=this.parentNode)&&n.removeChild(this)})},ac.ease=function(n){var
t=this.id;re
turn
arguments.length<1?this.node().__transition__[t].ease:("function"!=typeof
n&&(n=ua.ease.apply(ua,arguments)),D(this,function(e){e.__transition__[t].ease=n}))},ac.delay=function(n){var
t=this.id;return D(this,"function"==typeof
n?function(e,r,i){e.__transition__[t].delay=n.call(e,e.__data__,r,i)|0}:(n|=0,function(e){e.__transition__[t].delay=n}))},ac.duration=function(n){var
t=this.id;return D(this,"function"==typeof
n?function(e,r,i){e.__transition__[t].duration=Math.max(1,n.call(e,e.__data__,r,i)|0)}:(n=Math.max(1,0|n),function(e){e.__transition__[t].duration=n}))},ac.each=function(n,t){var
e=this.id;if(arguments.length<2){var
r=cc,i=rc;rc=e,D(this,function(t,r,i){cc=t.__transition__[e],n.call(t,t.__data__,r,i)}),cc=r,rc=i}else
D(this,function(r){r.__transition__[e].event.on(n,t)});return
this},ac.transition=function(){for(var
n,t,e,r,i=this.id,u=++oc,a=[],o=0,c=this.length;c>o;o++){a.push(n=[]);for(var
t=this[o],l=0,f=t.length;f>l;l++)(e=t[l])&&(r=Object.create(e.__tr
ansition__[i]),r.delay+=r.duration,xu(e,l,u,r)),n.push(e)}return
vu(a,u)},ua.svg.axis=function(){function n(n){n.each(function(){var
n,s=ua.select(this),h=null==l?e.ticks?e.ticks.apply(e,c):e.domain():l,g=null==t?e.tickFormat?e.tickFormat.apply(e,c):String:t,p=wu(e,h,f),d=s.selectAll(".tick.minor").data(p,String),m=d.enter().insert("line",".tick").attr("class","tick
minor").style("opacity",1e-6),v=ua.transition(d.exit()).style("opacity",1e-6).remove(),y=ua.transition(d).style("opacity",1),M=s.selectAll(".tick.major").data(h,String),x=M.enter().insert("g","path").attr("class","tick
major").style("opacity",1e-6),b=ua.transition(M.exit()).style("opacity",1e-6).remove(),_=ua.transition(M).style("opacity",1),w=Hi(e),S=s.selectAll(".domain").data([0]),E=(S.enter().append("path").attr("class","domain"),ua.transition(S)),k=e.copy(),A=this.__chart__||k;this.__chart__=k,x.append("line"),x.append("text");var
N=x.select("line"),q=_.select("line"),T=M.select("text").text(g),C=x.select("t
ext"),z=_.select("text");switch(r){case"bottom":n=bu,m.attr("y2",u),y.attr("x2",0).attr("y2",u),N.attr("y2",i),C.attr("y",Math.max(i,0)+o),q.attr("x2",0).attr("y2",i),z.attr("x",0).attr("y",Math.max(i,0)+o),T.attr("dy",".71em").style("text-anchor","middle"),E.attr("d","M"+w[0]+","+a+"V0H"+w[1]+"V"+a);break;case"top":n=bu,m.attr("y2",-u),y.attr("x2",0).attr("y2",-u),N.attr("y2",-i),C.attr("y",-(Math.max(i,0)+o)),q.attr("x2",0).attr("y2",-i),z.attr("x",0).attr("y",-(Math.max(i,0)+o)),T.attr("dy","0em").style("text-anchor","middle"),E.attr("d","M"+w[0]+","+-a+"V0H"+w[1]+"V"+-a);break;case"left":n=_u,m.attr("x2",-u),y.attr("x2",-u).attr("y2",0),N.attr("x2",-i),C.attr("x",-(Math.max(i,0)+o)),q.attr("x2",-i).attr("y2",0),z.attr("x",-(Math.max(i,0)+o)).attr("y",0),T.attr("dy",".32em").style("text-anchor","end"),E.attr("d","M"+-a+","+w[0]+"H0V"+w[1]+"H"+-a);break;case"right":n=_u,m.attr("x2",u),y.attr("x2",u).attr("y2",0),N.attr("x2",i),C.attr("x",Math.max(i,0)+o),q.attr("x2",i).att
r("y2",0),z.attr("x",Math.max(i,0)+o).attr("y",0),T.attr("dy",".32em").style("text-anchor","start"),E.attr("d","M"+a+","+w[0]+"H0V"+w[1]+"H"+a)}if(e.ticks)x.call(n,A),_.call(n,k),b.call(n,k),m.call(n,A),y.call(n,k),v.call(n,k);else{var
D=k.rangeBand()/2,j=function(n){return k(n)+D};x.call(n,j),_.call(n,j)}})}var
t,e=ua.scale.linear(),r=lc,i=6,u=6,a=6,o=3,c=[10],l=null,f=0;return
n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return
arguments.length?(r=t in fc?t+"":lc,n):r},n.ticks=function(){return
arguments.length?(c=arguments,n):c},n.tickValues=function(t){return
arguments.length?(l=t,n):l},n.tickFormat=function(e){return
arguments.length?(t=e,n):t},n.tickSize=function(t,e){if(!arguments.length)return i;var
r=arguments.length-1;return
i=+t,u=r>1?+e:i,a=r>0?+arguments[r]:i,n},n.tickPadding=function(t){return
arguments.length?(o=+t,n):o},n.tickSubdivide=function(t){return
arguments.length?(f=+t,n):f},n};var lc="bottom",fc={top:1,right:1,bottom:1,
left:1};ua.svg.brush=function(){function n(u){u.each(function(){var
u,a=ua.select(this),l=a.selectAll(".background").data([0]),s=a.selectAll(".extent").data([0]),h=a.selectAll(".resize").data(f,String);a.style("pointer-events","all").on("mousedown.brush",i).on("touchstart.brush",i),l.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),s.enter().append("rect").attr("class","extent").style("cursor","move"),h.enter().append("g").attr("class",function(n){return"resize
"+n}).style("cursor",function(n){return
sc[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),h.style("display",n.empty()?"none":null),h.exit().remove(),o&&(u=Hi(o),l.attr("x",u[0]).attr("width",u[1]-u[0]),e(a)),c&&(u=Hi(c),l.attr("y",u[0]).attr("height",u[1]-u[0]),r(a)),t(a)})}function
t(n){n.selectAll(".resize").attr("transf
orm",function(n){return"translate("+s[+/e$/.test(n)][0]+","+s[+/^s/.test(n)][1]+")"})}function
e(n){n.select(".extent").attr("x",s[0][0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",s[1][0]-s[0][0])}function
r(n){n.select(".extent").attr("y",s[0][1]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",s[1][1]-s[0][1])}function
i(){function i(){var n=ua.event.changedTouches;
-return n?ua.touches(y,n)[0]:ua.mouse(y)}function
f(){ua.event.keyCode==32&&(E||(m=null,k[0]-=s[1][0],k[1]-=s[1][1],E=2),l())}function
h(){ua.event.keyCode==32&&2==E&&(k[0]+=s[1][0],k[1]+=s[1][1],E=0,l())}function
g(){var
n=i(),u=!1;v&&(n[0]+=v[0],n[1]+=v[1]),E||(ua.event.altKey?(m||(m=[(s[0][0]+s[1][0])/2,(s[0][1]+s[1][1])/2]),k[0]=s[+(n[0]<m[0])][0],k[1]=s[+(n[1]<m[1])][1]):m=null),w&&p(n,o,0)&&(e(b),u=!0),S&&p(n,c,1)&&(r(b),u=!0),u&&(t(b),x({type:"brush",mode:E?"move":"resize"}))}function
p(n,t,e){var r,i,a=Hi(t),o=a[0],c=a[1],l=k[e],f=s[1][e]-s[0][e];return
E&&(o-=l,c-=f+l),r=Math.max(o,Math.min(c,n[e])),E?i=(r+=l)+f:(m&&(l=Math.max(o,Math.min(c,2*m[e]-r))),r>l?(i=r,r=l):i=l),s[0][e]!==r||s[1][e]!==i?(u=null,s[0][e]=r,s[1][e]=i,!0):void
0}function
d(){g(),b.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),ua.select("body").style("cursor",null),A.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touc
hend.brush",null).on("keydown.brush",null).on("keyup.brush",null),x({type:"brushend"}),l()}var
m,v,y=this,M=ua.select(ua.event.target),x=a.of(y,arguments),b=ua.select(y),_=M.datum(),w=!/^(n|s)$/.test(_)&&o,S=!/^(e|w)$/.test(_)&&c,E=M.classed("extent"),k=i(),A=ua.select(oa).on("mousemove.brush",g).on("mouseup.brush",d).on("touchmove.brush",g).on("touchend.brush",d).on("keydown.brush",f).on("keyup.brush",h);if(E)k[0]=s[0][0]-k[0],k[1]=s[0][1]-k[1];else
if(_){var
N=+/w$/.test(_),q=+/^n/.test(_);v=[s[1-N][0]-k[0],s[1-q][1]-k[1]],k[0]=s[N][0],k[1]=s[q][1]}else
ua.event.altKey&&(m=k.slice());b.style("pointer-events","none").selectAll(".resize").style("display",null),ua.select("body").style("cursor",M.style("cursor")),x({type:"brushstart"}),g(),l()}var
u,a=h(n,"brushstart","brush","brushend"),o=null,c=null,f=hc[0],s=[[0,0],[0,0]];return
n.x=function(t){return
arguments.length?(o=t,f=hc[!o<<1|!c],n):o},n.y=function(t){return
arguments.length?(c=t,f=hc[!o<<1|!c],n):c},n.extent=functi
on(t){var e,r,i,a,l;return
arguments.length?(u=[[0,0],[0,0]],o&&(e=t[0],r=t[1],c&&(e=e[0],r=r[0]),u[0][0]=e,u[1][0]=r,o.invert&&(e=o(e),r=o(r)),e>r&&(l=e,e=r,r=l),s[0][0]=0|e,s[1][0]=0|r),c&&(i=t[0],a=t[1],o&&(i=i[1],a=a[1]),u[0][1]=i,u[1][1]=a,c.invert&&(i=c(i),a=c(a)),i>a&&(l=i,i=a,a=l),s[0][1]=0|i,s[1][1]=0|a),n):(t=u||s,o&&(e=t[0][0],r=t[1][0],u||(e=s[0][0],r=s[1][0],o.invert&&(e=o.invert(e),r=o.invert(r)),e>r&&(l=e,e=r,r=l))),c&&(i=t[0][1],a=t[1][1],u||(i=s[0][1],a=s[1][1],c.invert&&(i=c.invert(i),a=c.invert(a)),i>a&&(l=i,i=a,a=l))),o&&c?[[e,i],[r,a]]:o?[e,r]:c&&[i,a])},n.clear=function(){return
u=null,s[0][0]=s[0][1]=s[1][0]=s[1][1]=0,n},n.empty=function(){return
o&&s[0][0]===s[1][0]||c&&s[0][1]===s[1][1]},ua.rebind(n,a,"on")};var
sc={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},hc=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]];ua.time={};var
gc=Date,pc=["Sunday","Monday","T
uesday","Wednesday","Thursday","Friday","Saturday"];Su.prototype={getDate:function(){return
this._.getUTCDate()},getDay:function(){return
this._.getUTCDay()},getFullYear:function(){return
this._.getUTCFullYear()},getHours:function(){return
this._.getUTCHours()},getMilliseconds:function(){return
this._.getUTCMilliseconds()},getMinutes:function(){return
this._.getUTCMinutes()},getMonth:function(){return
this._.getUTCMonth()},getSeconds:function(){return
this._.getUTCSeconds()},getTime:function(){return
this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return
this._.valueOf()},setDate:function(){dc.setUTCDate.apply(this._,arguments)},setDay:function(){dc.setUTCDay.apply(this._,arguments)},setFullYear:function(){dc.setUTCFullYear.apply(this._,arguments)},setHours:function(){dc.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){dc.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){dc.setUTCMinutes.apply(this._,arguments)},setM
onth:function(){dc.setUTCMonth.apply(this._,arguments)},setSeconds:function(){dc.setUTCSeconds.apply(this._,arguments)},setTime:function(){dc.setTime.apply(this._,arguments)}};var
dc=Date.prototype,mc="%a %b %e %X
%Y",vc="%m/%d/%Y",yc="%H:%M:%S",Mc=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],xc=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],bc=["January","February","March","April","May","June","July","August","September","October","November","December"],_c=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];ua.time.year=Eu(function(n){return
n=ua.time.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return
n.getFullYear()}),ua.time.years=ua.time.year.range,ua.time.years.utc=ua.time.year.utc.range,ua.time.day=Eu(function(n){var
t=new gc(1970,0);return
t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return
n.getDate()-1}),ua.time.d
ays=ua.time.day.range,ua.time.days.utc=ua.time.day.utc.range,ua.time.dayOfYear=function(n){var
t=ua.time.year(n);return
Math.floor((n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/864e5)},pc.forEach(function(n,t){n=n.toLowerCase(),t=7-t;var
e=ua.time[n]=Eu(function(n){return(n=ua.time.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+Math.floor(t)*7)},function(n){var
e=ua.time.year(n).getDay();return
Math.floor((ua.time.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});ua.time[n+"s"]=e.range,ua.time[n+"s"].utc=e.utc.range,ua.time[n+"OfYear"]=function(n){var
e=ua.time.year(n).getDay();return
Math.floor((ua.time.dayOfYear(n)+(e+t)%7)/7)}}),ua.time.week=ua.time.sunday,ua.time.weeks=ua.time.sunday.range,ua.time.weeks.utc=ua.time.sunday.utc.range,ua.time.weekOfYear=ua.time.sundayOfYear,ua.time.format=function(n){function
t(t){for(var
r,i,u,a=[],o=-1,c=0;++o<e;)n.charCodeAt(o)===37&&(a.push(n.substring(c,o)),(i=qc[r=n.charAt(++o)])!=null&&(r=n.charAt(++o
)),(u=Tc[r])&&(r=u(t,null==i?"e"===r?"
":"0":i)),a.push(r),c=o+1);return
a.push(n.substring(c,o)),a.join("")}var e=n.length;return
t.parse=function(t){var
e={y:1900,m:0,d:1,H:0,M:0,S:0,L:0},r=Au(e,n,t,0);if(r!=t.length)return
null;"p"in e&&(e.H=e.H%12+e.p*12);var i=new gc;return
i.setFullYear(e.y,e.m,e.d),i.setHours(e.H,e.M,e.S,e.L),i},t.toString=function(){return
n},t};var
wc=Nu(Mc),Sc=Nu(xc),Ec=Nu(bc),kc=qu(bc),Ac=Nu(_c),Nc=qu(_c),qc={"-":"",_:"
",0:"0"},Tc={a:function(n){return xc[n.getDay()]},A:function(n){return
Mc[n.getDay()]},b:function(n){return _c[n.getMonth()]},B:function(n){return
bc[n.getMonth()]},c:ua.time.format(mc),d:function(n,t){return
Tu(n.getDate(),t,2)},e:function(n,t){return Tu(n.getDate(),t,2)},H:function(n,t){return
Tu(n.getHours(),t,2)},I:function(n,t){return
Tu(n.getHours()%12||12,t,2)},j:function(n,t){return
Tu(1+ua.time.dayOfYear(n),t,3)},L:function(n,t){return
Tu(n.getMilliseconds(),t,3)},m:function(n,t){return Tu(n.getMonth()+1,t,2)},M:function(n
,t){return Tu(n.getMinutes(),t,2)},p:function(n){return
n.getHours()>=12?"PM":"AM"},S:function(n,t){return
Tu(n.getSeconds(),t,2)},U:function(n,t){return
Tu(ua.time.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return
Tu(ua.time.mondayOfYear(n),t,2)},x:ua.time.format(vc),X:ua.time.format(yc),y:function(n,t){return
Tu(n.getFullYear()%100,t,2)},Y:function(n,t){return
Tu(n.getFullYear()%1e4,t,4)},Z:$u,"%":function(){return"%"}},Cc={a:Cu,A:zu,b:Du,B:ju,c:Lu,d:Uu,e:Uu,H:Iu,I:Iu,L:Zu,m:Yu,M:Vu,p:Bu,S:Xu,x:Fu,X:Hu,y:Ru,Y:Pu},zc=/^\s*\d+/,Dc=ua.map({am:0,pm:1});ua.time.format.utc=function(n){function
t(n){try{gc=Su;var t=new gc;return t._=n,e(t)}finally{gc=Date}}var
e=ua.time.format(n);return t.parse=function(n){try{gc=Su;var t=e.parse(n);return
t&&t._}finally{gc=Date}},t.toString=e.toString,t};var
jc=ua.time.format.utc("%Y-%m-%dT%H:%M:%S.%LZ");ua.time.format.iso=Date.prototype.toISOString&&+new
Date("2000-01-01T00:00:00.000Z")?Ju:jc,Ju.parse=function(n){var
t=new Date(n);return
isNaN(t)?null:t},Ju.toString=jc.toString,ua.time.second=Eu(function(n){return new
gc(Math.floor(n/1e3)*1e3)},function(n,t){n.setTime(n.getTime()+Math.floor(t)*1e3)},function(n){return
n.getSeconds()}),ua.time.seconds=ua.time.second.range,ua.time.seconds.utc=ua.time.second.utc.range,ua.time.minute=Eu(function(n){return
new
gc(Math.floor(n/6e4)*6e4)},function(n,t){n.setTime(n.getTime()+Math.floor(t)*6e4)},function(n){return
n.getMinutes()}),ua.time.minutes=ua.time.minute.range,ua.time.minutes.utc=ua.time.minute.utc.range,ua.time.hour=Eu(function(n){var
t=n.getTimezoneOffset()/60;return new
gc((Math.floor(n/36e5-t)+t)*36e5)},function(n,t){n.setTime(n.getTime()+Math.floor(t)*36e5)},function(n){return
n.getHours()}),ua.time.hours=ua.time.hour.range,ua.time.hours.utc=ua.time.hour.utc.range,ua.time.month=Eu(function(n){return
n=ua.time.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return
n.getMonth()}),ua.time.months=ua.time.mont
h.range,ua.time.months.utc=ua.time.month.utc.range;var
Lc=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Fc=[[ua.time.second,1],[ua.time.second,5],[ua.time.second,15],[ua.time.second,30],[ua.time.minute,1],[ua.time.minute,5],[ua.time.minute,15],[ua.time.minute,30],[ua.time.hour,1],[ua.time.hour,3],[ua.time.hour,6],[ua.time.hour,12],[ua.time.day,1],[ua.time.day,2],[ua.time.week,1],[ua.time.month,1],[ua.time.month,3],[ua.time.year,1]],Hc=[[ua.time.format("%Y"),Ht],[ua.time.format("%B"),function(n){return
n.getMonth()}],[ua.time.format("%b %d"),function(n){return
n.getDate()!=1}],[ua.time.format("%a %d"),function(n){return
n.getDay()&&n.getDate()!=1}],[ua.time.format("%I %p"),function(n){return
n.getHours()}],[ua.time.format("%I:%M"),function(n){return
n.getMinutes()}],[ua.time.format(":%S"),function(n){return
n.getSeconds()}],[ua.time.format(".%L"),function(n){return
n.getMilliseconds()}]],Pc=ua.scale.linear(),Rc=Wu(Hc);Fc.
year=function(n,t){return
Pc.domain(n.map(na)).ticks(t).map(Qu)},ua.time.scale=function(){return
Gu(ua.scale.linear(),Fc,Rc)};var
Oc=Fc.map(function(n){return[n[0].utc,n[1]]}),Yc=[[ua.time.format.utc("%Y"),Ht],[ua.time.format.utc("%B"),function(n){return
n.getUTCMonth()}],[ua.time.format.utc("%b %d"),function(n){return
n.getUTCDate()!=1}],[ua.time.format.utc("%a %d"),function(n){return
n.getUTCDay()&&n.getUTCDate()!=1}],[ua.time.format.utc("%I
%p"),function(n){return
n.getUTCHours()}],[ua.time.format.utc("%I:%M"),function(n){return
n.getUTCMinutes()}],[ua.time.format.utc(":%S"),function(n){return
n.getUTCSeconds()}],[ua.time.format.utc(".%L"),function(n){return
n.getUTCMilliseconds()}]],Uc=Wu(Yc);return Oc.year=function(n,t){return
Pc.domain(n.map(ea)).ticks(t).map(ta)},ua.time.scale.utc=function(){return
Gu(ua.scale.linear(),Oc,Uc)},ua.text=st(function(n){return
n.responseText}),ua.json=function(n,t){return
ht(n,"application/json",ra,t)},ua.html=function(n,t){return ht(n,"t
ext/html",ia,t)},ua.xml=st(function(n){return n.responseXML}),ua}();
\ No newline at end of file
+d3=function(){function n(n){return null!=n&&!isNaN(n)}function t(n){return
n.length}function e(n){for(var t=1;n*t%1;)t*=10;return t}function r(n,t){try{for(var e in
t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}catch(r){n.prototype=t}}function
i(){}function u(){}function a(n,t,e){return function(){var r=e.apply(t,arguments);return
r===t?n:r}}function o(n,t){if(t in n)return
t;t=t.charAt(0).toUpperCase()+t.substring(1);for(var e=0,r=Aa.length;r>e;++e){var
i=Aa[e]+t;if(i in n)return i}}function c(n){for(var
t=-1,e=n.length,r=[];++t<e;)r.push(n[t]);return r}function l(n){return
Array.prototype.slice.call(n)}function f(){}function s(){}function h(n){function
t(){for(var
t,r=e,i=-1,u=r.length;++i<u;)(t=r[i].on)&&t.apply(this,arguments);return n}var
e=[],r=new i;return t.on=function(t,i){var u,a=r.get(t);return
arguments.length<2?a&&a.on:(a&&(a.on=null,e=e.slice(0,u=e.indexOf(a)).concat(e.slice(u+1)),r.remove(t)),i&&e.push(r.set(t,{on:i})),n)},t}function
g(){va
.event.preventDefault()}function p(){for(var n,t=va.event;n=t.sourceEvent;)t=n;return
t}function d(n){for(var t=new
s,e=0,r=arguments.length;++e<r;)t[arguments[e]]=h(t);return t.of=function(e,r){return
function(i){try{var
u=i.sourceEvent=va.event;i.target=n,va.event=i,t[i.type].apply(e,r)}finally{va.event=u}}},t}function
m(n){return Ta(n,Ha),n}function v(n){return function(){return za(n,this)}}function
y(n){return function(){return Da(n,this)}}function M(n,t){function
e(){this.removeAttribute(n)}function r(){this.removeAttributeNS(n.space,n.local)}function
i(){this.setAttribute(n,t)}function u(){this.setAttributeNS(n.space,n.local,t)}function
a(){var
e=t.apply(this,arguments);null==e?this.removeAttribute(n):this.setAttribute(n,e)}function
o(){var
e=t.apply(this,arguments);null==e?this.removeAttributeNS(n.space,n.local):this.setAttributeNS(n.space,n.local,e)}return
n=va.ns.qualify(n),null==t?n.local?r:e:"function"==typeof
t?n.local?o:a:n.local?u:i}function x(n){return n.trim(
).replace(/\s+/g," ")}function b(n){return new
RegExp("(?:^|\\s+)"+va.requote(n)+"(?:\\s+|$)","g")}function
_(n,t){function e(){for(var e=-1;++e<i;)n[e](this,t)}function r(){for(var
e=-1,r=t.apply(this,arguments);++e<i;)n[e](this,r)}n=n.trim().split(/\s+/).map(w);var
i=n.length;return"function"==typeof t?r:e}function w(n){var t=b(n);return
function(e,r){if(i=e.classList)return r?i.add(n):i.remove(n);var
i=e.getAttribute("class")||"";r?(t.lastIndex=0,t.test(i)||e.setAttribute("class",x(i+"
"+n))):e.setAttribute("class",x(i.replace(t," ")))}}function
S(n,t,e){function r(){this.style.removeProperty(n)}function
i(){this.style.setProperty(n,t,e)}function u(){var
r=t.apply(this,arguments);null==r?this.style.removeProperty(n):this.style.setProperty(n,r,e)}return
null==t?r:"function"==typeof t?u:i}function E(n,t){function e(){delete
this[n]}function r(){this[n]=t}function i(){var e=t.apply(this,arguments);null==e?delete
this[n]:this[n]=e}return null==t?e:"function"==typeof t?i:r}fun
ction k(n){return{__data__:n}}function A(n){return function(){return La(this,n)}}function
N(n){return
arguments.length||(n=va.ascending),function(t,e){return!t-!e||n(t.__data__,e.__data__)}}function
q(n,t){for(var e=0,r=n.length;r>e;e++)for(var
i,u=n[e],a=0,o=u.length;o>a;a++)(i=u[a])&&t(i,a,e);return n}function
T(n){return Ta(n,Pa),n}function C(n,t,e){function r(){var
t=this[a];t&&(this.removeEventListener(n,t,t.$),delete this[a])}function i(){var
i=c(t,Na(arguments));r.call(this),this.addEventListener(n,this[a]=i,i.$=e),i._=t}function
u(){var t,e=new RegExp("^__on([^.]+)"+va.requote(n)+"$");for(var r in
this)if(t=r.match(e)){var i=this[r];this.removeEventListener(t[1],i,i.$),delete
this[r]}}var
a="__on"+n,o=n.indexOf("."),c=z;o>0&&(n=n.substring(0,o));var
l=Ra.get(n);return l&&(n=l,c=D),o?t?i:r:t?f:u}function z(n,t){return
function(e){var
r=va.event;va.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{va.event=r}}}function
D(n,t){var e=z(n,t);return function(n){var t=
this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function
j(n){var
t="selectstart."+n,e="dragstart."+n,r="click."+n,i=va.select(xa).on(t,g).on(e,g),u=Ma.style,a=u[Ya];return
u[Ya]="none",function(n){function
o(){i.on(r,null)}i.on(t,null).on(e,null),u[Ya]=a,n&&(i.on(r,function(){g(),o()},!0),setTimeout(o,0))}}function
L(n,t){var e=n.ownerSVGElement||n;if(e.createSVGPoint){var
r=e.createSVGPoint();if(0>Ua&&(xa.scrollX||xa.scrollY)){e=va.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var
i=e[0][0].getScreenCTM();Ua=!(i.f||i.e),e.remove()}return
Ua?(r.x=t.pageX,r.y=t.pageY):(r.x=t.clientX,r.y=t.clientY),r=r.matrixTransform(n.getScreenCTM().inverse()),[r.x,r.y]}var
u=n.getBoundingClientRect();return[t.clientX-u.left-n.clientLeft,t.clientY-u.top-n.clientTop]}function
H(){}function F(n,t,e){return new P(n,t,e)}function
P(n,t,e){this.h=n,this.s=t,this.l=e}function O(n,t,e){function r(
n){return
n>360?n-=360:0>n&&(n+=360),60>n?u+(a-u)*n/60:180>n?a:240>n?u+(a-u)*(240-n)/60:u}function
i(n){return Math.round(255*r(n))}var u,a;return
n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,a=.5>=e?e*(1+t):e+t-e*t,u=2*e-a,et(i(n+120),i(n),i(n-120))}function
R(n){return n>0?1:0>n?-1:0}function Y(n){return
n>1?0:-1>n?Ba:Math.acos(n)}function U(n){return
n>1?Ba/2:-1>n?-Ba/2:Math.asin(n)}function
I(n){return(Math.exp(n)-Math.exp(-n))/2}function
V(n){return(Math.exp(n)+Math.exp(-n))/2}function X(n){return(n=Math.sin(n/2))*n}function
Z(n,t,e){return new B(n,t,e)}function B(n,t,e){this.h=n,this.c=t,this.l=e}function
$(n,t,e){return
isNaN(n)&&(n=0),isNaN(t)&&(t=0),W(e,Math.cos(n*=Ja)*t,Math.sin(n)*t)}function
W(n,t,e){return new J(n,t,e)}function J(n,t,e){this.l=n,this.a=t,this.b=e}function
G(n,t,e){var r=(n+16)/116,i=r+t/500,u=r-e/200;return
i=Q(i)*no,r=Q(r)*to,u=Q(u)*eo,et(tt(3.2404542*i-1.5371385*r-.4985314*u),tt(-.969266*i+1.8760108*r+.041556*u),t
t(.0556434*i-.2040259*r+1.0572252*u))}function K(n,t,e){return
n>0?Z(Math.atan2(e,t)*Ga,Math.sqrt(t*t+e*e),n):Z(0/0,0/0,n)}function Q(n){return
n>.206893034?n*n*n:(n-4/29)/7.787037}function nt(n){return
n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function tt(n){return
Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function
et(n,t,e){return new rt(n,t,e)}function rt(n,t,e){this.r=n,this.g=t,this.b=e}function
it(n){return
16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function
ut(n,t,e){var
r,i,u,a=0,o=0,c=0;if(r=/([a-z]+)\((.*)\)/i.exec(n))switch(i=r[2].split(","),r[1]){case"hsl":return
e(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case"rgb":return
t(lt(i[0]),lt(i[1]),lt(i[2]))}return(u=uo.get(n))?t(u.r,u.g,u.b):(null!=n&&"#"===n.charAt(0)&&(4===n.length?(a=n.charAt(1),a+=a,o=n.charAt(2),o+=o,c=n.charAt(3),c+=c):7===n.length&&(a=n.substring(1,3),o=n.substring(3,5),c=n.substring(5,7)),a=parseInt(a,16),o=parseInt(o,16),c=parseIn
t(c,16)),t(a,o,c))}function at(n,t,e){var
r,i,u=Math.min(n/=255,t/=255,e/=255),a=Math.max(n,t,e),o=a-u,c=(a+u)/2;return
o?(i=.5>c?o/(a+u):o/(2-a-u),r=n==a?(t-e)/o+(e>t?6:0):t==a?(e-n)/o+2:(n-t)/o+4,r*=60):(r=0/0,i=c>0&&1>c?0:r),F(r,i,c)}function
ot(n,t,e){n=ct(n),t=ct(t),e=ct(e);var
r=nt((.4124564*n+.3575761*t+.1804375*e)/no),i=nt((.2126729*n+.7151522*t+.072175*e)/to),u=nt((.0193339*n+.119192*t+.9503041*e)/eo);return
W(116*i-16,500*(r-i),200*(i-u))}function
ct(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function lt(n){var
t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function
ft(n){return"function"==typeof n?n:function(){return n}}function st(n){return
n}function ht(n){return function(t,e,r){return
2===arguments.length&&"function"==typeof
e&&(r=e,e=null),gt(t,e,n,r)}}function gt(n,t,e,r){function i(){var
n,t=c.status;if(!t&&c.responseText||t>=200&&300>t||304===t){try{n=e.call(u,c)}catch(r){return
a.error.call(u,r),void 0}a.load.call
(u,n)}else a.error.call(u,c)}var
u={},a=va.dispatch("progress","load","error"),o={},c=new
XMLHttpRequest,l=null;return!xa.XDomainRequest||"withCredentials"in
c||!/^(http(s)?:)?\/\//.test(n)||(c=new XDomainRequest),"onload"in
c?c.onload=c.onerror=i:c.onreadystatechange=function(){c.readyState>3&&i()},c.onprogress=function(n){var
t=va.event;va.event=n;try{a.progress.call(u,c)}finally{va.event=t}},u.header=function(n,t){return
n=(n+"").toLowerCase(),arguments.length<2?o[n]:(null==t?delete
o[n]:o[n]=t+"",u)},u.mimeType=function(n){return
arguments.length?(t=null==n?null:n+"",u):t},u.responseType=function(n){return
arguments.length?(l=n,u):l},u.response=function(n){return
e=n,u},["get","post"].forEach(function(n){u[n]=function(){return
u.send.apply(u,[n].concat(Na(arguments)))}}),u.send=function(e,r,i){if(2===arguments.length&&"function"==typeof
r&&(i=r,r=null),c.open(e,n,!0),null==t||"accept"in
o||(o.accept=t+",*/*"),c.setRequestHeader)for(var a in
o)c.setRequestHeader(a,o[a]);r
eturn
null!=t&&c.overrideMimeType&&c.overrideMimeType(t),null!=l&&(c.responseType=l),null!=i&&u.on("error",i).on("load",function(n){i(null,n)}),c.send(null==r?null:r),u},u.abort=function(){return
c.abort(),u},va.rebind(u,a,"on"),null==r?u:u.get(pt(r))}function pt(n){return
1===n.length?function(t,e){n(null==t?e:null)}:n}function dt(){var
n=mt(),t=vt()-n;t>24?(isFinite(t)&&(clearTimeout(lo),lo=setTimeout(dt,t)),co=0):(co=1,fo(dt))}function
mt(){for(var
n=Date.now(),t=ao;t;)n>=t.time&&(t.flush=t.callback(n-t.time)),t=t.next;return
n}function vt(){for(var
n,t=ao,e=1/0;t;)t.flush?t=n?n.next=t.next:ao=t.next:(t.time<e&&(e=t.time),t=(n=t).next);return
oo=n,e}function yt(n,t){var
e=Math.pow(10,3*Math.abs(8-t));return{scale:t>8?function(n){return
n/e}:function(n){return n*e},symbol:n}}function Mt(n,t){return
t-(n?Math.ceil(Math.log(n)/Math.LN10):1)}function xt(n){return n+""}function
bt(){}function _t(n,t,e){var r=e.s=n+t,i=r-n,u=r-i;e.t=n-u+(t-i)}function
wt(n,t){n&&_o.hasOwnProper
ty(n.type)&&_o[n.type](n,t)}function St(n,t,e){var
r,i=-1,u=n.length-e;for(t.lineStart();++i<u;)r=n[i],t.point(r[0],r[1]);t.lineEnd()}function
Et(n,t){var
e=-1,r=n.length;for(t.polygonStart();++e<r;)St(n[e],t,1);t.polygonEnd()}function
kt(){function n(n,t){n*=Ja,t=t*Ja/2+Ba/4;var
e=n-r,a=Math.cos(t),o=Math.sin(t),c=u*o,l=i*a+c*Math.cos(e),f=c*Math.sin(e);So.add(Math.atan2(f,l)),r=n,i=a,u=o}var
t,e,r,i,u;Eo.point=function(a,o){Eo.point=n,r=(t=a)*Ja,i=Math.cos(o=(e=o)*Ja/2+Ba/4),u=Math.sin(o)},Eo.lineEnd=function(){n(t,e)}}function
At(n){var
t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function
Nt(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function
qt(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function
Tt(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function
Ct(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function zt(n){var
t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function
Dt(n){return[Math.atan2(n[1],n[0]),U(
n[2])]}function jt(n,t){return
Math.abs(n[0]-t[0])<$a&&Math.abs(n[1]-t[1])<$a}function Lt(n,t){n*=Ja;var
e=Math.cos(t*=Ja);Ht(e*Math.cos(n),e*Math.sin(n),Math.sin(t))}function
Ht(n,t,e){++ko,No+=(n-No)/ko,qo+=(t-qo)/ko,To+=(e-To)/ko}function Ft(){function
n(n,i){n*=Ja;var
u=Math.cos(i*=Ja),a=u*Math.cos(n),o=u*Math.sin(n),c=Math.sin(i),l=Math.atan2(Math.sqrt((l=e*c-r*o)*l+(l=r*a-t*c)*l+(l=t*o-e*a)*l),t*a+e*o+r*c);Ao+=l,Co+=l*(t+(t=a)),zo+=l*(e+(e=o)),Do+=l*(r+(r=c)),Ht(t,e,r)}var
t,e,r;Fo.point=function(i,u){i*=Ja;var
a=Math.cos(u*=Ja);t=a*Math.cos(i),e=a*Math.sin(i),r=Math.sin(u),Fo.point=n,Ht(t,e,r)}}function
Pt(){Fo.point=Lt}function Ot(){function n(n,t){n*=Ja;var
e=Math.cos(t*=Ja),a=e*Math.cos(n),o=e*Math.sin(n),c=Math.sin(t),l=i*c-u*o,f=u*a-r*c,s=r*o-i*a,h=Math.sqrt(l*l+f*f+s*s),g=r*a+i*o+u*c,p=h&&-Y(g)/h,d=Math.atan2(h,g);jo+=p*l,Lo+=p*f,Ho+=p*s,Ao+=d,Co+=d*(r+(r=a)),zo+=d*(i+(i=o)),Do+=d*(u+(u=c)),Ht(r,i,u)}var
t,e,r,i,u;Fo.point=function(a,o){t=a,e=o,Fo.point=n,a*=Ja;
var
c=Math.cos(o*=Ja);r=c*Math.cos(a),i=c*Math.sin(a),u=Math.sin(o),Ht(r,i,u)},Fo.lineEnd=function(){n(t,e),Fo.lineEnd=Pt,Fo.point=Lt}}function
Rt(){return!0}function Yt(n,t,e,r,i){var
u=[],a=[];if(n.forEach(function(n){if(!((t=n.length-1)<=0)){var
t,e=n[0],r=n[t];if(jt(e,r)){i.lineStart();for(var
o=0;t>o;++o)i.point((e=n[o])[0],e[1]);return i.lineEnd(),void 0}var
c={point:e,points:n,other:null,visited:!1,entry:!0,subject:!0},l={point:e,points:[e],other:c,visited:!1,entry:!1,subject:!1};c.other=l,u.push(c),a.push(l),c={point:r,points:[r],other:null,visited:!1,entry:!1,subject:!0},l={point:r,points:[r],other:c,visited:!1,entry:!0,subject:!1},c.other=l,u.push(c),a.push(l)}}),a.sort(t),Ut(u),Ut(a),u.length){if(e)for(var
o=1,c=!e(a[0].point),l=a.length;l>o;++o)a[o].entry=c=!c;for(var
f,s,h,g=u[0];;){for(f=g;f.visited;)if((f=f.next)===g)return;s=f.points,i.lineStart();do{if(f.visited=f.other.visited=!0,f.entry){if(f.subject)for(var
o=0;o<s.length;o++)i.point((h=s[o])[0],h[1]);els
e r(f.point,f.next.point,1,i);f=f.next}else{if(f.subject){s=f.prev.points;for(var
o=s.length;--o>=0;)i.point((h=s[o])[0],h[1])}else
r(f.point,f.prev.point,-1,i);f=f.prev}f=f.other,s=f.points}while(!f.visited);i.lineEnd()}}}function
Ut(n){if(t=n.length){for(var
t,e,r=0,i=n[0];++r<t;)i.next=e=n[r],e.prev=i,i=e;i.next=e=n[0],e.prev=i}}function
It(n,t,e,r){return function(i){function u(t,e){n(t,e)&&i.point(t,e)}function
a(n,t){d.point(n,t)}function o(){m.point=a,d.lineStart()}function
c(){m.point=u,d.lineEnd()}function l(n,t){y.point(n,t),p.push([n,t])}function
f(){y.lineStart(),p=[]}function s(){l(p[0][0],p[0][1]),y.lineEnd();var
n,t=y.clean(),e=v.buffer(),r=e.length;if(p.pop(),g.push(p),p=null,r){if(1&t){n=e[0];var
u,r=n.length-1,a=-1;for(i.lineStart();++a<r;)i.point((u=n[a])[0],u[1]);return
i.lineEnd(),void
0}r>1&&2&t&&e.push(e.pop().concat(e.shift())),h.push(e.filter(Vt))}}var
h,g,p,d=t(i),m={point:u,lineStart:o,lineEnd:c,polygonStart:function(){m.point=l,m.lineStart=f,m.lin
eEnd=s,h=[],g=[],i.polygonStart()},polygonEnd:function(){m.point=u,m.lineStart=o,m.lineEnd=c,h=va.merge(h),h.length?Yt(h,Zt,null,e,i):r(g)&&(i.lineStart(),e(null,null,1,i),i.lineEnd()),i.polygonEnd(),h=g=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}},v=Xt(),y=t(v);return
m}}function Vt(n){return n.length>1}function Xt(){var
n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:f,buffer:function(){var
e=t;return
t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function
Zt(n,t){return((n=n.point)[0]<0?n[1]-Ba/2-$a:Ba/2-n[1])-((t=t.point)[0]<0?t[1]-Ba/2-$a:Ba/2-t[1])}function
Bt(n,t){var
e=n[0],r=n[1],i=[Math.sin(e),-Math.cos(e),0],u=0,a=!1,o=!1,c=0;So.reset();for(var
l=0,f=t.length;f>l;++l){var s=t[l],h=s.length;if(h){for(var
g=s[0],p=g[0],d=g[1]/2+Ba/4,m=Math.sin(d),v=Math.cos(d),y=1;;){y===h&&(y=0),n=s[y];var
M=n[0],x=n[1]/2+Ba/4,b=Math.sin(x),_=Math.co
s(x),w=M-p,S=Math.abs(w)>Ba,E=m*b;if(So.add(Math.atan2(E*Math.sin(w),v*_+E*Math.cos(w))),Math.abs(x)<$a&&(o=!0),u+=S?w+(w>=0?2:-2)*Ba:w,S^p>=e^M>=e){var
k=qt(At(g),At(n));zt(k);var A=qt(i,k);zt(A);var
N=(S^w>=0?-1:1)*U(A[2]);r>N&&(c+=S^w>=0?1:-1)}if(!y++)break;p=M,m=b,v=_,g=n}Math.abs(u)>$a&&(a=!0)}}return(!o&&!a&&0>So||-$a>u)^1&c}function
$t(n){var
t,e=0/0,r=0/0,i=0/0;return{lineStart:function(){n.lineStart(),t=1},point:function(u,a){var
o=u>0?Ba:-Ba,c=Math.abs(u-e);Math.abs(c-Ba)<$a?(n.point(e,r=(r+a)/2>0?Ba/2:-Ba/2),n.point(i,r),n.lineEnd(),n.lineStart(),n.point(o,r),n.point(u,r),t=0):i!==o&&c>=Ba&&(Math.abs(e-i)<$a&&(e-=i*$a),Math.abs(u-o)<$a&&(u-=o*$a),r=Wt(e,r,u,a),n.point(i,r),n.lineEnd(),n.lineStart(),n.point(o,r),t=0),n.point(e=u,r=a),i=o},lineEnd:function(){n.lineEnd(),e=r=0/0},clean:function(){return
2-t}}}function Wt(n,t,e,r){var i,u,a=Math.sin(n-e);return
Math.abs(a)>$a?Math.atan((Math.sin(t)*(u=Math.cos(r))*Math.sin(e)-Math.sin(r)*(i=Math.cos(t))*Math.sin(n))/(
i*u*a)):(t+r)/2}function Jt(n,t,e,r){var
i;if(null==n)i=e*Ba/2,r.point(-Ba,i),r.point(0,i),r.point(Ba,i),r.point(Ba,0),r.point(Ba,-i),r.point(0,-i),r.point(-Ba,-i),r.point(-Ba,0),r.point(-Ba,i);else
if(Math.abs(n[0]-t[0])>$a){var
u=(n[0]<t[0]?1:-1)*Ba;i=e*u/2,r.point(-u,i),r.point(0,i),r.point(u,i)}else
r.point(t[0],t[1])}function Gt(n){return Bt(Oo,n)}function Kt(n){function t(n,t){return
Math.cos(n)*Math.cos(t)>a}function e(n){var
e,u,a,c,f;return{lineStart:function(){c=a=!1,f=1},point:function(s,h){var
g,p=[s,h],d=t(s,h),m=o?d?0:i(s,h):d?i(s+(0>s?Ba:-Ba),h):0;if(!e&&(c=a=d)&&n.lineStart(),d!==a&&(g=r(e,p),(jt(e,g)||jt(p,g))&&(p[0]+=$a,p[1]+=$a,d=t(p[0],p[1]))),d!==a)f=0,d?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else
if(l&&e&&o^d){var
v;m&u||!(v=r(p,e,!0))||(f=0,o?(n.lineStart(),n.point(v[0][0],v[0][1]),n.point(v[1][0],v[1][1]),n.lineEnd()):(n.point(v[1][0],v[1][1]),n.lineEnd(),n.lineStart(),n.point(v[0][0],v[0][1])))}!d||e
&&jt(e,p)||n.point(p[0],p[1]),e=p,a=d,u=m},lineEnd:function(){a&&n.lineEnd(),e=null},clean:function(){return
f|(c&&a)<<1}}}function r(n,t,e){var
r=At(n),i=At(t),u=[1,0,0],o=qt(r,i),c=Nt(o,o),l=o[0],f=c-l*l;if(!f)return!e&&n;var
s=a*c/f,h=-a*l/f,g=qt(u,o),p=Ct(u,s),d=Ct(o,h);Tt(p,d);var
m=g,v=Nt(p,m),y=Nt(m,m),M=v*v-y*(Nt(p,p)-1);if(!(0>M)){var
x=Math.sqrt(M),b=Ct(m,(-v-x)/y);if(Tt(b,p),b=Dt(b),!e)return b;var
_,w=n[0],S=t[0],E=n[1],k=t[1];w>S&&(_=w,w=S,S=_);var
A=S-w,N=Math.abs(A-Ba)<$a,q=N||$a>A;if(!N&&E>k&&(_=E,E=k,k=_),q?N?E+k>0^b[1]<(Math.abs(b[0]-w)<$a?E:k):E<=b[1]&&b[1]<=k:A>Ba^(w<=b[0]&&b[0]<=S)){var
T=Ct(m,(-v+x)/y);return Tt(T,p),[b,Dt(T)]}}}function i(t,e){var
r=o?n:Ba-n,i=0;return-r>t?i|=1:t>r&&(i|=2),-r>e?i|=4:e>r&&(i|=8),i}function
u(n){return Bt(c,n)}var
a=Math.cos(n),o=a>0,c=[n,0],l=Math.abs(a)>$a,f=we(n,6*Ja);return
It(t,e,f,u)}function Qt(n,t,e,r){function i(r,i){return
Math.abs(r[0]-n)<$a?i>0?0:3:Math.abs(r[0]-e)<$a?i>0?2:1:Math.abs(r[1]-t)<$a?i>0?1:0:i>0?3
:2}function u(n,t){return a(n.point,t.point)}function a(n,t){var e=i(n,1),r=i(t,1);return
e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}function o(i,u){var
a=u[0]-i[0],o=u[1]-i[1],c=[0,1];return
Math.abs(a)<$a&&Math.abs(o)<$a?n<=i[0]&&i[0]<=e&&t<=i[1]&&i[1]<=r:ne(n-i[0],a,c)&&ne(i[0]-e,-a,c)&&ne(t-i[1],o,c)&&ne(i[1]-r,-o,c)?(c[1]<1&&(u[0]=i[0]+c[1]*a,u[1]=i[1]+c[1]*o),c[0]>0&&(i[0]+=c[0]*a,i[1]+=c[0]*o),!0):!1}return
function(c){function l(u){var a=i(u,-1),o=f([0===a||3===a?n:e,a>1?r:t]);return
o}function f(n){for(var t=0,e=M.length,r=n[1],i=0;e>i;++i)for(var
u,a=1,o=M[i],c=o.length,l=o[0];c>a;++a)u=o[a],l[1]<=r?u[1]>r&&s(l,u,n)>0&&++t:u[1]<=r&&s(l,u,n)<0&&--t,l=u;return
0!==t}function s(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(e[0]-n[0])*(t[1]-n[1])}function
h(u,o,c,l){var f=0,s=0;if(null==u||(f=i(u,c))!==(s=i(o,c))||a(u,o)<0^c>0){do
l.point(0===f||3===f?n:e,f>1?r:t);while((f=(f+c+4)%4)!==s)}else
l.point(o[0],o[1])}function g(i,u){return i>=n&&e>=i&&u>=t&
&r>=u}function p(n,t){g(n,t)&&c.point(n,t)}function
d(){T.point=v,M&&M.push(x=[]),A=!0,k=!1,S=E=0/0}function
m(){y&&(v(b,_),w&&k&&q.rejoin(),y.push(q.buffer())),T.point=p,k&&c.lineEnd()}function
v(n,t){n=Math.max(-Ro,Math.min(Ro,n)),t=Math.max(-Ro,Math.min(Ro,t));var
e=g(n,t);if(M&&x.push([n,t]),A)b=n,_=t,w=e,A=!1,e&&(c.lineStart(),c.point(n,t));else
if(e&&k)c.point(n,t);else{var
r=[S,E],i=[n,t];o(r,i)?(k||(c.lineStart(),c.point(r[0],r[1])),c.point(i[0],i[1]),e||c.lineEnd()):e&&(c.lineStart(),c.point(n,t))}S=n,E=t,k=e}var
y,M,x,b,_,w,S,E,k,A,N=c,q=Xt(),T={point:p,lineStart:d,lineEnd:m,polygonStart:function(){c=q,y=[],M=[]},polygonEnd:function(){c=N,(y=va.merge(y)).length?(c.polygonStart(),Yt(y,u,l,h,c),c.polygonEnd()):f([n,t])&&(c.polygonStart(),c.lineStart(),h(null,null,1,c),c.lineEnd(),c.polygonEnd()),y=M=x=null}};return
T}}function ne(n,t,e){if(Math.abs(t)<$a)return 0>=n;var
r=n/t;if(t>0){if(r>e[1])return!1;r>e[0]&&(e[0]=r)}else{if(r<e[0])return!1;r<e[1]&&(e[1]=r)}return!
0}function te(n,t){function e(e,r){return e=n(e,r),t(e[0],e[1])}return
n.invert&&t.invert&&(e.invert=function(e,r){return
e=t.invert(e,r),e&&n.invert(e[0],e[1])}),e}function ee(n){var
t=0,e=Ba/3,r=me(n),i=r(t,e);return i.parallels=function(n){return
arguments.length?r(t=n[0]*Ba/180,e=n[1]*Ba/180):[180*(t/Ba),180*(e/Ba)]},i}function
re(n,t){function e(n,t){var
e=Math.sqrt(u-2*i*Math.sin(t))/i;return[e*Math.sin(n*=i),a-e*Math.cos(n)]}var
r=Math.sin(n),i=(r+Math.sin(t))/2,u=1+r*(2*i-r),a=Math.sqrt(u)/i;return
e.invert=function(n,t){var
e=a-t;return[Math.atan2(n,e)/i,U((u-(n*n+e*e)*i*i)/(2*i))]},e}function ie(){function
n(n,t){Uo+=i*n-r*t,r=n,i=t}var
t,e,r,i;Bo.point=function(u,a){Bo.point=n,t=r=u,e=i=a},Bo.lineEnd=function(){n(t,e)}}function
ue(n,t){Io>n&&(Io=n),n>Xo&&(Xo=n),Vo>t&&(Vo=t),t>Zo&&(Zo=t)}function
ae(){function n(n,t){a.push("M",n,",",t,u)}function
t(n,t){a.push("M",n,",",t),o.point=e}function
e(n,t){a.push("L",n,",",t)}function r(){o.point=n}function
i(){a.push("Z"
)}var
u=oe(4.5),a=[],o={point:n,lineStart:function(){o.point=t},lineEnd:r,polygonStart:function(){o.lineEnd=i},polygonEnd:function(){o.lineEnd=r,o.point=n},pointRadius:function(n){return
u=oe(n),o},result:function(){if(a.length){var n=a.join("");return
a=[],n}}};return o}function
oe(n){return"m0,"+n+"a"+n+","+n+" 0 1,1
0,"+-2*n+"a"+n+","+n+" 0 1,1
0,"+2*n+"z"}function ce(n,t){No+=n,qo+=t,++To}function le(){function
n(n,r){var
i=n-t,u=r-e,a=Math.sqrt(i*i+u*u);Co+=a*(t+n)/2,zo+=a*(e+r)/2,Do+=a,ce(t=n,e=r)}var
t,e;Wo.point=function(r,i){Wo.point=n,ce(t=r,e=i)}}function fe(){Wo.point=ce}function
se(){function n(n,t){var
e=n-r,u=t-i,a=Math.sqrt(e*e+u*u);Co+=a*(r+n)/2,zo+=a*(i+t)/2,Do+=a,a=i*n-r*t,jo+=a*(r+n),Lo+=a*(i+t),Ho+=3*a,ce(r=n,i=t)}var
t,e,r,i;Wo.point=function(u,a){Wo.point=n,ce(t=r=u,e=i=a)},Wo.lineEnd=function(){n(t,e)}}function
he(n){function t(t,e){n.moveTo(t,e),n.arc(t,e,a,0,2*Ba)}function
e(t,e){n.moveTo(t,e),o.point=r}function r(t,e){n.lineTo(t,e)}function i(){o.p
oint=t}function u(){n.closePath()}var
a=4.5,o={point:t,lineStart:function(){o.point=e},lineEnd:i,polygonStart:function(){o.lineEnd=u},polygonEnd:function(){o.lineEnd=i,o.point=t},pointRadius:function(n){return
a=n,o},result:f};return o}function ge(n){function t(t){function
r(e,r){e=n(e,r),t.point(e[0],e[1])}function i(){M=0/0,S.point=a,t.lineStart()}function
a(r,i){var
a=At([r,i]),o=n(r,i);e(M,x,y,b,_,w,M=o[0],x=o[1],y=r,b=a[0],_=a[1],w=a[2],u,t),t.point(M,x)}function
o(){S.point=r,t.lineEnd()}function c(){i(),S.point=l,S.lineEnd=f}function
l(n,t){a(s=n,h=t),g=M,p=x,d=b,m=_,v=w,S.point=a}function
f(){e(M,x,y,b,_,w,g,p,s,d,m,v,u,t),S.lineEnd=o,o()}var
s,h,g,p,d,m,v,y,M,x,b,_,w,S={point:r,lineStart:i,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=c},polygonEnd:function(){t.polygonEnd(),S.lineStart=i}};return
S}function e(t,u,a,o,c,l,f,s,h,g,p,d,m,v){var
y=f-t,M=s-u,x=y*y+M*M;if(x>4*r&&m--){var
b=o+g,_=c+p,w=l+d,S=Math.sqrt(b*b+_*_+w*w),E=Math.asin(w/=S),k=Math.
abs(Math.abs(w)-1)<$a?(a+h)/2:Math.atan2(_,b),A=n(k,E),N=A[0],q=A[1],T=N-t,C=q-u,z=M*T-y*C;(z*z/x>r||Math.abs((y*T+M*C)/x-.5)>.3||i>o*g+c*p+l*d)&&(e(t,u,a,o,c,l,N,q,k,b/=S,_/=S,w,m,v),v.point(N,q),e(N,q,k,b,_,w,f,s,h,g,p,d,m,v))}}var
r=.5,i=Math.cos(30*Ja),u=16;return t.precision=function(n){return
arguments.length?(u=(r=n*n)>0&&16,t):Math.sqrt(r)},t}function pe(n){var
t=ge(function(t,e){return n([t*Ga,e*Ga])});return function(n){return
n=t(n),{point:function(t,e){n.point(t*Ja,e*Ja)},sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}}function
de(n){return me(function(){return n})()}function me(n){function t(n){return
n=o(n[0]*Ja,n[1]*Ja),[n[0]*h+c,l-n[1]*h]}function e(n){return
n=o.invert((n[0]-c)/h,(l-n[1])/h),n&&[n[0]*Ga,n[1]*Ga]}function
r(){o=te(a=Me(v,y,M),u);var n=u(d,m);return c=g-n[0]*h,l=p+n[1]*h,i()}function i(){return
f&&(f.valid=!1,f=nu
ll),t}var u,a,o,c,l,f,s=ge(function(n,t){return
n=u(n,t),[n[0]*h+c,l-n[1]*h]}),h=150,g=480,p=250,d=0,m=0,v=0,y=0,M=0,x=Po,b=st,_=null,w=null;return
t.stream=function(n){return
f&&(f.valid=!1),f=ve(a,x(s(b(n)))),f.valid=!0,f},t.clipAngle=function(n){return
arguments.length?(x=null==n?(_=n,Po):Kt((_=+n)*Ja),i()):_},t.clipExtent=function(n){return
arguments.length?(w=n,b=null==n?st:Qt(n[0][0],n[0][1],n[1][0],n[1][1]),i()):w},t.scale=function(n){return
arguments.length?(h=+n,r()):h},t.translate=function(n){return
arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return
arguments.length?(d=n[0]%360*Ja,m=n[1]%360*Ja,r()):[d*Ga,m*Ga]},t.rotate=function(n){return
arguments.length?(v=n[0]%360*Ja,y=n[1]%360*Ja,M=n.length>2?n[2]%360*Ja:0,r()):[v*Ga,y*Ga,M*Ga]},va.rebind(t,s,"precision"),function(){return
u=n.apply(this,arguments),t.invert=u.invert&&e,r()}}function
ve(n,t){return{point:function(e,r){r=n(e*Ja,r*Ja),e=r[0],t.point(e>Ba?e-2*Ba:-Ba>e?e+2*Ba:e,r[1])},sphere:
function(){t.sphere()},lineStart:function(){t.lineStart()},lineEnd:function(){t.lineEnd()},polygonStart:function(){t.polygonStart()},polygonEnd:function(){t.polygonEnd()}}}function
ye(n,t){return[n,t]}function Me(n,t,e){return
n?t||e?te(be(n),_e(t,e)):be(n):t||e?_e(t,e):ye}function xe(n){return function(t,e){return
t+=n,[t>Ba?t-2*Ba:-Ba>t?t+2*Ba:t,e]}}function be(n){var t=xe(n);return
t.invert=xe(-n),t}function _e(n,t){function e(n,t){var
e=Math.cos(t),o=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),f=l*r+o*i;return[Math.atan2(c*u-f*a,o*r-l*i),U(f*u+c*a)]}var
r=Math.cos(n),i=Math.sin(n),u=Math.cos(t),a=Math.sin(t);return e.invert=function(n,t){var
e=Math.cos(t),o=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),f=l*u-c*a;return[Math.atan2(c*u+l*a,o*r+f*i),U(f*r-o*i)]},e}function
we(n,t){var e=Math.cos(n),r=Math.sin(n);return
function(i,u,a,o){null!=i?(i=Se(e,i),u=Se(e,u),(a>0?u>i:i>u)&&(i+=2*a*Ba)):(i=n+2*a*Ba,u=n);for(var
c,l=a*t,f=i;a>0?f>u:u>f;f-=l)o.point((c=Dt([e,-r*Math.cos(f
),-r*Math.sin(f)]))[0],c[1])}}function Se(n,t){var e=At(t);e[0]-=n,zt(e);var
r=Y(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-$a)%(2*Math.PI)}function Ee(n,t,e){var
r=va.range(n,t-$a,e).concat(t);return function(n){return
r.map(function(t){return[n,t]})}}function ke(n,t,e){var
r=va.range(n,t-$a,e).concat(t);return function(n){return
r.map(function(t){return[t,n]})}}function Ae(n){return n.source}function Ne(n){return
n.target}function qe(n,t,e,r){var
i=Math.cos(t),u=Math.sin(t),a=Math.cos(r),o=Math.sin(r),c=i*Math.cos(n),l=i*Math.sin(n),f=a*Math.cos(e),s=a*Math.sin(e),h=2*Math.asin(Math.sqrt(X(r-t)+i*a*X(e-n))),g=1/Math.sin(h),p=h?function(n){var
t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*c+t*f,i=e*l+t*s,a=e*u+t*o;return[Math.atan2(i,r)*Ga,Math.atan2(a,Math.sqrt(r*r+i*i))*Ga]}:function(){return[n*Ga,t*Ga]};return
p.distance=h,p}function Te(){function n(n,i){var
u=Math.sin(i*=Ja),a=Math.cos(i),o=Math.abs((n*=Ja)-t),c=Math.cos(o);Jo+=Math.atan2(Math.sqrt((o=a*Math.sin(o))*o+(o=r*u-e*a
*c)*o),e*u+r*a*c),t=n,e=u,r=a}var
t,e,r;Go.point=function(i,u){t=i*Ja,e=Math.sin(u*=Ja),r=Math.cos(u),Go.point=n},Go.lineEnd=function(){Go.point=Go.lineEnd=f}}function
Ce(n,t){function e(t,e){var
r=Math.cos(t),i=Math.cos(e),u=n(r*i);return[u*i*Math.sin(t),u*Math.sin(e)]}return
e.invert=function(n,e){var
r=Math.sqrt(n*n+e*e),i=t(r),u=Math.sin(i),a=Math.cos(i);return[Math.atan2(n*u,r*a),Math.asin(r&&e*u/r)]},e}function
ze(n,t){function e(n,t){var
e=Math.abs(Math.abs(t)-Ba/2)<$a?0:a/Math.pow(i(t),u);return[e*Math.sin(u*n),a-e*Math.cos(u*n)]}var
r=Math.cos(n),i=function(n){return
Math.tan(Ba/4+n/2)},u=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(i(t)/i(n)),a=r*Math.pow(i(n),u)/u;return
u?(e.invert=function(n,t){var
e=a-t,r=R(u)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/u,2*Math.atan(Math.pow(a/r,1/u))-Ba/2]},e):je}function
De(n,t){function e(n,t){var e=u-t;return[e*Math.sin(i*n),u-e*Math.cos(i*n)]}var
r=Math.cos(n),i=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),u=r/i+n;return M
ath.abs(i)<$a?ye:(e.invert=function(n,t){var
e=u-t;return[Math.atan2(n,e)/i,u-R(i)*Math.sqrt(n*n+e*e)]},e)}function
je(n,t){return[n,Math.log(Math.tan(Ba/4+t/2))]}function Le(n){var
t,e=de(n),r=e.scale,i=e.translate,u=e.clipExtent;return e.scale=function(){var
n=r.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.translate=function(){var
n=i.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.clipExtent=function(n){var
a=u.apply(e,arguments);if(a===e){if(t=null==n){var
o=Ba*r(),c=i();u([[c[0]-o,c[1]-o],[c[0]+o,c[1]+o]])}}else t&&(a=null);return
a},e.clipExtent(null)}function He(n,t){var
e=Math.cos(t)*Math.sin(n);return[Math.log((1+e)/(1-e))/2,Math.atan2(Math.tan(t),Math.cos(n))]}function
Fe(n){function t(t){function a(){l.push("M",u(n(f),o))}for(var
c,l=[],f=[],s=-1,h=t.length,g=ft(e),p=ft(r);++s<h;)i.call(this,c=t[s],s)?f.push([+g.call(this,c,s),+p.call(this,c,s)]):f.length&&(a(),f=[]);return
f.length&&a(),l.length?l.join(""):null}var e=Pe,r=Oe,i=Rt,u=Re,a
=u.key,o=.7;return t.x=function(n){return
arguments.length?(e=n,t):e},t.y=function(n){return
arguments.length?(r=n,t):r},t.defined=function(n){return
arguments.length?(i=n,t):i},t.interpolate=function(n){return
arguments.length?(a="function"==typeof
n?u=n:(u=rc.get(n)||Re).key,t):a},t.tension=function(n){return
arguments.length?(o=n,t):o},t}function Pe(n){return n[0]}function Oe(n){return
n[1]}function Re(n){return n.join("L")}function Ye(n){return
Re(n)+"Z"}function Ue(n){for(var
t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t<e;)i.push("H",(r[0]+(r=n[t])[0])/2,"V",r[1]);return
e>1&&i.push("H",r[0]),i.join("")}function Ie(n){for(var
t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t<e;)i.push("V",(r=n[t])[1],"H",r[0]);return
i.join("")}function Ve(n){for(var
t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t<e;)i.push("H",(r=n[t])[0],"V",r[1]);return
i.join("")}function Xe(n,t){return
n.length<4?Re(n):n[1]+$e(n.slice(1,n.length-1),We(n,t))}function Ze(n,t){return
n.length<3?Re(n):n[0]+$e((n.
push(n[0]),n),We([n[n.length-2]].concat(n,[n[1]]),t))}function Be(n,t){return
n.length<3?Re(n):n[0]+$e(n,We(n,t))}function
$e(n,t){if(t.length<1||n.length!=t.length&&n.length!=t.length+2)return
Re(n);var
e=n.length!=t.length,r="",i=n[0],u=n[1],a=t[0],o=a,c=1;if(e&&(r+="Q"+(u[0]-2*a[0]/3)+","+(u[1]-2*a[1]/3)+","+u[0]+","+u[1],i=n[1],c=2),t.length>1){o=t[1],u=n[c],c++,r+="C"+(i[0]+a[0])+","+(i[1]+a[1])+","+(u[0]-o[0])+","+(u[1]-o[1])+","+u[0]+","+u[1];for(var
l=2;l<t.length;l++,c++)u=n[c],o=t[l],r+="S"+(u[0]-o[0])+","+(u[1]-o[1])+","+u[0]+","+u[1]}if(e){var
f=n[c];r+="Q"+(u[0]+2*o[0]/3)+","+(u[1]+2*o[1]/3)+","+f[0]+","+f[1]}return
r}function We(n,t){for(var
e,r=[],i=(1-t)/2,u=n[0],a=n[1],o=1,c=n.length;++o<c;)e=u,u=a,a=n[o],r.push([i*(a[0]-e[0]),i*(a[1]-e[1])]);return
r}function Je(n){if(n.length<3)return Re(n);var
t=1,e=n.length,r=n[0],i=r[0],u=r[1],a=[i,i,i,(r=n[1])[0]],o=[u,u,u,r[1]],c=[i,",",u];for(tr(c,a,o);++t<e;)r=n[t],a.shift(),a.push(r[0]),o.shift(),o.push(r[1]),tr(c,
a,o);for(t=-1;++t<2;)a.shift(),a.push(r[0]),o.shift(),o.push(r[1]),tr(c,a,o);return
c.join("")}function Ge(n){if(n.length<4)return Re(n);for(var
t,e=[],r=-1,i=n.length,u=[0],a=[0];++r<3;)t=n[r],u.push(t[0]),a.push(t[1]);for(e.push(nr(ac,u)+","+nr(ac,a)),--r;++r<i;)t=n[r],u.shift(),u.push(t[0]),a.shift(),a.push(t[1]),tr(e,u,a);return
e.join("")}function Ke(n){for(var
t,e,r=-1,i=n.length,u=i+4,a=[],o=[];++r<4;)e=n[r%i],a.push(e[0]),o.push(e[1]);for(t=[nr(ac,a),",",nr(ac,o)],--r;++r<u;)e=n[r%i],a.shift(),a.push(e[0]),o.shift(),o.push(e[1]),tr(t,a,o);return
t.join("")}function Qe(n,t){var e=n.length-1;if(e)for(var
r,i,u=n[0][0],a=n[0][1],o=n[e][0]-u,c=n[e][1]-a,l=-1;++l<=e;)r=n[l],i=l/e,r[0]=t*r[0]+(1-t)*(u+i*o),r[1]=t*r[1]+(1-t)*(a+i*c);return
Je(n)}function nr(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function
tr(n,t,e){n.push("C",nr(ic,t),",",nr(ic,e),",",nr(uc,t),",",nr(uc,e),",",nr(ac,t),",",nr(ac,e))}function
er(n,t){return(t[1]-n[1])/(t[0]-n[0])}function rr(n){f
or(var
t=0,e=n.length-1,r=[],i=n[0],u=n[1],a=r[0]=er(i,u);++t<e;)r[t]=(a+(a=er(i=u,u=n[t+1])))/2;return
r[t]=a,r}function ir(n){for(var
t,e,r,i,u=[],a=rr(n),o=-1,c=n.length-1;++o<c;)t=er(n[o],n[o+1]),Math.abs(t)<1e-6?a[o]=a[o+1]=0:(e=a[o]/t,r=a[o+1]/t,i=e*e+r*r,i>9&&(i=3*t/Math.sqrt(i),a[o]=i*e,a[o+1]=i*r));for(o=-1;++o<=c;)i=(n[Math.min(c,o+1)][0]-n[Math.max(0,o-1)][0])/(6*(1+a[o]*a[o])),u.push([i||0,a[o]*i||0]);
+return u}function ur(n){return n.length<3?Re(n):n[0]+$e(n,ir(n))}function
ar(n,t,e,r){var i,u,a,o,c,l,f;return
i=r[n],u=i[0],a=i[1],i=r[t],o=i[0],c=i[1],i=r[e],l=i[0],f=i[1],(f-a)*(o-u)-(c-a)*(l-u)>0}function
or(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function
cr(n,t,e,r){var
i=n[0],u=e[0],a=t[0]-i,o=r[0]-u,c=n[1],l=e[1],f=t[1]-c,s=r[1]-l,h=(o*(c-l)-s*(i-u))/(s*a-o*f);return[i+h*a,c+h*f]}function
lr(n,t){var
e={list:n.map(function(n,t){return{index:t,x:n[0],y:n[1]}}).sort(function(n,t){return
n.y<t.y?-1:n.y>t.y?1:n.x<t.x?-1:n.x>t.x?1:0}),bottomSite:null},r={list:[],leftEnd:null,rightEnd:null,init:function(){r.leftEnd=r.createHalfEdge(null,"l"),r.rightEnd=r.createHalfEdge(null,"l"),r.leftEnd.r=r.rightEnd,r.rightEnd.l=r.leftEnd,r.list.unshift(r.leftEnd,r.rightEnd)},createHalfEdge:function(n,t){return{edge:n,side:t,vertex:null,l:null,r:null}},insert:function(n,t){t.l=n,t.r=n.r,n.r.l=t,n.r=t},leftBound:function(n){var
t=r.leftEnd;do t=t.r;while(t!=r.rightEnd
&&i.rightOf(t,n));return
t=t.l},del:function(n){n.l.r=n.r,n.r.l=n.l,n.edge=null},right:function(n){return
n.r},left:function(n){return n.l},leftRegion:function(n){return
null==n.edge?e.bottomSite:n.edge.region[n.side]},rightRegion:function(n){return
null==n.edge?e.bottomSite:n.edge.region[oc[n.side]]}},i={bisect:function(n,t){var
e={region:{l:n,r:t},ep:{l:null,r:null}},r=t.x-n.x,i=t.y-n.y,u=r>0?r:-r,a=i>0?i:-i;return
e.c=n.x*r+n.y*i+.5*(r*r+i*i),u>a?(e.a=1,e.b=i/r,e.c/=r):(e.b=1,e.a=r/i,e.c/=i),e},intersect:function(n,t){var
e=n.edge,r=t.edge;if(!e||!r||e.region.r==r.region.r)return null;var
i=e.a*r.b-e.b*r.a;if(Math.abs(i)<1e-10)return null;var
u,a,o=(e.c*r.b-r.c*e.b)/i,c=(r.c*e.a-e.c*r.a)/i,l=e.region.r,f=r.region.r;l.y<f.y||l.y==f.y&&l.x<f.x?(u=n,a=e):(u=t,a=r);var
s=o>=a.region.r.x;return
s&&"l"===u.side||!s&&"r"===u.side?null:{x:o,y:c}},rightOf:function(n,t){var
e=n.edge,r=e.region.r,i=t.x>r.x;if(i&&"l"===n.side)return
1;if(!i&&"r"===n.side)return 0;if(1===e.a){var u=t.
y-r.y,a=t.x-r.x,o=0,c=0;if(!i&&e.b<0||i&&e.b>=0?c=o=u>=e.b*a:(c=t.x+t.y*e.b>e.c,e.b<0&&(c=!c),c||(o=1)),!o){var
l=r.x-e.region.l.x;c=e.b*(a*a-u*u)<l*u*(1+2*a/l+e.b*e.b),e.b<0&&(c=!c)}}else{var
f=e.c-e.a*t.x,s=t.y-f,h=t.x-r.x,g=f-r.y;c=s*s>h*h+g*g}return"l"===n.side?c:!c},endPoint:function(n,e,r){n.ep[e]=r,n.ep[oc[e]]&&t(n)},distance:function(n,t){var
e=n.x-t.x,r=n.y-t.y;return
Math.sqrt(e*e+r*r)}},u={list:[],insert:function(n,t,e){n.vertex=t,n.ystar=t.y+e;for(var
r=0,i=u.list,a=i.length;a>r;r++){var
o=i[r];if(!(n.ystar>o.ystar||n.ystar==o.ystar&&t.x>o.vertex.x))break}i.splice(r,0,n)},del:function(n){for(var
t=0,e=u.list,r=e.length;r>t&&e[t]!=n;++t);e.splice(t,1)},empty:function(){return
0===u.list.length},nextEvent:function(n){for(var
t=0,e=u.list,r=e.length;r>t;++t)if(e[t]==n)return e[t+1];return
null},min:function(){var
n=u.list[0];return{x:n.vertex.x,y:n.ystar}},extractMin:function(){return
u.list.shift()}};r.init(),e.bottomSite=e.list.shift();for(var a,o,c,l,f,s,h,g,p,d,
m,v,y,M=e.list.shift();;)if(u.empty()||(a=u.min()),M&&(u.empty()||M.y<a.y||M.y==a.y&&M.x<a.x))o=r.leftBound(M),c=r.right(o),h=r.rightRegion(o),v=i.bisect(h,M),s=r.createHalfEdge(v,"l"),r.insert(o,s),d=i.intersect(o,s),d&&(u.del(o),u.insert(o,d,i.distance(d,M))),o=s,s=r.createHalfEdge(v,"r"),r.insert(o,s),d=i.intersect(s,c),d&&u.insert(s,d,i.distance(d,M)),M=e.list.shift();else{if(u.empty())break;o=u.extractMin(),l=r.left(o),c=r.right(o),f=r.right(c),h=r.leftRegion(o),g=r.rightRegion(c),m=o.vertex,i.endPoint(o.edge,o.side,m),i.endPoint(c.edge,c.side,m),r.del(o),u.del(c),r.del(c),y="l",h.y>g.y&&(p=h,h=g,g=p,y="r"),v=i.bisect(h,g),s=r.createHalfEdge(v,y),r.insert(l,s),i.endPoint(v,oc[y],m),d=i.intersect(l,s),d&&(u.del(l),u.insert(l,d,i.distance(d,h))),d=i.intersect(s,f),d&&u.insert(s,d,i.distance(d,h))}for(o=r.right(r.leftEnd);o!=r.rightEnd;o=r.right(o))t(o.edge)}function
fr(n){return n.x}function sr(n){return n.y}function
hr(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}
function gr(n,t,e,r,i,u){if(!n(t,e,r,i,u)){var
a=.5*(e+i),o=.5*(r+u),c=t.nodes;c[0]&&gr(n,c[0],e,r,a,o),c[1]&&gr(n,c[1],a,r,i,o),c[2]&&gr(n,c[2],e,o,a,u),c[3]&&gr(n,c[3],a,o,i,u)}}function
pr(n,t){n=va.rgb(n),t=va.rgb(t);var e=n.r,r=n.g,i=n.b,u=t.r-e,a=t.g-r,o=t.b-i;return
function(n){return"#"+it(Math.round(e+u*n))+it(Math.round(r+a*n))+it(Math.round(i+o*n))}}function
dr(n){var
t=[n.a,n.b],e=[n.c,n.d],r=vr(t),i=mr(t,e),u=vr(yr(e,t,-i))||0;t[0]*e[1]<e[0]*t[1]&&(t[0]*=-1,t[1]*=-1,r*=-1,i*=-1),this.rotate=(r?Math.atan2(t[1],t[0]):Math.atan2(-e[0],e[1]))*Ga,this.translate=[n.e,n.f],this.scale=[r,u],this.skew=u?Math.atan2(i,u)*Ga:0}function
mr(n,t){return n[0]*t[0]+n[1]*t[1]}function vr(n){var t=Math.sqrt(mr(n,n));return
t&&(n[0]/=t,n[1]/=t),t}function yr(n,t,e){return
n[0]+=e*t[0],n[1]+=e*t[1],n}function Mr(n,t){return t-=n=+n,function(e){return
n+t*e}}function xr(n,t){var
e,r=[],i=[],u=va.transform(n),a=va.transform(t),o=u.translate,c=a.translate,l=u.rotate,f=a.rotate,s=u.skew
,h=a.skew,g=u.scale,p=a.scale;return
o[0]!=c[0]||o[1]!=c[1]?(r.push("translate(",null,",",null,")"),i.push({i:1,x:Mr(o[0],c[0])},{i:3,x:Mr(o[1],c[1])})):c[0]||c[1]?r.push("translate("+c+")"):r.push(""),l!=f?(l-f>180?f+=360:f-l>180&&(l+=360),i.push({i:r.push(r.pop()+"rotate(",null,")")-2,x:Mr(l,f)})):f&&r.push(r.pop()+"rotate("+f+")"),s!=h?i.push({i:r.push(r.pop()+"skewX(",null,")")-2,x:Mr(s,h)}):h&&r.push(r.pop()+"skewX("+h+")"),g[0]!=p[0]||g[1]!=p[1]?(e=r.push(r.pop()+"scale(",null,",",null,")"),i.push({i:e-4,x:Mr(g[0],p[0])},{i:e-2,x:Mr(g[1],p[1])})):(1!=p[0]||1!=p[1])&&r.push(r.pop()+"scale("+p+")"),e=i.length,function(n){for(var
t,u=-1;++u<e;)r[(t=i[u]).i]=t.x(n);return r.join("")}}function br(n,t){var
e,r={},i={};for(e in n)e in t?r[e]=Sr(e)(n[e],t[e]):i[e]=n[e];for(e in t)e in
n||(i[e]=t[e]);return function(n){for(e in r)i[e]=r[e](n);return i}}function _r(n,t){var
e,r,i,u,a,o=0,c=0,l=[],f=[];for(n+="",t+="",lc.lastIndex=0,r=0;e=lc.exec(t);++r)e.index&&l.push(t.substrin
g(o,c=e.index)),f.push({i:l.length,x:e[0]}),l.push(null),o=lc.lastIndex;for(o<t.length&&l.push(t.substring(o)),r=0,u=f.length;(e=lc.exec(n))&&u>r;++r)if(a=f[r],a.x==e[0]){if(a.i)if(null==l[a.i+1])for(l[a.i-1]+=a.x,l.splice(a.i,1),i=r+1;u>i;++i)f[i].i--;else
for(l[a.i-1]+=a.x+l[a.i+1],l.splice(a.i,2),i=r+1;u>i;++i)f[i].i-=2;else
if(null==l[a.i+1])l[a.i]=a.x;else
for(l[a.i]=a.x+l[a.i+1],l.splice(a.i+1,1),i=r+1;u>i;++i)f[i].i--;f.splice(r,1),u--,r--}else
a.x=Mr(parseFloat(e[0]),parseFloat(a.x));for(;u>r;)a=f.pop(),null==l[a.i+1]?l[a.i]=a.x:(l[a.i]=a.x+l[a.i+1],l.splice(a.i+1,1)),u--;return
1===l.length?null==l[0]?(a=f[0].x,function(n){return a(n)+""}):function(){return
t}:function(n){for(r=0;u>r;++r)l[(a=f[r]).i]=a.x(n);return
l.join("")}}function wr(n,t){for(var
e,r=va.interpolators.length;--r>=0&&!(e=va.interpolators[r](n,t)););return
e}function Sr(n){return"transform"==n?xr:wr}function Er(n,t){var
e,r=[],i=[],u=n.length,a=t.length,o=Math.min(n.length,t.length);for(e=0;o>e;++
e)r.push(wr(n[e],t[e]));for(;u>e;++e)i[e]=n[e];for(;a>e;++e)i[e]=t[e];return
function(n){for(e=0;o>e;++e)i[e]=r[e](n);return i}}function kr(n){return
function(t){return 0>=t?0:t>=1?1:n(t)}}function Ar(n){return function(t){return
1-n(1-t)}}function Nr(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function
qr(n){return n*n}function Tr(n){return n*n*n}function Cr(n){if(0>=n)return
0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function
zr(n){return function(t){return Math.pow(t,n)}}function Dr(n){return
1-Math.cos(n*Ba/2)}function jr(n){return Math.pow(2,10*(n-1))}function Lr(n){return
1-Math.sqrt(1-n*n)}function Hr(n,t){var e;return
arguments.length<2&&(t=.45),arguments.length?e=t/(2*Ba)*Math.asin(1/n):(n=1,e=t/4),function(r){return
1+n*Math.pow(2,10*-r)*Math.sin(2*(r-e)*Ba/t)}}function Fr(n){return
n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Pr(n){return
1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(
n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function
Or(n,t){n=va.hcl(n),t=va.hcl(t);var e=n.h,r=n.c,i=n.l,u=t.h-e,a=t.c-r,o=t.l-i;return
isNaN(a)&&(a=0,r=isNaN(r)?t.c:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:-180>u&&(u+=360),function(n){return
$(e+u*n,r+a*n,i+o*n)+""}}function Rr(n,t){n=va.hsl(n),t=va.hsl(t);var
e=n.h,r=n.s,i=n.l,u=t.h-e,a=t.s-r,o=t.l-i;return
isNaN(a)&&(a=0,r=isNaN(r)?t.s:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:-180>u&&(u+=360),function(n){return
O(e+u*n,r+a*n,i+o*n)+""}}function Yr(n,t){n=va.lab(n),t=va.lab(t);var
e=n.l,r=n.a,i=n.b,u=t.l-e,a=t.a-r,o=t.b-i;return function(n){return
G(e+u*n,r+a*n,i+o*n)+""}}function Ur(n,t){return t-=n,function(e){return
Math.round(n+t*e)}}function Ir(n,t){return
t=t-(n=+n)?1/(t-n):0,function(e){return(e-n)*t}}function Vr(n,t){return
t=t-(n=+n)?1/(t-n):0,function(e){return Math.max(0,Math.min(1,(e-n)*t))}}function
Xr(n){for(var t=n.source,e=n.target,r=Br(t,e),i=[t];t!==r;)t=t.parent,i.push(t);for(v
ar u=i.length;e!==r;)i.splice(u,0,e),e=e.parent;return i}function Zr(n){for(var
t=[],e=n.parent;null!=e;)t.push(n),n=e,e=e.parent;return t.push(n),t}function
Br(n,t){if(n===t)return n;for(var
e=Zr(n),r=Zr(t),i=e.pop(),u=r.pop(),a=null;i===u;)a=i,i=e.pop(),u=r.pop();return
a}function $r(n){n.fixed|=2}function Wr(n){n.fixed&=-7}function
Jr(n){n.fixed|=4,n.px=n.x,n.py=n.y}function Gr(n){n.fixed&=-5}function Kr(n,t,e){var
r=0,i=0;if(n.charge=0,!n.leaf)for(var
u,a=n.nodes,o=a.length,c=-1;++c<o;)u=a[c],null!=u&&(Kr(u,t,e),n.charge+=u.charge,r+=u.charge*u.cx,i+=u.charge*u.cy);if(n.point){n.leaf||(n.point.x+=Math.random()-.5,n.point.y+=Math.random()-.5);var
l=t*e[n.point.index];n.charge+=n.pointCharge=l,r+=l*n.point.x,i+=l*n.point.y}n.cx=r/n.charge,n.cy=i/n.charge}function
Qr(n,t){return
va.rebind(n,t,"sort","children","value"),n.nodes=n,n.links=ri,n}function
ni(n){return n.children}function ti(n){return n.value}function ei(n,t){return
t.value-n.value}function ri(n){return va.merge(
n.map(function(n){return(n.children||[]).map(function(t){return{source:n,target:t}})}))}function
ii(n){return n.x}function ui(n){return n.y}function ai(n,t,e){n.y0=t,n.y=e}function
oi(n){return va.range(n.length)}function ci(n){for(var
t=-1,e=n[0].length,r=[];++t<e;)r[t]=0;return r}function li(n){for(var
t,e=1,r=0,i=n[0][1],u=n.length;u>e;++e)(t=n[e][1])>i&&(r=e,i=t);return
r}function fi(n){return n.reduce(si,0)}function si(n,t){return n+t[1]}function
hi(n,t){return gi(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function gi(n,t){for(var
e=-1,r=+n[0],i=(n[1]-r)/t,u=[];++e<=t;)u[e]=i*e+r;return u}function
pi(n){return[va.min(n),va.max(n)]}function di(n,t){return n.parent==t.parent?1:2}function
mi(n){var t=n.children;return t&&t.length?t[0]:n._tree.thread}function vi(n){var
t,e=n.children;return e&&(t=e.length)?e[t-1]:n._tree.thread}function yi(n,t){var
e=n.children;if(e&&(i=e.length))for(var
r,i,u=-1;++u<i;)t(r=yi(e[u],t),n)>0&&(n=r);return n}function Mi(n,t){return
n.x-t.x}fu
nction xi(n,t){return t.x-n.x}function bi(n,t){return n.depth-t.depth}function
_i(n,t){function e(n,r){var i=n.children;if(i&&(a=i.length))for(var
u,a,o=null,c=-1;++c<a;)u=i[c],e(u,o),o=u;t(n,r)}e(n,null)}function wi(n){for(var
t,e=0,r=0,i=n.children,u=i.length;--u>=0;)t=i[u]._tree,t.prelim+=e,t.mod+=e,e+=t.shift+(r+=t.change)}function
Si(n,t,e){n=n._tree,t=t._tree;var
r=e/(t.number-n.number);n.change+=r,t.change-=r,t.shift+=e,t.prelim+=e,t.mod+=e}function
Ei(n,t,e){return n._tree.ancestor.parent==t.parent?n._tree.ancestor:e}function
ki(n,t){return n.value-t.value}function Ai(n,t){var
e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function
Ni(n,t){n._pack_next=t,t._pack_prev=n}function qi(n,t){var
e=t.x-n.x,r=t.y-n.y,i=n.r+t.r;return.999*i*i>e*e+r*r}function Ti(n){function
t(n){f=Math.min(n.x-n.r,f),s=Math.max(n.x+n.r,s),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(l=e.length)){var
e,r,i,u,a,o,c,l,f=1/0,s=-1/0,h=1/0,g=-1/0;if(e.
forEach(Ci),r=e[0],r.x=-r.r,r.y=0,t(r),l>1&&(i=e[1],i.x=i.r,i.y=0,t(i),l>2))for(u=e[2],ji(r,i,u),t(u),Ai(r,u),r._pack_prev=u,Ai(u,i),i=r._pack_next,a=3;l>a;a++){ji(r,i,u=e[a]);var
p=0,d=1,m=1;for(o=i._pack_next;o!==i;o=o._pack_next,d++)if(qi(o,u)){p=1;break}if(1==p)for(c=r._pack_prev;c!==o._pack_prev&&!qi(c,u);c=c._pack_prev,m++);p?(m>d||d==m&&i.r<r.r?Ni(r,i=o):Ni(r=c,i),a--):(Ai(r,u),i=u,t(u))}var
v=(f+s)/2,y=(h+g)/2,M=0;for(a=0;l>a;a++)u=e[a],u.x-=v,u.y-=y,M=Math.max(M,u.r+Math.sqrt(u.x*u.x+u.y*u.y));n.r=M,e.forEach(zi)}}function
Ci(n){n._pack_next=n._pack_prev=n}function zi(n){delete n._pack_next,delete
n._pack_prev}function Di(n,t,e,r){var
i=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,i)for(var
u=-1,a=i.length;++u<a;)Di(i[u],t,e,r)}function ji(n,t,e){var
r=n.r+e.r,i=t.x-n.x,u=t.y-n.y;if(r&&(i||u)){var a=t.r+e.r,o=i*i+u*u;a*=a,r*=r;var
c=.5+(r-a)/(2*o),l=Math.sqrt(Math.max(0,2*a*(r+o)-(r-=o)*r-a*a))/(2*o);e.x=n.x+c*i+l*u,e.y=n.y+c*u-l*i}else
e.x=n.x+r,e.y=n.y}function
Li(n){return 1+va.max(n,function(n){return n.y})}function Hi(n){return
n.reduce(function(n,t){return n+t.x},0)/n.length}function Fi(n){var t=n.children;return
t&&t.length?Fi(t[0]):n}function Pi(n){var t,e=n.children;return
e&&(t=e.length)?Pi(e[t-1]):n}function
Oi(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Ri(n,t){var
e=n.x+t[3],r=n.y+t[0],i=n.dx-t[1]-t[3],u=n.dy-t[0]-t[2];return
0>i&&(e+=i/2,i=0),0>u&&(r+=u/2,u=0),{x:e,y:r,dx:i,dy:u}}function
Yi(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Ui(n){return
n.rangeExtent?n.rangeExtent():Yi(n.range())}function Ii(n,t,e,r){var
i=e(n[0],n[1]),u=r(t[0],t[1]);return function(n){return u(i(n))}}function Vi(n,t){var
e,r=0,i=n.length-1,u=n[r],a=n[i];return
u>a&&(e=r,r=i,i=e,e=u,u=a,a=e),n[r]=t.floor(u),n[i]=t.ceil(a),n}function
Xi(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return
Math.ceil(t/n)*n}}:yc}function Zi(n,t,e,r){var
i=[],u=[],a=0,o=Math.min(n.length,t.length)-1;for(n[o]<n[0]&
&(n=n.slice().reverse(),t=t.slice().reverse());++a<=o;)i.push(e(n[a-1],n[a])),u.push(r(t[a-1],t[a]));return
function(t){var e=va.bisect(n,t,1,o)-1;return u[e](i[e](t))}}function Bi(n,t,e,r){function
i(){var i=Math.min(n.length,t.length)>2?Zi:Ii,c=r?Vr:Ir;return
a=i(n,t,c,e),o=i(t,n,c,wr),u}function u(n){return a(n)}var a,o;return
u.invert=function(n){return o(n)},u.domain=function(t){return
arguments.length?(n=t.map(Number),i()):n},u.range=function(n){return
arguments.length?(t=n,i()):t},u.rangeRound=function(n){return
u.range(n).interpolate(Ur)},u.clamp=function(n){return
arguments.length?(r=n,i()):r},u.interpolate=function(n){return
arguments.length?(e=n,i()):e},u.ticks=function(t){return
Ki(n,t)},u.tickFormat=function(t,e){return Qi(n,t,e)},u.nice=function(t){return
Wi(n,t),i()},u.copy=function(){return Bi(n,t,e,r)},i()}function $i(n,t){return
va.rebind(n,t,"range","rangeRound","interpolate","clamp")}function
Wi(n,t){return Vi(n,Xi(t?Gi(n,t)[2]:Ji(n)))}function Ji(n){var
t=Yi(n),e=t[1]-t[0];return Math.pow(10,Math.round(Math.log(e)/Math.LN10)-1)}function
Gi(n,t){var
e=Yi(n),r=e[1]-e[0],i=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),u=t/r*i;return.15>=u?i*=10:.35>=u?i*=5:.75>=u&&(i*=2),e[0]=Math.ceil(e[0]/i)*i,e[1]=Math.floor(e[1]/i)*i+.5*i,e[2]=i,e}function
Ki(n,t){return va.range.apply(va,Gi(n,t))}function Qi(n,t,e){var
r=-Math.floor(Math.log(Gi(n,t)[2])/Math.LN10+.01);return
va.format(e?e.replace(mo,function(n,t,e,i,u,a,o,c,l,f){return[t,e,i,u,a,o,c,l||"."+(r-2*("%"===f)),f].join("")}):",."+r+"f")}function
nu(n,t,e,r,i){function u(t){return n(e(t))}return u.invert=function(t){return
r(n.invert(t))},u.domain=function(t){return
arguments.length?(t[0]<0?(e=ru,r=iu):(e=tu,r=eu),n.domain((i=t.map(Number)).map(e)),u):i},u.base=function(n){return
arguments.length?(t=+n,u):t},u.nice=function(){function r(n){return
Math.pow(t,Math.floor(Math.log(n)/Math.log(t)))}function a(n){return
Math.pow(t,Math.ceil(Math.log(n)/Math.log(t)))}return n.domain
(Vi(i,e===tu?{floor:r,ceil:a}:{floor:function(n){return-a(-n)},ceil:function(n){return-r(-n)}}).map(e)),u},u.ticks=function(){var
i=Yi(n.domain()),u=[];if(i.every(isFinite)){var
a=Math.log(t),o=Math.floor(i[0]/a),c=Math.ceil(i[1]/a),l=r(i[0]),f=r(i[1]),s=t%1?2:t;if(e===ru)for(u.push(-Math.pow(t,-o));o++<c;)for(var
h=s-1;h>0;h--)u.push(-Math.pow(t,-o)*h);else{for(;c>o;o++)for(var
h=1;s>h;h++)u.push(Math.pow(t,o)*h);u.push(Math.pow(t,o))}for(o=0;u[o]<l;o++);for(c=u.length;u[c-1]>f;c--);u=u.slice(o,c)}return
u},u.tickFormat=function(n,i){if(!arguments.length)return
Mc;arguments.length<2?i=Mc:"function"!=typeof i&&(i=va.format(i));var
a,o=Math.log(t),c=Math.max(.1,n/u.ticks().length),l=e===ru?(a=-1e-12,Math.floor):(a=1e-12,Math.ceil);return
function(n){return n/r(o*l(e(n)/o+a))<=c?i(n):""}},u.copy=function(){return
nu(n.copy(),t,e,r,i)},$i(u,n)}function tu(n){return Math.log(0>n?0:n)}function
eu(n){return Math.exp(n)}function ru(n){return-Math.log(n>0?0:-n)}function
iu(n){return
-Math.exp(-n)}function uu(n,t,e){function r(t){return n(i(t))}var
i=au(t),u=au(1/t);return r.invert=function(t){return
u(n.invert(t))},r.domain=function(t){return
arguments.length?(n.domain((e=t.map(Number)).map(i)),r):e},r.ticks=function(n){return
Ki(e,n)},r.tickFormat=function(n,t){return Qi(e,n,t)},r.nice=function(n){return
r.domain(Wi(e,n))},r.exponent=function(a){return
arguments.length?(i=au(t=a),u=au(1/t),n.domain(e.map(i)),r):t},r.copy=function(){return
uu(n.copy(),t,e)},$i(r,n)}function au(n){return function(t){return
0>t?-Math.pow(-t,n):Math.pow(t,n)}}function ou(n,t){function e(t){return
a[((u.get(t)||u.set(t,n.push(t)))-1)%a.length]}function r(t,e){return
va.range(n.length).map(function(n){return t+e*n})}var u,a,o;return
e.domain=function(r){if(!arguments.length)return n;n=[],u=new i;for(var
a,o=-1,c=r.length;++o<c;)u.has(a=r[o])||u.set(a,n.push(a));return
e[t.t].apply(e,t.a)},e.range=function(n){return
arguments.length?(a=n,o=0,t={t:"range",a:arguments},e):a},e.
rangePoints=function(i,u){arguments.length<2&&(u=0);var
c=i[0],l=i[1],f=(l-c)/(Math.max(1,n.length-1)+u);return
a=r(n.length<2?(c+l)/2:c+f*u/2,f),o=0,t={t:"rangePoints",a:arguments},e},e.rangeBands=function(i,u,c){arguments.length<2&&(u=0),arguments.length<3&&(c=u);var
l=i[1]<i[0],f=i[l-0],s=i[1-l],h=(s-f)/(n.length-u+2*c);return
a=r(f+h*c,h),l&&a.reverse(),o=h*(1-u),t={t:"rangeBands",a:arguments},e},e.rangeRoundBands=function(i,u,c){arguments.length<2&&(u=0),arguments.length<3&&(c=u);var
l=i[1]<i[0],f=i[l-0],s=i[1-l],h=Math.floor((s-f)/(n.length-u+2*c)),g=s-f-(n.length-u)*h;return
a=r(f+Math.round(g/2),h),l&&a.reverse(),o=Math.round(h*(1-u)),t={t:"rangeRoundBands",a:arguments},e},e.rangeBand=function(){return
o},e.rangeExtent=function(){return Yi(t.a[0])},e.copy=function(){return
ou(n,t)},e.domain(n)}function cu(n,t){function e(){var
e=0,u=t.length;for(i=[];++e<u;)i[e-1]=va.quantile(n,e/u);return r}function r(n){return
isNaN(n=+n)?void 0:t[va.bisect(i,n)]}var i;return r.dom
ain=function(t){return
arguments.length?(n=t.filter(function(n){return!isNaN(n)}).sort(va.ascending),e()):n},r.range=function(n){return
arguments.length?(t=n,e()):t},r.quantiles=function(){return i},r.copy=function(){return
cu(n,t)},e()}function lu(n,t,e){function r(t){return
e[Math.max(0,Math.min(a,Math.floor(u*(t-n))))]}function i(){return
u=e.length/(t-n),a=e.length-1,r}var u,a;return r.domain=function(e){return
arguments.length?(n=+e[0],t=+e[e.length-1],i()):[n,t]},r.range=function(n){return
arguments.length?(e=n,i()):e},r.copy=function(){return
lu(n,t,e)},r.invertExtent=function(t){return
t=e.indexOf(t),t=0>t?0/0:t/u+n,[t,t+1/u]},i()}function fu(n,t){function e(e){return
e>=e?t[va.bisect(n,e)]:void 0}return e.domain=function(t){return
arguments.length?(n=t,e):n},e.range=function(n){return
arguments.length?(t=n,e):t},e.invertExtent=function(e){return
e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return fu(n,t)},e}function su(n){function
t(n){return+n}return t.invert=t,
t.domain=t.range=function(e){return
arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return
Ki(n,t)},t.tickFormat=function(t,e){return Qi(n,t,e)},t.copy=function(){return
su(n)},t}function hu(n){return n.innerRadius}function gu(n){return n.outerRadius}function
pu(n){return n.startAngle}function du(n){return n.endAngle}function mu(n){for(var
t,e,r,i=-1,u=n.length;++i<u;)t=n[i],e=t[0],r=t[1]+Sc,t[0]=e*Math.cos(r),t[1]=e*Math.sin(r);return
n}function vu(n){function t(t){function
c(){d.push("M",o(n(v),s),f,l(n(m.reverse()),s),"Z")}for(var
h,g,p,d=[],m=[],v=[],y=-1,M=t.length,x=ft(e),b=ft(i),_=e===r?function(){return
g}:ft(r),w=i===u?function(){return
p}:ft(u);++y<M;)a.call(this,h=t[y],y)?(m.push([g=+x.call(this,h,y),p=+b.call(this,h,y)]),v.push([+_.call(this,h,y),+w.call(this,h,y)])):m.length&&(c(),m=[],v=[]);return
m.length&&c(),d.length?d.join(""):null}var
e=Pe,r=Pe,i=0,u=Oe,a=Rt,o=Re,c=o.key,l=o,f="L",s=.7;return
t.x=function(n){return arguments.length?(e=r=n,t):r},t.x0
=function(n){return arguments.length?(e=n,t):e},t.x1=function(n){return
arguments.length?(r=n,t):r},t.y=function(n){return
arguments.length?(i=u=n,t):u},t.y0=function(n){return
arguments.length?(i=n,t):i},t.y1=function(n){return
arguments.length?(u=n,t):u},t.defined=function(n){return
arguments.length?(a=n,t):a},t.interpolate=function(n){return
arguments.length?(c="function"==typeof
n?o=n:(o=rc.get(n)||Re).key,l=o.reverse||o,f=o.closed?"M":"L",t):c},t.tension=function(n){return
arguments.length?(s=n,t):s},t}function yu(n){return n.radius}function
Mu(n){return[n.x,n.y]}function xu(n){return function(){var
t=n.apply(this,arguments),e=t[0],r=t[1]+Sc;return[e*Math.cos(r),e*Math.sin(r)]}}function
bu(){return 64}function _u(){return"circle"}function wu(n){var
t=Math.sqrt(n/Ba);return"M0,"+t+"A"+t+","+t+" 0 1,1
0,"+-t+"A"+t+","+t+" 0 1,1 0,"+t+"Z"}function
Su(n,t){return Ta(n,Tc),n.id=t,n}function Eu(n,t,e,r){var i=n.id;return
q(n,"function"==typeof e?function(n,u,a){n.__transition
__[i].tween.set(t,r(e.call(n,n.__data__,u,a)))}:(e=r(e),function(n){n.__transition__[i].tween.set(t,e)}))}function
ku(n){return null==n&&(n=""),function(){this.textContent=n}}function
Au(n,t,e,r){var
u=n.__transition__||(n.__transition__={active:0,count:0}),a=u[e];if(!a){var
o=r.time;return a=u[e]={tween:new
i,event:va.dispatch("start","end"),time:o,ease:r.ease,delay:r.delay,duration:r.duration},++u.count,va.timer(function(r){function
i(r){return
u.active>e?l():(u.active=e,h.start.call(n,f,t),a.tween.forEach(function(e,r){(r=r.call(n,f,t))&&d.push(r)}),c(r)||va.timer(c,0,o),1)}function
c(r){if(u.active!==e)return l();for(var
i=(r-g)/p,a=s(i),o=d.length;o>0;)d[--o].call(n,a);return
i>=1?(l(),h.end.call(n,f,t),1):void 0}function l(){return--u.count?delete u[e]:delete
n.__transition__,1}var f=n.__data__,s=a.ease,h=a.event,g=a.delay,p=a.duration,d=[];return
r>=g?i(r):va.timer(i,g,o),1},0,o),a}}function
Nu(n,t){n.attr("transform",function(n){return"translate("+t(n)+",0)"})}functi
on
qu(n,t){n.attr("transform",function(n){return"translate(0,"+t(n)+")"})}function
Tu(n,t,e){if(r=[],e&&t.length>1){for(var
r,i,u,a=Yi(n.domain()),o=-1,c=t.length,l=(t[1]-t[0])/++e;++o<c;)for(i=e;--i>0;)(u=+t[o]-i*l)>=a[0]&&r.push(u);for(--o,i=0;++i<e&&(u=+t[o]+i*l)<a[1];)r.push(u)}return
r}function Cu(){this._=new
Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function
zu(n,t,e){function r(t){var e=n(t),r=u(e,1);return r-t>t-e?e:r}function i(e){return
t(e=n(new Fc(e-1)),1),e}function u(n,e){return t(n=new Fc(+n),e),n}function a(n,r,u){var
a=i(n),o=[];if(u>1)for(;r>a;)e(a)%u||o.push(new Date(+a)),t(a,1);else
for(;r>a;)o.push(new Date(+a)),t(a,1);return o}function o(n,t,e){try{Fc=Cu;var r=new
Cu;return
r._=n,a(r,t,e)}finally{Fc=Date}}n.floor=n,n.round=r,n.ceil=i,n.offset=u,n.range=a;var
c=n.utc=Du(n);return
c.floor=c,c.round=Du(r),c.ceil=Du(i),c.offset=Du(u),c.range=o,n}function Du(n){return
function(t,e){try{Fc=Cu;var r=new Cu;return r._=t,n(r,e)._}fina
lly{Fc=Date}}}function ju(n,t,e,r){for(var
i,u,a=0,o=t.length,c=e.length;o>a;){if(r>=c)return-1;if(i=t.charCodeAt(a++),37===i){if(u=il[t.charAt(a++)],!u||(r=u(n,e,r))<0)return-1}else
if(i!=e.charCodeAt(r++))return-1}return r}function Lu(n){return new
RegExp("^(?:"+n.map(va.requote).join("|")+")","i")}function
Hu(n){for(var t=new i,e=-1,r=n.length;++e<r;)t.set(n[e].toLowerCase(),e);return
t}function Fu(n,t,e){var
r=0>n?"-":"",i=(r?-n:n)+"",u=i.length;return
r+(e>u?new Array(e-u+1).join(t)+i:i)}function Pu(n,t,e){Wc.lastIndex=0;var
r=Wc.exec(t.substring(e));return
r?(n.w=Jc.get(r[0].toLowerCase()),e+r[0].length):-1}function Ou(n,t,e){Bc.lastIndex=0;var
r=Bc.exec(t.substring(e));return
r?(n.w=$c.get(r[0].toLowerCase()),e+r[0].length):-1}function Ru(n,t,e){ul.lastIndex=0;var
r=ul.exec(t.substring(e,e+1));return r?(n.w=+r[0],e+r[0].length):-1}function
Yu(n,t,e){ul.lastIndex=0;var r=ul.exec(t.substring(e));return
r?(n.U=+r[0],e+r[0].length):-1}function Uu(n,t,e){ul.lastIndex=0;var
r=ul.exec(t.substring(e));return r?(n.W=+r[0],e+r[0].length):-1}function
Iu(n,t,e){Qc.lastIndex=0;var r=Qc.exec(t.substring(e));return
r?(n.m=nl.get(r[0].toLowerCase()),e+r[0].length):-1}function Vu(n,t,e){Gc.lastIndex=0;var
r=Gc.exec(t.substring(e));return
r?(n.m=Kc.get(r[0].toLowerCase()),e+r[0].length):-1}function Xu(n,t,e){return
ju(n,rl.c.toString(),t,e)}function Zu(n,t,e){return ju(n,rl.x.toString(),t,e)}function
Bu(n,t,e){return ju(n,rl.X.toString(),t,e)}function $u(n,t,e){ul.lastIndex=0;var
r=ul.exec(t.substring(e,e+4));return r?(n.y=+r[0],e+r[0].length):-1}function
Wu(n,t,e){ul.lastIndex=0;var r=ul.exec(t.substring(e,e+2));return
r?(n.y=Ju(+r[0]),e+r[0].length):-1}function Ju(n){return n+(n>68?1900:2e3)}function
Gu(n,t,e){ul.lastIndex=0;var r=ul.exec(t.substring(e,e+2));return
r?(n.m=r[0]-1,e+r[0].length):-1}function Ku(n,t,e){ul.lastIndex=0;var
r=ul.exec(t.substring(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function
Qu(n,t,e){ul.lastIndex=0;var r=ul.exec(t.sub
string(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function
na(n,t,e){ul.lastIndex=0;var r=ul.exec(t.substring(e,e+2));return
r?(n.H=+r[0],e+r[0].length):-1}function ta(n,t,e){ul.lastIndex=0;var
r=ul.exec(t.substring(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function
ea(n,t,e){ul.lastIndex=0;var r=ul.exec(t.substring(e,e+2));return
r?(n.S=+r[0],e+r[0].length):-1}function ra(n,t,e){ul.lastIndex=0;var
r=ul.exec(t.substring(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function ia(n,t,e){var
r=al.get(t.substring(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}function ua(n){var
t=n.getTimezoneOffset(),e=t>0?"-":"+",r=~~(Math.abs(t)/60),i=Math.abs(t)%60;return
e+Fu(r,"0",2)+Fu(i,"0",2)}function aa(n,t,e){tl.lastIndex=0;var
r=tl.exec(t.substring(e,e+1));return r?e+r[0].length:-1}function oa(n){return
n.toISOString()}function ca(n,t,e){function r(t){return n(t)}return
r.invert=function(t){return la(n.invert(t))},r.domain=function(t){return
arguments.length?(n.domain(t),r)
:n.domain().map(la)},r.nice=function(n){return
r.domain(Vi(r.domain(),n))},r.ticks=function(e,i){var
u=Yi(r.domain());if("function"!=typeof e){var
a=u[1]-u[0],o=a/e,c=va.bisect(cl,o);if(c==cl.length)return t.year(u,e);if(!c)return
n.ticks(e).map(la);Math.log(o/cl[c-1])<Math.log(cl[c]/o)&&--c,e=t[c],i=e[1],e=e[0].range}return
e(u[0],new Date(+u[1]+1),i)},r.tickFormat=function(){return e},r.copy=function(){return
ca(n.copy(),t,e)},$i(r,n)}function la(n){return new Date(n)}function fa(n){return
function(t){for(var e=n.length-1,r=n[e];!r[1](t);)r=n[--e];return r[0](t)}}function
sa(n){var t=new Date(n,0,1);return t.setFullYear(n),t}function ha(n){var
t=n.getFullYear(),e=sa(t),r=sa(t+1);return t+(n-e)/(r-e)}function ga(n){var t=new
Date(Date.UTC(n,0,1));return t.setUTCFullYear(n),t}function pa(n){var
t=n.getUTCFullYear(),e=ga(t),r=ga(t+1);return t+(n-e)/(r-e)}function da(n){return
JSON.parse(n.responseText)}function ma(n){var t=ya.createRange();return
t.selectNode(ya.body),t.creat
eContextualFragment(n.responseText)}var
va={version:"3.2.2"};Date.now||(Date.now=function(){return+new Date});var
ya=document,Ma=ya.documentElement,xa=window;try{ya.createElement("div").style.setProperty("opacity",0,"")}catch(ba){var
_a=xa.CSSStyleDeclaration.prototype,wa=_a.setProperty;_a.setProperty=function(n,t,e){wa.call(this,n,t+"",e)}}va.ascending=function(n,t){return
t>n?-1:n>t?1:n>=t?0:0/0},va.descending=function(n,t){return
n>t?-1:t>n?1:t>=n?0:0/0},va.min=function(n,t){var
e,r,i=-1,u=n.length;if(1===arguments.length){for(;++i<u&&!(null!=(e=n[i])&&e>=e);)e=void
0;for(;++i<u;)null!=(r=n[i])&&e>r&&(e=r)}else{for(;++i<u&&!(null!=(e=t.call(n,n[i],i))&&e>=e);)e=void
0;for(;++i<u;)null!=(r=t.call(n,n[i],i))&&e>r&&(e=r)}return
e},va.max=function(n,t){var
e,r,i=-1,u=n.length;if(1===arguments.length){for(;++i<u&&!(null!=(e=n[i])&&e>=e);)e=void
0;for(;++i<u;)null!=(r=n[i])&&r>e&&(e=r)}else{for(;++i<u&&!(null!=(e=t.call(n,n[i],i))&&e>=e);)e=void
0;for(;++i<u;)null!=(r=t.call(n,
n[i],i))&&r>e&&(e=r)}return e},va.extent=function(n,t){var
e,r,i,u=-1,a=n.length;if(1===arguments.length){for(;++u<a&&!(null!=(e=i=n[u])&&e>=e);)e=i=void
0;for(;++u<a;)null!=(r=n[u])&&(e>r&&(e=r),r>i&&(i=r))}else{for(;++u<a&&!(null!=(e=i=t.call(n,n[u],u))&&e>=e);)e=void
0;for(;++u<a;)null!=(r=t.call(n,n[u],u))&&(e>r&&(e=r),r>i&&(i=r))}return[e,i]},va.sum=function(n,t){var
e,r=0,i=n.length,u=-1;if(1===arguments.length)for(;++u<i;)isNaN(e=+n[u])||(r+=e);else
for(;++u<i;)isNaN(e=+t.call(n,n[u],u))||(r+=e);return r},va.mean=function(t,e){var
r,i=t.length,u=0,a=-1,o=0;if(1===arguments.length)for(;++a<i;)n(r=t[a])&&(u+=(r-u)/++o);else
for(;++a<i;)n(r=e.call(t,t[a],a))&&(u+=(r-u)/++o);return o?u:void
0},va.quantile=function(n,t){var e=(n.length-1)*t+1,r=Math.floor(e),i=+n[r-1],u=e-r;return
u?i+u*(n[r]-i):i},va.median=function(t,e){return
arguments.length>1&&(t=t.map(e)),t=t.filter(n),t.length?va.quantile(t.sort(va.ascending),.5):void
0},va.bisector=function(n){return{left:function(
t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);i>r;){var
u=r+i>>>1;n.call(t,t[u],u)<e?r=u+1:i=u}return
r},right:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);i>r;){var
u=r+i>>>1;e<n.call(t,t[u],u)?i=u:r=u+1}return r}}};var
Sa=va.bisector(function(n){return
n});va.bisectLeft=Sa.left,va.bisect=va.bisectRight=Sa.right,va.shuffle=function(n){for(var
t,e,r=n.length;r;)e=0|Math.random()*r--,t=n[r],n[r]=n[e],n[e]=t;return
n},va.permute=function(n,t){for(var e=[],r=-1,i=t.length;++r<i;)e[r]=n[t[r]];return
e},va.zip=function(){if(!(i=arguments.length))return[];for(var
n=-1,e=va.min(arguments,t),r=new Array(e);++n<e;)for(var i,u=-1,a=r[n]=new
Array(i);++u<i;)a[u]=arguments[u][n];return r},va.transpose=function(n){return
va.zip.apply(va,n)},va.keys=function(n){var t=[];for(var e in n)t.push(e);return
t},va.values=function(n){var t=[];for(var e in n)t.push(n[e]);return
t},va.entries=function(n){var t=[];for(var e in n)t.push({k
ey:e,value:n[e]});return t},va.merge=function(n){return
Array.prototype.concat.apply([],n)},va.range=function(n,t,r){if(arguments.length<3&&(r=1,arguments.length<2&&(t=n,n=0)),1/0===(t-n)/r)throw
new Error("infinite range");var
i,u=[],a=e(Math.abs(r)),o=-1;if(n*=a,t*=a,r*=a,0>r)for(;(i=n+r*++o)>t;)u.push(i/a);else
for(;(i=n+r*++o)<t;)u.push(i/a);return u},va.map=function(n){var t=new i;for(var e in
n)t.set(e,n[e]);return t},r(i,{has:function(n){return Ea+n in this},get:function(n){return
this[Ea+n]},set:function(n,t){return this[Ea+n]=t},remove:function(n){return n=Ea+n,n in
this&&delete this[n]},keys:function(){var n=[];return
this.forEach(function(t){n.push(t)}),n},values:function(){var n=[];return
this.forEach(function(t,e){n.push(e)}),n},entries:function(){var n=[];return
this.forEach(function(t,e){n.push({key:t,value:e})}),n},forEach:function(n){for(var t in
this)t.charCodeAt(0)===ka&&n.call(this,t.substring(1),this[t])}});var
Ea="\0",ka=Ea.charCodeAt(0);va.nest=functio
n(){function n(t,o,c){if(c>=a.length)return r?r.call(u,o):e?o.sort(e):o;for(var
l,f,s,h,g=-1,p=o.length,d=a[c++],m=new
i;++g<p;)(h=m.get(l=d(f=o[g])))?h.push(f):m.set(l,[f]);return
t?(f=t(),s=function(e,r){f.set(e,n(t,r,c))}):(f={},s=function(e,r){f[e]=n(t,r,c)}),m.forEach(s),f}function
t(n,e){if(e>=a.length)return n;var r=[],i=o[e++];return
n.forEach(function(n,i){r.push({key:n,values:t(i,e)})
+}),i?r.sort(function(n,t){return i(n.key,t.key)}):r}var e,r,u={},a=[],o=[];return
u.map=function(t,e){return n(e,t,0)},u.entries=function(e){return
t(n(va.map,e,0),0)},u.key=function(n){return a.push(n),u},u.sortKeys=function(n){return
o[a.length-1]=n,u},u.sortValues=function(n){return e=n,u},u.rollup=function(n){return
r=n,u},u},va.set=function(n){var t=new u;if(n)for(var
e=0;e<n.length;e++)t.add(n[e]);return t},r(u,{has:function(n){return Ea+n in
this},add:function(n){return this[Ea+n]=!0,n},remove:function(n){return n=Ea+n,n in
this&&delete this[n]},values:function(){var n=[];return
this.forEach(function(t){n.push(t)}),n},forEach:function(n){for(var t in
this)t.charCodeAt(0)===ka&&n.call(this,t.substring(1))}}),va.behavior={},va.rebind=function(n,t){for(var
e,r=1,i=arguments.length;++r<i;)n[e=arguments[r]]=a(n,t,t[e]);return n};var
Aa=["webkit","ms","moz","Moz","o","O"],Na=l;try{Na(Ma.childNodes)[0].nodeType}catch(qa){Na=c}var
Ta=[].__proto__?function(n,t){n.__proto__=t}:
function(n,t){for(var e in t)n[e]=t[e]};va.dispatch=function(){for(var n=new
s,t=-1,e=arguments.length;++t<e;)n[arguments[t]]=h(n);return
n},s.prototype.on=function(n,t){var
e=n.indexOf("."),r="";if(e>=0&&(r=n.substring(e+1),n=n.substring(0,e)),n)return
arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n
in this)this.hasOwnProperty(n)&&this[n].on(r,null);return
this}},va.event=null,va.requote=function(n){return n.replace(Ca,"\\$&")};var
Ca=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,za=function(n,t){return
t.querySelector(n)},Da=function(n,t){return
t.querySelectorAll(n)},ja=Ma[o(Ma,"matchesSelector")],La=function(n,t){return
ja.call(n,t)};"function"==typeof Sizzle&&(za=function(n,t){return
Sizzle(n,t)[0]||null},Da=function(n,t){return
Sizzle.uniqueSort(Sizzle(n,t))},La=Sizzle.matchesSelector),va.selection=function(){return
Oa};var Ha=va.selection.prototype=[];Ha.select=function(n){var
t,e,r,i,u=[];"function"!=typeof n&&(n=v(n));for(var a=-1,o=th
is.length;++a<o;){u.push(t=[]),t.parentNode=(r=this[a]).parentNode;for(var
c=-1,l=r.length;++c<l;)(i=r[c])?(t.push(e=n.call(i,i.__data__,c)),e&&"__data__"in
i&&(e.__data__=i.__data__)):t.push(null)}return m(u)},Ha.selectAll=function(n){var
t,e,r=[];"function"!=typeof n&&(n=y(n));for(var
i=-1,u=this.length;++i<u;)for(var
a=this[i],o=-1,c=a.length;++o<c;)(e=a[o])&&(r.push(t=Na(n.call(e,e.__data__,o))),t.parentNode=e);return
m(r)};var
Fa={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3....
t=n.indexOf(":"),e=n;return
t>=0&&(e=n.substring(0,t),n=n.substring(t+1)),Fa.hasOwnProperty(e)?{space:Fa[e],local:n}:n}},Ha.attr=function(n,t){if(arguments.length<2){if("string"==typeof
n){var e=this.node();return
n=va.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in
n)this.each(M(t,n
[t]));return this}return
this.each(M(n,t))},Ha.classed=function(n,t){if(arguments.length<2){if("string"==typeof
n){var
e=this.node(),r=(n=n.trim().split(/^|\s+/g)).length,i=-1;if(t=e.classList){for(;++i<r;)if(!t.contains(n[i]))return!1}else
for(t=e.getAttribute("class");++i<r;)if(!b(n[i]).test(t))return!1;return!0}for(t
in n)this.each(_(t,n[t]));return this}return
this.each(_(n,t))},Ha.style=function(n,t,e){var
r=arguments.length;if(3>r){if("string"!=typeof
n){2>r&&(t="");for(e in n)this.each(S(e,n[e],t));return
this}if(2>r)return
xa.getComputedStyle(this.node(),null).getPropertyValue(n);e=""}return
this.each(S(n,t,e))},Ha.property=function(n,t){if(arguments.length<2){if("string"==typeof
n)return this.node()[n];for(t in n)this.each(E(t,n[t]));return this}return
this.each(E(n,t))},Ha.text=function(n){return
arguments.length?this.each("function"==typeof n?function(){var
t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){
this.textContent=n}):this.node().textContent},Ha.html=function(n){return
arguments.length?this.each("function"==typeof n?function(){var
t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},Ha.append=function(n){function
t(){return this.appendChild(ya.createElementNS(this.namespaceURI,n))}function e(){return
this.appendChild(ya.createElementNS(n.space,n.local))}return
n=va.ns.qualify(n),this.select(n.local?e:t)},Ha.insert=function(n,t){function
e(e,r){return
this.insertBefore(ya.createElementNS(this.namespaceURI,n),t.call(this,e,r))}function
r(e,r){return
this.insertBefore(ya.createElementNS(n.space,n.local),t.call(this,e,r))}return
n=va.ns.qualify(n),"function"!=typeof
t&&(t=v(t)),this.select(n.local?r:e)},Ha.remove=function(){return
this.each(function(){var
n=this.parentNode;n&&n.removeChild(this)})},Ha.data=function(n,t){function
e(n,e){var r,u,a,o=n.length,s=e.length,h=Math.min(o,
s),g=new Array(s),p=new Array(s),d=new Array(o);if(t){var m,v=new i,y=new
i,M=[];for(r=-1;++r<o;)m=t.call(u=n[r],u.__data__,r),v.has(m)?d[r]=u:v.set(m,u),M.push(m);for(r=-1;++r<s;)m=t.call(e,a=e[r],r),(u=v.get(m))?(g[r]=u,u.__data__=a):y.has(m)||(p[r]=k(a)),y.set(m,a),v.remove(m);for(r=-1;++r<o;)v.has(M[r])&&(d[r]=n[r])}else{for(r=-1;++r<h;)u=n[r],a=e[r],u?(u.__data__=a,g[r]=u):p[r]=k(a);for(;s>r;++r)p[r]=k(e[r]);for(;o>r;++r)d[r]=n[r]}p.update=g,p.parentNode=g.parentNode=d.parentNode=n.parentNode,c.push(p),l.push(g),f.push(d)}var
r,u,a=-1,o=this.length;if(!arguments.length){for(n=new
Array(o=(r=this[0]).length);++a<o;)(u=r[a])&&(n[a]=u.__data__);return n}var
c=T([]),l=m([]),f=m([]);if("function"==typeof
n)for(;++a<o;)e(r=this[a],n.call(r,r.parentNode.__data__,a));else
for(;++a<o;)e(r=this[a],n);return l.enter=function(){return c},l.exit=function(){return
f},l},Ha.datum=function(n){return
arguments.length?this.property("__data__",n):this.property("__data__")},Ha.filter=funct
ion(n){var t,e,r,i=[];"function"!=typeof n&&(n=A(n));for(var
u=0,a=this.length;a>u;u++){i.push(t=[]),t.parentNode=(e=this[u]).parentNode;for(var
o=0,c=e.length;c>o;o++)(r=e[o])&&n.call(r,r.__data__,o)&&t.push(r)}return
m(i)},Ha.order=function(){for(var n=-1,t=this.length;++n<t;)for(var
e,r=this[n],i=r.length-1,u=r[i];--i>=0;)(e=r[i])&&(u&&u!==e.nextSibling&&u.parentNode.insertBefore(e,u),u=e);return
this},Ha.sort=function(n){n=N.apply(this,arguments);for(var
t=-1,e=this.length;++t<e;)this[t].sort(n);return
this.order()},Ha.each=function(n){return
q(this,function(t,e,r){n.call(t,t.__data__,e,r)})},Ha.call=function(n){var
t=Na(arguments);return
n.apply(t[0]=this,t),this},Ha.empty=function(){return!this.node()},Ha.node=function(){for(var
n=0,t=this.length;t>n;n++)for(var e=this[n],r=0,i=e.length;i>r;r++){var
u=e[r];if(u)return u}return null},Ha.size=function(){var n=0;return
this.each(function(){++n}),n};var
Pa=[];va.selection.enter=T,va.selection.enter.prototype=Pa,Pa.append=H
a.append,Pa.insert=Ha.insert,Pa.empty=Ha.empty,Pa.node=Ha.node,Pa.call=Ha.call,Pa.size=Ha.size,Pa.select=function(n){for(var
t,e,r,i,u,a=[],o=-1,c=this.length;++o<c;){r=(i=this[o]).update,a.push(t=[]),t.parentNode=i.parentNode;for(var
l=-1,f=i.length;++l<f;)(u=i[l])?(t.push(r[l]=e=n.call(i.parentNode,u.__data__,l)),e.__data__=u.__data__):t.push(null)}return
m(a)},Ha.transition=function(){var
n,t,e=Ac||++Cc,r=[],i=Object.create(zc);i.time=Date.now();for(var
u=-1,a=this.length;++u<a;){r.push(n=[]);for(var
o=this[u],c=-1,l=o.length;++c<l;)(t=o[c])&&Au(t,c,e,i),n.push(t)}return
Su(r,e)},va.select=function(n){var t=["string"==typeof n?za(n,ya):n];return
t.parentNode=Ma,m([t])},va.selectAll=function(n){var t=Na("string"==typeof
n?Da(n,ya):n);return t.parentNode=Ma,m([t])};var
Oa=va.select(Ma);Ha.on=function(n,t,e){var
r=arguments.length;if(3>r){if("string"!=typeof
n){2>r&&(t=!1);for(e in n)this.each(C(e,n[e],t));return
this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return t
his.each(C(n,t,e))};var
Ra=va.map({mouseenter:"mouseover",mouseleave:"mouseout"});Ra.forEach(function(n){"on"+n
in ya&&Ra.remove(n)});var
Ya=o(Ma.style,"userSelect");va.mouse=function(n){return L(n,p())};var
Ua=/WebKit/.test(xa.navigator.userAgent)?-1:0;va.touches=function(n,t){return
arguments.length<2&&(t=p().touches),t?Na(t).map(function(t){var e=L(n,t);return
e.identifier=t.identifier,e}):[]},va.behavior.drag=function(){function
n(){this.on("mousedown.drag",t).on("touchstart.drag",t)}function
t(){function n(){var n=a.parentNode;return null!=l?va.touches(n).filter(function(n){return
n.identifier===l})[0]:va.mouse(n)}function t(){if(!a.parentNode)return i();var
t=n(),e=t[0]-f[0],r=t[1]-f[1];s|=e|r,f=t,o({type:"drag",x:t[0]+u[0],y:t[1]+u[1],dx:e,dy:r})}function
i(){g.on(null!=l?"touchmove.drag-"+l:"mousemove.drag",null).on(null!=l?"touchend.drag-"+l:"mouseup.drag",null),h(s&&va.event.target===c),o({type:"dragend"})}var
u,a=this,o=e.of(a,arguments),c=va.event.target,l=va.eve
nt.touches?va.event.changedTouches[0].identifier:null,f=n(),s=0,h=j(null!=l?"drag-"+l:"drag"),g=va.select(xa).on(null!=l?"touchmove.drag-"+l:"mousemove.drag",t).on(null!=l?"touchend.drag-"+l:"mouseup.drag",i,!0);r?(u=r.apply(a,arguments),u=[u.x-f[0],u.y-f[1]]):u=[0,0],o({type:"dragstart"})}var
e=d(n,"drag","dragstart","dragend"),r=null;return
n.origin=function(t){return
arguments.length?(r=t,n):r},va.rebind(n,e,"on")},va.behavior.zoom=function(){function
n(){this.on("mousedown.zoom",o).on("mousemove.zoom",l).on(Xa+".zoom",c).on("dblclick.zoom",f).on("touchstart.zoom",s).on("touchmove.zoom",h).on("touchend.zoom",s)}function
t(n){return[(n[0]-_[0])/w,(n[1]-_[1])/w]}function
e(n){return[n[0]*w+_[0],n[1]*w+_[1]]}function
r(n){w=Math.max(S[0],Math.min(S[1],n))}function
i(n,t){t=e(t),_[0]+=n[0]-t[0],_[1]+=n[1]-t[1]}function
u(){y&&y.domain(v.range().map(function(n){return(n-_[0])/w}).map(v.invert)),x&&x.domain(M.range().map(function(n){return(n-_[1])/w}).map(M.invert))}function
a(
n){u(),va.event.preventDefault(),n({type:"zoom",scale:w,translate:_})}function
o(){function n(){c=1,i(va.mouse(r),f),a(u)}function
e(){l.on("mousemove.zoom",null).on("mouseup.zoom",null),s(c&&va.event.target===o)}var
r=this,u=E.of(r,arguments),o=va.event.target,c=0,l=va.select(xa).on("mousemove.zoom",n).on("mouseup.zoom",e),f=t(va.mouse(r)),s=j("zoom")}function
c(){g||(g=t(va.mouse(this))),r(Math.pow(2,.002*Ia())*w),i(va.mouse(this),g),a(E.of(this,arguments))}function
l(){g=null}function f(){var
n=va.mouse(this),e=t(n),u=Math.log(w)/Math.LN2;r(Math.pow(2,va.event.shiftKey?Math.ceil(u)-1:Math.floor(u)+1)),i(n,e),a(E.of(this,arguments))}function
s(){var
n=va.touches(this),e=Date.now();if(m=w,g={},p=0,n.forEach(function(n){g[n.identifier]=t(n)}),1===n.length){if(500>e-b){var
u=n[0],o=t(n[0]);r(2*w),i(u,o),a(E.of(this,arguments))}b=e}else if(n.length>1){var
u=n[0],c=n[1],l=u[0]-c[0],f=u[1]-c[1];p=l*l+f*f}}function h(){var
n=va.touches(this),t=n[0],e=g[t.identifier];if(u=n[1]){va
r u,o=g[u.identifier],c=va.event.scale;if(null==c){var
l=(l=u[0]-t[0])*l+(l=u[1]-t[1])*l;c=p&&Math.sqrt(l/p)}t=[(t[0]+u[0])/2,(t[1]+u[1])/2],e=[(e[0]+o[0])/2,(e[1]+o[1])/2],r(c*m)}i(t,e),b=null,a(E.of(this,arguments))}var
g,p,m,v,y,M,x,b,_=[0,0],w=1,S=Va,E=d(n,"zoom");return
n.translate=function(t){return
arguments.length?(_=t.map(Number),u(),n):_},n.scale=function(t){return
arguments.length?(w=+t,u(),n):w},n.scaleExtent=function(t){return
arguments.length?(S=null==t?Va:t.map(Number),n):S},n.x=function(t){return
arguments.length?(y=t,v=t.copy(),_=[0,0],w=1,n):y},n.y=function(t){return
arguments.length?(x=t,M=t.copy(),_=[0,0],w=1,n):x},va.rebind(n,E,"on")};var
Ia,Va=[0,1/0],Xa="onwheel"in
ya?(Ia=function(){return-va.event.deltaY*(va.event.deltaMode?120:1)},"wheel"):"onmousewheel"in
ya?(Ia=function(){return
va.event.wheelDelta},"mousewheel"):(Ia=function(){return-va.event.detail},"MozMousePixelScroll");H.prototype.toString=function(){return
this.rgb()+""},va.hsl=function(n,t,e
){return 1===arguments.length?n instanceof
P?F(n.h,n.s,n.l):ut(""+n,at,F):F(+n,+t,+e)};var Za=P.prototype=new
H;Za.brighter=function(n){return
n=Math.pow(.7,arguments.length?n:1),F(this.h,this.s,this.l/n)},Za.darker=function(n){return
n=Math.pow(.7,arguments.length?n:1),F(this.h,this.s,n*this.l)},Za.rgb=function(){return
O(this.h,this.s,this.l)};var
Ba=Math.PI,$a=1e-6,Wa=$a*$a,Ja=Ba/180,Ga=180/Ba;va.hcl=function(n,t,e){return
1===arguments.length?n instanceof B?Z(n.h,n.c,n.l):n instanceof
J?K(n.l,n.a,n.b):K((n=ot((n=va.rgb(n)).r,n.g,n.b)).l,n.a,n.b):Z(+n,+t,+e)};var
Ka=B.prototype=new H;Ka.brighter=function(n){return
Z(this.h,this.c,Math.min(100,this.l+Qa*(arguments.length?n:1)))},Ka.darker=function(n){return
Z(this.h,this.c,Math.max(0,this.l-Qa*(arguments.length?n:1)))},Ka.rgb=function(){return
$(this.h,this.c,this.l).rgb()},va.lab=function(n,t,e){return 1===arguments.length?n
instanceof J?W(n.l,n.a,n.b):n instanceof
B?$(n.l,n.c,n.h):ot((n=va.rgb(n)).r,n.g,n.b):W(+n,+t,+e)}
;var Qa=18,no=.95047,to=1,eo=1.08883,ro=J.prototype=new H;ro.brighter=function(n){return
W(Math.min(100,this.l+Qa*(arguments.length?n:1)),this.a,this.b)},ro.darker=function(n){return
W(Math.max(0,this.l-Qa*(arguments.length?n:1)),this.a,this.b)},ro.rgb=function(){return
G(this.l,this.a,this.b)},va.rgb=function(n,t,e){return 1===arguments.length?n instanceof
rt?et(n.r,n.g,n.b):ut(""+n,et,O):et(~~n,~~t,~~e)};var io=rt.prototype=new
H;io.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var
t=this.r,e=this.g,r=this.b,i=30;return
t||e||r?(t&&i>t&&(t=i),e&&i>e&&(e=i),r&&i>r&&(r=i),et(Math.min(255,Math.floor(t/n)),Math.min(255,Math.floor(e/n)),Math.min(255,Math.floor(r/n)))):et(i,i,i)},io.darker=function(n){return
n=Math.pow(.7,arguments.length?n:1),et(Math.floor(n*this.r),Math.floor(n*this.g),Math.floor(n*this.b))},io.hsl=function(){return
at(this.r,this.g,this.b)},io.toString=function(){return"#"+it(this.r)+it(this.g)+it(this.b)};var
uo=va.map({aliceblue:"#f0f8ff",antique
white:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#
f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f
5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"});uo.forEach(function(n,t){uo.set(n,ut(t,et,O))}),va.functor=ft,va.x
hr=ht(st),va.dsv=function(n,t){function
e(n,e,u){arguments.length<3&&(u=e,e=null);var a=va.xhr(n,t,u);return
a.row=function(n){return
arguments.length?a.response(null==(e=n)?r:i(n)):e},a.row(e)}function r(n){return
e.parse(n.responseText)}function i(n){return function(t){return
e.parse(t.responseText,n)}}function a(t){return t.map(o).join(n)}function o(n){return
c.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var
c=new RegExp('["'+n+"\n]"),l=n.charCodeAt(0);return
e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var
i=new Function("d","return {"+n.map(function(n,t){return
JSON.stringify(n)+":
d["+t+"]"}).join(",")+"}");r=t?function(n,e){return
t(i(n),e)}:i})},e.parseRows=function(n,t){function e(){if(f>=c)return a;if(i)return
i=!1,u;var t=f;if(34===n.charCodeAt(t)){for(var
e=t;e++<c;)if(34===n.charCodeAt(e)){if(34!==n.charCodeAt(e+1))break;++e}f=e+2;var
r=n.charCodeAt(e+1);return
13===r?(i=!0,10===n.charCodeAt(e+2)&&++f):10===r&&(i=!0),n.substrin
g(t+1,e).replace(/""/g,'"')}for(;c>f;){var
r=n.charCodeAt(f++),o=1;if(10===r)i=!0;else
if(13===r)i=!0,10===n.charCodeAt(f)&&(++f,++o);else if(r!==l)continue;return
n.substring(t,f-o)}return n.substring(t)}for(var
r,i,u={},a={},o=[],c=n.length,f=0,s=0;(r=e())!==a;){for(var
h=[];r!==u&&r!==a;)h.push(r),r=e();(!t||(h=t(h,s++)))&&o.push(h)}return
o},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new
u,i=[];return t.forEach(function(n){for(var t in
n)r.has(t)||i.push(r.add(t))}),[i.map(o).join(n)].concat(t.map(function(t){return
i.map(function(n){return
o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return
n.map(a).join("\n")},e},va.csv=va.dsv(",","text/csv"),va.tsv=va.dsv(" ","text/tab-separated-values");var
ao,oo,co,lo;va.timer=function(n,t,e){if(arguments.length<3){if(arguments.length<2)t=0;else
if(!isFinite(t))return;e=Date.now()}var
r=e+t,i={callback:n,time:r,next:null};oo?oo.next=i:ao=i,oo=i,co||(lo=clearTimeout(lo),co=1,fo(dt))},va.time
r.flush=function(){mt(),vt()};var
fo=xa[o(xa,"requestAnimationFrame")]||function(n){setTimeout(n,17)},so=".",ho=",",go=[3,3],po=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"].map(yt);va.formatPrefix=function(n,t){var
e=0;return
n&&(0>n&&(n*=-1),t&&(n=va.round(n,Mt(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((0>=e?e+1:e-1)/3)))),po[8+e/3]},va.round=function(n,t){return
t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)},va.format=function(n){var
t=mo.exec(n),e=t[1]||"
",r=t[2]||">",i=t[3]||"",u=t[4]||"",a=t[5],o=+t[6],c=t[7],l=t[8],f=t[9],s=1,h="",g=!1;switch(l&&(l=+l.substring(1)),(a||"0"===e&&"="===r)&&(a=e="0",r="=",c&&(o-=Math.floor((o-1)/4))),f){case"n":c=!0,f="g";break;case"%":s=100,h="%",f="f";break;case"p":s=100,h="%",f="r";break;case"b":case"o":case"x":case"X":u&&(u="0"+f.toLowerCase());case"c":case"d":g=!0,l=0;break;case"s":s=-1,f="r"}"#"===u&&(u=""),"r"!=f||l||(f="g"),null!=l&&("g"==f?l=Math.max(
1,Math.min(21,l)):("e"==f||"f"==f)&&(l=Math.max(0,Math.min(20,l)))),f=vo.get(f)||xt;var
p=a&&c;return function(n){if(g&&n%1)return"";var
t=0>n||0===n&&0>1/n?(n=-n,"-"):i;if(0>s){var
d=va.formatPrefix(n,l);n=d.scale(n),h=d.symbol}else
n*=s;n=f(n,l),!a&&c&&(n=yo(n));var
m=u.length+n.length+(p?0:t.length),v=o>m?new Array(m=o-m+1).join(e):"";return
p&&(n=yo(v+n)),so&&n.replace(".",so),t+=u,("<"===r?t+n+v:">"===r?v+t+n:"^"===r?v.substring(0,m>>=1)+t+n+v.substring(m):t+(p?n:v+n))+h}};var
mo=/(?:([^{])?([<>=^]))?([+\-
])?(#)?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,vo=va.map({b:function(n){return
n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return
n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return
n.toString(16).toUpperCase()},g:function(n,t){return
n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return
n.toFixed(t)},r:function(n,t){return(n=va.round(n,Mt(n,t))).toFixed(Math.max(0,Math.min(20,Mt(n*(1+1e-15),
t))))}}),yo=st;if(go){var Mo=go.length;yo=function(n){for(var
t=n.lastIndexOf("."),e=t>=0?"."+n.substring(t+1):(t=n.length,""),r=[],i=0,u=go[0];t>0&&u>0;)r.push(n.substring(t-=u,t+u)),u=go[i=(i+1)%Mo];return
r.reverse().join(ho||"")+e}}va.geo={},bt.prototype={s:0,t:0,add:function(n){_t(n,this.t,xo),_t(xo.s,this.s,this),this.s?this.t+=xo.t:this.s=xo.t},reset:function(){this.s=this.t=0},valueOf:function(){return
this.s}};var xo=new
bt;va.geo.stream=function(n,t){n&&bo.hasOwnProperty(n.type)?bo[n.type](n,t):wt(n,t)};var
bo={Feature:function(n,t){wt(n.geometry,t)},FeatureCollection:function(n,t){for(var
e=n.features,r=-1,i=e.length;++r<i;)wt(e[r].geometry,t)}},_o={Sphere:function(n,t){t.sphere()},Point:function(n,t){var
e=n.coordinates;t.point(e[0],e[1])},MultiPoint:function(n,t){for(var
e,r=n.coordinates,i=-1,u=r.length;++i<u;)e=r[i],t.point(e[0],e[1])},LineString:function(n,t){St(n.coordinates,t,0)},MultiLineString:function(n,t){for(var
e=n.coordinates,r=-1,i=e.length;++r<i;)S
t(e[r],t,0)},Polygon:function(n,t){Et(n.coordinates,t)},MultiPolygon:function(n,t){for(var
e=n.coordinates,r=-1,i=e.length;++r<i;)Et(e[r],t)},GeometryCollection:function(n,t){for(var
e=n.geometries,r=-1,i=e.length;++r<i;)wt(e[r],t)}};va.geo.area=function(n){return
wo=0,va.geo.stream(n,Eo),wo};var wo,So=new
bt,Eo={sphere:function(){wo+=4*Ba},point:f,lineStart:f,lineEnd:f,polygonStart:function(){So.reset(),Eo.lineStart=kt},polygonEnd:function(){var
n=2*So;wo+=0>n?4*Ba+n:n,Eo.lineStart=Eo.lineEnd=Eo.point=f}};va.geo.bounds=function(){function
n(n,t){M.push(x=[f=n,h=n]),s>t&&(s=t),t>g&&(g=t)}function t(t,e){var
r=At([t*Ja,e*Ja]);if(v){var i=qt(v,r),u=[i[1],-i[0],0],a=qt(u,i);zt(a),a=Dt(a);var
c=t-p,l=c>0?1:-1,d=a[0]*Ga*l,m=Math.abs(c)>180;if(m^(d>l*p&&l*t>d)){var
y=a[1]*Ga;y>g&&(g=y)}else
if(d=(d+360)%360-180,m^(d>l*p&&l*t>d)){var
y=-a[1]*Ga;s>y&&(s=y)}else
s>e&&(s=e),e>g&&(g=e);m?p>t?o(f,t)>o(f,h)&&(h=t):o(t,h)>o(f,h)&&(f=t):h>=f?(f>t&&(f=t),t>h&&(h=t)):t>p?o(f,t)>o(f,h)&&(h=t)
:o(t,h)>o(f,h)&&(f=t)}else n(t,e);v=r,p=t}function e(){b.point=t}function
r(){x[0]=f,x[1]=h,b.point=n,v=null}function i(n,e){if(v){var
r=n-p;y+=Math.abs(r)>180?r+(r>0?360:-360):r}else
d=n,m=e;Eo.point(n,e),t(n,e)}function u(){Eo.lineStart()}function
a(){i(d,m),Eo.lineEnd(),Math.abs(y)>$a&&(f=-(h=180)),x[0]=f,x[1]=h,v=null}function
o(n,t){return(t-=n)<0?t+360:t}function c(n,t){return n[0]-t[0]}function l(n,t){return
t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var
f,s,h,g,p,d,m,v,y,M,x,b={point:n,lineStart:e,lineEnd:r,polygonStart:function(){b.point=i,b.lineStart=u,b.lineEnd=a,y=0,Eo.polygonStart()},polygonEnd:function(){Eo.polygonEnd(),b.point=n,b.lineStart=e,b.lineEnd=r,0>So?(f=-(h=180),s=-(g=90)):y>$a?g=90:-$a>y&&(s=-90),x[0]=f,x[1]=h}};return
function(n){g=h=-(f=s=1/0),M=[],va.geo.stream(n,b);var t=M.length;if(t){M.sort(c);for(var
e,r=1,i=M[0],u=[i];t>r;++r)e=M[r],l(e[0],i)||l(e[1],i)?(o(i[0],e[1])>o(i[0],i[1])&&(i[1]=e[1]),o(e[0],i[1])>o(i[0],i[1])&&(i[0]=e[0])):u.push(i=e
);for(var
a,e,p=-1/0,t=u.length-1,r=0,i=u[t];t>=r;i=e,++r)e=u[r],(a=o(i[1],e[0]))>p&&(p=a,f=e[0],h=i[1])}return
M=x=null,1/0===f||1/0===s?[[0/0,0/0],[0/0,0/0]]:[[f,s],[h,g]]}}(),va.geo.centroid=function(n){ko=Ao=No=qo=To=Co=zo=Do=jo=Lo=Ho=0,va.geo.stream(n,Fo);var
t=jo,e=Lo,r=Ho,i=t*t+e*e+r*r;return
Wa>i&&(t=Co,e=zo,r=Do,$a>Ao&&(t=No,e=qo,r=To),i=t*t+e*e+r*r,Wa>i)?[0/0,0/0]:[Math.atan2(e,t)*Ga,U(r/Math.sqrt(i))*Ga]};var
ko,Ao,No,qo,To,Co,zo,Do,jo,Lo,Ho,Fo={sphere:f,point:Lt,lineStart:Ft,lineEnd:Pt,polygonStart:function(){Fo.lineStart=Ot},polygonEnd:function(){Fo.lineStart=Ft}},Po=It(Rt,$t,Jt,Gt),Oo=[-Ba,0],Ro=1e9;(va.geo.conicEqualArea=function(){return
ee(re)}).raw=re,va.geo.albers=function(){return
va.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},va.geo.albersUsa=function(){function
n(n){var u=n[0],a=n[1];return t=null,e(u,a),t||(r(u,a),t)||i(u,a),t}var
t,e,r,i,u=va.geo.albers(),a=va.geo.conicEqualArea().rotate([154,0]).center([
-2,58.5]).parallels([55,65]),o=va.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(n,e){t=[n,e]}};return
n.invert=function(n){var
t=u.scale(),e=u.translate(),r=(n[0]-e[0])/t,i=(n[1]-e[1])/t;return(i>=.12&&.234>i&&r>=-.425&&-.214>r?a:i>=.166&&.234>i&&r>=-.214&&-.115>r?o:u).invert(n)},n.stream=function(n){var
t=u.stream(n),e=a.stream(n),r=o.stream(n);return{point:function(n,i){t.point(n,i),e.point(n,i),r.point(n,i)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return
arguments.length?(u.precision(t),a.precision(t),o.precision(t),n):u.precision()},n.scale=function(t){return
arguments.length?(u.scale(t),a.scale(.35*t),o.scale(t),n.translate(u.tra
nslate())):u.scale()},n.translate=function(t){if(!arguments.length)return
u.translate();var l=u.scale(),f=+t[0],s=+t[1];return
e=u.translate(t).clipExtent([[f-.455*l,s-.238*l],[f+.455*l,s+.238*l]]).stream(c).point,r=a.translate([f-.307*l,s+.201*l]).clipExtent([[f-.425*l+$a,s+.12*l+$a],[f-.214*l-$a,s+.234*l-$a]]).stream(c).point,i=o.translate([f-.205*l,s+.212*l]).clipExtent([[f-.214*l+$a,s+.166*l+$a],[f-.115*l-$a,s+.234*l-$a]]).stream(c).point,n},n.scale(1070)};var
Yo,Uo,Io,Vo,Xo,Zo,Bo={point:f,lineStart:f,lineEnd:f,polygonStart:function(){Uo=0,Bo.lineStart=ie},polygonEnd:function(){Bo.lineStart=Bo.lineEnd=Bo.point=f,Yo+=Math.abs(Uo/2)}},$o={point:ue,lineStart:f,lineEnd:f,polygonStart:f,polygonEnd:f},Wo={point:ce,lineStart:le,lineEnd:fe,polygonStart:function(){Wo.lineStart=se},polygonEnd:function(){Wo.point=ce,Wo.lineStart=le,Wo.lineEnd=fe}};va.geo.path=function(){function
n(n){return n&&("function"==typeof
o&&u.pointRadius(+o.apply(this,arguments)),a&&a.valid||(a=i(u)),va.ge
o.stream(n,a)),u.result()}function t(){return a=null,n}var e,r,i,u,a,o=4.5;return
n.area=function(n){return Yo=0,va.geo.stream(n,i(Bo)),Yo},n.centroid=function(n){return
No=qo=To=Co=zo=Do=jo=Lo=Ho=0,va.geo.stream(n,i(Wo)),Ho?[jo/Ho,Lo/Ho]:Do?[Co/Do,zo/Do]:To?[No/To,qo/To]:[0/0,0/0]},n.bounds=function(n){return
Xo=Zo=-(Io=Vo=1/0),va.geo.stream(n,i($o)),[[Io,Vo],[Xo,Zo]]},n.projection=function(n){return
arguments.length?(i=(e=n)?n.stream||pe(n):st,t()):e},n.context=function(n){return
arguments.length?(u=null==(r=n)?new ae:new he(n),"function"!=typeof
o&&u.pointRadius(o),t()):r},n.pointRadius=function(t){return
arguments.length?(o="function"==typeof
t?t:(u.pointRadius(+t),+t),n):o},n.projection(va.geo.albersUsa()).context(null)},va.geo.projection=de,va.geo.projectionMutator=me,(va.geo.equirectangular=function(){return
de(ye)}).raw=ye.invert=ye,va.geo.rotation=function(n){function t(t){return
t=n(t[0]*Ja,t[1]*Ja),t[0]*=Ga,t[1]*=Ga,t}return
n=Me(n[0]%360*Ja,n[1]*Ja,n.length>2?n[2
]*Ja:0),t.invert=function(t){return
t=n.invert(t[0]*Ja,t[1]*Ja),t[0]*=Ga,t[1]*=Ga,t},t},va.geo.circle=function(){function
n(){var n="function"==typeof
r?r.apply(this,arguments):r,t=Me(-n[0]*Ja,-n[1]*Ja,0).invert,i=[];return
e(null,null,1,{point:function(n,e){i.push(n=t(n,e)),n[0]*=Ga,n[1]*=Ga}}),{type:"Polygon",coordinates:[i]}}var
t,e,r=[0,0],i=6;return n.origin=function(t){return
arguments.length?(r=t,n):r},n.angle=function(r){return
arguments.length?(e=we((t=+r)*Ja,i*Ja),n):t},n.precision=function(r){return
arguments.length?(e=we(t*Ja,(i=+r)*Ja),n):i},n.angle(90)},va.geo.distance=function(n,t){var
e,r=(t[0]-n[0])*Ja,i=n[1]*Ja,u=t[1]*Ja,a=Math.sin(r),o=Math.cos(r),c=Math.sin(i),l=Math.cos(i),f=Math.sin(u),s=Math.cos(u);return
Math.atan2(Math.sqrt((e=s*a)*e+(e=l*f-c*s*o)*e),c*f+l*s*o)},va.geo.graticule=function(){function
n(){return{type:"MultiLineString",coordinates:t()}}function t(){return
va.range(Math.ceil(u/m)*m,i,m).map(h).concat(va.range(Math.ceil(l/v)*v,c,v).map(g))
.concat(va.range(Math.ceil(r/p)*p,e,p).filter(function(n){return
Math.abs(n%m)>$a}).map(f)).concat(va.range(Math.ceil(o/d)*d,a,d).filter(function(n){return
Math.abs(n%v)>$a}).map(s))}var e,r,i,u,a,o,c,l,f,s,h,g,p=10,d=p,m=90,v=360,y=2.5;return
n.lines=function(){return
t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(u).concat(g(c).slice(1),h(i).reverse().slice(1),g(l).reverse().slice(1))]}},n.extent=function(t){return
arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return
arguments.length?(u=+t[0][0],i=+t[1][0],l=+t[0][1],c=+t[1][1],u>i&&(t=u,u=i,i=t),l>c&&(t=l,l=c,c=t),n.precision(y)):[[u,l],[i,c]]},n.minorExtent=function(t){return
arguments.length?(r=+t[0][0],e=+t[1][0],o=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),o>a&&(t=o,o=a,a=t),n.precision(y)):[[r,o],[e,a]]},n.step=function(t){return
arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=fu
nction(t){return
arguments.length?(m=+t[0],v=+t[1],n):[m,v]},n.minorStep=function(t){return
arguments.length?(p=+t[0],d=+t[1],n):[p,d]},n.precision=function(t){return
arguments.length?(y=+t,f=Ee(o,a,90),s=ke(r,e,y),h=Ee(l,c,90),g=ke(u,i,y),n):y},n.majorExtent([[-180,-90+$a],[180,90-$a]]).minorExtent([[-180,-80-$a],[180,80+$a]])},va.geo.greatArc=function(){function
n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||i.apply(this,arguments)]}}var
t,e,r=Ae,i=Ne;return n.distance=function(){return
va.geo.distance(t||r.apply(this,arguments),e||i.apply(this,arguments))},n.source=function(e){return
arguments.length?(r=e,t="function"==typeof
e?null:e,n):r},n.target=function(t){return
arguments.length?(i=t,e="function"==typeof
t?null:t,n):i},n.precision=function(){return
arguments.length?n:0},n},va.geo.interpolate=function(n,t){return
qe(n[0]*Ja,n[1]*Ja,t[0]*Ja,t[1]*Ja)},va.geo.length=function(n){return
Jo=0,va.geo.stream(n,Go),Jo};var Jo,Go={sphere:f,point:f,line
Start:Te,lineEnd:f,polygonStart:f,polygonEnd:f},Ko=Ce(function(n){return
Math.sqrt(2/(1+n))},function(n){return
2*Math.asin(n/2)});(va.geo.azimuthalEqualArea=function(){return de(Ko)}).raw=Ko;var
Qo=Ce(function(n){var t=Math.acos(n);return
t&&t/Math.sin(t)},st);(va.geo.azimuthalEquidistant=function(){return
de(Qo)}).raw=Qo,(va.geo.conicConformal=function(){return
ee(ze)}).raw=ze,(va.geo.conicEquidistant=function(){return ee(De)}).raw=De;var
nc=Ce(function(n){return 1/n},Math.atan);(va.geo.gnomonic=function(){return
de(nc)}).raw=nc,je.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Ba/2]},(va.geo.mercator=function(){return
Le(je)}).raw=je;var tc=Ce(function(){return
1},Math.asin);(va.geo.orthographic=function(){return de(tc)}).raw=tc;var
ec=Ce(function(n){return 1/(1+n)},function(n){return
2*Math.atan(n)});(va.geo.stereographic=function(){return
de(ec)}).raw=ec,He.invert=function(n,t){return[Math.atan2(I(n),Math.cos(t)),U(Math.sin(t)/V(n))]},(va.geo.transverseMercator=
function(){return Le(He)}).raw=He,va.geom={},va.svg={},va.svg.line=function(){return
Fe(st)};var
rc=va.map({linear:Re,"linear-closed":Ye,step:Ue,"step-before":Ie,"step-after":Ve,basis:Je,"basis-open":Ge,"basis-closed":Ke,bundle:Qe,cardinal:Be,"cardinal-open":Xe,"cardinal-closed":Ze,monotone:ur});rc.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)
+});var
ic=[0,2/3,1/3,0],uc=[0,1/3,2/3,0],ac=[0,1/6,2/3,1/6];va.geom.hull=function(n){function
t(n){if(n.length<3)return[];var
t,i,u,a,o,c,l,f,s,h,g,p,d=ft(e),m=ft(r),v=n.length,y=v-1,M=[],x=[],b=0;if(d===Pe&&r===Oe)t=n;else
for(u=0,t=[];v>u;++u)t.push([+d.call(this,i=n[u],u),+m.call(this,i,u)]);for(u=1;v>u;++u)(t[u][1]<t[b][1]||t[u][1]==t[b][1]&&t[u][0]<t[b][0])&&(b=u);for(u=0;v>u;++u)u!==b&&(c=t[u][1]-t[b][1],o=t[u][0]-t[b][0],M.push({angle:Math.atan2(c,o),index:u}));for(M.sort(function(n,t){return
n.angle-t.angle}),g=M[0].angle,h=M[0].index,s=0,u=1;y>u;++u){if(a=M[u].index,g==M[u].angle){if(o=t[h][0]-t[b][0],c=t[h][1]-t[b][1],l=t[a][0]-t[b][0],f=t[a][1]-t[b][1],o*o+c*c>=l*l+f*f){M[u].index=-1;continue}M[s].index=-1}g=M[u].angle,s=u,h=a}for(x.push(b),u=0,a=0;2>u;++a)M[a].index>-1&&(x.push(M[a].index),u++);for(p=x.length;y>a;++a)if(!(M[a].index<0)){for(;!ar(x[p-2],x[p-1],M[a].index,t);)--p;x[p++]=M[a].index}var
_=[];for(u=p-1;u>=0;--u)_.push(n[x[u]]);return _}var e=Pe,r=Oe;r
eturn arguments.length?t(n):(t.x=function(n){return
arguments.length?(e=n,t):e},t.y=function(n){return
arguments.length?(r=n,t):r},t)},va.geom.polygon=function(n){return
n.area=function(){for(var
t=0,e=n.length,r=n[e-1][1]*n[0][0]-n[e-1][0]*n[0][1];++t<e;)r+=n[t-1][1]*n[t][0]-n[t-1][0]*n[t][1];return.5*r},n.centroid=function(t){var
e,r,i=-1,u=n.length,a=0,o=0,c=n[u-1];for(arguments.length||(t=-1/(6*n.area()));++i<u;)e=c,c=n[i],r=e[0]*c[1]-c[0]*e[1],a+=(e[0]+c[0])*r,o+=(e[1]+c[1])*r;return[a*t,o*t]},n.clip=function(t){for(var
e,r,i,u,a,o,c=-1,l=n.length,f=n[l-1];++c<l;){for(e=t.slice(),t.length=0,u=n[c],a=e[(i=e.length)-1],r=-1;++r<i;)o=e[r],or(o,f,u)?(or(a,f,u)||t.push(cr(a,o,f,u)),t.push(o)):or(a,f,u)&&t.push(cr(a,o,f,u)),a=o;f=u}return
t},n},va.geom.delaunay=function(n){var t=n.map(function(){return[]}),e=[];return
lr(n,function(e){t[e.region.l.index].push(n[e.region.r.index])}),t.forEach(function(t,r){var
i=n[r],u=i[0],a=i[1];t.forEach(function(n){n.angle=Math.atan2(n[0]-
u,n[1]-a)}),t.sort(function(n,t){return n.angle-t.angle});for(var
o=0,c=t.length-1;c>o;o++)e.push([i,t[o],t[o+1]])}),e},va.geom.voronoi=function(n){function
t(n){var
t,u,a,o=n.map(function(){return[]}),c=ft(e),l=ft(r),f=n.length,s=1e6;if(c===Pe&&l===Oe)t=n;else
for(t=new
Array(f),a=0;f>a;++a)t[a]=[+c.call(this,u=n[a],a),+l.call(this,u,a)];if(lr(t,function(n){var
t,e,r,i,u,a;1===n.a&&n.b>=0?(t=n.ep.r,e=n.ep.l):(t=n.ep.l,e=n.ep.r),1===n.a?(u=t?t.y:-s,r=n.c-n.b*u,a=e?e.y:s,i=n.c-n.b*a):(r=t?t.x:-s,u=n.c-n.a*r,i=e?e.x:s,a=n.c-n.a*i);var
c=[r,u],l=[i,a];o[n.region.l.index].push(c,l),o[n.region.r.index].push(c,l)}),o=o.map(function(n,e){var
r=t[e][0],i=t[e][1],u=n.map(function(n){return
Math.atan2(n[0]-r,n[1]-i)}),a=va.range(n.length).sort(function(n,t){return
u[n]-u[t]});return
a.filter(function(n,t){return!t||u[n]-u[a[t-1]]>$a}).map(function(t){return
n[t]})}),o.forEach(function(n,e){var r=n.length;if(!r)return
n.push([-s,-s],[-s,s],[s,s],[s,-s]);if(!(r>2)){var i=t[e],u=n[0],a=n
[1],o=i[0],c=i[1],l=u[0],f=u[1],h=a[0],g=a[1],p=Math.abs(h-l),d=g-f;if(Math.abs(d)<$a){var
m=f>c?-s:s;n.push([-s,m],[s,m])}else if($a>p){var
v=l>o?-s:s;n.push([v,-s],[v,s])}else{var
m=(l-o)*(g-f)>(h-l)*(f-c)?s:-s,y=Math.abs(d)-p;Math.abs(y)<$a?n.push([0>d?m:-m,m]):(y>0&&(m*=-1),n.push([-s,m],[s,m]))}}}),i)for(a=0;f>a;++a)i.clip(o[a]);for(a=0;f>a;++a)o[a].point=n[a];return
o}var e=Pe,r=Oe,i=null;return arguments.length?t(n):(t.x=function(n){return
arguments.length?(e=n,t):e},t.y=function(n){return
arguments.length?(r=n,t):r},t.clipExtent=function(n){if(!arguments.length)return
i&&[i[0],i[2]];if(null==n)i=null;else{var
e=+n[0][0],r=+n[0][1],u=+n[1][0],a=+n[1][1];i=va.geom.polygon([[e,r],[e,a],[u,a],[u,r]])}return
t},t.size=function(n){return
arguments.length?t.clipExtent(n&&[[0,0],n]):i&&i[2]},t.links=function(n){var
t,i,u,a=n.map(function(){return[]}),o=[],c=ft(e),l=ft(r),f=n.length;if(c===Pe&&l===Oe)t=n;else
for(t=new Array(f),u=0;f>u;++u)t[u]=[+c.call(this,i=n[u],u),+l.call
(this,i,u)];return lr(t,function(t){var
e=t.region.l.index,r=t.region.r.index;a[e][r]||(a[e][r]=a[r][e]=!0,o.push({source:n[e],target:n[r]}))}),o},t.triangles=function(n){if(e===Pe&&r===Oe)return
va.geom.delaunay(n);for(var t,i=new
Array(c),u=ft(e),a=ft(r),o=-1,c=n.length;++o<c;)(i[o]=[+u.call(this,t=n[o],o),+a.call(this,t,o)]).data=t;return
va.geom.delaunay(i).map(function(n){return n.map(function(n){return n.data})})},t)};var
oc={l:"r",r:"l"};va.geom.quadtree=function(n,t,e,r,i){function
u(n){function u(n,t,e,r,i,u,a,o){if(!isNaN(e)&&!isNaN(r))if(n.leaf){var
c=n.x,f=n.y;if(null!=c)if(Math.abs(c-e)+Math.abs(f-r)<.01)l(n,t,e,r,i,u,a,o);else{var
s=n.point;n.x=n.y=n.point=null,l(n,s,c,f,i,u,a,o),l(n,t,e,r,i,u,a,o)}else
n.x=e,n.y=r,n.point=t}else l(n,t,e,r,i,u,a,o)}function l(n,t,e,r,i,a,o,c){var
l=.5*(i+o),f=.5*(a+c),s=e>=l,h=r>=f,g=(h<<1)+s;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=hr()),s?i=l:o=l,h?a=f:c=f,u(n,t,e,r,i,a,o,c)}var
f,s,h,g,p,d,m,v,y,M=ft(o),x=ft(c);if(null!=t)d=t,m=e
,v=r,y=i;else
if(v=y=-(d=m=1/0),s=[],h=[],p=n.length,a)for(g=0;p>g;++g)f=n[g],f.x<d&&(d=f.x),f.y<m&&(m=f.y),f.x>v&&(v=f.x),f.y>y&&(y=f.y),s.push(f.x),h.push(f.y);else
for(g=0;p>g;++g){var
b=+M(f=n[g],g),_=+x(f,g);d>b&&(d=b),m>_&&(m=_),b>v&&(v=b),_>y&&(y=_),s.push(b),h.push(_)}var
w=v-d,S=y-m;w>S?y=m+w:v=d+S;var
E=hr();if(E.add=function(n){u(E,n,+M(n,++g),+x(n,g),d,m,v,y)},E.visit=function(n){gr(n,E,d,m,v,y)},g=-1,null==t){for(;++g<p;)u(E,n[g],s[g],h[g],d,m,v,y);--g}else
n.forEach(E.add);return s=h=n=f=null,E}var
a,o=Pe,c=Oe;return(a=arguments.length)?(o=fr,c=sr,3===a&&(i=e,r=t,e=t=0),u(n)):(u.x=function(n){return
arguments.length?(o=n,u):o},u.y=function(n){return
arguments.length?(c=n,u):c},u.extent=function(n){return
arguments.length?(null==n?t=e=r=i=null:(t=+n[0][0],e=+n[0][1],r=+n[1][0],i=+n[1][1]),u):null==t?null:[[t,e],[r,i]]},u.size=function(n){return
arguments.length?(null==n?t=e=r=i=null:(t=e=0,r=+n[0],i=+n[1]),u):null==t?null:[r-t,i-e]},u)},va.interpolateRgb=pr,va.t
ransform=function(n){var
t=ya.createElementNS(va.ns.prefix.svg,"g");return(va.transform=function(n){if(null!=n){t.setAttribute("transform",n);var
e=t.transform.baseVal.consolidate()}return new
dr(e?e.matrix:cc)})(n)},dr.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var
cc={a:1,b:0,c:0,d:1,e:0,f:0};va.interpolateNumber=Mr,va.interpolateTransform=xr,va.interpolateObject=br,va.interpolateString=_r;var
lc=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g;va.interpolate=wr,va.interpolators=[function(n,t){var
e=typeof t;return("string"===e?uo.has(t)||/^(#|rgb\(|hsl\()/.test(t)?pr:_r:t
instanceof
H?pr:"object"===e?Array.isArray(t)?Er:br:Mr)(n,t)}],va.interpolateArray=Er;var
fc=function(){return st},sc=va.map({linear:fc,poly:zr,quad:function(){return
qr},cubic:function(){return Tr},sin:function(){return Dr},exp:function(){return
jr},circle:function(){return Lr},elastic:Hr,back:Fr,bounce:function(){ret
urn
Pr}}),hc=va.map({"in":st,out:Ar,"in-out":Nr,"out-in":function(n){return
Nr(Ar(n))}});va.ease=function(n){var
t=n.indexOf("-"),e=t>=0?n.substring(0,t):n,r=t>=0?n.substring(t+1):"in";return
e=sc.get(e)||fc,r=hc.get(r)||st,kr(r(e.apply(null,Array.prototype.slice.call(arguments,1))))},va.interpolateHcl=Or,va.interpolateHsl=Rr,va.interpolateLab=Yr,va.interpolateRound=Ur,va.layout={},va.layout.bundle=function(){return
function(n){for(var t=[],e=-1,r=n.length;++e<r;)t.push(Xr(n[e]));return
t}},va.layout.chord=function(){function n(){var
n,l,s,h,g,p={},d=[],m=va.range(u),v=[];for(e=[],r=[],n=0,h=-1;++h<u;){for(l=0,g=-1;++g<u;)l+=i[h][g];d.push(l),v.push(va.range(u)),n+=l}for(a&&m.sort(function(n,t){return
a(d[n],d[t])}),o&&v.forEach(function(n,t){n.sort(function(n,e){return
o(i[t][n],i[t][e])})}),n=(2*Ba-f*u)/n,l=0,h=-1;++h<u;){for(s=l,g=-1;++g<u;){var
y=m[h],M=v[y][g],x=i[y][M],b=l,_=l+=x*n;p[y+"-"+M]={index:y,subindex:M,startAngle:b,endAngle:_,value:x}}r[y]={index:y,startAngle
:s,endAngle:l,value:(l-s)/n},l+=f}for(h=-1;++h<u;)for(g=h-1;++g<u;){var
w=p[h+"-"+g],S=p[g+"-"+h];(w.value||S.value)&&e.push(w.value<S.value?{source:S,target:w}:{source:w,target:S})}c&&t()}function
t(){e.sort(function(n,t){return
c((n.source.value+n.target.value)/2,(t.source.value+t.target.value)/2)})}var
e,r,i,u,a,o,c,l={},f=0;return l.matrix=function(n){return
arguments.length?(u=(i=n)&&i.length,e=r=null,l):i},l.padding=function(n){return
arguments.length?(f=n,e=r=null,l):f},l.sortGroups=function(n){return
arguments.length?(a=n,e=r=null,l):a},l.sortSubgroups=function(n){return
arguments.length?(o=n,e=null,l):o},l.sortChords=function(n){return
arguments.length?(c=n,e&&t(),l):c},l.chords=function(){return
e||n(),e},l.groups=function(){return r||n(),r},l},va.layout.force=function(){function
n(n){return function(t,e,r,i){if(t.point!==n){var
u=t.cx-n.x,a=t.cy-n.y,o=1/Math.sqrt(u*u+a*a);if(d>(i-e)*o){var c=t.charge*o*o;return
n.px-=u*c,n.py-=a*c,!0}if(t.point&&isFinite(o)){var c
=t.pointCharge*o*o;n.px-=u*c,n.py-=a*c}}return!t.charge}}function
t(n){n.px=va.event.x,n.py=va.event.y,o.resume()}var
e,r,i,u,a,o={},c=va.dispatch("start","tick","end"),l=[1,1],f=.9,s=gc,h=pc,g=-30,p=.1,d=.8,m=[],v=[];return
o.tick=function(){if((r*=.99)<.005)return
c.end({type:"end",alpha:r=0}),!0;var
t,e,o,s,h,d,y,M,x,b=m.length,_=v.length;for(e=0;_>e;++e)o=v[e],s=o.source,h=o.target,M=h.x-s.x,x=h.y-s.y,(d=M*M+x*x)&&(d=r*u[e]*((d=Math.sqrt(d))-i[e])/d,M*=d,x*=d,h.x-=M*(y=s.weight/(h.weight+s.weight)),h.y-=x*y,s.x+=M*(y=1-y),s.y+=x*y);if((y=r*p)&&(M=l[0]/2,x=l[1]/2,e=-1,y))for(;++e<b;)o=m[e],o.x+=(M-o.x)*y,o.y+=(x-o.y)*y;if(g)for(Kr(t=va.geom.quadtree(m),r,a),e=-1;++e<b;)(o=m[e]).fixed||t.visit(n(o));for(e=-1;++e<b;)o=m[e],o.fixed?(o.x=o.px,o.y=o.py):(o.x-=(o.px-(o.px=o.x))*f,o.y-=(o.py-(o.py=o.y))*f);c.tick({type:"tick",alpha:r})},o.nodes=function(n){return
arguments.length?(m=n,o):m},o.links=function(n){return
arguments.length?(v=n,o):v},o.size=function(n){return argument
s.length?(l=n,o):l},o.linkDistance=function(n){return
arguments.length?(s="function"==typeof
n?n:+n,o):s},o.distance=o.linkDistance,o.linkStrength=function(n){return
arguments.length?(h="function"==typeof
n?n:+n,o):h},o.friction=function(n){return
arguments.length?(f=+n,o):f},o.charge=function(n){return
arguments.length?(g="function"==typeof n?n:+n,o):g},o.gravity=function(n){return
arguments.length?(p=+n,o):p},o.theta=function(n){return
arguments.length?(d=+n,o):d},o.alpha=function(n){return
arguments.length?(n=+n,r?r=n>0?n:0:n>0&&(c.start({type:"start",alpha:r=n}),va.timer(o.tick)),o):r},o.start=function(){function
n(n,r){for(var i,u=t(e),a=-1,o=u.length;++a<o;)if(!isNaN(i=u[a][n]))return i;return
Math.random()*r}function
t(){if(!c){for(c=[],r=0;p>r;++r)c[r]=[];for(r=0;d>r;++r){var
n=v[r];c[n.source.index].push(n.target),c[n.target.index].push(n.source)}}return c[e]}var
e,r,c,f,p=m.length,d=v.length,y=l[0],M=l[1];for(e=0;p>e;++e)(f=m[e]).index=e,f.weight=0;for(e=0;d>e;++e)
f=v[e],"number"==typeof
f.source&&(f.source=m[f.source]),"number"==typeof
f.target&&(f.target=m[f.target]),++f.source.weight,++f.target.weight;for(e=0;p>e;++e)f=m[e],isNaN(f.x)&&(f.x=n("x",y)),isNaN(f.y)&&(f.y=n("y",M)),isNaN(f.px)&&(f.px=f.x),isNaN(f.py)&&(f.py=f.y);if(i=[],"function"==typeof
s)for(e=0;d>e;++e)i[e]=+s.call(this,v[e],e);else
for(e=0;d>e;++e)i[e]=s;if(u=[],"function"==typeof
h)for(e=0;d>e;++e)u[e]=+h.call(this,v[e],e);else
for(e=0;d>e;++e)u[e]=h;if(a=[],"function"==typeof
g)for(e=0;p>e;++e)a[e]=+g.call(this,m[e],e);else for(e=0;p>e;++e)a[e]=g;return
o.resume()},o.resume=function(){return o.alpha(.1)},o.stop=function(){return
o.alpha(0)},o.drag=function(){return
e||(e=va.behavior.drag().origin(st).on("dragstart.force",$r).on("drag.force",t).on("dragend.force",Wr)),arguments.length?(this.on("mouseover.force",Jr).on("mouseout.force",Gr).call(e),void
0):e},va.rebind(o,c,"on")};var
gc=20,pc=1;va.layout.hierarchy=function(){function n(t,a,o){var c=i.call(e,t,a);if(
t.depth=a,o.push(t),c&&(l=c.length)){for(var
l,f,s=-1,h=t.children=[],g=0,p=a+1;++s<l;)f=n(c[s],p,o),f.parent=t,h.push(f),g+=f.value;r&&h.sort(r),u&&(t.value=g)}else
u&&(t.value=+u.call(e,t,a)||0);return t}function t(n,r){var
i=n.children,a=0;if(i&&(o=i.length))for(var
o,c=-1,l=r+1;++c<o;)a+=t(i[c],l);else u&&(a=+u.call(e,n,r)||0);return
u&&(n.value=a),a}function e(t){var e=[];return n(t,0,e),e}var
r=ei,i=ni,u=ti;return e.sort=function(n){return
arguments.length?(r=n,e):r},e.children=function(n){return
arguments.length?(i=n,e):i},e.value=function(n){return
arguments.length?(u=n,e):u},e.revalue=function(n){return
t(n,0),n},e},va.layout.partition=function(){function n(t,e,r,i){var
u=t.children;if(t.x=e,t.y=t.depth*i,t.dx=r,t.dy=i,u&&(a=u.length)){var
a,o,c,l=-1;for(r=t.value?r/t.value:0;++l<a;)n(o=u[l],e,c=o.value*r,i),e+=c}}function
t(n){var e=n.children,r=0;if(e&&(i=e.length))for(var
i,u=-1;++u<i;)r=Math.max(r,t(e[u]));return 1+r}function e(e,u){var
a=r.call(this,e,u);return
n(a[0],0,i[0],i[1]/t(a[0])),a}var r=va.layout.hierarchy(),i=[1,1];return
e.size=function(n){return
arguments.length?(i=n,e):i},Qr(e,r)},va.layout.pie=function(){function n(u){var
a=u.map(function(e,r){return+t.call(n,e,r)}),o=+("function"==typeof
r?r.apply(this,arguments):r),c=(("function"==typeof
i?i.apply(this,arguments):i)-o)/va.sum(a),l=va.range(u.length);null!=e&&l.sort(e===dc?function(n,t){return
a[t]-a[n]}:function(n,t){return e(u[n],u[t])});var f=[];return l.forEach(function(n){var
t;f[n]={data:u[n],value:t=a[n],startAngle:o,endAngle:o+=t*c}}),f}var
t=Number,e=dc,r=0,i=2*Ba;return n.value=function(e){return
arguments.length?(t=e,n):t},n.sort=function(t){return
arguments.length?(e=t,n):e},n.startAngle=function(t){return
arguments.length?(r=t,n):r},n.endAngle=function(t){return
arguments.length?(i=t,n):i},n};var dc={};va.layout.stack=function(){function n(o,c){var
l=o.map(function(e,r){return t.call(n,e,r)}),f=l.map(function(t){return
t.map(function(t,e){return[u.call
(n,t,e),a.call(n,t,e)]})}),s=e.call(n,f,c);l=va.permute(l,s),f=va.permute(f,s);var
h,g,p,d=r.call(n,f,c),m=l.length,v=l[0].length;for(g=0;v>g;++g)for(i.call(n,l[0][g],p=d[g],f[0][g][1]),h=1;m>h;++h)i.call(n,l[h][g],p+=f[h-1][g][1],f[h][g][1]);return
o}var t=st,e=oi,r=ci,i=ai,u=ii,a=ui;return n.values=function(e){return
arguments.length?(t=e,n):t},n.order=function(t){return
arguments.length?(e="function"==typeof
t?t:mc.get(t)||oi,n):e},n.offset=function(t){return
arguments.length?(r="function"==typeof
t?t:vc.get(t)||ci,n):r},n.x=function(t){return
arguments.length?(u=t,n):u},n.y=function(t){return
arguments.length?(a=t,n):a},n.out=function(t){return arguments.length?(i=t,n):i},n};var
mc=va.map({"inside-out":function(n){var
t,e,r=n.length,i=n.map(li),u=n.map(fi),a=va.range(r).sort(function(n,t){return
i[n]-i[t]}),o=0,c=0,l=[],f=[];for(t=0;r>t;++t)e=a[t],c>o?(o+=u[e],l.push(e)):(c+=u[e],f.push(e));return
f.reverse().concat(l)},reverse:function(n){return va.range(n.length).rever
se()},"default":oi}),vc=va.map({silhouette:function(n){var
t,e,r,i=n.length,u=n[0].length,a=[],o=0,c=[];for(e=0;u>e;++e){for(t=0,r=0;i>t;t++)r+=n[t][e][1];r>o&&(o=r),a.push(r)}for(e=0;u>e;++e)c[e]=(o-a[e])/2;return
c},wiggle:function(n){var
t,e,r,i,u,a,o,c,l,f=n.length,s=n[0],h=s.length,g=[];for(g[0]=c=l=0,e=1;h>e;++e){for(t=0,i=0;f>t;++t)i+=n[t][e][1];for(t=0,u=0,o=s[e][0]-s[e-1][0];f>t;++t){for(r=0,a=(n[t][e][1]-n[t][e-1][1])/(2*o);t>r;++r)a+=(n[r][e][1]-n[r][e-1][1])/o;u+=a*n[t][e][1]}g[e]=c-=i?u/i*o:0,l>c&&(l=c)}for(e=0;h>e;++e)g[e]-=l;return
g},expand:function(n){var
t,e,r,i=n.length,u=n[0].length,a=1/i,o=[];for(e=0;u>e;++e){for(t=0,r=0;i>t;t++)r+=n[t][e][1];if(r)for(t=0;i>t;t++)n[t][e][1]/=r;else
for(t=0;i>t;t++)n[t][e][1]=a}for(e=0;u>e;++e)o[e]=0;return
o},zero:ci});va.layout.histogram=function(){function n(n,u){for(var
a,o,c=[],l=n.map(e,this),f=r.call(this,l,u),s=i.call(this,f,l,u),u=-1,h=l.length,g=s.length-1,p=t?1:1/h;++u<g;)a=c[u]=[],a.dx=s[u+1]-(a.x=s[u]),a.y=0;
if(g>0)for(u=-1;++u<h;)o=l[u],o>=f[0]&&o<=f[1]&&(a=c[va.bisect(s,o,1,g)-1],a.y+=p,a.push(n[u]));return
c}var t=!0,e=Number,r=pi,i=hi;return n.value=function(t){return
arguments.length?(e=t,n):e},n.range=function(t){return
arguments.length?(r=ft(t),n):r},n.bins=function(t){return
arguments.length?(i="number"==typeof t?function(n){return
gi(n,t)}:ft(t),n):i},n.frequency=function(e){return
arguments.length?(t=!!e,n):t},n},va.layout.tree=function(){function n(n,u){function
a(n,t){var r=n.children,i=n._tree;if(r&&(u=r.length)){for(var
u,o,l,f=r[0],s=f,h=-1;++h<u;)l=r[h],a(l,o),s=c(l,o,s),o=l;wi(n);var
g=.5*(f._tree.prelim+l._tree.prelim);t?(i.prelim=t._tree.prelim+e(n,t),i.mod=i.prelim-g):i.prelim=g}else
t&&(i.prelim=t._tree.prelim+e(n,t))}function o(n,t){n.x=n._tree.prelim+t;var
e=n.children;if(e&&(r=e.length)){var
r,i=-1;for(t+=n._tree.mod;++i<r;)o(e[i],t)}}function c(n,t,r){if(t){for(var
i,u=n,a=n,o=t,c=n.parent.children[0],l=u._tree.mod,f=a._tree.mod,s=o._tree.mod,h=c._tree.m
od;o=vi(o),u=mi(u),o&&u;)c=mi(c),a=vi(a),a._tree.ancestor=n,i=o._tree.prelim+s-u._tree.prelim-l+e(o,u),i>0&&(Si(Ei(o,n,r),n,i),l+=i,f+=i),s+=o._tree.mod,l+=u._tree.mod,h+=c._tree.mod,f+=a._tree.mod;o&&!vi(a)&&(a._tree.thread=o,a._tree.mod+=s-f),u&&!mi(c)&&(c._tree.thread=u,c._tree.mod+=l-h,r=n)}return
r}var
l=t.call(this,n,u),f=l[0];_i(f,function(n,t){n._tree={ancestor:n,prelim:0,mod:0,change:0,shift:0,number:t?t._tree.number+1:0}}),a(f),o(f,-f._tree.prelim);var
s=yi(f,xi),h=yi(f,Mi),g=yi(f,bi),p=s.x-e(s,h)/2,d=h.x+e(h,s)/2,m=g.depth||1;return
_i(f,i?function(n){n.x*=r[0],n.y=n.depth*r[1],delete
n._tree}:function(n){n.x=(n.x-p)/(d-p)*r[0],n.y=n.depth/m*r[1],delete n._tree}),l}var
t=va.layout.hierarchy().sort(null).value(null),e=di,r=[1,1],i=!1;return
n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return
arguments.length?(i=null==(r=t),n):i?null:r},n.nodeSize=function(t){return
arguments.length?(i=null!=(r=t),n):i?r:null},Qr(n,t)},va.layout.pac
k=function(){function n(n,u){var
a=e.call(this,n,u),o=a[0],c=i[0],l=i[1],f=t||Math.sqrt;if(o.x=o.y=0,_i(o,function(n){n.r=f(n.value)}),_i(o,Ti),r){var
s=r*(t?1:Math.max(2*o.r/c,2*o.r/l))/2;_i(o,function(n){n.r+=s}),_i(o,Ti),_i(o,function(n){n.r-=s})}return
Di(o,c/2,l/2,t?1:1/Math.max(2*o.r/c,2*o.r/l)),a}var
t,e=va.layout.hierarchy().sort(ki),r=0,i=[1,1];return n.size=function(t){return
arguments.length?(i=t,n):i},n.radius=function(e){return
arguments.length?(t=e,n):t},n.padding=function(t){return
arguments.length?(r=+t,n):r},Qr(n,e)},va.layout.cluster=function(){function n(n,u){var
a,o=t.call(this,n,u),c=o[0],l=0;_i(c,function(n){var
t=n.children;t&&t.length?(n.x=Hi(t),n.y=Li(t)):(n.x=a?l+=e(n,a):0,n.y=0,a=n)});var
f=Fi(c),s=Pi(c),h=f.x-e(f,s)/2,g=s.x+e(s,f)/2;return
_i(c,i?function(n){n.x=(n.x-c.x)*r[0],n.y=(c.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(c.y?n.y/c.y:1))*r[1]}),o}var
t=va.layout.hierarchy().sort(null).value(null),e=di,r=[1,1],i=!1;return n.separat
ion=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return
arguments.length?(i=null==(r=t),n):i?null:r},n.nodeSize=function(t){return
arguments.length?(i=null!=(r=t),n):i?r:null},Qr(n,t)},va.layout.treemap=function(){function
n(n,t){for(var
e,r,i=-1,u=n.length;++i<u;)r=(e=n[i]).value*(0>t?0:t),e.area=isNaN(r)||0>=r?0:r}function
t(e){var u=e.children;if(u&&u.length){var
a,o,c,l=s(e),f=[],h=u.slice(),p=1/0,d="slice"===g?l.dx:"dice"===g?l.dy:"slice-dice"===g?1&e.depth?l.dy:l.dx:Math.min(l.dx,l.dy);for(n(h,l.dx*l.dy/e.value),f.area=0;(c=h.length)>0;)f.push(a=h[c-1]),f.area+=a.area,"squarify"!==g||(o=r(f,d))<=p?(h.pop(),p=o):(f.area-=f.pop().area,i(f,d,l,!1),d=Math.min(l.dx,l.dy),f.length=f.area=0,p=1/0);f.length&&(i(f,d,l,!0),f.length=f.area=0),u.forEach(t)}}function
e(t){var r=t.children;if(r&&r.length){var
u,a=s(t),o=r.slice(),c=[];for(n(o,a.dx*a.dy/t.value),c.area=0;u=o.pop();)c.push(u),c.area+=u.area,null!=u.z&&(i(c,u.z?a.dx:a.dy,a,!o.length),c.length=c.are
a=0);r.forEach(e)}}function r(n,t){for(var
e,r=n.area,i=0,u=1/0,a=-1,o=n.length;++a<o;)(e=n[a].area)&&(u>e&&(u=e),e>i&&(i=e));return
r*=r,t*=t,r?Math.max(t*i*p/r,r/(t*u*p)):1/0}function i(n,t,e,r){var
i,u=-1,a=n.length,o=e.x,l=e.y,f=t?c(n.area/t):0;if(t==e.dx){for((r||f>e.dy)&&(f=e.dy);++u<a;)i=n[u],i.x=o,i.y=l,i.dy=f,o+=i.dx=Math.min(e.x+e.dx-o,f?c(i.area/f):0);i.z=!0,i.dx+=e.x+e.dx-o,e.y+=f,e.dy-=f}else{for((r||f>e.dx)&&(f=e.dx);++u<a;)i=n[u],i.x=o,i.y=l,i.dx=f,l+=i.dy=Math.min(e.y+e.dy-l,f?c(i.area/f):0);i.z=!1,i.dy+=e.y+e.dy-l,e.x+=f,e.dx-=f}}function
u(r){var i=a||o(r),u=i[0];return
u.x=0,u.y=0,u.dx=l[0],u.dy=l[1],a&&o.revalue(u),n([u],u.dx*u.dy/u.value),(a?e:t)(u),h&&(a=i),i}var
a,o=va.layout.hierarchy(),c=Math.round,l=[1,1],f=null,s=Oi,h=!1,g="squarify",p=.5*(1+Math.sqrt(5));return
u.size=function(n){return arguments.length?(l=n,u):l},u.padding=function(n){function
t(t){var e=n.call(u,t,t.depth);return null==e?Oi(t):Ri(t,"number"==typeof
e?[e,e,e,e]:e)}function e(t){r
eturn Ri(t,n)}if(!arguments.length)return f;var r;return
s=null==(f=n)?Oi:"function"==(r=typeof
n)?t:"number"===r?(n=[n,n,n,n],e):e,u},u.round=function(n){return
arguments.length?(c=n?Math.round:Number,u):c!=Number},u.sticky=function(n){return
arguments.length?(h=n,a=null,u):h},u.ratio=function(n){return
arguments.length?(p=n,u):p},u.mode=function(n){return
arguments.length?(g=n+"",u):g},Qr(u,o)},va.random={normal:function(n,t){var
e=arguments.length;return 2>e&&(t=1),1>e&&(n=0),function(){var
e,r,i;do e=2*Math.random()-1,r=2*Math.random()-1,i=e*e+r*r;while(!i||i>1);return
n+t*e*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(){var
n=va.random.normal.apply(va,arguments);return function(){return
Math.exp(n())}},irwinHall:function(n){return function(){for(var
t=0,e=0;n>e;e++)t+=Math.random();return t/n}}},va.scale={};var
yc={floor:st,ceil:st};va.scale.linear=function(){return
Bi([0,1],[0,1],wr,!1)},va.scale.log=function(){return
nu(va.scale.linear().domain([0,Math.LN10]),10,t
u,eu,[1,10])};var Mc=va.format(".0e");va.scale.pow=function(){return
uu(va.scale.linear(),1,[0,1])},va.scale.sqrt=function(){return
va.scale.pow().exponent(.5)},va.scale.ordinal=function(){return
ou([],{t:"range",a:[[]]})},va.scale.category10=function(){return
va.scale.ordinal().range(xc)},va.scale.category20=function(){return
va.scale.ordinal().range(bc)},va.scale.category20b=function(){return
va.scale.ordinal().range(_c)},va.scale.category20c=function(){return
va.scale.ordinal().range(wc)};var
xc=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],bc=["#1f77b4","#aec7e8","#ff7f0e","#ffbb78","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5","#8c564b","#c49c94","#e377c2","#f7b6d2","#7f7f7f","#c7c7c7","#bcbd22","#dbdb8d","#17becf","#9edae5"],_c=["#393b79","#5254a3","#6b6ecf","#9c9ede","#637939","#8ca252","#b5cf6b","#cedb9c","#8c6d31","#bd9e39","#e7ba52","#e7cb94","#843c39","#ad494a","#d6616b","#e7969c","#7b4173","#a5
5194","#ce6dbd","#de9ed6"],wc=["#3182bd","#6baed6","#9ecae1","#c6dbef","#e6550d","#fd8d3c","#fdae6b","#fdd0a2","#31a354","#74c476","#a1d99b","#c7e9c0","#756bb1","#9e9ac8","#bcbddc","#dadaeb","#636363","#969696","#bdbdbd","#d9d9d9"];va.scale.quantile=function(){return
cu([],[])},va.scale.quantize=function(){return
lu(0,1,[0,1])},va.scale.threshold=function(){return
fu([.5],[0,1])},va.scale.identity=function(){return
su([0,1])},va.svg.arc=function(){function n(){var
n=t.apply(this,arguments),u=e.apply(this,arguments),a=r.apply(this,arguments)+Sc,o=i.apply(this,arguments)+Sc,c=(a>o&&(c=a,a=o,o=c),o-a),l=Ba>c?"0":"1",f=Math.cos(a),s=Math.sin(a),h=Math.cos(o),g=Math.sin(o);return
c>=Ec?n?"M0,"+u+"A"+u+","+u+" 0 1,1
0,"+-u+"A"+u+","+u+" 0 1,1
0,"+u+"M0,"+n+"A"+n+","+n+" 0 1,0
0,"+-n+"A"+n+","+n+" 0 1,0
0,"+n+"Z":"M0,"+u+"A"+u+","+u+" 0 1,1
0,"+-u+"A"+u+","+u+" 0 1,1
0,"+u+"Z":n?"M"+u*f+","+u*s+"A"+u+","+u+"
0 "+l+",1
"+u*h+","+u*g+"L"+n*h+","+n*g+"A"+n+","+n+"
0 "+l+",0 "+n*f+","+
n*s+"Z":"M"+u*f+","+u*s+"A"+u+","+u+"
0 "+l+",1 "+u*h+","+u*g+"L0,0"+"Z"}var
t=hu,e=gu,r=pu,i=du;return n.innerRadius=function(e){return
arguments.length?(t=ft(e),n):t},n.outerRadius=function(t){return
arguments.length?(e=ft(t),n):e},n.startAngle=function(t){return
arguments.length?(r=ft(t),n):r},n.endAngle=function(t){return
arguments.length?(i=ft(t),n):i},n.centroid=function(){var
n=(t.apply(this,arguments)+e.apply(this,arguments))/2,u=(r.apply(this,arguments)+i.apply(this,arguments))/2+Sc;return[Math.cos(u)*n,Math.sin(u)*n]},n};var
Sc=-Ba/2,Ec=2*Ba-1e-6;va.svg.line.radial=function(){var n=Fe(mu);return
n.radius=n.x,delete n.x,n.angle=n.y,delete
n.y,n},Ie.reverse=Ve,Ve.reverse=Ie,va.svg.area=function(){return
vu(st)},va.svg.area.radial=function(){var n=vu(mu);return n.radius=n.x,delete
n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete
n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete
n.y1,n},va.svg.chord=function(){function n(n,o){
var
c=t(this,u,n,o),l=t(this,a,n,o);return"M"+c.p0+r(c.r,c.p1,c.a1-c.a0)+(e(c,l)?i(c.r,c.p1,c.r,c.p0):i(c.r,c.p1,l.r,l.p0)+r(l.r,l.p1,l.a1-l.a0)+i(l.r,l.p1,c.r,c.p0))+"Z"}function
t(n,t,e,r){var
i=t.call(n,e,r),u=o.call(n,i,r),a=c.call(n,i,r)+Sc,f=l.call(n,i,r)+Sc;return{r:u,a0:a,a1:f,p0:[u*Math.cos(a),u*Math.sin(a)],p1:[u*Math.cos(f),u*Math.sin(f)]}}function
e(n,t){return n.a0==t.a0&&n.a1==t.a1}function
r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>Ba)+",1
"+t}function i(n,t,e,r){return"Q 0,0 "+r}var
u=Ae,a=Ne,o=yu,c=pu,l=du;return n.radius=function(t){return
arguments.length?(o=ft(t),n):o},n.source=function(t){return
arguments.length?(u=ft(t),n):u},n.target=function(t){return
arguments.length?(a=ft(t),n):a},n.startAngle=function(t){return
arguments.length?(c=ft(t),n):c},n.endAngle=function(t){return
arguments.length?(l=ft(t),n):l},n},va.svg.diagonal=function(){function n(n,i){var
u=t.call(this,n,i),a=e.call(this,n,i),o=(u.y+a.y)/2,c=[u,{x:u.x,y:o},{x:a.x,y:o},a];return
c=c.map(r),
"M"+c[0]+"C"+c[1]+" "+c[2]+" "+c[3]}var
t=Ae,e=Ne,r=Mu;return n.source=function(e){return
arguments.length?(t=ft(e),n):t},n.target=function(t){return
arguments.length?(e=ft(t),n):e},n.projection=function(t){return
arguments.length?(r=t,n):r},n},va.svg.diagonal.radial=function(){var
n=va.svg.diagonal(),t=Mu,e=n.projection;return n.projection=function(n){return
arguments.length?e(xu(t=n)):t},n},va.svg.symbol=function(){function
n(n,r){return(kc.get(t.call(this,n,r))||wu)(e.call(this,n,r))}var t=_u,e=bu;return
n.type=function(e){return arguments.length?(t=ft(e),n):t},n.size=function(t){return
arguments.length?(e=ft(t),n):e},n};var kc=va.map({circle:wu,cross:function(n){var
t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var
t=Math.sqrt(n/(2*qc)),e=t*qc;return"M0,"+-t+"L"+e+",0"+"
0,"+t+" "+-e+",0"+"Z"},square:function(n){var
t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+"
"+t+",
"+t+"
"+-t+","+t+"Z"},"triangle-down":function(n){var
t=Math.sqrt(n/Nc),e=t*Nc/2;return"M0,"+e+"L"+t+","+-e+"
"+-t+","+-e+"Z"},"triangle-up":function(n){var
t=Math.sqrt(n/Nc),e=t*Nc/2;return"M0,"+-e+"L"+t+","+e+"
"+-t+","+e+"Z"}});va.svg.symbolTypes=kc.keys();var
Ac,Nc=Math.sqrt(3),qc=Math.tan(30*Ja),Tc=[],Cc=0,zc={ease:Cr,delay:0,duration:250};Tc.call=Ha.call,Tc.empty=Ha.empty,Tc.node=Ha.node,Tc.size=Ha.size,va.transition=function(n){return
arguments.length?Ac?n.transition():n:Oa.transition()},va.transition.prototype=Tc,Tc.select=function(n){var
t,e,r,i=this.id,u=[];"function"!=typeof n&&(n=v(n));for(var
a=-1,o=this.length;++a<o;){u.push(t=[]);for(var
c=this[a],l=-1,f=c.length;++l<f;)(r=c[l])&&(e=n.call(r,r.__data__,l))?("__data__"in
r&&(e.__data__=r.__data__),Au(e,l,i,r.__transition__[i]),t.push(e)):t.push(null)}return
Su(u,i)},Tc.selectAll=function(n){var
t,e,r,i,u,a=this.id,o=[];"function"!=typeof n&&(n=y(n));for(var
c=-1,l=this.length;++c<l;)for(var f=this[c],s=-1,h=f.l
ength;++s<h;)if(r=f[s]){u=r.__transition__[a],e=n.call(r,r.__data__,s),o.push(t=[]);for(var
g=-1,p=e.length;++g<p;)(i=e[g])&&Au(i,g,a,u),t.push(i)}return
Su(o,a)},Tc.filter=function(n){var t,e,r,i=[];"function"!=typeof
n&&(n=A(n));for(var u=0,a=this.length;a>u;u++){i.push(t=[]);for(var
e=this[u],o=0,c=e.length;c>o;o++)(r=e[o])&&n.call(r,r.__data__,o)&&t.push(r)}return
Su(i,this.id,this.time).ease(this.ease())},Tc.tween=function(n,t){var e=this.id;return
arguments.length<2?this.node().__transition__[e].tween.get(n):q(this,null==t?function(t){t.__transition__[e].tween.remove(n)}:function(r){r.__transition__[e].tween.set(n,t)})},Tc.attr=function(n,t){function
e(){this.removeAttribute(o)}function r(){this.removeAttributeNS(o.space,o.local)}function
i(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(o);return
e!==n&&(t=a(e,n),function(n){this.setAttribute(o,t(n))})})}function u(n){return
null==n?r:(n+="",function(){var t,e=this.getAttributeNS(o.space,o.local);retur
n
e!==n&&(t=a(e,n),function(n){this.setAttributeNS(o.space,o.local,t(n))})})}if(arguments.length<2){for(t
in n)this.attr(t,n[t]);return this}var a=Sr(n),o=va.ns.qualify(n);return
Eu(this,"attr."+n,t,o.local?u:i)},Tc.attrTween=function(n,t){function e(n,e){var
r=t.call(this,n,e,this.getAttribute(i));return
r&&function(n){this.setAttribute(i,r(n))}}function r(n,e){var
r=t.call(this,n,e,this.getAttributeNS(i.space,i.local));return
r&&function(n){this.setAttributeNS(i.space,i.local,r(n))}}var
i=va.ns.qualify(n);return
this.tween("attr."+n,i.local?r:e)},Tc.style=function(n,t,e){function
r(){this.style.removeProperty(n)}function i(t){return
null==t?r:(t+="",function(){var
r,i=xa.getComputedStyle(this,null).getPropertyValue(n);return
i!==t&&(r=a(i,t),function(t){this.style.setProperty(n,r(t),e)})})}var
u=arguments.length;if(3>u){if("string"!=typeof
n){2>u&&(t="");for(e in n)this.style(e,n[e],t);return
this}e=""}var a=Sr(n);return
Eu(this,"style."+n,t,i)},Tc.styleTween=function(n,t,
e){function r(r,i){var
u=t.call(this,r,i,xa.getComputedStyle(this,null).getPropertyValue(n));return
u&&function(t){this.style.setProperty(n,u(t),e)}}return
arguments.length<3&&(e=""),this.tween("style."+n,r)},Tc.text=function(n){return
Eu(this,"text",n,ku)},Tc.remove=function(){return
this.each("end.transition",function(){var
n;!this.__transition__&&(n=this.parentNode)&&n.removeChild(this)})},Tc.ease=function(n){var
t=this.id;return
arguments.length<1?this.node().__transition__[t].ease:("function"!=typeof
n&&(n=va.ease.apply(va,arguments)),q(this,function(e){e.__transition__[t].ease=n}))},Tc.delay=function(n){var
t=this.id;return q(this,"function"==typeof
n?function(e,r,i){e.__transition__[t].delay=0|n.call(e,e.__data__,r,i)}:(n|=0,function(e){e.__transition__[t].delay=n}))},Tc.duration=function(n){var
t=this.id;return q(this,"function"==typeof
n?function(e,r,i){e.__transition__[t].duration=Math.max(1,0|n.call(e,e.__data__,r,i))}:(n=Math.max(1,0|n),function(e){e.__transition
__[t].duration=n}))},Tc.each=function(n,t){var e=this.id;if(arguments.length<2){var
r=zc,i=Ac;Ac=e,q(this,function(t,r,i){zc=t.__transition__[e],n.call(t,t.__data__,r,i)}),zc=r,Ac=i}else
q(this,function(r){r.__transition__[e].event.on(n,t)});return
this},Tc.transition=function(){for(var
n,t,e,r,i=this.id,u=++Cc,a=[],o=0,c=this.length;c>o;o++){a.push(n=[]);for(var
t=this[o],l=0,f=t.length;f>l;l++)(e=t[l])&&(r=Object.create(e.__transition__[i]),r.delay+=r.duration,Au(e,l,u,r)),n.push(e)}return
Su(a,u)},va.svg.axis=function(){function n(n){n.each(function(){var
n,s=va.select(this),h=null==l?e.ticks?e.ticks.apply(e,c):e.domain():l,g=null==t?e.tickFormat?e.tickFormat.apply(e,c):String:t,p=Tu(e,h,f),d=s.selectAll(".tick.minor").data(p,String),m=d.enter().insert("line",".tick").attr("class","tick
minor").style("opacity",1e-6),v=va.transition(d.exit()).style("opacity",1e-6).remove(),y=va.transition(d).style("opacity",1),M=s.selectAll(".tick.major").data(h,String),x=M.enter().insert(
"g",".domain").attr("class","tick
major").style("opacity",1e-6),b=va.transition(M.exit()).style("opacity",1e-6).remove(),_=va.transition(M).style("opacity",1),w=Ui(e),S=s.selectAll(".domain").data([0]),E=(S.enter().append("path").attr("class","domain"),va.transition(S)),k=e.copy(),A=this.__chart__||k;this.__chart__=k,x.append("line"),x.append("text");
+var
N=x.select("line"),q=_.select("line"),T=M.select("text").text(g),C=x.select("text"),z=_.select("text");switch(r){case"bottom":n=Nu,m.attr("y2",u),y.attr("x2",0).attr("y2",u),N.attr("y2",i),C.attr("y",Math.max(i,0)+o),q.attr("x2",0).attr("y2",i),z.attr("x",0).attr("y",Math.max(i,0)+o),T.attr("dy",".71em").style("text-anchor","middle"),E.attr("d","M"+w[0]+","+a+"V0H"+w[1]+"V"+a);break;case"top":n=Nu,m.attr("y2",-u),y.attr("x2",0).attr("y2",-u),N.attr("y2",-i),C.attr("y",-(Math.max(i,0)+o)),q.attr("x2",0).attr("y2",-i),z.attr("x",0).attr("y",-(Math.max(i,0)+o)),T.attr("dy","0em").style("text-anchor","middle"),E.attr("d","M"+w[0]+","+-a+"V0H"+w[1]+"V"+-a);break;case"left":n=qu,m.attr("x2",-u),y.attr("x2",-u).attr("y2",0),N.attr("x2",-i),C.attr("x",-(Math.max(i,0)+o)),q.attr("x2",-i).attr("y2",0),z.attr("x",-(Math.max(i,0)+o)).attr("y",0),T.attr("dy",".32em").style("text-anchor","end"),E.attr("d","M"+-a+","+w[0]+"H0V"+w[1]+"H"+-a);break;case"right":n=qu,m.attr("x2",u),y.attr(
"x2",u).attr("y2",0),N.attr("x2",i),C.attr("x",Math.max(i,0)+o),q.attr("x2",i).attr("y2",0),z.attr("x",Math.max(i,0)+o).attr("y",0),T.attr("dy",".32em").style("text-anchor","start"),E.attr("d","M"+a+","+w[0]+"H0V"+w[1]+"H"+a)}if(e.ticks)x.call(n,A),_.call(n,k),b.call(n,k),m.call(n,A),y.call(n,k),v.call(n,k);else{var
D=k.rangeBand()/2,j=function(n){return k(n)+D};x.call(n,j),_.call(n,j)}})}var
t,e=va.scale.linear(),r=Dc,i=6,u=6,a=6,o=3,c=[10],l=null,f=0;return
n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return
arguments.length?(r=t in jc?t+"":Dc,n):r},n.ticks=function(){return
arguments.length?(c=arguments,n):c},n.tickValues=function(t){return
arguments.length?(l=t,n):l},n.tickFormat=function(e){return
arguments.length?(t=e,n):t},n.tickSize=function(t,e){if(!arguments.length)return i;var
r=arguments.length-1;return
i=+t,u=r>1?+e:i,a=r>0?+arguments[r]:i,n},n.tickPadding=function(t){return
arguments.length?(o=+t,n):o},n.tickSubdivide=function(t){
return arguments.length?(f=+t,n):f},n};var
Dc="bottom",jc={top:1,right:1,bottom:1,left:1};va.svg.brush=function(){function
n(u){u.each(function(){var
u,a=va.select(this),f=a.selectAll(".background").data([0]),s=a.selectAll(".extent").data([0]),h=a.selectAll(".resize").data(l,String);a.style("pointer-events","all").on("mousedown.brush",i).on("touchstart.brush",i),f.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),s.enter().append("rect").attr("class","extent").style("cursor","move"),h.enter().append("g").attr("class",function(n){return"resize
"+n}).style("cursor",function(n){return
Lc[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),h.style("display",n.empty()?"none":null),h.exit().remove(),o&&(u=Ui(o),f.attr("x",u[0]).attr("width",u[1]-u[0]),e(a)),c&&(u=Ui(c),f.attr("y",u[0]).attr(
"height",u[1]-u[0]),r(a)),t(a)})}function
t(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+f[+/e$/.test(n)][0]+","+f[+/^s/.test(n)][1]+")"})}function
e(n){n.select(".extent").attr("x",f[0][0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",f[1][0]-f[0][0])}function
r(n){n.select(".extent").attr("y",f[0][1]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",f[1][1]-f[0][1])}function
i(){function i(){var n=va.event.changedTouches;return
n?va.touches(M,n)[0]:va.mouse(M)}function
l(){32==va.event.keyCode&&(k||(v=null,N[0]-=f[1][0],N[1]-=f[1][1],k=2),g())}function
h(){32==va.event.keyCode&&2==k&&(N[0]+=f[1][0],N[1]+=f[1][1],k=0,g())}function
p(){var
n=i(),u=!1;y&&(n[0]+=y[0],n[1]+=y[1]),k||(va.event.altKey?(v||(v=[(f[0][0]+f[1][0])/2,(f[0][1]+f[1][1])/2]),N[0]=f[+(n[0]<v[0])][0],N[1]=f[+(n[1]<v[1])][1]):v=null),S&&d(n,o,0)&&(e(_),u=!0),E&&d(n,c,1)&&(r(_),u=!0),u&&(t(_),b({type:"brush",mode:k?"move":"resize"}))}function
d(n,t,e){var r,i,a=Ui(t),o
=a[0],c=a[1],l=N[e],h=f[1][e]-f[0][e];return
k&&(o-=l,c-=h+l),r=s[e]?Math.max(o,Math.min(c,n[e])):n[e],k?i=(r+=l)+h:(v&&(l=Math.max(o,Math.min(c,2*v[e]-r))),r>l?(i=r,r=l):i=l),f[0][e]!==r||f[1][e]!==i?(u=null,f[0][e]=r,f[1][e]=i,!0):void
0}function
m(){p(),_.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),va.select("body").style("cursor",null),q.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),A(),b({type:"brushend"})}var
v,y,M=this,x=va.select(va.event.target),b=a.of(M,arguments),_=va.select(M),w=x.datum(),S=!/^(n|s)$/.test(w)&&o,E=!/^(e|w)$/.test(w)&&c,k=x.classed("extent"),A=j("brush"),N=i(),q=va.select(xa).on("keydown.brush",l).on("keyup.brush",h);if(va.event.changedTouches?q.on("touchmove.brush",p).on("touchend.brush",m):q.on("mousemove.brush",p).on("mouseup.brush",m),k)N[0]=f[0][0]-N[0],N[1]=f[0][1]-N[1];else
if(w){var T=+/w$
/.test(w),C=+/^n/.test(w);y=[f[1-T][0]-N[0],f[1-C][1]-N[1]],N[0]=f[T][0],N[1]=f[C][1]}else
va.event.altKey&&(v=N.slice());_.style("pointer-events","none").selectAll(".resize").style("display",null),va.select("body").style("cursor",x.style("cursor")),b({type:"brushstart"}),p()}var
u,a=d(n,"brushstart","brush","brushend"),o=null,c=null,l=Hc[0],f=[[0,0],[0,0]],s=[!0,!0];return
n.x=function(t){return
arguments.length?(o=t,l=Hc[!o<<1|!c],n):o},n.y=function(t){return
arguments.length?(c=t,l=Hc[!o<<1|!c],n):c},n.clamp=function(t){return
arguments.length?(o&&c?s=[!!t[0],!!t[1]]:(o||c)&&(s[+!o]=!!t),n):o&&c?s:o||c?s[+!o]:null},n.extent=function(t){var
e,r,i,a,l;return
arguments.length?(u=[[0,0],[0,0]],o&&(e=t[0],r=t[1],c&&(e=e[0],r=r[0]),u[0][0]=e,u[1][0]=r,o.invert&&(e=o(e),r=o(r)),e>r&&(l=e,e=r,r=l),f[0][0]=0|e,f[1][0]=0|r),c&&(i=t[0],a=t[1],o&&(i=i[1],a=a[1]),u[0][1]=i,u[1][1]=a,c.invert&&(i=c(i),a=c(a)),i>a&&(l=i,i=a,a=l),f[0][1]=0|i,f[1][1]=0|a),n):(t=u||f,o&&(e=t[0][0],r=t[1][0
],u||(e=f[0][0],r=f[1][0],o.invert&&(e=o.invert(e),r=o.invert(r)),e>r&&(l=e,e=r,r=l))),c&&(i=t[0][1],a=t[1][1],u||(i=f[0][1],a=f[1][1],c.invert&&(i=c.invert(i),a=c.invert(a)),i>a&&(l=i,i=a,a=l))),o&&c?[[e,i],[r,a]]:o?[e,r]:c&&[i,a])},n.clear=function(){return
u=null,f[0][0]=f[0][1]=f[1][0]=f[1][1]=0,n},n.empty=function(){return
o&&f[0][0]===f[1][0]||c&&f[0][1]===f[1][1]},va.rebind(n,a,"on")};var
Lc={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Hc=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]];va.time={};var
Fc=Date,Pc=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];Cu.prototype={getDate:function(){return
this._.getUTCDate()},getDay:function(){return
this._.getUTCDay()},getFullYear:function(){return
this._.getUTCFullYear()},getHours:function(){return
this._.getUTCHours()},getMilliseconds:function(){return
this._.getUTCMilliseconds()},getMinutes:function(){r
eturn this._.getUTCMinutes()},getMonth:function(){return
this._.getUTCMonth()},getSeconds:function(){return
this._.getUTCSeconds()},getTime:function(){return
this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return
this._.valueOf()},setDate:function(){Oc.setUTCDate.apply(this._,arguments)},setDay:function(){Oc.setUTCDay.apply(this._,arguments)},setFullYear:function(){Oc.setUTCFullYear.apply(this._,arguments)},setHours:function(){Oc.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){Oc.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){Oc.setUTCMinutes.apply(this._,arguments)},setMonth:function(){Oc.setUTCMonth.apply(this._,arguments)},setSeconds:function(){Oc.setUTCSeconds.apply(this._,arguments)},setTime:function(){Oc.setTime.apply(this._,arguments)}};var
Oc=Date.prototype,Rc="%a %b %e %X
%Y",Yc="%m/%d/%Y",Uc="%H:%M:%S",Ic=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Vc=["Sun","Mon","Tue","Wed
","Thu","Fri","Sat"],Xc=["January","February","March","April","May","June","July","August","September","October","November","December"],Zc=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];va.time.year=zu(function(n){return
n=va.time.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return
n.getFullYear()}),va.time.years=va.time.year.range,va.time.years.utc=va.time.year.utc.range,va.time.day=zu(function(n){var
t=new Fc(2e3,0);return
t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return
n.getDate()-1}),va.time.days=va.time.day.range,va.time.days.utc=va.time.day.utc.range,va.time.dayOfYear=function(n){var
t=va.time.year(n);return
Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},Pc.forEach(function(n,t){n=n.toLowerCase(),t=7-t;var
e=va.time[n]=zu(function(n){return(n=va.time.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},functio
n(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var
e=va.time.year(n).getDay();return
Math.floor((va.time.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});va.time[n+"s"]=e.range,va.time[n+"s"].utc=e.utc.range,va.time[n+"OfYear"]=function(n){var
e=va.time.year(n).getDay();return
Math.floor((va.time.dayOfYear(n)+(e+t)%7)/7)}}),va.time.week=va.time.sunday,va.time.weeks=va.time.sunday.range,va.time.weeks.utc=va.time.sunday.utc.range,va.time.weekOfYear=va.time.sundayOfYear,va.time.format=function(n){function
t(t){for(var
r,i,u,a=[],o=-1,c=0;++o<e;)37===n.charCodeAt(o)&&(a.push(n.substring(c,o)),null!=(i=el[r=n.charAt(++o)])&&(r=n.charAt(++o)),(u=rl[r])&&(r=u(t,null==i?"e"===r?"
":"0":i)),a.push(r),c=o+1);return
a.push(n.substring(c,o)),a.join("")}var e=n.length;return
t.parse=function(t){var
e={y:1900,m:0,d:1,H:0,M:0,S:0,L:0},r=ju(e,n,t,0);if(r!=t.length)return
null;"p"in e&&(e.H=e.H%12+12*e.p);var i=new Fc;return"j"in
e?i.setFullYear(e.y,0,e.j):"w"in e&&("W"in e||"U"in
e)?(i.setFul
lYear(e.y,0,1),i.setFullYear(e.y,0,"W"in
e?(e.w+6)%7+7*e.W-(i.getDay()+5)%7:e.w+7*e.U-(i.getDay()+6)%7)):i.setFullYear(e.y,e.m,e.d),i.setHours(e.H,e.M,e.S,e.L),i},t.toString=function(){return
n},t};var
Bc=Lu(Ic),$c=Hu(Ic),Wc=Lu(Vc),Jc=Hu(Vc),Gc=Lu(Xc),Kc=Hu(Xc),Qc=Lu(Zc),nl=Hu(Zc),tl=/^%/,el={"-":"",_:"
",0:"0"},rl={a:function(n){return Vc[n.getDay()]},A:function(n){return
Ic[n.getDay()]},b:function(n){return Zc[n.getMonth()]},B:function(n){return
Xc[n.getMonth()]},c:va.time.format(Rc),d:function(n,t){return
Fu(n.getDate(),t,2)},e:function(n,t){return Fu(n.getDate(),t,2)},H:function(n,t){return
Fu(n.getHours(),t,2)},I:function(n,t){return
Fu(n.getHours()%12||12,t,2)},j:function(n,t){return
Fu(1+va.time.dayOfYear(n),t,3)},L:function(n,t){return
Fu(n.getMilliseconds(),t,3)},m:function(n,t){return
Fu(n.getMonth()+1,t,2)},M:function(n,t){return
Fu(n.getMinutes(),t,2)},p:function(n){return
n.getHours()>=12?"PM":"AM"},S:function(n,t){return
Fu(n.getSeconds(),t,2)},U:function(n,t){
return Fu(va.time.sundayOfYear(n),t,2)},w:function(n){return
n.getDay()},W:function(n,t){return
Fu(va.time.mondayOfYear(n),t,2)},x:va.time.format(Yc),X:va.time.format(Uc),y:function(n,t){return
Fu(n.getFullYear()%100,t,2)},Y:function(n,t){return
Fu(n.getFullYear()%1e4,t,4)},Z:ua,"%":function(){return"%"}},il={a:Pu,A:Ou,b:Iu,B:Vu,c:Xu,d:Ku,e:Ku,H:na,I:na,j:Qu,L:ra,m:Gu,M:ta,p:ia,S:ea,U:Yu,w:Ru,W:Uu,x:Zu,X:Bu,y:Wu,Y:$u,"%":aa},ul=/^\s*\d+/,al=va.map({am:0,pm:1});va.time.format.utc=function(n){function
t(n){try{Fc=Cu;var t=new Fc;return t._=n,e(t)}finally{Fc=Date}}var
e=va.time.format(n);return t.parse=function(n){try{Fc=Cu;var t=e.parse(n);return
t&&t._}finally{Fc=Date}},t.toString=e.toString,t};var
ol=va.time.format.utc("%Y-%m-%dT%H:%M:%S.%LZ");va.time.format.iso=Date.prototype.toISOString&&+new
Date("2000-01-01T00:00:00.000Z")?oa:ol,oa.parse=function(n){var t=new
Date(n);return
isNaN(t)?null:t},oa.toString=ol.toString,va.time.second=zu(function(n){return new
Fc(1e3*Math.floo
r(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return
n.getSeconds()}),va.time.seconds=va.time.second.range,va.time.seconds.utc=va.time.second.utc.range,va.time.minute=zu(function(n){return
new
Fc(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return
n.getMinutes()}),va.time.minutes=va.time.minute.range,va.time.minutes.utc=va.time.minute.utc.range,va.time.hour=zu(function(n){var
t=n.getTimezoneOffset()/60;return new
Fc(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return
n.getHours()}),va.time.hours=va.time.hour.range,va.time.hours.utc=va.time.hour.utc.range,va.time.month=zu(function(n){return
n=va.time.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return
n.getMonth()}),va.time.months=va.time.month.range,va.time.months.utc=va.time.month.utc.range;var
cl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e
5,1728e5,6048e5,2592e6,7776e6,31536e6],ll=[[va.time.second,1],[va.time.second,5],[va.time.second,15],[va.time.second,30],[va.time.minute,1],[va.time.minute,5],[va.time.minute,15],[va.time.minute,30],[va.time.hour,1],[va.time.hour,3],[va.time.hour,6],[va.time.hour,12],[va.time.day,1],[va.time.day,2],[va.time.week,1],[va.time.month,1],[va.time.month,3],[va.time.year,1]],fl=[[va.time.format("%Y"),Rt],[va.time.format("%B"),function(n){return
n.getMonth()}],[va.time.format("%b %d"),function(n){return
1!=n.getDate()}],[va.time.format("%a %d"),function(n){return
n.getDay()&&1!=n.getDate()}],[va.time.format("%I %p"),function(n){return
n.getHours()}],[va.time.format("%I:%M"),function(n){return
n.getMinutes()}],[va.time.format(":%S"),function(n){return
n.getSeconds()}],[va.time.format(".%L"),function(n){return
n.getMilliseconds()}]],sl=va.scale.linear(),hl=fa(fl);ll.year=function(n,t){return
sl.domain(n.map(ha)).ticks(t).map(sa)},va.time.scale=function(){return
ca(va.scale.linear(),ll
,hl)};var
gl=ll.map(function(n){return[n[0].utc,n[1]]}),pl=[[va.time.format.utc("%Y"),Rt],[va.time.format.utc("%B"),function(n){return
n.getUTCMonth()}],[va.time.format.utc("%b %d"),function(n){return
1!=n.getUTCDate()}],[va.time.format.utc("%a %d"),function(n){return
n.getUTCDay()&&1!=n.getUTCDate()}],[va.time.format.utc("%I
%p"),function(n){return
n.getUTCHours()}],[va.time.format.utc("%I:%M"),function(n){return
n.getUTCMinutes()}],[va.time.format.utc(":%S"),function(n){return
n.getUTCSeconds()}],[va.time.format.utc(".%L"),function(n){return
n.getUTCMilliseconds()}]],dl=fa(pl);return gl.year=function(n,t){return
sl.domain(n.map(pa)).ticks(t).map(ga)},va.time.scale.utc=function(){return
ca(va.scale.linear(),gl,dl)},va.text=ht(function(n){return
n.responseText}),va.json=function(n,t){return
gt(n,"application/json",da,t)},va.html=function(n,t){return
gt(n,"text/html",ma,t)},va.xml=ht(function(n){return n.responseXML}),va}();
\ No newline at end of file