From 32744054abc39e1d289f0f1625b03b2d7a776a25 Mon Sep 17 00:00:00 2001 From: Lindsay Carr Date: Thu, 4 Jan 2018 11:13:56 -0600 Subject: [PATCH 01/18] testing out js --- scripts/visualize/app.js | 13 +++++++++++++ scripts/visualize/test_d3.js | 20 ++++++++++++++++++++ viz.yaml | 19 +++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 scripts/visualize/app.js create mode 100644 scripts/visualize/test_d3.js diff --git a/scripts/visualize/app.js b/scripts/visualize/app.js new file mode 100644 index 0000000..dd98b76 --- /dev/null +++ b/scripts/visualize/app.js @@ -0,0 +1,13 @@ +$(document).ready(function(){ + var navigation = $('#navigation'); + var menu = $('#menu'); + + $(document).on('click', function(){ + $(navigation).hide(); + }); + + $(menu).on('click', function(e){ + e.stopPropagation(); + $(navigation).toggle(); + }); + }); \ No newline at end of file diff --git a/scripts/visualize/test_d3.js b/scripts/visualize/test_d3.js new file mode 100644 index 0000000..153f68c --- /dev/null +++ b/scripts/visualize/test_d3.js @@ -0,0 +1,20 @@ +var w = 800; +var h = 450; +var data = [132,71,337,93,78,43,20,16,30,8,17,21]; +var svg = d3.select("body").append("svg") + .attr("id", "chart") + .attr("width", w) + .attr("height", h); +svg.selectAll(".bar") + .data(data) + .enter() + .append("rect") + .attr("class", "bar") + .attr("x", 0) + .attr("y", function(d,i){ + return i * 20; + }) + .attr("width", function(d,i){ + return d; + }) + .attr("height", 19) diff --git a/viz.yaml b/viz.yaml index 081b617..2a92820 100644 --- a/viz.yaml +++ b/viz.yaml @@ -229,4 +229,23 @@ visualize: scripts: ["scripts/visualize/svg_skeleton.R"] reader: svg mimetype: image/svg+xml + - + id: test_d3 + location: visualize/test_d3.js + mimetype: application/javascript + - + id: appJS + location: visualize/app.js + mimetype: application/javascript publish: + - + id: test_page + name: index + template: fullpage + publisher: page + depends: + svg: "svg_skeleton" + js: "appJS" + context: + resources: "js" + sections: "svg" From 01de7d4037a567f5a206cf66d1d715b974430cbc Mon Sep 17 00:00:00 2001 From: Lindsay Carr Date: Thu, 4 Jan 2018 12:31:04 -0600 Subject: [PATCH 02/18] add js as publisher + move js files --- scripts/visualize/app.js | 13 ------------- scripts/visualize/test_d3.js | 20 -------------------- viz.yaml | 18 ++++++++---------- 3 files changed, 8 insertions(+), 43 deletions(-) delete mode 100644 scripts/visualize/app.js delete mode 100644 scripts/visualize/test_d3.js diff --git a/scripts/visualize/app.js b/scripts/visualize/app.js deleted file mode 100644 index dd98b76..0000000 --- a/scripts/visualize/app.js +++ /dev/null @@ -1,13 +0,0 @@ -$(document).ready(function(){ - var navigation = $('#navigation'); - var menu = $('#menu'); - - $(document).on('click', function(){ - $(navigation).hide(); - }); - - $(menu).on('click', function(e){ - e.stopPropagation(); - $(navigation).toggle(); - }); - }); \ No newline at end of file diff --git a/scripts/visualize/test_d3.js b/scripts/visualize/test_d3.js deleted file mode 100644 index 153f68c..0000000 --- a/scripts/visualize/test_d3.js +++ /dev/null @@ -1,20 +0,0 @@ -var w = 800; -var h = 450; -var data = [132,71,337,93,78,43,20,16,30,8,17,21]; -var svg = d3.select("body").append("svg") - .attr("id", "chart") - .attr("width", w) - .attr("height", h); -svg.selectAll(".bar") - .data(data) - .enter() - .append("rect") - .attr("class", "bar") - .attr("x", 0) - .attr("y", function(d,i){ - return i * 20; - }) - .attr("width", function(d,i){ - return d; - }) - .attr("height", 19) diff --git a/viz.yaml b/viz.yaml index 41f1048..6729159 100644 --- a/viz.yaml +++ b/viz.yaml @@ -231,23 +231,21 @@ visualize: mimetype: image/svg+xml title: "SVG skeleton" alttext: "Beginning of the full storm SVG" +publish: - id: test_d3 - location: visualize/test_d3.js + publisher: js mimetype: application/javascript - - - id: appJS - location: visualize/app.js - mimetype: application/javascript -publish: + relpath: "js/test_d3.js" - id: vizstorm_page name: index template: fullpage publisher: page - depends: + depends: + js: "test_d3" storm_figure: "svg_skeleton" - js: "appJS" context: - resources: "js" - sections: "storm_figure" + resources: ["js"] + sections: ["storm_figure"] + From 6a81e59004254be90f2b844ac962e8fce4dac63b Mon Sep 17 00:00:00 2001 From: Lindsay Carr Date: Thu, 4 Jan 2018 12:39:02 -0600 Subject: [PATCH 03/18] complete move of js file --- js/test_d3.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 js/test_d3.js diff --git a/js/test_d3.js b/js/test_d3.js new file mode 100644 index 0000000..153f68c --- /dev/null +++ b/js/test_d3.js @@ -0,0 +1,20 @@ +var w = 800; +var h = 450; +var data = [132,71,337,93,78,43,20,16,30,8,17,21]; +var svg = d3.select("body").append("svg") + .attr("id", "chart") + .attr("width", w) + .attr("height", h); +svg.selectAll(".bar") + .data(data) + .enter() + .append("rect") + .attr("class", "bar") + .attr("x", 0) + .attr("y", function(d,i){ + return i * 20; + }) + .attr("width", function(d,i){ + return d; + }) + .attr("height", 19) From fb89adcafb831310b95bda2e1eb2fc32b002ee6f Mon Sep 17 00:00:00 2001 From: Lindsay Carr Date: Thu, 4 Jan 2018 12:39:44 -0600 Subject: [PATCH 04/18] inject js file into body of index --- viz.yaml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/viz.yaml b/viz.yaml index 6729159..8a4afed 100644 --- a/viz.yaml +++ b/viz.yaml @@ -234,9 +234,8 @@ visualize: publish: - id: test_d3 - publisher: js + location: "js/test_d3.js" mimetype: application/javascript - relpath: "js/test_d3.js" - id: vizstorm_page name: index @@ -246,6 +245,6 @@ publish: js: "test_d3" storm_figure: "svg_skeleton" context: - resources: ["js"] - sections: ["storm_figure"] + resources: + sections: ["storm_figure", "js"] From 028755ce81337dd0c0c601dbb69c533d5d369705 Mon Sep 17 00:00:00 2001 From: Lindsay Carr Date: Thu, 4 Jan 2018 12:48:40 -0600 Subject: [PATCH 05/18] add d3 library as resource --- js/d3.v4.min.js | 2 ++ viz.yaml | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 js/d3.v4.min.js diff --git a/js/d3.v4.min.js b/js/d3.v4.min.js new file mode 100644 index 0000000..643b658 --- /dev/null +++ b/js/d3.v4.min.js @@ -0,0 +1,2 @@ +// https://d3js.org Version 4.12.0. Copyright 2017 Mike Bostock. +(function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n(t.d3=t.d3||{})})(this,function(t){"use strict";function n(t,n){return[t,n]}function e(t,n,e){var r=(n-t)/Math.max(0,e),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=Ra?10:o>=La?5:o>=qa?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Ra?10:o>=La?5:o>=qa?2:1)}function r(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=Ra?i*=10:o>=La?i*=5:o>=qa&&(i*=2),nn?1:t>=n?0:NaN}function _(t,n){return t.style.getPropertyValue(n)||pc(t).getComputedStyle(t,null).getPropertyValue(n)}function y(t){return t.trim().split(/^|\s+/)}function m(t){return t.classList||new x(t)}function x(t){this._node=t,this._names=y(t.getAttribute("class")||"")}function b(t,n){for(var e=m(t),r=-1,i=n.length;++r>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1)):(n=Nc.exec(t))?F(parseInt(n[1],16)):(n=kc.exec(t))?new H(n[1],n[2],n[3],1):(n=Sc.exec(t))?new H(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=Ec.exec(t))?I(n[1],n[2],n[3],n[4]):(n=Ac.exec(t))?I(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=Cc.exec(t))?j(n[1],n[2]/100,n[3]/100,1):(n=zc.exec(t))?j(n[1],n[2]/100,n[3]/100,n[4]):Pc.hasOwnProperty(t)?F(Pc[t]):"transparent"===t?new H(NaN,NaN,NaN,0):null}function F(t){return new H(t>>16&255,t>>8&255,255&t,1)}function I(t,n,e,r){return r<=0&&(t=n=e=NaN),new H(t,n,e,r)}function Y(t){return t instanceof U||(t=O(t)),t?(t=t.rgb(),new H(t.r,t.g,t.b,t.opacity)):new H}function B(t,n,e,r){return 1===arguments.length?Y(t):new H(t,n,e,null==r?1:r)}function H(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function j(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new V(t,n,e,r)}function X(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof V)return new V(t.h,t.s,t.l,t.opacity);if(t instanceof U||(t=O(t)),!t)return new V;if(t instanceof V)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),u=NaN,a=o-i,c=(o+i)/2;return a?(u=n===o?(e-r)/a+6*(e0&&c<1?0:u,new V(u,a,c,t.opacity)}(t):new V(t,n,e,null==r?1:r)}function V(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function $(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}function W(t){if(t instanceof G)return new G(t.l,t.a,t.b,t.opacity);if(t instanceof et){var n=t.h*Rc;return new G(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}t instanceof H||(t=Y(t));var e=tt(t.r),r=tt(t.g),i=tt(t.b),o=Q((.4124564*e+.3575761*r+.1804375*i)/qc),u=Q((.2126729*e+.7151522*r+.072175*i)/Dc);return new G(116*u-16,500*(o-u),200*(u-Q((.0193339*e+.119192*r+.9503041*i)/Uc)),t.opacity)}function Z(t,n,e,r){return 1===arguments.length?W(t):new G(t,n,e,null==r?1:r)}function G(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function Q(t){return t>Yc?Math.pow(t,1/3):t/Ic+Oc}function J(t){return t>Fc?t*t*t:Ic*(t-Oc)}function K(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function tt(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function nt(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof et)return new et(t.h,t.c,t.l,t.opacity);t instanceof G||(t=W(t));var n=Math.atan2(t.b,t.a)*Lc;return new et(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}(t):new et(t,n,e,null==r?1:r)}function et(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}function rt(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof it)return new it(t.h,t.s,t.l,t.opacity);t instanceof H||(t=Y(t));var n=t.r/255,e=t.g/255,r=t.b/255,i=(Zc*r+$c*n-Wc*e)/(Zc+$c-Wc),o=r-i,u=(Vc*(e-i)-jc*o)/Xc,a=Math.sqrt(u*u+o*o)/(Vc*i*(1-i)),c=a?Math.atan2(u,o)*Lc-120:NaN;return new it(c<0?c+360:c,a,i,t.opacity)}(t):new it(t,n,e,null==r?1:r)}function it(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function ot(t,n,e,r,i){var o=t*t,u=o*t;return((1-3*t+3*o-u)*n+(4-6*o+3*u)*e+(1+3*t+3*o-3*u)*r+u*i)/6}function ut(t,n){return function(e){return t+e*n}}function at(t,n){var e=n-t;return e?ut(t,e>180||e<-180?e-360*Math.round(e/360):e):is(isNaN(t)?n:t)}function ct(t){return 1==(t=+t)?st:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):is(isNaN(n)?e:n)}}function st(t,n){var e=n-t;return e?ut(t,e):is(isNaN(t)?n:t)}function ft(t){return function(n){var e,r,i=n.length,o=new Array(i),u=new Array(i),a=new Array(i);for(e=0;e180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:fs(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,u.rotate,a,c),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:fs(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,u.skewX,a,c),function(t,n,e,r,o,u){if(t!==e||n!==r){var a=o.push(i(o)+"scale(",null,",",null,")");u.push({i:a-4,x:fs(t,e)},{i:a-2,x:fs(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,u.scaleX,u.scaleY,a,c),o=u=null,function(t){for(var n,e=-1,r=c.length;++e=0&&n._call.call(null,t),n=n._next;--Cs}function bt(){qs=(Ls=Us.now())+Ds,Cs=zs=0;try{xt()}finally{Cs=0,function(){var t,n,e=ts,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:ts=n);ns=t,Mt(r)}(),qs=0}}function wt(){var t=Us.now(),n=t-Ls;n>Rs&&(Ds-=n,Ls=t)}function Mt(t){if(!Cs){zs&&(zs=clearTimeout(zs));t-qs>24?(t<1/0&&(zs=setTimeout(bt,t-Us.now()-Ds)),Ps&&(Ps=clearInterval(Ps))):(Ps||(Ls=Us.now(),Ps=setInterval(wt,Rs)),Cs=1,Os(bt))}}function Tt(t,n){var e=kt(t,n);if(e.state>Bs)throw new Error("too late; already scheduled");return e}function Nt(t,n){var e=kt(t,n);if(e.state>js)throw new Error("too late; already started");return e}function kt(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function St(t,n,e){var r=t._id;return t.each(function(){var t=Nt(this,r);(t.value||(t.value={}))[n]=e.apply(this,arguments)}),function(t){return kt(t,r).value[n]}}function Et(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function At(t){return E().transition(t)}function Ct(){return++Ks}function zt(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function Pt(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}function Rt(t){return(1-Math.cos(of*t))/2}function Lt(t){return((t*=2)<=1?Math.pow(2,10*t-10):2-Math.pow(2,10-10*t))/2}function qt(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}function Dt(t){return(t=+t)Math.abs(t[1]-U[1])?b=!0:x=!0),U=t,m=!0,Ef(),o()}function o(){var t;switch(_=U[0]-D[0],y=U[1]-D[1],T){case Cf:case Af:N&&(_=Math.max(z-a,Math.min(R-p,_)),c=a+_,d=p+_),k&&(y=Math.max(P-f,Math.min(L-v,y)),h=f+y,g=v+y);break;case zf:N<0?(_=Math.max(z-a,Math.min(R-a,_)),c=a+_,d=p):N>0&&(_=Math.max(z-p,Math.min(R-p,_)),c=a,d=p+_),k<0?(y=Math.max(P-f,Math.min(L-f,y)),h=f+y,g=v):k>0&&(y=Math.max(P-v,Math.min(L-v,y)),h=f,g=v+y);break;case Pf:N&&(c=Math.max(z,Math.min(R,a-_*N)),d=Math.max(z,Math.min(R,p+_*N))),k&&(h=Math.max(P,Math.min(L,f-y*k)),g=Math.max(P,Math.min(L,v+y*k)))}d0&&(a=c-_),k<0?v=g-y:k>0&&(f=h-y),T=Cf,I.attr("cursor",Df.selection),o());break;default:return}Ef()},!0).on("keyup.brush",function(){switch(t.event.keyCode){case 16:q&&(x=b=q=!1,o());break;case 18:T===Pf&&(N<0?p=d:N>0&&(a=c),k<0?v=g:k>0&&(f=h),T=zf,o());break;case 32:T===Cf&&(t.event.altKey?(N&&(p=d-_*N,a=c+_*N),k&&(v=g-y*k,f=h+y*k),T=Pf):(N<0?p=d:N>0&&(a=c),k<0?v=g:k>0&&(f=h),T=zf),I.attr("cursor",Df[M]),o());break;default:return}Ef()},!0).on("mousemove.brush",e,!0).on("mouseup.brush",u,!0);yc(t.event.view)}Ot(),Gs(w),r.call(w),O.start()}}function c(){var t=this.__brush||{selection:null};return t.extent=f.apply(this,arguments),t.dim=n,t}var s,f=Yt,l=It,h=a(e,"start","brush","end"),p=6;return e.move=function(t,e){t.selection?t.on("start.brush",function(){i(this,arguments).beforestart().start()}).on("interrupt.brush end.brush",function(){i(this,arguments).end()}).tween("brush",function(){function t(t){u.selection=1===t&&Ht(s)?null:f(t),r.call(o),a.brush()}var o=this,u=o.__brush,a=i(o,arguments),c=u.selection,s=n.input("function"==typeof e?e.apply(this,arguments):e,u.extent),f=vs(c,s);return c&&s?t:t(1)}):t.each(function(){var t=arguments,o=this.__brush,u=n.input("function"==typeof e?e.apply(this,t):e,o.extent),a=i(this,t).beforestart();Gs(this),o.selection=null==u||Ht(u)?null:u,r.call(this),a.start().brush().end()})},o.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting&&(this.starting=!1,this.emit("start")),this},brush:function(){return this.emit("brush"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit("end")),this},emit:function(t){d(new Sf(e,t,n.output(this.state.selection)),h.apply,h,[t,this.that,this.args])}},e.extent=function(t){return arguments.length?(f="function"==typeof t?t:kf([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),e):f},e.filter=function(t){return arguments.length?(l="function"==typeof t?t:kf(!!t),e):l},e.handleSize=function(t){return arguments.length?(p=+t,e):p},e.on=function(){var t=h.on.apply(h,arguments);return t===h?e:t},e}function Xt(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function Vt(){return new Xt}function $t(t){return t.source}function Wt(t){return t.target}function Zt(t){return t.radius}function Gt(t){return t.startAngle}function Qt(t){return t.endAngle}function Jt(){}function Kt(t,n){var e=new Jt;if(t instanceof Jt)t.each(function(t,n){e.set(n,t)});else if(Array.isArray(t)){var r,i=-1,o=t.length;if(null==n)for(;++i=(o=(v+_)/2))?v=o:_=o,(f=e>=(u=(g+y)/2))?g=u:y=u,i=p,!(p=p[l=f<<1|s]))return i[l]=d,t;if(a=+t._x.call(null,p.data),c=+t._y.call(null,p.data),n===a&&e===c)return d.next=p,i?i[l]=d:t._root=d,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(s=n>=(o=(v+_)/2))?v=o:_=o,(f=e>=(u=(g+y)/2))?g=u:y=u}while((l=f<<1|s)==(h=(c>=u)<<1|a>=o));return i[h]=p,i[l]=d,t}function sn(t,n,e){var r=new fn(null==n?function(t){return t[0]}:n,null==e?function(t){return t[1]}:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function fn(t,n,e,r,i,o){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function ln(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}function hn(t){return t.x+t.vx}function pn(t){return t.y+t.vy}function dn(t){return t.index}function vn(t,n){var e=t.get(n);if(!e)throw new Error("missing: "+n);return e}function gn(t){return t.x}function _n(t){return t.y}function yn(t){return new mn(t)}function mn(t){if(!(n=kl.exec(t)))throw new Error("invalid format: "+t);var n,e=n[1]||" ",r=n[2]||">",i=n[3]||"-",o=n[4]||"",u=!!n[5],a=n[6]&&+n[6],c=!!n[7],s=n[8]&&+n[8].slice(1),f=n[9]||"";"n"===f?(c=!0,f="g"):Nl[f]||(f=""),(u||"0"===e&&"="===r)&&(u=!0,e="0",r="="),this.fill=e,this.align=r,this.sign=i,this.symbol=o,this.zero=u,this.width=a,this.comma=c,this.precision=s,this.type=f}function xn(n){return Sl=Cl(n),t.format=Sl.format,t.formatPrefix=Sl.formatPrefix,Sl}function bn(){this.reset()}function wn(t,n,e){var r=t.s=n+e,i=r-n,o=r-i;t.t=n-o+(e-i)}function Mn(t){return t>1?0:t<-1?dh:Math.acos(t)}function Tn(t){return t>1?vh:t<-1?-vh:Math.asin(t)}function Nn(t){return(t=Eh(t/2))*t}function kn(){}function Sn(t,n){t&&Rh.hasOwnProperty(t.type)&&Rh[t.type](t,n)}function En(t,n,e){var r,i=-1,o=t.length-e;for(n.lineStart();++i=0?1:-1,i=r*e,o=Mh(n),u=Eh(n),a=Fl*u,c=Ol*o+a*Mh(i),s=a*r*Eh(i);qh.add(wh(s,c)),Ul=t,Ol=o,Fl=u}function Ln(t){return[wh(t[1],t[0]),Tn(t[2])]}function qn(t){var n=t[0],e=t[1],r=Mh(e);return[r*Mh(n),r*Eh(n),Eh(e)]}function Dn(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function Un(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function On(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function Fn(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function In(t){var n=Ch(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}function Yn(t,n){Wl.push(Zl=[Il=t,Bl=t]),nHl&&(Hl=n)}function Bn(t,n){var e=qn([t*mh,n*mh]);if($l){var r=Un($l,e),i=Un([r[1],-r[0],0],r);In(i),i=Ln(i);var o,u=t-jl,a=u>0?1:-1,c=i[0]*yh*a,s=xh(u)>180;s^(a*jlHl&&(Hl=o):(c=(c+360)%360-180,s^(a*jlHl&&(Hl=n))),s?tWn(Il,Bl)&&(Bl=t):Wn(t,Bl)>Wn(Il,Bl)&&(Il=t):Bl>=Il?(tBl&&(Bl=t)):t>jl?Wn(Il,t)>Wn(Il,Bl)&&(Bl=t):Wn(t,Bl)>Wn(Il,Bl)&&(Il=t)}else Wl.push(Zl=[Il=t,Bl=t]);nHl&&(Hl=n),$l=e,jl=t}function Hn(){Fh.point=Bn}function jn(){Zl[0]=Il,Zl[1]=Bl,Fh.point=Yn,$l=null}function Xn(t,n){if($l){var e=t-jl;Oh.add(xh(e)>180?e+(e>0?360:-360):e)}else Xl=t,Vl=n;Uh.point(t,n),Bn(t,n)}function Vn(){Uh.lineStart()}function $n(){Xn(Xl,Vl),Uh.lineEnd(),xh(Oh)>ph&&(Il=-(Bl=180)),Zl[0]=Il,Zl[1]=Bl,$l=null}function Wn(t,n){return(n-=t)<0?n+360:n}function Zn(t,n){return t[0]-n[0]}function Gn(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:ndh?t-_h:t<-dh?t+_h:t,n]}function ce(t,n,e){return(t%=_h)?n||e?Bh(fe(t),le(n,e)):fe(t):n||e?le(n,e):ae}function se(t){return function(n,e){return n+=t,[n>dh?n-_h:n<-dh?n+_h:n,e]}}function fe(t){var n=se(t);return n.invert=se(-t),n}function le(t,n){function e(t,n){var e=Mh(n),a=Mh(t)*e,c=Eh(t)*e,s=Eh(n),f=s*r+a*i;return[wh(c*o-f*u,a*r-s*i),Tn(f*o+c*u)]}var r=Mh(t),i=Eh(t),o=Mh(n),u=Eh(n);return e.invert=function(t,n){var e=Mh(n),a=Mh(t)*e,c=Eh(t)*e,s=Eh(n),f=s*o-c*u;return[wh(c*o+s*u,a*r+f*i),Tn(f*r-a*i)]},e}function he(t,n,e,r,i,o){if(e){var u=Mh(n),a=Eh(n),c=r*e;null==i?(i=n+r*_h,o=n-c/2):(i=pe(u,i),o=pe(u,o),(r>0?io)&&(i+=r*_h));for(var s,f=i;r>0?f>o:f1}function _e(t,n){return((t=t.x)[0]<0?t[1]-vh-ph:vh-t[1])-((n=n.x)[0]<0?n[1]-vh-ph:vh-n[1])}function ye(t,n,e,r){function i(i,o){return t<=i&&i<=e&&n<=o&&o<=r}function o(i,o,a,s){var f=0,l=0;if(null==i||(f=u(i,a))!==(l=u(o,a))||c(i,o)<0^a>0)do{s.point(0===f||3===f?t:e,f>1?r:n)}while((f=(f+a+4)%4)!==l);else s.point(o[0],o[1])}function u(r,i){return xh(r[0]-t)0?0:3:xh(r[0]-e)0?2:1:xh(r[1]-n)0?1:0:i>0?3:2}function a(t,n){return c(t.x,n.x)}function c(t,n){var e=u(t,1),r=u(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(u){function c(t,n){i(t,n)&&b.point(t,n)}function s(o,u){var a=i(o,u);if(l&&h.push([o,u]),m)p=o,d=u,v=a,m=!1,a&&(b.lineStart(),b.point(o,u));else if(a&&y)b.point(o,u);else{var c=[g=Math.max(lp,Math.min(fp,g)),_=Math.max(lp,Math.min(fp,_))],s=[o=Math.max(lp,Math.min(fp,o)),u=Math.max(lp,Math.min(fp,u))];sp(c,s,t,n,e,r)?(y||(b.lineStart(),b.point(c[0],c[1])),b.point(s[0],s[1]),a||b.lineEnd(),x=!1):a&&(b.lineStart(),b.point(o,u),x=!1)}g=o,_=u,y=a}var f,l,h,p,d,v,g,_,y,m,x,b=u,w=np(),M={point:c,lineStart:function(){M.point=s,l&&l.push(h=[]),m=!0,y=!1,g=_=NaN},lineEnd:function(){f&&(s(p,d),v&&y&&w.rejoin(),f.push(w.result())),M.point=c,y&&b.lineEnd()},polygonStart:function(){b=w,f=[],l=[],x=!0},polygonEnd:function(){var n=function(){for(var n=0,e=0,i=l.length;er&&(h-o)*(r-u)>(p-u)*(t-o)&&++n:p<=r&&(h-o)*(r-u)<(p-u)*(t-o)&&--n;return n}(),e=x&&n,i=(f=Fa(f)).length;(e||i)&&(u.polygonStart(),e&&(u.lineStart(),o(null,null,1,u),u.lineEnd()),i&&rp(f,a,n,o,u),u.polygonEnd()),b=u,f=l=h=null}};return M}}function me(){pp.point=pp.lineEnd=kn}function xe(t,n){Hh=t*=mh,jh=Eh(n*=mh),Xh=Mh(n),pp.point=be}function be(t,n){t*=mh;var e=Eh(n*=mh),r=Mh(n),i=xh(t-Hh),o=Mh(i),u=r*Eh(i),a=Xh*e-jh*r*o,c=jh*e+Xh*r*o;hp.add(wh(Ch(u*u+a*a),c)),Hh=t,jh=e,Xh=r}function we(t,n){return!(!t||!mp.hasOwnProperty(t.type))&&mp[t.type](t,n)}function Me(t,n){return 0===_p(t,n)}function Te(t,n){var e=_p(t[0],t[1]);return _p(t[0],n)+_p(n,t[1])<=e+ph}function Ne(t,n){return!!op(t.map(ke),Se(n))}function ke(t){return(t=t.map(Se)).pop(),t}function Se(t){return[t[0]*mh,t[1]*mh]}function Ee(t,n,e){var r=Pa(t,n-ph,e).concat(n);return function(t){return r.map(function(n){return[t,n]})}}function Ae(t,n,e){var r=Pa(t,n-ph,e).concat(n);return function(t){return r.map(function(n){return[n,t]})}}function Ce(){function t(){return{type:"MultiLineString",coordinates:n()}}function n(){return Pa(Th(o/g)*g,i,g).map(h).concat(Pa(Th(s/_)*_,c,_).map(p)).concat(Pa(Th(r/d)*d,e,d).filter(function(t){return xh(t%g)>ph}).map(f)).concat(Pa(Th(a/v)*v,u,v).filter(function(t){return xh(t%_)>ph}).map(l))}var e,r,i,o,u,a,c,s,f,l,h,p,d=10,v=d,g=90,_=360,y=2.5;return t.lines=function(){return n().map(function(t){return{type:"LineString",coordinates:t}})},t.outline=function(){return{type:"Polygon",coordinates:[h(o).concat(p(c).slice(1),h(i).reverse().slice(1),p(s).reverse().slice(1))]}},t.extent=function(n){return arguments.length?t.extentMajor(n).extentMinor(n):t.extentMinor()},t.extentMajor=function(n){return arguments.length?(o=+n[0][0],i=+n[1][0],s=+n[0][1],c=+n[1][1],o>i&&(n=o,o=i,i=n),s>c&&(n=s,s=c,c=n),t.precision(y)):[[o,s],[i,c]]},t.extentMinor=function(n){return arguments.length?(r=+n[0][0],e=+n[1][0],a=+n[0][1],u=+n[1][1],r>e&&(n=r,r=e,e=n),a>u&&(n=a,a=u,u=n),t.precision(y)):[[r,a],[e,u]]},t.step=function(n){return arguments.length?t.stepMajor(n).stepMinor(n):t.stepMinor()},t.stepMajor=function(n){return arguments.length?(g=+n[0],_=+n[1],t):[g,_]},t.stepMinor=function(n){return arguments.length?(d=+n[0],v=+n[1],t):[d,v]},t.precision=function(n){return arguments.length?(y=+n,f=Ee(a,u,90),l=Ae(r,e,y),h=Ee(s,c,90),p=Ae(o,i,y),t):y},t.extentMajor([[-180,-90+ph],[180,90-ph]]).extentMinor([[-180,-80-ph],[180,80+ph]])}function ze(){Mp.point=Pe}function Pe(t,n){Mp.point=Re,Vh=Wh=t,$h=Zh=n}function Re(t,n){wp.add(Zh*t-Wh*n),Wh=t,Zh=n}function Le(){Re(Vh,$h)}function qe(t,n){Ap+=t,Cp+=n,++zp}function De(){Op.point=Ue}function Ue(t,n){Op.point=Oe,qe(Jh=t,Kh=n)}function Oe(t,n){var e=t-Jh,r=n-Kh,i=Ch(e*e+r*r);Pp+=i*(Jh+t)/2,Rp+=i*(Kh+n)/2,Lp+=i,qe(Jh=t,Kh=n)}function Fe(){Op.point=qe}function Ie(){Op.point=Be}function Ye(){He(Gh,Qh)}function Be(t,n){Op.point=He,qe(Gh=Jh=t,Qh=Kh=n)}function He(t,n){var e=t-Jh,r=n-Kh,i=Ch(e*e+r*r);Pp+=i*(Jh+t)/2,Rp+=i*(Kh+n)/2,Lp+=i,qp+=(i=Kh*t-Jh*n)*(Jh+t),Dp+=i*(Kh+n),Up+=3*i,qe(Jh=t,Kh=n)}function je(t){this._context=t}function Xe(t,n){Xp.point=Ve,Ip=Bp=t,Yp=Hp=n}function Ve(t,n){Bp-=t,Hp-=n,jp.add(Ch(Bp*Bp+Hp*Hp)),Bp=t,Hp=n}function $e(){this._string=[]}function We(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function Ze(t){return function(n){var e=new Ge;for(var r in t)e[r]=t[r];return e.stream=n,e}}function Ge(){}function Qe(t,n,e){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),Lh(e,t.stream(Ep)),n(Ep.result()),null!=r&&t.clipExtent(r),t}function Je(t,n,e){return Qe(t,function(e){var r=n[1][0]-n[0][0],i=n[1][1]-n[0][1],o=Math.min(r/(e[1][0]-e[0][0]),i/(e[1][1]-e[0][1])),u=+n[0][0]+(r-o*(e[1][0]+e[0][0]))/2,a=+n[0][1]+(i-o*(e[1][1]+e[0][1]))/2;t.scale(150*o).translate([u,a])},e)}function Ke(t,n,e){return Je(t,[[0,0],n],e)}function tr(t,n,e){return Qe(t,function(e){var r=+n,i=r/(e[1][0]-e[0][0]),o=(r-i*(e[1][0]+e[0][0]))/2,u=-i*e[0][1];t.scale(150*i).translate([o,u])},e)}function nr(t,n,e){return Qe(t,function(e){var r=+n,i=r/(e[1][1]-e[0][1]),o=-i*e[0][0],u=(r-i*(e[1][1]+e[0][1]))/2;t.scale(150*i).translate([o,u])},e)}function er(t){return rr(function(){return t})()}function rr(t){function n(t){return t=s(t[0]*mh,t[1]*mh),[t[0]*v+u,a-t[1]*v]}function e(t,n){return t=o(t,n),[t[0]*v+u,a-t[1]*v]}function r(){s=Bh(c=ce(x,b,w),o);var t=o(y,m);return u=g-t[0]*v,a=_+t[1]*v,i()}function i(){return p=d=null,n}var o,u,a,c,s,f,l,h,p,d,v=150,g=480,_=250,y=0,m=0,x=0,b=0,w=0,M=null,T=ap,N=null,k=xp,S=.5,E=Wp(e,S);return n.stream=function(t){return p&&d===t?p:p=Zp(function(t){return Ze({point:function(n,e){var r=t(n,e);return this.stream.point(r[0],r[1])}})}(c)(T(E(k(d=t)))))},n.preclip=function(t){return arguments.length?(T=t,M=void 0,i()):T},n.postclip=function(t){return arguments.length?(k=t,N=f=l=h=null,i()):k},n.clipAngle=function(t){return arguments.length?(T=+t?cp(M=t*mh):(M=null,ap),i()):M*yh},n.clipExtent=function(t){return arguments.length?(k=null==t?(N=f=l=h=null,xp):ye(N=+t[0][0],f=+t[0][1],l=+t[1][0],h=+t[1][1]),i()):null==N?null:[[N,f],[l,h]]},n.scale=function(t){return arguments.length?(v=+t,r()):v},n.translate=function(t){return arguments.length?(g=+t[0],_=+t[1],r()):[g,_]},n.center=function(t){return arguments.length?(y=t[0]%360*mh,m=t[1]%360*mh,r()):[y*yh,m*yh]},n.rotate=function(t){return arguments.length?(x=t[0]%360*mh,b=t[1]%360*mh,w=t.length>2?t[2]%360*mh:0,r()):[x*yh,b*yh,w*yh]},n.precision=function(t){return arguments.length?(E=Wp(e,S=t*t),i()):Ch(S)},n.fitExtent=function(t,e){return Je(n,t,e)},n.fitSize=function(t,e){return Ke(n,t,e)},n.fitWidth=function(t,e){return tr(n,t,e)},n.fitHeight=function(t,e){return nr(n,t,e)},function(){return o=t.apply(this,arguments),n.invert=o.invert&&function(t){return(t=s.invert((t[0]-u)/v,(a-t[1])/v))&&[t[0]*yh,t[1]*yh]},r()}}function ir(t){var n=0,e=dh/3,r=rr(t),i=r(n,e);return i.parallels=function(t){return arguments.length?r(n=t[0]*mh,e=t[1]*mh):[n*yh,e*yh]},i}function or(t,n){function e(t,n){var e=Ch(o-2*i*Eh(n))/i;return[e*Eh(t*=i),u-e*Mh(t)]}var r=Eh(t),i=(r+Eh(n))/2;if(xh(i)0?n<-vh+ph&&(n=-vh+ph):n>vh-ph&&(n=vh-ph);var e=o/Sh(fr(n),i);return[e*Eh(i*t),o-e*Mh(i*t)]}var r=Mh(t),i=t===n?Eh(t):kh(r/Mh(n))/kh(fr(n)/fr(t)),o=r*Sh(fr(t),i)/i;return i?(e.invert=function(t,n){var e=o-n,r=Ah(i)*Ch(t*t+e*e);return[wh(t,xh(e))/i*Ah(e),2*bh(Sh(o/r,1/i))-vh]},e):cr}function hr(t,n){return[t,n]}function pr(t,n){function e(t,n){var e=o-n,r=i*t;return[e*Eh(r),o-e*Mh(r)]}var r=Mh(t),i=t===n?Eh(t):(r-Mh(n))/(n-t),o=r/i+t;return xh(i)=0;)n+=e[r].value;else n=1;t.value=n}function Tr(t,n){var e,r,i,o,u,a=new Er(t),c=+t.value&&(a.value=t.value),s=[a];for(null==n&&(n=Nr);e=s.pop();)if(c&&(e.value=+e.data.value),(i=n(e.data))&&(u=i.length))for(e.children=new Array(u),o=u-1;o>=0;--o)s.push(r=e.children[o]=new Er(i[o])),r.parent=e,r.depth=e.depth+1;return a.eachBefore(Sr)}function Nr(t){return t.children}function kr(t){t.data=t.data.data}function Sr(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function Er(t){this.data=t,this.depth=this.height=0,this.parent=null}function Ar(t,n){var e=t.r-n.r,r=n.x-t.x,i=n.y-t.y;return e<0||e*e0&&e*e>r*r+i*i}function zr(t,n){for(var e=0;ee*e+r*r}function Dr(t){var n=t._,e=t.next._,r=n.r+e.r,i=(n.x*e.r+e.x*n.r)/r,o=(n.y*e.r+e.y*n.r)/r;return i*i+o*o}function Ur(t){this._=t,this.next=null,this.previous=null}function Or(t){if(!(i=t.length))return 0;var n,e,r,i,o,u,a,c,s,f,l;if(n=t[0],n.x=0,n.y=0,!(i>1))return n.r;if(e=t[1],n.x=-e.r,e.x=n.r,e.y=0,!(i>2))return n.r+e.r;Lr(e,n,r=t[2]),n=new Ur(n),e=new Ur(e),r=new Ur(r),n.next=r.previous=e,e.next=n.previous=r,r.next=e.previous=n;t:for(a=3;ah&&(h=a),g=f*f*v,(p=Math.max(h/g,g/l))>d){f-=a;break}d=p}_.push(u={value:f,dice:c1&&hd(t[e[r-2]],t[e[r-1]],t[i])<=0;)--r;e[r++]=i}return e.slice(0,r)}function ei(t){this._size=t,this._call=this._error=null,this._tasks=[],this._data=[],this._waiting=this._active=this._ended=this._start=0}function ri(t){if(!t._start)try{(function(t){for(;t._start=t._waiting&&t._active=0;)if((e=t._tasks[r])&&(t._tasks[r]=null,e.abort))try{e.abort()}catch(n){}t._active=NaN,oi(t)}function oi(t){if(!t._active&&t._call){var n=t._data;t._data=void 0,t._call(t._error,n)}}function ui(t){if(null==t)t=1/0;else if(!((t=+t)>=1))throw new Error("invalid concurrency");return new ei(t)}function ai(t){function n(n){var o=n+"",u=e.get(o);if(!u){if(i!==Ld)return i;e.set(o,u=r.push(n))}return t[(u-1)%t.length]}var e=Kt(),r=[],i=Ld;return t=null==t?[]:Rd.call(t),n.domain=function(t){if(!arguments.length)return r.slice();r=[],e=Kt();for(var i,o,u=-1,a=t.length;++u2?function(t,n,e,r){var i=Math.min(t.length,n.length)-1,o=new Array(i),u=new Array(i),a=-1;for(t[i]=e?1:r(t)}}}(t):t,s)))(+n)}var i,o,u,a=Ud,c=Ud,s=vs,f=!1;return r.invert=function(t){return(u||(u=i(c,a,fi,f?function(t){return function(n,e){var r=t(n=+n,e=+e);return function(t){return t<=0?n:t>=1?e:r(t)}}}(n):n)))(+t)},r.domain=function(t){return arguments.length?(a=Pd.call(t,Dd),e()):a.slice()},r.range=function(t){return arguments.length?(c=Rd.call(t),e()):c.slice()},r.rangeRound=function(t){return c=Rd.call(t),s=gs,e()},r.clamp=function(t){return arguments.length?(f=!!t,e()):f},r.interpolate=function(t){return arguments.length?(s=t,e()):s},e()}function pi(t){var n=t.domain;return t.ticks=function(t){var e=n();return Da(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){return Od(n(),t,e)},t.nice=function(r){null==r&&(r=10);var i,o=n(),u=0,a=o.length-1,c=o[u],s=o[a];return s0?i=e(c=Math.floor(c/i)*i,s=Math.ceil(s/i)*i,r):i<0&&(i=e(c=Math.ceil(c*i)/i,s=Math.floor(s*i)/i,r)),i>0?(o[u]=Math.floor(c/i)*i,o[a]=Math.ceil(s/i)*i,n(o)):i<0&&(o[u]=Math.ceil(c*i)/i,o[a]=Math.floor(s*i)/i,n(o)),t},t}function di(){var t=hi(fi,fs);return t.copy=function(){return li(t,di())},pi(t)}function vi(){function t(t){return+t}var n=[0,1];return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=Pd.call(e,Dd),t):n.slice()},t.copy=function(){return vi().domain(n)},pi(t)}function gi(t,n){return(n=Math.log(n/t))?function(e){return Math.log(e/t)/n}:qd(n)}function _i(t,n){return t<0?function(e){return-Math.pow(-n,e)*Math.pow(-t,1-e)}:function(e){return Math.pow(n,e)*Math.pow(t,1-e)}}function yi(t){return 10===t?function(t){return isFinite(t)?+("1e"+t):t<0?0:t}:t===Math.E?Math.exp:function(n){return Math.pow(t,n)}}function mi(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),function(n){return Math.log(n)/t})}function xi(t){return function(n){return-t(-n)}}function bi(){function n(){return o=mi(i),u=yi(i),r()[0]<0&&(o=xi(o),u=xi(u)),e}var e=hi(gi,_i).domain([1,10]),r=e.domain,i=10,o=mi(10),u=yi(10);return e.base=function(t){return arguments.length?(i=+t,n()):i},e.domain=function(t){return arguments.length?(r(t),n()):r()},e.ticks=function(t){var n,e=r(),a=e[0],c=e[e.length-1];(n=c0){for(;hc)break;v.push(l)}}else for(;h=1;--f)if(!((l=s*f)c)break;v.push(l)}}else v=Da(h,p,Math.min(p-h,d)).map(u);return n?v.reverse():v},e.tickFormat=function(n,r){if(null==r&&(r=10===i?".0e":","),"function"!=typeof r&&(r=t.format(r)),n===1/0)return r;null==n&&(n=10);var a=Math.max(1,i*n/e.ticks().length);return function(t){var n=t/u(Math.round(o(t)));return n*i0?i[n-1]:e[0],n=i?[o[i-1],r]:[o[n-1],o[n]]},t.copy=function(){return Ni().domain([e,r]).range(u)},pi(t)}function ki(){function t(t){if(t<=t)return e[ba(n,t,0,r)]}var n=[.5],e=[0,1],r=1;return t.domain=function(i){return arguments.length?(n=Rd.call(i),r=Math.min(n.length,e.length-1),t):n.slice()},t.range=function(i){return arguments.length?(e=Rd.call(i),r=Math.min(n.length,e.length-1),t):e.slice()},t.invertExtent=function(t){var r=e.indexOf(t);return[n[r-1],n[r]]},t.copy=function(){return ki().domain(n).range(e)},t}function Si(t,n,e,r){function i(n){return t(n=new Date(+n)),n}return i.floor=i,i.ceil=function(e){return t(e=new Date(e-1)),n(e,1),t(e),e},i.round=function(t){var n=i(t),e=i.ceil(t);return t-n0))return a;do{a.push(u=new Date(+e)),n(e,o),t(e)}while(u=n)for(;t(n),!e(n);)n.setTime(n-1)},function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;n(t,-1),!e(t););else for(;--r>=0;)for(;n(t,1),!e(t););})},e&&(i.count=function(n,r){return Id.setTime(+n),Yd.setTime(+r),t(Id),t(Yd),Math.floor(e(Id,Yd))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(n){return r(n)%t==0}:function(n){return i.count(0,n)%t==0}):i:null}),i}function Ei(t){return Si(function(n){n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+7*n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*jd)/Xd})}function Ai(t){return Si(function(n){n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+7*n)},function(t,n){return(n-t)/Xd})}function Ci(t){if(0<=t.y&&t.y<100){var n=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return n.setFullYear(t.y),n}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function zi(t){if(0<=t.y&&t.y<100){var n=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return n.setUTCFullYear(t.y),n}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Pi(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}function Ri(t){function n(t,n){return function(e){var r,i,o,u=[],a=-1,c=0,s=t.length;for(e instanceof Date||(e=new Date(+e));++a53)return null;"w"in u||(u.w=1),"Z"in u?(i=(o=(i=zi(Pi(u.y))).getUTCDay())>4||0===o?Nv.ceil(i):Nv(i),i=wv.offset(i,7*(u.V-1)),u.y=i.getUTCFullYear(),u.m=i.getUTCMonth(),u.d=i.getUTCDate()+(u.w+6)%7):(i=(o=(i=n(Pi(u.y))).getDay())>4||0===o?nv.ceil(i):nv(i),i=Jd.offset(i,7*(u.V-1)),u.y=i.getFullYear(),u.m=i.getMonth(),u.d=i.getDate()+(u.w+6)%7)}else("W"in u||"U"in u)&&("w"in u||(u.w="u"in u?u.u%7:"W"in u?1:0),o="Z"in u?zi(Pi(u.y)).getUTCDay():n(Pi(u.y)).getDay(),u.m=0,u.d="W"in u?(u.w+6)%7+7*u.W-(o+5)%7:u.w+7*u.U-(o+6)%7);return"Z"in u?(u.H+=u.Z/100|0,u.M+=u.Z%100,zi(u)):n(u)}}function r(t,n,e,r){for(var i,o,u=0,a=n.length,c=e.length;u=c)return-1;if(37===(i=n.charCodeAt(u++))){if(i=n.charAt(u++),!(o=T[i in Hv?n.charAt(u++):i])||(r=o(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}var i=t.dateTime,o=t.date,u=t.time,a=t.periods,c=t.days,s=t.shortDays,f=t.months,l=t.shortMonths,h=Di(a),p=Ui(a),d=Di(c),v=Ui(c),g=Di(s),_=Ui(s),y=Di(f),m=Ui(f),x=Di(l),b=Ui(l),w={a:function(t){return s[t.getDay()]},A:function(t){return c[t.getDay()]},b:function(t){return l[t.getMonth()]},B:function(t){return f[t.getMonth()]},c:null,d:ro,e:ro,f:co,H:io,I:oo,j:uo,L:ao,m:so,M:fo,p:function(t){return a[+(t.getHours()>=12)]},Q:Fo,s:Io,S:lo,u:ho,U:po,V:vo,w:go,W:_o,x:null,X:null,y:yo,Y:mo,Z:xo,"%":Oo},M={a:function(t){return s[t.getUTCDay()]},A:function(t){return c[t.getUTCDay()]},b:function(t){return l[t.getUTCMonth()]},B:function(t){return f[t.getUTCMonth()]},c:null,d:bo,e:bo,f:ko,H:wo,I:Mo,j:To,L:No,m:So,M:Eo,p:function(t){return a[+(t.getUTCHours()>=12)]},Q:Fo,s:Io,S:Ao,u:Co,U:zo,V:Po,w:Ro,W:Lo,x:null,X:null,y:qo,Y:Do,Z:Uo,"%":Oo},T={a:function(t,n,e){var r=g.exec(n.slice(e));return r?(t.w=_[r[0].toLowerCase()],e+r[0].length):-1},A:function(t,n,e){var r=d.exec(n.slice(e));return r?(t.w=v[r[0].toLowerCase()],e+r[0].length):-1},b:function(t,n,e){var r=x.exec(n.slice(e));return r?(t.m=b[r[0].toLowerCase()],e+r[0].length):-1},B:function(t,n,e){var r=y.exec(n.slice(e));return r?(t.m=m[r[0].toLowerCase()],e+r[0].length):-1},c:function(t,n,e){return r(t,i,n,e)},d:$i,e:$i,f:Ki,H:Zi,I:Zi,j:Wi,L:Ji,m:Vi,M:Gi,p:function(t,n,e){var r=h.exec(n.slice(e));return r?(t.p=p[r[0].toLowerCase()],e+r[0].length):-1},Q:no,s:eo,S:Qi,u:Fi,U:Ii,V:Yi,w:Oi,W:Bi,x:function(t,n,e){return r(t,o,n,e)},X:function(t,n,e){return r(t,u,n,e)},y:ji,Y:Hi,Z:Xi,"%":to};return w.x=n(o,w),w.X=n(u,w),w.c=n(i,w),M.x=n(o,M),M.X=n(u,M),M.c=n(i,M),{format:function(t){var e=n(t+="",w);return e.toString=function(){return t},e},parse:function(t){var n=e(t+="",Ci);return n.toString=function(){return t},n},utcFormat:function(t){var e=n(t+="",M);return e.toString=function(){return t},e},utcParse:function(t){var n=e(t,zi);return n.toString=function(){return t},n}}}function Li(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o68?1900:2e3),e+r[0].length):-1}function Xi(t,n,e){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function Vi(t,n,e){var r=jv.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function $i(t,n,e){var r=jv.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function Wi(t,n,e){var r=jv.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function Zi(t,n,e){var r=jv.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function Gi(t,n,e){var r=jv.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function Qi(t,n,e){var r=jv.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function Ji(t,n,e){var r=jv.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function Ki(t,n,e){var r=jv.exec(n.slice(e,e+6));return r?(t.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function to(t,n,e){var r=Xv.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function no(t,n,e){var r=jv.exec(n.slice(e));return r?(t.Q=+r[0],e+r[0].length):-1}function eo(t,n,e){var r=jv.exec(n.slice(e));return r?(t.Q=1e3*+r[0],e+r[0].length):-1}function ro(t,n){return Li(t.getDate(),n,2)}function io(t,n){return Li(t.getHours(),n,2)}function oo(t,n){return Li(t.getHours()%12||12,n,2)}function uo(t,n){return Li(1+Jd.count(gv(t),t),n,3)}function ao(t,n){return Li(t.getMilliseconds(),n,3)}function co(t,n){return ao(t,n)+"000"}function so(t,n){return Li(t.getMonth()+1,n,2)}function fo(t,n){return Li(t.getMinutes(),n,2)}function lo(t,n){return Li(t.getSeconds(),n,2)}function ho(t){var n=t.getDay();return 0===n?7:n}function po(t,n){return Li(tv.count(gv(t),t),n,2)}function vo(t,n){var e=t.getDay();return t=e>=4||0===e?iv(t):iv.ceil(t),Li(iv.count(gv(t),t)+(4===gv(t).getDay()),n,2)}function go(t){return t.getDay()}function _o(t,n){return Li(nv.count(gv(t),t),n,2)}function yo(t,n){return Li(t.getFullYear()%100,n,2)}function mo(t,n){return Li(t.getFullYear()%1e4,n,4)}function xo(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+Li(n/60|0,"0",2)+Li(n%60,"0",2)}function bo(t,n){return Li(t.getUTCDate(),n,2)}function wo(t,n){return Li(t.getUTCHours(),n,2)}function Mo(t,n){return Li(t.getUTCHours()%12||12,n,2)}function To(t,n){return Li(1+wv.count(Iv(t),t),n,3)}function No(t,n){return Li(t.getUTCMilliseconds(),n,3)}function ko(t,n){return No(t,n)+"000"}function So(t,n){return Li(t.getUTCMonth()+1,n,2)}function Eo(t,n){return Li(t.getUTCMinutes(),n,2)}function Ao(t,n){return Li(t.getUTCSeconds(),n,2)}function Co(t){var n=t.getUTCDay();return 0===n?7:n}function zo(t,n){return Li(Tv.count(Iv(t),t),n,2)}function Po(t,n){var e=t.getUTCDay();return t=e>=4||0===e?Ev(t):Ev.ceil(t),Li(Ev.count(Iv(t),t)+(4===Iv(t).getUTCDay()),n,2)}function Ro(t){return t.getUTCDay()}function Lo(t,n){return Li(Nv.count(Iv(t),t),n,2)}function qo(t,n){return Li(t.getUTCFullYear()%100,n,2)}function Do(t,n){return Li(t.getUTCFullYear()%1e4,n,4)}function Uo(){return"+0000"}function Oo(){return"%"}function Fo(t){return+t}function Io(t){return Math.floor(+t/1e3)}function Yo(n){return Yv=Ri(n),t.timeFormat=Yv.format,t.timeParse=Yv.parse,t.utcFormat=Yv.utcFormat,t.utcParse=Yv.utcParse,Yv}function Bo(t){return new Date(t)}function Ho(t){return t instanceof Date?+t:+new Date(+t)}function jo(t,n,e,i,o,u,a,c,s){function f(n,e,i,o){if(null==n&&(n=10),"number"==typeof n){var u=Math.abs(i-e)/n,a=ma(function(t){return t[2]}).right(w,u);a===w.length?(o=r(e/ng,i/ng,n),n=t):a?(o=(a=w[u/w[a-1][2]=1?Ng:t<=-1?-Ng:Math.asin(t)}function Wo(t){return t.innerRadius}function Zo(t){return t.outerRadius}function Go(t){return t.startAngle}function Qo(t){return t.endAngle}function Jo(t){return t&&t.padAngle}function Ko(t,n,e,r,i,o,u){var a=t-e,c=n-r,s=(u?o:-o)/wg(a*a+c*c),f=s*c,l=-s*a,h=t+f,p=n+l,d=e+f,v=r+l,g=(h+d)/2,_=(p+v)/2,y=d-h,m=v-p,x=y*y+m*m,b=i-o,w=h*v-d*p,M=(m<0?-1:1)*wg(mg(0,b*b*x-w*w)),T=(w*m-y*M)/x,N=(-w*y-m*M)/x,k=(w*m+y*M)/x,S=(-w*y+m*M)/x,E=T-g,A=N-_,C=k-g,z=S-_;return E*E+A*A>C*C+z*z&&(T=k,N=S),{cx:T,cy:N,x01:-f,y01:-l,x11:T*(i/b-1),y11:N*(i/b-1)}}function tu(t){this._context=t}function nu(t){return t[0]}function eu(t){return t[1]}function ru(t){this._curve=t}function iu(t){function n(n){return new ru(t(n))}return n._curve=t,n}function ou(t){var n=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?n(iu(t)):n()._curve},t}function uu(t){return t.source}function au(t){return t.target}function cu(t){function n(){var n,a=Dg.call(arguments),c=e.apply(this,a),s=r.apply(this,a);if(u||(u=n=Vt()),t(u,+i.apply(this,(a[0]=c,a)),+o.apply(this,a),+i.apply(this,(a[0]=s,a)),+o.apply(this,a)),n)return u=null,n+""||null}var e=uu,r=au,i=nu,o=eu,u=null;return n.source=function(t){return arguments.length?(e=t,n):e},n.target=function(t){return arguments.length?(r=t,n):r},n.x=function(t){return arguments.length?(i="function"==typeof t?t:vg(+t),n):i},n.y=function(t){return arguments.length?(o="function"==typeof t?t:vg(+t),n):o},n.context=function(t){return arguments.length?(u=null==t?null:t,n):u},n}function su(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n=(n+r)/2,e,n,i,r,i)}function fu(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n,e=(e+i)/2,r,e,r,i)}function lu(t,n,e,r,i){var o=qg(n,e),u=qg(n,e=(e+i)/2),a=qg(r,e),c=qg(r,i);t.moveTo(o[0],o[1]),t.bezierCurveTo(u[0],u[1],a[0],a[1],c[0],c[1])}function hu(t,n,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+n)/6,(t._y0+4*t._y1+e)/6)}function pu(t){this._context=t}function du(t){this._context=t}function vu(t){this._context=t}function gu(t,n){this._basis=new pu(t),this._beta=n}function _u(t,n,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-n),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function yu(t,n){this._context=t,this._k=(1-n)/6}function mu(t,n){this._context=t,this._k=(1-n)/6}function xu(t,n){this._context=t,this._k=(1-n)/6}function bu(t,n,e){var r=t._x1,i=t._y1,o=t._x2,u=t._y2;if(t._l01_a>Mg){var a=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*a-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*a-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>Mg){var s=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,f=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*s+t._x1*t._l23_2a-n*t._l12_2a)/f,u=(u*s+t._y1*t._l23_2a-e*t._l12_2a)/f}t._context.bezierCurveTo(r,i,o,u,t._x2,t._y2)}function wu(t,n){this._context=t,this._alpha=n}function Mu(t,n){this._context=t,this._alpha=n}function Tu(t,n){this._context=t,this._alpha=n}function Nu(t){this._context=t}function ku(t){return t<0?-1:1}function Su(t,n,e){var r=t._x1-t._x0,i=n-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),u=(e-t._y1)/(i||r<0&&-0),a=(o*i+u*r)/(r+i);return(ku(o)+ku(u))*Math.min(Math.abs(o),Math.abs(u),.5*Math.abs(a))||0}function Eu(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function Au(t,n,e){var r=t._x0,i=t._y0,o=t._x1,u=t._y1,a=(o-r)/3;t._context.bezierCurveTo(r+a,i+a*n,o-a,u-a*e,o,u)}function Cu(t){this._context=t}function zu(t){this._context=new Pu(t)}function Pu(t){this._context=t}function Ru(t){this._context=t}function Lu(t){var n,e,r=t.length-1,i=new Array(r),o=new Array(r),u=new Array(r);for(i[0]=0,o[0]=2,u[0]=t[0]+2*t[1],n=1;n=0;--n)i[n]=(u[n]-i[n+1])/o[n];for(o[r-1]=(t[r]+i[r-1])/2,n=0;n0)){if(o/=h,h<0){if(o0){if(o>l)return;o>f&&(f=o)}if(o=r-c,h||!(o<0)){if(o/=h,h<0){if(o>l)return;o>f&&(f=o)}else if(h>0){if(o0)){if(o/=p,p<0){if(o0){if(o>l)return;o>f&&(f=o)}if(o=i-s,p||!(o<0)){if(o/=p,p<0){if(o>l)return;o>f&&(f=o)}else if(p>0){if(o0||l<1)||(f>0&&(t[0]=[c+f*h,s+f*p]),l<1&&(t[1]=[c+l*h,s+l*p]),!0)}}}}}function Zu(t,n,e,r,i){var o=t[1];if(o)return!0;var u,a,c=t[0],s=t.left,f=t.right,l=s[0],h=s[1],p=f[0],d=f[1],v=(l+p)/2,g=(h+d)/2;if(d===h){if(v=r)return;if(l>p){if(c){if(c[1]>=i)return}else c=[v,e];o=[v,i]}else{if(c){if(c[1]1)if(l>p){if(c){if(c[1]>=i)return}else c=[(e-a)/u,e];o=[(i-a)/u,i]}else{if(c){if(c[1]=r)return}else c=[n,u*n+a];o=[r,u*r+a]}else{if(c){if(c[0]=-b_)){var p=c*c+s*s,d=f*f+l*l,v=(l*p-s*d)/h,g=(c*d-f*p)/h,_=y_.pop()||new function(){Yu(this),this.x=this.y=this.arc=this.site=this.cy=null};_.arc=t,_.site=i,_.x=v+u,_.y=(_.cy=g+a)+Math.sqrt(v*v+g*g),t.circle=_;for(var y=null,m=g_._;m;)if(_.yx_)a=a.L;else{if(!((i=o-function(t,n){var e=t.N;if(e)return oa(e,n);var r=t.site;return r[1]===n?r[0]:1/0}(a,u))>x_)){r>-x_?(n=a.P,e=a):i>-x_?(n=a,e=a.N):n=e=a;break}if(!a.R){n=a;break}a=a.R}(function(t){v_[t.index]={site:t,halfedges:[]}})(t);var c=na(t);if(d_.insert(n,c),n||e){if(n===e)return ta(n),e=na(n.site),d_.insert(c,e),c.edge=e.edge=Xu(n.site,c.site),Ku(n),void Ku(e);if(e){ta(n),ta(e);var s=n.site,f=s[0],l=s[1],h=t[0]-f,p=t[1]-l,d=e.site,v=d[0]-f,g=d[1]-l,_=2*(h*g-p*v),y=h*h+p*p,m=v*v+g*g,x=[(g*y-p*m)/_+f,(h*m-v*y)/_+l];$u(e.edge,s,d,x),c.edge=Xu(s,t,null,x),e.edge=Xu(t,d,null,x),Ku(n),Ku(e)}else c.edge=Xu(n.site,c.site)}}function oa(t,n){var e=t.site,r=e[0],i=e[1],o=i-n;if(!o)return r;var u=t.P;if(!u)return-1/0;var a=(e=u.site)[0],c=e[1],s=c-n;if(!s)return a;var f=a-r,l=1/o-1/s,h=f/s;return l?(-h+Math.sqrt(h*h-2*l*(f*f/(-2*s)-c+s/2+i-o/2)))/l+r:(r+a)/2}function ua(t,n,e){return(t[0]-e[0])*(n[1]-t[1])-(t[0]-n[0])*(e[1]-t[1])}function aa(t,n){return n[1]-t[1]||n[0]-t[0]}function ca(t,n){var e,r,i,o=t.sort(aa).pop();for(__=[],v_=new Array(t.length),d_=new Iu,g_=new Iu;;)if(i=p_,o&&(!i||o[1]x_||Math.abs(i[0][1]-i[1][1])>x_)||delete __[o]})(u,a,c,s),function(t,n,e,r){var i,o,u,a,c,s,f,l,h,p,d,v,g=v_.length,_=!0;for(i=0;ix_||Math.abs(v-h)>x_)&&(c.splice(a,0,__.push(Vu(u,p,Math.abs(d-t)x_?[t,Math.abs(l-t)x_?[Math.abs(h-r)x_?[e,Math.abs(l-e)x_?[Math.abs(h-n)r?(r+i)/2:Math.min(0,r)||Math.max(0,i),u>o?(o+u)/2:Math.min(0,o)||Math.max(0,u))}var ya=function(t,n){return tn?1:t>=n?0:NaN},ma=function(t){return 1===t.length&&(t=function(t){return function(n,e){return ya(t(n),e)}}(t)),{left:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r>>1;t(n[o],e)<0?r=o+1:i=o}return r},right:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r>>1;t(n[o],e)>0?i=o:r=o+1}return r}}},xa=ma(ya),ba=xa.right,wa=xa.left,Ma=function(t){return null===t?NaN:+t},Ta=function(t,n){var e,r,i=t.length,o=0,u=-1,a=0,c=0;if(null==n)for(;++u1)return c/(o-1)},Na=function(t,n){var e=Ta(t,n);return e?Math.sqrt(e):e},ka=function(t,n){var e,r,i,o=t.length,u=-1;if(null==n){for(;++u=e)for(r=i=e;++ue&&(r=e),i=e)for(r=i=e;++ue&&(r=e),i0)return[t];if((i=n0)for(t=Math.ceil(t/a),n=Math.floor(n/a),u=new Array(o=Math.ceil(n-t+1));++c=1)return+e(t[r-1],r-1,t);var r,i=(r-1)*n,o=Math.floor(i),u=+e(t[o],o,t);return u+(+e(t[o+1],o+1,t)-u)*(i-o)}},Fa=function(t){for(var n,e,r,i=t.length,o=-1,u=0;++o=0;)for(n=(r=t[i]).length;--n>=0;)e[--u]=r[n];return e},Ia=function(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o=e)for(r=e;++oe&&(r=e)}else for(;++o=e)for(r=e;++oe&&(r=e);return r},Ya=function(t){if(!(o=t.length))return[];for(var n=-1,e=Ia(t,i),r=new Array(e);++n=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}})}(t+"",r),o=-1,u=i.length;{if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++o0)for(var e,r,i=new Array(e),o=0;o=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),Qa.hasOwnProperty(n)?{space:Qa[n],local:t}:t},Ka=function(t){var n=Ja(t);return(n.local?function(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}:function(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===Ga&&n.documentElement.namespaceURI===Ga?n.createElement(t):n.createElementNS(e,t)}})(n)},tc=0;l.prototype=f.prototype={constructor:l,get:function(t){for(var n=this._;!(n in t);)if(!(t=t.parentNode))return;return t[n]},set:function(t,n){return t[this._]=n},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}};var nc=function(t){return function(){return this.matches(t)}};if("undefined"!=typeof document){var ec=document.documentElement;if(!ec.matches){var rc=ec.webkitMatchesSelector||ec.msMatchesSelector||ec.mozMatchesSelector||ec.oMatchesSelector;nc=function(t){return function(){return rc.call(this,t)}}}}var ic=nc,oc={};if(t.event=null,"undefined"!=typeof document){"onmouseenter"in document.documentElement||(oc={mouseenter:"mouseover",mouseleave:"mouseout"})}var uc=function(){for(var n,e=t.event;n=e.sourceEvent;)e=n;return e},ac=function(t,n){var e=t.ownerSVGElement||t;if(e.createSVGPoint){var r=e.createSVGPoint();return r.x=n.clientX,r.y=n.clientY,r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}var i=t.getBoundingClientRect();return[n.clientX-i.left-t.clientLeft,n.clientY-i.top-t.clientTop]},cc=function(t){var n=uc();return n.changedTouches&&(n=n.changedTouches[0]),ac(t,n)},sc=function(t){return null==t?function(){}:function(){return this.querySelector(t)}},fc=function(t){return null==t?function(){return[]}:function(){return this.querySelectorAll(t)}},lc=function(t){return new Array(t.length)};v.prototype={constructor:v,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var hc="$",pc=function(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView};x.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var dc=[null];S.prototype=E.prototype={constructor:S,select:function(t){"function"!=typeof t&&(t=sc(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i=b&&(b=x+1);!(m=_[b])&&++b=0;)(r=i[o])&&(u&&u!==r.nextSibling&&u.parentNode.insertBefore(r,u),u=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=g);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o1?this.each((null==n?function(t){return function(){this.style.removeProperty(t)}}:"function"==typeof n?function(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}:function(t,n,e){return function(){this.style.setProperty(t,n,e)}})(t,n,null==e?"":e)):_(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?function(t){return function(){delete this[t]}}:"function"==typeof n?function(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}:function(t,n){return function(){this[t]=n}})(t,n)):this.node()[t]},classed:function(t,n){var e=y(t+"");if(arguments.length<2){for(var r=m(this.node()),i=-1,o=e.length;++i=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}}),u=o.length;{if(!(arguments.length<2)){for(a=n?p:function(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r=240?t-240:t+120,i,r),$(t,i,r),$(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1}}));var Rc=Math.PI/180,Lc=180/Math.PI,qc=.95047,Dc=1,Uc=1.08883,Oc=4/29,Fc=6/29,Ic=3*Fc*Fc,Yc=Fc*Fc*Fc;xc(G,Z,D(U,{brighter:function(t){return new G(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new G(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,n=isNaN(this.a)?t:t+this.a/500,e=isNaN(this.b)?t:t-this.b/200;return t=Dc*J(t),n=qc*J(n),e=Uc*J(e),new H(K(3.2404542*n-1.5371385*t-.4985314*e),K(-.969266*n+1.8760108*t+.041556*e),K(.0556434*n-.2040259*t+1.0572252*e),this.opacity)}})),xc(et,nt,D(U,{brighter:function(t){return new et(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new et(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return W(this).rgb()}}));var Bc=-.14861,Hc=1.78277,jc=-.29227,Xc=-.90649,Vc=1.97294,$c=Vc*Xc,Wc=Vc*Hc,Zc=Hc*jc-Xc*Bc;xc(it,rt,D(U,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new it(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new it(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*Rc,n=+this.l,e=isNaN(this.s)?0:this.s*n*(1-n),r=Math.cos(t),i=Math.sin(t);return new H(255*(n+e*(Bc*r+Hc*i)),255*(n+e*(jc*r+Xc*i)),255*(n+e*(Vc*r)),this.opacity)}}));var Gc,Qc,Jc,Kc,ts,ns,es=function(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],u=r>0?t[r-1]:2*i-o,a=ro&&(i=n.slice(o,i),a[u]?a[u]+=i:a[++u]=i),(e=e[0])===(r=r[0])?a[u]?a[u]+=r:a[++u]=r:(a[++u]=null,c.push({i:u,x:fs(e,r)})),o=ps.lastIndex;return ojs&&e.state<$s,e.state=Ws,e.timer.stop(),r&&e.on.call("interrupt",t,t.__data__,e.index,e.group),delete o[i]):u=!1;u&&delete t.__transition}},Qs=function(t,n){var e;return("number"==typeof n?fs:n instanceof O?os:(e=O(n))?(n=e,os):ds)(t,n)},Js=E.prototype.constructor,Ks=0,tf=E.prototype;Et.prototype=At.prototype={constructor:Et,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=sc(t));for(var r=this._groups,i=r.length,o=new Array(i),u=0;u=0&&(t=t.slice(0,n)),!t||"start"===t})}(n)?Tt:Nt;return function(){var u=o(this,t),a=u.on;a!==r&&(i=(r=a).copy()).on(n,e),u.on=i}}(e,t,n))},attr:function(t,n){var e=Ja(t),r="transform"===e?bs:Qs;return this.attrTween(t,"function"==typeof n?(e.local?function(t,n,e){var r,i,o;return function(){var u,a=e(this);if(null!=a)return(u=this.getAttributeNS(t.space,t.local))===a?null:u===r&&a===i?o:o=n(r=u,i=a);this.removeAttributeNS(t.space,t.local)}}:function(t,n,e){var r,i,o;return function(){var u,a=e(this);if(null!=a)return(u=this.getAttribute(t))===a?null:u===r&&a===i?o:o=n(r=u,i=a);this.removeAttribute(t)}})(e,r,St(this,"attr."+t,n)):null==n?(e.local?function(t){return function(){this.removeAttributeNS(t.space,t.local)}}:function(t){return function(){this.removeAttribute(t)}})(e):(e.local?function(t,n,e){var r,i;return function(){var o=this.getAttributeNS(t.space,t.local);return o===e?null:o===r?i:i=n(r=o,e)}}:function(t,n,e){var r,i;return function(){var o=this.getAttribute(t);return o===e?null:o===r?i:i=n(r=o,e)}})(e,r,n+""))},attrTween:function(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(null==n)return this.tween(e,null);if("function"!=typeof n)throw new Error;var r=Ja(t);return this.tween(e,(r.local?function(t,n){function e(){var e=this,r=n.apply(e,arguments);return r&&function(n){e.setAttributeNS(t.space,t.local,r(n))}}return e._value=n,e}:function(t,n){function e(){var e=this,r=n.apply(e,arguments);return r&&function(n){e.setAttribute(t,r(n))}}return e._value=n,e})(r,n))},style:function(t,n,e){var r="transform"==(t+="")?xs:Qs;return null==n?this.styleTween(t,function(t,n){var e,r,i;return function(){var o=_(this,t),u=(this.style.removeProperty(t),_(this,t));return o===u?null:o===e&&u===r?i:i=n(e=o,r=u)}}(t,r)).on("end.style."+t,function(t){return function(){this.style.removeProperty(t)}}(t)):this.styleTween(t,"function"==typeof n?function(t,n,e){var r,i,o;return function(){var u=_(this,t),a=e(this);return null==a&&(this.style.removeProperty(t),a=_(this,t)),u===a?null:u===r&&a===i?o:o=n(r=u,i=a)}}(t,r,St(this,"style."+t,n)):function(t,n,e){var r,i;return function(){var o=_(this,t);return o===e?null:o===r?i:i=n(r=o,e)}}(t,r,n+""),e)},styleTween:function(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==n)return this.tween(r,null);if("function"!=typeof n)throw new Error;return this.tween(r,function(t,n,e){function r(){var r=this,i=n.apply(r,arguments);return i&&function(n){r.style.setProperty(t,i(n),e)}}return r._value=n,r}(t,n,null==e?"":e))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var n=t(this);this.textContent=null==n?"":n}}(St(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},remove:function(){return this.on("end.remove",function(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}(this._id))},tween:function(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r,i=kt(this.node(),e).tween,o=0,u=i.length;o1e-6)if(Math.abs(f*a-c*s)>1e-6&&i){var h=e-o,p=r-u,d=a*a+c*c,v=h*h+p*p,g=Math.sqrt(d),_=Math.sqrt(l),y=i*Math.tan((Zf-Math.acos((d+l-v)/(2*g*_)))/2),m=y/_,x=y/g;Math.abs(m-1)>1e-6&&(this._+="L"+(t+m*s)+","+(n+m*f)),this._+="A"+i+","+i+",0,0,"+ +(f*h>s*p)+","+(this._x1=t+x*a)+","+(this._y1=n+x*c)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,r,i,o){t=+t,n=+n;var u=(e=+e)*Math.cos(r),a=e*Math.sin(r),c=t+u,s=n+a,f=1^o,l=o?r-i:i-r;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+c+","+s:(Math.abs(this._x1-c)>1e-6||Math.abs(this._y1-s)>1e-6)&&(this._+="L"+c+","+s),e&&(l<0&&(l=l%Gf+Gf),l>Qf?this._+="A"+e+","+e+",0,1,"+f+","+(t-u)+","+(n-a)+"A"+e+","+e+",0,1,"+f+","+(this._x1=c)+","+(this._y1=s):l>1e-6&&(this._+="A"+e+","+e+",0,"+ +(l>=Zf)+","+f+","+(this._x1=t+e*Math.cos(i))+","+(this._y1=n+e*Math.sin(i))))},rect:function(t,n,e,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +r+"h"+-e+"Z"},toString:function(){return this._}};Jt.prototype=Kt.prototype={constructor:Jt,has:function(t){return"$"+t in this},get:function(t){return this["$"+t]},set:function(t,n){return this["$"+t]=n,this},remove:function(t){var n="$"+t;return n in this&&delete this[n]},clear:function(){for(var t in this)"$"===t[0]&&delete this[t]},keys:function(){var t=[];for(var n in this)"$"===n[0]&&t.push(n.slice(1));return t},values:function(){var t=[];for(var n in this)"$"===n[0]&&t.push(this[n]);return t},entries:function(){var t=[];for(var n in this)"$"===n[0]&&t.push({key:n.slice(1),value:this[n]});return t},size:function(){var t=0;for(var n in this)"$"===n[0]&&++t;return t},empty:function(){for(var t in this)if("$"===t[0])return!1;return!0},each:function(t){for(var n in this)"$"===n[0]&&t(this[n],n.slice(1),this)}};var Jf=Kt.prototype;on.prototype=un.prototype={constructor:on,has:Jf.has,add:function(t){return t+="",this["$"+t]=t,this},remove:Jf.remove,clear:Jf.clear,values:Jf.keys,size:Jf.size,empty:Jf.empty,each:Jf.each};var Kf={},tl={},nl=34,el=10,rl=13,il=function(t){function n(t,n){function e(){if(s)return tl;if(f)return f=!1,Kf;var n,e,r=a;if(t.charCodeAt(r)===nl){for(;a++=u?s=!0:(e=t.charCodeAt(a++))===el?f=!0:e===rl&&(f=!0,t.charCodeAt(a)===el&&++a),t.slice(r+1,n-1).replace(/""/g,'"')}for(;af&&(f=r),il&&(l=i));for(ft||t>i||r>n||n>o))return this;var u,a,c=i-e,s=this._root;switch(a=(n<(r+o)/2)<<1|t<(e+i)/2){case 0:do{u=new Array(4),u[a]=s,s=u}while(c*=2,i=e+c,o=r+c,t>i||n>o);break;case 1:do{u=new Array(4),u[a]=s,s=u}while(c*=2,e=i-c,o=r+c,e>t||n>o);break;case 2:do{u=new Array(4),u[a]=s,s=u}while(c*=2,i=e+c,r=o-c,t>i||r>n);break;case 3:do{u=new Array(4),u[a]=s,s=u}while(c*=2,e=i-c,r=o-c,e>t||r>n)}this._root&&this._root.length&&(this._root=s)}return this._x0=e,this._y0=r,this._x1=i,this._y1=o,this},yl.data=function(){var t=[];return this.visit(function(n){if(!n.length)do{t.push(n.data)}while(n=n.next)}),t},yl.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},yl.find=function(t,n,e){var r,i,o,u,a,c,s,f=this._x0,l=this._y0,h=this._x1,p=this._y1,d=[],v=this._root;for(v&&d.push(new _l(v,f,l,h,p)),null==e?e=1/0:(f=t-e,l=n-e,h=t+e,p=n+e,e*=e);c=d.pop();)if(!(!(v=c.node)||(i=c.x0)>h||(o=c.y0)>p||(u=c.x1)=_)<<1|t>=g)&&(c=d[d.length-1],d[d.length-1]=d[d.length-1-s],d[d.length-1-s]=c)}else{var y=t-+this._x.call(null,v.data),m=n-+this._y.call(null,v.data),x=y*y+m*m;if(x=(a=(d+g)/2))?d=a:g=a,(f=u>=(c=(v+_)/2))?v=c:_=c,n=p,!(p=p[l=f<<1|s]))return this;if(!p.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(e=n,h=l)}for(;p.data!==t;)if(r=p,!(p=p.next))return this;return(i=p.next)&&delete p.next,r?(i?r.next=i:delete r.next,this):n?(i?n[l]=i:delete n[l],(p=n[0]||n[1]||n[2]||n[3])&&p===(n[3]||n[2]||n[1]||n[0])&&!p.length&&(e?e[h]=p:this._root=p),this):(this._root=i,this)},yl.removeAll=function(t){for(var n=0,e=t.length;n1?r[0]+r.slice(2):r,+t.slice(e+1)]},Ml=function(t){return(t=wl(Math.abs(t)))?t[1]:NaN},Tl=function(t,n){var e=wl(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")},Nl={"":function(t,n){t:for(var e,r=(t=t.toPrecision(n)).length,i=1,o=-1;i0&&(o=0)}return o>0?t.slice(0,o)+t.slice(e+1):t},"%":function(t,n){return(100*t).toFixed(n)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,n){return t.toExponential(n)},f:function(t,n){return t.toFixed(n)},g:function(t,n){return t.toPrecision(n)},o:function(t){return Math.round(t).toString(8)},p:function(t,n){return Tl(100*t,n)},r:Tl,s:function(t,n){var e=wl(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(ml=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,u=r.length;return o===u?r:o>u?r+new Array(o-u+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+wl(t,Math.max(0,n+o-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}},kl=/^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i;yn.prototype=mn.prototype,mn.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(null==this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(null==this.precision?"":"."+Math.max(0,0|this.precision))+this.type};var Sl,El=function(t){return t},Al=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"],Cl=function(t){function n(t){function n(t){var n,r,u,f=g,x=_;if("c"===v)x=y(t)+x,t="";else{var b=(t=+t)<0;if(t=y(Math.abs(t),d),b&&0==+t&&(b=!1),f=(b?"("===s?s:"-":"-"===s||"("===s?"":s)+f,x=x+("s"===v?Al[8+ml/3]:"")+(b&&"("===s?")":""),m)for(n=-1,r=t.length;++n(u=t.charCodeAt(n))||u>57){x=(46===u?i+t.slice(n+1):t.slice(n))+x,t=t.slice(0,n);break}}p&&!l&&(t=e(t,1/0));var w=f.length+t.length+x.length,M=w>1)+f+t+x+M.slice(w);break;default:t=M+f+t+x}return o(t)}var a=(t=yn(t)).fill,c=t.align,s=t.sign,f=t.symbol,l=t.zero,h=t.width,p=t.comma,d=t.precision,v=t.type,g="$"===f?r[0]:"#"===f&&/[boxX]/.test(v)?"0"+v.toLowerCase():"",_="$"===f?r[1]:/[%p]/.test(v)?u:"",y=Nl[v],m=!v||/[defgprs%]/.test(v);return d=null==d?v?6:12:/[gprs]/.test(v)?Math.max(1,Math.min(21,d)):Math.max(0,Math.min(20,d)),n.toString=function(){return t+""},n}var e=t.grouping&&t.thousands?function(t,n){return function(e,r){for(var i=e.length,o=[],u=0,a=t[0],c=0;i>0&&a>0&&(c+a+1>r&&(a=Math.max(1,r-c)),o.push(e.substring(i-=a,i+a)),!((c+=a+1)>r));)a=t[u=(u+1)%t.length];return o.reverse().join(n)}}(t.grouping,t.thousands):El,r=t.currency,i=t.decimal,o=t.numerals?function(t){return function(n){return n.replace(/[0-9]/g,function(n){return t[+n]})}}(t.numerals):El,u=t.percent||"%";return{format:n,formatPrefix:function(t,e){var r=n((t=yn(t),t.type="f",t)),i=3*Math.max(-8,Math.min(8,Math.floor(Ml(e)/3))),o=Math.pow(10,-i),u=Al[8+i/3];return function(t){return r(o*t)+u}}}};xn({decimal:".",thousands:",",grouping:[3],currency:["$",""]});var zl=function(t){return Math.max(0,-Ml(Math.abs(t)))},Pl=function(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Ml(n)/3)))-Ml(Math.abs(t)))},Rl=function(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,Ml(n)-Ml(t))+1},Ll=function(){return new bn};bn.prototype={constructor:bn,reset:function(){this.s=this.t=0},add:function(t){wn(hh,t,this.t),wn(this,hh.s,this.s),this.s?this.t+=hh.t:this.s=hh.t},valueOf:function(){return this.s}};var ql,Dl,Ul,Ol,Fl,Il,Yl,Bl,Hl,jl,Xl,Vl,$l,Wl,Zl,Gl,Ql,Jl,Kl,th,nh,eh,rh,ih,oh,uh,ah,ch,sh,fh,lh,hh=new bn,ph=1e-6,dh=Math.PI,vh=dh/2,gh=dh/4,_h=2*dh,yh=180/dh,mh=dh/180,xh=Math.abs,bh=Math.atan,wh=Math.atan2,Mh=Math.cos,Th=Math.ceil,Nh=Math.exp,kh=Math.log,Sh=Math.pow,Eh=Math.sin,Ah=Math.sign||function(t){return t>0?1:t<0?-1:0},Ch=Math.sqrt,zh=Math.tan,Ph={Feature:function(t,n){Sn(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++rph?Hl=90:Oh<-ph&&(Yl=-90),Zl[0]=Il,Zl[1]=Bl}},Ih={sphere:kn,point:Qn,lineStart:Kn,lineEnd:ee,polygonStart:function(){Ih.lineStart=re,Ih.lineEnd=ie},polygonEnd:function(){Ih.lineStart=Kn,Ih.lineEnd=ee}},Yh=function(t){return function(){return t}},Bh=function(t,n){function e(e,r){return e=t(e,r),n(e[0],e[1])}return t.invert&&n.invert&&(e.invert=function(e,r){return(e=n.invert(e,r))&&t.invert(e[0],e[1])}),e};ae.invert=ae;var Hh,jh,Xh,Vh,$h,Wh,Zh,Gh,Qh,Jh,Kh,tp=function(t){function n(n){return n=t(n[0]*mh,n[1]*mh),n[0]*=yh,n[1]*=yh,n}return t=ce(t[0]*mh,t[1]*mh,t.length>2?t[2]*mh:0),n.invert=function(n){return n=t.invert(n[0]*mh,n[1]*mh),n[0]*=yh,n[1]*=yh,n},n},np=function(){var t,n=[];return{point:function(n,e){t.push([n,e])},lineStart:function(){n.push(t=[])},lineEnd:kn,rejoin:function(){n.length>1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}},ep=function(t,n){return xh(t[0]-n[0])=0;--o)i.point((f=s[o])[0],f[1]);else r(h.x,h.p.x,-1,i);h=h.p}s=(h=h.o).z,p=!p}while(!h.v);i.lineEnd()}}},ip=Ll(),op=function(t,n){var e=n[0],r=n[1],i=[Eh(e),-Mh(e),0],o=0,u=0;ip.reset();for(var a=0,c=t.length;a=0?1:-1,T=M*w,N=T>dh,k=d*x;if(ip.add(wh(k*M*Eh(T),v*b+k*Mh(T))),o+=N?w+M*_h:w,N^h>=e^y>=e){var S=Un(qn(l),qn(_));In(S);var E=Un(i,S);In(E);var A=(N^w>=0?-1:1)*Tn(E[2]);(r>A||r===A&&(S[0]||S[1]))&&(u+=N^w>=0?1:-1)}}return(o<-ph||o0){for(y||(i.polygonStart(),y=!0),i.lineStart(),t=0;t1&&2&o&&u.push(u.pop().concat(u.shift())),p.push(u.filter(ge))}var h,p,d,v=n(i),g=np(),_=n(g),y=!1,m={point:o,lineStart:a,lineEnd:c,polygonStart:function(){m.point=s,m.lineStart=f,m.lineEnd=l,p=[],h=[]},polygonEnd:function(){m.point=o,m.lineStart=a,m.lineEnd=c,p=Fa(p);var t=op(h,r);p.length?(y||(i.polygonStart(),y=!0),rp(p,_e,t,e,i)):t&&(y||(i.polygonStart(),y=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),y&&(i.polygonEnd(),y=!1),p=h=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}};return m}},ap=up(function(){return!0},function(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(o,u){var a=o>0?dh:-dh,c=xh(o-e);xh(c-dh)0?vh:-vh),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(a,r),t.point(o,r),n=0):i!==a&&c>=dh&&(xh(e-i)ph?bh((Eh(n)*(o=Mh(r))*Eh(e)-Eh(r)*(i=Mh(n))*Eh(t))/(i*o*u)):(n+r)/2}(e,r,o,u),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(a,r),n=0),t.point(e=o,r=u),i=a},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}},function(t,n,e,r){var i;if(null==t)i=e*vh,r.point(-dh,i),r.point(0,i),r.point(dh,i),r.point(dh,0),r.point(dh,-i),r.point(0,-i),r.point(-dh,-i),r.point(-dh,0),r.point(-dh,i);else if(xh(t[0]-n[0])>ph){var o=t[0]i}function e(t,n,e){var r=[1,0,0],o=Un(qn(t),qn(n)),u=Dn(o,o),a=o[0],c=u-a*a;if(!c)return!e&&t;var s=i*u/c,f=-i*a/c,l=Un(r,o),h=Fn(r,s);On(h,Fn(o,f));var p=l,d=Dn(h,p),v=Dn(p,p),g=d*d-v*(Dn(h,h)-1);if(!(g<0)){var _=Ch(g),y=Fn(p,(-d-_)/v);if(On(y,h),y=Ln(y),!e)return y;var m,x=t[0],b=n[0],w=t[1],M=n[1];b0^y[1]<(xh(y[0]-x)dh^(x<=y[0]&&y[0]<=b)){var k=Fn(p,(-d+_)/v);return On(k,h),[y,Ln(k)]}}}function r(n,e){var r=u?t:dh-t,i=0;return n<-r?i|=1:n>r&&(i|=2),e<-r?i|=4:e>r&&(i|=8),i}var i=Mh(t),o=6*mh,u=i>0,a=xh(i)>ph;return up(n,function(t){var i,o,c,s,f;return{lineStart:function(){s=c=!1,f=1},point:function(l,h){var p,d=[l,h],v=n(l,h),g=u?v?0:r(l,h):v?r(l+(l<0?dh:-dh),h):0;if(!i&&(s=c=v)&&t.lineStart(),v!==c&&(!(p=e(i,d))||ep(i,p)||ep(d,p))&&(d[0]+=ph,d[1]+=ph,v=n(d[0],d[1])),v!==c)f=0,v?(t.lineStart(),p=e(d,i),t.point(p[0],p[1])):(p=e(i,d),t.point(p[0],p[1]),t.lineEnd()),i=p;else if(a&&i&&u^v){var _;g&o||!(_=e(d,i,!0))||(f=0,u?(t.lineStart(),t.point(_[0][0],_[0][1]),t.point(_[1][0],_[1][1]),t.lineEnd()):(t.point(_[1][0],_[1][1]),t.lineEnd(),t.lineStart(),t.point(_[0][0],_[0][1])))}!v||i&&ep(i,d)||t.point(d[0],d[1]),i=d,c=v,o=g},lineEnd:function(){c&&t.lineEnd(),i=null},clean:function(){return f|(s&&c)<<1}}},function(n,e,r,i){he(i,t,o,r,n,e)},u?[0,-t]:[-dh,t-dh])},sp=function(t,n,e,r,i,o){var u,a=t[0],c=t[1],s=0,f=1,l=n[0]-a,h=n[1]-c;if(u=e-a,l||!(u>0)){if(u/=l,l<0){if(u0){if(u>f)return;u>s&&(s=u)}if(u=i-a,l||!(u<0)){if(u/=l,l<0){if(u>f)return;u>s&&(s=u)}else if(l>0){if(u0)){if(u/=h,h<0){if(u0){if(u>f)return;u>s&&(s=u)}if(u=o-c,h||!(u<0)){if(u/=h,h<0){if(u>f)return;u>s&&(s=u)}else if(h>0){if(u0&&(t[0]=a+s*l,t[1]=c+s*h),f<1&&(n[0]=a+f*l,n[1]=c+f*h),!0}}}}},fp=1e9,lp=-fp,hp=Ll(),pp={sphere:kn,point:kn,lineStart:function(){pp.point=xe,pp.lineEnd=me},lineEnd:kn,polygonStart:kn,polygonEnd:kn},dp=function(t){return hp.reset(),Lh(t,pp),+hp},vp=[null,null],gp={type:"LineString",coordinates:vp},_p=function(t,n){return vp[0]=t,vp[1]=n,dp(gp)},yp={Feature:function(t,n){return we(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++rkp&&(kp=t),nSp&&(Sp=n)},lineStart:kn,lineEnd:kn,polygonStart:kn,polygonEnd:kn,result:function(){var t=[[Tp,Np],[kp,Sp]];return kp=Sp=-(Np=Tp=1/0),t}},Ap=0,Cp=0,zp=0,Pp=0,Rp=0,Lp=0,qp=0,Dp=0,Up=0,Op={point:qe,lineStart:De,lineEnd:Fe,polygonStart:function(){Op.lineStart=Ie,Op.lineEnd=Ye},polygonEnd:function(){Op.point=qe,Op.lineStart=De,Op.lineEnd=Fe},result:function(){var t=Up?[qp/Up,Dp/Up]:Lp?[Pp/Lp,Rp/Lp]:zp?[Ap/zp,Cp/zp]:[NaN,NaN];return Ap=Cp=zp=Pp=Rp=Lp=qp=Dp=Up=0,t}};je.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._context.moveTo(t,n),this._point=1;break;case 1:this._context.lineTo(t,n);break;default:this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,_h)}},result:kn};var Fp,Ip,Yp,Bp,Hp,jp=Ll(),Xp={point:kn,lineStart:function(){Xp.point=Xe},lineEnd:function(){Fp&&Ve(Ip,Yp),Xp.point=kn},polygonStart:function(){Fp=!0},polygonEnd:function(){Fp=null},result:function(){var t=+jp;return jp.reset(),t}};$e.prototype={_radius:4.5,_circle:We(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._string.push("M",t,",",n),this._point=1;break;case 1:this._string.push("L",t,",",n);break;default:null==this._circle&&(this._circle=We(this._radius)),this._string.push("M",t,",",n,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}};Ge.prototype={constructor:Ge,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var Vp=16,$p=Mh(30*mh),Wp=function(t,n){return+n?function(t,n){function e(r,i,o,u,a,c,s,f,l,h,p,d,v,g){var _=s-r,y=f-i,m=_*_+y*y;if(m>4*n&&v--){var x=u+h,b=a+p,w=c+d,M=Ch(x*x+b*b+w*w),T=Tn(w/=M),N=xh(xh(w)-1)n||xh((_*A+y*C)/m-.5)>.3||u*h+a*p+c*d<$p)&&(e(r,i,o,u,a,c,S,E,N,x/=M,b/=M,w,v,g),g.point(S,E),e(S,E,N,x,b,w,s,f,l,h,p,d,v,g))}}return function(n){function r(e,r){e=t(e,r),n.point(e[0],e[1])}function i(){_=NaN,w.point=o,n.lineStart()}function o(r,i){var o=qn([r,i]),u=t(r,i);e(_,y,g,m,x,b,_=u[0],y=u[1],g=r,m=o[0],x=o[1],b=o[2],Vp,n),n.point(_,y)}function u(){w.point=r,n.lineEnd()}function a(){i(),w.point=c,w.lineEnd=s}function c(t,n){o(f=t,n),l=_,h=y,p=m,d=x,v=b,w.point=o}function s(){e(_,y,g,m,x,b,l,h,f,p,d,v,Vp,n),w.lineEnd=u,u()}var f,l,h,p,d,v,g,_,y,m,x,b,w={point:r,lineStart:i,lineEnd:u,polygonStart:function(){n.polygonStart(),w.lineStart=a},polygonEnd:function(){n.polygonEnd(),w.lineStart=i}};return w}}(t,n):function(t){return Ze({point:function(n,e){n=t(n,e),this.stream.point(n[0],n[1])}})}(t)},Zp=Ze({point:function(t,n){this.stream.point(t*mh,n*mh)}}),Gp=function(){return ir(or).scale(155.424).center([0,33.6442])},Qp=function(){return Gp().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])},Jp=ur(function(t){return Ch(2/(1+t))});Jp.invert=ar(function(t){return 2*Tn(t/2)});var Kp=ur(function(t){return(t=Mn(t))&&t/Eh(t)});Kp.invert=ar(function(t){return t});cr.invert=function(t,n){return[t,2*bh(Nh(n))-vh]};hr.invert=hr;dr.invert=ar(bh);gr.invert=function(t,n){var e,r=n,i=25;do{var o=r*r,u=o*o;r-=e=(r*(1.007226+o*(.015085+u*(.028874*o-.044475-.005916*u)))-n)/(1.007226+o*(.045255+u*(.259866*o-.311325-.005916*11*u)))}while(xh(e)>ph&&--i>0);return[t/(.8707+(o=r*r)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),r]};_r.invert=ar(Tn);yr.invert=ar(function(t){return 2*bh(t)});mr.invert=function(t,n){return[-n,2*bh(Nh(t))-vh]};Er.prototype=Tr.prototype={constructor:Er,count:function(){return this.eachAfter(Mr)},each:function(t){var n,e,r,i,o=this,u=[o];do{for(n=u.reverse(),u=[];o=n.pop();)if(t(o),e=o.children)for(r=0,i=e.length;r=0;--e)i.push(n[e]);return this},sum:function(t){return this.eachAfter(function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e})},sort:function(t){return this.eachBefore(function(n){n.children&&n.children.sort(t)})},path:function(t){for(var n=this,e=function(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;for(t=e.pop(),n=r.pop();t===n;)i=t,t=e.pop(),n=r.pop();return i}(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},descendants:function(){var t=[];return this.each(function(n){t.push(n)}),t},leaves:function(){var t=[];return this.eachBefore(function(n){n.children||t.push(n)}),t},links:function(){var t=this,n=[];return t.each(function(e){e!==t&&n.push({source:e.parent,target:e})}),n},copy:function(){return Tr(this).eachBefore(kr)}};var td=Array.prototype.slice,nd=function(t){for(var n,e,r=0,i=(t=function(t){for(var n,e,r=t.length;r;)e=Math.random()*r--|0,n=t[r],t[r]=t[e],t[e]=n;return t}(td.call(t))).length,o=[];r1?n:1)},e}(sd),ld=function t(n){function e(t,e,r,i,o){if((u=t._squarify)&&u.ratio===n)for(var u,a,c,s,f,l=-1,h=u.length,p=t.value;++l1?n:1)},e}(sd),hd=function(t,n,e){return(n[0]-t[0])*(e[1]-t[1])-(n[1]-t[1])*(e[0]-t[0])},pd=[].slice,dd={};ei.prototype=ui.prototype={constructor:ei,defer:function(t){if("function"!=typeof t)throw new Error("invalid callback");if(this._call)throw new Error("defer after await");if(null!=this._error)return this;var n=pd.call(arguments,1);return n.push(t),++this._waiting,this._tasks.push(n),ri(this),this},abort:function(){return null==this._error&&ii(this,new Error("abort")),this},await:function(t){if("function"!=typeof t)throw new Error("invalid callback");if(this._call)throw new Error("multiple await");return this._call=function(n,e){t.apply(null,[n].concat(e))},oi(this),this},awaitAll:function(t){if("function"!=typeof t)throw new Error("invalid callback");if(this._call)throw new Error("multiple await");return this._call=t,oi(this),this}};var vd=function(){return Math.random()},gd=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,1===arguments.length?(e=t,t=0):e-=t,function(){return n()*e+t}}return e.source=t,e}(vd),_d=function t(n){function e(t,e){var r,i;return t=null==t?0:+t,e=null==e?1:+e,function(){var o;if(null!=r)o=r,r=null;else do{r=2*n()-1,o=2*n()-1,i=r*r+o*o}while(!i||i>1);return t+e*o*Math.sqrt(-2*Math.log(i)/i)}}return e.source=t,e}(vd),yd=function t(n){function e(){var t=_d.source(n).apply(this,arguments);return function(){return Math.exp(t())}}return e.source=t,e}(vd),md=function t(n){function e(t){return function(){for(var e=0,r=0;r=200&&e<300||304===e){if(o)try{n=o.call(r,f)}catch(t){return void c.call("error",r,t)}else n=f;c.call("load",r,n)}else c.call("error",r,t)}var r,i,o,u,c=a("beforesend","progress","load","error"),s=Kt(),f=new XMLHttpRequest,l=null,h=null,p=0;if("undefined"==typeof XDomainRequest||"withCredentials"in f||!/^(http(s)?:)?\/\//.test(t)||(f=new XDomainRequest),"onload"in f?f.onload=f.onerror=f.ontimeout=e:f.onreadystatechange=function(t){f.readyState>3&&e(t)},f.onprogress=function(t){c.call("progress",r,t)},r={header:function(t,n){return t=(t+"").toLowerCase(),arguments.length<2?s.get(t):(null==n?s.remove(t):s.set(t,n+""),r)},mimeType:function(t){return arguments.length?(i=null==t?null:t+"",r):i},responseType:function(t){return arguments.length?(u=t,r):u},timeout:function(t){return arguments.length?(p=+t,r):p},user:function(t){return arguments.length<1?l:(l=null==t?null:t+"",r)},password:function(t){return arguments.length<1?h:(h=null==t?null:t+"",r)},response:function(t){return o=t,r},get:function(t,n){return r.send("GET",t,n)},post:function(t,n){return r.send("POST",t,n)},send:function(n,e,o){return f.open(n,t,!0,l,h),null==i||s.has("accept")||s.set("accept",i+",*/*"),f.setRequestHeader&&s.each(function(t,n){f.setRequestHeader(n,t)}),null!=i&&f.overrideMimeType&&f.overrideMimeType(i),null!=u&&(f.responseType=u),p>0&&(f.timeout=p),null==o&&"function"==typeof e&&(o=e,e=null),null!=o&&1===o.length&&(o=function(t){return function(n,e){t(null==n?e:null)}}(o)),null!=o&&r.on("error",o).on("load",function(t){o(null,t)}),c.call("beforesend",r,f),f.send(null==e?null:e),r},abort:function(){return f.abort(),r},on:function(){var t=c.on.apply(c,arguments);return t===c?r:t}},null!=n){if("function"!=typeof n)throw new Error("invalid callback: "+n);return r.get(n)}return r},Md=function(t,n){return function(e,r){var i=wd(e).mimeType(t).response(n);if(null!=r){if("function"!=typeof r)throw new Error("invalid callback: "+r);return i.get(r)}return i}},Td=Md("text/html",function(t){return document.createRange().createContextualFragment(t.responseText)}),Nd=Md("application/json",function(t){return JSON.parse(t.responseText)}),kd=Md("text/plain",function(t){return t.responseText}),Sd=Md("application/xml",function(t){var n=t.responseXML;if(!n)throw new Error("parse error");return n}),Ed=function(t,n){return function(e,r,i){arguments.length<3&&(i=r,r=null);var o=wd(e).mimeType(t);return o.row=function(t){return arguments.length?o.response(function(t,n){return function(e){return t(e.responseText,n)}}(n,r=t)):r},o.row(r),i?o.get(i):o}},Ad=Ed("text/csv",ul),Cd=Ed("text/tab-separated-values",ll),zd=Array.prototype,Pd=zd.map,Rd=zd.slice,Ld={name:"implicit"},qd=function(t){return function(){return t}},Dd=function(t){return+t},Ud=[0,1],Od=function(n,e,i){var o,u=n[0],a=n[n.length-1],c=r(u,a,null==e?10:e);switch((i=yn(null==i?",f":i)).type){case"s":var s=Math.max(Math.abs(u),Math.abs(a));return null!=i.precision||isNaN(o=Pl(c,s))||(i.precision=o),t.formatPrefix(i,s);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(o=Rl(c,Math.max(Math.abs(u),Math.abs(a))))||(i.precision=o-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(o=zl(c))||(i.precision=o-2*("%"===i.type))}return t.format(i)},Fd=function(t,n){var e,r=0,i=(t=t.slice()).length-1,o=t[r],u=t[i];return u0?t>1?Si(function(n){n.setTime(Math.floor(n/t)*t)},function(n,e){n.setTime(+n+e*t)},function(n,e){return(e-n)/t}):Bd:null};var Hd=Bd.range,jd=6e4,Xd=6048e5,Vd=Si(function(t){t.setTime(1e3*Math.floor(t/1e3))},function(t,n){t.setTime(+t+1e3*n)},function(t,n){return(n-t)/1e3},function(t){return t.getUTCSeconds()}),$d=Vd.range,Wd=Si(function(t){t.setTime(Math.floor(t/jd)*jd)},function(t,n){t.setTime(+t+n*jd)},function(t,n){return(n-t)/jd},function(t){return t.getMinutes()}),Zd=Wd.range,Gd=Si(function(t){var n=t.getTimezoneOffset()*jd%36e5;n<0&&(n+=36e5),t.setTime(36e5*Math.floor((+t-n)/36e5)+n)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getHours()}),Qd=Gd.range,Jd=Si(function(t){t.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*jd)/864e5},function(t){return t.getDate()-1}),Kd=Jd.range,tv=Ei(0),nv=Ei(1),ev=Ei(2),rv=Ei(3),iv=Ei(4),ov=Ei(5),uv=Ei(6),av=tv.range,cv=nv.range,sv=ev.range,fv=rv.range,lv=iv.range,hv=ov.range,pv=uv.range,dv=Si(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,n){t.setMonth(t.getMonth()+n)},function(t,n){return n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())},function(t){return t.getMonth()}),vv=dv.range,gv=Si(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,n){t.setFullYear(t.getFullYear()+n)},function(t,n){return n.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});gv.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Si(function(n){n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)},function(n,e){n.setFullYear(n.getFullYear()+e*t)}):null};var _v=gv.range,yv=Si(function(t){t.setUTCSeconds(0,0)},function(t,n){t.setTime(+t+n*jd)},function(t,n){return(n-t)/jd},function(t){return t.getUTCMinutes()}),mv=yv.range,xv=Si(function(t){t.setUTCMinutes(0,0,0)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getUTCHours()}),bv=xv.range,wv=Si(function(t){t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+n)},function(t,n){return(n-t)/864e5},function(t){return t.getUTCDate()-1}),Mv=wv.range,Tv=Ai(0),Nv=Ai(1),kv=Ai(2),Sv=Ai(3),Ev=Ai(4),Av=Ai(5),Cv=Ai(6),zv=Tv.range,Pv=Nv.range,Rv=kv.range,Lv=Sv.range,qv=Ev.range,Dv=Av.range,Uv=Cv.range,Ov=Si(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCMonth(t.getUTCMonth()+n)},function(t,n){return n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()}),Fv=Ov.range,Iv=Si(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n)},function(t,n){return n.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});Iv.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Si(function(n){n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},function(n,e){n.setUTCFullYear(n.getUTCFullYear()+e*t)}):null};var Yv,Bv=Iv.range,Hv={"-":"",_:" ",0:"0"},jv=/^\s*\d+/,Xv=/^%/,Vv=/[\\^$*+?|[\]().{}]/g;Yo({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var $v=Date.prototype.toISOString?function(t){return t.toISOString()}:t.utcFormat("%Y-%m-%dT%H:%M:%S.%LZ"),Wv=+new Date("2000-01-01T00:00:00.000Z")?function(t){var n=new Date(t);return isNaN(n)?null:n}:t.utcParse("%Y-%m-%dT%H:%M:%S.%LZ"),Zv=1e3,Gv=60*Zv,Qv=60*Gv,Jv=24*Qv,Kv=7*Jv,tg=30*Jv,ng=365*Jv,eg=function(t){return t.match(/.{6}/g).map(function(t){return"#"+t})},rg=eg("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),ig=eg("393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6"),og=eg("3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9"),ug=eg("1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5"),ag=As(rt(300,.5,0),rt(-240,.5,1)),cg=As(rt(-100,.75,.35),rt(80,1.5,.8)),sg=As(rt(260,.75,.35),rt(80,1.5,.8)),fg=rt(),lg=Xo(eg("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),hg=Xo(eg("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),pg=Xo(eg("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),dg=Xo(eg("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")),vg=function(t){return function(){return t}},gg=Math.abs,_g=Math.atan2,yg=Math.cos,mg=Math.max,xg=Math.min,bg=Math.sin,wg=Math.sqrt,Mg=1e-12,Tg=Math.PI,Ng=Tg/2,kg=2*Tg;tu.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}};var Sg=function(t){return new tu(t)},Eg=function(){function t(t){var a,c,s,f=t.length,l=!1;for(null==i&&(u=o(s=Vt())),a=0;a<=f;++a)!(a=f;--l)s.point(g[l],_[l]);s.lineEnd(),s.areaEnd()}v&&(g[n]=+e(h,n,t),_[n]=+i(h,n,t),s.point(r?+r(h,n,t):g[n],o?+o(h,n,t):_[n]))}if(p)return s=null,p+""||null}function n(){return Eg().defined(u).curve(c).context(a)}var e=nu,r=null,i=vg(0),o=eu,u=vg(!0),a=null,c=Sg,s=null;return t.x=function(n){return arguments.length?(e="function"==typeof n?n:vg(+n),r=null,t):e},t.x0=function(n){return arguments.length?(e="function"==typeof n?n:vg(+n),t):e},t.x1=function(n){return arguments.length?(r=null==n?null:"function"==typeof n?n:vg(+n),t):r},t.y=function(n){return arguments.length?(i="function"==typeof n?n:vg(+n),o=null,t):i},t.y0=function(n){return arguments.length?(i="function"==typeof n?n:vg(+n),t):i},t.y1=function(n){return arguments.length?(o=null==n?null:"function"==typeof n?n:vg(+n),t):o},t.lineX0=t.lineY0=function(){return n().x(e).y(i)},t.lineY1=function(){return n().x(e).y(o)},t.lineX1=function(){return n().x(r).y(i)},t.defined=function(n){return arguments.length?(u="function"==typeof n?n:vg(!!n),t):u},t.curve=function(n){return arguments.length?(c=n,null!=a&&(s=c(a)),t):c},t.context=function(n){return arguments.length?(null==n?a=s=null:s=c(a=n),t):a},t},Cg=function(t,n){return nt?1:n>=t?0:NaN},zg=function(t){return t},Pg=iu(Sg);ru.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,n){this._curve.point(n*Math.sin(t),n*-Math.cos(t))}};var Rg=function(){return ou(Eg().curve(Pg))},Lg=function(){var t=Ag().curve(Pg),n=t.curve,e=t.lineX0,r=t.lineX1,i=t.lineY0,o=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return ou(e())},delete t.lineX0,t.lineEndAngle=function(){return ou(r())},delete t.lineX1,t.lineInnerRadius=function(){return ou(i())},delete t.lineY0,t.lineOuterRadius=function(){return ou(o())},delete t.lineY1,t.curve=function(t){return arguments.length?n(iu(t)):n()._curve},t},qg=function(t,n){return[(n=+n)*Math.cos(t-=Math.PI/2),n*Math.sin(t)]},Dg=Array.prototype.slice,Ug={draw:function(t,n){var e=Math.sqrt(n/Tg);t.moveTo(e,0),t.arc(0,0,e,0,kg)}},Og={draw:function(t,n){var e=Math.sqrt(n/5)/2;t.moveTo(-3*e,-e),t.lineTo(-e,-e),t.lineTo(-e,-3*e),t.lineTo(e,-3*e),t.lineTo(e,-e),t.lineTo(3*e,-e),t.lineTo(3*e,e),t.lineTo(e,e),t.lineTo(e,3*e),t.lineTo(-e,3*e),t.lineTo(-e,e),t.lineTo(-3*e,e),t.closePath()}},Fg=Math.sqrt(1/3),Ig=2*Fg,Yg={draw:function(t,n){var e=Math.sqrt(n/Ig),r=e*Fg;t.moveTo(0,-e),t.lineTo(r,0),t.lineTo(0,e),t.lineTo(-r,0),t.closePath()}},Bg=Math.sin(Tg/10)/Math.sin(7*Tg/10),Hg=Math.sin(kg/10)*Bg,jg=-Math.cos(kg/10)*Bg,Xg={draw:function(t,n){var e=Math.sqrt(.8908130915292852*n),r=Hg*e,i=jg*e;t.moveTo(0,-e),t.lineTo(r,i);for(var o=1;o<5;++o){var u=kg*o/5,a=Math.cos(u),c=Math.sin(u);t.lineTo(c*e,-a*e),t.lineTo(a*r-c*i,c*r+a*i)}t.closePath()}},Vg={draw:function(t,n){var e=Math.sqrt(n),r=-e/2;t.rect(r,r,e,e)}},$g=Math.sqrt(3),Wg={draw:function(t,n){var e=-Math.sqrt(n/(3*$g));t.moveTo(0,2*e),t.lineTo(-$g*e,-e),t.lineTo($g*e,-e),t.closePath()}},Zg=-.5,Gg=Math.sqrt(3)/2,Qg=1/Math.sqrt(12),Jg=3*(Qg/2+1),Kg={draw:function(t,n){var e=Math.sqrt(n/Jg),r=e/2,i=e*Qg,o=r,u=e*Qg+e,a=-o,c=u;t.moveTo(r,i),t.lineTo(o,u),t.lineTo(a,c),t.lineTo(Zg*r-Gg*i,Gg*r+Zg*i),t.lineTo(Zg*o-Gg*u,Gg*o+Zg*u),t.lineTo(Zg*a-Gg*c,Gg*a+Zg*c),t.lineTo(Zg*r+Gg*i,Zg*i-Gg*r),t.lineTo(Zg*o+Gg*u,Zg*u-Gg*o),t.lineTo(Zg*a+Gg*c,Zg*c-Gg*a),t.closePath()}},t_=[Ug,Og,Yg,Vg,Xg,Wg,Kg],n_=function(){};pu.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:hu(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:hu(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}};du.prototype={areaStart:n_,areaEnd:n_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x2=t,this._y2=n;break;case 1:this._point=2,this._x3=t,this._y3=n;break;case 2:this._point=3,this._x4=t,this._y4=n,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+n)/6);break;default:hu(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}};vu.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var e=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+n)/6;this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 3:this._point=4;default:hu(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}};gu.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,n=this._y,e=t.length-1;if(e>0)for(var r,i=t[0],o=n[0],u=t[e]-i,a=n[e]-o,c=-1;++c<=e;)r=c/e,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*u),this._beta*n[c]+(1-this._beta)*(o+r*a));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var e_=function t(n){function e(t){return 1===n?new pu(t):new gu(t,n)}return e.beta=function(n){return t(+n)},e}(.85);yu.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:_u(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2,this._x1=t,this._y1=n;break;case 2:this._point=3;default:_u(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var r_=function t(n){function e(t){return new yu(t,n)}return e.tension=function(n){return t(+n)},e}(0);mu.prototype={areaStart:n_,areaEnd:n_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:_u(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var i_=function t(n){function e(t){return new mu(t,n)}return e.tension=function(n){return t(+n)},e}(0);xu.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:_u(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var o_=function t(n){function e(t){return new xu(t,n)}return e.tension=function(n){return t(+n)},e}(0);wu.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3;default:bu(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var u_=function t(n){function e(t){return n?new wu(t,n):new yu(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);Mu.prototype={areaStart:n_,areaEnd:n_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:bu(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var a_=function t(n){function e(t){return n?new Mu(t,n):new mu(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);Tu.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:bu(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var c_=function t(n){function e(t){return n?new Tu(t,n):new xu(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);Nu.prototype={areaStart:n_,areaEnd:n_,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,n){t=+t,n=+n,this._point?this._context.lineTo(t,n):(this._point=1,this._context.moveTo(t,n))}};Cu.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Au(this,this._t0,Eu(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){var e=NaN;if(t=+t,n=+n,t!==this._x1||n!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,Au(this,Eu(this,e=Su(this,t,n)),e);break;default:Au(this,this._t0,e=Su(this,t,n))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n,this._t0=e}}},(zu.prototype=Object.create(Cu.prototype)).point=function(t,n){Cu.prototype.point.call(this,n,t)},Pu.prototype={moveTo:function(t,n){this._context.moveTo(n,t)},closePath:function(){this._context.closePath()},lineTo:function(t,n){this._context.lineTo(n,t)},bezierCurveTo:function(t,n,e,r,i,o){this._context.bezierCurveTo(n,t,r,e,o,i)}},Ru.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,n=this._y,e=t.length;if(e)if(this._line?this._context.lineTo(t[0],n[0]):this._context.moveTo(t[0],n[0]),2===e)this._context.lineTo(t[1],n[1]);else for(var r=Lu(t),i=Lu(n),o=0,u=1;u=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,n),this._context.lineTo(t,n);else{var e=this._x*(1-this._t)+t*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,n)}}this._x=t,this._y=n}};var s_=function(t,n){if((i=t.length)>1)for(var e,r,i,o=1,u=t[n[0]],a=u.length;o=0;)e[n]=n;return e},l_=function(t){var n=t.map(Uu);return f_(t).sort(function(t,e){return n[t]-n[e]})},h_=function(t){return function(){return t}};Iu.prototype={constructor:Iu,insert:function(t,n){var e,r,i;if(t){if(n.P=t,n.N=t.N,t.N&&(t.N.P=n),t.N=n,t.R){for(t=t.R;t.L;)t=t.L;t.L=n}else t.R=n;e=t}else this._?(t=ju(this._),n.P=null,n.N=t,t.P=t.L=n,e=t):(n.P=n.N=null,this._=n,e=null);for(n.L=n.R=null,n.U=e,n.C=!0,t=n;e&&e.C;)e===(r=e.U).L?(i=r.R)&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.R&&(Bu(this,e),e=(t=e).U),e.C=!1,r.C=!0,Hu(this,r)):(i=r.L)&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.L&&(Hu(this,e),e=(t=e).U),e.C=!1,r.C=!0,Bu(this,r)),e=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var n,e,r,i=t.U,o=t.L,u=t.R;if(e=o?u?ju(u):o:u,i?i.L===t?i.L=e:i.R=e:this._=e,o&&u?(r=e.C,e.C=t.C,e.L=o,o.U=e,e!==u?(i=e.U,e.U=t.U,t=e.R,i.L=t,e.R=u,u.U=e):(e.U=i,i=e,t=e.R)):(r=t.C,t=e),t&&(t.U=i),!r)if(t&&t.C)t.C=!1;else{do{if(t===this._)break;if(t===i.L){if((n=i.R).C&&(n.C=!1,i.C=!0,Bu(this,i),n=i.R),n.L&&n.L.C||n.R&&n.R.C){n.R&&n.R.C||(n.L.C=!1,n.C=!0,Hu(this,n),n=i.R),n.C=i.C,i.C=n.R.C=!1,Bu(this,i),t=this._;break}}else if((n=i.L).C&&(n.C=!1,i.C=!0,Hu(this,i),n=i.L),n.L&&n.L.C||n.R&&n.R.C){n.L&&n.L.C||(n.R.C=!1,n.C=!0,Bu(this,n),n=i.L),n.C=i.C,i.C=n.L.C=!1,Hu(this,i),t=this._;break}n.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}};var p_,d_,v_,g_,__,y_=[],m_=[],x_=1e-6,b_=1e-12;ca.prototype={constructor:ca,polygons:function(){var t=this.edges;return this.cells.map(function(n){var e=n.halfedges.map(function(e){return Qu(n,t[e])});return e.data=n.site.data,e})},triangles:function(){var t=[],n=this.edges;return this.cells.forEach(function(e,r){if(o=(i=e.halfedges).length)for(var i,o,u,a=e.site,c=-1,s=n[i[o-1]],f=s.left===a?s.right:s.left;++c=a)return null;var c=t-i.site[0],s=n-i.site[1],f=c*c+s*s;do{i=o.cells[r=u],u=null,i.halfedges.forEach(function(e){var r=o.edges[e],a=r.left;if(a!==i.site&&a||(a=r.right)){var c=t-a[0],s=n-a[1],l=c*c+s*s;lt?1:n>=t?0:NaN},t.deviation=Na,t.extent=ka,t.histogram=function(){function t(t){var o,u,a=t.length,c=new Array(a);for(o=0;ol;)h.pop(),--p;var d,v=new Array(p+1);for(o=0;o<=p;++o)(d=v[o]=[]).x0=o>0?h[o-1]:f,d.x1=o=e)for(r=e;++or&&(r=e)}else for(;++o=e)for(r=e;++or&&(r=e);return r},t.mean=function(t,n){var e,r=t.length,i=r,o=-1,u=0;if(null==n)for(;++o=o.length)return null!=e&&n.sort(e),null!=r?r(n):n;for(var c,s,f,l=-1,h=n.length,p=o[i++],d=Kt(),v=u();++lo.length)return t;var i,a=u[e-1];return null!=r&&e>=o.length?i=t.entries():(i=[],t.each(function(t,r){i.push({key:r,values:n(t,e)})})),null!=a?i.sort(function(t,n){return a(t.key,n.key)}):i}var e,r,i,o=[],u=[];return i={object:function(n){return t(n,0,tn,nn)},map:function(n){return t(n,0,en,rn)},entries:function(e){return n(t(e,0,en,rn),0)},key:function(t){return o.push(t),i},sortKeys:function(t){return u[o.length-1]=t,i},sortValues:function(t){return e=t,i},rollup:function(t){return r=t,i}}},t.set=un,t.map=Kt,t.keys=function(t){var n=[];for(var e in t)n.push(e);return n},t.values=function(t){var n=[];for(var e in t)n.push(t[e]);return n},t.entries=function(t){var n=[];for(var e in t)n.push({key:e,value:t[e]});return n},t.color=O,t.rgb=B,t.hsl=X,t.lab=Z,t.hcl=nt,t.cubehelix=rt,t.dispatch=a,t.drag=function(){function n(t){t.on("mousedown.drag",e).filter(y).on("touchstart.drag",o).on("touchmove.drag",u).on("touchend.drag touchcancel.drag",c).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function e(){if(!p&&v.apply(this,arguments)){var n=s("mouse",g.apply(this,arguments),cc,this,arguments);n&&(vc(t.event.view).on("mousemove.drag",r,!0).on("mouseup.drag",i,!0),yc(t.event.view),A(),h=!1,f=t.event.clientX,l=t.event.clientY,n("start"))}}function r(){if(_c(),!h){var n=t.event.clientX-f,e=t.event.clientY-l;h=n*n+e*e>w}m.mouse("drag")}function i(){vc(t.event.view).on("mousemove.drag mouseup.drag",null),C(t.event.view,h),_c(),m.mouse("end")}function o(){if(v.apply(this,arguments)){var n,e,r=t.event.changedTouches,i=g.apply(this,arguments),o=r.length;for(n=0;nc+p||is+p||or.index){var d=c-a.x-a.vx,v=s-a.y-a.vy,g=d*d+v*v;gt.r&&(t.r=t[n].r)}function r(){if(i){var n,e,r=i.length;for(o=new Array(r),n=0;n=f)){(t.data!==o||t.next)&&(0===i&&(i=gl(),p+=i*i),0===c&&(c=gl(),p+=c*c),p1?(null==n?h.remove(t):h.set(t,i(n)),o):h.get(t)},find:function(n,e,r){var i,o,u,a,c,s=0,f=t.length;for(null==r?r=1/0:r*=r,s=0;s1?(d.on(t,n),o):d.on(t)}}},t.forceX=function(t){function n(t){for(var n,e=0,u=r.length;eWn(r[0],r[1])&&(r[1]=i[1]),Wn(i[0],r[1])>Wn(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(u=-1/0,n=0,r=o[e=o.length-1];n<=e;r=i,++n)i=o[n],(a=Wn(r[1],i[0]))>u&&(u=a,Il=i[0],Bl=r[1])}return Wl=Zl=null,Il===1/0||Yl===1/0?[[NaN,NaN],[NaN,NaN]]:[[Il,Yl],[Bl,Hl]]},t.geoCentroid=function(t){Gl=Ql=Jl=Kl=th=nh=eh=rh=ih=oh=uh=0,Lh(t,Ih);var n=ih,e=oh,r=uh,i=n*n+e*e+r*r;return i<1e-12&&(n=nh,e=eh,r=rh,Ql=.12&&i<.234&&r>=-.425&&r<-.214?s:i>=.166&&i<.234&&r>=-.214&&r<-.115?f:c).invert(t)},t.stream=function(t){return e&&r===t?e:e=function(t){var n=t.length;return{point:function(e,r){for(var i=-1;++i2?t[2]+90:90]):(t=e(),[t[0],t[1],t[2]-90])},e([0,0,90]).scale(159.155)},t.geoTransverseMercatorRaw=mr,t.geoRotation=tp,t.geoStream=Lh,t.geoTransform=function(t){return{stream:Ze(t)}},t.cluster=function(){function t(t){var o,u=0;t.eachAfter(function(t){var e=t.children;e?(t.x=function(t){return t.reduce(br,0)/t.length}(e),t.y=function(t){return 1+t.reduce(wr,0)}(e)):(t.x=o?u+=n(t,o):0,t.y=0,o=t)});var a=function(t){for(var n;n=t.children;)t=n[0];return t}(t),c=function(t){for(var n;n=t.children;)t=n[n.length-1];return t}(t),s=a.x-n(a,c)/2,f=c.x+n(c,a)/2;return t.eachAfter(i?function(n){n.x=(n.x-t.x)*e,n.y=(t.y-n.y)*r}:function(n){n.x=(n.x-s)/(f-s)*e,n.y=(1-(t.y?n.y/t.y:1))*r})}var n=xr,e=1,r=1,i=!1;return t.separation=function(e){return arguments.length?(n=e,t):n},t.size=function(n){return arguments.length?(i=!1,e=+n[0],r=+n[1],t):i?null:[e,r]},t.nodeSize=function(n){return arguments.length?(i=!0,e=+n[0],r=+n[1],t):i?[e,r]:null},t},t.hierarchy=Tr,t.pack=function(){function t(t){return t.x=e/2,t.y=r/2,n?t.eachBefore(Br(n)).eachAfter(Hr(i,.5)).eachBefore(jr(1)):t.eachBefore(Br(Yr)).eachAfter(Hr(Ir,1)).eachAfter(Hr(i,t.r/Math.min(e,r))).eachBefore(jr(Math.min(e,r)/(2*t.r))),t}var n=null,e=1,r=1,i=Ir;return t.radius=function(e){return arguments.length?(n=null==e?null:Fr(e),t):n},t.size=function(n){return arguments.length?(e=+n[0],r=+n[1],t):[e,r]},t.padding=function(n){return arguments.length?(i="function"==typeof n?n:ed(+n),t):i},t},t.packSiblings=function(t){return Or(t),t},t.packEnclose=nd,t.partition=function(){function t(t){var o=t.height+1;return t.x0=t.y0=r,t.x1=n,t.y1=e/o,t.eachBefore(function(t,n){return function(e){e.children&&id(e,e.x0,t*(e.depth+1)/n,e.x1,t*(e.depth+2)/n);var i=e.x0,o=e.y0,u=e.x1-r,a=e.y1-r;u0)throw new Error("cycle");return o}var n=Xr,e=Vr;return t.id=function(e){return arguments.length?(n=Fr(e),t):n},t.parentId=function(n){return arguments.length?(e=Fr(n),t):e},t},t.tree=function(){function t(t){var c=function(t){for(var n,e,r,i,o,u=new Jr(t,0),a=[u];n=a.pop();)if(r=n._.children)for(n.children=new Array(o=r.length),i=o-1;i>=0;--i)a.push(e=n.children[i]=new Jr(r[i],i)),e.parent=n;return(u.parent=new Jr(null,0)).children=[u],u}(t);if(c.eachAfter(n),c.parent.m=-c.z,c.eachBefore(e),a)t.eachBefore(r);else{var s=t,f=t,l=t;t.eachBefore(function(t){t.xf.x&&(f=t),t.depth>l.depth&&(l=t)});var h=s===f?1:i(s,f)/2,p=h-s.x,d=o/(f.x+h+p),v=u/(l.depth||1);t.eachBefore(function(t){t.x=(t.x+p)*d,t.y=t.depth*v})}return t}function n(t){var n=t.children,e=t.parent.children,r=t.i?e[t.i-1]:null;if(n){(function(t){for(var n,e=0,r=0,i=t.children,o=i.length;--o>=0;)(n=i[o]).z+=e,n.m+=e,e+=n.s+(r+=n.c)})(t);var o=(n[0].z+n[n.length-1].z)/2;r?(t.z=r.z+i(t._,r._),t.m=t.z-o):t.z=o}else r&&(t.z=r.z+i(t._,r._));t.parent.A=function(t,n,e){if(n){for(var r,o=t,u=t,a=n,c=o.parent.children[0],s=o.m,f=u.m,l=a.m,h=c.m;a=Zr(a),o=Wr(o),a&&o;)c=Wr(c),(u=Zr(u)).a=t,(r=a.z+l-o.z-s+i(a._,o._))>0&&(Gr(Qr(a,t,e),t,r),s+=r,f+=r),l+=a.m,s+=o.m,h+=c.m,f+=u.m;a&&!Zr(u)&&(u.t=a,u.m+=l-f),o&&!Wr(c)&&(c.t=o,c.m+=s-h,e=t)}return e}(t,r,t.parent.A||e[0])}function e(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function r(t){t.x*=o,t.y=t.depth*u}var i=$r,o=1,u=1,a=null;return t.separation=function(n){return arguments.length?(i=n,t):i},t.size=function(n){return arguments.length?(a=!1,o=+n[0],u=+n[1],t):a?null:[o,u]},t.nodeSize=function(n){return arguments.length?(a=!0,o=+n[0],u=+n[1],t):a?[o,u]:null},t},t.treemap=function(){function t(t){return t.x0=t.y0=0,t.x1=i,t.y1=o,t.eachBefore(n),u=[0],r&&t.eachBefore(rd),t}function n(t){var n=u[t.depth],r=t.x0+n,i=t.y0+n,o=t.x1-n,h=t.y1-n;o=n-1){var s=c[t];return s.x0=r,s.y0=i,s.x1=u,void(s.y1=a)}for(var l=f[t],h=e/2+l,p=t+1,d=n-1;p>>1;f[v]a-i){var y=(r*_+u*g)/e;o(t,p,g,r,i,y,a),o(p,n,_,y,i,u,a)}else{var m=(i*_+a*g)/e;o(t,p,g,r,i,u,m),o(p,n,_,r,m,u,a)}}var u,a,c=t.children,s=c.length,f=new Array(s+1);for(f[0]=a=u=0;u=0;--n)s.push(t[r[o[n]][2]]);for(n=+a;na!=s>a&&u<(c-e)*(a-r)/(s-r)+e&&(f=!f),c=e,s=r;return f},t.polygonLength=function(t){for(var n,e,r=-1,i=t.length,o=t[i-1],u=o[0],a=o[1],c=0;++r1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return fg.h=360*t-100,fg.s=1.5-1.5*n,fg.l=.8-.9*n,fg+""},t.interpolateWarm=cg,t.interpolateCool=sg,t.interpolateViridis=lg,t.interpolateMagma=hg,t.interpolateInferno=pg,t.interpolatePlasma=dg,t.scaleSequential=Vo,t.creator=Ka,t.local=f,t.matcher=ic,t.mouse=cc,t.namespace=Ja,t.namespaces=Qa,t.clientPoint=ac,t.select=vc,t.selectAll=function(t){return"string"==typeof t?new S([document.querySelectorAll(t)],[document.documentElement]):new S([null==t?[]:t],dc)},t.selection=E,t.selector=sc,t.selectorAll=fc,t.style=_,t.touch=gc,t.touches=function(t,n){null==n&&(n=uc().touches);for(var e=0,r=n?n.length:0,i=new Array(r);eh;if(c||(c=t=Vt()),lMg)if(d>kg-Mg)c.moveTo(l*yg(h),l*bg(h)),c.arc(0,0,l,h,p,!v),f>Mg&&(c.moveTo(f*yg(p),f*bg(p)),c.arc(0,0,f,p,h,v));else{var g,_,y=h,m=p,x=h,b=p,w=d,M=d,T=a.apply(this,arguments)/2,N=T>Mg&&(i?+i.apply(this,arguments):wg(f*f+l*l)),k=xg(gg(l-f)/2,+r.apply(this,arguments)),S=k,E=k;if(N>Mg){var A=$o(N/f*bg(T)),C=$o(N/l*bg(T));(w-=2*A)>Mg?(A*=v?1:-1,x+=A,b-=A):(w=0,x=b=(h+p)/2),(M-=2*C)>Mg?(C*=v?1:-1,y+=C,m-=C):(M=0,y=m=(h+p)/2)}var z=l*yg(y),P=l*bg(y),R=f*yg(b),L=f*bg(b);if(k>Mg){var q=l*yg(m),D=l*bg(m),U=f*yg(x),O=f*bg(x);if(dMg?function(t,n,e,r,i,o,u,a){var c=U-z,s=O-P,f=u-q,l=a-D,h=(f*(P-D)-l*(z-q))/(l*c-f*s);return[z+h*c,P+h*s]}(0,0,0,0,0,0,R,L):[R,L],I=z-F[0],Y=P-F[1],B=q-F[0],H=D-F[1],j=1/bg(function(t){return t>1?0:t<-1?Tg:Math.acos(t)}((I*B+Y*H)/(wg(I*I+Y*Y)*wg(B*B+H*H)))/2),X=wg(F[0]*F[0]+F[1]*F[1]);S=xg(k,(f-X)/(j-1)),E=xg(k,(l-X)/(j+1))}}M>Mg?E>Mg?(g=Ko(U,O,z,P,l,E,v),_=Ko(q,D,R,L,l,E,v),c.moveTo(g.cx+g.x01,g.cy+g.y01),EMg&&w>Mg?S>Mg?(g=Ko(R,L,q,D,f,-S,v),_=Ko(z,P,U,O,f,-S,v),c.lineTo(g.cx+g.x01,g.cy+g.y01),S0&&(p+=l);for(null!=e?d.sort(function(t,n){return e(v[t],v[n])}):null!=r&&d.sort(function(n,e){return r(t[n],t[e])}),a=0,s=p?(_-h*m)/p:0;a0?l*s:0)+m,v[c]={data:t[c],index:a,value:l,startAngle:g,endAngle:f,padAngle:y};return v}var n=zg,e=Cg,r=null,i=vg(0),o=vg(kg),u=vg(0);return t.value=function(e){return arguments.length?(n="function"==typeof e?e:vg(+e),t):n},t.sortValues=function(n){return arguments.length?(e=n,r=null,t):e},t.sort=function(n){return arguments.length?(r=n,e=null,t):r},t.startAngle=function(n){return arguments.length?(i="function"==typeof n?n:vg(+n),t):i},t.endAngle=function(n){return arguments.length?(o="function"==typeof n?n:vg(+n),t):o},t.padAngle=function(n){return arguments.length?(u="function"==typeof n?n:vg(+n),t):u},t},t.areaRadial=Lg,t.radialArea=Lg,t.lineRadial=Rg,t.radialLine=Rg,t.pointRadial=qg,t.linkHorizontal=function(){return cu(su)},t.linkVertical=function(){return cu(fu)},t.linkRadial=function(){var t=cu(lu);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t},t.symbol=function(){function t(){var t;if(r||(r=t=Vt()),n.apply(this,arguments).draw(r,+e.apply(this,arguments)),t)return r=null,t+""||null}var n=vg(Ug),e=vg(64),r=null;return t.type=function(e){return arguments.length?(n="function"==typeof e?e:vg(e),t):n},t.size=function(n){return arguments.length?(e="function"==typeof n?n:vg(+n),t):e},t.context=function(n){return arguments.length?(r=null==n?null:n,t):r},t},t.symbols=t_,t.symbolCircle=Ug,t.symbolCross=Og,t.symbolDiamond=Yg,t.symbolSquare=Vg,t.symbolStar=Xg,t.symbolTriangle=Wg,t.symbolWye=Kg,t.curveBasisClosed=function(t){return new du(t)},t.curveBasisOpen=function(t){return new vu(t)},t.curveBasis=function(t){return new pu(t)},t.curveBundle=e_,t.curveCardinalClosed=i_,t.curveCardinalOpen=o_,t.curveCardinal=r_,t.curveCatmullRomClosed=a_,t.curveCatmullRomOpen=c_,t.curveCatmullRom=u_,t.curveLinearClosed=function(t){return new Nu(t)},t.curveLinear=Sg,t.curveMonotoneX=function(t){return new Cu(t)},t.curveMonotoneY=function(t){return new zu(t)},t.curveNatural=function(t){return new Ru(t)},t.curveStep=function(t){return new qu(t,.5)},t.curveStepAfter=function(t){return new qu(t,1)},t.curveStepBefore=function(t){return new qu(t,0)},t.stack=function(){function t(t){var o,u,a=n.apply(this,arguments),c=t.length,s=a.length,f=new Array(s);for(o=0;o0){for(var e,r,i,o=0,u=t[0].length;o1)for(var e,r,i,o,u,a,c=0,s=t[n[0]].length;c=0?(r[0]=o,r[1]=o+=i):i<0?(r[1]=u,r[0]=u+=i):r[0]=o},t.stackOffsetNone=s_,t.stackOffsetSilhouette=function(t,n){if((e=t.length)>0){for(var e,r=0,i=t[n[0]],o=i.length;r0&&(r=(e=t[n[0]]).length)>0){for(var e,r,i,o=0,u=1;uHs&&e.name===n)return new Et([[t]],Nf,n,+r)}return null},t.interrupt=Gs,t.voronoi=function(){function t(t){return new ca(t.map(function(r,i){var o=[Math.round(n(r,i,t)/x_)*x_,Math.round(e(r,i,t)/x_)*x_];return o.index=i,o.data=r,o}),r)}var n=Ou,e=Fu,r=null;return t.polygons=function(n){return t(n).polygons()},t.links=function(n){return t(n).links()},t.triangles=function(n){return t(n).triangles()},t.x=function(e){return arguments.length?(n="function"==typeof e?e:h_(+e),t):n},t.y=function(n){return arguments.length?(e="function"==typeof n?n:h_(+n),t):e},t.extent=function(n){return arguments.length?(r=null==n?null:[[+n[0][0],+n[0][1]],[+n[1][0],+n[1][1]]],t):r&&[[r[0][0],r[0][1]],[r[1][0],r[1][1]]]},t.size=function(n){return arguments.length?(r=null==n?null:[[0,0],[+n[0],+n[1]]],t):r&&[r[1][0]-r[0][0],r[1][1]-r[0][1]]},t},t.zoom=function(){function n(t){t.property("__zoom",da).on("wheel.zoom",s).on("mousedown.zoom",f).on("dblclick.zoom",l).filter(w).on("touchstart.zoom",h).on("touchmove.zoom",p).on("touchend.zoom touchcancel.zoom",v).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function e(t,n){return(n=Math.max(M[0],Math.min(M[1],n)))===t.k?t:new sa(n,t.x,t.y)}function r(t,n,e){var r=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return r===t.x&&i===t.y?t:new sa(t.k,r,i)}function i(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function o(t,n,e){t.on("start.zoom",function(){u(this,arguments).start()}).on("interrupt.zoom end.zoom",function(){u(this,arguments).end()}).tween("zoom",function(){var t=arguments,r=u(this,t),o=m.apply(this,t),a=e||i(o),c=Math.max(o[1][0]-o[0][0],o[1][1]-o[0][1]),s=this.__zoom,f="function"==typeof n?n.apply(this,t):n,l=k(s.invert(a).concat(c/s.k),f.invert(a).concat(c/f.k));return function(t){if(1===t)t=f;else{var n=l(t),e=c/n[2];t=new sa(e,a[0]-n[0]*e,a[1]-n[1]*e)}r.zoom(null,t)}})}function u(t,n){for(var e,r=0,i=S.length;rP}n.zoom("mouse",x(r(n.that.__zoom,n.mouse[0]=cc(n.that),n.mouse[1]),n.extent,T))},!0).on("mouseup.zoom",function(){e.on("mousemove.zoom mouseup.zoom",null),C(t.event.view,n.moved),T_(),n.end()},!0),i=cc(this),o=t.event.clientX,a=t.event.clientY;yc(t.event.view),la(),n.mouse=[i,this.__zoom.invert(i)],Gs(this),n.start()}}function l(){if(y.apply(this,arguments)){var i=this.__zoom,u=cc(this),a=i.invert(u),c=i.k*(t.event.shiftKey?.5:2),s=x(r(e(i,c),u,a),m.apply(this,arguments),T);T_(),N>0?vc(this).transition().duration(N).call(o,s,u):vc(this).call(n.transform,s)}}function h(){if(y.apply(this,arguments)){var n,e,r,i,o=u(this,arguments),a=t.event.changedTouches,c=a.length;for(la(),e=0;e Date: Thu, 4 Jan 2018 14:02:33 -0600 Subject: [PATCH 06/18] use built-in d3 lib --- js/d3.v4.min.js | 2 -- viz.yaml | 6 ++---- 2 files changed, 2 insertions(+), 6 deletions(-) delete mode 100644 js/d3.v4.min.js diff --git a/js/d3.v4.min.js b/js/d3.v4.min.js deleted file mode 100644 index 643b658..0000000 --- a/js/d3.v4.min.js +++ /dev/null @@ -1,2 +0,0 @@ -// https://d3js.org Version 4.12.0. Copyright 2017 Mike Bostock. -(function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n(t.d3=t.d3||{})})(this,function(t){"use strict";function n(t,n){return[t,n]}function e(t,n,e){var r=(n-t)/Math.max(0,e),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=Ra?10:o>=La?5:o>=qa?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Ra?10:o>=La?5:o>=qa?2:1)}function r(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=Ra?i*=10:o>=La?i*=5:o>=qa&&(i*=2),nn?1:t>=n?0:NaN}function _(t,n){return t.style.getPropertyValue(n)||pc(t).getComputedStyle(t,null).getPropertyValue(n)}function y(t){return t.trim().split(/^|\s+/)}function m(t){return t.classList||new x(t)}function x(t){this._node=t,this._names=y(t.getAttribute("class")||"")}function b(t,n){for(var e=m(t),r=-1,i=n.length;++r>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1)):(n=Nc.exec(t))?F(parseInt(n[1],16)):(n=kc.exec(t))?new H(n[1],n[2],n[3],1):(n=Sc.exec(t))?new H(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=Ec.exec(t))?I(n[1],n[2],n[3],n[4]):(n=Ac.exec(t))?I(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=Cc.exec(t))?j(n[1],n[2]/100,n[3]/100,1):(n=zc.exec(t))?j(n[1],n[2]/100,n[3]/100,n[4]):Pc.hasOwnProperty(t)?F(Pc[t]):"transparent"===t?new H(NaN,NaN,NaN,0):null}function F(t){return new H(t>>16&255,t>>8&255,255&t,1)}function I(t,n,e,r){return r<=0&&(t=n=e=NaN),new H(t,n,e,r)}function Y(t){return t instanceof U||(t=O(t)),t?(t=t.rgb(),new H(t.r,t.g,t.b,t.opacity)):new H}function B(t,n,e,r){return 1===arguments.length?Y(t):new H(t,n,e,null==r?1:r)}function H(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function j(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new V(t,n,e,r)}function X(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof V)return new V(t.h,t.s,t.l,t.opacity);if(t instanceof U||(t=O(t)),!t)return new V;if(t instanceof V)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),u=NaN,a=o-i,c=(o+i)/2;return a?(u=n===o?(e-r)/a+6*(e0&&c<1?0:u,new V(u,a,c,t.opacity)}(t):new V(t,n,e,null==r?1:r)}function V(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function $(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}function W(t){if(t instanceof G)return new G(t.l,t.a,t.b,t.opacity);if(t instanceof et){var n=t.h*Rc;return new G(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}t instanceof H||(t=Y(t));var e=tt(t.r),r=tt(t.g),i=tt(t.b),o=Q((.4124564*e+.3575761*r+.1804375*i)/qc),u=Q((.2126729*e+.7151522*r+.072175*i)/Dc);return new G(116*u-16,500*(o-u),200*(u-Q((.0193339*e+.119192*r+.9503041*i)/Uc)),t.opacity)}function Z(t,n,e,r){return 1===arguments.length?W(t):new G(t,n,e,null==r?1:r)}function G(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function Q(t){return t>Yc?Math.pow(t,1/3):t/Ic+Oc}function J(t){return t>Fc?t*t*t:Ic*(t-Oc)}function K(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function tt(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function nt(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof et)return new et(t.h,t.c,t.l,t.opacity);t instanceof G||(t=W(t));var n=Math.atan2(t.b,t.a)*Lc;return new et(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}(t):new et(t,n,e,null==r?1:r)}function et(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}function rt(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof it)return new it(t.h,t.s,t.l,t.opacity);t instanceof H||(t=Y(t));var n=t.r/255,e=t.g/255,r=t.b/255,i=(Zc*r+$c*n-Wc*e)/(Zc+$c-Wc),o=r-i,u=(Vc*(e-i)-jc*o)/Xc,a=Math.sqrt(u*u+o*o)/(Vc*i*(1-i)),c=a?Math.atan2(u,o)*Lc-120:NaN;return new it(c<0?c+360:c,a,i,t.opacity)}(t):new it(t,n,e,null==r?1:r)}function it(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function ot(t,n,e,r,i){var o=t*t,u=o*t;return((1-3*t+3*o-u)*n+(4-6*o+3*u)*e+(1+3*t+3*o-3*u)*r+u*i)/6}function ut(t,n){return function(e){return t+e*n}}function at(t,n){var e=n-t;return e?ut(t,e>180||e<-180?e-360*Math.round(e/360):e):is(isNaN(t)?n:t)}function ct(t){return 1==(t=+t)?st:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):is(isNaN(n)?e:n)}}function st(t,n){var e=n-t;return e?ut(t,e):is(isNaN(t)?n:t)}function ft(t){return function(n){var e,r,i=n.length,o=new Array(i),u=new Array(i),a=new Array(i);for(e=0;e180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:fs(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,u.rotate,a,c),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:fs(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,u.skewX,a,c),function(t,n,e,r,o,u){if(t!==e||n!==r){var a=o.push(i(o)+"scale(",null,",",null,")");u.push({i:a-4,x:fs(t,e)},{i:a-2,x:fs(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,u.scaleX,u.scaleY,a,c),o=u=null,function(t){for(var n,e=-1,r=c.length;++e=0&&n._call.call(null,t),n=n._next;--Cs}function bt(){qs=(Ls=Us.now())+Ds,Cs=zs=0;try{xt()}finally{Cs=0,function(){var t,n,e=ts,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:ts=n);ns=t,Mt(r)}(),qs=0}}function wt(){var t=Us.now(),n=t-Ls;n>Rs&&(Ds-=n,Ls=t)}function Mt(t){if(!Cs){zs&&(zs=clearTimeout(zs));t-qs>24?(t<1/0&&(zs=setTimeout(bt,t-Us.now()-Ds)),Ps&&(Ps=clearInterval(Ps))):(Ps||(Ls=Us.now(),Ps=setInterval(wt,Rs)),Cs=1,Os(bt))}}function Tt(t,n){var e=kt(t,n);if(e.state>Bs)throw new Error("too late; already scheduled");return e}function Nt(t,n){var e=kt(t,n);if(e.state>js)throw new Error("too late; already started");return e}function kt(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function St(t,n,e){var r=t._id;return t.each(function(){var t=Nt(this,r);(t.value||(t.value={}))[n]=e.apply(this,arguments)}),function(t){return kt(t,r).value[n]}}function Et(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function At(t){return E().transition(t)}function Ct(){return++Ks}function zt(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function Pt(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}function Rt(t){return(1-Math.cos(of*t))/2}function Lt(t){return((t*=2)<=1?Math.pow(2,10*t-10):2-Math.pow(2,10-10*t))/2}function qt(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}function Dt(t){return(t=+t)Math.abs(t[1]-U[1])?b=!0:x=!0),U=t,m=!0,Ef(),o()}function o(){var t;switch(_=U[0]-D[0],y=U[1]-D[1],T){case Cf:case Af:N&&(_=Math.max(z-a,Math.min(R-p,_)),c=a+_,d=p+_),k&&(y=Math.max(P-f,Math.min(L-v,y)),h=f+y,g=v+y);break;case zf:N<0?(_=Math.max(z-a,Math.min(R-a,_)),c=a+_,d=p):N>0&&(_=Math.max(z-p,Math.min(R-p,_)),c=a,d=p+_),k<0?(y=Math.max(P-f,Math.min(L-f,y)),h=f+y,g=v):k>0&&(y=Math.max(P-v,Math.min(L-v,y)),h=f,g=v+y);break;case Pf:N&&(c=Math.max(z,Math.min(R,a-_*N)),d=Math.max(z,Math.min(R,p+_*N))),k&&(h=Math.max(P,Math.min(L,f-y*k)),g=Math.max(P,Math.min(L,v+y*k)))}d0&&(a=c-_),k<0?v=g-y:k>0&&(f=h-y),T=Cf,I.attr("cursor",Df.selection),o());break;default:return}Ef()},!0).on("keyup.brush",function(){switch(t.event.keyCode){case 16:q&&(x=b=q=!1,o());break;case 18:T===Pf&&(N<0?p=d:N>0&&(a=c),k<0?v=g:k>0&&(f=h),T=zf,o());break;case 32:T===Cf&&(t.event.altKey?(N&&(p=d-_*N,a=c+_*N),k&&(v=g-y*k,f=h+y*k),T=Pf):(N<0?p=d:N>0&&(a=c),k<0?v=g:k>0&&(f=h),T=zf),I.attr("cursor",Df[M]),o());break;default:return}Ef()},!0).on("mousemove.brush",e,!0).on("mouseup.brush",u,!0);yc(t.event.view)}Ot(),Gs(w),r.call(w),O.start()}}function c(){var t=this.__brush||{selection:null};return t.extent=f.apply(this,arguments),t.dim=n,t}var s,f=Yt,l=It,h=a(e,"start","brush","end"),p=6;return e.move=function(t,e){t.selection?t.on("start.brush",function(){i(this,arguments).beforestart().start()}).on("interrupt.brush end.brush",function(){i(this,arguments).end()}).tween("brush",function(){function t(t){u.selection=1===t&&Ht(s)?null:f(t),r.call(o),a.brush()}var o=this,u=o.__brush,a=i(o,arguments),c=u.selection,s=n.input("function"==typeof e?e.apply(this,arguments):e,u.extent),f=vs(c,s);return c&&s?t:t(1)}):t.each(function(){var t=arguments,o=this.__brush,u=n.input("function"==typeof e?e.apply(this,t):e,o.extent),a=i(this,t).beforestart();Gs(this),o.selection=null==u||Ht(u)?null:u,r.call(this),a.start().brush().end()})},o.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting&&(this.starting=!1,this.emit("start")),this},brush:function(){return this.emit("brush"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit("end")),this},emit:function(t){d(new Sf(e,t,n.output(this.state.selection)),h.apply,h,[t,this.that,this.args])}},e.extent=function(t){return arguments.length?(f="function"==typeof t?t:kf([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),e):f},e.filter=function(t){return arguments.length?(l="function"==typeof t?t:kf(!!t),e):l},e.handleSize=function(t){return arguments.length?(p=+t,e):p},e.on=function(){var t=h.on.apply(h,arguments);return t===h?e:t},e}function Xt(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function Vt(){return new Xt}function $t(t){return t.source}function Wt(t){return t.target}function Zt(t){return t.radius}function Gt(t){return t.startAngle}function Qt(t){return t.endAngle}function Jt(){}function Kt(t,n){var e=new Jt;if(t instanceof Jt)t.each(function(t,n){e.set(n,t)});else if(Array.isArray(t)){var r,i=-1,o=t.length;if(null==n)for(;++i=(o=(v+_)/2))?v=o:_=o,(f=e>=(u=(g+y)/2))?g=u:y=u,i=p,!(p=p[l=f<<1|s]))return i[l]=d,t;if(a=+t._x.call(null,p.data),c=+t._y.call(null,p.data),n===a&&e===c)return d.next=p,i?i[l]=d:t._root=d,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(s=n>=(o=(v+_)/2))?v=o:_=o,(f=e>=(u=(g+y)/2))?g=u:y=u}while((l=f<<1|s)==(h=(c>=u)<<1|a>=o));return i[h]=p,i[l]=d,t}function sn(t,n,e){var r=new fn(null==n?function(t){return t[0]}:n,null==e?function(t){return t[1]}:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function fn(t,n,e,r,i,o){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function ln(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}function hn(t){return t.x+t.vx}function pn(t){return t.y+t.vy}function dn(t){return t.index}function vn(t,n){var e=t.get(n);if(!e)throw new Error("missing: "+n);return e}function gn(t){return t.x}function _n(t){return t.y}function yn(t){return new mn(t)}function mn(t){if(!(n=kl.exec(t)))throw new Error("invalid format: "+t);var n,e=n[1]||" ",r=n[2]||">",i=n[3]||"-",o=n[4]||"",u=!!n[5],a=n[6]&&+n[6],c=!!n[7],s=n[8]&&+n[8].slice(1),f=n[9]||"";"n"===f?(c=!0,f="g"):Nl[f]||(f=""),(u||"0"===e&&"="===r)&&(u=!0,e="0",r="="),this.fill=e,this.align=r,this.sign=i,this.symbol=o,this.zero=u,this.width=a,this.comma=c,this.precision=s,this.type=f}function xn(n){return Sl=Cl(n),t.format=Sl.format,t.formatPrefix=Sl.formatPrefix,Sl}function bn(){this.reset()}function wn(t,n,e){var r=t.s=n+e,i=r-n,o=r-i;t.t=n-o+(e-i)}function Mn(t){return t>1?0:t<-1?dh:Math.acos(t)}function Tn(t){return t>1?vh:t<-1?-vh:Math.asin(t)}function Nn(t){return(t=Eh(t/2))*t}function kn(){}function Sn(t,n){t&&Rh.hasOwnProperty(t.type)&&Rh[t.type](t,n)}function En(t,n,e){var r,i=-1,o=t.length-e;for(n.lineStart();++i=0?1:-1,i=r*e,o=Mh(n),u=Eh(n),a=Fl*u,c=Ol*o+a*Mh(i),s=a*r*Eh(i);qh.add(wh(s,c)),Ul=t,Ol=o,Fl=u}function Ln(t){return[wh(t[1],t[0]),Tn(t[2])]}function qn(t){var n=t[0],e=t[1],r=Mh(e);return[r*Mh(n),r*Eh(n),Eh(e)]}function Dn(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function Un(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function On(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function Fn(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function In(t){var n=Ch(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}function Yn(t,n){Wl.push(Zl=[Il=t,Bl=t]),nHl&&(Hl=n)}function Bn(t,n){var e=qn([t*mh,n*mh]);if($l){var r=Un($l,e),i=Un([r[1],-r[0],0],r);In(i),i=Ln(i);var o,u=t-jl,a=u>0?1:-1,c=i[0]*yh*a,s=xh(u)>180;s^(a*jlHl&&(Hl=o):(c=(c+360)%360-180,s^(a*jlHl&&(Hl=n))),s?tWn(Il,Bl)&&(Bl=t):Wn(t,Bl)>Wn(Il,Bl)&&(Il=t):Bl>=Il?(tBl&&(Bl=t)):t>jl?Wn(Il,t)>Wn(Il,Bl)&&(Bl=t):Wn(t,Bl)>Wn(Il,Bl)&&(Il=t)}else Wl.push(Zl=[Il=t,Bl=t]);nHl&&(Hl=n),$l=e,jl=t}function Hn(){Fh.point=Bn}function jn(){Zl[0]=Il,Zl[1]=Bl,Fh.point=Yn,$l=null}function Xn(t,n){if($l){var e=t-jl;Oh.add(xh(e)>180?e+(e>0?360:-360):e)}else Xl=t,Vl=n;Uh.point(t,n),Bn(t,n)}function Vn(){Uh.lineStart()}function $n(){Xn(Xl,Vl),Uh.lineEnd(),xh(Oh)>ph&&(Il=-(Bl=180)),Zl[0]=Il,Zl[1]=Bl,$l=null}function Wn(t,n){return(n-=t)<0?n+360:n}function Zn(t,n){return t[0]-n[0]}function Gn(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:ndh?t-_h:t<-dh?t+_h:t,n]}function ce(t,n,e){return(t%=_h)?n||e?Bh(fe(t),le(n,e)):fe(t):n||e?le(n,e):ae}function se(t){return function(n,e){return n+=t,[n>dh?n-_h:n<-dh?n+_h:n,e]}}function fe(t){var n=se(t);return n.invert=se(-t),n}function le(t,n){function e(t,n){var e=Mh(n),a=Mh(t)*e,c=Eh(t)*e,s=Eh(n),f=s*r+a*i;return[wh(c*o-f*u,a*r-s*i),Tn(f*o+c*u)]}var r=Mh(t),i=Eh(t),o=Mh(n),u=Eh(n);return e.invert=function(t,n){var e=Mh(n),a=Mh(t)*e,c=Eh(t)*e,s=Eh(n),f=s*o-c*u;return[wh(c*o+s*u,a*r+f*i),Tn(f*r-a*i)]},e}function he(t,n,e,r,i,o){if(e){var u=Mh(n),a=Eh(n),c=r*e;null==i?(i=n+r*_h,o=n-c/2):(i=pe(u,i),o=pe(u,o),(r>0?io)&&(i+=r*_h));for(var s,f=i;r>0?f>o:f1}function _e(t,n){return((t=t.x)[0]<0?t[1]-vh-ph:vh-t[1])-((n=n.x)[0]<0?n[1]-vh-ph:vh-n[1])}function ye(t,n,e,r){function i(i,o){return t<=i&&i<=e&&n<=o&&o<=r}function o(i,o,a,s){var f=0,l=0;if(null==i||(f=u(i,a))!==(l=u(o,a))||c(i,o)<0^a>0)do{s.point(0===f||3===f?t:e,f>1?r:n)}while((f=(f+a+4)%4)!==l);else s.point(o[0],o[1])}function u(r,i){return xh(r[0]-t)0?0:3:xh(r[0]-e)0?2:1:xh(r[1]-n)0?1:0:i>0?3:2}function a(t,n){return c(t.x,n.x)}function c(t,n){var e=u(t,1),r=u(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(u){function c(t,n){i(t,n)&&b.point(t,n)}function s(o,u){var a=i(o,u);if(l&&h.push([o,u]),m)p=o,d=u,v=a,m=!1,a&&(b.lineStart(),b.point(o,u));else if(a&&y)b.point(o,u);else{var c=[g=Math.max(lp,Math.min(fp,g)),_=Math.max(lp,Math.min(fp,_))],s=[o=Math.max(lp,Math.min(fp,o)),u=Math.max(lp,Math.min(fp,u))];sp(c,s,t,n,e,r)?(y||(b.lineStart(),b.point(c[0],c[1])),b.point(s[0],s[1]),a||b.lineEnd(),x=!1):a&&(b.lineStart(),b.point(o,u),x=!1)}g=o,_=u,y=a}var f,l,h,p,d,v,g,_,y,m,x,b=u,w=np(),M={point:c,lineStart:function(){M.point=s,l&&l.push(h=[]),m=!0,y=!1,g=_=NaN},lineEnd:function(){f&&(s(p,d),v&&y&&w.rejoin(),f.push(w.result())),M.point=c,y&&b.lineEnd()},polygonStart:function(){b=w,f=[],l=[],x=!0},polygonEnd:function(){var n=function(){for(var n=0,e=0,i=l.length;er&&(h-o)*(r-u)>(p-u)*(t-o)&&++n:p<=r&&(h-o)*(r-u)<(p-u)*(t-o)&&--n;return n}(),e=x&&n,i=(f=Fa(f)).length;(e||i)&&(u.polygonStart(),e&&(u.lineStart(),o(null,null,1,u),u.lineEnd()),i&&rp(f,a,n,o,u),u.polygonEnd()),b=u,f=l=h=null}};return M}}function me(){pp.point=pp.lineEnd=kn}function xe(t,n){Hh=t*=mh,jh=Eh(n*=mh),Xh=Mh(n),pp.point=be}function be(t,n){t*=mh;var e=Eh(n*=mh),r=Mh(n),i=xh(t-Hh),o=Mh(i),u=r*Eh(i),a=Xh*e-jh*r*o,c=jh*e+Xh*r*o;hp.add(wh(Ch(u*u+a*a),c)),Hh=t,jh=e,Xh=r}function we(t,n){return!(!t||!mp.hasOwnProperty(t.type))&&mp[t.type](t,n)}function Me(t,n){return 0===_p(t,n)}function Te(t,n){var e=_p(t[0],t[1]);return _p(t[0],n)+_p(n,t[1])<=e+ph}function Ne(t,n){return!!op(t.map(ke),Se(n))}function ke(t){return(t=t.map(Se)).pop(),t}function Se(t){return[t[0]*mh,t[1]*mh]}function Ee(t,n,e){var r=Pa(t,n-ph,e).concat(n);return function(t){return r.map(function(n){return[t,n]})}}function Ae(t,n,e){var r=Pa(t,n-ph,e).concat(n);return function(t){return r.map(function(n){return[n,t]})}}function Ce(){function t(){return{type:"MultiLineString",coordinates:n()}}function n(){return Pa(Th(o/g)*g,i,g).map(h).concat(Pa(Th(s/_)*_,c,_).map(p)).concat(Pa(Th(r/d)*d,e,d).filter(function(t){return xh(t%g)>ph}).map(f)).concat(Pa(Th(a/v)*v,u,v).filter(function(t){return xh(t%_)>ph}).map(l))}var e,r,i,o,u,a,c,s,f,l,h,p,d=10,v=d,g=90,_=360,y=2.5;return t.lines=function(){return n().map(function(t){return{type:"LineString",coordinates:t}})},t.outline=function(){return{type:"Polygon",coordinates:[h(o).concat(p(c).slice(1),h(i).reverse().slice(1),p(s).reverse().slice(1))]}},t.extent=function(n){return arguments.length?t.extentMajor(n).extentMinor(n):t.extentMinor()},t.extentMajor=function(n){return arguments.length?(o=+n[0][0],i=+n[1][0],s=+n[0][1],c=+n[1][1],o>i&&(n=o,o=i,i=n),s>c&&(n=s,s=c,c=n),t.precision(y)):[[o,s],[i,c]]},t.extentMinor=function(n){return arguments.length?(r=+n[0][0],e=+n[1][0],a=+n[0][1],u=+n[1][1],r>e&&(n=r,r=e,e=n),a>u&&(n=a,a=u,u=n),t.precision(y)):[[r,a],[e,u]]},t.step=function(n){return arguments.length?t.stepMajor(n).stepMinor(n):t.stepMinor()},t.stepMajor=function(n){return arguments.length?(g=+n[0],_=+n[1],t):[g,_]},t.stepMinor=function(n){return arguments.length?(d=+n[0],v=+n[1],t):[d,v]},t.precision=function(n){return arguments.length?(y=+n,f=Ee(a,u,90),l=Ae(r,e,y),h=Ee(s,c,90),p=Ae(o,i,y),t):y},t.extentMajor([[-180,-90+ph],[180,90-ph]]).extentMinor([[-180,-80-ph],[180,80+ph]])}function ze(){Mp.point=Pe}function Pe(t,n){Mp.point=Re,Vh=Wh=t,$h=Zh=n}function Re(t,n){wp.add(Zh*t-Wh*n),Wh=t,Zh=n}function Le(){Re(Vh,$h)}function qe(t,n){Ap+=t,Cp+=n,++zp}function De(){Op.point=Ue}function Ue(t,n){Op.point=Oe,qe(Jh=t,Kh=n)}function Oe(t,n){var e=t-Jh,r=n-Kh,i=Ch(e*e+r*r);Pp+=i*(Jh+t)/2,Rp+=i*(Kh+n)/2,Lp+=i,qe(Jh=t,Kh=n)}function Fe(){Op.point=qe}function Ie(){Op.point=Be}function Ye(){He(Gh,Qh)}function Be(t,n){Op.point=He,qe(Gh=Jh=t,Qh=Kh=n)}function He(t,n){var e=t-Jh,r=n-Kh,i=Ch(e*e+r*r);Pp+=i*(Jh+t)/2,Rp+=i*(Kh+n)/2,Lp+=i,qp+=(i=Kh*t-Jh*n)*(Jh+t),Dp+=i*(Kh+n),Up+=3*i,qe(Jh=t,Kh=n)}function je(t){this._context=t}function Xe(t,n){Xp.point=Ve,Ip=Bp=t,Yp=Hp=n}function Ve(t,n){Bp-=t,Hp-=n,jp.add(Ch(Bp*Bp+Hp*Hp)),Bp=t,Hp=n}function $e(){this._string=[]}function We(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function Ze(t){return function(n){var e=new Ge;for(var r in t)e[r]=t[r];return e.stream=n,e}}function Ge(){}function Qe(t,n,e){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),Lh(e,t.stream(Ep)),n(Ep.result()),null!=r&&t.clipExtent(r),t}function Je(t,n,e){return Qe(t,function(e){var r=n[1][0]-n[0][0],i=n[1][1]-n[0][1],o=Math.min(r/(e[1][0]-e[0][0]),i/(e[1][1]-e[0][1])),u=+n[0][0]+(r-o*(e[1][0]+e[0][0]))/2,a=+n[0][1]+(i-o*(e[1][1]+e[0][1]))/2;t.scale(150*o).translate([u,a])},e)}function Ke(t,n,e){return Je(t,[[0,0],n],e)}function tr(t,n,e){return Qe(t,function(e){var r=+n,i=r/(e[1][0]-e[0][0]),o=(r-i*(e[1][0]+e[0][0]))/2,u=-i*e[0][1];t.scale(150*i).translate([o,u])},e)}function nr(t,n,e){return Qe(t,function(e){var r=+n,i=r/(e[1][1]-e[0][1]),o=-i*e[0][0],u=(r-i*(e[1][1]+e[0][1]))/2;t.scale(150*i).translate([o,u])},e)}function er(t){return rr(function(){return t})()}function rr(t){function n(t){return t=s(t[0]*mh,t[1]*mh),[t[0]*v+u,a-t[1]*v]}function e(t,n){return t=o(t,n),[t[0]*v+u,a-t[1]*v]}function r(){s=Bh(c=ce(x,b,w),o);var t=o(y,m);return u=g-t[0]*v,a=_+t[1]*v,i()}function i(){return p=d=null,n}var o,u,a,c,s,f,l,h,p,d,v=150,g=480,_=250,y=0,m=0,x=0,b=0,w=0,M=null,T=ap,N=null,k=xp,S=.5,E=Wp(e,S);return n.stream=function(t){return p&&d===t?p:p=Zp(function(t){return Ze({point:function(n,e){var r=t(n,e);return this.stream.point(r[0],r[1])}})}(c)(T(E(k(d=t)))))},n.preclip=function(t){return arguments.length?(T=t,M=void 0,i()):T},n.postclip=function(t){return arguments.length?(k=t,N=f=l=h=null,i()):k},n.clipAngle=function(t){return arguments.length?(T=+t?cp(M=t*mh):(M=null,ap),i()):M*yh},n.clipExtent=function(t){return arguments.length?(k=null==t?(N=f=l=h=null,xp):ye(N=+t[0][0],f=+t[0][1],l=+t[1][0],h=+t[1][1]),i()):null==N?null:[[N,f],[l,h]]},n.scale=function(t){return arguments.length?(v=+t,r()):v},n.translate=function(t){return arguments.length?(g=+t[0],_=+t[1],r()):[g,_]},n.center=function(t){return arguments.length?(y=t[0]%360*mh,m=t[1]%360*mh,r()):[y*yh,m*yh]},n.rotate=function(t){return arguments.length?(x=t[0]%360*mh,b=t[1]%360*mh,w=t.length>2?t[2]%360*mh:0,r()):[x*yh,b*yh,w*yh]},n.precision=function(t){return arguments.length?(E=Wp(e,S=t*t),i()):Ch(S)},n.fitExtent=function(t,e){return Je(n,t,e)},n.fitSize=function(t,e){return Ke(n,t,e)},n.fitWidth=function(t,e){return tr(n,t,e)},n.fitHeight=function(t,e){return nr(n,t,e)},function(){return o=t.apply(this,arguments),n.invert=o.invert&&function(t){return(t=s.invert((t[0]-u)/v,(a-t[1])/v))&&[t[0]*yh,t[1]*yh]},r()}}function ir(t){var n=0,e=dh/3,r=rr(t),i=r(n,e);return i.parallels=function(t){return arguments.length?r(n=t[0]*mh,e=t[1]*mh):[n*yh,e*yh]},i}function or(t,n){function e(t,n){var e=Ch(o-2*i*Eh(n))/i;return[e*Eh(t*=i),u-e*Mh(t)]}var r=Eh(t),i=(r+Eh(n))/2;if(xh(i)0?n<-vh+ph&&(n=-vh+ph):n>vh-ph&&(n=vh-ph);var e=o/Sh(fr(n),i);return[e*Eh(i*t),o-e*Mh(i*t)]}var r=Mh(t),i=t===n?Eh(t):kh(r/Mh(n))/kh(fr(n)/fr(t)),o=r*Sh(fr(t),i)/i;return i?(e.invert=function(t,n){var e=o-n,r=Ah(i)*Ch(t*t+e*e);return[wh(t,xh(e))/i*Ah(e),2*bh(Sh(o/r,1/i))-vh]},e):cr}function hr(t,n){return[t,n]}function pr(t,n){function e(t,n){var e=o-n,r=i*t;return[e*Eh(r),o-e*Mh(r)]}var r=Mh(t),i=t===n?Eh(t):(r-Mh(n))/(n-t),o=r/i+t;return xh(i)=0;)n+=e[r].value;else n=1;t.value=n}function Tr(t,n){var e,r,i,o,u,a=new Er(t),c=+t.value&&(a.value=t.value),s=[a];for(null==n&&(n=Nr);e=s.pop();)if(c&&(e.value=+e.data.value),(i=n(e.data))&&(u=i.length))for(e.children=new Array(u),o=u-1;o>=0;--o)s.push(r=e.children[o]=new Er(i[o])),r.parent=e,r.depth=e.depth+1;return a.eachBefore(Sr)}function Nr(t){return t.children}function kr(t){t.data=t.data.data}function Sr(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function Er(t){this.data=t,this.depth=this.height=0,this.parent=null}function Ar(t,n){var e=t.r-n.r,r=n.x-t.x,i=n.y-t.y;return e<0||e*e0&&e*e>r*r+i*i}function zr(t,n){for(var e=0;ee*e+r*r}function Dr(t){var n=t._,e=t.next._,r=n.r+e.r,i=(n.x*e.r+e.x*n.r)/r,o=(n.y*e.r+e.y*n.r)/r;return i*i+o*o}function Ur(t){this._=t,this.next=null,this.previous=null}function Or(t){if(!(i=t.length))return 0;var n,e,r,i,o,u,a,c,s,f,l;if(n=t[0],n.x=0,n.y=0,!(i>1))return n.r;if(e=t[1],n.x=-e.r,e.x=n.r,e.y=0,!(i>2))return n.r+e.r;Lr(e,n,r=t[2]),n=new Ur(n),e=new Ur(e),r=new Ur(r),n.next=r.previous=e,e.next=n.previous=r,r.next=e.previous=n;t:for(a=3;ah&&(h=a),g=f*f*v,(p=Math.max(h/g,g/l))>d){f-=a;break}d=p}_.push(u={value:f,dice:c1&&hd(t[e[r-2]],t[e[r-1]],t[i])<=0;)--r;e[r++]=i}return e.slice(0,r)}function ei(t){this._size=t,this._call=this._error=null,this._tasks=[],this._data=[],this._waiting=this._active=this._ended=this._start=0}function ri(t){if(!t._start)try{(function(t){for(;t._start=t._waiting&&t._active=0;)if((e=t._tasks[r])&&(t._tasks[r]=null,e.abort))try{e.abort()}catch(n){}t._active=NaN,oi(t)}function oi(t){if(!t._active&&t._call){var n=t._data;t._data=void 0,t._call(t._error,n)}}function ui(t){if(null==t)t=1/0;else if(!((t=+t)>=1))throw new Error("invalid concurrency");return new ei(t)}function ai(t){function n(n){var o=n+"",u=e.get(o);if(!u){if(i!==Ld)return i;e.set(o,u=r.push(n))}return t[(u-1)%t.length]}var e=Kt(),r=[],i=Ld;return t=null==t?[]:Rd.call(t),n.domain=function(t){if(!arguments.length)return r.slice();r=[],e=Kt();for(var i,o,u=-1,a=t.length;++u2?function(t,n,e,r){var i=Math.min(t.length,n.length)-1,o=new Array(i),u=new Array(i),a=-1;for(t[i]=e?1:r(t)}}}(t):t,s)))(+n)}var i,o,u,a=Ud,c=Ud,s=vs,f=!1;return r.invert=function(t){return(u||(u=i(c,a,fi,f?function(t){return function(n,e){var r=t(n=+n,e=+e);return function(t){return t<=0?n:t>=1?e:r(t)}}}(n):n)))(+t)},r.domain=function(t){return arguments.length?(a=Pd.call(t,Dd),e()):a.slice()},r.range=function(t){return arguments.length?(c=Rd.call(t),e()):c.slice()},r.rangeRound=function(t){return c=Rd.call(t),s=gs,e()},r.clamp=function(t){return arguments.length?(f=!!t,e()):f},r.interpolate=function(t){return arguments.length?(s=t,e()):s},e()}function pi(t){var n=t.domain;return t.ticks=function(t){var e=n();return Da(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){return Od(n(),t,e)},t.nice=function(r){null==r&&(r=10);var i,o=n(),u=0,a=o.length-1,c=o[u],s=o[a];return s0?i=e(c=Math.floor(c/i)*i,s=Math.ceil(s/i)*i,r):i<0&&(i=e(c=Math.ceil(c*i)/i,s=Math.floor(s*i)/i,r)),i>0?(o[u]=Math.floor(c/i)*i,o[a]=Math.ceil(s/i)*i,n(o)):i<0&&(o[u]=Math.ceil(c*i)/i,o[a]=Math.floor(s*i)/i,n(o)),t},t}function di(){var t=hi(fi,fs);return t.copy=function(){return li(t,di())},pi(t)}function vi(){function t(t){return+t}var n=[0,1];return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=Pd.call(e,Dd),t):n.slice()},t.copy=function(){return vi().domain(n)},pi(t)}function gi(t,n){return(n=Math.log(n/t))?function(e){return Math.log(e/t)/n}:qd(n)}function _i(t,n){return t<0?function(e){return-Math.pow(-n,e)*Math.pow(-t,1-e)}:function(e){return Math.pow(n,e)*Math.pow(t,1-e)}}function yi(t){return 10===t?function(t){return isFinite(t)?+("1e"+t):t<0?0:t}:t===Math.E?Math.exp:function(n){return Math.pow(t,n)}}function mi(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),function(n){return Math.log(n)/t})}function xi(t){return function(n){return-t(-n)}}function bi(){function n(){return o=mi(i),u=yi(i),r()[0]<0&&(o=xi(o),u=xi(u)),e}var e=hi(gi,_i).domain([1,10]),r=e.domain,i=10,o=mi(10),u=yi(10);return e.base=function(t){return arguments.length?(i=+t,n()):i},e.domain=function(t){return arguments.length?(r(t),n()):r()},e.ticks=function(t){var n,e=r(),a=e[0],c=e[e.length-1];(n=c0){for(;hc)break;v.push(l)}}else for(;h=1;--f)if(!((l=s*f)c)break;v.push(l)}}else v=Da(h,p,Math.min(p-h,d)).map(u);return n?v.reverse():v},e.tickFormat=function(n,r){if(null==r&&(r=10===i?".0e":","),"function"!=typeof r&&(r=t.format(r)),n===1/0)return r;null==n&&(n=10);var a=Math.max(1,i*n/e.ticks().length);return function(t){var n=t/u(Math.round(o(t)));return n*i0?i[n-1]:e[0],n=i?[o[i-1],r]:[o[n-1],o[n]]},t.copy=function(){return Ni().domain([e,r]).range(u)},pi(t)}function ki(){function t(t){if(t<=t)return e[ba(n,t,0,r)]}var n=[.5],e=[0,1],r=1;return t.domain=function(i){return arguments.length?(n=Rd.call(i),r=Math.min(n.length,e.length-1),t):n.slice()},t.range=function(i){return arguments.length?(e=Rd.call(i),r=Math.min(n.length,e.length-1),t):e.slice()},t.invertExtent=function(t){var r=e.indexOf(t);return[n[r-1],n[r]]},t.copy=function(){return ki().domain(n).range(e)},t}function Si(t,n,e,r){function i(n){return t(n=new Date(+n)),n}return i.floor=i,i.ceil=function(e){return t(e=new Date(e-1)),n(e,1),t(e),e},i.round=function(t){var n=i(t),e=i.ceil(t);return t-n0))return a;do{a.push(u=new Date(+e)),n(e,o),t(e)}while(u=n)for(;t(n),!e(n);)n.setTime(n-1)},function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;n(t,-1),!e(t););else for(;--r>=0;)for(;n(t,1),!e(t););})},e&&(i.count=function(n,r){return Id.setTime(+n),Yd.setTime(+r),t(Id),t(Yd),Math.floor(e(Id,Yd))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(n){return r(n)%t==0}:function(n){return i.count(0,n)%t==0}):i:null}),i}function Ei(t){return Si(function(n){n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+7*n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*jd)/Xd})}function Ai(t){return Si(function(n){n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+7*n)},function(t,n){return(n-t)/Xd})}function Ci(t){if(0<=t.y&&t.y<100){var n=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return n.setFullYear(t.y),n}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function zi(t){if(0<=t.y&&t.y<100){var n=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return n.setUTCFullYear(t.y),n}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Pi(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}function Ri(t){function n(t,n){return function(e){var r,i,o,u=[],a=-1,c=0,s=t.length;for(e instanceof Date||(e=new Date(+e));++a53)return null;"w"in u||(u.w=1),"Z"in u?(i=(o=(i=zi(Pi(u.y))).getUTCDay())>4||0===o?Nv.ceil(i):Nv(i),i=wv.offset(i,7*(u.V-1)),u.y=i.getUTCFullYear(),u.m=i.getUTCMonth(),u.d=i.getUTCDate()+(u.w+6)%7):(i=(o=(i=n(Pi(u.y))).getDay())>4||0===o?nv.ceil(i):nv(i),i=Jd.offset(i,7*(u.V-1)),u.y=i.getFullYear(),u.m=i.getMonth(),u.d=i.getDate()+(u.w+6)%7)}else("W"in u||"U"in u)&&("w"in u||(u.w="u"in u?u.u%7:"W"in u?1:0),o="Z"in u?zi(Pi(u.y)).getUTCDay():n(Pi(u.y)).getDay(),u.m=0,u.d="W"in u?(u.w+6)%7+7*u.W-(o+5)%7:u.w+7*u.U-(o+6)%7);return"Z"in u?(u.H+=u.Z/100|0,u.M+=u.Z%100,zi(u)):n(u)}}function r(t,n,e,r){for(var i,o,u=0,a=n.length,c=e.length;u=c)return-1;if(37===(i=n.charCodeAt(u++))){if(i=n.charAt(u++),!(o=T[i in Hv?n.charAt(u++):i])||(r=o(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}var i=t.dateTime,o=t.date,u=t.time,a=t.periods,c=t.days,s=t.shortDays,f=t.months,l=t.shortMonths,h=Di(a),p=Ui(a),d=Di(c),v=Ui(c),g=Di(s),_=Ui(s),y=Di(f),m=Ui(f),x=Di(l),b=Ui(l),w={a:function(t){return s[t.getDay()]},A:function(t){return c[t.getDay()]},b:function(t){return l[t.getMonth()]},B:function(t){return f[t.getMonth()]},c:null,d:ro,e:ro,f:co,H:io,I:oo,j:uo,L:ao,m:so,M:fo,p:function(t){return a[+(t.getHours()>=12)]},Q:Fo,s:Io,S:lo,u:ho,U:po,V:vo,w:go,W:_o,x:null,X:null,y:yo,Y:mo,Z:xo,"%":Oo},M={a:function(t){return s[t.getUTCDay()]},A:function(t){return c[t.getUTCDay()]},b:function(t){return l[t.getUTCMonth()]},B:function(t){return f[t.getUTCMonth()]},c:null,d:bo,e:bo,f:ko,H:wo,I:Mo,j:To,L:No,m:So,M:Eo,p:function(t){return a[+(t.getUTCHours()>=12)]},Q:Fo,s:Io,S:Ao,u:Co,U:zo,V:Po,w:Ro,W:Lo,x:null,X:null,y:qo,Y:Do,Z:Uo,"%":Oo},T={a:function(t,n,e){var r=g.exec(n.slice(e));return r?(t.w=_[r[0].toLowerCase()],e+r[0].length):-1},A:function(t,n,e){var r=d.exec(n.slice(e));return r?(t.w=v[r[0].toLowerCase()],e+r[0].length):-1},b:function(t,n,e){var r=x.exec(n.slice(e));return r?(t.m=b[r[0].toLowerCase()],e+r[0].length):-1},B:function(t,n,e){var r=y.exec(n.slice(e));return r?(t.m=m[r[0].toLowerCase()],e+r[0].length):-1},c:function(t,n,e){return r(t,i,n,e)},d:$i,e:$i,f:Ki,H:Zi,I:Zi,j:Wi,L:Ji,m:Vi,M:Gi,p:function(t,n,e){var r=h.exec(n.slice(e));return r?(t.p=p[r[0].toLowerCase()],e+r[0].length):-1},Q:no,s:eo,S:Qi,u:Fi,U:Ii,V:Yi,w:Oi,W:Bi,x:function(t,n,e){return r(t,o,n,e)},X:function(t,n,e){return r(t,u,n,e)},y:ji,Y:Hi,Z:Xi,"%":to};return w.x=n(o,w),w.X=n(u,w),w.c=n(i,w),M.x=n(o,M),M.X=n(u,M),M.c=n(i,M),{format:function(t){var e=n(t+="",w);return e.toString=function(){return t},e},parse:function(t){var n=e(t+="",Ci);return n.toString=function(){return t},n},utcFormat:function(t){var e=n(t+="",M);return e.toString=function(){return t},e},utcParse:function(t){var n=e(t,zi);return n.toString=function(){return t},n}}}function Li(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o68?1900:2e3),e+r[0].length):-1}function Xi(t,n,e){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function Vi(t,n,e){var r=jv.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function $i(t,n,e){var r=jv.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function Wi(t,n,e){var r=jv.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function Zi(t,n,e){var r=jv.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function Gi(t,n,e){var r=jv.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function Qi(t,n,e){var r=jv.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function Ji(t,n,e){var r=jv.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function Ki(t,n,e){var r=jv.exec(n.slice(e,e+6));return r?(t.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function to(t,n,e){var r=Xv.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function no(t,n,e){var r=jv.exec(n.slice(e));return r?(t.Q=+r[0],e+r[0].length):-1}function eo(t,n,e){var r=jv.exec(n.slice(e));return r?(t.Q=1e3*+r[0],e+r[0].length):-1}function ro(t,n){return Li(t.getDate(),n,2)}function io(t,n){return Li(t.getHours(),n,2)}function oo(t,n){return Li(t.getHours()%12||12,n,2)}function uo(t,n){return Li(1+Jd.count(gv(t),t),n,3)}function ao(t,n){return Li(t.getMilliseconds(),n,3)}function co(t,n){return ao(t,n)+"000"}function so(t,n){return Li(t.getMonth()+1,n,2)}function fo(t,n){return Li(t.getMinutes(),n,2)}function lo(t,n){return Li(t.getSeconds(),n,2)}function ho(t){var n=t.getDay();return 0===n?7:n}function po(t,n){return Li(tv.count(gv(t),t),n,2)}function vo(t,n){var e=t.getDay();return t=e>=4||0===e?iv(t):iv.ceil(t),Li(iv.count(gv(t),t)+(4===gv(t).getDay()),n,2)}function go(t){return t.getDay()}function _o(t,n){return Li(nv.count(gv(t),t),n,2)}function yo(t,n){return Li(t.getFullYear()%100,n,2)}function mo(t,n){return Li(t.getFullYear()%1e4,n,4)}function xo(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+Li(n/60|0,"0",2)+Li(n%60,"0",2)}function bo(t,n){return Li(t.getUTCDate(),n,2)}function wo(t,n){return Li(t.getUTCHours(),n,2)}function Mo(t,n){return Li(t.getUTCHours()%12||12,n,2)}function To(t,n){return Li(1+wv.count(Iv(t),t),n,3)}function No(t,n){return Li(t.getUTCMilliseconds(),n,3)}function ko(t,n){return No(t,n)+"000"}function So(t,n){return Li(t.getUTCMonth()+1,n,2)}function Eo(t,n){return Li(t.getUTCMinutes(),n,2)}function Ao(t,n){return Li(t.getUTCSeconds(),n,2)}function Co(t){var n=t.getUTCDay();return 0===n?7:n}function zo(t,n){return Li(Tv.count(Iv(t),t),n,2)}function Po(t,n){var e=t.getUTCDay();return t=e>=4||0===e?Ev(t):Ev.ceil(t),Li(Ev.count(Iv(t),t)+(4===Iv(t).getUTCDay()),n,2)}function Ro(t){return t.getUTCDay()}function Lo(t,n){return Li(Nv.count(Iv(t),t),n,2)}function qo(t,n){return Li(t.getUTCFullYear()%100,n,2)}function Do(t,n){return Li(t.getUTCFullYear()%1e4,n,4)}function Uo(){return"+0000"}function Oo(){return"%"}function Fo(t){return+t}function Io(t){return Math.floor(+t/1e3)}function Yo(n){return Yv=Ri(n),t.timeFormat=Yv.format,t.timeParse=Yv.parse,t.utcFormat=Yv.utcFormat,t.utcParse=Yv.utcParse,Yv}function Bo(t){return new Date(t)}function Ho(t){return t instanceof Date?+t:+new Date(+t)}function jo(t,n,e,i,o,u,a,c,s){function f(n,e,i,o){if(null==n&&(n=10),"number"==typeof n){var u=Math.abs(i-e)/n,a=ma(function(t){return t[2]}).right(w,u);a===w.length?(o=r(e/ng,i/ng,n),n=t):a?(o=(a=w[u/w[a-1][2]=1?Ng:t<=-1?-Ng:Math.asin(t)}function Wo(t){return t.innerRadius}function Zo(t){return t.outerRadius}function Go(t){return t.startAngle}function Qo(t){return t.endAngle}function Jo(t){return t&&t.padAngle}function Ko(t,n,e,r,i,o,u){var a=t-e,c=n-r,s=(u?o:-o)/wg(a*a+c*c),f=s*c,l=-s*a,h=t+f,p=n+l,d=e+f,v=r+l,g=(h+d)/2,_=(p+v)/2,y=d-h,m=v-p,x=y*y+m*m,b=i-o,w=h*v-d*p,M=(m<0?-1:1)*wg(mg(0,b*b*x-w*w)),T=(w*m-y*M)/x,N=(-w*y-m*M)/x,k=(w*m+y*M)/x,S=(-w*y+m*M)/x,E=T-g,A=N-_,C=k-g,z=S-_;return E*E+A*A>C*C+z*z&&(T=k,N=S),{cx:T,cy:N,x01:-f,y01:-l,x11:T*(i/b-1),y11:N*(i/b-1)}}function tu(t){this._context=t}function nu(t){return t[0]}function eu(t){return t[1]}function ru(t){this._curve=t}function iu(t){function n(n){return new ru(t(n))}return n._curve=t,n}function ou(t){var n=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?n(iu(t)):n()._curve},t}function uu(t){return t.source}function au(t){return t.target}function cu(t){function n(){var n,a=Dg.call(arguments),c=e.apply(this,a),s=r.apply(this,a);if(u||(u=n=Vt()),t(u,+i.apply(this,(a[0]=c,a)),+o.apply(this,a),+i.apply(this,(a[0]=s,a)),+o.apply(this,a)),n)return u=null,n+""||null}var e=uu,r=au,i=nu,o=eu,u=null;return n.source=function(t){return arguments.length?(e=t,n):e},n.target=function(t){return arguments.length?(r=t,n):r},n.x=function(t){return arguments.length?(i="function"==typeof t?t:vg(+t),n):i},n.y=function(t){return arguments.length?(o="function"==typeof t?t:vg(+t),n):o},n.context=function(t){return arguments.length?(u=null==t?null:t,n):u},n}function su(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n=(n+r)/2,e,n,i,r,i)}function fu(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n,e=(e+i)/2,r,e,r,i)}function lu(t,n,e,r,i){var o=qg(n,e),u=qg(n,e=(e+i)/2),a=qg(r,e),c=qg(r,i);t.moveTo(o[0],o[1]),t.bezierCurveTo(u[0],u[1],a[0],a[1],c[0],c[1])}function hu(t,n,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+n)/6,(t._y0+4*t._y1+e)/6)}function pu(t){this._context=t}function du(t){this._context=t}function vu(t){this._context=t}function gu(t,n){this._basis=new pu(t),this._beta=n}function _u(t,n,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-n),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function yu(t,n){this._context=t,this._k=(1-n)/6}function mu(t,n){this._context=t,this._k=(1-n)/6}function xu(t,n){this._context=t,this._k=(1-n)/6}function bu(t,n,e){var r=t._x1,i=t._y1,o=t._x2,u=t._y2;if(t._l01_a>Mg){var a=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*a-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*a-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>Mg){var s=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,f=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*s+t._x1*t._l23_2a-n*t._l12_2a)/f,u=(u*s+t._y1*t._l23_2a-e*t._l12_2a)/f}t._context.bezierCurveTo(r,i,o,u,t._x2,t._y2)}function wu(t,n){this._context=t,this._alpha=n}function Mu(t,n){this._context=t,this._alpha=n}function Tu(t,n){this._context=t,this._alpha=n}function Nu(t){this._context=t}function ku(t){return t<0?-1:1}function Su(t,n,e){var r=t._x1-t._x0,i=n-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),u=(e-t._y1)/(i||r<0&&-0),a=(o*i+u*r)/(r+i);return(ku(o)+ku(u))*Math.min(Math.abs(o),Math.abs(u),.5*Math.abs(a))||0}function Eu(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function Au(t,n,e){var r=t._x0,i=t._y0,o=t._x1,u=t._y1,a=(o-r)/3;t._context.bezierCurveTo(r+a,i+a*n,o-a,u-a*e,o,u)}function Cu(t){this._context=t}function zu(t){this._context=new Pu(t)}function Pu(t){this._context=t}function Ru(t){this._context=t}function Lu(t){var n,e,r=t.length-1,i=new Array(r),o=new Array(r),u=new Array(r);for(i[0]=0,o[0]=2,u[0]=t[0]+2*t[1],n=1;n=0;--n)i[n]=(u[n]-i[n+1])/o[n];for(o[r-1]=(t[r]+i[r-1])/2,n=0;n0)){if(o/=h,h<0){if(o0){if(o>l)return;o>f&&(f=o)}if(o=r-c,h||!(o<0)){if(o/=h,h<0){if(o>l)return;o>f&&(f=o)}else if(h>0){if(o0)){if(o/=p,p<0){if(o0){if(o>l)return;o>f&&(f=o)}if(o=i-s,p||!(o<0)){if(o/=p,p<0){if(o>l)return;o>f&&(f=o)}else if(p>0){if(o0||l<1)||(f>0&&(t[0]=[c+f*h,s+f*p]),l<1&&(t[1]=[c+l*h,s+l*p]),!0)}}}}}function Zu(t,n,e,r,i){var o=t[1];if(o)return!0;var u,a,c=t[0],s=t.left,f=t.right,l=s[0],h=s[1],p=f[0],d=f[1],v=(l+p)/2,g=(h+d)/2;if(d===h){if(v=r)return;if(l>p){if(c){if(c[1]>=i)return}else c=[v,e];o=[v,i]}else{if(c){if(c[1]1)if(l>p){if(c){if(c[1]>=i)return}else c=[(e-a)/u,e];o=[(i-a)/u,i]}else{if(c){if(c[1]=r)return}else c=[n,u*n+a];o=[r,u*r+a]}else{if(c){if(c[0]=-b_)){var p=c*c+s*s,d=f*f+l*l,v=(l*p-s*d)/h,g=(c*d-f*p)/h,_=y_.pop()||new function(){Yu(this),this.x=this.y=this.arc=this.site=this.cy=null};_.arc=t,_.site=i,_.x=v+u,_.y=(_.cy=g+a)+Math.sqrt(v*v+g*g),t.circle=_;for(var y=null,m=g_._;m;)if(_.yx_)a=a.L;else{if(!((i=o-function(t,n){var e=t.N;if(e)return oa(e,n);var r=t.site;return r[1]===n?r[0]:1/0}(a,u))>x_)){r>-x_?(n=a.P,e=a):i>-x_?(n=a,e=a.N):n=e=a;break}if(!a.R){n=a;break}a=a.R}(function(t){v_[t.index]={site:t,halfedges:[]}})(t);var c=na(t);if(d_.insert(n,c),n||e){if(n===e)return ta(n),e=na(n.site),d_.insert(c,e),c.edge=e.edge=Xu(n.site,c.site),Ku(n),void Ku(e);if(e){ta(n),ta(e);var s=n.site,f=s[0],l=s[1],h=t[0]-f,p=t[1]-l,d=e.site,v=d[0]-f,g=d[1]-l,_=2*(h*g-p*v),y=h*h+p*p,m=v*v+g*g,x=[(g*y-p*m)/_+f,(h*m-v*y)/_+l];$u(e.edge,s,d,x),c.edge=Xu(s,t,null,x),e.edge=Xu(t,d,null,x),Ku(n),Ku(e)}else c.edge=Xu(n.site,c.site)}}function oa(t,n){var e=t.site,r=e[0],i=e[1],o=i-n;if(!o)return r;var u=t.P;if(!u)return-1/0;var a=(e=u.site)[0],c=e[1],s=c-n;if(!s)return a;var f=a-r,l=1/o-1/s,h=f/s;return l?(-h+Math.sqrt(h*h-2*l*(f*f/(-2*s)-c+s/2+i-o/2)))/l+r:(r+a)/2}function ua(t,n,e){return(t[0]-e[0])*(n[1]-t[1])-(t[0]-n[0])*(e[1]-t[1])}function aa(t,n){return n[1]-t[1]||n[0]-t[0]}function ca(t,n){var e,r,i,o=t.sort(aa).pop();for(__=[],v_=new Array(t.length),d_=new Iu,g_=new Iu;;)if(i=p_,o&&(!i||o[1]x_||Math.abs(i[0][1]-i[1][1])>x_)||delete __[o]})(u,a,c,s),function(t,n,e,r){var i,o,u,a,c,s,f,l,h,p,d,v,g=v_.length,_=!0;for(i=0;ix_||Math.abs(v-h)>x_)&&(c.splice(a,0,__.push(Vu(u,p,Math.abs(d-t)x_?[t,Math.abs(l-t)x_?[Math.abs(h-r)x_?[e,Math.abs(l-e)x_?[Math.abs(h-n)r?(r+i)/2:Math.min(0,r)||Math.max(0,i),u>o?(o+u)/2:Math.min(0,o)||Math.max(0,u))}var ya=function(t,n){return tn?1:t>=n?0:NaN},ma=function(t){return 1===t.length&&(t=function(t){return function(n,e){return ya(t(n),e)}}(t)),{left:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r>>1;t(n[o],e)<0?r=o+1:i=o}return r},right:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r>>1;t(n[o],e)>0?i=o:r=o+1}return r}}},xa=ma(ya),ba=xa.right,wa=xa.left,Ma=function(t){return null===t?NaN:+t},Ta=function(t,n){var e,r,i=t.length,o=0,u=-1,a=0,c=0;if(null==n)for(;++u1)return c/(o-1)},Na=function(t,n){var e=Ta(t,n);return e?Math.sqrt(e):e},ka=function(t,n){var e,r,i,o=t.length,u=-1;if(null==n){for(;++u=e)for(r=i=e;++ue&&(r=e),i=e)for(r=i=e;++ue&&(r=e),i0)return[t];if((i=n0)for(t=Math.ceil(t/a),n=Math.floor(n/a),u=new Array(o=Math.ceil(n-t+1));++c=1)return+e(t[r-1],r-1,t);var r,i=(r-1)*n,o=Math.floor(i),u=+e(t[o],o,t);return u+(+e(t[o+1],o+1,t)-u)*(i-o)}},Fa=function(t){for(var n,e,r,i=t.length,o=-1,u=0;++o=0;)for(n=(r=t[i]).length;--n>=0;)e[--u]=r[n];return e},Ia=function(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o=e)for(r=e;++oe&&(r=e)}else for(;++o=e)for(r=e;++oe&&(r=e);return r},Ya=function(t){if(!(o=t.length))return[];for(var n=-1,e=Ia(t,i),r=new Array(e);++n=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}})}(t+"",r),o=-1,u=i.length;{if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++o0)for(var e,r,i=new Array(e),o=0;o=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),Qa.hasOwnProperty(n)?{space:Qa[n],local:t}:t},Ka=function(t){var n=Ja(t);return(n.local?function(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}:function(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===Ga&&n.documentElement.namespaceURI===Ga?n.createElement(t):n.createElementNS(e,t)}})(n)},tc=0;l.prototype=f.prototype={constructor:l,get:function(t){for(var n=this._;!(n in t);)if(!(t=t.parentNode))return;return t[n]},set:function(t,n){return t[this._]=n},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}};var nc=function(t){return function(){return this.matches(t)}};if("undefined"!=typeof document){var ec=document.documentElement;if(!ec.matches){var rc=ec.webkitMatchesSelector||ec.msMatchesSelector||ec.mozMatchesSelector||ec.oMatchesSelector;nc=function(t){return function(){return rc.call(this,t)}}}}var ic=nc,oc={};if(t.event=null,"undefined"!=typeof document){"onmouseenter"in document.documentElement||(oc={mouseenter:"mouseover",mouseleave:"mouseout"})}var uc=function(){for(var n,e=t.event;n=e.sourceEvent;)e=n;return e},ac=function(t,n){var e=t.ownerSVGElement||t;if(e.createSVGPoint){var r=e.createSVGPoint();return r.x=n.clientX,r.y=n.clientY,r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}var i=t.getBoundingClientRect();return[n.clientX-i.left-t.clientLeft,n.clientY-i.top-t.clientTop]},cc=function(t){var n=uc();return n.changedTouches&&(n=n.changedTouches[0]),ac(t,n)},sc=function(t){return null==t?function(){}:function(){return this.querySelector(t)}},fc=function(t){return null==t?function(){return[]}:function(){return this.querySelectorAll(t)}},lc=function(t){return new Array(t.length)};v.prototype={constructor:v,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var hc="$",pc=function(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView};x.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var dc=[null];S.prototype=E.prototype={constructor:S,select:function(t){"function"!=typeof t&&(t=sc(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i=b&&(b=x+1);!(m=_[b])&&++b=0;)(r=i[o])&&(u&&u!==r.nextSibling&&u.parentNode.insertBefore(r,u),u=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=g);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o1?this.each((null==n?function(t){return function(){this.style.removeProperty(t)}}:"function"==typeof n?function(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}:function(t,n,e){return function(){this.style.setProperty(t,n,e)}})(t,n,null==e?"":e)):_(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?function(t){return function(){delete this[t]}}:"function"==typeof n?function(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}:function(t,n){return function(){this[t]=n}})(t,n)):this.node()[t]},classed:function(t,n){var e=y(t+"");if(arguments.length<2){for(var r=m(this.node()),i=-1,o=e.length;++i=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}}),u=o.length;{if(!(arguments.length<2)){for(a=n?p:function(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r=240?t-240:t+120,i,r),$(t,i,r),$(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1}}));var Rc=Math.PI/180,Lc=180/Math.PI,qc=.95047,Dc=1,Uc=1.08883,Oc=4/29,Fc=6/29,Ic=3*Fc*Fc,Yc=Fc*Fc*Fc;xc(G,Z,D(U,{brighter:function(t){return new G(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new G(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,n=isNaN(this.a)?t:t+this.a/500,e=isNaN(this.b)?t:t-this.b/200;return t=Dc*J(t),n=qc*J(n),e=Uc*J(e),new H(K(3.2404542*n-1.5371385*t-.4985314*e),K(-.969266*n+1.8760108*t+.041556*e),K(.0556434*n-.2040259*t+1.0572252*e),this.opacity)}})),xc(et,nt,D(U,{brighter:function(t){return new et(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new et(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return W(this).rgb()}}));var Bc=-.14861,Hc=1.78277,jc=-.29227,Xc=-.90649,Vc=1.97294,$c=Vc*Xc,Wc=Vc*Hc,Zc=Hc*jc-Xc*Bc;xc(it,rt,D(U,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new it(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new it(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*Rc,n=+this.l,e=isNaN(this.s)?0:this.s*n*(1-n),r=Math.cos(t),i=Math.sin(t);return new H(255*(n+e*(Bc*r+Hc*i)),255*(n+e*(jc*r+Xc*i)),255*(n+e*(Vc*r)),this.opacity)}}));var Gc,Qc,Jc,Kc,ts,ns,es=function(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],u=r>0?t[r-1]:2*i-o,a=ro&&(i=n.slice(o,i),a[u]?a[u]+=i:a[++u]=i),(e=e[0])===(r=r[0])?a[u]?a[u]+=r:a[++u]=r:(a[++u]=null,c.push({i:u,x:fs(e,r)})),o=ps.lastIndex;return ojs&&e.state<$s,e.state=Ws,e.timer.stop(),r&&e.on.call("interrupt",t,t.__data__,e.index,e.group),delete o[i]):u=!1;u&&delete t.__transition}},Qs=function(t,n){var e;return("number"==typeof n?fs:n instanceof O?os:(e=O(n))?(n=e,os):ds)(t,n)},Js=E.prototype.constructor,Ks=0,tf=E.prototype;Et.prototype=At.prototype={constructor:Et,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=sc(t));for(var r=this._groups,i=r.length,o=new Array(i),u=0;u=0&&(t=t.slice(0,n)),!t||"start"===t})}(n)?Tt:Nt;return function(){var u=o(this,t),a=u.on;a!==r&&(i=(r=a).copy()).on(n,e),u.on=i}}(e,t,n))},attr:function(t,n){var e=Ja(t),r="transform"===e?bs:Qs;return this.attrTween(t,"function"==typeof n?(e.local?function(t,n,e){var r,i,o;return function(){var u,a=e(this);if(null!=a)return(u=this.getAttributeNS(t.space,t.local))===a?null:u===r&&a===i?o:o=n(r=u,i=a);this.removeAttributeNS(t.space,t.local)}}:function(t,n,e){var r,i,o;return function(){var u,a=e(this);if(null!=a)return(u=this.getAttribute(t))===a?null:u===r&&a===i?o:o=n(r=u,i=a);this.removeAttribute(t)}})(e,r,St(this,"attr."+t,n)):null==n?(e.local?function(t){return function(){this.removeAttributeNS(t.space,t.local)}}:function(t){return function(){this.removeAttribute(t)}})(e):(e.local?function(t,n,e){var r,i;return function(){var o=this.getAttributeNS(t.space,t.local);return o===e?null:o===r?i:i=n(r=o,e)}}:function(t,n,e){var r,i;return function(){var o=this.getAttribute(t);return o===e?null:o===r?i:i=n(r=o,e)}})(e,r,n+""))},attrTween:function(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(null==n)return this.tween(e,null);if("function"!=typeof n)throw new Error;var r=Ja(t);return this.tween(e,(r.local?function(t,n){function e(){var e=this,r=n.apply(e,arguments);return r&&function(n){e.setAttributeNS(t.space,t.local,r(n))}}return e._value=n,e}:function(t,n){function e(){var e=this,r=n.apply(e,arguments);return r&&function(n){e.setAttribute(t,r(n))}}return e._value=n,e})(r,n))},style:function(t,n,e){var r="transform"==(t+="")?xs:Qs;return null==n?this.styleTween(t,function(t,n){var e,r,i;return function(){var o=_(this,t),u=(this.style.removeProperty(t),_(this,t));return o===u?null:o===e&&u===r?i:i=n(e=o,r=u)}}(t,r)).on("end.style."+t,function(t){return function(){this.style.removeProperty(t)}}(t)):this.styleTween(t,"function"==typeof n?function(t,n,e){var r,i,o;return function(){var u=_(this,t),a=e(this);return null==a&&(this.style.removeProperty(t),a=_(this,t)),u===a?null:u===r&&a===i?o:o=n(r=u,i=a)}}(t,r,St(this,"style."+t,n)):function(t,n,e){var r,i;return function(){var o=_(this,t);return o===e?null:o===r?i:i=n(r=o,e)}}(t,r,n+""),e)},styleTween:function(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==n)return this.tween(r,null);if("function"!=typeof n)throw new Error;return this.tween(r,function(t,n,e){function r(){var r=this,i=n.apply(r,arguments);return i&&function(n){r.style.setProperty(t,i(n),e)}}return r._value=n,r}(t,n,null==e?"":e))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var n=t(this);this.textContent=null==n?"":n}}(St(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},remove:function(){return this.on("end.remove",function(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}(this._id))},tween:function(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r,i=kt(this.node(),e).tween,o=0,u=i.length;o1e-6)if(Math.abs(f*a-c*s)>1e-6&&i){var h=e-o,p=r-u,d=a*a+c*c,v=h*h+p*p,g=Math.sqrt(d),_=Math.sqrt(l),y=i*Math.tan((Zf-Math.acos((d+l-v)/(2*g*_)))/2),m=y/_,x=y/g;Math.abs(m-1)>1e-6&&(this._+="L"+(t+m*s)+","+(n+m*f)),this._+="A"+i+","+i+",0,0,"+ +(f*h>s*p)+","+(this._x1=t+x*a)+","+(this._y1=n+x*c)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,r,i,o){t=+t,n=+n;var u=(e=+e)*Math.cos(r),a=e*Math.sin(r),c=t+u,s=n+a,f=1^o,l=o?r-i:i-r;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+c+","+s:(Math.abs(this._x1-c)>1e-6||Math.abs(this._y1-s)>1e-6)&&(this._+="L"+c+","+s),e&&(l<0&&(l=l%Gf+Gf),l>Qf?this._+="A"+e+","+e+",0,1,"+f+","+(t-u)+","+(n-a)+"A"+e+","+e+",0,1,"+f+","+(this._x1=c)+","+(this._y1=s):l>1e-6&&(this._+="A"+e+","+e+",0,"+ +(l>=Zf)+","+f+","+(this._x1=t+e*Math.cos(i))+","+(this._y1=n+e*Math.sin(i))))},rect:function(t,n,e,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +r+"h"+-e+"Z"},toString:function(){return this._}};Jt.prototype=Kt.prototype={constructor:Jt,has:function(t){return"$"+t in this},get:function(t){return this["$"+t]},set:function(t,n){return this["$"+t]=n,this},remove:function(t){var n="$"+t;return n in this&&delete this[n]},clear:function(){for(var t in this)"$"===t[0]&&delete this[t]},keys:function(){var t=[];for(var n in this)"$"===n[0]&&t.push(n.slice(1));return t},values:function(){var t=[];for(var n in this)"$"===n[0]&&t.push(this[n]);return t},entries:function(){var t=[];for(var n in this)"$"===n[0]&&t.push({key:n.slice(1),value:this[n]});return t},size:function(){var t=0;for(var n in this)"$"===n[0]&&++t;return t},empty:function(){for(var t in this)if("$"===t[0])return!1;return!0},each:function(t){for(var n in this)"$"===n[0]&&t(this[n],n.slice(1),this)}};var Jf=Kt.prototype;on.prototype=un.prototype={constructor:on,has:Jf.has,add:function(t){return t+="",this["$"+t]=t,this},remove:Jf.remove,clear:Jf.clear,values:Jf.keys,size:Jf.size,empty:Jf.empty,each:Jf.each};var Kf={},tl={},nl=34,el=10,rl=13,il=function(t){function n(t,n){function e(){if(s)return tl;if(f)return f=!1,Kf;var n,e,r=a;if(t.charCodeAt(r)===nl){for(;a++=u?s=!0:(e=t.charCodeAt(a++))===el?f=!0:e===rl&&(f=!0,t.charCodeAt(a)===el&&++a),t.slice(r+1,n-1).replace(/""/g,'"')}for(;af&&(f=r),il&&(l=i));for(ft||t>i||r>n||n>o))return this;var u,a,c=i-e,s=this._root;switch(a=(n<(r+o)/2)<<1|t<(e+i)/2){case 0:do{u=new Array(4),u[a]=s,s=u}while(c*=2,i=e+c,o=r+c,t>i||n>o);break;case 1:do{u=new Array(4),u[a]=s,s=u}while(c*=2,e=i-c,o=r+c,e>t||n>o);break;case 2:do{u=new Array(4),u[a]=s,s=u}while(c*=2,i=e+c,r=o-c,t>i||r>n);break;case 3:do{u=new Array(4),u[a]=s,s=u}while(c*=2,e=i-c,r=o-c,e>t||r>n)}this._root&&this._root.length&&(this._root=s)}return this._x0=e,this._y0=r,this._x1=i,this._y1=o,this},yl.data=function(){var t=[];return this.visit(function(n){if(!n.length)do{t.push(n.data)}while(n=n.next)}),t},yl.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},yl.find=function(t,n,e){var r,i,o,u,a,c,s,f=this._x0,l=this._y0,h=this._x1,p=this._y1,d=[],v=this._root;for(v&&d.push(new _l(v,f,l,h,p)),null==e?e=1/0:(f=t-e,l=n-e,h=t+e,p=n+e,e*=e);c=d.pop();)if(!(!(v=c.node)||(i=c.x0)>h||(o=c.y0)>p||(u=c.x1)=_)<<1|t>=g)&&(c=d[d.length-1],d[d.length-1]=d[d.length-1-s],d[d.length-1-s]=c)}else{var y=t-+this._x.call(null,v.data),m=n-+this._y.call(null,v.data),x=y*y+m*m;if(x=(a=(d+g)/2))?d=a:g=a,(f=u>=(c=(v+_)/2))?v=c:_=c,n=p,!(p=p[l=f<<1|s]))return this;if(!p.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(e=n,h=l)}for(;p.data!==t;)if(r=p,!(p=p.next))return this;return(i=p.next)&&delete p.next,r?(i?r.next=i:delete r.next,this):n?(i?n[l]=i:delete n[l],(p=n[0]||n[1]||n[2]||n[3])&&p===(n[3]||n[2]||n[1]||n[0])&&!p.length&&(e?e[h]=p:this._root=p),this):(this._root=i,this)},yl.removeAll=function(t){for(var n=0,e=t.length;n1?r[0]+r.slice(2):r,+t.slice(e+1)]},Ml=function(t){return(t=wl(Math.abs(t)))?t[1]:NaN},Tl=function(t,n){var e=wl(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")},Nl={"":function(t,n){t:for(var e,r=(t=t.toPrecision(n)).length,i=1,o=-1;i0&&(o=0)}return o>0?t.slice(0,o)+t.slice(e+1):t},"%":function(t,n){return(100*t).toFixed(n)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,n){return t.toExponential(n)},f:function(t,n){return t.toFixed(n)},g:function(t,n){return t.toPrecision(n)},o:function(t){return Math.round(t).toString(8)},p:function(t,n){return Tl(100*t,n)},r:Tl,s:function(t,n){var e=wl(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(ml=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,u=r.length;return o===u?r:o>u?r+new Array(o-u+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+wl(t,Math.max(0,n+o-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}},kl=/^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i;yn.prototype=mn.prototype,mn.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(null==this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(null==this.precision?"":"."+Math.max(0,0|this.precision))+this.type};var Sl,El=function(t){return t},Al=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"],Cl=function(t){function n(t){function n(t){var n,r,u,f=g,x=_;if("c"===v)x=y(t)+x,t="";else{var b=(t=+t)<0;if(t=y(Math.abs(t),d),b&&0==+t&&(b=!1),f=(b?"("===s?s:"-":"-"===s||"("===s?"":s)+f,x=x+("s"===v?Al[8+ml/3]:"")+(b&&"("===s?")":""),m)for(n=-1,r=t.length;++n(u=t.charCodeAt(n))||u>57){x=(46===u?i+t.slice(n+1):t.slice(n))+x,t=t.slice(0,n);break}}p&&!l&&(t=e(t,1/0));var w=f.length+t.length+x.length,M=w>1)+f+t+x+M.slice(w);break;default:t=M+f+t+x}return o(t)}var a=(t=yn(t)).fill,c=t.align,s=t.sign,f=t.symbol,l=t.zero,h=t.width,p=t.comma,d=t.precision,v=t.type,g="$"===f?r[0]:"#"===f&&/[boxX]/.test(v)?"0"+v.toLowerCase():"",_="$"===f?r[1]:/[%p]/.test(v)?u:"",y=Nl[v],m=!v||/[defgprs%]/.test(v);return d=null==d?v?6:12:/[gprs]/.test(v)?Math.max(1,Math.min(21,d)):Math.max(0,Math.min(20,d)),n.toString=function(){return t+""},n}var e=t.grouping&&t.thousands?function(t,n){return function(e,r){for(var i=e.length,o=[],u=0,a=t[0],c=0;i>0&&a>0&&(c+a+1>r&&(a=Math.max(1,r-c)),o.push(e.substring(i-=a,i+a)),!((c+=a+1)>r));)a=t[u=(u+1)%t.length];return o.reverse().join(n)}}(t.grouping,t.thousands):El,r=t.currency,i=t.decimal,o=t.numerals?function(t){return function(n){return n.replace(/[0-9]/g,function(n){return t[+n]})}}(t.numerals):El,u=t.percent||"%";return{format:n,formatPrefix:function(t,e){var r=n((t=yn(t),t.type="f",t)),i=3*Math.max(-8,Math.min(8,Math.floor(Ml(e)/3))),o=Math.pow(10,-i),u=Al[8+i/3];return function(t){return r(o*t)+u}}}};xn({decimal:".",thousands:",",grouping:[3],currency:["$",""]});var zl=function(t){return Math.max(0,-Ml(Math.abs(t)))},Pl=function(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Ml(n)/3)))-Ml(Math.abs(t)))},Rl=function(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,Ml(n)-Ml(t))+1},Ll=function(){return new bn};bn.prototype={constructor:bn,reset:function(){this.s=this.t=0},add:function(t){wn(hh,t,this.t),wn(this,hh.s,this.s),this.s?this.t+=hh.t:this.s=hh.t},valueOf:function(){return this.s}};var ql,Dl,Ul,Ol,Fl,Il,Yl,Bl,Hl,jl,Xl,Vl,$l,Wl,Zl,Gl,Ql,Jl,Kl,th,nh,eh,rh,ih,oh,uh,ah,ch,sh,fh,lh,hh=new bn,ph=1e-6,dh=Math.PI,vh=dh/2,gh=dh/4,_h=2*dh,yh=180/dh,mh=dh/180,xh=Math.abs,bh=Math.atan,wh=Math.atan2,Mh=Math.cos,Th=Math.ceil,Nh=Math.exp,kh=Math.log,Sh=Math.pow,Eh=Math.sin,Ah=Math.sign||function(t){return t>0?1:t<0?-1:0},Ch=Math.sqrt,zh=Math.tan,Ph={Feature:function(t,n){Sn(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++rph?Hl=90:Oh<-ph&&(Yl=-90),Zl[0]=Il,Zl[1]=Bl}},Ih={sphere:kn,point:Qn,lineStart:Kn,lineEnd:ee,polygonStart:function(){Ih.lineStart=re,Ih.lineEnd=ie},polygonEnd:function(){Ih.lineStart=Kn,Ih.lineEnd=ee}},Yh=function(t){return function(){return t}},Bh=function(t,n){function e(e,r){return e=t(e,r),n(e[0],e[1])}return t.invert&&n.invert&&(e.invert=function(e,r){return(e=n.invert(e,r))&&t.invert(e[0],e[1])}),e};ae.invert=ae;var Hh,jh,Xh,Vh,$h,Wh,Zh,Gh,Qh,Jh,Kh,tp=function(t){function n(n){return n=t(n[0]*mh,n[1]*mh),n[0]*=yh,n[1]*=yh,n}return t=ce(t[0]*mh,t[1]*mh,t.length>2?t[2]*mh:0),n.invert=function(n){return n=t.invert(n[0]*mh,n[1]*mh),n[0]*=yh,n[1]*=yh,n},n},np=function(){var t,n=[];return{point:function(n,e){t.push([n,e])},lineStart:function(){n.push(t=[])},lineEnd:kn,rejoin:function(){n.length>1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}},ep=function(t,n){return xh(t[0]-n[0])=0;--o)i.point((f=s[o])[0],f[1]);else r(h.x,h.p.x,-1,i);h=h.p}s=(h=h.o).z,p=!p}while(!h.v);i.lineEnd()}}},ip=Ll(),op=function(t,n){var e=n[0],r=n[1],i=[Eh(e),-Mh(e),0],o=0,u=0;ip.reset();for(var a=0,c=t.length;a=0?1:-1,T=M*w,N=T>dh,k=d*x;if(ip.add(wh(k*M*Eh(T),v*b+k*Mh(T))),o+=N?w+M*_h:w,N^h>=e^y>=e){var S=Un(qn(l),qn(_));In(S);var E=Un(i,S);In(E);var A=(N^w>=0?-1:1)*Tn(E[2]);(r>A||r===A&&(S[0]||S[1]))&&(u+=N^w>=0?1:-1)}}return(o<-ph||o0){for(y||(i.polygonStart(),y=!0),i.lineStart(),t=0;t1&&2&o&&u.push(u.pop().concat(u.shift())),p.push(u.filter(ge))}var h,p,d,v=n(i),g=np(),_=n(g),y=!1,m={point:o,lineStart:a,lineEnd:c,polygonStart:function(){m.point=s,m.lineStart=f,m.lineEnd=l,p=[],h=[]},polygonEnd:function(){m.point=o,m.lineStart=a,m.lineEnd=c,p=Fa(p);var t=op(h,r);p.length?(y||(i.polygonStart(),y=!0),rp(p,_e,t,e,i)):t&&(y||(i.polygonStart(),y=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),y&&(i.polygonEnd(),y=!1),p=h=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}};return m}},ap=up(function(){return!0},function(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(o,u){var a=o>0?dh:-dh,c=xh(o-e);xh(c-dh)0?vh:-vh),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(a,r),t.point(o,r),n=0):i!==a&&c>=dh&&(xh(e-i)ph?bh((Eh(n)*(o=Mh(r))*Eh(e)-Eh(r)*(i=Mh(n))*Eh(t))/(i*o*u)):(n+r)/2}(e,r,o,u),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(a,r),n=0),t.point(e=o,r=u),i=a},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}},function(t,n,e,r){var i;if(null==t)i=e*vh,r.point(-dh,i),r.point(0,i),r.point(dh,i),r.point(dh,0),r.point(dh,-i),r.point(0,-i),r.point(-dh,-i),r.point(-dh,0),r.point(-dh,i);else if(xh(t[0]-n[0])>ph){var o=t[0]i}function e(t,n,e){var r=[1,0,0],o=Un(qn(t),qn(n)),u=Dn(o,o),a=o[0],c=u-a*a;if(!c)return!e&&t;var s=i*u/c,f=-i*a/c,l=Un(r,o),h=Fn(r,s);On(h,Fn(o,f));var p=l,d=Dn(h,p),v=Dn(p,p),g=d*d-v*(Dn(h,h)-1);if(!(g<0)){var _=Ch(g),y=Fn(p,(-d-_)/v);if(On(y,h),y=Ln(y),!e)return y;var m,x=t[0],b=n[0],w=t[1],M=n[1];b0^y[1]<(xh(y[0]-x)dh^(x<=y[0]&&y[0]<=b)){var k=Fn(p,(-d+_)/v);return On(k,h),[y,Ln(k)]}}}function r(n,e){var r=u?t:dh-t,i=0;return n<-r?i|=1:n>r&&(i|=2),e<-r?i|=4:e>r&&(i|=8),i}var i=Mh(t),o=6*mh,u=i>0,a=xh(i)>ph;return up(n,function(t){var i,o,c,s,f;return{lineStart:function(){s=c=!1,f=1},point:function(l,h){var p,d=[l,h],v=n(l,h),g=u?v?0:r(l,h):v?r(l+(l<0?dh:-dh),h):0;if(!i&&(s=c=v)&&t.lineStart(),v!==c&&(!(p=e(i,d))||ep(i,p)||ep(d,p))&&(d[0]+=ph,d[1]+=ph,v=n(d[0],d[1])),v!==c)f=0,v?(t.lineStart(),p=e(d,i),t.point(p[0],p[1])):(p=e(i,d),t.point(p[0],p[1]),t.lineEnd()),i=p;else if(a&&i&&u^v){var _;g&o||!(_=e(d,i,!0))||(f=0,u?(t.lineStart(),t.point(_[0][0],_[0][1]),t.point(_[1][0],_[1][1]),t.lineEnd()):(t.point(_[1][0],_[1][1]),t.lineEnd(),t.lineStart(),t.point(_[0][0],_[0][1])))}!v||i&&ep(i,d)||t.point(d[0],d[1]),i=d,c=v,o=g},lineEnd:function(){c&&t.lineEnd(),i=null},clean:function(){return f|(s&&c)<<1}}},function(n,e,r,i){he(i,t,o,r,n,e)},u?[0,-t]:[-dh,t-dh])},sp=function(t,n,e,r,i,o){var u,a=t[0],c=t[1],s=0,f=1,l=n[0]-a,h=n[1]-c;if(u=e-a,l||!(u>0)){if(u/=l,l<0){if(u0){if(u>f)return;u>s&&(s=u)}if(u=i-a,l||!(u<0)){if(u/=l,l<0){if(u>f)return;u>s&&(s=u)}else if(l>0){if(u0)){if(u/=h,h<0){if(u0){if(u>f)return;u>s&&(s=u)}if(u=o-c,h||!(u<0)){if(u/=h,h<0){if(u>f)return;u>s&&(s=u)}else if(h>0){if(u0&&(t[0]=a+s*l,t[1]=c+s*h),f<1&&(n[0]=a+f*l,n[1]=c+f*h),!0}}}}},fp=1e9,lp=-fp,hp=Ll(),pp={sphere:kn,point:kn,lineStart:function(){pp.point=xe,pp.lineEnd=me},lineEnd:kn,polygonStart:kn,polygonEnd:kn},dp=function(t){return hp.reset(),Lh(t,pp),+hp},vp=[null,null],gp={type:"LineString",coordinates:vp},_p=function(t,n){return vp[0]=t,vp[1]=n,dp(gp)},yp={Feature:function(t,n){return we(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++rkp&&(kp=t),nSp&&(Sp=n)},lineStart:kn,lineEnd:kn,polygonStart:kn,polygonEnd:kn,result:function(){var t=[[Tp,Np],[kp,Sp]];return kp=Sp=-(Np=Tp=1/0),t}},Ap=0,Cp=0,zp=0,Pp=0,Rp=0,Lp=0,qp=0,Dp=0,Up=0,Op={point:qe,lineStart:De,lineEnd:Fe,polygonStart:function(){Op.lineStart=Ie,Op.lineEnd=Ye},polygonEnd:function(){Op.point=qe,Op.lineStart=De,Op.lineEnd=Fe},result:function(){var t=Up?[qp/Up,Dp/Up]:Lp?[Pp/Lp,Rp/Lp]:zp?[Ap/zp,Cp/zp]:[NaN,NaN];return Ap=Cp=zp=Pp=Rp=Lp=qp=Dp=Up=0,t}};je.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._context.moveTo(t,n),this._point=1;break;case 1:this._context.lineTo(t,n);break;default:this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,_h)}},result:kn};var Fp,Ip,Yp,Bp,Hp,jp=Ll(),Xp={point:kn,lineStart:function(){Xp.point=Xe},lineEnd:function(){Fp&&Ve(Ip,Yp),Xp.point=kn},polygonStart:function(){Fp=!0},polygonEnd:function(){Fp=null},result:function(){var t=+jp;return jp.reset(),t}};$e.prototype={_radius:4.5,_circle:We(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._string.push("M",t,",",n),this._point=1;break;case 1:this._string.push("L",t,",",n);break;default:null==this._circle&&(this._circle=We(this._radius)),this._string.push("M",t,",",n,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}};Ge.prototype={constructor:Ge,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var Vp=16,$p=Mh(30*mh),Wp=function(t,n){return+n?function(t,n){function e(r,i,o,u,a,c,s,f,l,h,p,d,v,g){var _=s-r,y=f-i,m=_*_+y*y;if(m>4*n&&v--){var x=u+h,b=a+p,w=c+d,M=Ch(x*x+b*b+w*w),T=Tn(w/=M),N=xh(xh(w)-1)n||xh((_*A+y*C)/m-.5)>.3||u*h+a*p+c*d<$p)&&(e(r,i,o,u,a,c,S,E,N,x/=M,b/=M,w,v,g),g.point(S,E),e(S,E,N,x,b,w,s,f,l,h,p,d,v,g))}}return function(n){function r(e,r){e=t(e,r),n.point(e[0],e[1])}function i(){_=NaN,w.point=o,n.lineStart()}function o(r,i){var o=qn([r,i]),u=t(r,i);e(_,y,g,m,x,b,_=u[0],y=u[1],g=r,m=o[0],x=o[1],b=o[2],Vp,n),n.point(_,y)}function u(){w.point=r,n.lineEnd()}function a(){i(),w.point=c,w.lineEnd=s}function c(t,n){o(f=t,n),l=_,h=y,p=m,d=x,v=b,w.point=o}function s(){e(_,y,g,m,x,b,l,h,f,p,d,v,Vp,n),w.lineEnd=u,u()}var f,l,h,p,d,v,g,_,y,m,x,b,w={point:r,lineStart:i,lineEnd:u,polygonStart:function(){n.polygonStart(),w.lineStart=a},polygonEnd:function(){n.polygonEnd(),w.lineStart=i}};return w}}(t,n):function(t){return Ze({point:function(n,e){n=t(n,e),this.stream.point(n[0],n[1])}})}(t)},Zp=Ze({point:function(t,n){this.stream.point(t*mh,n*mh)}}),Gp=function(){return ir(or).scale(155.424).center([0,33.6442])},Qp=function(){return Gp().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])},Jp=ur(function(t){return Ch(2/(1+t))});Jp.invert=ar(function(t){return 2*Tn(t/2)});var Kp=ur(function(t){return(t=Mn(t))&&t/Eh(t)});Kp.invert=ar(function(t){return t});cr.invert=function(t,n){return[t,2*bh(Nh(n))-vh]};hr.invert=hr;dr.invert=ar(bh);gr.invert=function(t,n){var e,r=n,i=25;do{var o=r*r,u=o*o;r-=e=(r*(1.007226+o*(.015085+u*(.028874*o-.044475-.005916*u)))-n)/(1.007226+o*(.045255+u*(.259866*o-.311325-.005916*11*u)))}while(xh(e)>ph&&--i>0);return[t/(.8707+(o=r*r)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),r]};_r.invert=ar(Tn);yr.invert=ar(function(t){return 2*bh(t)});mr.invert=function(t,n){return[-n,2*bh(Nh(t))-vh]};Er.prototype=Tr.prototype={constructor:Er,count:function(){return this.eachAfter(Mr)},each:function(t){var n,e,r,i,o=this,u=[o];do{for(n=u.reverse(),u=[];o=n.pop();)if(t(o),e=o.children)for(r=0,i=e.length;r=0;--e)i.push(n[e]);return this},sum:function(t){return this.eachAfter(function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e})},sort:function(t){return this.eachBefore(function(n){n.children&&n.children.sort(t)})},path:function(t){for(var n=this,e=function(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;for(t=e.pop(),n=r.pop();t===n;)i=t,t=e.pop(),n=r.pop();return i}(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},descendants:function(){var t=[];return this.each(function(n){t.push(n)}),t},leaves:function(){var t=[];return this.eachBefore(function(n){n.children||t.push(n)}),t},links:function(){var t=this,n=[];return t.each(function(e){e!==t&&n.push({source:e.parent,target:e})}),n},copy:function(){return Tr(this).eachBefore(kr)}};var td=Array.prototype.slice,nd=function(t){for(var n,e,r=0,i=(t=function(t){for(var n,e,r=t.length;r;)e=Math.random()*r--|0,n=t[r],t[r]=t[e],t[e]=n;return t}(td.call(t))).length,o=[];r1?n:1)},e}(sd),ld=function t(n){function e(t,e,r,i,o){if((u=t._squarify)&&u.ratio===n)for(var u,a,c,s,f,l=-1,h=u.length,p=t.value;++l1?n:1)},e}(sd),hd=function(t,n,e){return(n[0]-t[0])*(e[1]-t[1])-(n[1]-t[1])*(e[0]-t[0])},pd=[].slice,dd={};ei.prototype=ui.prototype={constructor:ei,defer:function(t){if("function"!=typeof t)throw new Error("invalid callback");if(this._call)throw new Error("defer after await");if(null!=this._error)return this;var n=pd.call(arguments,1);return n.push(t),++this._waiting,this._tasks.push(n),ri(this),this},abort:function(){return null==this._error&&ii(this,new Error("abort")),this},await:function(t){if("function"!=typeof t)throw new Error("invalid callback");if(this._call)throw new Error("multiple await");return this._call=function(n,e){t.apply(null,[n].concat(e))},oi(this),this},awaitAll:function(t){if("function"!=typeof t)throw new Error("invalid callback");if(this._call)throw new Error("multiple await");return this._call=t,oi(this),this}};var vd=function(){return Math.random()},gd=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,1===arguments.length?(e=t,t=0):e-=t,function(){return n()*e+t}}return e.source=t,e}(vd),_d=function t(n){function e(t,e){var r,i;return t=null==t?0:+t,e=null==e?1:+e,function(){var o;if(null!=r)o=r,r=null;else do{r=2*n()-1,o=2*n()-1,i=r*r+o*o}while(!i||i>1);return t+e*o*Math.sqrt(-2*Math.log(i)/i)}}return e.source=t,e}(vd),yd=function t(n){function e(){var t=_d.source(n).apply(this,arguments);return function(){return Math.exp(t())}}return e.source=t,e}(vd),md=function t(n){function e(t){return function(){for(var e=0,r=0;r=200&&e<300||304===e){if(o)try{n=o.call(r,f)}catch(t){return void c.call("error",r,t)}else n=f;c.call("load",r,n)}else c.call("error",r,t)}var r,i,o,u,c=a("beforesend","progress","load","error"),s=Kt(),f=new XMLHttpRequest,l=null,h=null,p=0;if("undefined"==typeof XDomainRequest||"withCredentials"in f||!/^(http(s)?:)?\/\//.test(t)||(f=new XDomainRequest),"onload"in f?f.onload=f.onerror=f.ontimeout=e:f.onreadystatechange=function(t){f.readyState>3&&e(t)},f.onprogress=function(t){c.call("progress",r,t)},r={header:function(t,n){return t=(t+"").toLowerCase(),arguments.length<2?s.get(t):(null==n?s.remove(t):s.set(t,n+""),r)},mimeType:function(t){return arguments.length?(i=null==t?null:t+"",r):i},responseType:function(t){return arguments.length?(u=t,r):u},timeout:function(t){return arguments.length?(p=+t,r):p},user:function(t){return arguments.length<1?l:(l=null==t?null:t+"",r)},password:function(t){return arguments.length<1?h:(h=null==t?null:t+"",r)},response:function(t){return o=t,r},get:function(t,n){return r.send("GET",t,n)},post:function(t,n){return r.send("POST",t,n)},send:function(n,e,o){return f.open(n,t,!0,l,h),null==i||s.has("accept")||s.set("accept",i+",*/*"),f.setRequestHeader&&s.each(function(t,n){f.setRequestHeader(n,t)}),null!=i&&f.overrideMimeType&&f.overrideMimeType(i),null!=u&&(f.responseType=u),p>0&&(f.timeout=p),null==o&&"function"==typeof e&&(o=e,e=null),null!=o&&1===o.length&&(o=function(t){return function(n,e){t(null==n?e:null)}}(o)),null!=o&&r.on("error",o).on("load",function(t){o(null,t)}),c.call("beforesend",r,f),f.send(null==e?null:e),r},abort:function(){return f.abort(),r},on:function(){var t=c.on.apply(c,arguments);return t===c?r:t}},null!=n){if("function"!=typeof n)throw new Error("invalid callback: "+n);return r.get(n)}return r},Md=function(t,n){return function(e,r){var i=wd(e).mimeType(t).response(n);if(null!=r){if("function"!=typeof r)throw new Error("invalid callback: "+r);return i.get(r)}return i}},Td=Md("text/html",function(t){return document.createRange().createContextualFragment(t.responseText)}),Nd=Md("application/json",function(t){return JSON.parse(t.responseText)}),kd=Md("text/plain",function(t){return t.responseText}),Sd=Md("application/xml",function(t){var n=t.responseXML;if(!n)throw new Error("parse error");return n}),Ed=function(t,n){return function(e,r,i){arguments.length<3&&(i=r,r=null);var o=wd(e).mimeType(t);return o.row=function(t){return arguments.length?o.response(function(t,n){return function(e){return t(e.responseText,n)}}(n,r=t)):r},o.row(r),i?o.get(i):o}},Ad=Ed("text/csv",ul),Cd=Ed("text/tab-separated-values",ll),zd=Array.prototype,Pd=zd.map,Rd=zd.slice,Ld={name:"implicit"},qd=function(t){return function(){return t}},Dd=function(t){return+t},Ud=[0,1],Od=function(n,e,i){var o,u=n[0],a=n[n.length-1],c=r(u,a,null==e?10:e);switch((i=yn(null==i?",f":i)).type){case"s":var s=Math.max(Math.abs(u),Math.abs(a));return null!=i.precision||isNaN(o=Pl(c,s))||(i.precision=o),t.formatPrefix(i,s);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(o=Rl(c,Math.max(Math.abs(u),Math.abs(a))))||(i.precision=o-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(o=zl(c))||(i.precision=o-2*("%"===i.type))}return t.format(i)},Fd=function(t,n){var e,r=0,i=(t=t.slice()).length-1,o=t[r],u=t[i];return u0?t>1?Si(function(n){n.setTime(Math.floor(n/t)*t)},function(n,e){n.setTime(+n+e*t)},function(n,e){return(e-n)/t}):Bd:null};var Hd=Bd.range,jd=6e4,Xd=6048e5,Vd=Si(function(t){t.setTime(1e3*Math.floor(t/1e3))},function(t,n){t.setTime(+t+1e3*n)},function(t,n){return(n-t)/1e3},function(t){return t.getUTCSeconds()}),$d=Vd.range,Wd=Si(function(t){t.setTime(Math.floor(t/jd)*jd)},function(t,n){t.setTime(+t+n*jd)},function(t,n){return(n-t)/jd},function(t){return t.getMinutes()}),Zd=Wd.range,Gd=Si(function(t){var n=t.getTimezoneOffset()*jd%36e5;n<0&&(n+=36e5),t.setTime(36e5*Math.floor((+t-n)/36e5)+n)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getHours()}),Qd=Gd.range,Jd=Si(function(t){t.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*jd)/864e5},function(t){return t.getDate()-1}),Kd=Jd.range,tv=Ei(0),nv=Ei(1),ev=Ei(2),rv=Ei(3),iv=Ei(4),ov=Ei(5),uv=Ei(6),av=tv.range,cv=nv.range,sv=ev.range,fv=rv.range,lv=iv.range,hv=ov.range,pv=uv.range,dv=Si(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,n){t.setMonth(t.getMonth()+n)},function(t,n){return n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())},function(t){return t.getMonth()}),vv=dv.range,gv=Si(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,n){t.setFullYear(t.getFullYear()+n)},function(t,n){return n.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});gv.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Si(function(n){n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)},function(n,e){n.setFullYear(n.getFullYear()+e*t)}):null};var _v=gv.range,yv=Si(function(t){t.setUTCSeconds(0,0)},function(t,n){t.setTime(+t+n*jd)},function(t,n){return(n-t)/jd},function(t){return t.getUTCMinutes()}),mv=yv.range,xv=Si(function(t){t.setUTCMinutes(0,0,0)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getUTCHours()}),bv=xv.range,wv=Si(function(t){t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+n)},function(t,n){return(n-t)/864e5},function(t){return t.getUTCDate()-1}),Mv=wv.range,Tv=Ai(0),Nv=Ai(1),kv=Ai(2),Sv=Ai(3),Ev=Ai(4),Av=Ai(5),Cv=Ai(6),zv=Tv.range,Pv=Nv.range,Rv=kv.range,Lv=Sv.range,qv=Ev.range,Dv=Av.range,Uv=Cv.range,Ov=Si(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCMonth(t.getUTCMonth()+n)},function(t,n){return n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()}),Fv=Ov.range,Iv=Si(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n)},function(t,n){return n.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});Iv.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Si(function(n){n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},function(n,e){n.setUTCFullYear(n.getUTCFullYear()+e*t)}):null};var Yv,Bv=Iv.range,Hv={"-":"",_:" ",0:"0"},jv=/^\s*\d+/,Xv=/^%/,Vv=/[\\^$*+?|[\]().{}]/g;Yo({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var $v=Date.prototype.toISOString?function(t){return t.toISOString()}:t.utcFormat("%Y-%m-%dT%H:%M:%S.%LZ"),Wv=+new Date("2000-01-01T00:00:00.000Z")?function(t){var n=new Date(t);return isNaN(n)?null:n}:t.utcParse("%Y-%m-%dT%H:%M:%S.%LZ"),Zv=1e3,Gv=60*Zv,Qv=60*Gv,Jv=24*Qv,Kv=7*Jv,tg=30*Jv,ng=365*Jv,eg=function(t){return t.match(/.{6}/g).map(function(t){return"#"+t})},rg=eg("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),ig=eg("393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6"),og=eg("3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9"),ug=eg("1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5"),ag=As(rt(300,.5,0),rt(-240,.5,1)),cg=As(rt(-100,.75,.35),rt(80,1.5,.8)),sg=As(rt(260,.75,.35),rt(80,1.5,.8)),fg=rt(),lg=Xo(eg("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),hg=Xo(eg("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),pg=Xo(eg("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),dg=Xo(eg("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")),vg=function(t){return function(){return t}},gg=Math.abs,_g=Math.atan2,yg=Math.cos,mg=Math.max,xg=Math.min,bg=Math.sin,wg=Math.sqrt,Mg=1e-12,Tg=Math.PI,Ng=Tg/2,kg=2*Tg;tu.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}};var Sg=function(t){return new tu(t)},Eg=function(){function t(t){var a,c,s,f=t.length,l=!1;for(null==i&&(u=o(s=Vt())),a=0;a<=f;++a)!(a=f;--l)s.point(g[l],_[l]);s.lineEnd(),s.areaEnd()}v&&(g[n]=+e(h,n,t),_[n]=+i(h,n,t),s.point(r?+r(h,n,t):g[n],o?+o(h,n,t):_[n]))}if(p)return s=null,p+""||null}function n(){return Eg().defined(u).curve(c).context(a)}var e=nu,r=null,i=vg(0),o=eu,u=vg(!0),a=null,c=Sg,s=null;return t.x=function(n){return arguments.length?(e="function"==typeof n?n:vg(+n),r=null,t):e},t.x0=function(n){return arguments.length?(e="function"==typeof n?n:vg(+n),t):e},t.x1=function(n){return arguments.length?(r=null==n?null:"function"==typeof n?n:vg(+n),t):r},t.y=function(n){return arguments.length?(i="function"==typeof n?n:vg(+n),o=null,t):i},t.y0=function(n){return arguments.length?(i="function"==typeof n?n:vg(+n),t):i},t.y1=function(n){return arguments.length?(o=null==n?null:"function"==typeof n?n:vg(+n),t):o},t.lineX0=t.lineY0=function(){return n().x(e).y(i)},t.lineY1=function(){return n().x(e).y(o)},t.lineX1=function(){return n().x(r).y(i)},t.defined=function(n){return arguments.length?(u="function"==typeof n?n:vg(!!n),t):u},t.curve=function(n){return arguments.length?(c=n,null!=a&&(s=c(a)),t):c},t.context=function(n){return arguments.length?(null==n?a=s=null:s=c(a=n),t):a},t},Cg=function(t,n){return nt?1:n>=t?0:NaN},zg=function(t){return t},Pg=iu(Sg);ru.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,n){this._curve.point(n*Math.sin(t),n*-Math.cos(t))}};var Rg=function(){return ou(Eg().curve(Pg))},Lg=function(){var t=Ag().curve(Pg),n=t.curve,e=t.lineX0,r=t.lineX1,i=t.lineY0,o=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return ou(e())},delete t.lineX0,t.lineEndAngle=function(){return ou(r())},delete t.lineX1,t.lineInnerRadius=function(){return ou(i())},delete t.lineY0,t.lineOuterRadius=function(){return ou(o())},delete t.lineY1,t.curve=function(t){return arguments.length?n(iu(t)):n()._curve},t},qg=function(t,n){return[(n=+n)*Math.cos(t-=Math.PI/2),n*Math.sin(t)]},Dg=Array.prototype.slice,Ug={draw:function(t,n){var e=Math.sqrt(n/Tg);t.moveTo(e,0),t.arc(0,0,e,0,kg)}},Og={draw:function(t,n){var e=Math.sqrt(n/5)/2;t.moveTo(-3*e,-e),t.lineTo(-e,-e),t.lineTo(-e,-3*e),t.lineTo(e,-3*e),t.lineTo(e,-e),t.lineTo(3*e,-e),t.lineTo(3*e,e),t.lineTo(e,e),t.lineTo(e,3*e),t.lineTo(-e,3*e),t.lineTo(-e,e),t.lineTo(-3*e,e),t.closePath()}},Fg=Math.sqrt(1/3),Ig=2*Fg,Yg={draw:function(t,n){var e=Math.sqrt(n/Ig),r=e*Fg;t.moveTo(0,-e),t.lineTo(r,0),t.lineTo(0,e),t.lineTo(-r,0),t.closePath()}},Bg=Math.sin(Tg/10)/Math.sin(7*Tg/10),Hg=Math.sin(kg/10)*Bg,jg=-Math.cos(kg/10)*Bg,Xg={draw:function(t,n){var e=Math.sqrt(.8908130915292852*n),r=Hg*e,i=jg*e;t.moveTo(0,-e),t.lineTo(r,i);for(var o=1;o<5;++o){var u=kg*o/5,a=Math.cos(u),c=Math.sin(u);t.lineTo(c*e,-a*e),t.lineTo(a*r-c*i,c*r+a*i)}t.closePath()}},Vg={draw:function(t,n){var e=Math.sqrt(n),r=-e/2;t.rect(r,r,e,e)}},$g=Math.sqrt(3),Wg={draw:function(t,n){var e=-Math.sqrt(n/(3*$g));t.moveTo(0,2*e),t.lineTo(-$g*e,-e),t.lineTo($g*e,-e),t.closePath()}},Zg=-.5,Gg=Math.sqrt(3)/2,Qg=1/Math.sqrt(12),Jg=3*(Qg/2+1),Kg={draw:function(t,n){var e=Math.sqrt(n/Jg),r=e/2,i=e*Qg,o=r,u=e*Qg+e,a=-o,c=u;t.moveTo(r,i),t.lineTo(o,u),t.lineTo(a,c),t.lineTo(Zg*r-Gg*i,Gg*r+Zg*i),t.lineTo(Zg*o-Gg*u,Gg*o+Zg*u),t.lineTo(Zg*a-Gg*c,Gg*a+Zg*c),t.lineTo(Zg*r+Gg*i,Zg*i-Gg*r),t.lineTo(Zg*o+Gg*u,Zg*u-Gg*o),t.lineTo(Zg*a+Gg*c,Zg*c-Gg*a),t.closePath()}},t_=[Ug,Og,Yg,Vg,Xg,Wg,Kg],n_=function(){};pu.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:hu(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:hu(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}};du.prototype={areaStart:n_,areaEnd:n_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x2=t,this._y2=n;break;case 1:this._point=2,this._x3=t,this._y3=n;break;case 2:this._point=3,this._x4=t,this._y4=n,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+n)/6);break;default:hu(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}};vu.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var e=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+n)/6;this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 3:this._point=4;default:hu(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}};gu.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,n=this._y,e=t.length-1;if(e>0)for(var r,i=t[0],o=n[0],u=t[e]-i,a=n[e]-o,c=-1;++c<=e;)r=c/e,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*u),this._beta*n[c]+(1-this._beta)*(o+r*a));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var e_=function t(n){function e(t){return 1===n?new pu(t):new gu(t,n)}return e.beta=function(n){return t(+n)},e}(.85);yu.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:_u(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2,this._x1=t,this._y1=n;break;case 2:this._point=3;default:_u(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var r_=function t(n){function e(t){return new yu(t,n)}return e.tension=function(n){return t(+n)},e}(0);mu.prototype={areaStart:n_,areaEnd:n_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:_u(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var i_=function t(n){function e(t){return new mu(t,n)}return e.tension=function(n){return t(+n)},e}(0);xu.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:_u(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var o_=function t(n){function e(t){return new xu(t,n)}return e.tension=function(n){return t(+n)},e}(0);wu.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3;default:bu(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var u_=function t(n){function e(t){return n?new wu(t,n):new yu(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);Mu.prototype={areaStart:n_,areaEnd:n_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:bu(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var a_=function t(n){function e(t){return n?new Mu(t,n):new mu(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);Tu.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:bu(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var c_=function t(n){function e(t){return n?new Tu(t,n):new xu(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);Nu.prototype={areaStart:n_,areaEnd:n_,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,n){t=+t,n=+n,this._point?this._context.lineTo(t,n):(this._point=1,this._context.moveTo(t,n))}};Cu.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Au(this,this._t0,Eu(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){var e=NaN;if(t=+t,n=+n,t!==this._x1||n!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,Au(this,Eu(this,e=Su(this,t,n)),e);break;default:Au(this,this._t0,e=Su(this,t,n))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n,this._t0=e}}},(zu.prototype=Object.create(Cu.prototype)).point=function(t,n){Cu.prototype.point.call(this,n,t)},Pu.prototype={moveTo:function(t,n){this._context.moveTo(n,t)},closePath:function(){this._context.closePath()},lineTo:function(t,n){this._context.lineTo(n,t)},bezierCurveTo:function(t,n,e,r,i,o){this._context.bezierCurveTo(n,t,r,e,o,i)}},Ru.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,n=this._y,e=t.length;if(e)if(this._line?this._context.lineTo(t[0],n[0]):this._context.moveTo(t[0],n[0]),2===e)this._context.lineTo(t[1],n[1]);else for(var r=Lu(t),i=Lu(n),o=0,u=1;u=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,n),this._context.lineTo(t,n);else{var e=this._x*(1-this._t)+t*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,n)}}this._x=t,this._y=n}};var s_=function(t,n){if((i=t.length)>1)for(var e,r,i,o=1,u=t[n[0]],a=u.length;o=0;)e[n]=n;return e},l_=function(t){var n=t.map(Uu);return f_(t).sort(function(t,e){return n[t]-n[e]})},h_=function(t){return function(){return t}};Iu.prototype={constructor:Iu,insert:function(t,n){var e,r,i;if(t){if(n.P=t,n.N=t.N,t.N&&(t.N.P=n),t.N=n,t.R){for(t=t.R;t.L;)t=t.L;t.L=n}else t.R=n;e=t}else this._?(t=ju(this._),n.P=null,n.N=t,t.P=t.L=n,e=t):(n.P=n.N=null,this._=n,e=null);for(n.L=n.R=null,n.U=e,n.C=!0,t=n;e&&e.C;)e===(r=e.U).L?(i=r.R)&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.R&&(Bu(this,e),e=(t=e).U),e.C=!1,r.C=!0,Hu(this,r)):(i=r.L)&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.L&&(Hu(this,e),e=(t=e).U),e.C=!1,r.C=!0,Bu(this,r)),e=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var n,e,r,i=t.U,o=t.L,u=t.R;if(e=o?u?ju(u):o:u,i?i.L===t?i.L=e:i.R=e:this._=e,o&&u?(r=e.C,e.C=t.C,e.L=o,o.U=e,e!==u?(i=e.U,e.U=t.U,t=e.R,i.L=t,e.R=u,u.U=e):(e.U=i,i=e,t=e.R)):(r=t.C,t=e),t&&(t.U=i),!r)if(t&&t.C)t.C=!1;else{do{if(t===this._)break;if(t===i.L){if((n=i.R).C&&(n.C=!1,i.C=!0,Bu(this,i),n=i.R),n.L&&n.L.C||n.R&&n.R.C){n.R&&n.R.C||(n.L.C=!1,n.C=!0,Hu(this,n),n=i.R),n.C=i.C,i.C=n.R.C=!1,Bu(this,i),t=this._;break}}else if((n=i.L).C&&(n.C=!1,i.C=!0,Hu(this,i),n=i.L),n.L&&n.L.C||n.R&&n.R.C){n.L&&n.L.C||(n.R.C=!1,n.C=!0,Bu(this,n),n=i.L),n.C=i.C,i.C=n.L.C=!1,Hu(this,i),t=this._;break}n.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}};var p_,d_,v_,g_,__,y_=[],m_=[],x_=1e-6,b_=1e-12;ca.prototype={constructor:ca,polygons:function(){var t=this.edges;return this.cells.map(function(n){var e=n.halfedges.map(function(e){return Qu(n,t[e])});return e.data=n.site.data,e})},triangles:function(){var t=[],n=this.edges;return this.cells.forEach(function(e,r){if(o=(i=e.halfedges).length)for(var i,o,u,a=e.site,c=-1,s=n[i[o-1]],f=s.left===a?s.right:s.left;++c=a)return null;var c=t-i.site[0],s=n-i.site[1],f=c*c+s*s;do{i=o.cells[r=u],u=null,i.halfedges.forEach(function(e){var r=o.edges[e],a=r.left;if(a!==i.site&&a||(a=r.right)){var c=t-a[0],s=n-a[1],l=c*c+s*s;lt?1:n>=t?0:NaN},t.deviation=Na,t.extent=ka,t.histogram=function(){function t(t){var o,u,a=t.length,c=new Array(a);for(o=0;ol;)h.pop(),--p;var d,v=new Array(p+1);for(o=0;o<=p;++o)(d=v[o]=[]).x0=o>0?h[o-1]:f,d.x1=o=e)for(r=e;++or&&(r=e)}else for(;++o=e)for(r=e;++or&&(r=e);return r},t.mean=function(t,n){var e,r=t.length,i=r,o=-1,u=0;if(null==n)for(;++o=o.length)return null!=e&&n.sort(e),null!=r?r(n):n;for(var c,s,f,l=-1,h=n.length,p=o[i++],d=Kt(),v=u();++lo.length)return t;var i,a=u[e-1];return null!=r&&e>=o.length?i=t.entries():(i=[],t.each(function(t,r){i.push({key:r,values:n(t,e)})})),null!=a?i.sort(function(t,n){return a(t.key,n.key)}):i}var e,r,i,o=[],u=[];return i={object:function(n){return t(n,0,tn,nn)},map:function(n){return t(n,0,en,rn)},entries:function(e){return n(t(e,0,en,rn),0)},key:function(t){return o.push(t),i},sortKeys:function(t){return u[o.length-1]=t,i},sortValues:function(t){return e=t,i},rollup:function(t){return r=t,i}}},t.set=un,t.map=Kt,t.keys=function(t){var n=[];for(var e in t)n.push(e);return n},t.values=function(t){var n=[];for(var e in t)n.push(t[e]);return n},t.entries=function(t){var n=[];for(var e in t)n.push({key:e,value:t[e]});return n},t.color=O,t.rgb=B,t.hsl=X,t.lab=Z,t.hcl=nt,t.cubehelix=rt,t.dispatch=a,t.drag=function(){function n(t){t.on("mousedown.drag",e).filter(y).on("touchstart.drag",o).on("touchmove.drag",u).on("touchend.drag touchcancel.drag",c).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function e(){if(!p&&v.apply(this,arguments)){var n=s("mouse",g.apply(this,arguments),cc,this,arguments);n&&(vc(t.event.view).on("mousemove.drag",r,!0).on("mouseup.drag",i,!0),yc(t.event.view),A(),h=!1,f=t.event.clientX,l=t.event.clientY,n("start"))}}function r(){if(_c(),!h){var n=t.event.clientX-f,e=t.event.clientY-l;h=n*n+e*e>w}m.mouse("drag")}function i(){vc(t.event.view).on("mousemove.drag mouseup.drag",null),C(t.event.view,h),_c(),m.mouse("end")}function o(){if(v.apply(this,arguments)){var n,e,r=t.event.changedTouches,i=g.apply(this,arguments),o=r.length;for(n=0;nc+p||is+p||or.index){var d=c-a.x-a.vx,v=s-a.y-a.vy,g=d*d+v*v;gt.r&&(t.r=t[n].r)}function r(){if(i){var n,e,r=i.length;for(o=new Array(r),n=0;n=f)){(t.data!==o||t.next)&&(0===i&&(i=gl(),p+=i*i),0===c&&(c=gl(),p+=c*c),p1?(null==n?h.remove(t):h.set(t,i(n)),o):h.get(t)},find:function(n,e,r){var i,o,u,a,c,s=0,f=t.length;for(null==r?r=1/0:r*=r,s=0;s1?(d.on(t,n),o):d.on(t)}}},t.forceX=function(t){function n(t){for(var n,e=0,u=r.length;eWn(r[0],r[1])&&(r[1]=i[1]),Wn(i[0],r[1])>Wn(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(u=-1/0,n=0,r=o[e=o.length-1];n<=e;r=i,++n)i=o[n],(a=Wn(r[1],i[0]))>u&&(u=a,Il=i[0],Bl=r[1])}return Wl=Zl=null,Il===1/0||Yl===1/0?[[NaN,NaN],[NaN,NaN]]:[[Il,Yl],[Bl,Hl]]},t.geoCentroid=function(t){Gl=Ql=Jl=Kl=th=nh=eh=rh=ih=oh=uh=0,Lh(t,Ih);var n=ih,e=oh,r=uh,i=n*n+e*e+r*r;return i<1e-12&&(n=nh,e=eh,r=rh,Ql=.12&&i<.234&&r>=-.425&&r<-.214?s:i>=.166&&i<.234&&r>=-.214&&r<-.115?f:c).invert(t)},t.stream=function(t){return e&&r===t?e:e=function(t){var n=t.length;return{point:function(e,r){for(var i=-1;++i2?t[2]+90:90]):(t=e(),[t[0],t[1],t[2]-90])},e([0,0,90]).scale(159.155)},t.geoTransverseMercatorRaw=mr,t.geoRotation=tp,t.geoStream=Lh,t.geoTransform=function(t){return{stream:Ze(t)}},t.cluster=function(){function t(t){var o,u=0;t.eachAfter(function(t){var e=t.children;e?(t.x=function(t){return t.reduce(br,0)/t.length}(e),t.y=function(t){return 1+t.reduce(wr,0)}(e)):(t.x=o?u+=n(t,o):0,t.y=0,o=t)});var a=function(t){for(var n;n=t.children;)t=n[0];return t}(t),c=function(t){for(var n;n=t.children;)t=n[n.length-1];return t}(t),s=a.x-n(a,c)/2,f=c.x+n(c,a)/2;return t.eachAfter(i?function(n){n.x=(n.x-t.x)*e,n.y=(t.y-n.y)*r}:function(n){n.x=(n.x-s)/(f-s)*e,n.y=(1-(t.y?n.y/t.y:1))*r})}var n=xr,e=1,r=1,i=!1;return t.separation=function(e){return arguments.length?(n=e,t):n},t.size=function(n){return arguments.length?(i=!1,e=+n[0],r=+n[1],t):i?null:[e,r]},t.nodeSize=function(n){return arguments.length?(i=!0,e=+n[0],r=+n[1],t):i?[e,r]:null},t},t.hierarchy=Tr,t.pack=function(){function t(t){return t.x=e/2,t.y=r/2,n?t.eachBefore(Br(n)).eachAfter(Hr(i,.5)).eachBefore(jr(1)):t.eachBefore(Br(Yr)).eachAfter(Hr(Ir,1)).eachAfter(Hr(i,t.r/Math.min(e,r))).eachBefore(jr(Math.min(e,r)/(2*t.r))),t}var n=null,e=1,r=1,i=Ir;return t.radius=function(e){return arguments.length?(n=null==e?null:Fr(e),t):n},t.size=function(n){return arguments.length?(e=+n[0],r=+n[1],t):[e,r]},t.padding=function(n){return arguments.length?(i="function"==typeof n?n:ed(+n),t):i},t},t.packSiblings=function(t){return Or(t),t},t.packEnclose=nd,t.partition=function(){function t(t){var o=t.height+1;return t.x0=t.y0=r,t.x1=n,t.y1=e/o,t.eachBefore(function(t,n){return function(e){e.children&&id(e,e.x0,t*(e.depth+1)/n,e.x1,t*(e.depth+2)/n);var i=e.x0,o=e.y0,u=e.x1-r,a=e.y1-r;u0)throw new Error("cycle");return o}var n=Xr,e=Vr;return t.id=function(e){return arguments.length?(n=Fr(e),t):n},t.parentId=function(n){return arguments.length?(e=Fr(n),t):e},t},t.tree=function(){function t(t){var c=function(t){for(var n,e,r,i,o,u=new Jr(t,0),a=[u];n=a.pop();)if(r=n._.children)for(n.children=new Array(o=r.length),i=o-1;i>=0;--i)a.push(e=n.children[i]=new Jr(r[i],i)),e.parent=n;return(u.parent=new Jr(null,0)).children=[u],u}(t);if(c.eachAfter(n),c.parent.m=-c.z,c.eachBefore(e),a)t.eachBefore(r);else{var s=t,f=t,l=t;t.eachBefore(function(t){t.xf.x&&(f=t),t.depth>l.depth&&(l=t)});var h=s===f?1:i(s,f)/2,p=h-s.x,d=o/(f.x+h+p),v=u/(l.depth||1);t.eachBefore(function(t){t.x=(t.x+p)*d,t.y=t.depth*v})}return t}function n(t){var n=t.children,e=t.parent.children,r=t.i?e[t.i-1]:null;if(n){(function(t){for(var n,e=0,r=0,i=t.children,o=i.length;--o>=0;)(n=i[o]).z+=e,n.m+=e,e+=n.s+(r+=n.c)})(t);var o=(n[0].z+n[n.length-1].z)/2;r?(t.z=r.z+i(t._,r._),t.m=t.z-o):t.z=o}else r&&(t.z=r.z+i(t._,r._));t.parent.A=function(t,n,e){if(n){for(var r,o=t,u=t,a=n,c=o.parent.children[0],s=o.m,f=u.m,l=a.m,h=c.m;a=Zr(a),o=Wr(o),a&&o;)c=Wr(c),(u=Zr(u)).a=t,(r=a.z+l-o.z-s+i(a._,o._))>0&&(Gr(Qr(a,t,e),t,r),s+=r,f+=r),l+=a.m,s+=o.m,h+=c.m,f+=u.m;a&&!Zr(u)&&(u.t=a,u.m+=l-f),o&&!Wr(c)&&(c.t=o,c.m+=s-h,e=t)}return e}(t,r,t.parent.A||e[0])}function e(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function r(t){t.x*=o,t.y=t.depth*u}var i=$r,o=1,u=1,a=null;return t.separation=function(n){return arguments.length?(i=n,t):i},t.size=function(n){return arguments.length?(a=!1,o=+n[0],u=+n[1],t):a?null:[o,u]},t.nodeSize=function(n){return arguments.length?(a=!0,o=+n[0],u=+n[1],t):a?[o,u]:null},t},t.treemap=function(){function t(t){return t.x0=t.y0=0,t.x1=i,t.y1=o,t.eachBefore(n),u=[0],r&&t.eachBefore(rd),t}function n(t){var n=u[t.depth],r=t.x0+n,i=t.y0+n,o=t.x1-n,h=t.y1-n;o=n-1){var s=c[t];return s.x0=r,s.y0=i,s.x1=u,void(s.y1=a)}for(var l=f[t],h=e/2+l,p=t+1,d=n-1;p>>1;f[v]a-i){var y=(r*_+u*g)/e;o(t,p,g,r,i,y,a),o(p,n,_,y,i,u,a)}else{var m=(i*_+a*g)/e;o(t,p,g,r,i,u,m),o(p,n,_,r,m,u,a)}}var u,a,c=t.children,s=c.length,f=new Array(s+1);for(f[0]=a=u=0;u=0;--n)s.push(t[r[o[n]][2]]);for(n=+a;na!=s>a&&u<(c-e)*(a-r)/(s-r)+e&&(f=!f),c=e,s=r;return f},t.polygonLength=function(t){for(var n,e,r=-1,i=t.length,o=t[i-1],u=o[0],a=o[1],c=0;++r1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return fg.h=360*t-100,fg.s=1.5-1.5*n,fg.l=.8-.9*n,fg+""},t.interpolateWarm=cg,t.interpolateCool=sg,t.interpolateViridis=lg,t.interpolateMagma=hg,t.interpolateInferno=pg,t.interpolatePlasma=dg,t.scaleSequential=Vo,t.creator=Ka,t.local=f,t.matcher=ic,t.mouse=cc,t.namespace=Ja,t.namespaces=Qa,t.clientPoint=ac,t.select=vc,t.selectAll=function(t){return"string"==typeof t?new S([document.querySelectorAll(t)],[document.documentElement]):new S([null==t?[]:t],dc)},t.selection=E,t.selector=sc,t.selectorAll=fc,t.style=_,t.touch=gc,t.touches=function(t,n){null==n&&(n=uc().touches);for(var e=0,r=n?n.length:0,i=new Array(r);eh;if(c||(c=t=Vt()),lMg)if(d>kg-Mg)c.moveTo(l*yg(h),l*bg(h)),c.arc(0,0,l,h,p,!v),f>Mg&&(c.moveTo(f*yg(p),f*bg(p)),c.arc(0,0,f,p,h,v));else{var g,_,y=h,m=p,x=h,b=p,w=d,M=d,T=a.apply(this,arguments)/2,N=T>Mg&&(i?+i.apply(this,arguments):wg(f*f+l*l)),k=xg(gg(l-f)/2,+r.apply(this,arguments)),S=k,E=k;if(N>Mg){var A=$o(N/f*bg(T)),C=$o(N/l*bg(T));(w-=2*A)>Mg?(A*=v?1:-1,x+=A,b-=A):(w=0,x=b=(h+p)/2),(M-=2*C)>Mg?(C*=v?1:-1,y+=C,m-=C):(M=0,y=m=(h+p)/2)}var z=l*yg(y),P=l*bg(y),R=f*yg(b),L=f*bg(b);if(k>Mg){var q=l*yg(m),D=l*bg(m),U=f*yg(x),O=f*bg(x);if(dMg?function(t,n,e,r,i,o,u,a){var c=U-z,s=O-P,f=u-q,l=a-D,h=(f*(P-D)-l*(z-q))/(l*c-f*s);return[z+h*c,P+h*s]}(0,0,0,0,0,0,R,L):[R,L],I=z-F[0],Y=P-F[1],B=q-F[0],H=D-F[1],j=1/bg(function(t){return t>1?0:t<-1?Tg:Math.acos(t)}((I*B+Y*H)/(wg(I*I+Y*Y)*wg(B*B+H*H)))/2),X=wg(F[0]*F[0]+F[1]*F[1]);S=xg(k,(f-X)/(j-1)),E=xg(k,(l-X)/(j+1))}}M>Mg?E>Mg?(g=Ko(U,O,z,P,l,E,v),_=Ko(q,D,R,L,l,E,v),c.moveTo(g.cx+g.x01,g.cy+g.y01),EMg&&w>Mg?S>Mg?(g=Ko(R,L,q,D,f,-S,v),_=Ko(z,P,U,O,f,-S,v),c.lineTo(g.cx+g.x01,g.cy+g.y01),S0&&(p+=l);for(null!=e?d.sort(function(t,n){return e(v[t],v[n])}):null!=r&&d.sort(function(n,e){return r(t[n],t[e])}),a=0,s=p?(_-h*m)/p:0;a0?l*s:0)+m,v[c]={data:t[c],index:a,value:l,startAngle:g,endAngle:f,padAngle:y};return v}var n=zg,e=Cg,r=null,i=vg(0),o=vg(kg),u=vg(0);return t.value=function(e){return arguments.length?(n="function"==typeof e?e:vg(+e),t):n},t.sortValues=function(n){return arguments.length?(e=n,r=null,t):e},t.sort=function(n){return arguments.length?(r=n,e=null,t):r},t.startAngle=function(n){return arguments.length?(i="function"==typeof n?n:vg(+n),t):i},t.endAngle=function(n){return arguments.length?(o="function"==typeof n?n:vg(+n),t):o},t.padAngle=function(n){return arguments.length?(u="function"==typeof n?n:vg(+n),t):u},t},t.areaRadial=Lg,t.radialArea=Lg,t.lineRadial=Rg,t.radialLine=Rg,t.pointRadial=qg,t.linkHorizontal=function(){return cu(su)},t.linkVertical=function(){return cu(fu)},t.linkRadial=function(){var t=cu(lu);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t},t.symbol=function(){function t(){var t;if(r||(r=t=Vt()),n.apply(this,arguments).draw(r,+e.apply(this,arguments)),t)return r=null,t+""||null}var n=vg(Ug),e=vg(64),r=null;return t.type=function(e){return arguments.length?(n="function"==typeof e?e:vg(e),t):n},t.size=function(n){return arguments.length?(e="function"==typeof n?n:vg(+n),t):e},t.context=function(n){return arguments.length?(r=null==n?null:n,t):r},t},t.symbols=t_,t.symbolCircle=Ug,t.symbolCross=Og,t.symbolDiamond=Yg,t.symbolSquare=Vg,t.symbolStar=Xg,t.symbolTriangle=Wg,t.symbolWye=Kg,t.curveBasisClosed=function(t){return new du(t)},t.curveBasisOpen=function(t){return new vu(t)},t.curveBasis=function(t){return new pu(t)},t.curveBundle=e_,t.curveCardinalClosed=i_,t.curveCardinalOpen=o_,t.curveCardinal=r_,t.curveCatmullRomClosed=a_,t.curveCatmullRomOpen=c_,t.curveCatmullRom=u_,t.curveLinearClosed=function(t){return new Nu(t)},t.curveLinear=Sg,t.curveMonotoneX=function(t){return new Cu(t)},t.curveMonotoneY=function(t){return new zu(t)},t.curveNatural=function(t){return new Ru(t)},t.curveStep=function(t){return new qu(t,.5)},t.curveStepAfter=function(t){return new qu(t,1)},t.curveStepBefore=function(t){return new qu(t,0)},t.stack=function(){function t(t){var o,u,a=n.apply(this,arguments),c=t.length,s=a.length,f=new Array(s);for(o=0;o0){for(var e,r,i,o=0,u=t[0].length;o1)for(var e,r,i,o,u,a,c=0,s=t[n[0]].length;c=0?(r[0]=o,r[1]=o+=i):i<0?(r[1]=u,r[0]=u+=i):r[0]=o},t.stackOffsetNone=s_,t.stackOffsetSilhouette=function(t,n){if((e=t.length)>0){for(var e,r=0,i=t[n[0]],o=i.length;r0&&(r=(e=t[n[0]]).length)>0){for(var e,r,i,o=0,u=1;uHs&&e.name===n)return new Et([[t]],Nf,n,+r)}return null},t.interrupt=Gs,t.voronoi=function(){function t(t){return new ca(t.map(function(r,i){var o=[Math.round(n(r,i,t)/x_)*x_,Math.round(e(r,i,t)/x_)*x_];return o.index=i,o.data=r,o}),r)}var n=Ou,e=Fu,r=null;return t.polygons=function(n){return t(n).polygons()},t.links=function(n){return t(n).links()},t.triangles=function(n){return t(n).triangles()},t.x=function(e){return arguments.length?(n="function"==typeof e?e:h_(+e),t):n},t.y=function(n){return arguments.length?(e="function"==typeof n?n:h_(+n),t):e},t.extent=function(n){return arguments.length?(r=null==n?null:[[+n[0][0],+n[0][1]],[+n[1][0],+n[1][1]]],t):r&&[[r[0][0],r[0][1]],[r[1][0],r[1][1]]]},t.size=function(n){return arguments.length?(r=null==n?null:[[0,0],[+n[0],+n[1]]],t):r&&[r[1][0]-r[0][0],r[1][1]-r[0][1]]},t},t.zoom=function(){function n(t){t.property("__zoom",da).on("wheel.zoom",s).on("mousedown.zoom",f).on("dblclick.zoom",l).filter(w).on("touchstart.zoom",h).on("touchmove.zoom",p).on("touchend.zoom touchcancel.zoom",v).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function e(t,n){return(n=Math.max(M[0],Math.min(M[1],n)))===t.k?t:new sa(n,t.x,t.y)}function r(t,n,e){var r=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return r===t.x&&i===t.y?t:new sa(t.k,r,i)}function i(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function o(t,n,e){t.on("start.zoom",function(){u(this,arguments).start()}).on("interrupt.zoom end.zoom",function(){u(this,arguments).end()}).tween("zoom",function(){var t=arguments,r=u(this,t),o=m.apply(this,t),a=e||i(o),c=Math.max(o[1][0]-o[0][0],o[1][1]-o[0][1]),s=this.__zoom,f="function"==typeof n?n.apply(this,t):n,l=k(s.invert(a).concat(c/s.k),f.invert(a).concat(c/f.k));return function(t){if(1===t)t=f;else{var n=l(t),e=c/n[2];t=new sa(e,a[0]-n[0]*e,a[1]-n[1]*e)}r.zoom(null,t)}})}function u(t,n){for(var e,r=0,i=S.length;rP}n.zoom("mouse",x(r(n.that.__zoom,n.mouse[0]=cc(n.that),n.mouse[1]),n.extent,T))},!0).on("mouseup.zoom",function(){e.on("mousemove.zoom mouseup.zoom",null),C(t.event.view,n.moved),T_(),n.end()},!0),i=cc(this),o=t.event.clientX,a=t.event.clientY;yc(t.event.view),la(),n.mouse=[i,this.__zoom.invert(i)],Gs(this),n.start()}}function l(){if(y.apply(this,arguments)){var i=this.__zoom,u=cc(this),a=i.invert(u),c=i.k*(t.event.shiftKey?.5:2),s=x(r(e(i,c),u,a),m.apply(this,arguments),T);T_(),N>0?vc(this).transition().duration(N).call(o,s,u):vc(this).call(n.transform,s)}}function h(){if(y.apply(this,arguments)){var n,e,r,i,o=u(this,arguments),a=t.event.changedTouches,c=a.length;for(la(),e=0;e Date: Thu, 4 Jan 2018 14:15:27 -0600 Subject: [PATCH 07/18] fixing floating mimetype line --- viz.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/viz.yaml b/viz.yaml index e0287d3..88fe446 100644 --- a/viz.yaml +++ b/viz.yaml @@ -233,10 +233,10 @@ visualize: alttext: "Beginning of the full storm SVG" publish: - + id: test_d3 + location: "js/hydrograph.js" mimetype: application/javascript - - id: test_d3 - location: "js/test_d3.js" mimetype: application/javascript - id: vizstorm_page From 597b287677627cfee11ca485b8242c301eeb9ba0 Mon Sep 17 00:00:00 2001 From: Lindsay Carr Date: Thu, 4 Jan 2018 14:16:52 -0600 Subject: [PATCH 08/18] nevermind - it was accidentally commited --- viz.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/viz.yaml b/viz.yaml index 88fe446..bfcbfeb 100644 --- a/viz.yaml +++ b/viz.yaml @@ -237,7 +237,6 @@ publish: location: "js/hydrograph.js" mimetype: application/javascript - - mimetype: application/javascript - id: vizstorm_page name: index From d56e04053f17bc4398c1af467f82645df0b0d52e Mon Sep 17 00:00:00 2001 From: Lindsay Carr Date: Thu, 4 Jan 2018 14:17:40 -0600 Subject: [PATCH 09/18] floating dash --- viz.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/viz.yaml b/viz.yaml index bfcbfeb..7764185 100644 --- a/viz.yaml +++ b/viz.yaml @@ -236,7 +236,6 @@ publish: id: test_d3 location: "js/hydrograph.js" mimetype: application/javascript - - - id: vizstorm_page name: index From 303f205c72df2a1aa3140e212aa5242d3821b015 Mon Sep 17 00:00:00 2001 From: Lindsay Carr Date: Fri, 5 Jan 2018 11:42:48 -0600 Subject: [PATCH 10/18] add map js + process map data to geojson, not svg --- js/map.js | 54 +++++++++++++++ js/test_d3.js | 20 ------ scripts/process/save_map.R | 26 ++++++++ viz.yaml | 131 +++++++++---------------------------- 4 files changed, 111 insertions(+), 120 deletions(-) create mode 100644 js/map.js delete mode 100644 js/test_d3.js create mode 100644 scripts/process/save_map.R diff --git a/js/map.js b/js/map.js new file mode 100644 index 0000000..8e168dc --- /dev/null +++ b/js/map.js @@ -0,0 +1,54 @@ +// Width and height +var chart_width = 800; +var chart_height = 600; + +// Projection +var projection = d3.geoMercator() //changing to geoAlbers makes the map disappear + .scale(1500) + .center([-91.34397, 32.25196]) + //.translate([0,0]); + .translate([chart_width / 2, chart_height / 2]); +var path = d3.geoPath() + .projection(projection); + +// Create SVG +var svg = d3.select("body") + .append("svg") + .attr("width", chart_width) + .attr("height", chart_height); + +var map = svg.append( 'g' ) + .attr( 'id', 'map' ); + +// Data +d3.json('../cache/state_map.geojson', function(us_data){ + + // us_data.features.forEach(function(d) { + // d.geometry.coordinates[0][0] = parseFloat(d.geometry.coordinates[0][0]); + // }); + + console.log(us_data); + //console.log(us_data.features[0].geometry.coordinates[0][0]); + + map.selectAll( 'path' ) + .data(us_data.features) + .enter() + .append('path') + .attr('d', path) + .attr('fill', "cornflowerblue") + .attr('stroke', '#fff') + .attr('stroke-width', 0.5) + .on("mouseover", mouseover) + .on("mouseout", mouseout); + +}); + +function mouseover(d){ + // Highlight hovered province + d3.select(this).style('fill', 'orange'); +} + +function mouseout(d){ + // Reset province color + d3.select(this).style('fill', "cornflowerblue"); +} diff --git a/js/test_d3.js b/js/test_d3.js deleted file mode 100644 index 153f68c..0000000 --- a/js/test_d3.js +++ /dev/null @@ -1,20 +0,0 @@ -var w = 800; -var h = 450; -var data = [132,71,337,93,78,43,20,16,30,8,17,21]; -var svg = d3.select("body").append("svg") - .attr("id", "chart") - .attr("width", w) - .attr("height", h); -svg.selectAll(".bar") - .data(data) - .enter() - .append("rect") - .attr("class", "bar") - .attr("x", 0) - .attr("y", function(d,i){ - return i * 20; - }) - .attr("width", function(d,i){ - return d; - }) - .attr("height", 19) diff --git a/scripts/process/save_map.R b/scripts/process/save_map.R new file mode 100644 index 0000000..1a3b4d7 --- /dev/null +++ b/scripts/process/save_map.R @@ -0,0 +1,26 @@ +fetchTimestamp.save_map <- vizlab::alwaysCurrent + +#' Saves sf data as geojson. +#' @description Converts sf data to sp, then saves as geojson for use in d3. +#' +#' @param viz a vizlab object including \code{viewbox_limits} and \code{fetch_args} +#' @details +#' Depends on: \code{map_data}: an sf representation of the x and y +#' (geographic coordinates) values of map_data shapes (counties, states, countries, etc). +#' +process.save_map <- function(viz){ + deps <- readDepends(viz) + checkRequired(deps, "map_data") + map_data <- deps[["map_data"]] + + # spatial data needs to be sp to use writeOGR + # saves empty file if there is not any map features + if(nrow(map_data) > 0){ + map_data_sp <- as(map_data, "Spatial") + rgdal::writeOGR(map_data_sp, viz[['location']], + layer="map_data_sp", driver="GeoJSON") + } else { + write.table(data.frame(), viz[["location"]]) + } + +} diff --git a/viz.yaml b/viz.yaml index 7764185..ebc4b57 100644 --- a/viz.yaml +++ b/viz.yaml @@ -129,112 +129,44 @@ process: scripts: [scripts/process/cells_from_mask.R] depends: mask_poly: "state_map_data" - - - id: precip_polygons_svg - location: cache/precip_polygons_svg.rds - reader: rds - processor: as_svg_path - attributes: - id: '{{ID}}' - class: 'precip-cell' - depends: - data: "precip_cells" - clip_box: "viewbox_limits" - scripts: [scripts/process/as_svg.R] - - - id: state_polygons_svg - location: cache/state_polygons_svg.rds - reader: rds - processor: as_svg_path - attributes: - id: '{{ID}}-geom' - depends: - data: "state_map_data" - clip_box: "viewbox_limits" - scripts: [scripts/process/as_svg.R] - - - id: pr_polygons_svg - location: cache/pr_polygons_svg.rds - reader: rds - processor: as_svg_path - attributes: - class: island - depends: - data: "puerto_rico_map_data" - clip_box: "viewbox_limits" - scripts: [scripts/process/as_svg.R] - - - id: state_style_svg - location: cache/state_style_dataframe.rds - reader: rds - processor: as_svg_use - attributes: - class: state - href: '#{{ID}}-geom' - id: '{{ID}}' - depends: - data: "state_map_data" - clip_box: "viewbox_limits" - scripts: [scripts/process/as_svg.R] - - - id: state_mouse_svg - location: cache/state_mouse_dataframe.rds - reader: rds - processor: as_svg_use - attributes: - onmouseover: hovertext('{{ID}}', evt) - onmouseout: hovertext(' ') - class: mouseover - href: '#{{ID}}-geom' + - + id: state_map_geojson + location: cache/state_map.geojson + reader: json + processor: save_map + scripts: [scripts/process/save_map.R] depends: - data: "state_map_data" - clip_box: "viewbox_limits" - scripts: [scripts/process/as_svg.R] + map_data: state_map_data - - id: svg_defs - location: cache/svg_defs.rds - processor: as_svg_defs - reader: rds + id: county_map_geojson + location: cache/county_map.geojson + reader: json + processor: save_map + scripts: [scripts/process/save_map.R] depends: - states-geoms: state_polygons_svg - scripts: [scripts/process/as_svg.R] + map_data: county_map_data - - id: svg_map_style - location: cache/svg_map_style.rds - processor: as_svg_g - reader: rds + id: puerto_rico_map_geojson + location: cache/puerto_rico_map.geojson + reader: json + processor: save_map + scripts: [scripts/process/save_map.R] depends: - pr-style: pr_polygons_svg - states-style: state_style_svg - precip-cells: precip_polygons_svg - attributes: - id: map-style - scripts: [scripts/process/as_svg.R] - - - id: svg_map_mouse - location: cache/svg_map_mouse.rds - processor: as_svg_g - reader: rds + map_data: puerto_rico_map_data + - + id: islands_map_geojson + location: cache/islands_map.geojson + reader: json + processor: save_map + scripts: [scripts/process/save_map.R] depends: - states-mouse: state_mouse_svg - attributes: - id: map-mouse - scripts: [scripts/process/as_svg.R] + map_data: islands_map_data visualize: - - - id: svg_skeleton - location: cache/svg_skeleton.svg - visualizer: svg_skeleton - depends: [svg_map_style, svg_map_mouse, svg_defs] - scripts: ["scripts/visualize/svg_skeleton.R"] - reader: svg - mimetype: image/svg+xml - title: "SVG skeleton" - alttext: "Beginning of the full storm SVG" + publish: - - id: test_d3 - location: "js/hydrograph.js" + id: map_js + location: "js/map.js" mimetype: application/javascript - id: vizstorm_page @@ -243,9 +175,8 @@ publish: publisher: page depends: lib-d3-js: lib-d3-js - js: "test_d3" - storm_figure: "svg_skeleton" + map_js: "map_js" context: resources: ["lib-d3-js"] - sections: ["storm_figure", "js"] + sections: ["map_js"] From afe55090f96a4666b41e20a340d8ceb9c0cf39e3 Mon Sep 17 00:00:00 2001 From: Lindsay Carr Date: Fri, 5 Jan 2018 11:43:10 -0600 Subject: [PATCH 11/18] remove svg creation code --- scripts/process/as_svg.R | 266 ------------------------------- scripts/visualize/svg_skeleton.R | 23 --- 2 files changed, 289 deletions(-) delete mode 100644 scripts/process/as_svg.R delete mode 100644 scripts/visualize/svg_skeleton.R diff --git a/scripts/process/as_svg.R b/scripts/process/as_svg.R deleted file mode 100644 index 9eef37e..0000000 --- a/scripts/process/as_svg.R +++ /dev/null @@ -1,266 +0,0 @@ - -#' Sub mustache keys into text -#' -#' Use mustache templates to sub data.frame values into -#' strings. -#' -#' @param template a `template` per `whisker::whisker.render`: -#' "character with template text" -#' @param data a data.frame with variables used for whisker rendering -#' @details this function evaluates the render function row-wise. -#' Multiple keys can be combined in single template (see example). Per -#' whisker pkg, keys that don't have variables in `data` evaluate to empty -#' strings (no errors). -#' @example -#' sub_attribute_text("hovertext('{{ID}}-{{dog}}' evt)", -#' data.frame(ID = c('g','f'), dog = c('ralph','cindy'))) -#' -#' @return a character vector of length nrow(data) -sub_attribute_text <- function(template, data){ - sapply(seq_len(nrow(data)), FUN = function(j) { - whisker::whisker.render(template, data = data[j,]) - }, USE.NAMES = FALSE) -} - -#' sub text and/or define new svg attributes -#' -#' uses `sub_attribute_text` to create attribute strings -#' -#' @param dataframe data to use for evaluation -#' @param attributes key value pairs that may or may not contain -#' mustache {{key}} syntax -#' @return a data.frame with new columns for each name in `attributes` -svg_sub_attributes <- function(dataframe, attributes = NULL){ - - if (!is.null(attributes)){ - # replace existing attributes w/ these user-specified ones - # evaluate "mustache" keys w/ geom_df - attr_names <- names(attributes) - - # if mustache keys exist, evaluate with the context of the dataframe variables: - attrs_subbed <- sapply(attr_names, FUN = function(x) { - sub_attribute_text(template = attributes[[x]], data = dataframe) - }) - - dataframe[attr_names] <- attrs_subbed - } - - return(dataframe) -} - -#' convert a simple feature collection into an svg path element's `d` attribute -#' -#' @param .object a simple feature collection, currently limited to polygons -#' @param xlim min and max x values in the plotting range in the coordinates of `sfc_object` -#' @param ylim min and max y values in the plotting range in the coordinates of `sfc_object` -#' @param \dots additional arguments sent to `plot` -#' @param width the width of the output figure in inches -#' @param height the height of the output figure in inches -#' @param pointsize used in svgstring...fonts? -#' -#' @return a data.frame with the same data as `.object`, -#' but with the new attribute(s) added, and the geometry removed -sf_to_path <- function(.object, xlim, ylim, ..., width, height, pointsize = 12){ - - stopifnot(!is.null(.object)) - stopifnot(packageVersion('svglite') == '1.2.0.9003') - - sfc_object <- .object[["geometry"]] - data_in <- data.frame(.object) %>% select(-geometry) - data_in$feature_id <- seq_len(nrow(data_in)) - - # hmmm...with sf, each polygon of a multi-poly plots as a separate `d`. - # Can get this w/ st_cast(sfc_object[j], "POLYGON") - # could test for this `"sfc_MULTIPOLYGON" %in% class(sfc_object[j])` - # use `feature_id` to track which feature each polygon came from - feature_ids <- c() - rendered <- svglite::xmlSVG(width = width, height = height, pointsize = pointsize, standalone = F, { - - set_svg_plot(xlim, ylim) - for (j in seq_len(length(sfc_object))){ - for (poly in sf::st_cast(sfc_object[j], "POLYGON")){ - plot(poly, ..., add = TRUE) - feature_ids <- c(feature_ids, j) - } - } - }) - - paths <- xml2::xml_child(rendered) %>% xml2::xml_children() - - # collapse the multi-d into a single one: - data_out <- data.frame(d_raw = xml2::xml_attr(paths, 'd'), - feature_id = feature_ids, - stringsAsFactors = FALSE) %>% - group_by(feature_id) %>% - summarize(d = paste(d_raw, collapse = ' ')) %>% - left_join(data_in) %>% select(-feature_id) - return(data_out) -} - -#' This function would let us take a point collection w/ text data and -#' allow us to (for example) place state names on the map programmatically -sf_to_text <- function(.object, xlim, ylim, ..., width, height, pointsize = 12){ - stop('not implemented') -} - -sf_to_circle <- function(.object, xlim, ylim, ..., width, height, pointsize = 12){ - stop('not implemented') -} - -#' turn spatial data into svg elements w/ attributes -#' -#' @param viz a viz object, containing both `data` and `clip_box` as depends -#' -#' @return a data.frame for use in an svg, containing the element name (`.value`), -#' `d`, and any other attributes added. See details -#' @details -#' `` assumes spatial data as inputs, which are then converted into `d` -#' attributes which describe the draw operations for svg paths -#' the `clip_box` is used to figure out the x and y limits for plotting, which -#' set up the svg coordinate space that is needed to create the `d` attributes -#' -#' Additional attributes can be added by using the optional `attributes` field -#' in the viz block. These must be character key value pairs, but can use mustache -#' text substitution for simple modifications (see `svg_sub_attributes`). -#' -#' -#' in the future, maybe this function could also operate on non-spatial data -process.as_svg_path <- function(viz){ - - checkRequired(viz$depends, c('data', 'clip_box')) - - attributes <- viz[['attributes']] - svg <- as_svg_elements('path', viz) - - svg_path_out <- svg[['elements']] %>% - svg_sub_attributes(attributes = attributes) %>% - select_(.dots = names(attributes)) %>% - do(sf_to_path(., xlim = svg$xlim, ylim = svg$ylim, width = svg$width, height = svg$height)) %>% - mutate(.value = 'path') %>% select(.value, everything()) - - - saveRDS(svg_path_out, viz[['location']]) -} - -#' turn data into svg elements w/ attributes -#' -#' @param viz a viz object, containing `data` and optionally `clip_box` as depends -#' -#' @return a data.frame for use in an svg, containing the element name (`.value`), -#' and any other attributes added. See details - -#' @details -#' `` assumes the there are attributes which point to re-use of elements -#' elsewhere in the svg -#' if included, and if the `data` are spatial the `clip_box` removes features outside -#' of the box. -#' -#' Additional attributes can be added by using the optional `attributes` field -#' in the viz block. These must be character key value pairs, but can use mustache -#' text substitution for simple modifications (see `svg_sub_attributes`). -#' -process.as_svg_use <- function(viz){ - - attributes <- viz[['attributes']] - - svg_use_out <- as_svg_elements('use', viz)$elements %>% - svg_sub_attributes(attributes = attributes) %>% - data.frame() %>% - select_(.dots = c('.value', names(attributes))) - - saveRDS(svg_use_out, file = viz[['location']]) -} - -#' shared operations that occur for each process.as_svg_{element} -#' -as_svg_elements <- function(element_name, viz){ - deps <- readDepends(viz) - box <- deps[['clip_box']] - - elements <- clip_sf(deps[['data']], box) %>% - mutate(.value = element_name) - - append(list(elements = elements), plot_bounds(box)) -} - -#' takes output from one or many process.as_svg_{element} calls -#' and creates a `defs` svg container for it -#' -#' @return writes an .rds file that contains the xml from `` in a list -#' format that can be converted to xml with xml2::as_xml_document() -#' @details -#' if `depends` is empty, this still creates an element, it just -#' doesn't have xml children -#' named `depends` are converted into `g` (group) names within `defs` -process.as_svg_defs <- function(viz){ - deps <- readDepends(viz) - defs <- xml2::xml_new_root('.x') - group <- xml2::xml_add_child(defs, 'defs') - - for (g_name in names(deps)){ - g <- xml2::xml_add_child(group, 'g', id = g_name) - svg_data <- deps[[g_name]] - for (j in seq_len(nrow(svg_data))){ - do.call(xml2::xml_add_child, append(list(.x = g), svg_data[j, ])) - } - } - saveRDS(xml2::as_list(defs), file = viz[['location']]) -} - -#' create an xml/svg "group" or `` element for each named dependency -#' -#' @return writes an .rds file that contains the xml from `` in a list -#' format that can be converted to xml with xml2::as_xml_document() -#' @details doesn't name the id in the returned group -process.as_svg_g <- function(viz){ - deps <- readDepends(viz) - g_main <- xml2::xml_new_root('.x') - group <- do.call(xml2::xml_add_child, append(list(.x = g_main, .value = 'g'), viz[['attributes']])) - - for (g_name in names(deps)){ - g <- xml2::xml_add_child(group, 'g', id = g_name) - svg_data <- deps[[g_name]] - for (j in 1:nrow(svg_data)){ - do.call(xml2::xml_add_child, append(list(.x = g), svg_data[j, ])) - } - } - - saveRDS(xml2::as_list(g_main), file = viz[['location']]) -} - -#' set up the basic plot par and empty plot -set_svg_plot <- function(xlim, ylim){ - par(mai=c(0,0,0,0), omi=c(0,0,0,0), xaxs = 'i', yaxs = 'i') - plot(NA, 0, xlim = xlim, ylim = ylim, axes = FALSE, frame.plot = FALSE, ann = FALSE) -} - - -#' get the xlim and ylim of a spatial object, if present. -#' Otherwise, return NULL -plot_bounds <- function(sfc_object){ - if (is.null(sfc_object)){ - NULL - } else { - ppi <- 72 - bounds <- sf::st_bbox(sfc_object) - svg_viewbox <- attr(sfc_object, 'svg_viewbox') - margins <- strsplit(svg_viewbox, '[ ]')[[1]] %>% as.numeric() - if (margins[1] != 0 | margins[2] != 0){ - stop(call. = FALSE, 'the svg viewBox attribute must have xmin and ymin of zero') - } - list(xlim = bounds[c('xmin','xmax')], - ylim = bounds[c('ymin','ymax')], - width = margins[3]/ppi, - height = margins[4]/ppi) - } -} - -#' perform an `st_intersection` clip operation on sf object - -clip_sf <- function(sf_object, sf_clip = NULL){ - if (!is.null(sf_clip)){ - sf::st_intersection(sf::st_buffer(sf_object, 0), sf_clip) - } else { - sf_object - } -} diff --git a/scripts/visualize/svg_skeleton.R b/scripts/visualize/svg_skeleton.R deleted file mode 100644 index 6b40200..0000000 --- a/scripts/visualize/svg_skeleton.R +++ /dev/null @@ -1,23 +0,0 @@ -#' incomplete -visualize.svg_skeleton <- function(viz){ - deps <- readDepends(viz) - #initialize svg: - svg_root <- init.svg() - - for (svg_list in deps){ - # convert list to xml - svg_xml <- xml2::as_xml_document(svg_list) - # now add to parent document: - xml2::xml_add_child(svg_root, svg_xml) - } - - xml2::write_xml(svg_root, file = viz[['location']]) -} - -init.svg <- function(..., width = 8, height = 5){ - # fragile, this is coded into svglite: - ppi <- 72 - view_box <- sprintf("%s %s %s %s", 0, 0, width*ppi, height*ppi) - xml2::xml_new_root('svg', viewBox = view_box, preserveAspectRatio="xMidYMid meet", - xmlns="http://www.w3.org/2000/svg", `xmlns:xlink`="http://www.w3.org/1999/xlink", version="1.1" ) -} \ No newline at end of file From 7f4f7d97ae80e11a61d05c58526a232c2651db48 Mon Sep 17 00:00:00 2001 From: Lindsay Carr Date: Fri, 5 Jan 2018 12:04:09 -0600 Subject: [PATCH 12/18] increase chart width --- js/map.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/map.js b/js/map.js index 8e168dc..1013a41 100644 --- a/js/map.js +++ b/js/map.js @@ -1,5 +1,5 @@ // Width and height -var chart_width = 800; +var chart_width = 1000; var chart_height = 600; // Projection From 59c4e2150bbc231b57e1ff06d2ec1c38da79beb1 Mon Sep 17 00:00:00 2001 From: Lindsay Carr Date: Fri, 5 Jan 2018 12:04:27 -0600 Subject: [PATCH 13/18] remove commented code + edit comments --- js/map.js | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/js/map.js b/js/map.js index 1013a41..4edd12b 100644 --- a/js/map.js +++ b/js/map.js @@ -6,7 +6,6 @@ var chart_height = 600; var projection = d3.geoMercator() //changing to geoAlbers makes the map disappear .scale(1500) .center([-91.34397, 32.25196]) - //.translate([0,0]); .translate([chart_width / 2, chart_height / 2]); var path = d3.geoPath() .projection(projection); @@ -20,15 +19,8 @@ var svg = d3.select("body") var map = svg.append( 'g' ) .attr( 'id', 'map' ); -// Data +// Add map features d3.json('../cache/state_map.geojson', function(us_data){ - - // us_data.features.forEach(function(d) { - // d.geometry.coordinates[0][0] = parseFloat(d.geometry.coordinates[0][0]); - // }); - - console.log(us_data); - //console.log(us_data.features[0].geometry.coordinates[0][0]); map.selectAll( 'path' ) .data(us_data.features) @@ -44,11 +36,9 @@ d3.json('../cache/state_map.geojson', function(us_data){ }); function mouseover(d){ - // Highlight hovered province - d3.select(this).style('fill', 'orange'); + d3.select(this).style('fill', 'orange'); } function mouseout(d){ - // Reset province color d3.select(this).style('fill', "cornflowerblue"); } From dc632c1736e20c31a6640b7c0c5f04be74844ac5 Mon Sep 17 00:00:00 2001 From: Lindsay Carr Date: Fri, 5 Jan 2018 12:05:01 -0600 Subject: [PATCH 14/18] change spatial projection --- viz.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/viz.yaml b/viz.yaml index ebc4b57..241b933 100644 --- a/viz.yaml +++ b/viz.yaml @@ -48,7 +48,7 @@ info: parameter: - id: spatial_metadata - crs: '+init=epsg:2163' + crs: '+init=epsg:4326' # works with d3.geoMercator bbox: [-87, 22, -70, 34] - id: plot_metadata From 9fbb7183474a1785366d1b921e6894e675adde78 Mon Sep 17 00:00:00 2001 From: Lindsay Carr Date: Fri, 5 Jan 2018 13:02:53 -0600 Subject: [PATCH 15/18] reinstate as_svg.R --- scripts/process/as_svg.R | 266 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 266 insertions(+) create mode 100644 scripts/process/as_svg.R diff --git a/scripts/process/as_svg.R b/scripts/process/as_svg.R new file mode 100644 index 0000000..b80dee2 --- /dev/null +++ b/scripts/process/as_svg.R @@ -0,0 +1,266 @@ + +#' Sub mustache keys into text +#' +#' Use mustache templates to sub data.frame values into +#' strings. +#' +#' @param template a `template` per `whisker::whisker.render`: +#' "character with template text" +#' @param data a data.frame with variables used for whisker rendering +#' @details this function evaluates the render function row-wise. +#' Multiple keys can be combined in single template (see example). Per +#' whisker pkg, keys that don't have variables in `data` evaluate to empty +#' strings (no errors). +#' @example +#' sub_attribute_text("hovertext('{{ID}}-{{dog}}' evt)", +#' data.frame(ID = c('g','f'), dog = c('ralph','cindy'))) +#' +#' @return a character vector of length nrow(data) +sub_attribute_text <- function(template, data){ + sapply(seq_len(nrow(data)), FUN = function(j) { + whisker::whisker.render(template, data = data[j,]) + }, USE.NAMES = FALSE) +} + +#' sub text and/or define new svg attributes +#' +#' uses `sub_attribute_text` to create attribute strings +#' +#' @param dataframe data to use for evaluation +#' @param attributes key value pairs that may or may not contain +#' mustache {{key}} syntax +#' @return a data.frame with new columns for each name in `attributes` +svg_sub_attributes <- function(dataframe, attributes = NULL){ + + if (!is.null(attributes)){ + # replace existing attributes w/ these user-specified ones + # evaluate "mustache" keys w/ geom_df + attr_names <- names(attributes) + + # if mustache keys exist, evaluate with the context of the dataframe variables: + attrs_subbed <- sapply(attr_names, FUN = function(x) { + sub_attribute_text(template = attributes[[x]], data = dataframe) + }) + + dataframe[attr_names] <- attrs_subbed + } + + return(dataframe) +} + +#' convert a simple feature collection into an svg path element's `d` attribute +#' +#' @param .object a simple feature collection, currently limited to polygons +#' @param xlim min and max x values in the plotting range in the coordinates of `sfc_object` +#' @param ylim min and max y values in the plotting range in the coordinates of `sfc_object` +#' @param \dots additional arguments sent to `plot` +#' @param width the width of the output figure in inches +#' @param height the height of the output figure in inches +#' @param pointsize used in svgstring...fonts? +#' +#' @return a data.frame with the same data as `.object`, +#' but with the new attribute(s) added, and the geometry removed +sf_to_path <- function(.object, xlim, ylim, ..., width, height, pointsize = 12){ + + stopifnot(!is.null(.object)) + stopifnot(packageVersion('svglite') == '1.2.0.9003') + + sfc_object <- .object[["geometry"]] + data_in <- data.frame(.object) %>% select(-geometry) + data_in$feature_id <- seq_len(nrow(data_in)) + + # hmmm...with sf, each polygon of a multi-poly plots as a separate `d`. + # Can get this w/ st_cast(sfc_object[j], "POLYGON") + # could test for this `"sfc_MULTIPOLYGON" %in% class(sfc_object[j])` + # use `feature_id` to track which feature each polygon came from + feature_ids <- c() + rendered <- svglite::xmlSVG(width = width, height = height, pointsize = pointsize, standalone = F, { + + set_svg_plot(xlim, ylim) + for (j in seq_len(length(sfc_object))){ + for (poly in sf::st_cast(sfc_object[j], "POLYGON")){ + plot(poly, ..., add = TRUE) + feature_ids <- c(feature_ids, j) + } + } + }) + + paths <- xml2::xml_child(rendered) %>% xml2::xml_children() + + # collapse the multi-d into a single one: + data_out <- data.frame(d_raw = xml2::xml_attr(paths, 'd'), + feature_id = feature_ids, + stringsAsFactors = FALSE) %>% + group_by(feature_id) %>% + summarize(d = paste(d_raw, collapse = ' ')) %>% + left_join(data_in) %>% select(-feature_id) + return(data_out) +} + +#' This function would let us take a point collection w/ text data and +#' allow us to (for example) place state names on the map programmatically +sf_to_text <- function(.object, xlim, ylim, ..., width, height, pointsize = 12){ + stop('not implemented') +} + +sf_to_circle <- function(.object, xlim, ylim, ..., width, height, pointsize = 12){ + stop('not implemented') +} + +#' turn spatial data into svg elements w/ attributes +#' +#' @param viz a viz object, containing both `data` and `clip_box` as depends +#' +#' @return a data.frame for use in an svg, containing the element name (`.value`), +#' `d`, and any other attributes added. See details +#' @details +#' `` assumes spatial data as inputs, which are then converted into `d` +#' attributes which describe the draw operations for svg paths +#' the `clip_box` is used to figure out the x and y limits for plotting, which +#' set up the svg coordinate space that is needed to create the `d` attributes +#' +#' Additional attributes can be added by using the optional `attributes` field +#' in the viz block. These must be character key value pairs, but can use mustache +#' text substitution for simple modifications (see `svg_sub_attributes`). +#' +#' +#' in the future, maybe this function could also operate on non-spatial data +process.as_svg_path <- function(viz){ + + checkRequired(viz$depends, c('data', 'clip_box')) + + attributes <- viz[['attributes']] + svg <- as_svg_elements('path', viz) + + svg_path_out <- svg[['elements']] %>% + svg_sub_attributes(attributes = attributes) %>% + select_(.dots = names(attributes)) %>% + do(sf_to_path(., xlim = svg$xlim, ylim = svg$ylim, width = svg$width, height = svg$height)) %>% + mutate(.value = 'path') %>% select(.value, everything()) + + + saveRDS(svg_path_out, viz[['location']]) +} + +#' turn data into svg elements w/ attributes +#' +#' @param viz a viz object, containing `data` and optionally `clip_box` as depends +#' +#' @return a data.frame for use in an svg, containing the element name (`.value`), +#' and any other attributes added. See details + +#' @details +#' `` assumes the there are attributes which point to re-use of elements +#' elsewhere in the svg +#' if included, and if the `data` are spatial the `clip_box` removes features outside +#' of the box. +#' +#' Additional attributes can be added by using the optional `attributes` field +#' in the viz block. These must be character key value pairs, but can use mustache +#' text substitution for simple modifications (see `svg_sub_attributes`). +#' +process.as_svg_use <- function(viz){ + + attributes <- viz[['attributes']] + + svg_use_out <- as_svg_elements('use', viz)$elements %>% + svg_sub_attributes(attributes = attributes) %>% + data.frame() %>% + select_(.dots = c('.value', names(attributes))) + + saveRDS(svg_use_out, file = viz[['location']]) +} + +#' shared operations that occur for each process.as_svg_{element} +#' +as_svg_elements <- function(element_name, viz){ + deps <- readDepends(viz) + box <- deps[['clip_box']] + + elements <- clip_sf(deps[['data']], box) %>% + mutate(.value = element_name) + + append(list(elements = elements), plot_bounds(box)) +} + +#' takes output from one or many process.as_svg_{element} calls +#' and creates a `defs` svg container for it +#' +#' @return writes an .rds file that contains the xml from `` in a list +#' format that can be converted to xml with xml2::as_xml_document() +#' @details +#' if `depends` is empty, this still creates an element, it just +#' doesn't have xml children +#' named `depends` are converted into `g` (group) names within `defs` +process.as_svg_defs <- function(viz){ + deps <- readDepends(viz) + defs <- xml2::xml_new_root('.x') + group <- xml2::xml_add_child(defs, 'defs') + + for (g_name in names(deps)){ + g <- xml2::xml_add_child(group, 'g', id = g_name) + svg_data <- deps[[g_name]] + for (j in seq_len(nrow(svg_data))){ + do.call(xml2::xml_add_child, append(list(.x = g), svg_data[j, ])) + } + } + saveRDS(xml2::as_list(defs), file = viz[['location']]) +} + +#' create an xml/svg "group" or `` element for each named dependency +#' +#' @return writes an .rds file that contains the xml from `` in a list +#' format that can be converted to xml with xml2::as_xml_document() +#' @details doesn't name the id in the returned group +process.as_svg_g <- function(viz){ + deps <- readDepends(viz) + g_main <- xml2::xml_new_root('.x') + group <- do.call(xml2::xml_add_child, append(list(.x = g_main, .value = 'g'), viz[['attributes']])) + + for (g_name in names(deps)){ + g <- xml2::xml_add_child(group, 'g', id = g_name) + svg_data <- deps[[g_name]] + for (j in 1:nrow(svg_data)){ + do.call(xml2::xml_add_child, append(list(.x = g), svg_data[j, ])) + } + } + + saveRDS(xml2::as_list(g_main), file = viz[['location']]) +} + +#' set up the basic plot par and empty plot +set_svg_plot <- function(xlim, ylim){ + par(mai=c(0,0,0,0), omi=c(0,0,0,0), xaxs = 'i', yaxs = 'i') + plot(NA, 0, xlim = xlim, ylim = ylim, axes = FALSE, frame.plot = FALSE, ann = FALSE) +} + + +#' get the xlim and ylim of a spatial object, if present. +#' Otherwise, return NULL +plot_bounds <- function(sfc_object){ + if (is.null(sfc_object)){ + NULL + } else { + ppi <- 72 + bounds <- sf::st_bbox(sfc_object) + svg_viewbox <- attr(sfc_object, 'svg_viewbox') + margins <- strsplit(svg_viewbox, '[ ]')[[1]] %>% as.numeric() + if (margins[1] != 0 | margins[2] != 0){ + stop(call. = FALSE, 'the svg viewBox attribute must have xmin and ymin of zero') + } + list(xlim = bounds[c('xmin','xmax')], + ylim = bounds[c('ymin','ymax')], + width = margins[3]/ppi, + height = margins[4]/ppi) + } +} + +#' perform an `st_intersection` clip operation on sf object + +clip_sf <- function(sf_object, sf_clip = NULL){ + if (!is.null(sf_clip)){ + sf::st_intersection(sf::st_buffer(sf_object, 0), sf_clip) + } else { + sf_object + } +} From 6b4041272b3b78186d68b16468188ed1e88d1963 Mon Sep 17 00:00:00 2001 From: Lindsay Carr Date: Fri, 5 Jan 2018 14:27:56 -0600 Subject: [PATCH 16/18] hack to get geojson in target --- js/map.js | 2 +- viz.yaml | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/js/map.js b/js/map.js index 4edd12b..4201b0f 100644 --- a/js/map.js +++ b/js/map.js @@ -20,7 +20,7 @@ var map = svg.append( 'g' ) .attr( 'id', 'map' ); // Add map features -d3.json('../cache/state_map.geojson', function(us_data){ +d3.json('js/state_map.geojson', function(us_data){ map.selectAll( 'path' ) .data(us_data.features) diff --git a/viz.yaml b/viz.yaml index 241b933..dd28c3a 100644 --- a/viz.yaml +++ b/viz.yaml @@ -137,6 +137,8 @@ process: scripts: [scripts/process/save_map.R] depends: map_data: state_map_data + export: true + mimetype: application/javascript - id: county_map_geojson location: cache/county_map.geojson @@ -164,6 +166,11 @@ process: visualize: publish: + - + # HACK, but not quite the same as vizlab issue #263 (couldn't get that to work) + id: state_map_publish + location: cache/state_map.geojson + mimetype: application/javascript - id: map_js location: "js/map.js" From cf79e4cc991b66df5728f9f5399acef9d45ed9d4 Mon Sep 17 00:00:00 2001 From: Lindsay Carr Date: Fri, 5 Jan 2018 14:28:20 -0600 Subject: [PATCH 17/18] remake won't allow duplication location tags --- scripts/process/save_map.R | 4 ++-- viz.yaml | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/process/save_map.R b/scripts/process/save_map.R index 1a3b4d7..fb88b47 100644 --- a/scripts/process/save_map.R +++ b/scripts/process/save_map.R @@ -17,10 +17,10 @@ process.save_map <- function(viz){ # saves empty file if there is not any map features if(nrow(map_data) > 0){ map_data_sp <- as(map_data, "Spatial") - rgdal::writeOGR(map_data_sp, viz[['location']], + rgdal::writeOGR(map_data_sp, viz[['savelocation']], layer="map_data_sp", driver="GeoJSON") } else { - write.table(data.frame(), viz[["location"]]) + write.table(data.frame(), viz[["savelocation"]]) } } diff --git a/viz.yaml b/viz.yaml index dd28c3a..630900d 100644 --- a/viz.yaml +++ b/viz.yaml @@ -131,7 +131,7 @@ process: mask_poly: "state_map_data" - id: state_map_geojson - location: cache/state_map.geojson + savelocation: cache/state_map.geojson reader: json processor: save_map scripts: [scripts/process/save_map.R] @@ -141,7 +141,7 @@ process: mimetype: application/javascript - id: county_map_geojson - location: cache/county_map.geojson + savelocation: cache/county_map.geojson reader: json processor: save_map scripts: [scripts/process/save_map.R] @@ -149,7 +149,7 @@ process: map_data: county_map_data - id: puerto_rico_map_geojson - location: cache/puerto_rico_map.geojson + savelocation: cache/puerto_rico_map.geojson reader: json processor: save_map scripts: [scripts/process/save_map.R] @@ -157,7 +157,7 @@ process: map_data: puerto_rico_map_data - id: islands_map_geojson - location: cache/islands_map.geojson + savelocation: cache/islands_map.geojson reader: json processor: save_map scripts: [scripts/process/save_map.R] From d41f2582700db873cdb8c7f129bcffd37b0469be Mon Sep 17 00:00:00 2001 From: Lindsay Carr Date: Fri, 5 Jan 2018 14:52:07 -0600 Subject: [PATCH 18/18] revert attempt to export geojson to target --- js/map.js | 2 +- scripts/process/save_map.R | 4 ++-- viz.yaml | 15 ++++----------- 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/js/map.js b/js/map.js index 4201b0f..4edd12b 100644 --- a/js/map.js +++ b/js/map.js @@ -20,7 +20,7 @@ var map = svg.append( 'g' ) .attr( 'id', 'map' ); // Add map features -d3.json('js/state_map.geojson', function(us_data){ +d3.json('../cache/state_map.geojson', function(us_data){ map.selectAll( 'path' ) .data(us_data.features) diff --git a/scripts/process/save_map.R b/scripts/process/save_map.R index fb88b47..1a3b4d7 100644 --- a/scripts/process/save_map.R +++ b/scripts/process/save_map.R @@ -17,10 +17,10 @@ process.save_map <- function(viz){ # saves empty file if there is not any map features if(nrow(map_data) > 0){ map_data_sp <- as(map_data, "Spatial") - rgdal::writeOGR(map_data_sp, viz[['savelocation']], + rgdal::writeOGR(map_data_sp, viz[['location']], layer="map_data_sp", driver="GeoJSON") } else { - write.table(data.frame(), viz[["savelocation"]]) + write.table(data.frame(), viz[["location"]]) } } diff --git a/viz.yaml b/viz.yaml index 630900d..241b933 100644 --- a/viz.yaml +++ b/viz.yaml @@ -131,17 +131,15 @@ process: mask_poly: "state_map_data" - id: state_map_geojson - savelocation: cache/state_map.geojson + location: cache/state_map.geojson reader: json processor: save_map scripts: [scripts/process/save_map.R] depends: map_data: state_map_data - export: true - mimetype: application/javascript - id: county_map_geojson - savelocation: cache/county_map.geojson + location: cache/county_map.geojson reader: json processor: save_map scripts: [scripts/process/save_map.R] @@ -149,7 +147,7 @@ process: map_data: county_map_data - id: puerto_rico_map_geojson - savelocation: cache/puerto_rico_map.geojson + location: cache/puerto_rico_map.geojson reader: json processor: save_map scripts: [scripts/process/save_map.R] @@ -157,7 +155,7 @@ process: map_data: puerto_rico_map_data - id: islands_map_geojson - savelocation: cache/islands_map.geojson + location: cache/islands_map.geojson reader: json processor: save_map scripts: [scripts/process/save_map.R] @@ -166,11 +164,6 @@ process: visualize: publish: - - - # HACK, but not quite the same as vizlab issue #263 (couldn't get that to work) - id: state_map_publish - location: cache/state_map.geojson - mimetype: application/javascript - id: map_js location: "js/map.js"